use std::env;
use std::path::Path;
use reoxide::driver::*;
const PROGRAM: &[u8] = &[
0x55, 0x48, 0x89, 0xe5, 0x53, 0x48, 0x83, 0xec, 0x18, 0x89, 0x7d, 0xec, 0x83, 0x7d, 0xec, 0x00,
0x74, 0x06, 0x83, 0x7d, 0xec, 0x01, 0x75, 0x07, 0xb8, 0x01, 0x00, 0x00, 0x00, 0xeb, 0x1e, 0x8b,
0x45, 0xec, 0x83, 0xe8, 0x01, 0x89, 0xc7, 0xe8, 0xfb, 0xfe, 0xff, 0xff, 0x89, 0xc3, 0x8b, 0x45,
0xec, 0x83, 0xe8, 0x02, 0x89, 0xc7, 0xe8, 0xec, 0xfe, 0xff, 0xff, 0x01, 0xd8, 0x48, 0x8b, 0x5d,
0xf8, 0xc9, 0xc3,
];
fn main() -> Result<(), DecompError> {
let ghidra_dir = env::var("GHIDRA_INSTALL_DIR").expect(
"Please provide an environment variable \
GHIDRA_INSTALL_DIR with the path to the Ghidra root directory. \
This is needed to find the SLEIGH specification files",
);
initialize_decompiler(Path::new(&ghidra_dir), true)?;
let mut ctx = RawFileContext::from_bytes("x86:LE:64:default", &PROGRAM)?;
let addr = 0x0;
ctx.define_function(addr, "fib")?;
let decomp = ctx.decompile_function(addr)?;
println!("{}", decomp);
Ok(())
}