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

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
mov edx, dword [esp + 8]
push 0x5914ba53
push eax
mov dword fs:[0], esp
sub esp, 0x28
test edx, edx
push ebx
push ebp
push esi
push edi
je 0x59011164
mov esi, dword [esp + 0x4c]
test esi, esi
je 0x59011164
mov ebp, dword [esp + 0x50]
test ebp, ebp
je 0x59011164
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.5900d550
mov edx, eax
add esp, 0x10
cmp edx, 0xffffffff
je 0x59011164
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 0x59187bc4
add esi, edx
push ebx
add esi, edi
push esi
call fcn.5900d550
add esp, 0x10
test eax, eax
jle 0x59011164
push eax
push esi
lea ecx, [esp + 0x54]
call fcn.590a1d90
mov eax, dword [0x591638bc]
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 0x59187bc8
push eax
mov dword [esp + 0x38], ecx
call fcn.590a2c00
push 0x59187bc8
lea ecx, [esp + 0x4c]
mov bl, 3
push eax
push ecx
mov byte [esp + 0x4c], bl
call fcn.590a2a30
push eax
lea ecx, [esp + 0x34]
mov byte [esp + 0x44], 4
call fcn.590a2460
lea ecx, [esp + 0x48]
mov byte [esp + 0x40], bl
call fcn.590a22e0
lea ecx, [esp + 0x50]
mov byte [esp + 0x40], 2
call fcn.590a22e0
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
push 1
push 0x591aeff0
lea ecx, [esp + 0x1c]
mov dword [esp + 0x3c], eax
call fcn.590b5cc0
mov edi, dword [0x591aefe4]
mov byte [esp + 0x40], 5
call esi
lea ebp, [edi - 1]
mov dword [esp + 0x50], eax
test ebp, ebp
jl 0x590110df
mov eax, dword [0x591aefe4]
lea ecx, [ebp + ebp*2]
shl ecx, 3
mov dword [esp + 0x48], ecx
mov edx, dword [0x591aefe0]
mov ebx, dword [ecx + edx + 0x14]
lea esi, [ecx + edx]
mov edx, dword [esp + 0x50]
sub edx, ebx
cmp edx, 0x1b7740
jbe 0x590110cd
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.590a22e0
add esi, 0x18
mov eax, edi
dec edi
mov dword [esp + 0x10], esi
test eax, eax
jne 0x5901107e
test ebx, ebx
je 0x590110be
mov eax, dword [esp + 0x48]
lea ecx, [ebx + ebx*2]
shl ecx, 3
push ecx
mov ecx, dword [0x591aefe0]
lea edx, [eax + ecx + 0x18]
add eax, ecx
push edx
push eax
call fcn.5908a070
add esp, 0xc
mov eax, dword [0x591aefe4]
mov ecx, dword [esp + 0x48]
dec eax
mov dword [0x591aefe4], eax
dec ebp
sub ecx, 0x18
test ebp, ebp
mov dword [esp + 0x48], ecx
jge 0x59011058
jmp 0x590110e4
mov eax, dword [0x591aefe4]
mov esi, eax
cmp esi, eax
jl 0x590110fa
lea eax, [esi + 1]
push 0xffffffffffffffff
push eax
mov ecx, 0x591aefe0
call fcn.59060560
mov edx, dword [0x591aefe0]
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.590a2460
mov ecx, dword [esp + 0x34]
mov dword [esi + 0x14], ecx
lea ecx, [esp + 0x14]
mov byte [esp + 0x40], 2
call fcn.590b5d20
lea ecx, [esp + 0x30]
mov byte [esp + 0x40], 0
call fcn.590a22e0
lea ecx, [esp + 0x4c]
mov dword [esp + 0x40], 0xffffffff
call fcn.590a22e0
mov ecx, dword [esp + 0x38]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x34
ret