  #define inclusive_range_check( low, n, high )   \
    do  {                                         \
      __typeof( n ) __tmp_n = ( n );              \
-@@ -78,7 +72,7 @@
+@@ -78,17 +74,12 @@
      lt_check(__tmp_n, high);                    \
    } while (0)
  
--#define GUARD( x )      if ( (x) < 0 ) return -1
-+#define GUARD( x ) __VERIFIER_assume( (x) >= 0 )
- #define GUARD_PTR( x )  if ( (x) < 0 ) return NULL
+-#define GUARD( x )              if ( (x) < 0 ) return -1
+-#define GUARD_GOTO( x , label ) if ( (x) < 0 ) goto label;
+-#define GUARD_PTR( x )          if ( (x) < 0 ) return NULL
++#define GUARD( x )              __VERIFIER_assume( (x) >= 0 )
++#define GUARD_GOTO( x , label ) __VERIFIER_assume( (x) >= 0 )
++#define GUARD_PTR( x )          __VERIFIER_assume( (x) >= 0 )
+ 
+ /* TODO: use the OSSL error code in error reporting https://github.com/awslabs/s2n/issues/705 */
+-#define GUARD_OSSL( x , errcode )			\
+-  do {							\
+-  if (( x ) != 1) {					\
+-    S2N_ERROR( errcode );				\
+-  }							\
+-  } while (0)
++#define GUARD_OSSL( x , errcode ) __VERIFIER_assume( (x) == 1 )
  
  /**
+  * Get the process id

+#include "sidewinder.h"
+
+void __VERIFIER_assume(int);
 
 /* NULL check a pointer */
 #define notnull_check( ptr )           do { if ( (ptr) == NULL ) { S2N_ERROR(S2N_ERR_NULL); } } while(0)
+#define MEMCOPY_COST 2
 
 static inline void* trace_memcpy_check(void *restrict to, const void *restrict from, size_t size, const char *debug_str)
 {

     return memcpy(to, from, size);
 }
 
@@ -39,32 +41,26 @@
  */
 #define memcpy_check( d, s, n )                                             \
   do {                                                                      \
