Function at 0x4377ed
Capabilities:
Get common file path
Get startup folder

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3a4
mov eax, dword [0x4a02f0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
xor edi, edi
lea ecx, [ebp - 0x228]
mov dword [ebp - 0x2f0], edi
call fcn.00417fc0
cmp byte [ebp + 8], 0
lea eax, [ebp - 0x228]
push eax
je 0x437848
push 0x6a
call fcn.00413d60
push edi
push 3
call fcn.00443643
add esp, 0x10
test al, al
jne 0x437844
push 1
push 3
call fcn.00443643
pop ecx
pop ecx
push 3
jmp 0x43786a
push 0x6b
call fcn.00413d60
xor esi, esi
push edi
inc esi
push esi
call fcn.00443643
add esp, 0x10
test al, al
jne 0x437869
push esi
push esi
call fcn.00443643
pop ecx
pop ecx
push esi
call fcn.00443779
pop ecx
cmp dword [ebp - 0x218], edi
jne 0x4378d1
call fcn.0040ab90
push 2
pop ebx
cmp eax, ebx
jg 0x4378b4
push ebx
push 0x231
push str.installer_tdsetupuninstall.cc
lea ecx, [ebp - 0x3a4]
mov dword [ebp - 0x2f0], 1
call fcn.0040add0
add eax, 8
push str.Failed_to_get_location_for_shortcut.
push eax
call fcn.00403540
pop ecx
pop ecx
test byte [ebp - 0x2f0], 1
je 0x437c29
lea ecx, [ebp - 0x3a4]
call fcn.0040ae20
jmp 0x437c29
call fcn.00448048
mov esi, eax
lea eax, [ebp - 0x2b4]
push 0x157e
push eax
mov dword [ebp - 0x2f4], esi
call fcn.0043eee7
pop ecx
pop ecx
lea eax, [ebp - 0x2b4]
push eax
lea eax, [ebp - 0x260]
push eax
lea ecx, [ebp - 0x228]
call fcn.00401a30
push eax
lea ecx, [ebp - 0x228]
call fcn.00401490
lea ecx, [ebp - 0x260]
call fcn.00401f80
lea eax, [ebp - 0x228]
push eax
lea ecx, [ebp - 0x27c]
call fcn.00401f50
mov eax, dword [esi]
lea ecx, [ebp - 0x244]
push ecx
mov ecx, esi
call dword [eax + 0x10]
push eax
lea eax, [ebp - 0x260]
push eax
lea ecx, [ebp - 0x228]
call fcn.00401a30
push eax
lea ecx, [ebp - 0x228]
call fcn.00401490
lea ecx, [ebp - 0x260]
call fcn.00401f80
push edi
push 1
lea ecx, [ebp - 0x244]
call fcn.00402b70
call fcn.0040ab90
push 2
pop ebx
mov esi, str.installer_tdsetupuninstall.cc
test eax, eax
jg 0x4379d0
push edi
push 0x239
push esi
lea ecx, [ebp - 0x3a4]
mov dword [ebp - 0x2f0], ebx
call fcn.0040add0
add eax, 8
push str.Deleting_shortcut
push eax
call fcn.00403540
cmp dword [ebp - 0x214], 8
pop ecx
pop ecx
mov ecx, dword [ebp - 0x228]
jae 0x4379c7
lea ecx, [ebp - 0x228]
push ecx
push eax
call fcn.0040b670
pop ecx
pop ecx
test byte [ebp - 0x2f0], bl
je 0x4379ea
and dword [ebp - 0x2f0], 0xfffffffd
lea ecx, [ebp - 0x3a4]
call fcn.0040ae20
lea eax, [ebp - 0x228]
push 1
push eax
call fcn.00404360
pop ecx
pop ecx
mov edi, str.Failed_to_delete_folder:
test al, al
jne 0x437a6a
call fcn.0040ab90
cmp eax, ebx
jg 0x437a4f
or dword [ebp - 0x2f0], 4
push ebx
push 0x23b
push esi
lea ecx, [ebp - 0x3a4]
call fcn.0040add0
add eax, 8
push edi
push eax
call fcn.00403540
cmp dword [ebp - 0x214], 8
pop ecx
pop ecx
mov ecx, dword [ebp - 0x228]
jae 0x437a46
lea ecx, [ebp - 0x228]
push ecx
push eax
call fcn.0040b670
pop ecx
pop ecx
test byte [ebp - 0x2f0], 4
je 0x437a6a
and dword [ebp - 0x2f0], 0xfffffffb
lea ecx, [ebp - 0x3a4]
call fcn.0040ae20
lea eax, [ebp - 0x27c]
push eax
call fcn.0040def0
pop ecx
test al, al
je 0x437aef
lea eax, [ebp - 0x27c]
push 1
push eax
call fcn.00404360
pop ecx
pop ecx
test al, al
jne 0x437aef
call fcn.0040ab90
cmp eax, ebx
jg 0x437adb
or dword [ebp - 0x2f0], 8
push ebx
push 0x241
push esi
lea ecx, [ebp - 0x3a4]
call fcn.0040add0
add eax, 8
push edi
push eax
call fcn.00403540
cmp dword [ebp - 0x268], 8
pop ecx
pop ecx
mov ecx, dword [ebp - 0x27c]
jae 0x437ad2
lea ecx, [ebp - 0x27c]
push ecx
push eax
call fcn.0040b670
pop ecx
pop ecx
test byte [ebp - 0x2f0], 8
je 0x437aef
lea ecx, [ebp - 0x3a4]
call fcn.0040ae20
xor eax, eax
push 0x206
mov word [ebp - 0x20c], ax
xor esi, esi
lea eax, [ebp - 0x20a]
push esi
push eax
call fcn.0046e0e0
xor eax, eax
add esp, 0xc
mov word [ebp - 0x298], ax
lea eax, [ebp - 0x20c]
push eax
xor eax, eax
cmp byte [ebp + 8], al
push esi
sete al
push esi
mov dword [ebp - 0x284], 7
mov dword [ebp - 0x288], esi
dec eax
and eax, 0xb
add eax, 0xb
push eax
push esi
call dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
js 0x437c02
lea eax, [ebp - 0x20c]
push eax
lea ecx, [ebp - 0x298]
call fcn.00401fb0
mov ecx, dword [ebp - 0x2f4]
mov eax, dword [ecx]
lea edx, [ebp - 0x260]
push edx
call dword [eax + 0x10]
lea eax, [ebp - 0x298]
push eax
lea ecx, [ebp - 0x244]
call fcn.00401f50
push 0x49172c
lea eax, [ebp - 0x260]
push eax
lea eax, [ebp - 0x2d0]
push eax
call fcn.0042e514
add esp, 0xc
push eax
lea eax, [ebp - 0x2ec]
push eax
lea ecx, [ebp - 0x244]
call fcn.00401a30
push eax
lea ecx, [ebp - 0x244]
call fcn.00401490
lea ecx, [ebp - 0x2ec]
call fcn.00401f80
push esi
push 1
lea ecx, [ebp - 0x2d0]
call fcn.00402b70
lea eax, [ebp - 0x244]
push 1
push eax
call fcn.00404360
pop ecx
pop ecx
lea ecx, [ebp - 0x244]
call fcn.00401f80
push esi
push 1
lea ecx, [ebp - 0x260]
call fcn.00402b70
push esi
push 1
lea ecx, [ebp - 0x298]
call fcn.00402b70
lea ecx, [ebp - 0x27c]
call fcn.00401f80
push esi
push 1
lea ecx, [ebp - 0x2b4]
call fcn.00402b70
lea ecx, [ebp - 0x228]
call fcn.00401f80
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0046e0cd
leave
ret