#![no_std]
#![no_main]
extern crate loop_panic_handler;
#[cfg(any(mixed, named_only))]
pub struct Hash32([u8; 32]);
#[cfg(mixed)]
static EXPECTED: Hash32 = Hash32([3u8; 32]);
#[cfg(named_only)]
static EXPECTED: Hash32 = Hash32([3u8; 32]);
#[unsafe(no_mangle)]
pub fn entrypoint(input: *mut u8) -> u64 {
#[cfg(anon_only)]
{
let value = unsafe { core::ptr::read_unaligned(input as *const u64) };
return value.trailing_zeros() as u64;
}
#[cfg(mixed)]
{
let value = unsafe { core::ptr::read_unaligned(input as *const u64) };
let expected =
unsafe { core::ptr::read_volatile(EXPECTED.0.as_ptr() as *const u8) };
return value.trailing_zeros() as u64 ^ expected as u64;
}
#[cfg(named_only)]
{
let value = unsafe { core::ptr::read_unaligned(input as *const u8) };
let expected =
unsafe { core::ptr::read_volatile(EXPECTED.0.as_ptr() as *const u8) };
return (value ^ expected) as u64;
}
let value = unsafe { core::ptr::read_unaligned(input as *const u64) };
value.trailing_zeros() as u64
}