WdipSemFreePool

VOID __stdcall WdipSemFreePool(){
  PVOID *v0; 
  _QWORD *v1; 
  _SLIST_HEADER *v2; 
  __int64 v3; 

  v0 = (PVOID *)qword_140C53A00;
  v1 = *(_QWORD **)qword_140C53A00;
  if( *((PVOID **)qword_140C53A00 + 1) != &qword_140C53A00 )
LABEL_2:
    __fastfail(3u);
  while( 1 )
  {
    if( (PVOID *)v1[1] != v0 )
      goto LABEL_2;
    qword_140C53A00 = v1;
    v1[1] = &qword_140C53A00;
    if( v0 == &qword_140C53A00 )
      break;
    ExFreePoolWithTag(v0, 0);
    v0 = (PVOID *)qword_140C53A00;
    if( *((PVOID **)qword_140C53A00 + 1) != &qword_140C53A00 )
      goto LABEL_2;
    v1 = *(_QWORD **)qword_140C53A00;
  }
  dword_140C53A10 = 0;
  v2 = &SListHead;
  qword_140C53A18 = 0i64;
  v3 = 6i64;
  do
  {
    InitializeSListHead(v2++);
    --v3;
  }
  while( v3 );
}

Referenced by:

WdipSemShutdown