Function at 0x48b870
Capabilities:
Check for time delay via gettickcount
Set thread local storage value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x60
mov ebx, ecx
mov eax, dword [0x6f4e3c]
xor eax, ebp
mov dword [esp + 0x58], eax
mov eax, dword [ecx]
push 0
push 1
call dword [eax + 4]
test al, al
je 0x48be1c
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebx + 0x26ac], eax
mov edx, dword [ebx + 0x2468]
cmp edx, 0xa
mov ecx, 0xa
cmovl ecx, edx
mov dword [ebx + 0x2468], ecx
mov dword [esp + 0x10], eax
mov dword [ebx + 0x26cc], eax
lea eax, [ebx + 0x62cb8]
push eax
call fcn.0061b861
add esp, 4
mov ecx, ebx
push 0
call fcn.0048c460
test al, al
je 0x48be1c
lea eax, [ebx + 0x26b4]
mov dword [esp + 8], eax
mov dword [esp + 0xc], ebx
jmp 0x48b908
mov ecx, ebx
push edi
call fcn.0048dad0
nop
test al, al
je case.default.0x48bd0c
cmp dword [ebx + 0x5d0f8], 7
je 0x48b932
cmp dword [ebx + 0x26a8], 0
je 0x48b932
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [ebx + 0x26ac]
cmp eax, dword [ebx + 0x26a8]
ja 0x48be12
lea eax, [esp + 0x30]
xorpd xmm0, xmm0
movupd xmmword [eax + 0x10], xmm0
movupd xmmword [eax], xmm0
mov dword [eax + 0x24], 0
mov dword [eax + 0x20], 0
mov eax, dword [ebx + 0x2464]
mov dword [esp + 0x2c], eax
mov eax, dword [ebx + 0x26d8]
mov edx, dword [ebx + 0x26dc]
sub edx, eax
mov ecx, edx
sar ecx, 2
cmp ecx, 0xb
mov esi, 0xb
cmovge ecx, esi
test edx, edx
jle 0x48bdda
xor edx, edx
jmp 0x48b99b
add edx, 1
mov dword [esp + edx*4 + 0x2c], esi
cmp edx, ecx
jge 0x48b9b0
mov edi, dword [eax + edx*4]
mov esi, dword [edi + 0x10]
test esi, esi
jne 0x48b990
mov esi, dword [edi + 0xc]
jmp 0x48b990
add edx, 1
push 0x1f4
push 0
lea eax, [esp + 0x34]
push eax
push edx
call dword [sym.imp.KERNEL32.dll_WaitForMultipleObjects]
mov dword [esp + 0x14], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edi, eax
sub edi, dword [esp + 0x10]
cmp edi, 0x1f4
jb 0x48bc27
mov dword [esp + 0x10], eax
mov ecx, dword [ebx + 0x26c0]
mov eax, ebx
mov ebx, dword [ebx + 0x26b8]
mov esi, dword [eax + 0x26bc]
cmp ebx, esi
je 0x48ba11
mov dword [ebx + 4], edi
mov dword [ebx], ecx
add ebx, 8
mov dword [eax + 0x26b8], ebx
jmp 0x48baf0
mov dword [esp + 4], ecx
mov eax, dword [esp + 8]
mov edx, dword [eax]
sub ebx, edx
mov eax, ebx
sar eax, 3
mov dword [esp + 0x1c], eax
add eax, 1
cmp eax, 0x20000000
jae 0x48be2f
sub esi, edx
mov ecx, esi
sar ecx, 3
sar esi, 2
cmp esi, eax
cmovb esi, eax
cmp ecx, 0xfffffff
mov eax, 0x1fffffff
cmovae esi, eax
test esi, esi
je 0x48ba7b
mov dword [esp + 0x18], edx
cmp esi, 0x20000000
jae 0x48be38
lea eax, [esi*8]
push eax
call fcn.00517b56
add esp, 4
mov edx, dword [esp + 0x18]
jmp 0x48ba7d
xor eax, eax
mov ecx, dword [esp + 0x1c]
mov dword [eax + ecx*8 + 4], edi
mov edi, eax
mov eax, dword [esp + 4]
mov dword [edi + ecx*8], eax
mov eax, edi
lea esi, [edi + esi*8]
mov dword [esp + 4], esi
lea esi, [edi + ecx*8]
add esi, 8
test ebx, ebx
jle 0x48bab2
push ebx
push edx
push eax
mov ebx, edx
call fcn.006025b0
mov eax, edi
mov edx, ebx
add esp, 0xc
mov ebx, dword [esp + 0xc]
mov dword [ebx + 0x26b4], eax
mov dword [ebx + 0x26b8], esi
mov eax, dword [esp + 4]
mov dword [ebx + 0x26bc], eax
test edx, edx
je 0x48bae1
push edx
call fcn.00517bd6
add esp, 4
mov ebx, dword [ebx + 0x26b8]
jmp 0x48baf0
mov ebx, esi
nop word cs:[eax + eax]
nop dword [eax]
mov eax, dword [esp + 8]
mov edi, dword [eax]
mov eax, ebx
sub eax, edi
sar eax, 3
cmp eax, 7
jb 0x48bb20
lea eax, [edi + 8]
sub ebx, eax
je 0x48bb24
push ebx
push eax
push edi
call fcn.00602b30
add esp, 0xc
mov eax, dword [esp + 8]
mov eax, dword [eax]
jmp 0x48bb26
mov eax, edi
jmp 0x48bb34
mov eax, edi
add ebx, edi
mov ecx, dword [esp + 0xc]
mov dword [ecx + 0x26b8], ebx
mov edi, eax
sub ebx, eax
cmp ebx, 0x30
jne 0x48bc19
sar ebx, 3
lea eax, [ebx - 1]
mov dword [esp + 4], eax
mov eax, ebx
and eax, 3
xor esi, esi
mov edx, 0
mov ecx, 0
cmp dword [esp + 4], 3
jb 0x48bb96
and ebx, 0xfffffffc
xor esi, esi
xor edx, edx
xor ecx, ecx
nop word [eax + eax]
add ecx, dword [edi + esi*8 + 4]
add edx, dword [edi + esi*8]
add ecx, dword [edi + esi*8 + 0xc]
add edx, dword [edi + esi*8 + 8]
add ecx, dword [edi + esi*8 + 0x14]
add edx, dword [edi + esi*8 + 0x10]
add ecx, dword [edi + esi*8 + 0x1c]
add edx, dword [edi + esi*8 + 0x18]
add esi, 4
cmp ebx, esi
jne 0x48bb70
test eax, eax
je 0x48bbbe
lea esi, [edi + esi*8]
add esi, 4
xor edi, edi
nop word cs:[eax + eax]
nop dword [eax]
add ecx, dword [esi + edi*8]
add edx, dword [esi + edi*8 - 4]
add edi, 1
cmp eax, edi
jne 0x48bbb0
movd xmm0, edx
movq xmm2, qword [0x647eb8]
por xmm0, xmm2
subsd xmm0, xmm2
movd xmm1, ecx
por xmm1, xmm2
subsd xmm1, xmm2
divsd xmm0, xmm1
mulsd xmm0, qword [0x64d500]
cvttsd2si eax, xmm0
movapd xmm1, xmm0
movsd xmm2, qword [0x64d5c0]
subsd xmm1, xmm2
cvttsd2si ecx, xmm1
xor ecx, 0x80000000
ucomisd xmm0, xmm2
cmovb ecx, eax
mov eax, dword [esp + 0xc]
mov dword [eax + 0x26b0], ecx
mov ebx, dword [esp + 0xc]
mov dword [ebx + 0x26c0], 0
lea eax, [esp + 0x20]
push eax
call fcn.0061b861
add esp, 4
mov eax, dword [esp + 0x20]
sub eax, dword [ebx + 0x62cb8]
mov ecx, dword [esp + 0x24]
sbb ecx, dword [ebx + 0x62cbc]
mov dword [ebx + 0x62cc0], eax
mov dword [ebx + 0x62cc4], ecx
mov eax, dword [ebx + 0x26b0]
test eax, eax
je 0x48bc90
mov ecx, dword [ebx + 0x5d100]
mov edx, dword [ebx + 0x5d104]
mov esi, ecx
and esi, edx
cmp esi, 0xffffffff
mov edi, dword [esp + 0x14]
je 0x48bca0
sub ecx, dword [ebx + 0x5d110]
sbb edx, dword [ebx + 0x5d114]
push 0
push eax
push edx
push ecx
call fcn.00517e20
jmp 0x48bca4
xor eax, eax
xor edx, edx
mov edi, dword [esp + 0x14]
jmp 0x48bca4
xor eax, eax
xor edx, edx
mov dword [ebx + 0x62cc8], eax
mov dword [ebx + 0x62ccc], edx
cmp edi, 0x102
je 0x48bd20
test edi, edi
je 0x48be09
cmp edi, 0xffffffff
je case.default.0x48bd0c
mov eax, dword [ebx + 0x26d8]
mov esi, dword [eax + edi*4 - 4]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebx + 0x26c4], eax
mov eax, dword [esi + 0x10]
test eax, eax
je 0x48bcfd
push eax
call dword [sym.imp.KERNEL32.dll_CancelWaitableTimer]
push dword [esi + 0x10]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esi + 0x10], 0
mov eax, dword [esi + 0x28]
cmp eax, 0xa
ja case.default.0x48bd0c
add edi, 0xffffffff
jmp dword [eax*4 + 0x6533bc]
mov ecx, ebx
push edi
call fcn.0048cfb0
jmp 0x48b900
cmp dword [ebx + 0x246c], 6
jne 0x48b908
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, eax
sub ecx, dword [ebx + 0x26a4]
cmp ecx, 0x3e9
jb 0x48b908
mov dword [ebx + 0x26a4], eax
mov eax, dword [ebx]
mov ecx, ebx
push 0
push 6
call dword [eax + 4]
test al, al
jne 0x48b908
jmp 0x48be1c
mov ecx, ebx
push edi
call fcn.0048e2b0
jmp 0x48b900
mov ecx, ebx
push edi
call fcn.0048d110
jmp 0x48b900
mov ecx, ebx
push edi
call fcn.0048d300
jmp 0x48b900
mov ecx, ebx
push edi
call fcn.0048de30
jmp 0x48b900
mov ecx, ebx
push edi
call fcn.0048d040
jmp 0x48b900
mov ecx, ebx
push edi
call fcn.0048db60
jmp 0x48b900
mov ecx, ebx
push edi
call fcn.0048dc40
jmp 0x48b900
mov ecx, ebx
push edi
call fcn.0048e190
jmp 0x48b900
mov ecx, ebx
push edi
call fcn.0048e430
jmp 0x48b900
cmp byte [ebx + 0x26f0], 0
je 0x48be1c
mov eax, dword [ebx + 0x5d110]
cmp eax, dword [ebx + 0x5d100]
mov eax, dword [ebx + 0x5d114]
sbb eax, dword [ebx + 0x5d104]
jae 0x48be1c
mov dword [ebx + 0x5d0f8], 8
jmp 0x48be1c
cmp dword [ebx + 0x5d0f8], 7
je 0x48be1c
mov dword [ebx + 0x5d0f8], 9
mov ecx, dword [esp + 0x58]
xor ecx, ebp
call fcn.00517c1a
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, dword [esp + 8]
call fcn.00469ffc
call fcn.0061842c
int3