Function at 0x41d8a0
Capabilities:
Query or enumerate registry value
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x21c
mov eax, dword [0x45b480]
xor eax, esp
mov dword [esp + 0x218], eax
mov eax, dword [ebp + 0x14]
push ebx
mov dword [esp + 0x38], eax
xor ebx, ebx
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x34], eax
lea eax, [esp + 0x1a8]
mov dword [esp + 0x2c], ebx
push esi
push edi
mov edi, dword [ebp + 0xc]
mov esi, ecx
mov dword [esp + 0x1d4], eax
lea ecx, [esp + 0x1b0]
lea eax, [esp + 0x1f8]
mov dword [esp + 0x38], edx
push eax
mov dword [esp + 0x2c], esi
mov dword [esp + fcn.00426cd0], 0x455da8
mov dword [esp + 0x1b8], esi
mov dword [esp + 0x220], ebx
call fcn.00426cd0
mov ecx, dword [esp + 0x1d4]
mov dword [esp + 0x21c], eax
test ecx, ecx
je 0x41d940
mov edx, dword [ecx]
lea eax, [esp + 0x1b0]
cmp ecx, eax
setne al
movzx eax, al
push eax
call dword [edx + 0x10]
mov dword [esp + 0x48], ebx
call fcn.004242a0
mov dword [esp + 0x44], eax
mov dword [esp + 0x20], ebx
cmp dword [ebp + 0x10], ebx
je 0x41da55
add edi, 4
mov dword [esp + 0x18], edi
push 0x24
push edi
call fcn.00444eb0
add esp, 8
lea ecx, [esp + 0x10]
push eax
push edi
call fcn.00422470
mov ecx, eax
call fcn.00422390
mov esi, dword [esp + 0x44]
mov dword [esp + 0x1c], eax
mov edi, dword [esi + 4]
cmp byte [edi + 0xd], bl
jne 0x41d9e6
mov edi, edi
mov ecx, dword [eax]
test ecx, ecx
je 0x41f43d
push ecx
push dword [edi + 0x10]
call dword [sym.imp.msvcrt.dll__mbscmp]
add esp, 8
test eax, eax
jns 0x41d9b0
mov edi, dword [edi + 8]
jmp 0x41d9b4
mov esi, edi
mov edi, dword [edi]
mov eax, dword [esp + 0x1c]
cmp byte [edi + 0xd], bl
je 0x41d990
cmp esi, dword [esp + 0x44]
je 0x41d9e2
mov eax, dword [esi + 0x10]
test eax, eax
je 0x41f43d
push eax
mov eax, dword [esp + 0x20]
push dword [eax]
call dword [sym.imp.msvcrt.dll__mbscmp]
add esp, 8
test eax, eax
jns 0x41da12
mov eax, dword [esp + 0x1c]
push ecx
mov dword [esp + 0x30], eax
lea eax, [esp + 0x30]
push eax
push ecx
lea ecx, [esp + 0x50]
call fcn.0042a880
push eax
add eax, 0x10
lea ecx, [esp + 0x48]
push eax
push esi
lea eax, [esp + 0x3c]
push eax
call fcn.0042a910
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x18]
mov eax, dword [edi - 4]
mov dword [esi + 0x14], eax
or eax, 0xffffffff
mov edx, dword [esp + 0x10]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41da38
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esp + 0x20]
add edi, 0x28
inc eax
mov dword [esp + 0x18], edi
mov dword [esp + 0x20], eax
cmp eax, dword [ebp + 0x10]
jne 0x41d961
mov esi, dword [esp + 0x28]
mov dword [esp + 0xfc], ebx
call fcn.004241c0
mov dword [esp + 0xf8], eax
mov dword [esp + 0x100], esi
mov dword [esp + 0x104], 0xffffffff
mov dword [esp + 0x108], ebx
mov dword [esp + 0x10c], ebx
mov dword [esp + 0x110], ebx
mov dword [esp + 0x118], ebx
call fcn.00424590
mov dword [esp + 0x114], eax
call fcn.00402506
test eax, eax
je 0x41f43d
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 0x11c], eax
call fcn.00402506
test eax, eax
je 0x41f43d
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x120], eax
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], ebx
mov dword [esp + 0xe0], ebx
call fcn.004241c0
mov dword [esp + 0xdc], eax
mov dword [esp + 0xf4], ebx
call fcn.004240d0
mov edx, dword [esi + 0x14]
xor ecx, ecx
mov esi, dword [esi + 0x10]
mov dword [esp + 0xf0], eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x30], edx
mov eax, dword [esi]
mov dword [esp + 0x14], eax
cmp eax, esi
je 0x41dda5
mov ecx, dword [esp + 0x78]
mov edi, dword [esp + 0x70]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], edi
mov edi, edi
add eax, 0x10
mov dword [esp + 0x20], 0
mov dword [esp + 0x2c], eax
lea ecx, [esp + 0x1b0]
mov dword [esp + 0x1b0], eax
lea eax, [esp + 0xf8]
mov dword [esp + 0x1b4], eax
lea eax, [esp + 0xf0]
mov dword [esp + 0x1b8], eax
lea eax, [esp + 0x20]
mov dword [esp + 0x1bc], eax
lea eax, [esp + 0xdc]
mov dword [esp + 0x1c0], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x1c4], eax
call fcn.0041f460
cmp eax, 1
jne 0x41dd88
mov eax, dword [esp + 0x20]
test eax, eax
je 0x41dbc5
push eax
lea ecx, [esp + 0x14c]
or ebx, 1
call fcn.0041fcf0
jmp 0x41dc2a
mov dword [esp + 0x7c], 0
call fcn.00402506
test eax, eax
je 0x41f43d
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
or ebx, 2
mov dword [esp + 0x74], 0
lea edi, [eax + 0x10]
mov dword [esp + 0x10], edi
mov dword [esp + 0x70], edi
call fcn.00402506
test eax, eax
je 0x41f43d
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
lea ecx, [esp + 0x124]
mov dword [esp + 0x18], eax
mov dword [esp + 0x78], eax
lea eax, [esp + 0x70]
push eax
call fcn.0041fcf0
or ebx, 0x1c
push eax
lea ecx, [esp + 0x138]
call fcn.0041fcf0
test bl, 0x10
je 0x41dc7d
mov edx, dword [esp + 0x12c]
and ebx, 0xffffffef
add edx, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41dc5e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [esp + 0x124]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41dc7d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test bl, 8
je 0x41dcb9
mov edx, dword [esp + 0x18]
and ebx, 0xfffffff7
add edx, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41dca1
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [edi - 0x10]
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41dcb9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test bl, 1
je 0x41dcff
mov edx, dword [esp + 0x150]
and ebx, 0xfffffffe
add edx, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41dce0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [esp + 0x148]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41dcff
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x60]
mov eax, dword [eax + 0x14]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x144], eax
lea eax, [esp + 0x134]
push eax
cmp dword [esp + 0x68], edi
je 0x41dd38
mov ecx, edi
call fcn.0041fcf0
mov eax, dword [esp + 0x2c]
mov dword [edi + 0x10], eax
add dword [esp + 0x60], 0x14
jmp 0x41dd42
push edi
lea ecx, [esp + 0x64]
call fcn.00424c60
mov edx, dword [esp + 0x13c]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41dd61
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [esp + 0x134]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41dd80
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
inc dword [esp + 0x1c]
mov edi, dword [esp + 0x10]
lea ecx, [esp + 0x14]
call fcn.004229b0
mov eax, dword [esp + 0x14]
cmp eax, esi
jne 0x41db40
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x30]
mov ebx, dword [esp + 0x40]
test ebx, ebx
je 0x41ddd5
mov esi, dword [esp + 0x3c]
push esi
push ecx
push edx
push 0x9858
call ebx
push esi
push 0
push 0
push 0x948e
call ebx
test eax, eax
je 0x41ddd5
mov esi, 0x800704c7
jmp 0x41f3e2
mov eax, dword [0x47e730]
mov dword [esp + 0x54], 0
mov ecx, dword [eax - 0x10]
test ecx, ecx
je 0x41ddf2
mov eax, dword [ecx]
call dword [eax + 0x10]
test eax, eax
jne 0x41de06
call fcn.00402506
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
test eax, eax
je 0x41f43d
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
lea esi, [eax + 0x10]
mov eax, dword [0x47e730]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x2c], eax
mov edi, dword [eax - 0xc]
lea ebx, [edi + 0xe]
test ebx, ebx
js 0x41f447
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, ebx
or ecx, eax
jge 0x41de4a
push ebx
lea ecx, [esp + 0x20]
call fcn.00402019
mov esi, dword [esp + 0x1c]
add edi, edi
mov ecx, esi
push edi
push dword [esp + 0x30]
mov edx, edi
call fcn.004021a8
push 0x1c
push str.UpdatePending
lea ecx, [edi + esi]
mov edx, 0x1c
call fcn.004021a8
add esp, 0x10
cmp ebx, dword [esi - 8]
jg 0x41f447
xor eax, eax
mov dword [esi - 0xc], ebx
mov word [esi + ebx*2], ax
lea eax, [esp + 0x54]
push eax
push 0x20219
push 4
push esi
push dword [0x45b4bc]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x41deb4
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [esp + 0x50], 0
call fcn.004242a0
mov dword [esp + 0x4c], eax
mov dword [esp + 0xec], 0
call fcn.00423ff0
mov ebx, dword [esp + 0x38]
mov ecx, ebx
push 9
push str._Updates_
mov dword [esp + 0xf0], eax
call fcn.00402882
mov edi, dword [esp + 0x28]
add edi, 0x28
je 0x41df49
push 0x2f
push str.OfflineSyncPackage_Custom
call dword [sym.imp.SHLWAPI.dll_StrChrA]
push ecx
mov ecx, edi
test eax, eax
je 0x41df29
lea esi, [eax + 1]
sub eax, str.OfflineSyncPackage_Custom
push eax
push str.OfflineSyncPackage_Custom
call fcn.00413337
mov edx, esi
mov ecx, eax
call fcn.004149dc
jmp 0x41df35
push 0
push str.OfflineSyncPackage_Custom
call fcn.00413337
test eax, eax
je 0x41df49
push 0
push 1
mov edx, eax
mov ecx, ebx
call fcn.00412dc3
add esp, 8
mov eax, dword [esp + 0x60]
xor esi, esi
mov ebx, dword [esp + 0x5c]
mov ecx, eax
mov dword [esp + 0x2c], eax
sub ecx, ebx
mov eax, 0x66666667
mov dword [esp + 0x14], esi
imul ecx
mov dword [esp + 0x28], ebx
sar edx, 3
mov edi, edx
shr edi, 0x1f
add edi, edx
mov dword [esp + 0x10], edi
cmp ebx, dword [esp + 0x2c]
je 0x41e0c9
mov eax, dword [esp + 0x40]
test eax, eax
je 0x41dfbe
push dword [esp + 0x3c]
push 0
push 0
push 0x948e
call eax
test eax, eax
jne 0x41f2d7
push dword [esp + 0x3c]
inc esi
xor edx, edx
push eax
imul eax, esi, 0x64
mov dword [esp + 0x1c], esi
div edi
push eax
mov eax, dword [esp + 0x4c]
push 0x9478
call eax
mov ebx, dword [ebx + 0x10]
mov dword [esp + 0x20], ebx
call fcn.00402506
test eax, eax
je 0x41f43d
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
mov ecx, dword [ebx + 0x24]
add eax, 0x10
mov dword [esp + 0x18], eax
test ecx, ecx
je 0x41e015
mov edx, dword [ecx]
test edx, edx
je 0x41e00e
cmp dword [ecx + 8], 8
jne 0x41e00e
cmp dword [edx], 0x61647055
jne 0x41e008
cmp dword [edx + 4], 0x64496574
jne 0x41e008
mov dl, 1
jmp 0x41e00a
xor dl, dl
test dl, dl
jne 0x41e036
mov ecx, dword [ecx + 0x18]
test ecx, ecx
jne 0x41dfe7
lea edx, [eax - 0x10]
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41e0b4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x41e0b4
mov edx, dword [ecx + 4]
test edx, edx
jne 0x41e042
mov edx, 0x44c488
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41e047
sub ecx, esi
push ecx
push edx
lea ecx, [esp + 0x20]
call fcn.00402882
lea ecx, [esp + 0x18]
call fcn.00422390
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x4c]
call fcn.004212b0
mov edi, dword [esp + 0x30]
cmp edi, dword [esp + 0x44]
je 0x41e365
mov eax, dword [edi + 0x14]
test eax, eax
jne 0x41e356
mov edx, dword [esp + 0x18]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41e0ac
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 0x28]
add ebx, 0x14
mov dword [esp + 0x28], ebx
cmp ebx, dword [esp + 0x2c]
jne 0x41df82
mov ebx, dword [esp + 0x38]
mov ecx, str.__Updates_
call fcn.00402922
push eax
push str.__Updates_
mov ecx, ebx
call fcn.00412cd1
lea ecx, [esp + 0x68]
call fcn.00421290
mov eax, dword [esp + 0x10c]
mov edi, dword [esp + 0x108]
mov dword [esp + 0x34], eax
cmp edi, eax
je 0x41e151
add edi, 0x44
mov ecx, edi
call fcn.00421d30
cmp eax, 1
jbe 0x41e141
call fcn.00421d50
mov ebx, dword [edi + 4]
mov esi, dword [edi]
cmp esi, ebx
je 0x41e141
lea eax, [esi + 0x14]
push eax
lea eax, [esp + 0x74]
push eax
push esi
lea ecx, [esp + 0x74]
call fcn.00421150
mov ecx, eax
call fcn.00424c40
add esi, 0x18
cmp esi, ebx
jne 0x41e120
add edi, 0x50
lea eax, [edi - 0x44]
cmp eax, dword [esp + 0x34]
jne 0x41e106
mov ebx, dword [esp + 0x38]
lea ecx, [esp + 0x108]
call fcn.00421c60
cmp dword [esp + 0x6c], 0
je 0x41f3b9
lea ecx, [esp + 0x1b0]
call fcn.00421ed0
mov ecx, ebx
call fcn.00411dbf
push eax
lea ecx, [esp + 0x1b4]
call fcn.00425a80
push ecx
push 7
push str.Updates
lea ecx, [esp + 0x1bc]
call fcn.00413337
mov dword [esp + 0x10], eax
test eax, eax
je 0x41f367
push ecx
push 6
push str.Update
mov ecx, eax
call fcn.00413337
test eax, eax
je 0x41f367
nop
push ecx
push 6
mov ebx, eax
mov ecx, eax
push str.Update
mov dword [esp + 0x24], ebx
call fcn.004132cf
push ecx
push 0xe
push str.BundledUpdates
mov ecx, ebx
mov dword [esp + 0x20], eax
mov byte [esp + 0x1b], 0
call fcn.00413337
mov edi, eax
mov dword [esp + 0x1c], edi
test edi, edi
je 0x41f357
push ecx
push 0xd
push str.BundledUpdate
mov ecx, edi
call fcn.00413337
test eax, eax
je 0x41f357
push ecx
push 0xd
mov ebx, eax
mov ecx, eax
push str.BundledUpdate
mov dword [esp + 0x48], ebx
call fcn.004132cf
push ecx
push 8
push str.UpdateID
mov ecx, ebx
mov dword [esp + 0x2c], eax
call fcn.00413578
mov esi, eax
test esi, esi
je 0x41f323
mov ecx, esi
call fcn.004132c2
push eax
call dword [sym.imp.msvcrt.dll__strlwr]
push ecx
mov ecx, esi
call fcn.004132b7
push eax
call fcn.004132c2
push eax
lea ecx, [esp + 0x144]
call fcn.00421f70
push eax
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x70]
call fcn.00421000
mov esi, dword [esp + 0x34]
cmp esi, dword [esp + 0x68]
je 0x41f323
push ecx
push 0x17
push str.upd:HandlerSpecificData
mov ecx, ebx
call fcn.00413337
mov edi, eax
mov dword [esp + 0x30], edi
test edi, edi
je 0x41f31f
push ecx
push 0x19
push str.drv:WindowsDriverMetaData
mov ecx, edi
mov byte [esp + 0x33], 0
call fcn.00413337
test eax, eax
je 0x41f31f
push ecx
push 0x19
mov ebx, eax
mov ecx, eax
push str.drv:WindowsDriverMetaData
mov dword [esp + 0x64], ebx
call fcn.004132cf
push ecx
push 0xa
push str.HardwareID
mov ecx, ebx
mov dword [esp + 0x4c], eax
call fcn.00413578
test eax, eax
je 0x41f2e1
mov ecx, eax
call fcn.004132c2
push eax
call dword [sym.imp.msvcrt.dll__strlwr]
add esp, 4
lea ecx, [esp + 0x2c]
push eax
call fcn.00402969
mov ebx, dword [esi + 0x24]
lea eax, [esp + 0x2c]
push eax
lea eax, [esp + 0xe8]
lea ecx, [esi + 0x24]
push eax
call fcn.004212b0
mov ecx, dword [esp + 0x2c]
add ecx, 0xfffffff0
mov edi, dword [eax]
call fcn.004025d7
cmp edi, ebx
mov edi, dword [esp + 0x30]
je 0x41f2e1
push dword [esp + 0x58]
mov bl, 1
mov ecx, edi
mov byte [esp + 0x2b], bl
call fcn.004222a0
jmp 0x41f2e5
test byte [ebp + 8], 2
je 0x41e365
cmp eax, 1
jne 0x41e090
push dword [esp + 0x34]
lea eax, [esp + 0x1c]
push eax
push ecx
lea eax, [esp + 0x7c]
push eax
lea ecx, [esp + 0xf8]
call fcn.004266b0
cmp byte [esp + 0x74], 0
je 0x41e090
cmp dword [esp + 0x54], 0
je 0x41e5a3
mov eax, dword [esp + 0x18]
mov dword [esp + 0x34], 0
mov ebx, dword [eax - 0xc]
mov dword [esp + 0x58], ebx
call fcn.00402506
test eax, eax
je 0x41f43d
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
push 0
push 0
push ebx
push dword [esp + 0x24]
lea esi, [eax + 0x10]
push 0
push 0xfde9
mov dword [esp + 0x34], esi
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ebx, eax
test ebx, ebx
js 0x41f447
mov ecx, dword [esi - 8]
mov edx, 1
sub edx, dword [esi - 4]
sub ecx, ebx
or edx, ecx
jge 0x41e403
push ebx
lea ecx, [esp + 0x20]
call fcn.00402019
mov esi, dword [esp + 0x1c]
push ebx
push esi
push dword [esp + 0x60]
push dword [esp + 0x24]
push 0
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
test eax, eax
js 0x41f447
cmp eax, dword [esi - 8]
jg 0x41f447
xor ecx, ecx
mov dword [esi - 0xc], eax
mov word [esi + eax*2], cx
lea eax, [esp + 0x34]
push eax
push ecx
push ecx
push ecx
push esi
push dword [esp + 0x68]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
sete bl
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x41e464
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
test bl, bl
je 0x41e5a3
lea ecx, [esp + 0x168]
call fcn.00421ed0
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0xf8]
mov dword [esp + 0x158], ecx
mov dword [esp + 0x15c], eax
mov ecx, dword [ecx + 0x24]
test ecx, ecx
je 0x41e4d0
mov eax, dword [ecx]
test eax, eax
je 0x41e4c9
cmp dword [ecx + 8], 0xa
jne 0x41e4c9
cmp dword [eax], 0x69766552
jne 0x41e4c3
cmp dword [eax + 4], 0x6e6f6973
jne 0x41e4c3
movzx eax, word [eax + 8]
cmp ax, 0x6449
jne 0x41e4c3
mov al, 1
jmp 0x41e4c5
xor al, al
test al, al
jne 0x41e4d2
mov ecx, dword [ecx + 0x18]
test ecx, ecx
jne 0x41e498
xor ecx, ecx
mov edi, dword [ecx + 4]
test edi, edi
jne 0x41e4de
mov edi, 0x44c488
mov esi, dword [esp + 0x100]
lea ebx, [esi + 0x70]
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ecx, dword [esi + 0x6c]
test ecx, ecx
je 0x41e504
mov eax, dword [ecx]
lea edx, [esp + 0x168]
push edx
push edi
call dword [eax + 8]
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push 0xa
push 0
push edi
call sub.msvcrt.dll__strtoui64
add esp, 0xc
mov dword [esp + 0x164], edx
lea edx, [esp + 0x4c]
mov dword [esp + 0x160], eax
lea ecx, [esp + 0x168]
push 1
call fcn.00415b2c
mov edx, dword [esp + 0x1a8]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41e557
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esp + 0x19c]
test eax, eax
je 0x41e57d
mov edi, dword [sym.imp.msvcrt.dll_free]
mov esi, dword [eax]
push eax
call edi
add esp, 4
mov eax, esi
mov dword [esp + 0x19c], eax
test esi, esi
jne 0x41e568
mov dword [esp + 0x19c], 0
mov dword [esp + 0x1a4], 0
mov dword [esp + 0x1a0], 0
jmp 0x41e090
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x1c], eax
mov ebx, dword [eax + 4]
cmp byte [ebx + 0xd], 0
jne 0x41e642
mov esi, dword [esp + 0x18]
lea esp, [esp]
test esi, esi
je 0x41f43d
push esi
push dword [ebx + 0x10]
call dword [sym.imp.msvcrt.dll__mbscmp]
add esp, 8
test eax, eax
jns 0x41e5e2
mov ebx, dword [ebx + 8]
mov ecx, dword [esp + 0x1c]
jmp 0x41e5ea
mov ecx, ebx
mov ebx, dword [ebx]
mov dword [esp + 0x1c], ecx
cmp byte [ebx + 0xd], 0
je 0x41e5c0
mov eax, dword [esp + 0x4c]
cmp ecx, eax
je 0x41e642
mov eax, dword [ecx + 0x10]
test eax, eax
je 0x41f43d
push eax
push esi
call dword [sym.imp.msvcrt.dll__mbscmp]
add esp, 8
test eax, eax
js 0x41e63e
mov ebx, dword [esp + 0x1c]
cmp ebx, dword [esp + 0x4c]
je 0x41e646
cmp dword [ebx + 0x14], 0
je 0x41e646
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x41e0ac
mov ecx, dword [esi]
push esi
jmp 0x41e0a7
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x1c], eax
lea ecx, [esp + 0x90]
call fcn.00421ed0
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0xf8]
mov dword [esp + 0x80], ecx
mov dword [esp + 0x84], eax
mov ecx, dword [ecx + 0x24]
test ecx, ecx
je 0x41e6aa
mov eax, dword [ecx]
test eax, eax
je 0x41e6a3
cmp dword [ecx + 8], 0xa
jne 0x41e6a3
cmp dword [eax], 0x69766552
jne 0x41e69d
cmp dword [eax + 4], 0x6e6f6973
jne 0x41e69d
movzx eax, word [eax + 8]
cmp ax, 0x6449
jne 0x41e69d
mov al, 1
jmp 0x41e69f
xor al, al
test al, al
jne 0x41e6ac
mov ecx, dword [ecx + 0x18]
test ecx, ecx
jne 0x41e672
xor ecx, ecx
mov ebx, dword [ecx + 4]
test ebx, ebx
jne 0x41e6b8
mov ebx, 0x44c488
mov esi, dword [esp + 0x100]
lea eax, [esi + 0x70]
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ecx, dword [esi + 0x6c]
test ecx, ecx
je 0x41e6de
mov eax, dword [ecx]
lea edx, [esp + 0x90]
push edx
push ebx
call dword [eax + 8]
lea eax, [esi + 0x70]
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push 0xa
push 0
push ebx
call sub.msvcrt.dll__strtoui64
add esp, 0xc
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], edx
cmp edi, dword [esp + 0x44]
jne 0x41ea3b
mov edx, str.upd:Update_upd:Properties_upd:KBArticleID
lea ecx, [esp + 0x90]
call fcn.004149dc
test eax, eax
je 0x41e85c
mov edi, dword [eax + 4]
test edi, edi
jne 0x41e732
mov edi, 0x44c488
call fcn.00402506
test eax, eax
je 0x41f43d
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
lea esi, [eax + 0x10]
mov dword [esp + 0x20], esi
test edi, 0xffff0000
jne 0x41e809
movzx edi, di
mov ecx, edi
call fcn.00401c31
mov ebx, eax
test ebx, ebx
je 0x41e828
mov ecx, edi
shr ecx, 4
push 6
inc ecx
push ecx
push ebx
call dword [sym.imp.KERNEL32.dll_FindResourceW]
test eax, eax
je 0x41e828
push edi
mov edx, eax
mov ecx, ebx
call fcn.00401c9c
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x41e828
movzx ecx, word [ebx]
lea eax, [ebx + 2]
push 0
push 0
push 0
push 0
push ecx
push eax
push 0
push 3
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov edi, eax
test edi, edi
js 0x41f447
mov ecx, dword [esi - 8]
mov edx, 1
sub edx, dword [esi - 4]
sub ecx, edi
or edx, ecx
jge 0x41e7df
push edi
lea ecx, [esp + 0x24]
call fcn.004027c6
mov esi, dword [esp + 0x20]
movzx eax, word [ebx]
push 0
push 0
push edi
push esi
push eax
lea eax, [ebx + 2]
push eax
push 0
push 3
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
cmp edi, dword [esi - 8]
jg 0x41f447
mov dword [esi - 0xc], edi
mov byte [edi + esi], 0
jmp 0x41e828
mov ecx, edi
lea edx, [ecx + 1]
mov edi, edi
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41e810
sub ecx, edx
push ecx
push edi
lea ecx, [esp + 0x28]
call fcn.00402882
mov esi, dword [esp + 0x20]
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0xe8]
push eax
lea ecx, [esp + 0x4c]
call fcn.004212b0
add esi, 0xfffffff0
mov edi, dword [eax]
or eax, 0xffffffff
mov dword [esp + 0x30], edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x41e85c
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
cmp edi, dword [esp + 0x44]
jne 0x41ea3b
mov ebx, dword [ebp + 8]
test bl, 4
je 0x41e8dd
mov edx, dword [esp + 0xd0]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41e891
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esp + 0xc4]
test eax, eax
je 0x41e8b7
mov edi, dword [sym.imp.msvcrt.dll_free]
mov esi, dword [eax]
push eax
call edi
add esp, 4
mov eax, esi
mov dword [esp + 0xc4], eax
test esi, esi
jne 0x41e8a2
mov dword [esp + 0xc4], 0
mov dword [esp + 0xcc], 0
mov dword [esp + 0xc8], 0
jmp 0x41e090
mov eax, dword [esp + 0x80]
mov edi, dword [eax + 0x24]
test edi, edi
je 0x41e92c
jmp 0x41e8f0
mov ecx, dword [edi]
test ecx, ecx
je 0x41e925
cmp dword [edi + 8], 0x14
jne 0x41e925
mov edx, str.AutoSelectOnWebSites
mov esi, 0x10
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x41e91b
add ecx, 4
add edx, 4
sub esi, 4
jae 0x41e906
mov al, 1
jmp 0x41e91d
xor al, al
test al, al
jne 0x41e9eb
mov edi, dword [edi + 0x18]
test edi, edi
jne 0x41e8f0
mov edx, str.upd:Update_upd:Properties
lea ecx, [esp + 0x90]
call fcn.004149dc
test eax, eax
je 0x41e986
mov edi, dword [eax + 0x24]
test edi, edi
je 0x41e986
mov ecx, dword [edi]
test ecx, ecx
je 0x41e97f
cmp dword [edi + 8], 0x14
jne 0x41e97f
mov edx, str.AutoSelectOnWebSites
mov esi, 0x10
mov edi, edi
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x41e975
add ecx, 4
add edx, 4
sub esi, 4
jae 0x41e960
mov al, 1
jmp 0x41e977
xor al, al
test al, al
jne 0x41e9eb
mov edi, dword [edi + 0x18]
test edi, edi
jne 0x41e948
xor ecx, ecx
mov dword [esp + 0x20], ecx
test bl, 2
je 0x41eafa
test ecx, ecx
jne 0x41eb5a
mov edx, dword [esp + 0xd0]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41e9bc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esp + 0xc4]
test eax, eax
je 0x41e8b7
mov edi, dword [sym.imp.msvcrt.dll_free]
mov esi, dword [eax]
push eax
call edi
add esp, 4
mov eax, esi
mov dword [esp + 0xc4], eax
test esi, esi
jne 0x41e9d1
jmp 0x41e8b7
mov eax, dword [edi + 4]
test eax, eax
jne 0x41e9f7
mov eax, 0x44c488
mov ecx, str.true
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41ea2a
test dl, dl
je 0x41ea1c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41ea2a
add eax, 2
add ecx, 2
test dl, dl
jne 0x41ea00
xor eax, eax
xor ecx, ecx
test eax, eax
sete cl
jmp 0x41e988
sbb eax, eax
xor ecx, ecx
or eax, 1
test eax, eax
sete cl
jmp 0x41e988
mov eax, dword [edi + 0x14]
test eax, eax
jne 0x41ea90
mov edx, dword [esp + 0xd0]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41ea61
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esp + 0xc4]
test eax, eax
je 0x41e8b7
mov edi, dword [sym.imp.msvcrt.dll_free]
mov esi, dword [eax]
push eax
call edi
add esp, 4
mov eax, esi
mov dword [esp + 0xc4], eax
test esi, esi
jne 0x41ea76
jmp 0x41e8b7
xor ecx, ecx
cmp eax, 1
sete cl
test byte [ebp + 8], 2
mov dword [esp + 0x20], ecx
je 0x41eafa
cmp eax, 1
je 0x41eafa
mov edx, dword [esp + 0xd0]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41eac6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esp + 0xc4]
test eax, eax
je 0x41e8b7
mov edi, dword [sym.imp.msvcrt.dll_free]
jmp 0x41eae0
mov esi, dword [eax]
push eax
call edi
add esp, 4
mov eax, esi
mov dword [esp + 0xc4], eax
test esi, esi
jne 0x41eae0
jmp 0x41e8b7
test ecx, ecx
jne 0x41eb5a
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [esp + 0x4c]
je 0x41eb5a
mov edx, dword [esp + 0xd0]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41eb27
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esp + 0xc4]
test eax, eax
je 0x41e8b7
mov edi, dword [sym.imp.msvcrt.dll_free]
lea esp, [esp]
mov esi, dword [eax]
push eax
call edi
add esp, 4
mov eax, esi
mov dword [esp + 0xc4], eax
test esi, esi
jne 0x41eb40
jmp 0x41e8b7
lea ecx, [esp + 0x1b0]
call fcn.00421ed0
lea eax, [esp + 0x124]
mov dword [esp + 0x124], 0
push eax
lea eax, [esp + 0x50]
mov dword [esp + 0x12c], 0
push eax
lea edx, [esp + 0x1b8]
lea ecx, [esp + 0x88]
call fcn.00415ea7
test eax, eax
jne 0x41f2ae
mov ebx, dword [esp + 0x1cc]
test ebx, ebx
je 0x41ebe3
nop
mov eax, dword [ebx]
test eax, eax
je 0x41ebdc
cmp dword [ebx + 8], 6
jne 0x41ebdc
cmp dword [eax], 0x61647055
jne 0x41ebd2
movzx eax, word [eax + 4]
cmp ax, 0x6574
jne 0x41ebd2
mov al, 1
jmp 0x41ebd4
xor al, al
test al, al
jne 0x41ec91
mov ebx, dword [ebx + 0x30]
test ebx, ebx
jne 0x41ebb0
mov edx, dword [esp + 0x1f0]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41ec02
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esp + 0x1e4]
mov edi, dword [sym.imp.msvcrt.dll_free]
test eax, eax
je 0x41ec28
mov esi, dword [eax]
push eax
call edi
add esp, 4
mov eax, esi
mov dword [esp + 0x1e4], eax
test esi, esi
jne 0x41ec13
mov edx, dword [esp + 0xd0]
or eax, 0xffffffff
mov dword [esp + 0x1e4], 0
add edx, 0xfffffff0
mov dword [esp + 0x1ec], 0
mov dword [esp + 0x1e8], 0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41ec68
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esp + 0xc4]
test eax, eax
je 0x41e8b7
mov esi, dword [eax]
push eax
call edi
add esp, 4
mov eax, esi
mov dword [esp + 0xc4], eax
test esi, esi
jne 0x41ec77
jmp 0x41e8b7
mov eax, dword [esp + 0x80]
mov edi, dword [eax + 0x24]
test edi, edi
je 0x41ecdc
nop
mov ecx, dword [edi]
test ecx, ecx
je 0x41ecd5
cmp dword [edi + 8], 0x14
jne 0x41ecd5
mov edx, str.AutoSelectOnWebSites
mov esi, 0x10
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x41eccb
add ecx, 4
add edx, 4
sub esi, 4
jae 0x41ecb6
mov al, 1
jmp 0x41eccd
xor al, al
test al, al
jne 0x41ed89
mov edi, dword [edi + 0x18]
test edi, edi
jne 0x41eca0
mov edx, str.upd:Update_upd:Properties
lea ecx, [esp + 0x90]
call fcn.004149dc
test eax, eax
je 0x41ed32
mov edi, dword [eax + 0x24]
test edi, edi
je 0x41ed32
mov ecx, dword [edi]
test ecx, ecx
je 0x41ed2b
cmp dword [edi + 8], 0x14
jne 0x41ed2b
mov edx, str.AutoSelectOnWebSites
mov esi, 0x10
mov edi, edi
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x41ed25
add ecx, 4
add edx, 4
sub esi, 4
jae 0x41ed10
mov al, 1
jmp 0x41ed27
xor al, al
test al, al
jne 0x41ed89
mov edi, dword [edi + 0x18]
test edi, edi
jne 0x41ecf8
xor ecx, ecx
cmp dword [esp + 0x20], 0
setne al
cmp al, cl
je 0x41eefa
mov edi, dword [ebx + 0x24]
test edi, edi
je 0x41edf0
nop
mov ecx, dword [edi]
test ecx, ecx
je 0x41ede5
cmp dword [edi + 8], 0x14
jne 0x41ede5
mov edx, str.AutoSelectOnWebSites
mov esi, 0x10
mov edi, edi
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x41eddb
add ecx, 4
add edx, 4
sub esi, 4
jae 0x41ed70
mov al, 1
jmp 0x41eddd
mov eax, dword [edi + 4]
test eax, eax
jne 0x41ed95
mov eax, 0x44c488
mov ecx, str.true
lea ebx, [ebx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x41edca
test dl, dl
je 0x41edbc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x41edca
add eax, 2
add ecx, 2
test dl, dl
jne 0x41eda0
xor eax, eax
xor ecx, ecx
test eax, eax
sete cl
jmp 0x41ed34
sbb eax, eax
xor ecx, ecx
or eax, 1
test eax, eax
sete cl
jmp 0x41ed34
xor al, al
test al, al
jne 0x41ee6f
mov edi, dword [edi + 0x18]
test edi, edi
jne 0x41ed50
cmp dword [esp + 0x20], 0
mov esi, str.true
jne 0x41ee01
mov esi, str.false
mov edx, dword [esp + 0x1e8]
neg edx
and edx, 3
add edx, dword [esp + 0x1e8]
lea eax, [edx + 0x1c]
cmp eax, dword [esp + 0x1ec]
jbe 0x41ee5a
push 0x10004
call dword [sym.imp.msvcrt.dll_malloc]
add esp, 4
test eax, eax
je 0x41ee68
mov ecx, dword [esp + 0x1e4]
mov dword [eax], ecx
lea ecx, [eax + 4]
mov edx, ecx
mov dword [esp + 0x1e4], eax
neg edx
add eax, 0x10004
and edx, 3
mov dword [esp + 0x1ec], eax
add edx, ecx
lea eax, [edx + 0x1c]
mov dword [esp + 0x1e8], eax
test edx, edx
jne 0x41ee99
xor edx, edx
jmp 0x41eecf
cmp dword [esp + 0x20], 0
mov edx, str.true
jne 0x41ee80
mov edx, str.false
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41ee85
sub ecx, esi
mov dword [edi + 4], edx
mov dword [edi + 0xc], ecx
jmp 0x41eefa
mov ecx, esi
mov dword [edx + 4], 0
mov dword [edx + 0xc], 0
mov dword [edx + 0x10], 0
mov dword [edx], str.AutoSelectOnWebSites
mov dword [edx + 8], 0x14
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41eec0
sub ecx, edi
mov dword [edx + 4], esi
mov dword [edx + 0xc], ecx
cmp dword [ebx + 0x24], 0
je 0x41eee3
mov eax, dword [ebx + 0x28]
mov dword [edx + 0x14], eax
mov eax, dword [ebx + 0x28]
mov dword [eax + 0x18], edx
jmp 0x41eeed
mov dword [edx + 0x14], 0
mov dword [ebx + 0x24], edx
mov dword [ebx + 0x28], edx
mov dword [edx + 0x10], ebx
mov dword [edx + 0x18], 0
mov edx, dword [esp + 0x1e8]
mov esi, dword [esp + 0x28]
neg edx
and edx, 3
add edx, dword [esp + 0x1e8]
mov edi, dword [esi]
lea eax, [edx + 0x1c]
mov esi, dword [edi - 0xc]
cmp eax, dword [esp + 0x1ec]
jbe 0x41ef5c
push 0x10004
call dword [sym.imp.msvcrt.dll_malloc]
add esp, 4
test eax, eax
je 0x41ef6a
mov ecx, dword [esp + 0x1e4]
mov dword [eax], ecx
lea ecx, [eax + 4]
mov edx, ecx
mov dword [esp + 0x1e4], eax
neg edx
add eax, 0x10004
and edx, 3
mov dword [esp + 0x1ec], eax
add edx, ecx
lea eax, [edx + 0x1c]
mov dword [esp + 0x1e8], eax
test edx, edx
jne 0x41ef6e
xor edx, edx
jmp 0x41efb1
mov dword [edx + 4], 0
mov dword [edx + 0xc], 0
mov dword [edx + 0x10], 0
mov dword [edx], str.Product
mov dword [edx + 8], 7
test edi, edi
je 0x41efb1
test esi, esi
je 0x41ef9d
mov dword [edx + 0xc], esi
jmp 0x41efae
mov ecx, edi
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41efa2
sub ecx, esi
mov dword [edx + 0xc], ecx
mov dword [edx + 4], edi
cmp dword [ebx + 0x24], 0
je 0x41efc5
mov eax, dword [ebx + 0x28]
mov dword [edx + 0x14], eax
mov eax, dword [ebx + 0x28]
mov dword [eax + 0x18], edx
jmp 0x41efcf
mov dword [edx + 0x14], 0
mov dword [ebx + 0x24], edx
mov edi, dword [esp + 0x28]
mov dword [ebx + 0x28], edx
mov dword [edx + 0x10], ebx
mov dword [edx + 0x18], 0
mov edx, dword [esp + 0x1e8]
mov esi, dword [edi + 4]
neg edx
and edx, 3
add edx, dword [esp + 0x1e8]
lea eax, [edx + 0x1c]
cmp eax, dword [esp + 0x1ec]
jbe 0x41f03c
push 0x10004
call dword [sym.imp.msvcrt.dll_malloc]
add esp, 4
test eax, eax
je 0x41f04a
mov ecx, dword [esp + 0x1e4]
mov dword [eax], ecx
lea ecx, [eax + 4]
mov edx, ecx
mov dword [esp + 0x1e4], eax
neg edx
add eax, 0x10004
and edx, 3
mov dword [esp + 0x1ec], eax
add edx, ecx
lea eax, [edx + 0x1c]
mov dword [esp + 0x1e8], eax
test edx, edx
jne 0x41f04e
xor edx, edx
jmp 0x41f093
mov dword [edx + 4], 0
mov dword [edx + 0xc], 0
mov dword [edx + 0x10], 0
mov dword [edx], str.ProductId
mov dword [edx + 8], 9
test esi, esi
je 0x41f093
mov ecx, esi
lea edi, [ecx + 1]
lea esp, [esp]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41f080
sub ecx, edi
mov dword [edx + 4], esi
mov edi, dword [esp + 0x28]
mov dword [edx + 0xc], ecx
cmp dword [ebx + 0x24], 0
je 0x41f0a7
mov eax, dword [ebx + 0x28]
mov dword [edx + 0x14], eax
mov eax, dword [ebx + 0x28]
mov dword [eax + 0x18], edx
jmp 0x41f0b1
mov dword [edx + 0x14], 0
mov dword [ebx + 0x24], edx
mov dword [ebx + 0x28], edx
mov dword [edx + 0x10], ebx
mov dword [edx + 0x18], 0
mov edx, dword [esp + 0x1e8]
mov edi, dword [edi + 8]
neg edx
and edx, 3
add edx, dword [esp + 0x1e8]
mov esi, dword [edi - 0xc]
lea eax, [edx + 0x1c]
cmp eax, dword [esp + 0x1ec]
jbe 0x41f11d
push 0x10004
call dword [sym.imp.msvcrt.dll_malloc]
add esp, 4
test eax, eax
je 0x41f12b
mov ecx, dword [esp + 0x1e4]
mov dword [eax], ecx
lea ecx, [eax + 4]
mov edx, ecx
mov dword [esp + 0x1e4], eax
neg edx
add eax, 0x10004
and edx, 3
mov dword [esp + 0x1ec], eax
add edx, ecx
lea eax, [edx + 0x1c]
mov dword [esp + 0x1e8], eax
test edx, edx
jne 0x41f12f
xor edx, edx
jmp 0x41f172
mov dword [edx + 4], 0
mov dword [edx + 0xc], 0
mov dword [edx + 0x10], 0
mov dword [edx], str.ProductFamily
mov dword [edx + 8], 0xd
test edi, edi
je 0x41f172
test esi, esi
je 0x41f15e
mov dword [edx + 0xc], esi
jmp 0x41f16f
mov ecx, edi
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41f163
sub ecx, esi
mov dword [edx + 0xc], ecx
mov dword [edx + 4], edi
cmp dword [ebx + 0x24], 0
je 0x41f186
mov eax, dword [ebx + 0x28]
mov dword [edx + 0x14], eax
mov eax, dword [ebx + 0x28]
mov dword [eax + 0x18], edx
jmp 0x41f190
mov dword [edx + 0x14], 0
mov dword [ebx + 0x24], edx
mov esi, dword [esp + 0x28]
mov dword [ebx + 0x28], edx
mov dword [edx + 0x10], ebx
mov dword [edx + 0x18], 0
mov edx, dword [esp + 0x1e8]
mov esi, dword [esi + 0xc]
neg edx
and edx, 3
add edx, dword [esp + 0x1e8]
lea eax, [edx + 0x1c]
cmp eax, dword [esp + 0x1ec]
jbe 0x41f1fd
push 0x10004
call dword [sym.imp.msvcrt.dll_malloc]
add esp, 4
test eax, eax
je 0x41f20b
mov ecx, dword [esp + 0x1e4]
mov dword [eax], ecx
lea ecx, [eax + 4]
mov edx, ecx
mov dword [esp + 0x1e4], eax
neg edx
add eax, 0x10004
and edx, 3
mov dword [esp + 0x1ec], eax
add edx, ecx
lea eax, [edx + 0x1c]
mov dword [esp + 0x1e8], eax
test edx, edx
jne 0x41f20f
xor edx, edx
jmp 0x41f24f
mov dword [edx + 4], 0
mov dword [edx + 0xc], 0
mov dword [edx + 0x10], 0
mov dword [edx], str.ProductFamilyId
mov dword [edx + 8], 0xf
test esi, esi
je 0x41f24f
mov ecx, esi
lea edi, [ecx + 1]
lea ebx, [ebx]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x41f240
sub ecx, edi
mov dword [edx + 4], esi
mov dword [edx + 0xc], ecx
push edx
mov ecx, ebx
call fcn.00422220
push dword [esp + 0x20]
lea edx, [esp + 0x50]
lea ecx, [esp + 0x94]
call fcn.00415b2c
mov edx, ebx
mov ebx, dword [esp + 0x38]
push 1
push 1
mov ecx, ebx
call fcn.00412dc3
add esp, 8
test byte [ebp + 8], 1
je 0x41f2ae
lea ecx, [esp + 0x1b0]
call fcn.00415b15
lea ecx, [esp + 0x90]
call fcn.00415b15
mov ecx, dword [esp + 0x18]
lea ecx, [ecx - 0x10]
call fcn.004025d7
jmp 0x41e0cd
lea ecx, [esp + 0x1b0]
call fcn.00415b15
lea ecx, [esp + 0x90]
call fcn.00415b15
mov ecx, dword [esp + 0x18]
lea ecx, [ecx - 0x10]
call fcn.004025d7
jmp 0x41e0ac
mov esi, 0x800704c7
jmp 0x41f3c4
mov bl, byte [esp + 0x27]
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x41e2c3
test bl, bl
je 0x41f31f
push ecx
push 0x19
push str.drv:WindowsDriverMetaData
mov ecx, edi
call fcn.00413337
mov edi, dword [esp + 0x1c]
test eax, eax
jne 0x41f323
push dword [esp + 0x3c]
mov ecx, edi
call fcn.004222a0
mov cl, 1
mov byte [esp + 0xf], cl
jmp 0x41f327
mov edi, dword [esp + 0x1c]
mov cl, byte [esp + 0xf]
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x41e212
test cl, cl
je 0x41f357
push ecx
push 0xd
push str.BundledUpdate
mov ecx, edi
call fcn.00413337
test eax, eax
jne 0x41f357
push dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
call fcn.004222a0
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x41e1c0
mov ebx, dword [esp + 0x38]
lea ecx, [esp + 0x28]
call fcn.00411dd6
mov eax, dword [ebx]
lea ecx, [esp + 0x28]
push dword [eax - 0xc]
call fcn.0040281d
push 0
push 1
lea edx, [esp + 0x1b8]
lea ecx, [esp + 0x30]
call fcn.00412dc3
add esp, 8
lea eax, [esp + 0x28]
mov ecx, ebx
push eax
call fcn.00411d51
mov ecx, dword [esp + 0x28]
lea ecx, [ecx - 0x10]
call fcn.004025d7
lea ecx, [esp + 0x1b0]
call fcn.00415b15
lea ecx, [esp + 0x68]
xor esi, esi
call fcn.00421110
lea ecx, [esp + 0xe8]
call fcn.00421340
lea ecx, [esp + 0x4c]
call fcn.004213e0
lea ecx, [esp + 0x54]
call fcn.00411ce1
lea ecx, [esp + 0xf0]
call fcn.00421370
lea ecx, [esp + 0xdc]
call fcn.004213a0
lea ecx, [esp + 0x5c]
call fcn.004226e0
lea ecx, [esp + 0xf8]
call fcn.004156a7
lea ecx, [esp + 0x44]
call fcn.004213e0
lea ecx, [esp + 0x1f8]
call fcn.00411ad6
mov ecx, dword [esp + 0x224]
mov eax, esi
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004488a4
mov esp, ebp
pop ebp
ret 0x14
push 0x80004005
call fcn.00402310
push 0x80070057
call fcn.00402310
int3