Function at 0x403ef6
Capabilities:
Check for time delay via queryperformancecounter

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x54
push ebx
push esi
push edi
xor ebx, ebx
mov edi, 0x80004005
mov byte [esp + 0x11], bl
call fcn.0040133b
call sub.cscomp.dll_GetMessageDll
push eax
call fcn.00406d7e
test al, al
mov esi, 0x410060
je 0x404095
lea eax, [esp + 0x20]
push eax
lea eax, [esp + 0x2c]
push eax
mov dword [esp + 0x28], ebx
call fcn.004062dc
test al, al
je 0x404095
lea eax, [esp + 0x24]
push eax
lea eax, [esp + 0x15]
push eax
lea eax, [esp + 0x1b]
push eax
lea eax, [esp + 0x1e]
push eax
push dword [esp + 0x30]
mov dword [esp + 0x38], ebx
push dword [esp + 0x3c]
call fcn.00406702
cmp byte [0x410060], bl
jne 0x404095
cmp byte [esp + 0x12], bl
je 0x40b18c
cmp byte [esp + 0x11], bl
jne 0x40b196
push ebx
push ebx
call dword [sym.imp.ole32.dll_CoInitializeEx]
push eax
call fcn.00403ee4
test eax, eax
jl 0x404095
lea eax, [esp + 0x1c]
push eax
mov dword [esp + 0x50], 0x4040d4
mov dword [esp + 0x54], 0x4040f0
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], esi
mov dword [esp + 0x60], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x1c], ebx
call sub.cscomp.dll_CreateCompilerFactory
mov edi, eax
cmp edi, ebx
jl 0x4040be
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
lea edx, [esp + 0x14]
push edx
push ebx
lea edx, [esp + 0x54]
push edx
push 4
push eax
call dword [ecx + 0x10]
mov edi, eax
cmp edi, ebx
jl 0x4040be
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
lea edx, [esp + 0x18]
push edx
push eax
call dword [ecx + 0x18]
mov edi, eax
cmp edi, ebx
jl 0x4040be
cmp byte [esp + 0x13], bl
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
mov dword [esp + 0x54], ecx
mov dword [esp + 0x5c], eax
jne 0x40b1b1
mov edx, dword [esp + 0x18]
push eax
push dword [esp + 0x24]
push dword [esp + 0x30]
call fcn.004047b4
mov edi, eax
cmp edi, ebx
jl 0x40405b
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
push ebx
push eax
call dword [ecx + 0x24]
mov edi, eax
push edi
call fcn.00403ee4
mov eax, dword [esp + 0x18]
cmp eax, ebx
je 0x404069
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x14]
cmp eax, ebx
je 0x404081
mov ecx, dword [eax]
push eax
call dword [ecx + 0x14]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x1c]
cmp eax, ebx
je 0x40408f
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
call dword [sym.imp.ole32.dll_CoUninitialize]
call fcn.004044b2
cmp byte [esp + 0x11], bl
jne 0x40b1f2
call fcn.00404461
cmp edi, ebx
jne 0x4040cf
cmp byte [0x410060], bl
jne 0x4040cf
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x1c]
cmp eax, ebx
jne 0x40b1c1
jmp 0x40b1c7
xor eax, eax
inc eax
jmp 0x4040b7
call 0x40cd9b
jmp 0x403f80
lea eax, [esp + 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
lea eax, [esp + 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
jmp 0x403f8a
mov ecx, dword [esp + 0x18]
call fcn.0040db08
mov edi, eax
jmp 0x40405b
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x14]
cmp eax, ebx
je 0x40b1d5
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push edi
mov ecx, esi
call fcn.0040cbbe
push eax
push ebx
mov eax, 0x2fb
mov ecx, esi
call fcn.0040cab2
pop ecx
pop ecx
jmp 0x40408f
lea eax, [esp + 0x30]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x34]
sbb ecx, dword [esp + 0x3c]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
fild qword [esp + 0x28]
fild qword [esp + 0x40]
push ecx
push ecx
fdivp st(1)
fstp qword [esp]
push 0x40b238
push esi
call fcn.00403987
add esp, 0x10
jmp 0x4040a4