1f54bc0f8bedd9137368c862fcfe264ce4ca9ffe
[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>119 / 231 (51 %)</td></tr>
13       <tr><td>sequence</td><td width="16px">&nbsp;</td><td>37 / 93 (39 %)</td></tr>
14       <tr><td>for</td><td width="16px">&nbsp;</td><td>3 / 5 (60 %)</td></tr>
15       <tr><td>if/then</td><td width="16px">&nbsp;</td><td>72 / 163 (44 %)</td></tr>
16       <tr><td>try</td><td width="16px">&nbsp;</td><td>0 / 2 (0 %)</td></tr>
17       <tr><td>while</td><td width="16px">&nbsp;</td><td>0 / 3 (0 %)</td></tr>
18       <tr><td>match/function</td><td width="16px">&nbsp;</td><td>41 / 77 (53 %)</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;153&nbsp;2008-08-26&nbsp;08:24:31Z&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;(*[28]*)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| (*&nbsp;Functions&nbsp;to&nbsp;create&nbsp;and&nbsp;load&nbsp;bitstrings.&nbsp;*)</div>
69       <div class="lineAllVisited">000042| let&nbsp;empty_bitstring&nbsp;=&nbsp;(*[28]*)&quot;&quot;,&nbsp;0,&nbsp;0</div>
70       <div class="lineNone">000043| &nbsp;</div>
71       <div class="lineNone">000044| let&nbsp;make_bitstring&nbsp;len&nbsp;c&nbsp;=</div>
72       <div class="lineAllVisited">000045| &nbsp;&nbsp;(*[1197538]*)if&nbsp;len&nbsp;&gt;=&nbsp;0&nbsp;then&nbsp;(*[1197538]*)String.make&nbsp;((len+7)&nbsp;lsr&nbsp;3)&nbsp;c,&nbsp;0,&nbsp;len</div>
73       <div class="lineNone">000046| &nbsp;&nbsp;else</div>
74       <div class="lineAllUnvisited">000047| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)invalid_arg&nbsp;(</div>
75       <div class="lineNone">000048| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprintf&nbsp;&quot;make_bitstring/create_bitstring:&nbsp;len&nbsp;%d&nbsp;&lt;&nbsp;0&quot;&nbsp;len</div>
76       <div class="lineNone">000049| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
77       <div class="lineNone">000050| &nbsp;</div>
78       <div class="lineAllVisited">000051| let&nbsp;create_bitstring&nbsp;len&nbsp;=&nbsp;(*[1]*)make_bitstring&nbsp;len&nbsp;'\000'</div>
79       <div class="lineNone">000052| &nbsp;</div>
80       <div class="lineAllVisited">000053| let&nbsp;zeroes_bitstring&nbsp;=&nbsp;(*[28]*)create_bitstring</div>
81       <div class="lineNone">000054| &nbsp;</div>
82       <div class="lineAllVisited">000055| let&nbsp;ones_bitstring&nbsp;len&nbsp;=&nbsp;(*[1197537]*)make_bitstring&nbsp;len&nbsp;'\xff'</div>
83       <div class="lineNone">000056| &nbsp;</div>
84       <div class="lineAllVisited">000057| let&nbsp;bitstring_of_string&nbsp;str&nbsp;=&nbsp;(*[2]*)str,&nbsp;0,&nbsp;String.length&nbsp;str&nbsp;lsl&nbsp;3</div>
85       <div class="lineNone">000058| &nbsp;</div>
86       <div class="lineNone">000059| let&nbsp;bitstring_of_chan&nbsp;chan&nbsp;=</div>
87       <div class="lineAllUnvisited">000060| &nbsp;&nbsp;(*[0]*)let&nbsp;tmpsize&nbsp;=&nbsp;16384&nbsp;in</div>
88       <div class="lineAllUnvisited">000061| &nbsp;&nbsp;(*[0]*)let&nbsp;buf&nbsp;=&nbsp;Buffer.create&nbsp;tmpsize&nbsp;in</div>
89       <div class="lineAllUnvisited">000062| &nbsp;&nbsp;(*[0]*)let&nbsp;tmp&nbsp;=&nbsp;String.create&nbsp;tmpsize&nbsp;in</div>
90       <div class="lineAllUnvisited">000063| &nbsp;&nbsp;(*[0]*)let&nbsp;n&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
91       <div class="lineAllUnvisited">000064| &nbsp;&nbsp;(*[0]*)while&nbsp;(*[0]*)n&nbsp;:=&nbsp;input&nbsp;chan&nbsp;tmp&nbsp;0&nbsp;tmpsize;&nbsp;!(*[0]*)n&nbsp;&gt;&nbsp;0&nbsp;do</div>
92       <div class="lineAllUnvisited">000065| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Buffer.add_substring&nbsp;buf&nbsp;tmp&nbsp;0&nbsp;!n;</div>
93       <div class="lineNone">000066| &nbsp;&nbsp;done;</div>
94       <div class="lineAllUnvisited">000067| &nbsp;&nbsp;(*[0]*)Buffer.contents&nbsp;buf,&nbsp;0,&nbsp;Buffer.length&nbsp;buf&nbsp;lsl&nbsp;3</div>
95       <div class="lineNone">000068| &nbsp;</div>
96       <div class="lineNone">000069| let&nbsp;bitstring_of_chan_max&nbsp;chan&nbsp;max&nbsp;=</div>
97       <div class="lineAllUnvisited">000070| &nbsp;&nbsp;(*[0]*)let&nbsp;tmpsize&nbsp;=&nbsp;16384&nbsp;in</div>
98       <div class="lineAllUnvisited">000071| &nbsp;&nbsp;(*[0]*)let&nbsp;buf&nbsp;=&nbsp;Buffer.create&nbsp;tmpsize&nbsp;in</div>
99       <div class="lineAllUnvisited">000072| &nbsp;&nbsp;(*[0]*)let&nbsp;tmp&nbsp;=&nbsp;String.create&nbsp;tmpsize&nbsp;in</div>
100       <div class="lineAllUnvisited">000073| &nbsp;&nbsp;(*[0]*)let&nbsp;len&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
101       <div class="lineAllUnvisited">000074| &nbsp;&nbsp;(*[0]*)let&nbsp;rec&nbsp;loop&nbsp;()&nbsp;=</div>
102       <div class="lineAllUnvisited">000075| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;!len&nbsp;&lt;&nbsp;max&nbsp;then&nbsp;(</div>
103       <div class="lineAllUnvisited">000076| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;r&nbsp;=&nbsp;min&nbsp;tmpsize&nbsp;(max&nbsp;-&nbsp;!len)&nbsp;in</div>
104       <div class="lineAllUnvisited">000077| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;n&nbsp;=&nbsp;input&nbsp;chan&nbsp;tmp&nbsp;0&nbsp;r&nbsp;in</div>
105       <div class="lineAllUnvisited">000078| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;n&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
106       <div class="lineAllUnvisited">000079| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Buffer.add_substring&nbsp;buf&nbsp;tmp&nbsp;0&nbsp;n;</div>
107       <div class="lineAllUnvisited">000080| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)len&nbsp;(*[0]*):=&nbsp;!len&nbsp;+&nbsp;n;</div>
108       <div class="lineAllUnvisited">000081| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)loop&nbsp;()</div>
109       <div class="lineNone">000082| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</div>
110       <div class="lineNone">000083| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
111       <div class="lineNone">000084| &nbsp;&nbsp;in</div>
112       <div class="lineAllUnvisited">000085| &nbsp;&nbsp;(*[0]*)loop&nbsp;(*[0]*)();</div>
113       <div class="lineAllUnvisited">000086| &nbsp;&nbsp;(*[0]*)Buffer.contents&nbsp;buf,&nbsp;0,&nbsp;!len&nbsp;lsl&nbsp;3</div>
114       <div class="lineNone">000087| &nbsp;</div>
115       <div class="lineNone">000088| let&nbsp;bitstring_of_file_descr&nbsp;fd&nbsp;=</div>
116       <div class="lineAllUnvisited">000089| &nbsp;&nbsp;(*[0]*)let&nbsp;tmpsize&nbsp;=&nbsp;16384&nbsp;in</div>
117       <div class="lineAllUnvisited">000090| &nbsp;&nbsp;(*[0]*)let&nbsp;buf&nbsp;=&nbsp;Buffer.create&nbsp;tmpsize&nbsp;in</div>
118       <div class="lineAllUnvisited">000091| &nbsp;&nbsp;(*[0]*)let&nbsp;tmp&nbsp;=&nbsp;String.create&nbsp;tmpsize&nbsp;in</div>
119       <div class="lineAllUnvisited">000092| &nbsp;&nbsp;(*[0]*)let&nbsp;n&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
120       <div class="lineAllUnvisited">000093| &nbsp;&nbsp;(*[0]*)while&nbsp;(*[0]*)n&nbsp;:=&nbsp;Unix.read&nbsp;fd&nbsp;tmp&nbsp;0&nbsp;tmpsize;&nbsp;!(*[0]*)n&nbsp;&gt;&nbsp;0&nbsp;do</div>
121       <div class="lineAllUnvisited">000094| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Buffer.add_substring&nbsp;buf&nbsp;tmp&nbsp;0&nbsp;!n;</div>
122       <div class="lineNone">000095| &nbsp;&nbsp;done;</div>
123       <div class="lineAllUnvisited">000096| &nbsp;&nbsp;(*[0]*)Buffer.contents&nbsp;buf,&nbsp;0,&nbsp;Buffer.length&nbsp;buf&nbsp;lsl&nbsp;3</div>
124       <div class="lineNone">000097| &nbsp;</div>
125       <div class="lineNone">000098| let&nbsp;bitstring_of_file_descr_max&nbsp;fd&nbsp;max&nbsp;=</div>
126       <div class="lineAllUnvisited">000099| &nbsp;&nbsp;(*[0]*)let&nbsp;tmpsize&nbsp;=&nbsp;16384&nbsp;in</div>
127       <div class="lineAllUnvisited">000100| &nbsp;&nbsp;(*[0]*)let&nbsp;buf&nbsp;=&nbsp;Buffer.create&nbsp;tmpsize&nbsp;in</div>
128       <div class="lineAllUnvisited">000101| &nbsp;&nbsp;(*[0]*)let&nbsp;tmp&nbsp;=&nbsp;String.create&nbsp;tmpsize&nbsp;in</div>
129       <div class="lineAllUnvisited">000102| &nbsp;&nbsp;(*[0]*)let&nbsp;len&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
130       <div class="lineAllUnvisited">000103| &nbsp;&nbsp;(*[0]*)let&nbsp;rec&nbsp;loop&nbsp;()&nbsp;=</div>
131       <div class="lineAllUnvisited">000104| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;!len&nbsp;&lt;&nbsp;max&nbsp;then&nbsp;(</div>
132       <div class="lineAllUnvisited">000105| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;r&nbsp;=&nbsp;min&nbsp;tmpsize&nbsp;(max&nbsp;-&nbsp;!len)&nbsp;in</div>
133       <div class="lineAllUnvisited">000106| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;n&nbsp;=&nbsp;Unix.read&nbsp;fd&nbsp;tmp&nbsp;0&nbsp;r&nbsp;in</div>
134       <div class="lineAllUnvisited">000107| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;n&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
135       <div class="lineAllUnvisited">000108| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Buffer.add_substring&nbsp;buf&nbsp;tmp&nbsp;0&nbsp;n;</div>
136       <div class="lineAllUnvisited">000109| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)len&nbsp;(*[0]*):=&nbsp;!len&nbsp;+&nbsp;n;</div>
137       <div class="lineAllUnvisited">000110| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)loop&nbsp;()</div>
138       <div class="lineNone">000111| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</div>
139       <div class="lineNone">000112| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
140       <div class="lineNone">000113| &nbsp;&nbsp;in</div>
141       <div class="lineAllUnvisited">000114| &nbsp;&nbsp;(*[0]*)loop&nbsp;(*[0]*)();</div>
142       <div class="lineAllUnvisited">000115| &nbsp;&nbsp;(*[0]*)Buffer.contents&nbsp;buf,&nbsp;0,&nbsp;!len&nbsp;lsl&nbsp;3</div>
143       <div class="lineNone">000116| &nbsp;</div>
144       <div class="lineNone">000117| let&nbsp;bitstring_of_file&nbsp;fname&nbsp;=</div>
145       <div class="lineAllUnvisited">000118| &nbsp;&nbsp;(*[0]*)let&nbsp;chan&nbsp;=&nbsp;open_in_bin&nbsp;fname&nbsp;in</div>
146       <div class="lineAllUnvisited">000119| &nbsp;&nbsp;(*[0]*)try</div>
147       <div class="lineAllUnvisited">000120| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;bs&nbsp;=&nbsp;bitstring_of_chan&nbsp;chan&nbsp;in</div>
148       <div class="lineAllUnvisited">000121| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)close_in&nbsp;(*[0]*)chan;</div>
149       <div class="lineAllUnvisited">000122| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)bs</div>
150       <div class="lineNone">000123| &nbsp;&nbsp;with&nbsp;exn&nbsp;-&gt;</div>
151       <div class="lineAllUnvisited">000124| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)close_in&nbsp;(*[0]*)chan;</div>
152       <div class="lineAllUnvisited">000125| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)raise&nbsp;exn</div>
153       <div class="lineNone">000126| &nbsp;</div>
154       <div class="lineAllVisited">000127| let&nbsp;bitstring_length&nbsp;(_,&nbsp;_,&nbsp;len)&nbsp;=&nbsp;(*[1523677]*)len</div>
155       <div class="lineNone">000128| &nbsp;</div>
156       <div class="lineNone">000129| let&nbsp;subbitstring&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;off'&nbsp;len'&nbsp;=</div>
157       <div class="lineAllUnvisited">000130| &nbsp;&nbsp;(*[0]*)let&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;off'&nbsp;in</div>
158       <div class="lineAllUnvisited">000131| &nbsp;&nbsp;(*[0]*)if&nbsp;len&nbsp;&lt;&nbsp;off'&nbsp;+&nbsp;len'&nbsp;then&nbsp;(*[0]*)invalid_arg&nbsp;&quot;subbitstring&quot;;</div>
159       <div class="lineAllUnvisited">000132| &nbsp;&nbsp;((*[0]*)data,&nbsp;off,&nbsp;len')</div>
160       <div class="lineNone">000133| &nbsp;</div>
161       <div class="lineNone">000134| let&nbsp;dropbits&nbsp;n&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;=</div>
162       <div class="lineAllVisited">000135| &nbsp;&nbsp;(*[335487]*)let&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;n&nbsp;in</div>
163       <div class="lineAllVisited">000136| &nbsp;&nbsp;(*[335487]*)let&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;n&nbsp;in</div>
164       <div class="lineMixed">000137| &nbsp;&nbsp;(*[335487]*)if&nbsp;len&nbsp;&lt;&nbsp;0&nbsp;then&nbsp;(*[0]*)invalid_arg&nbsp;&quot;dropbits&quot;;</div>
165       <div class="lineAllVisited">000138| &nbsp;&nbsp;((*[335487]*)data,&nbsp;off,&nbsp;len)</div>
166       <div class="lineNone">000139| &nbsp;</div>
167       <div class="lineNone">000140| let&nbsp;takebits&nbsp;n&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;=</div>
168       <div class="lineAllUnvisited">000141| &nbsp;&nbsp;(*[0]*)if&nbsp;len&nbsp;&lt;&nbsp;n&nbsp;then&nbsp;(*[0]*)invalid_arg&nbsp;&quot;takebits&quot;;</div>
169       <div class="lineAllUnvisited">000142| &nbsp;&nbsp;((*[0]*)data,&nbsp;off,&nbsp;n)</div>
170       <div class="lineNone">000143| &nbsp;</div>
171       <div class="lineNone">000144| (*----------------------------------------------------------------------*)</div>
172       <div class="lineNone">000145| (*&nbsp;Bitwise&nbsp;functions.</div>
173       <div class="lineNone">000146| &nbsp;*</div>
174       <div class="lineNone">000147| &nbsp;*&nbsp;We&nbsp;try&nbsp;to&nbsp;isolate&nbsp;all&nbsp;bitwise&nbsp;functions&nbsp;within&nbsp;these&nbsp;modules.</div>
175       <div class="lineNone">000148| &nbsp;*)</div>
176       <div class="lineNone">000149| &nbsp;</div>
177       <div class="lineNone">000150| module&nbsp;I&nbsp;=&nbsp;struct</div>
178       <div class="lineNone">000151| &nbsp;&nbsp;(*&nbsp;Bitwise&nbsp;operations&nbsp;on&nbsp;ints.&nbsp;&nbsp;Note&nbsp;that&nbsp;we&nbsp;assume&nbsp;int&nbsp;&lt;=&nbsp;31&nbsp;bits.&nbsp;*)</div>
179       <div class="lineNone">000152| &nbsp;&nbsp;external&nbsp;(&lt;&lt;&lt;)&nbsp;:&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;%lslint&quot;</div>
180       <div class="lineNone">000153| &nbsp;&nbsp;external&nbsp;(&gt;&gt;&gt;)&nbsp;:&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;%lsrint&quot;</div>
181       <div class="lineNone">000154| &nbsp;&nbsp;external&nbsp;to_int&nbsp;:&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;%identity&quot;</div>
182       <div class="lineAllVisited">000155| &nbsp;&nbsp;let&nbsp;zero&nbsp;=&nbsp;(*[28]*)0</div>
183       <div class="lineAllVisited">000156| &nbsp;&nbsp;let&nbsp;one&nbsp;=&nbsp;(*[28]*)1</div>
184       <div class="lineAllVisited">000157| &nbsp;&nbsp;let&nbsp;minus_one&nbsp;=&nbsp;(*[28]*)-1</div>
185       <div class="lineAllVisited">000158| &nbsp;&nbsp;let&nbsp;ff&nbsp;=&nbsp;(*[28]*)0xff</div>
186       <div class="lineNone">000159| &nbsp;</div>
187       <div class="lineNone">000160| &nbsp;&nbsp;(*&nbsp;Create&nbsp;a&nbsp;mask&nbsp;0-31&nbsp;bits&nbsp;wide.&nbsp;*)</div>
188       <div class="lineNone">000161| &nbsp;&nbsp;let&nbsp;mask&nbsp;bits&nbsp;=</div>
189       <div class="lineAllVisited">000162| &nbsp;&nbsp;&nbsp;&nbsp;(*[2]*)if&nbsp;bits&nbsp;&lt;&nbsp;30&nbsp;then</div>
190       <div class="lineAllVisited">000163| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((*[2]*)one&nbsp;&lt;&lt;&lt;&nbsp;bits)&nbsp;-&nbsp;1</div>
191       <div class="lineAllUnvisited">000164| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;=&nbsp;30&nbsp;then</div>
192       <div class="lineAllUnvisited">000165| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)max_int</div>
193       <div class="lineAllUnvisited">000166| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;=&nbsp;31&nbsp;then</div>
194       <div class="lineAllUnvisited">000167| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)minus_one</div>
195       <div class="lineNone">000168| &nbsp;&nbsp;&nbsp;&nbsp;else</div>
196       <div class="lineAllUnvisited">000169| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)invalid_arg&nbsp;&quot;Bitstring.I.mask&quot;</div>
197       <div class="lineNone">000170| &nbsp;</div>
198       <div class="lineNone">000171| &nbsp;&nbsp;(*&nbsp;Byte&nbsp;swap&nbsp;an&nbsp;int&nbsp;of&nbsp;a&nbsp;given&nbsp;size.&nbsp;*)</div>
199       <div class="lineNone">000172| &nbsp;&nbsp;let&nbsp;byteswap&nbsp;v&nbsp;bits&nbsp;=</div>
200       <div class="lineAllUnvisited">000173| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;bits&nbsp;&lt;=&nbsp;8&nbsp;then&nbsp;(*[0]*)v</div>
201       <div class="lineAllUnvisited">000174| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;&lt;=&nbsp;16&nbsp;then&nbsp;(</div>
202       <div class="lineAllUnvisited">000175| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;shift&nbsp;=&nbsp;bits-8&nbsp;in</div>
203       <div class="lineAllUnvisited">000176| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;shift&nbsp;in</div>
204       <div class="lineAllUnvisited">000177| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v2&nbsp;=&nbsp;((v&nbsp;land&nbsp;(mask&nbsp;shift))&nbsp;&lt;&lt;&lt;&nbsp;8)&nbsp;in</div>
205       <div class="lineAllUnvisited">000178| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v2&nbsp;(*[0]*)lor&nbsp;v1</div>
206       <div class="lineAllUnvisited">000179| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;&lt;=&nbsp;24&nbsp;then&nbsp;(</div>
207       <div class="lineAllUnvisited">000180| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;shift&nbsp;=&nbsp;bits&nbsp;-&nbsp;16&nbsp;in</div>
208       <div class="lineAllUnvisited">000181| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;(8+shift)&nbsp;in</div>
209       <div class="lineAllUnvisited">000182| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v2&nbsp;=&nbsp;((v&nbsp;&gt;&gt;&gt;&nbsp;shift)&nbsp;land&nbsp;ff)&nbsp;&lt;&lt;&lt;&nbsp;8&nbsp;in</div>
210       <div class="lineAllUnvisited">000183| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v3&nbsp;=&nbsp;(v&nbsp;land&nbsp;(mask&nbsp;shift))&nbsp;&lt;&lt;&lt;&nbsp;16&nbsp;in</div>
211       <div class="lineAllUnvisited">000184| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v3&nbsp;lor&nbsp;v2&nbsp;(*[0]*)lor&nbsp;v1</div>
212       <div class="lineNone">000185| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
213       <div class="lineAllUnvisited">000186| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;shift&nbsp;=&nbsp;bits&nbsp;-&nbsp;24&nbsp;in</div>
214       <div class="lineAllUnvisited">000187| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;(16+shift)&nbsp;in</div>
215       <div class="lineAllUnvisited">000188| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v2&nbsp;=&nbsp;((v&nbsp;&gt;&gt;&gt;&nbsp;(8+shift))&nbsp;land&nbsp;ff)&nbsp;&lt;&lt;&lt;&nbsp;8&nbsp;in</div>
216       <div class="lineAllUnvisited">000189| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v3&nbsp;=&nbsp;((v&nbsp;&gt;&gt;&gt;&nbsp;shift)&nbsp;land&nbsp;ff)&nbsp;&lt;&lt;&lt;&nbsp;16&nbsp;in</div>
217       <div class="lineAllUnvisited">000190| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v4&nbsp;=&nbsp;(v&nbsp;land&nbsp;(mask&nbsp;shift))&nbsp;&lt;&lt;&lt;&nbsp;24&nbsp;in</div>
218       <div class="lineAllUnvisited">000191| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v4&nbsp;lor&nbsp;v3&nbsp;lor&nbsp;v2&nbsp;(*[0]*)lor&nbsp;v1</div>
219       <div class="lineNone">000192| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
220       <div class="lineNone">000193| &nbsp;</div>
221       <div class="lineNone">000194| &nbsp;&nbsp;(*&nbsp;Check&nbsp;a&nbsp;value&nbsp;is&nbsp;in&nbsp;range&nbsp;0&nbsp;..&nbsp;2^bits-1.&nbsp;*)</div>
222       <div class="lineNone">000195| &nbsp;&nbsp;let&nbsp;range_unsigned&nbsp;v&nbsp;bits&nbsp;=</div>
223       <div class="lineAllVisited">000196| &nbsp;&nbsp;&nbsp;&nbsp;(*[2]*)let&nbsp;mask&nbsp;=&nbsp;lnot&nbsp;(mask&nbsp;bits)&nbsp;in</div>
224       <div class="lineAllVisited">000197| &nbsp;&nbsp;&nbsp;&nbsp;(v&nbsp;(*[2]*)land&nbsp;mask)&nbsp;=&nbsp;zero</div>
225       <div class="lineNone">000198| &nbsp;</div>
226       <div class="lineNone">000199| &nbsp;&nbsp;(*&nbsp;Call&nbsp;function&nbsp;g&nbsp;on&nbsp;the&nbsp;top&nbsp;bits,&nbsp;then&nbsp;f&nbsp;on&nbsp;each&nbsp;full&nbsp;byte</div>
227       <div class="lineNone">000200| &nbsp;&nbsp;&nbsp;*&nbsp;(big&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;top).</div>
228       <div class="lineNone">000201| &nbsp;&nbsp;&nbsp;*)</div>
229       <div class="lineNone">000202| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_be&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
230       <div class="lineAllVisited">000203| &nbsp;&nbsp;&nbsp;&nbsp;(*[6]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
231       <div class="lineAllVisited">000204| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[4]*)map_bytes_be&nbsp;g&nbsp;f&nbsp;(v&nbsp;&gt;&gt;&gt;&nbsp;8)&nbsp;(*[4]*)(bits-8);</div>
232       <div class="lineAllVisited">000205| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[4]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
233       <div class="lineAllVisited">000206| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[4]*)f&nbsp;(to_int&nbsp;lsb)</div>
234       <div class="lineAllVisited">000207| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[2]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
235       <div class="lineAllUnvisited">000208| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
236       <div class="lineAllUnvisited">000209| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
237       <div class="lineNone">000210| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
238       <div class="lineNone">000211| &nbsp;</div>
239       <div class="lineNone">000212| &nbsp;&nbsp;(*&nbsp;Call&nbsp;function&nbsp;g&nbsp;on&nbsp;the&nbsp;top&nbsp;bits,&nbsp;then&nbsp;f&nbsp;on&nbsp;each&nbsp;full&nbsp;byte</div>
240       <div class="lineNone">000213| &nbsp;&nbsp;&nbsp;*&nbsp;(little&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;root).</div>
241       <div class="lineNone">000214| &nbsp;&nbsp;&nbsp;*)</div>
242       <div class="lineNone">000215| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_le&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
243       <div class="lineAllUnvisited">000216| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
244       <div class="lineAllUnvisited">000217| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
245       <div class="lineAllUnvisited">000218| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)f&nbsp;(*[0]*)(to_int&nbsp;lsb);</div>
246       <div class="lineAllUnvisited">000219| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)map_bytes_le&nbsp;g&nbsp;f&nbsp;(v&nbsp;&gt;&gt;&gt;&nbsp;8)&nbsp;(bits-8)</div>
247       <div class="lineAllUnvisited">000220| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
248       <div class="lineAllUnvisited">000221| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
249       <div class="lineAllUnvisited">000222| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
250       <div class="lineNone">000223| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
251       <div class="lineNone">000224| end</div>
252       <div class="lineNone">000225| &nbsp;</div>
253       <div class="lineNone">000226| module&nbsp;I32&nbsp;=&nbsp;struct</div>
254       <div class="lineNone">000227| &nbsp;&nbsp;(*&nbsp;Bitwise&nbsp;operations&nbsp;on&nbsp;int32s.&nbsp;&nbsp;Note&nbsp;we&nbsp;try&nbsp;to&nbsp;keep&nbsp;it&nbsp;as&nbsp;similar</div>
255       <div class="lineNone">000228| &nbsp;&nbsp;&nbsp;*&nbsp;as&nbsp;possible&nbsp;to&nbsp;the&nbsp;I&nbsp;module&nbsp;above,&nbsp;to&nbsp;make&nbsp;it&nbsp;easier&nbsp;to&nbsp;track</div>
256       <div class="lineNone">000229| &nbsp;&nbsp;&nbsp;*&nbsp;down&nbsp;bugs.</div>
257       <div class="lineNone">000230| &nbsp;&nbsp;&nbsp;*)</div>
258       <div class="lineAllVisited">000231| &nbsp;&nbsp;let&nbsp;(&lt;&lt;&lt;)&nbsp;=&nbsp;(*[28]*)Int32.shift_left</div>
259       <div class="lineAllVisited">000232| &nbsp;&nbsp;let&nbsp;(&gt;&gt;&gt;)&nbsp;=&nbsp;(*[28]*)Int32.shift_right_logical</div>
260       <div class="lineAllVisited">000233| &nbsp;&nbsp;let&nbsp;(land)&nbsp;=&nbsp;(*[28]*)Int32.logand</div>
261       <div class="lineAllVisited">000234| &nbsp;&nbsp;let&nbsp;(lor)&nbsp;=&nbsp;(*[28]*)Int32.logor</div>
262       <div class="lineAllVisited">000235| &nbsp;&nbsp;let&nbsp;lnot&nbsp;=&nbsp;(*[28]*)Int32.lognot</div>
263       <div class="lineAllVisited">000236| &nbsp;&nbsp;let&nbsp;pred&nbsp;=&nbsp;(*[28]*)Int32.pred</div>
264       <div class="lineAllVisited">000237| &nbsp;&nbsp;let&nbsp;max_int&nbsp;=&nbsp;(*[28]*)Int32.max_int</div>
265       <div class="lineAllVisited">000238| &nbsp;&nbsp;let&nbsp;to_int&nbsp;=&nbsp;(*[28]*)Int32.to_int</div>
266       <div class="lineAllVisited">000239| &nbsp;&nbsp;let&nbsp;zero&nbsp;=&nbsp;(*[28]*)Int32.zero</div>
267       <div class="lineAllVisited">000240| &nbsp;&nbsp;let&nbsp;one&nbsp;=&nbsp;(*[28]*)Int32.one</div>
268       <div class="lineAllVisited">000241| &nbsp;&nbsp;let&nbsp;minus_one&nbsp;=&nbsp;(*[28]*)Int32.minus_one</div>
269       <div class="lineAllVisited">000242| &nbsp;&nbsp;let&nbsp;ff&nbsp;=&nbsp;(*[28]*)0xff_l</div>
270       <div class="lineNone">000243| &nbsp;</div>
271       <div class="lineNone">000244| &nbsp;&nbsp;(*&nbsp;Create&nbsp;a&nbsp;mask&nbsp;so&nbsp;many&nbsp;bits&nbsp;wide.&nbsp;*)</div>
272       <div class="lineNone">000245| &nbsp;&nbsp;let&nbsp;mask&nbsp;bits&nbsp;=</div>
273       <div class="lineAllVisited">000246| &nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)if&nbsp;bits&nbsp;&lt;&nbsp;31&nbsp;then</div>
274       <div class="lineAllVisited">000247| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)pred&nbsp;(one&nbsp;&lt;&lt;&lt;&nbsp;bits)</div>
275       <div class="lineAllUnvisited">000248| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;=&nbsp;31&nbsp;then</div>
276       <div class="lineAllUnvisited">000249| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)max_int</div>
277       <div class="lineAllUnvisited">000250| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;=&nbsp;32&nbsp;then</div>
278       <div class="lineAllUnvisited">000251| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)minus_one</div>
279       <div class="lineNone">000252| &nbsp;&nbsp;&nbsp;&nbsp;else</div>
280       <div class="lineAllUnvisited">000253| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)invalid_arg&nbsp;&quot;Bitstring.I32.mask&quot;</div>
281       <div class="lineNone">000254| &nbsp;</div>
282       <div class="lineNone">000255| &nbsp;&nbsp;(*&nbsp;Byte&nbsp;swap&nbsp;an&nbsp;int&nbsp;of&nbsp;a&nbsp;given&nbsp;size.&nbsp;*)</div>
283       <div class="lineNone">000256| &nbsp;&nbsp;let&nbsp;byteswap&nbsp;v&nbsp;bits&nbsp;=</div>
284       <div class="lineMixed">000257| &nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)if&nbsp;bits&nbsp;&lt;=&nbsp;8&nbsp;then&nbsp;(*[0]*)v</div>
285       <div class="lineAllVisited">000258| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[12]*)if&nbsp;bits&nbsp;&lt;=&nbsp;16&nbsp;then&nbsp;(</div>
286       <div class="lineAllUnvisited">000259| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;shift&nbsp;=&nbsp;bits-8&nbsp;in</div>
287       <div class="lineAllUnvisited">000260| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;shift&nbsp;in</div>
288       <div class="lineAllUnvisited">000261| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v2&nbsp;=&nbsp;(v&nbsp;land&nbsp;(mask&nbsp;shift))&nbsp;&lt;&lt;&lt;&nbsp;8&nbsp;in</div>
289       <div class="lineAllUnvisited">000262| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v2&nbsp;(*[0]*)lor&nbsp;v1</div>
290       <div class="lineAllVisited">000263| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[12]*)if&nbsp;bits&nbsp;&lt;=&nbsp;24&nbsp;then&nbsp;(</div>
291       <div class="lineAllUnvisited">000264| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;shift&nbsp;=&nbsp;bits&nbsp;-&nbsp;16&nbsp;in</div>
292       <div class="lineAllUnvisited">000265| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;(8+shift)&nbsp;in</div>
293       <div class="lineAllUnvisited">000266| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v2&nbsp;=&nbsp;((v&nbsp;&gt;&gt;&gt;&nbsp;shift)&nbsp;land&nbsp;ff)&nbsp;&lt;&lt;&lt;&nbsp;8&nbsp;in</div>
294       <div class="lineAllUnvisited">000267| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;v3&nbsp;=&nbsp;(v&nbsp;land&nbsp;(mask&nbsp;shift))&nbsp;&lt;&lt;&lt;&nbsp;16&nbsp;in</div>
295       <div class="lineAllUnvisited">000268| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v3&nbsp;lor&nbsp;v2&nbsp;(*[0]*)lor&nbsp;v1</div>
296       <div class="lineNone">000269| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
297       <div class="lineAllVisited">000270| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)let&nbsp;shift&nbsp;=&nbsp;bits&nbsp;-&nbsp;24&nbsp;in</div>
298       <div class="lineAllVisited">000271| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)let&nbsp;v1&nbsp;=&nbsp;v&nbsp;&gt;&gt;&gt;&nbsp;(16+shift)&nbsp;in</div>
299       <div class="lineAllVisited">000272| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)let&nbsp;v2&nbsp;=&nbsp;((v&nbsp;&gt;&gt;&gt;&nbsp;(8+shift))&nbsp;land&nbsp;ff)&nbsp;&lt;&lt;&lt;&nbsp;8&nbsp;in</div>
300       <div class="lineAllVisited">000273| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)let&nbsp;v3&nbsp;=&nbsp;((v&nbsp;&gt;&gt;&gt;&nbsp;shift)&nbsp;land&nbsp;ff)&nbsp;&lt;&lt;&lt;&nbsp;16&nbsp;in</div>
301       <div class="lineAllVisited">000274| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)let&nbsp;v4&nbsp;=&nbsp;(v&nbsp;land&nbsp;(mask&nbsp;shift))&nbsp;&lt;&lt;&lt;&nbsp;24&nbsp;in</div>
302       <div class="lineAllVisited">000275| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v4&nbsp;lor&nbsp;v3&nbsp;lor&nbsp;v2&nbsp;(*[12]*)lor&nbsp;v1</div>
303       <div class="lineNone">000276| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
304       <div class="lineNone">000277| &nbsp;</div>
305       <div class="lineNone">000278| &nbsp;&nbsp;(*&nbsp;Check&nbsp;a&nbsp;value&nbsp;is&nbsp;in&nbsp;range&nbsp;0&nbsp;..&nbsp;2^bits-1.&nbsp;*)</div>
306       <div class="lineNone">000279| &nbsp;&nbsp;let&nbsp;range_unsigned&nbsp;v&nbsp;bits&nbsp;=</div>
307       <div class="lineAllUnvisited">000280| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;mask&nbsp;=&nbsp;lnot&nbsp;(mask&nbsp;bits)&nbsp;in</div>
308       <div class="lineAllUnvisited">000281| &nbsp;&nbsp;&nbsp;&nbsp;(v&nbsp;(*[0]*)land&nbsp;mask)&nbsp;=&nbsp;zero</div>
309       <div class="lineNone">000282| &nbsp;</div>
310       <div class="lineNone">000283| &nbsp;&nbsp;(*&nbsp;Call&nbsp;function&nbsp;g&nbsp;on&nbsp;the&nbsp;top&nbsp;bits,&nbsp;then&nbsp;f&nbsp;on&nbsp;each&nbsp;full&nbsp;byte</div>
311       <div class="lineNone">000284| &nbsp;&nbsp;&nbsp;*&nbsp;(big&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;top).</div>
312       <div class="lineNone">000285| &nbsp;&nbsp;&nbsp;*)</div>
313       <div class="lineNone">000286| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_be&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
314       <div class="lineAllUnvisited">000287| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
315       <div class="lineAllUnvisited">000288| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)map_bytes_be&nbsp;g&nbsp;f&nbsp;(v&nbsp;&gt;&gt;&gt;&nbsp;8)&nbsp;(*[0]*)(bits-8);</div>
316       <div class="lineAllUnvisited">000289| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
317       <div class="lineAllUnvisited">000290| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)f&nbsp;(to_int&nbsp;lsb)</div>
318       <div class="lineAllUnvisited">000291| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
319       <div class="lineAllUnvisited">000292| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
320       <div class="lineAllUnvisited">000293| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
321       <div class="lineNone">000294| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
322       <div class="lineNone">000295| &nbsp;</div>
323       <div class="lineNone">000296| &nbsp;&nbsp;(*&nbsp;Call&nbsp;function&nbsp;g&nbsp;on&nbsp;the&nbsp;top&nbsp;bits,&nbsp;then&nbsp;f&nbsp;on&nbsp;each&nbsp;full&nbsp;byte</div>
324       <div class="lineNone">000297| &nbsp;&nbsp;&nbsp;*&nbsp;(little&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;root).</div>
325       <div class="lineNone">000298| &nbsp;&nbsp;&nbsp;*)</div>
326       <div class="lineNone">000299| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_le&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
327       <div class="lineAllUnvisited">000300| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
328       <div class="lineAllUnvisited">000301| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
329       <div class="lineAllUnvisited">000302| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)f&nbsp;(*[0]*)(to_int&nbsp;lsb);</div>
330       <div class="lineAllUnvisited">000303| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)map_bytes_le&nbsp;g&nbsp;f&nbsp;(v&nbsp;&gt;&gt;&gt;&nbsp;8)&nbsp;(bits-8)</div>
331       <div class="lineAllUnvisited">000304| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
332       <div class="lineAllUnvisited">000305| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
333       <div class="lineAllUnvisited">000306| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
334       <div class="lineNone">000307| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
335       <div class="lineNone">000308| end</div>
336       <div class="lineNone">000309| &nbsp;</div>
337       <div class="lineNone">000310| module&nbsp;I64&nbsp;=&nbsp;struct</div>
338       <div class="lineNone">000311| &nbsp;&nbsp;(*&nbsp;Bitwise&nbsp;operations&nbsp;on&nbsp;int64s.&nbsp;&nbsp;Note&nbsp;we&nbsp;try&nbsp;to&nbsp;keep&nbsp;it&nbsp;as&nbsp;similar</div>
339       <div class="lineNone">000312| &nbsp;&nbsp;&nbsp;*&nbsp;as&nbsp;possible&nbsp;to&nbsp;the&nbsp;I/I32&nbsp;modules&nbsp;above,&nbsp;to&nbsp;make&nbsp;it&nbsp;easier&nbsp;to&nbsp;track</div>
340       <div class="lineNone">000313| &nbsp;&nbsp;&nbsp;*&nbsp;down&nbsp;bugs.</div>
341       <div class="lineNone">000314| &nbsp;&nbsp;&nbsp;*)</div>
342       <div class="lineAllVisited">000315| &nbsp;&nbsp;let&nbsp;(&lt;&lt;&lt;)&nbsp;=&nbsp;(*[28]*)Int64.shift_left</div>
343       <div class="lineAllVisited">000316| &nbsp;&nbsp;let&nbsp;(&gt;&gt;&gt;)&nbsp;=&nbsp;(*[28]*)Int64.shift_right_logical</div>
344       <div class="lineAllVisited">000317| &nbsp;&nbsp;let&nbsp;(land)&nbsp;=&nbsp;(*[28]*)Int64.logand</div>
345       <div class="lineAllVisited">000318| &nbsp;&nbsp;let&nbsp;(lor)&nbsp;=&nbsp;(*[28]*)Int64.logor</div>
346       <div class="lineAllVisited">000319| &nbsp;&nbsp;let&nbsp;lnot&nbsp;=&nbsp;(*[28]*)Int64.lognot</div>
347       <div class="lineAllVisited">000320| &nbsp;&nbsp;let&nbsp;pred&nbsp;=&nbsp;(*[28]*)Int64.pred</div>
348       <div class="lineAllVisited">000321| &nbsp;&nbsp;let&nbsp;max_int&nbsp;=&nbsp;(*[28]*)Int64.max_int</div>
349       <div class="lineAllVisited">000322| &nbsp;&nbsp;let&nbsp;to_int&nbsp;=&nbsp;(*[28]*)Int64.to_int</div>
350       <div class="lineAllVisited">000323| &nbsp;&nbsp;let&nbsp;zero&nbsp;=&nbsp;(*[28]*)Int64.zero</div>
351       <div class="lineAllVisited">000324| &nbsp;&nbsp;let&nbsp;one&nbsp;=&nbsp;(*[28]*)Int64.one</div>
352       <div class="lineAllVisited">000325| &nbsp;&nbsp;let&nbsp;minus_one&nbsp;=&nbsp;(*[28]*)Int64.minus_one</div>
353       <div class="lineAllVisited">000326| &nbsp;&nbsp;let&nbsp;ff&nbsp;=&nbsp;(*[28]*)0xff_L</div>
354       <div class="lineNone">000327| &nbsp;</div>
355       <div class="lineNone">000328| &nbsp;&nbsp;(*&nbsp;Create&nbsp;a&nbsp;mask&nbsp;so&nbsp;many&nbsp;bits&nbsp;wide.&nbsp;*)</div>
356       <div class="lineNone">000329| &nbsp;&nbsp;let&nbsp;mask&nbsp;bits&nbsp;=</div>
357       <div class="lineAllVisited">000330| &nbsp;&nbsp;&nbsp;&nbsp;(*[669050]*)if&nbsp;bits&nbsp;&lt;&nbsp;63&nbsp;then</div>
358       <div class="lineAllVisited">000331| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[664100]*)pred&nbsp;(one&nbsp;&lt;&lt;&lt;&nbsp;bits)</div>
359       <div class="lineAllVisited">000332| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[4950]*)if&nbsp;bits&nbsp;=&nbsp;63&nbsp;then</div>
360       <div class="lineAllVisited">000333| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[4950]*)max_int</div>
361       <div class="lineAllUnvisited">000334| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;=&nbsp;64&nbsp;then</div>
362       <div class="lineAllUnvisited">000335| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)minus_one</div>
363       <div class="lineNone">000336| &nbsp;&nbsp;&nbsp;&nbsp;else</div>
364       <div class="lineAllUnvisited">000337| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)invalid_arg&nbsp;&quot;Bitstring.I64.mask&quot;</div>
365       <div class="lineNone">000338| &nbsp;</div>
366       <div class="lineNone">000339| &nbsp;&nbsp;(*&nbsp;Byte&nbsp;swap&nbsp;an&nbsp;int&nbsp;of&nbsp;a&nbsp;given&nbsp;size.&nbsp;*)</div>
367       <div class="lineNone">000340| &nbsp;&nbsp;(*&nbsp;let&nbsp;byteswap&nbsp;v&nbsp;bits&nbsp;=&nbsp;*)</div>
368       <div class="lineNone">000341| &nbsp;</div>
369       <div class="lineNone">000342| &nbsp;&nbsp;(*&nbsp;Check&nbsp;a&nbsp;value&nbsp;is&nbsp;in&nbsp;range&nbsp;0&nbsp;..&nbsp;2^bits-1.&nbsp;*)</div>
370       <div class="lineNone">000343| &nbsp;&nbsp;let&nbsp;range_unsigned&nbsp;v&nbsp;bits&nbsp;=</div>
371       <div class="lineAllVisited">000344| &nbsp;&nbsp;&nbsp;&nbsp;(*[351850]*)let&nbsp;mask&nbsp;=&nbsp;lnot&nbsp;(mask&nbsp;bits)&nbsp;in</div>
372       <div class="lineAllVisited">000345| &nbsp;&nbsp;&nbsp;&nbsp;(v&nbsp;(*[351850]*)land&nbsp;mask)&nbsp;=&nbsp;zero</div>
373       <div class="lineNone">000346| &nbsp;</div>
374       <div class="lineNone">000347| &nbsp;&nbsp;(*&nbsp;Call&nbsp;function&nbsp;g&nbsp;on&nbsp;the&nbsp;top&nbsp;bits,&nbsp;then&nbsp;f&nbsp;on&nbsp;each&nbsp;full&nbsp;byte</div>
375       <div class="lineNone">000348| &nbsp;&nbsp;&nbsp;*&nbsp;(big&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;top).</div>
376       <div class="lineNone">000349| &nbsp;&nbsp;&nbsp;*)</div>
377       <div class="lineNone">000350| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_be&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
378       <div class="lineAllVisited">000351| &nbsp;&nbsp;&nbsp;&nbsp;(*[1460650]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
379       <div class="lineAllVisited">000352| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1108800]*)map_bytes_be&nbsp;g&nbsp;f&nbsp;(v&nbsp;&gt;&gt;&gt;&nbsp;8)&nbsp;(*[1108800]*)(bits-8);</div>
380       <div class="lineAllVisited">000353| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1108800]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
381       <div class="lineAllVisited">000354| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1108800]*)f&nbsp;(to_int&nbsp;lsb)</div>
382       <div class="lineAllVisited">000355| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[34650]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
383       <div class="lineAllVisited">000356| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[317200]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
384       <div class="lineAllVisited">000357| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[317200]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
385       <div class="lineNone">000358| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
386       <div class="lineNone">000359| &nbsp;</div>
387       <div class="lineNone">000360| &nbsp;&nbsp;(*&nbsp;Call&nbsp;function&nbsp;g&nbsp;on&nbsp;the&nbsp;top&nbsp;bits,&nbsp;then&nbsp;f&nbsp;on&nbsp;each&nbsp;full&nbsp;byte</div>
388       <div class="lineNone">000361| &nbsp;&nbsp;&nbsp;*&nbsp;(little&nbsp;endian&nbsp;-&nbsp;so&nbsp;start&nbsp;at&nbsp;root).</div>
389       <div class="lineNone">000362| &nbsp;&nbsp;&nbsp;*)</div>
390       <div class="lineNone">000363| &nbsp;&nbsp;let&nbsp;rec&nbsp;map_bytes_le&nbsp;g&nbsp;f&nbsp;v&nbsp;bits&nbsp;=</div>
391       <div class="lineAllUnvisited">000364| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
392       <div class="lineAllUnvisited">000365| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;ff&nbsp;in</div>
393       <div class="lineAllUnvisited">000366| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)f&nbsp;(*[0]*)(to_int&nbsp;lsb);</div>
394       <div class="lineAllUnvisited">000367| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)map_bytes_le&nbsp;g&nbsp;f&nbsp;(v&nbsp;&gt;&gt;&gt;&nbsp;8)&nbsp;(bits-8)</div>
395       <div class="lineAllUnvisited">000368| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[0]*)if&nbsp;bits&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
396       <div class="lineAllUnvisited">000369| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;lsb&nbsp;=&nbsp;v&nbsp;land&nbsp;(mask&nbsp;bits)&nbsp;in</div>
397       <div class="lineAllUnvisited">000370| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)g&nbsp;(to_int&nbsp;lsb)&nbsp;bits</div>
398       <div class="lineNone">000371| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
399       <div class="lineNone">000372| end</div>
400       <div class="lineNone">000373| &nbsp;</div>
401       <div class="lineNone">000374| (*----------------------------------------------------------------------*)</div>
402       <div class="lineNone">000375| (*&nbsp;Extraction&nbsp;functions.</div>
403       <div class="lineNone">000376| &nbsp;*</div>
404       <div class="lineNone">000377| &nbsp;*&nbsp;NB:&nbsp;internal&nbsp;functions,&nbsp;called&nbsp;from&nbsp;the&nbsp;generated&nbsp;macros,&nbsp;and</div>
405       <div class="lineNone">000378| &nbsp;*&nbsp;the&nbsp;parameters&nbsp;should&nbsp;have&nbsp;been&nbsp;checked&nbsp;for&nbsp;sanity&nbsp;already).</div>
406       <div class="lineNone">000379| &nbsp;*)</div>
407       <div class="lineNone">000380| &nbsp;</div>
408       <div class="lineNone">000381| (*&nbsp;Extract&nbsp;and&nbsp;convert&nbsp;to&nbsp;numeric.&nbsp;&nbsp;A&nbsp;single&nbsp;bit&nbsp;is&nbsp;returned&nbsp;as</div>
409       <div class="lineNone">000382| &nbsp;*&nbsp;a&nbsp;boolean.&nbsp;&nbsp;There&nbsp;are&nbsp;no&nbsp;endianness&nbsp;or&nbsp;signedness&nbsp;considerations.</div>
410       <div class="lineNone">000383| &nbsp;*)</div>
411       <div class="lineNone">000384| let&nbsp;extract_bit&nbsp;data&nbsp;off&nbsp;len&nbsp;_&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;final&nbsp;param&nbsp;is&nbsp;always&nbsp;1&nbsp;*)</div>
412       <div class="lineAllVisited">000385| &nbsp;&nbsp;(*[2515152]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
413       <div class="lineAllVisited">000386| &nbsp;&nbsp;(*[2515152]*)let&nbsp;bitmask&nbsp;=&nbsp;1&nbsp;lsl&nbsp;(7&nbsp;-&nbsp;(off&nbsp;land&nbsp;7))&nbsp;in</div>
414       <div class="lineAllVisited">000387| &nbsp;&nbsp;(*[2515152]*)let&nbsp;b&nbsp;=&nbsp;Char.code&nbsp;data.[byteoff]&nbsp;land&nbsp;bitmask&nbsp;&lt;&gt;&nbsp;0&nbsp;in</div>
415       <div class="lineAllVisited">000388| &nbsp;&nbsp;(*[2515152]*)b&nbsp;(*,&nbsp;off+1,&nbsp;len-1*)</div>
416       <div class="lineNone">000389| &nbsp;</div>
417       <div class="lineNone">000390| (*&nbsp;Returns&nbsp;8&nbsp;bit&nbsp;unsigned&nbsp;aligned&nbsp;bytes&nbsp;from&nbsp;the&nbsp;string.</div>
418       <div class="lineNone">000391| &nbsp;*&nbsp;If&nbsp;the&nbsp;string&nbsp;ends&nbsp;then&nbsp;this&nbsp;returns&nbsp;0's.</div>
419       <div class="lineNone">000392| &nbsp;*)</div>
420       <div class="lineNone">000393| let&nbsp;_get_byte&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;=</div>
421       <div class="lineAllVisited">000394| &nbsp;&nbsp;(*[9813846]*)if&nbsp;strlen&nbsp;&gt;&nbsp;byteoff&nbsp;then&nbsp;(*[9247619]*)Char.code&nbsp;data.[byteoff]&nbsp;else&nbsp;(*[566227]*)0</div>
422       <div class="lineNone">000395| let&nbsp;_get_byte32&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;=</div>
423       <div class="lineMixed">000396| &nbsp;&nbsp;(*[72]*)if&nbsp;strlen&nbsp;&gt;&nbsp;byteoff&nbsp;then&nbsp;(*[72]*)Int32.of_int&nbsp;(Char.code&nbsp;data.[byteoff])&nbsp;else&nbsp;(*[0]*)0l</div>
424       <div class="lineNone">000397| let&nbsp;_get_byte64&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;=</div>
425       <div class="lineAllVisited">000398| &nbsp;&nbsp;(*[1626200]*)if&nbsp;strlen&nbsp;&gt;&nbsp;byteoff&nbsp;then&nbsp;(*[1517793]*)Int64.of_int&nbsp;(Char.code&nbsp;data.[byteoff])&nbsp;else&nbsp;(*[108407]*)0L</div>
426       <div class="lineNone">000399| &nbsp;</div>
427       <div class="lineNone">000400| (*&nbsp;Extract&nbsp;[2..8]&nbsp;bits.&nbsp;&nbsp;Because&nbsp;the&nbsp;result&nbsp;fits&nbsp;into&nbsp;a&nbsp;single</div>
428       <div class="lineNone">000401| &nbsp;*&nbsp;byte&nbsp;we&nbsp;don't&nbsp;have&nbsp;to&nbsp;worry&nbsp;about&nbsp;endianness,&nbsp;only&nbsp;signedness.</div>
429       <div class="lineNone">000402| &nbsp;*)</div>
430       <div class="lineNone">000403| let&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
431       <div class="lineAllVisited">000404| &nbsp;&nbsp;(*[5009970]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
432       <div class="lineNone">000405| &nbsp;</div>
433       <div class="lineNone">000406| &nbsp;&nbsp;(*&nbsp;Optimize&nbsp;the&nbsp;common&nbsp;(byte-aligned)&nbsp;case.&nbsp;*)</div>
434       <div class="lineAllVisited">000407| &nbsp;&nbsp;(*[5009970]*)if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
435       <div class="lineAllVisited">000408| &nbsp;&nbsp;&nbsp;&nbsp;(*[103047]*)let&nbsp;byte&nbsp;=&nbsp;Char.code&nbsp;data.[byteoff]&nbsp;in</div>
436       <div class="lineAllVisited">000409| &nbsp;&nbsp;&nbsp;&nbsp;byte&nbsp;(*[103047]*)lsr&nbsp;(8&nbsp;-&nbsp;flen)&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
437       <div class="lineNone">000410| &nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
438       <div class="lineNone">000411| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Extract&nbsp;the&nbsp;16&nbsp;bits&nbsp;at&nbsp;byteoff&nbsp;and&nbsp;byteoff+1&nbsp;(note&nbsp;that&nbsp;the</div>
439       <div class="lineNone">000412| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;second&nbsp;byte&nbsp;might&nbsp;not&nbsp;exist&nbsp;in&nbsp;the&nbsp;original&nbsp;string).</div>
440       <div class="lineNone">000413| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</div>
441       <div class="lineAllVisited">000414| &nbsp;&nbsp;&nbsp;&nbsp;(*[4906923]*)let&nbsp;strlen&nbsp;=&nbsp;String.length&nbsp;data&nbsp;in</div>
442       <div class="lineNone">000415| &nbsp;</div>
443       <div class="lineAllVisited">000416| &nbsp;&nbsp;&nbsp;&nbsp;(*[4906923]*)let&nbsp;word&nbsp;=</div>
444       <div class="lineNone">000417| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;lsl&nbsp;8)&nbsp;+</div>
445       <div class="lineNone">000418| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_get_byte&nbsp;data&nbsp;(byteoff+1)&nbsp;strlen&nbsp;in</div>
446       <div class="lineNone">000419| &nbsp;</div>
447       <div class="lineNone">000420| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Mask&nbsp;off&nbsp;the&nbsp;top&nbsp;bits.&nbsp;*)</div>
448       <div class="lineAllVisited">000421| &nbsp;&nbsp;&nbsp;&nbsp;(*[4906923]*)let&nbsp;bitmask&nbsp;=&nbsp;(1&nbsp;lsl&nbsp;(16&nbsp;-&nbsp;(off&nbsp;land&nbsp;7)))&nbsp;-&nbsp;1&nbsp;in</div>
449       <div class="lineAllVisited">000422| &nbsp;&nbsp;&nbsp;&nbsp;(*[4906923]*)let&nbsp;word&nbsp;=&nbsp;word&nbsp;land&nbsp;bitmask&nbsp;in</div>
450       <div class="lineNone">000423| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Shift&nbsp;right&nbsp;to&nbsp;get&nbsp;rid&nbsp;of&nbsp;the&nbsp;bottom&nbsp;bits.&nbsp;*)</div>
451       <div class="lineAllVisited">000424| &nbsp;&nbsp;&nbsp;&nbsp;(*[4906923]*)let&nbsp;shift&nbsp;=&nbsp;16&nbsp;-&nbsp;((off&nbsp;land&nbsp;7)&nbsp;+&nbsp;flen)&nbsp;in</div>
452       <div class="lineAllVisited">000425| &nbsp;&nbsp;&nbsp;&nbsp;(*[4906923]*)let&nbsp;word&nbsp;=&nbsp;word&nbsp;lsr&nbsp;shift&nbsp;in</div>
453       <div class="lineNone">000426| &nbsp;</div>
454       <div class="lineAllVisited">000427| &nbsp;&nbsp;&nbsp;&nbsp;(*[4906923]*)word&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
455       <div class="lineNone">000428| &nbsp;&nbsp;)</div>
456       <div class="lineNone">000429| &nbsp;</div>
457       <div class="lineNone">000430| (*&nbsp;Extract&nbsp;[9..31]&nbsp;bits.&nbsp;&nbsp;We&nbsp;have&nbsp;to&nbsp;consider&nbsp;endianness&nbsp;and&nbsp;signedness.&nbsp;*)</div>
458       <div class="lineNone">000431| let&nbsp;extract_int_be_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
459       <div class="lineAllUnvisited">000432| &nbsp;&nbsp;(*[0]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
460       <div class="lineNone">000433| &nbsp;</div>
461       <div class="lineAllUnvisited">000434| &nbsp;&nbsp;(*[0]*)let&nbsp;strlen&nbsp;=&nbsp;String.length&nbsp;data&nbsp;in</div>
462       <div class="lineNone">000435| &nbsp;</div>
463       <div class="lineAllUnvisited">000436| &nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=</div>
464       <div class="lineNone">000437| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Optimize&nbsp;the&nbsp;common&nbsp;(byte-aligned)&nbsp;case.&nbsp;*)</div>
465       <div class="lineNone">000438| &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
466       <div class="lineAllUnvisited">000439| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=</div>
467       <div class="lineNone">000440| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;lsl&nbsp;23)&nbsp;+</div>
468       <div class="lineNone">000441| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;(byteoff+1)&nbsp;strlen&nbsp;lsl&nbsp;15)&nbsp;+</div>
469       <div class="lineNone">000442| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;(byteoff+2)&nbsp;strlen&nbsp;lsl&nbsp;7)&nbsp;+</div>
470       <div class="lineNone">000443| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;(byteoff+3)&nbsp;strlen&nbsp;lsr&nbsp;1)&nbsp;in</div>
471       <div class="lineAllUnvisited">000444| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;word&nbsp;(*[0]*)lsr&nbsp;(31&nbsp;-&nbsp;flen)</div>
472       <div class="lineAllUnvisited">000445| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[0]*)if&nbsp;flen&nbsp;&lt;=&nbsp;24&nbsp;then&nbsp;(</div>
473       <div class="lineNone">000446| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Extract&nbsp;the&nbsp;31&nbsp;bits&nbsp;at&nbsp;byteoff&nbsp;..&nbsp;byteoff+3.&nbsp;*)</div>
474       <div class="lineAllUnvisited">000447| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=</div>
475       <div class="lineNone">000448| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;lsl&nbsp;23)&nbsp;+</div>
476       <div class="lineNone">000449| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;(byteoff+1)&nbsp;strlen&nbsp;lsl&nbsp;15)&nbsp;+</div>
477       <div class="lineNone">000450| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;(byteoff+2)&nbsp;strlen&nbsp;lsl&nbsp;7)&nbsp;+</div>
478       <div class="lineNone">000451| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(_get_byte&nbsp;data&nbsp;(byteoff+3)&nbsp;strlen&nbsp;lsr&nbsp;1)&nbsp;in</div>
479       <div class="lineNone">000452| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Mask&nbsp;off&nbsp;the&nbsp;top&nbsp;bits.&nbsp;*)</div>
480       <div class="lineAllUnvisited">000453| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;bitmask&nbsp;=&nbsp;(1&nbsp;lsl&nbsp;(31&nbsp;-&nbsp;(off&nbsp;land&nbsp;7)))&nbsp;-&nbsp;1&nbsp;in</div>
481       <div class="lineAllUnvisited">000454| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=&nbsp;word&nbsp;land&nbsp;bitmask&nbsp;in</div>
482       <div class="lineNone">000455| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Shift&nbsp;right&nbsp;to&nbsp;get&nbsp;rid&nbsp;of&nbsp;the&nbsp;bottom&nbsp;bits.&nbsp;*)</div>
483       <div class="lineAllUnvisited">000456| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;shift&nbsp;=&nbsp;31&nbsp;-&nbsp;((off&nbsp;land&nbsp;7)&nbsp;+&nbsp;flen)&nbsp;in</div>
484       <div class="lineAllUnvisited">000457| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;word&nbsp;(*[0]*)lsr&nbsp;shift</div>
485       <div class="lineNone">000458| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
486       <div class="lineNone">000459| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Extract&nbsp;the&nbsp;next&nbsp;31&nbsp;bits,&nbsp;slow&nbsp;method.&nbsp;*)</div>
487       <div class="lineAllUnvisited">000460| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=</div>
488       <div class="lineNone">000461| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c0&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
489       <div class="lineNone">000462| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
490       <div class="lineAllUnvisited">000463| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c1&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
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="lineAllUnvisited">000465| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c2&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
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="lineAllUnvisited">000467| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c3&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;7&nbsp;in</div>
495       <div class="lineAllUnvisited">000468| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(c0&nbsp;(*[0]*)lsl&nbsp;23)&nbsp;+&nbsp;(c1&nbsp;lsl&nbsp;15)&nbsp;+&nbsp;(c2&nbsp;lsl&nbsp;7)&nbsp;+&nbsp;c3&nbsp;in</div>
496       <div class="lineAllUnvisited">000469| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;word&nbsp;(*[0]*)lsr&nbsp;(31&nbsp;-&nbsp;flen)</div>
497       <div class="lineNone">000470| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;in</div>
498       <div class="lineAllUnvisited">000471| &nbsp;&nbsp;(*[0]*)word&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
499       <div class="lineNone">000472| &nbsp;</div>
500       <div class="lineNone">000473| let&nbsp;extract_int_le_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
501       <div class="lineAllUnvisited">000474| &nbsp;&nbsp;(*[0]*)let&nbsp;v&nbsp;=&nbsp;extract_int_be_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;in</div>
502       <div class="lineAllUnvisited">000475| &nbsp;&nbsp;(*[0]*)let&nbsp;v&nbsp;=&nbsp;I.byteswap&nbsp;v&nbsp;flen&nbsp;in</div>
503       <div class="lineAllUnvisited">000476| &nbsp;&nbsp;(*[0]*)v</div>
504       <div class="lineNone">000477| &nbsp;</div>
505       <div class="lineNone">000478| let&nbsp;extract_int_ne_unsigned&nbsp;=</div>
506       <div class="lineAllVisited">000479| &nbsp;&nbsp;(*[28]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
507       <div class="lineAllUnvisited">000480| &nbsp;&nbsp;then&nbsp;(*[0]*)extract_int_be_unsigned</div>
508       <div class="lineAllVisited">000481| &nbsp;&nbsp;else&nbsp;(*[28]*)extract_int_le_unsigned</div>
509       <div class="lineNone">000482| &nbsp;</div>
510       <div class="lineNone">000483| let&nbsp;extract_int_ee_unsigned&nbsp;=&nbsp;function</div>
511       <div class="lineAllUnvisited">000484| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int_be_unsigned</div>
512       <div class="lineAllUnvisited">000485| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int_le_unsigned</div>
513       <div class="lineAllUnvisited">000486| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int_ne_unsigned</div>
514       <div class="lineNone">000487| &nbsp;</div>
515       <div class="lineNone">000488| let&nbsp;_make_int32_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;=</div>
516       <div class="lineAllVisited">000489| &nbsp;&nbsp;(*[18]*)Int32.logor</div>
517       <div class="lineNone">000490| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.logor</div>
518       <div class="lineNone">000491| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.logor</div>
519       <div class="lineNone">000492| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c0&nbsp;24)</div>
520       <div class="lineNone">000493| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c1&nbsp;16))</div>
521       <div class="lineNone">000494| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c2&nbsp;8))</div>
522       <div class="lineNone">000495| &nbsp;&nbsp;&nbsp;&nbsp;c3</div>
523       <div class="lineNone">000496| &nbsp;</div>
524       <div class="lineNone">000497| let&nbsp;_make_int32_le&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;=</div>
525       <div class="lineAllUnvisited">000498| &nbsp;&nbsp;(*[0]*)Int32.logor</div>
526       <div class="lineNone">000499| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.logor</div>
527       <div class="lineNone">000500| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.logor</div>
528       <div class="lineNone">000501| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c3&nbsp;24)</div>
529       <div class="lineNone">000502| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c2&nbsp;16))</div>
530       <div class="lineNone">000503| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int32.shift_left&nbsp;c1&nbsp;8))</div>
531       <div class="lineNone">000504| &nbsp;&nbsp;&nbsp;&nbsp;c0</div>
532       <div class="lineNone">000505| &nbsp;</div>
533       <div class="lineNone">000506| (*&nbsp;Extract&nbsp;exactly&nbsp;32&nbsp;bits.&nbsp;&nbsp;We&nbsp;have&nbsp;to&nbsp;consider&nbsp;endianness&nbsp;and&nbsp;signedness.&nbsp;*)</div>
534       <div class="lineNone">000507| let&nbsp;extract_int32_be_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
535       <div class="lineAllVisited">000508| &nbsp;&nbsp;(*[18]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
536       <div class="lineNone">000509| &nbsp;</div>
537       <div class="lineAllVisited">000510| &nbsp;&nbsp;(*[18]*)let&nbsp;strlen&nbsp;=&nbsp;String.length&nbsp;data&nbsp;in</div>
538       <div class="lineNone">000511| &nbsp;</div>
539       <div class="lineAllVisited">000512| &nbsp;&nbsp;(*[18]*)let&nbsp;word&nbsp;=</div>
540       <div class="lineNone">000513| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Optimize&nbsp;the&nbsp;common&nbsp;(byte-aligned)&nbsp;case.&nbsp;*)</div>
541       <div class="lineNone">000514| &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
542       <div class="lineAllVisited">000515| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[18]*)let&nbsp;word&nbsp;=</div>
543       <div class="lineNone">000516| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c0&nbsp;=&nbsp;_get_byte32&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;in</div>
544       <div class="lineAllVisited">000517| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[18]*)let&nbsp;c1&nbsp;=&nbsp;_get_byte32&nbsp;data&nbsp;(byteoff+1)&nbsp;strlen&nbsp;in</div>
545       <div class="lineAllVisited">000518| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[18]*)let&nbsp;c2&nbsp;=&nbsp;_get_byte32&nbsp;data&nbsp;(byteoff+2)&nbsp;strlen&nbsp;in</div>
546       <div class="lineAllVisited">000519| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[18]*)let&nbsp;c3&nbsp;=&nbsp;_get_byte32&nbsp;data&nbsp;(byteoff+3)&nbsp;strlen&nbsp;in</div>
547       <div class="lineAllVisited">000520| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[18]*)_make_int32_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;in</div>
548       <div class="lineAllVisited">000521| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[18]*)Int32.shift_right_logical&nbsp;word&nbsp;(32&nbsp;-&nbsp;flen)</div>
549       <div class="lineNone">000522| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
550       <div class="lineNone">000523| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Extract&nbsp;the&nbsp;next&nbsp;32&nbsp;bits,&nbsp;slow&nbsp;method.&nbsp;*)</div>
551       <div class="lineAllUnvisited">000524| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=</div>
552       <div class="lineNone">000525| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c0&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
553       <div class="lineNone">000526| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
554       <div class="lineAllUnvisited">000527| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c1&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
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="lineAllUnvisited">000529| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c2&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
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="lineAllUnvisited">000531| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c3&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8&nbsp;in</div>
559       <div class="lineAllUnvisited">000532| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c0&nbsp;=&nbsp;Int32.of_int&nbsp;c0&nbsp;in</div>
560       <div class="lineAllUnvisited">000533| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c1&nbsp;=&nbsp;Int32.of_int&nbsp;c1&nbsp;in</div>
561       <div class="lineAllUnvisited">000534| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c2&nbsp;=&nbsp;Int32.of_int&nbsp;c2&nbsp;in</div>
562       <div class="lineAllUnvisited">000535| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c3&nbsp;=&nbsp;Int32.of_int&nbsp;c3&nbsp;in</div>
563       <div class="lineAllUnvisited">000536| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)_make_int32_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;in</div>
564       <div class="lineAllUnvisited">000537| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Int32.shift_right_logical&nbsp;word&nbsp;(32&nbsp;-&nbsp;flen)</div>
565       <div class="lineNone">000538| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;in</div>
566       <div class="lineAllVisited">000539| &nbsp;&nbsp;(*[18]*)word&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
567       <div class="lineNone">000540| &nbsp;</div>
568       <div class="lineNone">000541| let&nbsp;extract_int32_le_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
569       <div class="lineAllVisited">000542| &nbsp;&nbsp;(*[12]*)let&nbsp;v&nbsp;=&nbsp;extract_int32_be_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;in</div>
570       <div class="lineAllVisited">000543| &nbsp;&nbsp;(*[12]*)let&nbsp;v&nbsp;=&nbsp;I32.byteswap&nbsp;v&nbsp;flen&nbsp;in</div>
571       <div class="lineAllVisited">000544| &nbsp;&nbsp;(*[12]*)v</div>
572       <div class="lineNone">000545| &nbsp;</div>
573       <div class="lineNone">000546| let&nbsp;extract_int32_ne_unsigned&nbsp;=</div>
574       <div class="lineAllVisited">000547| &nbsp;&nbsp;(*[28]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
575       <div class="lineAllUnvisited">000548| &nbsp;&nbsp;then&nbsp;(*[0]*)extract_int32_be_unsigned</div>
576       <div class="lineAllVisited">000549| &nbsp;&nbsp;else&nbsp;(*[28]*)extract_int32_le_unsigned</div>
577       <div class="lineNone">000550| &nbsp;</div>
578       <div class="lineNone">000551| let&nbsp;extract_int32_ee_unsigned&nbsp;=&nbsp;function</div>
579       <div class="lineAllVisited">000552| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[6]*)extract_int32_be_unsigned</div>
580       <div class="lineAllVisited">000553| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*[6]*)extract_int32_le_unsigned</div>
581       <div class="lineAllVisited">000554| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[6]*)extract_int32_ne_unsigned</div>
582       <div class="lineNone">000555| &nbsp;</div>
583       <div class="lineNone">000556| let&nbsp;_make_int64_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;=</div>
584       <div class="lineAllVisited">000557| &nbsp;&nbsp;(*[657463]*)Int64.logor</div>
585       <div class="lineNone">000558| &nbsp;&nbsp;&nbsp;&nbsp;(Int64.logor</div>
586       <div class="lineNone">000559| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.logor</div>
587       <div class="lineNone">000560| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.logor</div>
588       <div class="lineNone">000561| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&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;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.shift_left&nbsp;c0&nbsp;56)</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;&nbsp;&nbsp;&nbsp;(Int64.shift_left&nbsp;c1&nbsp;48))</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;(Int64.shift_left&nbsp;c2&nbsp;40))</div>
594       <div class="lineNone">000567| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.shift_left&nbsp;c3&nbsp;32))</div>
595       <div class="lineNone">000568| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.shift_left&nbsp;c4&nbsp;24))</div>
596       <div class="lineNone">000569| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.shift_left&nbsp;c5&nbsp;16))</div>
597       <div class="lineNone">000570| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Int64.shift_left&nbsp;c6&nbsp;8))</div>
598       <div class="lineNone">000571| &nbsp;&nbsp;&nbsp;&nbsp;c7</div>
599       <div class="lineNone">000572| &nbsp;</div>
600       <div class="lineNone">000573| let&nbsp;_make_int64_le&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;=</div>
601       <div class="lineAllUnvisited">000574| &nbsp;&nbsp;(*[0]*)_make_int64_be&nbsp;c7&nbsp;c6&nbsp;c5&nbsp;c4&nbsp;c3&nbsp;c2&nbsp;c1&nbsp;c0</div>
602       <div class="lineNone">000575| &nbsp;</div>
603       <div class="lineNone">000576| (*&nbsp;Extract&nbsp;[1..64]&nbsp;bits.&nbsp;&nbsp;We&nbsp;have&nbsp;to&nbsp;consider&nbsp;endianness&nbsp;and&nbsp;signedness.&nbsp;*)</div>
604       <div class="lineNone">000577| let&nbsp;extract_int64_be_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
605       <div class="lineAllVisited">000578| &nbsp;&nbsp;(*[657463]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
606       <div class="lineNone">000579| &nbsp;</div>
607       <div class="lineAllVisited">000580| &nbsp;&nbsp;(*[657463]*)let&nbsp;strlen&nbsp;=&nbsp;String.length&nbsp;data&nbsp;in</div>
608       <div class="lineNone">000581| &nbsp;</div>
609       <div class="lineAllVisited">000582| &nbsp;&nbsp;(*[657463]*)let&nbsp;word&nbsp;=</div>
610       <div class="lineNone">000583| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Optimize&nbsp;the&nbsp;common&nbsp;(byte-aligned)&nbsp;case.&nbsp;*)</div>
611       <div class="lineNone">000584| &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
612       <div class="lineAllVisited">000585| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)let&nbsp;word&nbsp;=</div>
613       <div class="lineNone">000586| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c0&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;in</div>
614       <div class="lineAllVisited">000587| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)let&nbsp;c1&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+1)&nbsp;strlen&nbsp;in</div>
615       <div class="lineAllVisited">000588| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)let&nbsp;c2&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+2)&nbsp;strlen&nbsp;in</div>
616       <div class="lineAllVisited">000589| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)let&nbsp;c3&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+3)&nbsp;strlen&nbsp;in</div>
617       <div class="lineAllVisited">000590| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)let&nbsp;c4&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+4)&nbsp;strlen&nbsp;in</div>
618       <div class="lineAllVisited">000591| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)let&nbsp;c5&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+5)&nbsp;strlen&nbsp;in</div>
619       <div class="lineAllVisited">000592| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)let&nbsp;c6&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+6)&nbsp;strlen&nbsp;in</div>
620       <div class="lineAllVisited">000593| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)let&nbsp;c7&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+7)&nbsp;strlen&nbsp;in</div>
621       <div class="lineAllVisited">000594| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)_make_int64_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;in</div>
622       <div class="lineAllVisited">000595| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[203275]*)Int64.shift_right_logical&nbsp;word&nbsp;(64&nbsp;-&nbsp;flen)</div>
623       <div class="lineNone">000596| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
624       <div class="lineNone">000597| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Extract&nbsp;the&nbsp;next&nbsp;64&nbsp;bits,&nbsp;slow&nbsp;method.&nbsp;*)</div>
625       <div class="lineAllVisited">000598| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;word&nbsp;=</div>
626       <div class="lineNone">000599| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c0&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
627       <div class="lineNone">000600| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
628       <div class="lineAllVisited">000601| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c1&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
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;(*[454188]*)let&nbsp;c2&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;(*[454188]*)let&nbsp;c3&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;(*[454188]*)let&nbsp;c4&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;(*[454188]*)let&nbsp;c5&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;(*[454188]*)let&nbsp;c6&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;(*[454188]*)let&nbsp;c7&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8&nbsp;in</div>
641       <div class="lineAllVisited">000614| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c0&nbsp;=&nbsp;Int64.of_int&nbsp;c0&nbsp;in</div>
642       <div class="lineAllVisited">000615| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c1&nbsp;=&nbsp;Int64.of_int&nbsp;c1&nbsp;in</div>
643       <div class="lineAllVisited">000616| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c2&nbsp;=&nbsp;Int64.of_int&nbsp;c2&nbsp;in</div>
644       <div class="lineAllVisited">000617| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c3&nbsp;=&nbsp;Int64.of_int&nbsp;c3&nbsp;in</div>
645       <div class="lineAllVisited">000618| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c4&nbsp;=&nbsp;Int64.of_int&nbsp;c4&nbsp;in</div>
646       <div class="lineAllVisited">000619| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c5&nbsp;=&nbsp;Int64.of_int&nbsp;c5&nbsp;in</div>
647       <div class="lineAllVisited">000620| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c6&nbsp;=&nbsp;Int64.of_int&nbsp;c6&nbsp;in</div>
648       <div class="lineAllVisited">000621| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)let&nbsp;c7&nbsp;=&nbsp;Int64.of_int&nbsp;c7&nbsp;in</div>
649       <div class="lineAllVisited">000622| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)_make_int64_be&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;in</div>
650       <div class="lineAllVisited">000623| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[454188]*)Int64.shift_right_logical&nbsp;word&nbsp;(64&nbsp;-&nbsp;flen)</div>
651       <div class="lineNone">000624| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;in</div>
652       <div class="lineAllVisited">000625| &nbsp;&nbsp;(*[657463]*)word&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
653       <div class="lineNone">000626| &nbsp;</div>
654       <div class="lineNone">000627| let&nbsp;extract_int64_le_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;flen&nbsp;=</div>
655       <div class="lineAllUnvisited">000628| &nbsp;&nbsp;(*[0]*)let&nbsp;byteoff&nbsp;=&nbsp;off&nbsp;lsr&nbsp;3&nbsp;in</div>
656       <div class="lineNone">000629| &nbsp;</div>
657       <div class="lineAllUnvisited">000630| &nbsp;&nbsp;(*[0]*)let&nbsp;strlen&nbsp;=&nbsp;String.length&nbsp;data&nbsp;in</div>
658       <div class="lineNone">000631| &nbsp;</div>
659       <div class="lineAllUnvisited">000632| &nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=</div>
660       <div class="lineNone">000633| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Optimize&nbsp;the&nbsp;common&nbsp;(byte-aligned)&nbsp;case.&nbsp;*)</div>
661       <div class="lineNone">000634| &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
662       <div class="lineAllUnvisited">000635| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=</div>
663       <div class="lineNone">000636| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c0&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;byteoff&nbsp;strlen&nbsp;in</div>
664       <div class="lineAllUnvisited">000637| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c1&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+1)&nbsp;strlen&nbsp;in</div>
665       <div class="lineAllUnvisited">000638| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c2&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+2)&nbsp;strlen&nbsp;in</div>
666       <div class="lineAllUnvisited">000639| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c3&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+3)&nbsp;strlen&nbsp;in</div>
667       <div class="lineAllUnvisited">000640| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c4&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+4)&nbsp;strlen&nbsp;in</div>
668       <div class="lineAllUnvisited">000641| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c5&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+5)&nbsp;strlen&nbsp;in</div>
669       <div class="lineAllUnvisited">000642| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c6&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+6)&nbsp;strlen&nbsp;in</div>
670       <div class="lineAllUnvisited">000643| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c7&nbsp;=&nbsp;_get_byte64&nbsp;data&nbsp;(byteoff+7)&nbsp;strlen&nbsp;in</div>
671       <div class="lineAllUnvisited">000644| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)_make_int64_le&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;in</div>
672       <div class="lineAllUnvisited">000645| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Int64.logand&nbsp;word&nbsp;(I64.mask&nbsp;flen)</div>
673       <div class="lineNone">000646| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
674       <div class="lineNone">000647| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Extract&nbsp;the&nbsp;next&nbsp;64&nbsp;bits,&nbsp;slow&nbsp;method.&nbsp;*)</div>
675       <div class="lineAllUnvisited">000648| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;word&nbsp;=</div>
676       <div class="lineNone">000649| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;c0&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
677       <div class="lineNone">000650| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
678       <div class="lineAllUnvisited">000651| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c1&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
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="lineAllUnvisited">000653| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c2&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
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="lineAllUnvisited">000655| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c3&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
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="lineAllUnvisited">000657| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c4&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
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="lineAllUnvisited">000659| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c5&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
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="lineAllUnvisited">000661| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c6&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
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="lineAllUnvisited">000663| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c7&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8&nbsp;in</div>
691       <div class="lineAllUnvisited">000664| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c0&nbsp;=&nbsp;Int64.of_int&nbsp;c0&nbsp;in</div>
692       <div class="lineAllUnvisited">000665| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c1&nbsp;=&nbsp;Int64.of_int&nbsp;c1&nbsp;in</div>
693       <div class="lineAllUnvisited">000666| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c2&nbsp;=&nbsp;Int64.of_int&nbsp;c2&nbsp;in</div>
694       <div class="lineAllUnvisited">000667| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c3&nbsp;=&nbsp;Int64.of_int&nbsp;c3&nbsp;in</div>
695       <div class="lineAllUnvisited">000668| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c4&nbsp;=&nbsp;Int64.of_int&nbsp;c4&nbsp;in</div>
696       <div class="lineAllUnvisited">000669| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c5&nbsp;=&nbsp;Int64.of_int&nbsp;c5&nbsp;in</div>
697       <div class="lineAllUnvisited">000670| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c6&nbsp;=&nbsp;Int64.of_int&nbsp;c6&nbsp;in</div>
698       <div class="lineAllUnvisited">000671| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;c7&nbsp;=&nbsp;Int64.of_int&nbsp;c7&nbsp;in</div>
699       <div class="lineAllUnvisited">000672| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)_make_int64_le&nbsp;c0&nbsp;c1&nbsp;c2&nbsp;c3&nbsp;c4&nbsp;c5&nbsp;c6&nbsp;c7&nbsp;in</div>
700       <div class="lineAllUnvisited">000673| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Int64.logand&nbsp;word&nbsp;(I64.mask&nbsp;flen)</div>
701       <div class="lineNone">000674| &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;in</div>
702       <div class="lineAllUnvisited">000675| &nbsp;&nbsp;(*[0]*)word&nbsp;(*,&nbsp;off+flen,&nbsp;len-flen*)</div>
703       <div class="lineNone">000676| &nbsp;</div>
704       <div class="lineNone">000677| let&nbsp;extract_int64_ne_unsigned&nbsp;=</div>
705       <div class="lineAllVisited">000678| &nbsp;&nbsp;(*[28]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
706       <div class="lineAllUnvisited">000679| &nbsp;&nbsp;then&nbsp;(*[0]*)extract_int64_be_unsigned</div>
707       <div class="lineAllVisited">000680| &nbsp;&nbsp;else&nbsp;(*[28]*)extract_int64_le_unsigned</div>
708       <div class="lineNone">000681| &nbsp;</div>
709       <div class="lineNone">000682| let&nbsp;extract_int64_ee_unsigned&nbsp;=&nbsp;function</div>
710       <div class="lineAllUnvisited">000683| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int64_be_unsigned</div>
711       <div class="lineAllUnvisited">000684| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int64_le_unsigned</div>
712       <div class="lineAllUnvisited">000685| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[0]*)extract_int64_ne_unsigned</div>
713       <div class="lineNone">000686| &nbsp;</div>
714       <div class="lineNone">000687| external&nbsp;extract_fastpath_int16_be_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int16_be_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
715       <div class="lineNone">000688| &nbsp;</div>
716       <div class="lineNone">000689| external&nbsp;extract_fastpath_int16_le_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int16_le_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
717       <div class="lineNone">000690| &nbsp;</div>
718       <div class="lineNone">000691| external&nbsp;extract_fastpath_int16_ne_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int16_ne_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
719       <div class="lineNone">000692| &nbsp;</div>
720       <div class="lineNone">000693| external&nbsp;extract_fastpath_int16_be_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int16_be_signed&quot;&nbsp;&quot;noalloc&quot;</div>
721       <div class="lineNone">000694| &nbsp;</div>
722       <div class="lineNone">000695| external&nbsp;extract_fastpath_int16_le_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int16_le_signed&quot;&nbsp;&quot;noalloc&quot;</div>
723       <div class="lineNone">000696| &nbsp;</div>
724       <div class="lineNone">000697| external&nbsp;extract_fastpath_int16_ne_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int16_ne_signed&quot;&nbsp;&quot;noalloc&quot;</div>
725       <div class="lineNone">000698| &nbsp;</div>
726       <div class="lineNone">000699| (*</div>
727       <div class="lineNone">000700| external&nbsp;extract_fastpath_int24_be_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int24_be_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
728       <div class="lineNone">000701| &nbsp;</div>
729       <div class="lineNone">000702| external&nbsp;extract_fastpath_int24_le_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int24_le_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
730       <div class="lineNone">000703| &nbsp;</div>
731       <div class="lineNone">000704| external&nbsp;extract_fastpath_int24_ne_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int24_ne_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
732       <div class="lineNone">000705| &nbsp;</div>
733       <div class="lineNone">000706| external&nbsp;extract_fastpath_int24_be_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int24_be_signed&quot;&nbsp;&quot;noalloc&quot;</div>
734       <div class="lineNone">000707| &nbsp;</div>
735       <div class="lineNone">000708| external&nbsp;extract_fastpath_int24_le_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int24_le_signed&quot;&nbsp;&quot;noalloc&quot;</div>
736       <div class="lineNone">000709| &nbsp;</div>
737       <div class="lineNone">000710| external&nbsp;extract_fastpath_int24_ne_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int24_ne_signed&quot;&nbsp;&quot;noalloc&quot;</div>
738       <div class="lineNone">000711| *)</div>
739       <div class="lineNone">000712| &nbsp;</div>
740       <div class="lineNone">000713| external&nbsp;extract_fastpath_int32_be_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int32&nbsp;-&gt;&nbsp;int32&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int32_be_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
741       <div class="lineNone">000714| &nbsp;</div>
742       <div class="lineNone">000715| external&nbsp;extract_fastpath_int32_le_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int32&nbsp;-&gt;&nbsp;int32&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int32_le_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
743       <div class="lineNone">000716| &nbsp;</div>
744       <div class="lineNone">000717| external&nbsp;extract_fastpath_int32_ne_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int32&nbsp;-&gt;&nbsp;int32&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int32_ne_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
745       <div class="lineNone">000718| &nbsp;</div>
746       <div class="lineNone">000719| external&nbsp;extract_fastpath_int32_be_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int32&nbsp;-&gt;&nbsp;int32&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int32_be_signed&quot;&nbsp;&quot;noalloc&quot;</div>
747       <div class="lineNone">000720| &nbsp;</div>
748       <div class="lineNone">000721| external&nbsp;extract_fastpath_int32_le_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int32&nbsp;-&gt;&nbsp;int32&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int32_le_signed&quot;&nbsp;&quot;noalloc&quot;</div>
749       <div class="lineNone">000722| &nbsp;</div>
750       <div class="lineNone">000723| external&nbsp;extract_fastpath_int32_ne_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int32&nbsp;-&gt;&nbsp;int32&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int32_ne_signed&quot;&nbsp;&quot;noalloc&quot;</div>
751       <div class="lineNone">000724| &nbsp;</div>
752       <div class="lineNone">000725| (*</div>
753       <div class="lineNone">000726| external&nbsp;extract_fastpath_int40_be_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int40_be_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
754       <div class="lineNone">000727| &nbsp;</div>
755       <div class="lineNone">000728| external&nbsp;extract_fastpath_int40_le_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int40_le_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
756       <div class="lineNone">000729| &nbsp;</div>
757       <div class="lineNone">000730| external&nbsp;extract_fastpath_int40_ne_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int40_ne_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
758       <div class="lineNone">000731| &nbsp;</div>
759       <div class="lineNone">000732| external&nbsp;extract_fastpath_int40_be_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int40_be_signed&quot;&nbsp;&quot;noalloc&quot;</div>
760       <div class="lineNone">000733| &nbsp;</div>
761       <div class="lineNone">000734| external&nbsp;extract_fastpath_int40_le_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int40_le_signed&quot;&nbsp;&quot;noalloc&quot;</div>
762       <div class="lineNone">000735| &nbsp;</div>
763       <div class="lineNone">000736| external&nbsp;extract_fastpath_int40_ne_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int40_ne_signed&quot;&nbsp;&quot;noalloc&quot;</div>
764       <div class="lineNone">000737| &nbsp;</div>
765       <div class="lineNone">000738| external&nbsp;extract_fastpath_int48_be_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int48_be_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
766       <div class="lineNone">000739| &nbsp;</div>
767       <div class="lineNone">000740| external&nbsp;extract_fastpath_int48_le_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int48_le_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
768       <div class="lineNone">000741| &nbsp;</div>
769       <div class="lineNone">000742| external&nbsp;extract_fastpath_int48_ne_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int48_ne_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
770       <div class="lineNone">000743| &nbsp;</div>
771       <div class="lineNone">000744| external&nbsp;extract_fastpath_int48_be_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int48_be_signed&quot;&nbsp;&quot;noalloc&quot;</div>
772       <div class="lineNone">000745| &nbsp;</div>
773       <div class="lineNone">000746| external&nbsp;extract_fastpath_int48_le_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int48_le_signed&quot;&nbsp;&quot;noalloc&quot;</div>
774       <div class="lineNone">000747| &nbsp;</div>
775       <div class="lineNone">000748| external&nbsp;extract_fastpath_int48_ne_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int48_ne_signed&quot;&nbsp;&quot;noalloc&quot;</div>
776       <div class="lineNone">000749| &nbsp;</div>
777       <div class="lineNone">000750| external&nbsp;extract_fastpath_int56_be_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int56_be_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
778       <div class="lineNone">000751| &nbsp;</div>
779       <div class="lineNone">000752| external&nbsp;extract_fastpath_int56_le_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int56_le_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
780       <div class="lineNone">000753| &nbsp;</div>
781       <div class="lineNone">000754| external&nbsp;extract_fastpath_int56_ne_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int56_ne_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
782       <div class="lineNone">000755| &nbsp;</div>
783       <div class="lineNone">000756| external&nbsp;extract_fastpath_int56_be_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int56_be_signed&quot;&nbsp;&quot;noalloc&quot;</div>
784       <div class="lineNone">000757| &nbsp;</div>
785       <div class="lineNone">000758| external&nbsp;extract_fastpath_int56_le_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int56_le_signed&quot;&nbsp;&quot;noalloc&quot;</div>
786       <div class="lineNone">000759| &nbsp;</div>
787       <div class="lineNone">000760| external&nbsp;extract_fastpath_int56_ne_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int56_ne_signed&quot;&nbsp;&quot;noalloc&quot;</div>
788       <div class="lineNone">000761| *)</div>
789       <div class="lineNone">000762| &nbsp;</div>
790       <div class="lineNone">000763| external&nbsp;extract_fastpath_int64_be_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int64_be_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
791       <div class="lineNone">000764| &nbsp;</div>
792       <div class="lineNone">000765| external&nbsp;extract_fastpath_int64_le_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int64_le_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
793       <div class="lineNone">000766| &nbsp;</div>
794       <div class="lineNone">000767| external&nbsp;extract_fastpath_int64_ne_unsigned&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int64_ne_unsigned&quot;&nbsp;&quot;noalloc&quot;</div>
795       <div class="lineNone">000768| &nbsp;</div>
796       <div class="lineNone">000769| external&nbsp;extract_fastpath_int64_be_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int64_be_signed&quot;&nbsp;&quot;noalloc&quot;</div>
797       <div class="lineNone">000770| &nbsp;</div>
798       <div class="lineNone">000771| external&nbsp;extract_fastpath_int64_le_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int64_le_signed&quot;&nbsp;&quot;noalloc&quot;</div>
799       <div class="lineNone">000772| &nbsp;</div>
800       <div class="lineNone">000773| external&nbsp;extract_fastpath_int64_ne_signed&nbsp;:&nbsp;string&nbsp;-&gt;&nbsp;int&nbsp;-&gt;&nbsp;int64&nbsp;-&gt;&nbsp;int64&nbsp;=&nbsp;&quot;ocaml_bitstring_extract_fastpath_int64_ne_signed&quot;&nbsp;&quot;noalloc&quot;</div>
801       <div class="lineNone">000774| &nbsp;</div>
802       <div class="lineNone">000775| (*----------------------------------------------------------------------*)</div>
803       <div class="lineNone">000776| (*&nbsp;Constructor&nbsp;functions.&nbsp;*)</div>
804       <div class="lineNone">000777| &nbsp;</div>
805       <div class="lineNone">000778| module&nbsp;Buffer&nbsp;=&nbsp;struct</div>
806       <div class="lineNone">000779| &nbsp;&nbsp;type&nbsp;t&nbsp;=&nbsp;{</div>
807       <div class="lineNone">000780| &nbsp;&nbsp;&nbsp;&nbsp;buf&nbsp;:&nbsp;Buffer.t;</div>
808       <div class="lineNone">000781| &nbsp;&nbsp;&nbsp;&nbsp;mutable&nbsp;len&nbsp;:&nbsp;int;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Length&nbsp;in&nbsp;bits.&nbsp;*)</div>
809       <div class="lineNone">000782| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Last&nbsp;byte&nbsp;in&nbsp;the&nbsp;buffer&nbsp;(if&nbsp;len&nbsp;is&nbsp;not&nbsp;aligned).&nbsp;&nbsp;We&nbsp;store</div>
810       <div class="lineNone">000783| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;it&nbsp;outside&nbsp;the&nbsp;buffer&nbsp;because&nbsp;buffers&nbsp;aren't&nbsp;mutable.</div>
811       <div class="lineNone">000784| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</div>
812       <div class="lineNone">000785| &nbsp;&nbsp;&nbsp;&nbsp;mutable&nbsp;last&nbsp;:&nbsp;int;</div>
813       <div class="lineNone">000786| &nbsp;&nbsp;}</div>
814       <div class="lineNone">000787| &nbsp;</div>
815       <div class="lineNone">000788| &nbsp;&nbsp;let&nbsp;create&nbsp;()&nbsp;=</div>
816       <div class="lineNone">000789| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;XXX&nbsp;We&nbsp;have&nbsp;almost&nbsp;enough&nbsp;information&nbsp;in&nbsp;the&nbsp;generator&nbsp;to</div>
817       <div class="lineNone">000790| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;choose&nbsp;a&nbsp;good&nbsp;initial&nbsp;size.</div>
818       <div class="lineNone">000791| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</div>
819       <div class="lineAllVisited">000792| &nbsp;&nbsp;&nbsp;&nbsp;(*[452559]*){&nbsp;buf&nbsp;=&nbsp;Buffer.create&nbsp;128;&nbsp;len&nbsp;=&nbsp;0;&nbsp;last&nbsp;=&nbsp;0&nbsp;}</div>
820       <div class="lineNone">000793| &nbsp;</div>
821       <div class="lineNone">000794| &nbsp;&nbsp;let&nbsp;contents&nbsp;{&nbsp;buf&nbsp;=&nbsp;buf;&nbsp;len&nbsp;=&nbsp;len;&nbsp;last&nbsp;=&nbsp;last&nbsp;}&nbsp;=</div>
822       <div class="lineAllVisited">000795| &nbsp;&nbsp;&nbsp;&nbsp;(*[452559]*)let&nbsp;data&nbsp;=</div>
823       <div class="lineNone">000796| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;len&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then</div>
824       <div class="lineAllVisited">000797| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[58202]*)Buffer.contents&nbsp;buf</div>
825       <div class="lineNone">000798| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else</div>
826       <div class="lineAllVisited">000799| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[394357]*)Buffer.contents&nbsp;buf&nbsp;^&nbsp;(String.make&nbsp;1&nbsp;(Char.chr&nbsp;last))&nbsp;in</div>
827       <div class="lineAllVisited">000800| &nbsp;&nbsp;&nbsp;&nbsp;(*[452559]*)data,&nbsp;0,&nbsp;len</div>
828       <div class="lineNone">000801| &nbsp;</div>
829       <div class="lineNone">000802| &nbsp;&nbsp;(*&nbsp;Add&nbsp;exactly&nbsp;8&nbsp;bits.&nbsp;*)</div>
830       <div class="lineNone">000803| &nbsp;&nbsp;let&nbsp;add_byte&nbsp;({&nbsp;buf&nbsp;=&nbsp;buf;&nbsp;len&nbsp;=&nbsp;len;&nbsp;last&nbsp;=&nbsp;last&nbsp;}&nbsp;as&nbsp;t)&nbsp;byte&nbsp;=</div>
831       <div class="lineMixed">000804| &nbsp;&nbsp;&nbsp;&nbsp;(*[8142106]*)if&nbsp;(*[8142106]*)byte&nbsp;&lt;&nbsp;0&nbsp;||&nbsp;(*[8142106]*)byte&nbsp;&gt;&nbsp;255&nbsp;then&nbsp;(*[0]*)invalid_arg&nbsp;&quot;Bitstring.Buffer.add_byte&quot;;</div>
832       <div class="lineAllVisited">000805| &nbsp;&nbsp;&nbsp;&nbsp;(*[8142106]*)let&nbsp;shift&nbsp;=&nbsp;len&nbsp;land&nbsp;7&nbsp;in</div>
833       <div class="lineAllVisited">000806| &nbsp;&nbsp;&nbsp;&nbsp;(*[8142106]*)if&nbsp;shift&nbsp;=&nbsp;0&nbsp;then</div>
834       <div class="lineNone">000807| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Target&nbsp;buffer&nbsp;is&nbsp;byte-aligned.&nbsp;*)</div>
835       <div class="lineAllVisited">000808| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[519924]*)Buffer.add_char&nbsp;buf&nbsp;(Char.chr&nbsp;byte)</div>
836       <div class="lineNone">000809| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(</div>
837       <div class="lineNone">000810| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Target&nbsp;buffer&nbsp;is&nbsp;unaligned.&nbsp;&nbsp;'last'&nbsp;is&nbsp;meaningful.&nbsp;*)</div>
838       <div class="lineAllVisited">000811| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[7622182]*)let&nbsp;first&nbsp;=&nbsp;byte&nbsp;lsr&nbsp;shift&nbsp;in</div>
839       <div class="lineAllVisited">000812| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[7622182]*)let&nbsp;second&nbsp;=&nbsp;(byte&nbsp;lsl&nbsp;(8&nbsp;-&nbsp;shift))&nbsp;land&nbsp;0xff&nbsp;in</div>
840       <div class="lineAllVisited">000813| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[7622182]*)Buffer.add_char&nbsp;buf&nbsp;(*[7622182]*)(Char.chr&nbsp;(last&nbsp;lor&nbsp;first));</div>
841       <div class="lineAllVisited">000814| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[7622182]*)t.last&nbsp;&lt;-&nbsp;second</div>
842       <div class="lineNone">000815| &nbsp;&nbsp;&nbsp;&nbsp;);</div>
843       <div class="lineAllVisited">000816| &nbsp;&nbsp;&nbsp;&nbsp;(*[8142106]*)t.len&nbsp;&lt;-&nbsp;t.len&nbsp;+&nbsp;8</div>
844       <div class="lineNone">000817| &nbsp;</div>
845       <div class="lineNone">000818| &nbsp;&nbsp;(*&nbsp;Add&nbsp;exactly&nbsp;1&nbsp;bit.&nbsp;*)</div>
846       <div class="lineNone">000819| &nbsp;&nbsp;let&nbsp;add_bit&nbsp;({&nbsp;buf&nbsp;=&nbsp;buf;&nbsp;len&nbsp;=&nbsp;len;&nbsp;last&nbsp;=&nbsp;last&nbsp;}&nbsp;as&nbsp;t)&nbsp;bit&nbsp;=</div>
847       <div class="lineAllVisited">000820| &nbsp;&nbsp;&nbsp;&nbsp;(*[4192108]*)let&nbsp;shift&nbsp;=&nbsp;7&nbsp;-&nbsp;(len&nbsp;land&nbsp;7)&nbsp;in</div>
848       <div class="lineAllVisited">000821| &nbsp;&nbsp;&nbsp;&nbsp;(*[4192108]*)if&nbsp;shift&nbsp;&gt;&nbsp;0&nbsp;then</div>
849       <div class="lineNone">000822| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Somewhere&nbsp;in&nbsp;the&nbsp;middle&nbsp;of&nbsp;'last'.&nbsp;*)</div>
850       <div class="lineAllVisited">000823| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[3692102]*)t.last&nbsp;&lt;-&nbsp;last&nbsp;lor&nbsp;((if&nbsp;bit&nbsp;then&nbsp;(*[2903776]*)1&nbsp;else&nbsp;(*[788326]*)0)&nbsp;lsl&nbsp;shift)</div>
851       <div class="lineNone">000824| &nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(</div>
852       <div class="lineNone">000825| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Just&nbsp;a&nbsp;single&nbsp;spare&nbsp;bit&nbsp;in&nbsp;'last'.&nbsp;*)</div>
853       <div class="lineAllVisited">000826| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[500006]*)let&nbsp;last&nbsp;=&nbsp;last&nbsp;lor&nbsp;if&nbsp;bit&nbsp;then&nbsp;(*[391339]*)1&nbsp;else&nbsp;(*[108667]*)0&nbsp;in</div>
854       <div class="lineAllVisited">000827| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[500006]*)Buffer.add_char&nbsp;buf&nbsp;(*[500006]*)(Char.chr&nbsp;last);</div>
855       <div class="lineAllVisited">000828| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[500006]*)t.last&nbsp;&lt;-&nbsp;0</div>
856       <div class="lineNone">000829| &nbsp;&nbsp;&nbsp;&nbsp;);</div>
857       <div class="lineAllVisited">000830| &nbsp;&nbsp;&nbsp;&nbsp;(*[4192108]*)t.len&nbsp;&lt;-&nbsp;len&nbsp;+&nbsp;1</div>
858       <div class="lineNone">000831| &nbsp;</div>
859       <div class="lineNone">000832| &nbsp;&nbsp;(*&nbsp;Add&nbsp;a&nbsp;small&nbsp;number&nbsp;of&nbsp;bits&nbsp;(definitely&nbsp;&lt;&nbsp;8).&nbsp;&nbsp;This&nbsp;uses&nbsp;a&nbsp;loop</div>
860       <div class="lineNone">000833| &nbsp;&nbsp;&nbsp;*&nbsp;to&nbsp;call&nbsp;add_bit&nbsp;so&nbsp;it's&nbsp;slow.</div>
861       <div class="lineNone">000834| &nbsp;&nbsp;&nbsp;*)</div>
862       <div class="lineNone">000835| &nbsp;&nbsp;let&nbsp;_add_bits&nbsp;t&nbsp;c&nbsp;slen&nbsp;=</div>
863       <div class="lineMixed">000836| &nbsp;&nbsp;&nbsp;&nbsp;(*[317200]*)if&nbsp;(*[317200]*)slen&nbsp;&lt;&nbsp;1&nbsp;||&nbsp;(*[317200]*)slen&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(*[0]*)invalid_arg&nbsp;&quot;Bitstring.Buffer._add_bits&quot;;</div>
864       <div class="lineAllVisited">000837| &nbsp;&nbsp;&nbsp;&nbsp;(*[317200]*)for&nbsp;i&nbsp;=&nbsp;slen-1&nbsp;downto&nbsp;0&nbsp;do</div>
865       <div class="lineAllVisited">000838| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1268791]*)let&nbsp;bit&nbsp;=&nbsp;c&nbsp;land&nbsp;(1&nbsp;lsl&nbsp;i)&nbsp;&lt;&gt;&nbsp;0&nbsp;in</div>
866       <div class="lineAllVisited">000839| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1268791]*)add_bit&nbsp;t&nbsp;bit</div>
867       <div class="lineNone">000840| &nbsp;&nbsp;&nbsp;&nbsp;done</div>
868       <div class="lineNone">000841| &nbsp;</div>
869       <div class="lineNone">000842| &nbsp;&nbsp;let&nbsp;add_bits&nbsp;({&nbsp;buf&nbsp;=&nbsp;buf;&nbsp;len&nbsp;=&nbsp;len&nbsp;}&nbsp;as&nbsp;t)&nbsp;str&nbsp;slen&nbsp;=</div>
870       <div class="lineAllVisited">000843| &nbsp;&nbsp;&nbsp;&nbsp;(*[23330]*)if&nbsp;slen&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
871       <div class="lineAllVisited">000844| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[1272292]*)if&nbsp;len&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then&nbsp;(</div>
872       <div class="lineAllVisited">000845| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[525820]*)if&nbsp;slen&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then</div>
873       <div class="lineNone">000846| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Common&nbsp;case&nbsp;-&nbsp;everything&nbsp;is&nbsp;byte-aligned.&nbsp;*)</div>
874       <div class="lineAllVisited">000847| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[58261]*)Buffer.add_substring&nbsp;buf&nbsp;str&nbsp;0&nbsp;(slen&nbsp;lsr&nbsp;3)</div>
875       <div class="lineNone">000848| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;(</div>
876       <div class="lineNone">000849| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Target&nbsp;buffer&nbsp;is&nbsp;aligned.&nbsp;&nbsp;Copy&nbsp;whole&nbsp;bytes&nbsp;then&nbsp;leave&nbsp;the</div>
877       <div class="lineNone">000850| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;remaining&nbsp;bits&nbsp;in&nbsp;last.</div>
878       <div class="lineNone">000851| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</div>
879       <div class="lineAllVisited">000852| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[467559]*)let&nbsp;slenbytes&nbsp;=&nbsp;slen&nbsp;lsr&nbsp;3&nbsp;in</div>
880       <div class="lineAllVisited">000853| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[335078]*)if&nbsp;slenbytes&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(*[132481]*)Buffer.add_substring&nbsp;buf&nbsp;str&nbsp;0&nbsp;slenbytes;</div>
881       <div class="lineAllVisited">000854| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[467559]*)let&nbsp;last&nbsp;=&nbsp;Char.code&nbsp;str.[slenbytes]&nbsp;in&nbsp;(*&nbsp;last&nbsp;char&nbsp;*)</div>
882       <div class="lineAllVisited">000855| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[467559]*)let&nbsp;mask&nbsp;=&nbsp;0xff&nbsp;lsl&nbsp;(8&nbsp;-&nbsp;(slen&nbsp;land&nbsp;7))&nbsp;in</div>
883       <div class="lineAllVisited">000856| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[467559]*)t.last&nbsp;&lt;-&nbsp;last&nbsp;land&nbsp;mask</div>
884       <div class="lineNone">000857| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);</div>
885       <div class="lineAllVisited">000858| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[525820]*)t.len&nbsp;&lt;-&nbsp;len&nbsp;+&nbsp;slen</div>
886       <div class="lineNone">000859| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(</div>
887       <div class="lineNone">000860| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Target&nbsp;buffer&nbsp;is&nbsp;unaligned.&nbsp;&nbsp;Copy&nbsp;whole&nbsp;bytes&nbsp;using</div>
888       <div class="lineNone">000861| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;add_byte&nbsp;which&nbsp;knows&nbsp;how&nbsp;to&nbsp;deal&nbsp;with&nbsp;an&nbsp;unaligned</div>
889       <div class="lineNone">000862| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;target&nbsp;buffer,&nbsp;then&nbsp;call&nbsp;add_bit&nbsp;for&nbsp;the&nbsp;remaining&nbsp;&lt;&nbsp;8&nbsp;bits.</div>
890       <div class="lineNone">000863| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</div>
891       <div class="lineNone">000864| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;XXX&nbsp;This&nbsp;is&nbsp;going&nbsp;to&nbsp;be&nbsp;dog-slow.</div>
892       <div class="lineNone">000865| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*)</div>
893       <div class="lineAllVisited">000866| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[746472]*)let&nbsp;slenbytes&nbsp;=&nbsp;slen&nbsp;lsr&nbsp;3&nbsp;in</div>
894       <div class="lineAllVisited">000867| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[746472]*)for&nbsp;i&nbsp;=&nbsp;0&nbsp;to&nbsp;slenbytes-1&nbsp;do</div>
895       <div class="lineAllVisited">000868| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[5829660]*)let&nbsp;byte&nbsp;=&nbsp;Char.code&nbsp;str.[i]&nbsp;in</div>
896       <div class="lineAllVisited">000869| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[5829660]*)add_byte&nbsp;t&nbsp;byte</div>
897       <div class="lineNone">000870| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;done;</div>
898       <div class="lineAllVisited">000871| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[746472]*)let&nbsp;bitsleft&nbsp;=&nbsp;slen&nbsp;-&nbsp;(slenbytes&nbsp;lsl&nbsp;3)&nbsp;in</div>
899       <div class="lineAllVisited">000872| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[136479]*)if&nbsp;bitsleft&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
900       <div class="lineAllVisited">000873| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[609993]*)let&nbsp;c&nbsp;=&nbsp;Char.code&nbsp;str.[slenbytes]&nbsp;in</div>
901       <div class="lineAllVisited">000874| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[609993]*)for&nbsp;i&nbsp;=&nbsp;0&nbsp;to&nbsp;bitsleft&nbsp;-&nbsp;1&nbsp;do</div>
902       <div class="lineAllVisited">000875| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2423817]*)let&nbsp;bit&nbsp;=&nbsp;c&nbsp;land&nbsp;(0x80&nbsp;lsr&nbsp;i)&nbsp;&lt;&gt;&nbsp;0&nbsp;in</div>
903       <div class="lineAllVisited">000876| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[2423817]*)add_bit&nbsp;t&nbsp;bit</div>
904       <div class="lineNone">000877| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;done</div>
905       <div class="lineNone">000878| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</div>
906       <div class="lineNone">000879| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);</div>
907       <div class="lineNone">000880| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
908       <div class="lineNone">000881| end</div>
909       <div class="lineNone">000882| &nbsp;</div>
910       <div class="lineNone">000883| (*&nbsp;Construct&nbsp;a&nbsp;single&nbsp;bit.&nbsp;*)</div>
911       <div class="lineNone">000884| let&nbsp;construct_bit&nbsp;buf&nbsp;b&nbsp;_&nbsp;_&nbsp;=</div>
912       <div class="lineAllUnvisited">000885| &nbsp;&nbsp;(*[0]*)Buffer.add_bit&nbsp;buf&nbsp;b</div>
913       <div class="lineNone">000886| &nbsp;</div>
914       <div class="lineNone">000887| (*&nbsp;Construct&nbsp;a&nbsp;field,&nbsp;flen&nbsp;=&nbsp;[2..8].&nbsp;*)</div>
915       <div class="lineNone">000888| let&nbsp;construct_char_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;exn&nbsp;=</div>
916       <div class="lineAllVisited">000889| &nbsp;&nbsp;(*[1203570]*)let&nbsp;max_val&nbsp;=&nbsp;1&nbsp;lsl&nbsp;flen&nbsp;in</div>
917       <div class="lineMixed">000890| &nbsp;&nbsp;(*[1203570]*)if&nbsp;(*[1203570]*)v&nbsp;&lt;&nbsp;0&nbsp;||&nbsp;(*[1203570]*)v&nbsp;&gt;=&nbsp;max_val&nbsp;then&nbsp;(*[0]*)raise&nbsp;exn;</div>
918       <div class="lineAllVisited">000891| &nbsp;&nbsp;(*[1203570]*)if&nbsp;flen&nbsp;=&nbsp;8&nbsp;then</div>
919       <div class="lineAllVisited">000892| &nbsp;&nbsp;&nbsp;&nbsp;(*[1203570]*)Buffer.add_byte&nbsp;buf&nbsp;v</div>
920       <div class="lineNone">000893| &nbsp;&nbsp;else</div>
921       <div class="lineAllUnvisited">000894| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)Buffer._add_bits&nbsp;buf&nbsp;v&nbsp;flen</div>
922       <div class="lineNone">000895| &nbsp;</div>
923       <div class="lineNone">000896| (*&nbsp;Construct&nbsp;a&nbsp;field&nbsp;of&nbsp;up&nbsp;to&nbsp;31&nbsp;bits.&nbsp;*)</div>
924       <div class="lineNone">000897| let&nbsp;construct_int_be_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;exn&nbsp;=</div>
925       <div class="lineNone">000898| &nbsp;&nbsp;(*&nbsp;Check&nbsp;value&nbsp;is&nbsp;within&nbsp;range.&nbsp;*)</div>
926       <div class="lineMixed">000899| &nbsp;&nbsp;(*[2]*)if&nbsp;not&nbsp;(I.range_unsigned&nbsp;v&nbsp;flen)&nbsp;then&nbsp;(*[0]*)raise&nbsp;exn;</div>
927       <div class="lineNone">000900| &nbsp;&nbsp;(*&nbsp;Add&nbsp;the&nbsp;bytes.&nbsp;*)</div>
928       <div class="lineAllVisited">000901| &nbsp;&nbsp;(*[2]*)I.map_bytes_be&nbsp;(Buffer._add_bits&nbsp;buf)&nbsp;(Buffer.add_byte&nbsp;buf)&nbsp;v&nbsp;flen</div>
929       <div class="lineNone">000902| &nbsp;</div>
930       <div class="lineNone">000903| (*&nbsp;Construct&nbsp;a&nbsp;field&nbsp;of&nbsp;up&nbsp;to&nbsp;31&nbsp;bits.&nbsp;*)</div>
931       <div class="lineNone">000904| let&nbsp;construct_int_le_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;exn&nbsp;=</div>
932       <div class="lineNone">000905| &nbsp;&nbsp;(*&nbsp;Check&nbsp;value&nbsp;is&nbsp;within&nbsp;range.&nbsp;*)</div>
933       <div class="lineAllUnvisited">000906| &nbsp;&nbsp;(*[0]*)if&nbsp;not&nbsp;(I.range_unsigned&nbsp;v&nbsp;flen)&nbsp;then&nbsp;(*[0]*)raise&nbsp;exn;</div>
934       <div class="lineNone">000907| &nbsp;&nbsp;(*&nbsp;Add&nbsp;the&nbsp;bytes.&nbsp;*)</div>
935       <div class="lineAllUnvisited">000908| &nbsp;&nbsp;(*[0]*)I.map_bytes_le&nbsp;(Buffer._add_bits&nbsp;buf)&nbsp;(Buffer.add_byte&nbsp;buf)&nbsp;v&nbsp;flen</div>
936       <div class="lineNone">000909| &nbsp;</div>
937       <div class="lineNone">000910| let&nbsp;construct_int_ne_unsigned&nbsp;=</div>
938       <div class="lineAllVisited">000911| &nbsp;&nbsp;(*[28]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
939       <div class="lineAllUnvisited">000912| &nbsp;&nbsp;then&nbsp;(*[0]*)construct_int_be_unsigned</div>
940       <div class="lineAllVisited">000913| &nbsp;&nbsp;else&nbsp;(*[28]*)construct_int_le_unsigned</div>
941       <div class="lineNone">000914| &nbsp;</div>
942       <div class="lineNone">000915| let&nbsp;construct_int_ee_unsigned&nbsp;=&nbsp;function</div>
943       <div class="lineAllUnvisited">000916| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[0]*)construct_int_be_unsigned</div>
944       <div class="lineAllUnvisited">000917| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*[0]*)construct_int_le_unsigned</div>
945       <div class="lineAllUnvisited">000918| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[0]*)construct_int_ne_unsigned</div>
946       <div class="lineNone">000919| &nbsp;</div>
947       <div class="lineNone">000920| (*&nbsp;Construct&nbsp;a&nbsp;field&nbsp;of&nbsp;exactly&nbsp;32&nbsp;bits.&nbsp;*)</div>
948       <div class="lineNone">000921| let&nbsp;construct_int32_be_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;_&nbsp;=</div>
949       <div class="lineAllVisited">000922| &nbsp;&nbsp;(*[6]*)Buffer.add_byte&nbsp;buf</div>
950       <div class="lineNone">000923| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;24));</div>
951       <div class="lineAllVisited">000924| &nbsp;&nbsp;(*[6]*)Buffer.add_byte&nbsp;buf</div>
952       <div class="lineNone">000925| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;((Int32.logand&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;16)&nbsp;0xff_l)));</div>
953       <div class="lineAllVisited">000926| &nbsp;&nbsp;(*[6]*)Buffer.add_byte&nbsp;buf</div>
954       <div class="lineAllVisited">000927| &nbsp;&nbsp;&nbsp;&nbsp;(*[6]*)(Int32.to_int&nbsp;((Int32.logand&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;8)&nbsp;0xff_l)));</div>
955       <div class="lineAllVisited">000928| &nbsp;&nbsp;(*[6]*)Buffer.add_byte&nbsp;buf</div>
956       <div class="lineNone">000929| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;(Int32.logand&nbsp;v&nbsp;0xff_l))</div>
957       <div class="lineNone">000930| &nbsp;</div>
958       <div class="lineNone">000931| let&nbsp;construct_int32_le_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;_&nbsp;=</div>
959       <div class="lineAllVisited">000932| &nbsp;&nbsp;(*[12]*)Buffer.add_byte&nbsp;buf</div>
960       <div class="lineNone">000933| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;(Int32.logand&nbsp;v&nbsp;0xff_l));</div>
961       <div class="lineAllVisited">000934| &nbsp;&nbsp;(*[12]*)Buffer.add_byte&nbsp;buf</div>
962       <div class="lineNone">000935| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;((Int32.logand&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;8)&nbsp;0xff_l)));</div>
963       <div class="lineAllVisited">000936| &nbsp;&nbsp;(*[12]*)Buffer.add_byte&nbsp;buf</div>
964       <div class="lineAllVisited">000937| &nbsp;&nbsp;&nbsp;&nbsp;(*[12]*)(Int32.to_int&nbsp;((Int32.logand&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;16)&nbsp;0xff_l)));</div>
965       <div class="lineAllVisited">000938| &nbsp;&nbsp;(*[12]*)Buffer.add_byte&nbsp;buf</div>
966       <div class="lineNone">000939| &nbsp;&nbsp;&nbsp;&nbsp;(Int32.to_int&nbsp;(Int32.shift_right_logical&nbsp;v&nbsp;24))</div>
967       <div class="lineNone">000940| &nbsp;</div>
968       <div class="lineNone">000941| let&nbsp;construct_int32_ne_unsigned&nbsp;=</div>
969       <div class="lineAllVisited">000942| &nbsp;&nbsp;(*[28]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
970       <div class="lineAllUnvisited">000943| &nbsp;&nbsp;then&nbsp;(*[0]*)construct_int32_be_unsigned</div>
971       <div class="lineAllVisited">000944| &nbsp;&nbsp;else&nbsp;(*[28]*)construct_int32_le_unsigned</div>
972       <div class="lineNone">000945| &nbsp;</div>
973       <div class="lineNone">000946| let&nbsp;construct_int32_ee_unsigned&nbsp;=&nbsp;function</div>
974       <div class="lineAllVisited">000947| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[6]*)construct_int32_be_unsigned</div>
975       <div class="lineAllVisited">000948| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*[6]*)construct_int32_le_unsigned</div>
976       <div class="lineAllVisited">000949| &nbsp;&nbsp;|&nbsp;NativeEndian&nbsp;-&gt;&nbsp;(*[6]*)construct_int32_ne_unsigned</div>
977       <div class="lineNone">000950| &nbsp;</div>
978       <div class="lineNone">000951| (*&nbsp;Construct&nbsp;a&nbsp;field&nbsp;of&nbsp;up&nbsp;to&nbsp;64&nbsp;bits.&nbsp;*)</div>
979       <div class="lineNone">000952| let&nbsp;construct_int64_be_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;exn&nbsp;=</div>
980       <div class="lineNone">000953| &nbsp;&nbsp;(*&nbsp;Check&nbsp;value&nbsp;is&nbsp;within&nbsp;range.&nbsp;*)</div>
981       <div class="lineMixed">000954| &nbsp;&nbsp;(*[351850]*)if&nbsp;not&nbsp;(I64.range_unsigned&nbsp;v&nbsp;flen)&nbsp;then&nbsp;(*[0]*)raise&nbsp;exn;</div>
982       <div class="lineNone">000955| &nbsp;&nbsp;(*&nbsp;Add&nbsp;the&nbsp;bytes.&nbsp;*)</div>
983       <div class="lineAllVisited">000956| &nbsp;&nbsp;(*[351850]*)I64.map_bytes_be&nbsp;(Buffer._add_bits&nbsp;buf)&nbsp;(Buffer.add_byte&nbsp;buf)&nbsp;v&nbsp;flen</div>
984       <div class="lineNone">000957| &nbsp;</div>
985       <div class="lineNone">000958| (*&nbsp;Construct&nbsp;a&nbsp;field&nbsp;of&nbsp;up&nbsp;to&nbsp;64&nbsp;bits.&nbsp;*)</div>
986       <div class="lineNone">000959| let&nbsp;construct_int64_le_unsigned&nbsp;buf&nbsp;v&nbsp;flen&nbsp;exn&nbsp;=</div>
987       <div class="lineNone">000960| &nbsp;&nbsp;(*&nbsp;Check&nbsp;value&nbsp;is&nbsp;within&nbsp;range.&nbsp;*)</div>
988       <div class="lineAllUnvisited">000961| &nbsp;&nbsp;(*[0]*)if&nbsp;not&nbsp;(I64.range_unsigned&nbsp;v&nbsp;flen)&nbsp;then&nbsp;(*[0]*)raise&nbsp;exn;</div>
989       <div class="lineNone">000962| &nbsp;&nbsp;(*&nbsp;Add&nbsp;the&nbsp;bytes.&nbsp;*)</div>
990       <div class="lineAllUnvisited">000963| &nbsp;&nbsp;(*[0]*)I64.map_bytes_le&nbsp;(Buffer._add_bits&nbsp;buf)&nbsp;(Buffer.add_byte&nbsp;buf)&nbsp;v&nbsp;flen</div>
991       <div class="lineNone">000964| &nbsp;</div>
992       <div class="lineNone">000965| let&nbsp;construct_int64_ne_unsigned&nbsp;=</div>
993       <div class="lineAllVisited">000966| &nbsp;&nbsp;(*[28]*)if&nbsp;nativeendian&nbsp;=&nbsp;BigEndian</div>
994       <div class="lineAllUnvisited">000967| &nbsp;&nbsp;then&nbsp;(*[0]*)construct_int64_be_unsigned</div>
995       <div class="lineNone">000968| &nbsp;&nbsp;else&nbsp;(*construct_int64_le_unsigned*)</div>
996       <div class="lineAllUnvisited">000969| &nbsp;&nbsp;&nbsp;&nbsp;fun&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;-&gt;&nbsp;(*[0]*)failwith&nbsp;&quot;construct_int64_le_unsigned&quot;</div>
997       <div class="lineNone">000970| &nbsp;</div>
998       <div class="lineNone">000971| let&nbsp;construct_int64_ee_unsigned&nbsp;=&nbsp;function</div>
999       <div class="lineAllUnvisited">000972| &nbsp;&nbsp;|&nbsp;BigEndian&nbsp;-&gt;&nbsp;(*[0]*)construct_int64_be_unsigned</div>
1000       <div class="lineNone">000973| &nbsp;&nbsp;|&nbsp;LittleEndian&nbsp;-&gt;&nbsp;(*construct_int64_le_unsigned*)</div>
1001       <div class="lineAllUnvisited">000974| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(fun&nbsp;_&nbsp;_&nbsp;_&nbsp;_&nbsp;-&gt;&nbsp;(*[0]*)failwith&nbsp;&quot;construct_int64_le_unsigned&quot;)</div>
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;(*[1197537]*)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;(*[1197537]*)let&nbsp;blen&nbsp;=&nbsp;min&nbsp;blen&nbsp;len&nbsp;in</div>
1018       <div class="lineAllVisited">000991| &nbsp;&nbsp;(*[1197537]*)let&nbsp;rec&nbsp;loop&nbsp;off&nbsp;len&nbsp;blen&nbsp;=</div>
1019       <div class="lineAllVisited">000992| &nbsp;&nbsp;&nbsp;&nbsp;(*[1197537]*)if&nbsp;blen&nbsp;=&nbsp;0&nbsp;then&nbsp;((*[1197537]*)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;(*[1197537]*)let&nbsp;off,&nbsp;len&nbsp;=&nbsp;loop&nbsp;off&nbsp;len&nbsp;blen&nbsp;in</div>
1028       <div class="lineAllVisited">001001| &nbsp;&nbsp;(*[1197537]*)assert&nbsp;((*[1197537]*)len&nbsp;=&nbsp;0&nbsp;||&nbsp;(off&nbsp;(*[1174272]*)land&nbsp;7)&nbsp;=&nbsp;0);</div>
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;(*[1197537]*)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;(*[1197537]*)if&nbsp;off&nbsp;=&nbsp;0&nbsp;then&nbsp;(*[1197537]*)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;(*[1197537]*)Buffer.add_bits&nbsp;buf&nbsp;data&nbsp;len</div>
1038       <div class="lineNone">001011| &nbsp;</div>
1039       <div class="lineNone">001012| (*----------------------------------------------------------------------*)</div>
1040       <div class="lineNone">001013| (*&nbsp;Extract&nbsp;a&nbsp;string&nbsp;from&nbsp;a&nbsp;bitstring.&nbsp;*)</div>
1041       <div class="lineNone">001014| &nbsp;</div>
1042       <div class="lineNone">001015| let&nbsp;string_of_bitstring&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;=</div>
1043       <div class="lineAllVisited">001016| &nbsp;&nbsp;(*[63963]*)if&nbsp;off&nbsp;(*[63963]*)land&nbsp;7&nbsp;=&nbsp;0&nbsp;&amp;&amp;&nbsp;len&nbsp;(*[8535]*)land&nbsp;7&nbsp;=&nbsp;0&nbsp;then</div>
1044       <div class="lineNone">001017| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Easy&nbsp;case:&nbsp;everything&nbsp;is&nbsp;byte-aligned.&nbsp;*)</div>
1045       <div class="lineAllVisited">001018| &nbsp;&nbsp;&nbsp;&nbsp;(*[8022]*)String.sub&nbsp;data&nbsp;(off&nbsp;lsr&nbsp;3)&nbsp;(len&nbsp;lsr&nbsp;3)</div>
1046       <div class="lineNone">001019| &nbsp;&nbsp;else&nbsp;(</div>
1047       <div class="lineNone">001020| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Bit-twiddling&nbsp;case.&nbsp;*)</div>
1048       <div class="lineAllVisited">001021| &nbsp;&nbsp;&nbsp;&nbsp;(*[55941]*)let&nbsp;strlen&nbsp;=&nbsp;(len&nbsp;+&nbsp;7)&nbsp;lsr&nbsp;3&nbsp;in</div>
1049       <div class="lineAllVisited">001022| &nbsp;&nbsp;&nbsp;&nbsp;(*[55941]*)let&nbsp;str&nbsp;=&nbsp;String.make&nbsp;strlen&nbsp;'\000'&nbsp;in</div>
1050       <div class="lineAllVisited">001023| &nbsp;&nbsp;&nbsp;&nbsp;(*[55941]*)let&nbsp;rec&nbsp;loop&nbsp;data&nbsp;off&nbsp;len&nbsp;i&nbsp;=</div>
1051       <div class="lineAllVisited">001024| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[305313]*)if&nbsp;len&nbsp;&gt;=&nbsp;8&nbsp;then&nbsp;(</div>
1052       <div class="lineAllVisited">001025| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[249372]*)let&nbsp;c&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;8</div>
1053       <div class="lineNone">001026| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;and&nbsp;off&nbsp;=&nbsp;off&nbsp;+&nbsp;8&nbsp;and&nbsp;len&nbsp;=&nbsp;len&nbsp;-&nbsp;8&nbsp;in</div>
1054       <div class="lineAllVisited">001027| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[249372]*)str.[i]&nbsp;(*[249372]*)&lt;-&nbsp;Char.chr&nbsp;c;</div>
1055       <div class="lineAllVisited">001028| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[249372]*)loop&nbsp;data&nbsp;off&nbsp;len&nbsp;(i+1)</div>
1056       <div class="lineAllVisited">001029| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;else&nbsp;(*[52179]*)if&nbsp;len&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
1057       <div class="lineAllVisited">001030| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[3762]*)let&nbsp;c&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;off&nbsp;len&nbsp;len&nbsp;in</div>
1058       <div class="lineAllVisited">001031| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[3762]*)str.[i]&nbsp;&lt;-&nbsp;Char.chr&nbsp;(c&nbsp;lsl&nbsp;(8-len))</div>
1059       <div class="lineNone">001032| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)</div>
1060       <div class="lineNone">001033| &nbsp;&nbsp;&nbsp;&nbsp;in</div>
1061       <div class="lineAllVisited">001034| &nbsp;&nbsp;&nbsp;&nbsp;(*[55941]*)loop&nbsp;data&nbsp;off&nbsp;len&nbsp;(*[55941]*)0;</div>
1062       <div class="lineAllVisited">001035| &nbsp;&nbsp;&nbsp;&nbsp;(*[55941]*)str</div>
1063       <div class="lineNone">001036| &nbsp;&nbsp;)</div>
1064       <div class="lineNone">001037| &nbsp;</div>
1065       <div class="lineNone">001038| (*&nbsp;To&nbsp;channel.&nbsp;*)</div>
1066       <div class="lineNone">001039| &nbsp;</div>
1067       <div class="lineNone">001040| let&nbsp;bitstring_to_chan&nbsp;((data,&nbsp;off,&nbsp;len)&nbsp;as&nbsp;bits)&nbsp;chan&nbsp;=</div>
1068       <div class="lineNone">001041| &nbsp;&nbsp;(*&nbsp;Fail&nbsp;if&nbsp;the&nbsp;bitstring&nbsp;length&nbsp;isn't&nbsp;a&nbsp;multiple&nbsp;of&nbsp;8.&nbsp;*)</div>
1069       <div class="lineAllUnvisited">001042| &nbsp;&nbsp;(*[0]*)if&nbsp;len&nbsp;land&nbsp;7&nbsp;&lt;&gt;&nbsp;0&nbsp;then&nbsp;(*[0]*)invalid_arg&nbsp;&quot;bitstring_to_chan&quot;;</div>
1070       <div class="lineNone">001043| &nbsp;</div>
1071       <div class="lineAllUnvisited">001044| &nbsp;&nbsp;(*[0]*)if&nbsp;off&nbsp;land&nbsp;7&nbsp;=&nbsp;0&nbsp;then</div>
1072       <div class="lineNone">001045| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Easy&nbsp;case:&nbsp;string&nbsp;is&nbsp;byte-aligned.&nbsp;*)</div>
1073       <div class="lineAllUnvisited">001046| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)output&nbsp;chan&nbsp;data&nbsp;(off&nbsp;lsr&nbsp;3)&nbsp;(len&nbsp;lsr&nbsp;3)</div>
1074       <div class="lineNone">001047| &nbsp;&nbsp;else&nbsp;(</div>
1075       <div class="lineNone">001048| &nbsp;&nbsp;&nbsp;&nbsp;(*&nbsp;Bit-twiddling&nbsp;case:&nbsp;reuse&nbsp;string_of_bitstring&nbsp;*)</div>
1076       <div class="lineAllUnvisited">001049| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;str&nbsp;=&nbsp;string_of_bitstring&nbsp;bits&nbsp;in</div>
1077       <div class="lineAllUnvisited">001050| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)output_string&nbsp;chan&nbsp;str</div>
1078       <div class="lineNone">001051| &nbsp;&nbsp;)</div>
1079       <div class="lineNone">001052| &nbsp;</div>
1080       <div class="lineNone">001053| let&nbsp;bitstring_to_file&nbsp;bits&nbsp;filename&nbsp;=</div>
1081       <div class="lineAllUnvisited">001054| &nbsp;&nbsp;(*[0]*)let&nbsp;chan&nbsp;=&nbsp;open_out_bin&nbsp;filename&nbsp;in</div>
1082       <div class="lineAllUnvisited">001055| &nbsp;&nbsp;(*[0]*)try</div>
1083       <div class="lineAllUnvisited">001056| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)bitstring_to_chan&nbsp;bits&nbsp;chan;</div>
1084       <div class="lineAllUnvisited">001057| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)close_out&nbsp;chan</div>
1085       <div class="lineNone">001058| &nbsp;&nbsp;with&nbsp;exn&nbsp;-&gt;</div>
1086       <div class="lineAllUnvisited">001059| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)close_out&nbsp;(*[0]*)chan;</div>
1087       <div class="lineAllUnvisited">001060| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)raise&nbsp;exn</div>
1088       <div class="lineNone">001061| &nbsp;</div>
1089       <div class="lineNone">001062| (*----------------------------------------------------------------------*)</div>
1090       <div class="lineNone">001063| (*&nbsp;Display&nbsp;functions.&nbsp;*)</div>
1091       <div class="lineNone">001064| &nbsp;</div>
1092       <div class="lineNone">001065| let&nbsp;isprint&nbsp;c&nbsp;=</div>
1093       <div class="lineAllUnvisited">001066| &nbsp;&nbsp;(*[0]*)let&nbsp;c&nbsp;=&nbsp;Char.code&nbsp;c&nbsp;in</div>
1094       <div class="lineAllUnvisited">001067| &nbsp;&nbsp;(*[0]*)c&nbsp;(*[0]*)&gt;=&nbsp;32&nbsp;&amp;&amp;&nbsp;(*[0]*)c&nbsp;&lt;&nbsp;127</div>
1095       <div class="lineNone">001068| &nbsp;</div>
1096       <div class="lineNone">001069| let&nbsp;hexdump_bitstring&nbsp;chan&nbsp;(data,&nbsp;off,&nbsp;len)&nbsp;=</div>
1097       <div class="lineAllUnvisited">001070| &nbsp;&nbsp;(*[0]*)let&nbsp;count&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
1098       <div class="lineAllUnvisited">001071| &nbsp;&nbsp;(*[0]*)let&nbsp;off&nbsp;=&nbsp;ref&nbsp;off&nbsp;in</div>
1099       <div class="lineAllUnvisited">001072| &nbsp;&nbsp;(*[0]*)let&nbsp;len&nbsp;=&nbsp;ref&nbsp;len&nbsp;in</div>
1100       <div class="lineAllUnvisited">001073| &nbsp;&nbsp;(*[0]*)let&nbsp;linelen&nbsp;=&nbsp;ref&nbsp;0&nbsp;in</div>
1101       <div class="lineAllUnvisited">001074| &nbsp;&nbsp;(*[0]*)let&nbsp;linechars&nbsp;=&nbsp;String.make&nbsp;16&nbsp;'&nbsp;'&nbsp;in</div>
1102       <div class="lineNone">001075| &nbsp;</div>
1103       <div class="lineAllUnvisited">001076| &nbsp;&nbsp;(*[0]*)fprintf&nbsp;chan&nbsp;&quot;00000000&nbsp;&nbsp;&quot;;</div>
1104       <div class="lineNone">001077| &nbsp;</div>
1105       <div class="lineAllUnvisited">001078| &nbsp;&nbsp;(*[0]*)while&nbsp;!len&nbsp;&gt;&nbsp;0&nbsp;do</div>
1106       <div class="lineAllUnvisited">001079| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;bits&nbsp;=&nbsp;min&nbsp;!len&nbsp;8&nbsp;in</div>
1107       <div class="lineAllUnvisited">001080| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;byte&nbsp;=&nbsp;extract_char_unsigned&nbsp;data&nbsp;!off&nbsp;!len&nbsp;bits&nbsp;in</div>
1108       <div class="lineAllUnvisited">001081| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)off&nbsp;:=&nbsp;!off&nbsp;+&nbsp;bits;&nbsp;(*[0]*)len&nbsp;(*[0]*):=&nbsp;!len&nbsp;-&nbsp;bits;</div>
1109       <div class="lineNone">001082| &nbsp;</div>
1110       <div class="lineAllUnvisited">001083| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;byte&nbsp;=&nbsp;byte&nbsp;lsl&nbsp;(8-bits)&nbsp;in</div>
1111       <div class="lineAllUnvisited">001084| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)fprintf&nbsp;chan&nbsp;&quot;%02x&nbsp;&quot;&nbsp;byte;</div>
1112       <div class="lineNone">001085| &nbsp;</div>
1113       <div class="lineAllUnvisited">001086| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)incr&nbsp;count;</div>
1114       <div class="lineAllUnvisited">001087| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)linechars.[!linelen]&nbsp;&lt;-</div>
1115       <div class="lineNone">001088| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;c&nbsp;=&nbsp;Char.chr&nbsp;byte&nbsp;in</div>
1116       <div class="lineAllUnvisited">001089| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;isprint&nbsp;c&nbsp;then&nbsp;(*[0]*)c&nbsp;else&nbsp;(*[0]*)'.');</div>
1117       <div class="lineAllUnvisited">001090| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)incr&nbsp;linelen;</div>
1118       <div class="lineAllUnvisited">001091| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;!linelen&nbsp;=&nbsp;8&nbsp;then&nbsp;(*[0]*)fprintf&nbsp;chan&nbsp;&quot;&nbsp;&quot;;</div>
1119       <div class="lineAllUnvisited">001092| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)if&nbsp;!linelen&nbsp;=&nbsp;16&nbsp;then&nbsp;(</div>
1120       <div class="lineAllUnvisited">001093| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)fprintf&nbsp;chan&nbsp;&quot;&nbsp;|%s|\n%08x&nbsp;&nbsp;&quot;&nbsp;linechars&nbsp;!count;</div>
1121       <div class="lineAllUnvisited">001094| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)linelen&nbsp;(*[0]*):=&nbsp;0;</div>
1122       <div class="lineAllUnvisited">001095| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)for&nbsp;i&nbsp;=&nbsp;0&nbsp;to&nbsp;15&nbsp;do&nbsp;(*[0]*)linechars.[i]&nbsp;&lt;-&nbsp;'&nbsp;'&nbsp;done</div>
1123       <div class="lineNone">001096| &nbsp;&nbsp;&nbsp;&nbsp;)</div>
1124       <div class="lineNone">001097| &nbsp;&nbsp;done;</div>
1125       <div class="lineNone">001098| &nbsp;</div>
1126       <div class="lineAllUnvisited">001099| &nbsp;&nbsp;(*[0]*)if&nbsp;!linelen&nbsp;&gt;&nbsp;0&nbsp;then&nbsp;(</div>
1127       <div class="lineAllUnvisited">001100| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)let&nbsp;skip&nbsp;=&nbsp;(16&nbsp;-&nbsp;!linelen)&nbsp;*&nbsp;3&nbsp;+&nbsp;if&nbsp;!linelen&nbsp;&lt;&nbsp;8&nbsp;then&nbsp;(*[0]*)1&nbsp;else&nbsp;(*[0]*)0&nbsp;in</div>
1128       <div class="lineAllUnvisited">001101| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)for&nbsp;i&nbsp;=&nbsp;0&nbsp;to&nbsp;skip-1&nbsp;do&nbsp;(*[0]*)fprintf&nbsp;chan&nbsp;&quot;&nbsp;&quot;&nbsp;done;</div>
1129       <div class="lineAllUnvisited">001102| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)fprintf&nbsp;chan&nbsp;&quot;&nbsp;|%s|\n%!&quot;&nbsp;linechars</div>
1130       <div class="lineNone">001103| &nbsp;&nbsp;)&nbsp;else</div>
1131       <div class="lineAllUnvisited">001104| &nbsp;&nbsp;&nbsp;&nbsp;(*[0]*)fprintf&nbsp;chan&nbsp;&quot;\n%!&quot;</div>
1132     </code>
1133     <hr class="codeSep"/>
1134     <p class="footer">Generated by <a href="http://bisect.x9c.fr">Bisect</a> on 2008-08-26 10:36:20</p>
1135   </body>
1136 </html>