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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42b658
mov eax, dword fs:[0]
push eax
sub esp, 0x44
mov eax, dword [0x4394c8]
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 esi, ecx
call fcn.00409b50
test eax, eax
jne 0x409ad5
push str.Waiting_For_Commands
lea edi, [esi + 0xc]
push 0x64
push edi
call fcn.00409df0
add esp, 0xc
xor eax, eax
mov dword [ebp - 0x4c], eax
push str.TeamViewer_Win32_Instance_Mutex
push eax
push 0x10000000
call dword [sym.imp.KERNEL32.dll_OpenMutexW]
test eax, eax
je 0x4095c4
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov byte [ebp - 0x43], 1
jmp 0x4095c8
mov byte [ebp - 0x43], 0
xor eax, eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x18], eax
mov eax, dword [0x43bc04]
mov dword [ebp - 0x18], eax
mov word [ebp - 0x14], 0
mov byte [ebp - 0x12], 1
mov dword [ebp - 4], 0
mov eax, dword [esi + 0x10]
mov dword [ebp - 0x48], 0
mov byte [ebp - 0x41], 0
mov dword [ebp - 0x20], eax
lea ebx, [ebx]
push 0
push 0x4ff
push 0x3e8
lea eax, [ebp - 0x20]
mov byte [ebp - 0x42], 1
push eax
push 1
call dword [sym.imp.USER32.dll_MsgWaitForMultipleObjectsEx]
mov dword [ebp - 0x50], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
cmp dword [ebp - 0x50], 0x102
mov ebx, eax
je 0x40963d
mov ecx, ebx
sub ecx, dword [ebp - 0x4c]
cmp ecx, 0x3e8
jb 0x40966f
push str.TeamViewer_Win32_Instance_Mutex
push 0
push 0x10000000
call dword [sym.imp.KERNEL32.dll_OpenMutexW]
test eax, eax
je 0x409664
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov byte [ebp - 0x42], 1
mov byte [ebp - 0x43], 1
jmp 0x40966c
cmp byte [ebp - 0x43], 0
sete byte [ebp - 0x42]
mov dword [ebp - 0x4c], ebx
cmp byte [ebp - 0x41], 0
je 0x4096e5
sub ebx, dword [ebp - 0x48]
cmp ebx, 0x3e8
jb 0x4096e5
push str.Fatal_error__Invoker_Helper_Backend_was_not_released_within_the_specified_time._Attempting_to_recover.
push 0xc8
push edi
call fcn.00409df0
add esp, 0xc
mov dword [ebp - 0x48], 0
lea ecx, [ebp - 0x18]
mov byte [ebp - 0x41], 0
call fcn.00408a60
cmp byte [ebp - 0x14], 0
je 0x4096e5
push str.CInvokerHelperBackend::Unblock
lea eax, [ebp - 0x18]
push 0x64
push eax
call fcn.00409df0
add esp, 0xc
push 0
call dword [sym.imp.USER32.dll_BlockInput]
test eax, eax
jne 0x4096e1
push str.InvokerHelperBackend:_Could_not_Unblock_Input_
lea eax, [ebp - 0x18]
push 0xc8
push eax
call fcn.00409df0
add esp, 0xc
mov byte [ebp - 0x14], 0
cmp byte [ebp - 0x42], 0
je 0x409ab3
mov ecx, dword [esi + 4]
mov ebx, dword [edi]
test ecx, ecx
je 0x409731
mov eax, dword [ebx + 4]
test eax, eax
je 0x409731
cmp eax, 0xffffffff
je 0x409731
mov eax, dword [ecx]
lea ecx, [ebp - 0x40]
mov dword [ebp - 0x40], 0
push ecx
mov eax, dword [eax + 0x10]
call eax
mov ecx, dword [ebp - 0x40]
test ecx, ecx
je 0x409731
test eax, eax
je 0x409731
mov edx, dword [ebx + 8]
push eax
push ecx
mov ecx, dword [ebx + 4]
call fcn.00409bf0
add esp, 8
mov eax, dword [ebp - 0x50]
test eax, eax
je 0x4097b1
cmp eax, 1
je 0x409760
cmp eax, 0xffffffff
jne 0x409600
push str.Error_in_Wait_Function
push 0xc8
push edi
call fcn.00409df0
mov esi, 0xa
jmp 0x409ac8
push 1
push 0
push 0
push 0
lea eax, [ebp - 0x3c]
push eax
call dword [sym.imp.USER32.dll_PeekMessageW]
cmp eax, 0xffffffff
je 0x409a9b
test eax, eax
je 0x409600
mov eax, dword [ebp - 0x38]
cmp eax, 0x12
je 0x409a88
cmp eax, 0x16
je 0x409a88
lea eax, [ebp - 0x3c]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [ebp - 0x3c]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageW]
jmp 0x409600
mov eax, dword [esi + 4]
lea ecx, [ebp - 0x1c]
xor ebx, ebx
push ecx
mov dword [ebp - 0x40], ebx
mov eax, dword [eax + 4]
call eax
test eax, eax
je 0x409600
lea ebx, [ebx]
cmp eax, 0xffffffff
je 0x409a70
mov ecx, dword [ebp - 0x1c]
lea eax, [ecx + 1]
cmp eax, 0x13
ja case.0x4097e8.0
jmp dword [eax*4 + 0x409af4]
push str.Error__CmdUndef_
push 0xc8
push edi
call fcn.00409df0
add esp, 0xc
jmp 0x409861
mov ecx, edi
call fcn.00409d90
push str.Logging_Opened
push 0x64
push edi
call fcn.00409df0
add esp, 0xc
jmp 0x409861
push str.Closing_Log
push 0x64
push edi
call fcn.00409df0
mov ebx, dword [edi]
add esp, 0xc
mov eax, dword [ebx + 4]
test eax, eax
je 0x409849
cmp eax, 0xffffffff
je 0x409849
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebx + 4], 0
mov eax, dword [ebx + 8]
test eax, eax
je 0x40985e
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebx + 8], 0
mov ebx, dword [ebp - 0x40]
mov eax, dword [esi + 4]
lea ecx, [ebp - 0x1c]
push ecx
mov eax, dword [eax + 4]
call eax
test eax, eax
jne 0x4097d0
jmp 0x409600
mov eax, dword [esi + 4]
mov eax, dword [eax + 0xc]
call eax
test eax, eax
jne 0x409861
push str.Could_not_start_hooks
push 0xc8
push edi
call fcn.00409df0
add esp, 0xc
jmp 0x409861
mov eax, dword [esi + 4]
mov eax, dword [eax + 0x10]
call eax
jmp 0x409861
mov eax, dword [esi + 4]
mov eax, dword [eax + 0x14]
call eax
test eax, eax
jne 0x409861
push str.Could_not_start_Title_Bar_Buttons
push 0xc8
push edi
call fcn.00409df0
add esp, 0xc
jmp 0x409861
mov eax, dword [esi + 4]
mov eax, dword [eax + 0x18]
call eax
jmp 0x409861
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, eax
sub ecx, ebx
cmp ecx, 0x32
jbe 0x409861
mov ebx, eax
mov eax, dword [esi + 4]
mov dword [ebp - 0x40], ebx
mov eax, dword [eax + 0x1c]
call eax
jmp 0x409861
mov eax, dword [esi + 4]
mov eax, dword [eax + 0x20]
call eax
test eax, eax
jne 0x409861
push str.Could_not_start_Single_Window
push 0xc8
push edi
call fcn.00409df0
add esp, 0xc
jmp 0x409861
mov eax, dword [esi + 4]
mov eax, dword [eax + 0x24]
call eax
jmp 0x409861
mov eax, dword [esi + 4]
mov eax, dword [eax + 0x30]
call eax
test eax, eax
jne 0x409861
push str.Could_not_start_DragDrop_Interceptor
push 0xc8
push edi
call fcn.00409df0
add esp, 0xc
jmp 0x409861
mov eax, dword [esi + 4]
mov eax, dword [eax + 0x34]
call eax
jmp 0x409861
mov eax, dword [esi + 4]
mov eax, dword [eax + 0x3c]
call eax
test eax, eax
jne 0x409861
push str.Could_not_start_DirectX_hooks
push 0xc8
push edi
call fcn.00409df0
add esp, 0xc
jmp 0x409861
mov eax, dword [esi + 4]
mov eax, dword [eax + 0x40]
call eax
jmp 0x409861
lea ecx, [ebp - 0x18]
call fcn.00408760
mov edx, dword [esi + 4]
xor ecx, ecx
mov bl, al
test bl, bl
push 0
sete cl
add ecx, 2
push ecx
mov ecx, dword [edx + 0x38]
call ecx
test bl, bl
je 0x40985e
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebp - 0x48], eax
mov byte [ebp - 0x41], 1
jmp 0x40985e
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x48], 0
mov byte [ebp - 0x41], 0
call fcn.00408820
mov eax, dword [esi + 4]
push 0
push 2
mov eax, dword [eax + 0x38]
call eax
jmp 0x409861
cmp byte [ebp - 0x14], 0
mov dword [ebp - 0x48], 0
mov byte [ebp - 0x41], 0
je 0x409861
push str.CInvokerHelperBackend::Unblock
lea eax, [ebp - 0x18]
push 0x64
push eax
call fcn.00409df0
add esp, 0xc
push 0
call dword [sym.imp.USER32.dll_BlockInput]
test eax, eax
jne 0x409a37
push str.InvokerHelperBackend:_Could_not_Unblock_Input_
lea eax, [ebp - 0x18]
push 0xc8
push eax
call fcn.00409df0
add esp, 0xc
mov byte [ebp - 0x14], 0
jmp 0x409861
lea ecx, [ebp - 0x18]
call fcn.00408a60
jmp 0x409861
push ecx
push str.Error__Unknown_Command__i
push 0xc8
push edi
call fcn.00409df0
mov eax, dword [esi + 4]
add esp, 0x10
mov eax, dword [eax]
mov eax, dword [eax + 0x14]
call eax
jmp 0x409861
push str.Fatal_Error__Cmd_overflow_detected._Running_in_inconsistent_state.
push 0xc8
push edi
call fcn.00409df0
add esp, 0xc
jmp 0x409600
push str.Quitting_because_of_window_message
push 0xc8
push edi
call fcn.00409df0
add esp, 0xc
xor esi, esi
jmp 0x409acb
push str.CmdQuitLoader
push 0x64
push edi
call fcn.00409df0
add esp, 0xc
xor esi, esi
jmp 0x409acb
push str.Error__TeamViewer_terminated_unexpectedly_
push 0xc8
push edi
call fcn.00409df0
mov esi, 9
add esp, 0xc
lea ecx, [ebp - 0x18]
call fcn.004086c0
mov eax, esi
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.00416cb0
mov esp, ebp
pop ebp
ret