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

Disassembly:
mov eax, 0x50e4
call fcn.0052f720
mov eax, dword [0x58bb30]
xor eax, esp
mov dword [esp + 0x50e0], eax
cmp byte [0x5933f4], 0
push ebx
push edi
mov edi, dword [esp + 0x50f0]
mov ebx, ecx
jne 0x45a99c
cmp word [edi], 0x2e
jne 0x45a99c
movzx eax, word [edi + 2]
push eax
call fcn.004a2560
test al, al
je 0x45a98b
add edi, 4
cmp word [edi], 0x2e
je 0x45a972
jmp 0x45a99c
cmp word [edi], 0x2e
jne 0x45a99c
cmp word [edi + 2], 0
je 0x45afe7
push 0x800
lea eax, [esp + 0x3024]
push eax
push edi
call fcn.004a1e60
mov ecx, 0x557698
mov eax, edi
push ebp
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x45a9dd
test dx, dx
je 0x45a9d9
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x45a9dd
add eax, 4
add ecx, 4
test dx, dx
jne 0x45a9b7
xor ebp, ebp
jmp 0x45a9e2
sbb ebp, ebp
or ebp, 1
push esi
push edi
mov dword [esp + 0x24], ebp
call fcn.004a2d60
mov esi, eax
movzx ecx, word [esi]
push ecx
call fcn.004a2560
test al, al
je 0x45aa44
test ebp, ebp
je 0x45aa44
lea ecx, [esp + 0x3028]
mov eax, edi
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x45aa36
test dx, dx
je 0x45aa32
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x45aa36
add eax, 4
add ecx, 4
test dx, dx
jne 0x45aa10
xor eax, eax
jmp 0x45aa3b
sbb eax, eax
or eax, 1
test eax, eax
je 0x45aa44
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 0x45aa96
mov ecx, eax
cmp cx, 0x2e
jne 0x45aa92
cmp word [esi + 2], cx
jne 0x45aa92
movzx eax, word [esi + 4]
push eax
call fcn.004a2560
test al, al
jne 0x45aa77
cmp word [esi + 4], 0
jne 0x45aa92
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 0x45aa56
mov dword [esp + 0x18], ebp
cmp byte [0x5933f4], 0
je 0x45aac4
cmp byte [esp + 0x50fc], 0
je 0x45aac4
push edi
call fcn.004a2440
test al, al
jne 0x45aabd
push edi
call fcn.004a2410
test al, al
je 0x45aac4
mov ecx, ebx
call fcn.0045b050
cmp byte [ebx + 0x103a], 0
je 0x45aaf9
mov ecx, dword [ebx + 0x213c]
mov eax, ebp
cmp ebp, ecx
jl 0x45aadb
mov eax, ecx
cmp dword [esp + 0x20], 0
jne 0x45aae4
mov eax, ecx
test eax, eax
je 0x45aaf9
push 0
push eax
mov ecx, ebx
call fcn.0045c2d0
push 0
jmp 0x45afde
mov byte [ebx + 0x103a], 0
cmp byte [0x5933f4], 0
je 0x45abf2
push 0
push 0x5589c0
push str.FileList
call fcn.004cf550
test eax, eax
je 0x45ab2a
test ebp, ebp
je 0x45afe5
push 0x800
lea eax, [esp + 0x202c]
mov ecx, 0x5c2bd0
push eax
call fcn.0040a170
mov ecx, 0x557698
mov eax, edi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x45ab6e
test dx, dx
je 0x45ab6a
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x45ab6e
add eax, 4
add ecx, 4
test dx, dx
jne 0x45ab48
xor eax, eax
jmp 0x45ab73
sbb eax, eax
or eax, 1
test eax, eax
je 0x45aba4
push edi
mov ecx, 0x5c2bd0
call fcn.0040bea0
test al, al
je 0x45aba4
xor eax, eax
lea ecx, [esp + 0x2028]
test ebp, ebp
setle al
dec eax
and eax, ecx
mov ecx, ebx
push eax
call fcn.0045f540
jmp 0x45afe5
push 0x800
lea eax, [esp + 0x2c]
mov ecx, 0x5c2bd0
push eax
call fcn.00409950
push 0x800
lea eax, [esp + 0x2c]
push eax
lea esi, [ebx + 0x103c]
push esi
call fcn.004bd090
push esi
call fcn.004a2e00
mov ecx, ebx
call fcn.0045b050
test al, al
je 0x45afe5
lea eax, [esp + 0x28]
push eax
call fcn.004a2d90
jmp 0x45afdd
push 0x800
lea ebp, [ebx + 0x103c]
push ebp
lea eax, [esp + 0x2030]
push eax
call fcn.004bd090
xor eax, eax
push ebp
mov word [esp + 0x2c], ax
call fcn.004a2d60
movzx ecx, word [ebp]
mov esi, eax
push ecx
call fcn.004a2560
test al, al
je 0x45ac3e
movzx ecx, word [esi]
push ecx
call fcn.004a2560
test al, al
je 0x45ac3e
cmp esi, ebp
jbe 0x45ac3e
xor eax, eax
mov word [esi], ax
mov esi, dword [esp + 0x18]
test esi, esi
jle 0x45ae1b
lea ebx, [ebx]
cmp byte [ebx + 0x103a], 0
jne 0x45ae1b
push ebp
call fcn.004a2410
test al, al
je 0x45adca
movzx eax, word [ebx + 0x1040]
push eax
call fcn.004a2560
test al, al
je 0x45adca
cmp word [ebx + 0x1042], 0
jne 0x45adca
cmp dword [ebx + 0x213c], 0
jle 0x45aca3
mov byte [ebx + 0x103a], 1
jmp 0x45ade6
lea eax, [esp + 0x1c]
mov dword [esp + 0x1c], 0
push eax
push 0
push 0
push 0x11
push dword [ebx + 0x28]
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 0x45adab
cmp dword [esp + 0x10], eax
je 0x45adab
push 0x800
lea eax, [esp + 0x102c]
push eax
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x20]
push eax
push dword [0x5c5838]
call fcn.00417b30
test al, al
je 0x45ad3f
cmp byte [0x5cc0a9], 0
jne 0x45ad97
push 1
lea eax, [esp + 0x102c]
mov byte [0x5cc0a9], 1
push eax
mov ecx, 0x5c5810
call fcn.0045a940
mov byte [0x5cc0a9], 0
jmp 0x45ad97
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 0x56daa0
push 0
push dword [esp + 0x1c]
push ecx
mov ecx, esi
call dword [0x55670c]
call esi
test eax, eax
jne 0x45ad97
mov eax, dword [esp + 0x24]
push dword [esp + 0x10]
mov dword [0x5c78cc], eax
call fcn.00416f20
mov dword [0x5c784c], eax
mov byte [0x5c684a], 1
mov dword [0x5c794c], 1
mov eax, dword [esp + 0x14]
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 8]
mov ecx, esi
call dword [0x55670c]
call esi
mov eax, dword [0x5ff948]
push dword [esp + 0x1c]
push eax
mov ecx, dword [eax]
mov esi, dword [ecx + 0x14]
mov ecx, esi
call dword [0x55670c]
call esi
mov esi, dword [esp + 0x18]
jmp 0x45ade6
push 0x800
push ebp
call fcn.004a2d90
push eax
lea eax, [esp + 0x30]
push eax
call fcn.004bd090
push ebp
call fcn.004a2e00
movzx eax, word [edi]
dec esi
mov dword [esp + 0x18], esi
mov ecx, eax
cmp eax, 0x2e
jne 0x45ae03
movzx eax, word [edi + 2]
add edi, 2
cmp eax, 0x2e
je 0x45adf5
mov ecx, eax
movzx eax, cx
push eax
call fcn.004a2560
test al, al
je 0x45ae13
add edi, 2
test esi, esi
jg 0x45ac50
cmp dword [esp + 0x20], 0
jne 0x45ae4a
push 0x800
lea eax, [esp + 0x102c]
push eax
push ebp
call fcn.004a1e60
push 0x800
lea eax, [esp + 0x102c]
push eax
push ebp
call fcn.004bd090
jmp 0x45aebb
push edi
call fcn.004a2440
test al, al
je 0x45ae62
push 0x800
push edi
push ebp
call fcn.004bd090
jmp 0x45aebb
push edi
call fcn.004a2410
test al, al
je 0x45ae9e
movzx eax, word [ebp]
push eax
call fcn.004c10e0
movzx ecx, word [edi]
mov esi, eax
push ecx
call fcn.004c10e0
cmp eax, esi
je 0x45ae91
push 0x800
push ebp
push edi
call fcn.004fda70
push 0x800
push ebp
call fcn.004a0eb0
jmp 0x45aebb
cmp word [edi], 0
je 0x45aebb
push 0x800
push ebp
call fcn.004a0eb0
push 0x800
push edi
push ebp
call fcn.004bd030
push ebp
call fcn.004a1e20
mov esi, eax
cmp esi, 0xffffffff
je 0x45aef2
call fcn.004fc6b0
mov edx, 1
mov ecx, esi
shl edx, cl
test edx, eax
jne 0x45aef2
push 0x800
lea eax, [esp + 0x202c]
push eax
push ebp
call fcn.004bd090
jmp 0x45afe5
cmp byte [ebx + 0x103a], 0
jne 0x45afce
push ebp
call fcn.00490c30
test al, al
jne 0x45afce
push 0x800
lea eax, [esp + 0x102c]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
test eax, eax
je 0x45af46
cmp eax, 0x800
jae 0x45af46
lea eax, [esp + 0x1028]
push eax
call fcn.00490c30
test al, al
je 0x45af46
lea eax, [esp + 0x1028]
jmp 0x45afc2
cmp word [ebp], 0x5c
jne 0x45af80
cmp word [ebx + 0x103e], 0x5c
jne 0x45af80
lea eax, [ebx + 0x1040]
push 0x55c13c
push eax
call fcn.0053c6ce
add esp, 8
test eax, eax
jne 0x45af80
cmp dword [ebx + 0x213c], eax
jle 0x45af80
mov byte [ebx + 0x103a], 1
jmp 0x45afce
push ebp
push 0x6c
call fcn.004b68d0
push eax
lea eax, [esp + 0x4030]
push 0x864
push eax
call fcn.00404ce0
add esp, 0x10
push 0x66
call fcn.004b68d0
push 0x10
push eax
lea eax, [esp + 0x4030]
push eax
push dword [0x5923dc]
call fcn.004fdf00
lea eax, [esp + 0x2028]
push 0x800
push eax
push ebp
call fcn.004bd090
movzx eax, word [esp + 0x28]
lea ecx, [esp + 0x28]
neg eax
sbb eax, eax
and eax, ecx
push eax
mov ecx, ebx
call fcn.00460460
pop esi
pop ebp
mov ecx, dword [esp + 0x50e8]
pop edi
pop ebx
xor ecx, esp
call fcn.0052f708
add esp, 0x50e4
ret 8