ResFwBackgroundTransition

void __fastcall ResFwBackgroundTransition(int a1){
  int v1; 
  INT64 v2; 
  PVOID v3; 
  INT64 v4; 
  if( a1 )
  {
    v1 = a1 - 1;
    if( v1 )
    {
      if( v1 == 1 && (dword_140C13310 & 0xC00) != 3072 )
      {
        v2 = qword_140C13358;
        if( qword_140C13358 )
        {
          _InterlockedExchange64(&qword_140C13358, 0i64);
          BgpFwFreeMemory(v2);
        }
        v3 = qword_140C13360;
        if( qword_140C13360 )
        {
          _InterlockedExchange64((volatile __int64 *)&qword_140C13360, 0i64);
          BgpFwReleaseLock();
          ExFreePoolWithTag(v3, 0x4B494742u);
          BgpFwAcquireLock(v4);
        }
        *(_DWORD *)Size = 0;
      }
    }
    else
    {
      ResFwpPageOutBackground();
    }
  }
  else
  {
    ResFwpPageInBackground();
  }
}

Referenced by:

BgpFwLibraryDestroy
BgpFwLibraryDisable
BgpFwLibraryEnable
ResFwFreeContext