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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffc8
push ebx
push esi
push edi
mov dword [ebp - 4], ecx
mov edi, eax
mov ebx, dword [ebp + 8]
mov esi, dword [ebp + 0x14]
xor eax, eax
mov dword [ebp - 0x14], eax
mov byte [ebp - 0xd], 0
mov edx, dword [edi + 0x4c]
mov eax, dword [edi + 0x48]
call fcn.0047e3e4
jmp 0x4ca6a3
call sub.KERNEL32.DLL_GetTickCount
mov dword [0x4e03f0], eax
mov dword [ebp - 8], 1
mov eax, dword [ebp + 0xc]
cmp eax, 6
ja case.0x4c9d26.0
jmp dword [eax*4 + 0x4c9d2d]
cmp dword [ebp - 0x14], 0
jle 0x4c9e00
mov eax, dword [ebp + 0x10]
push eax
push esi
fild dword [ebp + 0x10]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
mov edx, dword [ebp + 0x10]
sar edx, 1
jns 0x4c9d7c
adc edx, 0
add eax, edx
push eax
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
mov edx, esi
sar edx, 1
jns 0x4c9da5
adc edx, 0
add eax, edx
push eax
fild dword [ebp + 0x10]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
mov edx, dword [ebp + 0x10]
sar edx, 1
jns 0x4c9dcc
adc edx, 0
sub edx, eax
push edx
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
mov edx, esi
sar edx, 1
jns 0x4c9df5
adc edx, 0
sub edx, eax
push edx
call sub.gdi32.dll_CreateRoundRectRgn
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0x10]
push eax
push esi
push 0
push 0
call sub.gdi32.dll_CreateRectRgn
mov dword [ebp - 0xc], eax
push 1
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 8]
push eax
call sub.gdi32.dll_CombineRgn
mov eax, dword [ebp - 0xc]
push eax
call sub.gdi32.dll_DeleteObject
fild dword [ebp - 0x14]
fild dword [0x4dd090]
fdiv dword [0x4ca6c0]
fcompp
fnstsw ax
sahf
jae case.0x4c9d26.0
mov byte [ebp - 0xd], 1
jmp case.0x4c9d26.0
fild dword [0x4dd090]
fdiv dword [0x4ca6c0]
fild dword [ebp - 0x14]
fsubp st(1)
call fcn.00402ca4
mov dword [ebp - 0x14], eax
mov eax, dword [ebp + 0x10]
push eax
push esi
fild dword [ebp + 0x10]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
mov edx, dword [ebp + 0x10]
sar edx, 1
jns 0x4c9e92
adc edx, 0
add eax, edx
push eax
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
mov edx, esi
sar edx, 1
jns 0x4c9ebb
adc edx, 0
add eax, edx
push eax
fild dword [ebp + 0x10]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
mov edx, dword [ebp + 0x10]
sar edx, 1
jns 0x4c9ee2
adc edx, 0
sub edx, eax
push edx
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
mov edx, esi
sar edx, 1
jns 0x4c9f0b
adc edx, 0
sub edx, eax
push edx
call sub.gdi32.dll_CreateRoundRectRgn
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0x10]
push eax
push esi
push 0
push 0
call sub.gdi32.dll_CreateRectRgn
mov dword [ebp - 0xc], eax
push 3
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 8]
push eax
call sub.gdi32.dll_CombineRgn
mov eax, dword [ebp - 0xc]
push eax
call sub.gdi32.dll_DeleteObject
fild dword [0x4dd090]
fdiv dword [0x4ca6c0]
fild dword [ebp - 0x14]
fsubp st(1)
call fcn.00402ca4
mov dword [ebp - 0x14], eax
fild dword [ebp - 0x14]
fild dword [0x4dd090]
fdiv dword [0x4ca6c0]
fcompp
fnstsw ax
sahf
jae case.0x4c9d26.0
mov byte [ebp - 0xd], 1
jmp case.0x4c9d26.0
cmp dword [ebp - 0x14], 0
jle 0x4ca004
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
cmp esi, eax
jl 0x4ca004
mov eax, dword [ebp + 0x10]
push eax
push esi
mov eax, dword [ebp + 0x10]
inc eax
push eax
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
mov edx, eax
imul edx, dword [ebp - 0x14]
mov eax, esi
call fcn.00429b30
push eax
push 0
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
mov edx, dword [ebp - 0x14]
neg edx
imul edx
push eax
call sub.gdi32.dll_CreateRoundRectRgn
mov dword [ebp - 8], eax
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
cmp esi, eax
jge 0x4ca0be
fild dword [0x4dd090]
fld xword [0x4ca6c4]
fmulp st(1)
fild dword [ebp - 0x14]
fsubrp st(1)
fild dword [ebp + 0x10]
fild dword [0x4dd090]
fdivp st(1)
fmulp st(1)
fmul dword [0x4ca6d0]
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
mov edx, dword [ebp + 0x10]
sub edx, eax
xor eax, eax
call fcn.00429bc0
push eax
fild dword [0x4dd090]
fld xword [0x4ca6c4]
fmulp st(1)
fild dword [ebp - 0x14]
fsubrp st(1)
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
fmulp st(1)
fmul dword [0x4ca6d0]
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
mov edx, esi
sub edx, eax
xor eax, eax
call fcn.00429bc0
push eax
mov eax, dword [ebp + 0x10]
inc eax
push eax
push esi
push 0
mov eax, esi
neg eax
push eax
call sub.gdi32.dll_CreateRoundRectRgn
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0x10]
push eax
push esi
push 0
push 0
call sub.gdi32.dll_CreateRectRgn
mov dword [ebp - 0xc], eax
push 1
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 8]
push eax
call sub.gdi32.dll_CombineRgn
mov eax, dword [ebp - 0xc]
push eax
call sub.gdi32.dll_DeleteObject
fild dword [0x4dd090]
fmul dword [0x4ca6c0]
fild dword [ebp - 0x14]
fcompp
fnstsw ax
sahf
jbe case.0x4c9d26.0
mov byte [ebp - 0xd], 1
jmp case.0x4c9d26.0
cmp dword [ebp - 0x14], 0
jle 0x4ca199
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
cmp esi, eax
jl 0x4ca199
mov eax, dword [ebp + 0x10]
push eax
push esi
mov eax, dword [ebp + 0x10]
inc eax
push eax
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
add eax, esi
push eax
push 0
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
mov edx, eax
imul edx, dword [ebp - 0x14]
mov eax, esi
call fcn.00429b30
mov edx, esi
sub edx, eax
push edx
call sub.gdi32.dll_CreateRoundRectRgn
mov dword [ebp - 8], eax
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
cmp esi, eax
jge 0x4ca254
fild dword [0x4dd090]
fld xword [0x4ca6c4]
fmulp st(1)
fild dword [ebp - 0x14]
fsubrp st(1)
fild dword [ebp + 0x10]
fild dword [0x4dd090]
fdivp st(1)
fmulp st(1)
fmul dword [0x4ca6d0]
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
mov edx, dword [ebp + 0x10]
sub edx, eax
xor eax, eax
call fcn.00429bc0
push eax
fild dword [0x4dd090]
fld xword [0x4ca6c4]
fmulp st(1)
fild dword [ebp - 0x14]
fsubrp st(1)
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
fmulp st(1)
fmul dword [0x4ca6d0]
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
mov edx, esi
sub edx, eax
xor eax, eax
call fcn.00429bc0
push eax
mov eax, dword [ebp + 0x10]
inc eax
push eax
mov eax, esi
add eax, eax
push eax
push 0
push 0
call sub.gdi32.dll_CreateRoundRectRgn
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0x10]
push eax
push esi
push 0
push 0
call sub.gdi32.dll_CreateRectRgn
mov dword [ebp - 0xc], eax
push 1
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 8]
push eax
call sub.gdi32.dll_CombineRgn
mov eax, dword [ebp - 0xc]
push eax
call sub.gdi32.dll_DeleteObject
fild dword [0x4dd090]
fmul dword [0x4ca6c0]
fild dword [ebp - 0x14]
fcompp
fnstsw ax
sahf
jbe case.0x4c9d26.0
mov byte [ebp - 0xd], 1
jmp case.0x4c9d26.0
inc dword [ebp + 0x10]
cmp dword [ebp - 0x14], 0
jle 0x4ca324
fild dword [ebp + 0x10]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
cmp eax, dword [ebp + 0x10]
jg 0x4ca324
mov eax, dword [ebp + 0x10]
push eax
push esi
fild dword [ebp + 0x10]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
mov edx, eax
imul edx, dword [ebp - 0x14]
mov eax, dword [ebp + 0x10]
call fcn.00429b30
push eax
lea eax, [esi + 1]
push eax
fild dword [ebp + 0x10]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
mov edx, dword [ebp - 0x14]
neg edx
imul edx
push eax
push 0
call sub.gdi32.dll_CreateRoundRectRgn
mov dword [ebp - 8], eax
fild dword [ebp + 0x10]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
cmp eax, dword [ebp + 0x10]
jle 0x4ca3df
fild dword [0x4dd090]
fld xword [0x4ca6c4]
fmulp st(1)
fild dword [ebp - 0x14]
fsubrp st(1)
fild dword [ebp + 0x10]
fild dword [0x4dd090]
fdivp st(1)
fmulp st(1)
fmul dword [0x4ca6d0]
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
mov edx, dword [ebp + 0x10]
sub edx, eax
xor eax, eax
call fcn.00429bc0
push eax
fild dword [0x4dd090]
fld xword [0x4ca6c4]
fmulp st(1)
fild dword [ebp - 0x14]
fsubrp st(1)
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
fmulp st(1)
fmul dword [0x4ca6d0]
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
mov edx, esi
sub edx, eax
xor eax, eax
call fcn.00429bc0
push eax
mov eax, dword [ebp + 0x10]
push eax
lea eax, [esi + 1]
push eax
mov eax, dword [ebp + 0x10]
neg eax
push eax
push 0
call sub.gdi32.dll_CreateRoundRectRgn
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0x10]
push eax
push esi
push 0
push 0
call sub.gdi32.dll_CreateRectRgn
mov dword [ebp - 0xc], eax
push 1
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 8]
push eax
call sub.gdi32.dll_CombineRgn
mov eax, dword [ebp - 0xc]
push eax
call sub.gdi32.dll_DeleteObject
fild dword [0x4dd090]
fmul dword [0x4ca6c0]
fild dword [ebp - 0x14]
fcompp
fnstsw ax
sahf
jbe 0x4ca426
mov byte [ebp - 0xd], 1
dec dword [ebp + 0x10]
jmp case.0x4c9d26.0
cmp dword [ebp - 0x14], 0
jle 0x4ca4b1
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
cmp esi, eax
jl 0x4ca4b1
mov eax, dword [ebp + 0x10]
push eax
push esi
fild dword [ebp + 0x10]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
add eax, dword [ebp + 0x10]
push eax
lea eax, [esi + 1]
push eax
fild dword [ebp + 0x10]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
mov edx, eax
imul edx, dword [ebp - 0x14]
mov eax, dword [ebp + 0x10]
call fcn.00429b30
mov edx, dword [ebp + 0x10]
sub edx, eax
push edx
push 0
call sub.gdi32.dll_CreateRoundRectRgn
mov dword [ebp - 8], eax
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
imul dword [ebp - 0x14]
cmp esi, eax
jge 0x4ca56c
fild dword [0x4dd090]
fld xword [0x4ca6c4]
fmulp st(1)
fild dword [ebp - 0x14]
fsubrp st(1)
fild dword [ebp + 0x10]
fild dword [0x4dd090]
fdivp st(1)
fmulp st(1)
fmul dword [0x4ca6d0]
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
mov edx, dword [ebp + 0x10]
sub edx, eax
xor eax, eax
call fcn.00429bc0
push eax
fild dword [0x4dd090]
fld xword [0x4ca6c4]
fmulp st(1)
fild dword [ebp - 0x14]
fsubrp st(1)
mov dword [ebp - 0x18], esi
fild dword [ebp - 0x18]
fild dword [0x4dd090]
fdivp st(1)
fmulp st(1)
fmul dword [0x4ca6d0]
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.00429a08
mov edx, esi
sub edx, eax
xor eax, eax
call fcn.00429bc0
push eax
mov eax, dword [ebp + 0x10]
add eax, eax
push eax
lea eax, [esi + 1]
push eax
push 0
push 0
call sub.gdi32.dll_CreateRoundRectRgn
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0x10]
push eax
push esi
push 0
push 0
call sub.gdi32.dll_CreateRectRgn
mov dword [ebp - 0xc], eax
push 1
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 8]
push eax
call sub.gdi32.dll_CombineRgn
mov eax, dword [ebp - 0xc]
push eax
call sub.gdi32.dll_DeleteObject
fild dword [0x4dd090]
fmul dword [0x4ca6c0]
fild dword [ebp - 0x14]
fcompp
fnstsw ax
sahf
jbe case.0x4c9d26.0
mov byte [ebp - 0xd], 1
cmp dword [ebp - 8], 1
je 0x4ca635
push 1
mov eax, dword [ebp - 8]
push eax
mov eax, dword [edi + 0x4c]
call fcn.0047e278
call fcn.00422cdc
push eax
call sub.gdi32.dll_ExtSelectClipRgn
mov eax, dword [ebp + 0x10]
push eax
lea eax, [ebp - 0x28]
push eax
mov ecx, esi
xor edx, edx
xor eax, eax
call fcn.00406a1c
lea eax, [ebp - 0x28]
push eax
mov eax, dword [ebp + 0x10]
push eax
lea eax, [ebp - 0x38]
push eax
mov ecx, esi
xor edx, edx
xor eax, eax
call fcn.00406a1c
lea eax, [ebp - 0x38]
push eax
mov eax, dword [edi + 0x4c]
call fcn.0047e278
mov ecx, dword [ebp - 4]
pop edx
call fcn.0042267c
push 0
mov eax, dword [edi + 0x4c]
call fcn.0047e278
call fcn.00422cdc
push eax
call sub.gdi32.dll_SelectClipRgn
cmp dword [ebp - 8], 1
je 0x4ca635
mov eax, dword [ebp - 8]
push eax
call sub.gdi32.dll_DeleteObject
inc dword [ebp - 0x14]
mov eax, dword [ebp + 0x10]
push eax
lea eax, [ebp - 0x28]
push eax
mov ecx, esi
xor edx, edx
xor eax, eax
call fcn.00406a1c
push esi
push edi
lea esi, [ebp - 0x28]
add edi, 0x60
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop edi
pop esi
push esi
push edi
lea esi, [edi + 0x60]
add edi, 0x70
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop edi
pop esi
push edi
push 0x4c43e0
mov eax, edi
call fcn.0041e364
mov edx, 1
mov eax, ebx
call fcn.00429b30
push eax
call sub.KERNEL32.DLL_Sleep
call sub.KERNEL32.DLL_GetTickCount
sub eax, dword [0x4e03f0]
cdq
xor eax, edx
sub eax, edx
cmp ebx, eax
jle 0x4ca6a3
cmp byte [0x4e03e8], 0
je 0x4ca674
cmp byte [0x4e03e8], 0
jne 0x4ca6b6
cmp byte [ebp - 0xd], 0
je 0x4c9d09
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10