ViGetContextPointer

CHAR *__fastcall ViGetContextPointer(INT64 a1, INT64 a2){
  CHAR *v2; 
  int v3; 
  int v4; 
  CHAR *IrpExtension; 
  v2 = 0i64;
  if( !(_DWORD)a2 )
    return(CHAR *)(*(_QWORD *)(a1 + 312) + 104i64);
  v3 = a2 - 1;
  if( !v3 )
    return(CHAR *)(*(_QWORD *)(a1 + 48) + 72i64);
  v4 = v3 - 1;
  if( v4 )
  {
    if( v4 == 1 )
      return(CHAR *)(a1 + 1456);
  }
  else
  {
    IrpExtension = IopAllocateIrpExtension(a1, 3i64);
    if( IrpExtension )
      return IrpExtension + 8;
  }
  return v2;
}

Referenced by:

VfInsertContext
VfRemoveContext
ViQueryObjectContext