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

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x424dec
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x288
mov eax, dword [0x435054]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x240], esi
mov dword [ebp - 0x244], esi
mov eax, dword fs:[0x2c]
mov dword [ebp - 0x244], esi
mov ecx, dword [eax]
mov eax, dword [0x436f98]
cmp eax, dword [ecx + 4]
jle 0x404038
push 0x436f98
call fcn.0040e05f
add esp, 4
cmp dword [0x436f98], 0xffffffff
jne 0x404038
push 0x425730
mov dword [0x436fbc], 0
mov dword [0x436fcc], 0
mov dword [0x436fd0], 7
call fcn.0040e371
add esp, 4
push 0x436f98
call fcn.0040e015
add esp, 4
cmp dword [0x436fcc], 0
jne 0x404427
push 0
push 0x26
lea eax, [ebp - 0x220]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
xor eax, eax
mov dword [ebp - 0x238], 0
lea ecx, [ebp - 0x220]
mov dword [ebp - 0x228], 0
mov dword [ebp - 0x224], 7
lea edx, [ecx + 2]
mov word [ebp - 0x238], ax
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x404090
sub ecx, edx
lea eax, [ebp - 0x220]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x238]
call fcn.00405960
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x25c]
push 0xc
xor eax, eax
mov dword [ebp - 0x25c], 0
push str.zd_yw_xBSiRx
mov dword [ebp - 0x24c], 0
mov dword [ebp - 0x248], 7
mov word [ebp - 0x25c], ax
call fcn.00405960
lea edx, [ebp - 0x25c]
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x294]
call fcn.004011b0
push 1
push 0x430b0c
push ecx
mov ecx, eax
mov byte [ebp - 4], 2
call fcn.00406690
xor ecx, ecx
movups xmm1, xmmword [eax]
movq xmm0, qword [eax + 0x10]
movups xmmword [ebp - 0x27c], xmm1
mov dword [eax + 0x10], 0
movq qword [ebp - 0x26c], xmm0
mov dword [eax + 0x14], 7
mov word [eax], cx
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x27c]
cmp dword [ebp - 0x268], 8
mov edi, dword [ebp - 0x228]
mov edx, dword [ebp - 0x26c]
movd eax, xmm1
mov dword [ebp - 0x260], edi
cmovae ecx, eax
mov dword [ebp - 0x244], eax
mov eax, dword [ebp - 0x224]
sub eax, edi
mov dword [ebp - 0x264], ecx
cmp edx, eax
ja 0x4041d2
mov eax, dword [ebp - 0x260]
lea esi, [ebp - 0x238]
add edi, edx
cmp dword [ebp - 0x224], 8
mov dword [ebp - 0x228], edi
cmovae esi, dword [ebp - 0x238]
lea ecx, [esi + eax*2]
lea eax, [edx + edx]
push eax
push dword [ebp - 0x264]
push ecx
call fcn.0040f540
mov ecx, dword [ebp - 0x244]
add esp, 0xc
xor eax, eax
mov word [esi + edi*2], ax
mov esi, dword [ebp - 0x240]
jmp 0x4041f3
push edx
push ecx
mov byte [ebp - 0x240], 0
lea ecx, [ebp - 0x238]
push dword [ebp - 0x240]
push edx
call fcn.004061a0
mov ecx, dword [ebp - 0x27c]
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x268]
cmp eax, 8
jb 0x404231
lea edx, [eax*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x404227
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x404453
push edx
push ecx
call fcn.0040df1e
add esp, 8
mov byte [ebp - 4], 1
mov edx, dword [ebp - 0x280]
cmp edx, 8
jb 0x404275
mov ecx, dword [ebp - 0x294]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x40426b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x404453
push edx
push ecx
call fcn.0040df1e
add esp, 8
xor eax, eax
mov dword [ebp - 0x284], 0
mov byte [ebp - 4], al
mov edx, dword [ebp - 0x248]
mov dword [ebp - 0x280], 7
mov word [ebp - 0x294], ax
cmp edx, 8
jb 0x4042d5
mov ecx, dword [ebp - 0x25c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4042cb
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x404453
push edx
push ecx
call fcn.0040df1e
add esp, 8
cmp dword [ebp - 0x224], 8
lea eax, [ebp - 0x238]
push dword [ebp - 0x228]
cmovae eax, dword [ebp - 0x238]
xor ecx, ecx
mov dword [ebp - 0x25c], 0
mov word [ebp - 0x25c], cx
lea ecx, [ebp - 0x25c]
push eax
mov dword [ebp - 0x24c], 0
mov dword [ebp - 0x248], 7
call fcn.00405960
lea ecx, [ebp - 0x25c]
mov byte [ebp - 4], 4
call fcn.00402e40
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x248]
mov byte [ebp - 0x239], al
cmp edx, 8
jb 0x404381
mov ecx, dword [ebp - 0x25c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x404371
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x404458
push edx
push ecx
call fcn.0040df1e
mov al, byte [ebp - 0x239]
add esp, 8
xor ecx, ecx
mov dword [ebp - 0x24c], 0
mov dword [ebp - 0x248], 7
mov word [ebp - 0x25c], cx
test al, al
je 0x4043c7
cmp dword [ebp - 0x224], 8
lea eax, [ebp - 0x238]
push dword [ebp - 0x228]
cmovae eax, dword [ebp - 0x238]
mov ecx, 0x436fbc
push eax
call fcn.00405960
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x224]
cmp edx, 8
jb 0x40440a
mov ecx, dword [ebp - 0x238]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x404400
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40445d
push edx
push ecx
call fcn.0040df1e
add esp, 8
xor eax, eax
mov dword [ebp - 0x228], 0
mov dword [ebp - 0x224], 7
mov word [ebp - 0x238], ax
push 0x436fbc
mov ecx, esi
call fcn.00405410
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0040dee0
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
call fcn.0041226f
call fcn.0041226f
call fcn.0041226f
int3