Function at 0x401020
Capabilities:
Check if file exists
Create process on windows
Get common file path
Get file attributes
Identify system language via api

Disassembly:
sub esp, 0x418
mov dl, byte [0x415688]
push ebx
push esi
push edi
mov ecx, 0x7c
xor eax, eax
lea edi, [esp + 0x119]
mov byte [esp + 0x118], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
xor ebx, ebx
mov word [esp + 0xd], ax
push str.IsWow64Process
push str.kernel32
mov byte [esp + 0x14], dl
mov byte [esp + 0x17], al
mov dword [esp + 0x18], ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
cmp esi, ebx
je 0x401260
lea ecx, [esp + 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call esi
cmp dword [esp + 0x10], ebx
je 0x401260
mov dl, byte [0x415688]
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x15]
mov byte [esp + 0x14], dl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x14]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov edi, str.DRVSETUP64DRVSETUP64.EXE
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x14]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x430]
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
jle 0x4011fe
mov ax, word [esi]
lea ecx, [esp + 0xc]
push 0x40d120
push ecx
mov word [esp + 0x14], ax
call fcn.0040460b
add esp, 8
test eax, eax
je 0x4011d0
lea edx, [esp + 0xc]
push 0x40d11c
push edx
call fcn.0040460b
add esp, 8
test eax, eax
je 0x4011d0
lea eax, [esp + 0xc]
push 0x40d118
push eax
call fcn.0040460b
add esp, 8
test eax, eax
je 0x4011d0
lea ecx, [esp + 0xc]
push 0x40d114
push ecx
call fcn.0040460b
add esp, 8
test eax, eax
je 0x4011d0
lea edx, [esp + 0xc]
push 0x40d110
push edx
call fcn.0040460b
add esp, 8
test eax, eax
je 0x4011c5
lea eax, [esp + 0xc]
push 0x40d10c
push eax
call fcn.0040460b
add esp, 8
test eax, eax
je 0x4011c5
lea ecx, [esp + 0xc]
push 0x40d108
push ecx
call fcn.0040460b
add esp, 8
test eax, eax
je 0x4011c5
lea edx, [esp + 0xc]
push 0x40d104
push edx
call fcn.0040460b
add esp, 8
test eax, eax
jne 0x4011fe
lea edx, [esp + 0x14]
mov edi, 0x40d100
jmp 0x4011d9
lea edx, [esp + 0x14]
mov edi, 0x40d0fc
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea eax, [esp + 0x14]
push 1
push eax
call dword [sym.imp.KERNEL32.dll_WinExec]
cmp eax, 0x1f
ja 0x401252
mov al, byte [0x410ff4]
push 0x30
test al, al
push str.DriverSetup
jne 0x401240
mov ecx, dword [0x410e80]
push str.Not_found_install_application_please_install_by_hand_
push ecx
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
xor eax, eax
pop ebx
add esp, 0x418
ret 0x10
mov edx, dword [0x410e80]
push 0x40d09c
push edx
call dword [sym.imp.USER32.dll_MessageBoxA]
pop edi
pop esi
xor eax, eax
pop ebx
add esp, 0x418
ret 0x10
mov al, byte [0x415688]
mov ecx, 0x40
mov byte [esp + 0x14], al
xor eax, eax
lea edi, [esp + 0x15]
push ebp
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea ecx, [esp + 0x18]
mov dword [0x411000], ebx
mov ebx, dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
push 0x104
push ecx
stosb byte es:[edi], al
call ebx
mov edi, str.SYSWOW64
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x18]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
mov ebp, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
and ecx, 3
lea eax, [esp + 0x18]
rep movsb byte es:[edi], byte [esi]
push eax
call ebp
cmp eax, 0xffffffff
je 0x401323
test al, 0x10
je 0x401323
mov edi, str.Program_Files__x86_
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x18]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov byte [esp + 0x1b], 0
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x18]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call ebp
cmp eax, 0xffffffff
je 0x401323
test al, 0x10
je 0x401323
mov dword [0x411000], 1
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
cmp ax, 0x804
lea edx, [esp + 0x310]
sete cl
push edx
push str..inf
mov byte [0x410ff4], cl
call fcn.00404412
add esp, 8
cmp eax, 0xffffffff
pop ebp
jne 0x40139d
mov al, byte [0x410ff4]
test al, al
jne 0x40137f
mov edi, str.No_found_.inf_
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, 0x413d04
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
jmp 0x4014d1
mov edi, 0x40d050
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, 0x413d04
jmp 0x4014ca
push 0x411004
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov edi, 0x40d04c
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, 0x411004
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x320]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, 0x411004
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x118]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
push 0x411004
call fcn.00402da0
lea edi, [esp + 0x120]
or ecx, 0xffffffff
xor eax, eax
add esp, 8
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, 0x413d04
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.00403b30
cmp al, 1
jne 0x4014d6
push 0x64
push 0x410f88
call ebx
mov edi, 0x410f88
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, 0x413c00
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.inf_
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, 0x413c00
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.infdrvidx.bin
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edx, ecx
mov edi, 0x410f88
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
dec edi
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x430]
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
jle 0x4015dd
mov ax, word [esi]
lea ecx, [esp + 0xc]
push 0x40d120
push ecx
mov word [esp + 0x14], ax
call fcn.0040460b
add esp, 8
test eax, eax
je 0x4015c8
lea edx, [esp + 0xc]
push 0x40d11c
push edx
call fcn.0040460b
add esp, 8
test eax, eax
je 0x4015c8
lea eax, [esp + 0xc]
push 0x40d118
push eax
call fcn.0040460b
add esp, 8
test eax, eax
je 0x4015c8
lea ecx, [esp + 0xc]
push 0x40d114
push ecx
call fcn.0040460b
add esp, 8
test eax, eax
je 0x4015c8
lea edx, [esp + 0xc]
push 0x40d110
push edx
call fcn.0040460b
add esp, 8
test eax, eax
je 0x4015b0
lea eax, [esp + 0xc]
push 0x40d10c
push eax
call fcn.0040460b
add esp, 8
test eax, eax
je 0x4015b0
lea ecx, [esp + 0xc]
push 0x40d108
push ecx
call fcn.0040460b
add esp, 8
test eax, eax
je 0x4015b0
lea edx, [esp + 0xc]
push 0x40d104
push edx
call fcn.0040460b
add esp, 8
test eax, eax
jne 0x4015cf
push 2
call fcn.00402560
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 0x418
ret 0x10
push 0
call fcn.00401fe0
pop edi
pop esi
xor eax, eax
pop ebx
add esp, 0x418
ret 0x10
mov esi, dword [esp + 0x428]
mov dword [0x410ff0], esi
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
push 0
push 0x401620
push 0
push 0x81
push esi
call dword [sym.imp.USER32.dll_DialogBoxParamA]
pop edi
pop esi
mov eax, 1
pop ebx
add esp, 0x418
ret 0x10