HalpLaBltFindFree

_QWORD *__fastcall HalpLaBltFindFree(UINT64 a1, INT64 a2, UINT64 a3, UINT64 a4){
  __int64 v4; 
  _QWORD *v5; 
  __int64 v8; 
  __int64 v9; 
  __int64 v10; 
  _QWORD *v11; 
  _QWORD *i; 
  UINT64 v13; 
  v4 = *(_QWORD *)(a2 + 16);
  v5 = 0i64;
  if( v4 == -1 )
    LODWORD(v8) = 64;
  else
    _BitScanForward64((unsigned __int64 *)&v8, v4 + 1);
  _BitScanForward64((unsigned __int64 *)&v9, a1);
  if( (unsigned int)v9 <= (unsigned int)v8 )
  {
    v10 = *(_QWORD *)(a2 + 64);
    do
    {
      v11 = (_QWORD *)(v10 + 16i64 * (unsigned int)(v9 - 12));
      for( i = (_QWORD *)*v11; i != v11; i = (_QWORD *)*i )
      {
        v13 = i[6];
        v5 = i;
        if( v13 >= a3 && i[8] + v13 - 1 <= a4 )
          return v5;
      }
      LODWORD(v9) = v9 + 1;
    }
    while( (unsigned int)v9 <= (unsigned int)v8 );
  }
  return v5;
}

Referenced by:

HalpLaAllocateBlt