VrpRegistryCallback

INT64 __fastcall VrpRegistryCallback(VOID *a1, VOID *a2, VOID *r8_0){
  unsigned int v3; 
  int v5; 
  UNICODE_STRING *v7; 
  UINT64 a4; 
  __int64 a3; 
  GUID ActivityId; 
  v3 = 0;
  a4 = 0i64;
  a3 = 0i64;
  v5 = (int)a2;
  ActivityId = 0i64;
  if( (unsigned int)a2 <= 0x31 && (unsigned int)VrpShouldOperateOnCall((unsigned int)a2, r8_0, &a3, &a4) )
  {
    EtwActivityIdControl(1u, &ActivityId);
    switch( v5 )
    {
      case 29:
        return(unsigned int)VrpPostOpenOrCreate((_REG_POST_OPERATION_INFORMATION *)r8_0);
      case 28:
        return(unsigned int)VrpPreOpenOrCreate((INT64)r8_0, (CHAR *)a4);
      case 22:
        return(unsigned int)VrpPostQueryKey((INT64)r8_0);
      default:
        if( v5 != 7 )
        {
          switch( v5 )
          {
            case 14:
              v7 = (UNICODE_STRING *)*((_QWORD *)r8_0 + 2);
              if( v7 )
                VrpDecommissionKeyContext(v7);
              break;
            case 20:
              v3 = VrpPostEnumerateKey((INT64)r8_0, (UINT64 *)a4);
              break;
            case 26:
              return(unsigned int)VrpPreOpenOrCreate((INT64)r8_0, (CHAR *)a4);
            case 27:
              return(unsigned int)VrpPostOpenOrCreate((_REG_POST_OPERATION_INFORMATION *)r8_0);
            case 30:
              return(unsigned int)VrpPreFlushKey(0.0, a4);
            case 32:
              return(unsigned int)VrpPreLoadKey(r8_0, a4);
            case 34:
              return(unsigned int)VrpPreUnloadKey((INT64)r8_0, (UINT64 *)a4);
            case 35:
              return(unsigned int)VrpPostUnloadKey((INT64)r8_0, a4);
            case 40:
              VrpFreeKeyContext(*((PVOID *)r8_0 + 1));
              break;
            case 47:
              return(unsigned int)VrpPreQueryKeyName((REG_QUERY_KEY_NAME *)r8_0);
            default:
              return v3;
          }
        }
        break;
    }
  }
  return v3;
}

Referenced by:

No references.