Function at 0x42341c
Capabilities:
Check for time delay via queryperformancecounter
Print debug messages

Disassembly:
push ebp
mov ebp, esp
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ebx
push esi
push edi
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.00404b64
xor eax, eax
push ebp
push 0x4236ea
push dword fs:[eax]
mov dword fs:[eax], esp
cmp byte [0x471a01], 3
je 0x4236c7
push 0x4236f8
call sub.user32.dll_GetDesktopWindow
push eax
call sub.user32.dll_GetPropA
mov ebx, eax
inc ebx
push ebx
push 0x4236f8
call sub.user32.dll_GetDesktopWindow
push eax
call sub.user32.dll_SetPropA
push 0x423710
lea edx, [ebp - 0xc]
mov eax, ebx
call fcn.004086e4
push dword [ebp - 0xc]
push 0x42371c
push dword [ebp - 4]
lea eax, [ebp - 4]
mov edx, 4
call fcn.00404a34
push 0x423720
mov eax, dword [0x471a08]
push eax
call sub.user32.dll_GetPropA
cmp eax, 1
sete byte [0x46e4e0]
cmp byte [0x46e4e0], 0
je 0x4235f5
mov byte [0x46e4e4], 1
push 0x471a14
call sub.kernel32.dll_QueryPerformanceCounter_1
push dword [0x471a10]
push dword [0x471a0c]
push 0
push 0x3e8
mov eax, dword [0x471a14]
mov edx, dword [0x471a18]
call fcn.004056f8
call fcn.0040571c
mov dword [ebp - 8], eax
call sub.kernel32.dll_GetCurrentThreadId_1
mov esi, eax
or ebx, 0xffffffff
mov eax, dword [0x471be8]
call fcn.00405a44
mov edx, eax
dec edx
test edx, edx
jl 0x423532
inc edx
xor eax, eax
mov ecx, dword [0x471be8]
mov ecx, dword [ecx + eax*4]
cmp esi, dword [ecx + 4]
jne 0x42352e
mov ebx, eax
jmp 0x423532
inc eax
dec edx
jne 0x42351c
cmp ebx, 0xffffffff
jne 0x423582
mov eax, dword [0x471be8]
call fcn.00405a44
mov ebx, eax
lea eax, [ebx + 1]
push eax
mov eax, 0x471be8
mov ecx, 1
mov edx, dword [0x42325c]
call fcn.00405c00
add esp, 4
mov dl, 1
mov eax, dword [0x4231e0]
call fcn.004037f8
mov edi, eax
mov eax, dword [0x471be8]
mov dword [eax + ebx*4], edi
mov dword [edi + 4], esi
xor eax, eax
mov dword [edi + 8], eax
xor eax, eax
mov dword [edi + 0xc], eax
mov dl, 1
mov eax, dword [0x423178]
call fcn.004037f8
mov esi, eax
mov eax, dword [0x471be8]
mov eax, dword [eax + ebx*4]
mov eax, dword [eax + 0xc]
mov dword [esi + 8], eax
mov eax, dword [0x471be8]
mov eax, dword [eax + ebx*4]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x4235b0
mov dword [eax + 0xc], esi
mov eax, dword [0x471be8]
mov eax, dword [eax + ebx*4]
mov dword [eax + 0xc], esi
cmp dword [eax + 8], 0
jne 0x4235c4
mov dword [eax + 8], esi
push 0x423734
mov eax, dword [ebp - 8]
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x10]
call fcn.004087d0
push dword [ebp - 0x10]
push 0x42371c
push dword [ebp - 4]
lea eax, [esi + 4]
mov edx, 4
call fcn.00404a34
jmp 0x4236c7
cmp byte [0x46e4e4], 0
je 0x423644
call sub.kernel32.dll_GetCurrentThreadId_1
mov esi, eax
or ebx, 0xffffffff
mov eax, dword [0x471be8]
call fcn.00405a44
mov edx, eax
dec edx
test edx, edx
jl 0x423632
inc edx
xor eax, eax
mov ecx, dword [0x471be8]
mov ecx, dword [ecx + eax*4]
cmp esi, dword [ecx + 4]
jne 0x42362e
mov ebx, eax
jmp 0x423632
inc eax
dec edx
jne 0x42361c
cmp ebx, 0xffffffff
jle 0x423644
mov eax, dword [0x471be8]
mov eax, dword [eax + ebx*4]
call fcn.004233b0
push 0x471a14
call sub.kernel32.dll_QueryPerformanceCounter_1
push dword [0x471a10]
push dword [0x471a0c]
push 0
push 0x3e8
mov eax, dword [0x471a14]
mov edx, dword [0x471a18]
call fcn.004056f8
call fcn.0040571c
mov dword [ebp - 8], eax
push 0x423734
mov eax, dword [ebp - 8]
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x14]
call fcn.004087d0
push dword [ebp - 0x14]
push 0x42371c
push dword [ebp - 4]
lea eax, [ebp - 4]
mov edx, 4
call fcn.00404a34
cmp byte [0x471a01], 2
je 0x4236bf
mov eax, dword [ebp - 4]
call fcn.00404b74
push eax
call sub.kernel32.dll_OutputDebugStringA
jmp 0x4236c7
mov eax, dword [ebp - 4]
call fcn.0042327c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4236f1
lea eax, [ebp - 0x14]
mov edx, 3
call fcn.004046c8
lea eax, [ebp - 4]
call fcn.004046a4
ret