Function at 0x406430
Capabilities:
Link many functions at runtime

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x43a167
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x20
push esi
push edi
mov eax, dword [0x452020]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov dword [ebp - 0x2c], esi
lea ecx, [esi + 0x58]
mov dword [ebp - 0x30], esi
push str.advapi32.dll
call fcn.00407010
push str.setupapi.dll
lea ecx, [esi + 0x5c]
mov dword [ebp - 4], 0
call fcn.00407010
lea ecx, [esi + 0x60]
mov byte [ebp - 4], 1
push str.newdev.dll
call fcn.00407010
lea ecx, [esi + 0x64]
mov byte [ebp - 4], 2
push str.cfgmgr32.dll
call fcn.00407010
lea ecx, [esi + 0x68]
mov byte [ebp - 4], 3
push str.printui.dll
call fcn.00407010
lea ecx, [esi + 0x6c]
mov byte [ebp - 4], 4
push str.winspool.drv
call fcn.00407010
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x28]
push 0x10
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.OpenProcessToken
movups xmmword [ebp - 0x28], xmm0
mov dword [ebp - 0x14], 0
call fcn.004058a0
mov ecx, dword [esi + 0x58]
test ecx, ecx
je 0x40651c
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x40651e
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 4], eax
cmp ecx, 0x10
jb 0x406555
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x40654b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406f57
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x13
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.GetTokenInformation
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x58]
test ecx, ecx
je 0x406595
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x406597
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi], eax
cmp ecx, 0x10
jb 0x4065cd
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4065c3
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406f5c
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x34
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.ConvertStringSecurityDescriptorToSecurityDescriptorW
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x58]
test ecx, ecx
je 0x40660d
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x40660f
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 8], eax
cmp ecx, 0x10
jb 0x406646
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x40663c
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406f61
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x13
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.SetupDiGetINFClassW
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x5c]
test ecx, ecx
je 0x406686
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x406688
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0xc], eax
cmp ecx, 0x10
jb 0x4066bf
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4066b5
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406f66
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x1b
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.SetupDiCreateDeviceInfoList
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x5c]
test ecx, ecx
je 0x4066ff
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x406701
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x10], eax
cmp ecx, 0x10
jb 0x406738
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x40672e
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406f6b
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x18
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.SetupDiCreateDeviceInfoW
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x5c]
test ecx, ecx
je 0x406778
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x40677a
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x14], eax
cmp ecx, 0x10
jb 0x4067b1
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4067a7
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406f70
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x21
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.SetupDiSetDeviceRegistryPropertyW
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x5c]
test ecx, ecx
je 0x4067f1
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x4067f3
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x18], eax
cmp ecx, 0x10
jb 0x40682a
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x406820
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406f75
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x19
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push 0x44a8cc
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x5c]
test ecx, ecx
je 0x40686a
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x40686c
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x1c], eax
cmp ecx, 0x10
jb 0x4068a3
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x406899
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406f7a
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x16
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push 0x44a8e8
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x5c]
test ecx, ecx
je 0x4068e3
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x4068e5
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x20], eax
cmp ecx, 0x10
jb 0x40691c
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x406912
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406f7f
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x15
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push 0x44a900
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x5c]
test ecx, ecx
je 0x40695c
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x40695e
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x24], eax
cmp ecx, 0x10
jb 0x406995
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x40698b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406f84
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x1f
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push 0x44a918
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x5c]
test ecx, ecx
je 0x4069d5
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x4069d7
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x28], eax
cmp ecx, 0x10
jb 0x406a0e
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x406a04
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406f89
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x21
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push 0x44a938
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x5c]
test ecx, ecx
je 0x406a4e
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x406a50
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x2c], eax
cmp ecx, 0x10
jb 0x406a87
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x406a7d
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406f8e
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x1d
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push 0x44a95c
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x5c]
test ecx, ecx
je 0x406ac7
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x406ac9
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x30], eax
cmp ecx, 0x10
jb 0x406b00
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x406af6
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406f93
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x10
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.DiInstallDriverW
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x60]
test ecx, ecx
je 0x406b40
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x406b42
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x34], eax
cmp ecx, 0x10
jb 0x406b79
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x406b6f
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406f98
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x12
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.DiUninstallDriverW
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x60]
test ecx, ecx
je 0x406bb9
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x406bbb
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x38], eax
cmp ecx, 0x10
jb 0x406bf2
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x406be8
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406f9d
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x22
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.UpdateDriverForPlugAndPlayDevicesW
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x60]
test ecx, ecx
je 0x406c32
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x406c34
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x3c], eax
cmp ecx, 0x10
jb 0x406c6b
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x406c61
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406fa2
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x14
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push 0x44a9c8
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x64]
test ecx, ecx
je 0x406cab
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x406cad
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x40], eax
cmp ecx, 0x10
jb 0x406ce4
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x406cda
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406fa7
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x15
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.CM_Locate_DevNode_ExW
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x64]
test ecx, ecx
je 0x406d24
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x406d26
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x44], eax
cmp ecx, 0x10
jb 0x406d5d
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x406d53
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406fac
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x19
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.CM_Reenumerate_DevNode_Ex
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x64]
test ecx, ecx
je 0x406d9d
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x406d9f
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x48], eax
cmp ecx, 0x10
jb 0x406dd6
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x406dcc
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406fb1
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0xd
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.PrintUIEntryW
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x68]
test ecx, ecx
je 0x406e16
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x406e18
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x4c], eax
cmp ecx, 0x10
jb 0x406e4f
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x406e45
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406fb6
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x1b
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.UploadPrinterDriverPackageW
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x6c]
test ecx, ecx
je 0x406e8f
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x406e91
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x50], eax
cmp ecx, 0x10
jb 0x406ec8
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x406ebe
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406fbb
push ecx
push edx
call fcn.0041d595
add esp, 8
push 0x20
xorps xmm0, xmm0
mov dword [ebp - 0x18], 0
push str.InstallPrinterDriverFromPackageW
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x14], 0
movups xmmword [ebp - 0x28], xmm0
call fcn.004058a0
mov ecx, dword [esi + 0x6c]
test ecx, ecx
je 0x406f08
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
jmp 0x406f0a
xor eax, eax
mov ecx, dword [ebp - 0x14]
mov dword [esi + 0x54], eax
cmp ecx, 0x10
jb 0x406f41
mov edx, dword [ebp - 0x28]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x406f37
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406fc0
push ecx
push edx
call fcn.0041d595
add esp, 8
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
call fcn.004268a9
int3