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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4546a8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x240
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 4], ebx
lea eax, [ebp + 8]
push eax
lea ecx, [ebp - 0x44]
push ecx
call fcn.00405480
mov byte [ebp - 4], 1
push str.BlackDesertLauncher.exe
push eax
lea edx, [ebp - 0x28]
push edx
call fcn.00405530
add esp, 0x14
mov byte [ebp - 4], 3
mov esi, 8
cmp dword [ebp - 0x30], esi
jb 0x402d73
mov eax, dword [ebp - 0x44]
push eax
call fcn.00408104
add esp, 4
push ebx
push ebx
lea edx, [ebp - 0x24c]
push edx
xor ecx, ecx
mov edi, 7
push ebx
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x34], ebx
mov word [ebp - 0x44], cx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
jne 0x402ddd
mov byte [ebp - 4], bl
cmp dword [ebp - 0x14], esi
jb 0x402dac
mov eax, dword [ebp - 0x28]
push eax
call fcn.00408104
add esp, 4
xor ecx, ecx
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x18], ebx
mov word [ebp - 0x28], cx
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp + 0x1c], esi
jb 0x402dd0
mov edx, dword [ebp + 8]
push edx
call fcn.00408104
add esp, 4
xor eax, eax
mov word [ebp + 8], ax
xor al, al
jmp 0x403062
lea edi, [ebp - 0x24c]
add edi, 0xfffffffe
mov ax, word [edi + 2]
add edi, 2
cmp ax, bx
jne 0x402de6
mov ecx, dword [0x4607cc]
mov eax, dword [0x466714]
mov dword [edi], ecx
mov edx, eax
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x402e01
lea edi, [ebp - 0x24c]
sub eax, edx
add edi, 0xfffffffe
jmp 0x402e20
mov cx, word [edi + 2]
add edi, 2
cmp cx, bx
jne 0x402e20
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
lea eax, [ebp - 0x24c]
rep movsb byte es:[edi], byte [esi]
add eax, 0xfffffffe
mov cx, word [eax + 2]
add eax, 2
cmp cx, bx
jne 0x402e45
mov edx, dword [str..lnk]
mov ecx, dword [0x4608a0]
mov dword [eax], edx
mov dx, word [0x4608a4]
mov dword [eax + 4], ecx
mov esi, 8
mov word [eax + 8], dx
mov eax, dword [ebp - 0x28]
cmp dword [ebp - 0x14], esi
jae 0x402e7d
lea eax, [ebp - 0x28]
mov ecx, dword [0x466718]
push ecx
lea edx, [ebp - 0x24c]
push edx
call fcn.00402c70
add esp, 8
cmp eax, ebx
jge 0x402eb5
mov byte [ebp - 4], bl
cmp dword [ebp - 0x14], esi
jb 0x402eab
mov eax, dword [ebp - 0x28]
push eax
call fcn.00408104
add esp, 4
mov edi, 7
jmp 0x402dac
push ebx
push 0x17
lea ecx, [ebp - 0x24c]
push ecx
push ebx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
jne 0x402f14
mov byte [ebp - 4], bl
cmp dword [ebp - 0x14], esi
jb 0x402ede
mov edx, dword [ebp - 0x28]
push edx
call fcn.00408104
add esp, 4
mov edi, 7
xor eax, eax
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x18], ebx
mov word [ebp - 0x28], ax
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp + 0x1c], esi
jb 0x402f07
mov ecx, dword [ebp + 8]
push ecx
call fcn.00408104
add esp, 4
xor edx, edx
mov word [ebp + 8], dx
xor al, al
jmp 0x403062
lea edi, [ebp - 0x24c]
add edi, 0xfffffffe
lea ecx, [ecx]
mov ax, word [edi + 2]
add edi, 2
cmp ax, bx
jne 0x402f20
mov eax, dword [0x4607cc]
mov dword [edi], eax
mov eax, dword [0x466714]
mov edx, eax
lea ebx, [ebx]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x402f40
lea edi, [ebp - 0x24c]
sub eax, edx
add edi, 0xfffffffe
mov cx, word [edi + 2]
add edi, 2
cmp cx, bx
jne 0x402f56
mov ecx, eax
shr ecx, 2
mov esi, edx
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
lea eax, [ebp - 0x24c]
rep movsb byte es:[edi], byte [esi]
add eax, 0xfffffffe
jmp 0x402f80
mov cx, word [eax + 2]
add eax, 2
cmp cx, bx
jne 0x402f80
mov ecx, dword [str..lnk]
mov edx, dword [0x4608a0]
mov dword [eax], ecx
mov cx, word [0x4608a4]
mov dword [eax + 4], edx
mov esi, 8
mov word [eax + 8], cx
mov eax, dword [ebp - 0x28]
cmp dword [ebp - 0x14], esi
jae 0x402fb8
lea eax, [ebp - 0x28]
mov edx, dword [0x466718]
push edx
lea ecx, [ebp - 0x24c]
push ecx
call fcn.00402c70
add esp, 8
cmp eax, ebx
jge 0x40301d
mov byte [ebp - 4], bl
cmp dword [ebp - 0x14], esi
jb 0x402fe6
mov edx, dword [ebp - 0x28]
push edx
call fcn.00408104
add esp, 4
mov edi, 7
xor eax, eax
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x18], ebx
mov word [ebp - 0x28], ax
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp + 0x1c], esi
jb 0x402f07
mov ecx, dword [ebp + 8]
push ecx
call fcn.00408104
xor edx, edx
add esp, 4
mov word [ebp + 8], dx
xor al, al
jmp 0x403062
mov byte [ebp - 4], bl
cmp dword [ebp - 0x14], esi
jb 0x403031
mov eax, dword [ebp - 0x28]
push eax
call fcn.00408104
add esp, 4
mov edi, 7
xor ecx, ecx
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x18], ebx
mov word [ebp - 0x28], cx
mov dword [ebp - 4], 0xffffffff
cmp dword [ebp + 0x1c], esi
jb 0x40305a
mov edx, dword [ebp + 8]
push edx
call fcn.00408104
add esp, 4
xor eax, eax
mov word [ebp + 8], ax
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword [ebp + 0x1c], edi
pop edi
mov dword [ebp + 0x18], ebx
pop esi
pop ebx
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret