here is the code
i don't know if it works
test it for me
/* Procedure: 0x004886F9 - 0x00488793
* Argument size: -16
* Local size: 16
* Save regs size: 0
* Called by:
* __entry_point__()
*/
L004886f9()
{
LARGE_INTEGER Vfffffff0;
/* unknown */ void Vfffffff4;
struct _FILETIME Vfffffff8; /* size = 8 bytes */
eax = M004ac480;
Vfffffff8.dwLowDateTime = 0;
Vfffffff8.dwHighDateTime = 0;
(save)ebx;
(save)edi;
edi = -1153374642;
ebx = -65536;
if(eax != -1153374642) {
if(-65536 & eax) {
goto L0048872b;
}
eax = !eax;
M004ac484 = eax;
} else {
L0048872b:
(save)esi;
GetSystemTimeAsFileTime( & (Vfffffff8.dwLowDateTime));
esi = Vfffffff8.dwHighDateTime ^ Vfffffff8.dwLowDateTime;
esi = esi ^ GetCurrentProcessId();
esi = esi ^ GetCurrentThreadId();
esi = esi ^ GetTickCount();
QueryPerformanceCounter( & Vfffffff0);
eax = Vfffffff4 ^ Vfffffff0;
esi = esi ^ eax;
if(esi == edi) {
esi = -1153374641;
} else {
if(!(ebx & esi)) {
eax = (esi | 18193) << 0x10;
esi = esi | eax;
}
}
M004ac480 = esi;
M004ac484 = !esi;
(restore)esi;
}
(restore)edi;
(restore)ebx;
}