Use ocaml-bisect to compute coverage of tests.
authorRichard W.M. Jones <rich@annexia.org>
Tue, 26 Aug 2008 09:42:05 +0000 (09:42 +0000)
committerRichard W.M. Jones <rich@annexia.org>
Tue, 26 Aug 2008 09:42:05 +0000 (09:42 +0000)
MANIFEST
Makefile.in
bitstring.ml
cil-tools/Makefile.in
configure.ac
coverage-report/file0000.html [new file with mode: 0644]
coverage-report/file0001.html [new file with mode: 0644]
coverage-report/file0002.html [new file with mode: 0644]
coverage-report/file0003.html [new file with mode: 0644]
coverage-report/index.html [new file with mode: 0644]
coverage-report/style.css [new file with mode: 0644]

index 9947386..ed4e8df 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -22,6 +22,12 @@ cil-tools/task_struct.ml
 configure.ac
 COPYING
 COPYING.LIB
+coverage-report/file0000.html
+coverage-report/file0001.html
+coverage-report/file0002.html
+coverage-report/file0003.html
+coverage-report/style.css
+coverage-report/index.html
 create_test_pattern.ml
 examples/elf.ml
 examples/ext3_sb
index 695d427..a9e0495 100644 (file)
@@ -26,6 +26,7 @@ OCAMLDOC      = @OCAMLDOC@
 INSTALL                = @INSTALL@
 TIME           = @TIME@
 GPROF          = @GPROF@
+BISECT_REPORT  = @BISECT_REPORT@
 
 BYTESWAP_H     = @BYTESWAP_H@
 
@@ -35,10 +36,21 @@ top_srcdir  = @top_srcdir@
 pkg_cil                = @pkg_cil@
 pkg_extlib     = @pkg_extlib@
 
+enable_coverage = @enable_coverage@
+
 OCAMLCFLAGS    = -g
 OCAMLCPACKAGES =
+OCAMLCLIBS     = -linkpkg
 OCAMLOPTFLAGS  =
 OCAMLOPTPACKAGES =
+OCAMLOPTLIBS   = -linkpkg
+
+ifneq ($(enable_coverage),no)
+OCAMLCFLAGS     += -I +bisect -pp 'camlp4o $(OCAMLLIB)/bisect/instrument.cma'
+OCAMLCLIBS     += -I +bisect bisect.cma
+OCAMLOPTFLAGS   += -I +bisect -pp 'camlp4o $(OCAMLLIB)/bisect/instrument.cma'
+OCAMLOPTLIBS   += -I +bisect bisect.cmxa
+endif
 
 OCAMLDOCFLAGS  = -html -sort
 
@@ -102,6 +114,7 @@ pa_bitstring.cmo: pa_bitstring.ml bitstring.cma bitstring_persistent.cma
 
 bitstring-objinfo: bitstring_objinfo.cmo bitstring.cma bitstring_persistent.cma
        $(OCAMLFIND) ocamlc -I +camlp4 unix.cma camlp4lib.cma \
+         $(OCAMLCLIBS) \
          bitstring.cma bitstring_persistent.cma \
          $< -o $@
 
@@ -114,18 +127,21 @@ byteswap.h: byteswap.in.h
        } > $@-t
        mv -f $@-t $@
 
-# Tests and examples.
+# Tests.
 
-PP     = -pp "camlp4o bitstring.cma bitstring_persistent.cma pa_bitstring.cmo"
+ifeq ($(enable_coverage),no)
+PP     = -pp 'camlp4o bitstring.cma bitstring_persistent.cma pa_bitstring.cmo'
+else
+PP     = -pp 'camlp4o $(OCAMLLIB)/bisect/bisect.cma bitstring.cma bitstring_persistent.cma pa_bitstring.cmo'
+endif
 
 test: pa_bitstring.cmo bitstring.cma bitstring_persistent.cma tests/test.bmpp
        @for f in $(TESTS); do \
          echo Building $$f; \
-         $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) $(PP) \
-           -package unix -linkpkg -I . bitstring.cma $$f.ml -o $$f; \
+         $(OCAMLFIND) ocamlopt $(OCAMLOPTFLAGS) $(PP) -package unix $(OCAMLOPTLIBS) -I . bitstring.cmxa $$f.ml -o $$f.opt; \
          if [ $$? -ne 0 ]; then exit 1; fi; \
          echo Running $$f; \
-         $$f; \
+         $$f.opt; \
          if [ $$? -ne 0 ]; then exit 1; fi; \
        done
        @for d in $(SUBDIRS); do $(MAKE) -C $$d $@; done
@@ -137,6 +153,7 @@ tests/test.bmpp: create_test_pattern
 create_test_pattern: create_test_pattern.cmo
        $(OCAMLFIND) ocamlc $(OCAMLCFLAGS) -pp camlp4of \
          unix.cma -I +camlp4 camlp4lib.cma \
+         $(OCAMLCLIBS) \
          -I . bitstring.cma bitstring_persistent.cma $< -o $@
 
 create_test_pattern.cmo: create_test_pattern.ml
@@ -144,6 +161,20 @@ create_test_pattern.cmo: create_test_pattern.ml
          unix.cma -I +camlp4 \
          -I . -c $< -o $@
 
