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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x57b1c8
mov eax, dword fs:[0]
push eax
sub esp, 0x598
mov eax, dword [0x5c5678]
xor eax, esp
mov dword [esp + 0x590], eax
push ebx
push esi
push edi
mov eax, dword [0x5c5678]
xor eax, esp
push eax
lea eax, [esp + 0x5a8]
mov dword fs:[0], eax
mov dword [esp + 0x14], 0
cmp dword [ebp + 8], 0
mov ebx, ecx
jl 0x5025b8
push 1
mov byte [ebx + 0x2ea], 1
call fcn.0045ed00
add esp, 4
push 1
lea edi, [ebx - 0x19c]
push edi
call fcn.004f4930
mov eax, dword [edi + 0x438]
test eax, eax
je 0x50226d
movzx ecx, byte [edi + 0x486]
push 0
push ecx
push eax
call fcn.004e0cf0
mov eax, dword [edi + 0x448]
test eax, eax
je 0x50227d
push eax
call fcn.004dcb90
push 0
push str.Q360InternationSafeClass
call dword [sym.imp.USER32.dll_FindWindowW]
mov esi, eax
test esi, esi
je 0x5022cb
push esi
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x5022cb
xor eax, eax
lea edx, [esp + 0x14]
push edx
push 0x3e8
push eax
lea ecx, [esp + 0x28]
push ecx
push eax
push 0x4a
push esi
mov dword [esp + 0x38], 0x1d
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x30], eax
call dword [sym.imp.USER32.dll_SendMessageTimeoutW]
mov ecx, dword [ebx - 0x16c]
push 1
mov edx, 0x5d1368
call fcn.0046c870
push 0x5cea3e
push 0x10
call fcn.0053f363
xor ecx, ecx
add esp, 8
cmp eax, ecx
je 0x502315
push ecx
mov dword [eax + 4], ecx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
push eax
mov dword [eax], 0x10
mov edx, dword [ebx - 0x16c]
push 0x40b
push edx
call dword [sym.imp.USER32.dll_PostMessageW]
mov esi, edi
call fcn.004f21c0
test al, al
je 0x50239a
xor eax, eax
mov dword [esp + 0xb4], 0x309
mov dword [esp + 0xd4], 0xf
mov dword [esp + 0xd0], eax
mov byte [esp + 0xc0], al
mov dword [esp + 0x5b0], eax
mov esi, dword [ebx + 0x358]
lea ecx, [esp + 0xb4]
mov dword [esp + 0xb8], 1
mov dword [esp + 0xd8], 2
call fcn.0045c550
mov dword [esp + 0x5b0], 0xffffffff
cmp dword [esp + 0xd4], 0x10
jb 0x50239a
mov eax, dword [esp + 0xc0]
push eax
call fcn.0053d782
add esp, 4
xor esi, esi
cmp dword [ebx + 0x200], esi
je 0x5023d6
mov eax, dword [ebx + 0x200]
push esi
cmp eax, esi
jne 0x5023b9
push 0x80004003
call fcn.0053d640
push ecx
mov esi, esp
mov dword [esp + 0x1c], esp
push 1
push 0xc350
call fcn.00471100
call fcn.0048c7e0
add esp, 8
xor esi, esi
mov dword [ebx + 0x2f4], esi
cmp dword [ebx + 0x2f8], esi
jne 0x5023fb
push esi
push 9
push 2
mov eax, edi
call fcn.004eaf50
push edi
call fcn.004f4d00
jmp 0x502919
mov eax, dword [ebx + 0x34c]
cmp eax, esi
je 0x502416
push esi
push eax
push 2
mov eax, edi
call fcn.004eaf50
mov dword [ebx + 0x34c], esi
push edi
call fcn.004f4d00
mov dword [ebx + 0x2f8], esi
mov byte [ebx + 0x2fd], 0
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov eax, dword [edi + 0x454]
cmp eax, esi
je 0x50245a
mov ecx, dword [eax + 0x30]
push ecx
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x50245a
mov eax, dword [edi + 0x454]
mov edx, dword [eax + 0x30]
add eax, 0x2c
push edx
call dword [sym.imp.USER32.dll_DestroyWindow]
lea eax, [esp + 0x33c]
push eax
call fcn.00487070
push ecx
mov dword [esp + 0x5b4], 3
mov eax, esp
mov dword [esp + 0x18], esp
push ecx
mov dword [eax], esi
mov eax, esp
mov dword [eax], esi
mov ecx, dword [ebx - 0x16c]
mov dword [esp + 0x1c], esp
push ecx
lea esi, [esp + 0x374]
call fcn.0048a840
test eax, eax
je 0x50259b
mov byte [ebx + 0x370], 1
call fcn.00425b30
mov esi, eax
call fcn.004263b0
mov bl, al
push str.IDS_BINDING_DESC
xor al, al
or ecx, 0xffffffff
lea esi, [esp + 0x2c]
call fcn.004adb10
mov byte [esp + 0x5b0], 4
cmp dword [eax + 0x18], 8
jb 0x5024da
mov eax, dword [eax + 4]
jmp 0x5024dd
add eax, 4
lea edx, [esp + 0x14]
push edx
mov ecx, eax
call fcn.00425130
lea ecx, [esp + 0x28]
mov byte [esp + 0x5b0], 6
call fcn.0040f400
test bl, bl
je 0x502551
mov edx, 0x58eab0
lea eax, [esp + 0x14]
call fcn.0040eec0
push str.IDS_BINDING_DESC_MORE
xor al, al
or ecx, 0xffffffff
lea esi, [esp + 0x48]
call fcn.004adb10
mov byte [esp + 0x5b0], 7
cmp dword [eax + 0x18], 8
jb 0x502532
mov eax, dword [eax + 4]
jmp 0x502535
add eax, 4
mov edx, eax
lea eax, [esp + 0x14]
call fcn.0040eec0
lea ecx, [esp + 0x44]
mov byte [esp + 0x5b0], 6
call fcn.0040f400
mov edx, dword [esp + 0x14]
push 0
lea ecx, [esp + 0x340]
call fcn.00489000
push 0
push 1
lea esi, [esp + 0x344]
call fcn.00488ed0
mov byte [esp + 0x5b0], 3
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x50259b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x33c]
push ecx
mov dword [esp + 0x5b4], 0xffffffff
call fcn.00487240
jmp 0x502919
push 0
lea edi, [ebx - 0x19c]
push 9
push 2
mov eax, edi
mov dword [esp + 0x20], edi
call fcn.004eaf50
mov eax, dword [ebp + 8]
cmp eax, 0xc000000c
je 0x5026ee
push 0
cmp eax, 0xc001000d
je 0x502696
cmp eax, 0xc001000f
lea eax, [ebx - 0x148]
je 0x50263d
mov ecx, str.IDS_ERROR_INVALID_SERVICE
lea esi, [esp + 0x48]
call fcn.004adac0
mov dword [esp + 0x5b0], 0x10
cmp dword [eax + 0x18], 8
jb 0x50261b
mov eax, dword [eax + 4]
jmp 0x50261e
add eax, 4
push eax
call fcn.004faa40
lea ecx, [esp + 0x44]
mov dword [esp + 0x5b0], 0xffffffff
call fcn.0040f400
jmp 0x502915
mov ecx, str.IDS_ERR_TOKEN_EXPIRED
lea esi, [esp + 0x2c]
call fcn.004adac0
mov dword [esp + 0x5b0], 0xe
cmp dword [eax + 0x18], 8
jb 0x502661
mov eax, dword [eax + 4]
jmp 0x502664
add eax, 4
push eax
call fcn.004faa40
lea ecx, [esp + 0x28]
mov dword [esp + 0x5b0], 0xffffffff
call fcn.0040f400
mov edx, dword [ebx + 0x1f0]
mov eax, dword [edx + 0x10]
lea ecx, [ebx + 0x1f0]
push 1
call eax
jmp 0x502915
lea eax, [ebx - 0x148]
mov ecx, str.IDS_ERR_LICENSE_INVALID_LICENSE
lea esi, [esp + 0x64]
call fcn.004adac0
mov dword [esp + 0x5b0], 0xf
cmp dword [eax + 0x18], 8
jb 0x5026c0
mov eax, dword [eax + 4]
jmp 0x5026c3
add eax, 4
push eax
call fcn.004faa40
lea ecx, [esp + 0x60]
mov dword [esp + 0x5b0], 0xffffffff
call fcn.0040f400
mov ecx, dword [esp + 0x14]
push 0
push ecx
call fcn.004f6f70
jmp 0x502915
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov eax, dword [edi + 0x454]
test eax, eax
je 0x50271f
mov edx, dword [eax + 0x30]
push edx
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x50271f
mov edi, dword [edi + 0x454]
mov eax, dword [edi + 0x30]
add edi, 0x2c
push eax
call dword [sym.imp.USER32.dll_DestroyWindow]
lea ecx, [esp + 0xdc]
push ecx
call fcn.00487070
push ecx
mov eax, esp
mov dword [esp + 0x1c], esp
mov dword [esp + 0x5b4], 0xa
push ecx
mov dword [eax], 0
mov eax, esp
mov dword [eax], 0
mov edx, dword [ebx - 0x16c]
mov dword [esp + 0x20], esp
push edx
lea esi, [esp + 0x114]
call fcn.0048a840
test eax, eax
je 0x5028fd
lea edi, [ebx - 0x148]
push 0
mov ecx, str.IDS_ERROR_DEVICE_FULL
lea esi, [esp + 0x80]
mov eax, edi
mov byte [ebx + 0x370], 1
call fcn.004adac0
mov byte [esp + 0x5b0], 0xb
cmp dword [eax + 0x18], 8
jb 0x5027a1
mov eax, dword [eax + 4]
jmp 0x5027a4
add eax, 4
push 0
mov edx, eax
lea ecx, [esp + 0xe0]
call fcn.00489000
lea ecx, [esp + 0x7c]
mov byte [esp + 0x5b0], 0xa
call fcn.0040f400
mov eax, 1
lea ecx, [esp + 0xdc]
call fcn.00489750
push 0
mov ecx, str.IDS_PURCHASE
lea esi, [esp + 0x9c]
mov eax, edi
call fcn.004adac0
mov byte [esp + 0x5b0], 0xc
cmp dword [eax + 0x18], 8
jb 0x5027fe
mov eax, dword [eax + 4]
jmp 0x502801
add eax, 4
push 0
push 1
mov ecx, eax
lea edx, [esp + 0xe4]
call fcn.00489670
lea ecx, [esp + 0x98]
mov byte [esp + 0x5b0], 0xa
call fcn.0040f400
push 0
mov ecx, str.IDS_MANAGE_DEVICES
lea esi, [esp + 0xb8]
mov eax, edi
call fcn.004adac0
mov byte [esp + 0x5b0], 0xd
cmp dword [eax + 0x18], 8
jb 0x50284f
mov eax, dword [eax + 4]
jmp 0x502852
add eax, 4
push 0
push 2
mov ecx, eax
lea edx, [esp + 0xe4]
call fcn.00489670
lea ecx, [esp + 0xb4]
mov byte [esp + 0x5b0], 0xa
call fcn.0040f400
push 0
push 0
lea esi, [esp + 0xe4]
mov byte [esp + 0x2aa], 1
call fcn.00488ed0
cmp eax, 1
jne 0x5028d8
cmp dword [ebx + 0x2f8], eax
jne 0x5028b8
mov esi, dword [esp + 0x14]
push 0
push esi
call fcn.004f6f70
push 0
push 9
push 2
mov eax, esi
call fcn.004eaf50
jmp 0x5028c3
mov eax, dword [esp + 0x14]
xor ecx, ecx
call fcn.004f5600
xor eax, eax
cmp eax, str.DEVICE_FULL
je 0x5028fd
push str.DEVICE_FULL
call fcn.004f9d30
jmp 0x5028fd
cmp eax, 2
jne 0x5028fd
mov esi, dword [esp + 0x14]
push 0
push esi
call fcn.004f6f70
push 0
push 9
push 2
mov eax, esi
call fcn.004eaf50
mov byte [0x5d0e16], 1
lea ecx, [esp + 0xdc]
push ecx
mov dword [esp + 0x5b4], 0xffffffff
call fcn.00487240
mov edi, dword [esp + 0x14]
push edi
call fcn.004f84d0
mov ecx, dword [esp + 0x5a8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x590]
xor ecx, esp
call fcn.0053d78d
mov esp, ebp
pop ebp
ret 4