1; Copyright (c) 2019-2020, The rav1e contributors. All rights reserved
2;
3; This source code is subject to the terms of the BSD 2 Clause License and
4; the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
5; was not distributed with this source code in the LICENSE file, you can
6; obtain it at www.aomedia.org/license/software. If the Alliance for Open
7; Media Patent License 1.0 was not distributed with this source code in the
8; PATENTS file, you can obtain it at www.aomedia.org/license/patent.
9
10; Copyright © 2018, VideoLAN and dav1d authors
11; Copyright © 2018, Two Orioles, LLC
12; All rights reserved.
13;
14; Redistribution and use in source and binary forms, with or without
15; modification, are permitted provided that the following conditions are met:
16;
17; 1. Redistributions of source code must retain the above copyright notice, this
18;    list of conditions and the following disclaimer.
19;
20; 2. Redistributions in binary form must reproduce the above copyright notice,
21;    this list of conditions and the following disclaimer in the documentation
22;    and/or other materials provided with the distribution.
23;
24; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
25; ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
26; WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
28; ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29; (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31; ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34
35%include "config.asm"
36%include "ext/x86/x86inc.asm"
37
38SECTION_RODATA 16
39
40align 8, db 0
41const mc_subpel_filters, db  0,   1,  -3,  63,   4,  -1,   0,   0, ; REGULAR
42                         db  0,   1,  -5,  61,   9,  -2,   0,   0,
43                         db  0,   1,  -6,  58,  14,  -4,   1,   0,
44                         db  0,   1,  -7,  55,  19,  -5,   1,   0,
45                         db  0,   1,  -7,  51,  24,  -6,   1,   0,
46                         db  0,   1,  -8,  47,  29,  -6,   1,   0,
47                         db  0,   1,  -7,  42,  33,  -6,   1,   0,
48                         db  0,   1,  -7,  38,  38,  -7,   1,   0,
49                         db  0,   1,  -6,  33,  42,  -7,   1,   0,
50                         db  0,   1,  -6,  29,  47,  -8,   1,   0,
51                         db  0,   1,  -6,  24,  51,  -7,   1,   0,
52                         db  0,   1,  -5,  19,  55,  -7,   1,   0,
53                         db  0,   1,  -4,  14,  58,  -6,   1,   0,
54                         db  0,   0,  -2,   9,  61,  -5,   1,   0,
55                         db  0,   0,  -1,   4,  63,  -3,   1,   0,
56                         db  0,   1,  14,  31,  17,   1,   0,   0, ; SMOOTH
57                         db  0,   0,  13,  31,  18,   2,   0,   0,
58                         db  0,   0,  11,  31,  20,   2,   0,   0,
59                         db  0,   0,  10,  30,  21,   3,   0,   0,
60                         db  0,   0,   9,  29,  22,   4,   0,   0,
61                         db  0,   0,   8,  28,  23,   5,   0,   0,
62                         db  0,  -1,   8,  27,  24,   6,   0,   0,
63                         db  0,  -1,   7,  26,  26,   7,  -1,   0,
64                         db  0,   0,   6,  24,  27,   8,  -1,   0,
65                         db  0,   0,   5,  23,  28,   8,   0,   0,
66                         db  0,   0,   4,  22,  29,   9,   0,   0,
67                         db  0,   0,   3,  21,  30,  10,   0,   0,
68                         db  0,   0,   2,  20,  31,  11,   0,   0,
69                         db  0,   0,   2,  18,  31,  13,   0,   0,
70                         db  0,   0,   1,  17,  31,  14,   1,   0,
71                         db -1,   1,  -3,  63,   4,  -1,   1,   0, ; SHARP
72                         db -1,   3,  -6,  62,   8,  -3,   2,  -1,
73                         db -1,   4,  -9,  60,  13,  -5,   3,  -1,
74                         db -2,   5, -11,  58,  19,  -7,   3,  -1,
75                         db -2,   5, -11,  54,  24,  -9,   4,  -1,
76                         db -2,   5, -12,  50,  30, -10,   4,  -1,
77                         db -2,   5, -12,  45,  35, -11,   5,  -1,
78                         db -2,   6, -12,  40,  40, -12,   6,  -2,
79                         db -1,   5, -11,  35,  45, -12,   5,  -2,
80                         db -1,   4, -10,  30,  50, -12,   5,  -2,
81                         db -1,   4,  -9,  24,  54, -11,   5,  -2,
82                         db -1,   3,  -7,  19,  58, -11,   5,  -2,
83                         db -1,   3,  -5,  13,  60,  -9,   4,  -1,
84                         db -1,   2,  -3,   8,  62,  -6,   3,  -1,
85                         db  0,   1,  -1,   4,  63,  -3,   1,  -1,
86                         db  0,   0,  -2,  63,   4,  -1,   0,   0, ; REGULAR 4
87                         db  0,   0,  -4,  61,   9,  -2,   0,   0,
88                         db  0,   0,  -5,  58,  14,  -3,   0,   0,
89                         db  0,   0,  -6,  55,  19,  -4,   0,   0,
90                         db  0,   0,  -6,  51,  24,  -5,   0,   0,
91                         db  0,   0,  -7,  47,  29,  -5,   0,   0,
92                         db  0,   0,  -6,  42,  33,  -5,   0,   0,
93                         db  0,   0,  -6,  38,  38,  -6,   0,   0,
94                         db  0,   0,  -5,  33,  42,  -6,   0,   0,
95                         db  0,   0,  -5,  29,  47,  -7,   0,   0,
96                         db  0,   0,  -5,  24,  51,  -6,   0,   0,
97                         db  0,   0,  -4,  19,  55,  -6,   0,   0,
98                         db  0,   0,  -3,  14,  58,  -5,   0,   0,
99                         db  0,   0,  -2,   9,  61,  -4,   0,   0,
100                         db  0,   0,  -1,   4,  63,  -2,   0,   0,
101                         db  0,   0,  15,  31,  17,   1,   0,   0, ; SMOOTH 4
102                         db  0,   0,  13,  31,  18,   2,   0,   0,
103                         db  0,   0,  11,  31,  20,   2,   0,   0,
104                         db  0,   0,  10,  30,  21,   3,   0,   0,
105                         db  0,   0,   9,  29,  22,   4,   0,   0,
106                         db  0,   0,   8,  28,  23,   5,   0,   0,
107                         db  0,   0,   7,  27,  24,   6,   0,   0,
108                         db  0,   0,   6,  26,  26,   6,   0,   0,
109                         db  0,   0,   6,  24,  27,   7,   0,   0,
110                         db  0,   0,   5,  23,  28,   8,   0,   0,
111                         db  0,   0,   4,  22,  29,   9,   0,   0,
112                         db  0,   0,   3,  21,  30,  10,   0,   0,
113                         db  0,   0,   2,  20,  31,  11,   0,   0,
114                         db  0,   0,   2,  18,  31,  13,   0,   0,
115                         db  0,   0,   1,  17,  31,  15,   0,   0
116
117align 16, db 0
118const filter_intra_taps, db  -6,  10,  -5,   2,  -3,   1,  -3,   1, ; 0
119                         db  -4,   6,  -3,   2,  -3,   2,  -3,   1,
120                         db   0,   0,  10,   0,   1,  10,   1,   2,
121                         db   0,   0,   6,   0,   2,   6,   2,   2,
122                         db   0,  12,   0,   9,   0,   7,  10,   5,
123                         db   0,   2,   0,   2,   0,   2,   6,   3,
124                         db   0,   0,   0,   0,   0,   0,   0,   0,
125                         db  12,   0,   9,   0,   7,   0,   5,   0,
126                         db -10,  16,  -6,   0,  -4,   0,  -2,   0, ; 1
127                         db -10,  16,  -6,   0,  -4,   0,  -2,   0,
128                         db   0,   0,  16,   0,   0,  16,   0,   0,
129                         db   0,   0,  16,   0,   0,  16,   0,   0,
130                         db   0,  10,   0,   6,   0,   4,  16,   2,
131                         db   0,   0,   0,   0,   0,   0,  16,   0,
132                         db   0,   0,   0,   0,   0,   0,   0,   0,
133                         db  10,   0,   6,   0,   4,   0,   2,   0,
134                         db  -8,   8,  -8,   0,  -8,   0,  -8,   0, ; 2
135                         db  -4,   4,  -4,   0,  -4,   0,  -4,   0,
136                         db   0,   0,   8,   0,   0,   8,   0,   0,
137                         db   0,   0,   4,   0,   0,   4,   0,   0,
138                         db   0,  16,   0,  16,   0,  16,   8,  16,
139                         db   0,   0,   0,   0,   0,   0,   4,   0,
140                         db   0,   0,   0,   0,   0,   0,   0,   0,
141                         db  16,   0,  16,   0,  16,   0,  16,   0,
142                         db  -2,   8,  -1,   3,  -1,   2,   0,   1, ; 3
143                         db  -1,   4,  -1,   3,  -1,   2,  -1,   2,
144                         db   0,   0,   8,   0,   3,   8,   2,   3,
145                         db   0,   0,   4,   0,   3,   4,   2,   3,
146                         db   0,  10,   0,   6,   0,   4,   8,   2,
147                         db   0,   3,   0,   4,   0,   4,   4,   3,
148                         db   0,   0,   0,   0,   0,   0,   0,   0,
149                         db  10,   0,   6,   0,   4,   0,   3,   0,
150                         db -12,  14, -10,   0,  -9,   0,  -8,   0, ; 4
151                         db -10,  12,  -9,   1,  -8,   0,  -7,   0,
152                         db   0,   0,  14,   0,   0,  14,   0,   0,
153                         db   0,   0,  12,   0,   0,  12,   0,   1,
154                         db   0,  14,   0,  12,   0,  11,  14,  10,
155                         db   0,   0,   0,   0,   0,   1,  12,   1,
156                         db   0,   0,   0,   0,   0,   0,   0,   0,
157                         db  14,   0,  12,   0,  11,   0,   9,   0
158
159align 16, db 0
160const sgr_x_by_x, db 255, 128,  85,  64,  51,  43,  37,  32,  28,  26,  23,  21,  20,  18,  17,
161                  db  16,  15,  14,  13,  13,  12,  12,  11,  11,  10,  10,   9,   9,   9,   9,
162                  db   8,   8,   8,   8,   7,   7,   7,   7,   7,   6,   6,   6,   6,   6,   6,
163                  db   6,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   4,   4,   4,   4,
164                  db   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   3,   3,
165                  db   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
166                  db   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   2,   2,   2,
167                  db   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
168                  db   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
169                  db   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
170                  db   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
171                  db   2,   2,   2,   2,   2,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
172                  db   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
173                  db   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
174                  db   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
175                  db   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
176                  db   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
177                  db   0
178
179align 8, db 0
180const mc_warp_filter, db 0, 127,   0, 0,   0,   1, 0, 0,  0, 127,   0, 0,  -1,   2, 0, 0, ; [-1, 0)
181                      db 1, 127,  -1, 0,  -3,   4, 0, 0,  1, 126,  -2, 0,  -4,   6, 1, 0,
182                      db 1, 126,  -3, 0,  -5,   8, 1, 0,  1, 125,  -4, 0,  -6,  11, 1, 0,
183                      db 1, 124,  -4, 0,  -7,  13, 1, 0,  2, 123,  -5, 0,  -8,  15, 1, 0,
184                      db 2, 122,  -6, 0,  -9,  18, 1, 0,  2, 121,  -6, 0, -10,  20, 1, 0,
185                      db 2, 120,  -7, 0, -11,  22, 2, 0,  2, 119,  -8, 0, -12,  25, 2, 0,
186                      db 3, 117,  -8, 0, -13,  27, 2, 0,  3, 116,  -9, 0, -13,  29, 2, 0,
187                      db 3, 114, -10, 0, -14,  32, 3, 0,  3, 113, -10, 0, -15,  35, 2, 0,
188                      db 3, 111, -11, 0, -15,  37, 3, 0,  3, 109, -11, 0, -16,  40, 3, 0,
189                      db 3, 108, -12, 0, -16,  42, 3, 0,  4, 106, -13, 0, -17,  45, 3, 0,
190                      db 4, 104, -13, 0, -17,  47, 3, 0,  4, 102, -14, 0, -17,  50, 3, 0,
191                      db 4, 100, -14, 0, -17,  52, 3, 0,  4,  98, -15, 0, -18,  55, 4, 0,
192                      db 4,  96, -15, 0, -18,  58, 3, 0,  4,  94, -16, 0, -18,  60, 4, 0,
193                      db 4,  91, -16, 0, -18,  63, 4, 0,  4,  89, -16, 0, -18,  65, 4, 0,
194                      db 4,  87, -17, 0, -18,  68, 4, 0,  4,  85, -17, 0, -18,  70, 4, 0,
195                      db 4,  82, -17, 0, -18,  73, 4, 0,  4,  80, -17, 0, -18,  75, 4, 0,
196                      db 4,  78, -18, 0, -18,  78, 4, 0,  4,  75, -18, 0, -17,  80, 4, 0,
197                      db 4,  73, -18, 0, -17,  82, 4, 0,  4,  70, -18, 0, -17,  85, 4, 0,
198                      db 4,  68, -18, 0, -17,  87, 4, 0,  4,  65, -18, 0, -16,  89, 4, 0,
199                      db 4,  63, -18, 0, -16,  91, 4, 0,  4,  60, -18, 0, -16,  94, 4, 0,
200                      db 3,  58, -18, 0, -15,  96, 4, 0,  4,  55, -18, 0, -15,  98, 4, 0,
201                      db 3,  52, -17, 0, -14, 100, 4, 0,  3,  50, -17, 0, -14, 102, 4, 0,
202                      db 3,  47, -17, 0, -13, 104, 4, 0,  3,  45, -17, 0, -13, 106, 4, 0,
203                      db 3,  42, -16, 0, -12, 108, 3, 0,  3,  40, -16, 0, -11, 109, 3, 0,
204                      db 3,  37, -15, 0, -11, 111, 3, 0,  2,  35, -15, 0, -10, 113, 3, 0,
205                      db 3,  32, -14, 0, -10, 114, 3, 0,  2,  29, -13, 0,  -9, 116, 3, 0,
206                      db 2,  27, -13, 0,  -8, 117, 3, 0,  2,  25, -12, 0,  -8, 119, 2, 0,
207                      db 2,  22, -11, 0,  -7, 120, 2, 0,  1,  20, -10, 0,  -6, 121, 2, 0,
208                      db 1,  18,  -9, 0,  -6, 122, 2, 0,  1,  15,  -8, 0,  -5, 123, 2, 0,
209                      db 1,  13,  -7, 0,  -4, 124, 1, 0,  1,  11,  -6, 0,  -4, 125, 1, 0,
210                      db 1,   8,  -5, 0,  -3, 126, 1, 0,  1,   6,  -4, 0,  -2, 126, 1, 0,
211                      db 0,   4,  -3, 0,  -1, 127, 1, 0,  0,   2,  -1, 0,   0, 127, 0, 0,
212                      db  0,   0,   1, 0, 0, 127,   0,  0,   0,  -1,   2, 0, 0, 127,   0,  0, ; [0, 1)
213                      db  0,  -3,   4, 1, 1, 127,  -2,  0,   0,  -5,   6, 1, 1, 127,  -2,  0,
214                      db  0,  -6,   8, 1, 2, 126,  -3,  0,  -1,  -7,  11, 2, 2, 126,  -4, -1,
215                      db -1,  -8,  13, 2, 3, 125,  -5, -1,  -1, -10,  16, 3, 3, 124,  -6, -1,
216                      db -1, -11,  18, 3, 4, 123,  -7, -1,  -1, -12,  20, 3, 4, 122,  -7, -1,
217                      db -1, -13,  23, 3, 4, 121,  -8, -1,  -2, -14,  25, 4, 5, 120,  -9, -1,
218                      db -1, -15,  27, 4, 5, 119, -10, -1,  -1, -16,  30, 4, 5, 118, -11, -1,
219                      db -2, -17,  33, 5, 6, 116, -12, -1,  -2, -17,  35, 5, 6, 114, -12, -1,
220                      db -2, -18,  38, 5, 6, 113, -13, -1,  -2, -19,  41, 6, 7, 111, -14, -2,
221                      db -2, -19,  43, 6, 7, 110, -15, -2,  -2, -20,  46, 6, 7, 108, -15, -2,
222                      db -2, -20,  49, 6, 7, 106, -16, -2,  -2, -21,  51, 7, 7, 104, -16, -2,
223                      db -2, -21,  54, 7, 7, 102, -17, -2,  -2, -21,  56, 7, 8, 100, -18, -2,
224                      db -2, -22,  59, 7, 8,  98, -18, -2,  -2, -22,  62, 7, 8,  96, -19, -2,
225                      db -2, -22,  64, 7, 8,  94, -19, -2,  -2, -22,  67, 8, 8,  91, -20, -2,
226                      db -2, -22,  69, 8, 8,  89, -20, -2,  -2, -22,  72, 8, 8,  87, -21, -2,
227                      db -2, -21,  74, 8, 8,  84, -21, -2,  -2, -22,  77, 8, 8,  82, -21, -2,
228                      db -2, -21,  79, 8, 8,  79, -21, -2,  -2, -21,  82, 8, 8,  77, -22, -2,
229                      db -2, -21,  84, 8, 8,  74, -21, -2,  -2, -21,  87, 8, 8,  72, -22, -2,
230                      db -2, -20,  89, 8, 8,  69, -22, -2,  -2, -20,  91, 8, 8,  67, -22, -2,
231                      db -2, -19,  94, 8, 7,  64, -22, -2,  -2, -19,  96, 8, 7,  62, -22, -2,
232                      db -2, -18,  98, 8, 7,  59, -22, -2,  -2, -18, 100, 8, 7,  56, -21, -2,
233                      db -2, -17, 102, 7, 7,  54, -21, -2,  -2, -16, 104, 7, 7,  51, -21, -2,
234                      db -2, -16, 106, 7, 6,  49, -20, -2,  -2, -15, 108, 7, 6,  46, -20, -2,
235                      db -2, -15, 110, 7, 6,  43, -19, -2,  -2, -14, 111, 7, 6,  41, -19, -2,
236                      db -1, -13, 113, 6, 5,  38, -18, -2,  -1, -12, 114, 6, 5,  35, -17, -2,
237                      db -1, -12, 116, 6, 5,  33, -17, -2,  -1, -11, 118, 5, 4,  30, -16, -1,
238                      db -1, -10, 119, 5, 4,  27, -15, -1,  -1,  -9, 120, 5, 4,  25, -14, -2,
239                      db -1,  -8, 121, 4, 3,  23, -13, -1,  -1,  -7, 122, 4, 3,  20, -12, -1,
240                      db -1,  -7, 123, 4, 3,  18, -11, -1,  -1,  -6, 124, 3, 3,  16, -10, -1,
241                      db -1,  -5, 125, 3, 2,  13,  -8, -1,  -1,  -4, 126, 2, 2,  11,  -7, -1,
242                      db  0,  -3, 126, 2, 1,   8,  -6,  0,   0,  -2, 127, 1, 1,   6,  -5,  0,
243                      db  0,  -2, 127, 1, 1,   4,  -3,  0,   0,   0, 127, 0, 0,   2,  -1,  0,
244                      db 0, 0, 127,   0, 0,   1,   0, 0,  0, 0, 127,   0, 0,  -1,   2, 0, ; [1, 2)
245                      db 0, 1, 127,  -1, 0,  -3,   4, 0,  0, 1, 126,  -2, 0,  -4,   6, 1,
246                      db 0, 1, 126,  -3, 0,  -5,   8, 1,  0, 1, 125,  -4, 0,  -6,  11, 1,
247                      db 0, 1, 124,  -4, 0,  -7,  13, 1,  0, 2, 123,  -5, 0,  -8,  15, 1,
248                      db 0, 2, 122,  -6, 0,  -9,  18, 1,  0, 2, 121,  -6, 0, -10,  20, 1,
249                      db 0, 2, 120,  -7, 0, -11,  22, 2,  0, 2, 119,  -8, 0, -12,  25, 2,
250                      db 0, 3, 117,  -8, 0, -13,  27, 2,  0, 3, 116,  -9, 0, -13,  29, 2,
251                      db 0, 3, 114, -10, 0, -14,  32, 3,  0, 3, 113, -10, 0, -15,  35, 2,
252                      db 0, 3, 111, -11, 0, -15,  37, 3,  0, 3, 109, -11, 0, -16,  40, 3,
253                      db 0, 3, 108, -12, 0, -16,  42, 3,  0, 4, 106, -13, 0, -17,  45, 3,
254                      db 0, 4, 104, -13, 0, -17,  47, 3,  0, 4, 102, -14, 0, -17,  50, 3,
255                      db 0, 4, 100, -14, 0, -17,  52, 3,  0, 4,  98, -15, 0, -18,  55, 4,
256                      db 0, 4,  96, -15, 0, -18,  58, 3,  0, 4,  94, -16, 0, -18,  60, 4,
257                      db 0, 4,  91, -16, 0, -18,  63, 4,  0, 4,  89, -16, 0, -18,  65, 4,
258                      db 0, 4,  87, -17, 0, -18,  68, 4,  0, 4,  85, -17, 0, -18,  70, 4,
259                      db 0, 4,  82, -17, 0, -18,  73, 4,  0, 4,  80, -17, 0, -18,  75, 4,
260                      db 0, 4,  78, -18, 0, -18,  78, 4,  0, 4,  75, -18, 0, -17,  80, 4,
261                      db 0, 4,  73, -18, 0, -17,  82, 4,  0, 4,  70, -18, 0, -17,  85, 4,
262                      db 0, 4,  68, -18, 0, -17,  87, 4,  0, 4,  65, -18, 0, -16,  89, 4,
263                      db 0, 4,  63, -18, 0, -16,  91, 4,  0, 4,  60, -18, 0, -16,  94, 4,
264                      db 0, 3,  58, -18, 0, -15,  96, 4,  0, 4,  55, -18, 0, -15,  98, 4,
265                      db 0, 3,  52, -17, 0, -14, 100, 4,  0, 3,  50, -17, 0, -14, 102, 4,
266                      db 0, 3,  47, -17, 0, -13, 104, 4,  0, 3,  45, -17, 0, -13, 106, 4,
267                      db 0, 3,  42, -16, 0, -12, 108, 3,  0, 3,  40, -16, 0, -11, 109, 3,
268                      db 0, 3,  37, -15, 0, -11, 111, 3,  0, 2,  35, -15, 0, -10, 113, 3,
269                      db 0, 3,  32, -14, 0, -10, 114, 3,  0, 2,  29, -13, 0,  -9, 116, 3,
270                      db 0, 2,  27, -13, 0,  -8, 117, 3,  0, 2,  25, -12, 0,  -8, 119, 2,
271                      db 0, 2,  22, -11, 0,  -7, 120, 2,  0, 1,  20, -10, 0,  -6, 121, 2,
272                      db 0, 1,  18,  -9, 0,  -6, 122, 2,  0, 1,  15,  -8, 0,  -5, 123, 2,
273                      db 0, 1,  13,  -7, 0,  -4, 124, 1,  0, 1,  11,  -6, 0,  -4, 125, 1,
274                      db 0, 1,   8,  -5, 0,  -3, 126, 1,  0, 1,   6,  -4, 0,  -2, 126, 1,
275                      db 0, 0,   4,  -3, 0,  -1, 127, 1,  0, 0,   2,  -1, 0,   0, 127, 0,
276                      db 0, 0,   2,  -1, 0,   0, 127, 0 ; dummy (replicate row index 191)
277
278; Values that are 0 will never be used
279align 2, db 0
280const dr_intra_derivative, dw       0,    ; Angles:
281                           dw 1023, 0,    ;  3,  93, 183
282                           dw  547,       ;  6,  96, 186
283                           dw  372, 0, 0, ;  9,  99, 189
284                           dw  273,       ; 14, 104, 194
285                           dw  215, 0,    ; 17, 107, 197
286                           dw  178,       ; 20, 110, 200
287                           dw  151, 0,    ; 23, 113, 203 (113 & 203 are base angles)
288                           dw  132,       ; 26, 116, 206
289                           dw  116, 0,    ; 29, 119, 209
290                           dw  102, 0,    ; 32, 122, 212
291                           dw   90,       ; 36, 126, 216
292                           dw   80, 0,    ; 39, 129, 219
293                           dw   71,       ; 42, 132, 222
294                           dw   64, 0,    ; 45, 135, 225 (45 & 135 are base angles)
295                           dw   57,       ; 48, 138, 228
296                           dw   51, 0,    ; 51, 141, 231
297                           dw   45, 0,    ; 54, 144, 234
298                           dw   40,       ; 58, 148, 238
299                           dw   35, 0,    ; 61, 151, 241
300                           dw   31,       ; 64, 154, 244
301                           dw   27, 0,    ; 67, 157, 247 (67 & 157 are base angles)
302                           dw   23,       ; 70, 160, 250
303                           dw   19, 0,    ; 73, 163, 253
304                           dw   15, 0,    ; 76, 166, 256
305                           dw   11, 0,    ; 81, 171, 261
306                           dw    7,       ; 84, 174, 264
307                           dw    3        ; 87, 177, 267
308
309; Taken from the spec. Range is [-2048, 2047], mean is 0 and stddev is 512
310align 2, db 0
311const gaussian_sequence, dw 56,    568,   -180,  172,   124,   -84,   172,   -64,   -900,  24,   820,
312                         dw 224,   1248,  996,   272,   -8,    -916,  -388,  -732,  -104,  -188, 800,
313                         dw 112,   -652,  -320,  -376,  140,   -252,  492,   -168,  44,    -788, 588,
314                         dw -584,  500,   -228,  12,    680,   272,   -476,  972,   -100,  652,  368,
315                         dw 432,   -196,  -720,  -192,  1000,  -332,  652,   -136,  -552,  -604, -4,
316                         dw 192,   -220,  -136,  1000,  -52,   372,   -96,   -624,  124,   -24,  396,
317                         dw 540,   -12,   -104,  640,   464,   244,   -208,  -84,   368,   -528, -740,
318                         dw 248,   -968,  -848,  608,   376,   -60,   -292,  -40,   -156,  252,  -292,
319                         dw 248,   224,   -280,  400,   -244,  244,   -60,   76,    -80,   212,  532,
320                         dw 340,   128,   -36,   824,   -352,  -60,   -264,  -96,   -612,  416,  -704,
321                         dw 220,   -204,  640,   -160,  1220,  -408,  900,   336,   20,    -336, -96,
322                         dw -792,  304,   48,    -28,   -1232, -1172, -448,  104,   -292,  -520, 244,
323                         dw 60,    -948,  0,     -708,  268,   108,   356,   -548,  488,   -344, -136,
324                         dw 488,   -196,  -224,  656,   -236,  -1128, 60,    4,     140,   276,  -676,
325                         dw -376,  168,   -108,  464,   8,     564,   64,    240,   308,   -300, -400,
326                         dw -456,  -136,  56,    120,   -408,  -116,  436,   504,   -232,  328,  844,
327                         dw -164,  -84,   784,   -168,  232,   -224,  348,   -376,  128,   568,  96,
328                         dw -1244, -288,  276,   848,   832,   -360,  656,   464,   -384,  -332, -356,
329                         dw 728,   -388,  160,   -192,  468,   296,   224,   140,   -776,  -100, 280,
330                         dw 4,     196,   44,    -36,   -648,  932,   16,    1428,  28,    528,  808,
331                         dw 772,   20,    268,   88,    -332,  -284,  124,   -384,  -448,  208,  -228,
332                         dw -1044, -328,  660,   380,   -148,  -300,  588,   240,   540,   28,   136,
333                         dw -88,   -436,  256,   296,   -1000, 1400,  0,     -48,   1056,  -136, 264,
334                         dw -528,  -1108, 632,   -484,  -592,  -344,  796,   124,   -668,  -768, 388,
335                         dw 1296,  -232,  -188,  -200,  -288,  -4,    308,   100,   -168,  256,  -500,
336                         dw 204,   -508,  648,   -136,  372,   -272,  -120,  -1004, -552,  -548, -384,
337                         dw 548,   -296,  428,   -108,  -8,    -912,  -324,  -224,  -88,   -112, -220,
338                         dw -100,  996,   -796,  548,   360,   -216,  180,   428,   -200,  -212, 148,
339                         dw 96,    148,   284,   216,   -412,  -320,  120,   -300,  -384,  -604, -572,
340                         dw -332,  -8,    -180,  -176,  696,   116,   -88,   628,   76,    44,   -516,
341                         dw 240,   -208,  -40,   100,   -592,  344,   -308,  -452,  -228,  20,   916,
342                         dw -1752, -136,  -340,  -804,  140,   40,    512,   340,   248,   184,  -492,
343                         dw 896,   -156,  932,   -628,  328,   -688,  -448,  -616,  -752,  -100, 560,
344                         dw -1020, 180,   -800,  -64,   76,    576,   1068,  396,   660,   552,  -108,
345                         dw -28,   320,   -628,  312,   -92,   -92,   -472,  268,   16,    560,  516,
346                         dw -672,  -52,   492,   -100,  260,   384,   284,   292,   304,   -148, 88,
347                         dw -152,  1012,  1064,  -228,  164,   -376,  -684,  592,   -392,  156,  196,
348                         dw -524,  -64,   -884,  160,   -176,  636,   648,   404,   -396,  -436, 864,
349                         dw 424,   -728,  988,   -604,  904,   -592,  296,   -224,  536,   -176, -920,
350                         dw 436,   -48,   1176,  -884,  416,   -776,  -824,  -884,  524,   -548, -564,
351                         dw -68,   -164,  -96,   692,   364,   -692,  -1012, -68,   260,   -480, 876,
352                         dw -1116, 452,   -332,  -352,  892,   -1088, 1220,  -676,  12,    -292, 244,
353                         dw 496,   372,   -32,   280,   200,   112,   -440,  -96,   24,    -644, -184,
354                         dw 56,    -432,  224,   -980,  272,   -260,  144,   -436,  420,   356,  364,
355                         dw -528,  76,    172,   -744,  -368,  404,   -752,  -416,  684,   -688, 72,
356                         dw 540,   416,   92,    444,   480,   -72,   -1416, 164,   -1172, -68,  24,
357                         dw 424,   264,   1040,  128,   -912,  -524,  -356,  64,    876,   -12,  4,
358                         dw -88,   532,   272,   -524,  320,   276,   -508,  940,   24,    -400, -120,
359                         dw 756,   60,    236,   -412,  100,   376,   -484,  400,   -100,  -740, -108,
360                         dw -260,  328,   -268,  224,   -200,  -416,  184,   -604,  -564,  -20,  296,
361                         dw 60,    892,   -888,  60,    164,   68,    -760,  216,   -296,  904,  -336,
362                         dw -28,   404,   -356,  -568,  -208,  -1480, -512,  296,   328,   -360, -164,
363                         dw -1560, -776,  1156,  -428,  164,   -504,  -112,  120,   -216,  -148, -264,
364                         dw 308,   32,    64,    -72,   72,    116,   176,   -64,   -272,  460,  -536,
365                         dw -784,  -280,  348,   108,   -752,  -132,  524,   -540,  -776,  116,  -296,
366                         dw -1196, -288,  -560,  1040,  -472,  116,   -848,  -1116, 116,   636,  696,
367                         dw 284,   -176,  1016,  204,   -864,  -648,  -248,  356,   972,   -584, -204,
368                         dw 264,   880,   528,   -24,   -184,  116,   448,   -144,  828,   524,  212,
369                         dw -212,  52,    12,    200,   268,   -488,  -404,  -880,  824,   -672, -40,
370                         dw 908,   -248,  500,   716,   -576,  492,   -576,  16,    720,   -108, 384,
371                         dw 124,   344,   280,   576,   -500,  252,   104,   -308,  196,   -188, -8,
372                         dw 1268,  296,   1032,  -1196, 436,   316,   372,   -432,  -200,  -660, 704,
373                         dw -224,  596,   -132,  268,   32,    -452,  884,   104,   -1008, 424,  -1348,
374                         dw -280,  4,     -1168, 368,   476,   696,   300,   -8,    24,    180,  -592,
375                         dw -196,  388,   304,   500,   724,   -160,  244,   -84,   272,   -256, -420,
376                         dw 320,   208,   -144,  -156,  156,   364,   452,   28,    540,   316,  220,
377                         dw -644,  -248,  464,   72,    360,   32,    -388,  496,   -680,  -48,  208,
378                         dw -116,  -408,  60,    -604,  -392,  548,   -840,  784,   -460,  656,  -544,
379                         dw -388,  -264,  908,   -800,  -628,  -612,  -568,  572,   -220,  164,  288,
380                         dw -16,   -308,  308,   -112,  -636,  -760,  280,   -668,  432,   364,  240,
381                         dw -196,  604,   340,   384,   196,   592,   -44,   -500,  432,   -580, -132,
382                         dw 636,   -76,   392,   4,     -412,  540,   508,   328,   -356,  -36,  16,
383                         dw -220,  -64,   -248,  -60,   24,    -192,  368,   1040,  92,    -24,  -1044,
384                         dw -32,   40,    104,   148,   192,   -136,  -520,  56,    -816,  -224, 732,
385                         dw 392,   356,   212,   -80,   -424,  -1008, -324,  588,   -1496, 576,  460,
386                         dw -816,  -848,  56,    -580,  -92,   -1372, -112,  -496,  200,   364,  52,
387                         dw -140,  48,    -48,   -60,   84,    72,    40,    132,   -356,  -268, -104,
388                         dw -284,  -404,  732,   -520,  164,   -304,  -540,  120,   328,   -76,  -460,
389                         dw 756,   388,   588,   236,   -436,  -72,   -176,  -404,  -316,  -148, 716,
390                         dw -604,  404,   -72,   -88,   -888,  -68,   944,   88,    -220,  -344, 960,
391                         dw 472,   460,   -232,  704,   120,   832,   -228,  692,   -508,  132,  -476,
392                         dw 844,   -748,  -364,  -44,   1116,  -1104, -1056, 76,    428,   552,  -692,
393                         dw 60,    356,   96,    -384,  -188,  -612,  -576,  736,   508,   892,  352,
394                         dw -1132, 504,   -24,   -352,  324,   332,   -600,  -312,  292,   508,  -144,
395                         dw -8,    484,   48,    284,   -260,  -240,  256,   -100,  -292,  -204, -44,
396                         dw 472,   -204,  908,   -188,  -1000, -256,  92,    1164,  -392,  564,  356,
397                         dw 652,   -28,   -884,  256,   484,   -192,  760,   -176,  376,   -524, -452,
398                         dw -436,  860,   -736,  212,   124,   504,   -476,  468,   76,    -472, 552,
399                         dw -692,  -944,  -620,  740,   -240,  400,   132,   20,    192,   -196, 264,
400                         dw -668,  -1012, -60,   296,   -316,  -828,  76,    -156,  284,   -768, -448,
401                         dw -832,  148,   248,   652,   616,   1236,  288,   -328,  -400,  -124, 588,
402                         dw 220,   520,   -696,  1032,  768,   -740,  -92,   -272,  296,   448,  -464,
403                         dw 412,   -200,  392,   440,   -200,  264,   -152,  -260,  320,   1032, 216,
404                         dw 320,   -8,    -64,   156,   -1016, 1084,  1172,  536,   484,   -432, 132,
405                         dw 372,   -52,   -256,  84,    116,   -352,  48,    116,   304,   -384, 412,
406                         dw 924,   -300,  528,   628,   180,   648,   44,    -980,  -220,  1320, 48,
407                         dw 332,   748,   524,   -268,  -720,  540,   -276,  564,   -344,  -208, -196,
408                         dw 436,   896,   88,    -392,  132,   80,    -964,  -288,  568,   56,   -48,
409                         dw -456,  888,   8,     552,   -156,  -292,  948,   288,   128,   -716, -292,
410                         dw 1192,  -152,  876,   352,   -600,  -260,  -812,  -468,  -28,   -120, -32,
411                         dw -44,   1284,  496,   192,   464,   312,   -76,   -516,  -380,  -456, -1012,
412                         dw -48,   308,   -156,  36,    492,   -156,  -808,  188,   1652,  68,   -120,
413                         dw -116,  316,   160,   -140,  352,   808,   -416,  592,   316,   -480, 56,
414                         dw 528,   -204,  -568,  372,   -232,  752,   -344,  744,   -4,    324,  -416,
415                         dw -600,  768,   268,   -248,  -88,   -132,  -420,  -432,  80,    -288, 404,
416                         dw -316,  -1216, -588,  520,   -108,  92,    -320,  368,   -480,  -216, -92,
417                         dw 1688,  -300,  180,   1020,  -176,  820,   -68,   -228,  -260,  436,  -904,
418                         dw 20,    40,    -508,  440,   -736,  312,   332,   204,   760,   -372, 728,
419                         dw 96,    -20,   -632,  -520,  -560,  336,   1076,  -64,   -532,  776,  584,
420                         dw 192,   396,   -728,  -520,  276,   -188,  80,    -52,   -612,  -252, -48,
421                         dw 648,   212,   -688,  228,   -52,   -260,  428,   -412,  -272,  -404, 180,
422                         dw 816,   -796,  48,    152,   484,   -88,   -216,  988,   696,   188,  -528,
423                         dw 648,   -116,  -180,  316,   476,   12,    -564,  96,    476,   -252, -364,
424                         dw -376,  -392,  556,   -256,  -576,  260,   -352,  120,   -16,   -136, -260,
425                         dw -492,  72,    556,   660,   580,   616,   772,   436,   424,   -32,  -324,
426                         dw -1268, 416,   -324,  -80,   920,   160,   228,   724,   32,    -516, 64,
427                         dw 384,   68,    -128,  136,   240,   248,   -204,  -68,   252,   -932, -120,
428                         dw -480,  -628,  -84,   192,   852,   -404,  -288,  -132,  204,   100,  168,
429                         dw -68,   -196,  -868,  460,   1080,  380,   -80,   244,   0,     484,  -888,
430                         dw 64,    184,   352,   600,   460,   164,   604,   -196,  320,   -64,  588,
431                         dw -184,  228,   12,    372,   48,    -848,  -344,  224,   208,   -200, 484,
432                         dw 128,   -20,   272,   -468,  -840,  384,   256,   -720,  -520,  -464, -580,
433                         dw 112,   -120,  644,   -356,  -208,  -608,  -528,  704,   560,   -424, 392,
434                         dw 828,   40,    84,    200,   -152,  0,     -144,  584,   280,   -120, 80,
435                         dw -556,  -972,  -196,  -472,  724,   80,    168,   -32,   88,    160,  -688,
436                         dw 0,     160,   356,   372,   -776,  740,   -128,  676,   -248,  -480, 4,
437                         dw -364,  96,    544,   232,   -1032, 956,   236,   356,   20,    -40,  300,
438                         dw 24,    -676,  -596,  132,   1120,  -104,  532,   -1096, 568,   648,  444,
439                         dw 508,   380,   188,   -376,  -604,  1488,  424,   24,    756,   -220, -192,
440                         dw 716,   120,   920,   688,   168,   44,    -460,  568,   284,   1144, 1160,
441                         dw 600,   424,   888,   656,   -356,  -320,  220,   316,   -176,  -724, -188,
442                         dw -816,  -628,  -348,  -228,  -380,  1012,  -452,  -660,  736,   928,  404,
443                         dw -696,  -72,   -268,  -892,  128,   184,   -344,  -780,  360,   336,  400,
444                         dw 344,   428,   548,   -112,  136,   -228,  -216,  -820,  -516,  340,  92,
445                         dw -136,  116,   -300,  376,   -244,  100,   -316,  -520,  -284,  -12,  824,
446                         dw 164,   -548,  -180,  -128,  116,   -924,  -828,  268,   -368,  -580, 620,
447                         dw 192,   160,   0,     -1676, 1068,  424,   -56,   -360,  468,   -156, 720,
448                         dw 288,   -528,  556,   -364,  548,   -148,  504,   316,   152,   -648, -620,
449                         dw -684,  -24,   -376,  -384,  -108,  -920,  -1032, 768,   180,   -264, -508,
450                         dw -1268, -260,  -60,   300,   -240,  988,   724,   -376,  -576,  -212, -736,
451                         dw 556,   192,   1092,  -620,  -880,  376,   -56,   -4,    -216,  -32,  836,
452                         dw 268,   396,   1332,  864,   -600,  100,   56,    -412,  -92,   356,  180,
453                         dw 884,   -468,  -436,  292,   -388,  -804,  -704,  -840,  368,   -348, 140,
454                         dw -724,  1536,  940,   372,   112,   -372,  436,   -480,  1136,  296,  -32,
455                         dw -228,  132,   -48,   -220,  868,   -1016, -60,   -1044, -464,  328,  916,
456                         dw 244,   12,    -736,  -296,  360,   468,   -376,  -108,  -92,   788,  368,
457                         dw -56,   544,   400,   -672,  -420,  728,   16,    320,   44,    -284, -380,
458                         dw -796,  488,   132,   204,   -596,  -372,  88,    -152,  -908,  -636, -572,
459                         dw -624,  -116,  -692,  -200,  -56,   276,   -88,   484,   -324,  948,  864,
460                         dw 1000,  -456,  -184,  -276,  292,   -296,  156,   676,   320,   160,  908,
461                         dw -84,   -1236, -288,  -116,  260,   -372,  -644,  732,   -756,  -96,  84,
462                         dw 344,   -520,  348,   -688,  240,   -84,   216,   -1044, -136,  -676, -396,
463                         dw -1500, 960,   -40,   176,   168,   1516,  420,   -504,  -344,  -364, -360,
464                         dw 1216,  -940,  -380,  -212,  252,   -660,  -708,  484,   -444,  -152, 928,
465                         dw -120,  1112,  476,   -260,  560,   -148,  -344,  108,   -196,  228,  -288,
466                         dw 504,   560,   -328,  -88,   288,   -1008, 460,   -228,  468,   -836, -196,
467                         dw 76,    388,   232,   412,   -1168, -716,  -644,  756,   -172,  -356, -504,
468                         dw 116,   432,   528,   48,    476,   -168,  -608,  448,   160,   -532, -272,
469                         dw 28,    -676,  -12,   828,   980,   456,   520,   104,   -104,  256,  -344,
470                         dw -4,    -28,   -368,  -52,   -524,  -572,  -556,  -200,  768,   1124, -208,
471                         dw -512,  176,   232,   248,   -148,  -888,  604,   -600,  -304,  804,  -156,
472                         dw -212,  488,   -192,  -804,  -256,  368,   -360,  -916,  -328,  228,  -240,
473                         dw -448,  -472,  856,   -556,  -364,  572,   -12,   -156,  -368,  -340, 432,
474                         dw 252,   -752,  -152,  288,   268,   -580,  -848,  -592,  108,   -76,  244,
475                         dw 312,   -716,  592,   -80,   436,   360,   4,     -248,  160,   516,  584,
476                         dw 732,   44,    -468,  -280,  -292,  -156,  -588,  28,    308,   912,  24,
477                         dw 124,   156,   180,   -252,  944,   -924,  -772,  -520,  -428,  -624, 300,
478                         dw -212,  -1144, 32,    -724,  800,   -1128, -212,  -1288, -848,  180,  -416,
479                         dw 440,   192,   -576,  -792,  -76,   -1080, 80,    -532,  -352,  -132, 380,
480                         dw -820,  148,   1112,  128,   164,   456,   700,   -924,  144,   -668, -384,
481                         dw 648,   -832,  508,   552,   -52,   -100,  -656,  208,   -568,  748,  -88,
482                         dw 680,   232,   300,   192,   -408,  -1012, -152,  -252,  -268,  272,  -876,
483                         dw -664,  -648,  -332,  -136,  16,    12,    1152,  -28,   332,   -536, 320,
484                         dw -672,  -460,  -316,  532,   -260,  228,   -40,   1052,  -816,  180,  88,
485                         dw -496,  -556,  -672,  -368,  428,   92,    356,   404,   -408,  252,  196,
486                         dw -176,  -556,  792,   268,   32,    372,   40,    96,    -332,  328,  120,
487                         dw 372,   -900,  -40,   472,   -264,  -592,  952,   128,   656,   112,  664,
488                         dw -232,  420,   4,     -344,  -464,  556,   244,   -416,  -32,   252,  0,
489                         dw -412,  188,   -696,  508,   -476,  324,   -1096, 656,   -312,  560,  264,
490                         dw -136,  304,   160,   -64,   -580,  248,   336,   -720,  560,   -348, -288,
491                         dw -276,  -196,  -500,  852,   -544,  -236,  -1128, -992,  -776,  116,  56,
492                         dw 52,    860,   884,   212,   -12,   168,   1020,  512,   -552,  924,  -148,
493                         dw 716,   188,   164,   -340,  -520,  -184,  880,   -152,  -680,  -208, -1156,
494                         dw -300,  -528,  -472,  364,   100,   -744,  -1056, -32,   540,   280,  144,
495                         dw -676,  -32,   -232,  -280,  -224,  96,    568,   -76,   172,   148,  148,
496                         dw 104,   32,    -296,  -32,   788,   -80,   32,    -16,   280,   288,  944,
497                         dw 428,   -484
498
499align 8, db 0
500const resize_filter, db 0,  0,  0, -128,    0,  0,  0, 0, 0,  0,  1, -128,   -2,  1,  0, 0,
501                     db 0, -1,  3, -127,   -4,  2, -1, 0, 0, -1,  4, -127,   -6,  3, -1, 0,
502                     db 0, -2,  6, -126,   -8,  3, -1, 0, 0, -2,  7, -125,  -11,  4, -1, 0,
503                     db 1, -2,  8, -125,  -13,  5, -2, 0, 1, -3,  9, -124,  -15,  6, -2, 0,
504                     db 1, -3, 10, -123,  -18,  6, -2, 1, 1, -3, 11, -122,  -20,  7, -3, 1,
505                     db 1, -4, 12, -121,  -22,  8, -3, 1, 1, -4, 13, -120,  -25,  9, -3, 1,
506                     db 1, -4, 14, -118,  -28,  9, -3, 1, 1, -4, 15, -117,  -30, 10, -4, 1,
507                     db 1, -5, 16, -116,  -32, 11, -4, 1, 1, -5, 16, -114,  -35, 12, -4, 1,
508                     db 1, -5, 17, -112,  -38, 12, -4, 1, 1, -5, 18, -111,  -40, 13, -5, 1,
509                     db 1, -5, 18, -109,  -43, 14, -5, 1, 1, -6, 19, -107,  -45, 14, -5, 1,
510                     db 1, -6, 19, -105,  -48, 15, -5, 1, 1, -6, 19, -103,  -51, 16, -5, 1,
511                     db 1, -6, 20, -101,  -53, 16, -6, 1, 1, -6, 20,  -99,  -56, 17, -6, 1,
512                     db 1, -6, 20,  -97,  -58, 17, -6, 1, 1, -6, 20,  -95,  -61, 18, -6, 1,
513                     db 2, -7, 20,  -93,  -64, 18, -6, 2, 2, -7, 20,  -91,  -66, 19, -6, 1,
514                     db 2, -7, 20,  -88,  -69, 19, -6, 1, 2, -7, 20,  -86,  -71, 19, -6, 1,
515                     db 2, -7, 20,  -84,  -74, 20, -7, 2, 2, -7, 20,  -81,  -76, 20, -7, 1,
516                     db 2, -7, 20,  -79,  -79, 20, -7, 2, 1, -7, 20,  -76,  -81, 20, -7, 2,
517                     db 2, -7, 20,  -74,  -84, 20, -7, 2, 1, -6, 19,  -71,  -86, 20, -7, 2,
518                     db 1, -6, 19,  -69,  -88, 20, -7, 2, 1, -6, 19,  -66,  -91, 20, -7, 2,
519                     db 2, -6, 18,  -64,  -93, 20, -7, 2, 1, -6, 18,  -61,  -95, 20, -6, 1,
520                     db 1, -6, 17,  -58,  -97, 20, -6, 1, 1, -6, 17,  -56,  -99, 20, -6, 1,
521                     db 1, -6, 16,  -53, -101, 20, -6, 1, 1, -5, 16,  -51, -103, 19, -6, 1,
522                     db 1, -5, 15,  -48, -105, 19, -6, 1, 1, -5, 14,  -45, -107, 19, -6, 1,
523                     db 1, -5, 14,  -43, -109, 18, -5, 1, 1, -5, 13,  -40, -111, 18, -5, 1,
524                     db 1, -4, 12,  -38, -112, 17, -5, 1, 1, -4, 12,  -35, -114, 16, -5, 1,
525                     db 1, -4, 11,  -32, -116, 16, -5, 1, 1, -4, 10,  -30, -117, 15, -4, 1,
526                     db 1, -3,  9,  -28, -118, 14, -4, 1, 1, -3,  9,  -25, -120, 13, -4, 1,
527                     db 1, -3,  8,  -22, -121, 12, -4, 1, 1, -3,  7,  -20, -122, 11, -3, 1,
528                     db 1, -2,  6,  -18, -123, 10, -3, 1, 0, -2,  6,  -15, -124,  9, -3, 1,
529                     db 0, -2,  5,  -13, -125,  8, -2, 1, 0, -1,  4,  -11, -125,  7, -2, 0,
530                     db 0, -1,  3,   -8, -126,  6, -2, 0, 0, -1,  3,   -6, -127,  4, -1, 0,
531                     db 0, -1,  2,   -4, -127,  3, -1, 0, 0,  0,  1,   -2, -128,  1,  0, 0,
532
533align 16, db 0    ; Unused
534const obmc_masks, db  0,  0,
535                  ; 2
536                  db 19,  0,
537                  ; 4
538                  db 25, 14,  5,  0,
539                  ; 8
540                  db 28, 22, 16, 11,  7,  3,  0,  0,
541                  ; 16
542                  db 30, 27, 24, 21, 18, 15, 12, 10,  8,  6,  4,  3,  0,  0,  0,  0,
543                  ; 32
544                  db 31, 29, 28, 26, 24, 23, 21, 20, 19, 17, 16, 14, 13, 12, 11,  9,
545                  db  8,  7,  6,  5,  4,  4,  3,  2,  0,  0,  0,  0,  0,  0,  0,  0,
546