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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1007eb48
mov eax, dword fs:[0]
push eax
sub esp, 0x50
push ebx
push esi
push edi
mov eax, dword [0x10097060]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebp + 8]
mov eax, dword [esi + 0x14]
mov edx, dword [eax + 0x597b0]
test edx, edx
lea ecx, [eax + 0x597a8]
mov dword [ebp - 0x14], ecx
je 0x10004c73
mov ebx, dword [eax + 0x59774]
mov eax, dword [ecx + 4]
mov edi, dword [eax]
cmp edi, eax
mov dword [ebp - 0x1c], ebx
jne 0x1000428c
call fcn.10067664
add edi, 8
cmp dword [edi + 0x18], 0
mov dword [ebp - 0x18], edi
jne 0x100042dd
mov eax, dword [esi + 0x14]
push edi
call fcn.1001e3f0
mov ebx, dword [ebp - 0x14]
mov eax, dword [ebx + 4]
mov eax, dword [eax]
push eax
push ebx
lea ecx, [ebp - 0x2c]
push ecx
call fcn.10005350
xor eax, eax
mov dword [esi + 0x44], eax
mov dword [esi + 0x48], eax
mov dword [esi + 0x40], eax
mov dword [esi + 0x64], eax
mov eax, esi
call fcn.10005050
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
fld dword [ebx + 0x24]
xor eax, eax
mov dword [ebp - 0x30], eax
fstp dword [ebp - 0x30]
fld dword [ebx + 0x20]
mov dword [ebp - 0x2c], eax
fstp dword [ebp - 0x34]
mov dword [ebp - 0x28], eax
fld dword [ebx + 0x28]
fstp dword [ebp - 0x2c]
fld dword [edi + 0x10]
fstp dword [ebp - 0x3c]
fld dword [ebp - 0x2c]
fsub dword [ebp - 0x3c]
fstp dword [ebp - 0x24]
fld dword [ebp - 0x24]
fabs
fstp dword [ebp - 0x24]
fld dword [ebp - 0x24]
fcomp qword [0x1008b6f0]
fnstsw ax
test ah, 0x41
jne 0x10004348
mov ebx, dword [ebp - 0x14]
mov edx, dword [ebx + 4]
mov eax, dword [edx]
push eax
push ebx
lea eax, [ebp - 0x2c]
push eax
call fcn.10005350
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [edi + 4]
and eax, 0xfffff
cmp eax, 0x5f2e
jne 0x10004375
mov ecx, edi
call fcn.10063a70
neg eax
sbb eax, eax
add eax, 1
cmp dword [edi + 0x18], 1
mov dword [edi + 0xa0], eax
je 0x10004526
mov eax, edi
call fcn.1005a760
test eax, eax
je 0x10004420
mov eax, dword [esi + 0x14]
mov ecx, dword [eax + 0x34]
cmp ecx, 1
je 0x10004398
cmp ecx, 3
jne 0x10004420
mov ecx, dword [eax + 0x8c]
test ecx, ecx
lea esi, [eax + 0x88]
jne 0x100043ac
xor eax, eax
jmp 0x100043b4
mov eax, dword [esi + 8]
sub eax, ecx
sar eax, 4
lea edx, [ebp - 0x34]
push edx
push eax
xor eax, eax
call fcn.10059240
mov esi, eax
add esp, 8
test esi, esi
jl 0x1000441d
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x14]
lea ebx, [eax + 0x88]
mov eax, ebx
call fcn.10005290
cmp esi, eax
ja 0x1000441a
mov edi, esi
mov esi, ebx
call fcn.100052b0
mov ecx, eax
lea eax, [ebp - 0x34]
call fcn.10023f00
fcomp qword [0x1008b750]
fnstsw ax
test ah, 0x41
jne 0x10004417
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x14]
cmp dword [edx + 0x4b4], 0
jne 0x10004417
mov eax, dword [ebp - 0x14]
call fcn.10005300
mov edi, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp + 8]
cmp dword [edi + 0x98], 0x10000000
ja 0x10004443
cmp dword [edi + 0x94], 0
je 0x10004443
mov eax, dword [ebp - 0x14]
cmp dword [eax + 8], 1
jbe 0x10004443
call fcn.10005300
mov eax, dword [edi + 4]
mov ecx, eax
and ecx, 0xfffff
cmp ecx, 0x462c
je 0x10004462
and eax, 0xfffff
cmp eax, 0x462b
jne 0x1000447a
mov eax, dword [edi + 0x64]
cmp eax, dword [ebx + 0x1c]
jne 0x10004472
mov eax, dword [edi + 0x60]
cmp eax, dword [ebx + 0x18]
je 0x1000447a
mov eax, dword [ebp - 0x14]
call fcn.10005300
mov eax, ebx
call fcn.1004a8f0
test eax, eax
je 0x100044c0
mov eax, edi
call fcn.10003fe0
test eax, eax
jne 0x100044c0
mov eax, edi
call fcn.10004040
cmp eax, 0x64
jne 0x100044c0
mov ecx, dword [ebp - 0x14]
cmp dword [ecx + 8], 1
jbe 0x100044c0
mov eax, ecx
call fcn.10005300
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov al, byte [edi + 0x68]
test al, 4
je 0x1000454d
test al, 8
jne 0x1000454d
mov ecx, dword [edi + 0x64]
mov eax, dword [edi + 0x60]
push ecx
push eax
mov eax, ebx
call fcn.100040c0
test eax, eax
jne 0x10004504
mov edx, dword [ebx]
mov eax, dword [edx + 0x74]
mov ecx, ebx
call eax
test eax, eax
je 0x1000454d
mov ecx, dword [edi + 0x64]
mov eax, dword [edi + 0x60]
mov edx, dword [ebx]
push ecx
push eax
mov eax, dword [edx + 0x78]
mov ecx, ebx
call eax
test eax, eax
je 0x1000454d
mov ecx, dword [esi + 0x14]
mov eax, dword [ecx + 0x30]
cmp eax, 2
je 0x10004514
cmp eax, 8
jne 0x10004526
mov ecx, dword [0x1009a210]
mov edx, dword [ecx]
mov eax, dword [edx + 0x90]
push 1
call eax
mov ecx, dword [esi + 0x14]
push ecx
mov eax, edi
call fcn.1001ca30
mov eax, dword [ebp - 0x14]
call fcn.10005300
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov edi, dword [esi + 0x14]
mov eax, dword [edi + 0x597ac]
mov ebx, dword [eax]
mov esi, dword [ebp - 0x18]
add edi, 0x597a8
mov dword [ebp - 0x2c], edi
cmp ebx, dword [edi + 4]
mov dword [ebp - 0x28], ebx
je 0x1000472e
cmp dword [ebx + 0x20], 0
je 0x100045ac
cmp ebx, dword [edi + 4]
jne 0x10004580
call fcn.10067664
mov edx, dword [ebx + 0x88]
mov dword [ebp - 0x20], 1
mov dword [ebp - 0x24], edx
mov ecx, dword [ebp - 0x24]
test ecx, 0x10
jne 0x100045a2
mov dword [ebp - 0x20], 0
cmp dword [ebp - 0x20], 0
jne 0x10004704
cmp ebx, dword [edi + 4]
jne 0x100045b6
call fcn.10067664
cmp dword [ebx + 0x20], 0
je 0x100045e6
cmp ebx, dword [edi + 4]
jne 0x100045c6
call fcn.10067664
mov eax, dword [ebx + 0xc]
and eax, 0xfffff
cmp eax, 0x4ef0
jne 0x100045e6
mov ecx, dword [esi + 4]
and ecx, 0xfffff
cmp ecx, eax
jne 0x10004704
cmp ebx, dword [edi + 4]
jne 0x100045f0
call fcn.10067664
cmp dword [ebx + 0x20], 0
je 0x10004621
cmp ebx, dword [edi + 4]
jne 0x10004600
call fcn.10067664
mov edx, dword [ebx + 0xc]
and edx, 0xfffff
cmp edx, 0x6930
jne 0x10004621
mov eax, dword [esi + 4]
and eax, 0xfffff
cmp eax, edx
jne 0x10004704
cmp ebx, dword [edi + 4]
jne 0x1000462b
call fcn.10067664
cmp dword [ebx + 0x20], 0
je 0x1000465d
cmp ebx, dword [edi + 4]
jne 0x1000463b
call fcn.10067664
mov ecx, dword [ebx + 0xc]
and ecx, 0xfffff
cmp ecx, 0x6931
jne 0x1000465d
mov edx, dword [esi + 4]
and edx, 0xfffff
cmp edx, ecx
je 0x10004704
cmp ebx, dword [edi + 4]
jne 0x10004667
call fcn.10067664
cmp dword [ebx + 0x20], 0
je 0x10004693
cmp ebx, dword [edi + 4]
jne 0x10004677
call fcn.10067664
mov eax, dword [ebx + 0xc]
and eax, 0xfffff
cmp eax, 0x6932
jne 0x10004693
mov ecx, dword [esi + 4]
and ecx, 0xfffff
cmp ecx, eax
jne 0x10004704
cmp ebx, dword [edi + 4]
jne 0x1000469d
call fcn.10067664
cmp dword [ebx + 0x20], 0
je 0x100046ca
cmp ebx, dword [edi + 4]
jne 0x100046ad
call fcn.10067664
mov edx, dword [ebx + 0xc]
and edx, 0xfffff
cmp edx, 0x7385
jne 0x100046ca
mov eax, dword [esi + 4]
and eax, 0xfffff
cmp eax, edx
jne 0x10004704
cmp ebx, dword [edi + 4]
jne 0x100046d4
call fcn.10067664
cmp dword [ebx + 0x20], 0
je 0x1000471d
lea esi, [ebp - 0x2c]
call fcn.10005460
mov ecx, dword [eax + 4]
and ecx, 0xfffff
cmp ecx, 0x7238
jne 0x1000471a
mov edx, dword [ebp - 0x18]
mov eax, dword [edx + 4]
and eax, 0xfffff
cmp eax, ecx
je 0x1000471a
mov esi, edx
mov ecx, dword [edi + 4]
mov eax, dword [ecx]
mov edx, dword [ebp - 0x2c]
push eax
push edi
push ebx
push edx
call fcn.10006350
add esp, 0x10
jmp 0x1000471d
mov esi, dword [ebp - 0x18]
cmp ebx, dword [edi + 4]
jne 0x10004727
call fcn.10067664
mov ebx, dword [ebx]
jmp 0x10004564
mov eax, dword [ebp + 8]
mov esi, dword [eax + 0x14]
mov eax, dword [esi + 0x597ac]
mov edi, dword [eax]
mov ebx, dword [ebp - 0x1c]
add esi, 0x597a8
cmp dword [esi + 8], 1
jbe 0x10004869
cmp edi, eax
fld dword [ebx + 0x24]
fstp dword [ebp - 0x54]
fld dword [ebx + 0x20]
fstp dword [ebp - 0x58]
fld dword [ebx + 0x28]
fstp dword [ebp - 0x50]
jne 0x1000476a
call fcn.10067664
fld dword [edi + 0x14]
fstp dword [ebp - 0x30]
fld dword [edi + 0x10]
fstp dword [ebp - 0x34]
fld dword [edi + 0x18]
fstp dword [ebp - 0x2c]
fld dword [ebp - 0x30]
fsub dword [ebp - 0x54]
fld dword [ebp - 0x34]
fsub dword [ebp - 0x58]
fld dword [ebp - 0x2c]
fsub dword [ebp - 0x50]
fld st(1)
fmulp st(2)
fld st(2)
fmulp st(3)
fxch st(1)
faddp st(2)
fmul st(0), st(0)
faddp st(1)
fstp dword [ebp - 0x24]
fld dword [ebp - 0x24]
call fcn.1007ab00
fstp dword [ebp - 0x24]
fld dword [ebp - 0x24]
fcomp qword [0x1008b798]
fnstsw ax
test ah, 0x41
jne 0x10004869
mov eax, dword [esi + 4]
cmp edi, eax
je 0x10004869
fld dword [edi + 0x14]
fstp dword [ebp - 0x40]
fld dword [edi + 0x10]
fstp dword [ebp - 0x44]
fld dword [edi + 0x18]
fstp dword [ebp - 0x3c]
fld dword [ebp - 0x40]
fsub dword [ebp - 0x54]
fld dword [ebp - 0x44]
fsub dword [ebp - 0x58]
fld dword [ebp - 0x3c]
fsub dword [ebp - 0x50]
fld st(1)
fmulp st(2)
fld st(2)
fmulp st(3)
fxch st(1)
faddp st(2)
fmul st(0), st(0)
faddp st(1)
fstp dword [ebp - 0x24]
fld dword [ebp - 0x24]
call fcn.1007ab00
fstp dword [ebp - 0x24]
cmp edi, dword [esi + 4]
fld dword [ebp - 0x24]
fstp qword [ebp - 0x2c]
jne 0x1000481d
call fcn.10067664
cmp dword [edi + 0x20], 0
je 0x10004858
fld qword [0x1008b798]
fcomp qword [ebp - 0x2c]
fnstsw ax
test ah, 1
jne 0x10004858
mov ecx, dword [ebp - 0x18]
mov edx, dword [ecx + 4]
and edx, 0xfffff
cmp edx, 0x4ef0
je 0x10004858
mov eax, dword [esi + 4]
mov eax, dword [eax]
push eax
push esi
push edi
push esi
call fcn.10006350
add esp, 0x10
cmp edi, dword [esi + 4]
jne 0x10004862
call fcn.10067664
mov edi, dword [edi]
jmp 0x100047c0
mov ecx, dword [ebx + 0x64]
test ecx, ecx
je 0x1000491a
mov eax, dword [ebx + 0x30]
imul eax, eax, 0x64
xor edx, edx
div ecx
cmp eax, 0x46
jae 0x1000491a
lea ecx, [ebp - 0x20]
push ecx
mov ecx, 0x10085f1c
call fcn.10001a30
mov eax, dword [ebp + 8]
mov dword [ebp - 4], 0
mov ecx, dword [eax + 0x14]
lea edx, [ebp - 0x20]
push edx
add ecx, 0xc
call fcn.10005150
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [ebp - 0x24], esp
mov esi, esp
call fcn.10001cb0
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.1004a5b0
mov esi, eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100048f2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test esi, esi
je 0x1000491a
mov eax, esi
call fcn.10059b90
cmp dword [esi + 0x14], 0
jne 0x1000491a
mov esi, dword [esi]
mov edx, dword [ebx]
mov eax, dword [edx + 0x14]
push esi
mov ecx, ebx
call eax
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [ebx + 0x64]
test ecx, ecx
je 0x100049d2
mov eax, dword [ebx + 0x30]
imul eax, eax, 0x64
xor edx, edx
div ecx
cmp eax, 0x3c
jae 0x100049d2
lea ecx, [ebp - 0x20]
push ecx
mov ecx, 0x10085f28
call fcn.10001a30
mov edi, dword [ebp + 8]
mov dword [ebp - 4], 1
mov ecx, dword [edi + 0x14]
lea edx, [ebp - 0x20]
push edx
add ecx, 0xc
call fcn.10005150
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [ebp - 0x24], esp
mov esi, esp
call fcn.10001cb0
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.1004a5b0
mov esi, eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x100049a3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test esi, esi
je 0x100049d5
mov eax, esi
call fcn.10059b90
cmp dword [esi + 0x14], 0
jne 0x100049d5
call fcn.1004ad60
mov esi, dword [esi]
mov edx, dword [ebx]
mov eax, dword [edx + 0x14]
push esi
mov ecx, ebx
call eax
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x100049d5
mov edi, dword [ebp + 8]
lea ecx, [ebp - 0x20]
push ecx
mov ecx, 0x10085f34
call fcn.10001a30
mov dword [ebp - 4], 2
mov ecx, dword [edi + 0x14]
lea edx, [ebp - 0x20]
push edx
add ecx, 0xc
call fcn.10005150
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [ebp - 0x24], esp
mov esi, esp
call fcn.10001cb0
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.1004a5b0
mov esi, eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x20]
add eax, 0xfffffff0
mov dword [ebp - 0x24], esi
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10004a40
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test esi, esi
je 0x10004a79
mov eax, esi
call fcn.10059b90
cmp dword [esi + 0x14], 0
jne 0x10004a79
mov ecx, dword [ebp - 0x24]
mov esi, dword [ecx]
call fcn.10064990
test eax, eax
je 0x10004a79
mov edx, dword [ebp - 0x24]
mov eax, dword [edx]
mov edx, dword [ebx]
push eax
mov eax, dword [edx + 0x14]
mov ecx, ebx
call eax
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
lea ecx, [ebp - 0x24]
push ecx
mov ecx, 0x10085f40
call fcn.10001a30
mov dword [ebp - 4], 3
mov ecx, dword [edi + 0x14]
lea edx, [ebp - 0x24]
push edx
add ecx, 0xc
call fcn.10005150
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [ebp - 0x20], esp
mov esi, esp
call fcn.10001cb0
add eax, 0x10
mov ecx, ebx
mov dword [esi], eax
call fcn.1004a5b0
mov esi, eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10004ae1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test esi, esi
je 0x10004b09
mov eax, esi
call fcn.10059b90
cmp dword [esi + 0x14], 0
jne 0x10004b09
mov esi, dword [esi]
mov edx, dword [ebx]
mov eax, dword [edx + 0x14]
push esi
mov ecx, ebx
call eax
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
lea ecx, [ebp - 0x24]
push ecx
mov ecx, str.eY_gmAm
call fcn.10001a30
mov dword [ebp - 4], 4
mov ecx, dword [edi + 0x14]
lea edx, [ebp - 0x24]
push edx
add ecx, 0xc
call fcn.10005150
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [ebp - 0x20], esp
mov edi, esp
call fcn.10001cb0
add eax, 0x10
mov ecx, ebx
mov dword [edi], eax
call fcn.1004a5b0
mov esi, eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x10004b71
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test esi, esi
je 0x10004ba2
mov eax, esi
call fcn.10059b90
cmp dword [esi + 0x14], 0
jne 0x10004ba2
mov ecx, dword [ebp - 0x18]
cmp dword [ecx + 0x6c], 0
je 0x10004ba2
mov edx, dword [ebx]
mov eax, dword [esi]
mov edx, dword [edx + 0x14]
push eax
mov ecx, ebx
call edx
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ebx, dword [ebp - 0x18]
mov edi, 0x7617
mov eax, ebx
call fcn.1005a640
test eax, eax
je 0x10004bdc
mov ebx, dword [ebp - 0x14]
mov eax, dword [ebx + 4]
mov eax, dword [eax]
push eax
push ebx
lea ecx, [ebp - 0x2c]
push ecx
call fcn.10005350
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
mov edi, dword [ebp + 8]
sub eax, dword [edi + 0x40]
cmp eax, 0x3a98
jbe 0x10004c1e
mov edx, dword [ebp - 0x1c]
mov ecx, dword [edx + 0xac]
cmp dword [ebx], ecx
jne 0x10004c19
mov edx, dword [edi + 0x64]
mov eax, 0x66666667
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [edi + eax*4 + 0x50], ecx
add dword [edi + 0x64], 1
call esi
mov dword [edi + 0x40], eax
cmp dword [edi + 0x64], 5
jne 0x10004c73
xor esi, esi
mov dword [edi + 0x64], esi
lea esp, [esp]
cmp esi, 4
jne 0x10004c61
mov eax, ebx
call fcn.10003fe0
test eax, eax
je 0x10004c4b
mov ecx, dword [edi + 0x14]
push ecx
mov eax, ebx
call fcn.1001ca30
mov ebx, dword [ebp - 0x14]
mov edx, dword [ebx + 4]
mov eax, dword [edx]
push eax
push ebx
lea eax, [ebp - 0x2c]
push eax
call fcn.10005350
mov ebx, dword [ebp - 0x18]
mov ecx, dword [edi + esi*4 + 0x50]
cmp ecx, dword [edi + esi*4 + 0x54]
jne 0x10004c73
add esi, 1
cmp esi, 5
jl 0x10004c30
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4