Function at 0x452cf0
Capabilities:
Check for time delay via gettickcount
Resume thread

Disassembly:
push 0xffffffffffffffff
push 0x4b8ca3
mov eax, dword fs:[0]
push eax
sub esp, 0xd4
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4e1370]
xor eax, esp
push eax
lea eax, [esp + 0xe8]
mov dword fs:[0], eax
mov ebp, dword [esp + 0xf8]
mov ecx, dword [ebp + 0x10]
lea eax, [esp + 0x6c]
push eax
call fcn.004515f0
mov dword [esp + 0xf0], 0
mov esi, dword [ebp + 0x10]
mov edi, dword [sym.imp.SHLWAPI.dll_StrStrIW]
push str.msiexec.exe
push esi
call edi
test eax, eax
jne 0x452d79
push 0x4ca5ac
push esi
call edi
test eax, eax
jne 0x452d79
push 0x4ca5c0
push esi
call edi
test eax, eax
jne 0x452d79
push 0x4ca5dc
push esi
call edi
test eax, eax
je 0x452e43
push 0
lea esi, [esp + 0x70]
call fcn.00451d20
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x452df8
mov eax, dword [ebp + 0x10]
push ecx
sub eax, 0x10
mov dword [esp + 0x2c], esp
mov esi, esp
call fcn.0040bbd0
lea ecx, [esp + 0x18]
add eax, 0x10
push ecx
mov dword [esi], eax
call fcn.00453330
add esp, 8
lea edi, [esp + 0x6c]
mov byte [esp + 0xf0], 1
call fcn.0040d2b0
mov byte [esp + 0xf0], 0
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x452de9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0
lea esi, [esp + 0x70]
call fcn.00451d20
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xb4]
test eax, eax
je 0x452e32
push 0x2710
push eax
call dword [sym.imp.USER32.dll_WaitForInputIdle]
mov eax, dword [esp + 0xb4]
push 0xbb8
push eax
mov esi, eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
jne 0x452e32
mov eax, esi
call fcn.00451f60
mov ebx, dword [ebp + 0x20]
lea edi, [esp + 0x6c]
call fcn.00451f20
jmp 0x453287
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push 0x1000004
lea esi, [esp + 0x70]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], 0
call fcn.00451d20
mov dword [esp + 0x1c], eax
test eax, eax
je 0x45317b
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateJobObjectW]
mov ecx, dword [esp + 0xb4]
push ecx
push eax
mov dword [esp + 0xcc], eax
call dword [sym.imp.KERNEL32.dll_AssignProcessToJobObject]
mov edx, dword [esp + 0xb8]
push edx
mov esi, eax
call dword [sym.imp.KERNEL32.dll_ResumeThread]
cmp dword [esp + 0xc4], 0
je 0x4530fe
test esi, esi
je 0x4530fe
cmp eax, 0xffffffff
je 0x4530fe
mov eax, dword [esp + 0xb4]
test eax, eax
je 0x452ef8
push 0x2710
push eax
call dword [sym.imp.USER32.dll_WaitForInputIdle]
mov eax, dword [esp + 0xb4]
push 0xbb8
push eax
mov esi, eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
jne 0x452ef8
mov eax, esi
call fcn.00451f60
lea eax, [esp + 0x4c]
push eax
call fcn.0046fda0
lea ecx, [esp + 0x34]
mov byte [esp + 0xf0], 2
push ecx
lea ebx, [esp + 0x1f]
mov byte [esp + 0x1f], 0
call fcn.00453860
mov byte [esp + 0xf0], 3
mov edx, dword [esp + 0x44]
sub edx, dword [esp + 0x40]
jne 0x452f34
call fcn.00490387
mov edi, dword [esp + 0x40]
mov dword [esp + 0x30], edi
mov esi, dword [esp + 0x44]
sub esi, dword [esp + 0x40]
jne 0x452f4b
call fcn.00490387
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0xc4]
push 0
push esi
push eax
push 3
push ecx
call dword [sym.imp.KERNEL32.dll_QueryInformationJobObject]
test eax, eax
je 0x453095
mov eax, dword [edi + 4]
test eax, eax
je 0x4530ac
mov dword [esp + 0x20], eax
jbe 0x45308e
lea ebp, [edi + 8]
mov dword [esp + 0x2c], eax
mov edx, dword [ebp]
push edx
lea edi, [esp + 0x28]
call fcn.004525f0
add esp, 4
mov byte [esp + 0xf0], 4
mov eax, dword [esp + 0x24]
push eax
call fcn.004526b0
add esp, 4
test eax, eax
je 0x452fb9
dec dword [esp + 0x20]
jmp 0x45304d
mov ecx, dword [esp + 0x64]
mov ebx, dword [esp + 0x4c]
push ebp
lea edx, [esp + 0xd8]
push edx
lea edi, [esp + 0x54]
mov dword [esp + 0xd8], ecx
call fcn.00447ab0
mov esi, eax
mov eax, dword [esi]
test eax, eax
je 0x452fe6
cmp eax, ebx
je 0x452feb
call fcn.00490387
mov eax, dword [esp + 0xd0]
cmp dword [esi + 4], eax
jne 0x45304d
mov eax, dword [ebp]
push eax
push 0
push 0x100400
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov esi, eax
test esi, esi
je 0x45303b
push 0x2710
push esi
call dword [sym.imp.USER32.dll_WaitForInputIdle]
push 0xbb8
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
jne 0x453034
mov eax, esi
call fcn.00451f60
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push ebp
lea ecx, [esp + 0xe0]
push ecx
lea ebx, [esp + 0x54]
call fcn.00431410
mov byte [esp + 0xf0], 3
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x453075
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add ebp, 4
sub dword [esp + 0x2c], 1
jne 0x452f87
mov ebp, dword [esp + 0xf8]
mov edi, dword [esp + 0x30]
cmp dword [esp + 0x20], 0
je 0x4530ac
mov eax, dword [ebp + 0x20]
push 0x64
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
je 0x452f3c
mov eax, dword [esp + 0x40]
xor esi, esi
cmp eax, esi
je 0x4530bf
push eax
call fcn.00490210
add esp, 4
mov ecx, dword [esp + 0x34]
push ecx
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], esi
call fcn.00490210
add esp, 4
lea esi, [esp + 0x4c]
mov byte [esp + 0xf0], 5
call fcn.00453c90
mov byte [esp + 0xf0], 0
mov edx, dword [esp + 0x4c]
push edx
call fcn.00490210
add esp, 4
mov eax, dword [ebp + 4]
mov ecx, 0x4ca6c8
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x45312c
test dx, dx
je 0x453128
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x45312c
add eax, 4
add ecx, 4
test dx, dx
jne 0x453106
xor eax, eax
jmp 0x453131
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x453287
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [esp + 0x28]
cmp eax, 0x3a98
jae 0x453287
cmp dword [esp + 0x14], 0
jne 0x4531e8
push 0x1000004
lea esi, [esp + 0x70]
mov dword [esp + 0x18], 1
call fcn.00451d20
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x452e6f
mov dword [esp + 0xf0], 0xffffffff
mov eax, dword [esp + 0xb8]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
je 0x45319a
push eax
call esi
mov eax, dword [esp + 0xb4]
test eax, eax
je 0x4531a8
push eax
call esi
mov eax, dword [esp + 0xc4]
test eax, eax
je 0x4531c1
push eax
call esi
mov dword [esp + 0xc4], 0
mov eax, dword [esp + 0x6c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4531e1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
jmp 0x453307
lea ecx, [esp + 0x4c]
push ecx
call fcn.0046fda0
lea edx, [esp + 0x14]
mov bl, 6
push edx
mov ecx, 0x4ca3d8
mov byte [esp + 0xf4], bl
call fcn.00405a20
lea edi, [esp + 0x4c]
lea esi, [esp + 0x14]
mov byte [esp + 0xf0], 7
call fcn.0047d2ba
mov byte [esp + 0xf0], bl
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x453246
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x4c]
push ecx
call fcn.0047d1f2
mov eax, dword [ebp + 0x20]
mov ecx, dword [esp + 0x70]
add esp, 4
push eax
lea edx, [esp + 0x70]
push edx
call fcn.00451810
mov dword [esp + 0x1c], eax
lea esi, [esp + 0x4c]
mov byte [esp + 0xf0], 8
call fcn.00453c90
mov eax, dword [esp + 0x4c]
push eax
call fcn.00490210
add esp, 4
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xb4]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
mov dword [esp + 0xf0], 0xffffffff
mov eax, dword [esp + 0xb8]
mov esi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test eax, eax
je 0x4532bc
push eax
call esi
mov eax, dword [esp + 0xb4]
test eax, eax
je 0x4532ca
push eax
call esi
mov eax, dword [esp + 0xc4]
test eax, eax
je 0x4532e3
push eax
call esi
mov dword [esp + 0xc4], 0
mov eax, dword [esp + 0x6c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x453303
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0xe8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe0
ret