#[repr(C)]
#[cfg_attr(feature = "impl-register-debug", derive(Debug))]
#[doc = "Register block"]
pub struct RegisterBlock {
    _reserved0: [u8; 0x04],
    conf: CONF,
    clk: CLK,
    int_raw: INT_RAW,
    int_st: INT_ST,
    int_ena: INT_ENA,
    int_clr: INT_CLR,
    start: START,
    state: STATE,
    result: RESULT,
    _reserved9: [u8; 0xd4],
    date: DATE,
    _reserved10: [u8; 0x0100],
    sha_mode: SHA_MODE,
    _reserved11: [u8; 0x0c],
    sha_start: SHA_START,
    sha_continue: SHA_CONTINUE,
    sha_busy: SHA_BUSY,
    _reserved14: [u8; 0x64],
    message_mem: [MESSAGE_MEM; 16],
    _reserved15: [u8; 0x80],
    _reserved_15_r_mem: [u8; 0xb0],
}
impl RegisterBlock {
    #[doc = "0x04 - ECDSA configure register"]
    #[inline(always)]
    pub const fn conf(&self) -> &CONF {
        &self.conf
    }
    #[doc = "0x08 - ECDSA clock gate register"]
    #[inline(always)]
    pub const fn clk(&self) -> &CLK {
        &self.clk
    }
    #[doc = "0x0c - ECDSA interrupt raw register, valid in level."]
    #[inline(always)]
    pub const fn int_raw(&self) -> &INT_RAW {
        &self.int_raw
    }
    #[doc = "0x10 - ECDSA interrupt status register."]
    #[inline(always)]
    pub const fn int_st(&self) -> &INT_ST {
        &self.int_st
    }
    #[doc = "0x14 - ECDSA interrupt enable register."]
    #[inline(always)]
    pub const fn int_ena(&self) -> &INT_ENA {
        &self.int_ena
    }
    #[doc = "0x18 - ECDSA interrupt clear register."]
    #[inline(always)]
    pub const fn int_clr(&self) -> &INT_CLR {
        &self.int_clr
    }
    #[doc = "0x1c - ECDSA start register"]
    #[inline(always)]
    pub const fn start(&self) -> &START {
        &self.start
    }
    #[doc = "0x20 - ECDSA status register"]
    #[inline(always)]
    pub const fn state(&self) -> &STATE {
        &self.state
    }
    #[doc = "0x24 - ECDSA result register"]
    #[inline(always)]
    pub const fn result(&self) -> &RESULT {
        &self.result
    }
    #[doc = "0xfc - Version control register"]
    #[inline(always)]
    pub const fn date(&self) -> &DATE {
        &self.date
    }
    #[doc = "0x200 - ECDSA control SHA register"]
    #[inline(always)]
    pub const fn sha_mode(&self) -> &SHA_MODE {
        &self.sha_mode
    }
    #[doc = "0x210 - ECDSA control SHA register"]
    #[inline(always)]
    pub const fn sha_start(&self) -> &SHA_START {
        &self.sha_start
    }
    #[doc = "0x214 - ECDSA control SHA register"]
    #[inline(always)]
    pub const fn sha_continue(&self) -> &SHA_CONTINUE {
        &self.sha_continue
    }
    #[doc = "0x218 - ECDSA status register"]
    #[inline(always)]
    pub const fn sha_busy(&self) -> &SHA_BUSY {
        &self.sha_busy
    }
    #[doc = "0x280..0x2c0 - The memory that stores message."]
    #[inline(always)]
    pub const fn message_mem(&self, n: usize) -> &MESSAGE_MEM {
        &self.message_mem[n]
    }
    #[doc = "Iterator for array of:"]
    #[doc = "0x280..0x2c0 - The memory that stores message."]
    #[inline(always)]
    pub fn message_mem_iter(&self) -> impl Iterator<Item = &MESSAGE_MEM> {
        self.message_mem.iter()
    }
    #[doc = "0x340..0x370 - The memory that stores r."]
    #[inline(always)]
    pub const fn r_mem(&self, n: usize) -> &R_MEM {
        #[allow(clippy::no_effect)]
        [(); 12][n];
        unsafe {
            &*core::ptr::from_ref(self)
                .cast::<u8>()
                .add(832)
                .add(4 * n)
                .cast()
        }
    }
    #[doc = "Iterator for array of:"]
    #[doc = "0x340..0x370 - The memory that stores r."]
    #[inline(always)]
    pub fn r_mem_iter(&self) -> impl Iterator<Item = &R_MEM> {
        (0..12).map(move |n| unsafe {
            &*core::ptr::from_ref(self)
                .cast::<u8>()
                .add(832)
                .add(4 * n)
                .cast()
        })
    }
    #[doc = "0x360..0x390 - The memory that stores s."]
    #[inline(always)]
    pub const fn s_mem(&self, n: usize) -> &S_MEM {
        #[allow(clippy::no_effect)]
        [(); 12][n];
        unsafe {
            &*core::ptr::from_ref(self)
                .cast::<u8>()
                .add(864)
                .add(4 * n)
                .cast()
        }
    }
    #[doc = "Iterator for array of:"]
    #[doc = "0x360..0x390 - The memory that stores s."]
    #[inline(always)]
    pub fn s_mem_iter(&self) -> impl Iterator<Item = &S_MEM> {
        (0..12).map(move |n| unsafe {
            &*core::ptr::from_ref(self)
                .cast::<u8>()
                .add(864)
                .add(4 * n)
                .cast()
        })
    }
    #[doc = "0x380..0x3b0 - The memory that stores software written z."]
    #[inline(always)]
    pub const fn z_mem(&self, n: usize) -> &Z_MEM {
        #[allow(clippy::no_effect)]
        [(); 12][n];
        unsafe {
            &*core::ptr::from_ref(self)
                .cast::<u8>()
                .add(896)
                .add(4 * n)
                .cast()
        }
    }
    #[doc = "Iterator for array of:"]
    #[doc = "0x380..0x3b0 - The memory that stores software written z."]
    #[inline(always)]
    pub fn z_mem_iter(&self) -> impl Iterator<Item = &Z_MEM> {
        (0..12).map(move |n| unsafe {
            &*core::ptr::from_ref(self)
                .cast::<u8>()
                .add(896)
                .add(4 * n)
                .cast()
        })
    }
    #[doc = "0x3a0..0x3d0 - The memory that stores x coordinates of QA or software written k."]
    #[inline(always)]
    pub const fn qax_mem(&self, n: usize) -> &QAX_MEM {
        #[allow(clippy::no_effect)]
        [(); 12][n];
        unsafe {
            &*core::ptr::from_ref(self)
                .cast::<u8>()
                .add(928)
                .add(4 * n)
                .cast()
        }
    }
    #[doc = "Iterator for array of:"]
    #[doc = "0x3a0..0x3d0 - The memory that stores x coordinates of QA or software written k."]
    #[inline(always)]
    pub fn qax_mem_iter(&self) -> impl Iterator<Item = &QAX_MEM> {
        (0..12).map(move |n| unsafe {
            &*core::ptr::from_ref(self)
                .cast::<u8>()
                .add(928)
                .add(4 * n)
                .cast()
        })
    }
    #[doc = "0x3c0..0x3f0 - The memory that stores y coordinates of QA."]
    #[inline(always)]
    pub const fn qay_mem(&self, n: usize) -> &QAY_MEM {
        #[allow(clippy::no_effect)]
        [(); 12][n];
        unsafe {
            &*core::ptr::from_ref(self)
                .cast::<u8>()
                .add(960)
                .add(4 * n)
                .cast()
        }
    }
    #[doc = "Iterator for array of:"]
    #[doc = "0x3c0..0x3f0 - The memory that stores y coordinates of QA."]
    #[inline(always)]
    pub fn qay_mem_iter(&self) -> impl Iterator<Item = &QAY_MEM> {
        (0..12).map(move |n| unsafe {
            &*core::ptr::from_ref(self)
                .cast::<u8>()
                .add(960)
                .add(4 * n)
                .cast()
        })
    }
}
#[doc = "CONF (rw) register accessor: ECDSA configure register\n\nYou can [`read`](crate::Reg::read) this register and get [`conf::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`conf::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@conf`] module"]
pub type CONF = crate::Reg<conf::CONF_SPEC>;
#[doc = "ECDSA configure register"]
pub mod conf;
#[doc = "CLK (rw) register accessor: ECDSA clock gate register\n\nYou can [`read`](crate::Reg::read) this register and get [`clk::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`clk::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@clk`] module"]
pub type CLK = crate::Reg<clk::CLK_SPEC>;
#[doc = "ECDSA clock gate register"]
pub mod clk;
#[doc = "INT_RAW (r) register accessor: ECDSA interrupt raw register, valid in level.\n\nYou can [`read`](crate::Reg::read) this register and get [`int_raw::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@int_raw`] module"]
pub type INT_RAW = crate::Reg<int_raw::INT_RAW_SPEC>;
#[doc = "ECDSA interrupt raw register, valid in level."]
pub mod int_raw;
#[doc = "INT_ST (r) register accessor: ECDSA interrupt status register.\n\nYou can [`read`](crate::Reg::read) this register and get [`int_st::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@int_st`] module"]
pub type INT_ST = crate::Reg<int_st::INT_ST_SPEC>;
#[doc = "ECDSA interrupt status register."]
pub mod int_st;
#[doc = "INT_ENA (rw) register accessor: ECDSA interrupt enable register.\n\nYou can [`read`](crate::Reg::read) this register and get [`int_ena::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`int_ena::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@int_ena`] module"]
pub type INT_ENA = crate::Reg<int_ena::INT_ENA_SPEC>;
#[doc = "ECDSA interrupt enable register."]
pub mod int_ena;
#[doc = "INT_CLR (w) register accessor: ECDSA interrupt clear register.\n\nYou can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`int_clr::W`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@int_clr`] module"]
pub type INT_CLR = crate::Reg<int_clr::INT_CLR_SPEC>;
#[doc = "ECDSA interrupt clear register."]
pub mod int_clr;
#[doc = "START (w) register accessor: ECDSA start register\n\nYou can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`start::W`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@start`] module"]
pub type START = crate::Reg<start::START_SPEC>;
#[doc = "ECDSA start register"]
pub mod start;
#[doc = "STATE (r) register accessor: ECDSA status register\n\nYou can [`read`](crate::Reg::read) this register and get [`state::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@state`] module"]
pub type STATE = crate::Reg<state::STATE_SPEC>;
#[doc = "ECDSA status register"]
pub mod state;
#[doc = "RESULT (r) register accessor: ECDSA result register\n\nYou can [`read`](crate::Reg::read) this register and get [`result::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@result`] module"]
pub type RESULT = crate::Reg<result::RESULT_SPEC>;
#[doc = "ECDSA result register"]
pub mod result;
pub use crate::aes::{date, DATE};
#[doc = "SHA_MODE (rw) register accessor: ECDSA control SHA register\n\nYou can [`read`](crate::Reg::read) this register and get [`sha_mode::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`sha_mode::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@sha_mode`] module"]
pub type SHA_MODE = crate::Reg<sha_mode::SHA_MODE_SPEC>;
#[doc = "ECDSA control SHA register"]
pub mod sha_mode;
#[doc = "SHA_START (w) register accessor: ECDSA control SHA register\n\nYou can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`sha_start::W`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@sha_start`] module"]
pub type SHA_START = crate::Reg<sha_start::SHA_START_SPEC>;
#[doc = "ECDSA control SHA register"]
pub mod sha_start;
#[doc = "SHA_CONTINUE (w) register accessor: ECDSA control SHA register\n\nYou can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`sha_continue::W`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@sha_continue`] module"]
pub type SHA_CONTINUE = crate::Reg<sha_continue::SHA_CONTINUE_SPEC>;
#[doc = "ECDSA control SHA register"]
pub mod sha_continue;
#[doc = "SHA_BUSY (r) register accessor: ECDSA status register\n\nYou can [`read`](crate::Reg::read) this register and get [`sha_busy::R`]. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@sha_busy`] module"]
pub type SHA_BUSY = crate::Reg<sha_busy::SHA_BUSY_SPEC>;
#[doc = "ECDSA status register"]
pub mod sha_busy;
#[doc = "MESSAGE_MEM (rw) register accessor: The memory that stores message.\n\nYou can [`read`](crate::Reg::read) this register and get [`message_mem::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`message_mem::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@message_mem`] module"]
pub type MESSAGE_MEM = crate::Reg<message_mem::MESSAGE_MEM_SPEC>;
#[doc = "The memory that stores message."]
pub mod message_mem;
#[doc = "R_MEM (rw) register accessor: The memory that stores r.\n\nYou can [`read`](crate::Reg::read) this register and get [`r_mem::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`r_mem::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@r_mem`] module"]
pub type R_MEM = crate::Reg<r_mem::R_MEM_SPEC>;
#[doc = "The memory that stores r."]
pub mod r_mem;
#[doc = "S_MEM (rw) register accessor: The memory that stores s.\n\nYou can [`read`](crate::Reg::read) this register and get [`s_mem::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`s_mem::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@s_mem`] module"]
pub type S_MEM = crate::Reg<s_mem::S_MEM_SPEC>;
#[doc = "The memory that stores s."]
pub mod s_mem;
#[doc = "Z_MEM (rw) register accessor: The memory that stores software written z.\n\nYou can [`read`](crate::Reg::read) this register and get [`z_mem::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`z_mem::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@z_mem`] module"]
pub type Z_MEM = crate::Reg<z_mem::Z_MEM_SPEC>;
#[doc = "The memory that stores software written z."]
pub mod z_mem;
#[doc = "QAX_MEM (rw) register accessor: The memory that stores x coordinates of QA or software written k.\n\nYou can [`read`](crate::Reg::read) this register and get [`qax_mem::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`qax_mem::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@qax_mem`] module"]
pub type QAX_MEM = crate::Reg<qax_mem::QAX_MEM_SPEC>;
#[doc = "The memory that stores x coordinates of QA or software written k."]
pub mod qax_mem;
#[doc = "QAY_MEM (rw) register accessor: The memory that stores y coordinates of QA.\n\nYou can [`read`](crate::Reg::read) this register and get [`qay_mem::R`]. You can [`reset`](crate::Reg::reset), [`write`](crate::Reg::write), [`write_with_zero`](crate::Reg::write_with_zero) this register using [`qay_mem::W`]. You can also [`modify`](crate::Reg::modify) this register. See [API](https://docs.rs/svd2rust/#read--modify--write-api).\n\nFor information about available fields see [`mod@qay_mem`] module"]
pub type QAY_MEM = crate::Reg<qay_mem::QAY_MEM_SPEC>;
#[doc = "The memory that stores y coordinates of QA."]
pub mod qay_mem;
