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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xc4
mov eax, dword [0x515040]
xor eax, esp
mov dword [esp + 0xc0], eax
cmp dword [0x58a3c8], 0
push ebx
push esi
push edi
mov edi, edx
mov dword [esp + 0x1c], ecx
jne 0x41aca0
cmp dword [0x58a3cc], 0
jne 0x41aca0
push 0x58a3c8
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
lea eax, [esp + 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
call fcn.004ee0e0
mov edx, dword [0x58a3cc]
mov ecx, dword [0x58a3c8]
movsd qword [esp + 0x20], xmm0
call fcn.004ee0e0
movsd xmm1, qword [esp + 0x20]
divsd xmm1, xmm0
mov eax, dword [edi + 0x70]
movsd qword [esp + 0x20], xmm1
cmp eax, 0x1d
ja case.default.0x41aceb
jmp dword [eax*4 + 0x41b38c]
mov ecx, edi
call fcn.0041ab00
push 0x41a8a0
jmp 0x41b1fb
lea eax, [edi + 0x3c]
push eax
lea ecx, [edi + 0x60]
call fcn.0041c7c0
mov byte [0x5795b9], 1
push 0x41a920
jmp 0x41b1fb
lea eax, [edi + 0x54]
push eax
lea ecx, [edi + 0x60]
call fcn.0041c7c0
push 0x41a920
jmp 0x41b1f4
mov eax, dword [edi + 0x60]
cmp eax, dword [edi + 0x64]
je 0x41ad41
mov dword [edi + 0x64], eax
mov eax, dword [edi + 0x1c]
mov esi, dword [edi + 0x18]
mov dword [esp + 0x10], eax
cmp esi, eax
je 0x41ad97
nop
mov ecx, dword [edi + 4]
mov eax, dword [ecx]
mov eax, dword [eax]
call eax
cmp eax, dword [esi + 0x510]
jne 0x41ad8b
cmp edx, dword [esi + 0x514]
jne 0x41ad8b
mov eax, dword [edi + 0x64]
mov dword [esp + 0xc], esi
cmp eax, dword [edi + 0x68]
je 0x41ad7d
mov dword [eax], esi
add dword [edi + 0x64], 4
jmp 0x41ad8b
lea ecx, [esp + 0xc]
push ecx
push eax
lea ecx, [edi + 0x60]
call fcn.0041ccc0
add esi, 0x530
cmp esi, dword [esp + 0x10]
jne 0x41ad50
mov byte [0x5795b9], 1
push 0x41a920
jmp 0x41b1fb
mov eax, dword [edi + 0x60]
cmp eax, dword [edi + 0x64]
je 0x41adb3
mov dword [edi + 0x64], eax
mov eax, dword [edi + 0x1c]
mov esi, dword [edi + 0x18]
mov dword [esp + 0xc], eax
cmp esi, eax
je 0x41ad97
cmp dword [esi + 0x518], 0
jne 0x41ade3
mov ecx, dword [edi + 4]
mov eax, dword [ecx]
mov eax, dword [eax]
call eax
cmp eax, dword [esi + 0x510]
jne 0x41ae25
cmp edx, dword [esi + 0x514]
jne 0x41ae25
mov eax, dword [edi]
mov ecx, edi
push 0
push esi
mov eax, dword [eax + 0x28]
call eax
test al, al
jne 0x41ae25
mov eax, dword [edi]
mov ecx, edi
push 1
push esi
mov eax, dword [eax + 0x28]
call eax
test al, al
jne 0x41ae25
mov eax, dword [edi + 0x64]
mov dword [esp + 0x10], esi
cmp eax, dword [edi + 0x68]
je 0x41ae17
mov dword [eax], esi
add dword [edi + 0x64], 4
jmp 0x41ae25
lea ecx, [esp + 0x10]
push ecx
push eax
lea ecx, [edi + 0x60]
call fcn.0041ccc0
add esi, 0x530
cmp esi, dword [esp + 0xc]
jne 0x41adc1
mov byte [0x5795b9], 1
push 0x41a920
jmp 0x41b1fb
mov eax, dword [edi + 0x60]
cmp eax, dword [edi + 0x64]
je 0x41ae4d
mov dword [edi + 0x64], eax
mov eax, dword [edi + 0x1c]
mov esi, dword [edi + 0x18]
mov dword [esp + 0xc], eax
cmp esi, eax
je 0x41ad97
nop
cmp dword [esi + 0x518], 0
jne 0x41ae82
mov ecx, dword [edi + 4]
mov eax, dword [ecx]
mov eax, dword [eax]
call eax
cmp eax, dword [esi + 0x510]
jne 0x41aec4
cmp edx, dword [esi + 0x514]
jne 0x41aec4
mov eax, dword [edi]
mov ecx, edi
push 0
push esi
mov eax, dword [eax + 0x28]
call eax
test al, al
jne 0x41aea2
mov eax, dword [edi]
mov ecx, edi
push 1
push esi
mov eax, dword [eax + 0x28]
call eax
test al, al
je 0x41aec4
mov eax, dword [edi + 0x64]
mov dword [esp + 0x10], esi
cmp eax, dword [edi + 0x68]
je 0x41aeb6
mov dword [eax], esi
add dword [edi + 0x64], 4
jmp 0x41aec4
lea ecx, [esp + 0x10]
push ecx
push eax
lea ecx, [edi + 0x60]
call fcn.0041ccc0
add esi, 0x530
cmp esi, dword [esp + 0xc]
jne 0x41ae60
mov byte [0x5795b9], 1
push 0x41a920
jmp 0x41b1fb
mov eax, dword [edi + 0x60]
cmp eax, dword [edi + 0x64]
je 0x41aeec
mov dword [edi + 0x64], eax
mov eax, dword [edi + 0x1c]
mov esi, dword [edi + 0x18]
mov dword [esp + 0xc], eax
cmp esi, eax
je 0x41ad97
nop
cmp dword [esi + 0x518], 0
jne 0x41af22
mov ecx, dword [edi + 4]
mov eax, dword [ecx]
mov eax, dword [eax]
call eax
cmp eax, dword [esi + 0x510]
jne 0x41af54
cmp edx, dword [esi + 0x514]
jne 0x41af54
mov eax, dword [edi]
mov ecx, edi
push 0
push esi
mov eax, dword [eax + 0x28]
call eax
test al, al
je 0x41af54
mov eax, dword [edi + 0x64]
mov dword [esp + 0x10], esi
cmp eax, dword [edi + 0x68]
je 0x41af46
mov dword [eax], esi
add dword [edi + 0x64], 4
jmp 0x41af54
lea ecx, [esp + 0x10]
push ecx
push eax
lea ecx, [edi + 0x60]
call fcn.0041ccc0
add esi, 0x530
cmp esi, dword [esp + 0xc]
jne 0x41af00
mov byte [0x5795b9], 1
push 0x41a920
jmp 0x41b1fb
mov eax, dword [edi + 0x60]
cmp eax, dword [edi + 0x64]
je 0x41af7c
mov dword [edi + 0x64], eax
mov eax, dword [edi + 0x1c]
mov esi, dword [edi + 0x18]
mov dword [esp + 0xc], eax
cmp esi, eax
je 0x41ad97
nop
cmp dword [esi + 0x518], 0
jne 0x41afb2
mov ecx, dword [edi + 4]
mov eax, dword [ecx]
mov eax, dword [eax]
call eax
cmp eax, dword [esi + 0x510]
jne 0x41afe4
cmp edx, dword [esi + 0x514]
jne 0x41afe4
mov eax, dword [edi]
mov ecx, edi
push 1
push esi
mov eax, dword [eax + 0x28]
call eax
test al, al
je 0x41afe4
mov eax, dword [edi + 0x64]
mov dword [esp + 0x10], esi
cmp eax, dword [edi + 0x68]
je 0x41afd6
mov dword [eax], esi
add dword [edi + 0x64], 4
jmp 0x41afe4
lea ecx, [esp + 0x10]
push ecx
push eax
lea ecx, [edi + 0x60]
call fcn.0041ccc0
add esi, 0x530
cmp esi, dword [esp + 0xc]
jne 0x41af90
mov byte [0x5795b9], 1
push 0x41a920
jmp 0x41b1fb
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b9], 1
push 0x41a8d0
jmp 0x41b1fb
mov ecx, edi
call fcn.0041ab00
push 0x41a8d0
jmp 0x41b1f4
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b9], 1
push 0x41a920
jmp 0x41b1fb
mov ecx, edi
call fcn.0041ab00
push 0x41a920
jmp 0x41b1f4
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b9], 1
push 0x41a9f0
jmp 0x41b1fb
mov ecx, edi
call fcn.0041ab00
push 0x41a9f0
jmp 0x41b1f4
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b8], 3
mov byte [0x5795b9], 1
push 0x41a970
jmp 0x41b1fb
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b8], 3
jmp 0x41b1ef
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b8], 7
mov byte [0x5795b9], 1
push 0x41a970
jmp 0x41b1fb
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b8], 7
jmp 0x41b1ef
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b9], 1
push 0x41aa70
jmp 0x41b1fb
mov ecx, edi
call fcn.0041ab00
push 0x41aa70
jmp 0x41b1f4
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b8], 0xd
mov byte [0x5795b9], 1
push 0x41a970
jmp 0x41b1fb
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b8], 0xd
jmp 0x41b1ef
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b8], 0xf
mov byte [0x5795b9], 1
push 0x41a970
jmp 0x41b1fb
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b8], 0xf
jmp 0x41b1ef
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b8], 0x11
mov byte [0x5795b9], 1
push 0x41a970
jmp 0x41b1fb
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b8], 0x11
jmp 0x41b1ef
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b8], 0x13
mov byte [0x5795b9], 1
push 0x41a970
jmp 0x41b1fb
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b8], 0x13
jmp 0x41b1ef
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b8], 0x17
mov byte [0x5795b9], 1
push 0x41a970
jmp 0x41b1fb
mov ecx, edi
call fcn.0041ab00
mov byte [0x5795b8], 0x17
push 0x41a970
mov byte [0x5795b9], 0
mov ecx, dword [edi + 0x60]
mov eax, dword [edi + 0x64]
sub eax, ecx
push 4
sar eax, 2
push eax
push ecx
call fcn.004d97f0
add esp, 0x10
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x41b310
cmp byte [eax], 0
je 0x41b310
mov esi, dword [edi + 0x60]
cmp dword [edi + 0x64], esi
je 0x41b310
lea ebx, [esi + 4]
mov eax, dword [esi]
add eax, 0x4f8
push eax
lea eax, [esp + 0x2c]
push 0xa0
push eax
call fcn.004d978e
mov al, byte [esp + 0x34]
lea ecx, [esp + 0x34]
add esp, 0xc
test al, al
je 0x41b276
nop dword [eax]
cmp al, 0x41
jl 0x41b26e
mov al, byte [ecx]
cmp al, 0x5a
jg 0x41b26e
add al, 0x20
mov byte [ecx], al
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x41b260
push dword [esp + 0x1c]
lea eax, [esp + 0x2c]
push eax
call fcn.004d0580
add esp, 8
test eax, eax
je 0x41b293
add esi, 4
add ebx, 4
jmp 0x41b307
mov eax, dword [esi]
add eax, 0x458
push eax
lea eax, [esp + 0x2c]
push 0xa0
push eax
call fcn.004d978e
mov al, byte [esp + 0x34]
lea ecx, [esp + 0x34]
add esp, 0xc
test al, al
je 0x41b2d6
nop dword [eax]
cmp al, 0x41
jl 0x41b2ce
mov al, byte [ecx]
cmp al, 0x5a
jg 0x41b2ce
add al, 0x20
mov byte [ecx], al
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x41b2c0
push dword [esp + 0x1c]
lea eax, [esp + 0x2c]
push eax
call fcn.004d0580
add esp, 8
test eax, eax
je 0x41b2f3
add esi, 4
add ebx, 4
jmp 0x41b307
mov eax, dword [edi + 0x64]
sub eax, ebx
push eax
push ebx
push esi
call fcn.004d21c0
add esp, 0xc
add dword [edi + 0x64], 0xfffffffc
cmp dword [edi + 0x64], esi
jne 0x41b236
cmp dword [0x58a3c8], 0
jne 0x41b32d
cmp dword [0x58a3cc], 0
jne 0x41b32d
push 0x58a3c8
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
call fcn.004ee0e0
mov edx, dword [0x58a3cc]
mov ecx, dword [0x58a3c8]
movsd qword [esp + 0x10], xmm0
call fcn.004ee0e0
movsd xmm1, qword [esp + 0x10]
divsd xmm1, xmm0
mov ecx, dword [esp + 0xcc]
subsd xmm1, qword [esp + 0x20]
movsd qword [edi + 0xa0], xmm1
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004cf01b
mov esp, ebp
pop ebp
ret