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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4e67f1
mov eax, dword fs:[0]
push eax
sub esp, 0x7c4
mov eax, dword [0x519220]
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.00403f90
xor esi, esi
mov dword [ebp - 4], 0
cmp dword [ebp - 0x460], esi
je 0x41cf40
lea ecx, [ebp - 0x6ac]
call fcn.00403e10
push 1
lea ecx, [ebp - 0x6a4]
mov dword [ebp - 0x58c], esi
mov dword [ebp - 0x6a8], esi
call fcn.00406110
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.00403e10
push 1
lea ecx, [ebp - 0x338]
mov dword [ebp - 0x220], esi
mov dword [ebp - 0x33c], esi
call fcn.00406110
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 0x41ca40
cmp byte [ebp - 0x348], cl
lea edi, [ebp - 0x458]
push 0x503cd8
cmove edi, dword [ebp - 0x45c]
add edi, 4
push edi
call fcn.004917c3
add esp, 8
test eax, eax
je 0x41ca40
sub eax, edi
sar eax, 1
cmp eax, 0xffffffff
je 0x41ca40
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.0040f6f0
push eax
lea ecx, [ebp - 0x340]
call fcn.0040fd90
cmp byte [ebp - 0x6b4], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41ca0d
mov eax, dword [ebp - 0x7c8]
lea ecx, [ebp - 0x7c4]
cmp eax, ecx
je 0x41ca0d
push eax
call fcn.0049c7b1
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 0x41ca35
shr eax, 4
not al
and al, 1
jne 0x41ca40
lea ecx, [ebp - 0x340]
call fcn.0040f3b0
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 0x41ca72
shr eax, 4
not al
and al, 1
jne 0x41cc62
lea ecx, [ebp - 0x6ac]
call fcn.0040f3b0
mov eax, dword [0x536f28]
test al, 1
jne 0x41cade
or eax, 1
mov ecx, 0x5372b0
mov dword [0x536f28], eax
call fcn.00403e10
push 1
mov ecx, 0x5372b8
mov dword [0x5373d0], 0
mov dword [0x5372b4], 0
call fcn.00406110
cmp byte [0x5373cc], 0
mov eax, 0x5372bc
push 0x4ec870
cmove eax, dword [0x5372b8]
xor ecx, ecx
mov word [eax + 4], cx
call fcn.0048f19b
add esp, 4
cmp dword [0x5372b4], 0
jne 0x41cb5a
push 0x20c
lea eax, [ebp - 0x21c]
push 0
push eax
call fcn.00491400
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.0040f6f0
push eax
mov ecx, 0x5372b0
call fcn.0040fd90
cmp byte [ebp - 0x46c], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41cb5a
mov eax, dword [ebp - 0x580]
lea ecx, [ebp - 0x57c]
cmp eax, ecx
je 0x41cb5a
push eax
call fcn.0049c7b1
add esp, 4
push 0
push 0
push 0
push 0
push 0
push 0x5372b0
lea ecx, [ebp - 0x7d0]
call fcn.0040f820
lea eax, [ebp - 0x7d0]
push eax
lea ecx, [ebp - 0x6ac]
call fcn.0040fd90
cmp byte [ebp - 0x6b4], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41cbb2
mov eax, dword [ebp - 0x7c8]
lea ecx, [ebp - 0x7c4]
cmp eax, ecx
je 0x41cbb2
push eax
call fcn.0049c7b1
add esp, 4
lea ecx, [ebp - 0x6ac]
call fcn.00410050
test al, al
je 0x41cc62
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.0040f820
push eax
lea ecx, [ebp - 0x340]
call fcn.0040fd90
cmp byte [ebp - 0x46c], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41cc2f
mov eax, dword [ebp - 0x580]
lea ecx, [ebp - 0x57c]
cmp eax, ecx
je 0x41cc2f
push eax
call fcn.0049c7b1
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 0x41cc57
shr eax, 4
not al
and al, 1
jne 0x41cc62
lea ecx, [ebp - 0x340]
call fcn.0040f3b0
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 0x41cc8e
shr eax, 4
not al
and al, 1
jne 0x41ce7e
lea ecx, [ebp - 0x6ac]
call fcn.0040f3b0
mov eax, dword [0x5373d4]
test al, 1
jne 0x41ccfa
or eax, 1
mov ecx, 0x537180
mov dword [0x5373d4], eax
call fcn.00403e10
push 1
mov ecx, 0x537188
mov dword [0x5372a0], 0
mov dword [0x537184], 0
call fcn.00406110
cmp byte [0x53729c], 0
mov eax, 0x53718c
push 0x4ec8a0
cmove eax, dword [0x537188]
xor ecx, ecx
mov word [eax + 4], cx
call fcn.0048f19b
add esp, 4
cmp dword [0x537184], 0
jne 0x41cd76
push 0x20c
lea eax, [ebp - 0x21c]
push 0
push eax
call fcn.00491400
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.0040f6f0
push eax
mov ecx, 0x537180
call fcn.0040fd90
cmp byte [ebp - 0x46c], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41cd76
mov eax, dword [ebp - 0x580]
lea ecx, [ebp - 0x57c]
cmp eax, ecx
je 0x41cd76
push eax
call fcn.0049c7b1
add esp, 4
push 0
push 0
push 0
push 0
push 0
push 0x537180
lea ecx, [ebp - 0x7d0]
call fcn.0040f820
lea eax, [ebp - 0x7d0]
push eax
lea ecx, [ebp - 0x6ac]
call fcn.0040fd90
cmp byte [ebp - 0x6b4], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41cdce
mov eax, dword [ebp - 0x7c8]
lea ecx, [ebp - 0x7c4]
cmp eax, ecx
je 0x41cdce
push eax
call fcn.0049c7b1
add esp, 4
lea ecx, [ebp - 0x6ac]
call fcn.00410050
test al, al
je 0x41ce7e
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.0040f820
push eax
lea ecx, [ebp - 0x340]
call fcn.0040fd90
cmp byte [ebp - 0x46c], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41ce4b
mov eax, dword [ebp - 0x580]
lea ecx, [ebp - 0x57c]
cmp eax, ecx
je 0x41ce4b
push eax
call fcn.0049c7b1
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 0x41ce73
shr eax, 4
not al
and al, 1
jne 0x41ce7e
lea ecx, [ebp - 0x340]
call fcn.0040f3b0
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 0x41cecc
shr eax, 4
not al
and al, 1
je 0x41cecc
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 0x41cee8
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 0x41cf14
mov eax, dword [ebp - 0x338]
lea ecx, [ebp - 0x334]
cmp eax, ecx
je 0x41cf14
push eax
call fcn.0049c7b1
add esp, 4
cmp byte [ebp - 0x590], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41cf40
mov eax, dword [ebp - 0x6a4]
lea ecx, [ebp - 0x6a0]
cmp eax, ecx
je 0x41cf40
push eax
call fcn.0049c7b1
add esp, 4
cmp byte [ebp - 0x348], 0
mov dword [ebp - method.t_str.virtual_0], vtable.t_str.0
jne 0x41cf6c
mov eax, dword [ebp - 0x45c]
lea ecx, [ebp - 0x458]
cmp eax, ecx
je 0x41cf6c
push eax
call fcn.0049c7b1
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.0048f1b0
mov esp, ebp
pop ebp
ret