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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xa98
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
xor edi, edi
cmp dword [ebx + 0xc], edi
jne 0x401d97
xor esi, esi
cmp dword [ebx + 0x1c], edi
jle 0x401d97
cmp esi, edi
jl 0x401d87
lea ecx, [ebx + 0x10]
mov eax, esi
call fcn.00402066
jmp 0x401d89
xor eax, eax
push eax
mov eax, ebx
call fcn.00402077
inc esi
cmp esi, dword [ebx + 0x1c]
jl 0x401d77
lea esi, [ebx + 0x10]
call fcn.0040204d
push 0x12
push edi
push edi
push 0x40d43c
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsW]
cmp eax, 0xffffffff
mov dword [ebp - 0xc], eax
je 0x401e7d
mov dword [ebp - 8], edi
push 6
pop esi
xor eax, eax
mov ecx, esi
lea edi, [ebp - 0x30]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x34]
push eax
push dword [ebp - 8]
xor edi, edi
push 0x40d43c
push edi
push dword [ebp - 0xc]
mov dword [ebp - 0x34], 0x1c
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInterfaces]
test eax, eax
je 0x401e58
push 0x3ff
lea eax, [ebp - 0x433]
push edi
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
push edi
lea ecx, [ebp - 0x10]
push ecx
mov eax, 0x400
push eax
mov dword [ebp - 0x10], eax
lea eax, [ebp - 0x434]
push eax
lea eax, [ebp - 0x34]
push eax
push dword [ebp - 0xc]
mov dword [ebp - 0x434], esi
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInterfaceDetailW]
test eax, eax
je 0x401e65
lea esi, [ebp - 0xa94]
call fcn.00401ac4
mov eax, esi
push eax
lea eax, [ebp - 0x430]
push eax
call fcn.00401b7a
test eax, eax
je 0x401e65
mov eax, esi
push eax
lea eax, [ebx + 0x10]
call fcn.00402077
jmp 0x401e65
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x103
je 0x401e72
inc dword [ebp - 8]
cmp dword [ebp - 8], 0xa
jl 0x401dbd
push dword [ebp - 0xc]
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
xor edi, edi
cmp dword [ebx + 0xc], edi
jle 0x401e86
mov esi, dword [ebx]
jmp 0x401e88
xor esi, esi
cmp esi, edi
je 0x401fe1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [esi + 0x648]
push eax
call sub.msvcrt.dll_abs
cmp eax, 0x7530
pop ecx
jle 0x401fe1
cmp dword [ebx + 0x1c], edi
mov dword [ebp - 8], edi
jle 0x401fd8
jmp 0x401ebe
xor edi, edi
cmp dword [ebp - 8], edi
jl 0x401ed1
mov eax, dword [ebp - 8]
mov ecx, ebx
call fcn.00402066
mov ebx, eax
jmp 0x401ed3
xor ebx, ebx
xor esi, esi
cmp ebx, esi
je 0x401fc4
cmp dword [ebp - 8], esi
jl 0x401ef2
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 8]
add ecx, 0x10
call fcn.00402066
mov esi, eax
mov eax, dword [esi + 0x28]
mov ecx, dword [esi + 0x10]
mov edi, eax
sub edi, dword [ebx + 0x28]
sub ecx, eax
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x18], ecx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [ebx + 0x648]
test edi, edi
mov dword [ebp - 0x10], eax
je 0x401fc4
jle 0x401f68
fild dword [ebp - 0xc]
push ecx
fild dword [ebp - 0x10]
push ecx
fdiv qword [0x40e970]
fdivp st(1)
fstp qword [ebp - 0x14]
fild dword [ebp - 0x18]
fdiv qword [ebp - 0x14]
fstp qword [esp]
call fcn.00404b46
fild dword [esi + 0x10]
mov dword [esi + 0x64c], eax
mov eax, dword [esi + 0x10]
test eax, eax
jge 0x401f55
fadd qword [0x40e950]
fdiv qword [ebp - 0x14]
fstp qword [esp]
call fcn.00404b46
mov dword [esi + 0x650], eax
jmp 0x401fc2
neg edi
mov dword [ebp - 0xc], edi
fild dword [ebp - 0xc]
mov eax, dword [esi + 0x28]
test eax, eax
fild dword [ebp - 0x10]
fdiv qword [0x40e970]
fdivp st(1)
fstp qword [ebp - 0x14]
fild dword [esi + 0x28]
jge 0x401f8e
fadd qword [0x40e950]
fdiv qword [ebp - 0x14]
push ecx
push ecx
fstp qword [esp]
call fcn.00404b46
fild dword [esi + 0x10]
mov dword [esi + 0x654], eax
mov eax, dword [esi + 0x10]
test eax, eax
jge 0x401fb1
fadd qword [0x40e950]
fdiv qword [ebp - 0x14]
fstp qword [esp]
call fcn.00404b46
mov dword [esi + 0x658], eax
pop ecx
pop ecx
inc dword [ebp - 8]
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 8]
cmp ecx, dword [eax + 0x1c]
mov ebx, eax
jl 0x401ebc
mov esi, ebx
call fcn.0040204d
jmp 0x402046
cmp dword [ebx + 0x1c], 0
jle 0x402046
test edi, edi
jl 0x401ff8
mov eax, edi
mov ecx, ebx
call fcn.00402066
mov esi, eax
jmp 0x401ffa
xor esi, esi
test esi, esi
je 0x402040
test edi, edi
jl 0x40200e
mov eax, edi
lea ecx, [ebx + 0x10]
call fcn.00402066
jmp 0x402010
xor eax, eax
mov ecx, dword [esi + 0x64c]
mov dword [eax + 0x64c], ecx
mov ecx, dword [esi + 0x650]
mov dword [eax + 0x650], ecx
mov ecx, dword [esi + 0x654]
mov dword [eax + 0x654], ecx
mov ecx, dword [esi + 0x658]
mov dword [eax + 0x658], ecx
inc edi
cmp edi, dword [ebx + 0x1c]
jl 0x401fe7
pop edi
pop esi
pop ebx
leave
ret 4