HvlpDynamicUpdateMicrocode

NTSTATUS __stdcall HvlpDynamicUpdateMicrocode(VOID *a1, UINT64 a2){
  int v2; 
  _MDL *Mdl; 
  _MDL *v5; 
  INT16 v7; 
  INT64 v8; 
  UINT64 v9; 
  int v10; 
  int v11; 
  _HV_HYPERCALL_INPUT InputControl; 
  VOID *v13; 
  int v14; 
  int v15; 

  InputControl.AsUINT64 = 0i64;
  v2 = a2;
  Mdl = IoAllocateMdl(a1, a2, 0, 0, 0i64);
  v5 = Mdl;
  if( !Mdl )
    return -1073741670;
  MmBuildMdlForNonPagedPool(Mdl);
  HvcallInitInputControl(HvCallDeprecated0007, &InputControl);
  InputControl._bf_0 |= 0x10000u;
  v15 = 0;
  v13 = a1;
  v14 = v2;
  while( 1 )
  {
    v7 = HvcallFastExtended(InputControl.AsUINT64, &v13, 0x18u, 0i64, 0);
    if( !HvlpHvStatusIsInsufficientMemory(v7) )
      break;
    HvlpHandleInsufficientMemory(v9, v8);
    v11 = v10;
    if( v10 < 0 )
      goto LABEL_8;
  }
  v11 = HvlpHvToNtStatus(v9);
LABEL_8:
  IoFreeMdl(v5);
  if( v11 >= 0 )
    HvlpLogMicrocodeUpdateStatus();
  return v11;
}

Referenced by:

HvlUpdateMicrocodeDatabase