WdInstrInitializeInstruction

NTSTATUS __stdcall WdInstrInitializeInstruction(
        _WD_INSTRUCTION *Instruction,
        UINT8 Action,
        UINT8 Flags,
        _GEN_ADDR *Register){
  unsigned __int8 BitOffset; 
  NTSTATUS result; 
  INT64 v10; 
  unsigned __int8 AccessSize; 
  unsigned int v12; 
  unsigned int v13; 
  char v14; 

  BitOffset = 0;
  if( !Instruction )
    return -1073741811;
  memset(Instruction, 0i64, sizeof(_WD_INSTRUCTION));
  AccessSize = 3;
  if( !v14 )
    AccessSize = Register->AccessSize;
  LOBYTE(v10) = Register->AddressSpaceID;
  result = WdHwCreateHardwareRegister(Register->Address, v10, AccessSize, &Instruction->Register);
  if( result >= 0 )
  {
    Instruction->WatchdogAction = Action;
    Instruction->InstructionFlags = Flags;
    if( v14 )
    {
      Instruction->BitWidth = 32;
    }
    else
    {
      Instruction->BitWidth = Register->BitWidth;
      BitOffset = Register->BitOffset;
    }
    Instruction->BitOffset = BitOffset;
    Instruction->Value = v12;
    Instruction->Mask = v13;
    return 0;
  }
  return result;
}

Referenced by:

HalpWdatExecuteActionBeforeInitialize
HalpWdatInitializeWdat
HalpWdatInitializeWdrt