HalpInterruptRegisterDynamicProcessor

NTSTATUS __stdcall HalpInterruptRegisterDynamicProcessor(){
  unsigned int v0; 
  int v1; 
  int v3; 
  unsigned int v4; 
  char *i; 

  if( HalpInterruptModel() != 1 )
    return -1073741823;
  if( !*(&stru_140CF2E80 + 6616)
    && !*(&CmpDummyThreadEvent + 7160)
    && (unsigned int)qword_140C50640 > HalpInterruptLogicalFlatLimit )
  {
    return -1073741800;
  }
  if( HalpInterruptPackagesStarted > v0 )
    return -1073741823;
  if( HalpInterruptPackagesStarted >= v0 )
  {
    v3 = 0;
    v4 = ~(KeGetCurrentPrcb()->LogicalProcessorsPerCore * KeGetCurrentPrcb()->CoresPerPhysicalProcessor - 1);
    if( (_DWORD)qword_140C50640 )
    {
      for( i = (char *)HalpInterruptProcessorState + 8; !i[5] || (*(_DWORD *)i & v4) != (v1 & v4); i += 64 )
      {
        if( ++v3 >= (unsigned int)qword_140C50640 )
          return -1073741823;
      }
      return 0;
    }
    return -1073741823;
  }
  return 0;
}

Referenced by:

HalRegisterDynamicProcessor