IopAppendLegacyVeto

UINT8 __stdcall IopAppendLegacyVeto(const VOID ***Context, const VOID **VetoName){
  unsigned int v3; 
  VOID **PoolWithTag; 
  VOID **v6; 
  const VOID **v7; 
  const VOID *v8; 
  UINT8 result; 

  v3 = *(unsigned __int16 *)VetoName + 2 + *((_DWORD *)Context + 2);
  PoolWithTag = ExAllocatePoolWithTag(0x200ui64, v3, 1869181008i64);
  v6 = PoolWithTag;
  if( PoolWithTag )
  {
    v7 = *Context;
    v8 = **Context;
    if( v8 )
    {
      memmove(PoolWithTag, v8, *((_DWORD *)Context + 2));
      ExFreePoolWithTag((PVOID)*v7, 0);
      v7 = *Context;
    }
    memmove(
      (char *)v6 + 2 * ((unsigned __int64)*((unsigned int *)Context + 2) >> 1),
      VetoName[1],
      *(unsigned __int16 *)VetoName);
    result = 1;
    *((_DWORD *)Context + 2) = v3;
    *((_WORD *)v6 + ((unsigned __int64)v3 >> 1) - 1) = 0;
    *v7 = v6;
  }
  else
  {
    *(_DWORD *)Context[3] = -1073741670;
    return 0;
  }
  return result;
}

Referenced by:

IoGetLegacyVetoList
IopGetLegacyVetoListDeviceNode
IopGetLegacyVetoListDrivers