Function at 0x4501b0
Capabilities:
Get common file path
Query environment variable

Disassembly:
mov eax, 0x50e4
call fcn.0051dcc0
mov eax, dword [0x572844]
xor eax, esp
mov dword [esp + 0x50e0], eax
cmp byte [0x57a0e0], 0
push ebx
push edi
mov edi, dword [esp + 0x50f0]
mov ebx, ecx
jne 0x45020c
cmp word [edi], 0x2e
jne 0x45020c
movzx eax, word [edi + 2]
push eax
call fcn.00495020
test al, al
je 0x4501fb
add edi, 4
cmp word [edi], 0x2e
je 0x4501e2
jmp 0x45020c
cmp word [edi], 0x2e
jne 0x45020c
cmp word [edi + 2], 0
je 0x450857
push 0x800
lea eax, [esp + 0x3024]
push eax
push edi
call fcn.00494910
mov ecx, 0x542618
mov eax, edi
push ebp
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x45024d
test dx, dx
je 0x450249
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x45024d
add eax, 4
add ecx, 4
test dx, dx
jne 0x450227
xor ebp, ebp
jmp 0x450252
sbb ebp, ebp
or ebp, 1
push esi
push edi
mov dword [esp + 0x24], ebp
call fcn.00495820
mov esi, eax
movzx ecx, word [esi]
push ecx
call fcn.00495020
test al, al
je 0x4502b4
test ebp, ebp
je 0x4502b4
lea ecx, [esp + 0x3028]
mov eax, edi
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4502a6
test dx, dx
je 0x4502a2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4502a6
add eax, 4
add ecx, 4
test dx, dx
jne 0x450280
xor eax, eax
jmp 0x4502ab
sbb eax, eax
or eax, 1
test eax, eax
je 0x4502b4
xor eax, eax
mov word [esi], ax
movzx eax, word [edi]
xor ebp, ebp
mov dword [esp + 0x18], ebp
mov esi, edi
test ax, ax
je 0x450306
mov ecx, eax
cmp cx, 0x2e
jne 0x450302
cmp word [esi + 2], cx
jne 0x450302
movzx eax, word [esi + 4]
push eax
call fcn.00495020
test al, al
jne 0x4502e7
cmp word [esi + 4], 0
jne 0x450302
xor eax, eax
cmp word [esi + 4], ax
setne al
inc ebp
lea esi, [esi + eax*2]
movzx eax, word [esi + 4]
add esi, 4
mov ecx, eax
test ax, ax
jne 0x4502c6
mov dword [esp + 0x18], ebp
cmp byte [0x57a0e0], 0
je 0x450334
cmp byte [esp + 0x50fc], 0
je 0x450334
push edi
call fcn.00494ef0
test al, al
jne 0x45032d
push edi
call fcn.00494ec0
test al, al
je 0x450334
mov ecx, ebx
call fcn.004508c0
cmp byte [ebx + 0x1042], 0
je 0x450369
mov ecx, dword [ebx + 0x2144]
mov eax, ebp
cmp ebp, ecx
jl 0x45034b
mov eax, ecx
cmp dword [esp + 0x20], 0
jne 0x450354
mov eax, ecx
test eax, eax
je 0x450369
push 0
push eax
mov ecx, ebx
call fcn.00451b40
push 0
jmp 0x45084e
mov byte [ebx + 0x1042], 0
cmp byte [0x57a0e0], 0
je 0x450462
push 0
push 0x543968
push str.FileList
call fcn.004c2f20
test eax, eax
je 0x45039a
test ebp, ebp
je 0x450855
push 0x800
lea eax, [esp + 0x202c]
mov ecx, 0x5a57a8
push eax
call fcn.004076a0
mov ecx, 0x542618
mov eax, edi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4503de
test dx, dx
je 0x4503da
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4503de
add eax, 4
add ecx, 4
test dx, dx
jne 0x4503b8
xor eax, eax
jmp 0x4503e3
sbb eax, eax
or eax, 1
test eax, eax
je 0x450414
push edi
mov ecx, 0x5a57a8
call fcn.00409140
test al, al
je 0x450414
xor eax, eax
lea ecx, [esp + 0x2028]
test ebp, ebp
setle al
dec eax
and eax, ecx
mov ecx, ebx
push eax
call fcn.00454e20
jmp 0x450855
push 0x800
lea eax, [esp + 0x2c]
mov ecx, 0x5a57a8
push eax
call fcn.00406e80
push 0x800
lea eax, [esp + 0x2c]
push eax
lea esi, [ebx + 0x1044]
push esi
call fcn.004b0360
push esi
call fcn.004958c0
mov ecx, ebx
call fcn.004508c0
test al, al
je 0x450855
lea eax, [esp + 0x28]
push eax
call fcn.00495850
jmp 0x45084d
push 0x800
lea ebp, [ebx + 0x1044]
push ebp
lea eax, [esp + 0x2030]
push eax
call fcn.004b0360
xor eax, eax
push ebp
mov word [esp + 0x2c], ax
call fcn.00495820
movzx ecx, word [ebp]
mov esi, eax
push ecx
call fcn.00495020
test al, al
je 0x4504ae
movzx ecx, word [esi]
push ecx
call fcn.00495020
test al, al
je 0x4504ae
cmp esi, ebp
jbe 0x4504ae
xor eax, eax
mov word [esi], ax
mov esi, dword [esp + 0x18]
test esi, esi
jle 0x45068b
lea ebx, [ebx]
cmp byte [ebx + 0x1042], 0
jne 0x45068b
push ebp
call fcn.00494ec0
test al, al
je 0x45063a
movzx eax, word [ebx + 0x1048]
push eax
call fcn.00495020
test al, al
je 0x45063a
cmp word [ebx + 0x104a], 0
jne 0x45063a
cmp dword [ebx + 0x2144], 0
jle 0x450513
mov byte [ebx + 0x1042], 1
jmp 0x450656
lea eax, [esp + 0x1c]
mov dword [esp + 0x1c], 0
push eax
push 0
push 0
push 0x11
push dword [ebx + 0x30]
call dword [sym.imp.SHELL32.dll_SHGetFolderLocation]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x10], eax
lea eax, [esp + 0x14]
push eax
mov dword [esp + 0x18], 0
call dword [sym.imp.SHELL32.dll_SHGetDesktopFolder]
test eax, eax
jne 0x45061b
cmp dword [esp + 0x10], eax
je 0x45061b
push 0x800
lea eax, [esp + 0x102c]
push eax
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x20]
push eax
push dword [0x5a84e0]
call fcn.00414fe0
test al, al
je 0x4505af
cmp byte [0x5afe85], 0
jne 0x450607
push 1
lea eax, [esp + 0x102c]
mov byte [0x5afe85], 1
push eax
mov ecx, 0x5a84b0
call fcn.004501b0
mov byte [0x5afe85], 0
jmp 0x450607
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x24], 0
mov eax, dword [ecx]
mov esi, dword [eax + 0x14]
lea eax, [esp + 0x24]
push eax
push 0x557ad4
push 0
push dword [esp + 0x1c]
push ecx
mov ecx, esi
call dword [0x541740]
call esi
test eax, eax
jne 0x450607
mov eax, dword [esp + 0x24]
push dword [esp + 0x10]
mov dword [0x5aa574], eax
call fcn.004143d0
mov dword [0x5aa4f4], eax
mov byte [0x5a94f2], 1
mov dword [0x5aa5f4], 1
mov eax, dword [esp + 0x14]
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x541740]
call esi
mov eax, dword [0x5e3c10]
push dword [esp + 0x1c]
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 0x14]
mov ecx, esi
call dword [0x541740]
call esi
mov esi, dword [esp + 0x18]
jmp 0x450656
push 0x800
push ebp
call fcn.00495850
push eax
lea eax, [esp + 0x30]
push eax
call fcn.004b0360
push ebp
call fcn.004958c0
movzx eax, word [edi]
dec esi
mov dword [esp + 0x18], esi
mov ecx, eax
cmp eax, 0x2e
jne 0x450673
movzx eax, word [edi + 2]
add edi, 2
cmp eax, 0x2e
je 0x450665
mov ecx, eax
movzx eax, cx
push eax
call fcn.00495020
test al, al
je 0x450683
add edi, 2
test esi, esi
jg 0x4504c0
cmp dword [esp + 0x20], 0
jne 0x4506ba
push 0x800
lea eax, [esp + 0x102c]
push eax
push ebp
call fcn.00494910
push 0x800
lea eax, [esp + 0x102c]
push eax
push ebp
call fcn.004b0360
jmp 0x45072b
push edi
call fcn.00494ef0
test al, al
je 0x4506d2
push 0x800
push edi
push ebp
call fcn.004b0360
jmp 0x45072b
push edi
call fcn.00494ec0
test al, al
je 0x45070e
movzx eax, word [ebp]
push eax
call fcn.004b4390
movzx ecx, word [edi]
mov esi, eax
push ecx
call fcn.004b4390
cmp eax, esi
je 0x450701
push 0x800
push ebp
push edi
call fcn.004ed900
push 0x800
push ebp
call fcn.00493970
jmp 0x45072b
cmp word [edi], 0
je 0x45072b
push 0x800
push ebp
call fcn.00493970
push 0x800
push edi
push ebp
call fcn.004b0300
push ebp
call fcn.004948d0
mov esi, eax
cmp esi, 0xffffffff
je 0x450762
call fcn.004ec5f0
mov edx, 1
mov ecx, esi
shl edx, cl
test edx, eax
jne 0x450762
push 0x800
lea eax, [esp + 0x202c]
push eax
push ebp
call fcn.004b0360
jmp 0x450855
cmp byte [ebx + 0x1042], 0
jne 0x45083e
push ebp
call fcn.004837b0
test al, al
jne 0x45083e
push 0x800
lea eax, [esp + 0x102c]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
test eax, eax
je 0x4507b6
cmp eax, 0x800
jae 0x4507b6
lea eax, [esp + 0x1028]
push eax
call fcn.004837b0
test al, al
je 0x4507b6
lea eax, [esp + 0x1028]
jmp 0x450832
cmp word [ebp], 0x5c
jne 0x4507f0
cmp word [ebx + 0x1046], 0x5c
jne 0x4507f0
lea eax, [ebx + 0x1048]
push 0x5470dc
push eax
call fcn.0052a6fe
add esp, 8
test eax, eax
jne 0x4507f0
cmp dword [ebx + 0x2144], eax
jle 0x4507f0
mov byte [ebx + 0x1042], 1
jmp 0x45083e
push ebp
push 0x6c
call fcn.004a9c90
push eax
lea eax, [esp + 0x4030]
push 0x864
push eax
call fcn.00402c90
add esp, 0x10
push 0x66
call fcn.004a9c90
push 0x10
push eax
lea eax, [esp + 0x4030]
push eax
push dword [0x57a0c8]
call fcn.004edd90
lea eax, [esp + 0x2028]
push 0x800
push eax
push ebp
call fcn.004b0360
movzx eax, word [esp + 0x28]
lea ecx, [esp + 0x28]
neg eax
sbb eax, eax
and eax, ecx
push eax
mov ecx, ebx
call fcn.00455ed0
pop esi
pop ebp
mov ecx, dword [esp + 0x50e8]
pop edi
pop ebx
xor ecx, esp
call fcn.0051dca8
add esp, 0x50e4
ret 8