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; 
  int v16; 

  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);
  v16 = v5;
  LOBYTE(v15) = *((_BYTE *)Context + 152);
  HalMapTransferEx(
    v12,
    v8,
    MapRegisterBase,
    v13 - v8->ByteOffset - (unsigned __int64)v8->StartVa,
    0,
    (__int64)&v16,
    v15,
    v9,
    *((_DWORD *)Context + 39),
    0i64,
    0i64);
  *(_QWORD *)(v9 + 8) = Context;
  if( v10 )
    v10(DeviceObject, Irp, v9, v11);
  return 3;
}

Referenced by:

HalpBuildScatterGatherList