MiAddEntryToImportList

UINT64 *__stdcall MiAddEntryToImportList(INT64 *a1, UINT64 a2){
  INT64 v2; 
  INT64 v3; 
  INT64 v6; 
  UINT64 *result; 
  _LOAD_IMPORTS *v8; 
  UINT64 *v9; 

  if( a1 == (INT64 *)-2i64 )
  {
    v6 = 0i64;
  }
  else
  {
    v6 = 1i64;
    if( ((unsigned __int8)a1 & 1) == 0 )
      v6 = *a1;
  }
  MiAllocateImportList((_IMAGE_IMPORT_DESCRIPTOR *)(v6 + 1), (_LOAD_IMPORTS **)a2, v2, v3);
  v8 = (_LOAD_IMPORTS *)result;
  if( result )
  {
    if( v6 )
    {
      v9 = result + 1;
      if( ((unsigned __int8)a1 & 1) != 0 )
        *v9 = (unsigned __int64)a1 & 0xFFFFFFFFFFFFFFFEui64;
      else
        memmove(v9, a1 + 1, 8 * v6);
    }
    *(_QWORD *)&v8[2 * v6 + 2] = a2;
    return(UINT64 *)MiCompressImportList(v8);
  }
  return result;
}

Referenced by:

MiApplyDriverHotPatch