Function at 0x461c70
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d8148
mov eax, dword fs:[0]
push eax
sub esp, 0x4c
push ebx
push esi
push edi
mov eax, dword [0x511070]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x14], 0
call fcn.0041bed0
mov ecx, eax
test ecx, ecx
jne 0x461cb6
push 0x80004005
call fcn.0041cdf0
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x10], eax
lea ecx, [ebp - 0x54]
mov dword [ebp - 4], 0
call fcn.0045c1d0
push str.StartInstall...
push 0x515488
mov byte [ebp - 4], 1
call fcn.0048cf90
mov eax, dword [edi + 0x100]
add esp, 8
test eax, eax
je 0x461cf9
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
or ebx, 0xffffffff
cmp dword [edi + 0x3c], 0
jne 0x461d0c
cmp dword [edi + 0x44], 0
jne 0x46218a
mov eax, dword [edi + 4]
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x24], 0x1b59
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x2c], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [edi + 0xe4]
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x30]
push ecx
push eax
call fcn.0047eb10
mov ecx, eax
call fcn.00466320
call fcn.0045b0d0
mov eax, dword [edi + 0x34]
mov edx, 0x460cf0
mov ecx, dword [edi + 0x38]
test ecx, ecx
mov dword [ebp - 0x50], eax
mov eax, dword [edi + 0x70]
mov dword [ebp - 0x4c], eax
mov eax, dword [edi + 0x130]
mov dword [ebp - 0x34], eax
mov eax, dword [edi + 0x3c]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x38]
cmovne eax, edx
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x38], eax
lea ecx, [ebp - 0x48]
lea eax, [edi + 0x58]
push eax
call fcn.0041c6d0
lea eax, [edi + 0x5c]
push eax
lea ecx, [ebp - 0x44]
call fcn.0041c6d0
lea eax, [edi + 0x60]
push eax
lea ecx, [ebp - 0x40]
call fcn.0041c6d0
lea eax, [ebp - 0x54]
push eax
call fcn.00433e00
mov eax, dword [0x5153e4]
mov esi, dword [sym.imp.USER32.dll_SendMessageTimeoutW]
test eax, eax
je 0x461def
push 0
push 0x1388
lea ecx, [ebp - 0x1c]
mov dword [ebp - 0x1c], 5
push 0
mov dword [ebp - 0x20], ecx
lea ecx, [ebp - 0x28]
push ecx
push 0
push 0x4a
push eax
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x28], 0x2711
mov dword [ebp - 0x24], 8
call esi
mov eax, dword [edi + 0xec]
test eax, eax
je 0x461e0a
push dword [edi + 0x6c]
push 0x4f63e4
push 0
push 5
call eax
add esp, 0x10
mov ecx, edi
call fcn.00460d50
test eax, eax
jne 0x461e64
mov esi, dword [edi]
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x6a
mov ecx, edi
call dword [esi + 0x20]
push 0x4f63f0
push 0x515488
call fcn.0048d1f0
mov eax, dword [edi]
add esp, 8
mov ecx, edi
push 3
call dword [eax + 0x1c]
mov eax, dword [edi + 0xec]
test eax, eax
je 0x4621a5
push dword [edi + 0x6c]
push 0x4f63f0
push 3
push 0xa
call eax
add esp, 0x10
jmp 0x4621a5
mov eax, dword [edi + 4]
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x24], 0x1b5a
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x2c], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [edi + 0xe4]
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x30]
push ecx
push eax
call fcn.0047eb10
mov ecx, eax
call fcn.00466320
cmp dword [edi + 0x3c], 0
jne 0x461eaf
cmp dword [edi + 0x44], 0
jne 0x46218a
mov eax, dword [0x5153e4]
test eax, eax
je 0x461eee
push 0
push 0x1388
lea ecx, [ebp - 0x1c]
mov dword [ebp - 0x1c], 0x19
push 0
mov dword [ebp - 0x20], ecx
lea ecx, [ebp - 0x28]
push ecx
push 0
push 0x4a
push eax
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x28], 0x2711
mov dword [ebp - 0x24], 8
call esi
mov eax, dword [edi + 0xec]
test eax, eax
je 0x461f09
push dword [edi + 0x6c]
push str.ck_W_e
push 0
push 0x19
call eax
add esp, 0x10
push str.ExtractProductFiles_begin...
push 0x515488
call fcn.0048cf90
add esp, 8
lea eax, [ebp - 0x14]
mov ecx, edi
push eax
call fcn.0045fea0
test eax, eax
jne 0x461f6d
push 0x4f6438
push 0x515488
call fcn.0048d1f0
mov eax, dword [edi]
add esp, 8
mov esi, dword [ebp - 0x14]
mov ecx, edi
push esi
call dword [eax + 0x1c]
mov eax, dword [edi + 0xec]
test eax, eax
je 0x461f61
push dword [edi + 0x6c]
push 0x4f6438
push esi
push 0x23
call eax
add esp, 0x10
mov ecx, edi
call fcn.00460fa0
jmp 0x4621a5
push str.ExtractProductFiles_end...
push 0x515488
call fcn.0048cf90
add esp, 8
cmp dword [edi + 0x3c], 0
jne 0x461f8f
cmp dword [edi + 0x44], 0
jne 0x46218a
push 0
push 0x1b5b
mov ecx, edi
call fcn.004658f0
lea eax, [ebp - 0x14]
mov ecx, edi
push eax
call fcn.0045eaa0
push eax
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 2
call fcn.0041c6d0
mov byte [ebp - 4], 1
mov eax, ebx
mov edx, dword [ebp - 0x14]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x461fd3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [edi + 8], 0
je 0x46200a
mov eax, dword [ebp - 0x10]
cmp dword [eax - 0xc], 0
jle 0x46200a
mov ecx, dword [edi + 0x48]
xor edx, edx
cmp dword [ecx - 0xc], edx
cmove ecx, edx
mov edx, dword [edi + 0x58]
push ecx
mov ecx, dword [edi + 0x5c]
push eax
call fcn.0043c6b0
add esp, 8
mov ecx, edi
push eax
push 0x213e
call fcn.004658f0
push str.ck_W_h
push 0x28
mov ecx, edi
call fcn.004659f0
push str.CRC_setup_files_begin...
push 0x515488
call fcn.0048cf90
add esp, 8
mov ecx, edi
call fcn.00461ac0
test eax, eax
jne 0x4620b0
push 0x4f6498
push 0x2d
mov ecx, edi
call fcn.004659f0
push str.Fix_files_begin...
push 0x515488
call fcn.0048cf90
add esp, 8
lea ecx, [edi + 0x70]
call fcn.00468f90
mov esi, eax
test esi, esi
jne 0x46206e
lea ecx, [edi + 0x80]
call fcn.0043fda0
push str.Fix_files_end...
push 0x515488
call fcn.0048cf90
add esp, 8
cmp dword [edi + 0x3c], 0
jne 0x462090
cmp dword [edi + 0x44], 0
jne 0x46218a
test esi, esi
jne 0x4620b0
push 0x4f64e0
push 0x32
push 0xd
mov ecx, edi
call fcn.00465a70
mov ecx, edi
call fcn.00460fa0
jmp 0x4621a5
push 0
push 0x1b5c
mov ecx, edi
call fcn.004658f0
push str.CRC_setup_files_end...
push 0x515488
call fcn.0048cf90
add esp, 8
cmp dword [edi + 0x3c], 0
jne 0x4620e0
cmp dword [edi + 0x44], 0
jne 0x46218a
lea eax, [ebp - 0x10]
mov ecx, edi
push eax
call fcn.00461330
mov ecx, edi
test eax, eax
jne 0x462104
push 0x4f6438
push 0x37
push 0x11
call fcn.00465a70
jmp 0x4621a5
push 0
push 0x1b5d
call fcn.004658f0
cmp dword [edi + 0x3c], 0
jne 0x46211c
cmp dword [edi + 0x44], 0
jne 0x46218a
push 0x4f6520
push 0x3c
mov ecx, edi
call fcn.004659f0
cmp dword [edi + 0x14], 0
je 0x46214d
mov ecx, edi
call fcn.00461b40
test eax, eax
jne 0x46214d
push 0x4f6534
push 0x41
push 0xa
mov ecx, edi
call fcn.00465a70
jmp 0x4621a5
mov ecx, edi
call fcn.00463ea0
push str.Work
push 0x515488
call fcn.0048cf90
add esp, 8
call fcn.004357e0
cmp dword [edi + 0x3c], 0
jne 0x462177
cmp dword [edi + 0x44], 0
jne 0x46218a
mov ecx, edi
call fcn.004622c0
cmp dword [edi + 0x3c], 0
jne 0x46219c
cmp dword [edi + 0x44], 0
je 0x46219c
mov eax, dword [edi]
mov ecx, edi
push 0x10
call dword [eax + 0x1c]
mov ecx, edi
call fcn.00464a40
jmp 0x4621a5
mov eax, dword [edi]
mov ecx, edi
push 0
call dword [eax + 0x1c]
mov ecx, edi
call fcn.004624f0
mov byte [ebp - 4], 0
mov eax, ebx
mov edx, dword [ebp - 0x40]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4621ca
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x44]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4621e4
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x48]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4621fe
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ebp - 0x10]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x46221d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret