HalpAllocateAdapterCallbackV3

NTSTATUS __stdcall HalpAllocateAdapterCallbackV3(
        DEVICE_OBJECT *DeviceObject,
        IRP *Irp,
        PVOID MapRegisterBase,
        PVOID Context){
  int v5; 
  MDL *v8; 
  INT64 v9; 
  void(__fastcall *v10)(DEVICE_OBJECT *, IRP *, INT64, __int64); 
  __int64 v11; 
  INT64 v12; 
  __int64 v13; 
  INT64 v15; 
  UINT64 a7; 
  INT64 a9; 
  int v18; 
  v5 = *((_DWORD *)Context + 10);
  v8 = (MDL *)*((_QWORD *)Context + 1);
  v9 = *((_QWORD *)Context + 20);
  v10 = (void(__fastcall *)(DEVICE_OBJECT *, IRP *, INT64, __int64))*((_QWORD *)Context + 15);
  v11 = *((_QWORD *)Context + 16);
  v12 = *((_QWORD *)Context + 18);
  *((_QWORD *)Context + 3) = MapRegisterBase;
  v13 = *((_QWORD *)Context + 4);
  v18 = v5;
  LODWORD(a9) = *((_DWORD *)Context + 39);
  LOBYTE(a7) = *((_BYTE *)Context + 152);
  LODWORD(v15) = 0;
  HalMapTransferEx(
    v12,
    v8,
    MapRegisterBase,
    v13 - v8->ByteOffset - (unsigned __int64)v8->StartVa,
    v15,
    (INT64)&v18,
    a7,
    v9,
    a9,
    0i64);
  *(_QWORD *)(v9 + 8) = Context;
  if( v10 )
    v10(DeviceObject, Irp, v9, v11);
  return 3;
}

Referenced by:

HalpBuildScatterGatherList