+# Coverage of tests.
+
+ifneq ($(BISECT_REPORT),no)
+coverage:
+       rm -f coverage-report/*
+       rm -f bisect*.out
+       $(MAKE) test
+       $(BISECT_REPORT) -html coverage-report bisect*.out
+       rm -f bisect*.out
+       @echo Coverage report is in `pwd`/coverage-report/index.html
+endif
+
+# Examples.
+
 examples: pa_bitstring.cmo bitstring.cma bitstring_persistent.cma
        @for f in $(EXAMPLES); do \
          echo Building $$f; \
@@ -204,7 +235,7 @@ endif
 
 clean:
        rm -f core *~ *.cmi *.cmo *.cmx *.cma *.cmxa *.a *.o
-       rm -f tests/*~ tests/*.cmi tests/*.cmo $(TESTS)
+       rm -f tests/*~ tests/*.cmi tests/*.cmo tests/*.opt
        rm -f examples/*~ examples/*.cmi examples/*.cmo $(EXAMPLES)
        rm -f benchmarks/*~ benchmarks/*.cmi benchmarks/*.cmo
        rm -f benchmarks/*.opt benchmarks/*.opt.p benchmarks/*.profile
index 8850b59..7ed7a58 100644 (file)
@@ -149,8 +149,8 @@ let takebits n (data, off, len) =
 
 module I = struct
   (* Bitwise operations on ints.  Note that we assume int <= 31 bits. *)
-  let (<<) = (lsl)
-  let (>>) = (lsr)
+  external (<<<) : int -> int -> int = "%lslint"
+  external (>>>) : int -> int -> int = "%lsrint"
   external to_int : int -> int = "%identity"
   let zero = 0
   let one = 1
@@ -160,7 +160,7 @@ module I = struct
   (* Create a mask 0-31 bits wide. *)
   let mask bits =
     if bits < 30 then
-      (one << bits) - 1
+      (one <<< bits) - 1
     else if bits = 30 then
       max_int
     else if bits = 31 then
@@ -173,21 +173,21 @@ module I = struct
     if bits <= 8 then v
     else if bits <= 16 then (
       let shift = bits-8 in
-      let v1 = v >> shift in
-      let v2 = (v land (mask shift)) << 8 in
+      let v1 = v >>> shift in
+      let v2 = ((v land (mask shift)) <<< 8) in
       v2 lor v1
     ) else if bits <= 24 then (
       let shift = bits - 16 in
-      let v1 = v >> (8+shift) in
-      let v2 = ((v >> shift) land ff) << 8 in
-      let v3 = (v land (mask shift)) << 16 in
+      let v1 = v >>> (8+shift) in
+      let v2 = ((v >>> shift) land ff) <<< 8 in
+      let v3 = (v land (mask shift)) <<< 16 in
       v3 lor v2 lor v1
     ) else (
       let shift = bits - 24 in
-      let v1 = v >> (16+shift) in
-      let v2 = ((v >> (8+shift)) land ff) << 8 in
-      let v3 = ((v >> shift) land ff) << 16 in
-      let v4 = (v land (mask shift)) << 24 in
+      let v1 = v >>> (16+shift) in
+      let v2 = ((v >>> (8+shift)) land ff) <<< 8 in
+      let v3 = ((v >>> shift) land ff) <<< 16 in
+      let v4 = (v land (mask shift)) <<< 24 in
       v4 lor v3 lor v2 lor v1
     )
 
@@ -201,7 +201,7 @@ module I = struct
    *)
   let rec map_bytes_be g f v bits =
     if bits >= 8 then (
-      map_bytes_be g f (v >> 8) (bits-8);
+      map_bytes_be g f (v >>> 8) (bits-8);
       let lsb = v land ff in
       f (to_int lsb)
     ) else if bits > 0 then (
@@ -216,7 +216,7 @@ module I = struct
     if bits >= 8 then (
       let lsb = v land ff in
       f (to_int lsb);
-      map_bytes_le g f (v >> 8) (bits-8)
+      map_bytes_le g f (v >>> 8) (bits-8)
     ) else if bits > 0 then (
       let lsb = v land (mask bits) in
       g (to_int lsb) bits
@@ -228,8 +228,8 @@ module I32 = struct
    * as possible to the I module above, to make it easier to track
    * down bugs.
    *)
-  let (<<) = Int32.shift_left
-  let (>>) = Int32.shift_right_logical
+  let (<<<) = Int32.shift_left
+  let (>>>) = Int32.shift_right_logical
   let (land) = Int32.logand
   let (lor) = Int32.logor
   let lnot = Int32.lognot
@@ -244,7 +244,7 @@ module I32 = struct
   (* Create a mask so many bits wide. *)
   let mask bits =
     if bits < 31 then
-      pred (one << bits)
+      pred (one <<< bits)
     else if bits = 31 then
       max_int
     else if bits = 32 then
@@ -257,21 +257,21 @@ module I32 = struct
     if bits <= 8 then v
     else if bits <= 16 then (
       let shift = bits-8 in
-      let v1 = v >> shift in
-      let v2 = (v land (mask shift)) << 8 in
+      let v1 = v >>> shift in
+      let v2 = (v land (mask shift)) <<< 8 in
       v2 lor v1
     ) else if bits <= 24 then (
       let shift = bits - 16 in
-      let v1 = v >> (8+shift) in
-      let v2 = ((v >> shift) land ff) << 8 in
-      let v3 = (v land (mask shift)) << 16 in
+      let v1 = v >>> (8+shift) in
+      let v2 = ((v >>> shift) land ff) <<< 8 in
+      let v3 = (v land (mask shift)) <<< 16 in
       v3 lor v2 lor v1
     ) else (
       let shift = bits - 24 in
-      let v1 = v >> (16+shift) in
-      let v2 = ((v >> (8+shift)) land ff) << 8 in
-      let v3 = ((v >> shift) land ff) << 16 in
-      let v4 = (v land (mask shift)) << 24 in
+      let v1 = v >>> (16+shift) in
+      let v2 = ((v >>> (8+shift)) land ff) <<< 8 in
+      let v3 = ((v >>> shift) land ff) <<< 16 in
+      let v4 = (v land (mask shift)) <<< 24 in
       v4 lor v3 lor v2 lor v1
     )
 
@@ -285,7 +285,7 @@ module I32 = struct
    *)
   let rec map_bytes_be g f v bits =
     if bits >= 8 then (
-      map_bytes_be g f (v >> 8) (bits-8);
+      map_bytes_be g f (v >>> 8) (bits-8);
       let lsb = v land ff in
       f (to_int lsb)
     ) else if bits > 0 then (
@@ -300,7 +300,7 @@ module I32 = struct
     if bits >= 8 then (
       let lsb = v land ff in
       f (to_int lsb);
-      map_bytes_le g f (v >> 8) (bits-8)
+      map_bytes_le g f (v >>> 8) (bits-8)
     ) else if bits > 0 then (
       let lsb = v land (mask bits) in
       g (to_int lsb) bits
@@ -312,8 +312,8 @@ module I64 = struct
    * as possible to the I/I32 modules above, to make it easier to track
    * down bugs.
    *)
-  let (<<) = Int64.shift_left
-  let (>>) = Int64.shift_right_logical
+  let (<<<) = Int64.shift_left
+  let (>>>) = Int64.shift_right_logical
   let (land) = Int64.logand
   let (lor) = Int64.logor
   let lnot = Int64.lognot
@@ -328,7 +328,7 @@ module I64 = struct
   (* Create a mask so many bits wide. *)
   let mask bits =
     if bits < 63 then
-      pred (one << bits)
+      pred (one <<< bits)
     else if bits = 63 then
       max_int
     else if bits = 64 then
@@ -349,7 +349,7 @@ module I64 = struct
    *)
   let rec map_bytes_be g f v bits =
     if bits >= 8 then (
-      map_bytes_be g f (v >> 8) (bits-8);
+      map_bytes_be g f (v >>> 8) (bits-8);
       let lsb = v land ff in
       f (to_int lsb)
     ) else if bits > 0 then (
@@ -364,7 +364,7 @@ module I64 = struct
     if bits >= 8 then (
       let lsb = v land ff in
       f (to_int lsb);
-      map_bytes_le g f (v >> 8) (bits-8)
+      map_bytes_le g f (v >>> 8) (bits-8)
     ) else if bits > 0 then (
       let lsb = v land (mask bits) in
       g (to_int lsb) bits
index 8fbe59c..74174db 100644 (file)
@@ -25,6 +25,8 @@ OCAMLMKLIB    = @OCAMLMKLIB@
 OCAMLDOC       = @OCAMLDOC@
 INSTALL                = @INSTALL@
 
+enable_coverage = @enable_coverage@
+
 OCAMLCFLAGS    = -g
 OCAMLCPACKAGES = -package unix,str,extlib,cil -I +camlp4 -I ..
 OCAMLCLIBS     = $(OCAMLCPACKAGES) camlp4lib.cma -linkpkg ../bitstring.cma ../bitstring_persistent.cma
@@ -32,6 +34,11 @@ OCAMLOPTFLAGS        =
 OCAMLOPTPACKAGES = $(OCAMLCPACKAGES)
 OCAMLOPTLIBS   = $(OCAMLOPTPACKAGES) camlp4lib.cmxa -linkpkg ../bitstring.cmxa ../bitstring_persistent.cmxa
 
+ifneq ($(enable_coverage),no)
+OCAMLCLIBS     := -I +bisect bisect.cma $(OCAMLCLIBS)
+OCAMLOPTLIBS   := -I +bisect bisect.cmxa $(OCAMLOPTLIBS)
+endif
+
 PP             = -pp "camlp4o -I .. bitstring.cma bitstring_persistent.cma pa_bitstring.cmo"
 
 OCAMLDOCFLAGS  = -html -sort
index c6d2ac7..4a480d3 100644 (file)
@@ -74,10 +74,26 @@ AC_SUBST(pkg_cil)
 
 dnl Check for /usr/bin/time and get full path.
 AC_PATH_PROG(TIME,time,no)
+if test "x$TIME" = "xno"; then
+    AC_MSG_ERROR(['time' command not found])
+fi
 
-dnl Check for gprof.
+dnl Check for gprof (optional).
 AC_CHECK_PROG(GPROF,gprof,gprof,no)
 
+dnl Check for ocaml-bisect (optional) and --enable-coverage.
+AC_CHECK_PROG(BISECT_REPORT,bisect-report,bisect-report,no)
+AC_ARG_ENABLE([coverage],
+    [AS_HELP_STRING([--enable-coverage],
+       [add code coverage information (slow) @<:@default=no@:>@])],
+    [],
+    [enable_coverage=no])
+
+if test "x$enable_coverage" != "xno" -a "x$BISECT_REPORT" = "xno"; then
+    AC_MSG_ERROR([You must install ocaml-bisect package to get code coverage])
+fi
+AC_SUBST(enable_coverage)
+
 dnl Produce output files.
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_FILES([Makefile META bitstring_config.ml cil-tools/Makefile])
diff --git a/coverage-report/file0000.html b/coverage-report/file0000.html
new file mode 100644 (file)
index 0000000..80eba44
--- /dev/null
@@ -0,0 +1,64 @@
+<html>
+  <head>
+    <title>Bisect report</title>
+    <link rel="stylesheet" type="text/css" href="style.css">
+  </head>
+  <body>
+    <h3>File: bitstring_config.ml (<a href="index.html">return to index</a>)</h3>
+    <hr class="codeSep"/>
+    <h4>Statistics:</h4>
+    <table class="simple">
+      <tr><th>kind</th><th width="16px">&nbsp;</th><th>coverage</th></tr>
+      <tr><td>binding</td><td width="16px">&nbsp;</td><td>4 / 4 (100 %)</td></tr>
+      <tr><td>sequence</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>for</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>if/then</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>try</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>while</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>match/function</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>class expression</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>class initializer</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>class method</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>class value</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>toplevel expression</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+    </table>
+    <hr class="codeSep"/>
+    <h4>Source:</h4>
+    <code>
+      <div class="lineNone">000001| (*&nbsp;Bitstring&nbsp;library.</div>
+      <div class="lineNone">000002| &nbsp;*&nbsp;Copyright&nbsp;(C)&nbsp;2008&nbsp;Red&nbsp;Hat&nbsp;Inc.,&nbsp;Richard&nbsp;W.M.&nbsp;Jones</div>
+      <div class="lineNone">000003| &nbsp;*</div>
+      <div class="lineNone">000004| &nbsp;*&nbsp;bitstring_config.ml.&nbsp;&nbsp;Generated&nbsp;from&nbsp;bitstring_config.ml.in&nbsp;by&nbsp;configure.</div>
+      <div class="lineNone">000005| &nbsp;*</div>
+      <div class="lineNone">000006| &nbsp;*&nbsp;This&nbsp;library&nbsp;is&nbsp;free&nbsp;software;&nbsp;you&nbsp;can&nbsp;redistribute&nbsp;it&nbsp;and/or</div>
+      <div class="lineNone">000007| &nbsp;*&nbsp;modify&nbsp;it&nbsp;under&nbsp;the&nbsp;terms&nbsp;of&nbsp;the&nbsp;GNU&nbsp;Lesser&nbsp;General&nbsp;Public</div>
+      <div class="lineNone">000008| &nbsp;*&nbsp;License&nbsp;as&nbsp;published&nbsp;by&nbsp;the&nbsp;Free&nbsp;Software&nbsp;Foundation;&nbsp;either</div>
+      <div class="lineNone">000009| &nbsp;*&nbsp;version&nbsp;2&nbsp;of&nbsp;the&nbsp;License,&nbsp;or&nbsp;(at&nbsp;your&nbsp;option)&nbsp;any&nbsp;later&nbsp;version,</div>
+      <div class="lineNone">000010| &nbsp;*&nbsp;with&nbsp;the&nbsp;OCaml&nbsp;linking&nbsp;exception&nbsp;described&nbsp;in&nbsp;COPYING.LIB.</div>
+      <div class="lineNone">000011| &nbsp;*</div>
+      <div class="lineNone">000012| &nbsp;*&nbsp;This&nbsp;library&nbsp;is&nbsp;distributed&nbsp;in&nbsp;the&nbsp;hope&nbsp;that&nbsp;it&nbsp;will&nbsp;be&nbsp;useful,</div>
+      <div class="lineNone">000013| &nbsp;*&nbsp;but&nbsp;WITHOUT&nbsp;ANY&nbsp;WARRANTY;&nbsp;without&nbsp;even&nbsp;the&nbsp;implied&nbsp;warranty&nbsp;of</div>
+      <div class="lineNone">000014| &nbsp;*&nbsp;MERCHANTABILITY&nbsp;or&nbsp;FITNESS&nbsp;FOR&nbsp;A&nbsp;PARTICULAR&nbsp;PURPOSE.&nbsp;&nbsp;See&nbsp;the&nbsp;GNU</div>
+      <div class="lineNone">000015| &nbsp;*&nbsp;Lesser&nbsp;General&nbsp;Public&nbsp;License&nbsp;for&nbsp;more&nbsp;details.</div>
+      <div class="lineNone">000016| &nbsp;*</div>
+      <div class="lineNone">000017| &nbsp;*&nbsp;You&nbsp;should&nbsp;have&nbsp;received&nbsp;a&nbsp;copy&nbsp;of&nbsp;the&nbsp;GNU&nbsp;Lesser&nbsp;General&nbsp;Public</div>
+      <div class="lineNone">000018| &nbsp;*&nbsp;License&nbsp;along&nbsp;with&nbsp;this&nbsp;library;&nbsp;if&nbsp;not,&nbsp;write&nbsp;to&nbsp;the&nbsp;Free&nbsp;Software</div>
+      <div class="lineNone">000019| &nbsp;*&nbsp;Foundation,&nbsp;Inc.,&nbsp;51&nbsp;Franklin&nbsp;Street,&nbsp;Fifth&nbsp;Floor,&nbsp;Boston,&nbsp;MA&nbsp;02110-1301&nbsp;USA</div>
+      <div class="lineNone">000020| &nbsp;*</div>
+      <div class="lineNone">000021| &nbsp;*&nbsp;$Id:&nbsp;bitstring_config.ml.in&nbsp;142&nbsp;2008-07-17&nbsp;15:45:56Z&nbsp;richard.wm.jones&nbsp;$</div>
+      <div class="lineNone">000022| &nbsp;*)</div>
+      <div class="lineNone">000023| &nbsp;</div>
+      <div class="lineNone">000024| (*&nbsp;This&nbsp;file&nbsp;contains&nbsp;general&nbsp;configuration&nbsp;settings,&nbsp;set&nbsp;by&nbsp;the</div>
+      <div class="lineNone">000025| &nbsp;*&nbsp;configure&nbsp;script.</div>
+      <div class="lineNone">000026| &nbsp;*)</div>
+      <div class="lineNone">000027| &nbsp;</div>
+      <div class="lineAllVisited">000028| let&nbsp;nativeendian&nbsp;=&nbsp;(*[28]*)Bitstring_types.LittleEndian</div>
+      <div class="lineNone">000029| &nbsp;</div>
+      <div class="lineAllVisited">000030| let&nbsp;package&nbsp;=&nbsp;(*[28]*)&quot;ocaml-bitstring&quot;</div>
+      <div class="lineAllVisited">000031| let&nbsp;version&nbsp;=&nbsp;(*[28]*)&quot;1.9.7&quot;</div>
+      <div class="lineAllVisited">000032| let&nbsp;ocamllibdir&nbsp;=&nbsp;(*[28]*)&quot;/usr/lib/ocaml&quot;</div>
+    </code>
+    <hr class="codeSep"/>
+    <p class="footer">Generated by <a href="http://bisect.x9c.fr">Bisect</a> on 2008-08-26 10:36:20</p>
+  </body>
+</html>
diff --git a/coverage-report/file0001.html b/coverage-report/file0001.html
new file mode 100644 (file)
index 0000000..1f54bc0
--- /dev/null
@@ -0,0 +1,1136 @@
+<html>
+  <head>
+    <title>Bisect report</title>
+    <link rel="stylesheet" type="text/css" href="style.css">
+  </head>
+  <body>
+    <h3>File: bitstring.ml (<a href="index.html">return to index</a>)</h3>
+    <hr class="codeSep"/>
+    <h4>Statistics:</h4>
+    <table class="simple">
+      <tr><th>kind</th><th width="16px">&nbsp;</th><th>coverage</th></tr>
+      <tr><td>binding</td><td width="16px">&nbsp;</td><td>119 / 231 (51 %)</td></tr>
+      <tr><td>sequence</td><td width="16px">&nbsp;</td><td>37 / 93 (39 %)</td></tr>
+      <tr><td>for</td><td width="16px">&nbsp;</td><td>3 / 5 (60 %)</td></tr>
+      <tr><td>if/then</td><td width="16px">&nbsp;</td><td>72 / 163 (44 %)</td></tr>
+      <tr><td>try</td><td width="16px">&nbsp;</td><td>0 / 2 (0 %)</td></tr>
+      <tr><td>while</td><td width="16px">&nbsp;</td><td>0 / 3 (0 %)</td></tr>
+      <tr><td>match/function</td><td width="16px">&nbsp;</td><td>41 / 77 (53 %)</td></tr>
+      <tr><td>class expression</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>class initializer</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>class method</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>class value</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>toplevel expression</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+    </table>
+    <hr class="codeSep"/>
+    <h4>Source:</h4>
+    <code>
+      <div class="lineNone">000001| (*&nbsp;Bitstring&nbsp;library.</div>
+      <div class="lineNone">000002| &nbsp;*&nbsp;Copyright&nbsp;(C)&nbsp;2008&nbsp;Red&nbsp;Hat&nbsp;Inc.,&nbsp;Richard&nbsp;W.M.&nbsp;Jones</div>
+      <div class="lineNone">000003| &nbsp;*</div>
+      <div class="lineNone">000004| &nbsp;*&nbsp;This&nbsp;library&nbsp;is&nbsp;free&nbsp;software;&nbsp;you&nbsp;can&nbsp;redistribute&nbsp;it&nbsp;and/or</div>
+      <div class="lineNone">000005| &nbsp;*&nbsp;modify&nbsp;it&nbsp;under&nbsp;the&nbsp;terms&nbsp;of&nbsp;the&nbsp;GNU&nbsp;Lesser&nbsp;General&nbsp;Public</div>
+      <div class="lineNone">000006| &nbsp;*&nbsp;License&nbsp;as&nbsp;published&nbsp;by&nbsp;the&nbsp;Free&nbsp;Software&nbsp;Foundation;&nbsp;either</div>
+      <div class="lineNone">000007| &nbsp;*&nbsp;version&nbsp;2&nbsp;of&nbsp;the&nbsp;License,&nbsp;or&nbsp;(at&nbsp;your&nbsp;option)&nbsp;any&nbsp;later&nbsp;version,</div>
+      <div class="lineNone">000008| &nbsp;*&nbsp;with&nbsp;the&nbsp;OCaml&nbsp;linking&nbsp;exception&nbsp;described&nbsp;in&nbsp;COPYING.LIB.</div>
+      <div class="lineNone">000009| &nbsp;*</div>
+      <div class="lineNone">000010| &nbsp;*&nbsp;This&nbsp;library&nbsp;is&nbsp;distributed&nbsp;in&nbsp;the&nbsp;hope&nbsp;that&nbsp;it&nbsp;will&nbsp;be&nbsp;useful,</div>
+      <div class="lineNone">000011| &nbsp;*&nbsp;but&nbsp;WITHOUT&nbsp;ANY&nbsp;WARRANTY;&nbsp;without&nbsp;even&nbsp;the&nbsp;implied&nbsp;warranty&nbsp;of</div>
+      <div class="lineNone">000012| &nbsp;*&nbsp;MERCHANTABILITY&nbsp;or&nbsp;FITNESS&nbsp;FOR&nbsp;A&nbsp;PARTICULAR&nbsp;PURPOSE.&nbsp;&nbsp;See&nbsp;the&nbsp;GNU</div>
+      <div class="lineNone">000013| &nbsp;*&nbsp;Lesser&nbsp;General&nbsp;Public&nbsp;License&nbsp;for&nbsp;more&nbsp;details.</div>
+      <div class="lineNone">000014| &nbsp;*</div>
+      <div class="lineNone">000015| &nbsp;*&nbsp;You&nbsp;should&nbsp;have&nbsp;received&nbsp;a&nbsp;copy&nbsp;of&nbsp;the&nbsp;GNU&nbsp;Lesser&nbsp;General&nbsp;Public</div>
+      <div class="lineNone">000016| &nbsp;*&nbsp;License&nbsp;along&nbsp;with&nbsp;this&nbsp;library;&nbsp;if&nbsp;not,&nbsp;write&nbsp;to&nbsp;the&nbsp;Free&nbsp;Software</div>
+      <div class="lineNone">000017| &nbsp;*&nbsp;Foundation,&nbsp;Inc.,&nbsp;51&nbsp;Franklin&nbsp;Street,&nbsp;Fifth&nbsp;Floor,&nbsp;Boston,&nbsp;MA&nbsp;02110-1301&nbsp;USA</div>
+      <div class="lineNone">000018| &nbsp;*</div>
+      <div class="lineNone">000019| &nbsp;*&nbsp;$Id:&nbsp;bitstring.ml&nbsp;153&nbsp;2008-08-26&nbsp;08:24:31Z&nbsp;richard.wm.jones&nbsp;$</div>
+      <div class="lineNone">000020| &nbsp;*)</div>
+      <div class="lineNone">000021| &nbsp;</div>
+      <div class="lineNone">000022| open&nbsp;Printf</div>
+      <div class="lineNone">000023| &nbsp;</div>
+      <div class="lineNone">000024| include&nbsp;Bitstring_types</div>
+      <div class="lineNone">000025| include&nbsp;Bitstring_config</div>
+      <div class="lineNone">000026| &nbsp;</div>
+      <div class="lineNone">000027| (*&nbsp;Enable&nbsp;runtime&nbsp;debug&nbsp;messages.&nbsp;&nbsp;Must&nbsp;also&nbsp;have&nbsp;been&nbsp;enabled</div>
+      <div class="lineNone">000028| &nbsp;*&nbsp;in&nbsp;pa_bitstring.ml.</div>
+      <div class="lineNone">000029| &nbsp;*)</div>
+      <div class="lineAllVisited">000030| let&nbsp;debug&nbsp;=&nbsp;(*[28]*)ref&nbsp;false</div>
+      <div class="lineNone">000031| &nbsp;</div>
+      <div class="lineNone">000032| (*&nbsp;Exceptions.&nbsp;*)</div>
+      <div class="lineNone">000033| exception&nbsp;Construct_failure&nbsp;of&nbsp;string&nbsp;*&nbsp;string&nbsp;*&nbsp;int&nbsp;*&nbsp;int</div>
+      <div class="lineNone">000034| &nbsp;</div>
+      <div class="lineNone">000035| (*&nbsp;A&nbsp;bitstring&nbsp;is&nbsp;simply&nbsp;the&nbsp;data&nbsp;itself&nbsp;(as&nbsp;a&nbsp;string),&nbsp;and&nbsp;the</div>
+      <div class="lineNone">000036| &nbsp;*&nbsp;bitoffset&nbsp;and&nbsp;the&nbsp;bitlength&nbsp;within&nbsp;the&nbsp;string.&nbsp;&nbsp;Note&nbsp;offset/length</div>
+      <div class="lineNone">000037| &nbsp;*&nbsp;are&nbsp;counted&nbsp;in&nbsp;bits,&nbsp;not&nbsp;bytes.</div>
+      <div class="lineNone">000038| &nbsp;*)</div>
+      <div class="lineNone">000039| type&nbsp;bitstring&nbsp;=&nbsp;string&nbsp;*&nbsp;int&nbsp;*&nbsp;int</div>
+      <div class="lineNone">000040| &nbsp;</div>
+      <div class="lineNone">000041| (*&nbsp;Functions&nbsp;to&nbsp;create&nbsp;and&nbsp;load&nbsp;bitstrings.&nbsp;*)</div>
+      <div class="lineAllVisited">000042| let&nbsp;empty_bitstring&nbsp;=&nbsp;(*[28]*)&quot;&quot;,&nbsp;0,&nbsp;0</div>
+      <div class="lineNone">000043| &nbsp;</div>
+      <div class="lineNone">000044| let&nbsp;make_bitstring&nbsp;len&nbsp;c&nbsp;=</div>
+      <div class="lineAllVisited">000045| &nbsp;&nbsp;(*[1197538]*)if&nbsp;len&nbsp;&gt;=&nbsp;0&nbsp;then&nbsp;(*[1197538]*)String.make&nbsp;((len+7)&nbsp;lsr&nbsp;3)&nbsp;c,&nbsp;0,&nbsp;len</div>
+      <div class="lineNone">000046| &nbsp;&nbsp;else</div>
+      <div class="lineAllUnvisited">000047| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)invalid_arg&nbsp;(</div>
+      <div class="lineNone">000048| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf&nbsp;&quot;make_bitstring/create_bitstring:&nbsp;len&nbsp;%d&nbsp;&lt;&nbsp;0&quot;&nbsp;len</div>
+      <div class="lineNone">000049| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">000050| &nbsp;</div>
+      <div class="lineAllVisited">000051| let&nbsp;create_bitstring&nbsp;len&nbsp;=&nbsp;(*[1]*)make_bitstring&nbsp;len&nbsp;'\000'</div>
+      <div class="lineNone">000052| &nbsp;</div>
+      <div class="lineAllVisited">000053| let&nbsp;zeroes_bitstring&nbsp;=&nbsp;(*[28]*)create_bitstring</div>
+      <div class="lineNone">000054| &nbsp;</div>
+      <div class="lineAllVisited">000055| let&nbsp;ones_bitstring&nbsp;len&nbsp;=&nbsp;(*[1197537]*)make_bitstring&nbsp;len&nbsp;'\xff'</div>
+      <div class="lineNone">000056| &nbsp;</div>
+      <div class="lineAllVisited">000057| let&nbsp;bitstring_of_string&nbsp;str&nbsp;=&nbsp;(*[2]*)str,&nbsp;0,&nbsp;String.length&nbsp;str&nbsp;lsl&nbsp;3</div>
+      <div class="lineNone">000058| &nbsp;</div>
+      <div class="lineNone">000059| let&nbsp;bitstring_of_chan&nbsp;chan&nbsp;=</div>
+      <div class="lineAllUnvisited">000060| &nbsp;&nbsp;(*[0]*)let&nbsp;tmpsize&nbsp;=&nbsp;16384&nbsp;in</div>
+      <div class="lineAllUnvisited">000061| &nbsp;&nbsp;(*[0]*)let&nbsp;buf&nbsp;=&nbsp;Buffer.create&nbsp;tmpsize&nbsp;in</div>
+      <div class="lineAllUnvisited">000062| &nbsp;&nbsp;(*[0]*)let&nbsp;tmp&nbsp;=&nbsp;String.create&nbsp;tmpsize&nbsp;in</div>
+      <div class="lineAllUnvisited">000063| &nbsp;&nbsp;(*[0]*)let&nbsp;n&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
+      <div class="lineAllUnvisited">000064| &nbsp;&nbsp;(*[0]*)while&nbsp;(*[0]*)n&nbsp;:=&nbsp;input&nbsp;chan&nbsp;tmp&nbsp;0&nbsp;tmpsize;&nbsp;!(*[0]*)n&nbsp;&gt;&nbsp;0&nbsp;do</div>
+      <div class="lineAllUnvisited">000065| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Buffer.add_substring&nbsp;buf&nbsp;tmp&nbsp;0&nbsp;!n;</div>
+      <div class="lineNone">000066| &nbsp;&nbsp;done;</div>
+      <div class="lineAllUnvisited">000067| &nbsp;&nbsp;(*[0]*)Buffer.contents&nbsp;buf,&nbsp;0,&nbsp;Buffer.length&nbsp;buf&nbsp;lsl&nbsp;3</div>
+      <div class="lineNone">000068| &nbsp;</div>
+      <div class="lineNone">000069| let&nbsp;bitstring_of_chan_max&nbsp;chan&nbsp;max&nbsp;=</div>
+      <div class="lineAllUnvisited">000070| &nbsp;&nbsp;(*[0]*)let&nbsp;tmpsize&nbsp;=&nbsp;16384&nbsp;in</div>
+      <div class="lineAllUnvisited">000071| &nbsp;&nbsp;(*[0]*)let&nbsp;buf&nbsp;=&nbsp;Buffer.create&nbsp;tmpsize&nbsp;in</div>
+      <div class="lineAllUnvisited">000072| &nbsp;&nbsp;(*[0]*)let&nbsp;tmp&nbsp;=&nbsp;String.create&nbsp;tmpsize&nbsp;in</div>
+      <div class="lineAllUnvisited">000073| &nbsp;&nbsp;(*[0]*)let&nbsp;len&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
+      <div class="lineAllUnvisited">000074| &nbsp;&nbsp;(*[0]*)let&nbsp;rec&nbsp;loop&nbsp;()&nbsp;=</div>
+      <div class="lineAllUnvisited">000075| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;!len&nbsp;&lt;&nbsp;max&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000076| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;r&nbsp;=&nbsp;min&nbsp;tmpsize&nbsp;(max&nbsp;-&nbsp;!len)&nbsp;in</div>
+      <div class="lineAllUnvisited">000077| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;n&nbsp;=&nbsp;input&nbsp;chan&nbsp;tmp&nbsp;0&nbsp;r&nbsp;in</div>
+      <div class="lineAllUnvisited">000078| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;n&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000079| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Buffer.add_substring&nbsp;buf&nbsp;tmp&nbsp;0&nbsp;n;</div>
+      <div class="lineAllUnvisited">000080| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)len&nbsp;(*[0]*):=&nbsp;!len&nbsp;+&nbsp;n;</div>
+      <div class="lineAllUnvisited">000081| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)loop&nbsp;()</div>
+      <div class="lineNone">000082| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">000083| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">000084| &nbsp;&nbsp;in</div>
+      <div class="lineAllUnvisited">000085| &nbsp;&nbsp;(*[0]*)loop&nbsp;(*[0]*)();</div>
+      <div class="lineAllUnvisited">000086| &nbsp;&nbsp;(*[0]*)Buffer.contents&nbsp;buf,&nbsp;0,&nbsp;!len&nbsp;lsl&nbsp;3</div>
+      <div class="lineNone">000087| &nbsp;</div>
+      <div class="lineNone">000088| let&nbsp;bitstring_of_file_descr&nbsp;fd&nbsp;=</div>
+      <div class="lineAllUnvisited">000089| &nbsp;&nbsp;(*[0]*)let&nbsp;tmpsize&nbsp;=&nbsp;16384&nbsp;in</div>
+      <div class="lineAllUnvisited">000090| &nbsp;&nbsp;(*[0]*)let&nbsp;buf&nbsp;=&nbsp;Buffer.create&nbsp;tmpsize&nbsp;in</div>
+      <div class="lineAllUnvisited">000091| &nbsp;&nbsp;(*[0]*)let&nbsp;tmp&nbsp;=&nbsp;String.create&nbsp;tmpsize&nbsp;in</div>
+      <div class="lineAllUnvisited">000092| &nbsp;&nbsp;(*[0]*)let&nbsp;n&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
+      <div class="lineAllUnvisited">000093| &nbsp;&nbsp;(*[0]*)while&nbsp;(*[0]*)n&nbsp;:=&nbsp;Unix.read&nbsp;fd&nbsp;tmp&nbsp;0&nbsp;tmpsize;&nbsp;!(*[0]*)n&nbsp;&gt;&nbsp;0&nbsp;do</div>
+      <div class="lineAllUnvisited">000094| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Buffer.add_substring&nbsp;buf&nbsp;tmp&nbsp;0&nbsp;!n;</div>
+      <div class="lineNone">000095| &nbsp;&nbsp;done;</div>
+      <div class="lineAllUnvisited">000096| &nbsp;&nbsp;(*[0]*)Buffer.contents&nbsp;buf,&nbsp;0,&nbsp;Buffer.length&nbsp;buf&nbsp;lsl&nbsp;3</div>
+      <div class="lineNone">000097| &nbsp;</div>
+      <div class="lineNone">000098| let&nbsp;bitstring_of_file_descr_max&nbsp;fd&nbsp;max&nbsp;=</div>
+      <div class="lineAllUnvisited">000099| &nbsp;&nbsp;(*[0]*)let&nbsp;tmpsize&nbsp;=&nbsp;16384&nbsp;in</div>
+      <div class="lineAllUnvisited">000100| &nbsp;&nbsp;(*[0]*)let&nbsp;buf&nbsp;=&nbsp;Buffer.create&nbsp;tmpsize&nbsp;in</div>
+      <div class="lineAllUnvisited">000101| &nbsp;&nbsp;(*[0]*)let&nbsp;tmp&nbsp;=&nbsp;String.create&nbsp;tmpsize&nbsp;in</div>
+      <div class="lineAllUnvisited">000102| &nbsp;&nbsp;(*[0]*)let&nbsp;len&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
+      <div class="lineAllUnvisited">000103| &nbsp;&nbsp;(*[0]*)let&nbsp;rec&nbsp;loop&nbsp;()&nbsp;=</div>
+      <div class="lineAllUnvisited">000104| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;!len&nbsp;&lt;&nbsp;max&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000105| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;r&nbsp;=&nbsp;min&nbsp;tmpsize&nbsp;(max&nbsp;-&nbsp;!len)&nbsp;in</div>
+      <div class="lineAllUnvisited">000106| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;n&nbsp;=&nbsp;Unix.read&nbsp;fd&nbsp;tmp&nbsp;0&nbsp;r&nbsp;in</div>
+      <div class="lineAllUnvisited">000107| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;n&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000108| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Buffer.add_substring&nbsp;buf&nbsp;tmp&nbsp;0&nbsp;n;</div>
+      <div class="lineAllUnvisited">000109| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)len&nbsp;(*[0]*):=&nbsp;!len&nbsp;+&nbsp;n;</div>
+      <div class="lineAllUnvisited">000110| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)loop&nbsp;()</div>
+      <div class="lineNone">000111| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">000112| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">000113| &nbsp;&nbsp;in</div>
+      <div class="lineAllUnvisited">000114| &nbsp;&nbsp;(*[0]*)loop&nbsp;(*[0]*)();</div>
+      <div class="lineAllUnvisited">000115| &nbsp;&nbsp;(*[0]*)Buffer.contents&nbsp;buf,&nbsp;0,&nbsp;!len&nbsp;lsl&nbsp;3</div>
+      <div class="lineNone">000116| &nbsp;</div>
+      <div class="lineNone">000117| let&nbsp;bitstring_of_file&nbsp;fname&nbsp;=</div>
+      <div class="lineAllUnvisited">000118| &nbsp;&nbsp;(*[0]*)let&nbsp;chan&nbsp;=&nbsp;open_in_bin&nbsp;fname&nbsp;in</div>
+      <div class="lineAllUnvisited">000119| &nbsp;&nbsp;(*[0]*)try</div>
+      <div class="lineAllUnvisited">000120| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;bs&nbsp;=&nbsp;bitstring_of_chan&nbsp;chan&nbsp;in</div>
+      <div class="lineAllUnvisited">000121| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)close_in&nbsp;(*[0]*)chan;</div>
+      <div class="lineAllUnvisited">000122| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)bs</div>
+      <div class="lineNone">000123| &nbsp;&nbsp;with&nbsp;exn&nbsp;-&gt;</div>
+      <div class="lineAllUnvisited">000124| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)close_in&nbsp;(*[0]*)chan;</div>
+      <div class="lineAllUnvisited">000125| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)raise&nbsp;exn</div>
+      <div class="lineNone">000126| &nbsp;</div>
+      <div class="lineAllVisited">000127| let&nbsp;bitstring_length&nbsp;(_,&nbsp;_,&nbsp;len)&nbsp;=&nbsp;(*[1523677]*)len</div>
+      <div class="lineNone">000128| &nbsp;</div>
+      <div class="lineNone">000129| let&nbsp;subbitstring&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;off'&nbsp;len'&nbsp;=</div>
+      <div class="lineAllUnvisited">000130| &nbsp;&nbsp;(*[0]*)let&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;off'&nbsp;in</div>
+      <div class="lineAllUnvisited">000131| &nbsp;&nbsp;(*[0]*)if&nbsp;len&nbsp;&lt;&nbsp;off'&nbsp;+&nbsp;len'&nbsp;then&nbsp;(*[0]*)invalid_arg&nbsp;&quot;subbitstring&quot;;</div>
+      <div class="lineAllUnvisited">000132| &nbsp;&nbsp;((*[0]*)data,&nbsp;off,&nbsp;len')</div>
+      <div class="lineNone">000133| &nbsp;</div>
+      <div class="lineNone">000134| let&nbsp;dropbits&nbsp;n&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;=</div>
+      <div class="lineAllVisited">000135| &nbsp;&nbsp;(*[335487]*)let&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;n&nbsp;in</div>
+      <div class="lineAllVisited">000136| &nbsp;&nbsp;(*[335487]*)let&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;n&nbsp;in</div>
+      <div class="lineMixed">000137| &nbsp;&nbsp;(*[335487]*)if&nbsp;len&nbsp;&lt;&nbsp;0&nbsp;then&nbsp;(*[0]*)invalid_arg&nbsp;&quot;dropbits&quot;;</div>
+      <div class="lineAllVisited">000138| &nbsp;&nbsp;((*[335487]*)data,&nbsp;off,&nbsp;len)</div>
+      <div class="lineNone">000139| &nbsp;</div>
+      <div class="lineNone">000140| let&nbsp;takebits&nbsp;n&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;=</div>
+      <div class="lineAllUnvisited">000141| &nbsp;&nbsp;(*[0]*)if&nbsp;len&nbsp;&lt;&nbsp;n&nbsp;then&nbsp;(*[0]*)invalid_arg&nbsp;&quot;takebits&quot;;</div>
+      <div class="lineAllUnvisited">000142| &nbsp;&nbsp;((*[0]*)data,&nbsp;off,&nbsp;n)</div>
+      <div class="lineNone">000143| &nbsp;</div>
+      <div class="lineNone">000144| (*----------------------------------------------------------------------*)</div>
+      <div class="lineNone">000145| (*&nbsp;Bitwise&nbsp;functions.</div>
+      <div class="lineNone">000146| &nbsp;*</div>
+      <div class="lineNone">000147| &nbsp;*&nbsp;We&nbsp;try&nbsp;to&nbsp;isolate&nbsp;all&nbsp;bitwise&nbsp;functions&nbsp;within&nbsp;these&nbsp;modules.</div>
+      <div class="lineNone">000148| &nbsp;*)</div>
+      <div class="lineNone">000149| &nbsp;</div>
+      <div class="lineNone">000150| module&nbsp;I&nbsp;=&nbsp;struct</div>
+      <div class="lineNone">000151| &nbsp;&nbsp;(*&nbsp;Bitwise&nbsp;operations&nbsp;on&nbsp;ints.&nbsp;&nbsp;Note&nbsp;that&nbsp;we&nbsp;assume&nbsp;int&nbsp;&lt;=&nbsp;31&nbsp;bits.&nbsp;*)</div>
+      <div class="lineNone">000152| &nbsp;&nbsp;external&nbsp;(&lt;&lt;&lt;)&nbsp;:&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;%lslint&quot;</div>
+      <div class="lineNone">000153| &nbsp;&nbsp;external&nbsp;(&gt;&gt;&gt;)&nbsp;:&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;%lsrint&quot;</div>
+      <div class="lineNone">000154| &nbsp;&nbsp;external&nbsp;to_int&nbsp;:&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;%identity&quot;</div>
+      <div class="lineAllVisited">000155| &nbsp;&nbsp;let&nbsp;zero&nbsp;=&nbsp;(*[28]*)0</div>
+      <div class="lineAllVisited">000156| &nbsp;&nbsp;let&nbsp;one&nbsp;=&nbsp;(*[28]*)1</div>
+      <div class="lineAllVisited">000157| &nbsp;&nbsp;let&nbsp;minus_one&nbsp;=&nbsp;(*[28]*)-1</div>
+      <div class="lineAllVisited">000158| &nbsp;&nbsp;let&nbsp;ff&nbsp;=&nbsp;(*[28]*)0xff</div>
+      <div class="lineNone">000159| &nbsp;</div>
+      <div class="lineNone">000160| &nbsp;&nbsp;(*&nbsp;Create&nbsp;a&nbsp;mask&nbsp;0-31&nbsp;bits&nbsp;wide.&nbsp;*)</div>
+      <div class="lineNone">000161| &nbsp;&nbsp;let&nbsp;mask&nbsp;bits&nbsp;=</div>
+      <div class="lineAllVisited">000162| &nbsp;&nbsp;&nbsp;&nbsp;(*[2]*)if&nbsp;bits&nbsp;&lt;&nbsp;30&nbsp;then</div>
+      <div class="lineAllVisited">000163| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((*[2]*)one&nbsp;&lt;&lt;&lt;&nbsp;bits)&nbsp;-&nbsp;1</div>
+      <div class="lineAllUnvisited">000164| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;=&nbsp;30&nbsp;then</div>
+      <div class="lineAllUnvisited">000165| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)max_int</div>
+      <div class="lineAllUnvisited">000166| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;=&nbsp;31&nbsp;then</div>
+      <div class="lineAllUnvisited">000167| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)minus_one</div>
+      <div class="lineNone">000168| &nbsp;&nbsp;&nbsp;&nbsp;else</div>
+      <div class="lineAllUnvisited">000169| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)invalid_arg&nbsp;&quot;Bitstring.I.mask&quot;</div>
+      <div class="lineNone">000170| &nbsp;</div>
+      <div class="lineNone">000171| &nbsp;&nbsp;(*&nbsp;Byte&nbsp;swap&nbsp;an&nbsp;int&nbsp;of&nbsp;a&nbsp;given&nbsp;size.&nbsp;*)</div>
+      <div class="lineNone">000172| &nbsp;&nbsp;let&nbsp;byteswap&nbsp;v&nbsp;bits&nbsp;=</div>
+      <div class="lineAllUnvisited">000173| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;bits&nbsp;&lt;=&nbsp;8&nbsp;then&nbsp;(*[0]*)v</div>
+      <div class="lineAllUnvisited">000174| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;&lt;=&nbsp;16&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000175| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;shift&nbsp;=&nbsp;bits-8&nbsp;in</div>
+      <div class="lineAllUnvisited">000176| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;shift&nbsp;in</div>
+      <div class="lineAllUnvisited">000177| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v2&nbsp;=&nbsp;((v&nbsp;land&nbsp;(mask&nbsp;shift))&nbsp;&lt;&lt;&lt;&nbsp;8)&nbsp;in</div>
+      <div class="lineAllUnvisited">000178| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v2&nbsp;(*[0]*)lor&nbsp;v1</div>
+      <div class="lineAllUnvisited">000179| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;&lt;=&nbsp;24&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000180| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;shift&nbsp;=&nbsp;bits&nbsp;-&nbsp;16&nbsp;in</div>
+      <div class="lineAllUnvisited">000181| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;(8+shift)&nbsp;in</div>
+      <div class="lineAllUnvisited">000182| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v2&nbsp;=&nbsp;((v&nbsp;&gt;&gt;&gt;&nbsp;shift)&nbsp;land&nbsp;ff)&nbsp;&lt;&lt;&lt;&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000183| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v3&nbsp;=&nbsp;(v&nbsp;land&nbsp;(mask&nbsp;shift))&nbsp;&lt;&lt;&lt;&nbsp;16&nbsp;in</div>
+      <div class="lineAllUnvisited">000184| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v3&nbsp;lor&nbsp;v2&nbsp;(*[0]*)lor&nbsp;v1</div>
+      <div class="lineNone">000185| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
+      <div class="lineAllUnvisited">000186| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;shift&nbsp;=&nbsp;bits&nbsp;-&nbsp;24&nbsp;in</div>
+      <div class="lineAllUnvisited">000187| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;(16+shift)&nbsp;in</div>
+      <div class="lineAllUnvisited">000188| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v2&nbsp;=&nbsp;((v&nbsp;&gt;&gt;&gt;&nbsp;(8+shift))&nbsp;land&nbsp;ff)&nbsp;&lt;&lt;&lt;&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000189| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v3&nbsp;=&nbsp;((v&nbsp;&gt;&gt;&gt;&nbsp;shift)&nbsp;land&nbsp;ff)&nbsp;&lt;&lt;&lt;&nbsp;16&nbsp;in</div>
+      <div class="lineAllUnvisited">000190| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v4&nbsp;=&nbsp;(v&nbsp;land&nbsp;(mask&nbsp;shift))&nbsp;&lt;&lt;&lt;&nbsp;24&nbsp;in</div>
+      <div class="lineAllUnvisited">000191| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v4&nbsp;lor&nbsp;v3&nbsp;lor&nbsp;v2&nbsp;(*[0]*)lor&nbsp;v1</div>
+      <div class="lineNone">000192| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">000193| &nbsp;</div>
+      <div class="lineNone">000194| &nbsp;&nbsp;(*&nbsp;Check&nbsp;a&nbsp;value&nbsp;is&nbsp;in&nbsp;range&nbsp;0&nbsp;..&nbsp;2^bits-1.&nbsp;*)</div>
+      <div class="lineNone">000195| &nbsp;&nbsp;let&nbsp;range_unsigned&nbsp;v&nbsp;bits&nbsp;=</div>
+      <div class="lineAllVisited">000196| &nbsp;&nbsp;&nbsp;&nbsp;(*[2]*)let&nbsp;mask&nbsp;=&nbsp;lnot&nbsp;(mask&nbsp;bits)&nbsp;in</div>
+      <div class="lineAllVisited">000197| &nbsp;&nbsp;&nbsp;&nbsp;(v&nbsp;(*[2]*)land&nbsp;mask)&nbsp;=&nbsp;zero</div>
+      <div class="lineNone">000198| &nbsp;</div>
+      <div class="lineNone">000199| &nbsp;&nbsp;(*&nbsp;Call&nbsp;function&nbsp;g&nbsp;on&nbsp;the&nbsp;top&nbsp;bits,&nbsp;then&nbsp;f&nbsp;on&nbsp;each&nbsp;full&nbsp;byte</div>
+      <div class="lineNone">000200| &nbsp;&nbsp;&nbsp;*&nbsp;(big&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;top).</div>
+      <div class="lineNone">000201| &nbsp;&nbsp;&nbsp;*)</div>
+      <div class="lineNone">000202| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_be&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
+      <div class="lineAllVisited">000203| &nbsp;&nbsp;&nbsp;&nbsp;(*[6]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
+      <div class="lineAllVisited">000204| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[4]*)map_bytes_be&nbsp;g&nbsp;f&nbsp;(v&nbsp;&gt;&gt;&gt;&nbsp;8)&nbsp;(*[4]*)(bits-8);</div>
+      <div class="lineAllVisited">000205| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[4]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
+      <div class="lineAllVisited">000206| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[4]*)f&nbsp;(to_int&nbsp;lsb)</div>
+      <div class="lineAllVisited">000207| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[2]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000208| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
+      <div class="lineAllUnvisited">000209| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
+      <div class="lineNone">000210| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">000211| &nbsp;</div>
+      <div class="lineNone">000212| &nbsp;&nbsp;(*&nbsp;Call&nbsp;function&nbsp;g&nbsp;on&nbsp;the&nbsp;top&nbsp;bits,&nbsp;then&nbsp;f&nbsp;on&nbsp;each&nbsp;full&nbsp;byte</div>
+      <div class="lineNone">000213| &nbsp;&nbsp;&nbsp;*&nbsp;(little&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;root).</div>
+      <div class="lineNone">000214| &nbsp;&nbsp;&nbsp;*)</div>
+      <div class="lineNone">000215| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_le&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
+      <div class="lineAllUnvisited">000216| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000217| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
+      <div class="lineAllUnvisited">000218| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)f&nbsp;(*[0]*)(to_int&nbsp;lsb);</div>
+      <div class="lineAllUnvisited">000219| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)map_bytes_le&nbsp;g&nbsp;f&nbsp;(v&nbsp;&gt;&gt;&gt;&nbsp;8)&nbsp;(bits-8)</div>
+      <div class="lineAllUnvisited">000220| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000221| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
+      <div class="lineAllUnvisited">000222| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
+      <div class="lineNone">000223| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">000224| end</div>
+      <div class="lineNone">000225| &nbsp;</div>
+      <div class="lineNone">000226| module&nbsp;I32&nbsp;=&nbsp;struct</div>
+      <div class="lineNone">000227| &nbsp;&nbsp;(*&nbsp;Bitwise&nbsp;operations&nbsp;on&nbsp;int32s.&nbsp;&nbsp;Note&nbsp;we&nbsp;try&nbsp;to&nbsp;keep&nbsp;it&nbsp;as&nbsp;similar</div>
+      <div class="lineNone">000228| &nbsp;&nbsp;&nbsp;*&nbsp;as&nbsp;possible&nbsp;to&nbsp;the&nbsp;I&nbsp;module&nbsp;above,&nbsp;to&nbsp;make&nbsp;it&nbsp;easier&nbsp;to&nbsp;track</div>
+      <div class="lineNone">000229| &nbsp;&nbsp;&nbsp;*&nbsp;down&nbsp;bugs.</div>
+      <div class="lineNone">000230| &nbsp;&nbsp;&nbsp;*)</div>
+      <div class="lineAllVisited">000231| &nbsp;&nbsp;let&nbsp;(&lt;&lt;&lt;)&nbsp;=&nbsp;(*[28]*)Int32.shift_left</div>
+      <div class="lineAllVisited">000232| &nbsp;&nbsp;let&nbsp;(&gt;&gt;&gt;)&nbsp;=&nbsp;(*[28]*)Int32.shift_right_logical</div>
+      <div class="lineAllVisited">000233| &nbsp;&nbsp;let&nbsp;(land)&nbsp;=&nbsp;(*[28]*)Int32.logand</div>
+      <div class="lineAllVisited">000234| &nbsp;&nbsp;let&nbsp;(lor)&nbsp;=&nbsp;(*[28]*)Int32.logor</div>
+      <div class="lineAllVisited">000235| &nbsp;&nbsp;let&nbsp;lnot&nbsp;=&nbsp;(*[28]*)Int32.lognot</div>
+      <div class="lineAllVisited">000236| &nbsp;&nbsp;let&nbsp;pred&nbsp;=&nbsp;(*[28]*)Int32.pred</div>
+      <div class="lineAllVisited">000237| &nbsp;&nbsp;let&nbsp;max_int&nbsp;=&nbsp;(*[28]*)Int32.max_int</div>
+      <div class="lineAllVisited">000238| &nbsp;&nbsp;let&nbsp;to_int&nbsp;=&nbsp;(*[28]*)Int32.to_int</div>
+      <div class="lineAllVisited">000239| &nbsp;&nbsp;let&nbsp;zero&nbsp;=&nbsp;(*[28]*)Int32.zero</div>
+      <div class="lineAllVisited">000240| &nbsp;&nbsp;let&nbsp;one&nbsp;=&nbsp;(*[28]*)Int32.one</div>
+      <div class="lineAllVisited">000241| &nbsp;&nbsp;let&nbsp;minus_one&nbsp;=&nbsp;(*[28]*)Int32.minus_one</div>
+      <div class="lineAllVisited">000242| &nbsp;&nbsp;let&nbsp;ff&nbsp;=&nbsp;(*[28]*)0xff_l</div>
+      <div class="lineNone">000243| &nbsp;</div>
+      <div class="lineNone">000244| &nbsp;&nbsp;(*&nbsp;Create&nbsp;a&nbsp;mask&nbsp;so&nbsp;many&nbsp;bits&nbsp;wide.&nbsp;*)</div>
+      <div class="lineNone">000245| &nbsp;&nbsp;let&nbsp;mask&nbsp;bits&nbsp;=</div>
+      <div class="lineAllVisited">000246| &nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)if&nbsp;bits&nbsp;&lt;&nbsp;31&nbsp;then</div>
+      <div class="lineAllVisited">000247| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)pred&nbsp;(one&nbsp;&lt;&lt;&lt;&nbsp;bits)</div>
+      <div class="lineAllUnvisited">000248| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;=&nbsp;31&nbsp;then</div>
+      <div class="lineAllUnvisited">000249| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)max_int</div>
+      <div class="lineAllUnvisited">000250| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;=&nbsp;32&nbsp;then</div>
+      <div class="lineAllUnvisited">000251| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)minus_one</div>
+      <div class="lineNone">000252| &nbsp;&nbsp;&nbsp;&nbsp;else</div>
+      <div class="lineAllUnvisited">000253| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)invalid_arg&nbsp;&quot;Bitstring.I32.mask&quot;</div>
+      <div class="lineNone">000254| &nbsp;</div>
+      <div class="lineNone">000255| &nbsp;&nbsp;(*&nbsp;Byte&nbsp;swap&nbsp;an&nbsp;int&nbsp;of&nbsp;a&nbsp;given&nbsp;size.&nbsp;*)</div>
+      <div class="lineNone">000256| &nbsp;&nbsp;let&nbsp;byteswap&nbsp;v&nbsp;bits&nbsp;=</div>
+      <div class="lineMixed">000257| &nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)if&nbsp;bits&nbsp;&lt;=&nbsp;8&nbsp;then&nbsp;(*[0]*)v</div>
+      <div class="lineAllVisited">000258| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[12]*)if&nbsp;bits&nbsp;&lt;=&nbsp;16&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000259| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;shift&nbsp;=&nbsp;bits-8&nbsp;in</div>
+      <div class="lineAllUnvisited">000260| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;shift&nbsp;in</div>
+      <div class="lineAllUnvisited">000261| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v2&nbsp;=&nbsp;(v&nbsp;land&nbsp;(mask&nbsp;shift))&nbsp;&lt;&lt;&lt;&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000262| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v2&nbsp;(*[0]*)lor&nbsp;v1</div>
+      <div class="lineAllVisited">000263| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[12]*)if&nbsp;bits&nbsp;&lt;=&nbsp;24&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000264| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;shift&nbsp;=&nbsp;bits&nbsp;-&nbsp;16&nbsp;in</div>
+      <div class="lineAllUnvisited">000265| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;(8+shift)&nbsp;in</div>
+      <div class="lineAllUnvisited">000266| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v2&nbsp;=&nbsp;((v&nbsp;&gt;&gt;&gt;&nbsp;shift)&nbsp;land&nbsp;ff)&nbsp;&lt;&lt;&lt;&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000267| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v3&nbsp;=&nbsp;(v&nbsp;land&nbsp;(mask&nbsp;shift))&nbsp;&lt;&lt;&lt;&nbsp;16&nbsp;in</div>
+      <div class="lineAllUnvisited">000268| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v3&nbsp;lor&nbsp;v2&nbsp;(*[0]*)lor&nbsp;v1</div>
+      <div class="lineNone">000269| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
+      <div class="lineAllVisited">000270| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)let&nbsp;shift&nbsp;=&nbsp;bits&nbsp;-&nbsp;24&nbsp;in</div>
+      <div class="lineAllVisited">000271| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;(16+shift)&nbsp;in</div>
+      <div class="lineAllVisited">000272| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)let&nbsp;v2&nbsp;=&nbsp;((v&nbsp;&gt;&gt;&gt;&nbsp;(8+shift))&nbsp;land&nbsp;ff)&nbsp;&lt;&lt;&lt;&nbsp;8&nbsp;in</div>
+      <div class="lineAllVisited">000273| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)let&nbsp;v3&nbsp;=&nbsp;((v&nbsp;&gt;&gt;&gt;&nbsp;shift)&nbsp;land&nbsp;ff)&nbsp;&lt;&lt;&lt;&nbsp;16&nbsp;in</div>
+      <div class="lineAllVisited">000274| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)let&nbsp;v4&nbsp;=&nbsp;(v&nbsp;land&nbsp;(mask&nbsp;shift))&nbsp;&lt;&lt;&lt;&nbsp;24&nbsp;in</div>
+      <div class="lineAllVisited">000275| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v4&nbsp;lor&nbsp;v3&nbsp;lor&nbsp;v2&nbsp;(*[12]*)lor&nbsp;v1</div>
+      <div class="lineNone">000276| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">000277| &nbsp;</div>
+      <div class="lineNone">000278| &nbsp;&nbsp;(*&nbsp;Check&nbsp;a&nbsp;value&nbsp;is&nbsp;in&nbsp;range&nbsp;0&nbsp;..&nbsp;2^bits-1.&nbsp;*)</div>
+      <div class="lineNone">000279| &nbsp;&nbsp;let&nbsp;range_unsigned&nbsp;v&nbsp;bits&nbsp;=</div>
+      <div class="lineAllUnvisited">000280| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;mask&nbsp;=&nbsp;lnot&nbsp;(mask&nbsp;bits)&nbsp;in</div>
+      <div class="lineAllUnvisited">000281| &nbsp;&nbsp;&nbsp;&nbsp;(v&nbsp;(*[0]*)land&nbsp;mask)&nbsp;=&nbsp;zero</div>
+      <div class="lineNone">000282| &nbsp;</div>
+      <div class="lineNone">000283| &nbsp;&nbsp;(*&nbsp;Call&nbsp;function&nbsp;g&nbsp;on&nbsp;the&nbsp;top&nbsp;bits,&nbsp;then&nbsp;f&nbsp;on&nbsp;each&nbsp;full&nbsp;byte</div>
+      <div class="lineNone">000284| &nbsp;&nbsp;&nbsp;*&nbsp;(big&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;top).</div>
+      <div class="lineNone">000285| &nbsp;&nbsp;&nbsp;*)</div>
+      <div class="lineNone">000286| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_be&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
+      <div class="lineAllUnvisited">000287| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000288| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)map_bytes_be&nbsp;g&nbsp;f&nbsp;(v&nbsp;&gt;&gt;&gt;&nbsp;8)&nbsp;(*[0]*)(bits-8);</div>
+      <div class="lineAllUnvisited">000289| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
+      <div class="lineAllUnvisited">000290| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)f&nbsp;(to_int&nbsp;lsb)</div>
+      <div class="lineAllUnvisited">000291| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000292| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
+      <div class="lineAllUnvisited">000293| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
+      <div class="lineNone">000294| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">000295| &nbsp;</div>
+      <div class="lineNone">000296| &nbsp;&nbsp;(*&nbsp;Call&nbsp;function&nbsp;g&nbsp;on&nbsp;the&nbsp;top&nbsp;bits,&nbsp;then&nbsp;f&nbsp;on&nbsp;each&nbsp;full&nbsp;byte</div>
+      <div class="lineNone">000297| &nbsp;&nbsp;&nbsp;*&nbsp;(little&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;root).</div>
+      <div class="lineNone">000298| &nbsp;&nbsp;&nbsp;*)</div>
+      <div class="lineNone">000299| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_le&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
+      <div class="lineAllUnvisited">000300| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000301| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
+      <div class="lineAllUnvisited">000302| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)f&nbsp;(*[0]*)(to_int&nbsp;lsb);</div>
+      <div class="lineAllUnvisited">000303| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)map_bytes_le&nbsp;g&nbsp;f&nbsp;(v&nbsp;&gt;&gt;&gt;&nbsp;8)&nbsp;(bits-8)</div>
+      <div class="lineAllUnvisited">000304| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000305| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
+      <div class="lineAllUnvisited">000306| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
+      <div class="lineNone">000307| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">000308| end</div>
+      <div class="lineNone">000309| &nbsp;</div>
+      <div class="lineNone">000310| module&nbsp;I64&nbsp;=&nbsp;struct</div>
+      <div class="lineNone">000311| &nbsp;&nbsp;(*&nbsp;Bitwise&nbsp;operations&nbsp;on&nbsp;int64s.&nbsp;&nbsp;Note&nbsp;we&nbsp;try&nbsp;to&nbsp;keep&nbsp;it&nbsp;as&nbsp;similar</div>
+      <div class="lineNone">000312| &nbsp;&nbsp;&nbsp;*&nbsp;as&nbsp;possible&nbsp;to&nbsp;the&nbsp;I/I32&nbsp;modules&nbsp;above,&nbsp;to&nbsp;make&nbsp;it&nbsp;easier&nbsp;to&nbsp;track</div>
+      <div class="lineNone">000313| &nbsp;&nbsp;&nbsp;*&nbsp;down&nbsp;bugs.</div>
+      <div class="lineNone">000314| &nbsp;&nbsp;&nbsp;*)</div>
+      <div class="lineAllVisited">000315| &nbsp;&nbsp;let&nbsp;(&lt;&lt;&lt;)&nbsp;=&nbsp;(*[28]*)Int64.shift_left</div>
+      <div class="lineAllVisited">000316| &nbsp;&nbsp;let&nbsp;(&gt;&gt;&gt;)&nbsp;=&nbsp;(*[28]*)Int64.shift_right_logical</div>
+      <div class="lineAllVisited">000317| &nbsp;&nbsp;let&nbsp;(land)&nbsp;=&nbsp;(*[28]*)Int64.logand</div>
+      <div class="lineAllVisited">000318| &nbsp;&nbsp;let&nbsp;(lor)&nbsp;=&nbsp;(*[28]*)Int64.logor</div>
+      <div class="lineAllVisited">000319| &nbsp;&nbsp;let&nbsp;lnot&nbsp;=&nbsp;(*[28]*)Int64.lognot</div>
+      <div class="lineAllVisited">000320| &nbsp;&nbsp;let&nbsp;pred&nbsp;=&nbsp;(*[28]*)Int64.pred</div>
+      <div class="lineAllVisited">000321| &nbsp;&nbsp;let&nbsp;max_int&nbsp;=&nbsp;(*[28]*)Int64.max_int</div>
+      <div class="lineAllVisited">000322| &nbsp;&nbsp;let&nbsp;to_int&nbsp;=&nbsp;(*[28]*)Int64.to_int</div>
+      <div class="lineAllVisited">000323| &nbsp;&nbsp;let&nbsp;zero&nbsp;=&nbsp;(*[28]*)Int64.zero</div>
+      <div class="lineAllVisited">000324| &nbsp;&nbsp;let&nbsp;one&nbsp;=&nbsp;(*[28]*)Int64.one</div>
+      <div class="lineAllVisited">000325| &nbsp;&nbsp;let&nbsp;minus_one&nbsp;=&nbsp;(*[28]*)Int64.minus_one</div>
+      <div class="lineAllVisited">000326| &nbsp;&nbsp;let&nbsp;ff&nbsp;=&nbsp;(*[28]*)0xff_L</div>
+      <div class="lineNone">000327| &nbsp;</div>
+      <div class="lineNone">000328| &nbsp;&nbsp;(*&nbsp;Create&nbsp;a&nbsp;mask&nbsp;so&nbsp;many&nbsp;bits&nbsp;wide.&nbsp;*)</div>
+      <div class="lineNone">000329| &nbsp;&nbsp;let&nbsp;mask&nbsp;bits&nbsp;=</div>
+      <div class="lineAllVisited">000330| &nbsp;&nbsp;&nbsp;&nbsp;(*[669050]*)if&nbsp;bits&nbsp;&lt;&nbsp;63&nbsp;then</div>
+      <div class="lineAllVisited">000331| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[664100]*)pred&nbsp;(one&nbsp;&lt;&lt;&lt;&nbsp;bits)</div>
+      <div class="lineAllVisited">000332| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[4950]*)if&nbsp;bits&nbsp;=&nbsp;63&nbsp;then</div>
+      <div class="lineAllVisited">000333| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[4950]*)max_int</div>
+      <div class="lineAllUnvisited">000334| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;=&nbsp;64&nbsp;then</div>
+      <div class="lineAllUnvisited">000335| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)minus_one</div>
+      <div class="lineNone">000336| &nbsp;&nbsp;&nbsp;&nbsp;else</div>
+      <div class="lineAllUnvisited">000337| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)invalid_arg&nbsp;&quot;Bitstring.I64.mask&quot;</div>
+      <div class="lineNone">000338| &nbsp;</div>
+      <div class="lineNone">000339| &nbsp;&nbsp;(*&nbsp;Byte&nbsp;swap&nbsp;an&nbsp;int&nbsp;of&nbsp;a&nbsp;given&nbsp;size.&nbsp;*)</div>
+      <div class="lineNone">000340| &nbsp;&nbsp;(*&nbsp;let&nbsp;byteswap&nbsp;v&nbsp;bits&nbsp;=&nbsp;*)</div>
+      <div class="lineNone">000341| &nbsp;</div>
+      <div class="lineNone">000342| &nbsp;&nbsp;(*&nbsp;Check&nbsp;a&nbsp;value&nbsp;is&nbsp;in&nbsp;range&nbsp;0&nbsp;..&nbsp;2^bits-1.&nbsp;*)</div>
+      <div class="lineNone">000343| &nbsp;&nbsp;let&nbsp;range_unsigned&nbsp;v&nbsp;bits&nbsp;=</div>
+      <div class="lineAllVisited">000344| &nbsp;&nbsp;&nbsp;&nbsp;(*[351850]*)let&nbsp;mask&nbsp;=&nbsp;lnot&nbsp;(mask&nbsp;bits)&nbsp;in</div>
+      <div class="lineAllVisited">000345| &nbsp;&nbsp;&nbsp;&nbsp;(v&nbsp;(*[351850]*)land&nbsp;mask)&nbsp;=&nbsp;zero</div>
+      <div class="lineNone">000346| &nbsp;</div>
+      <div class="lineNone">000347| &nbsp;&nbsp;(*&nbsp;Call&nbsp;function&nbsp;g&nbsp;on&nbsp;the&nbsp;top&nbsp;bits,&nbsp;then&nbsp;f&nbsp;on&nbsp;each&nbsp;full&nbsp;byte</div>
+      <div class="lineNone">000348| &nbsp;&nbsp;&nbsp;*&nbsp;(big&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;top).</div>
+      <div class="lineNone">000349| &nbsp;&nbsp;&nbsp;*)</div>
+      <div class="lineNone">000350| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_be&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
+      <div class="lineAllVisited">000351| &nbsp;&nbsp;&nbsp;&nbsp;(*[1460650]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
+      <div class="lineAllVisited">000352| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1108800]*)map_bytes_be&nbsp;g&nbsp;f&nbsp;(v&nbsp;&gt;&gt;&gt;&nbsp;8)&nbsp;(*[1108800]*)(bits-8);</div>
+      <div class="lineAllVisited">000353| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1108800]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
+      <div class="lineAllVisited">000354| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1108800]*)f&nbsp;(to_int&nbsp;lsb)</div>
+      <div class="lineAllVisited">000355| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[34650]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllVisited">000356| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[317200]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
+      <div class="lineAllVisited">000357| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[317200]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
+      <div class="lineNone">000358| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">000359| &nbsp;</div>
+      <div class="lineNone">000360| &nbsp;&nbsp;(*&nbsp;Call&nbsp;function&nbsp;g&nbsp;on&nbsp;the&nbsp;top&nbsp;bits,&nbsp;then&nbsp;f&nbsp;on&nbsp;each&nbsp;full&nbsp;byte</div>
+      <div class="lineNone">000361| &nbsp;&nbsp;&nbsp;*&nbsp;(little&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;root).</div>
+      <div class="lineNone">000362| &nbsp;&nbsp;&nbsp;*)</div>
+      <div class="lineNone">000363| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_le&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
+      <div class="lineAllUnvisited">000364| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000365| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
+      <div class="lineAllUnvisited">000366| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)f&nbsp;(*[0]*)(to_int&nbsp;lsb);</div>
+      <div class="lineAllUnvisited">000367| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)map_bytes_le&nbsp;g&nbsp;f&nbsp;(v&nbsp;&gt;&gt;&gt;&nbsp;8)&nbsp;(bits-8)</div>
+      <div class="lineAllUnvisited">000368| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000369| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
+      <div class="lineAllUnvisited">000370| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
+      <div class="lineNone">000371| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">000372| end</div>
+      <div class="lineNone">000373| &nbsp;</div>
+      <div class="lineNone">000374| (*----------------------------------------------------------------------*)</div>
+      <div class="lineNone">000375| (*&nbsp;Extraction&nbsp;functions.</div>
+      <div class="lineNone">000376| &nbsp;*</div>
+      <div class="lineNone">000377| &nbsp;*&nbsp;NB:&nbsp;internal&nbsp;functions,&nbsp;called&nbsp;from&nbsp;the&nbsp;generated&nbsp;macros,&nbsp;and</div>
+      <div class="lineNone">000378| &nbsp;*&nbsp;the&nbsp;parameters&nbsp;should&nbsp;have&nbsp;been&nbsp;checked&nbsp;for&nbsp;sanity&nbsp;already).</div>
+      <div class="lineNone">000379| &nbsp;*)</div>
+      <div class="lineNone">000380| &nbsp;</div>
+      <div class="lineNone">000381| (*&nbsp;Extract&nbsp;and&nbsp;convert&nbsp;to&nbsp;numeric.&nbsp;&nbsp;A&nbsp;single&nbsp;bit&nbsp;is&nbsp;returned&nbsp;as</div>
+      <div class="lineNone">000382| &nbsp;*&nbsp;a&nbsp;boolean.&nbsp;&nbsp;There&nbsp;are&nbsp;no&nbsp;endianness&nbsp;or&nbsp;signedness&nbsp;considerations.</div>
+      <div class="lineNone">000383| &nbsp;*)</div>
+      <div class="lineNone">000384| let&nbsp;extract_bit&nbsp;data&nbsp;off&nbsp;len&nbsp;_&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;final&nbsp;param&nbsp;is&nbsp;always&nbsp;1&nbsp;*)</div>
+      <div class="lineAllVisited">000385| &nbsp;&nbsp;(*[2515152]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
+      <div class="lineAllVisited">000386| &nbsp;&nbsp;(*[2515152]*)let&nbsp;bitmask&nbsp;=&nbsp;1&nbsp;lsl&nbsp;(7&nbsp;-&nbsp;(off&nbsp;land&nbsp;7))&nbsp;in</div>
+      <div class="lineAllVisited">000387| &nbsp;&nbsp;(*[2515152]*)let&nbsp;b&nbsp;=&nbsp;Char.code&nbsp;data.[byteoff]&nbsp;land&nbsp;bitmask&nbsp;&lt;&gt;&nbsp;0&nbsp;in</div>
+      <div class="lineAllVisited">000388| &nbsp;&nbsp;(*[2515152]*)b&nbsp;(*,&nbsp;off+1,&nbsp;len-1*)</div>
+      <div class="lineNone">000389| &nbsp;</div>
+      <div class="lineNone">000390| (*&nbsp;Returns&nbsp;8&nbsp;bit&nbsp;unsigned&nbsp;aligned&nbsp;bytes&nbsp;from&nbsp;the&nbsp;string.</div>
+      <div class="lineNone">000391| &nbsp;*&nbsp;If&nbsp;the&nbsp;string&nbsp;ends&nbsp;then&nbsp;this&nbsp;returns&nbsp;0's.</div>
+      <div class="lineNone">000392| &nbsp;*)</div>
+      <div class="lineNone">000393| let&nbsp;_get_byte&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;=</div>
+      <div class="lineAllVisited">000394| &nbsp;&nbsp;(*[9813846]*)if&nbsp;strlen&nbsp;&gt;&nbsp;byteoff&nbsp;then&nbsp;(*[9247619]*)Char.code&nbsp;data.[byteoff]&nbsp;else&nbsp;(*[566227]*)0</div>
+      <div class="lineNone">000395| let&nbsp;_get_byte32&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;=</div>
+      <div class="lineMixed">000396| &nbsp;&nbsp;(*[72]*)if&nbsp;strlen&nbsp;&gt;&nbsp;byteoff&nbsp;then&nbsp;(*[72]*)Int32.of_int&nbsp;(Char.code&nbsp;data.[byteoff])&nbsp;else&nbsp;(*[0]*)0l</div>
+      <div class="lineNone">000397| let&nbsp;_get_byte64&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;=</div>
+      <div class="lineAllVisited">000398| &nbsp;&nbsp;(*[1626200]*)if&nbsp;strlen&nbsp;&gt;&nbsp;byteoff&nbsp;then&nbsp;(*[1517793]*)Int64.of_int&nbsp;(Char.code&nbsp;data.[byteoff])&nbsp;else&nbsp;(*[108407]*)0L</div>
+      <div class="lineNone">000399| &nbsp;</div>
+      <div class="lineNone">000400| (*&nbsp;Extract&nbsp;[2..8]&nbsp;bits.&nbsp;&nbsp;Because&nbsp;the&nbsp;result&nbsp;fits&nbsp;into&nbsp;a&nbsp;single</div>
+      <div class="lineNone">000401| &nbsp;*&nbsp;byte&nbsp;we&nbsp;don't&nbsp;have&nbsp;to&nbsp;worry&nbsp;about&nbsp;endianness,&nbsp;only&nbsp;signedness.</div>
+      <div class="lineNone">000402| &nbsp;*)</div>
+      <div class="lineNone">000403| let&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
+      <div class="lineAllVisited">000404| &nbsp;&nbsp;(*[5009970]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
+      <div class="lineNone">000405| &nbsp;</div>
+      <div class="lineNone">000406| &nbsp;&nbsp;(*&nbsp;Optimize&nbsp;the&nbsp;common&nbsp;(byte-aligned)&nbsp;case.&nbsp;*)</div>
+      <div class="lineAllVisited">000407| &nbsp;&nbsp;(*[5009970]*)if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllVisited">000408| &nbsp;&nbsp;&nbsp;&nbsp;(*[103047]*)let&nbsp;byte&nbsp;=&nbsp;Char.code&nbsp;data.[byteoff]&nbsp;in</div>
+      <div class="lineAllVisited">000409| &nbsp;&nbsp;&nbsp;&nbsp;byte&nbsp;(*[103047]*)lsr&nbsp;(8&nbsp;-&nbsp;flen)&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
+      <div class="lineNone">000410| &nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
+      <div class="lineNone">000411| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Extract&nbsp;the&nbsp;16&nbsp;bits&nbsp;at&nbsp;byteoff&nbsp;and&nbsp;byteoff+1&nbsp;(note&nbsp;that&nbsp;the</div>
+      <div class="lineNone">000412| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;second&nbsp;byte&nbsp;might&nbsp;not&nbsp;exist&nbsp;in&nbsp;the&nbsp;original&nbsp;string).</div>
+      <div class="lineNone">000413| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</div>
+      <div class="lineAllVisited">000414| &nbsp;&nbsp;&nbsp;&nbsp;(*[4906923]*)let&nbsp;strlen&nbsp;=&nbsp;String.length&nbsp;data&nbsp;in</div>
+      <div class="lineNone">000415| &nbsp;</div>
+      <div class="lineAllVisited">000416| &nbsp;&nbsp;&nbsp;&nbsp;(*[4906923]*)let&nbsp;word&nbsp;=</div>
+      <div class="lineNone">000417| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;lsl&nbsp;8)&nbsp;+</div>
+      <div class="lineNone">000418| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_get_byte&nbsp;data&nbsp;(byteoff+1)&nbsp;strlen&nbsp;in</div>
+      <div class="lineNone">000419| &nbsp;</div>
+      <div class="lineNone">000420| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Mask&nbsp;off&nbsp;the&nbsp;top&nbsp;bits.&nbsp;*)</div>
+      <div class="lineAllVisited">000421| &nbsp;&nbsp;&nbsp;&nbsp;(*[4906923]*)let&nbsp;bitmask&nbsp;=&nbsp;(1&nbsp;lsl&nbsp;(16&nbsp;-&nbsp;(off&nbsp;land&nbsp;7)))&nbsp;-&nbsp;1&nbsp;in</div>
+      <div class="lineAllVisited">000422| &nbsp;&nbsp;&nbsp;&nbsp;(*[4906923]*)let&nbsp;word&nbsp;=&nbsp;word&nbsp;land&nbsp;bitmask&nbsp;in</div>
+      <div class="lineNone">000423| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Shift&nbsp;right&nbsp;to&nbsp;get&nbsp;rid&nbsp;of&nbsp;the&nbsp;bottom&nbsp;bits.&nbsp;*)</div>
+      <div class="lineAllVisited">000424| &nbsp;&nbsp;&nbsp;&nbsp;(*[4906923]*)let&nbsp;shift&nbsp;=&nbsp;16&nbsp;-&nbsp;((off&nbsp;land&nbsp;7)&nbsp;+&nbsp;flen)&nbsp;in</div>
+      <div class="lineAllVisited">000425| &nbsp;&nbsp;&nbsp;&nbsp;(*[4906923]*)let&nbsp;word&nbsp;=&nbsp;word&nbsp;lsr&nbsp;shift&nbsp;in</div>
+      <div class="lineNone">000426| &nbsp;</div>
+      <div class="lineAllVisited">000427| &nbsp;&nbsp;&nbsp;&nbsp;(*[4906923]*)word&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
+      <div class="lineNone">000428| &nbsp;&nbsp;)</div>
+      <div class="lineNone">000429| &nbsp;</div>
+      <div class="lineNone">000430| (*&nbsp;Extract&nbsp;[9..31]&nbsp;bits.&nbsp;&nbsp;We&nbsp;have&nbsp;to&nbsp;consider&nbsp;endianness&nbsp;and&nbsp;signedness.&nbsp;*)</div>
+      <div class="lineNone">000431| let&nbsp;extract_int_be_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
+      <div class="lineAllUnvisited">000432| &nbsp;&nbsp;(*[0]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
+      <div class="lineNone">000433| &nbsp;</div>
+      <div class="lineAllUnvisited">000434| &nbsp;&nbsp;(*[0]*)let&nbsp;strlen&nbsp;=&nbsp;String.length&nbsp;data&nbsp;in</div>
+      <div class="lineNone">000435| &nbsp;</div>
+      <div class="lineAllUnvisited">000436| &nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=</div>
+      <div class="lineNone">000437| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Optimize&nbsp;the&nbsp;common&nbsp;(byte-aligned)&nbsp;case.&nbsp;*)</div>
+      <div class="lineNone">000438| &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000439| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=</div>
+      <div class="lineNone">000440| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;lsl&nbsp;23)&nbsp;+</div>
+      <div class="lineNone">000441| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;(byteoff+1)&nbsp;strlen&nbsp;lsl&nbsp;15)&nbsp;+</div>
+      <div class="lineNone">000442| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;(byteoff+2)&nbsp;strlen&nbsp;lsl&nbsp;7)&nbsp;+</div>
+      <div class="lineNone">000443| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;(byteoff+3)&nbsp;strlen&nbsp;lsr&nbsp;1)&nbsp;in</div>
+      <div class="lineAllUnvisited">000444| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;word&nbsp;(*[0]*)lsr&nbsp;(31&nbsp;-&nbsp;flen)</div>
+      <div class="lineAllUnvisited">000445| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[0]*)if&nbsp;flen&nbsp;&lt;=&nbsp;24&nbsp;then&nbsp;(</div>
+      <div class="lineNone">000446| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Extract&nbsp;the&nbsp;31&nbsp;bits&nbsp;at&nbsp;byteoff&nbsp;..&nbsp;byteoff+3.&nbsp;*)</div>
+      <div class="lineAllUnvisited">000447| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=</div>
+      <div class="lineNone">000448| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;lsl&nbsp;23)&nbsp;+</div>
+      <div class="lineNone">000449| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;(byteoff+1)&nbsp;strlen&nbsp;lsl&nbsp;15)&nbsp;+</div>
+      <div class="lineNone">000450| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;(byteoff+2)&nbsp;strlen&nbsp;lsl&nbsp;7)&nbsp;+</div>
+      <div class="lineNone">000451| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;(byteoff+3)&nbsp;strlen&nbsp;lsr&nbsp;1)&nbsp;in</div>
+      <div class="lineNone">000452| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Mask&nbsp;off&nbsp;the&nbsp;top&nbsp;bits.&nbsp;*)</div>
+      <div class="lineAllUnvisited">000453| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;bitmask&nbsp;=&nbsp;(1&nbsp;lsl&nbsp;(31&nbsp;-&nbsp;(off&nbsp;land&nbsp;7)))&nbsp;-&nbsp;1&nbsp;in</div>
+      <div class="lineAllUnvisited">000454| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=&nbsp;word&nbsp;land&nbsp;bitmask&nbsp;in</div>
+      <div class="lineNone">000455| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Shift&nbsp;right&nbsp;to&nbsp;get&nbsp;rid&nbsp;of&nbsp;the&nbsp;bottom&nbsp;bits.&nbsp;*)</div>
+      <div class="lineAllUnvisited">000456| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;shift&nbsp;=&nbsp;31&nbsp;-&nbsp;((off&nbsp;land&nbsp;7)&nbsp;+&nbsp;flen)&nbsp;in</div>
+      <div class="lineAllUnvisited">000457| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;word&nbsp;(*[0]*)lsr&nbsp;shift</div>
+      <div class="lineNone">000458| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
+      <div class="lineNone">000459| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Extract&nbsp;the&nbsp;next&nbsp;31&nbsp;bits,&nbsp;slow&nbsp;method.&nbsp;*)</div>
+      <div class="lineAllUnvisited">000460| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=</div>
+      <div class="lineNone">000461| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c0&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000462| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000463| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c1&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000464| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000465| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c2&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000466| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000467| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c3&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;7&nbsp;in</div>
+      <div class="lineAllUnvisited">000468| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(c0&nbsp;(*[0]*)lsl&nbsp;23)&nbsp;+&nbsp;(c1&nbsp;lsl&nbsp;15)&nbsp;+&nbsp;(c2&nbsp;lsl&nbsp;7)&nbsp;+&nbsp;c3&nbsp;in</div>
+      <div class="lineAllUnvisited">000469| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;word&nbsp;(*[0]*)lsr&nbsp;(31&nbsp;-&nbsp;flen)</div>
+      <div class="lineNone">000470| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;in</div>
+      <div class="lineAllUnvisited">000471| &nbsp;&nbsp;(*[0]*)word&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
+      <div class="lineNone">000472| &nbsp;</div>
+      <div class="lineNone">000473| let&nbsp;extract_int_le_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
+      <div class="lineAllUnvisited">000474| &nbsp;&nbsp;(*[0]*)let&nbsp;v&nbsp;=&nbsp;extract_int_be_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;in</div>
+      <div class="lineAllUnvisited">000475| &nbsp;&nbsp;(*[0]*)let&nbsp;v&nbsp;=&nbsp;I.byteswap&nbsp;v&nbsp;flen&nbsp;in</div>
+      <div class="lineAllUnvisited">000476| &nbsp;&nbsp;(*[0]*)v</div>
+      <div class="lineNone">000477| &nbsp;</div>
+      <div class="lineNone">000478| let&nbsp;extract_int_ne_unsigned&nbsp;=</div>
+      <div class="lineAllVisited">000479| &nbsp;&nbsp;(*[28]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
+      <div class="lineAllUnvisited">000480| &nbsp;&nbsp;then&nbsp;(*[0]*)extract_int_be_unsigned</div>
+      <div class="lineAllVisited">000481| &nbsp;&nbsp;else&nbsp;(*[28]*)extract_int_le_unsigned</div>
+      <div class="lineNone">000482| &nbsp;</div>
+      <div class="lineNone">000483| let&nbsp;extract_int_ee_unsigned&nbsp;=&nbsp;function</div>
+      <div class="lineAllUnvisited">000484| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int_be_unsigned</div>
+      <div class="lineAllUnvisited">000485| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int_le_unsigned</div>
+      <div class="lineAllUnvisited">000486| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int_ne_unsigned</div>
+      <div class="lineNone">000487| &nbsp;</div>
+      <div class="lineNone">000488| let&nbsp;_make_int32_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;=</div>
+      <div class="lineAllVisited">000489| &nbsp;&nbsp;(*[18]*)Int32.logor</div>
+      <div class="lineNone">000490| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.logor</div>
+      <div class="lineNone">000491| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.logor</div>
+      <div class="lineNone">000492| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c0&nbsp;24)</div>
+      <div class="lineNone">000493| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c1&nbsp;16))</div>
+      <div class="lineNone">000494| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c2&nbsp;8))</div>
+      <div class="lineNone">000495| &nbsp;&nbsp;&nbsp;&nbsp;c3</div>
+      <div class="lineNone">000496| &nbsp;</div>
+      <div class="lineNone">000497| let&nbsp;_make_int32_le&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;=</div>
+      <div class="lineAllUnvisited">000498| &nbsp;&nbsp;(*[0]*)Int32.logor</div>
+      <div class="lineNone">000499| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.logor</div>
+      <div class="lineNone">000500| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.logor</div>
+      <div class="lineNone">000501| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c3&nbsp;24)</div>
+      <div class="lineNone">000502| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c2&nbsp;16))</div>
+      <div class="lineNone">000503| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c1&nbsp;8))</div>
+      <div class="lineNone">000504| &nbsp;&nbsp;&nbsp;&nbsp;c0</div>
+      <div class="lineNone">000505| &nbsp;</div>
+      <div class="lineNone">000506| (*&nbsp;Extract&nbsp;exactly&nbsp;32&nbsp;bits.&nbsp;&nbsp;We&nbsp;have&nbsp;to&nbsp;consider&nbsp;endianness&nbsp;and&nbsp;signedness.&nbsp;*)</div>
+      <div class="lineNone">000507| let&nbsp;extract_int32_be_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
+      <div class="lineAllVisited">000508| &nbsp;&nbsp;(*[18]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
+      <div class="lineNone">000509| &nbsp;</div>
+      <div class="lineAllVisited">000510| &nbsp;&nbsp;(*[18]*)let&nbsp;strlen&nbsp;=&nbsp;String.length&nbsp;data&nbsp;in</div>
+      <div class="lineNone">000511| &nbsp;</div>
+      <div class="lineAllVisited">000512| &nbsp;&nbsp;(*[18]*)let&nbsp;word&nbsp;=</div>
+      <div class="lineNone">000513| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Optimize&nbsp;the&nbsp;common&nbsp;(byte-aligned)&nbsp;case.&nbsp;*)</div>
+      <div class="lineNone">000514| &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllVisited">000515| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[18]*)let&nbsp;word&nbsp;=</div>
+      <div class="lineNone">000516| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c0&nbsp;=&nbsp;_get_byte32&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllVisited">000517| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[18]*)let&nbsp;c1&nbsp;=&nbsp;_get_byte32&nbsp;data&nbsp;(byteoff+1)&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllVisited">000518| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[18]*)let&nbsp;c2&nbsp;=&nbsp;_get_byte32&nbsp;data&nbsp;(byteoff+2)&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllVisited">000519| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[18]*)let&nbsp;c3&nbsp;=&nbsp;_get_byte32&nbsp;data&nbsp;(byteoff+3)&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllVisited">000520| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[18]*)_make_int32_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;in</div>
+      <div class="lineAllVisited">000521| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[18]*)Int32.shift_right_logical&nbsp;word&nbsp;(32&nbsp;-&nbsp;flen)</div>
+      <div class="lineNone">000522| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
+      <div class="lineNone">000523| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Extract&nbsp;the&nbsp;next&nbsp;32&nbsp;bits,&nbsp;slow&nbsp;method.&nbsp;*)</div>
+      <div class="lineAllUnvisited">000524| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=</div>
+      <div class="lineNone">000525| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c0&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000526| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000527| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c1&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000528| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000529| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c2&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000530| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000531| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c3&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000532| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c0&nbsp;=&nbsp;Int32.of_int&nbsp;c0&nbsp;in</div>
+      <div class="lineAllUnvisited">000533| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c1&nbsp;=&nbsp;Int32.of_int&nbsp;c1&nbsp;in</div>
+      <div class="lineAllUnvisited">000534| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c2&nbsp;=&nbsp;Int32.of_int&nbsp;c2&nbsp;in</div>
+      <div class="lineAllUnvisited">000535| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c3&nbsp;=&nbsp;Int32.of_int&nbsp;c3&nbsp;in</div>
+      <div class="lineAllUnvisited">000536| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)_make_int32_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;in</div>
+      <div class="lineAllUnvisited">000537| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Int32.shift_right_logical&nbsp;word&nbsp;(32&nbsp;-&nbsp;flen)</div>
+      <div class="lineNone">000538| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;in</div>
+      <div class="lineAllVisited">000539| &nbsp;&nbsp;(*[18]*)word&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
+      <div class="lineNone">000540| &nbsp;</div>
+      <div class="lineNone">000541| let&nbsp;extract_int32_le_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
+      <div class="lineAllVisited">000542| &nbsp;&nbsp;(*[12]*)let&nbsp;v&nbsp;=&nbsp;extract_int32_be_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;in</div>
+      <div class="lineAllVisited">000543| &nbsp;&nbsp;(*[12]*)let&nbsp;v&nbsp;=&nbsp;I32.byteswap&nbsp;v&nbsp;flen&nbsp;in</div>
+      <div class="lineAllVisited">000544| &nbsp;&nbsp;(*[12]*)v</div>
+      <div class="lineNone">000545| &nbsp;</div>
+      <div class="lineNone">000546| let&nbsp;extract_int32_ne_unsigned&nbsp;=</div>
+      <div class="lineAllVisited">000547| &nbsp;&nbsp;(*[28]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
+      <div class="lineAllUnvisited">000548| &nbsp;&nbsp;then&nbsp;(*[0]*)extract_int32_be_unsigned</div>
+      <div class="lineAllVisited">000549| &nbsp;&nbsp;else&nbsp;(*[28]*)extract_int32_le_unsigned</div>
+      <div class="lineNone">000550| &nbsp;</div>
+      <div class="lineNone">000551| let&nbsp;extract_int32_ee_unsigned&nbsp;=&nbsp;function</div>
+      <div class="lineAllVisited">000552| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[6]*)extract_int32_be_unsigned</div>
+      <div class="lineAllVisited">000553| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*[6]*)extract_int32_le_unsigned</div>
+      <div class="lineAllVisited">000554| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[6]*)extract_int32_ne_unsigned</div>
+      <div class="lineNone">000555| &nbsp;</div>
+      <div class="lineNone">000556| let&nbsp;_make_int64_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;=</div>
+      <div class="lineAllVisited">000557| &nbsp;&nbsp;(*[657463]*)Int64.logor</div>
+      <div class="lineNone">000558| &nbsp;&nbsp;&nbsp;&nbsp;(Int64.logor</div>
+      <div class="lineNone">000559| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.logor</div>
+      <div class="lineNone">000560| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.logor</div>
+      <div class="lineNone">000561| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.logor</div>
+      <div class="lineNone">000562| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.logor</div>
+      <div class="lineNone">000563| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.logor</div>
+      <div class="lineNone">000564| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.shift_left&nbsp;c0&nbsp;56)</div>
+      <div class="lineNone">000565| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.shift_left&nbsp;c1&nbsp;48))</div>
+      <div class="lineNone">000566| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.shift_left&nbsp;c2&nbsp;40))</div>
+      <div class="lineNone">000567| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.shift_left&nbsp;c3&nbsp;32))</div>
+      <div class="lineNone">000568| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.shift_left&nbsp;c4&nbsp;24))</div>
+      <div class="lineNone">000569| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.shift_left&nbsp;c5&nbsp;16))</div>
+      <div class="lineNone">000570| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.shift_left&nbsp;c6&nbsp;8))</div>
+      <div class="lineNone">000571| &nbsp;&nbsp;&nbsp;&nbsp;c7</div>
+      <div class="lineNone">000572| &nbsp;</div>
+      <div class="lineNone">000573| let&nbsp;_make_int64_le&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;=</div>
+      <div class="lineAllUnvisited">000574| &nbsp;&nbsp;(*[0]*)_make_int64_be&nbsp;c7&nbsp;c6&nbsp;c5&nbsp;c4&nbsp;c3&nbsp;c2&nbsp;c1&nbsp;c0</div>
+      <div class="lineNone">000575| &nbsp;</div>
+      <div class="lineNone">000576| (*&nbsp;Extract&nbsp;[1..64]&nbsp;bits.&nbsp;&nbsp;We&nbsp;have&nbsp;to&nbsp;consider&nbsp;endianness&nbsp;and&nbsp;signedness.&nbsp;*)</div>
+      <div class="lineNone">000577| let&nbsp;extract_int64_be_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
+      <div class="lineAllVisited">000578| &nbsp;&nbsp;(*[657463]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
+      <div class="lineNone">000579| &nbsp;</div>
+      <div class="lineAllVisited">000580| &nbsp;&nbsp;(*[657463]*)let&nbsp;strlen&nbsp;=&nbsp;String.length&nbsp;data&nbsp;in</div>
+      <div class="lineNone">000581| &nbsp;</div>
+      <div class="lineAllVisited">000582| &nbsp;&nbsp;(*[657463]*)let&nbsp;word&nbsp;=</div>
+      <div class="lineNone">000583| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Optimize&nbsp;the&nbsp;common&nbsp;(byte-aligned)&nbsp;case.&nbsp;*)</div>
+      <div class="lineNone">000584| &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllVisited">000585| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)let&nbsp;word&nbsp;=</div>
+      <div class="lineNone">000586| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c0&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllVisited">000587| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)let&nbsp;c1&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+1)&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllVisited">000588| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)let&nbsp;c2&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+2)&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllVisited">000589| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)let&nbsp;c3&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+3)&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllVisited">000590| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)let&nbsp;c4&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+4)&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllVisited">000591| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)let&nbsp;c5&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+5)&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllVisited">000592| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)let&nbsp;c6&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+6)&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllVisited">000593| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)let&nbsp;c7&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+7)&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllVisited">000594| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)_make_int64_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;in</div>
+      <div class="lineAllVisited">000595| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)Int64.shift_right_logical&nbsp;word&nbsp;(64&nbsp;-&nbsp;flen)</div>
+      <div class="lineNone">000596| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
+      <div class="lineNone">000597| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Extract&nbsp;the&nbsp;next&nbsp;64&nbsp;bits,&nbsp;slow&nbsp;method.&nbsp;*)</div>
+      <div class="lineAllVisited">000598| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;word&nbsp;=</div>
+      <div class="lineNone">000599| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c0&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000600| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllVisited">000601| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c1&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000602| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllVisited">000603| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c2&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000604| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllVisited">000605| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c3&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000606| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllVisited">000607| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c4&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000608| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllVisited">000609| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c5&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000610| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllVisited">000611| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c6&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000612| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllVisited">000613| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c7&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8&nbsp;in</div>
+      <div class="lineAllVisited">000614| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c0&nbsp;=&nbsp;Int64.of_int&nbsp;c0&nbsp;in</div>
+      <div class="lineAllVisited">000615| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c1&nbsp;=&nbsp;Int64.of_int&nbsp;c1&nbsp;in</div>
+      <div class="lineAllVisited">000616| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c2&nbsp;=&nbsp;Int64.of_int&nbsp;c2&nbsp;in</div>
+      <div class="lineAllVisited">000617| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c3&nbsp;=&nbsp;Int64.of_int&nbsp;c3&nbsp;in</div>
+      <div class="lineAllVisited">000618| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c4&nbsp;=&nbsp;Int64.of_int&nbsp;c4&nbsp;in</div>
+      <div class="lineAllVisited">000619| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c5&nbsp;=&nbsp;Int64.of_int&nbsp;c5&nbsp;in</div>
+      <div class="lineAllVisited">000620| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c6&nbsp;=&nbsp;Int64.of_int&nbsp;c6&nbsp;in</div>
+      <div class="lineAllVisited">000621| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c7&nbsp;=&nbsp;Int64.of_int&nbsp;c7&nbsp;in</div>
+      <div class="lineAllVisited">000622| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)_make_int64_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;in</div>
+      <div class="lineAllVisited">000623| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)Int64.shift_right_logical&nbsp;word&nbsp;(64&nbsp;-&nbsp;flen)</div>
+      <div class="lineNone">000624| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;in</div>
+      <div class="lineAllVisited">000625| &nbsp;&nbsp;(*[657463]*)word&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
+      <div class="lineNone">000626| &nbsp;</div>
+      <div class="lineNone">000627| let&nbsp;extract_int64_le_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
+      <div class="lineAllUnvisited">000628| &nbsp;&nbsp;(*[0]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
+      <div class="lineNone">000629| &nbsp;</div>
+      <div class="lineAllUnvisited">000630| &nbsp;&nbsp;(*[0]*)let&nbsp;strlen&nbsp;=&nbsp;String.length&nbsp;data&nbsp;in</div>
+      <div class="lineNone">000631| &nbsp;</div>
+      <div class="lineAllUnvisited">000632| &nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=</div>
+      <div class="lineNone">000633| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Optimize&nbsp;the&nbsp;common&nbsp;(byte-aligned)&nbsp;case.&nbsp;*)</div>
+      <div class="lineNone">000634| &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">000635| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=</div>
+      <div class="lineNone">000636| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c0&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllUnvisited">000637| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c1&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+1)&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllUnvisited">000638| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c2&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+2)&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllUnvisited">000639| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c3&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+3)&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllUnvisited">000640| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c4&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+4)&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllUnvisited">000641| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c5&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+5)&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllUnvisited">000642| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c6&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+6)&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllUnvisited">000643| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c7&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+7)&nbsp;strlen&nbsp;in</div>
+      <div class="lineAllUnvisited">000644| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)_make_int64_le&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;in</div>
+      <div class="lineAllUnvisited">000645| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Int64.logand&nbsp;word&nbsp;(I64.mask&nbsp;flen)</div>
+      <div class="lineNone">000646| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
+      <div class="lineNone">000647| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Extract&nbsp;the&nbsp;next&nbsp;64&nbsp;bits,&nbsp;slow&nbsp;method.&nbsp;*)</div>
+      <div class="lineAllUnvisited">000648| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=</div>
+      <div class="lineNone">000649| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c0&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000650| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000651| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c1&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000652| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000653| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c2&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000654| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000655| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c3&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000656| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000657| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c4&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000658| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000659| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c5&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000660| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000661| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c6&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">000662| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000663| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c7&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">000664| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c0&nbsp;=&nbsp;Int64.of_int&nbsp;c0&nbsp;in</div>
+      <div class="lineAllUnvisited">000665| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c1&nbsp;=&nbsp;Int64.of_int&nbsp;c1&nbsp;in</div>
+      <div class="lineAllUnvisited">000666| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c2&nbsp;=&nbsp;Int64.of_int&nbsp;c2&nbsp;in</div>
+      <div class="lineAllUnvisited">000667| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c3&nbsp;=&nbsp;Int64.of_int&nbsp;c3&nbsp;in</div>
+      <div class="lineAllUnvisited">000668| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c4&nbsp;=&nbsp;Int64.of_int&nbsp;c4&nbsp;in</div>
+      <div class="lineAllUnvisited">000669| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c5&nbsp;=&nbsp;Int64.of_int&nbsp;c5&nbsp;in</div>
+      <div class="lineAllUnvisited">000670| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c6&nbsp;=&nbsp;Int64.of_int&nbsp;c6&nbsp;in</div>
+      <div class="lineAllUnvisited">000671| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c7&nbsp;=&nbsp;Int64.of_int&nbsp;c7&nbsp;in</div>
+      <div class="lineAllUnvisited">000672| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)_make_int64_le&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;in</div>
+      <div class="lineAllUnvisited">000673| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Int64.logand&nbsp;word&nbsp;(I64.mask&nbsp;flen)</div>
+      <div class="lineNone">000674| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;in</div>
+      <div class="lineAllUnvisited">000675| &nbsp;&nbsp;(*[0]*)word&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
+      <div class="lineNone">000676| &nbsp;</div>
+      <div class="lineNone">000677| let&nbsp;extract_int64_ne_unsigned&nbsp;=</div>
+      <div class="lineAllVisited">000678| &nbsp;&nbsp;(*[28]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
+      <div class="lineAllUnvisited">000679| &nbsp;&nbsp;then&nbsp;(*[0]*)extract_int64_be_unsigned</div>
+      <div class="lineAllVisited">000680| &nbsp;&nbsp;else&nbsp;(*[28]*)extract_int64_le_unsigned</div>
+      <div class="lineNone">000681| &nbsp;</div>
+      <div class="lineNone">000682| let&nbsp;extract_int64_ee_unsigned&nbsp;=&nbsp;function</div>
+      <div class="lineAllUnvisited">000683| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int64_be_unsigned</div>
+      <div class="lineAllUnvisited">000684| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int64_le_unsigned</div>
+      <div class="lineAllUnvisited">000685| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int64_ne_unsigned</div>
+      <div class="lineNone">000686| &nbsp;</div>
+      <div class="lineNone">000687| external&nbsp;extract_fastpath_int16_be_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int16_be_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000688| &nbsp;</div>
+      <div class="lineNone">000689| external&nbsp;extract_fastpath_int16_le_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int16_le_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000690| &nbsp;</div>
+      <div class="lineNone">000691| external&nbsp;extract_fastpath_int16_ne_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int16_ne_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000692| &nbsp;</div>
+      <div class="lineNone">000693| external&nbsp;extract_fastpath_int16_be_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int16_be_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000694| &nbsp;</div>
+      <div class="lineNone">000695| external&nbsp;extract_fastpath_int16_le_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int16_le_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000696| &nbsp;</div>
+      <div class="lineNone">000697| external&nbsp;extract_fastpath_int16_ne_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int16_ne_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000698| &nbsp;</div>
+      <div class="lineNone">000699| (*</div>
+      <div class="lineNone">000700| external&nbsp;extract_fastpath_int24_be_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int24_be_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000701| &nbsp;</div>
+      <div class="lineNone">000702| external&nbsp;extract_fastpath_int24_le_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int24_le_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000703| &nbsp;</div>
+      <div class="lineNone">000704| external&nbsp;extract_fastpath_int24_ne_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int24_ne_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000705| &nbsp;</div>
+      <div class="lineNone">000706| external&nbsp;extract_fastpath_int24_be_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int24_be_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000707| &nbsp;</div>
+      <div class="lineNone">000708| external&nbsp;extract_fastpath_int24_le_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int24_le_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000709| &nbsp;</div>
+      <div class="lineNone">000710| external&nbsp;extract_fastpath_int24_ne_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int24_ne_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000711| *)</div>
+      <div class="lineNone">000712| &nbsp;</div>
+      <div class="lineNone">000713| external&nbsp;extract_fastpath_int32_be_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int32&nbsp;-&gt;&nbsp;int32&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int32_be_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000714| &nbsp;</div>
+      <div class="lineNone">000715| external&nbsp;extract_fastpath_int32_le_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int32&nbsp;-&gt;&nbsp;int32&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int32_le_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000716| &nbsp;</div>
+      <div class="lineNone">000717| external&nbsp;extract_fastpath_int32_ne_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int32&nbsp;-&gt;&nbsp;int32&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int32_ne_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000718| &nbsp;</div>
+      <div class="lineNone">000719| external&nbsp;extract_fastpath_int32_be_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int32&nbsp;-&gt;&nbsp;int32&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int32_be_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000720| &nbsp;</div>
+      <div class="lineNone">000721| external&nbsp;extract_fastpath_int32_le_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int32&nbsp;-&gt;&nbsp;int32&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int32_le_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000722| &nbsp;</div>
+      <div class="lineNone">000723| external&nbsp;extract_fastpath_int32_ne_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int32&nbsp;-&gt;&nbsp;int32&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int32_ne_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000724| &nbsp;</div>
+      <div class="lineNone">000725| (*</div>
+      <div class="lineNone">000726| external&nbsp;extract_fastpath_int40_be_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int40_be_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000727| &nbsp;</div>
+      <div class="lineNone">000728| external&nbsp;extract_fastpath_int40_le_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int40_le_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000729| &nbsp;</div>
+      <div class="lineNone">000730| external&nbsp;extract_fastpath_int40_ne_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int40_ne_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000731| &nbsp;</div>
+      <div class="lineNone">000732| external&nbsp;extract_fastpath_int40_be_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int40_be_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000733| &nbsp;</div>
+      <div class="lineNone">000734| external&nbsp;extract_fastpath_int40_le_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int40_le_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000735| &nbsp;</div>
+      <div class="lineNone">000736| external&nbsp;extract_fastpath_int40_ne_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int40_ne_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000737| &nbsp;</div>
+      <div class="lineNone">000738| external&nbsp;extract_fastpath_int48_be_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int48_be_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000739| &nbsp;</div>
+      <div class="lineNone">000740| external&nbsp;extract_fastpath_int48_le_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int48_le_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000741| &nbsp;</div>
+      <div class="lineNone">000742| external&nbsp;extract_fastpath_int48_ne_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int48_ne_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000743| &nbsp;</div>
+      <div class="lineNone">000744| external&nbsp;extract_fastpath_int48_be_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int48_be_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000745| &nbsp;</div>
+      <div class="lineNone">000746| external&nbsp;extract_fastpath_int48_le_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int48_le_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000747| &nbsp;</div>
+      <div class="lineNone">000748| external&nbsp;extract_fastpath_int48_ne_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int48_ne_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000749| &nbsp;</div>
+      <div class="lineNone">000750| external&nbsp;extract_fastpath_int56_be_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int56_be_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000751| &nbsp;</div>
+      <div class="lineNone">000752| external&nbsp;extract_fastpath_int56_le_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int56_le_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000753| &nbsp;</div>
+      <div class="lineNone">000754| external&nbsp;extract_fastpath_int56_ne_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int56_ne_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000755| &nbsp;</div>
+      <div class="lineNone">000756| external&nbsp;extract_fastpath_int56_be_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int56_be_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000757| &nbsp;</div>
+      <div class="lineNone">000758| external&nbsp;extract_fastpath_int56_le_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int56_le_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000759| &nbsp;</div>
+      <div class="lineNone">000760| external&nbsp;extract_fastpath_int56_ne_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int56_ne_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000761| *)</div>
+      <div class="lineNone">000762| &nbsp;</div>
+      <div class="lineNone">000763| external&nbsp;extract_fastpath_int64_be_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int64_be_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000764| &nbsp;</div>
+      <div class="lineNone">000765| external&nbsp;extract_fastpath_int64_le_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int64_le_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000766| &nbsp;</div>
+      <div class="lineNone">000767| external&nbsp;extract_fastpath_int64_ne_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int64_ne_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000768| &nbsp;</div>
+      <div class="lineNone">000769| external&nbsp;extract_fastpath_int64_be_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int64_be_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000770| &nbsp;</div>
+      <div class="lineNone">000771| external&nbsp;extract_fastpath_int64_le_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int64_le_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000772| &nbsp;</div>
+      <div class="lineNone">000773| external&nbsp;extract_fastpath_int64_ne_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int64_ne_signed&quot;&nbsp;&quot;noalloc&quot;</div>
+      <div class="lineNone">000774| &nbsp;</div>
+      <div class="lineNone">000775| (*----------------------------------------------------------------------*)</div>
+      <div class="lineNone">000776| (*&nbsp;Constructor&nbsp;functions.&nbsp;*)</div>
+      <div class="lineNone">000777| &nbsp;</div>
+      <div class="lineNone">000778| module&nbsp;Buffer&nbsp;=&nbsp;struct</div>
+      <div class="lineNone">000779| &nbsp;&nbsp;type&nbsp;t&nbsp;=&nbsp;{</div>
+      <div class="lineNone">000780| &nbsp;&nbsp;&nbsp;&nbsp;buf&nbsp;:&nbsp;Buffer.t;</div>
+      <div class="lineNone">000781| &nbsp;&nbsp;&nbsp;&nbsp;mutable&nbsp;len&nbsp;:&nbsp;int;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Length&nbsp;in&nbsp;bits.&nbsp;*)</div>
+      <div class="lineNone">000782| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Last&nbsp;byte&nbsp;in&nbsp;the&nbsp;buffer&nbsp;(if&nbsp;len&nbsp;is&nbsp;not&nbsp;aligned).&nbsp;&nbsp;We&nbsp;store</div>
+      <div class="lineNone">000783| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;it&nbsp;outside&nbsp;the&nbsp;buffer&nbsp;because&nbsp;buffers&nbsp;aren't&nbsp;mutable.</div>
+      <div class="lineNone">000784| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</div>
+      <div class="lineNone">000785| &nbsp;&nbsp;&nbsp;&nbsp;mutable&nbsp;last&nbsp;:&nbsp;int;</div>
+      <div class="lineNone">000786| &nbsp;&nbsp;}</div>
+      <div class="lineNone">000787| &nbsp;</div>
+      <div class="lineNone">000788| &nbsp;&nbsp;let&nbsp;create&nbsp;()&nbsp;=</div>
+      <div class="lineNone">000789| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;XXX&nbsp;We&nbsp;have&nbsp;almost&nbsp;enough&nbsp;information&nbsp;in&nbsp;the&nbsp;generator&nbsp;to</div>
+      <div class="lineNone">000790| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;choose&nbsp;a&nbsp;good&nbsp;initial&nbsp;size.</div>
+      <div class="lineNone">000791| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</div>
+      <div class="lineAllVisited">000792| &nbsp;&nbsp;&nbsp;&nbsp;(*[452559]*){&nbsp;buf&nbsp;=&nbsp;Buffer.create&nbsp;128;&nbsp;len&nbsp;=&nbsp;0;&nbsp;last&nbsp;=&nbsp;0&nbsp;}</div>
+      <div class="lineNone">000793| &nbsp;</div>
+      <div class="lineNone">000794| &nbsp;&nbsp;let&nbsp;contents&nbsp;{&nbsp;buf&nbsp;=&nbsp;buf;&nbsp;len&nbsp;=&nbsp;len;&nbsp;last&nbsp;=&nbsp;last&nbsp;}&nbsp;=</div>
+      <div class="lineAllVisited">000795| &nbsp;&nbsp;&nbsp;&nbsp;(*[452559]*)let&nbsp;data&nbsp;=</div>
+      <div class="lineNone">000796| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;len&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then</div>
+      <div class="lineAllVisited">000797| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[58202]*)Buffer.contents&nbsp;buf</div>
+      <div class="lineNone">000798| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</div>
+      <div class="lineAllVisited">000799| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[394357]*)Buffer.contents&nbsp;buf&nbsp;^&nbsp;(String.make&nbsp;1&nbsp;(Char.chr&nbsp;last))&nbsp;in</div>
+      <div class="lineAllVisited">000800| &nbsp;&nbsp;&nbsp;&nbsp;(*[452559]*)data,&nbsp;0,&nbsp;len</div>
+      <div class="lineNone">000801| &nbsp;</div>
+      <div class="lineNone">000802| &nbsp;&nbsp;(*&nbsp;Add&nbsp;exactly&nbsp;8&nbsp;bits.&nbsp;*)</div>
+      <div class="lineNone">000803| &nbsp;&nbsp;let&nbsp;add_byte&nbsp;({&nbsp;buf&nbsp;=&nbsp;buf;&nbsp;len&nbsp;=&nbsp;len;&nbsp;last&nbsp;=&nbsp;last&nbsp;}&nbsp;as&nbsp;t)&nbsp;byte&nbsp;=</div>
+      <div class="lineMixed">000804| &nbsp;&nbsp;&nbsp;&nbsp;(*[8142106]*)if&nbsp;(*[8142106]*)byte&nbsp;&lt;&nbsp;0&nbsp;||&nbsp;(*[8142106]*)byte&nbsp;&gt;&nbsp;255&nbsp;then&nbsp;(*[0]*)invalid_arg&nbsp;&quot;Bitstring.Buffer.add_byte&quot;;</div>
+      <div class="lineAllVisited">000805| &nbsp;&nbsp;&nbsp;&nbsp;(*[8142106]*)let&nbsp;shift&nbsp;=&nbsp;len&nbsp;land&nbsp;7&nbsp;in</div>
+      <div class="lineAllVisited">000806| &nbsp;&nbsp;&nbsp;&nbsp;(*[8142106]*)if&nbsp;shift&nbsp;=&nbsp;0&nbsp;then</div>
+      <div class="lineNone">000807| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Target&nbsp;buffer&nbsp;is&nbsp;byte-aligned.&nbsp;*)</div>
+      <div class="lineAllVisited">000808| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[519924]*)Buffer.add_char&nbsp;buf&nbsp;(Char.chr&nbsp;byte)</div>
+      <div class="lineNone">000809| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(</div>
+      <div class="lineNone">000810| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Target&nbsp;buffer&nbsp;is&nbsp;unaligned.&nbsp;&nbsp;'last'&nbsp;is&nbsp;meaningful.&nbsp;*)</div>
+      <div class="lineAllVisited">000811| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[7622182]*)let&nbsp;first&nbsp;=&nbsp;byte&nbsp;lsr&nbsp;shift&nbsp;in</div>
+      <div class="lineAllVisited">000812| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[7622182]*)let&nbsp;second&nbsp;=&nbsp;(byte&nbsp;lsl&nbsp;(8&nbsp;-&nbsp;shift))&nbsp;land&nbsp;0xff&nbsp;in</div>
+      <div class="lineAllVisited">000813| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[7622182]*)Buffer.add_char&nbsp;buf&nbsp;(*[7622182]*)(Char.chr&nbsp;(last&nbsp;lor&nbsp;first));</div>
+      <div class="lineAllVisited">000814| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[7622182]*)t.last&nbsp;&lt;-&nbsp;second</div>
+      <div class="lineNone">000815| &nbsp;&nbsp;&nbsp;&nbsp;);</div>
+      <div class="lineAllVisited">000816| &nbsp;&nbsp;&nbsp;&nbsp;(*[8142106]*)t.len&nbsp;&lt;-&nbsp;t.len&nbsp;+&nbsp;8</div>
+      <div class="lineNone">000817| &nbsp;</div>
+      <div class="lineNone">000818| &nbsp;&nbsp;(*&nbsp;Add&nbsp;exactly&nbsp;1&nbsp;bit.&nbsp;*)</div>
+      <div class="lineNone">000819| &nbsp;&nbsp;let&nbsp;add_bit&nbsp;({&nbsp;buf&nbsp;=&nbsp;buf;&nbsp;len&nbsp;=&nbsp;len;&nbsp;last&nbsp;=&nbsp;last&nbsp;}&nbsp;as&nbsp;t)&nbsp;bit&nbsp;=</div>
+      <div class="lineAllVisited">000820| &nbsp;&nbsp;&nbsp;&nbsp;(*[4192108]*)let&nbsp;shift&nbsp;=&nbsp;7&nbsp;-&nbsp;(len&nbsp;land&nbsp;7)&nbsp;in</div>
+      <div class="lineAllVisited">000821| &nbsp;&nbsp;&nbsp;&nbsp;(*[4192108]*)if&nbsp;shift&nbsp;&gt;&nbsp;0&nbsp;then</div>
+      <div class="lineNone">000822| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Somewhere&nbsp;in&nbsp;the&nbsp;middle&nbsp;of&nbsp;'last'.&nbsp;*)</div>
+      <div class="lineAllVisited">000823| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[3692102]*)t.last&nbsp;&lt;-&nbsp;last&nbsp;lor&nbsp;((if&nbsp;bit&nbsp;then&nbsp;(*[2903776]*)1&nbsp;else&nbsp;(*[788326]*)0)&nbsp;lsl&nbsp;shift)</div>
+      <div class="lineNone">000824| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(</div>
+      <div class="lineNone">000825| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Just&nbsp;a&nbsp;single&nbsp;spare&nbsp;bit&nbsp;in&nbsp;'last'.&nbsp;*)</div>
+      <div class="lineAllVisited">000826| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[500006]*)let&nbsp;last&nbsp;=&nbsp;last&nbsp;lor&nbsp;if&nbsp;bit&nbsp;then&nbsp;(*[391339]*)1&nbsp;else&nbsp;(*[108667]*)0&nbsp;in</div>
+      <div class="lineAllVisited">000827| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[500006]*)Buffer.add_char&nbsp;buf&nbsp;(*[500006]*)(Char.chr&nbsp;last);</div>
+      <div class="lineAllVisited">000828| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[500006]*)t.last&nbsp;&lt;-&nbsp;0</div>
+      <div class="lineNone">000829| &nbsp;&nbsp;&nbsp;&nbsp;);</div>
+      <div class="lineAllVisited">000830| &nbsp;&nbsp;&nbsp;&nbsp;(*[4192108]*)t.len&nbsp;&lt;-&nbsp;len&nbsp;+&nbsp;1</div>
+      <div class="lineNone">000831| &nbsp;</div>
+      <div class="lineNone">000832| &nbsp;&nbsp;(*&nbsp;Add&nbsp;a&nbsp;small&nbsp;number&nbsp;of&nbsp;bits&nbsp;(definitely&nbsp;&lt;&nbsp;8).&nbsp;&nbsp;This&nbsp;uses&nbsp;a&nbsp;loop</div>
+      <div class="lineNone">000833| &nbsp;&nbsp;&nbsp;*&nbsp;to&nbsp;call&nbsp;add_bit&nbsp;so&nbsp;it's&nbsp;slow.</div>
+      <div class="lineNone">000834| &nbsp;&nbsp;&nbsp;*)</div>
+      <div class="lineNone">000835| &nbsp;&nbsp;let&nbsp;_add_bits&nbsp;t&nbsp;c&nbsp;slen&nbsp;=</div>
+      <div class="lineMixed">000836| &nbsp;&nbsp;&nbsp;&nbsp;(*[317200]*)if&nbsp;(*[317200]*)slen&nbsp;&lt;&nbsp;1&nbsp;||&nbsp;(*[317200]*)slen&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(*[0]*)invalid_arg&nbsp;&quot;Bitstring.Buffer._add_bits&quot;;</div>
+      <div class="lineAllVisited">000837| &nbsp;&nbsp;&nbsp;&nbsp;(*[317200]*)for&nbsp;i&nbsp;=&nbsp;slen-1&nbsp;downto&nbsp;0&nbsp;do</div>
+      <div class="lineAllVisited">000838| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1268791]*)let&nbsp;bit&nbsp;=&nbsp;c&nbsp;land&nbsp;(1&nbsp;lsl&nbsp;i)&nbsp;&lt;&gt;&nbsp;0&nbsp;in</div>
+      <div class="lineAllVisited">000839| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1268791]*)add_bit&nbsp;t&nbsp;bit</div>
+      <div class="lineNone">000840| &nbsp;&nbsp;&nbsp;&nbsp;done</div>
+      <div class="lineNone">000841| &nbsp;</div>
+      <div class="lineNone">000842| &nbsp;&nbsp;let&nbsp;add_bits&nbsp;({&nbsp;buf&nbsp;=&nbsp;buf;&nbsp;len&nbsp;=&nbsp;len&nbsp;}&nbsp;as&nbsp;t)&nbsp;str&nbsp;slen&nbsp;=</div>
+      <div class="lineAllVisited">000843| &nbsp;&nbsp;&nbsp;&nbsp;(*[23330]*)if&nbsp;slen&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllVisited">000844| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1272292]*)if&nbsp;len&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllVisited">000845| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[525820]*)if&nbsp;slen&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then</div>
+      <div class="lineNone">000846| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Common&nbsp;case&nbsp;-&nbsp;everything&nbsp;is&nbsp;byte-aligned.&nbsp;*)</div>
+      <div class="lineAllVisited">000847| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[58261]*)Buffer.add_substring&nbsp;buf&nbsp;str&nbsp;0&nbsp;(slen&nbsp;lsr&nbsp;3)</div>
+      <div class="lineNone">000848| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(</div>
+      <div class="lineNone">000849| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Target&nbsp;buffer&nbsp;is&nbsp;aligned.&nbsp;&nbsp;Copy&nbsp;whole&nbsp;bytes&nbsp;then&nbsp;leave&nbsp;the</div>
+      <div class="lineNone">000850| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;remaining&nbsp;bits&nbsp;in&nbsp;last.</div>
+      <div class="lineNone">000851| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</div>
+      <div class="lineAllVisited">000852| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[467559]*)let&nbsp;slenbytes&nbsp;=&nbsp;slen&nbsp;lsr&nbsp;3&nbsp;in</div>
+      <div class="lineAllVisited">000853| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[335078]*)if&nbsp;slenbytes&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(*[132481]*)Buffer.add_substring&nbsp;buf&nbsp;str&nbsp;0&nbsp;slenbytes;</div>
+      <div class="lineAllVisited">000854| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[467559]*)let&nbsp;last&nbsp;=&nbsp;Char.code&nbsp;str.[slenbytes]&nbsp;in&nbsp;(*&nbsp;last&nbsp;char&nbsp;*)</div>
+      <div class="lineAllVisited">000855| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[467559]*)let&nbsp;mask&nbsp;=&nbsp;0xff&nbsp;lsl&nbsp;(8&nbsp;-&nbsp;(slen&nbsp;land&nbsp;7))&nbsp;in</div>
+      <div class="lineAllVisited">000856| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[467559]*)t.last&nbsp;&lt;-&nbsp;last&nbsp;land&nbsp;mask</div>
+      <div class="lineNone">000857| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);</div>
+      <div class="lineAllVisited">000858| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[525820]*)t.len&nbsp;&lt;-&nbsp;len&nbsp;+&nbsp;slen</div>
+      <div class="lineNone">000859| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
+      <div class="lineNone">000860| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Target&nbsp;buffer&nbsp;is&nbsp;unaligned.&nbsp;&nbsp;Copy&nbsp;whole&nbsp;bytes&nbsp;using</div>
+      <div class="lineNone">000861| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;add_byte&nbsp;which&nbsp;knows&nbsp;how&nbsp;to&nbsp;deal&nbsp;with&nbsp;an&nbsp;unaligned</div>
+      <div class="lineNone">000862| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;target&nbsp;buffer,&nbsp;then&nbsp;call&nbsp;add_bit&nbsp;for&nbsp;the&nbsp;remaining&nbsp;&lt;&nbsp;8&nbsp;bits.</div>
+      <div class="lineNone">000863| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</div>
+      <div class="lineNone">000864| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;XXX&nbsp;This&nbsp;is&nbsp;going&nbsp;to&nbsp;be&nbsp;dog-slow.</div>
+      <div class="lineNone">000865| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</div>
+      <div class="lineAllVisited">000866| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[746472]*)let&nbsp;slenbytes&nbsp;=&nbsp;slen&nbsp;lsr&nbsp;3&nbsp;in</div>
+      <div class="lineAllVisited">000867| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[746472]*)for&nbsp;i&nbsp;=&nbsp;0&nbsp;to&nbsp;slenbytes-1&nbsp;do</div>
+      <div class="lineAllVisited">000868| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[5829660]*)let&nbsp;byte&nbsp;=&nbsp;Char.code&nbsp;str.[i]&nbsp;in</div>
+      <div class="lineAllVisited">000869| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[5829660]*)add_byte&nbsp;t&nbsp;byte</div>
+      <div class="lineNone">000870| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;done;</div>
+      <div class="lineAllVisited">000871| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[746472]*)let&nbsp;bitsleft&nbsp;=&nbsp;slen&nbsp;-&nbsp;(slenbytes&nbsp;lsl&nbsp;3)&nbsp;in</div>
+      <div class="lineAllVisited">000872| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[136479]*)if&nbsp;bitsleft&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllVisited">000873| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[609993]*)let&nbsp;c&nbsp;=&nbsp;Char.code&nbsp;str.[slenbytes]&nbsp;in</div>
+      <div class="lineAllVisited">000874| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[609993]*)for&nbsp;i&nbsp;=&nbsp;0&nbsp;to&nbsp;bitsleft&nbsp;-&nbsp;1&nbsp;do</div>
+      <div class="lineAllVisited">000875| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2423817]*)let&nbsp;bit&nbsp;=&nbsp;c&nbsp;land&nbsp;(0x80&nbsp;lsr&nbsp;i)&nbsp;&lt;&gt;&nbsp;0&nbsp;in</div>
+      <div class="lineAllVisited">000876| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2423817]*)add_bit&nbsp;t&nbsp;bit</div>
+      <div class="lineNone">000877| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;done</div>
+      <div class="lineNone">000878| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">000879| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);</div>
+      <div class="lineNone">000880| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">000881| end</div>
+      <div class="lineNone">000882| &nbsp;</div>
+      <div class="lineNone">000883| (*&nbsp;Construct&nbsp;a&nbsp;single&nbsp;bit.&nbsp;*)</div>
+      <div class="lineNone">000884| let&nbsp;construct_bit&nbsp;buf&nbsp;b&nbsp;_&nbsp;_&nbsp;=</div>
+      <div class="lineAllUnvisited">000885| &nbsp;&nbsp;(*[0]*)Buffer.add_bit&nbsp;buf&nbsp;b</div>
+      <div class="lineNone">000886| &nbsp;</div>
+      <div class="lineNone">000887| (*&nbsp;Construct&nbsp;a&nbsp;field,&nbsp;flen&nbsp;=&nbsp;[2..8].&nbsp;*)</div>
+      <div class="lineNone">000888| let&nbsp;construct_char_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;exn&nbsp;=</div>
+      <div class="lineAllVisited">000889| &nbsp;&nbsp;(*[1203570]*)let&nbsp;max_val&nbsp;=&nbsp;1&nbsp;lsl&nbsp;flen&nbsp;in</div>
+      <div class="lineMixed">000890| &nbsp;&nbsp;(*[1203570]*)if&nbsp;(*[1203570]*)v&nbsp;&lt;&nbsp;0&nbsp;||&nbsp;(*[1203570]*)v&nbsp;&gt;=&nbsp;max_val&nbsp;then&nbsp;(*[0]*)raise&nbsp;exn;</div>
+      <div class="lineAllVisited">000891| &nbsp;&nbsp;(*[1203570]*)if&nbsp;flen&nbsp;=&nbsp;8&nbsp;then</div>
+      <div class="lineAllVisited">000892| &nbsp;&nbsp;&nbsp;&nbsp;(*[1203570]*)Buffer.add_byte&nbsp;buf&nbsp;v</div>
+      <div class="lineNone">000893| &nbsp;&nbsp;else</div>
+      <div class="lineAllUnvisited">000894| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Buffer._add_bits&nbsp;buf&nbsp;v&nbsp;flen</div>
+      <div class="lineNone">000895| &nbsp;</div>
+      <div class="lineNone">000896| (*&nbsp;Construct&nbsp;a&nbsp;field&nbsp;of&nbsp;up&nbsp;to&nbsp;31&nbsp;bits.&nbsp;*)</div>
+      <div class="lineNone">000897| let&nbsp;construct_int_be_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;exn&nbsp;=</div>
+      <div class="lineNone">000898| &nbsp;&nbsp;(*&nbsp;Check&nbsp;value&nbsp;is&nbsp;within&nbsp;range.&nbsp;*)</div>
+      <div class="lineMixed">000899| &nbsp;&nbsp;(*[2]*)if&nbsp;not&nbsp;(I.range_unsigned&nbsp;v&nbsp;flen)&nbsp;then&nbsp;(*[0]*)raise&nbsp;exn;</div>
+      <div class="lineNone">000900| &nbsp;&nbsp;(*&nbsp;Add&nbsp;the&nbsp;bytes.&nbsp;*)</div>
+      <div class="lineAllVisited">000901| &nbsp;&nbsp;(*[2]*)I.map_bytes_be&nbsp;(Buffer._add_bits&nbsp;buf)&nbsp;(Buffer.add_byte&nbsp;buf)&nbsp;v&nbsp;flen</div>
+      <div class="lineNone">000902| &nbsp;</div>
+      <div class="lineNone">000903| (*&nbsp;Construct&nbsp;a&nbsp;field&nbsp;of&nbsp;up&nbsp;to&nbsp;31&nbsp;bits.&nbsp;*)</div>
+      <div class="lineNone">000904| let&nbsp;construct_int_le_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;exn&nbsp;=</div>
+      <div class="lineNone">000905| &nbsp;&nbsp;(*&nbsp;Check&nbsp;value&nbsp;is&nbsp;within&nbsp;range.&nbsp;*)</div>
+      <div class="lineAllUnvisited">000906| &nbsp;&nbsp;(*[0]*)if&nbsp;not&nbsp;(I.range_unsigned&nbsp;v&nbsp;flen)&nbsp;then&nbsp;(*[0]*)raise&nbsp;exn;</div>
+      <div class="lineNone">000907| &nbsp;&nbsp;(*&nbsp;Add&nbsp;the&nbsp;bytes.&nbsp;*)</div>
+      <div class="lineAllUnvisited">000908| &nbsp;&nbsp;(*[0]*)I.map_bytes_le&nbsp;(Buffer._add_bits&nbsp;buf)&nbsp;(Buffer.add_byte&nbsp;buf)&nbsp;v&nbsp;flen</div>
+      <div class="lineNone">000909| &nbsp;</div>
+      <div class="lineNone">000910| let&nbsp;construct_int_ne_unsigned&nbsp;=</div>
+      <div class="lineAllVisited">000911| &nbsp;&nbsp;(*[28]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
+      <div class="lineAllUnvisited">000912| &nbsp;&nbsp;then&nbsp;(*[0]*)construct_int_be_unsigned</div>
+      <div class="lineAllVisited">000913| &nbsp;&nbsp;else&nbsp;(*[28]*)construct_int_le_unsigned</div>
+      <div class="lineNone">000914| &nbsp;</div>
+      <div class="lineNone">000915| let&nbsp;construct_int_ee_unsigned&nbsp;=&nbsp;function</div>
+      <div class="lineAllUnvisited">000916| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[0]*)construct_int_be_unsigned</div>
+      <div class="lineAllUnvisited">000917| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*[0]*)construct_int_le_unsigned</div>
+      <div class="lineAllUnvisited">000918| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[0]*)construct_int_ne_unsigned</div>
+      <div class="lineNone">000919| &nbsp;</div>
+      <div class="lineNone">000920| (*&nbsp;Construct&nbsp;a&nbsp;field&nbsp;of&nbsp;exactly&nbsp;32&nbsp;bits.&nbsp;*)</div>
+      <div class="lineNone">000921| let&nbsp;construct_int32_be_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;_&nbsp;=</div>
+      <div class="lineAllVisited">000922| &nbsp;&nbsp;(*[6]*)Buffer.add_byte&nbsp;buf</div>
+      <div class="lineNone">000923| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;24));</div>
+      <div class="lineAllVisited">000924| &nbsp;&nbsp;(*[6]*)Buffer.add_byte&nbsp;buf</div>
+      <div class="lineNone">000925| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;((Int32.logand&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;16)&nbsp;0xff_l)));</div>
+      <div class="lineAllVisited">000926| &nbsp;&nbsp;(*[6]*)Buffer.add_byte&nbsp;buf</div>
+      <div class="lineAllVisited">000927| &nbsp;&nbsp;&nbsp;&nbsp;(*[6]*)(Int32.to_int&nbsp;((Int32.logand&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;8)&nbsp;0xff_l)));</div>
+      <div class="lineAllVisited">000928| &nbsp;&nbsp;(*[6]*)Buffer.add_byte&nbsp;buf</div>
+      <div class="lineNone">000929| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;(Int32.logand&nbsp;v&nbsp;0xff_l))</div>
+      <div class="lineNone">000930| &nbsp;</div>
+      <div class="lineNone">000931| let&nbsp;construct_int32_le_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;_&nbsp;=</div>
+      <div class="lineAllVisited">000932| &nbsp;&nbsp;(*[12]*)Buffer.add_byte&nbsp;buf</div>
+      <div class="lineNone">000933| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;(Int32.logand&nbsp;v&nbsp;0xff_l));</div>
+      <div class="lineAllVisited">000934| &nbsp;&nbsp;(*[12]*)Buffer.add_byte&nbsp;buf</div>
+      <div class="lineNone">000935| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;((Int32.logand&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;8)&nbsp;0xff_l)));</div>
+      <div class="lineAllVisited">000936| &nbsp;&nbsp;(*[12]*)Buffer.add_byte&nbsp;buf</div>
+      <div class="lineAllVisited">000937| &nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)(Int32.to_int&nbsp;((Int32.logand&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;16)&nbsp;0xff_l)));</div>
+      <div class="lineAllVisited">000938| &nbsp;&nbsp;(*[12]*)Buffer.add_byte&nbsp;buf</div>
+      <div class="lineNone">000939| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;24))</div>
+      <div class="lineNone">000940| &nbsp;</div>
+      <div class="lineNone">000941| let&nbsp;construct_int32_ne_unsigned&nbsp;=</div>
+      <div class="lineAllVisited">000942| &nbsp;&nbsp;(*[28]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
+      <div class="lineAllUnvisited">000943| &nbsp;&nbsp;then&nbsp;(*[0]*)construct_int32_be_unsigned</div>
+      <div class="lineAllVisited">000944| &nbsp;&nbsp;else&nbsp;(*[28]*)construct_int32_le_unsigned</div>
+      <div class="lineNone">000945| &nbsp;</div>
+      <div class="lineNone">000946| let&nbsp;construct_int32_ee_unsigned&nbsp;=&nbsp;function</div>
+      <div class="lineAllVisited">000947| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[6]*)construct_int32_be_unsigned</div>
+      <div class="lineAllVisited">000948| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*[6]*)construct_int32_le_unsigned</div>
+      <div class="lineAllVisited">000949| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[6]*)construct_int32_ne_unsigned</div>
+      <div class="lineNone">000950| &nbsp;</div>
+      <div class="lineNone">000951| (*&nbsp;Construct&nbsp;a&nbsp;field&nbsp;of&nbsp;up&nbsp;to&nbsp;64&nbsp;bits.&nbsp;*)</div>
+      <div class="lineNone">000952| let&nbsp;construct_int64_be_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;exn&nbsp;=</div>
+      <div class="lineNone">000953| &nbsp;&nbsp;(*&nbsp;Check&nbsp;value&nbsp;is&nbsp;within&nbsp;range.&nbsp;*)</div>
+      <div class="lineMixed">000954| &nbsp;&nbsp;(*[351850]*)if&nbsp;not&nbsp;(I64.range_unsigned&nbsp;v&nbsp;flen)&nbsp;then&nbsp;(*[0]*)raise&nbsp;exn;</div>
+      <div class="lineNone">000955| &nbsp;&nbsp;(*&nbsp;Add&nbsp;the&nbsp;bytes.&nbsp;*)</div>
+      <div class="lineAllVisited">000956| &nbsp;&nbsp;(*[351850]*)I64.map_bytes_be&nbsp;(Buffer._add_bits&nbsp;buf)&nbsp;(Buffer.add_byte&nbsp;buf)&nbsp;v&nbsp;flen</div>
+      <div class="lineNone">000957| &nbsp;</div>
+      <div class="lineNone">000958| (*&nbsp;Construct&nbsp;a&nbsp;field&nbsp;of&nbsp;up&nbsp;to&nbsp;64&nbsp;bits.&nbsp;*)</div>
+      <div class="lineNone">000959| let&nbsp;construct_int64_le_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;exn&nbsp;=</div>
+      <div class="lineNone">000960| &nbsp;&nbsp;(*&nbsp;Check&nbsp;value&nbsp;is&nbsp;within&nbsp;range.&nbsp;*)</div>
+      <div class="lineAllUnvisited">000961| &nbsp;&nbsp;(*[0]*)if&nbsp;not&nbsp;(I64.range_unsigned&nbsp;v&nbsp;flen)&nbsp;then&nbsp;(*[0]*)raise&nbsp;exn;</div>
+      <div class="lineNone">000962| &nbsp;&nbsp;(*&nbsp;Add&nbsp;the&nbsp;bytes.&nbsp;*)</div>
+      <div class="lineAllUnvisited">000963| &nbsp;&nbsp;(*[0]*)I64.map_bytes_le&nbsp;(Buffer._add_bits&nbsp;buf)&nbsp;(Buffer.add_byte&nbsp;buf)&nbsp;v&nbsp;flen</div>
+      <div class="lineNone">000964| &nbsp;</div>
+      <div class="lineNone">000965| let&nbsp;construct_int64_ne_unsigned&nbsp;=</div>
+      <div class="lineAllVisited">000966| &nbsp;&nbsp;(*[28]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
+      <div class="lineAllUnvisited">000967| &nbsp;&nbsp;then&nbsp;(*[0]*)construct_int64_be_unsigned</div>
+      <div class="lineNone">000968| &nbsp;&nbsp;else&nbsp;(*construct_int64_le_unsigned*)</div>
+      <div class="lineAllUnvisited">000969| &nbsp;&nbsp;&nbsp;&nbsp;fun&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;-&gt;&nbsp;(*[0]*)failwith&nbsp;&quot;construct_int64_le_unsigned&quot;</div>
+      <div class="lineNone">000970| &nbsp;</div>
+      <div class="lineNone">000971| let&nbsp;construct_int64_ee_unsigned&nbsp;=&nbsp;function</div>
+      <div class="lineAllUnvisited">000972| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[0]*)construct_int64_be_unsigned</div>
+      <div class="lineNone">000973| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*construct_int64_le_unsigned*)</div>
+      <div class="lineAllUnvisited">000974| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(fun&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;-&gt;&nbsp;(*[0]*)failwith&nbsp;&quot;construct_int64_le_unsigned&quot;)</div>
+      <div class="lineAllUnvisited">000975| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[0]*)construct_int64_ne_unsigned</div>
+      <div class="lineNone">000976| &nbsp;</div>
+      <div class="lineNone">000977| (*&nbsp;Construct&nbsp;from&nbsp;a&nbsp;string&nbsp;of&nbsp;bytes,&nbsp;exact&nbsp;multiple&nbsp;of&nbsp;8&nbsp;bits</div>
+      <div class="lineNone">000978| &nbsp;*&nbsp;in&nbsp;length&nbsp;of&nbsp;course.</div>
+      <div class="lineNone">000979| &nbsp;*)</div>
+      <div class="lineNone">000980| let&nbsp;construct_string&nbsp;buf&nbsp;str&nbsp;=</div>
+      <div class="lineAllVisited">000981| &nbsp;&nbsp;(*[89505]*)let&nbsp;len&nbsp;=&nbsp;String.length&nbsp;str&nbsp;in</div>
+      <div class="lineAllVisited">000982| &nbsp;&nbsp;(*[89505]*)Buffer.add_bits&nbsp;buf&nbsp;str&nbsp;(len&nbsp;lsl&nbsp;3)</div>
+      <div class="lineNone">000983| &nbsp;</div>
+      <div class="lineNone">000984| (*&nbsp;Construct&nbsp;from&nbsp;a&nbsp;bitstring.&nbsp;*)</div>
+      <div class="lineNone">000985| let&nbsp;construct_bitstring&nbsp;buf&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;=</div>
+      <div class="lineNone">000986| &nbsp;&nbsp;(*&nbsp;Add&nbsp;individual&nbsp;bits&nbsp;until&nbsp;we&nbsp;get&nbsp;to&nbsp;the&nbsp;next&nbsp;byte&nbsp;boundary&nbsp;of</div>
+      <div class="lineNone">000987| &nbsp;&nbsp;&nbsp;*&nbsp;the&nbsp;underlying&nbsp;string.</div>
+      <div class="lineNone">000988| &nbsp;&nbsp;&nbsp;*)</div>
+      <div class="lineAllVisited">000989| &nbsp;&nbsp;(*[1197537]*)let&nbsp;blen&nbsp;=&nbsp;7&nbsp;-&nbsp;((off&nbsp;+&nbsp;7)&nbsp;land&nbsp;7)&nbsp;in</div>
+      <div class="lineAllVisited">000990| &nbsp;&nbsp;(*[1197537]*)let&nbsp;blen&nbsp;=&nbsp;min&nbsp;blen&nbsp;len&nbsp;in</div>
+      <div class="lineAllVisited">000991| &nbsp;&nbsp;(*[1197537]*)let&nbsp;rec&nbsp;loop&nbsp;off&nbsp;len&nbsp;blen&nbsp;=</div>
+      <div class="lineAllVisited">000992| &nbsp;&nbsp;&nbsp;&nbsp;(*[1197537]*)if&nbsp;blen&nbsp;=&nbsp;0&nbsp;then&nbsp;((*[1197537]*)off,&nbsp;len)</div>
+      <div class="lineNone">000993| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(</div>
+      <div class="lineAllUnvisited">000994| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;b&nbsp;=&nbsp;extract_bit&nbsp;data&nbsp;off&nbsp;len&nbsp;1</div>
+      <div class="lineNone">000995| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;1&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;+&nbsp;1&nbsp;in</div>
+      <div class="lineAllUnvisited">000996| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Buffer.add_bit&nbsp;buf&nbsp;(*[0]*)b;</div>
+      <div class="lineAllUnvisited">000997| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)loop&nbsp;off&nbsp;len&nbsp;(blen-1)</div>
+      <div class="lineNone">000998| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">000999| &nbsp;&nbsp;in</div>
+      <div class="lineAllVisited">001000| &nbsp;&nbsp;(*[1197537]*)let&nbsp;off,&nbsp;len&nbsp;=&nbsp;loop&nbsp;off&nbsp;len&nbsp;blen&nbsp;in</div>
+      <div class="lineAllVisited">001001| &nbsp;&nbsp;(*[1197537]*)assert&nbsp;((*[1197537]*)len&nbsp;=&nbsp;0&nbsp;||&nbsp;(off&nbsp;(*[1174272]*)land&nbsp;7)&nbsp;=&nbsp;0);</div>
+      <div class="lineNone">001002| &nbsp;</div>
+      <div class="lineNone">001003| &nbsp;&nbsp;(*&nbsp;Add&nbsp;the&nbsp;remaining&nbsp;'len'&nbsp;bits.&nbsp;*)</div>
+      <div class="lineAllVisited">001004| &nbsp;&nbsp;(*[1197537]*)let&nbsp;data&nbsp;=</div>
+      <div class="lineNone">001005| &nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;off&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
+      <div class="lineNone">001006| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;XXX&nbsp;dangerous&nbsp;allocation&nbsp;*)</div>
+      <div class="lineAllVisited">001007| &nbsp;&nbsp;&nbsp;&nbsp;(*[1197537]*)if&nbsp;off&nbsp;=&nbsp;0&nbsp;then&nbsp;(*[1197537]*)data</div>
+      <div class="lineAllUnvisited">001008| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[0]*)String.sub&nbsp;data&nbsp;off&nbsp;(String.length&nbsp;data&nbsp;-&nbsp;off)&nbsp;in</div>
+      <div class="lineNone">001009| &nbsp;</div>
+      <div class="lineAllVisited">001010| &nbsp;&nbsp;(*[1197537]*)Buffer.add_bits&nbsp;buf&nbsp;data&nbsp;len</div>
+      <div class="lineNone">001011| &nbsp;</div>
+      <div class="lineNone">001012| (*----------------------------------------------------------------------*)</div>
+      <div class="lineNone">001013| (*&nbsp;Extract&nbsp;a&nbsp;string&nbsp;from&nbsp;a&nbsp;bitstring.&nbsp;*)</div>
+      <div class="lineNone">001014| &nbsp;</div>
+      <div class="lineNone">001015| let&nbsp;string_of_bitstring&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;=</div>
+      <div class="lineAllVisited">001016| &nbsp;&nbsp;(*[63963]*)if&nbsp;off&nbsp;(*[63963]*)land&nbsp;7&nbsp;=&nbsp;0&nbsp;&amp;&amp;&nbsp;len&nbsp;(*[8535]*)land&nbsp;7&nbsp;=&nbsp;0&nbsp;then</div>
+      <div class="lineNone">001017| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Easy&nbsp;case:&nbsp;everything&nbsp;is&nbsp;byte-aligned.&nbsp;*)</div>
+      <div class="lineAllVisited">001018| &nbsp;&nbsp;&nbsp;&nbsp;(*[8022]*)String.sub&nbsp;data&nbsp;(off&nbsp;lsr&nbsp;3)&nbsp;(len&nbsp;lsr&nbsp;3)</div>
+      <div class="lineNone">001019| &nbsp;&nbsp;else&nbsp;(</div>
+      <div class="lineNone">001020| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Bit-twiddling&nbsp;case.&nbsp;*)</div>
+      <div class="lineAllVisited">001021| &nbsp;&nbsp;&nbsp;&nbsp;(*[55941]*)let&nbsp;strlen&nbsp;=&nbsp;(len&nbsp;+&nbsp;7)&nbsp;lsr&nbsp;3&nbsp;in</div>
+      <div class="lineAllVisited">001022| &nbsp;&nbsp;&nbsp;&nbsp;(*[55941]*)let&nbsp;str&nbsp;=&nbsp;String.make&nbsp;strlen&nbsp;'\000'&nbsp;in</div>
+      <div class="lineAllVisited">001023| &nbsp;&nbsp;&nbsp;&nbsp;(*[55941]*)let&nbsp;rec&nbsp;loop&nbsp;data&nbsp;off&nbsp;len&nbsp;i&nbsp;=</div>
+      <div class="lineAllVisited">001024| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[305313]*)if&nbsp;len&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
+      <div class="lineAllVisited">001025| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[249372]*)let&nbsp;c&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
+      <div class="lineNone">001026| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
+      <div class="lineAllVisited">001027| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[249372]*)str.[i]&nbsp;(*[249372]*)&lt;-&nbsp;Char.chr&nbsp;c;</div>
+      <div class="lineAllVisited">001028| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[249372]*)loop&nbsp;data&nbsp;off&nbsp;len&nbsp;(i+1)</div>
+      <div class="lineAllVisited">001029| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[52179]*)if&nbsp;len&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllVisited">001030| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[3762]*)let&nbsp;c&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;len&nbsp;in</div>
+      <div class="lineAllVisited">001031| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[3762]*)str.[i]&nbsp;&lt;-&nbsp;Char.chr&nbsp;(c&nbsp;lsl&nbsp;(8-len))</div>
+      <div class="lineNone">001032| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">001033| &nbsp;&nbsp;&nbsp;&nbsp;in</div>
+      <div class="lineAllVisited">001034| &nbsp;&nbsp;&nbsp;&nbsp;(*[55941]*)loop&nbsp;data&nbsp;off&nbsp;len&nbsp;(*[55941]*)0;</div>
+      <div class="lineAllVisited">001035| &nbsp;&nbsp;&nbsp;&nbsp;(*[55941]*)str</div>
+      <div class="lineNone">001036| &nbsp;&nbsp;)</div>
+      <div class="lineNone">001037| &nbsp;</div>
+      <div class="lineNone">001038| (*&nbsp;To&nbsp;channel.&nbsp;*)</div>
+      <div class="lineNone">001039| &nbsp;</div>
+      <div class="lineNone">001040| let&nbsp;bitstring_to_chan&nbsp;((data,&nbsp;off,&nbsp;len)&nbsp;as&nbsp;bits)&nbsp;chan&nbsp;=</div>
+      <div class="lineNone">001041| &nbsp;&nbsp;(*&nbsp;Fail&nbsp;if&nbsp;the&nbsp;bitstring&nbsp;length&nbsp;isn't&nbsp;a&nbsp;multiple&nbsp;of&nbsp;8.&nbsp;*)</div>
+      <div class="lineAllUnvisited">001042| &nbsp;&nbsp;(*[0]*)if&nbsp;len&nbsp;land&nbsp;7&nbsp;&lt;&gt;&nbsp;0&nbsp;then&nbsp;(*[0]*)invalid_arg&nbsp;&quot;bitstring_to_chan&quot;;</div>
+      <div class="lineNone">001043| &nbsp;</div>
+      <div class="lineAllUnvisited">001044| &nbsp;&nbsp;(*[0]*)if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then</div>
+      <div class="lineNone">001045| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Easy&nbsp;case:&nbsp;string&nbsp;is&nbsp;byte-aligned.&nbsp;*)</div>
+      <div class="lineAllUnvisited">001046| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)output&nbsp;chan&nbsp;data&nbsp;(off&nbsp;lsr&nbsp;3)&nbsp;(len&nbsp;lsr&nbsp;3)</div>
+      <div class="lineNone">001047| &nbsp;&nbsp;else&nbsp;(</div>
+      <div class="lineNone">001048| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Bit-twiddling&nbsp;case:&nbsp;reuse&nbsp;string_of_bitstring&nbsp;*)</div>
+      <div class="lineAllUnvisited">001049| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;str&nbsp;=&nbsp;string_of_bitstring&nbsp;bits&nbsp;in</div>
+      <div class="lineAllUnvisited">001050| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)output_string&nbsp;chan&nbsp;str</div>
+      <div class="lineNone">001051| &nbsp;&nbsp;)</div>
+      <div class="lineNone">001052| &nbsp;</div>
+      <div class="lineNone">001053| let&nbsp;bitstring_to_file&nbsp;bits&nbsp;filename&nbsp;=</div>
+      <div class="lineAllUnvisited">001054| &nbsp;&nbsp;(*[0]*)let&nbsp;chan&nbsp;=&nbsp;open_out_bin&nbsp;filename&nbsp;in</div>
+      <div class="lineAllUnvisited">001055| &nbsp;&nbsp;(*[0]*)try</div>
+      <div class="lineAllUnvisited">001056| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)bitstring_to_chan&nbsp;bits&nbsp;chan;</div>
+      <div class="lineAllUnvisited">001057| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)close_out&nbsp;chan</div>
+      <div class="lineNone">001058| &nbsp;&nbsp;with&nbsp;exn&nbsp;-&gt;</div>
+      <div class="lineAllUnvisited">001059| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)close_out&nbsp;(*[0]*)chan;</div>
+      <div class="lineAllUnvisited">001060| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)raise&nbsp;exn</div>
+      <div class="lineNone">001061| &nbsp;</div>
+      <div class="lineNone">001062| (*----------------------------------------------------------------------*)</div>
+      <div class="lineNone">001063| (*&nbsp;Display&nbsp;functions.&nbsp;*)</div>
+      <div class="lineNone">001064| &nbsp;</div>
+      <div class="lineNone">001065| let&nbsp;isprint&nbsp;c&nbsp;=</div>
+      <div class="lineAllUnvisited">001066| &nbsp;&nbsp;(*[0]*)let&nbsp;c&nbsp;=&nbsp;Char.code&nbsp;c&nbsp;in</div>
+      <div class="lineAllUnvisited">001067| &nbsp;&nbsp;(*[0]*)c&nbsp;(*[0]*)&gt;=&nbsp;32&nbsp;&amp;&amp;&nbsp;(*[0]*)c&nbsp;&lt;&nbsp;127</div>
+      <div class="lineNone">001068| &nbsp;</div>
+      <div class="lineNone">001069| let&nbsp;hexdump_bitstring&nbsp;chan&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;=</div>
+      <div class="lineAllUnvisited">001070| &nbsp;&nbsp;(*[0]*)let&nbsp;count&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
+      <div class="lineAllUnvisited">001071| &nbsp;&nbsp;(*[0]*)let&nbsp;off&nbsp;=&nbsp;ref&nbsp;off&nbsp;in</div>
+      <div class="lineAllUnvisited">001072| &nbsp;&nbsp;(*[0]*)let&nbsp;len&nbsp;=&nbsp;ref&nbsp;len&nbsp;in</div>
+      <div class="lineAllUnvisited">001073| &nbsp;&nbsp;(*[0]*)let&nbsp;linelen&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
+      <div class="lineAllUnvisited">001074| &nbsp;&nbsp;(*[0]*)let&nbsp;linechars&nbsp;=&nbsp;String.make&nbsp;16&nbsp;'&nbsp;'&nbsp;in</div>
+      <div class="lineNone">001075| &nbsp;</div>
+      <div class="lineAllUnvisited">001076| &nbsp;&nbsp;(*[0]*)fprintf&nbsp;chan&nbsp;&quot;00000000&nbsp;&nbsp;&quot;;</div>
+      <div class="lineNone">001077| &nbsp;</div>
+      <div class="lineAllUnvisited">001078| &nbsp;&nbsp;(*[0]*)while&nbsp;!len&nbsp;&gt;&nbsp;0&nbsp;do</div>
+      <div class="lineAllUnvisited">001079| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;bits&nbsp;=&nbsp;min&nbsp;!len&nbsp;8&nbsp;in</div>
+      <div class="lineAllUnvisited">001080| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;byte&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;!off&nbsp;!len&nbsp;bits&nbsp;in</div>
+      <div class="lineAllUnvisited">001081| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)off&nbsp;:=&nbsp;!off&nbsp;+&nbsp;bits;&nbsp;(*[0]*)len&nbsp;(*[0]*):=&nbsp;!len&nbsp;-&nbsp;bits;</div>
+      <div class="lineNone">001082| &nbsp;</div>
+      <div class="lineAllUnvisited">001083| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;byte&nbsp;=&nbsp;byte&nbsp;lsl&nbsp;(8-bits)&nbsp;in</div>
+      <div class="lineAllUnvisited">001084| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)fprintf&nbsp;chan&nbsp;&quot;%02x&nbsp;&quot;&nbsp;byte;</div>
+      <div class="lineNone">001085| &nbsp;</div>
+      <div class="lineAllUnvisited">001086| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)incr&nbsp;count;</div>
+      <div class="lineAllUnvisited">001087| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)linechars.[!linelen]&nbsp;&lt;-</div>
+      <div class="lineNone">001088| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;c&nbsp;=&nbsp;Char.chr&nbsp;byte&nbsp;in</div>
+      <div class="lineAllUnvisited">001089| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;isprint&nbsp;c&nbsp;then&nbsp;(*[0]*)c&nbsp;else&nbsp;(*[0]*)'.');</div>
+      <div class="lineAllUnvisited">001090| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)incr&nbsp;linelen;</div>
+      <div class="lineAllUnvisited">001091| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;!linelen&nbsp;=&nbsp;8&nbsp;then&nbsp;(*[0]*)fprintf&nbsp;chan&nbsp;&quot;&nbsp;&quot;;</div>
+      <div class="lineAllUnvisited">001092| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;!linelen&nbsp;=&nbsp;16&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">001093| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)fprintf&nbsp;chan&nbsp;&quot;&nbsp;|%s|\n%08x&nbsp;&nbsp;&quot;&nbsp;linechars&nbsp;!count;</div>
+      <div class="lineAllUnvisited">001094| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)linelen&nbsp;(*[0]*):=&nbsp;0;</div>
+      <div class="lineAllUnvisited">001095| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)for&nbsp;i&nbsp;=&nbsp;0&nbsp;to&nbsp;15&nbsp;do&nbsp;(*[0]*)linechars.[i]&nbsp;&lt;-&nbsp;'&nbsp;'&nbsp;done</div>
+      <div class="lineNone">001096| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
+      <div class="lineNone">001097| &nbsp;&nbsp;done;</div>
+      <div class="lineNone">001098| &nbsp;</div>
+      <div class="lineAllUnvisited">001099| &nbsp;&nbsp;(*[0]*)if&nbsp;!linelen&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
+      <div class="lineAllUnvisited">001100| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;skip&nbsp;=&nbsp;(16&nbsp;-&nbsp;!linelen)&nbsp;*&nbsp;3&nbsp;+&nbsp;if&nbsp;!linelen&nbsp;&lt;&nbsp;8&nbsp;then&nbsp;(*[0]*)1&nbsp;else&nbsp;(*[0]*)0&nbsp;in</div>
+      <div class="lineAllUnvisited">001101| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)for&nbsp;i&nbsp;=&nbsp;0&nbsp;to&nbsp;skip-1&nbsp;do&nbsp;(*[0]*)fprintf&nbsp;chan&nbsp;&quot;&nbsp;&quot;&nbsp;done;</div>
+      <div class="lineAllUnvisited">001102| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)fprintf&nbsp;chan&nbsp;&quot;&nbsp;|%s|\n%!&quot;&nbsp;linechars</div>
+      <div class="lineNone">001103| &nbsp;&nbsp;)&nbsp;else</div>
+      <div class="lineAllUnvisited">001104| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)fprintf&nbsp;chan&nbsp;&quot;\n%!&quot;</div>
+    </code>
+    <hr class="codeSep"/>
+    <p class="footer">Generated by <a href="http://bisect.x9c.fr">Bisect</a> on 2008-08-26 10:36:20</p>
+  </body>
+</html>
diff --git a/coverage-report/file0002.html b/coverage-report/file0002.html
new file mode 100644 (file)
index 0000000..102e516
--- /dev/null
@@ -0,0 +1,59 @@
+<html>
+  <head>
+    <title>Bisect report</title>
+    <link rel="stylesheet" type="text/css" href="style.css">
+  </head>
+  <body>
+    <h3>File: bitmatch.ml (<a href="index.html">return to index</a>)</h3>
+    <hr class="codeSep"/>
+    <h4>Statistics:</h4>
+    <table class="simple">
+      <tr><th>kind</th><th width="16px">&nbsp;</th><th>coverage</th></tr>
+      <tr><td>binding</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>sequence</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>for</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>if/then</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>try</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>while</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>match/function</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>class expression</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>class initializer</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>class method</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>class value</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>toplevel expression</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+    </table>
+    <hr class="codeSep"/>
+    <h4>Source:</h4>
+    <code>
+      <div class="lineNone">000001| (**&nbsp;Bitmatch&nbsp;backwards&nbsp;compatibility&nbsp;library.&nbsp;*)</div>
+      <div class="lineNone">000002| (*&nbsp;Bitstring&nbsp;library.</div>
+      <div class="lineNone">000003| &nbsp;*&nbsp;Copyright&nbsp;(C)&nbsp;2008&nbsp;Red&nbsp;Hat&nbsp;Inc.,&nbsp;Richard&nbsp;W.M.&nbsp;Jones</div>
+      <div class="lineNone">000004| &nbsp;*</div>
+      <div class="lineNone">000005| &nbsp;*&nbsp;This&nbsp;library&nbsp;is&nbsp;free&nbsp;software;&nbsp;you&nbsp;can&nbsp;redistribute&nbsp;it&nbsp;and/or</div>
+      <div class="lineNone">000006| &nbsp;*&nbsp;modify&nbsp;it&nbsp;under&nbsp;the&nbsp;terms&nbsp;of&nbsp;the&nbsp;GNU&nbsp;Lesser&nbsp;General&nbsp;Public</div>
+      <div class="lineNone">000007| &nbsp;*&nbsp;License&nbsp;as&nbsp;published&nbsp;by&nbsp;the&nbsp;Free&nbsp;Software&nbsp;Foundation;&nbsp;either</div>
+      <div class="lineNone">000008| &nbsp;*&nbsp;version&nbsp;2&nbsp;of&nbsp;the&nbsp;License,&nbsp;or&nbsp;(at&nbsp;your&nbsp;option)&nbsp;any&nbsp;later&nbsp;version,</div>
+      <div class="lineNone">000009| &nbsp;*&nbsp;with&nbsp;the&nbsp;OCaml&nbsp;linking&nbsp;exception&nbsp;described&nbsp;in&nbsp;COPYING.LIB.</div>
+      <div class="lineNone">000010| &nbsp;*</div>
+      <div class="lineNone">000011| &nbsp;*&nbsp;This&nbsp;library&nbsp;is&nbsp;distributed&nbsp;in&nbsp;the&nbsp;hope&nbsp;that&nbsp;it&nbsp;will&nbsp;be&nbsp;useful,</div>
+      <div class="lineNone">000012| &nbsp;*&nbsp;but&nbsp;WITHOUT&nbsp;ANY&nbsp;WARRANTY;&nbsp;without&nbsp;even&nbsp;the&nbsp;implied&nbsp;warranty&nbsp;of</div>
+      <div class="lineNone">000013| &nbsp;*&nbsp;MERCHANTABILITY&nbsp;or&nbsp;FITNESS&nbsp;FOR&nbsp;A&nbsp;PARTICULAR&nbsp;PURPOSE.&nbsp;&nbsp;See&nbsp;the&nbsp;GNU</div>
+      <div class="lineNone">000014| &nbsp;*&nbsp;Lesser&nbsp;General&nbsp;Public&nbsp;License&nbsp;for&nbsp;more&nbsp;details.</div>
+      <div class="lineNone">000015| &nbsp;*</div>
+      <div class="lineNone">000016| &nbsp;*&nbsp;You&nbsp;should&nbsp;have&nbsp;received&nbsp;a&nbsp;copy&nbsp;of&nbsp;the&nbsp;GNU&nbsp;Lesser&nbsp;General&nbsp;Public</div>
+      <div class="lineNone">000017| &nbsp;*&nbsp;License&nbsp;along&nbsp;with&nbsp;this&nbsp;library;&nbsp;if&nbsp;not,&nbsp;write&nbsp;to&nbsp;the&nbsp;Free&nbsp;Software</div>
+      <div class="lineNone">000018| &nbsp;*&nbsp;Foundation,&nbsp;Inc.,&nbsp;51&nbsp;Franklin&nbsp;Street,&nbsp;Fifth&nbsp;Floor,&nbsp;Boston,&nbsp;MA&nbsp;02110-1301&nbsp;USA</div>
+      <div class="lineNone">000019| &nbsp;*</div>
+      <div class="lineNone">000020| &nbsp;*&nbsp;$Id:&nbsp;bitmatch.ml&nbsp;142&nbsp;2008-07-17&nbsp;15:45:56Z&nbsp;richard.wm.jones&nbsp;$</div>
+      <div class="lineNone">000021| &nbsp;*)</div>
+      <div class="lineNone">000022| (**&nbsp;This&nbsp;is&nbsp;just&nbsp;for&nbsp;backwards&nbsp;compatibility&nbsp;with&nbsp;code</div>
+      <div class="lineNone">000023| &nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;when&nbsp;the&nbsp;library&nbsp;was&nbsp;called&nbsp;bitmatch.&nbsp;&nbsp;You&nbsp;should</div>
+      <div class="lineNone">000024| &nbsp;&nbsp;&nbsp;&nbsp;replace&nbsp;all&nbsp;references&nbsp;to&nbsp;this&nbsp;module&nbsp;with&nbsp;{!Bitstring}.</div>
+      <div class="lineNone">000025| *)</div>
+      <div class="lineNone">000026| &nbsp;</div>
+      <div class="lineNone">000027| include&nbsp;Bitstring</div>
+    </code>
+    <hr class="codeSep"/>
+    <p class="footer">Generated by <a href="http://bisect.x9c.fr">Bisect</a> on 2008-08-26 10:36:20</p>
+  </body>
+</html>
diff --git a/coverage-report/file0003.html b/coverage-report/file0003.html
new file mode 100644 (file)
index 0000000..7a90889
--- /dev/null
@@ -0,0 +1,59 @@
+<html>
+  <head>
+    <title>Bisect report</title>
+    <link rel="stylesheet" type="text/css" href="style.css">
+  </head>
+  <body>
+    <h3>File: bitstring_types.ml (<a href="index.html">return to index</a>)</h3>
+    <hr class="codeSep"/>
+    <h4>Statistics:</h4>
+    <table class="simple">
+      <tr><th>kind</th><th width="16px">&nbsp;</th><th>coverage</th></tr>
+      <tr><td>binding</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>sequence</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>for</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>if/then</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>try</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>while</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>match/function</td><td width="16px">&nbsp;</td><td>0 / 3 (0 %)</td></tr>
+      <tr><td>class expression</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>class initializer</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>class method</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>class value</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>toplevel expression</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+    </table>
+    <hr class="codeSep"/>
+    <h4>Source:</h4>
+    <code>
+      <div class="lineNone">000001| (*&nbsp;Bitstring&nbsp;library.</div>
+      <div class="lineNone">000002| &nbsp;*&nbsp;Copyright&nbsp;(C)&nbsp;2008&nbsp;Red&nbsp;Hat&nbsp;Inc.,&nbsp;Richard&nbsp;W.M.&nbsp;Jones</div>
+      <div class="lineNone">000003| &nbsp;*</div>
+      <div class="lineNone">000004| &nbsp;*&nbsp;This&nbsp;library&nbsp;is&nbsp;free&nbsp;software;&nbsp;you&nbsp;can&nbsp;redistribute&nbsp;it&nbsp;and/or</div>
+      <div class="lineNone">000005| &nbsp;*&nbsp;modify&nbsp;it&nbsp;under&nbsp;the&nbsp;terms&nbsp;of&nbsp;the&nbsp;GNU&nbsp;Lesser&nbsp;General&nbsp;Public</div>
+      <div class="lineNone">000006| &nbsp;*&nbsp;License&nbsp;as&nbsp;published&nbsp;by&nbsp;the&nbsp;Free&nbsp;Software&nbsp;Foundation;&nbsp;either</div>
+      <div class="lineNone">000007| &nbsp;*&nbsp;version&nbsp;2&nbsp;of&nbsp;the&nbsp;License,&nbsp;or&nbsp;(at&nbsp;your&nbsp;option)&nbsp;any&nbsp;later&nbsp;version,</div>
+      <div class="lineNone">000008| &nbsp;*&nbsp;with&nbsp;the&nbsp;OCaml&nbsp;linking&nbsp;exception&nbsp;described&nbsp;in&nbsp;COPYING.LIB.</div>
+      <div class="lineNone">000009| &nbsp;*</div>
+      <div class="lineNone">000010| &nbsp;*&nbsp;This&nbsp;library&nbsp;is&nbsp;distributed&nbsp;in&nbsp;the&nbsp;hope&nbsp;that&nbsp;it&nbsp;will&nbsp;be&nbsp;useful,</div>
+      <div class="lineNone">000011| &nbsp;*&nbsp;but&nbsp;WITHOUT&nbsp;ANY&nbsp;WARRANTY;&nbsp;without&nbsp;even&nbsp;the&nbsp;implied&nbsp;warranty&nbsp;of</div>
+      <div class="lineNone">000012| &nbsp;*&nbsp;MERCHANTABILITY&nbsp;or&nbsp;FITNESS&nbsp;FOR&nbsp;A&nbsp;PARTICULAR&nbsp;PURPOSE.&nbsp;&nbsp;See&nbsp;the&nbsp;GNU</div>
+      <div class="lineNone">000013| &nbsp;*&nbsp;Lesser&nbsp;General&nbsp;Public&nbsp;License&nbsp;for&nbsp;more&nbsp;details.</div>
+      <div class="lineNone">000014| &nbsp;*</div>
+      <div class="lineNone">000015| &nbsp;*&nbsp;You&nbsp;should&nbsp;have&nbsp;received&nbsp;a&nbsp;copy&nbsp;of&nbsp;the&nbsp;GNU&nbsp;Lesser&nbsp;General&nbsp;Public</div>
+      <div class="lineNone">000016| &nbsp;*&nbsp;License&nbsp;along&nbsp;with&nbsp;this&nbsp;library;&nbsp;if&nbsp;not,&nbsp;write&nbsp;to&nbsp;the&nbsp;Free&nbsp;Software</div>
+      <div class="lineNone">000017| &nbsp;*&nbsp;Foundation,&nbsp;Inc.,&nbsp;51&nbsp;Franklin&nbsp;Street,&nbsp;Fifth&nbsp;Floor,&nbsp;Boston,&nbsp;MA&nbsp;02110-1301&nbsp;USA</div>
+      <div class="lineNone">000018| &nbsp;*</div>
+      <div class="lineNone">000019| &nbsp;*&nbsp;$Id:&nbsp;bitstring_types.ml&nbsp;142&nbsp;2008-07-17&nbsp;15:45:56Z&nbsp;richard.wm.jones&nbsp;$</div>
+      <div class="lineNone">000020| &nbsp;*)</div>
+      <div class="lineNone">000021| &nbsp;</div>
+      <div class="lineNone">000022| type&nbsp;endian&nbsp;=&nbsp;BigEndian&nbsp;|&nbsp;LittleEndian&nbsp;|&nbsp;NativeEndian</div>
+      <div class="lineNone">000023| &nbsp;</div>
+      <div class="lineNone">000024| let&nbsp;string_of_endian&nbsp;=&nbsp;function</div>
+      <div class="lineAllUnvisited">000025| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[0]*)&quot;bigendian&quot;</div>
+      <div class="lineAllUnvisited">000026| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*[0]*)&quot;littleendian&quot;</div>
+      <div class="lineAllUnvisited">000027| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[0]*)&quot;nativeendian&quot;</div>
+    </code>
+    <hr class="codeSep"/>
+    <p class="footer">Generated by <a href="http://bisect.x9c.fr">Bisect</a> on 2008-08-26 10:36:20</p>
+  </body>
+</html>
diff --git a/coverage-report/index.html b/coverage-report/index.html
new file mode 100644 (file)
index 0000000..df94381
--- /dev/null
@@ -0,0 +1,97 @@
+<html>
+  <head>
+    <title>Bisect report</title>
+    <link rel="stylesheet" type="text/css" href="style.css">
+  </head>
+  <body>
+    <h1>Bisect report</h1>
+    <hr class="indexSep"/>
+    <center>
+    <h3>Overall statistics</h3
+    <table class="simple">
+      <tr><th>kind</th><th width="16px">&nbsp;</th><th>coverage</th></tr>
+      <tr><td>binding</td><td width="16px">&nbsp;</td><td>123 / 235 (52 %)</td></tr>
+      <tr><td>sequence</td><td width="16px">&nbsp;</td><td>37 / 93 (39 %)</td></tr>
+      <tr><td>for</td><td width="16px">&nbsp;</td><td>3 / 5 (60 %)</td></tr>
+      <tr><td>if/then</td><td width="16px">&nbsp;</td><td>72 / 163 (44 %)</td></tr>
+      <tr><td>try</td><td width="16px">&nbsp;</td><td>0 / 2 (0 %)</td></tr>
+      <tr><td>while</td><td width="16px">&nbsp;</td><td>0 / 3 (0 %)</td></tr>
+      <tr><td>match/function</td><td width="16px">&nbsp;</td><td>41 / 80 (51 %)</td></tr>
+      <tr><td>class expression</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>class initializer</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>class method</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>class value</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+      <tr><td>toplevel expression</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
+    </table>
+    <br/>
+    </center>
+    <hr class="indexSep"/>
+    <center>
+    <br/>
+    <h3>Per-file coverage</h3
+      <table class="simple">
+        <tr>
+          <th>coverage</th>
+          <th width="16px">&nbsp;</th>
+          <th>file</th>
+        </tr>
+        <tr>
+          <td>
+            <table class="gauge">
+              <tr>
+                <td class="gaugeOK" width="100px"/>
+                <td class="gaugeKO" width="0px"/>
+                <td>&nbsp;-%</td>
+              </tr>
+            </table>
+          </td>
+          <td width="16px">&nbsp;</td>
+          <td><a href="file0002.html">bitmatch.ml</a></td>
+        </tr>
+        <tr>
+          <td>
+            <table class="gauge">
+              <tr>
+                <td class="gaugeOK" width="47px"/>
+                <td class="gaugeKO" width="53px"/>
+                <td>&nbsp;47%</td>
+              </tr>
+            </table>
+          </td>
+          <td width="16px">&nbsp;</td>
+          <td><a href="file0001.html">bitstring.ml</a></td>
+        </tr>
+        <tr>
+          <td>
+            <table class="gauge">
+              <tr>
+                <td class="gaugeOK" width="100px"/>
+                <td class="gaugeKO" width="0px"/>
+                <td>&nbsp;100%</td>
+              </tr>
+            </table>
+          </td>
+          <td width="16px">&nbsp;</td>
+          <td><a href="file0000.html">bitstring_config.ml</a></td>
+        </tr>
+        <tr>
+          <td>
+            <table class="gauge">
+              <tr>
+                <td class="gaugeOK" width="0px"/>
+                <td class="gaugeKO" width="100px"/>
+                <td>&nbsp;0%</td>
+              </tr>
+            </table>
+          </td>
+          <td width="16px">&nbsp;</td>
+          <td><a href="file0003.html">bitstring_types.ml</a></td>
+        </tr>
+      </table>
+    </center>
+    <br/>
+    <br/>
+    <hr class="indexSep"/>
+    <p class="footer">Generated by <a href="http://bisect.x9c.fr">Bisect</a> on 2008-08-26 10:36:20</p>
+  </body>
+</html>
diff --git a/coverage-report/style.css b/coverage-report/style.css
new file mode 100644 (file)
index 0000000..df7402b
--- /dev/null
@@ -0,0 +1,70 @@
+body {
+    background: white;
+    white-space: nowrap;
+}
+
+.footer {
+    font-size: smaller;
+    text-align: center;
+}
+
+.codeSep {
+    border: none 0;
+    border-top: 1px solid gray;
+    height: 1px;
+}
+
+.indexSep {
+    border: none 0;
+    border-top: 1px solid gray;
+    height: 1px;
+    width: 75%;
+}
+
+.lineNone { white-space: nowrap; background: white; }
+.lineAllVisited { white-space: nowrap; background: green; }
+.lineAllUnvisited { white-space: nowrap; background: red; }
+.lineMixed { white-space: nowrap; background: yellow; }
+
+table.simple {
+    border-width: 1px;
+    border-spacing: 0px;
+    border-top-style: solid;
+    border-bottom-style: solid;
+    border-color: black;
+}
+
+table.simple th {
+    border-width: 1px;
+    border-spacing: 0px;
+    border-bottom-style: solid;
+    border-color: black;
+    text-align: center;
+    font-weight: bold;
+}
+
+table.simple td {
+    border-width: 1px;
+    border-spacing: 0px;
+    border-style: none;
+}
+
+table.gauge {
+    border-width: 0px;
+    border-spacing: 0px;
+    padding: 0px;
+    border-style: none;
+    border-collapse: collapse;
+}
+
+table.gauge td {
+    border-width: 0px;
+    border-spacing: 0px;
+    padding: 0px;
+    border-style: none;
+    border-collapse: collapse;
+}
+
+.gaugeOK { background: green; }
+.gaugeKO { background: red; }
+