Function at 0x45368c
Capabilities:
Encode data using xor
Set environment variable

Disassembly:
push ebp
mov ebp, esp
mov ecx, 4
push 0
push 0
dec ecx
jne 0x453694
push ecx
push ebx
push esi
push edi
mov eax, dword [0x459954]
mov byte [eax], 1
mov eax, 0x44edf4
call fcn.00409fe4
xor eax, eax
push ebp
push 0x453ac2
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x45987c]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x4597cc]
mov byte [eax], 0
mov eax, dword [0x459648]
mov byte [eax], 1
mov al, 1
call fcn.00403c44
mov eax, dword [0x45983c]
movzx eax, word [eax]
mov edx, dword [0x4597fc]
mov dword [edx], eax
xor eax, eax
call fcn.0041c5e0
push 0
mov eax, dword [0x459704]
mov ecx, 1
mov edx, dword [0x41c0e4]
call fcn.00408538
add esp, 4
push 0
mov eax, dword [0x459974]
mov ecx, 1
mov edx, dword [0x41c114]
call fcn.00408538
add esp, 4
mov dl, 1
mov eax, dword [0x44e798]
call fcn.0044e9c0
mov ebx, eax
mov edx, 0x453ae0
mov eax, ebx
call fcn.0044ea28
test al, al
je 0x45375f
mov ecx, dword [ebx + 0x40]
mov edx, 0x472da4
mov eax, dword [ebx + 0x3c]
call fcn.00404040
mov eax, ebx
call fcn.0044ea14
mov eax, dword [0x4599ac]
mov edx, dword [0x472db0]
mov dword [eax], edx
mov edx, 0x453af4
mov eax, ebx
call fcn.0044ea28
test al, al
je 0x453a90
lea eax, [ebp - 0x14]
call fcn.0041c1e4
mov eax, dword [ebp - 0x14]
call fcn.00407508
mov dword [0x472da0], eax
mov edx, 0x8000
mov eax, dword [0x472da0]
call fcn.0042bb90
mov dword [0x472d9c], eax
mov eax, dword [0x472da0]
call fcn.00406ea8
mov dword [0x472d98], eax
mov eax, dword [0x459704]
mov eax, dword [eax]
call fcn.0040831c
mov esi, eax
lea eax, [esi + 1]
push eax
mov eax, dword [0x459704]
mov ecx, 1
mov edx, dword [0x41c0e4]
call fcn.00408538
add esp, 4
mov eax, dword [0x472d98]
lea eax, [eax + eax*2]
call fcn.00403e9c
lea edi, [esi + esi*2]
mov edx, dword [0x459704]
mov edx, dword [edx]
mov dword [edx + edi*8], eax
lea eax, [esi + esi*2]
mov edx, dword [0x459704]
mov edx, dword [edx]
mov eax, dword [edx + eax*8]
mov edx, dword [0x472da0]
call fcn.0041512c
mov eax, dword [0x459704]
mov eax, dword [eax]
mov edx, dword [0x472d9c]
mov dword [eax + edi*8 + 4], edx
mov eax, dword [0x472d9c]
push eax
call sub.msvcrt.dll__get_osfhandle
pop ecx
mov edx, dword [0x459704]
mov edx, dword [edx]
mov dword [edx + edi*8 + 8], eax
mov eax, dword [0x459704]
mov eax, dword [eax]
mov edx, dword [ebx + 0x40]
mov dword [eax + edi*8 + 0xc], edx
lea eax, [esi + esi*2]
mov edx, dword [0x459704]
mov edx, dword [edx]
mov eax, dword [edx + eax*8 + 0xc]
call fcn.00403e9c
mov edx, dword [0x459704]
mov edx, dword [edx]
mov dword [edx + edi*8 + 0x10], eax
lea eax, [esi + esi*2]
mov edx, dword [0x459704]
mov edx, dword [edx]
mov edx, dword [edx + eax*8 + 0x10]
mov ecx, dword [ebx + 0x40]
mov eax, dword [ebx + 0x3c]
call fcn.00404040
mov eax, dword [0x459704]
mov eax, dword [eax]
mov edx, dword [eax + edi*8 + 0x10]
mov eax, dword [ebx + 0x40]
dec eax
test eax, eax
jl 0x4538a2
inc eax
xor byte [edx], 0xff
inc edx
dec eax
jne 0x45389b
lea eax, [esi + esi*2]
mov edx, dword [0x459704]
mov edx, dword [edx]
xor ecx, ecx
mov dword [edx + eax*8 + 0x14], ecx
mov eax, ebx
call fcn.00405298
lea edx, [ebp - 0x18]
mov eax, dword [0x472dac]
call fcn.0044ecb8
push dword [ebp - 0x18]
push 0x453b08
call sub.kernel32.dll_GetTickCount_1
xor edx, edx
push edx
push eax
lea edx, [ebp - 0x1c]
mov eax, 6
call fcn.0041486c
push dword [ebp - 0x1c]
push 0x453b1c
mov eax, 0xff
call fcn.00404284
lea ecx, [ebp - 0x20]
mov edx, 2
call fcn.0041484c
push dword [ebp - 0x20]
mov eax, dword [0x4599b4]
mov edx, 5
call fcn.00407778
mov eax, dword [0x4599b4]
mov eax, dword [eax]
call fcn.004150bc
mov eax, dword [0x4599b4]
mov eax, dword [eax]
call fcn.00407508
push eax
push 0x453b20
call sub.kernel32.dll_SetEnvironmentVariableW
mov eax, dword [0x4597f8]
xor edx, edx
mov dword [eax], edx
xor eax, eax
push ebp
push 0x453993
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
push 0
lea edx, [ebp - 0x24]
xor eax, eax
call fcn.004041fc
mov ecx, dword [ebp - 0x24]
mov dl, 1
mov eax, dword [0x44b6c8]
call fcn.0044c350
mov edx, dword [0x4597f8]
mov dword [edx], eax
mov edx, dword [0x4599b4]
mov edx, dword [edx]
mov eax, dword [0x4597f8]
mov eax, dword [eax]
call fcn.0044cb08
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4539b6
call fcn.0044d23c
mov edx, dword [0x459924]
mov dword [edx], eax
mov eax, dword [0x459924]
cmp dword [eax], 0
je 0x453a97
mov eax, dword [0x459948]
call fcn.0041bfbc
test eax, eax
je 0x4539fd
mov eax, dword [0x4597b8]
cmp byte [eax], 0
je 0x4539f3
mov eax, dword [0x4597cc]
mov byte [eax], 1
jmp 0x4539fd
mov eax, 0xff
call fcn.0044e3d0
mov eax, dword [0x4597cc]
cmp byte [eax], 0
jne 0x453a97
mov ecx, dword [0x459758]
mov ecx, dword [ecx]
mov edx, dword [0x459924]
mov edx, dword [edx]
mov eax, 1
call fcn.0041cdf8
mov edx, dword [0x459980]
mov dword [edx], eax
mov eax, dword [0x459980]
cmp dword [eax], 1
jne 0x453a41
mov eax, 1
call fcn.0044e3d0
mov eax, dword [0x459980]
cmp dword [eax], 0xffffffff
jne 0x453a52
xor eax, eax
call fcn.0044e3d0
mov edx, dword [0x459980]
mov edx, dword [edx]
xor eax, eax
call fcn.00428b44
mov edx, dword [0x459650]
mov word [edx], ax
call fcn.0042c724
mov eax, dword [0x4597b8]
cmp byte [eax], 0
jne 0x453a86
mov eax, dword [0x459650]
movzx eax, word [eax]
call fcn.0044e3d0
mov eax, dword [0x4597b8]
mov byte [eax], 0
jmp 0x453a97
mov eax, ebx
call fcn.00405298
xor eax, eax
call fcn.0044e3d0
mov eax, dword [0x4595ac]
xor edx, edx
mov dword [eax], edx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x453ac9
lea eax, [ebp - 0x24]
mov edx, 5
call fcn.00406a1c
ret