HalpInterruptGetIdentifiers

NTSTATUS __stdcall HalpInterruptGetIdentifiers(INT64 a1, INT64 a2, UINT64 **a3, INT64 a4){
  unsigned int v4; 
  int v5; 
  char *v6; 
  unsigned int v7; 
  char *v8; 
  int v10; 

  v4 = 0;
  v5 = a1;
  if( (_DWORD)qword_140C50640 )
  {
    v6 = (char *)HalpInterruptProcessorState + 13;
    while( 1 )
    {
      if( !v6[43] )
      {
        if( *v6 )
        {
          --v5;
          if( *(_DWORD *)(v6 + 7) == (_DWORD)a1 )
            break;
        }
      }
      ++v4;
      v6 += 64;
      if( v4 >= (unsigned int)qword_140C50640 )
        goto LABEL_7;
    }
    if( a2 )
      *(_DWORD *)a2 = *(_DWORD *)(v6 - 13);
    if( a3 )
    {
      v10 = *(_DWORD *)(v6 - 9);
      goto LABEL_25;
    }
    return 0;
  }
  else
  {
LABEL_7:
    v7 = 0;
    if( (_DWORD)qword_140C50640 )
    {
      v8 = (char *)HalpInterruptProcessorState + 12;
      do
      {
        if( !v8[1] && !*v8 && !v8[44] )
        {
          if( !v5 )
          {
            if( a2 )
              *(_DWORD *)a2 = *((_DWORD *)v8 - 3);
            if( !a3 )
              return 0;
            v10 = *((_DWORD *)v8 - 2);
LABEL_25:
            *(_DWORD *)a3 = v10;
            return 0;
          }
          --v5;
        }
        ++v7;
        v8 += 64;
      }
      while( v7 < (unsigned int)qword_140C50640 );
    }
    return -1073741275;
  }
}

Referenced by:

HalpConnectThermalInterrupt
HalpNumaQueryProcessorNode
HalpNumaSwapP0NodeToFront