Function at 0x402630
Capabilities:
Check mutex on windows
Identify system language via api
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5ef7e6
mov eax, dword fs:[0]
push eax
sub esp, 0xb4c
mov eax, dword [0x6b7e40]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov ebx, ecx
mov dword [ebp - 0xa20], ebx
mov dword [ebp - 0xa28], ebx
mov dword [ebx + 0x20], 0
call fcn.004a74de
test eax, eax
jne 0x402690
push 0xffffffffffffffff
push eax
push 0x66
call fcn.004a7620
xor eax, eax
jmp 0x403c85
push 0
call fcn.004a7a90
add esp, 4
lea ecx, [ebp - 0xa58]
call fcn.004a5a8b
lea eax, [ebp - 0xa58]
push eax
mov ecx, ebx
mov dword [ebp - 4], 0
call fcn.004a6518
lea ecx, [ebp - 0xb58]
mov byte [ebp - 0x9f9], 0
call fcn.00422780
push 1
push 0x100000
lea ecx, [ebp - 0xb58]
mov byte [ebp - 4], 1
call fcn.00422d10
mov eax, dword [ebp - 0xa64]
push dword [ebx + 0x48]
shr eax, 1
and eax, 0xffffff01
lea ecx, [ebp - 0xa00]
mov dword [ebp - 0x9f8], eax
call fcn.004021e0
mov byte [ebp - 4], 2
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x402723
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0xa1c], eax
push str.launch_from
lea eax, [ebp - 0xa1c]
push 0x63c098
push eax
mov byte [ebp - 4], 3
call fcn.00404520
mov edi, dword [ebp - 0xa1c]
add esp, 0xc
test edi, edi
je 0x4028b4
mov eax, dword [ebp - 0xa00]
cmp dword [eax - 0xc], 0
jl 0x4028b4
push edi
push eax
call fcn.005bda07
mov ecx, eax
add esp, 8
test ecx, ecx
je 0x4028b4
sub ecx, dword [ebp - 0xa00]
sar ecx, 1
js 0x4028b4
mov eax, dword [edi - 0xc]
inc eax
add eax, ecx
push eax
lea eax, [ebp - 0xa04]
push eax
lea ecx, [ebp - 0xa00]
call fcn.00404030
lea ecx, [ebp - 0xa04]
mov byte [ebp - 4], 4
call fcn.00403f80
mov esi, dword [ebp - 0xa04]
cmp dword [esi - 0xc], 0
jl 0x40282f
push 0x63c0a0
push esi
call fcn.005bda07
add esp, 8
test eax, eax
je 0x40282f
sub eax, esi
sar eax, 1
test eax, eax
jle 0x40282f
push eax
lea eax, [ebp - 0x9f4]
push eax
lea ecx, [ebp - 0xa04]
call fcn.00404680
push eax
lea ecx, [ebp - 0xa04]
mov byte [ebp - 4], 5
call fcn.00404570
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x9f4]
add edx, 0xfffffff0
or ebx, 0xffffffff
lea ecx, [edx + 0xc]
mov eax, ebx
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x402827
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0xa04]
jmp 0x402832
or ebx, 0xffffffff
push 0xa
push 0
push esi
call fcn.005bc96e
mov ecx, dword [ebp - 0xa20]
add esp, 0xc
mov dword [ecx + 0xf8], eax
cmp eax, 3
je 0x40285a
cmp eax, 4
je 0x40285d
cmp eax, 2
jne 0x402895
cmp eax, 4
sete al
mov byte [ebp - 0xa08], al
cmp al, byte [ebp - 0x9f8]
je 0x40288f
push ecx
push dword [ebp - 0xa08]
lea ecx, [ebp - 0xb58]
push 2
call fcn.00426110
mov al, byte [ebp - 0xa08]
mov byte [ebp - 0x9f9], 1
mov byte [ebp - 0x9f8], al
add esi, 0xfffffff0
mov byte [ebp - 4], 3
lea eax, [esi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4028b7
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x4028b7
or ebx, 0xffffffff
add edi, 0xfffffff0
mov byte [ebp - 4], 2
mov ecx, ebx
lea eax, [edi + 0xc]
lock xadd dword [eax], ecx
dec ecx
cmp byte [ebp - 0x9f8], 0
je 0x402922
test ecx, ecx
jg 0x4028dd
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov edx, dword [ebp - 0xa00]
add edx, 0xfffffff0
lea eax, [edx + 0xc]
lock xadd dword [eax], ebx
dec ebx
test ebx, ebx
jg 0x4028fe
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0xb58]
call fcn.004013d0
lea ecx, [ebp - 0xa58]
mov dword [ebp - 4], 0xffffffff
call fcn.004a5c45
xor eax, eax
jmp 0x403c85
test ecx, ecx
jg 0x40292e
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 1
mov edx, dword [ebp - 0xa00]
add edx, 0xfffffff0
mov ecx, ebx
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x402951
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0xb58]
mov byte [ebp - 4], 0
call fcn.004013d0
call fcn.004a368b
call fcn.0041c680
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x402986
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0xa04], esi
push 0x63bfdc
lea ecx, [ebp - 0xa00]
mov byte [ebp - 4], 6
call fcn.004021e0
push str.20160_40100_1100
lea ecx, [ebp - 0xa00]
mov byte [ebp - 4], 7
call fcn.00404410
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4029da
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x9f8], edi
push 0x63ca44
lea ecx, [ebp - 0x9f4]
mov byte [ebp - 4], 8
call fcn.004021e0
push str.SoftwareSolidWorksIM
lea ecx, [ebp - 0xa1c]
mov byte [ebp - 4], 9
call fcn.004021e0
mov byte [ebp - 4], 0xa
xor eax, eax
mov word [ebp - 0x9f0], ax
lea eax, [ebp - 0xa08]
push eax
push 0x20019
push 0
push dword [ebp - 0xa1c]
mov dword [ebp - 0xa14], 0
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0xa24], 0x7d0
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x402ad1
lea eax, [ebp - 0xa24]
push eax
lea eax, [ebp - 0x9f0]
push eax
lea eax, [ebp - 0xa14]
push eax
push 0
push dword [ebp - 0x9f4]
push dword [ebp - 0xa08]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
push dword [ebp - 0xa08]
mov ebx, eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test ebx, ebx
jne 0x402ad1
lea ecx, [ebp - 0x9f0]
lea edx, [ecx + 2]
lea ebx, [ebx]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x402aa0
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x9f0]
push eax
lea ecx, [ebp - 0x9f8]
call fcn.00402090
mov edi, dword [ebp - 0x9f8]
mov byte [ebp - 0x9fa], 1
jmp 0x402ad8
mov byte [ebp - 0x9fa], 0
mov byte [ebp - 4], 9
mov edx, dword [ebp - 0xa1c]
add edx, 0xfffffff0
or ebx, 0xffffffff
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x402afe
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 8
mov edx, dword [ebp - 0x9f4]
add edx, 0xfffffff0
mov ecx, ebx
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x402b21
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp - 0x9fa], 0
je 0x402b5c
lea eax, [ebp - 0x9f8]
push eax
lea ecx, [ebp - 0xa00]
call fcn.00404570
push dword [ebp - 0xa00]
lea eax, [ebp - 0xa04]
push str.Obtained_background_downloader_version_from_suite_version_override:__s
push eax
call fcn.00404520
mov esi, dword [ebp - 0xa04]
add esp, 0xc
mov eax, dword [ebp - 0xa00]
cmp dword [eax - 0xc], 0
je 0x402b90
push ecx
add eax, 0xfffffff0
mov ebx, esp
push eax
call fcn.004046f0
mov ecx, dword [ebp - 0xa20]
add eax, 0x10
add esp, 4
lea ecx, [ecx + 0xd8]
mov dword [ebx], eax
call fcn.00444f10
or ebx, 0xffffffff
mov eax, dword [ebp - 0xa20]
add eax, 0xd8
mov dword [ebp - 0xa08], eax
cmp dword [eax], 0x7d8
jge 0x402bfd
push str.20160_40100_1100
lea ecx, [ebp - 0xa00]
call fcn.00404410
push dword [ebp - 0xa00]
lea eax, [ebp - 0xa04]
push str.Obtained_background_downloader_version_from_IM_SUITEVERSION_STRING:__s
push eax
call fcn.00404520
mov eax, dword [ebp - 0xa00]
add esp, 8
add eax, 0xfffffff0
mov esi, esp
push eax
call fcn.004046f0
mov ecx, dword [ebp - 0xa08]
add eax, 0x10
add esp, 4
mov dword [esi], eax
call fcn.00444f10
mov esi, dword [ebp - 0xa04]
add edi, 0xfffffff0
mov byte [ebp - 4], 7
lea eax, [edi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x402c1a
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0xa00]
add edx, 0xfffffff0
mov ecx, ebx
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x402c3d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [ebp - 0xa20]
lea eax, [ebp - 0xa14]
push eax
mov ecx, edi
call fcn.00402500
mov edx, dword [ebp - 0xa14]
add edx, 0xfffffff0
mov ecx, ebx
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x402c70
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
sub esp, 8
lea edx, [edi + 0xd0]
call fcn.00405210
add esp, 8
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x402c9d
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x9f8], eax
push str.20.0.0.1046
push 0x63c1f4
lea eax, [ebp - 0x9f8]
push str.sldBgDwld_build_version:__s__internal:__s_
push eax
mov byte [ebp - 4], 0xb
call fcn.00404520
add esp, 0xc
mov ecx, esp
push 0x63bfdc
call fcn.004021e0
push 0
lea eax, [ebp - 0x9f8]
push eax
push 0xf1
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 0
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0x9f8]
add edx, 0xfffffff0
mov ecx, ebx
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x402d23
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push dword [edi + 0x48]
lea ecx, [ebp - 0x9f4]
call fcn.004021e0
mov byte [ebp - 4], 0xc
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x402d51
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x9f8], eax
mov byte [ebp - 4], 0xd
push dword [ebp - 0x9f4]
lea eax, [ebp - 0x9f8]
push str.Command_line:__s
push eax
call fcn.00404520
add esp, 8
mov ecx, esp
push 0x63bfdc
call fcn.004021e0
push 0
lea eax, [ebp - 0x9f8]
push eax
push 0xf8
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 0
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
mov byte [ebp - 4], 0xc
mov edx, dword [ebp - 0x9f8]
add edx, 0xfffffff0
mov ecx, ebx
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x402dd3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0x9f4]
add edx, 0xfffffff0
mov ecx, ebx
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x402df6
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp byte [ebp - 0x9f9], 0
je 0x402e68
push str.RE_ENABLED_BACKGROUND_DOWNLOADING
lea ecx, [ebp - 0x9f4]
call fcn.004021e0
push ecx
mov ecx, esp
push 0x63bfdc
mov byte [ebp - 4], 0xe
call fcn.004021e0
push 0
lea eax, [ebp - 0x9f4]
push eax
push 0xfd
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 0
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0x9f4]
add edx, 0xfffffff0
mov ecx, ebx
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x402e68
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [ebp - 0xa08]
cmp dword [edi], 0
jne 0x402f3b
push str.INTERNAL_ERROR:_Background_Downloader_Version_could_not_be_obtained__defaulting_to_2011_Beta
lea ecx, [ebp - 0x9f4]
call fcn.004021e0
push ecx
mov ecx, esp
push 0x63bfdc
mov byte [ebp - 4], 0xf
call fcn.004021e0
push 0
lea eax, [ebp - 0x9f4]
push eax
push 0x102
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 1
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0x9f4]
add edx, 0xfffffff0
mov ecx, ebx
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x402ee0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push ecx
mov ecx, esp
push str.20110_10100_0100
call fcn.004021e0
mov ecx, edi
call fcn.00444f10
lea eax, [ebp - 0xa14]
push eax
mov ecx, edi
call fcn.004457a0
push eax
lea ecx, [ebp - 0xa04]
mov byte [ebp - 4], 0x10
call fcn.00404570
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0xa14]
add edx, 0xfffffff0
mov ecx, ebx
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x402f35
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0xa04]
cmp dword [esi - 0xc], 0
je 0x402fde
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x402f61
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x9f8], eax
push esi
lea eax, [ebp - 0x9f8]
push str.sldBgDwld_suite_version:__s
push eax
mov byte [ebp - 4], 0x11
call fcn.00404520
add esp, 8
mov ecx, esp
push 0x63bfdc
call fcn.004021e0
push 0
lea eax, [ebp - 0x9f8]
push eax
push 0x10b
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 0
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0x9f8]
add edx, 0xfffffff0
mov ecx, ebx
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x402fde
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x402ffa
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x9f4], eax
lea ecx, [ebp - 0x9f4]
mov byte [ebp - 4], 0x12
call fcn.00419550
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x403035
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x9f8], eax
mov byte [ebp - 4], 0x13
mov edi, dword [ebp - 0x9f4]
push edi
lea eax, [ebp - 0x9f8]
push str.Background_downloader_location:__s
push eax
call fcn.00404520
add esp, 8
mov ecx, esp
push 0x63bfdc
call fcn.004021e0
push 0
lea eax, [ebp - 0x9f8]
push eax
push 0x114
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 0
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
mov byte [ebp - 4], 0x12
mov edx, dword [ebp - 0x9f8]
add edx, 0xfffffff0
mov ecx, ebx
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4030b8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
mov byte [ebp - 4], 6
lea eax, [edi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4030d5
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4030f1
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0xa1c], eax
push 0x104
lea eax, [ebp - 0x220]
push eax
mov eax, dword [ebp - 0xa20]
mov byte [ebp - 4], 0x14
push dword [eax + 0x44]
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea ecx, [ebp - 0x220]
lea edx, [ecx + 2]
lea esp, [esp]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x403130
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x220]
push eax
lea ecx, [ebp - 0xa1c]
call fcn.00402090
mov ebx, dword [ebp - 0xa1c]
push ecx
lea eax, [ebx - 0x10]
xorps xmm0, xmm0
mov edi, esp
push eax
movlpd qword [ebp - 0xa18], xmm0
mov byte [ebp - 0x9f9], 1
mov dword [ebp - 0xa10], eax
call fcn.004046f0
mov dl, byte [ebp - 0x9f9]
add eax, 0x10
add esp, 4
lea ecx, [ebp - 0xa18]
mov dword [edi], eax
call fcn.00413f00
add esp, 4
test al, al
je 0x403281
push str._m__d__Y__H:_M:_S
lea eax, [ebp - 0x9f4]
push eax
lea ecx, [ebp - 0xa18]
call fcn.00404370
mov byte [ebp - 4], 0x15
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4031d7
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x9f8], eax
mov byte [ebp - 4], 0x16
push dword [ebp - 0x9f4]
lea eax, [ebp - 0x9f8]
push str.File_time_of_EXE:__s
push eax
call fcn.00404520
add esp, 8
mov ecx, esp
push 0x63bfdc
call fcn.004021e0
push 0
lea eax, [ebp - 0x9f8]
push eax
push 0x124
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 0
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
mov byte [ebp - 4], 0x15
mov edx, dword [ebp - 0x9f8]
add edx, 0xfffffff0
or edi, 0xffffffff
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40325c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x14
mov edx, dword [ebp - 0x9f4]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403284
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x403284
or edi, 0xffffffff
call fcn.00427f60
push 0xc
call fcn.004996c9
add esp, 4
mov dword [eax], 0xc
mov dword [eax + 8], 1
lea ecx, [ebp - 0xa2c]
push ecx
mov dword [ebp - 0xa14], eax
add eax, 4
push eax
push 1
mov dword [eax], 0
push str.D:_A_NP_0x001f0001___WD_
mov dword [ebp - 0xa0c], eax
mov dword [ebp - 0xa2c], 0
call dword [sym.imp.ADVAPI32.dll_ConvertStringSecurityDescriptorToSecurityDescriptorW]
test eax, eax
jne 0x403374
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4032f8
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x9f8], eax
lea eax, [ebp - 0x9f8]
push str.INTERNAL_ERROR:_setting_security_descriptor
push eax
mov byte [ebp - 4], 0x17
call fcn.00404520
add esp, 4
mov ecx, esp
push 0x63bfdc
call fcn.004021e0
push 0
lea eax, [ebp - 0x9f8]
push eax
push 0x138
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 1
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
mov byte [ebp - 4], 0x14
mov edx, dword [ebp - 0x9f8]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403374
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push str.SLDBGDWLD_AF6BF1C9_C5F0_4ada_BDAA_DD967FBF2B32
push 0
push dword [ebp - 0xa14]
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [ebp - 0xa08], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
sete byte [ebp - 0x9f9]
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x4033bb
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0xa00], eax
movzx edx, byte [ebp - 0x9f9]
push 0
lea ecx, [ebp - 0xa14]
mov byte [ebp - 4], 0x18
call fcn.00405500
mov byte [ebp - 4], 0x19
push dword [eax]
lea eax, [ebp - 0xa00]
push str.Already_running___s
push eax
call fcn.00404520
mov byte [ebp - 4], 0x18
mov edx, dword [ebp - 0xa14]
add edx, 0xfffffff0
add esp, 0x10
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403420
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, [ebp - 0xa00]
push eax
push 0x144
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 0
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
cmp byte [ebp - 0x9f9], 0
je 0x403560
mov ecx, 1
call fcn.004051a0
mov edi, dword [ebp - 0xa00]
push 0
push 0x46
push 2
push 2
push ecx
lea ecx, [edi - 0x10]
mov dword [ebp - 0xa14], esp
push ecx
mov dword [ebp - 0xa24], eax
call fcn.004046f0
mov ecx, dword [ebp - 0xa14]
add eax, 0x10
mov dword [ecx], eax
mov ecx, dword [ebp - 0xa24]
add esp, 4
mov eax, dword [ecx]
lea edx, [ebp - 0x9f4]
push edx
call dword [eax + 0xc]
xor ecx, ecx
mov byte [ebp - 4], 0x1a
call fcn.004051a0
push ecx
mov ecx, esp
mov dword [ebp - 0x9f8], esp
push 0x63bfdc
mov dword [ebp - 0xa14], eax
call fcn.004021e0
lea eax, [ebp - 0x9f4]
push eax
lea eax, [ebp - 0xa24]
push 0x63c594
push eax
mov byte [ebp - 4], 0x1b
call fcn.00404060
add esp, 0xc
mov byte [ebp - 4], 0x1c
mov ecx, dword [ebp - 0xa14]
push 0
mov edx, dword [ecx]
push 0x46
push eax
push 0x147
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 0
push 1
mov byte [ebp - 4], 0x1d
call dword [edx + 8]
mov byte [ebp - 4], 0x1a
mov edx, dword [ebp - 0xa24]
add edx, 0xfffffff0
or ecx, 0xffffffff
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40353a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x18
mov edx, dword [ebp - 0x9f4]
add edx, 0xfffffff0
or ecx, 0xffffffff
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403566
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x403566
mov edi, dword [ebp - 0xa00]
lea edx, [edi - 0x10]
or edi, 0xffffffff
mov byte [ebp - 4], 0x14
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403586
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa0c]
push dword [eax]
call dword [sym.imp.KERNEL32.dll_LocalFree]
cmp dword [ebp - 0xa08], 0
lea ecx, [ebp - 0x9f4]
je 0x4036d4
push str.WAITING_FOR_MUTEX
call fcn.004021e0
push ecx
mov ecx, esp
push 0x63bfdc
mov byte [ebp - 4], 0x1e
call fcn.004021e0
push 0
lea eax, [ebp - 0x9f4]
push eax
push 0x154
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 0
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
mov byte [ebp - 4], 0x14
mov edx, dword [ebp - 0x9f4]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40360a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0xea60
push dword [ebp - 0xa08]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea ecx, [ebp - 0x9f4]
cmp eax, 0x102
jne 0x40367c
push str.INTERNAL_ERROR:_Timeout_waiting_for_mutex_from_other_running_instance
call fcn.004021e0
push ecx
mov ecx, esp
push 0x63bfdc
mov byte [ebp - 4], 0x1f
call fcn.004021e0
push 0
lea eax, [ebp - 0x9f4]
push eax
push 0x159
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 1
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
lea ecx, [ebp - 0x9f4]
mov byte [ebp - 4], 0x14
call fcn.00401020
jmp 0x403737
push str.GOT_MUTEX
call fcn.004021e0
push ecx
mov ecx, esp
push 0x63bfdc
mov byte [ebp - 4], 0x20
call fcn.004021e0
push 0
lea eax, [ebp - 0x9f4]
push eax
push 0x15e
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 0
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
lea ecx, [ebp - 0x9f4]
mov byte [ebp - 4], 0x14
call fcn.00401020
mov byte [ebp - 0x9fa], 0
jmp 0x40373e
push str.INTERNAL_ERROR:_Could_not_get_the_Handle_to_the_mutex_to_wait_for
call fcn.004021e0
push ecx
mov ecx, esp
push 0x63bfdc
mov byte [ebp - 4], 0x21
call fcn.004021e0
push 0
lea eax, [ebp - 0x9f4]
push eax
push 0x164
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 1
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
mov byte [ebp - 4], 0x14
mov edx, dword [ebp - 0x9f4]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403737
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 0x9fa], 1
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x40375a
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x9f8], eax
lea ecx, [ebp - 0xa0c]
mov byte [ebp - 4], 0x22
call fcn.00419000
mov edi, eax
mov byte [ebp - 4], 0x23
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movzx ecx, ax
push ecx
push dword [edi]
lea eax, [ebp - 0x9f8]
push str.Current_language:__s__OS_language_ID___d_
push eax
call fcn.00404520
mov byte [ebp - 4], 0x22
mov edx, dword [ebp - 0xa0c]
add edx, 0xfffffff0
or edi, 0xffffffff
add esp, 0x10
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4037c5
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, [ebp - 0x9f8]
push eax
push 0x16d
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 0
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
mov byte [ebp - 4], 0x14
mov edx, dword [ebp - 0x9f8]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40381a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.004a4516
xor ecx, ecx
mov edx, eax
test edx, edx
setne cl
test ecx, ecx
jne 0x403836
push 0x80004005
call fcn.00402040
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x9f8], eax
lea ecx, [ebp - 0x9f4]
mov byte [ebp - 4], 0x24
call fcn.00416ef0
mov dword [ebp - 0xa0c], eax
lea ecx, [ebp - 0xa24]
mov byte [ebp - 4], 0x25
call fcn.00416e30
mov edi, eax
lea ecx, [ebp - 0xa14]
mov byte [ebp - 4], 0x26
call fcn.00416d80
mov byte [ebp - 4], 0x27
mov ecx, dword [ebp - 0xa0c]
push dword [ecx]
push dword [edi]
push dword [eax]
lea eax, [ebp - 0x9f8]
push str.Computer:__s__User:__s__UserDomain:__s
push eax
call fcn.00404520
mov byte [ebp - 4], 0x26
mov edx, dword [ebp - 0xa14]
add edx, 0xfffffff0
or edi, 0xffffffff
add esp, 0x14
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4038c5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x25
mov edx, dword [ebp - 0xa24]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4038e8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0x24
mov edx, dword [ebp - 0x9f4]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40390b
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, [ebp - 0x9f8]
push eax
push 0x175
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 0
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
mov byte [ebp - 4], 0x14
mov edx, dword [ebp - 0x9f8]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403960
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0xa20]
cmp dword [eax + 0xf8], 3
jne 0x403a41
push str.ECHO_ENABLED_state_set
lea ecx, [ebp - 0x9f4]
call fcn.004021e0
push ecx
mov ecx, esp
push 0x63bfdc
mov byte [ebp - 4], 0x28
call fcn.004021e0
push 0
lea eax, [ebp - 0x9f4]
push eax
push 0x17b
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 0
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
mov byte [ebp - 4], 0x14
mov edx, dword [ebp - 0x9f4]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4039dc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0xb58]
call fcn.00422780
push 1
push 0x100000
lea ecx, [ebp - 0xb58]
mov byte [ebp - 4], 0x29
call fcn.00422d10
test dword [ebp - 0xa60], 0x100000
jne 0x403a1b
push 1
push 0x100000
lea ecx, [ebp - 0xb58]
call fcn.00422d10
or dword [ebp - 0xa64], 0x10
push 0x100000
lea ecx, [ebp - 0xb58]
call fcn.004246a0
lea ecx, [ebp - 0xb58]
mov byte [ebp - 4], 0x14
call fcn.004013d0
cmp byte [ebp - 0x9fa], 0
je 0x403afb
push str._EXITING_BECAUSE_ANOTHER_INSTANCE_IS_RUNNING_
lea ecx, [ebp - 0x9f4]
call fcn.004021e0
push ecx
mov ecx, esp
push 0x63bfdc
mov byte [ebp - 4], 0x2a
call fcn.004021e0
push 0
lea eax, [ebp - 0x9f4]
push eax
push 0x19f
push str.C:_amintegration_tools_setupishield_sldim_sldbgdwldFramework_sldBgDwld.cpp
push 0
push 1
xor ecx, ecx
call fcn.004051a0
mov ecx, eax
call fcn.004022e0
mov byte [ebp - 4], 0x14
mov edx, dword [ebp - 0x9f4]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403ab7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0xa10]
mov byte [ebp - 4], 6
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403ad7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov byte [ebp - 4], 0
lea eax, [esi + 0xc]
lock xadd dword [eax], edi
dec edi
test edi, edi
jg 0x402909
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x402909
mov ecx, reloc.OLEAUT32.dll_SysReAllocString
mov byte [ebp - 4], 0x2b
call fcn.00469060
mov ecx, SysReAllocStringLen
call fcn.00469060
mov dword [ebp - 4], 0x14
jmp 0x403b95
call fcn.00434d00
call fcn.0041c7a0
test al, al
jne 0x403bc4
add ebx, 0xfffffff0
mov byte [ebp - 4], 6
lea eax, [ebx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403ad7
mov ecx, dword [ebx]
push ebx
jmp 0x403ad2
push 0x60c
call fcn.004996c9
add esp, 4
mov dword [ebp - 0xa28], eax
mov byte [ebp - 4], 0x2e
test eax, eax
je 0x403bf0
mov ecx, eax
call fcn.004010f0
mov ecx, eax
mov dword [ebp - 0xa08], eax
jmp 0x403bf8
xor ecx, ecx
mov dword [ebp - 0xa08], ecx
mov eax, dword [ebp - 0xa20]
push 0
push 0
mov byte [ebp - 4], 0x14
mov dword [eax + 0x20], ecx
mov eax, dword [ecx]
push 0xcf8000
push 0x80
call dword [eax + 0x164]
mov ecx, dword [ebp - 0xa08]
add ebx, 0xfffffff0
mov eax, dword [ecx + 0x20]
mov dword [section..shr], eax
mov eax, dword [ebp - 0xa20]
mov byte [ebp - 4], 6
mov byte [eax + 0xfc], 1
lea eax, [ebx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x403c53
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov byte [ebp - 4], 0
lea eax, [esi + 0xc]
lock xadd dword [eax], edi
dec edi
test edi, edi
jg 0x403c6e
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
lea ecx, [ebp - 0xa58]
mov dword [ebp - 4], 0xffffffff
call fcn.004a5c45
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.005bc16b
mov esp, ebp
pop ebp
ret