Function at 0x475190
Capabilities:
Check if file exists
Get common file path
Get file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x6e0641
mov eax, dword fs:[0]
push eax
mov eax, 0x109c
call fcn.0062ad90
mov eax, dword [0x7b2214]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10a0], edx
mov ebx, ecx
mov dword [ebp - 0x10a4], ebx
push 0x208
lea eax, [ebp - 0x420]
push 0
push eax
call fcn.00668940
add esp, 0xc
lea eax, [ebp - 0x218]
push 0x208
push 0
push eax
call fcn.00668940
add esp, 0xc
lea eax, [ebp - 0x628]
push 0x208
push 0
push eax
call fcn.00668940
add esp, 0xc
lea eax, [ebp - 0xa38]
push 0x208
push 0
push eax
call fcn.00668940
add esp, 0xc
mov dword [ebp - method.MAGA::CFileLink.virtual_0], vtable.MAGA::CFileLink.0
lea eax, [ebp - 0x108c]
mov dword [ebp - 0x1094], 0
mov dword [ebp - 0x1090], 0
push 0x104
push 0
push eax
call fcn.00668940
mov esi, dword [sym.imp.ole32.dll_CoInitialize]
add esp, 0xc
push 0
call esi
mov dword [ebp - 0xe84], eax
mov dword [ebp - 0xe80], 0
push 0x104
mov dword [ebp - 4], 0
lea eax, [ebp - 0xe6c]
push 0
push eax
mov dword [ebp - method.MAGA::CFileLink.virtual_0], vtable.MAGA::CFileLink.0
mov dword [ebp - 0xe74], 0
mov dword [ebp - 0xe70], 0
call fcn.00668940
add esp, 0xc
push 0
call esi
mov dword [ebp - 0xc64], eax
mov dword [ebp - 0xc60], 0
push 0x104
lea eax, [ebp - 0xc4c]
mov dword [ebp - method.MAGA::CFileLink.virtual_0], vtable.MAGA::CFileLink.0
push 0
push eax
mov dword [ebp - 0xc54], 0
mov dword [ebp - 0xc50], 0
call fcn.00668940
add esp, 0xc
push 0
call esi
mov dword [ebp - 0xa44], eax
mov dword [ebp - 0xa40], 0
mov byte [ebp - 4], 2
test ebx, ebx
je 0x475340
xor eax, eax
cmp ax, word [ebx]
je 0x475340
push 0x773368
push ebx
push str._s__s
lea eax, [ebp - 0x218]
push 0x104
push eax
call fcn.0044eea0
add esp, 0x14
jmp 0x4753e8
push 0x208
lea eax, [ebp - 0x830]
push 0
push eax
call fcn.00668940
add esp, 0xc
lea eax, [ebp - 0x830]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x830]
push 0x5c
push eax
call fcn.00665846
add esp, 8
test eax, eax
jne 0x475388
mov word [ebp - 0x218], ax
jmp 0x4753e8
xor ecx, ecx
mov word [eax], cx
nop dword [eax]
movzx eax, word [ebp + ecx - 0x830]
lea ecx, [ecx + 2]
mov word [ebp + ecx - 0x21a], ax
test ax, ax
jne 0x475390
lea edi, [ebp - 0x218]
add edi, 0xfffffffe
mov ax, word [edi + 2]
lea edi, [edi + 2]
test ax, ax
jne 0x4753b1
mov eax, dword [0x76a02c]
mov dword [edi], eax
lea edi, [ebp - 0x218]
add edi, 0xfffffffe
nop dword [eax]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x4753d0
mov ecx, 7
mov esi, 0x773368
rep movsd dword es:[edi], dword [esi]
mov esi, dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
lea eax, [ebp - 0xa38]
push 0
push 0x19
push eax
push 0
call esi
push 0x773390
lea eax, [ebp - 0xa38]
push eax
push str._s_s.lnk
lea eax, [ebp - 0x420]
push 0x104
push eax
call fcn.0044eea0
add esp, 0x14
cmp dword [ebp - 0x10a0], 0
je 0x47547b
sub esp, 0x18
lea ecx, [ebp - 0x420]
mov edx, esp
lea edi, [ecx + 2]
xor eax, eax
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], 7
mov word [edx], ax
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x475450
sub ecx, edi
lea eax, [ebp - 0x420]
sar ecx, 1
push ecx
push eax
mov ecx, edx
call fcn.00432ef0
mov ecx, 1
call fcn.004474b0
add esp, 0x18
mov ebx, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
lea eax, [ebp - 0x420]
push eax
call ebx
cmp eax, 0xffffffff
jne 0x4754dd
lea eax, [ebp - 0x218]
push eax
call ebx
cmp eax, 0xffffffff
je 0x4754dd
lea eax, [ebp - 0x420]
push eax
lea ecx, [ebp - 0x1098]
call fcn.00432ac0
sub esp, 0xc
lea eax, [ebp - 0x218]
lea ecx, [ebp - 0x1098]
push eax
call fcn.00432b60
mov ecx, dword [ebp - 0x1090]
test ecx, ecx
je 0x4754dd
mov eax, dword [ecx]
lea edx, [ebp - 0x108c]
push 1
push edx
push ecx
call dword [eax + 0x18]
push 0
push 0x17
lea eax, [ebp - 0x628]
push eax
push 0
call esi
lea edi, [ebp - 0x628]
add edi, 0xfffffffe
mov ax, word [edi + 2]
lea edi, [edi + 2]
test ax, ax
jne 0x4754f5
mov eax, dword [0x76a02c]
lea ecx, [ebp - 0x628]
mov dword [edi], eax
add ecx, 0xfffffffe
mov ax, word [ecx + 2]
lea ecx, [ecx + 2]
test ax, ax
jne 0x475511
mov eax, dword [0x773390]
sub esp, 0x18
mov dword [ecx], eax
mov edx, esp
mov ax, word [0x773394]
mov word [ecx + 4], ax
xor eax, eax
lea ecx, [ebp - 0x628]
mov dword [edx + 0x10], 0
lea esi, [ecx + 2]
mov dword [edx + 0x14], 7
mov word [edx], ax
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x475550
sub ecx, esi
lea eax, [ebp - 0x628]
sar ecx, 1
push ecx
push eax
mov ecx, edx
call fcn.00432ef0
call fcn.00443a50
add esp, 0x18
test eax, eax
jne 0x4755bb
sub esp, 0x18
lea ecx, [ebp - 0x628]
mov edx, esp
lea esi, [ecx + 2]
mov dword [edx + 0x10], eax
mov dword [edx + 0x14], 7
mov word [edx], ax
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x475595
sub ecx, esi
lea eax, [ebp - 0x628]
sar ecx, 1
push ecx
push eax
mov ecx, edx
call fcn.00432ef0
call fcn.004436a0
add esp, 0x18
push 0x773390
lea eax, [ebp - 0x628]
push eax
push str._s_s.lnk
lea eax, [ebp - 0x420]
push 0x104
push eax
call fcn.0044eea0
add esp, 0x14
cmp dword [ebp - 0x10a0], 0
je 0x47563b
sub esp, 0x18
lea ecx, [ebp - 0x420]
mov edx, esp
lea esi, [ecx + 2]
xor eax, eax
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], 7
mov word [edx], ax
nop word [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x475610
sub ecx, esi
lea eax, [ebp - 0x420]
sar ecx, 1
push ecx
push eax
mov ecx, edx
call fcn.00432ef0
mov ecx, 1
call fcn.004474b0
add esp, 0x18
lea eax, [ebp - 0x420]
push eax
call ebx
cmp eax, 0xffffffff
jne 0x475697
lea eax, [ebp - 0x218]
push eax
call ebx
cmp eax, 0xffffffff
je 0x475697
lea eax, [ebp - 0x420]
push eax
lea ecx, [ebp - 0xe78]
call fcn.00432ac0
sub esp, 0xc
lea eax, [ebp - 0x218]
lea ecx, [ebp - 0xe78]
push eax
call fcn.00432b60
mov ecx, dword [ebp - 0xe70]
test ecx, ecx
je 0x475697
mov eax, dword [ecx]
lea edx, [ebp - 0xe6c]
push 1
push edx
push ecx
call dword [eax + 0x18]
mov eax, dword [ebp - 0x10a4]
test eax, eax
je 0x4756cc
xor ecx, ecx
cmp cx, word [eax]
je 0x4756cc
push 0x773398
push eax
push str._s__s
lea eax, [ebp - 0x218]
push 0x104
push eax
call fcn.0044eea0
add esp, 0x14
jmp 0x47577a
push 0x208
lea eax, [ebp - 0x830]
push 0
push eax
call fcn.00668940
add esp, 0xc
lea eax, [ebp - 0x830]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x830]
push 0x5c
push eax
call fcn.00665846
add esp, 8
test eax, eax
jne 0x475714
mov word [ebp - 0x218], ax
jmp 0x47577a
xor ecx, ecx
mov word [eax], cx
nop dword [eax]
movzx eax, word [ebp + ecx - 0x830]
lea ecx, [ecx + 2]
mov word [ebp + ecx - 0x21a], ax
test ax, ax
jne 0x475720
lea edi, [ebp - 0x218]
add edi, 0xfffffffe
mov ax, word [edi + 2]
lea edi, [edi + 2]
test ax, ax
jne 0x475741
mov eax, dword [0x76a02c]
mov dword [edi], eax
lea edi, [ebp - 0x218]
add edi, 0xfffffffe
nop dword [eax]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x475760
mov ecx, 8
mov esi, 0x773398
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
push 0x773390
lea eax, [ebp - 0x628]
push eax
push 0x7733bc
lea eax, [ebp - 0x420]
push 0x104
push eax
call fcn.0044eea0
add esp, 0x14
cmp dword [ebp - 0x10a0], 0
je 0x4757fb
sub esp, 0x18
lea ecx, [ebp - 0x420]
mov edx, esp
lea esi, [ecx + 2]
xor eax, eax
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], 7
mov word [edx], ax
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4757d0
sub ecx, esi
lea eax, [ebp - 0x420]
sar ecx, 1
push ecx
push eax
mov ecx, edx
call fcn.00432ef0
mov ecx, 1
call fcn.004474b0
add esp, 0x18
lea eax, [ebp - 0x420]
push eax
call ebx
cmp eax, 0xffffffff
jne 0x475857
lea eax, [ebp - 0x218]
push eax
call ebx
cmp eax, 0xffffffff
je 0x475857
lea eax, [ebp - 0x420]
push eax
lea ecx, [ebp - 0xc58]
call fcn.00432ac0
sub esp, 0xc
lea eax, [ebp - 0x218]
lea ecx, [ebp - 0xc58]
push eax
call fcn.00432b60
mov ecx, dword [ebp - 0xc50]
test ecx, ecx
je 0x47585d
mov eax, dword [ecx]
lea edx, [ebp - 0xc4c]
push 1
push edx
push ecx
call dword [eax + 0x18]
mov ecx, dword [ebp - 0xc50]
mov byte [ebp - 4], 3
cmp dword [ebp - 0xa40], 0
mov dword [ebp - method.MAGA::CFileLink.virtual_0], vtable.MAGA::CFileLink.0
je 0x47588d
test ecx, ecx
je 0x47588d
mov eax, dword [ecx]
lea edx, [ebp - 0xc4c]
push 1
push edx
push ecx
call dword [eax + 0x18]
mov ecx, dword [ebp - 0xc50]
mov edx, dword [ebp - 0xc54]
test edx, edx
je 0x4758a3
mov eax, dword [edx]
push edx
call dword [eax + 8]
mov ecx, dword [ebp - 0xc50]
test ecx, ecx
je 0x4758ad
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
cmp dword [ebp - 0xa44], 0
mov esi, dword [sym.imp.ole32.dll_CoUninitialize]
jl 0x4758be
call esi
mov byte [ebp - 4], 4
cmp dword [ebp - 0xc60], 0
mov ecx, dword [ebp - 0xe70]
mov dword [ebp - method.MAGA::CFileLink.virtual_0], vtable.MAGA::CFileLink.0
je 0x4758f4
test ecx, ecx
je 0x4758f4
mov eax, dword [ecx]
lea edx, [ebp - 0xe6c]
push 1
push edx
push ecx
call dword [eax + 0x18]
mov ecx, dword [ebp - 0xe70]
mov edx, dword [ebp - 0xe74]
test edx, edx
je 0x47590a
mov eax, dword [edx]
push edx
call dword [eax + 8]
mov ecx, dword [ebp - 0xe70]
test ecx, ecx
je 0x475914
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
cmp dword [ebp - 0xc64], 0
jl 0x47591f
call esi
mov dword [ebp - 4], 5
cmp dword [ebp - 0xe80], 0
mov edx, dword [ebp - 0x1090]
mov dword [ebp - method.MAGA::CFileLink.virtual_0], vtable.MAGA::CFileLink.0
je 0x475958
test edx, edx
je 0x475958
mov eax, dword [edx]
lea ecx, [ebp - 0x108c]
push 1
push ecx
push edx
call dword [eax + 0x18]
mov edx, dword [ebp - 0x1090]
mov ecx, dword [ebp - 0x1094]
test ecx, ecx
je 0x47596e
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov edx, dword [ebp - 0x1090]
test edx, edx
je 0x475978
mov ecx, dword [edx]
push edx
call dword [ecx + 8]
cmp dword [ebp - 0xe84], 0
jl 0x475983
call esi
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00629f1d
mov esp, ebp
pop ebp
ret