IopBootAllocation

NTSTATUS __stdcall IopBootAllocation(_REQ_LIST *ReqList){
  NTSTATUS v1; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *v3; 
  _LIST_ENTRY *v4; 
  int v5; 
  _LIST_ENTRY *v6; 
  _LIST_ENTRY *v7; 
  _LIST_ENTRY ActiveArbiterList; 
  __int128 v10[2]; 

  ActiveArbiterList.Blink = &ActiveArbiterList;
  v10[0] = 0i64;
  v1 = 0;
  ActiveArbiterList.Flink = &ActiveArbiterList;
  *((_QWORD *)ReqList + 2) = ReqList + 10;
  v10[1] = 0i64;
  IopAddRemoveReqDescs(
    (_REQ_DESC **)(*((_QWORD *)ReqList + 5) + 24i64),
    *(unsigned int *)(*((_QWORD *)ReqList + 5) + 20i64),
    &ActiveArbiterList,
    1u);
  Flink = ActiveArbiterList.Flink;
  while( Flink != &ActiveArbiterList )
  {
    v3 = Flink;
    Flink = Flink->Flink;
    if( BYTE1(v3[1].Flink) )
    {
      v4 = v3 - 3;
      *(_QWORD *)&v10[0] = v3 - 3;
      v5 = ((__int64(__fastcall *)(_LIST_ENTRY *, __int64, __int128 *))v3[-4].Flink[2].Flink)(
             v3[-4].Flink->Blink,
             9i64,
             v10);
      v6 = v3 - 1;
      v3->Blink = v3;
      v6->Blink = v6;
      v6->Flink = v6;
      v7 = v3 - 2;
      if( v5 < 0 )
        v1 = v5;
      v7->Blink = v7;
      LOWORD(v3[1].Flink) = 0;
      v7->Flink = v7;
      v3->Flink = v3;
      v4->Blink = v4;
      v4->Flink = v4;
    }
  }
  return v1;
}

Referenced by:

IopAllocateBootResourcesInternal