AMC13
Firmwares for the different applications of the AMC13 uTCA board made at Boston University
Main Page
Design Unit List
Files
File List
All
Classes
Variables
src
TCPIP_if
EthernetCRCD32.vhd
1
--------------------------------------------------------------------------------
2
-- Copyright (C) 1999-2008 Easics NV.
3
-- This source
file
may be used
and
distributed without restriction
4
-- provided that this copyright statement
is
not
removed from the
file
5
--
and
that any derivative work contains the original copyright notice
6
--
and
the associated disclaimer.
7
--
8
-- THIS SOURCE
FILE
IS
PROVIDED "AS IS"
AND
WITHOUT ANY EXPRESS
9
--
OR
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
10
-- WARRANTIES
OF
MERCHANTIBILITY
AND
FITNESS
FOR
A PARTICULAR PURPOSE.
11
--
12
-- Purpose : synthesizable CRC
function
13
-- * polynomial: (
0
1
2
4
5
7
8
10
11
12
16
22
23
26
32
)
14
-- * data width:
8
15
--
16
-- Info : tools@easics.be
17
-- http://www.easics.com
18
--------------------------------------------------------------------------------
19
----------------------------------------------------------------------------------
20
-- Company:
21
-- Engineer:
22
--
23
-- Create Date:
13
:
20
:
34
12/01/2011
24
-- Design Name:
25
-- Module Name: EthernetCRC - Behavioral
26
-- Project Name:
27
-- Target Devices:
28
-- Tool versions:
29
-- !!!DISCLAIMER !!!DISCLAIMER !!!DISCLAIMER !!!DISCLAIMER !!!DISCLAIMER !!!DISCLAIMER !!!DISCLAIMER !!!DISCLAIMER
30
-- This module
is
provided only as an example, no correctness
or
any usefullness
is
implied.
31
--
Use
of
it
is
at users' own risk.
32
-- Do
not
remove this disclaimer.
33
-- !!!DISCLAIMER !!!DISCLAIMER !!!DISCLAIMER !!!DISCLAIMER !!!DISCLAIMER !!!DISCLAIMER !!!DISCLAIMER !!!DISCLAIMER
34
-- Description: Ethernet CRC calculation, derived from PCK_CRC32_D8 generated using easics.com tools
35
--
36
-- Dependencies:
37
--
38
-- Revision:
39
-- Revision
0
.
01
-
File
Created
40
-- Additional Comments:
41
--
42
----------------------------------------------------------------------------------
43
library
IEEE
;
44
use
IEEE.STD_LOGIC_1164.
ALL
;
45
46
-- Uncomment the following
library
declaration
if
using
47
-- arithmetic functions
with
Signed
or
Unsigned
values
48
--use IEEE.NUMERIC_STD.
ALL
;
49
50
-- Uncomment the following
library
declaration
if
instantiating
51
-- any Xilinx primitives
in
this code.
52
--library UNISIM;
53
--use UNISIM.VComponents.
all
;
54
55
entity
EthernetCRCD32
is
56
Port
(
clk
:
in
STD_LOGIC
;
57
init
:
in
STD_LOGIC
;
58
ce
:
in
STD_LOGIC
;
59
d
:
in
STD_LOGIC_VECTOR
(
31
downto
0
)
;
60
byte_cnt
:
in
STD_LOGIC_VECTOR
(
1
downto
0
)
;
61
crc
:
out
STD_LOGIC_VECTOR
(
31
downto
0
)
;
62
bad_crc
:
out
STD_LOGIC
63
)
;
64
end
EthernetCRCD32
;
65
66
architecture
Behavioral
of
EthernetCRCD32
is
67
constant
crc_R
:
std_logic_vector
(
31
downto
0
)
:=
x
"c704dd7b"
;
68
signal
c
:
std_logic_vector
(
31
downto
0
)
:=
(
others
=
>
'
0
'
)
;
69
begin
70
process
(c,d)
71
begin
72
for
i
in
0
to
31
loop
73
crc
(
i
)
<=
not
c
(
31-
i
)
;
74
end
loop
;
75
end
process
;
76
bad_crc
<=
'
0
'
when
c
=
crc_R
else
'
1
'
;
77
process
(clk)
78
begin
79
if
(
clk
'
event
and
clk
=
'
1
'
)
then
80
if
(
init
=
'
1
'
)
then
81
c
<=
(
others
=
>
'
1
'
)
;
82
elsif
(
ce
=
'
1
'
)
then
83
case
byte_cnt
is
84
when
"01"
=
>
85
c
(
0
)
<=
d
(
7
)
xor
d
(
1
)
xor
c
(
30
)
xor
c
(
24
)
;
86
c
(
1
)
<=
d
(
7
)
xor
d
(
6
)
xor
d
(
1
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
30
)
xor
87
c
(
25
)
xor
c
(
24
)
;
88
c
(
2
)
<=
d
(
7
)
xor
d
(
6
)
xor
d
(
5
)
xor
d
(
1
)
xor
d
(
0
)
xor
c
(
31
)
xor
89
c
(
30
)
xor
c
(
26
)
xor
c
(
25
)
xor
c
(
24
)
;
90
c
(
3
)
<=
d
(
6
)
xor
d
(
5
)
xor
d
(
4
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
27
)
xor
91
c
(
26
)
xor
c
(
25
)
;
92
c
(
4
)
<=
d
(
7
)
xor
d
(
5
)
xor
d
(
4
)
xor
d
(
3
)
xor
d
(
1
)
xor
c
(
30
)
xor
93
c
(
28
)
xor
c
(
27
)
xor
c
(
26
)
xor
c
(
24
)
;
94
c
(
5
)
<=
d
(
7
)
xor
d
(
6
)
xor
d
(
4
)
xor
d
(
3
)
xor
d
(
2
)
xor
d
(
1
)
xor
95
d
(
0
)
xor
c
(
31
)
xor
c
(
30
)
xor
c
(
29
)
xor
c
(
28
)
xor
c
(
27
)
xor
96
c
(
25
)
xor
c
(
24
)
;
97
c
(
6
)
<=
d
(
6
)
xor
d
(
5
)
xor
d
(
3
)
xor
d
(
2
)
xor
d
(
1
)
xor
d
(
0
)
xor
98
c
(
31
)
xor
c
(
30
)
xor
c
(
29
)
xor
c
(
28
)
xor
c
(
26
)
xor
c
(
25
)
;
99
c
(
7
)
<=
d
(
7
)
xor
d
(
5
)
xor
d
(
4
)
xor
d
(
2
)
xor
d
(
0
)
xor
c
(
31
)
xor
100
c
(
29
)
xor
c
(
27
)
xor
c
(
26
)
xor
c
(
24
)
;
101
c
(
8
)
<=
d
(
7
)
xor
d
(
6
)
xor
d
(
4
)
xor
d
(
3
)
xor
c
(
28
)
xor
c
(
27
)
xor
102
c
(
25
)
xor
c
(
24
)
xor
c
(
0
)
;
103
c
(
9
)
<=
d
(
6
)
xor
d
(
5
)
xor
d
(
3
)
xor
d
(
2
)
xor
c
(
29
)
xor
c
(
28
)
xor
104
c
(
26
)
xor
c
(
25
)
xor
c
(
1
)
;
105
c
(
10
)
<=
d
(
7
)
xor
d
(
5
)
xor
d
(
4
)
xor
d
(
2
)
xor
c
(
29
)
xor
c
(
27
)
xor
106
c
(
26
)
xor
c
(
24
)
xor
c
(
2
)
;
107
c
(
11
)
<=
d
(
7
)
xor
d
(
6
)
xor
d
(
4
)
xor
d
(
3
)
xor
c
(
28
)
xor
c
(
27
)
xor
108
c
(
25
)
xor
c
(
24
)
xor
c
(
3
)
;
109
c
(
12
)
<=
d
(
7
)
xor
d
(
6
)
xor
d
(
5
)
xor
d
(
3
)
xor
d
(
2
)
xor
d
(
1
)
xor
110
c
(
30
)
xor
c
(
29
)
xor
c
(
28
)
xor
c
(
26
)
xor
c
(
25
)
xor
c
(
24
)
xor
111
c
(
4
)
;
112
c
(
13
)
<=
d
(
6
)
xor
d
(
5
)
xor
d
(
4
)
xor
d
(
2
)
xor
d
(
1
)
xor
d
(
0
)
xor
113
c
(
31
)
xor
c
(
30
)
xor
c
(
29
)
xor
c
(
27
)
xor
c
(
26
)
xor
c
(
25
)
xor
114
c
(
5
)
;
115
c
(
14
)
<=
d
(
5
)
xor
d
(
4
)
xor
d
(
3
)
xor
d
(
1
)
xor
d
(
0
)
xor
c
(
31
)
xor
116
c
(
30
)
xor
c
(
28
)
xor
c
(
27
)
xor
c
(
26
)
xor
c
(
6
)
;
117
c
(
15
)
<=
d
(
4
)
xor
d
(
3
)
xor
d
(
2
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
29
)
xor
118
c
(
28
)
xor
c
(
27
)
xor
c
(
7
)
;
119
c
(
16
)
<=
d
(
7
)
xor
d
(
3
)
xor
d
(
2
)
xor
c
(
29
)
xor
c
(
28
)
xor
c
(
24
)
xor
120
c
(
8
)
;
121
c
(
17
)
<=
d
(
6
)
xor
d
(
2
)
xor
d
(
1
)
xor
c
(
30
)
xor
c
(
29
)
xor
c
(
25
)
xor
122
c
(
9
)
;
123
c
(
18
)
<=
d
(
5
)
xor
d
(
1
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
30
)
xor
c
(
26
)
xor
124
c
(
10
)
;
125
c
(
19
)
<=
d
(
4
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
27
)
xor
c
(
11
)
;
126
c
(
20
)
<=
d
(
3
)
xor
c
(
28
)
xor
c
(
12
)
;
127
c
(
21
)
<=
d
(
2
)
xor
c
(
29
)
xor
c
(
13
)
;
128
c
(
22
)
<=
d
(
7
)
xor
c
(
24
)
xor
c
(
14
)
;
129
c
(
23
)
<=
d
(
7
)
xor
d
(
6
)
xor
d
(
1
)
xor
c
(
30
)
xor
c
(
25
)
xor
c
(
24
)
xor
130
c
(
15
)
;
131
c
(
24
)
<=
d
(
6
)
xor
d
(
5
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
26
)
xor
c
(
25
)
xor
132
c
(
16
)
;
133
c
(
25
)
<=
d
(
5
)
xor
d
(
4
)
xor
c
(
27
)
xor
c
(
26
)
xor
c
(
17
)
;
134
c
(
26
)
<=
d
(
7
)
xor
d
(
4
)
xor
d
(
3
)
xor
d
(
1
)
xor
c
(
30
)
xor
c
(
28
)
xor
135
c
(
27
)
xor
c
(
24
)
xor
c
(
18
)
;
136
c
(
27
)
<=
d
(
6
)
xor
d
(
3
)
xor
d
(
2
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
29
)
xor
137
c
(
28
)
xor
c
(
25
)
xor
c
(
19
)
;
138
c
(
28
)
<=
d
(
5
)
xor
d
(
2
)
xor
d
(
1
)
xor
c
(
30
)
xor
c
(
29
)
xor
c
(
26
)
xor
139
c
(
20
)
;
140
c
(
29
)
<=
d
(
4
)
xor
d
(
1
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
30
)
xor
c
(
27
)
xor
141
c
(
21
)
;
142
c
(
30
)
<=
d
(
3
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
28
)
xor
c
(
22
)
;
143
c
(
31
)
<=
d
(
2
)
xor
c
(
29
)
xor
c
(
23
)
;
144
when
"10"
=
>
145
c
(
0
)
<=
d
(
15
)
xor
d
(
9
)
xor
d
(
6
)
xor
d
(
5
)
xor
d
(
3
)
xor
c
(
28
)
xor
146
c
(
26
)
xor
c
(
25
)
xor
c
(
22
)
xor
c
(
16
)
;
147
c
(
1
)
<=
d
(
15
)
xor
d
(
14
)
xor
d
(
9
)
xor
d
(
8
)
xor
d
(
6
)
xor
d
(
4
)
xor
148
d
(
3
)
xor
d
(
2
)
xor
c
(
29
)
xor
c
(
28
)
xor
c
(
27
)
xor
c
(
25
)
xor
149
c
(
23
)
xor
c
(
22
)
xor
c
(
17
)
xor
c
(
16
)
;
150
c
(
2
)
<=
d
(
15
)
xor
d
(
14
)
xor
d
(
13
)
xor
d
(
9
)
xor
d
(
8
)
xor
d
(
7
)
xor
151
d
(
6
)
xor
d
(
2
)
xor
d
(
1
)
xor
c
(
30
)
xor
c
(
29
)
xor
c
(
25
)
xor
152
c
(
24
)
xor
c
(
23
)
xor
c
(
22
)
xor
c
(
18
)
xor
c
(
17
)
xor
c
(
16
)
;
153
c
(
3
)
<=
d
(
14
)
xor
d
(
13
)
xor
d
(
12
)
xor
d
(
8
)
xor
d
(
7
)
xor
d
(
6
)
xor
154
d
(
5
)
xor
d
(
1
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
30
)
xor
c
(
26
)
xor
155
c
(
25
)
xor
c
(
24
)
xor
c
(
23
)
xor
c
(
19
)
xor
c
(
18
)
xor
c
(
17
)
;
156
c
(
4
)
<=
d
(
15
)
xor
d
(
13
)
xor
d
(
12
)
xor
d
(
11
)
xor
d
(
9
)
xor
d
(
7
)
xor
157
d
(
4
)
xor
d
(
3
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
28
)
xor
c
(
27
)
xor
158
c
(
24
)
xor
c
(
22
)
xor
c
(
20
)
xor
c
(
19
)
xor
c
(
18
)
xor
c
(
16
)
;
159
c
(
5
)
<=
d
(
15
)
xor
d
(
14
)
xor
d
(
12
)
xor
d
(
11
)
xor
d
(
10
)
xor
d
(
9
)
xor
160
d
(
8
)
xor
d
(
5
)
xor
d
(
2
)
xor
c
(
29
)
xor
c
(
26
)
xor
c
(
23
)
xor
161
c
(
22
)
xor
c
(
21
)
xor
c
(
20
)
xor
c
(
19
)
xor
c
(
17
)
xor
c
(
16
)
;
162
c
(
6
)
<=
d
(
14
)
xor
d
(
13
)
xor
d
(
11
)
xor
d
(
10
)
xor
d
(
9
)
xor
d
(
8
)
xor
163
d
(
7
)
xor
d
(
4
)
xor
d
(
1
)
xor
c
(
30
)
xor
c
(
27
)
xor
c
(
24
)
xor
164
c
(
23
)
xor
c
(
22
)
xor
c
(
21
)
xor
c
(
20
)
xor
c
(
18
)
xor
c
(
17
)
;
165
c
(
7
)
<=
d
(
15
)
xor
d
(
13
)
xor
d
(
12
)
xor
d
(
10
)
xor
d
(
8
)
xor
d
(
7
)
xor
166
d
(
5
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
26
)
xor
c
(
24
)
xor
c
(
23
)
xor
167
c
(
21
)
xor
c
(
19
)
xor
c
(
18
)
xor
c
(
16
)
;
168
c
(
8
)
<=
d
(
15
)
xor
d
(
14
)
xor
d
(
12
)
xor
d
(
11
)
xor
d
(
7
)
xor
d
(
5
)
xor
169
d
(
4
)
xor
d
(
3
)
xor
c
(
28
)
xor
c
(
27
)
xor
c
(
26
)
xor
c
(
24
)
xor
170
c
(
20
)
xor
c
(
19
)
xor
c
(
17
)
xor
c
(
16
)
;
171
c
(
9
)
<=
d
(
14
)
xor
d
(
13
)
xor
d
(
11
)
xor
d
(
10
)
xor
d
(
6
)
xor
d
(
4
)
xor
172
d
(
3
)
xor
d
(
2
)
xor
c
(
29
)
xor
c
(
28
)
xor
c
(
27
)
xor
c
(
25
)
xor
173
c
(
21
)
xor
c
(
20
)
xor
c
(
18
)
xor
c
(
17
)
;
174
c
(
10
)
<=
d
(
15
)
xor
d
(
13
)
xor
d
(
12
)
xor
d
(
10
)
xor
d
(
6
)
xor
d
(
2
)
xor
175
d
(
1
)
xor
c
(
30
)
xor
c
(
29
)
xor
c
(
25
)
xor
c
(
21
)
xor
c
(
19
)
xor
176
c
(
18
)
xor
c
(
16
)
;
177
c
(
11
)
<=
d
(
15
)
xor
d
(
14
)
xor
d
(
12
)
xor
d
(
11
)
xor
d
(
6
)
xor
d
(
3
)
xor
178
d
(
1
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
30
)
xor
c
(
28
)
xor
c
(
25
)
xor
179
c
(
20
)
xor
c
(
19
)
xor
c
(
17
)
xor
c
(
16
)
;
180
c
(
12
)
<=
d
(
15
)
xor
d
(
14
)
xor
d
(
13
)
xor
d
(
11
)
xor
d
(
10
)
xor
d
(
9
)
xor
181
d
(
6
)
xor
d
(
3
)
xor
d
(
2
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
29
)
xor
182
c
(
28
)
xor
c
(
25
)
xor
c
(
22
)
xor
c
(
21
)
xor
c
(
20
)
xor
c
(
18
)
xor
183
c
(
17
)
xor
c
(
16
)
;
184
c
(
13
)
<=
d
(
14
)
xor
d
(
13
)
xor
d
(
12
)
xor
d
(
10
)
xor
d
(
9
)
xor
d
(
8
)
xor
185
d
(
5
)
xor
d
(
2
)
xor
d
(
1
)
xor
c
(
30
)
xor
c
(
29
)
xor
c
(
26
)
xor
186
c
(
23
)
xor
c
(
22
)
xor
c
(
21
)
xor
c
(
19
)
xor
c
(
18
)
xor
c
(
17
)
;
187
c
(
14
)
<=
d
(
13
)
xor
d
(
12
)
xor
d
(
11
)
xor
d
(
9
)
xor
d
(
8
)
xor
d
(
7
)
xor
188
d
(
4
)
xor
d
(
1
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
30
)
xor
c
(
27
)
xor
189
c
(
24
)
xor
c
(
23
)
xor
c
(
22
)
xor
c
(
20
)
xor
c
(
19
)
xor
c
(
18
)
;
190
c
(
15
)
<=
d
(
12
)
xor
d
(
11
)
xor
d
(
10
)
xor
d
(
8
)
xor
d
(
7
)
xor
d
(
6
)
xor
191
d
(
3
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
28
)
xor
c
(
25
)
xor
c
(
24
)
xor
192
c
(
23
)
xor
c
(
21
)
xor
c
(
20
)
xor
c
(
19
)
;
193
c
(
16
)
<=
d
(
15
)
xor
d
(
11
)
xor
d
(
10
)
xor
d
(
7
)
xor
d
(
3
)
xor
d
(
2
)
xor
194
c
(
29
)
xor
c
(
28
)
xor
c
(
24
)
xor
c
(
21
)
xor
c
(
20
)
xor
c
(
16
)
xor
195
c
(
0
)
;
196
c
(
17
)
<=
d
(
14
)
xor
d
(
10
)
xor
d
(
9
)
xor
d
(
6
)
xor
d
(
2
)
xor
d
(
1
)
xor
197
c
(
30
)
xor
c
(
29
)
xor
c
(
25
)
xor
c
(
22
)
xor
c
(
21
)
xor
c
(
17
)
xor
198
c
(
1
)
;
199
c
(
18
)
<=
d
(
13
)
xor
d
(
9
)
xor
d
(
8
)
xor
d
(
5
)
xor
d
(
1
)
xor
d
(
0
)
xor
200
c
(
31
)
xor
c
(
30
)
xor
c
(
26
)
xor
c
(
23
)
xor
c
(
22
)
xor
c
(
18
)
xor
201
c
(
2
)
;
202
c
(
19
)
<=
d
(
12
)
xor
d
(
8
)
xor
d
(
7
)
xor
d
(
4
)
xor
d
(
0
)
xor
c
(
31
)
xor
203
c
(
27
)
xor
c
(
24
)
xor
c
(
23
)
xor
c
(
19
)
xor
c
(
3
)
;
204
c
(
20
)
<=
d
(
11
)
xor
d
(
7
)
xor
d
(
6
)
xor
d
(
3
)
xor
c
(
28
)
xor
c
(
25
)
xor
205
c
(
24
)
xor
c
(
20
)
xor
c
(
4
)
;
206
c
(
21
)
<=
d
(
10
)
xor
d
(
6
)
xor
d
(
5
)
xor
d
(
2
)
xor
c
(
29
)
xor
c
(
26
)
xor
207
c
(
25
)
xor
c
(
21
)
xor
c
(
5
)
;
208
c
(
22
)
<=
d
(
15
)
xor
d
(
6
)
xor
d
(
4
)
xor
d
(
3
)
xor
d
(
1
)
xor
c
(
30
)
xor
209
c
(
28
)
xor
c
(
27
)
xor
c
(
25
)
xor
c
(
16
)
xor
c
(
6
)
;
210
c
(
23
)
<=
d
(
15
)
xor
d
(
14
)
xor
d
(
9
)
xor
d
(
6
)
xor
d
(
2
)
xor
d
(
0
)
xor
211
c
(
31
)
xor
c
(
29
)
xor
c
(
25
)
xor
c
(
22
)
xor
c
(
17
)
xor
c
(
16
)
xor
212
c
(
7
)
;
213
c
(
24
)
<=
d
(
14
)
xor
d
(
13
)
xor
d
(
8
)
xor
d
(
5
)
xor
d
(
1
)
xor
c
(
30
)
xor
214
c
(
26
)
xor
c
(
23
)
xor
c
(
18
)
xor
c
(
17
)
xor
c
(
8
)
;
215
c
(
25
)
<=
d
(
13
)
xor
d
(
12
)
xor
d
(
7
)
xor
d
(
4
)
xor
d
(
0
)
xor
c
(
31
)
xor
216
c
(
27
)
xor
c
(
24
)
xor
c
(
19
)
xor
c
(
18
)
xor
c
(
9
)
;
217
c
(
26
)
<=
d
(
15
)
xor
d
(
12
)
xor
d
(
11
)
xor
d
(
9
)
xor
d
(
5
)
xor
c
(
26
)
xor
218
c
(
22
)
xor
c
(
20
)
xor
c
(
19
)
xor
c
(
16
)
xor
c
(
10
)
;
219
c
(
27
)
<=
d
(
14
)
xor
d
(
11
)
xor
d
(
10
)
xor
d
(
8
)
xor
d
(
4
)
xor
c
(
27
)
xor
220
c
(
23
)
xor
c
(
21
)
xor
c
(
20
)
xor
c
(
17
)
xor
c
(
11
)
;
221
c
(
28
)
<=
d
(
13
)
xor
d
(
10
)
xor
d
(
9
)
xor
d
(
7
)
xor
d
(
3
)
xor
c
(
28
)
xor
222
c
(
24
)
xor
c
(
22
)
xor
c
(
21
)
xor
c
(
18
)
xor
c
(
12
)
;
223
c
(
29
)
<=
d
(
12
)
xor
d
(
9
)
xor
d
(
8
)
xor
d
(
6
)
xor
d
(
2
)
xor
c
(
29
)
xor
224
c
(
25
)
xor
c
(
23
)
xor
c
(
22
)
xor
c
(
19
)
xor
c
(
13
)
;
225
c
(
30
)
<=
d
(
11
)
xor
d
(
8
)
xor
d
(
7
)
xor
d
(
5
)
xor
d
(
1
)
xor
c
(
30
)
xor
226
c
(
26
)
xor
c
(
24
)
xor
c
(
23
)
xor
c
(
20
)
xor
c
(
14
)
;
227
c
(
31
)
<=
d
(
10
)
xor
d
(
7
)
xor
d
(
6
)
xor
d
(
4
)
xor
d
(
0
)
xor
c
(
31
)
xor
228
c
(
27
)
xor
c
(
25
)
xor
c
(
24
)
xor
c
(
21
)
xor
c
(
15
)
;
229
when
"11"
=
>
230
c
(
0
)
<=
d
(
23
)
xor
d
(
17
)
xor
d
(
14
)
xor
d
(
13
)
xor
d
(
11
)
xor
d
(
7
)
xor
231
c
(
24
)
xor
c
(
20
)
xor
c
(
18
)
xor
c
(
17
)
xor
c
(
14
)
xor
c
(
8
)
;
232
c
(
1
)
<=
d
(
23
)
xor
d
(
22
)
xor
d
(
17
)
xor
d
(
16
)
xor
d
(
14
)
xor
d
(
12
)
xor
233
d
(
11
)
xor
d
(
10
)
xor
d
(
7
)
xor
d
(
6
)
xor
c
(
25
)
xor
c
(
24
)
xor
234
c
(
21
)
xor
c
(
20
)
xor
c
(
19
)
xor
c
(
17
)
xor
c
(
15
)
xor
c
(
14
)
xor
235
c
(
9
)
xor
c
(
8
)
;
236
c
(
2
)
<=
d
(
23
)
xor
d
(
22
)
xor
d
(
21
)
xor
d
(
17
)
xor
d
(
16
)
xor
d
(
15
)
xor
237
d
(
14
)
xor
d
(
10
)
xor
d
(
9
)
xor
d
(
7
)
xor
d
(
6
)
xor
d
(
5
)
xor
238
c
(
26
)
xor
c
(
25
)
xor
c
(
24
)
xor
c
(
22
)
xor
c
(
21
)
xor
c
(
17
)
xor
239
c
(
16
)
xor
c
(
15
)
xor
c
(
14
)
xor
c
(
10
)
xor
c
(
9
)
xor
c
(
8
)
;
240
c
(
3
)
<=
d
(
22
)
xor
d
(
21
)
xor
d
(
20
)
xor
d
(
16
)
xor
d
(
15
)
xor
d
(
14
)
xor
241
d
(
13
)
xor
d
(
9
)
xor
d
(
8
)
xor
d
(
6
)
xor
d
(
5
)
xor
d
(
4
)
xor
242
c
(
27
)
xor
c
(
26
)
xor
c
(
25
)
xor
c
(
23
)
xor
c
(
22
)
xor
c
(
18
)
xor
243
c
(
17
)
xor
c
(
16
)
xor
c
(
15
)
xor
c
(
11
)
xor
c
(
10
)
xor
c
(
9
)
;
244
c
(
4
)
<=
d
(
23
)
xor
d
(
21
)
xor
d
(
20
)
xor
d
(
19
)
xor
d
(
17
)
xor
d
(
15
)
xor
245
d
(
12
)
xor
d
(
11
)
xor
d
(
8
)
xor
d
(
5
)
xor
d
(
4
)
xor
d
(
3
)
xor
246
c
(
28
)
xor
c
(
27
)
xor
c
(
26
)
xor
c
(
23
)
xor
c
(
20
)
xor
c
(
19
)
xor
247
c
(
16
)
xor
c
(
14
)
xor
c
(
12
)
xor
c
(
11
)
xor
c
(
10
)
xor
c
(
8
)
;
248
c
(
5
)
<=
d
(
23
)
xor
d
(
22
)
xor
d
(
20
)
xor
d
(
19
)
xor
d
(
18
)
xor
d
(
17
)
xor
249
d
(
16
)
xor
d
(
13
)
xor
d
(
10
)
xor
d
(
4
)
xor
d
(
3
)
xor
d
(
2
)
xor
250
c
(
29
)
xor
c
(
28
)
xor
c
(
27
)
xor
c
(
21
)
xor
c
(
18
)
xor
c
(
15
)
xor
251
c
(
14
)
xor
c
(
13
)
xor
c
(
12
)
xor
c
(
11
)
xor
c
(
9
)
xor
c
(
8
)
;
252
c
(
6
)
<=
d
(
22
)
xor
d
(
21
)
xor
d
(
19
)
xor
d
(
18
)
xor
d
(
17
)
xor
d
(
16
)
xor
253
d
(
15
)
xor
d
(
12
)
xor
d
(
9
)
xor
d
(
3
)
xor
d
(
2
)
xor
d
(
1
)
xor
254
c
(
30
)
xor
c
(
29
)
xor
c
(
28
)
xor
c
(
22
)
xor
c
(
19
)
xor
c
(
16
)
xor
255
c
(
15
)
xor
c
(
14
)
xor
c
(
13
)
xor
c
(
12
)
xor
c
(
10
)
xor
c
(
9
)
;
256
c
(
7
)
<=
d
(
23
)
xor
d
(
21
)
xor
d
(
20
)
xor
d
(
18
)
xor
d
(
16
)
xor
d
(
15
)
xor
257
d
(
13
)
xor
d
(
8
)
xor
d
(
7
)
xor
d
(
2
)
xor
d
(
1
)
xor
d
(
0
)
xor
258
c
(
31
)
xor
c
(
30
)
xor
c
(
29
)
xor
c
(
24
)
xor
c
(
23
)
xor
c
(
18
)
xor
259
c
(
16
)
xor
c
(
15
)
xor
c
(
13
)
xor
c
(
11
)
xor
c
(
10
)
xor
c
(
8
)
;
260
c
(
8
)
<=
d
(
23
)
xor
d
(
22
)
xor
d
(
20
)
xor
d
(
19
)
xor
d
(
15
)
xor
d
(
13
)
xor
261
d
(
12
)
xor
d
(
11
)
xor
d
(
6
)
xor
d
(
1
)
xor
d
(
0
)
xor
c
(
31
)
xor
262
c
(
30
)
xor
c
(
25
)
xor
c
(
20
)
xor
c
(
19
)
xor
c
(
18
)
xor
c
(
16
)
xor
263
c
(
12
)
xor
c
(
11
)
xor
c
(
9
)
xor
c
(
8
)
;
264
c
(
9
)
<=
d
(
22
)
xor
d
(
21
)
xor
d
(
19
)
xor
d
(
18
)
xor
d
(
14
)
xor
d
(
12
)
xor
265
d
(
11
)
xor
d
(
10
)
xor
d
(
5
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
26
)
xor
266
c
(
21
)
xor
c
(
20
)
xor
c
(
19
)
xor
c
(
17
)
xor
c
(
13
)
xor
c
(
12
)
xor
267
c
(
10
)
xor
c
(
9
)
;
268
c
(
10
)
<=
d
(
23
)
xor
d
(
21
)
xor
d
(
20
)
xor
d
(
18
)
xor
d
(
14
)
xor
d
(
10
)
xor
269
d
(
9
)
xor
d
(
7
)
xor
d
(
4
)
xor
c
(
27
)
xor
c
(
24
)
xor
c
(
22
)
xor
270
c
(
21
)
xor
c
(
17
)
xor
c
(
13
)
xor
c
(
11
)
xor
c
(
10
)
xor
c
(
8
)
;
271
c
(
11
)
<=
d
(
23
)
xor
d
(
22
)
xor
d
(
20
)
xor
d
(
19
)
xor
d
(
14
)
xor
d
(
11
)
xor
272
d
(
9
)
xor
d
(
8
)
xor
d
(
7
)
xor
d
(
6
)
xor
d
(
3
)
xor
c
(
28
)
xor
273
c
(
25
)
xor
c
(
24
)
xor
c
(
23
)
xor
c
(
22
)
xor
c
(
20
)
xor
c
(
17
)
xor
274
c
(
12
)
xor
c
(
11
)
xor
c
(
9
)
xor
c
(
8
)
;
275
c
(
12
)
<=
d
(
23
)
xor
d
(
22
)
xor
d
(
21
)
xor
d
(
19
)
xor
d
(
18
)
xor
d
(
17
)
xor
276
d
(
14
)
xor
d
(
11
)
xor
d
(
10
)
xor
d
(
8
)
xor
d
(
6
)
xor
d
(
5
)
xor
277
d
(
2
)
xor
c
(
29
)
xor
c
(
26
)
xor
c
(
25
)
xor
c
(
23
)
xor
c
(
21
)
xor
278
c
(
20
)
xor
c
(
17
)
xor
c
(
14
)
xor
c
(
13
)
xor
c
(
12
)
xor
c
(
10
)
xor
279
c
(
9
)
xor
c
(
8
)
;
280
c
(
13
)
<=
d
(
22
)
xor
d
(
21
)
xor
d
(
20
)
xor
d
(
18
)
xor
d
(
17
)
xor
d
(
16
)
xor
281
d
(
13
)
xor
d
(
10
)
xor
d
(
9
)
xor
d
(
7
)
xor
d
(
5
)
xor
d
(
4
)
xor
282
d
(
1
)
xor
c
(
30
)
xor
c
(
27
)
xor
c
(
26
)
xor
c
(
24
)
xor
c
(
22
)
xor
283
c
(
21
)
xor
c
(
18
)
xor
c
(
15
)
xor
c
(
14
)
xor
c
(
13
)
xor
c
(
11
)
xor
284
c
(
10
)
xor
c
(
9
)
;
285
c
(
14
)
<=
d
(
21
)
xor
d
(
20
)
xor
d
(
19
)
xor
d
(
17
)
xor
d
(
16
)
xor
d
(
15
)
xor
286
d
(
12
)
xor
d
(
9
)
xor
d
(
8
)
xor
d
(
6
)
xor
d
(
4
)
xor
d
(
3
)
xor
287
d
(
0
)
xor
c
(
31
)
xor
c
(
28
)
xor
c
(
27
)
xor
c
(
25
)
xor
c
(
23
)
xor
288
c
(
22
)
xor
c
(
19
)
xor
c
(
16
)
xor
c
(
15
)
xor
c
(
14
)
xor
c
(
12
)
xor
289
c
(
11
)
xor
c
(
10
)
;
290
c
(
15
)
<=
d
(
20
)
xor
d
(
19
)
xor
d
(
18
)
xor
d
(
16
)
xor
d
(
15
)
xor
d
(
14
)
xor
291
d
(
11
)
xor
d
(
8
)
xor
d
(
7
)
xor
d
(
5
)
xor
d
(
3
)
xor
d
(
2
)
xor
292
c
(
29
)
xor
c
(
28
)
xor
c
(
26
)
xor
c
(
24
)
xor
c
(
23
)
xor
c
(
20
)
xor
293
c
(
17
)
xor
c
(
16
)
xor
c
(
15
)
xor
c
(
13
)
xor
c
(
12
)
xor
c
(
11
)
;
294
c
(
16
)
<=
d
(
23
)
xor
d
(
19
)
xor
d
(
18
)
xor
d
(
15
)
xor
d
(
11
)
xor
d
(
10
)
xor
295
d
(
6
)
xor
d
(
4
)
xor
d
(
2
)
xor
d
(
1
)
xor
c
(
30
)
xor
c
(
29
)
xor
296
c
(
27
)
xor
c
(
25
)
xor
c
(
21
)
xor
c
(
20
)
xor
c
(
16
)
xor
c
(
13
)
xor
297
c
(
12
)
xor
c
(
8
)
;
298
c
(
17
)
<=
d
(
22
)
xor
d
(
18
)
xor
d
(
17
)
xor
d
(
14
)
xor
d
(
10
)
xor
d
(
9
)
xor
299
d
(
5
)
xor
d
(
3
)
xor
d
(
1
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
30
)
xor
300
c
(
28
)
xor
c
(
26
)
xor
c
(
22
)
xor
c
(
21
)
xor
c
(
17
)
xor
c
(
14
)
xor
301
c
(
13
)
xor
c
(
9
)
;
302
c
(
18
)
<=
d
(
21
)
xor
d
(
17
)
xor
d
(
16
)
xor
d
(
13
)
xor
d
(
9
)
xor
d
(
8
)
xor
303
d
(
4
)
xor
d
(
2
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
29
)
xor
c
(
27
)
xor
304
c
(
23
)
xor
c
(
22
)
xor
c
(
18
)
xor
c
(
15
)
xor
c
(
14
)
xor
c
(
10
)
;
305
c
(
19
)
<=
d
(
20
)
xor
d
(
16
)
xor
d
(
15
)
xor
d
(
12
)
xor
d
(
8
)
xor
d
(
7
)
xor
306
d
(
3
)
xor
d
(
1
)
xor
c
(
30
)
xor
c
(
28
)
xor
c
(
24
)
xor
c
(
23
)
xor
307
c
(
19
)
xor
c
(
16
)
xor
c
(
15
)
xor
c
(
11
)
;
308
c
(
20
)
<=
d
(
19
)
xor
d
(
15
)
xor
d
(
14
)
xor
d
(
11
)
xor
d
(
7
)
xor
d
(
6
)
xor
309
d
(
2
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
29
)
xor
c
(
25
)
xor
c
(
24
)
xor
310
c
(
20
)
xor
c
(
17
)
xor
c
(
16
)
xor
c
(
12
)
;
311
c
(
21
)
<=
d
(
18
)
xor
d
(
14
)
xor
d
(
13
)
xor
d
(
10
)
xor
d
(
6
)
xor
d
(
5
)
xor
312
d
(
1
)
xor
c
(
30
)
xor
c
(
26
)
xor
c
(
25
)
xor
c
(
21
)
xor
c
(
18
)
xor
313
c
(
17
)
xor
c
(
13
)
;
314
c
(
22
)
<=
d
(
23
)
xor
d
(
14
)
xor
d
(
12
)
xor
d
(
11
)
xor
d
(
9
)
xor
d
(
7
)
xor
315
d
(
5
)
xor
d
(
4
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
27
)
xor
c
(
26
)
xor
316
c
(
24
)
xor
c
(
22
)
xor
c
(
20
)
xor
c
(
19
)
xor
c
(
17
)
xor
c
(
8
)
;
317
c
(
23
)
<=
d
(
23
)
xor
d
(
22
)
xor
d
(
17
)
xor
d
(
14
)
xor
d
(
10
)
xor
d
(
8
)
xor
318
d
(
7
)
xor
d
(
6
)
xor
d
(
4
)
xor
d
(
3
)
xor
c
(
28
)
xor
c
(
27
)
xor
319
c
(
25
)
xor
c
(
24
)
xor
c
(
23
)
xor
c
(
21
)
xor
c
(
17
)
xor
c
(
14
)
xor
320
c
(
9
)
xor
c
(
8
)
;
321
c
(
24
)
<=
d
(
22
)
xor
d
(
21
)
xor
d
(
16
)
xor
d
(
13
)
xor
d
(
9
)
xor
d
(
7
)
xor
322
d
(
6
)
xor
d
(
5
)
xor
d
(
3
)
xor
d
(
2
)
xor
c
(
29
)
xor
c
(
28
)
xor
323
c
(
26
)
xor
c
(
25
)
xor
c
(
24
)
xor
c
(
22
)
xor
c
(
18
)
xor
c
(
15
)
xor
324
c
(
10
)
xor
c
(
9
)
xor
c
(
0
)
;
325
c
(
25
)
<=
d
(
21
)
xor
d
(
20
)
xor
d
(
15
)
xor
d
(
12
)
xor
d
(
8
)
xor
d
(
6
)
xor
326
d
(
5
)
xor
d
(
4
)
xor
d
(
2
)
xor
d
(
1
)
xor
c
(
30
)
xor
c
(
29
)
xor
327
c
(
27
)
xor
c
(
26
)
xor
c
(
25
)
xor
c
(
23
)
xor
c
(
19
)
xor
c
(
16
)
xor
328
c
(
11
)
xor
c
(
10
)
xor
c
(
1
)
;
329
c
(
26
)
<=
d
(
23
)
xor
d
(
20
)
xor
d
(
19
)
xor
d
(
17
)
xor
d
(
13
)
xor
d
(
5
)
xor
330
d
(
4
)
xor
d
(
3
)
xor
d
(
1
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
30
)
xor
331
c
(
28
)
xor
c
(
27
)
xor
c
(
26
)
xor
c
(
18
)
xor
c
(
14
)
xor
c
(
12
)
xor
332
c
(
11
)
xor
c
(
8
)
xor
c
(
2
)
;
333
c
(
27
)
<=
d
(
22
)
xor
d
(
19
)
xor
d
(
18
)
xor
d
(
16
)
xor
d
(
12
)
xor
d
(
4
)
xor
334
d
(
3
)
xor
d
(
2
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
29
)
xor
c
(
28
)
xor
335
c
(
27
)
xor
c
(
19
)
xor
c
(
15
)
xor
c
(
13
)
xor
c
(
12
)
xor
c
(
9
)
xor
336
c
(
3
)
;
337
c
(
28
)
<=
d
(
21
)
xor
d
(
18
)
xor
d
(
17
)
xor
d
(
15
)
xor
d
(
11
)
xor
d
(
3
)
xor
338
d
(
2
)
xor
d
(
1
)
xor
c
(
30
)
xor
c
(
29
)
xor
c
(
28
)
xor
c
(
20
)
xor
339
c
(
16
)
xor
c
(
14
)
xor
c
(
13
)
xor
c
(
10
)
xor
c
(
4
)
;
340
c
(
29
)
<=
d
(
20
)
xor
d
(
17
)
xor
d
(
16
)
xor
d
(
14
)
xor
d
(
10
)
xor
d
(
2
)
xor
341
d
(
1
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
30
)
xor
c
(
29
)
xor
c
(
21
)
xor
342
c
(
17
)
xor
c
(
15
)
xor
c
(
14
)
xor
c
(
11
)
xor
c
(
5
)
;
343
c
(
30
)
<=
d
(
19
)
xor
d
(
16
)
xor
d
(
15
)
xor
d
(
13
)
xor
d
(
9
)
xor
d
(
1
)
xor
344
d
(
0
)
xor
c
(
31
)
xor
c
(
30
)
xor
c
(
22
)
xor
c
(
18
)
xor
c
(
16
)
xor
345
c
(
15
)
xor
c
(
12
)
xor
c
(
6
)
;
346
c
(
31
)
<=
d
(
18
)
xor
d
(
15
)
xor
d
(
14
)
xor
d
(
12
)
xor
d
(
8
)
xor
d
(
0
)
xor
347
c
(
31
)
xor
c
(
23
)
xor
c
(
19
)
xor
c
(
17
)
xor
c
(
16
)
xor
c
(
13
)
xor
348
c
(
7
)
;
349
when
others
=
>
350
c
(
0
)
<=
d
(
31
)
xor
d
(
25
)
xor
d
(
22
)
xor
d
(
21
)
xor
d
(
19
)
xor
d
(
15
)
xor
351
d
(
7
)
xor
d
(
6
)
xor
d
(
5
)
xor
d
(
3
)
xor
d
(
2
)
xor
d
(
1
)
xor
352
d
(
0
)
xor
c
(
31
)
xor
c
(
30
)
xor
c
(
29
)
xor
c
(
28
)
xor
c
(
26
)
xor
353
c
(
25
)
xor
c
(
24
)
xor
c
(
16
)
xor
c
(
12
)
xor
c
(
10
)
xor
c
(
9
)
xor
354
c
(
6
)
xor
c
(
0
)
;
355
c
(
1
)
<=
d
(
31
)
xor
d
(
30
)
xor
d
(
25
)
xor
d
(
24
)
xor
d
(
22
)
xor
d
(
20
)
xor
356
d
(
19
)
xor
d
(
18
)
xor
d
(
15
)
xor
d
(
14
)
xor
d
(
7
)
xor
d
(
4
)
xor
357
d
(
3
)
xor
c
(
28
)
xor
c
(
27
)
xor
c
(
24
)
xor
c
(
17
)
xor
c
(
16
)
xor
358
c
(
13
)
xor
c
(
12
)
xor
c
(
11
)
xor
c
(
9
)
xor
c
(
7
)
xor
c
(
6
)
xor
359
c
(
1
)
xor
c
(
0
)
;
360
c
(
2
)
<=
d
(
31
)
xor
d
(
30
)
xor
d
(
29
)
xor
d
(
25
)
xor
d
(
24
)
xor
d
(
23
)
xor
361
d
(
22
)
xor
d
(
18
)
xor
d
(
17
)
xor
d
(
15
)
xor
d
(
14
)
xor
d
(
13
)
xor
362
d
(
7
)
xor
d
(
5
)
xor
d
(
1
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
30
)
xor
363
c
(
26
)
xor
c
(
24
)
xor
c
(
18
)
xor
c
(
17
)
xor
c
(
16
)
xor
c
(
14
)
xor
364
c
(
13
)
xor
c
(
9
)
xor
c
(
8
)
xor
c
(
7
)
xor
c
(
6
)
xor
c
(
2
)
xor
365
c
(
1
)
xor
c
(
0
)
;
366
c
(
3
)
<=
d
(
30
)
xor
d
(
29
)
xor
d
(
28
)
xor
d
(
24
)
xor
d
(
23
)
xor
d
(
22
)
xor
367
d
(
21
)
xor
d
(
17
)
xor
d
(
16
)
xor
d
(
14
)
xor
d
(
13
)
xor
d
(
12
)
xor
368
d
(
6
)
xor
d
(
4
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
27
)
xor
c
(
25
)
xor
369
c
(
19
)
xor
c
(
18
)
xor
c
(
17
)
xor
c
(
15
)
xor
c
(
14
)
xor
c
(
10
)
xor
370
c
(
9
)
xor
c
(
8
)
xor
c
(
7
)
xor
c
(
3
)
xor
c
(
2
)
xor
c
(
1
)
;
371
c
(
4
)
<=
d
(
31
)
xor
d
(
29
)
xor
d
(
28
)
xor
d
(
27
)
xor
d
(
25
)
xor
d
(
23
)
xor
372
d
(
20
)
xor
d
(
19
)
xor
d
(
16
)
xor
d
(
13
)
xor
d
(
12
)
xor
d
(
11
)
xor
373
d
(
7
)
xor
d
(
6
)
xor
d
(
2
)
xor
d
(
1
)
xor
d
(
0
)
xor
c
(
31
)
xor
374
c
(
30
)
xor
c
(
29
)
xor
c
(
25
)
xor
c
(
24
)
xor
c
(
20
)
xor
c
(
19
)
xor
375
c
(
18
)
xor
c
(
15
)
xor
c
(
12
)
xor
c
(
11
)
xor
c
(
8
)
xor
c
(
6
)
xor
376
c
(
4
)
xor
c
(
3
)
xor
c
(
2
)
xor
c
(
0
)
;
377
c
(
5
)
<=
d
(
31
)
xor
d
(
30
)
xor
d
(
28
)
xor
d
(
27
)
xor
d
(
26
)
xor
d
(
25
)
xor
378
d
(
24
)
xor
d
(
21
)
xor
d
(
18
)
xor
d
(
12
)
xor
d
(
11
)
xor
d
(
10
)
xor
379
d
(
7
)
xor
d
(
3
)
xor
d
(
2
)
xor
c
(
29
)
xor
c
(
28
)
xor
c
(
24
)
xor
380
c
(
21
)
xor
c
(
20
)
xor
c
(
19
)
xor
c
(
13
)
xor
c
(
10
)
xor
c
(
7
)
xor
381
c
(
6
)
xor
c
(
5
)
xor
c
(
4
)
xor
c
(
3
)
xor
c
(
1
)
xor
c
(
0
)
;
382
c
(
6
)
<=
d
(
30
)
xor
d
(
29
)
xor
d
(
27
)
xor
d
(
26
)
xor
d
(
25
)
xor
d
(
24
)
xor
383
d
(
23
)
xor
d
(
20
)
xor
d
(
17
)
xor
d
(
11
)
xor
d
(
10
)
xor
d
(
9
)
xor
384
d
(
6
)
xor
d
(
2
)
xor
d
(
1
)
xor
c
(
30
)
xor
c
(
29
)
xor
c
(
25
)
xor
385
c
(
22
)
xor
c
(
21
)
xor
c
(
20
)
xor
c
(
14
)
xor
c
(
11
)
xor
c
(
8
)
xor
386
c
(
7
)
xor
c
(
6
)
xor
c
(
5
)
xor
c
(
4
)
xor
c
(
2
)
xor
c
(
1
)
;
387
c
(
7
)
<=
d
(
31
)
xor
d
(
29
)
xor
d
(
28
)
xor
d
(
26
)
xor
d
(
24
)
xor
d
(
23
)
xor
388
d
(
21
)
xor
d
(
16
)
xor
d
(
15
)
xor
d
(
10
)
xor
d
(
9
)
xor
d
(
8
)
xor
389
d
(
7
)
xor
d
(
6
)
xor
d
(
3
)
xor
d
(
2
)
xor
c
(
29
)
xor
c
(
28
)
xor
390
c
(
25
)
xor
c
(
24
)
xor
c
(
23
)
xor
c
(
22
)
xor
c
(
21
)
xor
c
(
16
)
xor
391
c
(
15
)
xor
c
(
10
)
xor
c
(
8
)
xor
c
(
7
)
xor
c
(
5
)
xor
c
(
3
)
xor
392
c
(
2
)
xor
c
(
0
)
;
393
c
(
8
)
<=
d
(
31
)
xor
d
(
30
)
xor
d
(
28
)
xor
d
(
27
)
xor
d
(
23
)
xor
d
(
21
)
xor
394
d
(
20
)
xor
d
(
19
)
xor
d
(
14
)
xor
d
(
9
)
xor
d
(
8
)
xor
d
(
3
)
xor
395
d
(
0
)
xor
c
(
31
)
xor
c
(
28
)
xor
c
(
23
)
xor
c
(
22
)
xor
c
(
17
)
xor
396
c
(
12
)
xor
c
(
11
)
xor
c
(
10
)
xor
c
(
8
)
xor
c
(
4
)
xor
c
(
3
)
xor
397
c
(
1
)
xor
c
(
0
)
;
398
c
(
9
)
<=
d
(
30
)
xor
d
(
29
)
xor
d
(
27
)
xor
d
(
26
)
xor
d
(
22
)
xor
d
(
20
)
xor
399
d
(
19
)
xor
d
(
18
)
xor
d
(
13
)
xor
d
(
8
)
xor
d
(
7
)
xor
d
(
2
)
xor
400
c
(
29
)
xor
c
(
24
)
xor
c
(
23
)
xor
c
(
18
)
xor
c
(
13
)
xor
c
(
12
)
xor
401
c
(
11
)
xor
c
(
9
)
xor
c
(
5
)
xor
c
(
4
)
xor
c
(
2
)
xor
c
(
1
)
;
402
c
(
10
)
<=
d
(
31
)
xor
d
(
29
)
xor
d
(
28
)
xor
d
(
26
)
xor
d
(
22
)
xor
d
(
18
)
xor
403
d
(
17
)
xor
d
(
15
)
xor
d
(
12
)
xor
d
(
5
)
xor
d
(
3
)
xor
d
(
2
)
xor
404
d
(
0
)
xor
c
(
31
)
xor
c
(
29
)
xor
c
(
28
)
xor
c
(
26
)
xor
c
(
19
)
xor
405
c
(
16
)
xor
c
(
14
)
xor
c
(
13
)
xor
c
(
9
)
xor
c
(
5
)
xor
c
(
3
)
xor
406
c
(
2
)
xor
c
(
0
)
;
407
c
(
11
)
<=
d
(
31
)
xor
d
(
30
)
xor
d
(
28
)
xor
d
(
27
)
xor
d
(
22
)
xor
d
(
19
)
xor
408
d
(
17
)
xor
d
(
16
)
xor
d
(
15
)
xor
d
(
14
)
xor
d
(
11
)
xor
d
(
7
)
xor
409
d
(
6
)
xor
d
(
5
)
xor
d
(
4
)
xor
d
(
3
)
xor
d
(
0
)
xor
c
(
31
)
xor
410
c
(
28
)
xor
c
(
27
)
xor
c
(
26
)
xor
c
(
25
)
xor
c
(
24
)
xor
c
(
20
)
xor
411
c
(
17
)
xor
c
(
16
)
xor
c
(
15
)
xor
c
(
14
)
xor
c
(
12
)
xor
c
(
9
)
xor
412
c
(
4
)
xor
c
(
3
)
xor
c
(
1
)
xor
c
(
0
)
;
413
c
(
12
)
<=
d
(
31
)
xor
d
(
30
)
xor
d
(
29
)
xor
d
(
27
)
xor
d
(
26
)
xor
d
(
25
)
xor
414
d
(
22
)
xor
d
(
19
)
xor
d
(
18
)
xor
d
(
16
)
xor
d
(
14
)
xor
d
(
13
)
xor
415
d
(
10
)
xor
d
(
7
)
xor
d
(
4
)
xor
d
(
1
)
xor
d
(
0
)
xor
c
(
31
)
xor
416
c
(
30
)
xor
c
(
27
)
xor
c
(
24
)
xor
c
(
21
)
xor
c
(
18
)
xor
c
(
17
)
xor
417
c
(
15
)
xor
c
(
13
)
xor
c
(
12
)
xor
c
(
9
)
xor
c
(
6
)
xor
c
(
5
)
xor
418
c
(
4
)
xor
c
(
2
)
xor
c
(
1
)
xor
c
(
0
)
;
419
c
(
13
)
<=
d
(
30
)
xor
d
(
29
)
xor
d
(
28
)
xor
d
(
26
)
xor
d
(
25
)
xor
d
(
24
)
xor
420
d
(
21
)
xor
d
(
18
)
xor
d
(
17
)
xor
d
(
15
)
xor
d
(
13
)
xor
d
(
12
)
xor
421
d
(
9
)
xor
d
(
6
)
xor
d
(
3
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
28
)
xor
422
c
(
25
)
xor
c
(
22
)
xor
c
(
19
)
xor
c
(
18
)
xor
c
(
16
)
xor
c
(
14
)
xor
423
c
(
13
)
xor
c
(
10
)
xor
c
(
7
)
xor
c
(
6
)
xor
c
(
5
)
xor
c
(
3
)
xor
424
c
(
2
)
xor
c
(
1
)
;
425
c
(
14
)
<=
d
(
29
)
xor
d
(
28
)
xor
d
(
27
)
xor
d
(
25
)
xor
d
(
24
)
xor
d
(
23
)
xor
426
d
(
20
)
xor
d
(
17
)
xor
d
(
16
)
xor
d
(
14
)
xor
d
(
12
)
xor
d
(
11
)
xor
427
d
(
8
)
xor
d
(
5
)
xor
d
(
2
)
xor
c
(
29
)
xor
c
(
26
)
xor
c
(
23
)
xor
428
c
(
20
)
xor
c
(
19
)
xor
c
(
17
)
xor
c
(
15
)
xor
c
(
14
)
xor
c
(
11
)
xor
429
c
(
8
)
xor
c
(
7
)
xor
c
(
6
)
xor
c
(
4
)
xor
c
(
3
)
xor
c
(
2
)
;
430
c
(
15
)
<=
d
(
28
)
xor
d
(
27
)
xor
d
(
26
)
xor
d
(
24
)
xor
d
(
23
)
xor
d
(
22
)
xor
431
d
(
19
)
xor
d
(
16
)
xor
d
(
15
)
xor
d
(
13
)
xor
d
(
11
)
xor
d
(
10
)
xor
432
d
(
7
)
xor
d
(
4
)
xor
d
(
1
)
xor
c
(
30
)
xor
c
(
27
)
xor
c
(
24
)
xor
433
c
(
21
)
xor
c
(
20
)
xor
c
(
18
)
xor
c
(
16
)
xor
c
(
15
)
xor
c
(
12
)
xor
434
c
(
9
)
xor
c
(
8
)
xor
c
(
7
)
xor
c
(
5
)
xor
c
(
4
)
xor
c
(
3
)
;
435
c
(
16
)
<=
d
(
31
)
xor
d
(
27
)
xor
d
(
26
)
xor
d
(
23
)
xor
d
(
19
)
xor
d
(
18
)
xor
436
d
(
14
)
xor
d
(
12
)
xor
d
(
10
)
xor
d
(
9
)
xor
d
(
7
)
xor
d
(
5
)
xor
437
d
(
2
)
xor
d
(
1
)
xor
c
(
30
)
xor
c
(
29
)
xor
c
(
26
)
xor
c
(
24
)
xor
438
c
(
22
)
xor
c
(
21
)
xor
c
(
19
)
xor
c
(
17
)
xor
c
(
13
)
xor
c
(
12
)
xor
439
c
(
8
)
xor
c
(
5
)
xor
c
(
4
)
xor
c
(
0
)
;
440
c
(
17
)
<=
d
(
30
)
xor
d
(
26
)
xor
d
(
25
)
xor
d
(
22
)
xor
d
(
18
)
xor
d
(
17
)
xor
441
d
(
13
)
xor
d
(
11
)
xor
d
(
9
)
xor
d
(
8
)
xor
d
(
6
)
xor
d
(
4
)
xor
442
d
(
1
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
30
)
xor
c
(
27
)
xor
c
(
25
)
xor
443
c
(
23
)
xor
c
(
22
)
xor
c
(
20
)
xor
c
(
18
)
xor
c
(
14
)
xor
c
(
13
)
xor
444
c
(
9
)
xor
c
(
6
)
xor
c
(
5
)
xor
c
(
1
)
;
445
c
(
18
)
<=
d
(
29
)
xor
d
(
25
)
xor
d
(
24
)
xor
d
(
21
)
xor
d
(
17
)
xor
d
(
16
)
xor
446
d
(
12
)
xor
d
(
10
)
xor
d
(
8
)
xor
d
(
7
)
xor
d
(
5
)
xor
d
(
3
)
xor
447
d
(
0
)
xor
c
(
31
)
xor
c
(
28
)
xor
c
(
26
)
xor
c
(
24
)
xor
c
(
23
)
xor
448
c
(
21
)
xor
c
(
19
)
xor
c
(
15
)
xor
c
(
14
)
xor
c
(
10
)
xor
c
(
7
)
xor
449
c
(
6
)
xor
c
(
2
)
;
450
c
(
19
)
<=
d
(
28
)
xor
d
(
24
)
xor
d
(
23
)
xor
d
(
20
)
xor
d
(
16
)
xor
d
(
15
)
xor
451
d
(
11
)
xor
d
(
9
)
xor
d
(
7
)
xor
d
(
6
)
xor
d
(
4
)
xor
d
(
2
)
xor
452
c
(
29
)
xor
c
(
27
)
xor
c
(
25
)
xor
c
(
24
)
xor
c
(
22
)
xor
c
(
20
)
xor
453
c
(
16
)
xor
c
(
15
)
xor
c
(
11
)
xor
c
(
8
)
xor
c
(
7
)
xor
c
(
3
)
;
454
c
(
20
)
<=
d
(
27
)
xor
d
(
23
)
xor
d
(
22
)
xor
d
(
19
)
xor
d
(
15
)
xor
d
(
14
)
xor
455
d
(
10
)
xor
d
(
8
)
xor
d
(
6
)
xor
d
(
5
)
xor
d
(
3
)
xor
d
(
1
)
xor
456
c
(
30
)
xor
c
(
28
)
xor
c
(
26
)
xor
c
(
25
)
xor
c
(
23
)
xor
c
(
21
)
xor
457
c
(
17
)
xor
c
(
16
)
xor
c
(
12
)
xor
c
(
9
)
xor
c
(
8
)
xor
c
(
4
)
;
458
c
(
21
)
<=
d
(
26
)
xor
d
(
22
)
xor
d
(
21
)
xor
d
(
18
)
xor
d
(
14
)
xor
d
(
13
)
xor
459
d
(
9
)
xor
d
(
7
)
xor
d
(
5
)
xor
d
(
4
)
xor
d
(
2
)
xor
d
(
0
)
xor
460
c
(
31
)
xor
c
(
29
)
xor
c
(
27
)
xor
c
(
26
)
xor
c
(
24
)
xor
c
(
22
)
xor
461
c
(
18
)
xor
c
(
17
)
xor
c
(
13
)
xor
c
(
10
)
xor
c
(
9
)
xor
c
(
5
)
;
462
c
(
22
)
<=
d
(
31
)
xor
d
(
22
)
xor
d
(
20
)
xor
d
(
19
)
xor
d
(
17
)
xor
d
(
15
)
xor
463
d
(
13
)
xor
d
(
12
)
xor
d
(
8
)
xor
d
(
7
)
xor
d
(
5
)
xor
d
(
4
)
xor
464
d
(
2
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
29
)
xor
c
(
27
)
xor
c
(
26
)
xor
465
c
(
24
)
xor
c
(
23
)
xor
c
(
19
)
xor
c
(
18
)
xor
c
(
16
)
xor
c
(
14
)
xor
466
c
(
12
)
xor
c
(
11
)
xor
c
(
9
)
xor
c
(
0
)
;
467
c
(
23
)
<=
d
(
31
)
xor
d
(
30
)
xor
d
(
25
)
xor
d
(
22
)
xor
d
(
18
)
xor
d
(
16
)
xor
468
d
(
15
)
xor
d
(
14
)
xor
d
(
12
)
xor
d
(
11
)
xor
d
(
5
)
xor
d
(
4
)
xor
469
d
(
2
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
29
)
xor
c
(
27
)
xor
c
(
26
)
xor
470
c
(
20
)
xor
c
(
19
)
xor
c
(
17
)
xor
c
(
16
)
xor
c
(
15
)
xor
c
(
13
)
xor
471
c
(
9
)
xor
c
(
6
)
xor
c
(
1
)
xor
c
(
0
)
;
472
c
(
24
)
<=
d
(
30
)
xor
d
(
29
)
xor
d
(
24
)
xor
d
(
21
)
xor
d
(
17
)
xor
d
(
15
)
xor
473
d
(
14
)
xor
d
(
13
)
xor
d
(
11
)
xor
d
(
10
)
xor
d
(
4
)
xor
d
(
3
)
xor
474
d
(
1
)
xor
c
(
30
)
xor
c
(
28
)
xor
c
(
27
)
xor
c
(
21
)
xor
c
(
20
)
xor
475
c
(
18
)
xor
c
(
17
)
xor
c
(
16
)
xor
c
(
14
)
xor
c
(
10
)
xor
c
(
7
)
xor
476
c
(
2
)
xor
c
(
1
)
;
477
c
(
25
)
<=
d
(
29
)
xor
d
(
28
)
xor
d
(
23
)
xor
d
(
20
)
xor
d
(
16
)
xor
d
(
14
)
xor
478
d
(
13
)
xor
d
(
12
)
xor
d
(
10
)
xor
d
(
9
)
xor
d
(
3
)
xor
d
(
2
)
xor
479
d
(
0
)
xor
c
(
31
)
xor
c
(
29
)
xor
c
(
28
)
xor
c
(
22
)
xor
c
(
21
)
xor
480
c
(
19
)
xor
c
(
18
)
xor
c
(
17
)
xor
c
(
15
)
xor
c
(
11
)
xor
c
(
8
)
xor
481
c
(
3
)
xor
c
(
2
)
;
482
c
(
26
)
<=
d
(
31
)
xor
d
(
28
)
xor
d
(
27
)
xor
d
(
25
)
xor
d
(
21
)
xor
d
(
13
)
xor
483
d
(
12
)
xor
d
(
11
)
xor
d
(
9
)
xor
d
(
8
)
xor
d
(
7
)
xor
d
(
6
)
xor
484
d
(
5
)
xor
d
(
3
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
28
)
xor
c
(
26
)
xor
485
c
(
25
)
xor
c
(
24
)
xor
c
(
23
)
xor
c
(
22
)
xor
c
(
20
)
xor
c
(
19
)
xor
486
c
(
18
)
xor
c
(
10
)
xor
c
(
6
)
xor
c
(
4
)
xor
c
(
3
)
xor
c
(
0
)
;
487
c
(
27
)
<=
d
(
30
)
xor
d
(
27
)
xor
d
(
26
)
xor
d
(
24
)
xor
d
(
20
)
xor
d
(
12
)
xor
488
d
(
11
)
xor
d
(
10
)
xor
d
(
8
)
xor
d
(
7
)
xor
d
(
6
)
xor
d
(
5
)
xor
489
d
(
4
)
xor
d
(
2
)
xor
c
(
29
)
xor
c
(
27
)
xor
c
(
26
)
xor
c
(
25
)
xor
490
c
(
24
)
xor
c
(
23
)
xor
c
(
21
)
xor
c
(
20
)
xor
c
(
19
)
xor
c
(
11
)
xor
491
c
(
7
)
xor
c
(
5
)
xor
c
(
4
)
xor
c
(
1
)
;
492
c
(
28
)
<=
d
(
29
)
xor
d
(
26
)
xor
d
(
25
)
xor
d
(
23
)
xor
d
(
19
)
xor
d
(
11
)
xor
493
d
(
10
)
xor
d
(
9
)
xor
d
(
7
)
xor
d
(
6
)
xor
d
(
5
)
xor
d
(
4
)
xor
494
d
(
3
)
xor
d
(
1
)
xor
c
(
30
)
xor
c
(
28
)
xor
c
(
27
)
xor
c
(
26
)
xor
495
c
(
25
)
xor
c
(
24
)
xor
c
(
22
)
xor
c
(
21
)
xor
c
(
20
)
xor
c
(
12
)
xor
496
c
(
8
)
xor
c
(
6
)
xor
c
(
5
)
xor
c
(
2
)
;
497
c
(
29
)
<=
d
(
28
)
xor
d
(
25
)
xor
d
(
24
)
xor
d
(
22
)
xor
d
(
18
)
xor
d
(
10
)
xor
498
d
(
9
)
xor
d
(
8
)
xor
d
(
6
)
xor
d
(
5
)
xor
d
(
4
)
xor
d
(
3
)
xor
499
d
(
2
)
xor
d
(
0
)
xor
c
(
31
)
xor
c
(
29
)
xor
c
(
28
)
xor
c
(
27
)
xor
500
c
(
26
)
xor
c
(
25
)
xor
c
(
23
)
xor
c
(
22
)
xor
c
(
21
)
xor
c
(
13
)
xor
501
c
(
9
)
xor
c
(
7
)
xor
c
(
6
)
xor
c
(
3
)
;
502
c
(
30
)
<=
d
(
27
)
xor
d
(
24
)
xor
d
(
23
)
xor
d
(
21
)
xor
d
(
17
)
xor
d
(
9
)
xor
503
d
(
8
)
xor
d
(
7
)
xor
d
(
5
)
xor
d
(
4
)
xor
d
(
3
)
xor
d
(
2
)
xor
504
d
(
1
)
xor
c
(
30
)
xor
c
(
29
)
xor
c
(
28
)
xor
c
(
27
)
xor
c
(
26
)
xor
505
c
(
24
)
xor
c
(
23
)
xor
c
(
22
)
xor
c
(
14
)
xor
c
(
10
)
xor
c
(
8
)
xor
506
c
(
7
)
xor
c
(
4
)
;
507
c
(
31
)
<=
d
(
26
)
xor
d
(
23
)
xor
d
(
22
)
xor
d
(
20
)
xor
d
(
16
)
xor
d
(
8
)
xor
508
d
(
7
)
xor
d
(
6
)
xor
d
(
4
)
xor
d
(
3
)
xor
d
(
2
)
xor
d
(
1
)
xor
509
d
(
0
)
xor
c
(
31
)
xor
c
(
30
)
xor
c
(
29
)
xor
c
(
28
)
xor
c
(
27
)
xor
510
c
(
25
)
xor
c
(
24
)
xor
c
(
23
)
xor
c
(
15
)
xor
c
(
11
)
xor
c
(
9
)
xor
511
c
(
8
)
xor
c
(
5
)
;
512
end
case
;
513
end
if
;
514
end
if
;
515
end
process
;
516
517
end
Behavioral
;
518
Generated on Wed Apr 18 2018 10:55:28 for AMC13 by
1.8.1