pub struct ExecEngine {
    pub AL: u8,
    pub CL: u8,
    pub DL: u8,
    pub BL: u8,
    pub AH: u8,
    pub CH: u8,
    pub DH: u8,
    pub BH: u8,
    pub R8B: u8,
    pub R9B: u8,
    pub R10B: u8,
    pub R11B: u8,
    pub R12B: u8,
    pub R13B: u8,
    pub R14B: u8,
    pub R15B: u8,
    pub AX: u16,
    pub CX: u16,
    pub DX: u16,
    pub BX: u16,
    pub SP: u16,
    pub BP: u16,
    pub SI: u16,
    pub DI: u16,
    pub R8W: u16,
    pub R9W: u16,
    pub R10W: u16,
    pub R11W: u16,
    pub R12W: u16,
    pub R13W: u16,
    pub R14W: u16,
    pub R15W: u16,
    pub EAX: u32,
    pub ECX: u32,
    pub EDX: u32,
    pub EBX: u32,
    pub ESP: u32,
    pub EBP: u32,
    pub ESI: u32,
    pub EDI: u32,
    pub R8D: u32,
    pub R9D: u32,
    pub R10D: u32,
    pub R11D: u32,
    pub R12D: u32,
    pub R13D: u32,
    pub R14D: u32,
    pub R15D: u32,
    pub RAX: u64,
    pub RCX: u64,
    pub RDX: u64,
    pub RBX: u64,
    pub RSP: u64,
    pub RBP: u64,
    pub RSI: u64,
    pub RDI: u64,
    pub R8: u64,
    pub R9: u64,
    pub R10: u64,
    pub R11: u64,
    pub R12: u64,
    pub R13: u64,
    pub R14: u64,
    pub R15: u64,
    pub EIP: u32,
    pub RIP: u64,
    pub stack: Vec<u8>,
}

impl ExecEngine {
    pub fn new() -> Self {
        Self {
            AL: 0,
            CL: 0,
            DL: 0,
            BL: 0,
            AH: 0,
            CH: 0,
            DH: 0,
            BH: 0,
            R8B: 0,
            R9B: 0,
            R10B: 0,
            R11B: 0,
            R12B: 0,
            R13B: 0,
            R14B: 0,
            R15B: 0,
            AX: 0,
            CX: 0,
            DX: 0,
            BX: 0,
            SP: 0,
            BP: 0,
            SI: 0,
            DI: 0,
            R8W: 0,
            R9W: 0,
            R10W: 0,
            R11W: 0,
            R12W: 0,
            R13W: 0,
            R14W: 0,
            R15W: 0,
            EAX: 0,
            ECX: 0,
            EDX: 0,
            EBX: 0,
            ESP: 0,
            EBP: 0,
            ESI: 0,
            EDI: 0,
            R8D: 0,
            R9D: 0,
            R10D: 0,
            R11D: 0,
            R12D: 0,
            R13D: 0,
            R14D: 0,
            R15D: 0,
            RAX: 0,
            RCX: 0,
            RDX: 0,
            RBX: 0,
            RSP: 0,
            RBP: 0,
            RSI: 0,
            RDI: 0,
            R8: 0,
            R9: 0,
            R10: 0,
            R11: 0,
            R12: 0,
            R13: 0,
            R14: 0,
            R15: 0,
            EIP: 0,
            RIP: 0,
            stack: vec![],
        }
    }
}
