Function at 0x4041f3
Capabilities:
Query environment variable

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
mov eax, 0x104c
call fcn.0044e410
mov esi, 0
mov dword [esp], str.SHFolder.dll
call sub.KERNEL32.dll_LoadLibraryA
sub esp, 4
mov ebx, eax
test eax, eax
jne 0x404232
mov dword [esp], str.Shell32.dll
call sub.KERNEL32.dll_LoadLibraryA
sub esp, 4
mov ebx, eax
test eax, eax
je 0x404247
mov dword [esp + 4], str.SHGetFolderPathA
mov dword [esp], ebx
call sub.KERNEL32.dll_GetProcAddress
sub esp, 8
mov esi, eax
mov byte [ebp - 0x1028], 0
test ebx, ebx
setne al
test esi, esi
setne dl
movzx eax, al
test edx, eax
je 0x4042d8
lea edi, [ebp - 0x1028]
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x26
mov eax, dword [0x474310]
mov dword [esp], eax
call esi
sub esp, 0x14
test al, al
jne 0x4042a2
mov dword [esp + 4], edi
mov dword [esp], str.ProgramFiles
call fcn.00403954
mov byte [ebp - 0x1028], 0
lea eax, [ebp - 0x1028]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 2
mov eax, dword [0x474310]
mov dword [esp], eax
call esi
sub esp, 0x14
test ebx, ebx
je 0x4042e7
mov dword [esp], ebx
call sub.KERNEL32.dll_FreeLibrary
sub esp, 4
cmp byte [ebp - 0x1028], 0
jne 0x40439c
lea eax, [ebp - 0x28]
mov dword [esp + 0xc], str.Programs
mov dword [esp + 8], str.SoftwareMicrosoftWindowsCurrentVersionExplorerShell_Folders
mov dword [esp + 4], 3
mov dword [esp], eax
call fcn.00413c4b
sub esp, 4
cmp dword [ebp - 0x1c], 0
je 0x404387
mov dword [esp], 0x4607f9
call sub.msvcrt.dll_getenv
mov dword [ebp - 0x102c], eax
test eax, eax
je 0x40433b
cmp byte [eax], 0
jne 0x404345
mov dword [ebp - 0x102c], str.C:WINDOWS
mov eax, dword [ebp - 0x102c]
mov dword [esp + 0xc], eax
mov dword [esp + 8], str._sStart_MenuPrograms
mov dword [esp + 4], 0x1000
lea ebx, [ebp - 0x1028]
mov dword [esp], ebx
call fcn.0044e850
mov dword [esp], ebx
call fcn.00412864
test eax, eax
jne 0x40439c
mov dword [esp], str.Unable_to_determine_location_of_start_menu
call fcn.00401520
jmp 0x40439c
mov eax, dword [ebp - 0x24]
mov dword [esp + 4], eax
lea eax, [ebp - 0x1028]
mov dword [esp], eax
call sub.msvcrt.dll_strcpy
mov dword [esp], str.ShortcutFolderName
call fcn.00403a4f
mov dword [ebp - 0x102c], eax
test eax, eax
jne 0x4043c4
mov dword [esp], 0x460862
call fcn.00403a4f
mov dword [ebp - 0x102c], eax
lea ebx, [ebp - 0x1028]
mov dword [ebp - 0x1030], ebx
mov dl, 0
cld
mov ecx, 0xffffffff
mov edi, ebx
mov al, dl
repne scasb al, byte es:[edi]
not ecx
mov eax, 0x1001
sub eax, ecx
mov dword [ebp - 0x1030], eax
mov ecx, 0xffffffff
mov edi, ebx
mov al, dl
repne scasb al, byte es:[edi]
not ecx
lea ecx, [ecx + ebx - 1]
mov eax, dword [ebp - 0x102c]
mov dword [esp + 0xc], eax
mov dword [esp + 8], str.HI_TECH_Software_s
mov edi, dword [ebp - 0x1030]
mov dword [esp + 4], edi
mov dword [esp], ecx
call fcn.0044e850
mov dword [esp + 4], ebx
mov dword [esp], 0x460883
call fcn.00403954
mov dword [esp], 0x460892
call fcn.00403a4f
test eax, eax
jne 0x404512
lea ebx, [ebp - 0x28]
call fcn.00403fe8
mov dword [esp + 0xc], 0x460892
mov dword [esp + 8], eax
mov dword [esp + 4], 4
mov dword [esp], ebx
call fcn.00413c4b
sub esp, 4
cmp dword [ebp - 0x1c], 0
je 0x40448c
mov dword [esp + 4], 0x460646
mov dword [esp], 0x460892
call fcn.00403954
jmp 0x404512
mov dword [esp], 0x46089b
call fcn.00403a4f
mov dword [ebp - 0x102c], eax
mov esi, 0xffffffff
mov edx, eax
mov bl, 0
cld
mov ecx, esi
mov edi, eax
mov al, bl
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 8], ecx
mov dword [esp + 4], edx
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
jne 0x4044e8
mov edi, dword [ebp - 0x102c]
cld
mov ecx, esi
mov al, bl
repne scasb al, byte es:[edi]
not ecx
mov eax, dword [ebp - 0x24]
lea ecx, [ecx + eax - 1]
mov dword [ebp - 0x102c], ecx
jmp 0x4044f1
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x102c], edi
mov eax, dword [ebp - 0x102c]
mov dword [esp + 4], eax
mov dword [esp], 0x460892
call fcn.00403954
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov dword [esp], 0x4608a8
call fcn.00403c85
test al, al
je 0x40453e
mov dword [esp + 4], str.default
mov dword [esp], 0x4608c0
call fcn.00403ce0
test al, al
je 0x404603
lea ebx, [ebp - 0x28]
call fcn.00404032
mov dword [esp + 0xc], 0x4608c0
mov dword [esp + 8], eax
mov dword [esp + 4], 4
mov dword [esp], ebx
call fcn.00413c4b
sub esp, 4
cmp dword [ebp - 0x1c], 0
jne 0x404571
cmp dword [ebp - 0x20], 0
jne 0x4045e5
mov dword [esp], 0x4608c0
call fcn.00403a4f
test eax, eax
je 0x404599
mov dword [esp + 4], str.default
mov dword [esp], 0x4608c0
call fcn.00403ce0
test al, al
je 0x404603
mov dword [esp], 0x460647
call fcn.00403a4f
test eax, eax
je 0x4045c7
mov dword [esp], str._ProgramFiles__Manufacturer__Product__Edition__Version_
call fcn.00403af3
mov dword [esp + 4], eax
mov dword [esp], 0x4608c0
call fcn.00403954
jmp 0x404603
mov dword [esp], str._ProgramFiles__Manufacturer__Product__Version_
call fcn.00403af3
mov dword [esp + 4], eax
mov dword [esp], 0x4608c0
call fcn.00403954
jmp 0x404603
mov eax, dword [ebp - 0x24]
mov dword [esp + 4], eax
mov dword [esp], 0x4608c0
call fcn.00403954
mov eax, dword [ebp - 0x24]
mov dword [esp], eax
call sub.msvcrt.dll_free
call fcn.004040f5
call fcn.00403a9e
mov edi, eax
mov dword [esp], 0x460647
call fcn.00403a4f
mov ebx, eax
mov dword [esp], str.Product
call fcn.00403a4f
mov dword [esp + 0xc], edi
mov dword [esp + 8], ebx
mov dword [esp + 4], eax
mov dword [esp], 0x471230
call fcn.00410920
sub esp, 4
cmp dword [0x471230], 0
jne 0x404662
mov eax, dword [0x471290]
mov dword [esp + 4], eax
mov dword [esp], 0x471230
call fcn.00410d14
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret