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

Disassembly:
sub esp, 0xc
push ebx
push ebp
push esi
xor ebx, ebx
push edi
mov dword [esp + 0x14], ebx
xor ebp, ebp
mov dword [0x1021004], ebx
call fcn.0100ab4b
cmp eax, 0x62
jne 0x1003f2f
inc ebp
mov edi, 0x104
push edi
mov esi, 0x10205c0
push esi
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
test eax, eax
jne 0x1003f52
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
jmp dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
call dword [sym.imp.ntdll.dll__strlwr]
pop ecx
push edi
push 0x1020de0
push 0x10015a0
push esi
call fcn.0100777d
call fcn.0100a4b6
cmp eax, ebx
mov dword [0x1020828], eax
jne 0x1003fb3
push edi
call dword [sym.imp.msvcrt.dll_malloc]
cmp eax, ebx
pop ecx
mov dword [0x1020828], eax
jne 0x1003f92
push 8
pop eax
jmp 0x1004420
cmp ebp, ebx
je 0x1003fad
push 3
push esi
push eax
call dword [sym.imp.ntdll.dll_strncpy]
mov eax, dword [0x1020828]
add esp, 0xc
mov byte [eax + 3], bl
jmp 0x1003fb3
mov dword [eax], 0x5c3a43
push 4
push 0x1000
push 0x10000
push ebx
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
cmp eax, ebx
mov dword [0x10239c0], eax
jne 0x1003fd7
push 8
pop esi
jmp 0x1004411
push edi
mov ebp, 0x1020ba0
push ebp
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
push ebp
call fcn.0100774e
mov dword [esp + 0x10], eax
mov edi, eax
mov esi, 0x1001590
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
push ebp
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 0x1004022
mov eax, dword [esp + 0x10]
cmp eax, ebp
je 0x100404d
mov byte [eax - 1], bl
cmp dword [esp + 0x10], ebp
jne 0x1003fe5
jmp 0x100404d
push 0x10205c0
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
push ebx
push 2
push ebx
push ebp
call dword [sym.imp.SETUPAPI.dll_SetupOpenInfFileA]
cmp eax, 0xffffffff
mov dword [0x1021004], eax
jne 0x1004049
xor eax, eax
mov dword [0x1021004], eax
cmp eax, ebx
jne 0x1004057
mov esi, 0xf105
jmp 0x1004411
push eax
call fcn.01003a33
push 0x1020cac
push 0x1001578
mov esi, 0x1001570
push esi
push dword [0x1021004]
call fcn.010076b3
test eax, eax
je 0x100440c
push 0x1021120
push 0x1001550
push esi
push dword [0x1021004]
call fcn.010076b3
test eax, eax
je 0x100440c
mov ebp, dword [sym.imp.SETUPAPI.dll_SetupGetLineTextA]
push ebx
mov esi, 0x80
push esi
push 0x1021020
push 0x1001534
mov edi, 0x1001570
push edi
push dword [0x1021004]
push ebx
call ebp
test eax, eax
je 0x100440c
push ebx
push esi
push 0x1021140
push 0x1001514
push edi
push dword [0x1021004]
push ebx
call ebp
test eax, eax
je 0x100440c
push ebx
push esi
push 0x10210a0
push 0x10014f0
push edi
push dword [0x1021004]
push ebx
call ebp
test eax, eax
je 0x100440c
push ebx
mov esi, 0x104
push esi
push 0x10206e0
push 0x10014dc
push 0x10014cc
push dword [0x1021004]
push ebx
call ebp
test eax, eax
je 0x100440c
push ebx
push esi
push 0x1010380
push 0x10014bc
push edi
push dword [0x1021004]
push ebx
call ebp
test eax, eax
jne 0x1004169
push 0x41
pop ecx
mov edx, 0x1010380
push 0x103
mov edi, edx
push 0x1021020
push edx
rep stosd dword es:[edi], eax
call dword [sym.imp.ntdll.dll_strncpy]
add esp, 0xc
push ebx
push esi
push 0x10211c0
push 0x10014ac
push 0x10014cc
push dword [0x1021004]
push ebx
call ebp
test eax, eax
jne 0x100419b
mov esi, 0x100149c
mov edi, 0x10211c0
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, 0x104
push 0x20
push 0x1021020
call dword [sym.imp.ntdll.dll_strchr]
test eax, eax
pop ecx
pop ecx
jne 0x10041f2
cmp byte [0x1021020], 0x22
jne 0x10041f2
mov cl, byte [eax + 0x1021020]
mov byte [eax + 0x10339e0], cl
inc eax
cmp cl, bl
jne 0x10041b7
mov eax, 0x10339e0
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x10041d0
sub eax, edi
mov byte [eax + 0x10339df], bl
xor eax, eax
mov cl, byte [eax + 0x10339e1]
mov byte [eax + 0x1021020], cl
inc eax
cmp cl, bl
jne 0x10041e1
push 0x20
push 0x1021140
call dword [sym.imp.ntdll.dll_strchr]
test eax, eax
pop ecx
pop ecx
jne 0x1004249
cmp byte [0x1021140], 0x22
jne 0x1004249
mov cl, byte [eax + 0x1021140]
mov byte [eax + 0x10339e0], cl
inc eax
cmp cl, bl
jne 0x100420e
mov eax, 0x10339e0
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1004227
sub eax, edi
mov byte [eax + 0x10339df], bl
xor eax, eax
mov cl, byte [eax + 0x10339e1]
mov byte [eax + 0x1021140], cl
inc eax
cmp cl, bl
jne 0x1004238
push 0x20
push 0x10210a0
call dword [sym.imp.ntdll.dll_strchr]
test eax, eax
pop ecx
pop ecx
jne 0x10042a0
cmp byte [0x10210a0], 0x22
jne 0x10042a0
mov cl, byte [eax + 0x10210a0]
mov byte [eax + 0x10339e0], cl
inc eax
cmp cl, bl
jne 0x1004265
mov eax, 0x10339e0
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x100427e
sub eax, edi
mov byte [eax + 0x10339df], bl
xor eax, eax
mov cl, byte [eax + 0x10339e1]
mov byte [eax + 0x10210a0], cl
inc eax
cmp cl, bl
jne 0x100428f
push ebx
push esi
push str.spuninst.log
push 0x1001484
push 0x10014cc
push dword [0x1021004]
push ebx
call ebp
push ebx
push esi
mov edi, 0x1020a80
push edi
push 0x1001478
push 0x1001570
push dword [0x1021004]
push ebx
call ebp
test eax, eax
je 0x100431d
push 0x1001570
push 0x1001450
call fcn.01008a49
mov ebp, dword [sym.imp.ntdll.dll__strcmpi]
push edi
push 0x1001448
mov dword [esp + 0x20], eax
call ebp
test eax, eax
pop ecx
pop ecx
je 0x100431d
cmp dword [esp + 0x18], ebx
je 0x100431d
push edi
push dword [esp + 0x1c]
call ebp
test eax, eax
pop ecx
pop ecx
je 0x100431d
mov esi, 0xf13f
jmp 0x1004411
push str.spuninst.log
push 1
call fcn.010076f8
test eax, eax
jne 0x1004337
mov esi, 0xf136
jmp 0x1004411
mov ebp, dword [sym.imp.KERNEL32.dll_GetFullPathNameA]
lea eax, [esp + 0x10]
push eax
mov edi, 0x1020cc0
push edi
push esi
push 0x1020ba0
mov dword [esp + 0x20], ebx
call ebp
mov eax, dword [esp + 0x10]
cmp eax, edi
jbe 0x100435f
mov byte [eax - 0xa], bl
lea eax, [esp + 0x10]
push eax
mov edi, 0x1020f00
push edi
push esi
push 0x1020ba0
mov dword [esp + 0x20], ebx
call ebp
mov eax, dword [esp + 0x10]
cmp eax, edi
jbe 0x1004380
mov byte [eax], bl
mov byte [0x10228a0], bl
call fcn.0100958e
xor ebp, ebp
inc ebp
cmp eax, ebp
jne 0x10043a3
push esi
push 0x10228a0
push 0x100143c
push edi
call fcn.0100777d
push 0x1001434
push 0x10206e0
call dword [sym.imp.ntdll.dll__strlwr]
pop ecx
push eax
call dword [sym.imp.ntdll.dll_strstr]
test eax, eax
pop ecx
pop ecx
je 0x10043dc
mov dword [0x1020a64], ebp
xor eax, eax
mov cl, byte [eax + 0x1021020]
mov byte [eax + 0x1022780], cl
inc eax
cmp cl, bl
jne 0x10043c9
jmp 0x100441c
mov dword [0x1020a64], ebx
xor eax, eax
mov cl, byte [eax + 0x1021140]
mov byte [eax + 0x1022780], cl
inc eax
cmp cl, bl
jne 0x10043e4
push 0x20
push 0x1022780
call dword [sym.imp.ntdll.dll_strrchr]
cmp eax, ebx
pop ecx
pop ecx
je 0x100441c
mov byte [eax], bl
jmp 0x100441c
mov esi, 0xf106
push esi
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov dword [esp + 0x14], esi
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
ret