use cfg_if::cfg_if;
cfg_if! {
if #[cfg(zisk_guest)] {
use core::arch::asm;
use crate::{ziskos_fcall, ziskos_fcall_param, zisklib::FCALL_SECP256K1_GLV_DECOMPOSE_ID};
#[cfg(not(feature = "inputcpy"))]
use crate::ziskos_fcall_get;
#[cfg(feature = "inputcpy")]
use crate::ziskos_inputcpy;
}
}
#[allow(unused_variables)]
pub fn fcall_secp256k1_glv_decompose(
k: &[u64; 4],
#[cfg(feature = "hints")] hints: &mut Vec<u64>,
) -> [u64; 10] {
#[cfg(not(zisk_guest))]
{
use crate::zisklib::fcalls_impl;
let mut params: [u64; 4] = [0u64; 4];
params.copy_from_slice(k);
let mut results = [0u64; 10];
fcalls_impl::secp256k1::fcall_secp256k1_glv_decompose(¶ms, &mut results);
#[cfg(feature = "hints")]
{
hints.push(results.len() as u64);
hints.extend_from_slice(&results);
}
results
}
#[cfg(zisk_guest)]
{
ziskos_fcall_param!(k, 4);
ziskos_fcall!(FCALL_SECP256K1_GLV_DECOMPOSE_ID);
#[cfg(not(feature = "inputcpy"))]
{
[
ziskos_fcall_get(),
ziskos_fcall_get(),
ziskos_fcall_get(),
ziskos_fcall_get(),
ziskos_fcall_get(),
ziskos_fcall_get(),
ziskos_fcall_get(),
ziskos_fcall_get(),
ziskos_fcall_get(),
ziskos_fcall_get(),
]
}
#[cfg(feature = "inputcpy")]
{
use core::mem::MaybeUninit;
let mut res: MaybeUninit<[u64; 10]> = MaybeUninit::uninit();
ziskos_inputcpy!(res, 80);
unsafe { res.assume_init() }
}
}
}