Function at 0x4051b0
Capabilities:
Get common file path
Get program files directory
Get startup folder

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d6e7d
mov eax, dword fs:[0]
push eax
sub esp, 0x424
mov eax, dword [0x50738c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x330], ecx
mov dword [ebp - 4], 0
push 0x74
lea ecx, [ebp - 0x32c]
call fcn.00401b60
lea ecx, [ebp - 0x32c]
call fcn.00415f10
mov byte [ebp - 4], 1
push 0x18
lea ecx, [ebp - 0x228]
call fcn.00401b60
push 0
lea ecx, [ebp - 0x228]
call fcn.00411cc0
mov byte [ebp - 4], 2
lea ecx, [ebp + 8]
call fcn.00402060
movzx eax, al
test eax, eax
jne 0x40577a
push 1
lea ecx, [ebp - 0x228]
push ecx
lea edx, [ebp + 8]
push edx
lea ecx, [ebp - 0x32c]
call fcn.00416090
movzx eax, al
test eax, eax
je 0x40577a
push 0x4f78c8
lea ecx, [ebp - 0x228]
call fcn.00413160
mov ecx, eax
call fcn.00412160
mov dword [ebp - 0x344], eax
cmp dword [ebp - 0x344], 0
je 0x4052b0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x228]
call fcn.00411f10
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x32c]
call fcn.00403970
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp + 8]
call fcn.00402340
jmp 0x4057a7
push 0x18
lea ecx, [ebp - 0x258]
call fcn.00401b60
push 0x4f78d0
lea ecx, [ebp - 0x228]
call fcn.00413160
push eax
lea ecx, [ebp - 0x258]
call fcn.00411ee0
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x3b8]
push ecx
push 0x4f78d8
lea ecx, [ebp - 0x258]
call fcn.00413160
mov ecx, eax
call fcn.00412020
mov dword [ebp - 0x348], eax
mov edx, dword [ebp - 0x348]
mov dword [ebp - 0x34c], edx
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x34c]
lea ecx, [ebp - 0x3a0]
call fcn.0041ddc0
mov dword [ebp - 0x350], eax
mov eax, dword [ebp - 0x350]
push eax
mov ecx, dword [ebp - 0x330]
add ecx, 0x704
call fcn.00405f50
lea ecx, [ebp - 0x3a0]
call fcn.004021b0
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x3b8]
call fcn.00402340
push 0
push 0x26
lea ecx, [ebp - 0x210]
push ecx
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
push 0x4f78e4
lea ecx, [ebp - 0x3e8]
call fcn.00402200
mov dword [ebp - 0x354], eax
mov edx, dword [ebp - 0x354]
mov dword [ebp - 0x358], edx
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x358]
push eax
lea ecx, [ebp - 0x210]
push ecx
lea edx, [ebp - 0x3d0]
push edx
call fcn.004062c0
add esp, 0xc
mov dword [ebp - 0x374], eax
mov eax, dword [ebp - 0x374]
mov dword [ebp - 0x370], eax
mov byte [ebp - 4], 6
mov ecx, dword [ebp - 0x330]
add ecx, 0x704
push ecx
mov edx, dword [ebp - 0x370]
push edx
lea eax, [ebp - 0x270]
push eax
call fcn.00406410
add esp, 0xc
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x3d0]
call fcn.004021b0
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x3e8]
call fcn.004021b0
push 0
push 0x508e34
push 0x508cb8
push 0x4f78e8
mov ecx, dword [ebp - 0x330]
add ecx, 0x30
call fcn.00420b20
push 0
push eax
call fcn.004b8040
add esp, 0x14
mov dword [ebp - 0x334], eax
cmp dword [ebp - 0x334], 0
je 0x40545f
lea ecx, [ebp - 0x270]
call fcn.004020b0
push eax
mov ecx, dword [ebp - 0x334]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x334]
mov eax, dword [edx + 0x2c]
call eax
push 0x18
lea ecx, [ebp - 0x240]
call fcn.00401b60
push 0x4f7904
lea ecx, [ebp - 0x258]
call fcn.00413160
push eax
lea ecx, [ebp - 0x240]
call fcn.00411ee0
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x418]
push ecx
push 0x4f7910
lea ecx, [ebp - 0x240]
call fcn.00413160
mov ecx, eax
call fcn.00412020
mov dword [ebp - 0x36c], eax
mov edx, dword [ebp - 0x36c]
mov dword [ebp - 0x368], edx
mov byte [ebp - 4], 0xb
mov edx, dword [ebp - 0x368]
lea ecx, [ebp - 0x400]
call fcn.0041ddc0
mov dword [ebp - 0x364], eax
mov eax, dword [ebp - 0x364]
push eax
mov ecx, dword [ebp - 0x330]
add ecx, 0x6ec
call fcn.00405f50
lea ecx, [ebp - 0x400]
call fcn.004021b0
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x418]
call fcn.00402340
push 0
push 0x508e14
push 0x508cb8
push 0x4f7918
mov ecx, dword [ebp - 0x330]
add ecx, 0x30
call fcn.00420b20
push 0
push eax
call fcn.004b8040
add esp, 0x14
mov dword [ebp - 0x338], eax
cmp dword [ebp - 0x338], 0
je 0x405567
mov ecx, dword [ebp - 0x330]
add ecx, 0x6ec
call fcn.004020b0
push eax
mov ecx, dword [ebp - 0x338]
mov edx, dword [ecx]
mov ecx, dword [ebp - 0x338]
mov eax, dword [edx + 0x2c]
call eax
push 0
push 0x508e14
push 0x508cb8
push str.lab_install_name
mov ecx, dword [ebp - 0x330]
add ecx, 0x30
call fcn.00420b20
push 0
push eax
call fcn.004b8040
add esp, 0x14
mov dword [ebp - 0x33c], eax
cmp dword [ebp - 0x33c], 0
je 0x4055f3
mov ecx, dword [ebp - 0x330]
add ecx, 0x6ec
push ecx
push 0x4f7950
lea edx, [ebp - 0x2b8]
push edx
call fcn.00406300
add esp, 0xc
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x2b8]
call fcn.004020b0
push eax
mov eax, dword [ebp - 0x33c]
mov edx, dword [eax]
mov ecx, dword [ebp - 0x33c]
mov eax, dword [edx + 0x2c]
call eax
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x2b8]
call fcn.004021b0
push 0
push 0x508e14
push 0x508cb8
push str.lab_progress_name
mov ecx, dword [ebp - 0x330]
add ecx, 0x30
call fcn.00420b20
push 0
push eax
call fcn.004b8040
add esp, 0x14
mov dword [ebp - 0x340], eax
cmp dword [ebp - 0x340], 0
je 0x40567f
mov ecx, dword [ebp - 0x330]
add ecx, 0x6ec
push ecx
push 0x4f7980
lea edx, [ebp - 0x2a0]
push edx
call fcn.00406300
add esp, 0xc
mov byte [ebp - 4], 0xd
lea ecx, [ebp - 0x2a0]
call fcn.004020b0
push eax
mov eax, dword [ebp - 0x340]
mov edx, dword [eax]
mov ecx, dword [ebp - 0x340]
mov eax, dword [edx + 0x2c]
call eax
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x2a0]
call fcn.004021b0
lea ecx, [ebp - 0x430]
push ecx
push 0x4f798c
lea ecx, [ebp - 0x240]
call fcn.00413160
mov ecx, eax
call fcn.00412020
mov dword [ebp - 0x360], eax
mov edx, dword [ebp - 0x360]
mov dword [ebp - 0x35c], edx
mov byte [ebp - 4], 0xe
mov edx, dword [ebp - 0x35c]
lea ecx, [ebp - 0x288]
call fcn.0041ddc0
mov byte [ebp - 4], 0x10
lea ecx, [ebp - 0x430]
call fcn.00402340
sub esp, 0x18
mov ecx, esp
mov dword [ebp - 0x384], esp
mov eax, dword [ebp - 0x330]
add eax, 0x6ec
push eax
call fcn.004022c0
mov dword [ebp - 0x388], eax
mov byte [ebp - 4], 0x11
sub esp, 0x18
mov ecx, esp
mov dword [ebp - 0x378], esp
push 0x4f7994
call fcn.00402200
mov dword [ebp - 0x37c], eax
mov byte [ebp - 4], 0x12
sub esp, 0x18
mov ecx, esp
mov dword [ebp - 0x380], esp
lea edx, [ebp - 0x288]
push edx
call fcn.004022c0
mov byte [ebp - 4], 0x10
mov ecx, dword [ebp - 0x330]
call fcn.004057d0
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x288]
call fcn.004021b0
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x240]
call fcn.00411f10
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x270]
call fcn.004021b0
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x258]
call fcn.00411f10
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x228]
call fcn.00411f10
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x32c]
call fcn.00403970
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp + 8]
call fcn.00402340
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004b3f64
mov esp, ebp
pop ebp
ret 0x18