Function at 0x43aa4f
Capabilities:
Check if file exists
Get common file path
Get file attributes
Set current directory

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x668
mov eax, dword [0x4424f4]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0xc]
push ebx
xor ebx, ebx
mov dword [ebp - 0x640], ecx
mov dword [ebp - 0x63c], eax
mov dword [ebp - 0x630], ebx
mov dword [ebp - 0x634], ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov edi, ebx
mov dword [ebp - 0x628], edi
test eax, eax
je 0x43aaa5
push 0x40aae0
push eax
call dword [sym.imp.msvcrt.dll__wcsicmp]
pop ecx
pop ecx
test eax, eax
jne 0x43aab8
call fcn.0041f7c0
test eax, eax
jne 0x43aab8
mov dword [ebp - 0x634], 1
mov dword [ebp - 0x638], ebx
mov dword [ebp - 0x62c], ebx
test esi, esi
jne 0x43aad2
mov eax, 0x80004003
jmp 0x43b6fe
push 0x208
call fcn.00440dea
mov dword [ebp - 0x648], eax
pop ecx
test eax, eax
je 0x43b6f9
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov ebx, eax
test ebx, ebx
jne 0x43ab2b
push dword [ebp - 0x648]
call fcn.00440db7
pop ecx
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x43ab18
push 0x57
pop eax
test eax, eax
jle 0x43b6fe
movzx eax, ax
or eax, 0x80070000
jmp 0x43b6fe
cmp ebx, 0x104
jbe 0x43ab6d
push dword [ebp - 0x648]
call fcn.00440db7
pop ecx
xor ecx, ecx
lea eax, [ebx + 1]
push 2
pop edx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00440dea
mov dword [ebp - 0x648], eax
pop ecx
test eax, eax
je 0x43b6f9
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov ecx, esi
call fcn.0041f21e
push 0x5c
pop ecx
test eax, eax
je 0x43abc6
push ecx
push esi
call dword [sym.imp.msvcrt.dll_wcsrchr]
mov ebx, 0x103
mov edx, ebx
pop ecx
pop ecx
lea ecx, [ebp - 0x214]
test eax, eax
je 0x43ab9e
push esi
call fcn.0040c040
jmp 0x43ac1a
push dword [ebp - 0x648]
call fcn.0040c040
lea eax, [ebp - 0x214]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
push esi
mov edx, ebx
lea ecx, [ebp - 0x214]
call fcn.0040c075
jmp 0x43ac1a
push dword [ebp - 0x648]
mov edx, 0x102
lea ecx, [ebp - 0x214]
call fcn.0040c040
lea eax, [ebp - 0x214]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
mov ebx, 0x103
lea ecx, [ebp - 0x214]
push esi
mov edx, ebx
call fcn.0040c075
lea eax, [ebp - 0x214]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x43b6f2
test al, 0x10
jne 0x43b6f2
mov eax, dword [ebp - 0x63c]
test eax, eax
je 0x43ac70
push 0x40a798
push eax
call dword [sym.imp.msvcrt.dll_wcsstr]
pop ecx
pop ecx
test eax, eax
je 0x43ac70
push 0x202
call fcn.00440dea
mov esi, eax
mov dword [ebp - 0x638], esi
pop ecx
test esi, esi
je 0x43b6f9
push 0x40aaa0
push 0x40aa64
push 0x40a7ac
push 0x100
push esi
call fcn.0040c0e1
add esp, 0x14
jmp 0x43ac72
mov esi, edi
cmp dword [ebp + 0x10], edi
je 0x43ac84
push ecx
push 0x40a7b8
push 8
call fcn.0041f954
mov eax, dword [ebp - 0x640]
cmp dword [eax + 0x10], edi
jne 0x43ad52
lea eax, [ebp - 0x214]
push 0x3a
push eax
call dword [sym.imp.msvcrt.dll_wcschr]
pop ecx
pop ecx
test eax, eax
jne 0x43ad49
lea eax, [ebp - 0x214]
push 0x40a804
push eax
call dword [sym.imp.msvcrt.dll_wcsstr]
pop ecx
pop ecx
test eax, eax
jne 0x43ad49
push dword [ebp - 0x648]
mov edx, 0x102
lea ecx, [ebp - 0x41c]
call fcn.0040c040
lea eax, [ebp - 0x41c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
push ecx
lea eax, [ebp - 0x644]
mov edx, ebx
push eax
lea ecx, [ebp - 0x41c]
call fcn.0040c15d
test eax, eax
js 0x43ad25
push ecx
lea eax, [ebp - 0x214]
mov edx, ebx
push eax
mov eax, dword [ebp - 0x644]
sub edx, eax
push ecx
lea ecx, [ebp - 0x41c]
lea ecx, [ecx + eax*2]
call fcn.0040c1c3
lea eax, [ebp - 0x214]
push 0x5c
push eax
call dword [sym.imp.msvcrt.dll_wcsrchr]
pop ecx
pop ecx
test eax, eax
je 0x43ad62
lea eax, [ebp - 0x41c]
push eax
lea ecx, [ebp - 0x214]
jmp 0x43ad5b
lea eax, [ebp - 0x214]
push eax
jmp 0x43ad55
push dword [eax + 0x10]
lea ecx, [ebp - 0x41c]
mov edx, ebx
call fcn.0040c040
lea eax, [ebp - 0x41c]
push 0x5c
push eax
call dword [sym.imp.msvcrt.dll_wcsrchr]
pop ecx
pop ecx
test eax, eax
je 0x43ad7c
xor ecx, ecx
mov word [eax], cx
lea eax, [ebp - 0x41c]
mov edx, 0x104
push eax
lea ecx, [ebp - 0x624]
call fcn.0040c040
test eax, eax
js 0x43adea
push 0x5c
pop esi
lea ecx, [ebp - 0x624]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
cmp ax, word [ebp - 0x630]
jne 0x43ada3
sub ecx, edx
sar ecx, 1
je 0x43adce
cmp word [ebp + ecx*2 - 0x626], si
jne 0x43adce
xor eax, eax
mov word [ebp + ecx*2 - 0x626], ax
jmp 0x43ad9a
lea eax, [ebp - 0x624]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov esi, dword [ebp - 0x638]
cmp eax, 0xffffffff
je 0x43adea
test al, 0x10
jne 0x43adfd
push dword [ebp - 0x648]
mov edx, ebx
lea ecx, [ebp - 0x41c]
call fcn.0040c040
mov ecx, dword [ebp - 0x640]
lea eax, [ebp - 0x41c]
push eax
call fcn.00436287
lea eax, [ebp - 0x41c]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
xor eax, eax
push ecx
mov ebx, eax
mov dword [ebp - 0x64c], eax
push ecx
lea ecx, [ebp - 0x214]
mov dword [ebp - 0x650], ebx
call fcn.00422c53
mov dword [ebp - 0x630], eax
cmp eax, 0xffffffff
je 0x43b5c3
cmp dword [ebp - 0x634], ebx
mov ebx, eax
je 0x43ae83
xor eax, eax
mov ecx, ebx
mov dword [ebp - 0x654], eax
lea eax, [ebp - 0x654]
push eax
call fcn.00437da5
test eax, eax
jne 0x43ae83
test esi, esi
je 0x43ae77
push esi
call fcn.00440db7
pop ecx
mov esi, dword [ebp - 0x654]
mov dword [ebp - 0x638], esi
xor eax, eax
push eax
push eax
push dword [ebp - 0x63c]
push ebx
call fcn.00438b42
mov dword [ebp - 0x630], eax
test eax, eax
jns 0x43aedd
test esi, esi
je 0x43aed5
push 0x40aa78
push esi
call dword [sym.imp.msvcrt.dll_wcsstr]
pop ecx
pop ecx
test eax, eax
je 0x43aecf
push 0x40aa78
push dword [ebp - 0x630]
push 0x40a810
push 3
call fcn.0041e83a
add esp, 0x10
jmp 0x43aedd
mov eax, dword [ebp - 0x630]
mov edi, eax
mov dword [ebp - 0x628], eax
cmp dword [ebp - 0x634], 0
je 0x43af3f
xor eax, eax
push eax
push eax
push 0x40a9b0
push ebx
call fcn.00438b42
mov dword [ebp - 0x630], eax
test eax, eax
jns 0x43af3f
test esi, esi
je 0x43af37
push 0x40aa78
push esi
call dword [sym.imp.msvcrt.dll_wcsstr]
pop ecx
pop ecx
test eax, eax
je 0x43af31
push 0x40aa78
push dword [ebp - 0x630]
push 0x40a810
push 3
call fcn.0041e83a
add esp, 0x10
jmp 0x43af3f
mov eax, dword [ebp - 0x630]
mov edi, eax
mov dword [ebp - 0x628], edi
lea eax, [ebp - 0x650]
push eax
push dword [ebp - 0x63c]
lea ecx, [ebp - 0x214]
push ebx
call fcn.00438159
mov esi, eax
test esi, esi
js 0x43b5ac
cmp dword [ebp - 0x634], 0
je 0x43af8f
lea eax, [ebp - 0x650]
push eax
push 0x40a9b0
push ebx
lea ecx, [ebp - 0x214]
call fcn.00438159
test eax, eax
jns 0x43af8f
mov edi, eax
mov dword [ebp - 0x628], edi
lea eax, [ebp - 0x62c]
mov ecx, ebx
push eax
push dword [ebp - 0x63c]
call fcn.00437ca1
mov esi, eax
mov dword [ebp - 0x630], esi
cmp esi, 0xd2af9
je 0x43aff2
cmp dword [ebp - 0x634], 0
je 0x43aff2
cmp dword [ebp - 0x62c], 0
je 0x43afd9
push dword [ebp - 0x62c]
call fcn.00440db7
xor eax, eax
pop ecx
mov dword [ebp - 0x62c], eax
lea eax, [ebp - 0x62c]
mov ecx, ebx
push eax
push 0x40a9b0
call fcn.00437ca1
mov dword [ebp - 0x630], eax
mov esi, dword [ebp - 0x63c]
mov ecx, ebx
push esi
call fcn.0043804c
mov dword [ebp - 0x644], ebx
mov eax, esi
test esi, esi
jne 0x43b011
mov eax, 0x40aae0
push 1
push 0x40ab40
push eax
lea eax, [ebp - 0x664]
xor ecx, ecx
push eax
lea edx, [ebp - 0x644]
call fcn.0043645b
test eax, eax
je 0x43b042
mov ecx, dword [ebp - 0x644]
lea edx, [ebp - 0x664]
call fcn.00433518
mov ecx, dword [ebp - 0x640]
push esi
push ebx
call fcn.00437e06
mov ecx, dword [ebp - 0x640]
xor eax, eax
push eax
push eax
push esi
push ebx
call fcn.00438ffe
mov esi, dword [ebp - 0x638]
mov dword [ebp - 0x644], eax
test eax, eax
jns 0x43b0b0
test esi, esi
je 0x43b0a8
push 0x40aaa0
push esi
call dword [sym.imp.msvcrt.dll_wcsstr]
pop ecx
pop ecx
test eax, eax
je 0x43b0a2
push 0x40aaa0
push dword [ebp - 0x644]
push 0x40a810
push 3
call fcn.0041e83a
add esp, 0x10
jmp 0x43b0b0
mov eax, dword [ebp - 0x644]
mov edi, eax
mov dword [ebp - 0x628], edi
cmp dword [ebp - 0x634], 0
je 0x43b118
mov ecx, dword [ebp - 0x640]
xor eax, eax
push eax
push eax
push 0x40a9b0
push ebx
call fcn.00438ffe
mov dword [ebp - 0x644], eax
test eax, eax
jns 0x43b118
test esi, esi
je 0x43b110
push 0x40aaa0
push esi
call dword [sym.imp.msvcrt.dll_wcsstr]
pop ecx
pop ecx
test eax, eax
je 0x43b10a
push 0x40aaa0
push dword [ebp - 0x644]
push 0x40a810
push 3
call fcn.0041e83a
add esp, 0x10
jmp 0x43b118
mov eax, dword [ebp - 0x644]
mov edi, eax
mov dword [ebp - 0x628], edi
xor eax, eax
push eax
push dword [ebp - 0x63c]
push ebx
call fcn.00436e1e
mov esi, eax
test esi, esi
jns 0x43b168
mov eax, dword [ebp - 0x638]
test eax, eax
je 0x43b160
push 0x40a96c
push eax
call dword [sym.imp.msvcrt.dll_wcsstr]
pop ecx
pop ecx
test eax, eax
je 0x43b160
push 0x40a96c
push esi
push 0x40a810
push 3
call fcn.0041e83a
add esp, 0x10
jmp 0x43b168
mov edi, esi
mov dword [ebp - 0x628], edi
cmp dword [ebp - 0x634], 0
je 0x43b1c0
xor eax, eax
push eax
push 0x40a9b0
push ebx
call fcn.00436e1e
mov esi, eax
test esi, esi
jns 0x43b1c0
mov eax, dword [ebp - 0x638]
test eax, eax
je 0x43b1b8
push 0x40a96c
push eax
call dword [sym.imp.msvcrt.dll_wcsstr]
pop ecx
pop ecx
test eax, eax
je 0x43b1b8
push 0x40a96c
push esi
push 0x40a810
push 3
call fcn.0041e83a
add esp, 0x10
jmp 0x43b1c0
mov edi, esi
mov dword [ebp - 0x628], edi
mov ecx, dword [ebp - 0x640]
lea eax, [ebp - 0x650]
push eax
xor eax, eax
push eax
push dword [ebp - 0x63c]
push ebx
call fcn.004391c4
mov esi, eax
test esi, esi
jns 0x43b255
mov eax, dword [ebp - 0x638]
test eax, eax
je 0x43b24b
push 0x40aa64
push eax
call dword [sym.imp.msvcrt.dll_wcsstr]
pop ecx
pop ecx
test eax, eax
je 0x43b24b
push 0x40aa64
push esi
push 0x40a810
push 3
call fcn.0041e83a
add esp, 0x10
mov esi, dword [ebp - 0x62c]
cmp dword [ebp - 0x634], 0
je 0x43b291
mov ecx, dword [ebp - 0x640]
lea eax, [ebp - 0x650]
push eax
xor eax, eax
push eax
push 0x40a9b0
push ebx
call fcn.004391c4
test eax, eax
jns 0x43b277
mov edi, eax
mov dword [ebp - 0x628], edi
jmp 0x43b291
mov edi, esi
mov dword [ebp - 0x628], edi
jmp 0x43b213
cmp dword [ebp - 0x630], 0xd2af8
jne 0x43b213
cmp esi, 1
je 0x43b213
mov esi, dword [ebp - 0x62c]
push ecx
push esi
push 4
call fcn.0041f954
jmp 0x43b219
cmp dword [ebp - 0x630], 0xd2af8
jne 0x43b291
cmp eax, 1
je 0x43b291
push ecx
push esi
push 4
call fcn.0041f954
ret
inc esi
invalid
invalid
mov ecx, dword [ebp - 0x640]
lea eax, [ebp - 0x650]
push eax
push 1
push dword [ebp - 0x63c]
push ebx
call fcn.004391c4
mov esi, eax
test esi, esi
jns 0x43b324
mov eax, dword [ebp - 0x638]
test eax, eax
je 0x43b31a
push 0x40aa38
push eax
call dword [sym.imp.msvcrt.dll_wcsstr]
pop ecx
pop ecx
test eax, eax
je 0x43b31a
push 0x40aa38
push esi
push 0x40a810
push 3
call fcn.0041e83a
add esp, 0x10
mov esi, dword [ebp - 0x62c]
cmp dword [ebp - 0x634], 0
je 0x43b360
mov ecx, dword [ebp - 0x640]
lea eax, [ebp - 0x650]
push eax
push 1
push 0x40a9b0
push ebx
call fcn.004391c4
test eax, eax
jns 0x43b346
mov edi, eax
mov dword [ebp - 0x628], edi
jmp 0x43b360
mov edi, esi
mov dword [ebp - 0x628], edi
jmp 0x43b2e3
cmp dword [ebp - 0x630], 0xd2af8
jne 0x43b2e3
cmp esi, 1
je 0x43b2e3
mov esi, dword [ebp - 0x62c]
push ecx
push esi
push 4
call fcn.0041f954
jmp 0x43b2e9
cmp dword [ebp - 0x630], 0xd2af8
jne 0x43b360
cmp eax, 1
je 0x43b360
push ecx
push esi
push 4
call fcn.0041f954
push dword [ebp - 0x63c]
push ebx
call fcn.00437026
mov esi, eax
test esi, esi
jns 0x43b3ad
mov eax, dword [ebp - 0x638]
test eax, eax
je 0x43b3a5
push 0x40a9d0
push eax
call dword [sym.imp.msvcrt.dll_wcsstr]
pop ecx
pop ecx
test eax, eax
je 0x43b3a5
push 0x40a9d0
push esi
push 0x40a810
push 3
call fcn.0041e83a
add esp, 0x10
jmp 0x43b3ad
mov edi, esi
mov dword [ebp - 0x628], edi
cmp dword [ebp - 0x634], 0
je 0x43b3cd
push 0x40a9b0
push ebx
call fcn.00437026
test eax, eax
jns 0x43b3cd
mov edi, eax
mov dword [ebp - 0x628], edi
push 1
push dword [ebp - 0x63c]
push ebx
call fcn.00436e1e
mov esi, eax
test esi, esi
jns 0x43b41c
mov eax, dword [ebp - 0x638]
test eax, eax
je 0x43b414
push 0x40aa08
push eax
call dword [sym.imp.msvcrt.dll_wcsstr]
pop ecx
pop ecx
test eax, eax
je 0x43b414
push 0x40aa08
push esi
push 0x40a810
push 3
call fcn.0041e83a
add esp, 0x10
jmp 0x43b41c
mov edi, esi
mov dword [ebp - 0x628], edi
cmp dword [ebp - 0x634], 0
je 0x43b43e
push 1
push 0x40a9b0
push ebx
call fcn.00436e1e
test eax, eax
jns 0x43b43e
mov edi, eax
mov dword [ebp - 0x628], edi
mov eax, dword [0x442678]
mov ecx, dword [ebp - 0x640]
and eax, 8
push eax
push 1
push dword [ebp - 0x63c]
push ebx
call fcn.00438ffe
mov esi, eax
test esi, esi
jns 0x43b49c
mov eax, dword [ebp - 0x638]
test eax, eax
je 0x43b494
push 0x40a994
push eax
call dword [sym.imp.msvcrt.dll_wcsstr]
pop ecx
pop ecx
test eax, eax
je 0x43b494
push 0x40a994
push esi
push 0x40a810
push 3
call fcn.0041e83a
add esp, 0x10
jmp 0x43b49c
mov edi, esi
mov dword [ebp - 0x628], edi
cmp dword [ebp - 0x634], 0
je 0x43b4cd
mov eax, dword [0x442678]
mov ecx, dword [ebp - 0x640]
and eax, 8
push eax
push 1
push 0x40a9b0
push ebx
call fcn.00438ffe
test eax, eax
jns 0x43b4cd
mov edi, eax
mov dword [ebp - 0x628], edi
mov esi, dword [ebp - 0x63c]
mov ecx, ebx
push esi
call fcn.00438988
test eax, eax
jns 0x43b4e7
mov edi, eax
mov dword [ebp - 0x628], edi
cmp dword [ebp - 0x634], 0
je 0x43b508
push 0x40a9b0
mov ecx, ebx
call fcn.00438988
test eax, eax
jns 0x43b508
mov edi, eax
mov dword [ebp - 0x628], edi
mov eax, dword [0x442678]
and eax, 8
push eax
push 1
push esi
push ebx
call fcn.00438b42
mov esi, eax
test esi, esi
jns 0x43b528
mov edi, esi
mov dword [ebp - 0x628], edi
cmp dword [ebp - 0x634], 0
je 0x43b555
mov eax, dword [0x442678]
and eax, 8
push eax
push 1
push 0x40a9b0
push ebx
call fcn.00438b42
mov esi, eax
test esi, esi
jns 0x43b555
mov edi, esi
mov dword [ebp - 0x628], edi
test byte [0x442678], 8
jne 0x43b5b4
mov esi, dword [ebp - 0x63c]
mov ecx, dword [ebp - 0x640]
push esi
push ebx
call fcn.00437fa5
test eax, eax
jns 0x43b57d
mov edi, eax
mov dword [ebp - 0x628], edi
push esi
push ebx
call fcn.00437e6b
mov esi, eax
test esi, esi
jns 0x43b592
mov edi, esi
mov dword [ebp - 0x628], edi
cmp dword [ebp - 0x634], 0
je 0x43b5b4
push 0x40a9b0
push ebx
call fcn.00437e6b
mov esi, eax
test esi, esi
jns 0x43b5b4
mov edi, esi
mov dword [ebp - 0x628], edi
push ebx
call dword [sym.imp.SETUPAPI.dll_SetupCloseInfFile]
mov ebx, dword [ebp - 0x650]
jmp 0x43b5f8
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
test esi, esi
jne 0x43b5d4
push 0x57
pop esi
test esi, esi
jle 0x43b5df
movzx esi, si
or esi, 0x80070000
push esi
lea eax, [ebp - 0x214]
push eax
push 0x40a864
push 2
pop eax
push eax
call fcn.0041e83a
add esp, 0x10
push dword [ebp - 0x648]
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
test esi, esi
js 0x43b634
test edi, edi
js 0x43b634
call fcn.0041f90e
cmp dword [0x442678], 0
je 0x43b680
call fcn.0041f90e
movzx edi, byte [0x442678]
shr edi, 3
and edi, 1
or edi, 0xd2af8
jmp 0x43b67a
push edi
lea eax, [ebp - 0x214]
push eax
push 0x40a898
push 2
pop eax
push eax
call fcn.0041e83a
add esp, 0x10
call fcn.0041f90e
cmp dword [0x442678], 0
je 0x43b674
call fcn.0041f90e
mov edi, dword [0x442678]
shr edi, 3
and edi, 1
or edi, 0xc00d2afa
jmp 0x43b67a
test esi, esi
jns 0x43b680
mov edi, esi
mov dword [ebp - 0x628], edi
push dword [ebp - 0x648]
call fcn.00440db7
mov eax, dword [ebp - 0x638]
pop ecx
test eax, eax
je 0x43b69d
push eax
call fcn.00440db7
pop ecx
mov eax, dword [ebp - 0x62c]
test eax, eax
je 0x43b6ae
push eax
call fcn.00440db7
pop ecx
call fcn.0041f8bf
mov dword [0x442674], eax
mov dword [0x44267c], 1
test ebx, ebx
je 0x43b6ee
xor edi, edi
mov esi, dword [ebx]
cmp dword [ebx + 4], edi
je 0x43b6db
push dword [ebx + 4]
call fcn.00440db7
pop ecx
mov dword [ebx + 4], edi
push ebx
call fcn.00440de5
mov ebx, esi
pop ecx
test esi, esi
jne 0x43b6c8
mov edi, dword [ebp - 0x628]
mov eax, edi
jmp 0x43b6fe
mov eax, 0x80070002
jmp 0x43b6fe
mov eax, 0x8007000e
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00441130
leave
ret 0xc