CmpDoReDoRecord

__int64 __fastcall CmpDoReDoRecord(__int64 a1, __int64 a2){
  unsigned int v2; 
  int v4; 
  VOID *Handle; 

  v2 = 0;
  if( (*(_DWORD *)(a2 + 8) & 0x1C) == 0 )
  {
    switch( *(_DWORD *)(a2 + 12) )
    {
      case 1:
        return(unsigned int)CmpDoReDoCreateKey(a1, a2);
      case 2:
        Handle = 0i64;
        v4 = CmpDoReOpenTransKey((_CM_TRANS *)a1, (_UNICODE_STRING *)(a2 + 32), 0x10000ui64, &Handle);
        if( v4 >= 0 )
        {
          v4 = ZwDeleteKey(Handle);
          ZwClose((_HANDLE)Handle);
        }
        return(unsigned int)v4;
      case 3:
      case 4:
        return(unsigned int)CmpDoReDoSetValueExisting(a1, a2);
      case 5:
        return(unsigned int)CmpDoReDoDeleteValue(a1, a2);
      case 6:
        return(unsigned int)CmpDoReDoSetKeyUserFlags(a1, a2);
      case 7:
        return(unsigned int)CmpDoReDoSetLastWriteTime(a1, a2);
      case 8:
        return(unsigned int)CmpDoReDoSetSecurityDescriptor(a1, a2);
      case 9:
        return(unsigned int)CmpDoReDoRenameKey(a1);
      default:
        return v2;
    }
  }
  return 0i64;
}

Referenced by:

CmpRmReDoPhase