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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4e0b81
mov eax, dword fs:[0]
push eax
sub esp, 0x7c4
mov eax, dword [0x513200]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push str.gdi32.dll
lea ecx, [ebp - 0x464]
call fcn.00403600
xor esi, esi
mov dword [ebp - 4], 0
cmp dword [ebp - 0x460], esi
je 0x41b3d0
lea ecx, [ebp - 0x6ac]
call fcn.00403480
push 1
lea ecx, [ebp - 0x6a4]
mov dword [ebp - 0x58c], esi
mov dword [ebp - 0x6a8], esi
call fcn.004056f0
cmp byte [ebp - 0x590], 0
lea eax, [ebp - 0x6a0]
cmove eax, dword [ebp - 0x6a4]
xor ecx, ecx
mov word [eax + 4], cx
lea ecx, [ebp - 0x340]
call fcn.00403480
push 1
lea ecx, [ebp - 0x338]
mov dword [ebp - 0x220], esi
mov dword [ebp - 0x33c], esi
call fcn.004056f0
cmp byte [ebp - 0x224], 0
lea eax, [ebp - 0x334]
cmove eax, dword [ebp - 0x338]
xor ecx, ecx
mov word [eax + 4], cx
mov byte [ebp - 4], 2
mov esi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp dword [ebp - 0x460], ecx
jbe 0x41aed0
cmp byte [ebp - 0x348], cl
lea edi, [ebp - 0x458]
push 0x4fdb18
cmove edi, dword [ebp - 0x45c]
add edi, 4
push edi
call fcn.0048bf53
add esp, 8
test eax, eax
je 0x41aed0
sub eax, edi
sar eax, 1
cmp eax, 0xffffffff
je 0x41aed0
cmp byte [ebp - 0x348], 0
lea eax, [ebp - 0x458]
lea ecx, [ebp - 0x7d0]
cmove eax, dword [ebp - 0x45c]
sub esp, 0x10
add eax, 4
push 0
push eax
call fcn.0040e650
push eax
lea ecx, [ebp - 0x340]
call fcn.0040ecf0
cmp byte [ebp - 0x6b4], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41ae9d
mov eax, dword [ebp - 0x7c8]
lea ecx, [ebp - 0x7c4]
cmp eax, ecx
je 0x41ae9d
push eax
call fcn.00496f41
add esp, 4
cmp byte [ebp - 0x224], 0
lea eax, [ebp - 0x334]
cmove eax, dword [ebp - 0x338]
add eax, 4
push eax
call esi
cmp eax, 0xffffffff
je 0x41aec5
shr eax, 4
not al
and al, 1
jne 0x41aed0
lea ecx, [ebp - 0x340]
call fcn.0040e310
cmp byte [ebp - 0x224], 0
lea eax, [ebp - 0x334]
cmove eax, dword [ebp - 0x338]
add eax, 4
push eax
call esi
mov edi, dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
cmp eax, 0xffffffff
je 0x41af02
shr eax, 4
not al
and al, 1
jne 0x41b0f2
lea ecx, [ebp - 0x6ac]
call fcn.0040e310
mov eax, dword [0x530a28]
test al, 1
jne 0x41af6e
or eax, 1
mov ecx, 0x530db0
mov dword [0x530a28], eax
call fcn.00403480
push 1
mov ecx, 0x530db8
mov dword [0x530ed0], 0
mov dword [0x530db4], 0
call fcn.004056f0
cmp byte [0x530ecc], 0
mov eax, 0x530dbc
push 0x4e6880
cmove eax, dword [0x530db8]
xor ecx, ecx
mov word [eax + 4], cx
call fcn.0048992b
add esp, 4
cmp dword [0x530db4], 0
jne 0x41afea
push 0x20c
lea eax, [ebp - 0x21c]
push 0
push eax
call fcn.0048bb90
add esp, 0xc
lea eax, [ebp - 0x21c]
push 1
push 0x25
push eax
push 0
call edi
sub esp, 0x10
lea eax, [ebp - 0x21c]
lea ecx, [ebp - 0x588]
push 0
push eax
call fcn.0040e650
push eax
mov ecx, 0x530db0
call fcn.0040ecf0
cmp byte [ebp - 0x46c], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41afea
mov eax, dword [ebp - 0x580]
lea ecx, [ebp - 0x57c]
cmp eax, ecx
je 0x41afea
push eax
call fcn.00496f41
add esp, 4
push 0
push 0
push 0
push 0
push 0
push 0x530db0
lea ecx, [ebp - 0x7d0]
call fcn.0040e780
lea eax, [ebp - 0x7d0]
push eax
lea ecx, [ebp - 0x6ac]
call fcn.0040ecf0
cmp byte [ebp - 0x6b4], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41b042
mov eax, dword [ebp - 0x7c8]
lea ecx, [ebp - 0x7c4]
cmp eax, ecx
je 0x41b042
push eax
call fcn.00496f41
add esp, 4
lea ecx, [ebp - 0x6ac]
call fcn.0040efb0
test al, al
je 0x41b0f2
cmp byte [ebp - 0x348], 0
lea eax, [ebp - 0x458]
push 0
cmove eax, dword [ebp - 0x45c]
lea ecx, [ebp - 0x588]
push 0
push 0
push 0
add eax, 4
push eax
lea eax, [ebp - 0x6ac]
push eax
call fcn.0040e780
push eax
lea ecx, [ebp - 0x340]
call fcn.0040ecf0
cmp byte [ebp - 0x46c], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41b0bf
mov eax, dword [ebp - 0x580]
lea ecx, [ebp - 0x57c]
cmp eax, ecx
je 0x41b0bf
push eax
call fcn.00496f41
add esp, 4
cmp byte [ebp - 0x224], 0
lea eax, [ebp - 0x334]
cmove eax, dword [ebp - 0x338]
add eax, 4
push eax
call esi
cmp eax, 0xffffffff
je 0x41b0e7
shr eax, 4
not al
and al, 1
jne 0x41b0f2
lea ecx, [ebp - 0x340]
call fcn.0040e310
cmp byte [ebp - 0x224], 0
lea eax, [ebp - 0x334]
cmove eax, dword [ebp - 0x338]
add eax, 4
push eax
call esi
cmp eax, 0xffffffff
je 0x41b11e
shr eax, 4
not al
and al, 1
jne 0x41b30e
lea ecx, [ebp - 0x6ac]
call fcn.0040e310
mov eax, dword [0x530ed4]
test al, 1
jne 0x41b18a
or eax, 1
mov ecx, 0x530c80
mov dword [0x530ed4], eax
call fcn.00403480
push 1
mov ecx, 0x530c88
mov dword [0x530da0], 0
mov dword [0x530c84], 0
call fcn.004056f0
cmp byte [0x530d9c], 0
mov eax, 0x530c8c
push 0x4e68b0
cmove eax, dword [0x530c88]
xor ecx, ecx
mov word [eax + 4], cx
call fcn.0048992b
add esp, 4
cmp dword [0x530c84], 0
jne 0x41b206
push 0x20c
lea eax, [ebp - 0x21c]
push 0
push eax
call fcn.0048bb90
add esp, 0xc
lea eax, [ebp - 0x21c]
push 1
push 0x24
push eax
push 0
call edi
sub esp, 0x10
lea eax, [ebp - 0x21c]
lea ecx, [ebp - 0x588]
push 0
push eax
call fcn.0040e650
push eax
mov ecx, 0x530c80
call fcn.0040ecf0
cmp byte [ebp - 0x46c], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41b206
mov eax, dword [ebp - 0x580]
lea ecx, [ebp - 0x57c]
cmp eax, ecx
je 0x41b206
push eax
call fcn.00496f41
add esp, 4
push 0
push 0
push 0
push 0
push 0
push 0x530c80
lea ecx, [ebp - 0x7d0]
call fcn.0040e780
lea eax, [ebp - 0x7d0]
push eax
lea ecx, [ebp - 0x6ac]
call fcn.0040ecf0
cmp byte [ebp - 0x6b4], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41b25e
mov eax, dword [ebp - 0x7c8]
lea ecx, [ebp - 0x7c4]
cmp eax, ecx
je 0x41b25e
push eax
call fcn.00496f41
add esp, 4
lea ecx, [ebp - 0x6ac]
call fcn.0040efb0
test al, al
je 0x41b30e
cmp byte [ebp - 0x348], 0
lea eax, [ebp - 0x458]
push 0
cmove eax, dword [ebp - 0x45c]
lea ecx, [ebp - 0x588]
push 0
push 0
push 0
add eax, 4
push eax
lea eax, [ebp - 0x6ac]
push eax
call fcn.0040e780
push eax
lea ecx, [ebp - 0x340]
call fcn.0040ecf0
cmp byte [ebp - 0x46c], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41b2db
mov eax, dword [ebp - 0x580]
lea ecx, [ebp - 0x57c]
cmp eax, ecx
je 0x41b2db
push eax
call fcn.00496f41
add esp, 4
cmp byte [ebp - 0x224], 0
lea eax, [ebp - 0x334]
cmove eax, dword [ebp - 0x338]
add eax, 4
push eax
call esi
cmp eax, 0xffffffff
je 0x41b303
shr eax, 4
not al
and al, 1
jne 0x41b30e
lea ecx, [ebp - 0x340]
call fcn.0040e310
cmp byte [ebp - 0x224], 0
lea eax, [ebp - 0x334]
cmove eax, dword [ebp - 0x338]
add eax, 4
push eax
call esi
mov edi, dword [sym.imp.KERNEL32.dll_LoadLibraryW]
cmp eax, 0xffffffff
je 0x41b35c
shr eax, 4
not al
and al, 1
je 0x41b35c
cmp byte [ebp - 0x224], 0
lea eax, [ebp - 0x334]
cmove eax, dword [ebp - 0x338]
add eax, 4
push eax
call edi
mov esi, eax
test esi, esi
jne 0x41b378
cmp byte [ebp - 0x348], 0
lea eax, [ebp - 0x458]
cmove eax, dword [ebp - 0x45c]
add eax, 4
push eax
call edi
mov esi, eax
cmp byte [ebp - 0x224], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41b3a4
mov eax, dword [ebp - 0x338]
lea ecx, [ebp - 0x334]
cmp eax, ecx
je 0x41b3a4
push eax
call fcn.00496f41
add esp, 4
cmp byte [ebp - 0x590], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41b3d0
mov eax, dword [ebp - 0x6a4]
lea ecx, [ebp - 0x6a0]
cmp eax, ecx
je 0x41b3d0
push eax
call fcn.00496f41
add esp, 4
cmp byte [ebp - 0x348], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41b3fc
mov eax, dword [ebp - 0x45c]
lea ecx, [ebp - 0x458]
cmp eax, ecx
je 0x41b3fc
push eax
call fcn.00496f41
add esp, 4
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00489940
mov esp, ebp
pop ebp
ret