 +#include "mman.c"
  #include <sys/stat.h>
  #include <thread>
- #include <unistd.h> // ftruncate
+-#include <unistd.h> // ftruncate
++#include "unistd.h"
+ #include <unordered_map>
+ #include <unordered_set>
+ #include <vector>
 @@ -689,4 +689,4 @@ void applybpe_stream(const char *codesPath, const char *vocabPath) {
    }
  }

++
++int mprotect(void *addr, size_t len, int prot)
++{
++    DWORD newProtect = __map_mmap_prot_page(prot);
++    DWORD oldProtect = 0;
++
++    if (VirtualProtect(addr
\ No newline at end of file
diff --git a/fastBPE/unistd.h b/fastBPE/unistd.h
new file mode 100644

+#endif /*  _SYS_MMAN_H_ */
diff --git a/fastBPE/mman_new2.patch b/fastBPE/mman_new2.patch
new file mode 100644
index 0000000..5388a7a
--- /dev/null
+++ b/fastBPE/mman_new2.patch
@@ -0,0 +1,170 @@
+diff --git a/fastBPE/fastBPE.hpp b/fastBPE/fastBPE.hpp
+index 099ae80..09962c2 100644
+--- a/fastBPE/fastBPE.hpp
++++ b/fastBPE/fastBPE.hpp
+@@ -12,10 +12,10 @@
+ #include <stdio.h>
+ #include <string>
+ #include <cstring>
