Function at 0x407920
Capabilities:
Check os version
Identify system language via api
Query or enumerate registry value
Set registry value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x1ca8
call fcn.00426170
mov eax, dword [0x43b010]
xor eax, esp
mov dword [esp + 0x1ca4], eax
mov eax, dword [ebp + 8]
push esi
push edi
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x18], eax
lea eax, [esp + 0x1280]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [esp + 0x1280]
push 0x5c
push eax
call fcn.00417db3
add esp, 8
test eax, eax
je 0x40797e
xor ecx, ecx
mov word [eax], cx
lea eax, [esp + 0x1280]
push eax
push 0x30
call dword [sym.imp.SETUPAPI.dll_SetupAddToSourceListW]
lea eax, [esp + 0x24]
mov dword [esp + 0x24], 0
push eax
push 0x435138
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyW]
test eax, eax
jne 0x4079db
push 4
lea eax, [esp + 0xc]
mov dword [esp + 0xc], 0x200
push eax
push 4
push 0
push str.MystDeviceVerify
push dword [esp + 0x38]
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push dword [esp + 0x24]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edi, dword [sym.imp.KERNEL32.dll_LoadLibraryW]
push str.Install.dll
call edi
mov dword [0x43e5b4], eax
test eax, eax
je 0x407ae2
push str.IsWow64Process
push str.kernel32
mov dword [esp + 0x1c], 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
test esi, esi
je 0x407a28
lea eax, [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call esi
cmp dword [esp + 0x14], 0
je 0x407afa
push 0x208
lea eax, [esp + 0xe7c]
push 0
push eax
call fcn.0041a7b0
add esp, 0xc
lea eax, [esp + 0x368]
push 0x208
push 0
push eax
call fcn.0041a7b0
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movzx esi, ax
mov edx, 0x1f8
lea eax, [esp + 0xe78]
mov ecx, esi
push eax
call fcn.00404d70
add esp, 4
lea eax, [esp + 0x368]
mov edx, 0x16
mov ecx, esi
push eax
call fcn.00404d70
mov eax, esi
mov ecx, 1
and eax, 0x3ff
add esp, 4
cmp cx, ax
je 0x407ab8
mov ecx, 0xd
cmp cx, ax
je 0x407ab8
push esi
push 0
jmp 0x407abe
push esi
push 0x100000
lea eax, [esp + 0x370]
push eax
lea eax, [esp + 0xe84]
push eax
push 0
call dword [sym.imp.USER32.dll_MessageBoxExW]
push dword [0x43e5b4]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
xor eax, eax
pop edi
pop esi
mov ecx, dword [esp + 0x1ca4]
xor ecx, esp
call fcn.0041729b
mov esp, ebp
pop ebp
ret 0x10
mov esi, dword [esp + 0x18]
test esi, esi
je 0x407b7b
push 0x434f04
push esi
call fcn.004179d0
add esp, 8
test eax, eax
je 0x407b7b
mov eax, dword [0x43e928]
xor esi, esi
and eax, 0x3ff
dec eax
je 0x407b28
sub eax, 0xc
jne 0x407b2d
mov esi, 1
push 0
push 0x408990
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
mov ecx, 0x25a
test esi, esi
mov eax, 0x66
cmovne eax, ecx
push eax
push dword [0x43e5b4]
call dword [sym.imp.USER32.dll_DialogBoxParamW]
push dword [0x43e5b4]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
xor eax, eax
pop edi
pop esi
mov ecx, dword [esp + 0x1ca4]
xor ecx, esp
call fcn.0041729b
mov esp, ebp
pop ebp
ret 0x10
push str.RICHED20.DLL
call edi
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x14], eax
xor eax, eax
push 0x206
push eax
mov word [esp + 0x578], ax
lea eax, [esp + 0x57a]
push eax
mov dword [0x43e5b0], ecx
call fcn.0041a7b0
add esp, 0xc
xor eax, eax
mov word [esp + 0x1488], ax
push 0x81e
push eax
lea eax, [esp + 0x1492]
push eax
call fcn.0041a7b0
add esp, 0xc
xor eax, eax
mov word [esp + 0x168], ax
push 0x1fe
push eax
lea eax, [esp + 0x172]
push eax
call fcn.0041a7b0
add esp, 0xc
xor eax, eax
mov word [esp + 0xc78], ax
push 0x1fe
push eax
lea eax, [esp + 0xc82]
push eax
call fcn.0041a7b0
add esp, 0xc
mov dword [esp + 0x64], 7
xor eax, eax
mov dword [esp + 0x60], 0
mov word [esp + 0x50], ax
lea eax, [esp + 0x1488]
push 0x410
push eax
push dword [esp + 0x18]
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
cmp word [esp + 0x1488], 0
jne 0x407c4d
xor ecx, ecx
jmp 0x407c66
lea ecx, [esp + 0x1488]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x407c57
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [esp + 0x148c]
push eax
lea ecx, [esp + 0x58]
call fcn.0040adb0
xor eax, eax
push 0x1fe
push eax
mov word [esp + 0x1088], ax
lea eax, [esp + 0x108a]
push eax
call fcn.0041a7b0
add esp, 0xc
xor eax, eax
mov word [esp + 0x778], ax
push 0x1fe
push eax
lea eax, [esp + 0x782]
push eax
call fcn.0041a7b0
add esp, 0xc
xor eax, eax
mov word [esp + 0x68], ax
push 0xfe
push eax
lea eax, [esp + 0x72]
push eax
call fcn.0041a7b0
add esp, 0xc
xor eax, eax
mov word [esp + 0x978], ax
push 0xfe
push eax
lea eax, [esp + 0x982]
push eax
call fcn.0041a7b0
add esp, 0xc
xor eax, eax
mov word [esp + 0xa78], ax
push 0x1fe
push eax
lea eax, [esp + 0xa82]
push eax
call fcn.0041a7b0
mov ecx, dword [0x43e928]
lea eax, [esp + 0x984]
add esp, 0xc
mov edx, 1
push eax
call fcn.00404d70
mov ecx, dword [0x43e928]
lea eax, [esp + 0x6c]
add esp, 4
mov edx, 4
push eax
call fcn.00404d70
add esp, 4
push 0x3c
push 0
push 0x43ebd0
call fcn.0041a7b0
lea eax, [esp + 0x984]
mov dword [0x43ebec], 0
mov dword [0x43ebd0], eax
add esp, 0xc
lea eax, [esp + 0x68]
mov dword [0x43ebf4], 0
mov dword [0x43ebd8], eax
lea eax, [esp + 0x1080]
mov dword [0x43ebd4], eax
lea eax, [esp + 0x1488]
push 0
mov dword [0x43ebe8], eax
lea eax, [esp + 0xa7c]
push eax
push 0xffffffffffffffff
push esi
push 1
mov dword [0x43ebf8], 0
mov dword [0x43ebfc], 0xffff
push 0
mov esi, dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
call esi
lea eax, [eax*2 + 2]
push eax
lea eax, [esp + 0xa7c]
push eax
mov eax, dword [esp + 0x20]
push 0xffffffffffffffff
push eax
push 1
push 0
call esi
lea eax, [esp + 0xa78]
mov dword [0x43ebe0], eax
test eax, eax
je 0x407ef8
push 0x20
call fcn.00414540
add esp, 4
test eax, eax
je 0x407e12
push dword [0x43ebe0]
mov ecx, eax
call fcn.0040c490
jmp 0x407e14
xor eax, eax
mov dword [0x43ec08], eax
cmp dword [eax + 0x18], 1
jne 0x407ef8
cmp dword [eax + 0x1c], 4
jne 0x407ef8
lea eax, [esp + 0x368]
mov dword [esp + 0x368], 0x114
push eax
mov esi, 1
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
je 0x407e5b
cmp dword [esp + 0x36c], 6
sbb eax, eax
and esi, eax
mov eax, dword [0x43ec08]
cmp dword [eax + 4], 1
jne 0x407eb7
cmp dword [eax + 8], 1
jne 0x407eb7
test esi, esi
jne 0x407eb7
cmp dword [eax + 0x10], 1
jne 0x407e8c
call fcn.00406af0
test eax, eax
mov edi, 1
mov eax, dword [0x43ec08]
cmove esi, edi
jmp 0x407e91
mov edi, 1
cmp dword [eax + 0xc], 1
jne 0x407ea6
mov ecx, 0x43ebd0
call fcn.00406bc0
test eax, eax
cmove esi, edi
push dword [0x43e5b4]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x4088a8
call fcn.00404e90
neg eax
push 0
sbb esi, esi
and esi, 0x1f4
push 0x408990
add esi, 0x66
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
movzx eax, si
push eax
push dword [0x43e5b4]
call dword [sym.imp.USER32.dll_DialogBoxParamW]
push dword [0x43e5b4]
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x4088a6
push str.PRINTUI.DLL
call edi
mov esi, dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov edi, eax
mov dword [esp + 0x2c], edi
test edi, edi
je 0x408898
push str.PrintUIEntryW
push edi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x408895
mov eax, dword [0x43ebe0]
test eax, eax
je 0x407f86
push 0x434e48
push eax
call fcn.00417e59
add esp, 8
test eax, eax
je 0x407f86
mov eax, dword [0x43ec08]
cmp dword [eax + 0x1c], 1
je 0x407f82
call fcn.00404e90
neg eax
push 0
sbb esi, esi
and esi, 0x1f4
push 0x408990
add esi, 0x66
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
movzx eax, si
push eax
push dword [0x43e5b4]
call dword [sym.imp.USER32.dll_DialogBoxParamW]
jmp 0x40888f
push 1
jmp 0x407f88
push 0
lea eax, [esp + 0x574]
push eax
lea edx, [esp + 0x1490]
call fcn.00407650
add esp, 8
test al, al
je 0x40888f
lea eax, [esp + 0x570]
push eax
lea eax, [esp + 0x16c]
push pe_nt_image_headers32
push eax
call fcn.004181fb
mov ecx, dword [0x43ebe0]
lea edx, [esp + 0x57c]
add esp, 0xc
call fcn.00407370
mov esi, eax
lea eax, [esp + 0x570]
mov dword [0x43ebdc], eax
mov dword [0x43ebe4], eax
xor eax, eax
mov dword [0x43ebe0], esi
mov dword [esp + 0x20], eax
test esi, esi
je 0x408179
lea ecx, [ecx]
push 0x434f4c
push esi
call fcn.00417e59
mov esi, eax
add esp, 8
test esi, esi
je 0x408179
push 4
push str._npf
push esi
call fcn.0041817a
add esp, 0xc
test eax, eax
je 0x408068
push 3
push 0x434dcc
push esi
call fcn.0041817a
add esp, 0xc
test eax, eax
je 0x408068
push 3
push 0x434f54
push esi
call fcn.0041817a
add esp, 0xc
test eax, eax
je 0x408068
push 6
push str._nhpes
push esi
call fcn.0041817a
add esp, 0xc
test eax, eax
jne 0x40806d
add esi, 2
jmp 0x408000
mov eax, dword [0x43ed6c]
test al, 1
jne 0x4080a0
push dword [0x43ebe0]
or eax, 1
mov ecx, 0x43ed70
mov dword [0x43ed6c], eax
call fcn.0040a170
push 0x42b680
call fcn.00417d9e
mov eax, dword [0x43ed6c]
add esp, 4
add esi, 4
mov edi, 0x43ed40
test al, 2
jne 0x4080c9
or eax, 2
mov ecx, edi
push esi
mov dword [0x43ed6c], eax
call fcn.0040a170
push 0x42b620
call fcn.00417d9e
add esp, 4
push ecx
push 0x434e50
mov ecx, edi
call fcn.0040a580
mov ecx, eax
cmp ecx, 0xffffffff
je 0x4080ef
mov eax, dword [0x43ed50]
cmp ecx, eax
jae 0x4080ef
push eax
push ecx
mov ecx, edi
call fcn.0040a4d0
push ecx
push 0x434f6c
mov ecx, edi
call fcn.0040a580
mov esi, eax
cmp esi, 0xffffffff
jne 0x408112
push ecx
push 0x434f70
mov ecx, edi
call fcn.0040a580
mov esi, eax
push 0xffffffffffffffff
push 0x434f6c
mov ecx, edi
inc esi
call fcn.0040a5d0
cmp eax, 0xffffffff
jne 0x408133
push eax
push 0x434f70
mov ecx, edi
call fcn.0040a5d0
dec eax
cmp esi, 0xffffffff
je 0x40815a
cmp eax, 0xffffffff
je 0x40815a
mov ecx, dword [0x43ed50]
cmp esi, ecx
jae 0x40815a
cmp eax, ecx
jae 0x40815a
push eax
push esi
push 0x43ed40
mov ecx, edi
call fcn.0040a370
cmp dword [0x43ed54], 8
mov esi, 1
mov dword [esp + 0x20], esi
cmovae edi, dword [0x43ed40]
mov dword [0x43ebdc], edi
jmp 0x40817b
xor esi, esi
mov ecx, dword [0x43e928]
lea eax, [esp + 0x778]
push eax
mov edx, 2
call fcn.00404d70
add esp, 4
lea eax, [esp + 0x168]
push eax
lea eax, [esp + 0x77c]
push eax
lea eax, [esp + 0x1088]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
mov dword [esp + 0x10], 0
lea ecx, [esp + 0x38]
push 0x434f88
call fcn.0040a170
mov ecx, dword [0x43ebe0]
test ecx, ecx
je 0x40821d
cmp dword [esp + 0x4c], 8
lea eax, [esp + 0x38]
cmovae eax, dword [esp + 0x38]
push eax
push ecx
call fcn.00417e59
add esp, 8
test eax, eax
je 0x40821d
mov ecx, dword [esp + 0x48]
movzx eax, word [eax + ecx*2]
xor ecx, ecx
cmp cx, ax
je 0x40820c
mov ecx, 0x20
cmp cx, ax
jne 0x40821d
mov esi, 1
mov dword [esp + 0x10], 1
mov dword [esp + 0x20], esi
push ecx
lea edx, [esp + 0x1c]
lea ecx, [esp + 0x34]
call fcn.00404200
add esp, 4
mov dword [esp + 0xc], eax
test eax, eax
je 0x4083e8
xor ecx, ecx
mov dword [esp + 0x28], ecx
cmp dword [esp + 0x18], ecx
jbe 0x4083e8
mov edi, eax
add edi, 4
nop
mov eax, dword [edi + 0xc]
lea ecx, [esp + 0x570]
lea ebx, [ebx]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x408286
test dx, dx
je 0x408282
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x408286
add eax, 4
add ecx, 4
test dx, dx
jne 0x408260
xor eax, eax
jmp 0x40828b
sbb eax, eax
or eax, 1
test eax, eax
jne 0x408293
test esi, esi
je 0x4082dc
mov eax, dword [edi]
lea ecx, [esp + 0x168]
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4082c6
test dx, dx
je 0x4082c2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4082c6
add eax, 4
add ecx, 4
test dx, dx
jne 0x4082a0
xor eax, eax
jmp 0x4082cb
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40836c
cmp esi, 1
jne 0x40836c
cmp dword [0x43ebe0], 0
mov esi, 1
je 0x4082fc
mov eax, dword [0x43ec08]
cmp dword [eax + 0x1c], esi
jne 0x4082fc
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x40834f
push 0
lea eax, [esp + 0xc]
push eax
push dword [edi]
call dword [sym.imp.WINSPOOL.DRV_OpenPrinterW]
test eax, eax
je 0x40834f
lea eax, [esp + 0x34]
mov dword [esp + 0x1c], 0
push eax
push 4
lea eax, [esp + 0x24]
push eax
push 0
push str.StaticMode
push dword [esp + 0x1c]
call dword [sym.imp.WINSPOOL.DRV_GetPrinterDataW]
test eax, eax
jne 0x408345
cmp dword [esp + 0x1c], eax
je 0x408345
cmp dword [esp + 0x10], eax
cmove esi, eax
push dword [esp + 8]
call dword [sym.imp.WINSPOOL.DRV_ClosePrinter]
mov edx, 1
mov dword [0x43ebf4], esi
mov ecx, str.HPPrtInit
call fcn.00411830
test esi, esi
jne 0x408384
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x28]
add edi, 0x54
inc edx
mov dword [esp + 0x28], edx
cmp edx, dword [esp + 0x18]
jb 0x408250
jmp 0x4083e8
mov ecx, dword [0x43e928]
lea eax, [esp + 0x778]
push eax
mov edx, 6
call fcn.00404d70
imul esi, dword [esp + 0x2c], 0x54
lea eax, [esp + 0x77c]
add esp, 4
add esi, dword [esp + 0xc]
push dword [esi + 4]
push eax
lea eax, [esp + 0xc80]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [esp + 0xc78]
mov dword [0x43ebd8], eax
lea eax, [esp + 0x168]
push dword [esi + 4]
push pe_nt_image_headers32
push eax
call fcn.004181fb
add esp, 0xc
mov eax, dword [esp + 0x18]
mov edi, dword [sym.imp.USER32.dll_DialogBoxParamW]
mov dword [0x43ec04], eax
mov eax, dword [esp + 0xc]
mov dword [0x43ec00], eax
call fcn.00404e90
neg eax
sbb esi, esi
mov eax, dword [0x43ebe0]
and esi, 0x1f4
add esi, 0x67
test eax, eax
je 0x408427
mov edx, dword [0x43ec08]
cmp dword [edx + 4], 0
jne 0x408458
push 0x43ebd0
push 0x408ce0
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
movzx eax, si
push eax
push dword [0x43e5b4]
call edi
cmp eax, 1
jne 0x40863f
mov edx, dword [0x43ec08]
mov eax, dword [0x43ebe0]
mov edi, dword [edx + 0x1c]
cmp edi, 2
je 0x4085b7
test eax, eax
je 0x408471
cmp edi, 1
je 0x4085b7
cmp dword [esp + 0x10], 0
jne 0x4085b7
call fcn.00404e90
mov esi, eax
neg esi
sbb esi, esi
and esi, 0x1f4
add esi, 0x68
cmp edi, 4
jne 0x4084b7
cmp dword [edx + 0x10], 1
jne 0x4084b7
mov ecx, dword [0x43e928]
lea eax, [esp + 0x68]
push eax
lea edx, [edi + 0x37]
call fcn.00404d70
mov edx, dword [0x43ec08]
add esp, 4
cmp dword [edx + 0x1c], 4
jne 0x4084db
cmp dword [edx + 0xc], 1
jne 0x4084db
mov ecx, dword [0x43e928]
lea eax, [esp + 0x68]
push eax
mov edx, 0x39
call fcn.00404d70
add esp, 4
push 0x43ebd0
push 0x408f20
call dword [sym.imp.USER32.dll_GetDesktopWindow]
mov edi, dword [sym.imp.USER32.dll_DialogBoxParamW]
push eax
movzx eax, si
push eax
push dword [0x43e5b4]
call edi
cmp eax, 1
je 0x40851d
cmp eax, 0x70
jne 0x40863f
mov eax, dword [0x43ec08]
mov dword [eax + 0x1c], 0
jmp 0x408400
mov edx, dword [0x43ec08]
cmp dword [edx + 0x1c], 3
jne 0x4085bd
cmp dword [0x43ebf4], 0
jne 0x4085bd
push 0
lea eax, [esp + 0xc]
push eax
lea eax, [esp + 0x170]
push eax
call dword [sym.imp.WINSPOOL.DRV_OpenPrinterW]
test eax, eax
je 0x4085af
mov ecx, dword [0x43e928]
lea eax, [esp + 0x778]
push eax
mov edx, 6
mov dword [0x43ebf4], 1
call fcn.00404d70
add esp, 4
lea eax, [esp + 0x168]
push eax
lea eax, [esp + 0x77c]
push eax
lea eax, [esp + 0xc80]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea eax, [esp + 0xc78]
mov dword [0x43ebd8], eax
push dword [esp + 8]
call dword [sym.imp.WINSPOOL.DRV_ClosePrinter]
mov edx, dword [0x43ec08]
jmp 0x4085bd
mov edi, dword [sym.imp.USER32.dll_DialogBoxParamW]
cmp dword [edx + 0x1c], 4
jne 0x4085f8
cmp dword [edx + 0x10], 1
jne 0x4085e7
mov ecx, dword [0x43e928]
lea eax, [esp + 0x68]
push eax
mov edx, 0x3b
call fcn.00404d70
mov edx, dword [0x43ec08]
add esp, 4
cmp dword [edx + 0x1c], 4
jne 0x4085f8
cmp dword [edx + 0xc], 1
mov edx, 0x39
je 0x4085fd
mov edx, 4
mov ecx, dword [0x43e928]
lea eax, [esp + 0x68]
push eax
call fcn.00404d70
add esp, 4
call fcn.00404e90
neg eax
push 0x43ebd0
sbb esi, esi
and esi, 0x1f4
push 0x4095a0
add esi, 0x69
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
movzx eax, si
push eax
push dword [0x43e5b4]
call edi
xor edx, edx
mov ecx, str.HPPrtInit
call fcn.00411830
mov ecx, str.HPPrtInit
call fcn.00411c50
push dword [esp + 0xc]
call dword [sym.imp.KERNEL32.dll_GlobalFree]
cmp dword [0x43ebfc], 0
jne 0x408882
mov esi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
lea eax, [esp + 0xc]
push eax
push 0xf003f
push 0
push str.SoftwareMicrosoftWindows_NTCurrentVersionWindows
push 0x80000001
call esi
test eax, eax
jne 0x408882
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
lea eax, [esp + 8]
push eax
lea eax, [esp + 0x36c]
mov dword [esp + 0xc], 0x200
push eax
push 0
push 0
push str.Device
push dword [esp + 0x20]
call edi
test eax, eax
jne 0x408876
push dword [0x43ebdc]
lea eax, [esp + 0x36c]
push eax
call fcn.00417e59
add esp, 8
test eax, eax
mov eax, dword [0x43ebe0]
jne 0x408845
test eax, eax
je 0x408876
push 0x434f54
push eax
call fcn.00417e59
add esp, 8
test eax, eax
jne 0x408876
mov ecx, dword [0x43ebdc]
lea edx, [esp + 0x168]
sub edx, ecx
movzx eax, word [ecx]
lea ecx, [ecx + 2]
mov word [edx + ecx - 2], ax
test ax, ax
jne 0x408714
lea eax, [esp + 0x1c]
push eax
push 0xf003f
push 0
push str.SoftwareMicrosoftWindows_NTCurrentVersionDevices
push 0x80000001
call esi
test eax, eax
jne 0x4087d8
lea eax, [esp + 8]
push eax
lea eax, [esp + 0x36c]
push eax
push 0
push 0
lea eax, [esp + 0x178]
push eax
push dword [esp + 0x30]
call edi
test eax, eax
jne 0x4087ca
lea edi, [esp + 0x168]
add edi, 0xfffffffe
mov ax, word [edi + 2]
lea edi, [edi + 2]
test ax, ax
jne 0x408771
mov eax, dword [0x43507c]
lea edx, [esp + 0x368]
mov dword [edi], eax
mov esi, edx
lea ecx, [ecx]
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x408790
lea edi, [esp + 0x168]
sub edx, esi
add edi, 0xfffffffe
jmp 0x4087b0
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x4087b0
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]
push dword [esp + 0x1c]
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call esi
jmp 0x408800
lea edi, [esp + 0x168]
add edi, 0xfffffffe
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x4087e2
mov ecx, 8
mov esi, 0x435080
rep movsd dword es:[edi], dword [esi]
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [esp + 0x168]
lea edx, [ecx + 2]
lea ebx, [ebx]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x408810
sub ecx, edx
sar ecx, 1
lea eax, [ecx*2 + 2]
push eax
lea eax, [esp + 0x16c]
push eax
mov eax, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push 1
push 0
push str.Device
push dword [esp + 0x20]
call eax
jmp 0x40887c
test eax, eax
je 0x408876
push 0x434f54
push eax
call fcn.00417e59
add esp, 8
test eax, eax
je 0x408876
mov eax, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push 2
push 0x4349f0
push 1
push 0
push str.Device
push dword [esp + 0x20]
call eax
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push dword [esp + 0xc]
call esi
lea ecx, [esp + 0x38]
call fcn.0040a220
mov edi, dword [esp + 0x2c]
mov esi, dword [sym.imp.KERNEL32.dll_FreeLibrary]
push edi
call esi
push dword [0x43e5b4]
call esi
push dword [esp + 0x14]
call esi
xor esi, esi
cmp dword [esp + 0x64], 8
jb 0x4088bb
push dword [esp + 0x50]
call fcn.004144c0
add esp, 4
mov ecx, dword [esp + 0x1cac]
mov eax, esi
pop edi
pop esi
xor ecx, esp
call fcn.0041729b
mov esp, ebp
pop ebp
ret 0x10