Function at 0x414410
Capabilities:
Check if file exists
Get common file path
Get file attributes
Query environment variable
Query or enumerate registry value

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4fc34b
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
mov eax, 0x2690
push ebx
call fcn.004b57d0
push esi
push edi
push 0x2000
lea eax, [ebp - 0x26a0]
mov esi, ecx
push 0
push eax
mov dword [ebp - 0x2c], esi
call fcn.004cebf0
xor eax, eax
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x30], 7
mov word [ebp - 0x44], ax
mov edi, dword [ebx + 8]
lea ecx, [ebp - 0x74]
mov dword [ebp - 4], eax
sub esp, 0xc
mov eax, esp
mov dword [eax], 0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0
movups xmm0, xmmword [edi]
movups xmmword [eax], xmm0
movq xmm0, qword [edi + 0x10]
movq qword [eax + 0x10], xmm0
xor eax, eax
mov dword [edi + 0x10], 0
mov dword [edi + 0x14], 7
mov word [edi], ax
call fcn.0040d6b0
add esp, 0x18
mov ecx, edi
push eax
call fcn.00409550
mov edx, dword [ebp - 0x60]
cmp edx, 8
jb 0x41450a
mov ecx, dword [ebp - 0x74]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x414500
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x415699
push edx
push ecx
call fcn.004b4fdc
add esp, 8
mov edx, edi
lea ecx, [ebp - 0x8c]
call fcn.0040cfe0
mov byte [ebp - 4], 1
mov eax, dword [0x6d086c]
test eax, eax
je 0x414529
cmp eax, 0xa
jae 0x414576
push ecx
push str.ext_ms_
lea ecx, [ebp - 0x8c]
call fcn.00415d00
test eax, eax
jne 0x414576
mov eax, dword [ebp - 0x7c]
lea ecx, [ebp - 0x8c]
mov edx, 4
cmp eax, edx
cmovb edx, eax
cmp dword [ebp - 0x78], 8
cmovae ecx, dword [ebp - 0x8c]
sub eax, edx
mov dword [ebp - 0x7c], eax
lea eax, [eax*2 + 2]
push eax
lea eax, [ecx + edx*2]
push eax
push ecx
call fcn.004ce670
add esp, 0xc
mov eax, dword [esi + 4]
mov esi, dword [eax]
cmp esi, eax
je 0x4145a9
nop
cmp dword [esi + 0x1c], 8
lea eax, [esi + 8]
jb 0x41458b
mov eax, dword [eax]
push ecx
push eax
lea ecx, [ebp - 0x8c]
call fcn.00415d00
cmp eax, 0xffffffff
jne 0x4145a9
mov ecx, dword [ebp - 0x2c]
mov eax, dword [esi]
mov esi, eax
cmp eax, dword [ecx + 4]
jne 0x414580
mov eax, dword [ebp - 0x2c]
cmp esi, dword [eax + 4]
je 0x414823
mov eax, dword [esi + 0x20]
mov esi, dword [esi + 0x24]
mov dword [ebp - 0x90], eax
cmp eax, esi
je 0x414613
mov edx, dword [ebx + 0xc]
cmp dword [edx + 0x14], 8
mov ecx, dword [edx + 0x10]
mov dword [ebp - 0x94], ecx
jb 0x4145d9
mov edx, dword [edx]
cmp dword [eax + 0x14], 8
mov ecx, dword [eax + 0x10]
mov edi, dword [ebx + 8]
mov dword [ebp - 0x2c], eax
jb 0x4145f0
mov edi, dword [eax]
mov dword [ebp - 0x2c], edi
mov edi, dword [ebx + 8]
cmp ecx, dword [ebp - 0x94]
jne 0x414616
push ecx
mov ecx, dword [ebp - 0x2c]
call fcn.0040b300
add esp, 4
test eax, eax
lea eax, [esi - 0x18]
je 0x414616
mov eax, dword [ebp - 0x90]
jmp 0x414616
mov eax, dword [ebx + 0xc]
cmp edi, eax
je 0x41462e
cmp dword [eax + 0x14], 8
mov ecx, dword [eax + 0x10]
jb 0x414625
mov eax, dword [eax]
push ecx
push eax
mov ecx, edi
call fcn.00409830
push dword [ebx + 0x1c]
push dword [ebx + 0x18]
push edi
call fcn.004156d0
mov esi, eax
test esi, esi
jns 0x4155d5
cmp esi, 0xc015001d
je 0x4155d5
test byte [ebx + 0x14], 2
je 0x41481c
push 0x1fe
lea eax, [ebp - 0x2a0]
push 0
push eax
call fcn.004cebf0
add esp, 0xc
lea eax, [ebp - 0x2a0]
push 0xff
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
xor eax, eax
mov dword [ebp - 0x5c], 0
lea ecx, [ebp - 0x2a0]
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 7
lea edx, [ecx + 2]
mov word [ebp - 0x5c], ax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4146a6
sub ecx, edx
lea eax, [ebp - 0x2a0]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x5c]
call fcn.00409830
push 1
push 0x52faf0
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 2
call fcn.00416710
mov dword [ebp - 0x28], 0
xor ecx, ecx
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x28], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x18], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
mov byte [ebp - 4], 3
mov eax, edi
cmp dword [edi + 0x14], 8
jb 0x41471f
mov eax, dword [edi]
push dword [edi + 0x10]
lea ecx, [ebp - 0x28]
push eax
call fcn.00416710
xor ecx, ecx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x74], xmm0
movq xmm0, qword [eax + 0x10]
mov word [eax], cx
mov ecx, edi
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
lea eax, [ebp - 0x74]
push eax
movq qword [ebp - 0x64], xmm0
call fcn.00409550
mov edx, dword [ebp - 0x60]
cmp edx, 8
jb 0x414794
mov ecx, dword [ebp - 0x74]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x41478a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41569e
push edx
push ecx
call fcn.004b4fdc
add esp, 8
mov edx, dword [ebp - 0x14]
cmp edx, 8
jb 0x4147ce
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4147c4
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41569e
push edx
push ecx
call fcn.004b4fdc
add esp, 8
mov edx, dword [ebp - 0x48]
xor eax, eax
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
cmp edx, 8
jb 0x41481c
mov ecx, dword [ebp - 0x5c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x414812
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x41569e
push edx
push ecx
call fcn.004b4fdc
add esp, 8
xor esi, esi
jmp 0x4155d5
test byte [ebx + 0x14], 1
je 0x414833
mov esi, 0xc0000225
jmp 0x4155d5
push dword [ebx + 0x1c]
push dword [ebx + 0x18]
push edi
call fcn.004156d0
mov esi, eax
test esi, esi
jns 0x4155d5
cmp esi, 0xc015001d
je 0x4155d5
test byte [ebx + 0x14], 4
je 0x414865
mov esi, 0xc0000225
jmp 0x4155d5
cmp dword [edi + 0x14], 8
mov eax, edi
jb 0x41486f
mov eax, dword [edi]
mov esi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
push eax
call esi
cmp eax, 0xffffffff
je 0x414884
xor esi, esi
jmp 0x4155d5
mov dword [ebp - 0x98], 0
lea eax, [ebp - 0x98]
mov byte [ebp - 4], 4
push eax
push 0x52faf8
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyW]
test eax, eax
jne 0x414b55
xor esi, esi
test eax, eax
jne 0x414b4f
push 0x1fe
push eax
lea eax, [ebp - 0x6a0]
push eax
call fcn.004cebf0
add esp, 0xc
lea eax, [ebp - 0x2a0]
push 0x1fe
push 0
push eax
call fcn.004cebf0
add esp, 0xc
mov dword [ebp - 0x2c], 0xff
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x90], 0
push eax
lea eax, [ebp - 0x2a0]
push eax
lea eax, [ebp - 0x90]
push eax
push 0
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x6a0]
push eax
push esi
push dword [ebp - 0x98]
call dword [sym.imp.ADVAPI32.dll_RegEnumValueW]
cmp dword [ebp - 0x78], 8
mov dword [ebp - 0x94], eax
lea eax, [ebp - 0x8c]
cmovae eax, dword [ebp - 0x8c]
push eax
lea eax, [ebp - 0x2a0]
push eax
call fcn.004e9968
add esp, 8
test eax, eax
jne 0x414b3c
push 0x1fe
push eax
lea eax, [ebp - 0x4a0]
push eax
call fcn.004cebf0
add esp, 0xc
mov dword [ebp - 0x2c], 0xff
test byte [ebx + 0x14], 8
lea eax, [ebp - 0x4a0]
push 0xff
push eax
je 0x414988
call dword [sym.imp.KERNEL32.dll_GetSystemWow64DirectoryW]
jmp 0x41498e
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
mov eax, dword [ebp - 0x94]
test eax, eax
jne 0x414b42
lea ecx, [ebp - 0x4a0]
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x4c], eax
lea edx, [ecx + 2]
mov dword [ebp - 0x48], 7
mov word [ebp - 0x5c], ax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4149b6
sub ecx, edx
lea eax, [ebp - 0x4a0]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x5c]
call fcn.00409830
push 1
push 0x52faf4
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 5
call fcn.00416710
mov dword [ebp - 0x28], 0
xor ecx, ecx
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x28], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x18], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
lea ecx, [ebp - 0x2a0]
mov byte [ebp - 4], 6
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x414a30
sub ecx, edx
lea eax, [ebp - 0x2a0]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x28]
call fcn.00416710
xor ecx, ecx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x74], xmm0
movq xmm0, qword [eax + 0x10]
mov word [eax], cx
mov ecx, edi
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
lea eax, [ebp - 0x74]
push eax
movq qword [ebp - 0x64], xmm0
call fcn.00409550
mov edx, dword [ebp - 0x60]
cmp edx, 8
jb 0x414ab8
mov ecx, dword [ebp - 0x74]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x414aae
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156a3
push edx
push ecx
call fcn.004b4fdc
add esp, 8
mov edx, dword [ebp - 0x14]
cmp edx, 8
jb 0x414af2
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x414ae8
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156a3
push edx
push ecx
call fcn.004b4fdc
add esp, 8
mov edx, dword [ebp - 0x48]
xor eax, eax
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
cmp edx, 8
jb 0x415671
mov ecx, dword [ebp - 0x5c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x414b75
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156a3
jmp 0x414b75
mov eax, dword [ebp - 0x94]
inc esi
cmp esi, 0x1000
jl 0x4148b3
mov esi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov ecx, dword [ebx + 0x10]
mov edx, dword [ecx + 0x10]
test edx, edx
je 0x414c86
mov eax, 0x7ffffffe
sub eax, edx
cmp eax, 1
jb 0x4156a8
jmp 0x414b86
push edx
push ecx
call fcn.004b4fdc
add esp, 8
xor esi, esi
jmp 0x4155c4
cmp dword [ecx + 0x14], 8
jb 0x414b8e
mov ecx, dword [ecx]
push 1
push 0x52fb70
push edx
push ecx
push ecx
push dword [ebp - 0x90]
lea ecx, [ebp - 0x5c]
call fcn.00416670
mov byte [ebp - 4], 7
lea eax, [ebp - 0x8c]
cmp dword [ebp - 0x78], 8
lea ecx, [ebp - 0x5c]
push dword [ebp - 0x7c]
cmovae eax, dword [ebp - 0x8c]
push eax
call fcn.00416710
xor ecx, ecx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x74], xmm0
movq xmm0, qword [eax + 0x10]
mov word [eax], cx
lea ecx, [ebp - 0x44]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
lea eax, [ebp - 0x74]
push eax
movq qword [ebp - 0x64], xmm0
call fcn.00409550
mov edx, dword [ebp - 0x60]
cmp edx, 8
jb 0x414c31
mov ecx, dword [ebp - 0x74]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x414c27
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156ad
push edx
push ecx
call fcn.004b4fdc
add esp, 8
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x48]
cmp edx, 8
jb 0x414c6f
mov ecx, dword [ebp - 0x5c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x414c65
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156ad
push edx
push ecx
call fcn.004b4fdc
add esp, 8
cmp dword [ebp - 0x30], 8
lea eax, [ebp - 0x44]
cmovae eax, dword [ebp - 0x44]
push eax
call esi
cmp eax, 0xffffffff
jne 0x415657
mov eax, dword [ebx + 0x18]
push dword [eax + 4]
lea eax, [ebp - 0x5c]
push eax
call fcn.00415ad0
push 1
push 0x52fb74
mov ecx, eax
mov byte [ebp - 4], 8
call fcn.00416710
mov dword [ebp - 0x28], 0
xor ecx, ecx
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x28], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x18], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
mov byte [ebp - 4], 9
lea eax, [ebp - 0x8c]
cmp dword [ebp - 0x78], 8
lea ecx, [ebp - 0x28]
push dword [ebp - 0x7c]
cmovae eax, dword [ebp - 0x8c]
push eax
call fcn.00416710
xor ecx, ecx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x74], xmm0
movq xmm0, qword [eax + 0x10]
mov word [eax], cx
lea ecx, [ebp - 0x44]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
lea eax, [ebp - 0x74]
push eax
movq qword [ebp - 0x64], xmm0
call fcn.00409550
mov edx, dword [ebp - 0x60]
cmp edx, 8
jb 0x414d6b
mov ecx, dword [ebp - 0x74]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x414d61
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156b2
push edx
push ecx
call fcn.004b4fdc
add esp, 8
mov byte [ebp - 4], 8
mov edx, dword [ebp - 0x14]
cmp edx, 8
jb 0x414da9
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x414d9f
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156b2
push edx
push ecx
call fcn.004b4fdc
add esp, 8
xor eax, eax
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x48]
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
cmp edx, 8
jb 0x414dfb
mov ecx, dword [ebp - 0x5c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x414df1
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156b2
push edx
push ecx
call fcn.004b4fdc
add esp, 8
cmp dword [ebp - 0x30], 8
lea eax, [ebp - 0x44]
cmovae eax, dword [ebp - 0x44]
push eax
call esi
cmp eax, 0xffffffff
jne 0x415657
test byte [ebx + 0x14], 8
lea eax, [ebp - 0x26a0]
push 0x1000
push eax
je 0x414e2c
call dword [sym.imp.KERNEL32.dll_GetSystemWow64DirectoryW]
jmp 0x414e32
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
xor eax, eax
mov dword [ebp - 0x5c], 0
lea ecx, [ebp - 0x26a0]
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 7
lea edx, [ecx + 2]
mov word [ebp - 0x5c], ax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x414e56
sub ecx, edx
lea eax, [ebp - 0x26a0]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x5c]
call fcn.00409830
push 1
push 0x52fb78
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 0xa
call fcn.00416710
mov dword [ebp - 0x28], 0
xor ecx, ecx
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x28], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x18], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
mov byte [ebp - 4], 0xb
lea eax, [ebp - 0x8c]
cmp dword [ebp - 0x78], 8
lea ecx, [ebp - 0x28]
push dword [ebp - 0x7c]
cmovae eax, dword [ebp - 0x8c]
push eax
call fcn.00416710
xor ecx, ecx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x74], xmm0
movq xmm0, qword [eax + 0x10]
mov word [eax], cx
lea ecx, [ebp - 0x44]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
lea eax, [ebp - 0x74]
push eax
movq qword [ebp - 0x64], xmm0
call fcn.00409550
mov edx, dword [ebp - 0x60]
cmp edx, 8
jb 0x414f4c
mov ecx, dword [ebp - 0x74]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x414f42
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156b7
push edx
push ecx
call fcn.004b4fdc
add esp, 8
mov byte [ebp - 4], 0xa
mov edx, dword [ebp - 0x14]
cmp edx, 8
jb 0x414f8a
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x414f80
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156b7
push edx
push ecx
call fcn.004b4fdc
add esp, 8
xor eax, eax
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x48]
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
cmp edx, 8
jb 0x414fdc
mov ecx, dword [ebp - 0x5c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x414fd2
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156b7
push edx
push ecx
call fcn.004b4fdc
add esp, 8
cmp dword [ebp - 0x30], 8
lea eax, [ebp - 0x44]
cmovae eax, dword [ebp - 0x44]
push eax
call esi
cmp eax, 0xffffffff
jne 0x415657
push 0x1000
lea eax, [ebp - 0x26a0]
push eax
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
xor eax, eax
mov dword [ebp - 0x5c], 0
lea ecx, [ebp - 0x26a0]
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 7
lea edx, [ecx + 2]
mov word [ebp - 0x5c], ax
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x415030
sub ecx, edx
lea eax, [ebp - 0x26a0]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x5c]
call fcn.00409830
push 1
push 0x52fb7c
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 0xc
call fcn.00416710
mov dword [ebp - 0x28], 0
xor ecx, ecx
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x28], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x18], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
mov byte [ebp - 4], 0xd
lea eax, [ebp - 0x8c]
cmp dword [ebp - 0x78], 8
lea ecx, [ebp - 0x28]
push dword [ebp - 0x7c]
cmovae eax, dword [ebp - 0x8c]
push eax
call fcn.00416710
xor ecx, ecx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x74], xmm0
movq xmm0, qword [eax + 0x10]
mov word [eax], cx
lea ecx, [ebp - 0x44]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
lea eax, [ebp - 0x74]
push eax
movq qword [ebp - 0x64], xmm0
call fcn.00409550
mov edx, dword [ebp - 0x60]
cmp edx, 8
jb 0x415126
mov ecx, dword [ebp - 0x74]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x41511c
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156bc
push edx
push ecx
call fcn.004b4fdc
add esp, 8
mov byte [ebp - 4], 0xc
mov edx, dword [ebp - 0x14]
cmp edx, 8
jb 0x415164
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x41515a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156bc
push edx
push ecx
call fcn.004b4fdc
add esp, 8
xor eax, eax
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x48]
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
cmp edx, 8
jb 0x4151b6
mov ecx, dword [ebp - 0x5c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4151ac
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156bc
push edx
push ecx
call fcn.004b4fdc
add esp, 8
cmp dword [ebp - 0x30], 8
lea eax, [ebp - 0x44]
cmovae eax, dword [ebp - 0x44]
push eax
call esi
cmp eax, 0xffffffff
jne 0x415657
lea eax, [ebp - 0x26a0]
push eax
push 0x1000
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
xor eax, eax
mov dword [ebp - 0x5c], 0
lea ecx, [ebp - 0x26a0]
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 7
lea edx, [ecx + 2]
mov word [ebp - 0x5c], ax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x415203
sub ecx, edx
lea eax, [ebp - 0x26a0]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x5c]
call fcn.00409830
push 1
push 0x52fb80
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 0xe
call fcn.00416710
mov dword [ebp - 0x28], 0
xor ecx, ecx
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x28], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x18], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
mov byte [ebp - 4], 0xf
lea eax, [ebp - 0x8c]
cmp dword [ebp - 0x78], 8
lea ecx, [ebp - 0x28]
push dword [ebp - 0x7c]
cmovae eax, dword [ebp - 0x8c]
push eax
call fcn.00416710
xor ecx, ecx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x74], xmm0
movq xmm0, qword [eax + 0x10]
mov word [eax], cx
lea ecx, [ebp - 0x44]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
lea eax, [ebp - 0x74]
push eax
movq qword [ebp - 0x64], xmm0
call fcn.00409550
mov edx, dword [ebp - 0x60]
cmp edx, 8
jb 0x4152f9
mov ecx, dword [ebp - 0x74]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4152ef
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156c1
push edx
push ecx
call fcn.004b4fdc
add esp, 8
mov byte [ebp - 4], 0xe
mov edx, dword [ebp - 0x14]
cmp edx, 8
jb 0x415337
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x41532d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156c1
push edx
push ecx
call fcn.004b4fdc
add esp, 8
xor eax, eax
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x48]
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
cmp edx, 8
jb 0x415389
mov ecx, dword [ebp - 0x5c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x41537f
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156c1
push edx
push ecx
call fcn.004b4fdc
add esp, 8
cmp dword [ebp - 0x30], 8
lea eax, [ebp - 0x44]
cmovae eax, dword [ebp - 0x44]
push eax
call esi
cmp eax, 0xffffffff
jne 0x415657
push 0x1000
lea eax, [ebp - 0x26a0]
push eax
push 0x52fb84
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
lea eax, [ebp - 0x9c]
push eax
lea eax, [ebp - 0x26a0]
push 0x52fb90
push eax
call fcn.004e9c3d
mov edx, eax
add esp, 0xc
test edx, edx
je 0x4155bf
nop dword [eax]
mov ecx, edx
mov dword [ebp - 0x5c], 0
xor eax, eax
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 7
mov word [ebp - 0x5c], ax
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x415400
sub ecx, esi
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0x5c]
call fcn.00409830
push 1
push 0x52fb98
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 0x10
call fcn.00416710
mov dword [ebp - 0x28], 0
xor ecx, ecx
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x28], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x18], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
mov byte [ebp - 4], 0x11
lea eax, [ebp - 0x8c]
cmp dword [ebp - 0x78], 8
lea ecx, [ebp - 0x28]
push dword [ebp - 0x7c]
cmovae eax, dword [ebp - 0x8c]
push eax
call fcn.00416710
xor ecx, ecx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x74], xmm0
movq xmm0, qword [eax + 0x10]
mov word [eax], cx
lea ecx, [ebp - 0x44]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
lea eax, [ebp - 0x74]
push eax
movq qword [ebp - 0x64], xmm0
call fcn.00409550
mov edx, dword [ebp - 0x60]
cmp edx, 8
jb 0x4154f0
mov ecx, dword [ebp - 0x74]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4154e6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x415699
push edx
push ecx
call fcn.004b4fdc
add esp, 8
mov byte [ebp - 4], 0x10
mov edx, dword [ebp - 0x14]
cmp edx, 8
jb 0x41552e
mov ecx, dword [ebp - 0x28]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x415524
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x415699
push edx
push ecx
call fcn.004b4fdc
add esp, 8
xor eax, eax
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x48]
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 7
mov word [ebp - 0x28], ax
cmp edx, 8
jb 0x415580
mov ecx, dword [ebp - 0x5c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x415576
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x415699
push edx
push ecx
call fcn.004b4fdc
add esp, 8
cmp dword [ebp - 0x30], 8
lea eax, [ebp - 0x44]
cmovae eax, dword [ebp - 0x44]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x415657
lea eax, [ebp - 0x9c]
push eax
push 0x52fb94
push dword [ebp - 0x9c]
call fcn.004e9c3d
mov edx, eax
add esp, 0xc
test edx, edx
jne 0x4153e0
mov esi, 0xc0000225
mov eax, dword [ebp - 0x98]
test eax, eax
jle 0x4155d5
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edx, dword [ebp - 0x78]
cmp edx, 8
jb 0x415612
mov ecx, dword [ebp - 0x8c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x415608
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156c6
push edx
push ecx
call fcn.004b4fdc
add esp, 8
mov edx, dword [ebp - 0x30]
xor eax, eax
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x78], 7
mov word [ebp - 0x8c], ax
cmp edx, 8
jb 0x415682
mov ecx, dword [ebp - 0x44]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x415678
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4156c6
jmp 0x415678
lea eax, [ebp - 0x44]
cmp edi, eax
je 0x415671
cmp dword [ebp - 0x30], 8
mov ecx, edi
push dword [ebp - 0x34]
cmovae eax, dword [ebp - 0x44]
push eax
call fcn.00409830
xor esi, esi
jmp 0x4155c4
push edx
push ecx
call fcn.004b4fdc
add esp, 8
mov ecx, dword [ebp - 0xc]
mov eax, esi
pop edi
mov dword fs:[0], ecx
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0x18
call fcn.004e34cc
call fcn.004e34cc
call fcn.004e34cc
call fcn.00401d40
call fcn.004e34cc
call fcn.004e34cc
call fcn.004e34cc
call fcn.004e34cc
call fcn.004e34cc
call fcn.004e34cc
int3