Function at 0x45e454
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov ecx, 9
push 0
push 0
dec ecx
jne 0x45e45c
push ecx
push ebx
push esi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x45e881
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp - 8], 0
setge byte [ebp - 0x21]
mov eax, dword [ebp - 8]
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
mov ecx, 0x3e8
cdq
idiv ecx
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
jle 0x45e4a4
dec dword [ebp - 0x10]
mov eax, dword [ebp - 8]
mov ecx, 0x3e8
cdq
idiv ecx
mov dword [ebp - 8], edx
xor eax, eax
mov dword [ebp - 0x20], eax
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 0xa
jg 0x45e866
cmp dword [ebp - 0x20], 1
jle 0x45e4dd
mov eax, 0x50
call fcn.00403474
add eax, 0x32
push eax
call sub.kernel32.dll_Sleep_1
mov dword [ebp - 0xc], 1
lea eax, [ebp - 0x2c]
mov edx, dword [ebp - 4]
call fcn.00404bac
mov eax, dword [ebp - 0x2c]
call fcn.00409164
test al, al
je 0x45e4b7
mov dword [ebp - 0xc], 2
lea eax, [ebp - 0x30]
mov edx, dword [ebp - 4]
call fcn.00404bac
mov eax, dword [ebp - 0x30]
mov edx, 0x20
call fcn.00408fd4
mov esi, eax
cmp dword [ebp - 0x10], 0
jle 0x45e541
mov edx, dword [ebp - 0x10]
shl edx, 0xd
xor ecx, ecx
mov eax, esi
call fcn.004090b0
test eax, eax
jge 0x45e541
mov eax, esi
call fcn.004090f4
jmp 0x45e866
mov edx, 0x463f20
mov ecx, 0x2000
mov eax, esi
call fcn.00409058
mov ebx, eax
mov eax, esi
call fcn.004090f4
cmp ebx, 0x2000
jne 0x45e4b7
xor ebx, ebx
mov eax, 1
mov edx, 0x463f24
xor ecx, ecx
mov cl, byte [edx]
add ebx, ecx
inc eax
inc edx
cmp eax, 0x1055
jne 0x45e573
cmp ebx, dword [0x463f20]
jne 0x45e4b7
xor ebx, ebx
mov eax, 1
mov edx, 0x464f80
xor ecx, ecx
mov cl, byte [edx]
add ebx, ecx
inc eax
inc edx
cmp eax, 0xfa1
jne 0x45e59a
cmp ebx, dword [0x464f7c]
jne 0x45e4b7
mov eax, 1
mov edx, 0x463f24
mov cl, byte [edx]
xor byte [edx + 0x105c], cl
inc eax
inc edx
cmp eax, 0xfa1
jne 0x45e5bf
xor ebx, ebx
mov eax, 1
mov edx, 0x464f80
xor ecx, ecx
mov cl, byte [edx]
add ebx, ecx
inc eax
inc edx
cmp eax, 0xfa1
jne 0x45e5dc
cmp word [0x464f80], 3
jae 0x45e5fe
mov word [0x464fcc], 0
cmp word [0x464f80], 2
jae 0x45e61c
mov eax, 0x15
mov edx, 0x464fa8
mov byte [edx], 0
inc eax
inc edx
cmp eax, 0x29
jne 0x45e612
cmp byte [0x464f96], 0
jne 0x45e62e
cmp byte [0x464f9e], 0
je 0x45e644
movzx eax, word [0x464f80]
mov edx, dword [0x464f78]
sub edx, eax
inc edx
mov dword [0x464f78], edx
cmp byte [0x464fa1], 0
je 0x45e663
movzx eax, word [0x464f80]
mov edx, dword [0x464f78]
sub edx, eax
inc edx
mov dword [0x464f78], edx
cmp ebx, dword [0x464f78]
jne 0x45e4b7
cmp byte [ebp - 0x21], 0
je 0x45e778
mov eax, 0x463f20
call fcn.0045e3f8
mov ebx, eax
test ebx, ebx
jge 0x45e695
mov dword [ebp - 0xc], 2
jmp 0x45e866
lea eax, [ebp - 0x34]
mov edx, dword [ebp - 4]
call fcn.00404bac
mov eax, dword [ebp - 0x34]
lea edx, [ebp - 0x28]
call fcn.004093e8
mov al, byte [0x464f9f]
xor al, 1
push eax
push ebx
mov eax, dword [ebp - 0x28]
call fcn.00404e08
push eax
call fcn.0045d61c
test eax, eax
jne 0x45e778
lea edx, [ebp - 0x3c]
mov eax, 0x465368
call fcn.00409780
mov eax, dword [ebp - 0x3c]
lea edx, [ebp - 0x38]
call fcn.004088d8
mov edx, dword [ebp - 0x38]
mov eax, 0x45e89c
call fcn.00404f4c
test eax, eax
jle 0x45e76c
lea eax, [ebp - 0x44]
mov edx, dword [ebp - 4]
call fcn.00404bac
mov eax, dword [ebp - 0x44]
lea edx, [ebp - 0x40]
call fcn.004093b4
push dword [ebp - 0x40]
lea eax, [ebp - 0x48]
call fcn.0045ad30
push dword [ebp - 0x48]
push 0x45e8b0
lea eax, [ebp - 0x4c]
lea edx, [ebx + ebx*2]
mov ecx, dword [0x462304]
lea edx, [ecx + edx*4]
call fcn.00404bac
push dword [ebp - 0x4c]
push 0x45e8bc
lea eax, [ebp - 0x28]
mov edx, 5
call fcn.00404cc8
mov al, byte [0x464f9f]
xor al, 1
push eax
push ebx
mov eax, dword [ebp - 0x28]
call fcn.00404e08
push eax
call fcn.0045d61c
test eax, eax
jne 0x45e778
mov dword [ebp - 0xc], 0x17
jmp 0x45e866
mov dword [ebp - 0xc], 0x17
jmp 0x45e866
cmp byte [ebp - 0x21], 0
je 0x45e848
cmp byte [0x464f9f], 0
je 0x45e848
xor esi, esi
mov eax, dword [0x464fc8]
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x14]
push eax
push 1
call fcn.0045da98
mov ebx, eax
test ebx, ebx
jle 0x45e7bd
add ebx, 4
mov dword [ebp - 0xc], ebx
jmp 0x45e4b7
mov eax, dword [0x464fc8]
cmp eax, dword [ebp - 0x14]
je 0x45e7e6
inc esi
cmp esi, 5
jl 0x45e791
mov dword [0x464f88], eax
mov eax, dword [ebp - 0x14]
mov dword [0x464f8c], eax
mov dword [ebp - 0xc], 8
jmp 0x45e4b7
mov eax, dword [ebp - 0x1c]
mov ecx, 0x64
cdq
idiv ecx
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x1c], 0
jle 0x45e801
mov byte [0x464f9e], 1
xor eax, eax
mov al, byte [0x461f1c]
cmp ax, word [0x464f82]
je 0x45e848
cmp dword [0x462204], 2
jle 0x45e848
movzx eax, word [0x464fcc]
cmp eax, dword [0x462204]
jge 0x45e848
mov eax, dword [0x462204]
mov dword [0x464f88], eax
movzx eax, word [0x464fcc]
mov dword [0x464f8c], eax
mov dword [ebp - 0xc], 0x15
jmp 0x45e866
cmp dword [ebp - 8], 0xc8
jle 0x45e861
movzx eax, word [0x464f82]
cmp eax, dword [ebp - 8]
jne 0x45e4b7
xor eax, eax
mov dword [ebp - 0xc], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x45e888
lea eax, [ebp - 0x4c]
mov edx, 0xa
call fcn.0040496c
ret