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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5f3846
mov eax, dword fs:[0]
push eax
sub esp, 0x358
mov eax, dword [0x6b7e40]
xor eax, esp
mov dword [esp + 0x350], eax
push ebx
push esi
push edi
mov eax, dword [0x6b7e40]
xor eax, esp
push eax
lea eax, [esp + 0x368]
mov dword fs:[0], eax
push str.CInstallationInfo::DetectInstalledProducts...
lea ecx, [esp + 0x40]
call fcn.004021e0
push 0x63bfdc
lea ecx, [esp + 0x18]
mov dword [esp + 0x374], 0
call fcn.004021e0
xor ecx, ecx
call fcn.004051a0
mov edi, eax
push ecx
mov byte [esp + 0x374], 1
mov ecx, dword [esp + 0x18]
add ecx, 0xfffffff0
mov esi, esp
push ecx
call fcn.004046f0
add esp, 4
add eax, 0x10
push 0
push 0
mov dword [esi], eax
lea eax, [esp + 0x48]
push eax
push 0x499
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldBgDwldInstallData.cpp
push 0
push 3
mov ecx, edi
call fcn.004055a0
mov byte [esp + 0x370], 0
mov edx, dword [esp + 0x14]
add edx, 0xfffffff0
or ebx, 0xffffffff
lea ecx, [edx + 0xc]
mov eax, ebx
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x42d336
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [esp + 0x370], 0xffffffff
mov edx, dword [esp + 0x3c]
add edx, 0xfffffff0
mov ecx, ebx
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42d35e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [0x6c20b4]
mov esi, dword [0x6c20b0]
cmp esi, edi
je 0x42d384
mov edi, edi
mov ecx, esi
call fcn.0042edb0
add esi, 0x38
cmp esi, edi
jne 0x42d370
mov esi, dword [0x6c20b0]
lea eax, [esp + 0x14]
push eax
push 0x20019
push 0
push str.SoftwareSolidWorksIM
push SysReAllocStringLen
mov dword [0x6c20b4], esi
mov dword [esp + 0xc4], 0
mov dword [esp + 0x108], 4
mov dword [esp + 0x30], 0x400
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x42d410
lea eax, [esp + 0x1c]
push eax
lea eax, [esp + 0xb4]
push eax
lea eax, [esp + 0xfc]
push eax
push 0
push str.SimulateFileErrors
push dword [esp + 0x28]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push dword [esp + 0x14]
mov esi, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [0x6c1e94]
test esi, esi
cmove ecx, dword [esp + 0xb0]
mov dword [0x6c1e94], ecx
xor ecx, ecx
mov dword [esp + 0x1c], ecx
push dword [ecx*4 + 0x63adb8]
lea ecx, [esp + 0x34]
mov ebx, 1
call fcn.004021e0
push 0x63bfdc
lea ecx, [esp + 0xb0]
mov dword [esp + 0x374], 6
call fcn.004021e0
mov byte [esp + 0x370], 7
mov esi, dword [esp + 0xac]
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [esi - 4], 0
lea edx, [esi - 4]
mov ecx, eax
jl 0x42d479
cmp ecx, dword [esi - 0x10]
jne 0x42d479
lea edi, [esi - 0x10]
mov eax, ebx
lock xadd dword [edx], eax
jmp 0x42d4b2
mov eax, dword [ecx]
push 2
push dword [esi - 0xc]
call dword [eax]
mov edi, eax
test edi, edi
je 0x42e171
mov ecx, dword [esi - 0xc]
mov dword [edi + 4], ecx
mov ecx, dword [esi - 0xc]
lea eax, [ecx*2 + 2]
push eax
lea eax, [ecx*2 + 2]
push esi
push eax
lea eax, [edi + 0x10]
push eax
call fcn.005bc17a
add esp, 0x10
mov byte [esp + 0x370], 6
mov edx, dword [esp + 0xac]
add edx, 0xfffffff0
lea ebx, [edi + 0x10]
mov dword [esp + 0xfc], ebx
mov dword [esp + 0x100], 0xffffffff
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42d4f0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0x63bfdc
lea ecx, [esp + 0xc0]
mov byte [esp + 0x374], 8
call fcn.004021e0
mov byte [esp + 0x370], 9
mov esi, dword [esp + 0xbc]
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [esi - 4], 0
lea edx, [esi - 4]
mov ecx, eax
jl 0x42d53e
cmp ecx, dword [esi - 0x10]
jne 0x42d53e
lea edi, [esi - 0x10]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x42d577
mov eax, dword [ecx]
push 2
push dword [esi - 0xc]
call dword [eax]
mov edi, eax
test edi, edi
je 0x42e171
mov ecx, dword [esi - 0xc]
mov dword [edi + 4], ecx
mov ecx, dword [esi - 0xc]
lea eax, [ecx*2 + 2]
push eax
lea eax, [ecx*2 + 2]
push esi
push eax
lea eax, [edi + 0x10]
push eax
call fcn.005bc17a
add esp, 0x10
mov byte [esp + 0x370], 8
mov edx, dword [esp + 0xbc]
lea eax, [edi + 0x10]
add edx, 0xfffffff0
mov dword [esp + 0xb4], eax
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42d5aa
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0
mov byte [esp + 0x374], 0xa
mov ecx, dword [ebx - 0x10]
push 0
mov eax, dword [ecx]
add ebx, 0xfffffff0
push 0
push 0
sub esp, 8
mov dword [esp + 0xd0], 1
mov dword [esp + 0x40], esp
mov edi, esp
mov dword [esp + 0x30], ebx
call dword [eax + 0x10]
cmp dword [ebx + 0xc], 0
lea edx, [ebx + 0xc]
mov ecx, eax
jl 0x42d5f9
cmp ecx, dword [ebx]
jne 0x42d5f9
mov esi, ebx
mov eax, 1
lock xadd dword [edx], eax
jmp 0x42d635
mov eax, dword [ecx]
push 2
push dword [ebx + 4]
call dword [eax]
mov esi, eax
test esi, esi
je 0x42e171
mov ecx, dword [ebx + 4]
mov dword [esi + 4], ecx
mov ecx, dword [ebx + 4]
lea eax, [ecx*2 + 2]
push eax
lea eax, [ebx + 0x10]
push eax
lea eax, [ecx*2 + 2]
push eax
lea eax, [esi + 0x10]
push eax
call fcn.005bc17a
add esp, 0x10
lea eax, [esi + 0x10]
mov dword [edi], eax
mov dword [edi + 4], 0xffffffff
mov byte [esp + 0x388], 0xb
mov esi, dword [esp + 0x48]
push ecx
mov ecx, dword [esi - 0x10]
mov ebx, esp
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [esi - 4], 0
lea edx, [esi - 4]
mov ecx, eax
jl 0x42d676
cmp ecx, dword [esi - 0x10]
jne 0x42d676
lea edi, [esi - 0x10]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x42d6af
mov eax, dword [ecx]
push 2
push dword [esi - 0xc]
call dword [eax]
mov edi, eax
test edi, edi
je 0x42e171
mov ecx, dword [esi - 0xc]
mov dword [edi + 4], ecx
mov ecx, dword [esi - 0xc]
lea eax, [ecx*2 + 2]
push eax
lea eax, [ecx*2 + 2]
push esi
push eax
lea eax, [edi + 0x10]
push eax
call fcn.005bc17a
add esp, 0x10
lea eax, [edi + 0x10]
mov dword [ebx], eax
lea ecx, [esp + 0xec]
mov byte [esp + 0x38c], 0xa
call fcn.0042b410
add esp, 0x1c
mov byte [esp + 0x370], 0xc
mov ebx, dword [esp + 0xb4]
push 0
mov ecx, dword [ebx - 0x10]
push 0
mov eax, dword [ecx]
add ebx, 0xfffffff0
push 0
push 0
sub esp, 8
mov dword [esp + 0x4c], esp
mov edi, esp
mov dword [esp + 0x40], ebx
call dword [eax + 0x10]
cmp dword [ebx + 0xc], 0
lea edx, [ebx + 0xc]
mov ecx, eax
jl 0x42d716
cmp ecx, dword [ebx]
jne 0x42d716
mov esi, ebx
mov eax, 1
lock xadd dword [edx], eax
jmp 0x42d752
mov eax, dword [ecx]
push 2
push dword [ebx + 4]
call dword [eax]
mov esi, eax
test esi, esi
je 0x42e171
mov ecx, dword [ebx + 4]
mov dword [esi + 4], ecx
mov ecx, dword [ebx + 4]
lea eax, [ecx*2 + 2]
push eax
lea eax, [ebx + 0x10]
push eax
lea eax, [ecx*2 + 2]
push eax
lea eax, [esi + 0x10]
push eax
call fcn.005bc17a
add esp, 0x10
lea eax, [esi + 0x10]
mov dword [edi], eax
mov dword [edi + 4], 1
mov byte [esp + 0x388], 0xd
mov esi, dword [esp + 0x48]
push ecx
mov ecx, dword [esi - 0x10]
mov ebx, esp
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [esi - 4], 0
lea edx, [esi - 4]
mov ecx, eax
jl 0x42d793
cmp ecx, dword [esi - 0x10]
jne 0x42d793
lea edi, [esi - 0x10]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x42d7cc
mov eax, dword [ecx]
push 2
push dword [esi - 0xc]
call dword [eax]
mov edi, eax
test edi, edi
je 0x42e171
mov ecx, dword [esi - 0xc]
mov dword [edi + 4], ecx
mov ecx, dword [esi - 0xc]
lea eax, [ecx*2 + 2]
push eax
lea eax, [ecx*2 + 2]
push esi
push eax
lea eax, [edi + 0x10]
push eax
call fcn.005bc17a
add esp, 0x10
lea eax, [edi + 0x10]
mov dword [ebx], eax
lea ecx, [esp + 0xe0]
mov byte [esp + 0x38c], 0xc
call fcn.0042b410
add esp, 0x1c
lea eax, [esp + 0x4c]
push eax
lea ecx, [esp + 0xd4]
mov byte [esp + 0x374], 0xe
call fcn.00427e20
lea eax, [esp + 0x44]
push eax
lea ecx, [esp + 0xc8]
mov byte [esp + 0x374], 0xf
call fcn.00427e20
mov byte [esp + 0x370], 0x10
call fcn.004a4516
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x42e0be
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 0x20], eax
mov byte [esp + 0x370], 0x11
push dword [esp + 0x30]
lea eax, [esp + 0x24]
push dword [esp + 0x54]
push str.CInstallationInfo::DetectInstalledProducts_found__d_upgrade_codes_for__s
push eax
call fcn.00404520
add esp, 0x10
lea ecx, [esp + 0xc0]
push 0x63bfdc
call fcn.004021e0
xor ecx, ecx
call fcn.004051a0
mov ebx, eax
mov byte [esp + 0x370], 0x12
mov esi, dword [esp + 0xc0]
push ecx
mov ecx, dword [esi - 0x10]
mov dword [esp + 0x28], esp
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [esi - 4], 0
lea edx, [esi - 4]
mov ecx, eax
jl 0x42d8ba
cmp ecx, dword [esi - 0x10]
jne 0x42d8ba
lea edi, [esi - 0x10]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x42d8f3
mov eax, dword [ecx]
push 2
push dword [esi - 0xc]
call dword [eax]
mov edi, eax
test edi, edi
je 0x42e171
mov ecx, dword [esi - 0xc]
mov dword [edi + 4], ecx
mov ecx, dword [esi - 0xc]
lea eax, [ecx*2 + 2]
push eax
lea eax, [ecx*2 + 2]
push esi
push eax
lea eax, [edi + 0x10]
push eax
call fcn.005bc17a
add esp, 0x10
mov ecx, dword [esp + 0x28]
push 0
push 0
lea eax, [edi + 0x10]
mov dword [ecx], eax
lea eax, [esp + 0x2c]
push eax
push 0x4ba
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldBgDwldInstallData.cpp
push 0
push 1
mov ecx, ebx
call fcn.004055a0
mov byte [esp + 0x370], 0x11
mov edx, dword [esp + 0xc0]
add edx, 0xfffffff0
or esi, 0xffffffff
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42d945
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x370], 0x10
mov edx, dword [esp + 0x20]
add edx, 0xfffffff0
mov ecx, esi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42d96a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esp + 0x4c]
mov edi, dword [eax]
cmp edi, eax
je 0x42df44
mov esi, dword [edi + 0x10]
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [esi - 4], 0
lea edx, [esi - 4]
mov ecx, eax
jl 0x42d9a1
cmp ecx, dword [esi - 0x10]
jne 0x42d9a1
lea ebx, [esi - 0x10]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x42d9da
mov eax, dword [ecx]
push 2
push dword [esi - 0xc]
call dword [eax]
mov ebx, eax
test ebx, ebx
je 0x42e171
mov ecx, dword [esi - 0xc]
mov dword [ebx + 4], ecx
mov ecx, dword [esi - 0xc]
lea eax, [ecx*2 + 2]
push eax
lea eax, [ecx*2 + 2]
push esi
push eax
lea eax, [ebx + 0x10]
push eax
call fcn.005bc17a
add esp, 0x10
add ebx, 0x10
mov dword [esp + 0x3c], ebx
lea eax, [esp + 0x104]
push eax
push 0
push 0
push ebx
mov byte [esp + 0x380], 0x13
call dword [sym.imp.msi.dll_MsiSourceListClearAllW]
push 0x63bfdc
lea ecx, [esp + 0x60]
mov esi, eax
mov dword [esp + 0x28], 1
call fcn.004021e0
mov byte [esp + 0x370], 0x14
test esi, esi
jne 0x42deb1
lea esi, [ebx - 0x10]
jmp 0x42da30
push ecx
lea eax, [esp + 0x108]
mov ecx, esp
mov dword [esp + 0x38], esp
push eax
call fcn.004021e0
mov byte [esp + 0x374], 0x15
push ecx
mov ecx, dword [esi]
mov dword [esp + 0x74], esp
mov eax, dword [ecx]
mov dword [esp + 0x1c], esp
call dword [eax + 0x10]
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
mov ecx, eax
jl 0x42da76
cmp ecx, dword [esi]
jne 0x42da76
mov eax, 1
lock xadd dword [edx], eax
jmp 0x42daaf
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov esi, eax
test esi, esi
je 0x42e171
mov ecx, dword [ebx - 0xc]
mov dword [esi + 4], ecx
mov ecx, dword [ebx - 0xc]
lea eax, [ecx*2 + 2]
push eax
lea eax, [ecx*2 + 2]
push ebx
push eax
lea eax, [esi + 0x10]
push eax
call fcn.005bc17a
add esp, 0x10
mov ecx, dword [esp + 0x1c]
lea eax, [esi + 0x10]
mov dword [ecx], eax
mov byte [esp + 0x378], 0x16
mov esi, dword [esp + 0x38]
push ecx
mov ecx, dword [esi - 0x10]
add esi, 0xfffffff0
mov eax, dword [ecx]
mov dword [esp + 0x2c], esp
call dword [eax + 0x10]
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
mov ecx, eax
jl 0x42daee
cmp ecx, dword [esi]
jne 0x42daee
mov eax, 1
lock xadd dword [edx], eax
jmp 0x42db32
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov edx, eax
mov dword [esp + 0x20], edx
test edx, edx
je 0x42e171
mov ecx, dword [esi + 4]
mov dword [edx + 4], ecx
mov ecx, dword [esi + 4]
lea eax, [ecx*2 + 2]
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [ecx*2 + 2]
push eax
lea eax, [edx + 0x10]
push eax
call fcn.005bc17a
mov esi, dword [esp + 0x30]
add esp, 0x10
mov ecx, dword [esp + 0x2c]
lea eax, [esi + 0x10]
mov dword [ecx], eax
lea ecx, [esp + 0x80]
mov byte [esp + 0x37c], 0x14
call fcn.0042d140
lea eax, [esp + 0x3c]
mov byte [esp + 0x370], 0x17
mov esi, dword [esp + 0x44]
push eax
lea ecx, [esp + 0x48]
call fcn.00420d90
cmp eax, dword [esp + 0x44]
je 0x42dbd8
mov edx, dword [eax + 0x10]
xor ecx, ecx
test edx, edx
setne cl
test ecx, ecx
je 0x42e0be
mov ecx, ebx
mov bx, word [ecx]
cmp bx, word [edx]
mov ebx, dword [esp + 0x3c]
jne 0x42dbba
cmp word [ecx], 0
je 0x42dbb6
mov bx, word [ecx + 2]
cmp bx, word [edx + 2]
mov word [esp + 0x20], bx
mov ebx, dword [esp + 0x3c]
jne 0x42dbba
add ecx, 4
add edx, 4
cmp word [esp + 0x20], 0
jne 0x42db83
xor ecx, ecx
jmp 0x42dbbf
sbb ecx, ecx
or ecx, 1
test ecx, ecx
sets cl
test cl, cl
jne 0x42dbd8
mov dword [esp + 0xf8], eax
lea ecx, [esp + 0xf8]
jmp 0x42dbea
mov eax, dword [esp + 0x44]
mov dword [esp + 0xe8], eax
lea ecx, [esp + 0xe8]
movzx eax, byte [esp + 0x80]
cmp dword [ecx], esi
mov ecx, 1
cmovne eax, ecx
mov byte [esp + 0x80], al
lea eax, [esp + 0x74]
push eax
call fcn.004302a0
call fcn.004a4516
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x42e0be
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 0x14], eax
push ebx
lea eax, [esp + 0x108]
push eax
mov byte [esp + 0x378], 0x18
push dword [esp + 0x38]
lea eax, [esp + 0x20]
push str.DETECTED_INSTALL_of__s__PC_s__UC_s
push eax
call fcn.00404520
add esp, 0x14
lea ecx, [esp + 0x58]
push 0x63bfdc
call fcn.004021e0
cmp dword [0x6c2038], 0
je 0x42dd06
push 0x6c1e1c
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edx, dword [0x6c2034]
mov esi, 1
mov eax, dword [edx + 4]
mov ecx, edx
cmp byte [eax + 0xd], 0
jne 0x42dcc1
cmp dword [eax + 0x10], 0
jge 0x42dc9d
mov eax, dword [eax + 8]
jmp 0x42dca1
mov ecx, eax
mov eax, dword [eax]
cmp byte [eax + 0xd], 0
je 0x42dc92
cmp ecx, edx
je 0x42dcc1
cmp dword [ecx + 0x10], 0
jg 0x42dcc1
mov dword [esp + 0xec], ecx
lea eax, [esp + 0xec]
jmp 0x42dccf
mov dword [esp + 0xdc], edx
lea eax, [esp + 0xdc]
mov eax, dword [eax]
cmp eax, edx
je 0x42dcf2
mov eax, dword [eax + 0x14]
mov dword [esp + 0x20], eax
test esi, esi
jle 0x42dd0e
push 0x6c1e1c
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
dec esi
test esi, esi
jg 0x42dce0
jmp 0x42dd0e
test esi, esi
jle 0x42dd06
push 0x6c1e1c
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
dec esi
test esi, esi
jg 0x42dcf6
mov dword [esp + 0x20], 0x6c203c
mov byte [esp + 0x370], 0x19
mov esi, dword [esp + 0x58]
push ecx
mov ecx, dword [esi - 0x10]
add esi, 0xfffffff0
mov eax, dword [ecx]
mov dword [esp + 0x38], esp
call dword [eax + 0x10]
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
mov ecx, eax
jl 0x42dd44
cmp ecx, dword [esi]
jne 0x42dd44
mov eax, 1
lock xadd dword [edx], eax
jmp 0x42dd8b
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov edx, eax
mov dword [esp + 0x70], edx
test edx, edx
je 0x42e171
mov ecx, dword [esi + 4]
mov dword [edx + 4], ecx
mov ecx, dword [esi + 4]
lea eax, [ecx*2 + 2]
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [ecx*2 + 2]
push eax
lea eax, [edx + 0x10]
push eax
call fcn.005bc17a
mov esi, dword [esp + 0x80]
add esp, 0x10
mov ecx, dword [esp + 0x38]
push 0
push 0
lea eax, [esi + 0x10]
mov dword [ecx], eax
mov ecx, dword [esp + 0x2c]
lea eax, [esp + 0x20]
push eax
push 0x4d7
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldBgDwldInstallData.cpp
push 0
push 1
call fcn.004055a0
mov byte [esp + 0x370], 0x18
mov edx, dword [esp + 0x58]
add edx, 0xfffffff0
or esi, 0xffffffff
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42dddc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x370], 0x17
mov edx, dword [esp + 0x14]
add edx, 0xfffffff0
mov ecx, esi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42de01
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [esp + 0x24]
lea eax, [esp + 0x104]
push eax
push esi
push 0
push ebx
call dword [sym.imp.msi.dll_MsiSourceListClearAllW]
inc esi
mov dword [esp + 0x24], esi
mov byte [esp + 0x370], 0x14
mov esi, dword [esp + 0x84]
add esi, 0xfffffff0
mov dword [esp + 0x34], eax
lea ecx, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42de49
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [esp + 0x7c]
add edx, 0xfffffff0
or esi, 0xffffffff
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42de69
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [esp + 0x78]
add edx, 0xfffffff0
mov ecx, esi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42de86
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [esp + 0x74]
add edx, 0xfffffff0
mov ecx, esi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42dea3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [esp + 0x34], 0
lea esi, [ebx - 0x10]
je 0x42da30
mov byte [esp + 0x370], 0x13
mov edx, dword [esp + 0x5c]
add edx, 0xfffffff0
or esi, 0xffffffff
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42ded9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add ebx, 0xfffffff0
mov byte [esp + 0x370], 0x10
lea eax, [ebx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42defa
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [edi + 0xd], 0
jne 0x42df3a
mov eax, dword [edi + 8]
cmp byte [eax + 0xd], 0
jne 0x42df1f
mov edi, eax
mov eax, dword [edi]
cmp byte [eax + 0xd], 0
jne 0x42df3a
mov edi, eax
mov eax, dword [edi]
cmp byte [eax + 0xd], 0
je 0x42df13
jmp 0x42df3a
mov eax, dword [edi + 4]
cmp byte [eax + 0xd], 0
jne 0x42df38
cmp edi, dword [eax + 8]
jne 0x42df38
mov edi, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0xd], 0
je 0x42df28
mov edi, eax
cmp edi, dword [esp + 0x4c]
jne 0x42d978
mov byte [esp + 0x370], 0xf
mov eax, dword [esp + 0x44]
push eax
push dword [eax]
lea eax, [esp + 0x48]
push eax
lea ecx, [esp + 0x50]
call fcn.00430c30
push dword [esp + 0x44]
call fcn.004996ff
add esp, 4
mov byte [esp + 0x370], 0xe
mov eax, dword [esp + 0x4c]
push eax
push dword [eax]
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x58]
call fcn.00430c30
push dword [esp + 0x4c]
call fcn.004996ff
mov ecx, dword [esp + 0xc8]
add esp, 4
test ecx, ecx
je 0x42dfe2
push dword [esp + 0x2c]
mov edx, dword [esp + 0xcc]
push ecx
call fcn.00431d80
push dword [esp + 0xcc]
call fcn.004996ff
add esp, 0xc
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xcc], 0
mov ecx, dword [esp + 0xd0]
test ecx, ecx
je 0x42e02e
push dword [esp + 0x2c]
mov edx, dword [esp + 0xd8]
push ecx
call fcn.00431d80
push dword [esp + 0xd8]
call fcn.004996ff
add esp, 0xc
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd8], 0
mov byte [esp + 0x370], 8
mov edx, dword [esp + 0x28]
mov ecx, esi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42e050
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x370], 6
mov edx, dword [esp + 0x18]
mov ecx, esi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42e072
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [esp + 0x370], 0xffffffff
mov edx, dword [esp + 0x30]
add edx, 0xfffffff0
mov ecx, esi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42e09a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [esp + 0x1c]
inc ecx
mov dword [esp + 0x1c], ecx
cmp ecx, 0x2e
jl 0x42d416
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x42e0c8
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x14], eax
mov dword [esp + 0x370], 0x1a
mov ecx, dword [0x6c20b4]
sub ecx, dword [0x6c20b0]
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
lea eax, [esp + 0x18]
push str.CInstallationInfo::DetectInstalledProducts_found__d_installations
push eax
call fcn.00404520
add esp, 0xc
lea ecx, [esp + 0x1c]
push 0x63bfdc
call fcn.004021e0
xor ecx, ecx
call fcn.004051a0
mov ebx, eax
mov byte [esp + 0x370], 0x1b
mov esi, dword [esp + 0x1c]
push ecx
mov ecx, dword [esi - 0x10]
mov dword [esp + 0x1c], esp
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [esi - 4], 0
mov ecx, eax
lea eax, [esi - 4]
jl 0x42e162
cmp ecx, dword [esi - 0x10]
jne 0x42e162
lea edi, [esi - 0x10]
mov ecx, 1
lock xadd dword [eax], ecx
inc ecx
jmp 0x42e19c
mov eax, dword [ecx]
push 2
push dword [esi - 0xc]
call dword [eax]
mov edi, eax
test edi, edi
jne 0x42e176
call fcn.00401f40
mov eax, dword [esi - 0xc]
mov dword [edi + 4], eax
mov ecx, dword [esi - 0xc]
lea eax, [ecx*2 + 2]
push eax
lea eax, [ecx*2 + 2]
push esi
push eax
lea eax, [edi + 0x10]
push eax
call fcn.005bc17a
add esp, 0x10
mov ecx, dword [esp + 0x1c]
push 0
push 0
lea eax, [edi + 0x10]
mov dword [ecx], eax
lea eax, [esp + 0x20]
push eax
push 0x4e3
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldBgDwldInstallData.cpp
push 0
push 1
mov ecx, ebx
call fcn.004055a0
mov byte [esp + 0x370], 0x1a
mov edx, dword [esp + 0x1c]
add edx, 0xfffffff0
or ebx, 0xffffffff
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42e1eb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [esp + 0x370], 0xffffffff
mov esi, dword [esp + 0x14]
add esi, 0xfffffff0
mov ecx, ebx
lea eax, [esi + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42e213
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov edi, dword [0x6c20b0]
mov ecx, dword [0x6c20b4]
sub ecx, edi
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [esp + 0x58], edi
mov dword [esp + 0x34], eax
mov dword [esp + 0x24], 0
test eax, eax
jle 0x42e4cc
xor ebx, ebx
mov dword [esp + 0x30], ebx
mov eax, dword [edi + ebx]
sub eax, 0x10
push eax
call fcn.004046f0
lea esi, [eax + 0x10]
add esp, 4
mov dword [esp + 0x2c], esi
mov dword [esp + 0x370], 0x1c
cmp dword [esi - 0xc], 0
je 0x42e642
mov eax, dword [edi + ebx + 4]
sub eax, 0x10
push eax
call fcn.004046f0
lea ebx, [eax + 0x10]
add esp, 4
mov dword [esp + 0x40], ebx
mov byte [esp + 0x370], 0x1f
mov eax, dword [esp + 0x30]
mov eax, dword [edi + eax + 8]
sub eax, 0x10
push eax
call fcn.004046f0
lea edi, [eax + 0x10]
add esp, 4
mov dword [esp + 0x6c], edi
push 0x204
lea eax, [esp + 0x15c]
mov byte [esp + 0x374], 0x20
push 0
push eax
mov dword [esp + 0x24], 0x104
mov dword [esp + 0x160], 0
call fcn.005c26e0
add esp, 0xc
lea eax, [esp + 0x18]
push eax
lea eax, [esp + 0x158]
push eax
push str.VersionString
push edi
call dword [sym.imp.msi.dll_MsiGetPropertyW]
mov dword [esp + 0x28], eax
test eax, eax
jne 0x42e349
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x30]
add eax, 0x10
lea edx, [esp + 0x154]
add ecx, eax
lea eax, [edx + 2]
mov dword [esp + 0x28], eax
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x42e325
sub edx, dword [esp + 0x28]
lea eax, [esp + 0x154]
sar edx, 1
push edx
push eax
call fcn.00402090
jmp 0x42e436
call fcn.004a4516
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x42e0be
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 0x14], eax
push edi
mov byte [esp + 0x374], 0x21
push dword [esp + 0x2c]
lea eax, [esp + 0x1c]
push esi
push str.::MsiGetProductInfo_INSTALLPROPERTY_VERSIONSTRING__FAILED_for__s__error__d__pcode_s_
push eax
call fcn.00404520
add esp, 0x14
lea ecx, [esp + 0x1c]
push 0x63bfdc
call fcn.004021e0
xor ecx, ecx
call fcn.004051a0
mov dword [esp + 0x5c], eax
push ecx
mov byte [esp + 0x374], 0x22
mov ecx, dword [esp + 0x20]
add ecx, 0xfffffff0
mov dword [esp + 0x2c], esp
push ecx
call fcn.004046f0
mov ecx, dword [esp + 0x30]
add esp, 4
add eax, 0x10
push 0
push 0
mov dword [ecx], eax
mov ecx, dword [esp + 0x68]
lea eax, [esp + 0x20]
push eax
push 0x504
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldBgDwldInstallData.cpp
push 1
push 1
call fcn.004055a0
mov byte [esp + 0x370], 0x21
mov edx, dword [esp + 0x1c]
add edx, 0xfffffff0
or ecx, 0xffffffff
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42e410
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x370], 0x20
mov edx, dword [esp + 0x14]
add edx, 0xfffffff0
or ecx, 0xffffffff
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42e436
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
mov byte [esp + 0x370], 0x1f
lea eax, [edi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42e458
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
add ebx, 0xfffffff0
or edi, 0xffffffff
mov byte [esp + 0x370], 0x1c
lea eax, [ebx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42e47c
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov dword [esp + 0x370], 0xffffffff
lea eax, [esi + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42e4a0
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x30]
inc eax
add ebx, 0x38
mov dword [esp + 0x24], eax
mov dword [esp + 0x30], ebx
cmp eax, dword [esp + 0x34]
jge 0x42e4c9
mov edi, dword [0x6c20b0]
mov dword [esp + 0x58], edi
jmp 0x42e252
or ebx, 0xffffffff
push ecx
lea eax, [esp + 0x6c]
push eax
lea eax, [esp + 0xf8]
push eax
push str.DummyInstalls
mov edx, str.SoftwareSolidWorksIM
mov ecx, SysReAllocStringLen
mov dword [esp + 0x78], 0
mov dword [esp + 0x100], 4
call fcn.00417820
add esp, 0x10
test byte [esp + 0x68], 4
je 0x42ed80
push 0x63bfdc
lea ecx, [esp + 0x20]
call fcn.004021e0
mov dword [esp + 0x370], 0x23
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
push eax
call fcn.004046f0
mov dword [esp + 0x374], 0xffffffff
mov edx, dword [esp + 0x20]
lea edi, [eax + 0x10]
add edx, 0xfffffff0
add esp, 4
mov dword [esp + 0xb4], edi
mov dword [esp + 0xb8], 0xffffffff
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42e575
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [esp + 0x370], 0x24
mov eax, dword [0x6c1e7c]
test eax, eax
jne 0x42e593
call fcn.0041eb60
mov eax, dword [0x6c1e7c]
cmp eax, 2
sete al
xor ebx, ebx
test al, al
sete bl
sub esp, 8
add edi, 0xfffffff0
mov esi, esp
push edi
mov byte [esp + 0x2c], al
mov dword [esp + 0x30], edi
inc ebx
mov dword [esp + 0xc4], ebx
call fcn.004046f0
add eax, 0x10
mov dword [esi], eax
add esp, 4
xor dl, dl
xor ecx, ecx
mov dword [esi + 4], ebx
call fcn.0042cec0
mov esi, eax
add esp, 8
test esi, esi
je 0x42ed5e
lea ecx, [esp + 0x28]
call fcn.00416ef0
push ecx
mov ecx, esp
push 0x63bfdc
mov byte [esp + 0x378], 0x25
call fcn.004021e0
lea ecx, [esp + 0x78]
call fcn.00444c70
test byte [esp + 0x68], 1
je 0x42e720
movq xmm0, qword [esi + 8]
movq qword [esp + 0x4c], xmm0
movq xmm0, qword [esi + 0x10]
movq qword [esp + 0x44], xmm0
movq xmm0, qword [esi + 0x18]
movq qword [esp + 0x5c], xmm0
movq xmm0, qword [esi + 0x20]
movq qword [esp + 0x34], xmm0
jmp 0x42e756
push str.INTERNAL_ERROR:_DetectInstalledProduct_received_NULL_product_ID
lea ecx, [esp + 0x28]
call fcn.004021e0
push 0x63bfdc
lea ecx, [esp + 0x20]
mov byte [esp + 0x374], 0x1d
call fcn.004021e0
xor ecx, ecx
call fcn.004051a0
mov ebx, eax
push ecx
mov byte [esp + 0x374], 0x1e
mov ecx, dword [esp + 0x20]
add ecx, 0xfffffff0
mov edi, esp
push ecx
call fcn.004046f0
add esp, 4
add eax, 0x10
push 0
push 0
mov dword [edi], eax
lea eax, [esp + 0x30]
push eax
push 0x4ef
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldBgDwldInstallData.cpp
push 1
push 1
mov ecx, ebx
call fcn.004055a0
mov byte [esp + 0x370], 0x1d
mov edx, dword [esp + 0x1c]
add edx, 0xfffffff0
or ebx, 0xffffffff
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42e6d5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [esp + 0x370], 0x1c
mov edx, dword [esp + 0x24]
add edx, 0xfffffff0
mov ecx, ebx
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42e6fa
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov dword [esp + 0x370], 0xffffffff
lea eax, [esi + 0xc]
lock xadd dword [eax], ebx
dec ebx
test ebx, ebx
jg 0x42ed80
mov ecx, dword [esi]
push esi
jmp 0x42ed7b
movq xmm0, qword [esp + 0x8c]
movq qword [esp + 0x34], xmm0
movq xmm0, qword [esp + 0x84]
movq qword [esp + 0x5c], xmm0
movq xmm0, qword [esp + 0x7c]
movq qword [esp + 0x44], xmm0
movq xmm0, qword [esp + 0x74]
movq qword [esp + 0x4c], xmm0
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x42e772
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [esp + 0x14], eax
lea eax, [esp + 0x18]
push eax
lea ecx, [esi + 8]
mov byte [esp + 0x374], 0x26
call fcn.00446970
mov byte [esp + 0x370], 0x27
push dword [eax]
lea eax, [esp + 0x18]
push str.Detected_Dummy_Install:__s__will_add_some_dummy_products_if_2010_SP0_or_SP1EV
push eax
call fcn.00404520
mov byte [esp + 0x37c], 0x26
mov edx, dword [esp + 0x24]
add edx, 0xfffffff0
or ebx, 0xffffffff
add esp, 0xc
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42e7d9
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push ecx
mov ecx, esp
push 0x63bfdc
call fcn.004021e0
push 0
lea eax, [esp + 0x1c]
push eax
push 0x521
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldBgDwldInstallData.cpp
push 0
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
mov byte [esp + 0x370], 0x25
mov edx, dword [esp + 0x14]
add edx, 0xfffffff0
mov ecx, ebx
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42e82e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push ecx
mov ecx, esp
mov dword [esp + 0x30], esp
push 0x644b84
call fcn.004021e0
mov byte [esp + 0x374], 0x28
mov bh, byte [esp + 0x24]
mov ecx, str.D0220929_AF18_11D3_AEA4_00C04F79FCDD
push ecx
mov eax, str.08C6EE6B_2F4A_49AF_B1FB_4F60C5C317AF
test bh, bh
cmove eax, ecx
mov ecx, esp
mov dword [esp + 0x48], esp
push eax
call fcn.004021e0
push ecx
mov byte [esp + 0x37c], 0x29
mov ecx, esp
push dword [0x63adb8]
call fcn.004021e0
lea ecx, [esp + 0x80]
mov byte [esp + 0x37c], 0x25
call fcn.0042d140
push 0x13
push str.DummyProductVersion
lea ecx, [esp + 0x8c]
mov byte [esp + 0x378], 0x2a
call fcn.00402090
mov eax, dword [esi + 8]
movsd xmm1, qword [0x654680]
xorps xmm2, xmm2
movsd qword [esp + 0x6c], xmm2
movsd qword [esp + 0xdc], xmm1
cmp eax, 0x7da
jne 0x42e912
movsd xmm0, qword [esi + 0x18]
ucomisd xmm0, xmm2
lahf
test ah, 0x44
jp 0x42e8eb
push 0xb
push str.18.100.5035
jmp 0x42e96b
ucomisd xmm0, xmm1
lahf
test ah, 0x44
jp 0x42e977
cmp dword [esi + 0x20], 2
jne 0x42e977
push str.18.110.72
lea ecx, [esp + 0x88]
call fcn.00402190
jmp 0x42e977
cmp eax, 0x7db
jne 0x42e977
lea eax, [esp + 0x18]
push eax
lea ecx, [esi + 8]
call fcn.004457a0
push str.20110_20100_0100
push dword [eax]
call fcn.005be8d5
add esp, 8
test eax, eax
mov byte [esp + 0x370], 0x2a
mov edx, dword [esp + 0x18]
sete bl
add edx, 0xfffffff0
or ecx, 0xffffffff
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42e960
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test bl, bl
je 0x42e977
push 0xb
push str.19.020.1060
lea ecx, [esp + 0x8c]
call fcn.00402090
movq xmm0, qword [esp + 0x4c]
movq qword [esp + 0x8c], xmm0
movq xmm0, qword [esp + 0x44]
movq qword [esp + 0x94], xmm0
movq xmm0, qword [esp + 0x5c]
movq qword [esp + 0x9c], xmm0
movq xmm0, qword [esp + 0x34]
lea eax, [esp + 0x74]
push eax
movq qword [esp + 0xa8], xmm0
call fcn.004302a0
lea ecx, [esp + 0x74]
mov byte [esp + 0x370], 0x25
call fcn.0042edb0
push ecx
mov ecx, esp
mov dword [esp + 0x30], esp
push 0x644b84
call fcn.004021e0
mov ecx, str.A826C3D0_0240_439D_8AEA_14662CC022E5
push ecx
mov eax, str.42751C64_918F_4F8A_98D3_3CA2A79BFD23
test bh, bh
cmove eax, ecx
mov byte [esp + 0x378], 0x2c
mov ecx, esp
mov dword [esp + 0x48], esp
push eax
call fcn.004021e0
push ecx
mov byte [esp + 0x37c], 0x2d
mov ecx, esp
push dword [0x63ae20]
call fcn.004021e0
lea ecx, [esp + 0x80]
mov byte [esp + 0x37c], 0x25
call fcn.0042d140
push 0x13
push str.DummyProductVersion
lea ecx, [esp + 0x8c]
mov byte [esp + 0x378], 0x2e
call fcn.00402090
cmp dword [esi + 8], 0x7db
jne 0x42eaaf
lea eax, [esp + 0x18]
push eax
lea ecx, [esi + 8]
call fcn.004457a0
push str.20110_20100_0100
push dword [eax]
call fcn.005be8d5
add esp, 8
test eax, eax
mov byte [esp + 0x370], 0x2e
mov edx, dword [esp + 0x18]
sete bl
add edx, 0xfffffff0
or ecx, 0xffffffff
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42ea98
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test bl, bl
je 0x42eaaf
push 0xb
push str.19.020.1060
lea ecx, [esp + 0x8c]
call fcn.00402090
movq xmm0, qword [esp + 0x4c]
movq qword [esp + 0x8c], xmm0
movq xmm0, qword [esp + 0x44]
movq qword [esp + 0x94], xmm0
movq xmm0, qword [esp + 0x5c]
movq qword [esp + 0x9c], xmm0
movq xmm0, qword [esp + 0x34]
lea eax, [esp + 0x74]
push eax
movq qword [esp + 0xa8], xmm0
call fcn.004302a0
lea ecx, [esp + 0x74]
mov byte [esp + 0x370], 0x25
call fcn.0042edb0
push ecx
mov ecx, esp
mov dword [esp + 0x30], esp
push 0x644b84
call fcn.004021e0
push ecx
mov byte [esp + 0x378], 0x30
mov ecx, esp
mov dword [esp + 0x48], esp
push str.1F17BDCA_4165_4038_AFF1_78854F4533D1
call fcn.004021e0
push ecx
mov byte [esp + 0x37c], 0x31
mov ecx, esp
push dword [0x63adbc]
call fcn.004021e0
lea ecx, [esp + 0x80]
mov byte [esp + 0x37c], 0x25
call fcn.0042d140
push 0x13
push str.DummyProductVersion
lea ecx, [esp + 0x8c]
mov byte [esp + 0x378], 0x32
call fcn.00402090
cmp dword [esi + 8], 0x7da
jne 0x42ebca
movsd xmm0, qword [esi + 0x18]
ucomisd xmm0, qword [esp + 0x6c]
lahf
test ah, 0x44
jp 0x42eba4
push 8
push str.10.0.727
lea ecx, [esp + 0x8c]
call fcn.00402090
jmp 0x42ebca
ucomisd xmm0, qword [esp + 0xdc]
lahf
test ah, 0x44
jp 0x42ebca
cmp dword [esi + 0x20], 2
jne 0x42ebca
push str.10.1.155
lea ecx, [esp + 0x88]
call fcn.00402190
movq xmm0, qword [esp + 0x4c]
movq qword [esp + 0x8c], xmm0
movq xmm0, qword [esp + 0x44]
movq qword [esp + 0x94], xmm0
movq xmm0, qword [esp + 0x5c]
movq qword [esp + 0x9c], xmm0
movq xmm0, qword [esp + 0x34]
lea eax, [esp + 0x74]
push eax
movq qword [esp + 0xa8], xmm0
call fcn.004302a0
lea ecx, [esp + 0x74]
mov byte [esp + 0x370], 0x25
call fcn.0042edb0
push ecx
mov ecx, esp
mov dword [esp + 0x30], esp
push 0x644b84
call fcn.004021e0
push ecx
mov byte [esp + 0x378], 0x33
mov ecx, esp
mov dword [esp + 0x48], esp
push str.0823034A_572D_4935_A293_D9BE766D5F4C
call fcn.004021e0
push ecx
mov byte [esp + 0x37c], 0x34
mov ecx, esp
push dword [0x63add0]
call fcn.004021e0
lea ecx, [esp + 0x80]
mov byte [esp + 0x37c], 0x25
call fcn.0042d140
push 0x13
push str.DummyProductVersion
lea ecx, [esp + 0x8c]
mov byte [esp + 0x378], 0x35
call fcn.00402090
cmp dword [esi + 8], 0x7da
jne 0x42ece5
movsd xmm0, qword [esi + 0x18]
ucomisd xmm0, qword [esp + 0x6c]
lahf
test ah, 0x44
jp 0x42ecbf
push 0xa
push str.18.00.5035
lea ecx, [esp + 0x8c]
call fcn.00402090
jmp 0x42ece5
ucomisd xmm0, qword [esp + 0xdc]
lahf
test ah, 0x44
jp 0x42ece5
cmp dword [esi + 0x20], 2
jne 0x42ece5
push str.18.10.72
lea ecx, [esp + 0x88]
call fcn.00402190
movq xmm0, qword [esp + 0x4c]
movq qword [esp + 0x8c], xmm0
movq xmm0, qword [esp + 0x44]
movq qword [esp + 0x94], xmm0
movq xmm0, qword [esp + 0x5c]
movq qword [esp + 0x9c], xmm0
movq xmm0, qword [esp + 0x34]
lea eax, [esp + 0x74]
push eax
movq qword [esp + 0xa8], xmm0
call fcn.004302a0
lea ecx, [esp + 0x74]
call fcn.0042edb0
mov byte [esp + 0x370], 0x24
mov edx, dword [esp + 0x28]
add edx, 0xfffffff0
or ecx, 0xffffffff
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42ed5a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [esp + 0x24]
mov dword [esp + 0x370], 0xffffffff
lea eax, [edi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42ed80
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [esp + 0x368]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x350]
xor ecx, esp
call fcn.005bc16b
mov esp, ebp
pop ebp
ret