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

Disassembly:
push 0x184
mov eax, 0x46e7c8
call fcn.004490ad
mov edi, ecx
mov dword [ebp - 0x174], edi
mov eax, dword [ebp + 8]
and dword [ebp - 0x148], 0
mov bl, byte [ebp + 0xc]
mov dword [ebp - 0x160], eax
mov eax, dword [edi]
mov byte [ebp - 0x151], bl
call dword [eax + 0x7c]
push eax
lea ecx, [ebp - 0xfc]
call fcn.00403e9d
and dword [ebp - 4], 0
lea eax, [ebp - 0xfc]
push eax
lea eax, [ebp - 0xcc]
push eax
call fcn.0040ee93
pop ecx
pop ecx
mov esi, eax
mov eax, str.Installing
mov byte [ebp - 4], 1
test bl, bl
mov ecx, str.Upgrading
cmove ecx, eax
push ecx
lea ecx, [ebp - 0x144]
call fcn.00403e21
push esi
push eax
lea eax, [ebp - 0x12c]
mov byte [ebp - 4], 2
push eax
call fcn.00416530
push str._...
push eax
lea eax, [ebp - 0x114]
mov byte [ebp - 4], 3
push eax
call fcn.004027a9
add esp, 0x18
xor ebx, ebx
lea ecx, [ebp - 0x12c]
xor esi, esi
push ebx
inc esi
push esi
call fcn.00409040
push ebx
push esi
lea ecx, [ebp - 0x144]
call fcn.00409040
push ebx
push esi
lea ecx, [ebp - 0xcc]
call fcn.00409040
push ebx
push esi
lea ecx, [ebp - 0xfc]
mov byte [ebp - 4], 8
call fcn.00409095
lea eax, [ebp - 0x114]
mov ecx, edi
push eax
call fcn.004252e0
mov eax, dword [edi]
mov ecx, edi
push 0x64
push ebx
call dword [eax + 0xc]
push edi
lea eax, [ebp - 0x40]
push eax
call fcn.0043296e
pop ecx
pop ecx
mov ecx, esi
mov byte [ebp - 4], 9
mov dword [ebp - 0x148], ecx
cmp dword [eax + 0x10], ebx
jne 0x41cb8c
lea eax, [ebp - 0xb4]
push edi
push eax
call fcn.00432da1
pop ecx
pop ecx
push 3
pop ecx
cmp dword [eax + 0x10], ebx
je 0x41cb8e
mov bl, 1
test cl, 2
je 0x41cba2
push 0
push 1
lea ecx, [ebp - 0xb4]
call fcn.00409040
push 0
push 1
lea ecx, [ebp - 0x40]
mov dword [ebp - 4], 8
call fcn.00409040
mov eax, dword [edi]
mov ecx, edi
test bl, bl
jne 0x41cbc4
push str.BootstrapperUpdateOrInstallUnableToResolveCdnHost
jmp 0x41cbc9
push str.BootstrapperUpdateOrInstallResolvedCdnHost
call dword [eax + 0x64]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov cl, byte [0x49e144]
mov dword [ebp - 0x178], eax
test cl, cl
je 0x41cbf5
push 0
movzx ecx, cl
push str.DoDeployComponents:_starting_download_threads
push ecx
call fcn.00410ba0
add esp, 0xc
mov ebx, dword [ebp - 0x160]
lea ecx, [ebp - 0x34]
push 0x30
pop esi
mov dword [ebp - 0x148], esi
mov eax, dword [ebx + 4]
sub eax, dword [ebx]
cdq
idiv esi
push eax
call fcn.00419ea2
mov eax, dword [ebx + 4]
sub eax, dword [ebx]
cdq
idiv esi
and dword [ebp - 0x15c], 0
mov byte [ebp - 4], 0xa
test eax, eax
je 0x41cda1
mov eax, dword [ebp - 0x34]
xor ecx, ecx
mov dword [ebp - 0x158], ecx
mov dword [ebp - 0x14c], eax
mov eax, dword [ebx]
add eax, ecx
lea ecx, [ebp - 0xe4]
push eax
call fcn.00419d82
lea eax, [ebp - 0x168]
mov byte [ebp - 4], 0xb
push eax
call fcn.004184b0
pop ecx
mov esi, dword [edi + 0x154]
mov eax, dword [edi + 0x150]
mov dword [ebp - 0x170], eax
mov dword [ebp - 0x16c], esi
test esi, esi
je 0x41cc82
lock inc dword [esi + 4]
mov dword [ebp - 0x9c], eax
mov dword [ebp - 0x98], esi
test esi, esi
je 0x41cc96
lock inc dword [esi + 4]
lea eax, [ebp - 0xe4]
mov byte [ebp - 4], 0xe
push eax
lea ecx, [ebp - 0x94]
call fcn.00419d82
mov ebx, dword [ebp - 0x164]
mov eax, dword [ebp - 0x168]
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x60], ebx
test ebx, ebx
je 0x41ccc6
lock inc dword [ebx + 4]
mov al, byte [ebp + 0x10]
mov byte [ebp - 0x5c], al
lea eax, [ebp - 0x9c]
mov byte [ebp - 4], 0xf
push eax
lea ecx, [ebp - 0x150]
call fcn.004162a8
mov ecx, eax
mov byte [ebp - 4], 0x10
call fcn.0043a616
lea ecx, [ebp - 0x150]
mov byte [ebp - 4], 0x11
call fcn.0043a616
cmp dword [ebp - 0x150], 0
je 0x41cd11
push dword [ebp - 0x150]
call fcn.00424ac8
pop ecx
lea ecx, [ebp - 0x9c]
mov byte [ebp - 4], 0xd
call fcn.0041a9e0
mov ecx, dword [ebp - 0x14c]
lea eax, [ebp - 0x168]
push eax
call fcn.0041b482
mov byte [ebp - 4], 0x12
test esi, esi
je 0x41cd41
mov ecx, esi
call fcn.0040bbfd
mov byte [ebp - 4], 0x13
test ebx, ebx
je 0x41cd50
mov ecx, ebx
call fcn.0040bbfd
lea ecx, [ebp - 0xe4]
mov byte [ebp - 4], 0xa
call fcn.0041aff3
mov ebx, dword [ebp - 0x160]
mov ecx, dword [ebp - 0x158]
push 0x30
pop eax
add ecx, eax
mov esi, dword [ebp - 0x15c]
mov eax, dword [ebx + 4]
inc esi
sub eax, dword [ebx]
cdq
idiv dword [ebp - 0x148]
add dword [ebp - 0x14c], 8
mov dword [ebp - 0x15c], esi
mov dword [ebp - 0x158], ecx
cmp esi, eax
jb 0x41cc41
push 0x30
pop esi
mov cl, byte [0x49e144]
test cl, cl
je 0x41cdc5
mov eax, dword [ebx + 4]
sub eax, dword [ebx]
cdq
idiv esi
push eax
movzx eax, cl
push str.DoDeployComponents:_spawned_threads_for__zu_files
push eax
call fcn.00410ba0
add esp, 0xc
cmp dword [0x49e124], 1
lea ecx, [ebp - 0x148]
mov eax, 0x49e124
mov dword [ebp - 0x148], 1
cmovle eax, ecx
movd xmm0, dword [eax]
lea eax, [ebp - 0x180]
cvtdq2pd xmm0, xmm0
push eax
movsd qword [ebp - 0x190], xmm0
call fcn.0043d4fb
movsd xmm0, qword [ebp - 0x180]
addsd xmm0, qword [ebp - 0x190]
mov eax, dword [ebp - 0x30]
and dword [ebp - 0x148], 0
pop ecx
mov ecx, dword [ebp - 0x34]
sub eax, ecx
sar eax, 3
movsd qword [ebp - 0x170], xmm0
mov dword [ebp - 0x15c], eax
and dword [ebp - 0x150], 0
xor esi, esi
and dword [ebp - 0x14c], 0
mov eax, ecx
and dword [ebp - 0x158], 0
cmp ecx, dword [ebp - 0x30]
je 0x41ced7
mov ebx, dword [ebp - 0x14c]
mov edx, dword [eax]
test edx, edx
jne 0x41ce62
inc esi
jmp 0x41ce8b
cmp byte [edx + 8], 0
lea ecx, [esi + 1]
cmove ecx, esi
cmp dword [edx + 4], 0
mov esi, ecx
jle 0x41ce8b
mov ecx, dword [ebp - 0x150]
inc dword [ebp - 0x158]
add ebx, dword [edx + 4]
add ecx, dword [edx]
mov dword [ebp - 0x150], ecx
add eax, 8
cmp eax, dword [ebp - 0x30]
jne 0x41ce59
mov dword [ebp - 0x14c], ebx
mov ebx, dword [ebp - 0x160]
cmp esi, dword [ebp - 0x148]
jbe 0x41ced7
mov al, byte [0x49e144]
test al, al
je 0x41cecf
push 0
push dword [ebp - 0x15c]
movzx eax, al
push esi
push str.DoDeployComponents:__zu__zu_zips_deployed
push eax
call fcn.00410b80
mov al, byte [0x49e144]
add esp, 0x14
mov dword [ebp - 0x148], esi
jmp 0x41cedc
mov al, byte [0x49e144]
mov ecx, dword [ebp - 0x15c]
cmp esi, ecx
je 0x41d04c
cmp dword [ebp - 0x158], 0
jbe 0x41cf06
push dword [ebp - 0x14c]
mov eax, dword [edi]
mov ecx, edi
push dword [ebp - 0x150]
call dword [eax + 0xc]
push 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
lea eax, [ebp - 0x168]
push eax
call fcn.0043d4fb
lea eax, [ebp - 0x180]
push eax
lea eax, [ebp - 0x168]
push eax
lea eax, [ebp - 0x188]
push eax
call fcn.0043d5b3
movsd xmm1, qword [ebp - 0x188]
add esp, 0x10
movaps xmm0, xmm1
mulsd xmm0, qword [0x47d998]
comisd xmm0, xmmword [0x47d998]
jb 0x41cf69
mov ecx, dword [edi + 0x14c]
push 0
mov eax, dword [ecx]
call dword [eax + 0x24]
movsd xmm1, qword [ebp - 0x188]
mov al, byte [0x49e144]
test al, al
je 0x41d03d
movsd xmm0, qword [ebp - 0x168]
comisd xmm0, xmmword [ebp - 0x170]
jb 0x41d03d
push dword [ebp - 0x158]
movzx eax, al
push dword [ebp - 0x14c]
push dword [ebp - 0x150]
push dword [ebp - 0x15c]
push esi
push ecx
push ecx
movsd qword [esp], xmm1
push str.DoDeployComponents:_still_deploying_after__.0lf_seconds.__zu__zu_files_pending___d__d___zu_files_:
push eax
call fcn.00410bbc
mov eax, dword [ebx + 4]
add esp, 0x24
sub eax, dword [ebx]
xor esi, esi
cdq
push 0x30
pop ecx
idiv ecx
test eax, eax
je 0x41d025
xor edi, edi
mov eax, dword [ebp - 0x34]
mov ecx, dword [eax + esi*8]
test ecx, ecx
je 0x41d00d
cmp byte [ecx + 8], 0
jne 0x41d00d
mov dl, byte [0x49e144]
test dl, dl
je 0x41d00d
mov eax, dword [ebx]
add eax, edi
cmp dword [eax + 0x14], 8
jb 0x41cff6
mov eax, dword [eax]
push dword [ecx + 4]
push dword [ecx]
push eax
movzx eax, dl
push str.____waiting_for__S___d___d_
push eax
call fcn.00410bbc
add esp, 0x14
mov eax, dword [ebx + 4]
inc esi
sub eax, dword [ebx]
push 0x30
pop ecx
cdq
add edi, ecx
idiv ecx
cmp esi, eax
jb 0x41cfd0
mov edi, dword [ebp - 0x174]
movsd xmm0, qword [ebp - 0x168]
addsd xmm0, qword [ebp - 0x190]
movsd qword [ebp - 0x170], xmm0
mov ecx, edi
call fcn.00429741
mov ecx, dword [ebp - 0x34]
jmp 0x41ce31
test al, al
je 0x41d065
push 0
push ecx
push esi
movzx eax, al
push str.DoDeployComponents:_all_files_deployed
push eax
call fcn.00410b80
add esp, 0x14
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, dword [edi]
mov ebx, eax
sub ebx, dword [ebp - 0x178]
lea eax, [ebp - 0x58]
push eax
mov ecx, edi
call dword [edx + 0x1c]
mov esi, str.BootstrapperDeploy
mov byte [ebp - 4], 0x14
push esi
call fcn.0040b332
pop ecx
push eax
push esi
lea ecx, [ebp - 0x58]
call fcn.004092fb
mov eax, dword [edi + 0x150]
lea ecx, [ebp - 0x58]
cmp dword [ebp - 0x44], 0x10
cmovae ecx, dword [ebp - 0x58]
push dword [eax + 8]
push ebx
push str.Success
push ecx
mov ecx, edi
call fcn.00426f81
lea eax, [ebp - 0x28]
push edi
push eax
call fcn.0043296e
pop ecx
pop ecx
cmp dword [ebp - 0x18], 0
mov byte [ebp - 4], 0x15
jne 0x41d107
lea eax, [ebp - 0xcc]
push edi
push eax
call fcn.00432da1
pop ecx
pop ecx
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 0x16
cmp ecx, eax
je 0x41d0f4
push 0xffffffffffffffff
push 0
push eax
call fcn.004094e1
push 0
push 1
lea ecx, [ebp - 0xcc]
mov byte [ebp - 4], 0x15
call fcn.00409040
mov eax, dword [edi]
lea ecx, [ebp - 0xcc]
push ecx
mov ecx, edi
call dword [eax + 0x1c]
push str.Client
mov ecx, eax
call fcn.004098d1
push 0
push 1
lea ecx, [ebp - 0xcc]
mov esi, eax
call fcn.00409040
test esi, esi
jne 0x41d2ff
cmp dword [ebp - 0x18], esi
jne 0x41d14f
lea eax, [edi + 0xbc]
cmp dword [eax + 0x14], 0x10
jb 0x41d15a
mov eax, dword [eax]
jmp 0x41d15a
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ebx
push str.ClientInstallTime
mov esi, 0x4769c0
push esi
call fcn.0043805e
add esp, 0x10
cmp dword [ebp - 0x18], 0
jne 0x41d185
lea ecx, [edi + 0xbc]
cmp dword [ecx + 0x14], 0x10
jb 0x41d190
mov ecx, dword [ecx]
jmp 0x41d190
cmp dword [ebp - 0x14], 0x10
lea ecx, [ebp - 0x28]
cmovae ecx, dword [ebp - 0x28]
mov eax, dword [edi + 0x150]
movd xmm0, ebx
cvtdq2pd xmm0, xmm0
shr ebx, 0x1f
mov eax, dword [eax + 8]
addsd xmm0, qword [ebx*8 + 0x476fb0]
cvtpd2ps xmm1, xmm0
movd xmm0, eax
divss xmm1, dword [0x47d9a8]
shr eax, 0x1f
cvtdq2pd xmm0, xmm0
movss dword [ebp - 0x148], xmm1
addsd xmm0, qword [eax*8 + 0x476fb0]
cvtpd2ps xmm0, xmm0
divss xmm0, xmm1
cvttss2si eax, xmm0
push eax
push ecx
push str.ClientInstallThroughput_bytes_sec
push esi
call fcn.00437f3b
add esp, 0x10
cmp byte [ebp - 0x151], 0
jne 0x41d2ff
push 0xffffffffffffffff
lea ecx, [ebp - 0x8c]
call fcn.0043eee6
cmp dword [ebp - 0x18], 0
mov byte [ebp - 4], 0x17
jne 0x41d225
lea eax, [edi + 0xbc]
cmp dword [eax + 0x14], 0x10
jb 0x41d230
mov eax, dword [eax]
jmp 0x41d230
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push 0x47b8ac
lea ecx, [ebp - 0x8c]
call fcn.0043f1a1
movss xmm0, dword [ebp - 0x148]
cvtps2pd xmm0, xmm0
push ecx
push ecx
lea ecx, [ebp - 0x8c]
movsd qword [esp], xmm0
push str.Duration
call fcn.0043f202
mov eax, dword [edi + 0x150]
lea ecx, [ebp - 0x8c]
push dword [eax + 8]
push str.BytesRecv
call fcn.0043f1eb
mov eax, dword [edi + 0x150]
movss xmm2, dword [ebp - 0x148]
cvtps2pd xmm1, xmm2
push ecx
push ecx
lea ecx, [ebp - 0x8c]
movd xmm0, dword [eax + 8]
cvtdq2pd xmm0, xmm0
divsd xmm0, xmm1
movsd qword [esp], xmm0
push str.BytesPerSec
call fcn.0043f202
push str.PCInstallTime
lea ecx, [ebp - 0xb4]
call fcn.00403e21
mov eax, dword [edi]
mov ecx, edi
push 0
mov byte [ebp - 4], 0x18
call dword [eax + 0x4c]
push eax
lea eax, [ebp - 0xb4]
push eax
lea ecx, [ebp - 0x8c]
call fcn.0043f6c3
push 0
push 1
lea ecx, [ebp - 0xb4]
call fcn.00409040
lea ecx, [ebp - 0x8c]
mov byte [ebp - 4], 0x15
call fcn.0043ef5d
mov ecx, dword [edi + 0x14c]
push 1
mov eax, dword [ecx]
call dword [eax + 0x24]
push 0
push 1
lea ecx, [ebp - 0x28]
call fcn.00409040
push 0
push 1
lea ecx, [ebp - 0x58]
call fcn.00409040
lea ecx, [ebp - 0x34]
call fcn.0041fefc
push 0
push 1
lea ecx, [ebp - 0x114]
call fcn.00409040
call fcn.00449057
ret 0xc