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

Disassembly:
push 0x180
mov eax, 0x46eac9
call fcn.004492af
mov edi, ecx
mov dword [ebp - 0x170], edi
mov eax, dword [ebp + 8]
and dword [ebp - 0x144], 0
mov bl, byte [ebp + 0xc]
mov dword [ebp - 0x15c], eax
mov eax, dword [edi]
mov byte [ebp - 0x14d], bl
call dword [eax + 0x7c]
push eax
lea ecx, [ebp - 0xf8]
call fcn.00403a00
and dword [ebp - 4], 0
lea eax, [ebp - 0xf8]
push eax
lea eax, [ebp - 0x70]
push eax
call fcn.0040eb50
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 - 0x140]
call fcn.00403984
push esi
push eax
lea eax, [ebp - 0x128]
mov byte [ebp - 4], 2
push eax
call fcn.004162c9
push str._...
push eax
lea eax, [ebp - 0x110]
mov byte [ebp - 4], 3
push eax
call fcn.0040230c
add esp, 0x18
xor ebx, ebx
lea ecx, [ebp - 0x128]
xor esi, esi
push ebx
inc esi
push esi
call fcn.00408c45
push ebx
push esi
lea ecx, [ebp - 0x140]
call fcn.00408c45
push ebx
push esi
lea ecx, [ebp - 0x70]
call fcn.00408c45
push ebx
push esi
lea ecx, [ebp - 0xf8]
mov byte [ebp - 4], 8
call fcn.00408c9a
lea eax, [ebp - 0x110]
mov ecx, edi
push eax
call fcn.00425165
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.00432829
pop ecx
pop ecx
mov ecx, esi
mov byte [ebp - 4], 9
mov dword [ebp - 0x144], ecx
cmp dword [eax + 0x10], ebx
jne 0x41c923
lea eax, [ebp - 0xe0]
push edi
push eax
call fcn.00432c5c
pop ecx
pop ecx
push 3
pop ecx
cmp dword [eax + 0x10], ebx
je 0x41c925
mov bl, 1
test cl, 2
je 0x41c939
push 0
push 1
lea ecx, [ebp - 0xe0]
call fcn.00408c45
push 0
push 1
lea ecx, [ebp - 0x40]
mov dword [ebp - 4], 8
call fcn.00408c45
mov eax, dword [edi]
mov ecx, edi
test bl, bl
jne 0x41c95b
push str.BootstrapperUpdateOrInstallUnableToResolveCdnHost
jmp 0x41c960
push str.BootstrapperUpdateOrInstallResolvedCdnHost
call dword [eax + 0x64]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov cl, byte [0x49d0c0]
mov dword [ebp - 0x174], eax
test cl, cl
je 0x41c98c
push 0
movzx ecx, cl
push str.DoDeployComponents:_starting_download_threads
push ecx
call fcn.0041087a
add esp, 0xc
mov ebx, dword [ebp - 0x15c]
lea ecx, [ebp - 0x34]
push 0x30
pop esi
mov dword [ebp - 0x144], esi
mov eax, dword [ebx + 4]
sub eax, dword [ebx]
cdq
idiv esi
push eax
call fcn.00419c5f
mov eax, dword [ebx + 4]
sub eax, dword [ebx]
cdq
idiv esi
and dword [ebp - 0x158], 0
mov byte [ebp - 4], 0xa
test eax, eax
je 0x41cb38
mov eax, dword [ebp - 0x34]
xor ecx, ecx
mov dword [ebp - 0x154], ecx
mov dword [ebp - 0x148], eax
mov eax, dword [ebx]
add eax, ecx
lea ecx, [ebp - 0x88]
push eax
call fcn.00419b3f
lea eax, [ebp - 0x164]
mov byte [ebp - 4], 0xb
push eax
call fcn.00418273
pop ecx
mov esi, dword [edi + 0x154]
mov eax, dword [edi + 0x150]
mov dword [ebp - 0x16c], eax
mov dword [ebp - 0x168], esi
test esi, esi
je 0x41ca19
lock inc dword [esi + 4]
mov dword [ebp - 0xc8], eax
mov dword [ebp - 0xc4], esi
test esi, esi
je 0x41ca2d
lock inc dword [esi + 4]
lea eax, [ebp - 0x88]
mov byte [ebp - 4], 0xe
push eax
lea ecx, [ebp - 0xc0]
call fcn.00419b3f
mov ebx, dword [ebp - 0x160]
mov eax, dword [ebp - 0x164]
mov dword [ebp - 0x90], eax
mov dword [ebp - 0x8c], ebx
test ebx, ebx
je 0x41ca63
lock inc dword [ebx + 4]
lea eax, [ebp - 0xc8]
mov byte [ebp - 4], 0xf
push eax
lea ecx, [ebp - 0x14c]
call fcn.00416041
mov ecx, eax
mov byte [ebp - 4], 0x10
call fcn.0043a70f
lea ecx, [ebp - 0x14c]
mov byte [ebp - 4], 0x11
call fcn.0043a70f
cmp dword [ebp - 0x14c], 0
je 0x41caa8
push dword [ebp - 0x14c]
call fcn.0042494d
pop ecx
lea ecx, [ebp - 0xc8]
mov byte [ebp - 4], 0xd
call fcn.0041a79d
mov ecx, dword [ebp - 0x148]
lea eax, [ebp - 0x164]
push eax
call fcn.0041b200
mov byte [ebp - 4], 0x12
test esi, esi
je 0x41cad8
mov ecx, esi
call fcn.0040b88e
mov byte [ebp - 4], 0x13
test ebx, ebx
je 0x41cae7
mov ecx, ebx
call fcn.0040b88e
lea ecx, [ebp - 0x88]
mov byte [ebp - 4], 0xa
call fcn.004048a8
mov ebx, dword [ebp - 0x15c]
mov ecx, dword [ebp - 0x154]
push 0x30
pop eax
add ecx, eax
mov esi, dword [ebp - 0x158]
mov eax, dword [ebx + 4]
inc esi
sub eax, dword [ebx]
cdq
idiv dword [ebp - 0x144]
add dword [ebp - 0x148], 8
mov dword [ebp - 0x158], esi
mov dword [ebp - 0x154], ecx
cmp esi, eax
jb 0x41c9d8
push 0x30
pop esi
mov cl, byte [0x49d0c0]
test cl, cl
je 0x41cb5c
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.0041087a
add esp, 0xc
cmp dword [0x49d0a4], 1
lea ecx, [ebp - 0x144]
mov eax, 0x49d0a4
mov dword [ebp - 0x144], 1
cmovle eax, ecx
movd xmm0, dword [eax]
lea eax, [ebp - 0x17c]
cvtdq2pd xmm0, xmm0
push eax
movsd qword [ebp - 0x18c], xmm0
call fcn.0043d711
movsd xmm0, qword [ebp - 0x17c]
addsd xmm0, qword [ebp - 0x18c]
mov eax, dword [ebp - 0x30]
and dword [ebp - 0x144], 0
pop ecx
mov ecx, dword [ebp - 0x34]
sub eax, ecx
sar eax, 3
movsd qword [ebp - 0x16c], xmm0
mov dword [ebp - 0x158], eax
and dword [ebp - 0x14c], 0
xor esi, esi
and dword [ebp - 0x148], 0
mov eax, ecx
and dword [ebp - 0x154], 0
cmp ecx, dword [ebp - 0x30]
je 0x41cc6e
mov ebx, dword [ebp - 0x148]
mov edx, dword [eax]
test edx, edx
jne 0x41cbf9
inc esi
jmp 0x41cc22
cmp byte [edx + 8], 0
lea ecx, [esi + 1]
cmove ecx, esi
cmp dword [edx + 4], 0
mov esi, ecx
jle 0x41cc22
mov ecx, dword [ebp - 0x14c]
inc dword [ebp - 0x154]
add ebx, dword [edx + 4]
add ecx, dword [edx]
mov dword [ebp - 0x14c], ecx
add eax, 8
cmp eax, dword [ebp - 0x30]
jne 0x41cbf0
mov dword [ebp - 0x148], ebx
mov ebx, dword [ebp - 0x15c]
cmp esi, dword [ebp - 0x144]
jbe 0x41cc6e
mov al, byte [0x49d0c0]
test al, al
je 0x41cc66
push 0
push dword [ebp - 0x158]
movzx eax, al
push esi
push str.DoDeployComponents:__zu__zu_zips_deployed
push eax
call fcn.0041085a
mov al, byte [0x49d0c0]
add esp, 0x14
mov dword [ebp - 0x144], esi
jmp 0x41cc73
mov al, byte [0x49d0c0]
mov ecx, dword [ebp - 0x158]
cmp esi, ecx
je 0x41cde3
cmp dword [ebp - 0x154], 0
jbe 0x41cc9d
push dword [ebp - 0x148]
mov eax, dword [edi]
mov ecx, edi
push dword [ebp - 0x14c]
call dword [eax + 0xc]
push 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
lea eax, [ebp - 0x164]
push eax
call fcn.0043d711
lea eax, [ebp - 0x17c]
push eax
lea eax, [ebp - 0x164]
push eax
lea eax, [ebp - 0x184]
push eax
call fcn.0043d7c9
movsd xmm1, qword [ebp - 0x184]
add esp, 0x10
movaps xmm0, xmm1
mulsd xmm0, qword [0x47d8b8]
comisd xmm0, xmmword [0x47d8b8]
jb 0x41cd00
mov ecx, dword [edi + 0x14c]
push 0
mov eax, dword [ecx]
call dword [eax + 0x24]
movsd xmm1, qword [ebp - 0x184]
mov al, byte [0x49d0c0]
test al, al
je 0x41cdd4
movsd xmm0, qword [ebp - 0x164]
comisd xmm0, xmmword [ebp - 0x16c]
jb 0x41cdd4
push dword [ebp - 0x154]
movzx eax, al
push dword [ebp - 0x148]
push dword [ebp - 0x14c]
push dword [ebp - 0x158]
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.00410896
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 0x41cdbc
xor edi, edi
mov eax, dword [ebp - 0x34]
mov ecx, dword [eax + esi*8]
test ecx, ecx
je 0x41cda4
cmp byte [ecx + 8], 0
jne 0x41cda4
mov dl, byte [0x49d0c0]
test dl, dl
je 0x41cda4
mov eax, dword [ebx]
add eax, edi
cmp dword [eax + 0x14], 8
jb 0x41cd8d
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.00410896
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 0x41cd67
mov edi, dword [ebp - 0x170]
movsd xmm0, qword [ebp - 0x164]
addsd xmm0, qword [ebp - 0x18c]
movsd qword [ebp - 0x16c], xmm0
mov ecx, edi
call fcn.00429622
mov ecx, dword [ebp - 0x34]
jmp 0x41cbc8
test al, al
je 0x41cdfc
push 0
push ecx
push esi
movzx eax, al
push str.DoDeployComponents:_all_files_deployed
push eax
call fcn.0041085a
add esp, 0x14
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, dword [edi]
mov ebx, eax
sub ebx, dword [ebp - 0x174]
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.0040afc3
pop ecx
push eax
push esi
lea ecx, [ebp - 0x58]
call fcn.00408f00
cmp byte [0x4f0acd], 0
je 0x41cf0a
cmp dword [ebp - 0x44], 0x10
lea esi, [ebp - 0x58]
lea eax, [ebp - 0x70]
cmovae esi, dword [ebp - 0x58]
push esi
push str._s_Duration
push eax
call fcn.0040ec8b
add esp, 0xc
cmp dword [eax + 0x14], 0x10
mov byte [ebp - 4], 0x15
jb 0x41ce65
mov eax, dword [eax]
push ebx
push eax
mov ecx, edi
call fcn.00428afb
push 0
push 1
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 0x14
call fcn.00408c45
mov eax, dword [edi + 0x150]
cmp dword [eax + 8], 0
jbe 0x41cec9
push esi
lea eax, [ebp - 0x70]
push str._s_Size
push eax
call fcn.0040ec8b
add esp, 0xc
cmp dword [eax + 0x14], 0x10
mov ecx, dword [edi + 0x150]
mov byte [ebp - 4], 0x16
jb 0x41ceae
mov eax, dword [eax]
push dword [ecx + 8]
mov ecx, edi
push eax
call fcn.00428afb
push 0
push 1
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 0x14
call fcn.00408c45
push esi
lea eax, [ebp - 0x70]
push str._s_UnfilteredSize
push eax
call fcn.0040ec8b
add esp, 0xc
cmp dword [eax + 0x14], 0x10
mov ecx, dword [edi + 0x150]
mov byte [ebp - 4], 0x17
jb 0x41ceed
mov eax, dword [eax]
push dword [ecx + 0xc]
mov ecx, edi
push eax
call fcn.00428afb
push 0
push 1
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 0x14
call fcn.00408c45
jmp 0x41cf2c
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.00426d56
lea eax, [ebp - 0x28]
push edi
push eax
call fcn.00432829
pop ecx
pop ecx
cmp dword [ebp - 0x18], 0
mov byte [ebp - 4], 0x18
jne 0x41cf73
lea eax, [ebp - 0x70]
push edi
push eax
call fcn.00432c5c
pop ecx
pop ecx
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 0x19
cmp ecx, eax
je 0x41cf63
push 0xffffffffffffffff
push 0
push eax
call fcn.004090e6
push 0
push 1
lea ecx, [ebp - 0x70]
mov byte [ebp - 4], 0x18
call fcn.00408c45
mov eax, dword [edi]
lea ecx, [ebp - 0x70]
push ecx
mov ecx, edi
call dword [eax + 0x1c]
push str.Client
mov ecx, eax
call fcn.004094d6
push 0
push 1
lea ecx, [ebp - 0x70]
mov esi, eax
call fcn.00408c45
test esi, esi
jne 0x41d165
cmp dword [ebp - 0x18], esi
jne 0x41cfb5
lea eax, [edi + 0xbc]
cmp dword [eax + 0x14], 0x10
jb 0x41cfc0
mov eax, dword [eax]
jmp 0x41cfc0
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push ebx
push str.ClientInstallTime
mov esi, 0x476928
push esi
call fcn.0043817b
add esp, 0x10
cmp dword [ebp - 0x18], 0
jne 0x41cfeb
lea ecx, [edi + 0xbc]
cmp dword [ecx + 0x14], 0x10
jb 0x41cff6
mov ecx, dword [ecx]
jmp 0x41cff6
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 + 0x476f20]
cvtpd2ps xmm1, xmm0
movd xmm0, eax
divss xmm1, dword [0x47d8c8]
shr eax, 0x1f
cvtdq2pd xmm0, xmm0
movss dword [ebp - 0x144], xmm1
addsd xmm0, qword [eax*8 + 0x476f20]
cvtpd2ps xmm0, xmm0
divss xmm0, xmm1
cvttss2si eax, xmm0
push eax
push ecx
push str.ClientInstallThroughput_bytes_sec
push esi
call fcn.00438058
add esp, 0x10
cmp byte [ebp - 0x14d], 0
jne 0x41d165
push 0xffffffffffffffff
lea ecx, [ebp - 0xbc]
call fcn.0043f0df
cmp dword [ebp - 0x18], 0
mov byte [ebp - 4], 0x1a
jne 0x41d08b
lea eax, [edi + 0xbc]
cmp dword [eax + 0x14], 0x10
jb 0x41d096
mov eax, dword [eax]
jmp 0x41d096
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
push 0x47b7cc
lea ecx, [ebp - 0xbc]
call fcn.0043f39a
movss xmm0, dword [ebp - 0x144]
cvtps2pd xmm0, xmm0
push ecx
push ecx
lea ecx, [ebp - 0xbc]
movsd qword [esp], xmm0
push str.Duration
call fcn.0043f3fb
mov eax, dword [edi + 0x150]
lea ecx, [ebp - 0xbc]
push dword [eax + 8]
push str.BytesRecv
call fcn.0043f3e4
mov eax, dword [edi + 0x150]
movss xmm2, dword [ebp - 0x144]
cvtps2pd xmm1, xmm2
push ecx
push ecx
lea ecx, [ebp - 0xbc]
movd xmm0, dword [eax + 8]
cvtdq2pd xmm0, xmm0
divsd xmm0, xmm1
movsd qword [esp], xmm0
push str.BytesPerSec
call fcn.0043f3fb
push str.PCInstallTime
lea ecx, [ebp - 0xe0]
call fcn.00403984
mov eax, dword [edi]
mov ecx, edi
push 0
mov byte [ebp - 4], 0x1b
call dword [eax + 0x4c]
push eax
lea eax, [ebp - 0xe0]
push eax
lea ecx, [ebp - 0xbc]
call fcn.0043f8bc
push 0
push 1
lea ecx, [ebp - 0xe0]
call fcn.00408c45
lea ecx, [ebp - 0xbc]
mov byte [ebp - 4], 0x18
call fcn.0043f156
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.00408c45
push 0
push 1
lea ecx, [ebp - 0x58]
call fcn.00408c45
lea ecx, [ebp - 0x34]
call fcn.0041fdaf
push 0
push 1
lea ecx, [ebp - 0x110]
call fcn.00408c45
call fcn.00449259
ret 8