(x86-syscall-truncate x86) → x86
Function:
(defun x86-syscall-truncate (x86) (declare (xargs :stobjs (x86))) (declare (xargs :guard t)) (let ((__function__ 'x86-syscall-truncate)) (declare (ignorable __function__)) (b* ((ctx 'x86-syscall-truncate) (path (rgfi *rdi* x86)) (length (rgfi *rsi* x86)) ((when (not (canonical-address-p path))) (!ms (list ctx :syscall-truncate-path-ptr-not-canonical) x86)) ((mv flg pathname x86) (read-string-zero-terminated path x86)) ((when flg) (!ms (list ctx :path flg) x86)) ((mv ret x86) (syscall-truncate pathname length x86)) ((when (or (ms x86) (not (i64p ret)))) (!ms (list ctx :oracle-val-for-syscall-truncate ret) x86)) (x86 (!rgfi *rax* ret x86))) x86)))
Theorem:
(defthm x86p-of-x86-syscall-truncate (implies (and (x86p x86)) (b* ((x86 (x86-syscall-truncate x86))) (x86p x86))) :rule-classes :rewrite)