Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Windows 98 SE (оптимизация и улучшение) — восьмая часть

Модерирует : KLASS, IFkO

IFkO (30-09-2018 10:14): Продолжение здесь: http://forum.ru-board.com/topic.cgi?forum=62&topic=30994  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
//----- (00011000) --------------------------------------------------------
int __stdcall sub_11000(int a1, int a2)
{
  __int16 v2; // bx@1
  int v3; // ebp@1
  void *v4; // edx@1
  int v5; // eax@2
  LARGE_INTEGER CurrentTime; // [sp+10h] [bp-8h]@3
 
  FastMutex.Count = 1;
  FastMutex.Contention = 0;
  KeInitializeEvent(&FastMutex.Event, SynchronizationEvent, 0);
  P = 0;
  KeInitializeTimer(&Timer);
  v2 = word_14038;
  v3 = dword_14034;
  v4 = &unk_140CC;
  do
  {
    memset((char *)v4 - 4, 0, 0x64u);
    qmemcpy(v4, &unk_1400C, 0x1Cu);
    v5 = (int)v4 + 52;
    v4 = (char *)v4 + 100;
    *(_DWORD *)v5 = dword_14028;
    *(_DWORD *)(v5 + 4) = dword_1402C;
    *(_DWORD *)(v5 + 8) = dword_14030;
    *(_DWORD *)(v5 + 12) = v3;
    *(_WORD *)(v5 + 16) = v2;
  }
  while ( (signed int)v4 < (signed int)&qword_14D48 + 4 );
  KeQuerySystemTime(&CurrentTime);
  dword_14D7C = ~CurrentTime.LowPart;
  sub_12140();
  sub_11EC0();
  sub_12040();
  return 0;
}
 
она это  
//----- (00012040) --------------------------------------------------------
char sub_12040()
{
  __int64 v0; // rax@1
  unsigned __int64 v1; // rax@3
  unsigned int v2; // esi@4
  _DWORD *v3; // eax@4
  int v4; // edi@4
  int v5; // ecx@4
  unsigned __int64 v6; // rax@7
  int v7; // ebx@7
  unsigned __int64 v8; // rax@8
  int v9; // esi@9
  unsigned __int64 v10; // rax@12
  unsigned __int64 v11; // rax@13
 
  LOBYTE(v0) = dword_14D8C;
  if ( dword_14D8C & 4 )
  {
    if ( !(dword_14D8C & 1) )
    {
      v1 = __readmsr(0x1Bu);
      LODWORD(v1) = v1 | 0x800;
      __writemsr(0x1Bu, v1);
    }
    v2 = sub_12600(0x2540BE400ui64, dword_140A0, dword_140A4);
    v3 = BaseAddress;
    v4 = *((_DWORD *)BaseAddress + 200);
    v5 = *((_DWORD *)BaseAddress + 200) & 0x10000;
    if ( v5 )
    {
      *((_DWORD *)BaseAddress + 200) = 15;
      *((_DWORD *)BaseAddress + 248) = 8;
      v3 = BaseAddress;
    }
    else
    {
      dword_14D8C |= 2u;
    }
    v3[224] = -1;
    v6 = __rdtsc();
    v7 = v6;
    do
      v8 = __rdtsc();
    while ( (signed int)v8 - v7 < v2 );
    v9 = -1 - *((_DWORD *)BaseAddress + 228);
    if ( v5 )
      *((_DWORD *)BaseAddress + 200) = v4;
    if ( !(dword_14D8C & 1) )
    {
      v10 = __readmsr(0x1Bu);
      LODWORD(v10) = v10 & 0xFFFFF7FF;
      __writemsr(0x1Bu, v10);
    }
    v11 = sub_125C0((unsigned int)v9, 1000000i64);
    v0 = sub_12600(v11, 0x2710u, 0);
    qword_14D48 = v0;
  }
  return v0;
}
 
и в точке присвоения
v11 = sub_125C0((unsigned int)v9, 1000000i64);
иногда случается пагефолт...  
 
//----- (000125C0) --------------------------------------------------------
unsigned __int64 __stdcall sub_125C0(__int64 a1, __int64 a2)
{
  unsigned __int64 result; // rax@2
 
  if ( HIDWORD(a1) | HIDWORD(a2) )
    result = a2 * a1;
  else
    result = (unsigned int)a2 * (unsigned __int64)(unsigned int)a1;
  return result;
}

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 16:18 31-01-2018
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Windows 98 SE (оптимизация и улучшение) — восьмая часть
IFkO (30-09-2018 10:14): Продолжение здесь: http://forum.ru-board.com/topic.cgi?forum=62&topic=30994


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru