Function at 0x1010990
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, 0xc
push ebx
push esi
xor ebx, ebx
push edi
mov dword [ebp - 8], ebx
mov dword [ebp - 0xc], ebx
mov dword [0x103f3c4], ebx
call fcn.0101b4da
cmp eax, 0x62
jne 0x10109ba
mov dword [ebp - 0xc], 1
mov edi, 0x104
push edi
mov esi, 0x103e220
push esi
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
test eax, eax
jne 0x10109db
call dword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x1011156
push esi
call dword [sym.imp.msvcrt.dll__mbslwr]
pop ecx
push edi
push 0x103f1a0
push 0x10031b0
push esi
call fcn.01015121
push edi
push 0x103e920
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push 0x103e920
call fcn.010150e8
mov dword [ebp - 4], eax
mov edi, eax
mov esi, 0x10019c4
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push 0x103e920
movsb byte es:[edi], byte [esi]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
xor ecx, ecx
cmp eax, 0xffffffff
setne cl
mov eax, ecx
cmp eax, ebx
jne 0x1010a58
mov ecx, dword [ebp - 4]
mov eax, 0x103e920
cmp ecx, eax
je 0x1010a46
mov byte [ecx - 1], bl
cmp dword [ebp - 4], eax
jne 0x1010a01
push 0xf007
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
jmp 0x1011156
call fcn.0101a280
cmp eax, ebx
mov dword [0x103e48c], eax
jne 0x1010aa9
push 0x104
call dword [sym.imp.msvcrt.dll_malloc]
cmp eax, ebx
pop ecx
mov dword [0x103e48c], eax
jne 0x1010a83
push 8
pop eax
jmp 0x1011156
cmp dword [ebp - 0xc], ebx
je 0x1010aa3
push 3
push 0x103e220
push eax
call dword [sym.imp.ntdll.dll_strncpy]
mov eax, dword [0x103e48c]
add esp, 0xc
mov byte [eax + 3], bl
jmp 0x1010aa9
mov dword [eax], 0x5c3a43
push 4
push 0x1000
push 0x10000
push ebx
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
cmp eax, ebx
mov dword [0x106f760], eax
jne 0x1010acd
push 8
pop esi
jmp 0x1011149
push 0x103e220
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
push ebx
push 2
push ebx
mov esi, 0x103e920
push esi
call dword [sym.imp.UPDSPAPI.dll_UpdSpOpenInfFileA]
cmp eax, 0xffffffff
mov dword [0x103f3c4], eax
jne 0x1010af9
xor eax, eax
mov dword [0x103f3c4], eax
cmp eax, ebx
je 0x1011016
push ebx
push 2
push ebx
push esi
call dword [sym.imp.SETUPAPI.dll_SetupOpenInfFileA]
cmp eax, 0xffffffff
mov dword [0x103dfdc], eax
jne 0x1010b1d
xor eax, eax
mov dword [0x103dfdc], eax
cmp eax, ebx
je 0x1011016
push dword [0x103f3c4]
call fcn.0100e946
push 0x103ec34
push 0x1003198
mov edi, 0x10019d4
push edi
push dword [0x103f3c4]
call fcn.01015053
test eax, eax
je 0x1011131
push 0x103f4e0
push 0x1003178
push edi
push dword [0x103f3c4]
call fcn.01015053
test eax, eax
je 0x1011131
mov esi, dword [sym.imp.UPDSPAPI.dll_UpdSpGetLineTextA]
push ebx
push 0x80
push 0x103f3e0
push 0x100315c
push edi
push dword [0x103f3c4]
push ebx
call esi
test eax, eax
je 0x1011131
push ebx
push 0xca
push 0x103f620
push 0x100313c
push edi
push dword [0x103f3c4]
push ebx
call esi
test eax, eax
je 0x1011131
push ebx
push 0x80
push 0x103f460
push 0x1003118
push edi
push dword [0x103f3c4]
push ebx
call esi
test eax, eax
je 0x1011131
push ebx
push 0x104
push 0x103e340
push 0x1003104
mov edi, 0x1001630
push edi
push dword [0x103f3c4]
push ebx
call esi
test eax, eax
je 0x1011131
push ebx
push 0x104
push 0x102dec0
push 0x10019dc
push 0x10019d4
push dword [0x103f3c4]
push ebx
call esi
test eax, eax
jne 0x1010c4b
push 0x41
pop ecx
mov edx, 0x102dec0
push 0x103
mov edi, edx
push 0x103f3e0
push edx
rep stosd dword es:[edi], eax
call dword [sym.imp.ntdll.dll_strncpy]
add esp, 0xc
mov edi, 0x1001630
push ebx
push 0xca
push 0x103eb60
push 0x10030f8
push 0x10019d4
push dword [0x103f3c4]
push ebx
call esi
test eax, eax
jne 0x1010c94
push 0x32
mov edx, 0x103eb60
pop ecx
mov edi, edx
rep stosd dword es:[edi], eax
push 0xc9
push 0x103f3e0
push edx
stosw word es:[edi], ax
call dword [sym.imp.ntdll.dll_strncpy]
add esp, 0xc
mov edi, 0x1001630
push ebx
push 0x104
push 0x103e4a0
push 0x10030e4
push edi
push dword [0x103f3c4]
mov byte [0x103e4a0], bl
push ebx
call esi
test eax, eax
jne 0x1010cbe
mov byte [0x103e4a0], bl
push 0x102c910
push 0x10030cc
push edi
push dword [0x103f3c4]
mov dword [0x102c910], 0xa
call fcn.01015053
push 0x102c914
push 0x10030b8
push edi
push dword [0x103f3c4]
mov dword [0x102c914], ebx
call fcn.01015053
push 0x102c918
push 0x10030a8
push edi
push dword [0x103f3c4]
mov dword [0x102c918], ebx
call fcn.01015053
push ebx
push 0x104
push 0x103f700
push 0x1003098
push edi
push dword [0x103f3c4]
push ebx
call esi
test eax, eax
jne 0x1010d4e
mov esi, 0x1003088
mov edi, 0x103f700
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov esi, dword [sym.imp.UPDSPAPI.dll_UpdSpGetLineTextA]
mov edi, 0x1001630
push ebx
push 0x104
push 0x103dfe0
push 0x100307c
push edi
push dword [0x103f3c4]
mov byte [0x103dfe0], bl
push ebx
call esi
push 0x20
push 0x103f3e0
call dword [sym.imp.ntdll.dll_strchr]
test eax, eax
pop ecx
pop ecx
jne 0x1010dc5
cmp byte [0x103f3e0], 0x22
jne 0x1010dc5
mov cl, byte [eax + 0x103f3e0]
mov byte [eax + 0x107f8a0], cl
inc eax
cmp cl, bl
jne 0x1010d8a
mov eax, 0x107f8a0
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1010da3
sub eax, edx
mov byte [eax + 0x107f89f], bl
xor eax, eax
mov cl, byte [eax + 0x107f8a1]
mov byte [eax + 0x103f3e0], cl
inc eax
cmp cl, bl
jne 0x1010db4
push 0x20
push 0x103f620
call dword [sym.imp.ntdll.dll_strchr]
test eax, eax
pop ecx
pop ecx
jne 0x1010e1c
cmp byte [0x103f620], 0x22
jne 0x1010e1c
mov cl, byte [eax + 0x103f620]
mov byte [eax + 0x107f8a0], cl
inc eax
cmp cl, bl
jne 0x1010de1
mov eax, 0x107f8a0
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1010dfa
sub eax, edx
mov byte [eax + 0x107f89f], bl
xor eax, eax
mov cl, byte [eax + 0x107f8a1]
mov byte [eax + 0x103f620], cl
inc eax
cmp cl, bl
jne 0x1010e0b
push 0x20
push 0x103f460
call dword [sym.imp.ntdll.dll_strchr]
test eax, eax
pop ecx
pop ecx
jne 0x1010e73
cmp byte [0x103f460], 0x22
jne 0x1010e73
mov cl, byte [eax + 0x103f460]
mov byte [eax + 0x107f8a0], cl
inc eax
cmp cl, bl
jne 0x1010e38
mov eax, 0x107f8a0
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1010e51
sub eax, edx
mov byte [eax + 0x107f89f], bl
xor eax, eax
mov cl, byte [eax + 0x107f8a1]
mov byte [eax + 0x103f460], cl
inc eax
cmp cl, bl
jne 0x1010e62
push ebx
push 0x209
push str.spuninst.log
push 0x1003064
push edi
push dword [0x103f3c4]
push ebx
call esi
push 0x209
mov eax, str.spuninst.log
push eax
push 0x103ef80
push eax
push 0x103e220
push ebx
call fcn.0101f6dc
test eax, eax
jne 0x1010eb7
mov esi, 0xf05a
jmp 0x1011149
push ebx
push 0x104
mov edi, 0x103e800
push edi
push 0x1003058
push 0x10019d4
push dword [0x103f3c4]
push ebx
call esi
test eax, eax
je 0x1010f2c
push 0x10019d4
push 0x1003030
call fcn.0101639e
mov esi, dword [sym.imp.ntdll.dll__strcmpi]
push edi
push 0x1003028
mov dword [ebp - 0xc], eax
call esi
test eax, eax
pop ecx
pop ecx
je 0x1010f2c
cmp dword [ebp - 0xc], ebx
je 0x1010f2c
push edi
push dword [ebp - 0xc]
call esi
test eax, eax
pop ecx
pop ecx
je 0x1010f2c
push dword [ebp - 0xc]
push edi
push 0x1002fa0
call fcn.01015c5a
add esp, 0xc
mov esi, 0xf40e
jmp 0x1011149
cmp byte [0x103e4a0], bl
je 0x1010f5e
mov esi, 0x103e4a0
push esi
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
cmp eax, ebx
mov dword [0x103e484], eax
jne 0x1010f5e
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push esi
push 0x1002f70
call fcn.01015c5a
add esp, 0xc
lea eax, [ebp - 4]
push eax
mov esi, 0x103ec40
push esi
push 0x104
mov edi, 0x103e920
push edi
mov dword [ebp - 4], ebx
call dword [sym.imp.KERNEL32.dll_GetFullPathNameA]
test eax, eax
jne 0x1010f95
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push edi
push 0x1002f30
call fcn.01015c5a
add esp, 0xc
mov eax, dword [ebp - 4]
cmp eax, esi
jbe 0x1011025
mov byte [eax - 0xa], bl
cmp byte [0x102dc68], bl
je 0x1011025
push 0x104
push esi
push 0x102dc68
push esi
call fcn.01015121
push dword [0x103f3c4]
call dword [sym.imp.UPDSPAPI.dll_UpdSpCloseInfFile]
push esi
push 0x1002894
push 0x1000
mov edi, 0x106e760
push edi
call dword [sym.imp.ntdll.dll__snprintf]
add esp, 0x10
push ebx
push 2
push ebx
push edi
call dword [sym.imp.UPDSPAPI.dll_UpdSpOpenInfFileA]
cmp eax, 0xffffffff
mov dword [0x103f3c4], eax
jne 0x1011020
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x102dc68
push 0x1002ee0
call fcn.01015c5a
add esp, 0xc
mov dword [0x103f3c4], ebx
mov esi, 0xf007
jmp 0x1011149
mov edi, 0x103e920
lea eax, [ebp - 4]
push eax
push 0x103f2c0
push 0x104
push edi
mov dword [ebp - 4], ebx
call dword [sym.imp.KERNEL32.dll_GetFullPathNameA]
test eax, eax
jne 0x1011056
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push edi
push 0x1002f30
call fcn.01015c5a
add esp, 0xc
mov eax, dword [ebp - 4]
mov edi, 0x103f2c0
cmp eax, edi
jbe 0x1011064
mov byte [eax], bl
mov byte [0x106e640], bl
call fcn.01016edc
cmp eax, 1
jne 0x1011093
push 0x1002e70
call fcn.01015c42
push 0x104
push 0x106e640
push 0x1002e64
push edi
call fcn.01015121
push 0x1002e5c
push 0x103e340
call dword [sym.imp.msvcrt.dll__mbslwr]
pop ecx
push eax
call dword [sym.imp.ntdll.dll_strstr]
test eax, eax
pop ecx
pop ecx
je 0x10110d0
mov dword [0x103e7e4], 1
xor eax, eax
mov cl, byte [eax + 0x103f3e0]
mov byte [eax + 0x106e520], cl
inc eax
cmp cl, bl
jne 0x10110bd
jmp 0x1011101
mov dword [0x103e7e4], ebx
xor eax, eax
mov cl, byte [eax + 0x103f620]
mov byte [eax + 0x106e520], cl
inc eax
cmp cl, bl
jne 0x10110d8
push 0x20
push 0x106e520
call dword [sym.imp.ntdll.dll_strrchr]
cmp eax, ebx
pop ecx
pop ecx
mov dword [ebp - 4], eax
je 0x1011101
mov byte [eax], bl
cmp dword [0x102dc60], ebx
jne 0x1011153
xor edi, edi
inc edi
push edi
push ebx
push ebx
push ebx
push ebx
lea eax, [ebp - 0xc]
push eax
push dword [0x103f3c4]
mov dword [ebp - 0xc], ebx
push esi
call fcn.0101e1be
cmp dword [ebp - 0xc], ebx
je 0x1011153
mov dword [0x102dc60], edi
jmp 0x1011153
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x1002e08
call fcn.01015c5a
pop ecx
pop ecx
mov esi, 0xf00c
push esi
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov dword [ebp - 8], esi
mov eax, dword [ebp - 8]
pop edi
pop esi
pop ebx
leave
ret