Function at 0x4539f5
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
mov ebx, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
test edi, edi
jne 0x453a12
cmp dword [ebx + 0x2c], 0
jne 0x453a17
mov edi, ebx
mov dword [ebp + 0xc], edi
cmp dword [edi + 0x1c], ebx
je 0x453a1f
pop edi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
push esi
push 0x40
mov dword [ebp - 8], edi
mov dword [ebp - 0xc], 0
mov dword [ebp - 0x18], 0
mov dword [ebx + 0x2e4], 0
mov dword [ebx + 0x2e8], 0
mov dword [ebp - 0x10], 0x40
call fcn.004501d5
mov esi, eax
add esp, 4
mov dword [ebp + 8], esi
test esi, esi
jne 0x453a75
push 0x660558
call fcn.004528b5
add esp, 4
xor eax, eax
pop esi
pop edi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebx + 0x3c]
push edi
push ebx
mov dword [ebp - 4], esi
call eax
add esp, 8
mov dword [ebp - 0x14], eax
mov eax, dword [ebx + 0x2f0]
push ebx
call eax
mov edi, dword [ebp + 8]
add esp, 4
mov dword [ebp - 0x1c], eax
cmp esi, edi
jbe 0x453bb3
cmp eax, 0x3c
je 0x453aad
cmp eax, 0xffffffff
jne 0x453bbc
mov edi, dword [ebp - 0x14]
mov byte [esi], 0
cmp edi, 2
je 0x453abd
cmp edi, 0xffffffff
jne 0x453acb
push dword [ebp + 8]
call fcn.00451c35
add esp, 4
mov dword [ebp - 4], eax
push dword [ebp + 8]
xor esi, esi
call fcn.00450fe5
add esp, 4
test eax, eax
je 0x453ba2
mov eax, edi
sub eax, 1
je 0x453b50
sub eax, 1
je 0x453b34
sub eax, 1
jne 0x453ba2
cmp dword [ebx + 0x44], esi
je 0x4541a2
mov edi, dword [ebp - 8]
mov dword [edi + 0x18], 3
push dword [ebp + 8]
mov eax, dword [ebx + 0x44]
push edi
push ebx
call eax
add esp, 0xc
test eax, eax
jne 0x453ba2
push dword [edi]
push dword [ebp + 8]
push 0x6605a0
call fcn.004528b5
add esp, 0xc
jmp 0x4542e1
mov edi, dword [ebp - 8]
push 1
mov dword [edi + 0x18], 2
push dword [ebp + 8]
push edi
call fcn.004552d5
add esp, 0xc
test eax, eax
jmp 0x453b9c
cmp dword [ebx + 0x2e8], esi
je 0x453b87
push dword [ebp + 8]
call fcn.00451265
mov edi, dword [ebp - 8]
add esp, 4
cmp byte [eax], 0
je 0x453b8a
cmp dword [edi + 0x18], esi
jne 0x453b8a
mov dword [edi + 0x18], 1
push dword [ebp + 8]
push edi
call fcn.00453745
add esp, 8
test eax, eax
jmp 0x453b9c
mov edi, dword [ebp - 8]
push dword [ebp + 8]
push 0
push edi
call fcn.004536e5
mov esi, eax
add esp, 0xc
test esi, esi
je 0x4541b4
mov eax, dword [ebp - 0xc]
test eax, eax
mov edi, dword [ebp + 8]
cmove eax, esi
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x1c]
cmp eax, 0xffffffff
je 0x4542b3
cmp eax, 0x3c
jne 0x454163
mov eax, dword [ebx + 0x2f0]
push ebx
mov dword [ebp - 4], edi
call eax
mov esi, eax
add esp, 4
cmp esi, 0xffffffff
je 0x453cee
nop word [eax + eax]
push esi
call fcn.00452205
add esp, 4
test eax, eax
jne 0x453cee
cmp esi, 0x3e
je 0x453cee
cmp esi, 0x2f
jne 0x453c0f
cmp edi, dword [ebp + 8]
ja 0x453cee
jmp 0x453c6f
cmp esi, 0x3c
je 0x4541cc
cmp esi, 0x26
jne 0x453c57
push dword [ebp - 8]
push ebx
call fcn.004547a5
add esp, 8
cmp eax, 0xffffffff
je 0x4542e1
lea ecx, [ebp - 0x10]
push ecx
lea ecx, [ebp + 8]
push ecx
lea ecx, [ebp - 4]
push ecx
push eax
call fcn.004538d5
add esp, 0x10
test eax, eax
je 0x4542e1
mov edi, dword [ebp - 4]
jmp 0x453cd7
cmp esi, 0x30
jge 0x453c6f
cmp esi, 0x21
je 0x453c6f
cmp esi, 0x2d
je 0x453c6f
cmp esi, 0x2e
jne 0x4542e1
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp + 8]
push eax
lea eax, [ebp - 4]
push eax
push esi
call fcn.004538d5
add esp, 0x10
test eax, eax
je 0x4542e1
mov edi, dword [ebp - 4]
mov eax, edi
mov ecx, dword [ebp + 8]
sub eax, ecx
cmp eax, 1
jne 0x453ca0
cmp byte [ecx], 0x3f
je 0x453cee
cmp eax, 3
jne 0x453cbb
push eax
push 0x660610
push ecx
call fcn.00650745
add esp, 0xc
test eax, eax
je 0x453cee
mov ecx, dword [ebp + 8]
mov eax, edi
sub eax, ecx
cmp eax, 8
jne 0x453cd7
push eax
push 0x6602cc
push ecx
call fcn.00650745
add esp, 0xc
test eax, eax
je 0x453cee
mov eax, dword [ebx + 0x2f0]
push ebx
call eax
mov esi, eax
add esp, 4
cmp esi, 0xffffffff
jne 0x453be5
mov byte [edi], 0
mov ecx, 0x660610
mov eax, dword [ebp + 8]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x453d19
test byte [eax + 0x3f], dh
pushal
xor dword [edx], edx
sbb eax, dword [ecx + 0x63]
push edi
or byte [ebp + 0x19], dl
sbb eax, 0xfb2e4ca4
test eax, 0x9dd0a8e0
nop
xchg dword [eax + 0x7f], esi
adc esp, esp
das
jg 0x453d2c
in al, 0x2f
cmc
mov ebx, cs
sub esp, dword ss:[eax + 0x72]
inc eax
push ecx
dec esi
pop ds
jb 0x453da1
pop eax
dec ebx
pushal
aaa
and al, 0xab
invalid
aaa
sub bh, dh
xchg ecx, eax
fnstcw word [edx - 0x3f21de1c]
aaa
and dword [ebp + 0x7d], eax
push 0x6d
mov ah, 2
wait
test dword [edx - 0xbbd0af0], edi
iretd
test byte [esi + 0x3f071016], 0x35
xor byte [ecx + 0x4c1ee0c5], cl
fist word [ebp + 0x65df7c04]
ret
rcl ebp, 0x10
and ecx, dword [ebp + 0x3efa32f2]
dec ebp
xor bh, dl
dec ebp
dec eax
test dword [ebp + 0x40], eax
mov word [ecx + 0x10962ec8], ss
mov ch, bl
mov ecx, 0xc64b8470
popfd
test dword [ebx], edi
jae 0x4541a8
xchg esi, eax
adc byte [eax - 0x7b8f4623], cl
dec ebx
invalid
inc eax
dec ebx
cmp cl, byte [edi + 0x18b0fb48]
test eax, 0xc856146e
or eax, 0xd6babeb4
mov edx, dword [eax]
ficomp dword [eax - 0x7c17004f]
sal bh, cl
into
adc al, 0x56
enter 0xffffffffffffb40d, 0xffffffffffffffbe
mov edx, 0xda108bd6
cwde
mov cl, 0xff
call 0xcf3d1462
aaa
and bl, byte [ebx - 0x78]
ficomp dword [eax]
add al, 0x10
stosd dword es:[edi], eax
and dword [ebx + 0xb1230a5], 0x2ec6f141
mul byte [edi]
jae 0x454210
or al, 0xe0
mov al, 0xf7
fisttp qword [edi - 0x54]
invalid
adc byte [0x469debff], al
fdivp st(5)
loop 0x454221
push cs
inc ebx
jle 0x4541d2
scasd eax, dword es:[edi]
adc byte [ebp + edi - 0x74], bh
outsd dx, dword [esi]
mov byte [0xb9dbb4ef], al
xchg esi, eax
int 0x75
int1
cmp eax, 0xefa26f8c
mov ah, 0xdb
mov ecx, 0xf175cd96
push edx
inc ecx
lodsd eax, dword [esi]
into
in eax, 0x9f
aas
popfd
and dh, ah
invalid
xchg dword [eax + 0x25], eax
pop ebp
jmp [edi + edx*4 - 0x308567be]
dec esi
int1
sbb al, 0xca
stosd dword es:[edi], eax
jno 0x45424b
jmp 0x4542c9
push 0xfffffffffffffffc
scasb al, byte es:[edi]
aaa
or eax, 0xa1e0ca39
add dh, dl
add al, 0x98
inc ebp
invalid
mov ecx, 0xf8fe9caf
xor byte [ebp + 0x3b], 0xc2
cmp eax, edx
cmc
fld qword [edi - 0x33]
and dword [ecx + 0xe0f4f5], esi
jb 0x4542da
iretd