Function at 0x47b8e0
Capabilities:
Check for time delay via gettickcount
Enumerate gui resources

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x73cd0c
mov eax, dword fs:[0]
push eax
mov eax, 0x12dc
call fcn.006f5e10
mov eax, dword [0x8312b0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x12bc], ecx
mov eax, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
mov dword [ebp - 0x12d0], ebx
test eax, eax
je 0x47bbcd
test ebx, ebx
je 0x47bbcd
lea ecx, [ebp - 0x12e0]
mov dword [ebp - 0x12d4], 0
push ecx
lea ecx, [ebp - 0x12d4]
mov dword [ebp - 0x12e0], 0xffffffff
push ecx
push 0x7ed0c4
push ebx
push eax
call fcn.00479e60
test al, al
jne 0x47bbed
call fcn.0046efe0
mov esi, dword [eax + 8]
test esi, esi
je 0x47b97d
lock inc dword [esi + 4]
mov esi, dword [eax + 8]
mov ebx, dword [eax + 4]
or edi, 0xffffffff
mov dword [ebp - 4], 0
test esi, esi
je 0x47b9ad
mov eax, edi
lock xadd dword [esi + 4], eax
jne 0x47b9ad
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
mov eax, edi
lock xadd dword [esi + 8], eax
jne 0x47b9ad
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
test ebx, ebx
je 0x47bbcd
call fcn.0046efe0
lea ecx, [ebp - 0x12e8]
push ecx
mov ecx, eax
call fcn.0046f080
mov dword [ebp - 4], 1
mov esi, dword [eax]
mov dword [ebp - 0xa58], 0
mov dword [ebp - 0xa54], 0xf
mov byte [ebp - 0xa68], 0
push 0x7ed0c8
lea ecx, [ebp - 0xa68]
mov byte [ebp - 4], 2
call fcn.00463b90
push 0x5c
push 0x7ed0cc
mov ebx, eax
call fcn.0070c820
add esp, 8
test eax, eax
je 0x47ba2e
push 0x5c
push 0x7ed100
call fcn.0070c820
add esp, 8
inc eax
jmp 0x47ba33
mov eax, str.d:_svn_trunkdrvrepairtoolclientccheckruntime.cpp
push eax
mov ecx, ebx
call fcn.00463b90
push 0x7ed168
mov ecx, eax
call fcn.00463b90
push str.InstallOneKeyPackage
mov ecx, eax
call fcn.00463b90
push 0x7ed184
mov ecx, eax
call fcn.00463b90
mov edx, 0xdc4
lea ecx, [ebp - 0x13]
mov ebx, eax
call fcn.0046eeb0
lea ecx, [ebp - 0x13]
mov dword [ebp - 0xa70], 0
mov dword [ebp - 0xa6c], 0xf
mov byte [ebp - 0xa80], 0
cmp eax, ecx
je 0x47ba9f
sub ecx, eax
push ecx
push eax
lea ecx, [ebp - 0xa80]
call fcn.00460f20
lea eax, [ebp - 0xa80]
mov byte [ebp - 4], 3
push eax
mov ecx, ebx
call fcn.00463880
push 0x7ed188
mov ecx, eax
call fcn.00463b90
push str.ExecutePackage_failed
mov ecx, eax
call fcn.00463b90
cmp dword [eax + 0x14], 0x10
jb 0x47bad1
mov eax, dword [eax]
push eax
push 4
sub esp, 0xc
mov dword [ebp - 0x12cc], 0x8048bc
mov eax, esp
mov dword [ebp - 0x12c8], 0
movq xmm0, qword [ebp - 0x12cc]
mov ecx, esi
movq qword [eax], xmm0
mov dword [eax + 8], 0x8048bc
call fcn.0046ec20
mov byte [ebp - 4], 2
mov edx, dword [ebp - 0xa6c]
cmp edx, 0x10
jb 0x47bb45
mov ecx, dword [ebp - 0xa80]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x47bb3b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x47c209
push edx
push ecx
call fcn.006f4f2f
add esp, 8
mov byte [ebp - 4], 1
mov edx, dword [ebp - 0xa54]
cmp edx, 0x10
jb 0x47bb83
mov ecx, dword [ebp - 0xa68]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x47bb79
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x47c20e
push edx
push ecx
call fcn.006f4f2f
add esp, 8
mov dword [ebp - 0xa58], 0
mov dword [ebp - 0xa54], 0xf
mov byte [ebp - 0xa68], 0
mov dword [ebp - 4], 4
mov esi, dword [ebp - 0x12e4]
test esi, esi
je 0x47bbcd
mov eax, edi
lock xadd dword [esi + 4], eax
jne 0x47bbcd
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
lock xadd dword [esi + 8], edi
dec edi
jne 0x47bbcd
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.006f4f1e
mov esp, ebp
pop ebp
ret 8
mov eax, dword [ebx + 0x20c]
mov ebx, dword [ebx + 0x208]
mov esi, dword [ebp - 0x12d4]
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov byte [ebp - 0x12d8], 1
mov dword [ebp - 0x12b0], eax
mov dword [ebp - 0x12b8], ebx
mov dword [ebp - 0x12c0], esi
call edi
mov dword [ebp - 0x12b4], eax
test ebx, ebx
jle 0x47bd3c
xor ebx, ebx
mov edi, esi
mov dword [ebp - 0x12cc], 0
mov dword [ebp - 0x12c8], 0
mov dword [ebp - 0x12c4], 0
mov dword [ebp - 4], 5
nop word [eax + eax]
lea edx, [ebp - 0x12cc]
mov ecx, edi
call fcn.0047b300
mov esi, dword [ebp - 0x12cc]
cmp esi, dword [ebp - 0x12c8]
jne 0x47bcbd
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [ebp - 0x12b4]
cmp eax, dword [ebp - 0x12b0]
jae 0x47bcb3
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0x12bc]
mov edi, dword [ebp - 0x12c0]
mov al, byte [eax + 0x2c]
test al, al
je 0x47bc60
mov esi, dword [ebp - 0x12cc]
mov ebx, dword [ebp - 0x12b8]
xor edi, edi
jmp 0x47bcbf
mov edi, dword [esi]
inc ebx
mov dword [ebp - 0x12c0], edi
mov dword [ebp - 4], 0xffffffff
test esi, esi
je 0x47bd22
mov ecx, dword [ebp - 0x12c4]
mov eax, esi
sub ecx, esi
and ecx, 0xfffffffc
cmp ecx, 0x1000
jb 0x47bcfa
mov esi, dword [esi - 4]
add ecx, 0x23
sub eax, esi
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x47c209
push ecx
push esi
call fcn.006f4f2f
add esp, 8
mov dword [ebp - 0x12cc], 0
mov dword [ebp - 0x12c8], 0
mov dword [ebp - 0x12c4], 0
cmp ebx, dword [ebp - 0x12b8]
jl 0x47bc32
mov esi, edi
mov dword [ebp - 0x12c0], edi
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
xor ebx, ebx
mov dword [ebp - 0x12dc], 0
test esi, esi
je 0x47c14a
push esi
push ebx
push 0x100000
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov ebx, eax
mov dword [ebp - 0x12b8], ebx
test ebx, ebx
je 0x47c14a
mov esi, dword [ebp - 0x12d0]
add esi, 0x210
mov ecx, esi
mov dword [ebp - 0x12b0], esi
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x47bd84
sub ecx, edx
sar ecx, 1
je 0x47c14a
mov eax, dword [ebp - 0x12d0]
push 0x410
push 0
mov ebx, dword [eax + 0x418]
lea eax, [ebp - 0xa50]
push eax
call fcn.0070dcd0
add esp, 0xc
call edi
mov dword [ebp - 0x12b4], eax
push 0x82c
xor edi, edi
lea eax, [ebp - 0x12ac]
push edi
push eax
call fcn.0070dcd0
mov eax, dword [ebp - 0x12c0]
push esi
mov dword [ebp - 0xe98], eax
lea eax, [ebp - 0xe94]
push 0x104
push eax
mov dword [ebp - 0xa84], 1
call fcn.00715557
push 0x7ecff0
lea eax, [ebp - 0xc8c]
push 0x104
push eax
call fcn.00715557
add esp, 0x24
lea eax, [ebp - 0x12ac]
push eax
push 0x47b4c0
call dword [sym.imp.USER32.dll_EnumWindows]
xor esi, esi
cmp dword [ebp - 0xe9c], esi
jbe 0x47be69
cmp edi, 0x104
jge 0x47be65
push dword [ebp + esi*4 - 0x12ac]
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x47be5c
mov eax, dword [ebp + esi*4 - 0x12ac]
mov dword [ebp + edi*4 - 0xa50], eax
inc edi
inc esi
cmp esi, dword [ebp - 0xe9c]
jb 0x47be34
test edi, edi
jne 0x47beac
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
sub eax, dword [ebp - 0x12b4]
cmp eax, ebx
jae 0x47beb2
push 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0x12bc]
mov al, byte [eax + 0x2c]
test al, al
jne 0x47beb2
push 0
push dword [ebp - 0x12b8]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov esi, dword [ebp - 0x12b0]
test eax, eax
jne 0x47bdc3
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp dword [ebp - 0xa50], 0
je 0x47c144
push 0x410
lea eax, [ebp - 0x640]
push 0
push eax
call fcn.0070dcd0
add esp, 0xc
call esi
mov edi, dword [sym.imp.USER32.dll_GetWindow]
mov dword [ebp - 0x12b4], eax
push 5
push dword [ebp - 0xa50]
call edi
mov esi, eax
xor ebx, ebx
mov dword [ebp - 0x12b0], ebx
test esi, esi
je 0x47c072
nop
push 0x208
lea eax, [ebp - 0x230]
push 0
push eax
call fcn.0070dcd0
add esp, 0xc
lea eax, [ebp - 0x230]
push 0x104
push eax
push esi
call dword [sym.imp.USER32.dll_GetClassNameW]
lea ecx, [ebp - 0x230]
mov eax, str.msctls_progress32
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x47bf5a
test dx, dx
je 0x47bf56
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x47bf5a
add eax, 4
add ecx, 4
test dx, dx
jne 0x47bf34
xor eax, eax
jmp 0x47bf5f
sbb eax, eax
or eax, 1
test eax, eax
je 0x47c03e
lea ecx, [ebp - 0x230]
mov eax, str.TNewProgressBar
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x47bf98
test dx, dx
je 0x47bf94
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x47bf98
add eax, 4
add ecx, 4
test dx, dx
jne 0x47bf72
xor eax, eax
jmp 0x47bf9d
sbb eax, eax
or eax, 1
test eax, eax
je 0x47c03e
lea ecx, [ebp - 0x230]
mov eax, str.32770
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x47bfd6
test dx, dx
je 0x47bfd2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x47bfd6
add eax, 4
add ecx, 4
test dx, dx
jne 0x47bfb0
xor eax, eax
jmp 0x47bfdb
sbb eax, eax
or eax, 1
test eax, eax
je 0x47c01f
lea ecx, [ebp - 0x230]
mov eax, str.WixStdBA
nop word [eax + eax]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x47c016
test dx, dx
je 0x47c012
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x47c016
add eax, 4
add ecx, 4
test dx, dx
jne 0x47bff0
xor eax, eax
jmp 0x47c01b
sbb eax, eax
or eax, 1
test eax, eax
jne 0x47c059
mov eax, 0x104
lea ecx, [ebp - 0x640]
sub eax, ebx
lea ecx, [ecx + ebx*4]
push eax
mov edx, esi
call fcn.0047b630
add esp, 4
add ebx, eax
jmp 0x47c059
push esi
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je 0x47c059
cmp ebx, 0x104
jge 0x47c059
mov dword [ebp + ebx*4 - 0x640], esi
inc ebx
push 2
push esi
call edi
mov esi, eax
test esi, esi
jne 0x47bf00
mov dword [ebp - 0x12b0], ebx
test ebx, ebx
jne 0x47c0a6
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push 0x1f4
mov esi, eax
call dword [sym.imp.KERNEL32.dll_Sleep]
sub esi, dword [ebp - 0x12b4]
cmp esi, 0x4e20
jae 0x47c0a4
mov eax, dword [ebp - 0x12bc]
mov al, byte [eax + 0x2c]
test al, al
je 0x47bee3
test ebx, ebx
jle 0x47c144
mov ebx, dword [sym.imp.USER32.dll_SendMessageW]
mov eax, dword [ebp - 0x12b0]
xor edi, edi
xor esi, esi
mov dword [ebp - 0x12b4], edi
test eax, eax
jle 0x47c0eb
push 0
push 0
push 0x407
push dword [ebp + esi*4 - 0x640]
call ebx
add edi, eax
inc esi
mov eax, dword [ebp - 0x12b0]
cmp esi, eax
jl 0x47c0c6
mov dword [ebp - 0x12b4], edi
xor esi, esi
test eax, eax
jle 0x47c114
mov edi, dword [ebp - 0x12b0]
push 0
push 0
push 0x408
push dword [ebp + esi*4 - 0x640]
call ebx
inc esi
cmp esi, edi
jl 0x47c0f7
mov edi, dword [ebp - 0x12b4]
test edi, edi
jne 0x47c128
push dword [ebp - 0xa50]
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x47c144
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0x12bc]
mov al, byte [eax + 0x2c]
test al, al
je 0x47c0b2
mov ebx, dword [ebp - 0x12b8]
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call edi
mov esi, eax
test ebx, ebx
je 0x47c165
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
je 0x47c185
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0x12bc]
mov al, byte [eax + 0x2c]
test al, al
jne 0x47c185
call edi
sub eax, esi
cmp eax, 0x3a98
jb 0x47c154
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
test ebx, ebx
je 0x47c1e6
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
jne 0x47c1d8
lea eax, [ebp - 0x12dc]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetExitCodeProcess]
test eax, eax
je 0x47c1d8
mov eax, dword [ebp - 0x12dc]
test eax, eax
je 0x47c1d8
mov ecx, dword [ebp - 0x12d0]
xor esi, esi
mov edx, dword [ebp - 0x12d8]
movzx edx, dl
cmp eax, dword [ecx + 0x420]
cmovne edx, esi
mov dword [ebp - 0x12d8], edx
mov ecx, dword [ebp - 0x12c0]
call fcn.0047b7f0
push ebx
call edi
mov esi, dword [ebp - 0x12e0]
test esi, esi
je 0x47c1fe
mov ecx, dword [ebp - 0x12d4]
call fcn.0047b7f0
push esi
call edi
mov al, byte [ebp - 0x12d8]
jmp 0x47bbcf
call fcn.00710a9c
call fcn.00710a9c
int3