KiTpAccessMemory

VOID __fastcall KiTpAccessMemory(){
  _BYTE *v0; 
  _BYTE *v1; 
  char v2; 
  _BYTE *v3; 
  _BYTE *v4; 
  unsigned __int64 v5; 
  _BYTE *v6; 
  __int64 v7; 
  char v8; 
  unsigned __int8 v9; 
  char v10; 
  v3 = v1;
  v4 = v0;
  if( v2 == 1 )
  {
    if( v10 )
    {
      ProbeForWrite(v1, v9, 1ui64);
    }
    else if( v9 )
    {
      v5 = (unsigned __int64)&v1[v9];
      if( v5 > 0x7FFFFFFF0000i64 || v5 < (unsigned __int64)v1 )
        MEMORY[0x7FFFFFFF0000] = 0;
    }
  }
  v6 = v3;
  if( !v10 )
    v6 = v4;
  if( !v10 )
    v4 = v3;
  switch( v9 )
  {
    case 1u:
      *v6 = *v4;
      break;
    case 2u:
      *(_WORD *)v6 = *(_WORD *)v4;
      break;
    case 4u:
      if( v10 && v8 )
      {
        v7 = *(unsigned int *)v4;
        goto LABEL_16;
      }
      *(_DWORD *)v6 = *(_DWORD *)v4;
      break;
    default:
      v7 = *(_QWORD *)v4;
LABEL_16:
      *(_QWORD *)v6 = v7;
      return;
  }
}

Referenced by:

KiTpEmulateGroup0Instruction
KiTpEmulateGroup11Instruction
KiTpEmulateGroup1Instruction
KiTpEmulateInstruction
KiTpEmulateMovzx
KiTpEmulateRegisterPushPop
KiTpReadOperandValue