Updated test coverage report.
[ocaml-bitstring.git] / coverage-report / file0001.html
1 <html>
2   <head>
3     <title>Bisect report</title>
4     <link rel="stylesheet" type="text/css" href="style.css">
5   </head>
6   <body>
7     <h3>File: bitstring.ml (<a href="index.html">return to index</a>)</h3>
8     <hr class="codeSep"/>
9     <h4>Statistics:</h4>
10     <table class="simple">
11       <tr><th>kind</th><th width="16px">&nbsp;</th><th>coverage</th></tr>
12       <tr><td>binding</td><td width="16px">&nbsp;</td><td>226 / 245 (92 %)</td></tr>
13       <tr><td>sequence</td><td width="16px">&nbsp;</td><td>83 / 95 (87 %)</td></tr>
14       <tr><td>for</td><td width="16px">&nbsp;</td><td>5 / 5 (100 %)</td></tr>
15       <tr><td>if/then</td><td width="16px">&nbsp;</td><td>141 / 194 (72 %)</td></tr>
16       <tr><td>try</td><td width="16px">&nbsp;</td><td>1 / 2 (50 %)</td></tr>
17       <tr><td>while</td><td width="16px">&nbsp;</td><td>3 / 3 (100 %)</td></tr>
18       <tr><td>match/function</td><td width="16px">&nbsp;</td><td>64 / 87 (73 %)</td></tr>
19       <tr><td>class expression</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
20       <tr><td>class initializer</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
21       <tr><td>class method</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
22       <tr><td>class value</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
23       <tr><td>toplevel expression</td><td width="16px">&nbsp;</td><td>0 / 0 (- %)</td></tr>
24     </table>
25     <hr class="codeSep"/>
26     <h4>Source:</h4>
27     <code>
28       <div class="lineNone">000001| (*&nbsp;Bitstring&nbsp;library.</div>
29       <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>
30       <div class="lineNone">000003| &nbsp;*</div>
31       <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>
32       <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>
33       <div class="lineNone">000006| &nbsp;*&nbsp;License&nbsp;as&nbsp;published&nbsp;by&nbsp;the&nbsp;Free&nbsp;Software&nbsp;Foundation;&nbsp;either</div>
34       <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>
35       <div class="lineNone">000008| &nbsp;*&nbsp;with&nbsp;the&nbsp;OCaml&nbsp;linking&nbsp;exception&nbsp;described&nbsp;in&nbsp;COPYING.LIB.</div>
36       <div class="lineNone">000009| &nbsp;*</div>
37       <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>
38       <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>
39       <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>
40       <div class="lineNone">000013| &nbsp;*&nbsp;Lesser&nbsp;General&nbsp;Public&nbsp;License&nbsp;for&nbsp;more&nbsp;details.</div>
41       <div class="lineNone">000014| &nbsp;*</div>
42       <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>
43       <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>
44       <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>
45       <div class="lineNone">000018| &nbsp;*</div>
46       <div class="lineNone">000019| &nbsp;*&nbsp;$Id:&nbsp;bitstring.ml&nbsp;159&nbsp;2008-08-27&nbsp;11:26:45Z&nbsp;richard.wm.jones&nbsp;$</div>
47       <div class="lineNone">000020| &nbsp;*)</div>
48       <div class="lineNone">000021| &nbsp;</div>
49       <div class="lineNone">000022| open&nbsp;Printf</div>
50       <div class="lineNone">000023| &nbsp;</div>
51       <div class="lineNone">000024| include&nbsp;Bitstring_types</div>
52       <div class="lineNone">000025| include&nbsp;Bitstring_config</div>
53       <div class="lineNone">000026| &nbsp;</div>
54       <div class="lineNone">000027| (*&nbsp;Enable&nbsp;runtime&nbsp;debug&nbsp;messages.&nbsp;&nbsp;Must&nbsp;also&nbsp;have&nbsp;been&nbsp;enabled</div>
55       <div class="lineNone">000028| &nbsp;*&nbsp;in&nbsp;pa_bitstring.ml.</div>
56       <div class="lineNone">000029| &nbsp;*)</div>
57       <div class="lineAllVisited">000030| let&nbsp;debug&nbsp;=&nbsp;(*[43]*)ref&nbsp;false</div>
58       <div class="lineNone">000031| &nbsp;</div>
59       <div class="lineNone">000032| (*&nbsp;Exceptions.&nbsp;*)</div>
60       <div class="lineNone">000033| exception&nbsp;Construct_failure&nbsp;of&nbsp;string&nbsp;*&nbsp;string&nbsp;*&nbsp;int&nbsp;*&nbsp;int</div>
61       <div class="lineNone">000034| &nbsp;</div>
62       <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>
63       <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>
64       <div class="lineNone">000037| &nbsp;*&nbsp;are&nbsp;counted&nbsp;in&nbsp;bits,&nbsp;not&nbsp;bytes.</div>
65       <div class="lineNone">000038| &nbsp;*)</div>
66       <div class="lineNone">000039| type&nbsp;bitstring&nbsp;=&nbsp;string&nbsp;*&nbsp;int&nbsp;*&nbsp;int</div>
67       <div class="lineNone">000040| &nbsp;</div>
68       <div class="lineNone">000041| type&nbsp;t&nbsp;=&nbsp;bitstring</div>
69       <div class="lineNone">000042| &nbsp;</div>
70       <div class="lineNone">000043| (*&nbsp;Functions&nbsp;to&nbsp;create&nbsp;and&nbsp;load&nbsp;bitstrings.&nbsp;*)</div>
71       <div class="lineAllVisited">000044| let&nbsp;empty_bitstring&nbsp;=&nbsp;(*[43]*)&quot;&quot;,&nbsp;0,&nbsp;0</div>
72       <div class="lineNone">000045| &nbsp;</div>
73       <div class="lineNone">000046| let&nbsp;make_bitstring&nbsp;len&nbsp;c&nbsp;=</div>
74       <div class="lineAllVisited">000047| &nbsp;&nbsp;(*[1325989]*)if&nbsp;len&nbsp;&gt;=&nbsp;0&nbsp;then&nbsp;(*[1325989]*)String.make&nbsp;((len+7)&nbsp;lsr&nbsp;3)&nbsp;c,&nbsp;0,&nbsp;len</div>
75       <div class="lineNone">000048| &nbsp;&nbsp;else</div>
76       <div class="lineAllUnvisited">000049| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)invalid_arg&nbsp;(</div>
77       <div class="lineNone">000050| &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>
78       <div class="lineNone">000051| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
79       <div class="lineNone">000052| &nbsp;</div>
80       <div class="lineAllVisited">000053| let&nbsp;create_bitstring&nbsp;len&nbsp;=&nbsp;(*[42903]*)make_bitstring&nbsp;len&nbsp;'\000'</div>
81       <div class="lineNone">000054| &nbsp;</div>
82       <div class="lineAllVisited">000055| let&nbsp;zeroes_bitstring&nbsp;=&nbsp;(*[43]*)create_bitstring</div>
83       <div class="lineNone">000056| &nbsp;</div>
84       <div class="lineAllVisited">000057| let&nbsp;ones_bitstring&nbsp;len&nbsp;=&nbsp;(*[1278457]*)make_bitstring&nbsp;len&nbsp;'\xff'</div>
85       <div class="lineNone">000058| &nbsp;</div>
86       <div class="lineAllVisited">000059| let&nbsp;bitstring_of_string&nbsp;str&nbsp;=&nbsp;(*[2]*)str,&nbsp;0,&nbsp;String.length&nbsp;str&nbsp;lsl&nbsp;3</div>
87       <div class="lineNone">000060| &nbsp;</div>
88       <div class="lineNone">000061| let&nbsp;bitstring_of_chan&nbsp;chan&nbsp;=</div>
89       <div class="lineAllVisited">000062| &nbsp;&nbsp;(*[36]*)let&nbsp;tmpsize&nbsp;=&nbsp;16384&nbsp;in</div>
90       <div class="lineAllVisited">000063| &nbsp;&nbsp;(*[36]*)let&nbsp;buf&nbsp;=&nbsp;Buffer.create&nbsp;tmpsize&nbsp;in</div>
91       <div class="lineAllVisited">000064| &nbsp;&nbsp;(*[36]*)let&nbsp;tmp&nbsp;=&nbsp;String.create&nbsp;tmpsize&nbsp;in</div>
92       <div class="lineAllVisited">000065| &nbsp;&nbsp;(*[36]*)let&nbsp;n&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
93       <div class="lineAllVisited">000066| &nbsp;&nbsp;(*[36]*)while&nbsp;(*[72]*)n&nbsp;:=&nbsp;input&nbsp;chan&nbsp;tmp&nbsp;0&nbsp;tmpsize;&nbsp;!(*[72]*)n&nbsp;&gt;&nbsp;0&nbsp;do</div>
94       <div class="lineAllVisited">000067| &nbsp;&nbsp;&nbsp;&nbsp;(*[36]*)Buffer.add_substring&nbsp;buf&nbsp;tmp&nbsp;0&nbsp;!n;</div>
95       <div class="lineNone">000068| &nbsp;&nbsp;done;</div>
96       <div class="lineAllVisited">000069| &nbsp;&nbsp;(*[36]*)Buffer.contents&nbsp;buf,&nbsp;0,&nbsp;Buffer.length&nbsp;buf&nbsp;lsl&nbsp;3</div>
97       <div class="lineNone">000070| &nbsp;</div>
98       <div class="lineNone">000071| let&nbsp;bitstring_of_chan_max&nbsp;chan&nbsp;max&nbsp;=</div>
99       <div class="lineAllVisited">000072| &nbsp;&nbsp;(*[2]*)let&nbsp;tmpsize&nbsp;=&nbsp;16384&nbsp;in</div>
100       <div class="lineAllVisited">000073| &nbsp;&nbsp;(*[2]*)let&nbsp;buf&nbsp;=&nbsp;Buffer.create&nbsp;tmpsize&nbsp;in</div>
101       <div class="lineAllVisited">000074| &nbsp;&nbsp;(*[2]*)let&nbsp;tmp&nbsp;=&nbsp;String.create&nbsp;tmpsize&nbsp;in</div>
102       <div class="lineAllVisited">000075| &nbsp;&nbsp;(*[2]*)let&nbsp;len&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
103       <div class="lineAllVisited">000076| &nbsp;&nbsp;(*[2]*)let&nbsp;rec&nbsp;loop&nbsp;()&nbsp;=</div>
104       <div class="lineAllVisited">000077| &nbsp;&nbsp;&nbsp;&nbsp;(*[2]*)if&nbsp;!len&nbsp;&lt;&nbsp;max&nbsp;then&nbsp;(</div>
105       <div class="lineAllVisited">000078| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2]*)let&nbsp;r&nbsp;=&nbsp;min&nbsp;tmpsize&nbsp;(max&nbsp;-&nbsp;!len)&nbsp;in</div>
106       <div class="lineAllVisited">000079| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2]*)let&nbsp;n&nbsp;=&nbsp;input&nbsp;chan&nbsp;tmp&nbsp;0&nbsp;r&nbsp;in</div>
107       <div class="lineAllUnvisited">000080| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;n&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
108       <div class="lineAllVisited">000081| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2]*)Buffer.add_substring&nbsp;buf&nbsp;tmp&nbsp;0&nbsp;n;</div>
109       <div class="lineAllVisited">000082| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2]*)len&nbsp;(*[2]*):=&nbsp;!len&nbsp;+&nbsp;n;</div>
110       <div class="lineAllVisited">000083| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2]*)loop&nbsp;()</div>
111       <div class="lineNone">000084| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</div>
112       <div class="lineNone">000085| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
113       <div class="lineNone">000086| &nbsp;&nbsp;in</div>
114       <div class="lineAllVisited">000087| &nbsp;&nbsp;(*[2]*)loop&nbsp;(*[2]*)();</div>
115       <div class="lineAllVisited">000088| &nbsp;&nbsp;(*[2]*)Buffer.contents&nbsp;buf,&nbsp;0,&nbsp;!len&nbsp;lsl&nbsp;3</div>
116       <div class="lineNone">000089| &nbsp;</div>
117       <div class="lineNone">000090| let&nbsp;bitstring_of_file_descr&nbsp;fd&nbsp;=</div>
118       <div class="lineAllVisited">000091| &nbsp;&nbsp;(*[1]*)let&nbsp;tmpsize&nbsp;=&nbsp;16384&nbsp;in</div>
119       <div class="lineAllVisited">000092| &nbsp;&nbsp;(*[1]*)let&nbsp;buf&nbsp;=&nbsp;Buffer.create&nbsp;tmpsize&nbsp;in</div>
120       <div class="lineAllVisited">000093| &nbsp;&nbsp;(*[1]*)let&nbsp;tmp&nbsp;=&nbsp;String.create&nbsp;tmpsize&nbsp;in</div>
121       <div class="lineAllVisited">000094| &nbsp;&nbsp;(*[1]*)let&nbsp;n&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
122       <div class="lineAllVisited">000095| &nbsp;&nbsp;(*[1]*)while&nbsp;(*[2]*)n&nbsp;:=&nbsp;Unix.read&nbsp;fd&nbsp;tmp&nbsp;0&nbsp;tmpsize;&nbsp;!(*[2]*)n&nbsp;&gt;&nbsp;0&nbsp;do</div>
123       <div class="lineAllVisited">000096| &nbsp;&nbsp;&nbsp;&nbsp;(*[1]*)Buffer.add_substring&nbsp;buf&nbsp;tmp&nbsp;0&nbsp;!n;</div>
124       <div class="lineNone">000097| &nbsp;&nbsp;done;</div>
125       <div class="lineAllVisited">000098| &nbsp;&nbsp;(*[1]*)Buffer.contents&nbsp;buf,&nbsp;0,&nbsp;Buffer.length&nbsp;buf&nbsp;lsl&nbsp;3</div>
126       <div class="lineNone">000099| &nbsp;</div>
127       <div class="lineNone">000100| let&nbsp;bitstring_of_file_descr_max&nbsp;fd&nbsp;max&nbsp;=</div>
128       <div class="lineAllVisited">000101| &nbsp;&nbsp;(*[2]*)let&nbsp;tmpsize&nbsp;=&nbsp;16384&nbsp;in</div>
129       <div class="lineAllVisited">000102| &nbsp;&nbsp;(*[2]*)let&nbsp;buf&nbsp;=&nbsp;Buffer.create&nbsp;tmpsize&nbsp;in</div>
130       <div class="lineAllVisited">000103| &nbsp;&nbsp;(*[2]*)let&nbsp;tmp&nbsp;=&nbsp;String.create&nbsp;tmpsize&nbsp;in</div>
131       <div class="lineAllVisited">000104| &nbsp;&nbsp;(*[2]*)let&nbsp;len&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
132       <div class="lineAllVisited">000105| &nbsp;&nbsp;(*[2]*)let&nbsp;rec&nbsp;loop&nbsp;()&nbsp;=</div>
133       <div class="lineAllVisited">000106| &nbsp;&nbsp;&nbsp;&nbsp;(*[2]*)if&nbsp;!len&nbsp;&lt;&nbsp;max&nbsp;then&nbsp;(</div>
134       <div class="lineAllVisited">000107| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2]*)let&nbsp;r&nbsp;=&nbsp;min&nbsp;tmpsize&nbsp;(max&nbsp;-&nbsp;!len)&nbsp;in</div>
135       <div class="lineAllVisited">000108| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2]*)let&nbsp;n&nbsp;=&nbsp;Unix.read&nbsp;fd&nbsp;tmp&nbsp;0&nbsp;r&nbsp;in</div>
136       <div class="lineAllUnvisited">000109| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;n&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
137       <div class="lineAllVisited">000110| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2]*)Buffer.add_substring&nbsp;buf&nbsp;tmp&nbsp;0&nbsp;n;</div>
138       <div class="lineAllVisited">000111| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2]*)len&nbsp;(*[2]*):=&nbsp;!len&nbsp;+&nbsp;n;</div>
139       <div class="lineAllVisited">000112| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2]*)loop&nbsp;()</div>
140       <div class="lineNone">000113| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</div>
141       <div class="lineNone">000114| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
142       <div class="lineNone">000115| &nbsp;&nbsp;in</div>
143       <div class="lineAllVisited">000116| &nbsp;&nbsp;(*[2]*)loop&nbsp;(*[2]*)();</div>
144       <div class="lineAllVisited">000117| &nbsp;&nbsp;(*[2]*)Buffer.contents&nbsp;buf,&nbsp;0,&nbsp;!len&nbsp;lsl&nbsp;3</div>
145       <div class="lineNone">000118| &nbsp;</div>
146       <div class="lineNone">000119| let&nbsp;bitstring_of_file&nbsp;fname&nbsp;=</div>
147       <div class="lineAllVisited">000120| &nbsp;&nbsp;(*[35]*)let&nbsp;chan&nbsp;=&nbsp;open_in_bin&nbsp;fname&nbsp;in</div>
148       <div class="lineAllVisited">000121| &nbsp;&nbsp;(*[35]*)try</div>
149       <div class="lineAllVisited">000122| &nbsp;&nbsp;&nbsp;&nbsp;(*[35]*)let&nbsp;bs&nbsp;=&nbsp;bitstring_of_chan&nbsp;chan&nbsp;in</div>
150       <div class="lineAllVisited">000123| &nbsp;&nbsp;&nbsp;&nbsp;(*[35]*)close_in&nbsp;(*[35]*)chan;</div>
151       <div class="lineAllVisited">000124| &nbsp;&nbsp;&nbsp;&nbsp;(*[35]*)bs</div>
152       <div class="lineNone">000125| &nbsp;&nbsp;with&nbsp;exn&nbsp;-&gt;</div>
153       <div class="lineAllUnvisited">000126| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)close_in&nbsp;(*[0]*)chan;</div>
154       <div class="lineAllUnvisited">000127| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)raise&nbsp;exn</div>
155       <div class="lineNone">000128| &nbsp;</div>
156       <div class="lineAllVisited">000129| let&nbsp;bitstring_length&nbsp;(_,&nbsp;_,&nbsp;len)&nbsp;=&nbsp;(*[1565492]*)len</div>
157       <div class="lineNone">000130| &nbsp;</div>
158       <div class="lineNone">000131| let&nbsp;subbitstring&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;off'&nbsp;len'&nbsp;=</div>
159       <div class="lineAllVisited">000132| &nbsp;&nbsp;(*[1]*)let&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;off'&nbsp;in</div>
160       <div class="lineMixed">000133| &nbsp;&nbsp;(*[1]*)if&nbsp;len&nbsp;&lt;&nbsp;off'&nbsp;+&nbsp;len'&nbsp;then&nbsp;(*[0]*)invalid_arg&nbsp;&quot;subbitstring&quot;;</div>
161       <div class="lineAllVisited">000134| &nbsp;&nbsp;((*[1]*)data,&nbsp;off,&nbsp;len')</div>
162       <div class="lineNone">000135| &nbsp;</div>
163       <div class="lineNone">000136| let&nbsp;dropbits&nbsp;n&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;=</div>
164       <div class="lineAllVisited">000137| &nbsp;&nbsp;(*[336643]*)let&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;n&nbsp;in</div>
165       <div class="lineAllVisited">000138| &nbsp;&nbsp;(*[336643]*)let&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;n&nbsp;in</div>
166       <div class="lineMixed">000139| &nbsp;&nbsp;(*[336643]*)if&nbsp;len&nbsp;&lt;&nbsp;0&nbsp;then&nbsp;(*[0]*)invalid_arg&nbsp;&quot;dropbits&quot;;</div>
167       <div class="lineAllVisited">000140| &nbsp;&nbsp;((*[336643]*)data,&nbsp;off,&nbsp;len)</div>
168       <div class="lineNone">000141| &nbsp;</div>
169       <div class="lineNone">000142| let&nbsp;takebits&nbsp;n&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;=</div>
170       <div class="lineMixed">000143| &nbsp;&nbsp;(*[100]*)if&nbsp;len&nbsp;&lt;&nbsp;n&nbsp;then&nbsp;(*[0]*)invalid_arg&nbsp;&quot;takebits&quot;;</div>
171       <div class="lineAllVisited">000144| &nbsp;&nbsp;((*[100]*)data,&nbsp;off,&nbsp;n)</div>
172       <div class="lineNone">000145| &nbsp;</div>
173       <div class="lineNone">000146| (*----------------------------------------------------------------------*)</div>
174       <div class="lineNone">000147| (*&nbsp;Bitwise&nbsp;functions.</div>
175       <div class="lineNone">000148| &nbsp;*</div>
176       <div class="lineNone">000149| &nbsp;*&nbsp;We&nbsp;try&nbsp;to&nbsp;isolate&nbsp;all&nbsp;bitwise&nbsp;functions&nbsp;within&nbsp;these&nbsp;modules.</div>
177       <div class="lineNone">000150| &nbsp;*)</div>
178       <div class="lineNone">000151| &nbsp;</div>
179       <div class="lineNone">000152| module&nbsp;I&nbsp;=&nbsp;struct</div>
180       <div class="lineNone">000153| &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>
181       <div class="lineNone">000154| &nbsp;&nbsp;external&nbsp;(&lt;&lt;&lt;)&nbsp;:&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;%lslint&quot;</div>
182       <div class="lineNone">000155| &nbsp;&nbsp;external&nbsp;(&gt;&gt;&gt;)&nbsp;:&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;%lsrint&quot;</div>
183       <div class="lineNone">000156| &nbsp;&nbsp;external&nbsp;to_int&nbsp;:&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;%identity&quot;</div>
184       <div class="lineAllVisited">000157| &nbsp;&nbsp;let&nbsp;zero&nbsp;=&nbsp;(*[43]*)0</div>
185       <div class="lineAllVisited">000158| &nbsp;&nbsp;let&nbsp;one&nbsp;=&nbsp;(*[43]*)1</div>
186       <div class="lineAllVisited">000159| &nbsp;&nbsp;let&nbsp;minus_one&nbsp;=&nbsp;(*[43]*)-1</div>
187       <div class="lineAllVisited">000160| &nbsp;&nbsp;let&nbsp;ff&nbsp;=&nbsp;(*[43]*)0xff</div>
188       <div class="lineNone">000161| &nbsp;</div>
189       <div class="lineNone">000162| &nbsp;&nbsp;(*&nbsp;Create&nbsp;a&nbsp;mask&nbsp;0-31&nbsp;bits&nbsp;wide.&nbsp;*)</div>
190       <div class="lineNone">000163| &nbsp;&nbsp;let&nbsp;mask&nbsp;bits&nbsp;=</div>
191       <div class="lineAllVisited">000164| &nbsp;&nbsp;&nbsp;&nbsp;(*[2342]*)if&nbsp;bits&nbsp;&lt;&nbsp;30&nbsp;then</div>
192       <div class="lineAllVisited">000165| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((*[1952]*)one&nbsp;&lt;&lt;&lt;&nbsp;bits)&nbsp;-&nbsp;1</div>
193       <div class="lineAllVisited">000166| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[390]*)if&nbsp;bits&nbsp;=&nbsp;30&nbsp;then</div>
194       <div class="lineAllUnvisited">000167| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)max_int</div>
195       <div class="lineAllVisited">000168| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[390]*)if&nbsp;bits&nbsp;=&nbsp;31&nbsp;then</div>
196       <div class="lineAllVisited">000169| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[390]*)minus_one</div>
197       <div class="lineNone">000170| &nbsp;&nbsp;&nbsp;&nbsp;else</div>
198       <div class="lineAllUnvisited">000171| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)invalid_arg&nbsp;&quot;Bitstring.I.mask&quot;</div>
199       <div class="lineNone">000172| &nbsp;</div>
200       <div class="lineNone">000173| &nbsp;&nbsp;(*&nbsp;Byte&nbsp;swap&nbsp;an&nbsp;int&nbsp;of&nbsp;a&nbsp;given&nbsp;size.&nbsp;*)</div>
201       <div class="lineNone">000174| &nbsp;&nbsp;let&nbsp;byteswap&nbsp;v&nbsp;bits&nbsp;=</div>
202       <div class="lineMixed">000175| &nbsp;&nbsp;&nbsp;&nbsp;(*[780]*)if&nbsp;bits&nbsp;&lt;=&nbsp;8&nbsp;then&nbsp;(*[0]*)v</div>
203       <div class="lineAllVisited">000176| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[780]*)if&nbsp;bits&nbsp;&lt;=&nbsp;16&nbsp;then&nbsp;(</div>
204       <div class="lineAllVisited">000177| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[260]*)let&nbsp;shift&nbsp;=&nbsp;bits-8&nbsp;in</div>
205       <div class="lineAllVisited">000178| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[260]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;shift&nbsp;in</div>
206       <div class="lineAllVisited">000179| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[260]*)let&nbsp;v2&nbsp;=&nbsp;((v&nbsp;land&nbsp;(mask&nbsp;shift))&nbsp;&lt;&lt;&lt;&nbsp;8)&nbsp;in</div>
207       <div class="lineAllVisited">000180| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v2&nbsp;(*[260]*)lor&nbsp;v1</div>
208       <div class="lineAllVisited">000181| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[520]*)if&nbsp;bits&nbsp;&lt;=&nbsp;24&nbsp;then&nbsp;(</div>
209       <div class="lineAllVisited">000182| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[260]*)let&nbsp;shift&nbsp;=&nbsp;bits&nbsp;-&nbsp;16&nbsp;in</div>
210       <div class="lineAllVisited">000183| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[260]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;(8+shift)&nbsp;in</div>
211       <div class="lineAllVisited">000184| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[260]*)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>
212       <div class="lineAllVisited">000185| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[260]*)let&nbsp;v3&nbsp;=&nbsp;(v&nbsp;land&nbsp;(mask&nbsp;shift))&nbsp;&lt;&lt;&lt;&nbsp;16&nbsp;in</div>
213       <div class="lineAllVisited">000186| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v3&nbsp;lor&nbsp;v2&nbsp;(*[260]*)lor&nbsp;v1</div>
214       <div class="lineNone">000187| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
215       <div class="lineAllVisited">000188| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[260]*)let&nbsp;shift&nbsp;=&nbsp;bits&nbsp;-&nbsp;24&nbsp;in</div>
216       <div class="lineAllVisited">000189| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[260]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;(16+shift)&nbsp;in</div>
217       <div class="lineAllVisited">000190| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[260]*)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>
218       <div class="lineAllVisited">000191| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[260]*)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>
219       <div class="lineAllVisited">000192| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[260]*)let&nbsp;v4&nbsp;=&nbsp;(v&nbsp;land&nbsp;(mask&nbsp;shift))&nbsp;&lt;&lt;&lt;&nbsp;24&nbsp;in</div>
220       <div class="lineAllVisited">000193| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v4&nbsp;lor&nbsp;v3&nbsp;lor&nbsp;v2&nbsp;(*[260]*)lor&nbsp;v1</div>
221       <div class="lineNone">000194| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
222       <div class="lineNone">000195| &nbsp;</div>
223       <div class="lineNone">000196| &nbsp;&nbsp;(*&nbsp;Check&nbsp;a&nbsp;value&nbsp;is&nbsp;in&nbsp;range&nbsp;0&nbsp;..&nbsp;2^bits-1.&nbsp;*)</div>
224       <div class="lineNone">000197| &nbsp;&nbsp;let&nbsp;range_unsigned&nbsp;v&nbsp;bits&nbsp;=</div>
225       <div class="lineAllVisited">000198| &nbsp;&nbsp;&nbsp;&nbsp;(*[1172]*)let&nbsp;mask&nbsp;=&nbsp;lnot&nbsp;(mask&nbsp;bits)&nbsp;in</div>
226       <div class="lineAllVisited">000199| &nbsp;&nbsp;&nbsp;&nbsp;(v&nbsp;(*[1172]*)land&nbsp;mask)&nbsp;=&nbsp;zero</div>
227       <div class="lineNone">000200| &nbsp;</div>
228       <div class="lineNone">000201| &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>
229       <div class="lineNone">000202| &nbsp;&nbsp;&nbsp;*&nbsp;(big&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;top).</div>
230       <div class="lineNone">000203| &nbsp;&nbsp;&nbsp;*)</div>
231       <div class="lineNone">000204| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_be&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
232       <div class="lineAllVisited">000205| &nbsp;&nbsp;&nbsp;&nbsp;(*[1436]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
233       <div class="lineAllVisited">000206| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1044]*)map_bytes_be&nbsp;g&nbsp;f&nbsp;(v&nbsp;&gt;&gt;&gt;&nbsp;8)&nbsp;(*[1044]*)(bits-8);</div>
234       <div class="lineAllVisited">000207| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1044]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
235       <div class="lineAllVisited">000208| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1044]*)f&nbsp;(to_int&nbsp;lsb)</div>
236       <div class="lineAllVisited">000209| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[262]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
237       <div class="lineAllVisited">000210| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[130]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
238       <div class="lineAllVisited">000211| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[130]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
239       <div class="lineNone">000212| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
240       <div class="lineNone">000213| &nbsp;</div>
241       <div class="lineNone">000214| &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>
242       <div class="lineNone">000215| &nbsp;&nbsp;&nbsp;*&nbsp;(little&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;root).</div>
243       <div class="lineNone">000216| &nbsp;&nbsp;&nbsp;*)</div>
244       <div class="lineNone">000217| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_le&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
245       <div class="lineAllVisited">000218| &nbsp;&nbsp;&nbsp;&nbsp;(*[2860]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
246       <div class="lineAllVisited">000219| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2080]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
247       <div class="lineAllVisited">000220| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2080]*)f&nbsp;(*[2080]*)(to_int&nbsp;lsb);</div>
248       <div class="lineAllVisited">000221| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2080]*)map_bytes_le&nbsp;g&nbsp;f&nbsp;(v&nbsp;&gt;&gt;&gt;&nbsp;8)&nbsp;(bits-8)</div>
249       <div class="lineAllVisited">000222| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[520]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
250       <div class="lineAllVisited">000223| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[260]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
251       <div class="lineAllVisited">000224| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[260]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
252       <div class="lineNone">000225| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
253       <div class="lineNone">000226| end</div>
254       <div class="lineNone">000227| &nbsp;</div>
255       <div class="lineNone">000228| module&nbsp;I32&nbsp;=&nbsp;struct</div>
256       <div class="lineNone">000229| &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>
257       <div class="lineNone">000230| &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>
258       <div class="lineNone">000231| &nbsp;&nbsp;&nbsp;*&nbsp;down&nbsp;bugs.</div>
259       <div class="lineNone">000232| &nbsp;&nbsp;&nbsp;*)</div>
260       <div class="lineAllVisited">000233| &nbsp;&nbsp;let&nbsp;(&lt;&lt;&lt;)&nbsp;=&nbsp;(*[43]*)Int32.shift_left</div>
261       <div class="lineAllVisited">000234| &nbsp;&nbsp;let&nbsp;(&gt;&gt;&gt;)&nbsp;=&nbsp;(*[43]*)Int32.shift_right_logical</div>
262       <div class="lineAllVisited">000235| &nbsp;&nbsp;let&nbsp;(land)&nbsp;=&nbsp;(*[43]*)Int32.logand</div>
263       <div class="lineAllVisited">000236| &nbsp;&nbsp;let&nbsp;(lor)&nbsp;=&nbsp;(*[43]*)Int32.logor</div>
264       <div class="lineAllVisited">000237| &nbsp;&nbsp;let&nbsp;lnot&nbsp;=&nbsp;(*[43]*)Int32.lognot</div>
265       <div class="lineAllVisited">000238| &nbsp;&nbsp;let&nbsp;pred&nbsp;=&nbsp;(*[43]*)Int32.pred</div>
266       <div class="lineAllVisited">000239| &nbsp;&nbsp;let&nbsp;max_int&nbsp;=&nbsp;(*[43]*)Int32.max_int</div>
267       <div class="lineAllVisited">000240| &nbsp;&nbsp;let&nbsp;to_int&nbsp;=&nbsp;(*[43]*)Int32.to_int</div>
268       <div class="lineAllVisited">000241| &nbsp;&nbsp;let&nbsp;zero&nbsp;=&nbsp;(*[43]*)Int32.zero</div>
269       <div class="lineAllVisited">000242| &nbsp;&nbsp;let&nbsp;one&nbsp;=&nbsp;(*[43]*)Int32.one</div>
270       <div class="lineAllVisited">000243| &nbsp;&nbsp;let&nbsp;minus_one&nbsp;=&nbsp;(*[43]*)Int32.minus_one</div>
271       <div class="lineAllVisited">000244| &nbsp;&nbsp;let&nbsp;ff&nbsp;=&nbsp;(*[43]*)0xff_l</div>
272       <div class="lineNone">000245| &nbsp;</div>
273       <div class="lineNone">000246| &nbsp;&nbsp;(*&nbsp;Create&nbsp;a&nbsp;mask&nbsp;so&nbsp;many&nbsp;bits&nbsp;wide.&nbsp;*)</div>
274       <div class="lineNone">000247| &nbsp;&nbsp;let&nbsp;mask&nbsp;bits&nbsp;=</div>
275       <div class="lineAllVisited">000248| &nbsp;&nbsp;&nbsp;&nbsp;(*[272]*)if&nbsp;bits&nbsp;&lt;&nbsp;31&nbsp;then</div>
276       <div class="lineAllVisited">000249| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[272]*)pred&nbsp;(one&nbsp;&lt;&lt;&lt;&nbsp;bits)</div>
277       <div class="lineAllUnvisited">000250| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;=&nbsp;31&nbsp;then</div>
278       <div class="lineAllUnvisited">000251| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)max_int</div>
279       <div class="lineAllUnvisited">000252| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;=&nbsp;32&nbsp;then</div>
280       <div class="lineAllUnvisited">000253| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)minus_one</div>
281       <div class="lineNone">000254| &nbsp;&nbsp;&nbsp;&nbsp;else</div>
282       <div class="lineAllUnvisited">000255| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)invalid_arg&nbsp;&quot;Bitstring.I32.mask&quot;</div>
283       <div class="lineNone">000256| &nbsp;</div>
284       <div class="lineNone">000257| &nbsp;&nbsp;(*&nbsp;Byte&nbsp;swap&nbsp;an&nbsp;int&nbsp;of&nbsp;a&nbsp;given&nbsp;size.&nbsp;*)</div>
285       <div class="lineNone">000258| &nbsp;&nbsp;let&nbsp;byteswap&nbsp;v&nbsp;bits&nbsp;=</div>
286       <div class="lineMixed">000259| &nbsp;&nbsp;&nbsp;&nbsp;(*[272]*)if&nbsp;bits&nbsp;&lt;=&nbsp;8&nbsp;then&nbsp;(*[0]*)v</div>
287       <div class="lineAllVisited">000260| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[272]*)if&nbsp;bits&nbsp;&lt;=&nbsp;16&nbsp;then&nbsp;(</div>
288       <div class="lineAllUnvisited">000261| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;shift&nbsp;=&nbsp;bits-8&nbsp;in</div>
289       <div class="lineAllUnvisited">000262| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;shift&nbsp;in</div>
290       <div class="lineAllUnvisited">000263| &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>
291       <div class="lineAllUnvisited">000264| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v2&nbsp;(*[0]*)lor&nbsp;v1</div>
292       <div class="lineAllVisited">000265| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[272]*)if&nbsp;bits&nbsp;&lt;=&nbsp;24&nbsp;then&nbsp;(</div>
293       <div class="lineAllUnvisited">000266| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;shift&nbsp;=&nbsp;bits&nbsp;-&nbsp;16&nbsp;in</div>
294       <div class="lineAllUnvisited">000267| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;(8+shift)&nbsp;in</div>
295       <div class="lineAllUnvisited">000268| &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>
296       <div class="lineAllUnvisited">000269| &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>
297       <div class="lineAllUnvisited">000270| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v3&nbsp;lor&nbsp;v2&nbsp;(*[0]*)lor&nbsp;v1</div>
298       <div class="lineNone">000271| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
299       <div class="lineAllVisited">000272| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[272]*)let&nbsp;shift&nbsp;=&nbsp;bits&nbsp;-&nbsp;24&nbsp;in</div>
300       <div class="lineAllVisited">000273| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[272]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;(16+shift)&nbsp;in</div>
301       <div class="lineAllVisited">000274| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[272]*)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>
302       <div class="lineAllVisited">000275| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[272]*)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>
303       <div class="lineAllVisited">000276| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[272]*)let&nbsp;v4&nbsp;=&nbsp;(v&nbsp;land&nbsp;(mask&nbsp;shift))&nbsp;&lt;&lt;&lt;&nbsp;24&nbsp;in</div>
304       <div class="lineAllVisited">000277| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v4&nbsp;lor&nbsp;v3&nbsp;lor&nbsp;v2&nbsp;(*[272]*)lor&nbsp;v1</div>
305       <div class="lineNone">000278| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
306       <div class="lineNone">000279| &nbsp;</div>
307       <div class="lineNone">000280| &nbsp;&nbsp;(*&nbsp;Check&nbsp;a&nbsp;value&nbsp;is&nbsp;in&nbsp;range&nbsp;0&nbsp;..&nbsp;2^bits-1.&nbsp;*)</div>
308       <div class="lineNone">000281| &nbsp;&nbsp;let&nbsp;range_unsigned&nbsp;v&nbsp;bits&nbsp;=</div>
309       <div class="lineAllUnvisited">000282| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;mask&nbsp;=&nbsp;lnot&nbsp;(mask&nbsp;bits)&nbsp;in</div>
310       <div class="lineAllUnvisited">000283| &nbsp;&nbsp;&nbsp;&nbsp;(v&nbsp;(*[0]*)land&nbsp;mask)&nbsp;=&nbsp;zero</div>
311       <div class="lineNone">000284| &nbsp;</div>
312       <div class="lineNone">000285| &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>
313       <div class="lineNone">000286| &nbsp;&nbsp;&nbsp;*&nbsp;(big&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;top).</div>
314       <div class="lineNone">000287| &nbsp;&nbsp;&nbsp;*)</div>
315       <div class="lineNone">000288| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_be&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
316       <div class="lineAllUnvisited">000289| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
317       <div class="lineAllUnvisited">000290| &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>
318       <div class="lineAllUnvisited">000291| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
319       <div class="lineAllUnvisited">000292| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)f&nbsp;(to_int&nbsp;lsb)</div>
320       <div class="lineAllUnvisited">000293| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
321       <div class="lineAllUnvisited">000294| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
322       <div class="lineAllUnvisited">000295| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
323       <div class="lineNone">000296| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
324       <div class="lineNone">000297| &nbsp;</div>
325       <div class="lineNone">000298| &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>
326       <div class="lineNone">000299| &nbsp;&nbsp;&nbsp;*&nbsp;(little&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;root).</div>
327       <div class="lineNone">000300| &nbsp;&nbsp;&nbsp;*)</div>
328       <div class="lineNone">000301| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_le&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
329       <div class="lineAllUnvisited">000302| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
330       <div class="lineAllUnvisited">000303| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
331       <div class="lineAllUnvisited">000304| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)f&nbsp;(*[0]*)(to_int&nbsp;lsb);</div>
332       <div class="lineAllUnvisited">000305| &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>
333       <div class="lineAllUnvisited">000306| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
334       <div class="lineAllUnvisited">000307| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
335       <div class="lineAllUnvisited">000308| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
336       <div class="lineNone">000309| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
337       <div class="lineNone">000310| end</div>
338       <div class="lineNone">000311| &nbsp;</div>
339       <div class="lineNone">000312| module&nbsp;I64&nbsp;=&nbsp;struct</div>
340       <div class="lineNone">000313| &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>
341       <div class="lineNone">000314| &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>
342       <div class="lineNone">000315| &nbsp;&nbsp;&nbsp;*&nbsp;down&nbsp;bugs.</div>
343       <div class="lineNone">000316| &nbsp;&nbsp;&nbsp;*)</div>
344       <div class="lineAllVisited">000317| &nbsp;&nbsp;let&nbsp;(&lt;&lt;&lt;)&nbsp;=&nbsp;(*[43]*)Int64.shift_left</div>
345       <div class="lineAllVisited">000318| &nbsp;&nbsp;let&nbsp;(&gt;&gt;&gt;)&nbsp;=&nbsp;(*[43]*)Int64.shift_right_logical</div>
346       <div class="lineAllVisited">000319| &nbsp;&nbsp;let&nbsp;(land)&nbsp;=&nbsp;(*[43]*)Int64.logand</div>
347       <div class="lineAllVisited">000320| &nbsp;&nbsp;let&nbsp;(lor)&nbsp;=&nbsp;(*[43]*)Int64.logor</div>
348       <div class="lineAllVisited">000321| &nbsp;&nbsp;let&nbsp;lnot&nbsp;=&nbsp;(*[43]*)Int64.lognot</div>
349       <div class="lineAllVisited">000322| &nbsp;&nbsp;let&nbsp;pred&nbsp;=&nbsp;(*[43]*)Int64.pred</div>
350       <div class="lineAllVisited">000323| &nbsp;&nbsp;let&nbsp;max_int&nbsp;=&nbsp;(*[43]*)Int64.max_int</div>
351       <div class="lineAllVisited">000324| &nbsp;&nbsp;let&nbsp;to_int&nbsp;=&nbsp;(*[43]*)Int64.to_int</div>
352       <div class="lineAllVisited">000325| &nbsp;&nbsp;let&nbsp;zero&nbsp;=&nbsp;(*[43]*)Int64.zero</div>
353       <div class="lineAllVisited">000326| &nbsp;&nbsp;let&nbsp;one&nbsp;=&nbsp;(*[43]*)Int64.one</div>
354       <div class="lineAllVisited">000327| &nbsp;&nbsp;let&nbsp;minus_one&nbsp;=&nbsp;(*[43]*)Int64.minus_one</div>
355       <div class="lineAllVisited">000328| &nbsp;&nbsp;let&nbsp;ff&nbsp;=&nbsp;(*[43]*)0xff_L</div>
356       <div class="lineNone">000329| &nbsp;</div>
357       <div class="lineNone">000330| &nbsp;&nbsp;(*&nbsp;Create&nbsp;a&nbsp;mask&nbsp;so&nbsp;many&nbsp;bits&nbsp;wide.&nbsp;*)</div>
358       <div class="lineNone">000331| &nbsp;&nbsp;let&nbsp;mask&nbsp;bits&nbsp;=</div>
359       <div class="lineAllVisited">000332| &nbsp;&nbsp;&nbsp;&nbsp;(*[670350]*)if&nbsp;bits&nbsp;&lt;&nbsp;63&nbsp;then</div>
360       <div class="lineAllVisited">000333| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[664750]*)pred&nbsp;(one&nbsp;&lt;&lt;&lt;&nbsp;bits)</div>
361       <div class="lineAllVisited">000334| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[5600]*)if&nbsp;bits&nbsp;=&nbsp;63&nbsp;then</div>
362       <div class="lineAllVisited">000335| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[4950]*)max_int</div>
363       <div class="lineAllVisited">000336| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[650]*)if&nbsp;bits&nbsp;=&nbsp;64&nbsp;then</div>
364       <div class="lineAllVisited">000337| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[650]*)minus_one</div>
365       <div class="lineNone">000338| &nbsp;&nbsp;&nbsp;&nbsp;else</div>
366       <div class="lineAllUnvisited">000339| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)invalid_arg&nbsp;&quot;Bitstring.I64.mask&quot;</div>
367       <div class="lineNone">000340| &nbsp;</div>
368       <div class="lineNone">000341| &nbsp;&nbsp;(*&nbsp;Byte&nbsp;swap&nbsp;an&nbsp;int&nbsp;of&nbsp;a&nbsp;given&nbsp;size.&nbsp;*)</div>
369       <div class="lineNone">000342| &nbsp;&nbsp;(*&nbsp;let&nbsp;byteswap&nbsp;v&nbsp;bits&nbsp;=&nbsp;*)</div>
370       <div class="lineNone">000343| &nbsp;</div>
371       <div class="lineNone">000344| &nbsp;&nbsp;(*&nbsp;Check&nbsp;a&nbsp;value&nbsp;is&nbsp;in&nbsp;range&nbsp;0&nbsp;..&nbsp;2^bits-1.&nbsp;*)</div>
372       <div class="lineNone">000345| &nbsp;&nbsp;let&nbsp;range_unsigned&nbsp;v&nbsp;bits&nbsp;=</div>
373       <div class="lineAllVisited">000346| &nbsp;&nbsp;&nbsp;&nbsp;(*[352630]*)let&nbsp;mask&nbsp;=&nbsp;lnot&nbsp;(mask&nbsp;bits)&nbsp;in</div>
374       <div class="lineAllVisited">000347| &nbsp;&nbsp;&nbsp;&nbsp;(v&nbsp;(*[352630]*)land&nbsp;mask)&nbsp;=&nbsp;zero</div>
375       <div class="lineNone">000348| &nbsp;</div>
376       <div class="lineNone">000349| &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>
377       <div class="lineNone">000350| &nbsp;&nbsp;&nbsp;*&nbsp;(big&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;top).</div>
378       <div class="lineNone">000351| &nbsp;&nbsp;&nbsp;*)</div>
379       <div class="lineNone">000352| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_be&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
380       <div class="lineAllVisited">000353| &nbsp;&nbsp;&nbsp;&nbsp;(*[1462730]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
381       <div class="lineAllVisited">000354| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1110620]*)map_bytes_be&nbsp;g&nbsp;f&nbsp;(v&nbsp;&gt;&gt;&gt;&nbsp;8)&nbsp;(*[1110620]*)(bits-8);</div>
382       <div class="lineAllVisited">000355| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1110620]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
383       <div class="lineAllVisited">000356| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1110620]*)f&nbsp;(to_int&nbsp;lsb)</div>
384       <div class="lineAllVisited">000357| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[34910]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
385       <div class="lineAllVisited">000358| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[317200]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
386       <div class="lineAllVisited">000359| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[317200]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
387       <div class="lineNone">000360| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
388       <div class="lineNone">000361| &nbsp;</div>
389       <div class="lineNone">000362| &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>
390       <div class="lineNone">000363| &nbsp;&nbsp;&nbsp;*&nbsp;(little&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;root).</div>
391       <div class="lineNone">000364| &nbsp;&nbsp;&nbsp;*)</div>
392       <div class="lineNone">000365| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_le&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
393       <div class="lineAllVisited">000366| &nbsp;&nbsp;&nbsp;&nbsp;(*[4160]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
394       <div class="lineAllVisited">000367| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[3640]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
395       <div class="lineAllVisited">000368| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[3640]*)f&nbsp;(*[3640]*)(to_int&nbsp;lsb);</div>
396       <div class="lineAllVisited">000369| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[3640]*)map_bytes_le&nbsp;g&nbsp;f&nbsp;(v&nbsp;&gt;&gt;&gt;&nbsp;8)&nbsp;(bits-8)</div>
397       <div class="lineAllVisited">000370| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[520]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
398       <div class="lineAllUnvisited">000371| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
399       <div class="lineAllUnvisited">000372| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
400       <div class="lineNone">000373| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
401       <div class="lineNone">000374| end</div>
402       <div class="lineNone">000375| &nbsp;</div>
403       <div class="lineNone">000376| (*----------------------------------------------------------------------*)</div>
404       <div class="lineNone">000377| (*&nbsp;Extraction&nbsp;functions.</div>
405       <div class="lineNone">000378| &nbsp;*</div>
406       <div class="lineNone">000379| &nbsp;*&nbsp;NB:&nbsp;internal&nbsp;functions,&nbsp;called&nbsp;from&nbsp;the&nbsp;generated&nbsp;macros,&nbsp;and</div>
407       <div class="lineNone">000380| &nbsp;*&nbsp;the&nbsp;parameters&nbsp;should&nbsp;have&nbsp;been&nbsp;checked&nbsp;for&nbsp;sanity&nbsp;already).</div>
408       <div class="lineNone">000381| &nbsp;*)</div>
409       <div class="lineNone">000382| &nbsp;</div>
410       <div class="lineNone">000383| (*&nbsp;Extract&nbsp;and&nbsp;convert&nbsp;to&nbsp;numeric.&nbsp;&nbsp;A&nbsp;single&nbsp;bit&nbsp;is&nbsp;returned&nbsp;as</div>
411       <div class="lineNone">000384| &nbsp;*&nbsp;a&nbsp;boolean.&nbsp;&nbsp;There&nbsp;are&nbsp;no&nbsp;endianness&nbsp;or&nbsp;signedness&nbsp;considerations.</div>
412       <div class="lineNone">000385| &nbsp;*)</div>
413       <div class="lineNone">000386| 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>
414       <div class="lineAllVisited">000387| &nbsp;&nbsp;(*[2515282]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
415       <div class="lineAllVisited">000388| &nbsp;&nbsp;(*[2515282]*)let&nbsp;bitmask&nbsp;=&nbsp;1&nbsp;lsl&nbsp;(7&nbsp;-&nbsp;(off&nbsp;land&nbsp;7))&nbsp;in</div>
416       <div class="lineAllVisited">000389| &nbsp;&nbsp;(*[2515282]*)let&nbsp;b&nbsp;=&nbsp;Char.code&nbsp;data.[byteoff]&nbsp;land&nbsp;bitmask&nbsp;&lt;&gt;&nbsp;0&nbsp;in</div>
417       <div class="lineAllVisited">000390| &nbsp;&nbsp;(*[2515282]*)b&nbsp;(*,&nbsp;off+1,&nbsp;len-1*)</div>
418       <div class="lineNone">000391| &nbsp;</div>
419       <div class="lineNone">000392| (*&nbsp;Returns&nbsp;8&nbsp;bit&nbsp;unsigned&nbsp;aligned&nbsp;bytes&nbsp;from&nbsp;the&nbsp;string.</div>
420       <div class="lineNone">000393| &nbsp;*&nbsp;If&nbsp;the&nbsp;string&nbsp;ends&nbsp;then&nbsp;this&nbsp;returns&nbsp;0's.</div>
421       <div class="lineNone">000394| &nbsp;*)</div>
422       <div class="lineNone">000395| let&nbsp;_get_byte&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;=</div>
423       <div class="lineAllVisited">000396| &nbsp;&nbsp;(*[9840892]*)if&nbsp;strlen&nbsp;&gt;&nbsp;byteoff&nbsp;then&nbsp;(*[9274362]*)Char.code&nbsp;data.[byteoff]&nbsp;else&nbsp;(*[566530]*)0</div>
424       <div class="lineNone">000397| let&nbsp;_get_byte32&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;=</div>
425       <div class="lineMixed">000398| &nbsp;&nbsp;(*[264]*)if&nbsp;strlen&nbsp;&gt;&nbsp;byteoff&nbsp;then&nbsp;(*[264]*)Int32.of_int&nbsp;(Char.code&nbsp;data.[byteoff])&nbsp;else&nbsp;(*[0]*)0l</div>
426       <div class="lineNone">000399| let&nbsp;_get_byte64&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;=</div>
427       <div class="lineAllVisited">000400| &nbsp;&nbsp;(*[1626792]*)if&nbsp;strlen&nbsp;&gt;&nbsp;byteoff&nbsp;then&nbsp;(*[1518549]*)Int64.of_int&nbsp;(Char.code&nbsp;data.[byteoff])&nbsp;else&nbsp;(*[108243]*)0L</div>
428       <div class="lineNone">000401| &nbsp;</div>
429       <div class="lineNone">000402| (*&nbsp;Extract&nbsp;[2..8]&nbsp;bits.&nbsp;&nbsp;Because&nbsp;the&nbsp;result&nbsp;fits&nbsp;into&nbsp;a&nbsp;single</div>
430       <div class="lineNone">000403| &nbsp;*&nbsp;byte&nbsp;we&nbsp;don't&nbsp;have&nbsp;to&nbsp;worry&nbsp;about&nbsp;endianness,&nbsp;only&nbsp;signedness.</div>
431       <div class="lineNone">000404| &nbsp;*)</div>
432       <div class="lineNone">000405| let&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
433       <div class="lineAllVisited">000406| &nbsp;&nbsp;(*[5040562]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
434       <div class="lineNone">000407| &nbsp;</div>
435       <div class="lineNone">000408| &nbsp;&nbsp;(*&nbsp;Optimize&nbsp;the&nbsp;common&nbsp;(byte-aligned)&nbsp;case.&nbsp;*)</div>
436       <div class="lineAllVisited">000409| &nbsp;&nbsp;(*[5040562]*)if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
437       <div class="lineAllVisited">000410| &nbsp;&nbsp;&nbsp;&nbsp;(*[121776]*)let&nbsp;byte&nbsp;=&nbsp;Char.code&nbsp;data.[byteoff]&nbsp;in</div>
438       <div class="lineAllVisited">000411| &nbsp;&nbsp;&nbsp;&nbsp;byte&nbsp;(*[121776]*)lsr&nbsp;(8&nbsp;-&nbsp;flen)&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
439       <div class="lineNone">000412| &nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
440       <div class="lineNone">000413| &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>
441       <div class="lineNone">000414| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;second&nbsp;byte&nbsp;might&nbsp;not&nbsp;exist&nbsp;in&nbsp;the&nbsp;original&nbsp;string).</div>
442       <div class="lineNone">000415| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</div>
443       <div class="lineAllVisited">000416| &nbsp;&nbsp;&nbsp;&nbsp;(*[4918786]*)let&nbsp;strlen&nbsp;=&nbsp;String.length&nbsp;data&nbsp;in</div>
444       <div class="lineNone">000417| &nbsp;</div>
445       <div class="lineAllVisited">000418| &nbsp;&nbsp;&nbsp;&nbsp;(*[4918786]*)let&nbsp;word&nbsp;=</div>
446       <div class="lineNone">000419| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;lsl&nbsp;8)&nbsp;+</div>
447       <div class="lineNone">000420| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_get_byte&nbsp;data&nbsp;(byteoff+1)&nbsp;strlen&nbsp;in</div>
448       <div class="lineNone">000421| &nbsp;</div>
449       <div class="lineNone">000422| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Mask&nbsp;off&nbsp;the&nbsp;top&nbsp;bits.&nbsp;*)</div>
450       <div class="lineAllVisited">000423| &nbsp;&nbsp;&nbsp;&nbsp;(*[4918786]*)let&nbsp;bitmask&nbsp;=&nbsp;(1&nbsp;lsl&nbsp;(16&nbsp;-&nbsp;(off&nbsp;land&nbsp;7)))&nbsp;-&nbsp;1&nbsp;in</div>
451       <div class="lineAllVisited">000424| &nbsp;&nbsp;&nbsp;&nbsp;(*[4918786]*)let&nbsp;word&nbsp;=&nbsp;word&nbsp;land&nbsp;bitmask&nbsp;in</div>
452       <div class="lineNone">000425| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Shift&nbsp;right&nbsp;to&nbsp;get&nbsp;rid&nbsp;of&nbsp;the&nbsp;bottom&nbsp;bits.&nbsp;*)</div>
453       <div class="lineAllVisited">000426| &nbsp;&nbsp;&nbsp;&nbsp;(*[4918786]*)let&nbsp;shift&nbsp;=&nbsp;16&nbsp;-&nbsp;((off&nbsp;land&nbsp;7)&nbsp;+&nbsp;flen)&nbsp;in</div>
454       <div class="lineAllVisited">000427| &nbsp;&nbsp;&nbsp;&nbsp;(*[4918786]*)let&nbsp;word&nbsp;=&nbsp;word&nbsp;lsr&nbsp;shift&nbsp;in</div>
455       <div class="lineNone">000428| &nbsp;</div>
456       <div class="lineAllVisited">000429| &nbsp;&nbsp;&nbsp;&nbsp;(*[4918786]*)word&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
457       <div class="lineNone">000430| &nbsp;&nbsp;)</div>
458       <div class="lineNone">000431| &nbsp;</div>
459       <div class="lineNone">000432| (*&nbsp;Extract&nbsp;[9..31]&nbsp;bits.&nbsp;&nbsp;We&nbsp;have&nbsp;to&nbsp;consider&nbsp;endianness&nbsp;and&nbsp;signedness.&nbsp;*)</div>
460       <div class="lineNone">000433| let&nbsp;extract_int_be_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
461       <div class="lineAllVisited">000434| &nbsp;&nbsp;(*[1170]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
462       <div class="lineNone">000435| &nbsp;</div>
463       <div class="lineAllVisited">000436| &nbsp;&nbsp;(*[1170]*)let&nbsp;strlen&nbsp;=&nbsp;String.length&nbsp;data&nbsp;in</div>
464       <div class="lineNone">000437| &nbsp;</div>
465       <div class="lineAllVisited">000438| &nbsp;&nbsp;(*[1170]*)let&nbsp;word&nbsp;=</div>
466       <div class="lineNone">000439| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Optimize&nbsp;the&nbsp;common&nbsp;(byte-aligned)&nbsp;case.&nbsp;*)</div>
467       <div class="lineNone">000440| &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
468       <div class="lineAllVisited">000441| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[152]*)let&nbsp;word&nbsp;=</div>
469       <div class="lineNone">000442| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;lsl&nbsp;23)&nbsp;+</div>
470       <div class="lineNone">000443| &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>
471       <div class="lineNone">000444| &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>
472       <div class="lineNone">000445| &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>
473       <div class="lineAllVisited">000446| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;word&nbsp;(*[152]*)lsr&nbsp;(31&nbsp;-&nbsp;flen)</div>
474       <div class="lineAllVisited">000447| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[1018]*)if&nbsp;flen&nbsp;&lt;=&nbsp;24&nbsp;then&nbsp;(</div>
475       <div class="lineNone">000448| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Extract&nbsp;the&nbsp;31&nbsp;bits&nbsp;at&nbsp;byteoff&nbsp;..&nbsp;byteoff+3.&nbsp;*)</div>
476       <div class="lineAllVisited">000449| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[678]*)let&nbsp;word&nbsp;=</div>
477       <div class="lineNone">000450| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;lsl&nbsp;23)&nbsp;+</div>
478       <div class="lineNone">000451| &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>
479       <div class="lineNone">000452| &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>
480       <div class="lineNone">000453| &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>
481       <div class="lineNone">000454| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Mask&nbsp;off&nbsp;the&nbsp;top&nbsp;bits.&nbsp;*)</div>
482       <div class="lineAllVisited">000455| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[678]*)let&nbsp;bitmask&nbsp;=&nbsp;(1&nbsp;lsl&nbsp;(31&nbsp;-&nbsp;(off&nbsp;land&nbsp;7)))&nbsp;-&nbsp;1&nbsp;in</div>
483       <div class="lineAllVisited">000456| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[678]*)let&nbsp;word&nbsp;=&nbsp;word&nbsp;land&nbsp;bitmask&nbsp;in</div>
484       <div class="lineNone">000457| &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>
485       <div class="lineAllVisited">000458| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[678]*)let&nbsp;shift&nbsp;=&nbsp;31&nbsp;-&nbsp;((off&nbsp;land&nbsp;7)&nbsp;+&nbsp;flen)&nbsp;in</div>
486       <div class="lineAllVisited">000459| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;word&nbsp;(*[678]*)lsr&nbsp;shift</div>
487       <div class="lineNone">000460| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
488       <div class="lineNone">000461| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Extract&nbsp;the&nbsp;next&nbsp;31&nbsp;bits,&nbsp;slow&nbsp;method.&nbsp;*)</div>
489       <div class="lineAllVisited">000462| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[340]*)let&nbsp;word&nbsp;=</div>
490       <div class="lineNone">000463| &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>
491       <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>
492       <div class="lineAllVisited">000465| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[340]*)let&nbsp;c1&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
493       <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>
494       <div class="lineAllVisited">000467| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[340]*)let&nbsp;c2&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
495       <div class="lineNone">000468| &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>
496       <div class="lineAllVisited">000469| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[340]*)let&nbsp;c3&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;7&nbsp;in</div>
497       <div class="lineAllVisited">000470| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(c0&nbsp;(*[340]*)lsl&nbsp;23)&nbsp;+&nbsp;(c1&nbsp;lsl&nbsp;15)&nbsp;+&nbsp;(c2&nbsp;lsl&nbsp;7)&nbsp;+&nbsp;c3&nbsp;in</div>
498       <div class="lineAllVisited">000471| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;word&nbsp;(*[340]*)lsr&nbsp;(31&nbsp;-&nbsp;flen)</div>
499       <div class="lineNone">000472| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;in</div>
500       <div class="lineAllVisited">000473| &nbsp;&nbsp;(*[1170]*)word&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
501       <div class="lineNone">000474| &nbsp;</div>
502       <div class="lineNone">000475| let&nbsp;extract_int_le_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
503       <div class="lineAllVisited">000476| &nbsp;&nbsp;(*[780]*)let&nbsp;v&nbsp;=&nbsp;extract_int_be_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;in</div>
504       <div class="lineAllVisited">000477| &nbsp;&nbsp;(*[780]*)let&nbsp;v&nbsp;=&nbsp;I.byteswap&nbsp;v&nbsp;flen&nbsp;in</div>
505       <div class="lineAllVisited">000478| &nbsp;&nbsp;(*[780]*)v</div>
506       <div class="lineNone">000479| &nbsp;</div>
507       <div class="lineNone">000480| let&nbsp;extract_int_ne_unsigned&nbsp;=</div>
508       <div class="lineAllVisited">000481| &nbsp;&nbsp;(*[43]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
509       <div class="lineAllUnvisited">000482| &nbsp;&nbsp;then&nbsp;(*[0]*)extract_int_be_unsigned</div>
510       <div class="lineAllVisited">000483| &nbsp;&nbsp;else&nbsp;(*[43]*)extract_int_le_unsigned</div>
511       <div class="lineNone">000484| &nbsp;</div>
512       <div class="lineNone">000485| let&nbsp;extract_int_ee_unsigned&nbsp;=&nbsp;function</div>
513       <div class="lineAllUnvisited">000486| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int_be_unsigned</div>
514       <div class="lineAllUnvisited">000487| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int_le_unsigned</div>
515       <div class="lineAllUnvisited">000488| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int_ne_unsigned</div>
516       <div class="lineNone">000489| &nbsp;</div>
517       <div class="lineNone">000490| let&nbsp;_make_int32_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;=</div>
518       <div class="lineAllVisited">000491| &nbsp;&nbsp;(*[408]*)Int32.logor</div>
519       <div class="lineNone">000492| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.logor</div>
520       <div class="lineNone">000493| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.logor</div>
521       <div class="lineNone">000494| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c0&nbsp;24)</div>
522       <div class="lineNone">000495| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c1&nbsp;16))</div>
523       <div class="lineNone">000496| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c2&nbsp;8))</div>
524       <div class="lineNone">000497| &nbsp;&nbsp;&nbsp;&nbsp;c3</div>
525       <div class="lineNone">000498| &nbsp;</div>
526       <div class="lineNone">000499| let&nbsp;_make_int32_le&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;=</div>
527       <div class="lineAllUnvisited">000500| &nbsp;&nbsp;(*[0]*)Int32.logor</div>
528       <div class="lineNone">000501| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.logor</div>
529       <div class="lineNone">000502| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.logor</div>
530       <div class="lineNone">000503| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c3&nbsp;24)</div>
531       <div class="lineNone">000504| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c2&nbsp;16))</div>
532       <div class="lineNone">000505| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c1&nbsp;8))</div>
533       <div class="lineNone">000506| &nbsp;&nbsp;&nbsp;&nbsp;c0</div>
534       <div class="lineNone">000507| &nbsp;</div>
535       <div class="lineNone">000508| (*&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>
536       <div class="lineNone">000509| let&nbsp;extract_int32_be_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
537       <div class="lineAllVisited">000510| &nbsp;&nbsp;(*[408]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
538       <div class="lineNone">000511| &nbsp;</div>
539       <div class="lineAllVisited">000512| &nbsp;&nbsp;(*[408]*)let&nbsp;strlen&nbsp;=&nbsp;String.length&nbsp;data&nbsp;in</div>
540       <div class="lineNone">000513| &nbsp;</div>
541       <div class="lineAllVisited">000514| &nbsp;&nbsp;(*[408]*)let&nbsp;word&nbsp;=</div>
542       <div class="lineNone">000515| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Optimize&nbsp;the&nbsp;common&nbsp;(byte-aligned)&nbsp;case.&nbsp;*)</div>
543       <div class="lineNone">000516| &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
544       <div class="lineAllVisited">000517| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[66]*)let&nbsp;word&nbsp;=</div>
545       <div class="lineNone">000518| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c0&nbsp;=&nbsp;_get_byte32&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;in</div>
546       <div class="lineAllVisited">000519| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[66]*)let&nbsp;c1&nbsp;=&nbsp;_get_byte32&nbsp;data&nbsp;(byteoff+1)&nbsp;strlen&nbsp;in</div>
547       <div class="lineAllVisited">000520| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[66]*)let&nbsp;c2&nbsp;=&nbsp;_get_byte32&nbsp;data&nbsp;(byteoff+2)&nbsp;strlen&nbsp;in</div>
548       <div class="lineAllVisited">000521| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[66]*)let&nbsp;c3&nbsp;=&nbsp;_get_byte32&nbsp;data&nbsp;(byteoff+3)&nbsp;strlen&nbsp;in</div>
549       <div class="lineAllVisited">000522| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[66]*)_make_int32_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;in</div>
550       <div class="lineAllVisited">000523| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[66]*)Int32.shift_right_logical&nbsp;word&nbsp;(32&nbsp;-&nbsp;flen)</div>
551       <div class="lineNone">000524| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
552       <div class="lineNone">000525| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Extract&nbsp;the&nbsp;next&nbsp;32&nbsp;bits,&nbsp;slow&nbsp;method.&nbsp;*)</div>
553       <div class="lineAllVisited">000526| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[342]*)let&nbsp;word&nbsp;=</div>
554       <div class="lineNone">000527| &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>
555       <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>
556       <div class="lineAllVisited">000529| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[342]*)let&nbsp;c1&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
557       <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>
558       <div class="lineAllVisited">000531| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[342]*)let&nbsp;c2&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
559       <div class="lineNone">000532| &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>
560       <div class="lineAllVisited">000533| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[342]*)let&nbsp;c3&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8&nbsp;in</div>
561       <div class="lineAllVisited">000534| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[342]*)let&nbsp;c0&nbsp;=&nbsp;Int32.of_int&nbsp;c0&nbsp;in</div>
562       <div class="lineAllVisited">000535| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[342]*)let&nbsp;c1&nbsp;=&nbsp;Int32.of_int&nbsp;c1&nbsp;in</div>
563       <div class="lineAllVisited">000536| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[342]*)let&nbsp;c2&nbsp;=&nbsp;Int32.of_int&nbsp;c2&nbsp;in</div>
564       <div class="lineAllVisited">000537| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[342]*)let&nbsp;c3&nbsp;=&nbsp;Int32.of_int&nbsp;c3&nbsp;in</div>
565       <div class="lineAllVisited">000538| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[342]*)_make_int32_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;in</div>
566       <div class="lineAllVisited">000539| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[342]*)Int32.shift_right_logical&nbsp;word&nbsp;(32&nbsp;-&nbsp;flen)</div>
567       <div class="lineNone">000540| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;in</div>
568       <div class="lineAllVisited">000541| &nbsp;&nbsp;(*[408]*)word&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
569       <div class="lineNone">000542| &nbsp;</div>
570       <div class="lineNone">000543| let&nbsp;extract_int32_le_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
571       <div class="lineAllVisited">000544| &nbsp;&nbsp;(*[272]*)let&nbsp;v&nbsp;=&nbsp;extract_int32_be_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;in</div>
572       <div class="lineAllVisited">000545| &nbsp;&nbsp;(*[272]*)let&nbsp;v&nbsp;=&nbsp;I32.byteswap&nbsp;v&nbsp;flen&nbsp;in</div>
573       <div class="lineAllVisited">000546| &nbsp;&nbsp;(*[272]*)v</div>
574       <div class="lineNone">000547| &nbsp;</div>
575       <div class="lineNone">000548| let&nbsp;extract_int32_ne_unsigned&nbsp;=</div>
576       <div class="lineAllVisited">000549| &nbsp;&nbsp;(*[43]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
577       <div class="lineAllUnvisited">000550| &nbsp;&nbsp;then&nbsp;(*[0]*)extract_int32_be_unsigned</div>
578       <div class="lineAllVisited">000551| &nbsp;&nbsp;else&nbsp;(*[43]*)extract_int32_le_unsigned</div>
579       <div class="lineNone">000552| &nbsp;</div>
580       <div class="lineNone">000553| let&nbsp;extract_int32_ee_unsigned&nbsp;=&nbsp;function</div>
581       <div class="lineAllVisited">000554| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[6]*)extract_int32_be_unsigned</div>
582       <div class="lineAllVisited">000555| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*[6]*)extract_int32_le_unsigned</div>
583       <div class="lineAllVisited">000556| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[6]*)extract_int32_ne_unsigned</div>
584       <div class="lineNone">000557| &nbsp;</div>
585       <div class="lineNone">000558| let&nbsp;_make_int64_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;=</div>
586       <div class="lineAllVisited">000559| &nbsp;&nbsp;(*[658243]*)Int64.logor</div>
587       <div class="lineNone">000560| &nbsp;&nbsp;&nbsp;&nbsp;(Int64.logor</div>
588       <div class="lineNone">000561| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.logor</div>
589       <div class="lineNone">000562| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.logor</div>
590       <div class="lineNone">000563| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.logor</div>
591       <div class="lineNone">000564| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.logor</div>
592       <div class="lineNone">000565| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.logor</div>
593       <div class="lineNone">000566| &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>
594       <div class="lineNone">000567| &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>
595       <div class="lineNone">000568| &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>
596       <div class="lineNone">000569| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.shift_left&nbsp;c3&nbsp;32))</div>
597       <div class="lineNone">000570| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.shift_left&nbsp;c4&nbsp;24))</div>
598       <div class="lineNone">000571| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.shift_left&nbsp;c5&nbsp;16))</div>
599       <div class="lineNone">000572| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.shift_left&nbsp;c6&nbsp;8))</div>
600       <div class="lineNone">000573| &nbsp;&nbsp;&nbsp;&nbsp;c7</div>
601       <div class="lineNone">000574| &nbsp;</div>
602       <div class="lineNone">000575| let&nbsp;_make_int64_le&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;=</div>
603       <div class="lineAllVisited">000576| &nbsp;&nbsp;(*[520]*)_make_int64_be&nbsp;c7&nbsp;c6&nbsp;c5&nbsp;c4&nbsp;c3&nbsp;c2&nbsp;c1&nbsp;c0</div>
604       <div class="lineNone">000577| &nbsp;</div>
605       <div class="lineNone">000578| (*&nbsp;Extract&nbsp;[1..64]&nbsp;bits.&nbsp;&nbsp;We&nbsp;have&nbsp;to&nbsp;consider&nbsp;endianness&nbsp;and&nbsp;signedness.&nbsp;*)</div>
606       <div class="lineNone">000579| let&nbsp;extract_int64_be_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
607       <div class="lineAllVisited">000580| &nbsp;&nbsp;(*[657723]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
608       <div class="lineNone">000581| &nbsp;</div>
609       <div class="lineAllVisited">000582| &nbsp;&nbsp;(*[657723]*)let&nbsp;strlen&nbsp;=&nbsp;String.length&nbsp;data&nbsp;in</div>
610       <div class="lineNone">000583| &nbsp;</div>
611       <div class="lineAllVisited">000584| &nbsp;&nbsp;(*[657723]*)let&nbsp;word&nbsp;=</div>
612       <div class="lineNone">000585| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Optimize&nbsp;the&nbsp;common&nbsp;(byte-aligned)&nbsp;case.&nbsp;*)</div>
613       <div class="lineNone">000586| &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
614       <div class="lineAllVisited">000587| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203285]*)let&nbsp;word&nbsp;=</div>
615       <div class="lineNone">000588| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c0&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;in</div>
616       <div class="lineAllVisited">000589| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203285]*)let&nbsp;c1&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+1)&nbsp;strlen&nbsp;in</div>
617       <div class="lineAllVisited">000590| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203285]*)let&nbsp;c2&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+2)&nbsp;strlen&nbsp;in</div>
618       <div class="lineAllVisited">000591| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203285]*)let&nbsp;c3&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+3)&nbsp;strlen&nbsp;in</div>
619       <div class="lineAllVisited">000592| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203285]*)let&nbsp;c4&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+4)&nbsp;strlen&nbsp;in</div>
620       <div class="lineAllVisited">000593| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203285]*)let&nbsp;c5&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+5)&nbsp;strlen&nbsp;in</div>
621       <div class="lineAllVisited">000594| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203285]*)let&nbsp;c6&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+6)&nbsp;strlen&nbsp;in</div>
622       <div class="lineAllVisited">000595| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203285]*)let&nbsp;c7&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+7)&nbsp;strlen&nbsp;in</div>
623       <div class="lineAllVisited">000596| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203285]*)_make_int64_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;in</div>
624       <div class="lineAllVisited">000597| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203285]*)Int64.shift_right_logical&nbsp;word&nbsp;(64&nbsp;-&nbsp;flen)</div>
625       <div class="lineNone">000598| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
626       <div class="lineNone">000599| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Extract&nbsp;the&nbsp;next&nbsp;64&nbsp;bits,&nbsp;slow&nbsp;method.&nbsp;*)</div>
627       <div class="lineAllVisited">000600| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)let&nbsp;word&nbsp;=</div>
628       <div class="lineNone">000601| &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>
629       <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>
630       <div class="lineAllVisited">000603| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)let&nbsp;c1&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
631       <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>
632       <div class="lineAllVisited">000605| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)let&nbsp;c2&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
633       <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>
634       <div class="lineAllVisited">000607| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)let&nbsp;c3&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
635       <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>
636       <div class="lineAllVisited">000609| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)let&nbsp;c4&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
637       <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>
638       <div class="lineAllVisited">000611| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)let&nbsp;c5&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
639       <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>
640       <div class="lineAllVisited">000613| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)let&nbsp;c6&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
641       <div class="lineNone">000614| &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>
642       <div class="lineAllVisited">000615| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)let&nbsp;c7&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8&nbsp;in</div>
643       <div class="lineAllVisited">000616| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)let&nbsp;c0&nbsp;=&nbsp;Int64.of_int&nbsp;c0&nbsp;in</div>
644       <div class="lineAllVisited">000617| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)let&nbsp;c1&nbsp;=&nbsp;Int64.of_int&nbsp;c1&nbsp;in</div>
645       <div class="lineAllVisited">000618| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)let&nbsp;c2&nbsp;=&nbsp;Int64.of_int&nbsp;c2&nbsp;in</div>
646       <div class="lineAllVisited">000619| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)let&nbsp;c3&nbsp;=&nbsp;Int64.of_int&nbsp;c3&nbsp;in</div>
647       <div class="lineAllVisited">000620| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)let&nbsp;c4&nbsp;=&nbsp;Int64.of_int&nbsp;c4&nbsp;in</div>
648       <div class="lineAllVisited">000621| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)let&nbsp;c5&nbsp;=&nbsp;Int64.of_int&nbsp;c5&nbsp;in</div>
649       <div class="lineAllVisited">000622| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)let&nbsp;c6&nbsp;=&nbsp;Int64.of_int&nbsp;c6&nbsp;in</div>
650       <div class="lineAllVisited">000623| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)let&nbsp;c7&nbsp;=&nbsp;Int64.of_int&nbsp;c7&nbsp;in</div>
651       <div class="lineAllVisited">000624| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)_make_int64_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;in</div>
652       <div class="lineAllVisited">000625| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454438]*)Int64.shift_right_logical&nbsp;word&nbsp;(64&nbsp;-&nbsp;flen)</div>
653       <div class="lineNone">000626| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;in</div>
654       <div class="lineAllVisited">000627| &nbsp;&nbsp;(*[657723]*)word&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
655       <div class="lineNone">000628| &nbsp;</div>
656       <div class="lineNone">000629| let&nbsp;extract_int64_le_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
657       <div class="lineAllVisited">000630| &nbsp;&nbsp;(*[520]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
658       <div class="lineNone">000631| &nbsp;</div>
659       <div class="lineAllVisited">000632| &nbsp;&nbsp;(*[520]*)let&nbsp;strlen&nbsp;=&nbsp;String.length&nbsp;data&nbsp;in</div>
660       <div class="lineNone">000633| &nbsp;</div>
661       <div class="lineAllVisited">000634| &nbsp;&nbsp;(*[520]*)let&nbsp;word&nbsp;=</div>
662       <div class="lineNone">000635| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Optimize&nbsp;the&nbsp;common&nbsp;(byte-aligned)&nbsp;case.&nbsp;*)</div>
663       <div class="lineNone">000636| &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
664       <div class="lineAllVisited">000637| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[64]*)let&nbsp;word&nbsp;=</div>
665       <div class="lineNone">000638| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c0&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;in</div>
666       <div class="lineAllVisited">000639| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[64]*)let&nbsp;c1&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+1)&nbsp;strlen&nbsp;in</div>
667       <div class="lineAllVisited">000640| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[64]*)let&nbsp;c2&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+2)&nbsp;strlen&nbsp;in</div>
668       <div class="lineAllVisited">000641| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[64]*)let&nbsp;c3&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+3)&nbsp;strlen&nbsp;in</div>
669       <div class="lineAllVisited">000642| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[64]*)let&nbsp;c4&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+4)&nbsp;strlen&nbsp;in</div>
670       <div class="lineAllVisited">000643| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[64]*)let&nbsp;c5&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+5)&nbsp;strlen&nbsp;in</div>
671       <div class="lineAllVisited">000644| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[64]*)let&nbsp;c6&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+6)&nbsp;strlen&nbsp;in</div>
672       <div class="lineAllVisited">000645| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[64]*)let&nbsp;c7&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+7)&nbsp;strlen&nbsp;in</div>
673       <div class="lineAllVisited">000646| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[64]*)_make_int64_le&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;in</div>
674       <div class="lineAllVisited">000647| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[64]*)Int64.logand&nbsp;word&nbsp;(I64.mask&nbsp;flen)</div>
675       <div class="lineNone">000648| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
676       <div class="lineNone">000649| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Extract&nbsp;the&nbsp;next&nbsp;64&nbsp;bits,&nbsp;slow&nbsp;method.&nbsp;*)</div>
677       <div class="lineAllVisited">000650| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)let&nbsp;word&nbsp;=</div>
678       <div class="lineNone">000651| &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>
679       <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>
680       <div class="lineAllVisited">000653| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)let&nbsp;c1&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
681       <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>
682       <div class="lineAllVisited">000655| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)let&nbsp;c2&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
683       <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>
684       <div class="lineAllVisited">000657| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)let&nbsp;c3&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
685       <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>
686       <div class="lineAllVisited">000659| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)let&nbsp;c4&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
687       <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>
688       <div class="lineAllVisited">000661| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)let&nbsp;c5&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
689       <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>
690       <div class="lineAllVisited">000663| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)let&nbsp;c6&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
691       <div class="lineNone">000664| &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>
692       <div class="lineAllVisited">000665| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)let&nbsp;c7&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8&nbsp;in</div>
693       <div class="lineAllVisited">000666| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)let&nbsp;c0&nbsp;=&nbsp;Int64.of_int&nbsp;c0&nbsp;in</div>
694       <div class="lineAllVisited">000667| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)let&nbsp;c1&nbsp;=&nbsp;Int64.of_int&nbsp;c1&nbsp;in</div>
695       <div class="lineAllVisited">000668| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)let&nbsp;c2&nbsp;=&nbsp;Int64.of_int&nbsp;c2&nbsp;in</div>
696       <div class="lineAllVisited">000669| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)let&nbsp;c3&nbsp;=&nbsp;Int64.of_int&nbsp;c3&nbsp;in</div>
697       <div class="lineAllVisited">000670| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)let&nbsp;c4&nbsp;=&nbsp;Int64.of_int&nbsp;c4&nbsp;in</div>
698       <div class="lineAllVisited">000671| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)let&nbsp;c5&nbsp;=&nbsp;Int64.of_int&nbsp;c5&nbsp;in</div>
699       <div class="lineAllVisited">000672| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)let&nbsp;c6&nbsp;=&nbsp;Int64.of_int&nbsp;c6&nbsp;in</div>
700       <div class="lineAllVisited">000673| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)let&nbsp;c7&nbsp;=&nbsp;Int64.of_int&nbsp;c7&nbsp;in</div>
701       <div class="lineAllVisited">000674| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)_make_int64_le&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;in</div>
702       <div class="lineAllVisited">000675| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[456]*)Int64.logand&nbsp;word&nbsp;(I64.mask&nbsp;flen)</div>
703       <div class="lineNone">000676| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;in</div>
704       <div class="lineAllVisited">000677| &nbsp;&nbsp;(*[520]*)word&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
705       <div class="lineNone">000678| &nbsp;</div>
706       <div class="lineNone">000679| let&nbsp;extract_int64_ne_unsigned&nbsp;=</div>
707       <div class="lineAllVisited">000680| &nbsp;&nbsp;(*[43]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
708       <div class="lineAllUnvisited">000681| &nbsp;&nbsp;then&nbsp;(*[0]*)extract_int64_be_unsigned</div>
709       <div class="lineAllVisited">000682| &nbsp;&nbsp;else&nbsp;(*[43]*)extract_int64_le_unsigned</div>
710       <div class="lineNone">000683| &nbsp;</div>
711       <div class="lineNone">000684| let&nbsp;extract_int64_ee_unsigned&nbsp;=&nbsp;function</div>
712       <div class="lineAllUnvisited">000685| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int64_be_unsigned</div>
713       <div class="lineAllUnvisited">000686| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int64_le_unsigned</div>
714       <div class="lineAllUnvisited">000687| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int64_ne_unsigned</div>
715       <div class="lineNone">000688| &nbsp;</div>
716       <div class="lineNone">000689| 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>
717       <div class="lineNone">000690| &nbsp;</div>
718       <div class="lineNone">000691| 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>
719       <div class="lineNone">000692| &nbsp;</div>
720       <div class="lineNone">000693| 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>
721       <div class="lineNone">000694| &nbsp;</div>
722       <div class="lineNone">000695| 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>
723       <div class="lineNone">000696| &nbsp;</div>
724       <div class="lineNone">000697| 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>
725       <div class="lineNone">000698| &nbsp;</div>
726       <div class="lineNone">000699| 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>
727       <div class="lineNone">000700| &nbsp;</div>
728       <div class="lineNone">000701| (*</div>
729       <div class="lineNone">000702| 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>
730       <div class="lineNone">000703| &nbsp;</div>
731       <div class="lineNone">000704| 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>
732       <div class="lineNone">000705| &nbsp;</div>
733       <div class="lineNone">000706| 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>
734       <div class="lineNone">000707| &nbsp;</div>
735       <div class="lineNone">000708| 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>
736       <div class="lineNone">000709| &nbsp;</div>
737       <div class="lineNone">000710| 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>
738       <div class="lineNone">000711| &nbsp;</div>
739       <div class="lineNone">000712| 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>
740       <div class="lineNone">000713| *)</div>
741       <div class="lineNone">000714| &nbsp;</div>
742       <div class="lineNone">000715| 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>
743       <div class="lineNone">000716| &nbsp;</div>
744       <div class="lineNone">000717| 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>
745       <div class="lineNone">000718| &nbsp;</div>
746       <div class="lineNone">000719| 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>
747       <div class="lineNone">000720| &nbsp;</div>
748       <div class="lineNone">000721| 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>
749       <div class="lineNone">000722| &nbsp;</div>
750       <div class="lineNone">000723| 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>
751       <div class="lineNone">000724| &nbsp;</div>
752       <div class="lineNone">000725| 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>
753       <div class="lineNone">000726| &nbsp;</div>
754       <div class="lineNone">000727| (*</div>
755       <div class="lineNone">000728| 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>
756       <div class="lineNone">000729| &nbsp;</div>
757       <div class="lineNone">000730| 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>
758       <div class="lineNone">000731| &nbsp;</div>
759       <div class="lineNone">000732| 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>
760       <div class="lineNone">000733| &nbsp;</div>
761       <div class="lineNone">000734| 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>
762       <div class="lineNone">000735| &nbsp;</div>
763       <div class="lineNone">000736| 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>
764       <div class="lineNone">000737| &nbsp;</div>
765       <div class="lineNone">000738| 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>
766       <div class="lineNone">000739| &nbsp;</div>
767       <div class="lineNone">000740| 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>
768       <div class="lineNone">000741| &nbsp;</div>
769       <div class="lineNone">000742| 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>
770       <div class="lineNone">000743| &nbsp;</div>
771       <div class="lineNone">000744| 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>
772       <div class="lineNone">000745| &nbsp;</div>
773       <div class="lineNone">000746| 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>
774       <div class="lineNone">000747| &nbsp;</div>
775       <div class="lineNone">000748| 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>
776       <div class="lineNone">000749| &nbsp;</div>
777       <div class="lineNone">000750| 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>
778       <div class="lineNone">000751| &nbsp;</div>
779       <div class="lineNone">000752| 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>
780       <div class="lineNone">000753| &nbsp;</div>
781       <div class="lineNone">000754| 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>
782       <div class="lineNone">000755| &nbsp;</div>
783       <div class="lineNone">000756| 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>
784       <div class="lineNone">000757| &nbsp;</div>
785       <div class="lineNone">000758| 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>
786       <div class="lineNone">000759| &nbsp;</div>
787       <div class="lineNone">000760| 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>
788       <div class="lineNone">000761| &nbsp;</div>
789       <div class="lineNone">000762| 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>
790       <div class="lineNone">000763| *)</div>
791       <div class="lineNone">000764| &nbsp;</div>
792       <div class="lineNone">000765| 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>
793       <div class="lineNone">000766| &nbsp;</div>
794       <div class="lineNone">000767| 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>
795       <div class="lineNone">000768| &nbsp;</div>
796       <div class="lineNone">000769| 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>
797       <div class="lineNone">000770| &nbsp;</div>
798       <div class="lineNone">000771| 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>
799       <div class="lineNone">000772| &nbsp;</div>
800       <div class="lineNone">000773| 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>
801       <div class="lineNone">000774| &nbsp;</div>
802       <div class="lineNone">000775| 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>
803       <div class="lineNone">000776| &nbsp;</div>
804       <div class="lineNone">000777| (*----------------------------------------------------------------------*)</div>
805       <div class="lineNone">000778| (*&nbsp;Constructor&nbsp;functions.&nbsp;*)</div>
806       <div class="lineNone">000779| &nbsp;</div>
807       <div class="lineNone">000780| module&nbsp;Buffer&nbsp;=&nbsp;struct</div>
808       <div class="lineNone">000781| &nbsp;&nbsp;type&nbsp;t&nbsp;=&nbsp;{</div>
809       <div class="lineNone">000782| &nbsp;&nbsp;&nbsp;&nbsp;buf&nbsp;:&nbsp;Buffer.t;</div>
810       <div class="lineNone">000783| &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>
811       <div class="lineNone">000784| &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>
812       <div class="lineNone">000785| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;it&nbsp;outside&nbsp;the&nbsp;buffer&nbsp;because&nbsp;buffers&nbsp;aren't&nbsp;mutable.</div>
813       <div class="lineNone">000786| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</div>
814       <div class="lineNone">000787| &nbsp;&nbsp;&nbsp;&nbsp;mutable&nbsp;last&nbsp;:&nbsp;int;</div>
815       <div class="lineNone">000788| &nbsp;&nbsp;}</div>
816       <div class="lineNone">000789| &nbsp;</div>
817       <div class="lineNone">000790| &nbsp;&nbsp;let&nbsp;create&nbsp;()&nbsp;=</div>
818       <div class="lineNone">000791| &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>
819       <div class="lineNone">000792| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;choose&nbsp;a&nbsp;good&nbsp;initial&nbsp;size.</div>
820       <div class="lineNone">000793| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</div>
821       <div class="lineAllVisited">000794| &nbsp;&nbsp;&nbsp;&nbsp;(*[493152]*){&nbsp;buf&nbsp;=&nbsp;Buffer.create&nbsp;128;&nbsp;len&nbsp;=&nbsp;0;&nbsp;last&nbsp;=&nbsp;0&nbsp;}</div>
822       <div class="lineNone">000795| &nbsp;</div>
823       <div class="lineNone">000796| &nbsp;&nbsp;let&nbsp;contents&nbsp;{&nbsp;buf&nbsp;=&nbsp;buf;&nbsp;len&nbsp;=&nbsp;len;&nbsp;last&nbsp;=&nbsp;last&nbsp;}&nbsp;=</div>
824       <div class="lineAllVisited">000797| &nbsp;&nbsp;&nbsp;&nbsp;(*[493152]*)let&nbsp;data&nbsp;=</div>
825       <div class="lineNone">000798| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;len&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then</div>
826       <div class="lineAllVisited">000799| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[63280]*)Buffer.contents&nbsp;buf</div>
827       <div class="lineNone">000800| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</div>
828       <div class="lineAllVisited">000801| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[429872]*)Buffer.contents&nbsp;buf&nbsp;^&nbsp;(String.make&nbsp;1&nbsp;(Char.chr&nbsp;last))&nbsp;in</div>
829       <div class="lineAllVisited">000802| &nbsp;&nbsp;&nbsp;&nbsp;(*[493152]*)data,&nbsp;0,&nbsp;len</div>
830       <div class="lineNone">000803| &nbsp;</div>
831       <div class="lineNone">000804| &nbsp;&nbsp;(*&nbsp;Add&nbsp;exactly&nbsp;8&nbsp;bits.&nbsp;*)</div>
832       <div class="lineNone">000805| &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>
833       <div class="lineMixed">000806| &nbsp;&nbsp;&nbsp;&nbsp;(*[8266092]*)if&nbsp;(*[8266092]*)byte&nbsp;&lt;&nbsp;0&nbsp;||&nbsp;(*[8266092]*)byte&nbsp;&gt;&nbsp;255&nbsp;then&nbsp;(*[0]*)invalid_arg&nbsp;&quot;Bitstring.Buffer.add_byte&quot;;</div>
834       <div class="lineAllVisited">000807| &nbsp;&nbsp;&nbsp;&nbsp;(*[8266092]*)let&nbsp;shift&nbsp;=&nbsp;len&nbsp;land&nbsp;7&nbsp;in</div>
835       <div class="lineAllVisited">000808| &nbsp;&nbsp;&nbsp;&nbsp;(*[8266092]*)if&nbsp;shift&nbsp;=&nbsp;0&nbsp;then</div>
836       <div class="lineNone">000809| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Target&nbsp;buffer&nbsp;is&nbsp;byte-aligned.&nbsp;*)</div>
837       <div class="lineAllVisited">000810| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[521241]*)Buffer.add_char&nbsp;buf&nbsp;(Char.chr&nbsp;byte)</div>
838       <div class="lineNone">000811| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(</div>
839       <div class="lineNone">000812| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Target&nbsp;buffer&nbsp;is&nbsp;unaligned.&nbsp;&nbsp;'last'&nbsp;is&nbsp;meaningful.&nbsp;*)</div>
840       <div class="lineAllVisited">000813| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[7744851]*)let&nbsp;first&nbsp;=&nbsp;byte&nbsp;lsr&nbsp;shift&nbsp;in</div>
841       <div class="lineAllVisited">000814| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[7744851]*)let&nbsp;second&nbsp;=&nbsp;(byte&nbsp;lsl&nbsp;(8&nbsp;-&nbsp;shift))&nbsp;land&nbsp;0xff&nbsp;in</div>
842       <div class="lineAllVisited">000815| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[7744851]*)Buffer.add_char&nbsp;buf&nbsp;(*[7744851]*)(Char.chr&nbsp;(last&nbsp;lor&nbsp;first));</div>
843       <div class="lineAllVisited">000816| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[7744851]*)t.last&nbsp;&lt;-&nbsp;second</div>
844       <div class="lineNone">000817| &nbsp;&nbsp;&nbsp;&nbsp;);</div>
845       <div class="lineAllVisited">000818| &nbsp;&nbsp;&nbsp;&nbsp;(*[8266092]*)t.len&nbsp;&lt;-&nbsp;t.len&nbsp;+&nbsp;8</div>
846       <div class="lineNone">000819| &nbsp;</div>
847       <div class="lineNone">000820| &nbsp;&nbsp;(*&nbsp;Add&nbsp;exactly&nbsp;1&nbsp;bit.&nbsp;*)</div>
848       <div class="lineNone">000821| &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>
849       <div class="lineAllVisited">000822| &nbsp;&nbsp;&nbsp;&nbsp;(*[4426193]*)let&nbsp;shift&nbsp;=&nbsp;7&nbsp;-&nbsp;(len&nbsp;land&nbsp;7)&nbsp;in</div>
850       <div class="lineAllVisited">000823| &nbsp;&nbsp;&nbsp;&nbsp;(*[4426193]*)if&nbsp;shift&nbsp;&gt;&nbsp;0&nbsp;then</div>
851       <div class="lineNone">000824| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Somewhere&nbsp;in&nbsp;the&nbsp;middle&nbsp;of&nbsp;'last'.&nbsp;*)</div>
852       <div class="lineAllVisited">000825| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[3893270]*)t.last&nbsp;&lt;-&nbsp;last&nbsp;lor&nbsp;((if&nbsp;bit&nbsp;then&nbsp;(*[3004643]*)1&nbsp;else&nbsp;(*[888627]*)0)&nbsp;lsl&nbsp;shift)</div>
853       <div class="lineNone">000826| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(</div>
854       <div class="lineNone">000827| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Just&nbsp;a&nbsp;single&nbsp;spare&nbsp;bit&nbsp;in&nbsp;'last'.&nbsp;*)</div>
855       <div class="lineAllVisited">000828| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[532923]*)let&nbsp;last&nbsp;=&nbsp;last&nbsp;lor&nbsp;if&nbsp;bit&nbsp;then&nbsp;(*[407944]*)1&nbsp;else&nbsp;(*[124979]*)0&nbsp;in</div>
856       <div class="lineAllVisited">000829| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[532923]*)Buffer.add_char&nbsp;buf&nbsp;(*[532923]*)(Char.chr&nbsp;last);</div>
857       <div class="lineAllVisited">000830| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[532923]*)t.last&nbsp;&lt;-&nbsp;0</div>
858       <div class="lineNone">000831| &nbsp;&nbsp;&nbsp;&nbsp;);</div>
859       <div class="lineAllVisited">000832| &nbsp;&nbsp;&nbsp;&nbsp;(*[4426193]*)t.len&nbsp;&lt;-&nbsp;len&nbsp;+&nbsp;1</div>
860       <div class="lineNone">000833| &nbsp;</div>
861       <div class="lineNone">000834| &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>
862       <div class="lineNone">000835| &nbsp;&nbsp;&nbsp;*&nbsp;to&nbsp;call&nbsp;add_bit&nbsp;so&nbsp;it's&nbsp;slow.</div>
863       <div class="lineNone">000836| &nbsp;&nbsp;&nbsp;*)</div>
864       <div class="lineNone">000837| &nbsp;&nbsp;let&nbsp;_add_bits&nbsp;t&nbsp;c&nbsp;slen&nbsp;=</div>
865       <div class="lineMixed">000838| &nbsp;&nbsp;&nbsp;&nbsp;(*[318370]*)if&nbsp;(*[318370]*)slen&nbsp;&lt;&nbsp;1&nbsp;||&nbsp;(*[318370]*)slen&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(*[0]*)invalid_arg&nbsp;&quot;Bitstring.Buffer._add_bits&quot;;</div>
866       <div class="lineAllVisited">000839| &nbsp;&nbsp;&nbsp;&nbsp;(*[318370]*)for&nbsp;i&nbsp;=&nbsp;slen-1&nbsp;downto&nbsp;0&nbsp;do</div>
867       <div class="lineAllVisited">000840| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1273808]*)let&nbsp;bit&nbsp;=&nbsp;c&nbsp;land&nbsp;(1&nbsp;lsl&nbsp;i)&nbsp;&lt;&gt;&nbsp;0&nbsp;in</div>
868       <div class="lineAllVisited">000841| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1273808]*)add_bit&nbsp;t&nbsp;bit</div>
869       <div class="lineNone">000842| &nbsp;&nbsp;&nbsp;&nbsp;done</div>
870       <div class="lineNone">000843| &nbsp;</div>
871       <div class="lineNone">000844| &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>
872       <div class="lineAllVisited">000845| &nbsp;&nbsp;&nbsp;&nbsp;(*[26867]*)if&nbsp;slen&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
873       <div class="lineAllVisited">000846| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1389114]*)if&nbsp;len&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
874       <div class="lineAllVisited">000847| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[575784]*)if&nbsp;slen&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then</div>
875       <div class="lineNone">000848| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Common&nbsp;case&nbsp;-&nbsp;everything&nbsp;is&nbsp;byte-aligned.&nbsp;*)</div>
876       <div class="lineAllVisited">000849| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[64322]*)Buffer.add_substring&nbsp;buf&nbsp;str&nbsp;0&nbsp;(slen&nbsp;lsr&nbsp;3)</div>
877       <div class="lineNone">000850| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(</div>
878       <div class="lineNone">000851| &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>
879       <div class="lineNone">000852| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;remaining&nbsp;bits&nbsp;in&nbsp;last.</div>
880       <div class="lineNone">000853| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</div>
881       <div class="lineAllVisited">000854| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[511462]*)let&nbsp;slenbytes&nbsp;=&nbsp;slen&nbsp;lsr&nbsp;3&nbsp;in</div>
882       <div class="lineAllVisited">000855| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[345655]*)if&nbsp;slenbytes&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(*[165807]*)Buffer.add_substring&nbsp;buf&nbsp;str&nbsp;0&nbsp;slenbytes;</div>
883       <div class="lineAllVisited">000856| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[511462]*)let&nbsp;last&nbsp;=&nbsp;Char.code&nbsp;str.[slenbytes]&nbsp;in&nbsp;(*&nbsp;last&nbsp;char&nbsp;*)</div>
884       <div class="lineAllVisited">000857| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[511462]*)let&nbsp;mask&nbsp;=&nbsp;0xff&nbsp;lsl&nbsp;(8&nbsp;-&nbsp;(slen&nbsp;land&nbsp;7))&nbsp;in</div>
885       <div class="lineAllVisited">000858| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[511462]*)t.last&nbsp;&lt;-&nbsp;last&nbsp;land&nbsp;mask</div>
886       <div class="lineNone">000859| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);</div>
887       <div class="lineAllVisited">000860| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[575784]*)t.len&nbsp;&lt;-&nbsp;len&nbsp;+&nbsp;slen</div>
888       <div class="lineNone">000861| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
889       <div class="lineNone">000862| &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>
890       <div class="lineNone">000863| &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>
891       <div class="lineNone">000864| &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>
892       <div class="lineNone">000865| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</div>
893       <div class="lineNone">000866| &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>
894       <div class="lineNone">000867| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</div>
895       <div class="lineAllVisited">000868| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[813330]*)let&nbsp;slenbytes&nbsp;=&nbsp;slen&nbsp;lsr&nbsp;3&nbsp;in</div>
896       <div class="lineAllVisited">000869| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[813330]*)for&nbsp;i&nbsp;=&nbsp;0&nbsp;to&nbsp;slenbytes-1&nbsp;do</div>
897       <div class="lineAllVisited">000870| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[5943116]*)let&nbsp;byte&nbsp;=&nbsp;Char.code&nbsp;str.[i]&nbsp;in</div>
898       <div class="lineAllVisited">000871| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[5943116]*)add_byte&nbsp;t&nbsp;byte</div>
899       <div class="lineNone">000872| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;done;</div>
900       <div class="lineAllVisited">000873| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[813330]*)let&nbsp;bitsleft&nbsp;=&nbsp;slen&nbsp;-&nbsp;(slenbytes&nbsp;lsl&nbsp;3)&nbsp;in</div>
901       <div class="lineAllVisited">000874| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[144583]*)if&nbsp;bitsleft&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
902       <div class="lineAllVisited">000875| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[668747]*)let&nbsp;c&nbsp;=&nbsp;Char.code&nbsp;str.[slenbytes]&nbsp;in</div>
903       <div class="lineAllVisited">000876| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[668747]*)for&nbsp;i&nbsp;=&nbsp;0&nbsp;to&nbsp;bitsleft&nbsp;-&nbsp;1&nbsp;do</div>
904       <div class="lineAllVisited">000877| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2652755]*)let&nbsp;bit&nbsp;=&nbsp;c&nbsp;land&nbsp;(0x80&nbsp;lsr&nbsp;i)&nbsp;&lt;&gt;&nbsp;0&nbsp;in</div>
905       <div class="lineAllVisited">000878| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2652755]*)add_bit&nbsp;t&nbsp;bit</div>
906       <div class="lineNone">000879| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;done</div>
907       <div class="lineNone">000880| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</div>
908       <div class="lineNone">000881| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);</div>
909       <div class="lineNone">000882| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
910       <div class="lineNone">000883| end</div>
911       <div class="lineNone">000884| &nbsp;</div>
912       <div class="lineNone">000885| (*&nbsp;Construct&nbsp;a&nbsp;single&nbsp;bit.&nbsp;*)</div>
913       <div class="lineNone">000886| let&nbsp;construct_bit&nbsp;buf&nbsp;b&nbsp;_&nbsp;_&nbsp;=</div>
914       <div class="lineAllVisited">000887| &nbsp;&nbsp;(*[130]*)Buffer.add_bit&nbsp;buf&nbsp;b</div>
915       <div class="lineNone">000888| &nbsp;</div>
916       <div class="lineNone">000889| (*&nbsp;Construct&nbsp;a&nbsp;field,&nbsp;flen&nbsp;=&nbsp;[2..8].&nbsp;*)</div>
917       <div class="lineNone">000890| let&nbsp;construct_char_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;exn&nbsp;=</div>
918       <div class="lineAllVisited">000891| &nbsp;&nbsp;(*[1204740]*)let&nbsp;max_val&nbsp;=&nbsp;1&nbsp;lsl&nbsp;flen&nbsp;in</div>
919       <div class="lineMixed">000892| &nbsp;&nbsp;(*[1204740]*)if&nbsp;(*[1204740]*)v&nbsp;&lt;&nbsp;0&nbsp;||&nbsp;(*[1204740]*)v&nbsp;&gt;=&nbsp;max_val&nbsp;then&nbsp;(*[0]*)raise&nbsp;exn;</div>
920       <div class="lineAllVisited">000893| &nbsp;&nbsp;(*[1204740]*)if&nbsp;flen&nbsp;=&nbsp;8&nbsp;then</div>
921       <div class="lineAllVisited">000894| &nbsp;&nbsp;&nbsp;&nbsp;(*[1203960]*)Buffer.add_byte&nbsp;buf&nbsp;v</div>
922       <div class="lineNone">000895| &nbsp;&nbsp;else</div>
923       <div class="lineAllVisited">000896| &nbsp;&nbsp;&nbsp;&nbsp;(*[780]*)Buffer._add_bits&nbsp;buf&nbsp;v&nbsp;flen</div>
924       <div class="lineNone">000897| &nbsp;</div>
925       <div class="lineNone">000898| (*&nbsp;Construct&nbsp;a&nbsp;field&nbsp;of&nbsp;up&nbsp;to&nbsp;31&nbsp;bits.&nbsp;*)</div>
926       <div class="lineNone">000899| let&nbsp;construct_int_be_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;exn&nbsp;=</div>
927       <div class="lineNone">000900| &nbsp;&nbsp;(*&nbsp;Check&nbsp;value&nbsp;is&nbsp;within&nbsp;range.&nbsp;*)</div>
928       <div class="lineMixed">000901| &nbsp;&nbsp;(*[392]*)if&nbsp;not&nbsp;(I.range_unsigned&nbsp;v&nbsp;flen)&nbsp;then&nbsp;(*[0]*)raise&nbsp;exn;</div>
929       <div class="lineNone">000902| &nbsp;&nbsp;(*&nbsp;Add&nbsp;the&nbsp;bytes.&nbsp;*)</div>
930       <div class="lineAllVisited">000903| &nbsp;&nbsp;(*[392]*)I.map_bytes_be&nbsp;(Buffer._add_bits&nbsp;buf)&nbsp;(Buffer.add_byte&nbsp;buf)&nbsp;v&nbsp;flen</div>
931       <div class="lineNone">000904| &nbsp;</div>
932       <div class="lineNone">000905| (*&nbsp;Construct&nbsp;a&nbsp;field&nbsp;of&nbsp;up&nbsp;to&nbsp;31&nbsp;bits.&nbsp;*)</div>
933       <div class="lineNone">000906| let&nbsp;construct_int_le_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;exn&nbsp;=</div>
934       <div class="lineNone">000907| &nbsp;&nbsp;(*&nbsp;Check&nbsp;value&nbsp;is&nbsp;within&nbsp;range.&nbsp;*)</div>
935       <div class="lineMixed">000908| &nbsp;&nbsp;(*[780]*)if&nbsp;not&nbsp;(I.range_unsigned&nbsp;v&nbsp;flen)&nbsp;then&nbsp;(*[0]*)raise&nbsp;exn;</div>
936       <div class="lineNone">000909| &nbsp;&nbsp;(*&nbsp;Add&nbsp;the&nbsp;bytes.&nbsp;*)</div>
937       <div class="lineAllVisited">000910| &nbsp;&nbsp;(*[780]*)I.map_bytes_le&nbsp;(Buffer._add_bits&nbsp;buf)&nbsp;(Buffer.add_byte&nbsp;buf)&nbsp;v&nbsp;flen</div>
938       <div class="lineNone">000911| &nbsp;</div>
939       <div class="lineNone">000912| let&nbsp;construct_int_ne_unsigned&nbsp;=</div>
940       <div class="lineAllVisited">000913| &nbsp;&nbsp;(*[43]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
941       <div class="lineAllUnvisited">000914| &nbsp;&nbsp;then&nbsp;(*[0]*)construct_int_be_unsigned</div>
942       <div class="lineAllVisited">000915| &nbsp;&nbsp;else&nbsp;(*[43]*)construct_int_le_unsigned</div>
943       <div class="lineNone">000916| &nbsp;</div>
944       <div class="lineNone">000917| let&nbsp;construct_int_ee_unsigned&nbsp;=&nbsp;function</div>
945       <div class="lineAllUnvisited">000918| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[0]*)construct_int_be_unsigned</div>
946       <div class="lineAllUnvisited">000919| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*[0]*)construct_int_le_unsigned</div>
947       <div class="lineAllUnvisited">000920| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[0]*)construct_int_ne_unsigned</div>
948       <div class="lineNone">000921| &nbsp;</div>
949       <div class="lineNone">000922| (*&nbsp;Construct&nbsp;a&nbsp;field&nbsp;of&nbsp;exactly&nbsp;32&nbsp;bits.&nbsp;*)</div>
950       <div class="lineNone">000923| let&nbsp;construct_int32_be_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;_&nbsp;=</div>
951       <div class="lineAllVisited">000924| &nbsp;&nbsp;(*[136]*)Buffer.add_byte&nbsp;buf</div>
952       <div class="lineNone">000925| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;24));</div>
953       <div class="lineAllVisited">000926| &nbsp;&nbsp;(*[136]*)Buffer.add_byte&nbsp;buf</div>
954       <div class="lineNone">000927| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;((Int32.logand&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;16)&nbsp;0xff_l)));</div>
955       <div class="lineAllVisited">000928| &nbsp;&nbsp;(*[136]*)Buffer.add_byte&nbsp;buf</div>
956       <div class="lineAllVisited">000929| &nbsp;&nbsp;&nbsp;&nbsp;(*[136]*)(Int32.to_int&nbsp;((Int32.logand&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;8)&nbsp;0xff_l)));</div>
957       <div class="lineAllVisited">000930| &nbsp;&nbsp;(*[136]*)Buffer.add_byte&nbsp;buf</div>
958       <div class="lineNone">000931| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;(Int32.logand&nbsp;v&nbsp;0xff_l))</div>
959       <div class="lineNone">000932| &nbsp;</div>
960       <div class="lineNone">000933| let&nbsp;construct_int32_le_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;_&nbsp;=</div>
961       <div class="lineAllVisited">000934| &nbsp;&nbsp;(*[272]*)Buffer.add_byte&nbsp;buf</div>
962       <div class="lineNone">000935| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;(Int32.logand&nbsp;v&nbsp;0xff_l));</div>
963       <div class="lineAllVisited">000936| &nbsp;&nbsp;(*[272]*)Buffer.add_byte&nbsp;buf</div>
964       <div class="lineNone">000937| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;((Int32.logand&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;8)&nbsp;0xff_l)));</div>
965       <div class="lineAllVisited">000938| &nbsp;&nbsp;(*[272]*)Buffer.add_byte&nbsp;buf</div>
966       <div class="lineAllVisited">000939| &nbsp;&nbsp;&nbsp;&nbsp;(*[272]*)(Int32.to_int&nbsp;((Int32.logand&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;16)&nbsp;0xff_l)));</div>
967       <div class="lineAllVisited">000940| &nbsp;&nbsp;(*[272]*)Buffer.add_byte&nbsp;buf</div>
968       <div class="lineNone">000941| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;24))</div>
969       <div class="lineNone">000942| &nbsp;</div>
970       <div class="lineNone">000943| let&nbsp;construct_int32_ne_unsigned&nbsp;=</div>
971       <div class="lineAllVisited">000944| &nbsp;&nbsp;(*[43]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
972       <div class="lineAllUnvisited">000945| &nbsp;&nbsp;then&nbsp;(*[0]*)construct_int32_be_unsigned</div>
973       <div class="lineAllVisited">000946| &nbsp;&nbsp;else&nbsp;(*[43]*)construct_int32_le_unsigned</div>
974       <div class="lineNone">000947| &nbsp;</div>
975       <div class="lineNone">000948| let&nbsp;construct_int32_ee_unsigned&nbsp;=&nbsp;function</div>
976       <div class="lineAllVisited">000949| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[6]*)construct_int32_be_unsigned</div>
977       <div class="lineAllVisited">000950| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*[6]*)construct_int32_le_unsigned</div>
978       <div class="lineAllVisited">000951| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[6]*)construct_int32_ne_unsigned</div>
979       <div class="lineNone">000952| &nbsp;</div>
980       <div class="lineNone">000953| (*&nbsp;Construct&nbsp;a&nbsp;field&nbsp;of&nbsp;up&nbsp;to&nbsp;64&nbsp;bits.&nbsp;*)</div>
981       <div class="lineNone">000954| let&nbsp;construct_int64_be_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;exn&nbsp;=</div>
982       <div class="lineNone">000955| &nbsp;&nbsp;(*&nbsp;Check&nbsp;value&nbsp;is&nbsp;within&nbsp;range.&nbsp;*)</div>
983       <div class="lineMixed">000956| &nbsp;&nbsp;(*[352110]*)if&nbsp;not&nbsp;(I64.range_unsigned&nbsp;v&nbsp;flen)&nbsp;then&nbsp;(*[0]*)raise&nbsp;exn;</div>
984       <div class="lineNone">000957| &nbsp;&nbsp;(*&nbsp;Add&nbsp;the&nbsp;bytes.&nbsp;*)</div>
985       <div class="lineAllVisited">000958| &nbsp;&nbsp;(*[352110]*)I64.map_bytes_be&nbsp;(Buffer._add_bits&nbsp;buf)&nbsp;(Buffer.add_byte&nbsp;buf)&nbsp;v&nbsp;flen</div>
986       <div class="lineNone">000959| &nbsp;</div>
987       <div class="lineNone">000960| (*&nbsp;Construct&nbsp;a&nbsp;field&nbsp;of&nbsp;up&nbsp;to&nbsp;64&nbsp;bits.&nbsp;*)</div>
988       <div class="lineNone">000961| let&nbsp;construct_int64_le_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;exn&nbsp;=</div>
989       <div class="lineNone">000962| &nbsp;&nbsp;(*&nbsp;Check&nbsp;value&nbsp;is&nbsp;within&nbsp;range.&nbsp;*)</div>
990       <div class="lineMixed">000963| &nbsp;&nbsp;(*[520]*)if&nbsp;not&nbsp;(I64.range_unsigned&nbsp;v&nbsp;flen)&nbsp;then&nbsp;(*[0]*)raise&nbsp;exn;</div>
991       <div class="lineNone">000964| &nbsp;&nbsp;(*&nbsp;Add&nbsp;the&nbsp;bytes.&nbsp;*)</div>
992       <div class="lineAllVisited">000965| &nbsp;&nbsp;(*[520]*)I64.map_bytes_le&nbsp;(Buffer._add_bits&nbsp;buf)&nbsp;(Buffer.add_byte&nbsp;buf)&nbsp;v&nbsp;flen</div>
993       <div class="lineNone">000966| &nbsp;</div>
994       <div class="lineNone">000967| let&nbsp;construct_int64_ne_unsigned&nbsp;=</div>
995       <div class="lineAllVisited">000968| &nbsp;&nbsp;(*[43]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
996       <div class="lineAllUnvisited">000969| &nbsp;&nbsp;then&nbsp;(*[0]*)construct_int64_be_unsigned</div>
997       <div class="lineAllVisited">000970| &nbsp;&nbsp;else&nbsp;(*[43]*)construct_int64_le_unsigned</div>
998       <div class="lineNone">000971| &nbsp;</div>
999       <div class="lineNone">000972| let&nbsp;construct_int64_ee_unsigned&nbsp;=&nbsp;function</div>
1000       <div class="lineAllUnvisited">000973| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[0]*)construct_int64_be_unsigned</div>
1001       <div class="lineAllUnvisited">000974| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*[0]*)construct_int64_le_unsigned</div>
1002       <div class="lineAllUnvisited">000975| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[0]*)construct_int64_ne_unsigned</div>
1003       <div class="lineNone">000976| &nbsp;</div>
1004       <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>
1005       <div class="lineNone">000978| &nbsp;*&nbsp;in&nbsp;length&nbsp;of&nbsp;course.</div>
1006       <div class="lineNone">000979| &nbsp;*)</div>
1007       <div class="lineNone">000980| let&nbsp;construct_string&nbsp;buf&nbsp;str&nbsp;=</div>
1008       <div class="lineAllVisited">000981| &nbsp;&nbsp;(*[89505]*)let&nbsp;len&nbsp;=&nbsp;String.length&nbsp;str&nbsp;in</div>
1009       <div class="lineAllVisited">000982| &nbsp;&nbsp;(*[89505]*)Buffer.add_bits&nbsp;buf&nbsp;str&nbsp;(len&nbsp;lsl&nbsp;3)</div>
1010       <div class="lineNone">000983| &nbsp;</div>
1011       <div class="lineNone">000984| (*&nbsp;Construct&nbsp;from&nbsp;a&nbsp;bitstring.&nbsp;*)</div>
1012       <div class="lineNone">000985| let&nbsp;construct_bitstring&nbsp;buf&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;=</div>
1013       <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>
1014       <div class="lineNone">000987| &nbsp;&nbsp;&nbsp;*&nbsp;the&nbsp;underlying&nbsp;string.</div>
1015       <div class="lineNone">000988| &nbsp;&nbsp;&nbsp;*)</div>
1016       <div class="lineAllVisited">000989| &nbsp;&nbsp;(*[1317896]*)let&nbsp;blen&nbsp;=&nbsp;7&nbsp;-&nbsp;((off&nbsp;+&nbsp;7)&nbsp;land&nbsp;7)&nbsp;in</div>
1017       <div class="lineAllVisited">000990| &nbsp;&nbsp;(*[1317896]*)let&nbsp;blen&nbsp;=&nbsp;min&nbsp;blen&nbsp;len&nbsp;in</div>
1018       <div class="lineAllVisited">000991| &nbsp;&nbsp;(*[1317896]*)let&nbsp;rec&nbsp;loop&nbsp;off&nbsp;len&nbsp;blen&nbsp;=</div>
1019       <div class="lineAllVisited">000992| &nbsp;&nbsp;&nbsp;&nbsp;(*[1317896]*)if&nbsp;blen&nbsp;=&nbsp;0&nbsp;then&nbsp;((*[1317896]*)off,&nbsp;len)</div>
1020       <div class="lineNone">000993| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(</div>
1021       <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>
1022       <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>
1023       <div class="lineAllUnvisited">000996| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Buffer.add_bit&nbsp;buf&nbsp;(*[0]*)b;</div>
1024       <div class="lineAllUnvisited">000997| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)loop&nbsp;off&nbsp;len&nbsp;(blen-1)</div>
1025       <div class="lineNone">000998| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
1026       <div class="lineNone">000999| &nbsp;&nbsp;in</div>
1027       <div class="lineAllVisited">001000| &nbsp;&nbsp;(*[1317896]*)let&nbsp;off,&nbsp;len&nbsp;=&nbsp;loop&nbsp;off&nbsp;len&nbsp;blen&nbsp;in</div>
1028       <div class="lineAllVisited">001001| &nbsp;&nbsp;(*[1317896]*)assert&nbsp;((*[1317896]*)len&nbsp;=&nbsp;0&nbsp;||&nbsp;(off&nbsp;(*[1291094]*)land&nbsp;7)&nbsp;=&nbsp;0);</div>
1029       <div class="lineNone">001002| &nbsp;</div>
1030       <div class="lineNone">001003| &nbsp;&nbsp;(*&nbsp;Add&nbsp;the&nbsp;remaining&nbsp;'len'&nbsp;bits.&nbsp;*)</div>
1031       <div class="lineAllVisited">001004| &nbsp;&nbsp;(*[1317896]*)let&nbsp;data&nbsp;=</div>
1032       <div class="lineNone">001005| &nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;off&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
1033       <div class="lineNone">001006| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;XXX&nbsp;dangerous&nbsp;allocation&nbsp;*)</div>
1034       <div class="lineAllVisited">001007| &nbsp;&nbsp;&nbsp;&nbsp;(*[1317896]*)if&nbsp;off&nbsp;=&nbsp;0&nbsp;then&nbsp;(*[1317896]*)data</div>
1035       <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>
1036       <div class="lineNone">001009| &nbsp;</div>
1037       <div class="lineAllVisited">001010| &nbsp;&nbsp;(*[1317896]*)Buffer.add_bits&nbsp;buf&nbsp;data&nbsp;len</div>
1038       <div class="lineNone">001011| &nbsp;</div>
1039       <div class="lineNone">001012| (*&nbsp;Concatenate&nbsp;bitstrings.&nbsp;*)</div>
1040       <div class="lineNone">001013| let&nbsp;concat&nbsp;bs&nbsp;=</div>
1041       <div class="lineAllVisited">001014| &nbsp;&nbsp;(*[40461]*)let&nbsp;buf&nbsp;=&nbsp;Buffer.create&nbsp;()&nbsp;in</div>
1042       <div class="lineAllVisited">001015| &nbsp;&nbsp;(*[40461]*)List.iter&nbsp;(construct_bitstring&nbsp;buf)&nbsp;(*[40461]*)bs;</div>
1043       <div class="lineAllVisited">001016| &nbsp;&nbsp;(*[40461]*)Buffer.contents&nbsp;buf</div>
1044       <div class="lineNone">001017| &nbsp;</div>
1045       <div class="lineNone">001018| (*----------------------------------------------------------------------*)</div>
1046       <div class="lineNone">001019| (*&nbsp;Extract&nbsp;a&nbsp;string&nbsp;from&nbsp;a&nbsp;bitstring.&nbsp;*)</div>
1047       <div class="lineNone">001020| let&nbsp;string_of_bitstring&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;=</div>
1048       <div class="lineAllVisited">001021| &nbsp;&nbsp;(*[73011]*)if&nbsp;off&nbsp;(*[73011]*)land&nbsp;7&nbsp;=&nbsp;0&nbsp;&amp;&amp;&nbsp;len&nbsp;(*[16597]*)land&nbsp;7&nbsp;=&nbsp;0&nbsp;then</div>
1049       <div class="lineNone">001022| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Easy&nbsp;case:&nbsp;everything&nbsp;is&nbsp;byte-aligned.&nbsp;*)</div>
1050       <div class="lineAllVisited">001023| &nbsp;&nbsp;&nbsp;&nbsp;(*[9037]*)String.sub&nbsp;data&nbsp;(off&nbsp;lsr&nbsp;3)&nbsp;(len&nbsp;lsr&nbsp;3)</div>
1051       <div class="lineNone">001024| &nbsp;&nbsp;else&nbsp;(</div>
1052       <div class="lineNone">001025| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Bit-twiddling&nbsp;case.&nbsp;*)</div>
1053       <div class="lineAllVisited">001026| &nbsp;&nbsp;&nbsp;&nbsp;(*[63974]*)let&nbsp;strlen&nbsp;=&nbsp;(len&nbsp;+&nbsp;7)&nbsp;lsr&nbsp;3&nbsp;in</div>
1054       <div class="lineAllVisited">001027| &nbsp;&nbsp;&nbsp;&nbsp;(*[63974]*)let&nbsp;str&nbsp;=&nbsp;String.make&nbsp;strlen&nbsp;'\000'&nbsp;in</div>
1055       <div class="lineAllVisited">001028| &nbsp;&nbsp;&nbsp;&nbsp;(*[63974]*)let&nbsp;rec&nbsp;loop&nbsp;data&nbsp;off&nbsp;len&nbsp;i&nbsp;=</div>
1056       <div class="lineAllVisited">001029| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[326148]*)if&nbsp;len&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
1057       <div class="lineAllVisited">001030| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[262174]*)let&nbsp;c&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
1058       <div class="lineNone">001031| &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>
1059       <div class="lineAllVisited">001032| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[262174]*)str.[i]&nbsp;(*[262174]*)&lt;-&nbsp;Char.chr&nbsp;c;</div>
1060       <div class="lineAllVisited">001033| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[262174]*)loop&nbsp;data&nbsp;off&nbsp;len&nbsp;(i+1)</div>
1061       <div class="lineAllVisited">001034| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[52324]*)if&nbsp;len&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
1062       <div class="lineAllVisited">001035| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[11650]*)let&nbsp;c&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;len&nbsp;in</div>
1063       <div class="lineAllVisited">001036| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[11650]*)str.[i]&nbsp;&lt;-&nbsp;Char.chr&nbsp;(c&nbsp;lsl&nbsp;(8-len))</div>
1064       <div class="lineNone">001037| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</div>
1065       <div class="lineNone">001038| &nbsp;&nbsp;&nbsp;&nbsp;in</div>
1066       <div class="lineAllVisited">001039| &nbsp;&nbsp;&nbsp;&nbsp;(*[63974]*)loop&nbsp;data&nbsp;off&nbsp;len&nbsp;(*[63974]*)0;</div>
1067       <div class="lineAllVisited">001040| &nbsp;&nbsp;&nbsp;&nbsp;(*[63974]*)str</div>
1068       <div class="lineNone">001041| &nbsp;&nbsp;)</div>
1069       <div class="lineNone">001042| &nbsp;</div>
1070       <div class="lineNone">001043| (*&nbsp;To&nbsp;channel.&nbsp;*)</div>
1071       <div class="lineNone">001044| &nbsp;</div>
1072       <div class="lineNone">001045| let&nbsp;bitstring_to_chan&nbsp;((data,&nbsp;off,&nbsp;len)&nbsp;as&nbsp;bits)&nbsp;chan&nbsp;=</div>
1073       <div class="lineNone">001046| &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>
1074       <div class="lineMixed">001047| &nbsp;&nbsp;(*[1]*)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>
1075       <div class="lineNone">001048| &nbsp;</div>
1076       <div class="lineAllVisited">001049| &nbsp;&nbsp;(*[1]*)if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then</div>
1077       <div class="lineNone">001050| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Easy&nbsp;case:&nbsp;string&nbsp;is&nbsp;byte-aligned.&nbsp;*)</div>
1078       <div class="lineAllVisited">001051| &nbsp;&nbsp;&nbsp;&nbsp;(*[1]*)output&nbsp;chan&nbsp;data&nbsp;(off&nbsp;lsr&nbsp;3)&nbsp;(len&nbsp;lsr&nbsp;3)</div>
1079       <div class="lineNone">001052| &nbsp;&nbsp;else&nbsp;(</div>
1080       <div class="lineNone">001053| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Bit-twiddling&nbsp;case:&nbsp;reuse&nbsp;string_of_bitstring&nbsp;*)</div>
1081       <div class="lineAllUnvisited">001054| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;str&nbsp;=&nbsp;string_of_bitstring&nbsp;bits&nbsp;in</div>
1082       <div class="lineAllUnvisited">001055| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)output_string&nbsp;chan&nbsp;str</div>
1083       <div class="lineNone">001056| &nbsp;&nbsp;)</div>
1084       <div class="lineNone">001057| &nbsp;</div>
1085       <div class="lineNone">001058| let&nbsp;bitstring_to_file&nbsp;bits&nbsp;filename&nbsp;=</div>
1086       <div class="lineAllUnvisited">001059| &nbsp;&nbsp;(*[0]*)let&nbsp;chan&nbsp;=&nbsp;open_out_bin&nbsp;filename&nbsp;in</div>
1087       <div class="lineAllUnvisited">001060| &nbsp;&nbsp;(*[0]*)try</div>
1088       <div class="lineAllUnvisited">001061| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)bitstring_to_chan&nbsp;bits&nbsp;chan;</div>
1089       <div class="lineAllUnvisited">001062| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)close_out&nbsp;chan</div>
1090       <div class="lineNone">001063| &nbsp;&nbsp;with&nbsp;exn&nbsp;-&gt;</div>
1091       <div class="lineAllUnvisited">001064| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)close_out&nbsp;(*[0]*)chan;</div>
1092       <div class="lineAllUnvisited">001065| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)raise&nbsp;exn</div>
1093       <div class="lineNone">001066| &nbsp;</div>
1094       <div class="lineNone">001067| (*----------------------------------------------------------------------*)</div>
1095       <div class="lineNone">001068| (*&nbsp;Comparison.&nbsp;*)</div>
1096       <div class="lineNone">001069| let&nbsp;compare&nbsp;((data1,&nbsp;off1,&nbsp;len1)&nbsp;as&nbsp;bs1)&nbsp;((data2,&nbsp;off2,&nbsp;len2)&nbsp;as&nbsp;bs2)&nbsp;=</div>
1097       <div class="lineNone">001070| &nbsp;&nbsp;(*&nbsp;In&nbsp;the&nbsp;fully-aligned&nbsp;case,&nbsp;this&nbsp;is&nbsp;reduced&nbsp;to&nbsp;string&nbsp;comparison&nbsp;...&nbsp;*)</div>
1098       <div class="lineAllVisited">001071| &nbsp;&nbsp;(*[4624]*)if&nbsp;off1&nbsp;(*[4624]*)land&nbsp;7&nbsp;=&nbsp;0&nbsp;&amp;&amp;&nbsp;len1&nbsp;(*[4624]*)land&nbsp;7&nbsp;(*[4624]*)=&nbsp;0&nbsp;&amp;&amp;&nbsp;off2&nbsp;(*[680]*)land&nbsp;7&nbsp;(*[680]*)=&nbsp;0&nbsp;&amp;&amp;&nbsp;len2&nbsp;(*[535]*)land&nbsp;7&nbsp;=&nbsp;0</div>
1099       <div class="lineNone">001072| &nbsp;&nbsp;then&nbsp;(</div>
1100       <div class="lineNone">001073| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;...&nbsp;but&nbsp;we&nbsp;have&nbsp;to&nbsp;do&nbsp;that&nbsp;by&nbsp;hand&nbsp;because&nbsp;the&nbsp;bits&nbsp;may</div>
1101       <div class="lineNone">001074| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;not&nbsp;extend&nbsp;to&nbsp;the&nbsp;full&nbsp;length&nbsp;of&nbsp;the&nbsp;underlying&nbsp;string.</div>
1102       <div class="lineNone">001075| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</div>
1103       <div class="lineAllVisited">001076| &nbsp;&nbsp;&nbsp;&nbsp;(*[100]*)let&nbsp;off1&nbsp;=&nbsp;off1&nbsp;lsr&nbsp;3&nbsp;and&nbsp;off2&nbsp;=&nbsp;off2&nbsp;lsr&nbsp;3</div>
1104       <div class="lineNone">001077| &nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;len1&nbsp;=&nbsp;len1&nbsp;lsr&nbsp;3&nbsp;and&nbsp;len2&nbsp;=&nbsp;len2&nbsp;lsr&nbsp;3&nbsp;in</div>
1105       <div class="lineAllVisited">001078| &nbsp;&nbsp;&nbsp;&nbsp;(*[100]*)let&nbsp;rec&nbsp;loop&nbsp;i&nbsp;=</div>
1106       <div class="lineAllVisited">001079| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[240]*)if&nbsp;(*[240]*)i&nbsp;&lt;&nbsp;len1&nbsp;&amp;&amp;&nbsp;(*[170]*)i&nbsp;&lt;&nbsp;len2&nbsp;then&nbsp;(</div>
1107       <div class="lineAllVisited">001080| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[140]*)let&nbsp;c1&nbsp;=&nbsp;String.unsafe_get&nbsp;data1&nbsp;(off1&nbsp;+&nbsp;i)</div>
1108       <div class="lineNone">001081| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;c2&nbsp;=&nbsp;String.unsafe_get&nbsp;data2&nbsp;(off2&nbsp;+&nbsp;i)&nbsp;in</div>
1109       <div class="lineAllVisited">001082| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[140]*)let&nbsp;r&nbsp;=&nbsp;compare&nbsp;c1&nbsp;c2&nbsp;in</div>
1110       <div class="lineMixed">001083| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[140]*)if&nbsp;r&nbsp;&lt;&gt;&nbsp;0&nbsp;then&nbsp;(*[0]*)r</div>
1111       <div class="lineAllVisited">001084| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[140]*)loop&nbsp;(i+1)</div>
1112       <div class="lineNone">001085| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</div>
1113       <div class="lineAllVisited">001086| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[100]*)len1&nbsp;-&nbsp;len2</div>
1114       <div class="lineNone">001087| &nbsp;&nbsp;&nbsp;&nbsp;in</div>
1115       <div class="lineAllVisited">001088| &nbsp;&nbsp;&nbsp;&nbsp;(*[100]*)loop&nbsp;0</div>
1116       <div class="lineNone">001089| &nbsp;&nbsp;)</div>
1117       <div class="lineNone">001090| &nbsp;&nbsp;else&nbsp;(</div>
1118       <div class="lineNone">001091| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Slow/unaligned.&nbsp;*)</div>
1119       <div class="lineAllVisited">001092| &nbsp;&nbsp;&nbsp;&nbsp;(*[4524]*)let&nbsp;str1&nbsp;=&nbsp;string_of_bitstring&nbsp;bs1</div>
1120       <div class="lineNone">001093| &nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;str2&nbsp;=&nbsp;string_of_bitstring&nbsp;bs2&nbsp;in</div>
1121       <div class="lineAllVisited">001094| &nbsp;&nbsp;&nbsp;&nbsp;(*[4524]*)let&nbsp;r&nbsp;=&nbsp;String.compare&nbsp;str1&nbsp;str2&nbsp;in</div>
1122       <div class="lineAllVisited">001095| &nbsp;&nbsp;&nbsp;&nbsp;(*[4524]*)if&nbsp;r&nbsp;&lt;&gt;&nbsp;0&nbsp;then&nbsp;(*[3058]*)r&nbsp;else&nbsp;(*[1466]*)len1&nbsp;-&nbsp;len2</div>
1123       <div class="lineNone">001096| &nbsp;&nbsp;)</div>
1124       <div class="lineNone">001097| &nbsp;</div>
1125       <div class="lineNone">001098| let&nbsp;equals&nbsp;((_,&nbsp;_,&nbsp;len1)&nbsp;as&nbsp;bs1)&nbsp;((_,&nbsp;_,&nbsp;len2)&nbsp;as&nbsp;bs2)&nbsp;=</div>
1126       <div class="lineMixed">001099| &nbsp;&nbsp;(*[7]*)if&nbsp;len1&nbsp;&lt;&gt;&nbsp;len2&nbsp;then&nbsp;(*[0]*)false</div>
1127       <div class="lineAllVisited">001100| &nbsp;&nbsp;else&nbsp;(*[7]*)if&nbsp;bs1&nbsp;=&nbsp;bs2&nbsp;then&nbsp;(*[7]*)true</div>
1128       <div class="lineAllUnvisited">001101| &nbsp;&nbsp;else&nbsp;(*[0]*)0&nbsp;=&nbsp;compare&nbsp;bs1&nbsp;bs2</div>
1129       <div class="lineNone">001102| &nbsp;</div>
1130       <div class="lineNone">001103| (*----------------------------------------------------------------------*)</div>
1131       <div class="lineNone">001104| (*&nbsp;Bit&nbsp;get/set&nbsp;functions.&nbsp;*)</div>
1132       <div class="lineNone">001105| &nbsp;</div>
1133       <div class="lineAllUnvisited">001106| let&nbsp;index_out_of_bounds&nbsp;()&nbsp;=&nbsp;(*[0]*)invalid_arg&nbsp;&quot;index&nbsp;out&nbsp;of&nbsp;bounds&quot;</div>
1134       <div class="lineNone">001107| &nbsp;</div>
1135       <div class="lineNone">001108| let&nbsp;put&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;n&nbsp;v&nbsp;=</div>
1136       <div class="lineAllUnvisited">001109| &nbsp;&nbsp;(*[0]*)if&nbsp;(*[0]*)n&nbsp;&lt;&nbsp;0&nbsp;||&nbsp;(*[0]*)off+n&nbsp;&gt;=&nbsp;len&nbsp;then&nbsp;(*[0]*)index_out_of_bounds&nbsp;()</div>
1137       <div class="lineNone">001110| &nbsp;&nbsp;else&nbsp;(</div>
1138       <div class="lineAllUnvisited">001111| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;i&nbsp;=&nbsp;off+n&nbsp;in</div>
1139       <div class="lineAllUnvisited">001112| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;si&nbsp;=&nbsp;i&nbsp;lsr&nbsp;3&nbsp;and&nbsp;mask&nbsp;=&nbsp;0x80&nbsp;lsr&nbsp;(i&nbsp;land&nbsp;7)&nbsp;in</div>
1140       <div class="lineAllUnvisited">001113| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c&nbsp;=&nbsp;Char.code&nbsp;data.[si]&nbsp;in</div>
1141       <div class="lineAllUnvisited">001114| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c&nbsp;=&nbsp;if&nbsp;v&nbsp;&lt;&gt;&nbsp;0&nbsp;then&nbsp;c&nbsp;(*[0]*)lor&nbsp;mask&nbsp;else&nbsp;c&nbsp;(*[0]*)land&nbsp;(lnot&nbsp;mask)&nbsp;in</div>
1142       <div class="lineAllUnvisited">001115| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)data.[si]&nbsp;&lt;-&nbsp;Char.unsafe_chr&nbsp;c</div>
1143       <div class="lineNone">001116| &nbsp;&nbsp;)</div>
1144       <div class="lineNone">001117| &nbsp;</div>
1145       <div class="lineAllUnvisited">001118| let&nbsp;set&nbsp;bits&nbsp;n&nbsp;=&nbsp;(*[0]*)put&nbsp;bits&nbsp;n&nbsp;1</div>
1146       <div class="lineNone">001119| &nbsp;</div>
1147       <div class="lineAllUnvisited">001120| let&nbsp;clear&nbsp;bits&nbsp;n&nbsp;=&nbsp;(*[0]*)put&nbsp;bits&nbsp;n&nbsp;0</div>
1148       <div class="lineNone">001121| &nbsp;</div>
1149       <div class="lineNone">001122| let&nbsp;get&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;n&nbsp;=</div>
1150       <div class="lineMixed">001123| &nbsp;&nbsp;(*[1945548]*)if&nbsp;(*[1945548]*)n&nbsp;&lt;&nbsp;0&nbsp;||&nbsp;(*[1945548]*)off+n&nbsp;&gt;=&nbsp;len&nbsp;then&nbsp;(*[0]*)index_out_of_bounds&nbsp;()</div>
1151       <div class="lineNone">001124| &nbsp;&nbsp;else&nbsp;(</div>
1152       <div class="lineAllVisited">001125| &nbsp;&nbsp;&nbsp;&nbsp;(*[1945548]*)let&nbsp;i&nbsp;=&nbsp;off+n&nbsp;in</div>
1153       <div class="lineAllVisited">001126| &nbsp;&nbsp;&nbsp;&nbsp;(*[1945548]*)let&nbsp;si&nbsp;=&nbsp;i&nbsp;lsr&nbsp;3&nbsp;and&nbsp;mask&nbsp;=&nbsp;0x80&nbsp;lsr&nbsp;(i&nbsp;land&nbsp;7)&nbsp;in</div>
1154       <div class="lineAllVisited">001127| &nbsp;&nbsp;&nbsp;&nbsp;(*[1945548]*)let&nbsp;c&nbsp;=&nbsp;Char.code&nbsp;data.[si]&nbsp;in</div>
1155       <div class="lineAllVisited">001128| &nbsp;&nbsp;&nbsp;&nbsp;c&nbsp;(*[1945548]*)land&nbsp;mask</div>
1156       <div class="lineNone">001129| &nbsp;&nbsp;)</div>
1157       <div class="lineNone">001130| &nbsp;</div>
1158       <div class="lineAllVisited">001131| let&nbsp;is_set&nbsp;bits&nbsp;n&nbsp;=&nbsp;(*[1297032]*)get&nbsp;bits&nbsp;n&nbsp;&lt;&gt;&nbsp;0</div>
1159       <div class="lineNone">001132| &nbsp;</div>
1160       <div class="lineAllVisited">001133| let&nbsp;is_clear&nbsp;bits&nbsp;n&nbsp;=&nbsp;(*[648516]*)get&nbsp;bits&nbsp;n&nbsp;=&nbsp;0</div>
1161       <div class="lineNone">001134| &nbsp;</div>
1162       <div class="lineNone">001135| (*----------------------------------------------------------------------*)</div>
1163       <div class="lineNone">001136| (*&nbsp;Display&nbsp;functions.&nbsp;*)</div>
1164       <div class="lineNone">001137| &nbsp;</div>
1165       <div class="lineNone">001138| let&nbsp;isprint&nbsp;c&nbsp;=</div>
1166       <div class="lineAllVisited">001139| &nbsp;&nbsp;(*[356]*)let&nbsp;c&nbsp;=&nbsp;Char.code&nbsp;c&nbsp;in</div>
1167       <div class="lineAllVisited">001140| &nbsp;&nbsp;(*[356]*)c&nbsp;(*[356]*)&gt;=&nbsp;32&nbsp;&amp;&amp;&nbsp;(*[311]*)c&nbsp;&lt;&nbsp;127</div>
1168       <div class="lineNone">001141| &nbsp;</div>
1169       <div class="lineNone">001142| let&nbsp;hexdump_bitstring&nbsp;chan&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;=</div>
1170       <div class="lineAllVisited">001143| &nbsp;&nbsp;(*[34]*)let&nbsp;count&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
1171       <div class="lineAllVisited">001144| &nbsp;&nbsp;(*[34]*)let&nbsp;off&nbsp;=&nbsp;ref&nbsp;off&nbsp;in</div>
1172       <div class="lineAllVisited">001145| &nbsp;&nbsp;(*[34]*)let&nbsp;len&nbsp;=&nbsp;ref&nbsp;len&nbsp;in</div>
1173       <div class="lineAllVisited">001146| &nbsp;&nbsp;(*[34]*)let&nbsp;linelen&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
1174       <div class="lineAllVisited">001147| &nbsp;&nbsp;(*[34]*)let&nbsp;linechars&nbsp;=&nbsp;String.make&nbsp;16&nbsp;'&nbsp;'&nbsp;in</div>
1175       <div class="lineNone">001148| &nbsp;</div>
1176       <div class="lineAllVisited">001149| &nbsp;&nbsp;(*[34]*)fprintf&nbsp;chan&nbsp;&quot;00000000&nbsp;&nbsp;&quot;;</div>
1177       <div class="lineNone">001150| &nbsp;</div>
1178       <div class="lineAllVisited">001151| &nbsp;&nbsp;(*[34]*)while&nbsp;!len&nbsp;&gt;&nbsp;0&nbsp;do</div>
1179       <div class="lineAllVisited">001152| &nbsp;&nbsp;&nbsp;&nbsp;(*[356]*)let&nbsp;bits&nbsp;=&nbsp;min&nbsp;!len&nbsp;8&nbsp;in</div>
1180       <div class="lineAllVisited">001153| &nbsp;&nbsp;&nbsp;&nbsp;(*[356]*)let&nbsp;byte&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;!off&nbsp;!len&nbsp;bits&nbsp;in</div>
1181       <div class="lineAllVisited">001154| &nbsp;&nbsp;&nbsp;&nbsp;(*[356]*)off&nbsp;:=&nbsp;!off&nbsp;+&nbsp;bits;&nbsp;(*[356]*)len&nbsp;(*[356]*):=&nbsp;!len&nbsp;-&nbsp;bits;</div>
1182       <div class="lineNone">001155| &nbsp;</div>
1183       <div class="lineAllVisited">001156| &nbsp;&nbsp;&nbsp;&nbsp;(*[356]*)let&nbsp;byte&nbsp;=&nbsp;byte&nbsp;lsl&nbsp;(8-bits)&nbsp;in</div>
1184       <div class="lineAllVisited">001157| &nbsp;&nbsp;&nbsp;&nbsp;(*[356]*)fprintf&nbsp;chan&nbsp;&quot;%02x&nbsp;&quot;&nbsp;byte;</div>
1185       <div class="lineNone">001158| &nbsp;</div>
1186       <div class="lineAllVisited">001159| &nbsp;&nbsp;&nbsp;&nbsp;(*[356]*)incr&nbsp;count;</div>
1187       <div class="lineAllVisited">001160| &nbsp;&nbsp;&nbsp;&nbsp;(*[356]*)linechars.[!linelen]&nbsp;&lt;-</div>
1188       <div class="lineNone">001161| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;c&nbsp;=&nbsp;Char.chr&nbsp;byte&nbsp;in</div>
1189       <div class="lineAllVisited">001162| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[356]*)if&nbsp;isprint&nbsp;c&nbsp;then&nbsp;(*[110]*)c&nbsp;else&nbsp;(*[246]*)'.');</div>
1190       <div class="lineAllVisited">001163| &nbsp;&nbsp;&nbsp;&nbsp;(*[356]*)incr&nbsp;linelen;</div>
1191       <div class="lineAllVisited">001164| &nbsp;&nbsp;&nbsp;&nbsp;(*[335]*)if&nbsp;!linelen&nbsp;=&nbsp;8&nbsp;then&nbsp;(*[21]*)fprintf&nbsp;chan&nbsp;&quot;&nbsp;&quot;;</div>
1192       <div class="lineAllVisited">001165| &nbsp;&nbsp;&nbsp;&nbsp;(*[343]*)if&nbsp;!linelen&nbsp;=&nbsp;16&nbsp;then&nbsp;(</div>
1193       <div class="lineAllVisited">001166| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[13]*)fprintf&nbsp;chan&nbsp;&quot;&nbsp;|%s|\n%08x&nbsp;&nbsp;&quot;&nbsp;linechars&nbsp;!count;</div>
1194       <div class="lineAllVisited">001167| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[13]*)linelen&nbsp;(*[13]*):=&nbsp;0;</div>
1195       <div class="lineAllVisited">001168| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[13]*)for&nbsp;i&nbsp;=&nbsp;0&nbsp;to&nbsp;15&nbsp;do&nbsp;(*[208]*)linechars.[i]&nbsp;&lt;-&nbsp;'&nbsp;'&nbsp;done</div>
1196       <div class="lineNone">001169| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
1197       <div class="lineNone">001170| &nbsp;&nbsp;done;</div>
1198       <div class="lineNone">001171| &nbsp;</div>
1199       <div class="lineAllVisited">001172| &nbsp;&nbsp;(*[34]*)if&nbsp;!linelen&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
1200       <div class="lineAllVisited">001173| &nbsp;&nbsp;&nbsp;&nbsp;(*[32]*)let&nbsp;skip&nbsp;=&nbsp;(16&nbsp;-&nbsp;!linelen)&nbsp;*&nbsp;3&nbsp;+&nbsp;if&nbsp;!linelen&nbsp;&lt;&nbsp;8&nbsp;then&nbsp;(*[24]*)1&nbsp;else&nbsp;(*[8]*)0&nbsp;in</div>
1201       <div class="lineAllVisited">001174| &nbsp;&nbsp;&nbsp;&nbsp;(*[32]*)for&nbsp;i&nbsp;=&nbsp;0&nbsp;to&nbsp;skip-1&nbsp;do&nbsp;(*[1116]*)fprintf&nbsp;chan&nbsp;&quot;&nbsp;&quot;&nbsp;done;</div>
1202       <div class="lineAllVisited">001175| &nbsp;&nbsp;&nbsp;&nbsp;(*[32]*)fprintf&nbsp;chan&nbsp;&quot;&nbsp;|%s|\n%!&quot;&nbsp;linechars</div>
1203       <div class="lineNone">001176| &nbsp;&nbsp;)&nbsp;else</div>
1204       <div class="lineAllVisited">001177| &nbsp;&nbsp;&nbsp;&nbsp;(*[2]*)fprintf&nbsp;chan&nbsp;&quot;\n%!&quot;</div>
1205     </code>
1206     <hr class="codeSep"/>
1207     <p class="footer">Generated by <a href="http://bisect.x9c.fr">Bisect</a> on 2008-08-27 13:53:18</p>
1208   </body>
1209 </html>