Function at 0x100078b0
Capabilities:
Check for time delay via gettickcount
Create process on windows
Get common file path

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x1001c32b
push eax
mov dword fs:[0], esp
sub esp, 0x38c
push ebx
push esi
mov esi, dword [esp + 0x3a8]
xor ebx, ebx
push edi
mov edi, dword [esp + 0x3a8]
push ebx
push ebx
push str.VendorSetup
push esi
push edi
call fcn.10010b60
add esp, 0x14
test eax, eax
jne 0x10007954
push ebx
push ebx
push 0x1001d314
push esi
push edi
call fcn.10010b60
add esp, 0x14
test eax, eax
je 0x10007c9b
mov eax, dword [edi]
push ebx
lea ecx, [esp + 0x90]
push 0x104
push ecx
push 1
mov ecx, edi
call dword [eax + 0x38]
test eax, eax
je 0x10007c9b
cmp byte [esp + 0x8c], bl
je 0x10007c9b
mov edx, dword [edi]
lea eax, [esp + 0x8c]
push str.VendorSetup
push eax
mov ecx, edi
call dword [edx + 0xc]
test eax, eax
je 0x10007c9b
push ebp
mov edx, dword [edi]
push ebx
lea eax, [esp + 0x94]
push 0x104
push eax
push 1
mov ecx, edi
mov dword [esp + 0x20], 1
call dword [edx + 0x38]
test eax, eax
je 0x10007c86
cmp byte [esp + 0x90], bl
je 0x10007c86
lea ecx, [esp + 0x194]
push 0x104
push ecx
lea edx, [esp + 0x98]
push 1
push edx
call fcn.10004f30
test eax, eax
je 0x10007c5f
lea eax, [esp + 0x298]
push 0x104
push eax
lea ecx, [esp + 0x98]
push 2
push ecx
call fcn.10004f30
test eax, eax
je 0x10007c5f
lea ecx, [esp + 0x18]
xor ebp, ebp
xor edi, edi
call fcn.1000b530
lea edx, [esp + 0x194]
push str.setup32.dll
push edx
mov dword [esp + 0x3ac], ebx
call fcn.10005380
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
jne 0x10007af5
test dword [esp + 0x3bc], 0x100000
je 0x10007af5
push ebx
push str.epupdate.exe
lea ecx, [esp + 0x20]
call fcn.1000b740
mov ebp, eax
lea eax, [esp + 0x90]
push 0x104
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
lea ecx, [esp + 0x90]
push str.epupdate.exe
push ecx
call fcn.100053d0
lea edi, [esp + 0x90]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
add ecx, 0x103
push ecx
call fcn.100168e2
mov edx, dword [esp + 0x3bc]
add esp, 4
mov esi, eax
lea eax, [esp + 0x90]
push edx
push eax
push str.__s___S__NODISP__P__s_
push esi
call dword [sym.imp.USER32.dll_wsprintfA]
mov ecx, 0x11
xor eax, eax
lea edi, [esp + 0x5c]
add esp, 0x10
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x3c]
lea edx, [esp + 0x4c]
push ecx
push edx
push ebx
push ebx
push 0x20
push ebx
push ebx
push ebx
push esi
push ebx
mov dword [esp + 0x74], 0x44
mov dword [esp + 0xa0], 1
mov word [esp + 0xa4], bx
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
mov edi, eax
cmp edi, ebx
je 0x10007aea
mov eax, dword [esp + 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [esp + 0x3c]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push esi
call fcn.100168d7
add esp, 4
jmp 0x10007b4e
lea edx, [esp + 0x194]
push edx
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
cmp esi, ebx
je 0x10007b4e
push ebx
push str.epupdate.exe
lea ecx, [esp + 0x20]
call fcn.1000b740
mov ebp, eax
lea eax, [esp + 0x298]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, ebx
je 0x10007b47
mov ecx, dword [esp + 0x3b8]
mov edx, dword [esp + 0x3b4]
push 1
push ecx
push esi
push edx
call eax
mov edi, 1
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
test dword [esp + 0x3bc], 0x40000
je 0x10007c44
cmp edi, ebx
je 0x10007c44
cmp ebp, ebx
jne 0x10007c44
push 0x10007cc0
push 0x3e8
push 0x64
push ebx
call dword [sym.imp.USER32.dll_SetTimer]
mov dword [esp + 0x14], eax
mov dword [0x10023640], ebx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, eax
mov eax, dword [0x10023640]
cmp eax, ebx
jne 0x10007beb
push ebx
push ebx
lea eax, [esp + 0x28]
push ebx
push eax
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
je 0x10007be2
mov edi, dword [sym.imp.USER32.dll_TranslateMessage]
lea ecx, [esp + 0x20]
push ecx
call edi
mov ebp, dword [sym.imp.USER32.dll_DispatchMessageA]
lea edx, [esp + 0x20]
push edx
call ebp
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, esi
cmp eax, 0x1388
ja 0x10007bf7
cmp dword [0x10023640], ebx
jne 0x10007bf7
jmp 0x10007b9d
mov eax, dword [0x10023640]
cmp eax, ebx
je 0x10007b9d
mov ebp, dword [sym.imp.USER32.dll_DispatchMessageA]
mov edi, dword [sym.imp.USER32.dll_TranslateMessage]
mov eax, 1
cmp eax, ebx
mov dword [0x10023640], eax
je 0x10007c38
push ebx
push ebx
lea eax, [esp + 0x28]
push ebx
push eax
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
je 0x10007c2f
lea ecx, [esp + 0x20]
push ecx
call edi
lea edx, [esp + 0x20]
push edx
call ebp
cmp dword [0x10023640], ebx
je 0x10007c38
jmp 0x10007c05
mov eax, dword [0x10023640]
cmp eax, ebx
jne 0x10007c05
mov eax, dword [esp + 0x14]
push eax
push ebx
call dword [sym.imp.USER32.dll_KillTimer]
lea ecx, [esp + 0x18]
mov dword [esp + 0x3a4], 0xffffffff
call fcn.1000b960
mov edi, dword [esp + 0x3ac]
mov eax, dword [esp + 0x10]
mov edx, dword [edi]
push ebx
lea ecx, [esp + 0x94]
inc eax
push 0x104
push ecx
push eax
mov ecx, edi
mov dword [esp + 0x20], eax
call dword [edx + 0x38]
test eax, eax
jne 0x1000797c
mov edx, dword [edi]
push str.VendorSetup
mov ecx, edi
call dword [edx + 0x14]
test eax, eax
jne 0x10007955
pop ebp
mov ecx, dword [esp + 0x398]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x398
ret