<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://xboxdevwiki.net/index.php?action=history&amp;feed=atom&amp;title=User%3AHaxar%2FNV2A</id>
		<title>User:Haxar/NV2A - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://xboxdevwiki.net/index.php?action=history&amp;feed=atom&amp;title=User%3AHaxar%2FNV2A"/>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=User:Haxar/NV2A&amp;action=history"/>
		<updated>2026-04-13T20:10:35Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.28.0</generator>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=User:Haxar/NV2A&amp;diff=5672&amp;oldid=prev</id>
		<title>Haxar at 09:51, 4 June 2017</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=User:Haxar/NV2A&amp;diff=5672&amp;oldid=prev"/>
				<updated>2017-06-04T09:51:02Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;' lang='en'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 09:51, 4 June 2017&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== NV2A register access from D3D8 ===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I wanted to know how NV2A registers were being accessed from Xbox executables. So, I loaded IDA with Turok with the applied Xbox Flirt Signatures v.2 and took references from '''pbkit''' to help me out with this.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;I wanted to know how NV2A registers were being accessed from Xbox executables. So, I loaded IDA with Turok with the applied Xbox Flirt Signatures v.2 and took references from '''pbkit''' to help me out with this.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Haxar</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=User:Haxar/NV2A&amp;diff=5670&amp;oldid=prev</id>
		<title>Haxar: Created page with &quot;I wanted to know how NV2A registers were being accessed from Xbox executables. So, I loaded IDA with Turok with the applied Xbox Flirt Signatures v.2 and took references from...&quot;</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=User:Haxar/NV2A&amp;diff=5670&amp;oldid=prev"/>
				<updated>2017-06-04T09:48:31Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;I wanted to know how NV2A registers were being accessed from Xbox executables. So, I loaded IDA with Turok with the applied Xbox Flirt Signatures v.2 and took references from...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;I wanted to know how NV2A registers were being accessed from Xbox executables. So, I loaded IDA with Turok with the applied Xbox Flirt Signatures v.2 and took references from '''pbkit''' to help me out with this.&lt;br /&gt;
&lt;br /&gt;
'''D3D::CMiniport::MapRegisters''' is where it all begins. This is just a handful of subroutines from the '''D3D::CMiniport''' namespace.&lt;br /&gt;
&lt;br /&gt;
Every single access is annotated from '''pbkit'''. It has been very useful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// turok&lt;br /&gt;
// using pbkit/outer.h&lt;br /&gt;
// gpu == 0xfd000000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
signed int __thiscall D3D::CMiniport::MapRegisters(void *this)&lt;br /&gt;
{&lt;br /&gt;
  *(_DWORD *)this = 0xFD000000u;                // VIDEO_BASE&lt;br /&gt;
  vFD001804 |= 4u;                              // NV_PBUS_PCI_NV_1_BUS_MASTER_ENABLED&lt;br /&gt;
  vFD600140 = 0;                                // PCRTC_INTR_EN_VBLANK_DISABLED&lt;br /&gt;
  vFD009140 = 0;                                // NV_PTIMER_INTR_EN_0_ALARM_DISABLED&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
signed int __thiscall D3D::CMiniport::LoadEngines(void *this)&lt;br /&gt;
{&lt;br /&gt;
  void *v1; // edi@1&lt;br /&gt;
  int gpu; // esi@1&lt;br /&gt;
  int v3; // eax@1&lt;br /&gt;
  int v4; // ecx@1&lt;br /&gt;
&lt;br /&gt;
  v1 = this;&lt;br /&gt;
  gpu = *(_DWORD *)this;&lt;br /&gt;
  v3 = *(_DWORD *)this + 6220;&lt;br /&gt;
  v4 = *(_DWORD *)v3;&lt;br /&gt;
  *(_DWORD *)v3 &amp;amp;= 0xFFFFFCFFu;&lt;br /&gt;
  *(_DWORD *)v3 = v4;&lt;br /&gt;
  *(_DWORD *)(gpu + 0x200) = 0xFFFFFFFFu;       // NV_PMC_ENABLE_ALL_ENABLE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x140) = *((_DWORD *)v1 + 45);// NV_PMC_INTR_EN_0&lt;br /&gt;
  D3D::CMiniport::HalDacLoad(v1);               // PCRTC_INTR_EN_VBLANK_ENABLED&lt;br /&gt;
  *(_DWORD *)(gpu + 0x9400) = 0;                // NV_PTIMER_TIME_0&lt;br /&gt;
  *(_DWORD *)(gpu + 0x9410) = 0;                // NV_PTIMER_TIME_1&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400720) = 0;              // NV_PGRAPH_FIFO_ACCESS_DISABLE&lt;br /&gt;
  D3D::CMiniport::HalGrControlLoad(v1);&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400100) = 0xFFFFFFFFu;    // NV_PGRAPH_INTR_ALL_ENABLE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400140) = 0xFFFFFFFFu;    // NV_PGRAPH_INTR_EN_ALL_ENABLE&lt;br /&gt;
  D3D::CMiniport::HalFifoControlLoad(v1);&lt;br /&gt;
  *(_DWORD *)(gpu + 0x2100) = 0xFFFFFFFFu;      // NV_PFIFO_INTR_0_ALL_RESET&lt;br /&gt;
  *(_DWORD *)(gpu + 0x2140) = *((_DWORD *)v1 + 71);// NV_PFIFO_INTR_EN_0&lt;br /&gt;
  *((_DWORD *)v1 + 528) = 0xFFFFFFFFu;&lt;br /&gt;
  *((_DWORD *)v1 + 529) = 0xFFFFFFFFu;&lt;br /&gt;
  *((_DWORD *)v1 + 520) = 0;&lt;br /&gt;
  *((_DWORD *)v1 + 521) = 0;&lt;br /&gt;
  return 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int __thiscall D3D::CMiniport::HalDacLoad(void *this)&lt;br /&gt;
{&lt;br /&gt;
  int gpu; // eax@1&lt;br /&gt;
&lt;br /&gt;
  gpu = *(_DWORD *)this;&lt;br /&gt;
  *(_DWORD *)(*(_DWORD *)this + 6291712) = 1;&lt;br /&gt;
  *(_DWORD *)(gpu + 0x600140) = 1;              // PCRTC_INTR_EN_VBLANK_ENABLED&lt;br /&gt;
  return gpu;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int __thiscall D3D::CMiniport::HalGrControlLoad(int this)&lt;br /&gt;
{&lt;br /&gt;
  int v1; // edi@1&lt;br /&gt;
  int gpu; // esi@1&lt;br /&gt;
  int v3; // eax@1&lt;br /&gt;
  signed int v4; // edx@1&lt;br /&gt;
  int v5; // eax@1&lt;br /&gt;
  int v6; // ebp@2&lt;br /&gt;
  int v7; // ebp@2&lt;br /&gt;
  int v8; // ebp@2&lt;br /&gt;
  int v9; // eax@3&lt;br /&gt;
  int v10; // edx@4&lt;br /&gt;
  int v11; // ebp@4&lt;br /&gt;
  char v12; // zf@4&lt;br /&gt;
  int v13; // eax@5&lt;br /&gt;
  int v14; // eax@5&lt;br /&gt;
  int v15; // eax@5&lt;br /&gt;
  signed int v17; // [sp+14h] [bp-4h]@3&lt;br /&gt;
&lt;br /&gt;
  v1 = this;&lt;br /&gt;
  gpu = *(_DWORD *)this;&lt;br /&gt;
  v3 = *(_DWORD *)this + 512;&lt;br /&gt;
  *(_DWORD *)v3 &amp;amp;= 0xFFFFEFFFu;&lt;br /&gt;
  *(_DWORD *)v3 |= 0x1000u;&lt;br /&gt;
  *(_DWORD *)(this + 2028) = 0;&lt;br /&gt;
  *(_DWORD *)(this + 2044) = 0;                 // NV_PGRAPH_DEBUG_4&lt;br /&gt;
  *(_DWORD *)(this + 2056) = 0;                 // NV_PGRAPH_UNKNOWN_400B84&lt;br /&gt;
  *(_DWORD *)(this + 2068) = 0;                 // NV_PGRAPH_UNKNOWN_400B88&lt;br /&gt;
  *(_DWORD *)(this + 2032) = 0x118700u;         // NV_PGRAPH_DEBUG_1&lt;br /&gt;
  *(_DWORD *)(this + 2036) = 0x28C3FFu;         // NV_PGRAPH_DEBUG_7&lt;br /&gt;
  *(_DWORD *)(this + 2040) = 0xF3DE0479u;       // NV_PGRAPH_DEBUG_3&lt;br /&gt;
  *(_DWORD *)(this + 2048) = 4;                 // NV_PGRAPH_DEBUG_5&lt;br /&gt;
  *(_DWORD *)(this + 2052) = 0x45EAD10Eu;       // NV_PGRAPH_UNKNOWN_400B80&lt;br /&gt;
  *(_DWORD *)(this + 2060) = 0x78u;             // NV_PGRAPH_UNKNOWN_400098&lt;br /&gt;
  *(_DWORD *)(this + 2064) = 0x40u;             // NV_PGRAPH_UNKNOWN_40009C&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400080) = 0;              // NV_PGRAPH_DEBUG_0_NO_RESET&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400084) = *(_DWORD *)(this + 2032);// NV_PGRAPH_DEBUG_1&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400880) = *(_DWORD *)(this + 2036);// NV_PGRAPH_DEBUG_7&lt;br /&gt;
  *(_DWORD *)(gpu + 0x40008C) = *(_DWORD *)(this + 2040);// NV_PGRAPH_DEBUG_3&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400090) = *(_DWORD *)(this + 2044);// NV_PGRAPH_DEBUG_4&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400094) = *(_DWORD *)(this + 2048);// NV_PGRAPH_DEBUG_5&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400B80) = *(_DWORD *)(this + 2052);// NV_PGRAPH_UNKNOWN_400B80&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400B84) = *(_DWORD *)(this + 2056);// NV_PGRAPH_UNKNOWN_400B84&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400098) = *(_DWORD *)(this + 2060);// NV_PGRAPH_UNKNOWN_400098&lt;br /&gt;
  *(_DWORD *)(gpu + 0x40009C) = *(_DWORD *)(this + 2064);// NV_PGRAPH_UNKNOWN_40009C&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400B88) = *(_DWORD *)(this + 2068);// NV_PGRAPH_UNKNOWN_400B88&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400780) = *(_DWORD *)(this + 320) &amp;amp; 0xFFFF;// NV_PGRAPH_CHANNEL_CTX_TABLE&lt;br /&gt;
  D3D::CMiniport::HalGrIdle((void *)this);&lt;br /&gt;
  v4 = 80;&lt;br /&gt;
  v5 = gpu + 0x400904;                          // NV_PGRAPH_TLIMIT_XBOX&lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
    v6 = *(_DWORD *)(v5 - 0x3006C0);            // NV_PFB_TLIMIT&lt;br /&gt;
    *(_DWORD *)v5 = v6;                         // NV_PGRAPH_TLIMIT_XBOX&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400750) = (v4 - 32) &amp;amp; 0x1FFC | 0xEA0000;// NV_PGRAPH_RDI_INDEX&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400754) = v6;           // NV_PGRAPH_RDI_DATA&lt;br /&gt;
    v7 = *(_DWORD *)(v5 - 0x3006BC);            // NV_PFB_TSIZE&lt;br /&gt;
    *(_DWORD *)(v5 + 4) = v7;                   // NV_PGRAPH_TSIZE_XBOX&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400750) = v4 &amp;amp; 0x1FFC | 0xEA0000;// NV_PGRAPH_RDI_INDEX&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400754) = v7;           // NV_PGRAPH_RDI_DATA&lt;br /&gt;
    v8 = *(_DWORD *)(v5 - 0x3006C4);            // NV_PFB_TILE&lt;br /&gt;
    *(_DWORD *)(v5 - 4) = v8;                   // NV_PGRAPH_TILE_XBOX&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400750) = (v4 - 64) &amp;amp; 0x1FFC | 0xEA0000;// NV_PGRAPH_RDI_INDEX&lt;br /&gt;
    v4 += 4;&lt;br /&gt;
    v5 += 0x10u;&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400754) = v8;           // NV_PGRAPH_RDI_DATA&lt;br /&gt;
  }&lt;br /&gt;
  while ( v4 &amp;lt; 112 );&lt;br /&gt;
  v9 = gpu + 0x400980;                          // NV_PGRAPH_ZCOMP_XBOX&lt;br /&gt;
  v17 = 8;&lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
    v10 = *(_DWORD *)(v9 - 0x300680);           // NV_PFB_ZCOMP&lt;br /&gt;
    *(_DWORD *)v9 = v10;                        // NV_PGRAPH_ZCOMP_XBOX&lt;br /&gt;
    v11 = (v9 + 0xFFBFF710 - gpu) &amp;amp; 0x1FFC | 0xEA0000;// (0x90) &amp;amp; 0x1FFC | 0xEA0000&lt;br /&gt;
    v9 += 4;&lt;br /&gt;
    v12 = v17-- == 1;&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400750) = v11;          // NV_PGRAPH_RDI_INDEX&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400754) = v10;          // NV_PGRAPH_RDI_DATA&lt;br /&gt;
  }&lt;br /&gt;
  while ( !v12 );&lt;br /&gt;
  v13 = *(_DWORD *)(gpu + 0x100324);            // NV_PFB_ZCOMP_OFFSET&lt;br /&gt;
  *(_DWORD *)(gpu + 0x4009A0) = v13;            // NV_PGRAPH_ZCOMP_OFFSET_XBOX&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400750) = 0xEA000Cu;      // NV_PGRAPH_RDI_INDEX&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400754) = v13;            // NV_PGRAPH_RDI_DATA&lt;br /&gt;
  v14 = *(_DWORD *)(gpu + 0x100200);            // NV_PFB_CFG0&lt;br /&gt;
  *(_DWORD *)(gpu + 0x4009A4) = v14;            // NV_PGRAPH_CFG0_XBOX&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400750) = 0xEA0000u;      // NV_PGRAPH_RDI_INDEX&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400754) = v14;            // NV_PGRAPH_RDI_DATA&lt;br /&gt;
  v15 = *(_DWORD *)(gpu + 0x100204);            // NV_PFB_CFG1&lt;br /&gt;
  *(_DWORD *)(gpu + 0x4009A8) = v15;            // NV_PGRAPH_CFG1_XBOX&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400750) = 0xEA0004u;      // NV_PGRAPH_RDI_INDEX&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400754) = v15;            // NV_PGRAPH_RDI_DATA&lt;br /&gt;
  *(_DWORD *)(gpu + 0x40014C) = 0;              // NV_PGRAPH_CTX_SWITCH1_ALL_DISABLE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400150) = 0;              // NV_PGRAPH_CTX_SWITCH2_ALL_DISABLE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400154) = 0;              // NV_PGRAPH_CTX_SWITCH3_ALL_DISABLE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400158) = 0;              // NV_PGRAPH_CTX_SWITCH4_ALL_DISABLE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400144) = 0x10000000u;    // NV_PGRAPH_CTX_CONTROL_DEVICE_ENABLED&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400764) = 0x8000000u;     // NV_PGRAPH_FFINTFC_ST2_CHID_STATUS_VALID&lt;br /&gt;
  return D3D::CMiniport::HalGrLoadChannelContext((void *)v1, *(_DWORD *)(v1 + 308));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int __thiscall D3D::CMiniport::HalGrIdle(void *this)&lt;br /&gt;
{&lt;br /&gt;
  void *v1; // edi@1&lt;br /&gt;
  int gpu; // esi@1&lt;br /&gt;
  int result; // eax@1&lt;br /&gt;
  int v4; // ebx@2&lt;br /&gt;
&lt;br /&gt;
  v1 = this;&lt;br /&gt;
  gpu = *(_DWORD *)this;&lt;br /&gt;
  result = *(_DWORD *)(*(_DWORD *)this + 4196096);&lt;br /&gt;
  if ( result )&lt;br /&gt;
  {&lt;br /&gt;
    do&lt;br /&gt;
    {&lt;br /&gt;
      v4 = *(_DWORD *)(gpu + 0x100);            // NV_PBUS_ROM_VERSION_MASK&lt;br /&gt;
      if ( BYTE1(v4) &amp;amp; 0x10 )&lt;br /&gt;
        result = unknown_libname_835(v1);&lt;br /&gt;
      if ( v4 &amp;amp; 0x1000000 )&lt;br /&gt;
        result = D3D::CMiniport::VBlank(v1);&lt;br /&gt;
    }&lt;br /&gt;
    while ( *(_DWORD *)(gpu + 0x400700) );      // NV_PGRAPH_STATUS_NOT_BUSY (while BUSY)&lt;br /&gt;
  }&lt;br /&gt;
  return result;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int __thiscall unknown_libname_835(void *this)&lt;br /&gt;
{&lt;br /&gt;
  int gpu; // esi@1&lt;br /&gt;
  int v2; // eax@1&lt;br /&gt;
  int v3; // ebx@1&lt;br /&gt;
  int v4; // edi@1&lt;br /&gt;
  void *v6; // [sp+0h] [bp-4h]@1&lt;br /&gt;
&lt;br /&gt;
  v6 = this;&lt;br /&gt;
  gpu = *(_DWORD *)this;&lt;br /&gt;
  *(_DWORD *)(*(_DWORD *)this + 0x400720) = 0;  // NV_PGRAPH_FIFO_ACCESS_DISABLE&lt;br /&gt;
  v2 = *(_DWORD *)(gpu + 0x400100);             // NV_PGRAPH_INTR&lt;br /&gt;
  v3 = *(_DWORD *)(gpu + 0x400108);             // NV_PGRAPH_NSOURCE&lt;br /&gt;
  v4 = *(_DWORD *)(gpu + 0x400704) &amp;amp; 0x1FFC;    // NV_PGRAPH_TRAPPED_ADDR_MTHD&lt;br /&gt;
  if ( !(BYTE1(v2) &amp;amp; 0x10) )                    // NV_PGRAPH_INTR_MISSING_HW_PENDING&lt;br /&gt;
    goto LABEL_14;&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400100) = 0x1000u;        // NV_PGRAPH_INTR_CONTEXT_SWITCH_PENDING&lt;br /&gt;
  while ( *(_DWORD *)(*(_DWORD *)this + 0x400700) )// NV_PGRAPH_STATUS_NOT_BUSY (while BUSY)&lt;br /&gt;
    ;&lt;br /&gt;
  D3D::CMiniport::HalGrLoadChannelContext(this, ((unsigned int)v4 &amp;gt;&amp;gt; 20) &amp;amp; 0x1F);&lt;br /&gt;
  v2 = *(_DWORD *)(gpu + 0x400100);             // NV_PGRAPH_INTR&lt;br /&gt;
  if ( v2 )&lt;br /&gt;
  {&lt;br /&gt;
LABEL_14:&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400100) = v2;           // NV_PGRAPH_INTR&lt;br /&gt;
    if ( v3 &amp;amp;&amp;amp; v2 &amp;amp; 0x100001 &amp;amp;&amp;amp; !(v3 &amp;amp; 0x40) )  // NV_PGRAPH_NSOURCE &amp;amp;&amp;amp; NV_PGRAPH_INTR &amp;amp; NV_PGRAPH_INTR_NOTIFY_PENDING|NV_PGRAPH_INTR_ERROR_PENDING &amp;amp;&amp;amp; !(NV_PGRAPH_NSOURCE &amp;amp; NV_PGRAPH_NSOURCE_ILLEGAL_MTHD_PENDING)&lt;br /&gt;
    {&lt;br /&gt;
      if ( v4 == 0x100 )                        // NV_PGRAPH_TRAPPED_ADDR_MTHD&lt;br /&gt;
      {&lt;br /&gt;
        D3D::CMiniport::SoftwareMethod(v6, *(_DWORD *)(gpu + 0x400708));// NV_PGRAPH_TRAPPED_DATA_LOW&lt;br /&gt;
      }&lt;br /&gt;
      else&lt;br /&gt;
      {&lt;br /&gt;
        unknown_libname_837(&lt;br /&gt;
          &amp;quot;Graphics hardware error information:\n Source: %08x\n   ChID: %d\n  Class: %x\n Method: %08x\n   Data: %08x\n    Get: %08x\n&amp;quot;,&lt;br /&gt;
          v3,                                   // NV_PGRAPH_NSOURCE&lt;br /&gt;
          ((unsigned int)v4 &amp;gt;&amp;gt; 20) &amp;amp; 0x1F,      // NV_PGRAPH_TRAPPED_ADDR_CHID&lt;br /&gt;
          *(_DWORD *)(gpu + 0x40014C) &amp;amp; 0xFF,   // NV_PGRAPH_CTX_SWITCH1_GRCLASS&lt;br /&gt;
          v4,                                   // NV_PGRAPH_TRAPPED_ADDR_MTHD&lt;br /&gt;
          *(_DWORD *)(gpu + 0x400708),          // NV_PGRAPH_TRAPPED_DATA_LOW&lt;br /&gt;
          vFD003244 | 0x80000000);              // NV_PFIFO_CACHE1_DMA_GET&lt;br /&gt;
        __debugbreak();&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400720) = 1;              // NV_PGRAPH_FIFO_ACCESS_ENABLE&lt;br /&gt;
  return *(_DWORD *)(gpu + 0x400100);           // NV_PGRAPH_INTR&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//TODO D3D::CMiniport::VBlank&lt;br /&gt;
&lt;br /&gt;
int __thiscall D3D::CMiniport::HalGrLoadChannelContext(void *this, int a2)&lt;br /&gt;
{&lt;br /&gt;
  void *v2; // ebx@1&lt;br /&gt;
  int gpu; // esi@1&lt;br /&gt;
  int v4; // edx@3&lt;br /&gt;
  int result; // eax@6&lt;br /&gt;
  signed int v6; // eax@8&lt;br /&gt;
  int v7; // edi@10&lt;br /&gt;
  int v8; // esi@10&lt;br /&gt;
  int v9; // [sp+Ch] [bp-4h]@3&lt;br /&gt;
&lt;br /&gt;
  v2 = this;&lt;br /&gt;
  gpu = *(_DWORD *)this;&lt;br /&gt;
  if ( *(_DWORD *)(*(_DWORD *)this + 4194560) )&lt;br /&gt;
    unknown_libname_835(this);&lt;br /&gt;
  v9 = *(_DWORD *)(gpu + 0x400720);             // NV_PGRAPH_FIFO&lt;br /&gt;
  *(_DWORD *)(gpu + 0x400720) = 0;              // NV_PGRAPH_FIFO_ACCESS_DISABLE&lt;br /&gt;
  D3D::CMiniport::HalGrIdle(v2);&lt;br /&gt;
  v4 = a2;&lt;br /&gt;
  if ( *((_DWORD *)v2 + 77) != a2 )&lt;br /&gt;
  {&lt;br /&gt;
    D3D::CMiniport::HalGrUnloadChannelContext(v2, *((_DWORD *)v2 + 77));&lt;br /&gt;
    v4 = a2;&lt;br /&gt;
  }&lt;br /&gt;
  *((_DWORD *)v2 + 77) = v4;&lt;br /&gt;
  if ( v4 == 2 )&lt;br /&gt;
  {&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400144) = 0x10000100u;  // NV_PGRAPH_CTX_CONTROL_TIME_NOT_EXPIRED|NV_PGRAPH_CTX_CONTROL_DEVICE_ENABLED&lt;br /&gt;
    result = v9 | 1;&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400764) = 0x8000000u;   // NV_PGRAPH_FFINTFC_ST2_CHID_STATUS_VALID&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400720) = v9 | 1;       // NV_PGRAPH_FIFO_ACCESS_ENABLE&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    if ( *((_DWORD *)v2 + v4 + 81) )&lt;br /&gt;
    {&lt;br /&gt;
      *(_DWORD *)(gpu + 0x400080) = 0x70000u;   // NV_PGRAPH_DEBUG_0_IDX_STATE_RESET|NV_PGRAPH_DEBUG_0_VTX_STATE_RESET|NV_PGRAPH_DEBUG_0_CAS_STATE_RESET&lt;br /&gt;
      *(_DWORD *)(gpu + 0x400080) = 0;          // NV_PGRAPH_DEBUG_0_NO_RESET&lt;br /&gt;
      *(_DWORD *)(gpu + 0x400750) = 0x3D0000u;  // NV_PGRAPH_RDI_INDEX_SELECT&lt;br /&gt;
      v6 = 15;&lt;br /&gt;
      do&lt;br /&gt;
      {&lt;br /&gt;
        --v6;&lt;br /&gt;
        *(_DWORD *)(gpu + 0x400754) = 0;        // NV_PGRAPH_RDI_DATA&lt;br /&gt;
      }&lt;br /&gt;
      while ( v6 );&lt;br /&gt;
    }&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400084) |= 0x1000000u;  // NV_PGRAPH_DEBUG_1_CACHE_INVALIDATE&lt;br /&gt;
    v7 = (v4 &amp;amp; 0x1F) &amp;lt;&amp;lt; 24;&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400148) = v7;           // NV_PGRAPH_CTX_USER&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400784) = *((_DWORD *)v2 + a2 + 78) &amp;amp; 0xFFFF;// NV_PGRAPH_CHANNEL_CTX_POINTER_INST&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400788) = 1;            // NV_PGRAPH_CHANNEL_CTX_STATUS_LOADED&lt;br /&gt;
    D3D::CMiniport::HalGrIdle(v2);&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400148) = v7 | *(_DWORD *)(gpu + 0x400148) &amp;amp; 0xE0FFFFFF;// NV_PGRAPH_CTX_USER_CHID (inverted mask)&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400144) = 0x10010100u;  // NV_PGRAPH_CTX_CONTROL_TIME_NOT_EXPIRED|NV_PGRAPH_CTX_CONTROL_CHID_VALID|NV_PGRAPH_CTX_CONTROL_DEVICE_ENABLED&lt;br /&gt;
    v8 = gpu + 0x400764;                        // NV_PGRAPH_FFINTFC_ST2&lt;br /&gt;
    result = *(_DWORD *)v8 &amp;amp; 0xCFFFFFFF;        // NV_PGRAPH_FFINTFC_ST2_CHSWITCH_CLEAR&amp;amp;NV_PGRAPH_FFINTFC_ST2_FIFOHOLD_CLEAR&lt;br /&gt;
    *(_DWORD *)v8 = result;                     // NV_PGRAPH_FFINTFC_ST2&lt;br /&gt;
  }&lt;br /&gt;
  return result;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int __thiscall D3D::CMiniport::HalGrUnloadChannelContext(void *this, int a2)&lt;br /&gt;
{&lt;br /&gt;
  int result; // eax@1&lt;br /&gt;
  int gpu; // esi@1&lt;br /&gt;
&lt;br /&gt;
  result = a2;&lt;br /&gt;
  gpu = *(_DWORD *)this;&lt;br /&gt;
  if ( a2 != 2 )&lt;br /&gt;
  {&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400784) = *((_DWORD *)this + a2 + 78) &amp;amp; 0xFFFF;// NV_PGRAPH_CHANNEL_CTX_POINTER_INST&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400788) = 2;            // NV_PGRAPH_CHANNEL_CTX_STATUS_UNLOADED&lt;br /&gt;
    result = D3D::CMiniport::HalGrIdle(this);&lt;br /&gt;
    *(_DWORD *)(gpu + 0x400144) = 0x10000000u;  // NV_PGRAPH_CTX_CONTROL_DEVICE_ENABLED&lt;br /&gt;
  }&lt;br /&gt;
  return result;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int __thiscall D3D::CMiniport::HalFifoControlLoad(void *this)&lt;br /&gt;
{&lt;br /&gt;
  int gpu; // esi@1&lt;br /&gt;
  int result; // eax@1&lt;br /&gt;
&lt;br /&gt;
  gpu = *(_DWORD *)this;&lt;br /&gt;
  *(_DWORD *)(*(_DWORD *)this + 12836) = 0xF0078u;&lt;br /&gt;
  *(_DWORD *)(gpu + 0x2044) = 0x101FFFFu;       // NV_PFIFO_DMA_TIMESLICE_SELECT_128K|NV_PFIFO_DMA_TIMESLICE_TIMEOUT_ENABLED&lt;br /&gt;
  *(_DWORD *)(gpu + 0x2040) = *((_DWORD *)this + 72) &amp;amp; 0x3FF;// NV_PFIFO_DELAY_0_WAIT_RETRY&lt;br /&gt;
  *(_DWORD *)(gpu + 0x2500) = 0;                // NV_PFIFO_CACHES_ALL_DISABLE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3000) = 0;                // NV_PFIFO_CACHE0_PUSH0_ACCESS_DISABLE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3050) = 0;                // NV_PFIFO_CACHE0_PULL0_ACCESS_DISABLE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3200) = 0;                // NV_PFIFO_CACHE1_PUSH0_ACCESS_DISABLE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3250) = 0;                // NV_PFIFO_CACHE1_PULL0_ACCESS_DISABLE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3220) = 0;                // NV_PFIFO_CACHE1_DMA_PUSH_ACCESS_DISABLE&lt;br /&gt;
  result = D3D::CMiniport::HalFifoContextSwitch(this, 1);&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3210) = 0;                // NV_PFIFO_CACHE1_PUT_ADDRESS&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3270) = 0;                // NV_PFIFO_CACHE1_GET_ADDRESS&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3250) = 1;                // NV_PFIFO_CACHE1_PULL0_ACCESS_ENABLE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3200) = 1;                // NV_PFIFO_CACHE1_PUSH0_ACCESS_ENABLE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x2500) = 1;                // NV_PFIFO_CACHES_REASSIGN_ENABLED&lt;br /&gt;
  *(_DWORD *)(gpu + 0x2500) = 0;                // NV_PFIFO_CACHES_ALL_DISABLE&lt;br /&gt;
  return result;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int __thiscall D3D::CMiniport::HalFifoContextSwitch(void *this, int a2_switch)&lt;br /&gt;
{&lt;br /&gt;
  void *v2; // esi@1&lt;br /&gt;
  int gpu; // eax@1&lt;br /&gt;
  int v4; // ebx@1&lt;br /&gt;
  int v5; // ecx@1&lt;br /&gt;
  int v6; // edx@1&lt;br /&gt;
  int v7; // ecx@2&lt;br /&gt;
  int v8; // edx@8&lt;br /&gt;
  int v9; // [sp+Ch] [bp-14h]@1&lt;br /&gt;
  int v10; // [sp+10h] [bp-10h]@1&lt;br /&gt;
  int v11; // [sp+14h] [bp-Ch]@1&lt;br /&gt;
  signed int v12; // [sp+1Ch] [bp-4h]@2&lt;br /&gt;
&lt;br /&gt;
  v2 = this;&lt;br /&gt;
  gpu = *(_DWORD *)this;&lt;br /&gt;
  v4 = *((_DWORD *)this + 74);                  // unknown1&lt;br /&gt;
  v9 = *(_DWORD *)(*(_DWORD *)this + 9472);&lt;br /&gt;
  v10 = *(_DWORD *)(*(_DWORD *)this + 12800);&lt;br /&gt;
  v11 = *(_DWORD *)(*(_DWORD *)this + 12880);&lt;br /&gt;
  *(_DWORD *)(*(_DWORD *)this + 9472) = 0;&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3200) = 0;                // NV_PFIFO_CACHE1_PUSH0_ACCESS_DISABLE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3250) = 0;                // NV_PFIFO_CACHE1_PULL0_ACCESS_DISABLE&lt;br /&gt;
  v5 = *(_DWORD *)(gpu + 0x3204) &amp;amp; 0x1F;        // NV_PFIFO_CACHE1_PUSH1_CHID&lt;br /&gt;
  v6 = gpu + v4 + ((*(_DWORD *)(gpu + 0x3204) &amp;amp; 0x1F) &amp;lt;&amp;lt; 6);// unknown2&lt;br /&gt;
  *(_DWORD *)v6 = *(_DWORD *)(gpu + 0x3240);    // NV_PFIFO_CACHE1_DMA_PUT&lt;br /&gt;
  *(_DWORD *)(v6 + 4) = *(_DWORD *)(gpu + 0x3244);// NV_PFIFO_CACHE1_DMA_GET&lt;br /&gt;
  *(_DWORD *)(v6 + 8) = *(_DWORD *)(gpu + 0x3248);// NV_PFIFO_CACHE1_REF&lt;br /&gt;
  *(_DWORD *)(v6 + 12) = *(_DWORD *)(gpu + 0x322C);// NV_PFIFO_CACHE1_DMA_INSTANCE&lt;br /&gt;
  *(_DWORD *)(v6 + 16) = *(_DWORD *)(gpu + 0x3228);// NV_PFIFO_CACHE1_DMA_STATE&lt;br /&gt;
  *(_DWORD *)(v6 + 20) = *(_DWORD *)(gpu + 0x3224);// NV_PFIFO_CACHE1_DMA_FETCH&lt;br /&gt;
  *(_DWORD *)(v6 + 24) = *(_DWORD *)(gpu + 0x3280);// NV_PFIFO_CACHE1_ENGINE&lt;br /&gt;
  *(_DWORD *)(v6 + 28) = *(_DWORD *)(gpu + 0x3254);// NV_PFIFO_CACHE1_PULL1&lt;br /&gt;
  *(_DWORD *)(v6 + 32) = *(_DWORD *)(gpu + 0x3268);// NV_PFIFO_CACHE1_ACQUIRE_2&lt;br /&gt;
  *(_DWORD *)(v6 + 36) = *(_DWORD *)(gpu + 0x3264);// NV_PFIFO_CACHE1_ACQUIRE_1&lt;br /&gt;
  *(_DWORD *)(v6 + 40) = *(_DWORD *)(gpu + 0x3260);// NV_PFIFO_CACHE1_ACQUIRE_0&lt;br /&gt;
  *(_DWORD *)(v6 + 44) = *(_DWORD *)(gpu + 0x326C);// NV_PFIFO_CACHE1_SEMAPHORE&lt;br /&gt;
  *(_DWORD *)(v6 + 48) = *(_DWORD *)(gpu + 0x324C);// NV_PFIFO_CACHE1_DMA_SUBROUTINE&lt;br /&gt;
  if ( *(_DWORD *)(gpu + 0x3204) &amp;amp; 0x100 )      // NV_PFIFO_CACHE1_PUSH1_MODE_DMA&lt;br /&gt;
  {&lt;br /&gt;
    v12 = 1 &amp;lt;&amp;lt; v5;&lt;br /&gt;
    v7 = *(_DWORD *)(gpu + 0x2508) &amp;amp; ~(1 &amp;lt;&amp;lt; v5);// NV_PFIFO_DMA&lt;br /&gt;
    if ( *(_DWORD *)(gpu + 0x3240) != *(_DWORD *)(gpu + 0x3244) )// NV_PFIFO_CACHE1_DMA_PUT != NV_PFIFO_CACHE1_DMA_GET&lt;br /&gt;
      v7 |= v12;&lt;br /&gt;
    *(_DWORD *)(gpu + 0x2508) = v7;             // NV_PFIFO_DMA&lt;br /&gt;
  }&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3204) = a2_switch &amp;amp; 0x1F; // NV_PFIFO_CACHE1_PUSH1_CHID&lt;br /&gt;
  if ( (1 &amp;lt;&amp;lt; a2_switch) &amp;amp; *((_DWORD *)v2 + 65) &amp;amp;&amp;amp; a2_switch != 1 )&lt;br /&gt;
    *(_DWORD *)(gpu + 0x3204) |= 0x100u;        // NV_PFIFO_CACHE1_PUSH1_MODE_DMA&lt;br /&gt;
  v8 = v4 + (a2_switch &amp;lt;&amp;lt; 6) + gpu;             // unknown3&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3240) = *(_DWORD *)v8;    // NV_PFIFO_CACHE1_DMA_PUT&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3244) = *(_DWORD *)(v8 + 4);// NV_PFIFO_CACHE1_DMA_GET&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3248) = *(_DWORD *)(v8 + 8);// NV_PFIFO_CACHE1_REF&lt;br /&gt;
  *(_DWORD *)(gpu + 0x322C) = *(_DWORD *)(v8 + 12);// NV_PFIFO_CACHE1_DMA_INSTANCE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3228) = *(_DWORD *)(v8 + 16);// NV_PFIFO_CACHE1_DMA_STATE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3224) = *(_DWORD *)(v8 + 20);// NV_PFIFO_CACHE1_DMA_FETCH&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3280) = *(_DWORD *)(v8 + 24);// NV_PFIFO_CACHE1_ENGINE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3254) = *(_DWORD *)(v8 + 28);// NV_PFIFO_CACHE1_PULL1&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3268) = *(_DWORD *)(v8 + 32);// NV_PFIFO_CACHE1_ACQUIRE_2&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3264) = *(_DWORD *)(v8 + 36);// NV_PFIFO_CACHE1_ACQUIRE_1&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3260) = *(_DWORD *)(v8 + 40);// NV_PFIFO_CACHE1_ACQUIRE_0&lt;br /&gt;
  *(_DWORD *)(gpu + 0x326C) = *(_DWORD *)(v8 + 44);// NV_PFIFO_CACHE1_SEMAPHORE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x324C) = *(_DWORD *)(v8 + 48);// NV_PFIFO_CACHE1_DMA_SUBROUTINE&lt;br /&gt;
  if ( (1 &amp;lt;&amp;lt; a2_switch) &amp;amp; *((_DWORD *)v2 + 65) &amp;amp;&amp;amp; a2_switch != 1 )&lt;br /&gt;
    *(_DWORD *)(gpu + 0x3220) = 1;              // NV_PFIFO_CACHE1_DMA_PUSH_ACCESS_ENABLE&lt;br /&gt;
  *(_DWORD *)(gpu + 0x204C) = 0x1FFFFFu;        // NV_PFIFO_TIMESLICE_TIMER_EXPIRED&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3250) = v11;              // NV_PFIFO_CACHE1_PULL0&lt;br /&gt;
  *(_DWORD *)(gpu + 0x3200) = v10;              // NV_PFIFO_CACHE1_PUSH0&lt;br /&gt;
  *(_DWORD *)(gpu + 0x2500) = v9;               // NV_PFIFO_CACHES&lt;br /&gt;
  return gpu;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Haxar</name></author>	</entry>

	</feed>