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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push ebx
mov ebx, dword [0x11d0c704]
push esi
push edi
mov dword [ebp - 4], ecx
test byte [ebx + 0x20], 2
mov dword [ebp - 8], ebx
je 0x1003e768
mov eax, dword [ebx + 0x1c]
test eax, eax
je 0x1003e76f
cmp byte [eax + 4], 0
je 0x1003e76f
push ebx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [0x11d0c710]
test eax, eax
jne 0x1003e970
push 0x10
push 0x18
call fcn.10434a32
add esp, 8
test eax, eax
je 0x1003e9a9
push 0x2028
push 0x11d0d968
mov dword [eax], 0x11227240
mov dword [eax + 8], 0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0
mov dword [0x11d0c714], eax
call dword [sym.imp.KERNEL32.dll_WerRegisterMemoryBlock]
mov esi, dword [0x11d0c714]
push 0x10
push 0x10
call fcn.10434a32
mov edi, eax
add esp, 8
test edi, edi
je 0x1003e99b
lea eax, [ebp - 0x10]
mov dword [edi + 8], 0
mov dword [edi + 0xc], 0
mov dword [esi + 8], edi
mov esi, dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
push eax
call esi
mov eax, dword [ebp - 0x10]
movups xmm0, xmmword [0x10f24a94]
mov ebx, dword [0x11d0c714]
mov ecx, dword [ebp - 0xc]
mov dword [edi], eax
lea eax, [ebp - 0x18]
mov dword [edi + 4], ecx
movups xmmword [0x11d0d968], xmm0
mov edi, dword [ebx + 8]
push eax
call esi
mov esi, dword [ebp - 0x18]
mov ecx, esi
sub ecx, dword [edi]
mov edx, dword [ebp - 0x14]
mov eax, edx
sbb eax, dword [edi + 4]
add dword [edi + 8], ecx
mov dword [edi + 4], edx
adc dword [edi + 0xc], eax
mov dword [edi], esi
mov ecx, dword [ebx + 8]
mov eax, dword [ecx + 8]
add dword [ebx + 0x10], eax
mov eax, dword [ecx + 0xc]
adc dword [ebx + 0x14], eax
mov edx, dword [ebx + 0x14]
mov ecx, dword [ebx + 0x10]
call fcn.104511a0
movaps xmm1, xmm0
xorps xmm0, xmm0
mulsd xmm1, qword [0x11d0d388]
movlpd qword [ebp - 0x10], xmm0
movsd xmm0, qword [0x1122d530]
comisd xmm1, xmm0
jb 0x1003e891
subsd xmm1, xmm0
comisd xmm0, xmm1
jbe 0x1003e891
mov esi, dword [ebp - 0x10]
mov edi, dword [ebp - 0xc]
add esi, 0
adc edi, 0x80000000
jmp 0x1003e897
mov edi, dword [ebp - 0xc]
mov esi, dword [ebp - 0x10]
movaps xmm0, xmm1
call fcn.104510f0
mov ecx, dword [0x11d0d980]
add eax, esi
mov dword [0x11d0d97c], eax
adc edx, edi
mov dword [0x11d0d978], 3
mov dword [ebp - 0x14], edx
mov edx, dword [ebp - 4]
mov ebx, dword [ebp - 8]
mov eax, dword [edx + 0x36dc]
xor eax, ecx
and eax, 1
xor ecx, eax
mov dword [0x11d0d980], ecx
mov eax, dword [edx + 0x36dc]
xor eax, ecx
and eax, 2
xor eax, ecx
mov dword [0x11d0d980], eax
mov ecx, dword [edx + 0x36dc]
xor ecx, eax
and ecx, 4
xor ecx, eax
mov dword [0x11d0d980], ecx
mov eax, dword [edx + 0x36dc]
xor eax, ecx
and eax, 8
xor eax, ecx
mov dword [0x11d0d980], eax
mov ecx, dword [edx + 0x36dc]
xor ecx, eax
and ecx, 0x10
xor ecx, eax
mov dword [0x11d0d980], ecx
mov eax, dword [edx + 0x36dc]
xor eax, ecx
and eax, 0x20
xor eax, ecx
mov dword [0x11d0d980], eax
mov ecx, dword [edx + 0x36dc]
xor ecx, eax
and ecx, 0x40
xor ecx, eax
mov dword [0x11d0d980], ecx
mov eax, dword [edx + 0x36dc]
xor eax, ecx
mov dword [0x11d0d988], 0
and eax, 0x80
mov dword [0x11d0d98c], 0
xor eax, ecx
mov dword [0x11d0d980], eax
mov eax, dword [0x11d0c710]
inc eax
xor esi, esi
mov dword [0x11d0c710], eax
test byte [ebx + 0x20], 2
je 0x1003e98b
mov ecx, dword [ebx + 0x1c]
test ecx, ecx
je 0x1003e992
cmp byte [ecx + 4], 0
je 0x1003e992
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [esi + 8], 0
mov esi, 0x8007000e
jmp 0x1003e978
test byte [ebx + 0x20], 2
mov dword [0x11d0c714], 0
je 0x1003e9c6
mov eax, dword [ebx + 0x1c]
test eax, eax
je 0x1003e9cd
cmp byte [eax + 4], 0
je 0x1003e9cd
push ebx
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
pop edi
pop esi
mov eax, 0x8007000e
pop ebx
mov esp, ebp
pop ebp
ret