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

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
mov edx, dword [esp + 8]
push 0x5914abc3
push eax
mov dword fs:[0], esp
sub esp, 0x28
test edx, edx
push ebx
push ebp
push esi
push edi
je 0x59011474
mov esi, dword [esp + 0x4c]
test esi, esi
je 0x59011474
mov ebp, dword [esp + 0x50]
test ebp, ebp
je 0x59011474
mov edi, str.SUCCESS_UNID
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push str.SUCCESS_UNID
push esi
push edx
call fcn.5900d6d0
mov edx, eax
add esp, 0x10
cmp edx, 0xffffffff
je 0x59011474
mov edi, str.SUCCESS_UNID
or ecx, 0xffffffff
xor eax, eax
sub esi, edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov edi, str.SUCCESS_UNID
sub esi, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov edi, dword [esp + 0x48]
mov ebx, esi
not ecx
dec ecx
push 1
mov esi, ecx
push 0x59186bac
add esi, edx
push ebx
add esi, edi
push esi
call fcn.5900d6d0
add esp, 0x10
test eax, eax
jle 0x59011474
push eax
push esi
lea ecx, [esp + 0x54]
call fcn.590a0970
mov eax, dword [0x5916287c]
mov dword [esp + 0x40], 0
mov dword [esp + 0x30], eax
mov edx, dword [ebp + 4]
mov eax, dword [ebp + 8]
mov ecx, dword [ebp]
mov byte [esp + 0x40], 2
mov dword [esp + 0x24], edx
lea edx, [esp + 0x4c]
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], ecx
mov ecx, dword [ebp + 0xc]
push edx
lea eax, [esp + 0x54]
push 0x59186bb0
push eax
mov dword [esp + 0x38], ecx
call fcn.590a17e0
push 0x59186bb0
lea ecx, [esp + 0x4c]
mov bl, 3
push eax
push ecx
mov byte [esp + 0x4c], bl
call fcn.590a1610
push eax
lea ecx, [esp + 0x34]
mov byte [esp + 0x44], 4
call fcn.590a1040
lea ecx, [esp + 0x48]
mov byte [esp + 0x40], bl
call fcn.590a0ec0
lea ecx, [esp + 0x50]
mov byte [esp + 0x40], 2
call fcn.590a0ec0
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
push 1
push 0x591ad540
lea ecx, [esp + 0x1c]
mov dword [esp + 0x3c], eax
call fcn.590b48a0
mov edi, dword [0x591ad534]
mov byte [esp + 0x40], 5
call esi
lea ebp, [edi - 1]
mov dword [esp + 0x50], eax
test ebp, ebp
jl 0x590113ef
mov eax, dword [0x591ad534]
lea ecx, [ebp + ebp*2]
shl ecx, 3
mov dword [esp + 0x48], ecx
mov edx, dword [0x591ad530]
mov ebx, dword [ecx + edx + 0x14]
lea esi, [ecx + edx]
mov edx, dword [esp + 0x50]
sub edx, ebx
cmp edx, 0x1b7740
jbe 0x590113dd
sub eax, ebp
mov dword [esp + 0x10], esi
dec eax
xor edi, edi
mov ebx, eax
lea ecx, [esi + 0x10]
mov byte [esp + 0x40], 5
call fcn.590a0ec0
add esi, 0x18
mov eax, edi
dec edi
mov dword [esp + 0x10], esi
test eax, eax
jne 0x5901138e
test ebx, ebx
je 0x590113ce
mov eax, dword [esp + 0x48]
lea ecx, [ebx + ebx*2]
shl ecx, 3
push ecx
mov ecx, dword [0x591ad530]
lea edx, [eax + ecx + 0x18]
add eax, ecx
push edx
push eax
call fcn.59088c50
add esp, 0xc
mov eax, dword [0x591ad534]
mov ecx, dword [esp + 0x48]
dec eax
mov dword [0x591ad534], eax
dec ebp
sub ecx, 0x18
test ebp, ebp
mov dword [esp + 0x48], ecx
jge 0x59011368
jmp 0x590113f4
mov eax, dword [0x591ad534]
mov esi, eax
cmp esi, eax
jl 0x5901140a
lea eax, [esi + 1]
push 0xffffffffffffffff
push eax
mov ecx, 0x591ad530
call fcn.59060e90
mov edx, dword [0x591ad530]
lea ecx, [esi + esi*2]
lea esi, [edx + ecx*8]
mov ecx, dword [esp + 0x20]
mov eax, esi
mov dword [eax], ecx
mov edx, dword [esp + 0x24]
mov dword [eax + 4], edx
mov ecx, dword [esp + 0x28]
mov dword [eax + 8], ecx
mov edx, dword [esp + 0x2c]
lea ecx, [esi + 0x10]
mov dword [eax + 0xc], edx
lea eax, [esp + 0x30]
push eax
call fcn.590a1040
mov ecx, dword [esp + 0x34]
mov dword [esi + 0x14], ecx
lea ecx, [esp + 0x14]
mov byte [esp + 0x40], 2
call fcn.590b4900
lea ecx, [esp + 0x30]
mov byte [esp + 0x40], 0
call fcn.590a0ec0
lea ecx, [esp + 0x4c]
mov dword [esp + 0x40], 0xffffffff
call fcn.590a0ec0
mov ecx, dword [esp + 0x38]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x34
ret