TtmpSetDisplayRequestEnded

VOID __fastcall TtmpSetDisplayRequestEnded(INT64 rcx0, INT64 a2){
  char v3; 
  _QWORD **v4; 
  _QWORD *v5; 
  _QWORD *v6; 
  _QWORD *v7; 
  int TerminalById; 
  __int64 v9; 
  int v10; 
  int v11; 
  INT64 v12; 
  __int64 a1; 
  v12 = 0i64;
  a1 = 0i64;
  v3 = 0;
  if( !TtmpFindPowerRequestEntryById(rcx0, a2, &v12) )
    return;
  v4 = (_QWORD **)(v12 + 48);
  while( 1 )
  {
    v5 = *v4;
    if( *v4 == v4 )
      break;
    if( (_QWORD **)v5[1] != v4 || (v6 = (_QWORD *)*v5, *(_QWORD **)(*v5 + 8i64) != v5) )
      __fastfail(3u);
    *v4 = v6;
    v7 = v5 - 1;
    v6[1] = v4;
    TerminalById = TtmiGetTerminalById(&a1, rcx0, *((unsigned int *)v5 - 2));
    if( TerminalById < 0 )
    {
      TtmiLogError((PSTR)"TtmpSetDisplayRequestEnded", 736i64, (unsigned int)TerminalById, 0xFFFFFFFFi64);
      goto LABEL_13;
    }
    v9 = a1;
    if( *(_DWORD *)(a1 + 24) != 1416459348 )
      goto LABEL_13;
    v10 = *(_DWORD *)(a1 + 32);
    if( v10 )
    {
      v11 = v10 - 1;
      *(_DWORD *)(a1 + 32) = v11;
      if( !v11 )
      {
        *(_DWORD *)(v9 + 36) |= 0x24u;
        v3 = 1;
      }
LABEL_13:
      ExFreePoolWithTag(v7, 0x52507454u);
    }
    else
    {
      TtmiLogError((PSTR)"TtmpSetDisplayRequestEnded", 718i64, 3221225485i64, 0xFFFFFFFFi64);
    }
  }
  if( v3 )
    TtmiScheduleSessionWorker(rcx0, 2);
}

Referenced by:

TtmpUpdateDisplayRequiredPowerRequest