Function at 0x10035f8
Capabilities:
Check os version

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0xb8c
mov eax, dword [0x1007004]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [ebp + 0xc]
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
xor eax, eax
lea edi, [ebp - 0xb6c]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
xor esi, esi
mov dword [ebp - 0xb48], ecx
stosd dword es:[edi], eax
cmp ecx, esi
jne 0x100363e
push 0x10017c8
call fcn.01002af7
pop ecx
jmp 0x10038d8
mov edi, 0x114
push edi
lea eax, [ebp - 0xb40]
push esi
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
lea eax, [ebp - 0xb40]
push eax
mov dword [ebp - 0xb40], edi
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
push 7
pop ecx
xor eax, eax
push esi
lea edi, [ebp - 0xb8c]
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0xb30]
push 2
push esi
push dword [ebp - 0xb48]
mov dword [ebp - 0xb88], eax
mov ax, word [0x100eac0]
mov dword [ebp - 0xb8c], 0x1c
mov word [ebp - 0xb7c], ax
call dword [sym.imp.SETUPAPI.dll_SetupOpenInfFileW]
push 0x1478
push 8
push dword [ebx]
mov dword [ebp - 0xb44], eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov esi, eax
test esi, esi
jne 0x10036d1
push 0x1001790
call fcn.01002af7
jmp 0x10038b3
push dword [ebp - 0xb48]
mov edi, 0x200
lea eax, [esi + 0x400]
push edi
push eax
call fcn.01005617
push dword [ebp - 0xb48]
lea eax, [esi + 0x800]
push edi
push eax
call fcn.01005617
add esp, 0x18
lea eax, [esi + 0x800]
push eax
call dword [sym.imp.SHLWAPI.dll_PathStripPathW]
push dword [ebp - 0xb48]
push edi
push esi
call fcn.01005617
add esp, 0xc
push esi
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
lea eax, [ebp - 0xb6c]
push eax
push 0
push 0x1001780
push dword [ebp - 0xb44]
call dword [sym.imp.SETUPAPI.dll_SetupFindFirstLineW]
test eax, eax
je 0x10038a1
lea eax, [ebp - 0xb5c]
push eax
push 0x100176c
lea eax, [ebp - 0xb6c]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupFindNextMatchLineW]
test eax, eax
jne 0x1003773
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x1001708
jmp 0x10038ad
lea eax, [ebp - 0xb4c]
push eax
push edi
lea eax, [esi + 0x1010]
push eax
push 1
lea eax, [ebp - 0xb5c]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldW]
test eax, eax
jne 0x10037a6
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x10016a8
jmp 0x10038ad
lea eax, [ebp - 0xb5c]
push eax
push 0x100168c
lea eax, [ebp - 0xb6c]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupFindNextMatchLineW]
test eax, eax
je 0x1003762
lea ecx, [ebp - 0xb4c]
push ecx
push 0x104
lea eax, [esi + 0xe08]
push eax
push 1
lea eax, [ebp - 0xb5c]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldW]
test eax, eax
je 0x1003795
lea eax, [ebp - 0xb5c]
push eax
push 0x1001678
lea eax, [ebp - 0xb6c]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupFindNextMatchLineW]
test eax, eax
je 0x1003762
lea eax, [ebp - 0xb4c]
push eax
push 0x14
lea eax, [esi + 0x1410]
push eax
push 1
lea eax, [ebp - 0xb5c]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldW]
test eax, eax
je 0x1003795
lea eax, [ebp - 0xb4c]
push eax
push 0x14
lea eax, [esi + 0x1438]
push eax
push 2
lea eax, [ebp - 0xb5c]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldW]
test eax, eax
je 0x1003795
push esi
call fcn.01003543
push esi
lea eax, [esi + 0xa08]
push edi
push eax
call fcn.01005617
add esp, 0xc
lea eax, [esi + 0xe08]
push eax
lea eax, [esi + 0xa08]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp - 0xb6c]
push eax
push 0
push 0x100165c
push dword [ebp - 0xb44]
call dword [sym.imp.SETUPAPI.dll_SetupFindFirstLineW]
test eax, eax
jne 0x10038df
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x1001600
call fcn.01002af7
pop ecx
cmp dword [ebp - 0xb44], 0
pop ecx
je 0x10038c9
push dword [ebp - 0xb44]
call dword [sym.imp.SETUPAPI.dll_SetupCloseInfFile]
test esi, esi
je 0x10038d8
push esi
push 0
push dword [ebx]
call dword [sym.imp.KERNEL32.dll_HeapFree]
xor eax, eax
jmp 0x1003ba7
lea eax, [ebp - 0xb4c]
push eax
push 0x410
lea eax, [ebp - 0xa2c]
push eax
push 1
lea eax, [ebp - 0xb6c]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldW]
test eax, eax
je 0x1003a7a
xor edi, edi
push edi
lea eax, [ebp - 0xb70]
push eax
lea eax, [ebp - 0xb4c]
push eax
push 0x104
lea eax, [ebp - 0x20c]
push eax
lea eax, [ebp - 0xb8c]
push eax
lea eax, [ebp - 0xa2c]
push eax
push dword [ebp - 0xb44]
mov dword [ebp - 0xb70], edi
call dword [sym.imp.SETUPAPI.dll_SetupDiGetActualSectionToInstallExW]
test eax, eax
je 0x1003a7a
lea eax, [ebp - 0x20c]
push eax
push 0x10015bc
call fcn.01002af7
pop ecx
pop ecx
lea eax, [ebp - 0xb5c]
push eax
push edi
lea eax, [ebp - 0x20c]
push eax
push dword [ebp - 0xb44]
call dword [sym.imp.SETUPAPI.dll_SetupFindFirstLineW]
jmp 0x1003a72
push 2
pop eax
lea ecx, [ebp - 0xb4c]
push ecx
push 0x410
lea ecx, [ebp - 0xa2c]
push ecx
mov dword [ebp - 0xb48], eax
push eax
jmp 0x1003a4f
push 0x220
push 8
push dword [ebx]
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, eax
lea eax, [ebp - 0xa2c]
push eax
push 0x100159c
call fcn.01002af7
lea eax, [ebp - 0xa2c]
push eax
push 0x104
push edi
call fcn.01005617
mov eax, dword [esi + 0x1468]
add esp, 0x14
test eax, eax
je 0x1003a17
mov eax, dword [eax + 0x21c]
mov dword [edi + 0x21c], eax
mov eax, dword [esi + 0x1468]
mov eax, dword [eax + 0x21c]
mov dword [eax + 0x218], edi
mov eax, dword [esi + 0x1468]
mov dword [eax + 0x21c], edi
and dword [edi + 0x218], 0
jmp 0x1003a30
mov dword [esi + 0x1468], edi
mov dword [edi + 0x21c], edi
mov eax, dword [esi + 0x1468]
and dword [eax + 0x218], 0
inc dword [ebp - 0xb48]
lea eax, [ebp - 0xb4c]
push eax
push 0x410
lea eax, [ebp - 0xa2c]
push eax
push dword [ebp - 0xb48]
lea eax, [ebp - 0xb5c]
push eax
call dword [sym.imp.SETUPAPI.dll_SetupGetStringFieldW]
test eax, eax
jne 0x10039a3
lea eax, [ebp - 0xb5c]
push eax
push eax
call dword [sym.imp.SETUPAPI.dll_SetupFindNextLine]
test eax, eax
jne 0x1003981
lea eax, [ebp - 0xb6c]
push eax
push eax
call dword [sym.imp.SETUPAPI.dll_SetupFindNextLine]
test eax, eax
jne 0x10038df
movzx eax, word [0x100eac0]
cmp eax, 6
je 0x1003abe
cmp eax, 9
lea eax, [ebp - 0xb6c]
push eax
push dword [ebp - 0xb44]
push esi
push ebx
je 0x1003ab7
mov eax, 0x1001594
jmp 0x1003ad2
mov eax, 0x1001588
jmp 0x1003ad2
lea eax, [ebp - 0xb6c]
push eax
push dword [ebp - 0xb44]
mov eax, 0x100157c
push esi
push ebx
call fcn.01003387
push 0x418
push 8
push dword [ebx]
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, eax
lea eax, [esi + 0x800]
push eax
push 0x104
push edi
call fcn.01005617
mov eax, dword [esi + 0x146c]
xor ecx, ecx
add esp, 0xc
cmp eax, ecx
je 0x1003b3b
mov eax, dword [eax + 0x414]
mov dword [edi + 0x414], eax
mov eax, dword [esi + 0x146c]
mov eax, dword [eax + 0x414]
mov dword [eax + 0x410], edi
mov eax, dword [esi + 0x146c]
mov dword [eax + 0x414], edi
mov dword [edi + 0x410], ecx
jmp 0x1003b53
mov dword [esi + 0x146c], edi
mov dword [edi + 0x414], edi
mov eax, dword [esi + 0x146c]
mov dword [eax + 0x410], ecx
mov eax, dword [ebx + 4]
cmp eax, ecx
je 0x1003b86
mov eax, dword [eax + 0x1474]
mov dword [esi + 0x1474], eax
mov eax, dword [ebx + 4]
mov eax, dword [eax + 0x1474]
mov dword [eax + 0x1470], esi
mov eax, dword [ebx + 4]
mov dword [eax + 0x1474], esi
mov dword [esi + 0x1470], ecx
jmp 0x1003b98
mov dword [ebx + 4], esi
mov dword [esi + 0x1474], esi
mov eax, dword [ebx + 4]
mov dword [eax + 0x1470], ecx
push dword [ebp - 0xb44]
call dword [sym.imp.SETUPAPI.dll_SetupCloseInfFile]
xor eax, eax
inc eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.010054ac
leave
ret 8