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

Disassembly:
mov eax, 0x2009ff49
call fcn.2007d394
sub esp, 0xb7c
mov eax, dword [0x200cc84c]
push ebx
push esi
xor eax, ebp
push edi
mov edi, ecx
xor ebx, ebx
cmp dword [edi + 0x1c], ebx
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 0x10]
je 0x20056103
lea ecx, [ebp - 0x158]
push ecx
push eax
call fcn.20070ae5
cmp word [ebp - 0x158], bx
mov eax, dword [ebp - 0x154]
pop ecx
pop ecx
jne 0x200555c3
cmp eax, ebx
je 0x20056103
cmp eax, dword [edi + 0x10b14]
jne 0x20056103
cmp word [ebp - 0x114], 0x100
ja 0x20056103
movzx esi, word [ebp - 0x114]
push esi
mov dword [ebp - 0x18c], esi
call fcn.2008f9f9
mov dword [ebp - 0x180], eax
mov dword [ebp - 0x1a0], eax
mov dword [ebp - 4], ebx
push esi
push ebx
push eax
call fcn.2007e690
mov eax, dword [edi + 0x1c]
push 4
cdq
pop ecx
idiv ecx
mov esi, eax
shl esi, 2
push esi
mov dword [ebp - 0x168], eax
call fcn.2008f9f9
mov dword [ebp - 0x15c], eax
mov dword [ebp - 0x19c], eax
mov byte [ebp - 4], 1
push esi
call fcn.2008f9f9
add esp, 0x18
mov dword [ebp - 0x16c], eax
mov dword [ebp - 0x178], eax
mov byte [ebp - 4], 2
lea ecx, [ebp - 0xb88]
call fcn.20028970
mov byte [ebp - 4], 3
push dword [ebp - 0x168]
lea ecx, [ebp - 0xb88]
push 0x10001
push dword [ebp - 0x16c]
call fcn.20028f08
push dword [edi + 0x1c]
lea eax, [edi + 0x20]
push eax
push dword [ebp - 0x15c]
call fcn.2007ca70
push esi
call fcn.2008f9f9
mov dword [ebp - 0x170], eax
mov dword [ebp - 0x190], eax
mov byte [ebp - 4], 4
push esi
call fcn.2008f9f9
mov dword [ebp - 0x174], eax
mov dword [ebp - 0x184], eax
mov byte [ebp - 4], 5
push esi
push ebx
push dword [ebp - 0x170]
call fcn.2007e690
push esi
push ebx
push dword [ebp - 0x174]
call fcn.2007e690
push esi
lea eax, [ebp - 0x110]
push eax
push dword [ebp - 0x170]
call fcn.2007ca70
add esp, 0x38
push dword [ebp - 0x168]
lea ecx, [ebp - 0xb88]
push dword [ebp - 0x16c]
push dword [ebp - 0x15c]
push dword [ebp - 0x170]
push dword [ebp - 0x174]
call fcn.2002acd2
push esi
push dword [ebp - 0x174]
lea eax, [ebp - 0x110]
push eax
call fcn.2007ca70
mov byte [ebp - 4], 4
push dword [ebp - 0x174]
call fcn.2008f9fe
mov byte [ebp - 4], 3
push dword [ebp - 0x170]
call fcn.2008f9fe
add esp, 0x14
mov byte [ebp - 4], 2
lea ecx, [ebp - 0xb88]
call fcn.20028984
mov byte [ebp - 4], 1
push dword [ebp - 0x16c]
call fcn.2008f9fe
mov byte [ebp - 4], bl
push dword [ebp - 0x15c]
call fcn.2008f9fe
mov eax, dword [ebp - 0x118]
cmp eax, dword [ebp - 0x110]
pop ecx
pop ecx
jne 0x200560f3
mov eax, dword [ebp - 0x14c]
cmp eax, dword [ebp - 0x10c]
jne 0x200560f3
push dword [ebp - 0x18c]
lea eax, [ebp - 0x110]
push eax
push dword [ebp - 0x180]
call fcn.2007ca70
add esp, 0xc
lea ecx, [ebp - 0x198]
call fcn.200013ff
mov eax, dword [ebp + 8]
mov dword [ebp - 0x198], eax
mov ax, word [ebp + 0xc]
mov word [ebp - 0x194], ax
lea eax, [ebp - 0x1bc]
push eax
lea ecx, [ebp - 0x198]
call fcn.20034401
mov byte [ebp - 4], 6
cmp dword [eax + 0x18], 0x10
jb 0x200557ee
mov eax, dword [eax + 4]
jmp 0x200557f1
add eax, 4
push eax
lea eax, [ebp - 0x164]
push eax
mov ecx, edi
call fcn.2004448d
mov byte [ebp - 4], 8
push ebx
push 1
lea ecx, [ebp - 0x1bc]
call fcn.2000275e
movzx eax, byte [ebp - 0x14f]
mov ecx, eax
mov esi, eax
and eax, 0x40
mov dword [ebp - 0x170], eax
mov eax, dword [ebp - 0x164]
and ecx, 0x80
and esi, 2
cmp eax, ebx
mov dword [ebp - 0x174], ecx
je 0x20055f99
cmp byte [eax + 0x1e4], bl
jne 0x20055f99
mov cl, byte [ebp - 0x150]
shr cl, 6
not cl
and cl, 2
mov byte [eax + 0xc0], cl
test byte [ebp - 0x150], 0x10
mov ecx, dword [ebp - 0x164]
setne al
inc al
mov byte [ecx + 0xbf], al
test byte [ebp - 0x150], 0x20
mov ecx, dword [ebp - 0x164]
sete al
inc al
mov byte [ecx + 0xbd], al
test byte [ebp - 0x150], 0x40
je 0x200558a9
mov eax, dword [ebp - 0x164]
mov byte [eax + 0xbf], 3
mov eax, dword [ebp - 0x164]
cmp byte [eax + 0xc0], bl
jne 0x200558be
mov byte [eax + 0xbf], 2
lea eax, [edi + 0x10938]
push eax
lea ecx, [ebp - 0x15c]
call fcn.200011c0
mov byte [ebp - 4], 9
test byte [ebp - 0x150], 0xd0
je 0x200558f6
lea eax, [ebp - 0x164]
push eax
lea eax, [ebp - 0x188]
push eax
lea ecx, [edi + 0x109cc]
call fcn.20048f98
mov byte [ebp - 4], 8
cmp dword [ebp - 0x15c], ebx
je 0x20055917
push dword [ebp - 0x15c]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [ebp - 0x15c]
dec dword [eax + 0x18]
cmp esi, ebx
je 0x200560e5
mov eax, dword [ebp - 0x118]
mov ecx, dword [ebp - 0x164]
mov dword [ecx + 0x108], eax
mov eax, dword [edi + 0x19244]
cmp eax, ebx
je 0x20055957
mov ecx, dword [ebp - 0x118]
cmp ecx, 0xffffffff
je 0x200559bf
cmp ecx, ebx
je 0x200559bf
cmp ecx, eax
jbe 0x200559bf
add eax, 0x5265c00
cmp ecx, eax
jae 0x200559bf
cmp dword [edi + 0x2a0], ebx
jne 0x200559bf
cmp dword [edi + 0x548], ebx
jne 0x200559bf
mov eax, dword [ebp - 0x164]
mov byte [eax + 0xfc], bl
mov eax, dword [ebp - 0x164]
mov dword [eax + 0x100], ebx
mov eax, dword [ebp - 0x164]
mov eax, dword [eax + 0x108]
cmp dword [edi + 0x19244], eax
jae 0x20055999
mov dword [edi + 0x19244], eax
push dword [edi + 0x19244]
lea esi, [edi + 0x688]
mov ecx, esi
call fcn.2001e302
push dword [ebp - 0x108]
mov ecx, esi
push dword [edi + 0x19244]
call fcn.2001ba30
push dword [edi + 0x2a0]
lea ecx, [edi + 0x688]
push dword [ebp - 0x14c]
call fcn.2001c08e
cmp dword [edi + 0x2bc], ebx
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebp - 0x168], eax
mov dword [ebp - 0x16c], ebx
jne 0x20055a04
mov eax, dword [ebp - 0x14c]
mov dword [edi + 0x2bc], eax
call esi
mov dword [edi + 0x2c0], eax
call esi
call esi
sub eax, dword [edi + 0x2c0]
xor edx, edx
mov ecx, 0x3e8
div ecx
mov edx, dword [edi + 0x2a0]
mov esi, dword [ebp - 0x14c]
add eax, dword [edi + 0x2bc]
cmp edx, ebx
je 0x20055a35
cmp dword [ebp - 0x168], ebx
jne 0x20055a6b
mov ecx, dword [ebp - 0x164]
cmp byte [ecx + 0xc0], bl
je 0x20055a6b
cmp byte [ecx + 0xbf], 3
jne 0x20055a58
cmp edx, ebx
jne 0x20055a58
cmp dword [edi + 0x548], ebx
je 0x20055a6b
lea ecx, [eax - 0xf0]
cmp esi, ecx
jbe 0x20055a75
add eax, 0xf0
cmp esi, eax
jae 0x20055a75
mov dword [ebp - 0x16c], 1
cmp edx, ebx
je 0x20055a85
cmp dword [ebp - 0x168], ebx
je 0x200560e5
cmp dword [ebp - 0x16c], ebx
je 0x200560e5
cmp esi, ebx
je 0x200560e5
push esi
lea ecx, [edi + 0x688]
call fcn.2001bb16
xor ecx, ecx
inc ecx
cmp dword [edi + 0x2a0], ebx
mov esi, eax
je 0x20055ab4
xor ecx, ecx
cmp dword [edi + 0x548], ebx
je 0x20055ad5
mov eax, dword [ebp - 0x164]
cmp byte [eax + 0xc0], bl
je 0x20055ad5
cmp byte [eax + 0xbf], 3
je 0x20055ad5
xor ecx, ecx
cmp ecx, ebx
jne 0x20055ae1
cmp esi, ebx
je 0x200560e5
push dword [ebp - 0x14c]
lea eax, [ebp - 0x164]
push ecx
push ecx
mov ecx, esp
mov dword [ebp - 0x184], esp
push eax
call fcn.20020cb6
mov byte [ebp - 4], 0xa
mov byte [ebp - 4], 8
mov ecx, edi
call fcn.2004d4dc
mov eax, dword [ebp - 0x164]
mov eax, dword [eax + 0x20]
cmp eax, ebx
jne 0x20055c83
push dword [ebp - 0x118]
lea ecx, [edi + 0x688]
push dword [ebp - 0x14c]
push dword [ebp - 0x144]
push dword [ebp - 0x148]
call fcn.2001fdae
mov esi, eax
cmp esi, ebx
je 0x20055ea0
push dword [esi + 8]
lea ecx, [ebp - 0x15c]
call fcn.200011c0
mov byte [ebp - 4], 0xb
cmp dword [esi + 0x70], ebx
je 0x20055b68
lea eax, [esi + 0x44]
test eax, eax
jne 0x20055b9b
mov eax, dword [ebp - 0x148]
xor edx, edx
div dword [ebp - 0x144]
lea ecx, [esi + 0x40]
mov dword [ebp - 0x168], eax
xor eax, eax
cmp edx, ebx
setne al
add eax, dword [ebp - 0x168]
push eax
call fcn.2003ab2e
push ebx
lea ecx, [esi + 0x40]
call fcn.2003ac10
mov eax, dword [ebp - 0x148]
xor edx, edx
div dword [ebp - 0x144]
xor ecx, ecx
cmp edx, ebx
setne cl
add ecx, eax
push ecx
mov ecx, dword [ebp - 0x164]
add ecx, 0x28
call fcn.2003ab2e
mov ecx, dword [ebp - 0x164]
lea eax, [ebp - 0x13c]
push eax
add ecx, 0x28
call fcn.2003ac79
mov eax, dword [ebp - 0x164]
add eax, 0x28
push eax
mov ecx, esi
call fcn.2001a392
movzx ax, byte [ebp - 0x11d]
mov word [esi + 0x78], ax
mov eax, dword [ebp - 0x118]
mov dword [esi + 0xb0], eax
mov eax, dword [ebp - 0x14c]
mov ecx, dword [ebp - 0x164]
mov dword [ecx + 0x20], eax
mov eax, dword [edi + 0x548]
cmp eax, ebx
mov edx, dword [ebp - 0x14c]
mov ecx, dword [ebp - 0x164]
je 0x20055c30
cmp byte [ecx + 0xc0], bl
je 0x20055c49
cmp eax, ebx
jne 0x20055c62
cmp dword [edi + 0x2a0], ebx
jne 0x20055c62
cmp byte [ecx + 0xc0], bl
je 0x20055c49
cmp byte [ecx + 0xbf], 3
jne 0x20055c62
lea eax, [edi + 0x6cc]
cmp byte [eax], bl
jne 0x20055c62
mov dword [edi + 0x6c4], edx
mov byte [eax], 1
mov dword [edi + 0x6d0], ebx
lea eax, [edi + 0x6c4]
cmp dword [eax], ebx
jne 0x20055e08
mov dword [eax], edx
mov dword [edi + 0x6d0], ebx
mov byte [edi + 0x6cc], bl
jmp 0x20055e08
cmp dword [ebp - 0x14c], eax
jne 0x20055d37
push eax
lea ecx, [edi + 0x688]
call fcn.2001bb16
mov esi, eax
cmp esi, ebx
je 0x20055ea0
push dword [esi + 8]
lea ecx, [ebp - 0x15c]
call fcn.200011c0
mov byte [ebp - 4], 0xc
mov eax, dword [ebp - 0x164]
add eax, 0x28
push eax
mov ecx, esi
call fcn.2001a3dc
mov ecx, dword [esi + 0xc]
mov eax, dword [esi + 0x10]
xor edx, edx
div ecx
xor ecx, ecx
cmp edx, ebx
setne cl
add ecx, eax
push ecx
mov ecx, dword [ebp - 0x164]
add ecx, 0x28
call fcn.2003ab2e
mov ecx, dword [ebp - 0x164]
lea eax, [ebp - 0x13c]
push eax
add ecx, 0x28
call fcn.2003ac79
mov eax, dword [ebp - 0x164]
add eax, 0x28
push eax
mov ecx, esi
call fcn.2001a392
movzx ax, byte [ebp - 0x11d]
mov word [esi + 0x78], ax
lea eax, [esi + 0xb0]
cmp dword [eax], ebx
jne 0x20055e08
mov ecx, dword [ebp - 0x118]
mov dword [eax], ecx
jmp 0x20055e08
jbe 0x20055e29
push dword [ebp - 0x118]
lea ecx, [edi + 0x688]
push dword [ebp - 0x14c]
push dword [ebp - 0x144]
push dword [ebp - 0x148]
call fcn.2001fdae
mov esi, eax
cmp esi, ebx
je 0x20055ea0
push dword [esi + 8]
lea ecx, [ebp - 0x15c]
call fcn.200011c0
mov byte [ebp - 4], 0xd
cmp dword [esi + 0x70], ebx
je 0x20055d88
lea eax, [esi + 0x44]
test eax, eax
jne 0x20055dbb
mov eax, dword [ebp - 0x148]
xor edx, edx
div dword [ebp - 0x144]
lea ecx, [esi + 0x40]
mov dword [ebp - 0x168], eax
xor eax, eax
cmp edx, ebx
setne al
add eax, dword [ebp - 0x168]
push eax
call fcn.2003ab2e
push ebx
lea ecx, [esi + 0x40]
call fcn.2003ac10
mov ecx, dword [ebp - 0x164]
lea eax, [ebp - 0x13c]
push eax
add ecx, 0x28
call fcn.2003ac79
mov eax, dword [ebp - 0x164]
add eax, 0x28
push eax
mov ecx, esi
call fcn.2001a392
movzx ax, byte [ebp - 0x11d]
mov word [esi + 0x78], ax
mov eax, dword [ebp - 0x118]
mov dword [esi + 0xb0], eax
mov eax, dword [ebp - 0x14c]
mov ecx, dword [ebp - 0x164]
mov dword [ecx + 0x20], eax
mov byte [ebp - 4], 8
cmp dword [ebp - 0x15c], ebx
je 0x20055e29
push dword [ebp - 0x15c]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [ebp - 0x15c]
dec dword [eax + 0x18]
cmp esi, ebx
je 0x20055ea0
push dword [esi + 0x18]
mov ecx, dword [ebp - 0x164]
call fcn.2002190a
push dword [ebp - 0x18c]
mov ecx, esi
push dword [ebp - 0x180]
call fcn.2001a7ac
push 0x14
lea eax, [ebp - 0x104]
push eax
mov ecx, esi
call fcn.2001ac20
mov eax, dword [ebp - 0x148]
cmp eax, ebx
jbe 0x20055e84
cmp dword [ebp - 0x144], ebx
je 0x20055e84
xor edx, edx
div dword [ebp - 0x144]
cmp eax, 0x40
jbe 0x20055e84
push 0x80
jmp 0x20055e86
push 0x40
lea eax, [ebp - 0x90]
mov ecx, esi
push eax
call fcn.2001a554
cmp dword [ebp - 0x170], ebx
setne al
mov byte [esi + 0x21], al
cmp dword [ebp - 0x174], ebx
jne 0x20055f56
lea esi, [edi + 0x688]
push ebx
mov ecx, esi
call fcn.2001c76a
cmp eax, ebx
je 0x20055f56
push eax
mov ecx, esi
call fcn.2001bb16
mov esi, eax
cmp esi, ebx
je 0x20055f56
push 1
push esi
push ecx
push ecx
lea eax, [ebp - 0x164]
mov ecx, esp
mov dword [ebp - 0x184], esp
push eax
call fcn.20020cb6
mov byte [ebp - 4], 0xe
mov byte [ebp - 4], 8
mov ecx, edi
call fcn.200422a8
cmp al, bl
je 0x20055f56
mov dword [ebp - 0x15c], ebx
push esi
lea ecx, [edi + 0x688]
call fcn.2001be8e
mov esi, eax
cmp esi, ebx
je 0x20055f56
cmp dword [esi + 0x74], ebx
jle 0x20055f56
push esi
push ecx
push ecx
lea eax, [ebp - 0x164]
mov ecx, esp
mov dword [ebp - 0x190], esp
push eax
call fcn.20020cb6
mov byte [ebp - 4], 0xf
mov byte [ebp - 4], 8
mov ecx, edi
call fcn.20041351
cmp eax, ebx
je 0x20055f56
inc dword [ebp - 0x15c]
cmp dword [ebp - 0x15c], 2
jl 0x20055f06
mov esi, dword [ebp - 0x164]
lea ecx, [esi + 0x28]
call fcn.2003acb4
call fcn.2007f3d0
push ecx
push ecx
mov byte [esi + 0xf7], al
lea eax, [ebp - 0x164]
mov ecx, esp
mov dword [ebp - 0x184], esp
push eax
call fcn.20020cb6
mov byte [ebp - 4], 0x10
mov byte [ebp - 4], 8
mov ecx, edi
call fcn.2004b5ba
jmp 0x200560e5
lea esi, [edi + 0x688]
push ebx
mov ecx, esi
call fcn.2001c76a
cmp eax, ebx
je 0x200560e5
push eax
mov ecx, esi
call fcn.2001bb16
mov esi, eax
cmp esi, ebx
je 0x200560e5
push 0x3a8
call fcn.2008f9ce
pop ecx
mov dword [ebp - 0x184], eax
mov byte [ebp - 4], 0x11
cmp eax, ebx
je 0x20055fe3
mov ecx, eax
call fcn.20021b53
jmp 0x20055fe5
xor eax, eax
mov byte [ebp - 4], 8
push eax
lea ecx, [ebp - 0x17c]
call fcn.20021d2d
mov byte [ebp - 4], 0x12
mov eax, dword [ebp - 0x17c]
mov ecx, dword [ebp + 8]
mov byte [eax + 0x1e4], bl
mov eax, dword [ebp - 0x17c]
mov dword [eax + 0xb4], ecx
mov eax, dword [ebp - 0x17c]
mov cx, word [ebp + 0xc]
mov word [eax + 0xb8], cx
mov eax, dword [ebp - 0x17c]
mov dword [eax + 0x214], ebx
mov eax, dword [ebp - 0x17c]
mov dword [eax + 0x21c], ebx
mov eax, dword [ebp - 0x17c]
push 0x10
add eax, 0x1dc
push ebx
push eax
call fcn.2007e690
add esp, 0xc
push 1
push esi
push ecx
push ecx
lea eax, [ebp - 0x17c]
mov ecx, esp
mov dword [ebp - 0x184], esp
push eax
call fcn.20020cb6
mov byte [ebp - 4], 0x13
mov byte [ebp - 4], 0x12
mov ecx, edi
call fcn.200422a8
cmp al, bl
je 0x200560d6
mov dword [ebp - 0x15c], ebx
push esi
lea ecx, [edi + 0x688]
call fcn.2001be8e
mov esi, eax
cmp esi, ebx
je 0x200560d6
cmp dword [esi + 0x74], ebx
jle 0x200560d6
push esi
push ecx
push ecx
lea eax, [ebp - 0x17c]
mov ecx, esp
mov dword [ebp - 0x190], esp
push eax
call fcn.20020cb6
mov byte [ebp - 4], 0x14
mov byte [ebp - 4], 0x12
mov ecx, edi
call fcn.20041351
cmp eax, ebx
je 0x200560d6
inc dword [ebp - 0x15c]
cmp dword [ebp - 0x15c], 2
jl 0x20056086
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x17c]
call fcn.20001efb
mov byte [ebp - 4], bl
lea ecx, [ebp - 0x164]
call fcn.20001efb
or dword [ebp - 4], 0xffffffff
push dword [ebp - 0x180]
call fcn.2008f9fe
pop ecx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov ecx, dword [ebp - 0x10]
pop edi
pop esi
xor ecx, ebp
xor al, al
pop ebx
call fcn.2007c9ae
leave
ret 0x10