Created
December 19, 2022 22:48
-
-
Save mmilata/394ee34118741c52da1610d1f8219bc8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extern "C" { | |
fn memset(_: *mut cty::c_void, _: cty::c_int, _: cty::c_ulong) -> *mut cty::c_void; | |
} | |
pub type size_t = cty::c_ulong; | |
pub type int16_t = cty::c_short; | |
pub type int32_t = cty::c_int; | |
pub type uint8_t = cty::c_uchar; | |
pub type uint16_t = cty::c_ushort; | |
pub type uint32_t = cty::c_uint; | |
pub type jd_yuv_t = uint8_t; | |
pub type JRESULT = cty::c_uint; | |
pub const JDR_FMT3: JRESULT = 8; | |
pub const JDR_FMT2: JRESULT = 7; | |
pub const JDR_FMT1: JRESULT = 6; | |
pub const JDR_PAR: JRESULT = 5; | |
pub const JDR_MEM2: JRESULT = 4; | |
pub const JDR_MEM1: JRESULT = 3; | |
pub const JDR_INP: JRESULT = 2; | |
pub const JDR_INTR: JRESULT = 1; | |
pub const JDR_OK: JRESULT = 0; | |
#[derive(Copy, Clone)] | |
#[repr(C)] | |
pub struct JRECT { | |
pub left: uint16_t, | |
pub right: uint16_t, | |
pub top: uint16_t, | |
pub bottom: uint16_t, | |
} | |
#[derive(Copy, Clone)] | |
#[repr(C)] | |
pub struct JDEC { | |
pub dctr: size_t, | |
pub dptr: *mut uint8_t, | |
pub inbuf: *mut uint8_t, | |
pub dbit: uint8_t, | |
pub scale: uint8_t, | |
pub msx: uint8_t, | |
pub msy: uint8_t, | |
pub qtid: [uint8_t; 3], | |
pub ncomp: uint8_t, | |
pub dcv: [int16_t; 3], | |
pub nrst: uint16_t, | |
pub width: uint16_t, | |
pub height: uint16_t, | |
pub huffbits: [[*mut uint8_t; 2]; 2], | |
pub huffcode: [[*mut uint16_t; 2]; 2], | |
pub huffcode_len: [[uint16_t; 2]; 2], | |
pub huffdata: [[*mut uint8_t; 2]; 2], | |
pub qttbl: [*mut int32_t; 4], | |
pub workbuf: *mut cty::c_void, | |
pub mcubuf: *mut jd_yuv_t, | |
pub pool: *mut cty::c_void, | |
pub sz_pool: size_t, | |
pub infunc: Option<unsafe extern "C" fn(*mut JDEC, *mut uint8_t, size_t) -> size_t>, | |
pub device: *mut cty::c_void, | |
} | |
static mut Zig: [uint8_t; 64] = [ | |
0 as cty::c_int as uint8_t, | |
1 as cty::c_int as uint8_t, | |
8 as cty::c_int as uint8_t, | |
16 as cty::c_int as uint8_t, | |
9 as cty::c_int as uint8_t, | |
2 as cty::c_int as uint8_t, | |
3 as cty::c_int as uint8_t, | |
10 as cty::c_int as uint8_t, | |
17 as cty::c_int as uint8_t, | |
24 as cty::c_int as uint8_t, | |
32 as cty::c_int as uint8_t, | |
25 as cty::c_int as uint8_t, | |
18 as cty::c_int as uint8_t, | |
11 as cty::c_int as uint8_t, | |
4 as cty::c_int as uint8_t, | |
5 as cty::c_int as uint8_t, | |
12 as cty::c_int as uint8_t, | |
19 as cty::c_int as uint8_t, | |
26 as cty::c_int as uint8_t, | |
33 as cty::c_int as uint8_t, | |
40 as cty::c_int as uint8_t, | |
48 as cty::c_int as uint8_t, | |
41 as cty::c_int as uint8_t, | |
34 as cty::c_int as uint8_t, | |
27 as cty::c_int as uint8_t, | |
20 as cty::c_int as uint8_t, | |
13 as cty::c_int as uint8_t, | |
6 as cty::c_int as uint8_t, | |
7 as cty::c_int as uint8_t, | |
14 as cty::c_int as uint8_t, | |
21 as cty::c_int as uint8_t, | |
28 as cty::c_int as uint8_t, | |
35 as cty::c_int as uint8_t, | |
42 as cty::c_int as uint8_t, | |
49 as cty::c_int as uint8_t, | |
56 as cty::c_int as uint8_t, | |
57 as cty::c_int as uint8_t, | |
50 as cty::c_int as uint8_t, | |
43 as cty::c_int as uint8_t, | |
36 as cty::c_int as uint8_t, | |
29 as cty::c_int as uint8_t, | |
22 as cty::c_int as uint8_t, | |
15 as cty::c_int as uint8_t, | |
23 as cty::c_int as uint8_t, | |
30 as cty::c_int as uint8_t, | |
37 as cty::c_int as uint8_t, | |
44 as cty::c_int as uint8_t, | |
51 as cty::c_int as uint8_t, | |
58 as cty::c_int as uint8_t, | |
59 as cty::c_int as uint8_t, | |
52 as cty::c_int as uint8_t, | |
45 as cty::c_int as uint8_t, | |
38 as cty::c_int as uint8_t, | |
31 as cty::c_int as uint8_t, | |
39 as cty::c_int as uint8_t, | |
46 as cty::c_int as uint8_t, | |
53 as cty::c_int as uint8_t, | |
60 as cty::c_int as uint8_t, | |
61 as cty::c_int as uint8_t, | |
54 as cty::c_int as uint8_t, | |
47 as cty::c_int as uint8_t, | |
55 as cty::c_int as uint8_t, | |
62 as cty::c_int as uint8_t, | |
63 as cty::c_int as uint8_t, | |
]; | |
static mut Ipsf: [uint16_t; 64] = [ | |
(1.00000f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.38704f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.30656f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.17588f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.00000f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.78570f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.54120f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.27590f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.38704f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.92388f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.81226f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.63099f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.38704f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.08979f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.75066f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.38268f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.30656f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.81226f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.70711f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.53636f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.30656f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.02656f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.70711f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.36048f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.17588f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.63099f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.53636f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.38268f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.17588f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.92388f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.63638f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.32442f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.00000f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.38704f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.30656f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.17588f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.00000f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.78570f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.54120f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.27590f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.78570f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.08979f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(1.02656f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.92388f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.78570f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.61732f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.42522f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.21677f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.54120f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.75066f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.70711f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.63638f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.54120f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.42522f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.29290f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.14932f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.27590f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.38268f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.36048f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.32442f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.27590f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.21678f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.14932f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
(0.07612f64 * 8192 as cty::c_int as cty::c_double) as uint16_t, | |
]; | |
static mut Clip8: [uint8_t; 1024] = [ | |
0 as cty::c_int as uint8_t, | |
1 as cty::c_int as uint8_t, | |
2 as cty::c_int as uint8_t, | |
3 as cty::c_int as uint8_t, | |
4 as cty::c_int as uint8_t, | |
5 as cty::c_int as uint8_t, | |
6 as cty::c_int as uint8_t, | |
7 as cty::c_int as uint8_t, | |
8 as cty::c_int as uint8_t, | |
9 as cty::c_int as uint8_t, | |
10 as cty::c_int as uint8_t, | |
11 as cty::c_int as uint8_t, | |
12 as cty::c_int as uint8_t, | |
13 as cty::c_int as uint8_t, | |
14 as cty::c_int as uint8_t, | |
15 as cty::c_int as uint8_t, | |
16 as cty::c_int as uint8_t, | |
17 as cty::c_int as uint8_t, | |
18 as cty::c_int as uint8_t, | |
19 as cty::c_int as uint8_t, | |
20 as cty::c_int as uint8_t, | |
21 as cty::c_int as uint8_t, | |
22 as cty::c_int as uint8_t, | |
23 as cty::c_int as uint8_t, | |
24 as cty::c_int as uint8_t, | |
25 as cty::c_int as uint8_t, | |
26 as cty::c_int as uint8_t, | |
27 as cty::c_int as uint8_t, | |
28 as cty::c_int as uint8_t, | |
29 as cty::c_int as uint8_t, | |
30 as cty::c_int as uint8_t, | |
31 as cty::c_int as uint8_t, | |
32 as cty::c_int as uint8_t, | |
33 as cty::c_int as uint8_t, | |
34 as cty::c_int as uint8_t, | |
35 as cty::c_int as uint8_t, | |
36 as cty::c_int as uint8_t, | |
37 as cty::c_int as uint8_t, | |
38 as cty::c_int as uint8_t, | |
39 as cty::c_int as uint8_t, | |
40 as cty::c_int as uint8_t, | |
41 as cty::c_int as uint8_t, | |
42 as cty::c_int as uint8_t, | |
43 as cty::c_int as uint8_t, | |
44 as cty::c_int as uint8_t, | |
45 as cty::c_int as uint8_t, | |
46 as cty::c_int as uint8_t, | |
47 as cty::c_int as uint8_t, | |
48 as cty::c_int as uint8_t, | |
49 as cty::c_int as uint8_t, | |
50 as cty::c_int as uint8_t, | |
51 as cty::c_int as uint8_t, | |
52 as cty::c_int as uint8_t, | |
53 as cty::c_int as uint8_t, | |
54 as cty::c_int as uint8_t, | |
55 as cty::c_int as uint8_t, | |
56 as cty::c_int as uint8_t, | |
57 as cty::c_int as uint8_t, | |
58 as cty::c_int as uint8_t, | |
59 as cty::c_int as uint8_t, | |
60 as cty::c_int as uint8_t, | |
61 as cty::c_int as uint8_t, | |
62 as cty::c_int as uint8_t, | |
63 as cty::c_int as uint8_t, | |
64 as cty::c_int as uint8_t, | |
65 as cty::c_int as uint8_t, | |
66 as cty::c_int as uint8_t, | |
67 as cty::c_int as uint8_t, | |
68 as cty::c_int as uint8_t, | |
69 as cty::c_int as uint8_t, | |
70 as cty::c_int as uint8_t, | |
71 as cty::c_int as uint8_t, | |
72 as cty::c_int as uint8_t, | |
73 as cty::c_int as uint8_t, | |
74 as cty::c_int as uint8_t, | |
75 as cty::c_int as uint8_t, | |
76 as cty::c_int as uint8_t, | |
77 as cty::c_int as uint8_t, | |
78 as cty::c_int as uint8_t, | |
79 as cty::c_int as uint8_t, | |
80 as cty::c_int as uint8_t, | |
81 as cty::c_int as uint8_t, | |
82 as cty::c_int as uint8_t, | |
83 as cty::c_int as uint8_t, | |
84 as cty::c_int as uint8_t, | |
85 as cty::c_int as uint8_t, | |
86 as cty::c_int as uint8_t, | |
87 as cty::c_int as uint8_t, | |
88 as cty::c_int as uint8_t, | |
89 as cty::c_int as uint8_t, | |
90 as cty::c_int as uint8_t, | |
91 as cty::c_int as uint8_t, | |
92 as cty::c_int as uint8_t, | |
93 as cty::c_int as uint8_t, | |
94 as cty::c_int as uint8_t, | |
95 as cty::c_int as uint8_t, | |
96 as cty::c_int as uint8_t, | |
97 as cty::c_int as uint8_t, | |
98 as cty::c_int as uint8_t, | |
99 as cty::c_int as uint8_t, | |
100 as cty::c_int as uint8_t, | |
101 as cty::c_int as uint8_t, | |
102 as cty::c_int as uint8_t, | |
103 as cty::c_int as uint8_t, | |
104 as cty::c_int as uint8_t, | |
105 as cty::c_int as uint8_t, | |
106 as cty::c_int as uint8_t, | |
107 as cty::c_int as uint8_t, | |
108 as cty::c_int as uint8_t, | |
109 as cty::c_int as uint8_t, | |
110 as cty::c_int as uint8_t, | |
111 as cty::c_int as uint8_t, | |
112 as cty::c_int as uint8_t, | |
113 as cty::c_int as uint8_t, | |
114 as cty::c_int as uint8_t, | |
115 as cty::c_int as uint8_t, | |
116 as cty::c_int as uint8_t, | |
117 as cty::c_int as uint8_t, | |
118 as cty::c_int as uint8_t, | |
119 as cty::c_int as uint8_t, | |
120 as cty::c_int as uint8_t, | |
121 as cty::c_int as uint8_t, | |
122 as cty::c_int as uint8_t, | |
123 as cty::c_int as uint8_t, | |
124 as cty::c_int as uint8_t, | |
125 as cty::c_int as uint8_t, | |
126 as cty::c_int as uint8_t, | |
127 as cty::c_int as uint8_t, | |
128 as cty::c_int as uint8_t, | |
129 as cty::c_int as uint8_t, | |
130 as cty::c_int as uint8_t, | |
131 as cty::c_int as uint8_t, | |
132 as cty::c_int as uint8_t, | |
133 as cty::c_int as uint8_t, | |
134 as cty::c_int as uint8_t, | |
135 as cty::c_int as uint8_t, | |
136 as cty::c_int as uint8_t, | |
137 as cty::c_int as uint8_t, | |
138 as cty::c_int as uint8_t, | |
139 as cty::c_int as uint8_t, | |
140 as cty::c_int as uint8_t, | |
141 as cty::c_int as uint8_t, | |
142 as cty::c_int as uint8_t, | |
143 as cty::c_int as uint8_t, | |
144 as cty::c_int as uint8_t, | |
145 as cty::c_int as uint8_t, | |
146 as cty::c_int as uint8_t, | |
147 as cty::c_int as uint8_t, | |
148 as cty::c_int as uint8_t, | |
149 as cty::c_int as uint8_t, | |
150 as cty::c_int as uint8_t, | |
151 as cty::c_int as uint8_t, | |
152 as cty::c_int as uint8_t, | |
153 as cty::c_int as uint8_t, | |
154 as cty::c_int as uint8_t, | |
155 as cty::c_int as uint8_t, | |
156 as cty::c_int as uint8_t, | |
157 as cty::c_int as uint8_t, | |
158 as cty::c_int as uint8_t, | |
159 as cty::c_int as uint8_t, | |
160 as cty::c_int as uint8_t, | |
161 as cty::c_int as uint8_t, | |
162 as cty::c_int as uint8_t, | |
163 as cty::c_int as uint8_t, | |
164 as cty::c_int as uint8_t, | |
165 as cty::c_int as uint8_t, | |
166 as cty::c_int as uint8_t, | |
167 as cty::c_int as uint8_t, | |
168 as cty::c_int as uint8_t, | |
169 as cty::c_int as uint8_t, | |
170 as cty::c_int as uint8_t, | |
171 as cty::c_int as uint8_t, | |
172 as cty::c_int as uint8_t, | |
173 as cty::c_int as uint8_t, | |
174 as cty::c_int as uint8_t, | |
175 as cty::c_int as uint8_t, | |
176 as cty::c_int as uint8_t, | |
177 as cty::c_int as uint8_t, | |
178 as cty::c_int as uint8_t, | |
179 as cty::c_int as uint8_t, | |
180 as cty::c_int as uint8_t, | |
181 as cty::c_int as uint8_t, | |
182 as cty::c_int as uint8_t, | |
183 as cty::c_int as uint8_t, | |
184 as cty::c_int as uint8_t, | |
185 as cty::c_int as uint8_t, | |
186 as cty::c_int as uint8_t, | |
187 as cty::c_int as uint8_t, | |
188 as cty::c_int as uint8_t, | |
189 as cty::c_int as uint8_t, | |
190 as cty::c_int as uint8_t, | |
191 as cty::c_int as uint8_t, | |
192 as cty::c_int as uint8_t, | |
193 as cty::c_int as uint8_t, | |
194 as cty::c_int as uint8_t, | |
195 as cty::c_int as uint8_t, | |
196 as cty::c_int as uint8_t, | |
197 as cty::c_int as uint8_t, | |
198 as cty::c_int as uint8_t, | |
199 as cty::c_int as uint8_t, | |
200 as cty::c_int as uint8_t, | |
201 as cty::c_int as uint8_t, | |
202 as cty::c_int as uint8_t, | |
203 as cty::c_int as uint8_t, | |
204 as cty::c_int as uint8_t, | |
205 as cty::c_int as uint8_t, | |
206 as cty::c_int as uint8_t, | |
207 as cty::c_int as uint8_t, | |
208 as cty::c_int as uint8_t, | |
209 as cty::c_int as uint8_t, | |
210 as cty::c_int as uint8_t, | |
211 as cty::c_int as uint8_t, | |
212 as cty::c_int as uint8_t, | |
213 as cty::c_int as uint8_t, | |
214 as cty::c_int as uint8_t, | |
215 as cty::c_int as uint8_t, | |
216 as cty::c_int as uint8_t, | |
217 as cty::c_int as uint8_t, | |
218 as cty::c_int as uint8_t, | |
219 as cty::c_int as uint8_t, | |
220 as cty::c_int as uint8_t, | |
221 as cty::c_int as uint8_t, | |
222 as cty::c_int as uint8_t, | |
223 as cty::c_int as uint8_t, | |
224 as cty::c_int as uint8_t, | |
225 as cty::c_int as uint8_t, | |
226 as cty::c_int as uint8_t, | |
227 as cty::c_int as uint8_t, | |
228 as cty::c_int as uint8_t, | |
229 as cty::c_int as uint8_t, | |
230 as cty::c_int as uint8_t, | |
231 as cty::c_int as uint8_t, | |
232 as cty::c_int as uint8_t, | |
233 as cty::c_int as uint8_t, | |
234 as cty::c_int as uint8_t, | |
235 as cty::c_int as uint8_t, | |
236 as cty::c_int as uint8_t, | |
237 as cty::c_int as uint8_t, | |
238 as cty::c_int as uint8_t, | |
239 as cty::c_int as uint8_t, | |
240 as cty::c_int as uint8_t, | |
241 as cty::c_int as uint8_t, | |
242 as cty::c_int as uint8_t, | |
243 as cty::c_int as uint8_t, | |
244 as cty::c_int as uint8_t, | |
245 as cty::c_int as uint8_t, | |
246 as cty::c_int as uint8_t, | |
247 as cty::c_int as uint8_t, | |
248 as cty::c_int as uint8_t, | |
249 as cty::c_int as uint8_t, | |
250 as cty::c_int as uint8_t, | |
251 as cty::c_int as uint8_t, | |
252 as cty::c_int as uint8_t, | |
253 as cty::c_int as uint8_t, | |
254 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
255 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
0 as cty::c_int as uint8_t, | |
]; | |
unsafe extern "C" fn alloc_pool(mut jd: *mut JDEC, mut ndata: size_t) -> *mut cty::c_void { | |
unsafe { | |
let mut rp: *mut cty::c_char = 0 as *mut cty::c_char; | |
ndata = ndata.wrapping_add(3 as cty::c_int as cty::c_ulong) | |
& !(3 as cty::c_int) as cty::c_ulong; | |
if (*jd).sz_pool >= ndata { | |
let ref mut fresh0 = (*jd).sz_pool; | |
*fresh0 = (*fresh0 as cty::c_ulong).wrapping_sub(ndata) as size_t as size_t; | |
rp = (*jd).pool as *mut cty::c_char; | |
let ref mut fresh1 = (*jd).pool; | |
*fresh1 = rp.offset(ndata as isize) as *mut cty::c_void; | |
} | |
return rp as *mut cty::c_void; | |
} | |
} | |
unsafe extern "C" fn create_qt_tbl( | |
mut jd: *mut JDEC, | |
mut data: *const uint8_t, | |
mut ndata: size_t, | |
) -> JRESULT { | |
unsafe { | |
let mut i: cty::c_uint = 0; | |
let mut zi: cty::c_uint = 0; | |
let mut d: uint8_t = 0; | |
let mut pb: *mut int32_t = 0 as *mut int32_t; | |
while ndata != 0 { | |
if ndata < 65 as cty::c_int as cty::c_ulong { | |
return JDR_FMT1; | |
} | |
ndata = (ndata as cty::c_ulong).wrapping_sub(65 as cty::c_int as cty::c_ulong) as size_t | |
as size_t; | |
let fresh2 = data; | |
data = data.offset(1); | |
d = *fresh2; | |
if d as cty::c_int & 0xf0 as cty::c_int != 0 { | |
return JDR_FMT1; | |
} | |
i = (d as cty::c_int & 3 as cty::c_int) as cty::c_uint; | |
pb = alloc_pool( | |
jd, | |
(64 as cty::c_int as cty::c_ulong) | |
.wrapping_mul(::core::mem::size_of::<int32_t>() as cty::c_ulong), | |
) as *mut int32_t; | |
if pb.is_null() { | |
return JDR_MEM1; | |
} | |
let ref mut fresh3 = (*jd).qttbl[i as usize]; | |
*fresh3 = pb; | |
i = 0 as cty::c_int as cty::c_uint; | |
while i < 64 as cty::c_int as cty::c_uint { | |
zi = Zig[i as usize] as cty::c_uint; | |
let fresh4 = data; | |
data = data.offset(1); | |
*pb.offset(zi as isize) = | |
(*fresh4 as uint32_t).wrapping_mul(Ipsf[zi as usize] as cty::c_uint) as int32_t; | |
i = i.wrapping_add(1); | |
} | |
} | |
return JDR_OK; | |
} | |
} | |
unsafe extern "C" fn create_huffman_tbl( | |
mut jd: *mut JDEC, | |
mut data: *const uint8_t, | |
mut ndata: size_t, | |
) -> JRESULT { | |
unsafe { | |
let mut i: cty::c_uint = 0; | |
let mut j: cty::c_uint = 0; | |
let mut b: cty::c_uint = 0; | |
let mut cls: cty::c_uint = 0; | |
let mut num: cty::c_uint = 0; | |
let mut np: size_t = 0; | |
let mut d: uint8_t = 0; | |
let mut pb: *mut uint8_t = 0 as *mut uint8_t; | |
let mut pd: *mut uint8_t = 0 as *mut uint8_t; | |
let mut hc: uint16_t = 0; | |
let mut ph: *mut uint16_t = 0 as *mut uint16_t; | |
while ndata != 0 { | |
if ndata < 17 as cty::c_int as cty::c_ulong { | |
return JDR_FMT1; | |
} | |
ndata = (ndata as cty::c_ulong).wrapping_sub(17 as cty::c_int as cty::c_ulong) as size_t | |
as size_t; | |
let fresh5 = data; | |
data = data.offset(1); | |
d = *fresh5; | |
if d as cty::c_int & 0xee as cty::c_int != 0 { | |
return JDR_FMT1; | |
} | |
cls = (d as cty::c_int >> 4 as cty::c_int) as cty::c_uint; | |
num = (d as cty::c_int & 0xf as cty::c_int) as cty::c_uint; | |
pb = alloc_pool(jd, 16 as cty::c_int as size_t) as *mut uint8_t; | |
if pb.is_null() { | |
return JDR_MEM1; | |
} | |
let ref mut fresh6 = (*jd).huffbits[num as usize][cls as usize]; | |
*fresh6 = pb; | |
i = 0 as cty::c_int as cty::c_uint; | |
np = i as size_t; | |
while i < 16 as cty::c_int as cty::c_uint { | |
let fresh7 = data; | |
data = data.offset(1); | |
let ref mut fresh8 = *pb.offset(i as isize); | |
*fresh8 = *fresh7; | |
np = (np as cty::c_ulong).wrapping_add(*fresh8 as cty::c_ulong) as size_t as size_t; | |
i = i.wrapping_add(1); | |
} | |
ph = alloc_pool( | |
jd, | |
np.wrapping_mul(::core::mem::size_of::<uint16_t>() as cty::c_ulong), | |
) as *mut uint16_t; | |
(*jd).huffcode_len[num as usize][cls as usize] = np as uint16_t; | |
if ph.is_null() { | |
return JDR_MEM1; | |
} | |
let ref mut fresh9 = (*jd).huffcode[num as usize][cls as usize]; | |
*fresh9 = ph; | |
hc = 0 as cty::c_int as uint16_t; | |
i = 0 as cty::c_int as cty::c_uint; | |
j = i; | |
while i < 16 as cty::c_int as cty::c_uint { | |
b = *pb.offset(i as isize) as cty::c_uint; | |
loop { | |
let fresh10 = b; | |
b = b.wrapping_sub(1); | |
if !(fresh10 != 0) { | |
break; | |
} | |
let fresh11 = hc; | |
hc = hc.wrapping_add(1); | |
let fresh12 = j; | |
j = j.wrapping_add(1); | |
*ph.offset(fresh12 as isize) = fresh11; | |
} | |
hc = ((hc as cty::c_int) << 1 as cty::c_int) as uint16_t; | |
i = i.wrapping_add(1); | |
} | |
if ndata < np { | |
return JDR_FMT1; | |
} | |
ndata = (ndata as cty::c_ulong).wrapping_sub(np) as size_t as size_t; | |
pd = alloc_pool(jd, np) as *mut uint8_t; | |
if pd.is_null() { | |
return JDR_MEM1; | |
} | |
let ref mut fresh13 = (*jd).huffdata[num as usize][cls as usize]; | |
*fresh13 = pd; | |
i = 0 as cty::c_int as cty::c_uint; | |
while (i as cty::c_ulong) < np { | |
let fresh14 = data; | |
data = data.offset(1); | |
d = *fresh14; | |
if cls == 0 && d as cty::c_int > 11 as cty::c_int { | |
return JDR_FMT1; | |
} | |
*pd.offset(i as isize) = d; | |
i = i.wrapping_add(1); | |
} | |
} | |
return JDR_OK; | |
} | |
} | |
unsafe extern "C" fn huffext( | |
mut jd: *mut JDEC, | |
mut id: cty::c_uint, | |
mut cls: cty::c_uint, | |
) -> cty::c_int { | |
unsafe { | |
let mut dc: size_t = (*jd).dctr; | |
let mut dp: *mut uint8_t = (*jd).dptr; | |
let mut d: cty::c_uint = 0; | |
let mut flg: cty::c_uint = 0 as cty::c_int as cty::c_uint; | |
let mut bm: uint8_t = 0; | |
let mut nd: uint8_t = 0; | |
let mut bl: uint8_t = 0; | |
let mut hb: *const uint8_t = (*jd).huffbits[id as usize][cls as usize]; | |
let mut hc: *const uint16_t = (*jd).huffcode[id as usize][cls as usize]; | |
let mut hd: *const uint8_t = (*jd).huffdata[id as usize][cls as usize]; | |
if hb.is_null() | |
|| hc.is_null() | |
|| hd.is_null() | |
|| ((*jd).dptr).is_null() | |
|| ((*jd).inbuf).is_null() | |
{ | |
return 0 as cty::c_int - JDR_FMT1 as cty::c_int; | |
} | |
let hc_len: uint16_t = (*jd).huffcode_len[id as usize][0 as cty::c_int as usize]; | |
let mut hc_last: *const uint16_t = hc | |
.offset(hc_len as cty::c_int as isize) | |
.offset(-(1 as cty::c_int as isize)); | |
bm = (*jd).dbit; | |
d = 0 as cty::c_int as cty::c_uint; | |
bl = 16 as cty::c_int as uint8_t; | |
let mut current_block_37: u64; | |
loop { | |
if bm == 0 { | |
if dc == 0 { | |
dp = (*jd).inbuf; | |
dc = ((*jd).infunc).expect("non-null function pointer")( | |
jd, | |
dp, | |
512 as cty::c_int as size_t, | |
); | |
if dc == 0 { | |
return 0 as cty::c_int - JDR_INP as cty::c_int; | |
} | |
} else { | |
dp = dp.offset(1); | |
} | |
dc = dc.wrapping_sub(1); | |
if flg != 0 { | |
flg = 0 as cty::c_int as cty::c_uint; | |
if *dp as cty::c_int != 0 as cty::c_int { | |
return 0 as cty::c_int - JDR_FMT1 as cty::c_int; | |
} | |
*dp = 0xff as cty::c_int as uint8_t; | |
current_block_37 = 14818589718467733107; | |
} else if *dp as cty::c_int == 0xff as cty::c_int { | |
flg = 1 as cty::c_int as cty::c_uint; | |
current_block_37 = 3640593987805443782; | |
} else { | |
current_block_37 = 14818589718467733107; | |
} | |
match current_block_37 { | |
3640593987805443782 => {} | |
_ => { | |
bm = 0x80 as cty::c_int as uint8_t; | |
current_block_37 = 14359455889292382949; | |
} | |
} | |
} else { | |
current_block_37 = 14359455889292382949; | |
} | |
match current_block_37 { | |
14359455889292382949 => { | |
d <<= 1 as cty::c_int; | |
if *dp as cty::c_int & bm as cty::c_int != 0 { | |
d = d.wrapping_add(1); | |
} | |
bm = (bm as cty::c_int >> 1 as cty::c_int) as uint8_t; | |
let fresh15 = hb; | |
hb = hb.offset(1); | |
nd = *fresh15; | |
while nd != 0 { | |
if hc > hc_last { | |
return 0 as cty::c_int - JDR_FMT1 as cty::c_int; | |
} | |
let fresh16 = hc; | |
hc = hc.offset(1); | |
if d == *fresh16 as cty::c_uint { | |
(*jd).dbit = bm; | |
(*jd).dctr = dc; | |
let ref mut fresh17 = (*jd).dptr; | |
*fresh17 = dp; | |
return *hd as cty::c_int; | |
} | |
hd = hd.offset(1); | |
nd = nd.wrapping_sub(1); | |
} | |
bl = bl.wrapping_sub(1); | |
} | |
_ => {} | |
} | |
if !(bl != 0) { | |
break; | |
} | |
} | |
return 0 as cty::c_int - JDR_FMT1 as cty::c_int; | |
} | |
} | |
unsafe extern "C" fn bitext(mut jd: *mut JDEC, mut nbit: cty::c_uint) -> cty::c_int { | |
unsafe { | |
let mut dc: size_t = (*jd).dctr; | |
let mut dp: *mut uint8_t = (*jd).dptr; | |
let mut d: cty::c_uint = 0; | |
let mut flg: cty::c_uint = 0 as cty::c_int as cty::c_uint; | |
if dp.is_null() { | |
return 0 as cty::c_int - JDR_FMT1 as cty::c_int; | |
} | |
let mut mbit: uint8_t = (*jd).dbit; | |
d = 0 as cty::c_int as cty::c_uint; | |
let mut current_block_23: u64; | |
loop { | |
if mbit == 0 { | |
if dc == 0 { | |
dp = (*jd).inbuf; | |
dc = ((*jd).infunc).expect("non-null function pointer")( | |
jd, | |
dp, | |
512 as cty::c_int as size_t, | |
); | |
if dc == 0 { | |
return 0 as cty::c_int - JDR_INP as cty::c_int; | |
} | |
} else { | |
dp = dp.offset(1); | |
} | |
dc = dc.wrapping_sub(1); | |
if flg != 0 { | |
flg = 0 as cty::c_int as cty::c_uint; | |
if *dp as cty::c_int != 0 as cty::c_int { | |
return 0 as cty::c_int - JDR_FMT1 as cty::c_int; | |
} | |
*dp = 0xff as cty::c_int as uint8_t; | |
current_block_23 = 14576567515993809846; | |
} else if *dp as cty::c_int == 0xff as cty::c_int { | |
flg = 1 as cty::c_int as cty::c_uint; | |
current_block_23 = 7095457783677275021; | |
} else { | |
current_block_23 = 14576567515993809846; | |
} | |
match current_block_23 { | |
7095457783677275021 => {} | |
_ => { | |
mbit = 0x80 as cty::c_int as uint8_t; | |
current_block_23 = 10043043949733653460; | |
} | |
} | |
} else { | |
current_block_23 = 10043043949733653460; | |
} | |
match current_block_23 { | |
10043043949733653460 => { | |
d <<= 1 as cty::c_int; | |
if *dp as cty::c_int & mbit as cty::c_int != 0 { | |
d |= 1 as cty::c_int as cty::c_uint; | |
} | |
mbit = (mbit as cty::c_int >> 1 as cty::c_int) as uint8_t; | |
nbit = nbit.wrapping_sub(1); | |
} | |
_ => {} | |
} | |
if !(nbit != 0) { | |
break; | |
} | |
} | |
(*jd).dbit = mbit; | |
(*jd).dctr = dc; | |
let ref mut fresh18 = (*jd).dptr; | |
*fresh18 = dp; | |
return d as cty::c_int; | |
} | |
} | |
unsafe extern "C" fn restart(mut jd: *mut JDEC, mut rstn: uint16_t) -> JRESULT { | |
unsafe { | |
let mut i: cty::c_uint = 0; | |
let mut dp: *mut uint8_t = (*jd).dptr; | |
let mut dc: size_t = (*jd).dctr; | |
let mut d: uint16_t = 0 as cty::c_int as uint16_t; | |
i = 0 as cty::c_int as cty::c_uint; | |
while i < 2 as cty::c_int as cty::c_uint { | |
if dc == 0 { | |
dp = (*jd).inbuf; | |
dc = ((*jd).infunc).expect("non-null function pointer")( | |
jd, | |
dp, | |
512 as cty::c_int as size_t, | |
); | |
if dc == 0 { | |
return JDR_INP; | |
} | |
} else { | |
dp = dp.offset(1); | |
} | |
dc = dc.wrapping_sub(1); | |
d = ((d as cty::c_int) << 8 as cty::c_int | *dp as cty::c_int) as uint16_t; | |
i = i.wrapping_add(1); | |
} | |
let ref mut fresh19 = (*jd).dptr; | |
*fresh19 = dp; | |
(*jd).dctr = dc; | |
(*jd).dbit = 0 as cty::c_int as uint8_t; | |
if d as cty::c_int & 0xffd8 as cty::c_int != 0xffd0 as cty::c_int | |
|| d as cty::c_int & 7 as cty::c_int != rstn as cty::c_int & 7 as cty::c_int | |
{ | |
return JDR_FMT1; | |
} | |
let ref mut fresh20 = (*jd).dcv[0 as cty::c_int as usize]; | |
*fresh20 = 0 as cty::c_int as int16_t; | |
let ref mut fresh21 = (*jd).dcv[1 as cty::c_int as usize]; | |
*fresh21 = *fresh20; | |
(*jd).dcv[2 as cty::c_int as usize] = *fresh21; | |
return JDR_OK; | |
} | |
} | |
unsafe extern "C" fn block_idct(mut src: *mut int32_t, mut dst: *mut jd_yuv_t) { | |
unsafe { | |
let M13: int32_t = (1.41421f64 * 4096 as cty::c_int as cty::c_double) as int32_t; | |
let M2: int32_t = (1.08239f64 * 4096 as cty::c_int as cty::c_double) as int32_t; | |
let M4: int32_t = (2.61313f64 * 4096 as cty::c_int as cty::c_double) as int32_t; | |
let M5: int32_t = (1.84776f64 * 4096 as cty::c_int as cty::c_double) as int32_t; | |
let mut v0: int32_t = 0; | |
let mut v1: int32_t = 0; | |
let mut v2: int32_t = 0; | |
let mut v3: int32_t = 0; | |
let mut v4: int32_t = 0; | |
let mut v5: int32_t = 0; | |
let mut v6: int32_t = 0; | |
let mut v7: int32_t = 0; | |
let mut t10: int32_t = 0; | |
let mut t11: int32_t = 0; | |
let mut t12: int32_t = 0; | |
let mut t13: int32_t = 0; | |
let mut i: cty::c_int = 0; | |
i = 0 as cty::c_int; | |
while i < 8 as cty::c_int { | |
v0 = *src.offset((8 as cty::c_int * 0 as cty::c_int) as isize); | |
v1 = *src.offset((8 as cty::c_int * 2 as cty::c_int) as isize); | |
v2 = *src.offset((8 as cty::c_int * 4 as cty::c_int) as isize); | |
v3 = *src.offset((8 as cty::c_int * 6 as cty::c_int) as isize); | |
t10 = v0 + v2; | |
t12 = v0 - v2; | |
t11 = (v1 - v3) * M13 >> 12 as cty::c_int; | |
v3 += v1; | |
t11 -= v3; | |
v0 = t10 + v3; | |
v3 = t10 - v3; | |
v1 = t11 + t12; | |
v2 = t12 - t11; | |
v4 = *src.offset((8 as cty::c_int * 7 as cty::c_int) as isize); | |
v5 = *src.offset((8 as cty::c_int * 1 as cty::c_int) as isize); | |
v6 = *src.offset((8 as cty::c_int * 5 as cty::c_int) as isize); | |
v7 = *src.offset((8 as cty::c_int * 3 as cty::c_int) as isize); | |
t10 = v5 - v4; | |
t11 = v5 + v4; | |
t12 = v6 - v7; | |
v7 += v6; | |
v5 = (t11 - v7) * M13 >> 12 as cty::c_int; | |
v7 += t11; | |
t13 = (t10 + t12) * M5 >> 12 as cty::c_int; | |
v4 = t13 - (t10 * M2 >> 12 as cty::c_int); | |
v6 = t13 - (t12 * M4 >> 12 as cty::c_int) - v7; | |
v5 -= v6; | |
v4 -= v5; | |
*src.offset((8 as cty::c_int * 0 as cty::c_int) as isize) = v0 + v7; | |
*src.offset((8 as cty::c_int * 7 as cty::c_int) as isize) = v0 - v7; | |
*src.offset((8 as cty::c_int * 1 as cty::c_int) as isize) = v1 + v6; | |
*src.offset((8 as cty::c_int * 6 as cty::c_int) as isize) = v1 - v6; | |
*src.offset((8 as cty::c_int * 2 as cty::c_int) as isize) = v2 + v5; | |
*src.offset((8 as cty::c_int * 5 as cty::c_int) as isize) = v2 - v5; | |
*src.offset((8 as cty::c_int * 3 as cty::c_int) as isize) = v3 + v4; | |
*src.offset((8 as cty::c_int * 4 as cty::c_int) as isize) = v3 - v4; | |
src = src.offset(1); | |
i += 1; | |
} | |
src = src.offset(-(8 as cty::c_int as isize)); | |
i = 0 as cty::c_int; | |
while i < 8 as cty::c_int { | |
v0 = (*src.offset(0 as cty::c_int as isize) as cty::c_long | |
+ ((128 as cty::c_long) << 8 as cty::c_int)) as int32_t; | |
v1 = *src.offset(2 as cty::c_int as isize); | |
v2 = *src.offset(4 as cty::c_int as isize); | |
v3 = *src.offset(6 as cty::c_int as isize); | |
t10 = v0 + v2; | |
t12 = v0 - v2; | |
t11 = (v1 - v3) * M13 >> 12 as cty::c_int; | |
v3 += v1; | |
t11 -= v3; | |
v0 = t10 + v3; | |
v3 = t10 - v3; | |
v1 = t11 + t12; | |
v2 = t12 - t11; | |
v4 = *src.offset(7 as cty::c_int as isize); | |
v5 = *src.offset(1 as cty::c_int as isize); | |
v6 = *src.offset(5 as cty::c_int as isize); | |
v7 = *src.offset(3 as cty::c_int as isize); | |
t10 = v5 - v4; | |
t11 = v5 + v4; | |
t12 = v6 - v7; | |
v7 += v6; | |
v5 = (t11 - v7) * M13 >> 12 as cty::c_int; | |
v7 += t11; | |
t13 = (t10 + t12) * M5 >> 12 as cty::c_int; | |
v4 = t13 - (t10 * M2 >> 12 as cty::c_int); | |
v6 = t13 - (t12 * M4 >> 12 as cty::c_int) - v7; | |
v5 -= v6; | |
v4 -= v5; | |
*dst.offset(0 as cty::c_int as isize) = | |
Clip8[((v0 + v7 >> 8 as cty::c_int) as cty::c_uint | |
& 0x3ff as cty::c_int as cty::c_uint) as usize]; | |
*dst.offset(7 as cty::c_int as isize) = | |
Clip8[((v0 - v7 >> 8 as cty::c_int) as cty::c_uint | |
& 0x3ff as cty::c_int as cty::c_uint) as usize]; | |
*dst.offset(1 as cty::c_int as isize) = | |
Clip8[((v1 + v6 >> 8 as cty::c_int) as cty::c_uint | |
& 0x3ff as cty::c_int as cty::c_uint) as usize]; | |
*dst.offset(6 as cty::c_int as isize) = | |
Clip8[((v1 - v6 >> 8 as cty::c_int) as cty::c_uint | |
& 0x3ff as cty::c_int as cty::c_uint) as usize]; | |
*dst.offset(2 as cty::c_int as isize) = | |
Clip8[((v2 + v5 >> 8 as cty::c_int) as cty::c_uint | |
& 0x3ff as cty::c_int as cty::c_uint) as usize]; | |
*dst.offset(5 as cty::c_int as isize) = | |
Clip8[((v2 - v5 >> 8 as cty::c_int) as cty::c_uint | |
& 0x3ff as cty::c_int as cty::c_uint) as usize]; | |
*dst.offset(3 as cty::c_int as isize) = | |
Clip8[((v3 + v4 >> 8 as cty::c_int) as cty::c_uint | |
& 0x3ff as cty::c_int as cty::c_uint) as usize]; | |
*dst.offset(4 as cty::c_int as isize) = | |
Clip8[((v3 - v4 >> 8 as cty::c_int) as cty::c_uint | |
& 0x3ff as cty::c_int as cty::c_uint) as usize]; | |
dst = dst.offset(8 as cty::c_int as isize); | |
src = src.offset(8 as cty::c_int as isize); | |
i += 1; | |
} | |
} | |
} | |
unsafe extern "C" fn mcu_load(mut jd: *mut JDEC) -> JRESULT { | |
unsafe { | |
let mut tmp: *mut int32_t = (*jd).workbuf as *mut int32_t; | |
let mut d: cty::c_int = 0; | |
let mut e: cty::c_int = 0; | |
let mut blk: cty::c_uint = 0; | |
let mut nby: cty::c_uint = 0; | |
let mut i: cty::c_uint = 0; | |
let mut bc: cty::c_uint = 0; | |
let mut z: cty::c_uint = 0; | |
let mut id: cty::c_uint = 0; | |
let mut cmp: cty::c_uint = 0; | |
let mut bp: *mut jd_yuv_t = 0 as *mut jd_yuv_t; | |
let mut dqf: *const int32_t = 0 as *const int32_t; | |
if ((*jd).workbuf).is_null() { | |
return JDR_FMT1; | |
} | |
nby = ((*jd).msx as cty::c_int * (*jd).msy as cty::c_int) as cty::c_uint; | |
bp = (*jd).mcubuf; | |
blk = 0 as cty::c_int as cty::c_uint; | |
while blk < nby.wrapping_add(2 as cty::c_int as cty::c_uint) { | |
cmp = if blk < nby { | |
0 as cty::c_int as cty::c_uint | |
} else { | |
blk.wrapping_sub(nby) | |
.wrapping_add(1 as cty::c_int as cty::c_uint) | |
}; | |
if cmp != 0 && (*jd).ncomp as cty::c_int != 3 as cty::c_int { | |
i = 0 as cty::c_int as cty::c_uint; | |
while i < 64 as cty::c_int as cty::c_uint { | |
let fresh22 = i; | |
i = i.wrapping_add(1); | |
*bp.offset(fresh22 as isize) = 128 as cty::c_int as jd_yuv_t; | |
} | |
} else { | |
id = (if cmp != 0 { | |
1 as cty::c_int | |
} else { | |
0 as cty::c_int | |
}) as cty::c_uint; | |
d = huffext(jd, id, 0 as cty::c_int as cty::c_uint); | |
if d < 0 as cty::c_int { | |
return (0 as cty::c_int - d) as JRESULT; | |
} | |
bc = d as cty::c_uint; | |
d = (*jd).dcv[cmp as usize] as cty::c_int; | |
if bc != 0 { | |
e = bitext(jd, bc); | |
if e < 0 as cty::c_int { | |
return (0 as cty::c_int - e) as JRESULT; | |
} | |
bc = ((1 as cty::c_int) << bc.wrapping_sub(1 as cty::c_int as cty::c_uint)) | |
as cty::c_uint; | |
if e as cty::c_uint & bc == 0 { | |
e = (e as cty::c_uint).wrapping_sub( | |
(bc << 1 as cty::c_int).wrapping_sub(1 as cty::c_int as cty::c_uint), | |
) as cty::c_int as cty::c_int; | |
} | |
d += e; | |
(*jd).dcv[cmp as usize] = d as int16_t; | |
} | |
dqf = (*jd).qttbl[(*jd).qtid[cmp as usize] as usize]; | |
*tmp.offset(0 as cty::c_int as isize) = | |
d * *dqf.offset(0 as cty::c_int as isize) >> 8 as cty::c_int; | |
memset( | |
&mut *tmp.offset(1 as cty::c_int as isize) as *mut int32_t as *mut cty::c_void, | |
0 as cty::c_int, | |
(63 as cty::c_int as cty::c_ulong) | |
.wrapping_mul(::core::mem::size_of::<int32_t>() as cty::c_ulong), | |
); | |
z = 1 as cty::c_int as cty::c_uint; | |
loop { | |
d = huffext(jd, id, 1 as cty::c_int as cty::c_uint); | |
if d == 0 as cty::c_int { | |
break; | |
} | |
if d < 0 as cty::c_int { | |
return (0 as cty::c_int - d) as JRESULT; | |
} | |
bc = d as cty::c_uint; | |
z = z.wrapping_add(bc >> 4 as cty::c_int); | |
if z >= 64 as cty::c_int as cty::c_uint { | |
return JDR_FMT1; | |
} | |
bc &= 0xf as cty::c_int as cty::c_uint; | |
if bc != 0 { | |
d = bitext(jd, bc); | |
if d < 0 as cty::c_int { | |
return (0 as cty::c_int - d) as JRESULT; | |
} | |
bc = ((1 as cty::c_int) << bc.wrapping_sub(1 as cty::c_int as cty::c_uint)) | |
as cty::c_uint; | |
if d as cty::c_uint & bc == 0 { | |
d = (d as cty::c_uint).wrapping_sub( | |
(bc << 1 as cty::c_int) | |
.wrapping_sub(1 as cty::c_int as cty::c_uint), | |
) as cty::c_int as cty::c_int; | |
} | |
i = Zig[z as usize] as cty::c_uint; | |
*tmp.offset(i as isize) = d * *dqf.offset(i as isize) >> 8 as cty::c_int; | |
} | |
z = z.wrapping_add(1); | |
if !(z < 64 as cty::c_int as cty::c_uint) { | |
break; | |
} | |
} | |
if 0 as cty::c_int != 2 as cty::c_int || cmp == 0 { | |
if z == 1 as cty::c_int as cty::c_uint | |
|| 1 as cty::c_int != 0 && (*jd).scale as cty::c_int == 3 as cty::c_int | |
{ | |
d = (*tmp / 256 as cty::c_int + 128 as cty::c_int) as jd_yuv_t | |
as cty::c_int; | |
if 0 as cty::c_int >= 1 as cty::c_int { | |
i = 0 as cty::c_int as cty::c_uint; | |
while i < 64 as cty::c_int as cty::c_uint { | |
let fresh23 = i; | |
i = i.wrapping_add(1); | |
*bp.offset(fresh23 as isize) = d as jd_yuv_t; | |
} | |
} else { | |
memset(bp as *mut cty::c_void, d, 64 as cty::c_int as cty::c_ulong); | |
} | |
} else { | |
block_idct(tmp, bp); | |
} | |
} | |
} | |
bp = bp.offset(64 as cty::c_int as isize); | |
blk = blk.wrapping_add(1); | |
} | |
return JDR_OK; | |
} | |
} | |
unsafe extern "C" fn mcu_output( | |
mut jd: *mut JDEC, | |
mut outfunc: Option< | |
unsafe extern "C" fn(*mut JDEC, *mut cty::c_void, *mut JRECT) -> cty::c_int, | |
>, | |
mut x: cty::c_uint, | |
mut y: cty::c_uint, | |
) -> JRESULT { | |
unsafe { | |
let CVACC: cty::c_int = if ::core::mem::size_of::<cty::c_int>() as cty::c_ulong | |
> 2 as cty::c_int as cty::c_ulong | |
{ | |
1024 as cty::c_int | |
} else { | |
128 as cty::c_int | |
}; | |
let mut ix: cty::c_uint = 0; | |
let mut iy: cty::c_uint = 0; | |
let mut mx: cty::c_uint = 0; | |
let mut my: cty::c_uint = 0; | |
let mut rx: cty::c_uint = 0; | |
let mut ry: cty::c_uint = 0; | |
let mut yy: cty::c_int = 0; | |
let mut cb: cty::c_int = 0; | |
let mut cr: cty::c_int = 0; | |
let mut py: *mut jd_yuv_t = 0 as *mut jd_yuv_t; | |
let mut pc: *mut jd_yuv_t = 0 as *mut jd_yuv_t; | |
let mut pix: *mut uint8_t = 0 as *mut uint8_t; | |
let mut rect: JRECT = JRECT { | |
left: 0, | |
right: 0, | |
top: 0, | |
bottom: 0, | |
}; | |
mx = ((*jd).msx as cty::c_int * 8 as cty::c_int) as cty::c_uint; | |
my = ((*jd).msy as cty::c_int * 8 as cty::c_int) as cty::c_uint; | |
rx = if x.wrapping_add(mx) <= (*jd).width as cty::c_uint { | |
mx | |
} else { | |
((*jd).width as cty::c_uint).wrapping_sub(x) | |
}; | |
ry = if y.wrapping_add(my) <= (*jd).height as cty::c_uint { | |
my | |
} else { | |
((*jd).height as cty::c_uint).wrapping_sub(y) | |
}; | |
rx >>= (*jd).scale as cty::c_int; | |
ry >>= (*jd).scale as cty::c_int; | |
if rx == 0 || ry == 0 { | |
return JDR_OK; | |
} | |
x >>= (*jd).scale as cty::c_int; | |
y >>= (*jd).scale as cty::c_int; | |
rect.left = x as uint16_t; | |
rect.right = x | |
.wrapping_add(rx) | |
.wrapping_sub(1 as cty::c_int as cty::c_uint) as uint16_t; | |
rect.top = y as uint16_t; | |
rect.bottom = y | |
.wrapping_add(ry) | |
.wrapping_sub(1 as cty::c_int as cty::c_uint) as uint16_t; | |
if 1 as cty::c_int == 0 || (*jd).scale as cty::c_int != 3 as cty::c_int { | |
pix = (*jd).workbuf as *mut uint8_t; | |
if 0 as cty::c_int != 2 as cty::c_int { | |
iy = 0 as cty::c_int as cty::c_uint; | |
while iy < my { | |
py = (*jd).mcubuf; | |
pc = py; | |
if my == 16 as cty::c_int as cty::c_uint { | |
pc = pc.offset( | |
((64 as cty::c_int * 4 as cty::c_int) as cty::c_uint).wrapping_add( | |
(iy >> 1 as cty::c_int) | |
.wrapping_mul(8 as cty::c_int as cty::c_uint), | |
) as isize, | |
); | |
if iy >= 8 as cty::c_int as cty::c_uint { | |
py = py.offset(64 as cty::c_int as isize); | |
} | |
} else { | |
pc = pc.offset( | |
mx.wrapping_mul(8 as cty::c_int as cty::c_uint) | |
.wrapping_add(iy.wrapping_mul(8 as cty::c_int as cty::c_uint)) | |
as isize, | |
); | |
} | |
py = py.offset(iy.wrapping_mul(8 as cty::c_int as cty::c_uint) as isize); | |
ix = 0 as cty::c_int as cty::c_uint; | |
while ix < mx { | |
cb = *pc.offset(0 as cty::c_int as isize) as cty::c_int - 128 as cty::c_int; | |
cr = | |
*pc.offset(64 as cty::c_int as isize) as cty::c_int - 128 as cty::c_int; | |
if mx == 16 as cty::c_int as cty::c_uint { | |
if ix == 8 as cty::c_int as cty::c_uint { | |
py = py.offset((64 as cty::c_int - 8 as cty::c_int) as isize); | |
} | |
pc = pc.offset((ix & 1 as cty::c_int as cty::c_uint) as isize); | |
} else { | |
pc = pc.offset(1); | |
} | |
let fresh24 = py; | |
py = py.offset(1); | |
yy = *fresh24 as cty::c_int; | |
let fresh25 = pix; | |
pix = pix.offset(1); | |
*fresh25 = Clip8[((yy | |
+ (1.402f64 * CVACC as cty::c_double) as cty::c_int * cr / CVACC) | |
as cty::c_uint | |
& 0x3ff as cty::c_int as cty::c_uint) | |
as usize]; | |
let fresh26 = pix; | |
pix = pix.offset(1); | |
*fresh26 = Clip8[((yy | |
- ((0.344f64 * CVACC as cty::c_double) as cty::c_int * cb | |
+ (0.714f64 * CVACC as cty::c_double) as cty::c_int * cr) | |
/ CVACC) as cty::c_uint | |
& 0x3ff as cty::c_int as cty::c_uint) | |
as usize]; | |
let fresh27 = pix; | |
pix = pix.offset(1); | |
*fresh27 = Clip8[((yy | |
+ (1.772f64 * CVACC as cty::c_double) as cty::c_int * cb / CVACC) | |
as cty::c_uint | |
& 0x3ff as cty::c_int as cty::c_uint) | |
as usize]; | |
ix = ix.wrapping_add(1); | |
} | |
iy = iy.wrapping_add(1); | |
} | |
} else { | |
iy = 0 as cty::c_int as cty::c_uint; | |
while iy < my { | |
py = ((*jd).mcubuf) | |
.offset(iy.wrapping_mul(8 as cty::c_int as cty::c_uint) as isize); | |
if my == 16 as cty::c_int as cty::c_uint { | |
if iy >= 8 as cty::c_int as cty::c_uint { | |
py = py.offset(64 as cty::c_int as isize); | |
} | |
} | |
ix = 0 as cty::c_int as cty::c_uint; | |
while ix < mx { | |
if mx == 16 as cty::c_int as cty::c_uint { | |
if ix == 8 as cty::c_int as cty::c_uint { | |
py = py.offset((64 as cty::c_int - 8 as cty::c_int) as isize); | |
} | |
} | |
let fresh28 = py; | |
py = py.offset(1); | |
let fresh29 = pix; | |
pix = pix.offset(1); | |
*fresh29 = *fresh28; | |
ix = ix.wrapping_add(1); | |
} | |
iy = iy.wrapping_add(1); | |
} | |
} | |
if 1 as cty::c_int != 0 && (*jd).scale as cty::c_int != 0 { | |
let mut x_0: cty::c_uint = 0; | |
let mut y_0: cty::c_uint = 0; | |
let mut r: cty::c_uint = 0; | |
let mut g: cty::c_uint = 0; | |
let mut b: cty::c_uint = 0; | |
let mut s: cty::c_uint = 0; | |
let mut w: cty::c_uint = 0; | |
let mut a: cty::c_uint = 0; | |
let mut op: *mut uint8_t = 0 as *mut uint8_t; | |
s = ((*jd).scale as cty::c_int * 2 as cty::c_int) as cty::c_uint; | |
w = ((1 as cty::c_int) << (*jd).scale as cty::c_int) as cty::c_uint; | |
a = mx.wrapping_sub(w).wrapping_mul( | |
(if 0 as cty::c_int != 2 as cty::c_int { | |
3 as cty::c_int | |
} else { | |
1 as cty::c_int | |
}) as cty::c_uint, | |
); | |
op = (*jd).workbuf as *mut uint8_t; | |
iy = 0 as cty::c_int as cty::c_uint; | |
while iy < my { | |
ix = 0 as cty::c_int as cty::c_uint; | |
while ix < mx { | |
pix = ((*jd).workbuf as *mut uint8_t).offset( | |
iy.wrapping_mul(mx).wrapping_add(ix).wrapping_mul( | |
(if 0 as cty::c_int != 2 as cty::c_int { | |
3 as cty::c_int | |
} else { | |
1 as cty::c_int | |
}) as cty::c_uint, | |
) as isize, | |
); | |
b = 0 as cty::c_int as cty::c_uint; | |
g = b; | |
r = g; | |
y_0 = 0 as cty::c_int as cty::c_uint; | |
while y_0 < w { | |
x_0 = 0 as cty::c_int as cty::c_uint; | |
while x_0 < w { | |
let fresh30 = pix; | |
pix = pix.offset(1); | |
r = r.wrapping_add(*fresh30 as cty::c_uint); | |
if 0 as cty::c_int != 2 as cty::c_int { | |
let fresh31 = pix; | |
pix = pix.offset(1); | |
g = g.wrapping_add(*fresh31 as cty::c_uint); | |
let fresh32 = pix; | |
pix = pix.offset(1); | |
b = b.wrapping_add(*fresh32 as cty::c_uint); | |
} | |
x_0 = x_0.wrapping_add(1); | |
} | |
pix = pix.offset(a as isize); | |
y_0 = y_0.wrapping_add(1); | |
} | |
let fresh33 = op; | |
op = op.offset(1); | |
*fresh33 = (r >> s) as uint8_t; | |
if 0 as cty::c_int != 2 as cty::c_int { | |
let fresh34 = op; | |
op = op.offset(1); | |
*fresh34 = (g >> s) as uint8_t; | |
let fresh35 = op; | |
op = op.offset(1); | |
*fresh35 = (b >> s) as uint8_t; | |
} | |
ix = ix.wrapping_add(w); | |
} | |
iy = iy.wrapping_add(w); | |
} | |
} | |
} else { | |
pix = (*jd).workbuf as *mut uint8_t; | |
pc = ((*jd).mcubuf).offset(mx.wrapping_mul(my) as isize); | |
cb = *pc.offset(0 as cty::c_int as isize) as cty::c_int - 128 as cty::c_int; | |
cr = *pc.offset(64 as cty::c_int as isize) as cty::c_int - 128 as cty::c_int; | |
iy = 0 as cty::c_int as cty::c_uint; | |
while iy < my { | |
py = (*jd).mcubuf; | |
if iy == 8 as cty::c_int as cty::c_uint { | |
py = py.offset((64 as cty::c_int * 2 as cty::c_int) as isize); | |
} | |
ix = 0 as cty::c_int as cty::c_uint; | |
while ix < mx { | |
yy = *py as cty::c_int; | |
py = py.offset(64 as cty::c_int as isize); | |
if 0 as cty::c_int != 2 as cty::c_int { | |
let fresh36 = pix; | |
pix = pix.offset(1); | |
*fresh36 = Clip8[((yy | |
+ (1.402f64 * CVACC as cty::c_double) as cty::c_int * cr / CVACC) | |
as cty::c_uint | |
& 0x3ff as cty::c_int as cty::c_uint) | |
as usize]; | |
let fresh37 = pix; | |
pix = pix.offset(1); | |
*fresh37 = Clip8[((yy | |
- ((0.344f64 * CVACC as cty::c_double) as cty::c_int * cb | |
+ (0.714f64 * CVACC as cty::c_double) as cty::c_int * cr) | |
/ CVACC) as cty::c_uint | |
& 0x3ff as cty::c_int as cty::c_uint) | |
as usize]; | |
let fresh38 = pix; | |
pix = pix.offset(1); | |
*fresh38 = Clip8[((yy | |
+ (1.772f64 * CVACC as cty::c_double) as cty::c_int * cb / CVACC) | |
as cty::c_uint | |
& 0x3ff as cty::c_int as cty::c_uint) | |
as usize]; | |
} else { | |
let fresh39 = pix; | |
pix = pix.offset(1); | |
*fresh39 = yy as uint8_t; | |
} | |
ix = ix.wrapping_add(8 as cty::c_int as cty::c_uint); | |
} | |
iy = iy.wrapping_add(8 as cty::c_int as cty::c_uint); | |
} | |
} | |
mx >>= (*jd).scale as cty::c_int; | |
if rx < mx { | |
let mut s_0: *mut uint8_t = 0 as *mut uint8_t; | |
let mut d: *mut uint8_t = 0 as *mut uint8_t; | |
let mut x_1: cty::c_uint = 0; | |
let mut y_1: cty::c_uint = 0; | |
d = (*jd).workbuf as *mut uint8_t; | |
s_0 = d; | |
y_1 = 0 as cty::c_int as cty::c_uint; | |
while y_1 < ry { | |
x_1 = 0 as cty::c_int as cty::c_uint; | |
while x_1 < rx { | |
let fresh40 = s_0; | |
s_0 = s_0.offset(1); | |
let fresh41 = d; | |
d = d.offset(1); | |
*fresh41 = *fresh40; | |
if 0 as cty::c_int != 2 as cty::c_int { | |
let fresh42 = s_0; | |
s_0 = s_0.offset(1); | |
let fresh43 = d; | |
d = d.offset(1); | |
*fresh43 = *fresh42; | |
let fresh44 = s_0; | |
s_0 = s_0.offset(1); | |
let fresh45 = d; | |
d = d.offset(1); | |
*fresh45 = *fresh44; | |
} | |
x_1 = x_1.wrapping_add(1); | |
} | |
s_0 = s_0.offset(mx.wrapping_sub(rx).wrapping_mul( | |
(if 0 as cty::c_int != 2 as cty::c_int { | |
3 as cty::c_int | |
} else { | |
1 as cty::c_int | |
}) as cty::c_uint, | |
) as isize); | |
y_1 = y_1.wrapping_add(1); | |
} | |
} | |
if 0 as cty::c_int == 1 as cty::c_int { | |
let mut s_1: *mut uint8_t = (*jd).workbuf as *mut uint8_t; | |
let mut w_0: uint16_t = 0; | |
let mut d_0: *mut uint16_t = s_1 as *mut uint16_t; | |
let mut n: cty::c_uint = rx.wrapping_mul(ry); | |
loop { | |
let fresh46 = s_1; | |
s_1 = s_1.offset(1); | |
w_0 = | |
((*fresh46 as cty::c_int & 0xf8 as cty::c_int) << 8 as cty::c_int) as uint16_t; | |
let fresh47 = s_1; | |
s_1 = s_1.offset(1); | |
w_0 = (w_0 as cty::c_int | |
| (*fresh47 as cty::c_int & 0xfc as cty::c_int) << 3 as cty::c_int) | |
as uint16_t; | |
let fresh48 = s_1; | |
s_1 = s_1.offset(1); | |
w_0 = (w_0 as cty::c_int | *fresh48 as cty::c_int >> 3 as cty::c_int) as uint16_t; | |
let fresh49 = d_0; | |
d_0 = d_0.offset(1); | |
*fresh49 = w_0; | |
n = n.wrapping_sub(1); | |
if !(n != 0) { | |
break; | |
} | |
} | |
} | |
return (if outfunc.expect("non-null function pointer")(jd, (*jd).workbuf, &mut rect) != 0 { | |
JDR_OK as cty::c_int | |
} else { | |
JDR_INTR as cty::c_int | |
}) as JRESULT; | |
} | |
} | |
#[no_mangle] | |
pub unsafe extern "C" fn jd_prepare( | |
mut jd: *mut JDEC, | |
mut infunc: Option<unsafe extern "C" fn(*mut JDEC, *mut uint8_t, size_t) -> size_t>, | |
mut pool: *mut cty::c_void, | |
mut sz_pool: size_t, | |
mut dev: *mut cty::c_void, | |
) -> JRESULT { | |
unsafe { | |
let mut seg: *mut uint8_t = 0 as *mut uint8_t; | |
let mut b: uint8_t = 0; | |
let mut marker: uint16_t = 0; | |
let mut n: cty::c_uint = 0; | |
let mut i: cty::c_uint = 0; | |
let mut ofs: cty::c_uint = 0; | |
let mut len: size_t = 0; | |
let mut rc: JRESULT = JDR_OK; | |
memset( | |
jd as *mut cty::c_void, | |
0 as cty::c_int, | |
::core::mem::size_of::<JDEC>() as cty::c_ulong, | |
); | |
let ref mut fresh50 = (*jd).pool; | |
*fresh50 = pool; | |
(*jd).sz_pool = sz_pool; | |
let ref mut fresh51 = (*jd).infunc; | |
*fresh51 = infunc; | |
let ref mut fresh52 = (*jd).device; | |
*fresh52 = dev; | |
seg = alloc_pool(jd, 512 as cty::c_int as size_t) as *mut uint8_t; | |
let ref mut fresh53 = (*jd).inbuf; | |
*fresh53 = seg; | |
if seg.is_null() { | |
return JDR_MEM1; | |
} | |
marker = 0 as cty::c_int as uint16_t; | |
ofs = marker as cty::c_uint; | |
loop { | |
if ((*jd).infunc).expect("non-null function pointer")( | |
jd, | |
seg, | |
1 as cty::c_int as size_t, | |
) != 1 as cty::c_int as cty::c_ulong | |
{ | |
return JDR_INP; | |
} | |
ofs = ofs.wrapping_add(1); | |
marker = ((marker as cty::c_int) << 8 as cty::c_int | |
| *seg.offset(0 as cty::c_int as isize) as cty::c_int) | |
as uint16_t; | |
if !(marker as cty::c_int != 0xffd8 as cty::c_int) { | |
break; | |
} | |
} | |
loop { | |
if ((*jd).infunc).expect("non-null function pointer")( | |
jd, | |
seg, | |
4 as cty::c_int as size_t, | |
) != 4 as cty::c_int as cty::c_ulong | |
{ | |
return JDR_INP; | |
} | |
marker = ((*seg as uint16_t as cty::c_int) << 8 as cty::c_int | |
| *seg.offset(1 as cty::c_int as isize) as uint16_t as cty::c_int) | |
as uint16_t; | |
len = ((*seg.offset(2 as cty::c_int as isize) as uint16_t as cty::c_int) | |
<< 8 as cty::c_int | |
| *seg | |
.offset(2 as cty::c_int as isize) | |
.offset(1 as cty::c_int as isize) as uint16_t as cty::c_int) | |
as uint16_t as size_t; | |
if len <= 2 as cty::c_int as cty::c_ulong | |
|| marker as cty::c_int >> 8 as cty::c_int != 0xff as cty::c_int | |
{ | |
return JDR_FMT1; | |
} | |
len = (len as cty::c_ulong).wrapping_sub(2 as cty::c_int as cty::c_ulong) as size_t | |
as size_t; | |
ofs = (ofs as cty::c_ulong) | |
.wrapping_add((4 as cty::c_int as cty::c_ulong).wrapping_add(len)) | |
as cty::c_uint as cty::c_uint; | |
's_514: { | |
let mut current_block_108: u64; | |
match marker as cty::c_int & 0xff as cty::c_int { | |
192 => { | |
if len > 512 as cty::c_int as cty::c_ulong { | |
return JDR_MEM2; | |
} | |
if ((*jd).infunc).expect("non-null function pointer")(jd, seg, len) != len { | |
return JDR_INP; | |
} | |
(*jd).width = ((*(&mut *seg.offset(3 as cty::c_int as isize) | |
as *mut uint8_t) as uint16_t | |
as cty::c_int) | |
<< 8 as cty::c_int | |
| *(&mut *seg.offset(3 as cty::c_int as isize) as *mut uint8_t) | |
.offset(1 as cty::c_int as isize) | |
as uint16_t as cty::c_int) | |
as uint16_t; | |
(*jd).height = ((*(&mut *seg.offset(1 as cty::c_int as isize) | |
as *mut uint8_t) as uint16_t | |
as cty::c_int) | |
<< 8 as cty::c_int | |
| *(&mut *seg.offset(1 as cty::c_int as isize) as *mut uint8_t) | |
.offset(1 as cty::c_int as isize) | |
as uint16_t as cty::c_int) | |
as uint16_t; | |
(*jd).ncomp = *seg.offset(5 as cty::c_int as isize); | |
if (*jd).ncomp as cty::c_int != 3 as cty::c_int | |
&& (*jd).ncomp as cty::c_int != 1 as cty::c_int | |
{ | |
return JDR_FMT3; | |
} | |
i = 0 as cty::c_int as cty::c_uint; | |
while i < (*jd).ncomp as cty::c_uint { | |
b = *seg.offset( | |
(7 as cty::c_int as cty::c_uint) | |
.wrapping_add((3 as cty::c_int as cty::c_uint).wrapping_mul(i)) | |
as isize, | |
); | |
if i == 0 as cty::c_int as cty::c_uint { | |
if b as cty::c_int != 0x11 as cty::c_int | |
&& b as cty::c_int != 0x22 as cty::c_int | |
&& b as cty::c_int != 0x21 as cty::c_int | |
{ | |
return JDR_FMT3; | |
} | |
(*jd).msx = (b as cty::c_int >> 4 as cty::c_int) as uint8_t; | |
(*jd).msy = (b as cty::c_int & 15 as cty::c_int) as uint8_t; | |
} else if b as cty::c_int != 0x11 as cty::c_int { | |
return JDR_FMT3; | |
} | |
(*jd).qtid[i as usize] = *seg.offset( | |
(8 as cty::c_int as cty::c_uint) | |
.wrapping_add((3 as cty::c_int as cty::c_uint).wrapping_mul(i)) | |
as isize, | |
); | |
if (*jd).qtid[i as usize] as cty::c_int > 3 as cty::c_int { | |
return JDR_FMT3; | |
} | |
i = i.wrapping_add(1); | |
} | |
current_block_108 = 5706507068631705000; | |
} | |
221 => { | |
if len > 512 as cty::c_int as cty::c_ulong { | |
return JDR_MEM2; | |
} | |
if ((*jd).infunc).expect("non-null function pointer")(jd, seg, len) != len { | |
return JDR_INP; | |
} | |
(*jd).nrst = ((*seg as uint16_t as cty::c_int) << 8 as cty::c_int | |
| *seg.offset(1 as cty::c_int as isize) as uint16_t as cty::c_int) | |
as uint16_t; | |
current_block_108 = 5706507068631705000; | |
} | |
196 => { | |
if len > 512 as cty::c_int as cty::c_ulong { | |
return JDR_MEM2; | |
} | |
if ((*jd).infunc).expect("non-null function pointer")(jd, seg, len) != len { | |
return JDR_INP; | |
} | |
rc = create_huffman_tbl(jd, seg, len); | |
if rc as u64 != 0 { | |
return rc; | |
} | |
current_block_108 = 5706507068631705000; | |
} | |
219 => { | |
if len > 512 as cty::c_int as cty::c_ulong { | |
return JDR_MEM2; | |
} | |
if ((*jd).infunc).expect("non-null function pointer")(jd, seg, len) != len { | |
return JDR_INP; | |
} | |
rc = create_qt_tbl(jd, seg, len); | |
if rc as u64 != 0 { | |
return rc; | |
} | |
current_block_108 = 5706507068631705000; | |
} | |
218 => { | |
if len > 512 as cty::c_int as cty::c_ulong { | |
return JDR_MEM2; | |
} | |
if ((*jd).infunc).expect("non-null function pointer")(jd, seg, len) != len { | |
return JDR_INP; | |
} | |
if (*jd).width == 0 || (*jd).height == 0 { | |
return JDR_FMT1; | |
} | |
if *seg.offset(0 as cty::c_int as isize) as cty::c_int | |
!= (*jd).ncomp as cty::c_int | |
{ | |
return JDR_FMT3; | |
} | |
i = 0 as cty::c_int as cty::c_uint; | |
while i < (*jd).ncomp as cty::c_uint { | |
b = *seg.offset( | |
(2 as cty::c_int as cty::c_uint) | |
.wrapping_add((2 as cty::c_int as cty::c_uint).wrapping_mul(i)) | |
as isize, | |
); | |
if b as cty::c_int != 0 as cty::c_int | |
&& b as cty::c_int != 0x11 as cty::c_int | |
{ | |
return JDR_FMT3; | |
} | |
n = (if i != 0 { | |
1 as cty::c_int | |
} else { | |
0 as cty::c_int | |
}) as cty::c_uint; | |
if ((*jd).huffbits[n as usize][0 as cty::c_int as usize]).is_null() | |
|| ((*jd).huffbits[n as usize][1 as cty::c_int as usize]).is_null() | |
{ | |
return JDR_FMT1; | |
} | |
if ((*jd).qttbl[(*jd).qtid[i as usize] as usize]).is_null() { | |
return JDR_FMT1; | |
} | |
i = i.wrapping_add(1); | |
} | |
n = ((*jd).msy as cty::c_int * (*jd).msx as cty::c_int) as cty::c_uint; | |
if n == 0 { | |
return JDR_FMT1; | |
} | |
len = n | |
.wrapping_mul(64 as cty::c_int as cty::c_uint) | |
.wrapping_mul(2 as cty::c_int as cty::c_uint) | |
.wrapping_add(64 as cty::c_int as cty::c_uint) | |
as size_t; | |
if len < 256 as cty::c_int as cty::c_ulong { | |
len = 256 as cty::c_int as size_t; | |
} | |
let ref mut fresh54 = (*jd).workbuf; | |
*fresh54 = alloc_pool(jd, len); | |
if ((*jd).workbuf).is_null() { | |
return JDR_MEM1; | |
} | |
let ref mut fresh55 = (*jd).mcubuf; | |
*fresh55 = alloc_pool( | |
jd, | |
(n.wrapping_add(2 as cty::c_int as cty::c_uint) | |
.wrapping_mul(64 as cty::c_int as cty::c_uint) | |
as cty::c_ulong) | |
.wrapping_mul(::core::mem::size_of::<jd_yuv_t>() as cty::c_ulong), | |
) as *mut jd_yuv_t; | |
if ((*jd).mcubuf).is_null() { | |
return JDR_MEM1; | |
} | |
ofs = ofs.wrapping_rem(512 as cty::c_int as cty::c_uint); | |
if ofs != 0 { | |
(*jd).dctr = ((*jd).infunc).expect("non-null function pointer")( | |
jd, | |
seg.offset(ofs as isize), | |
(512 as cty::c_int as cty::c_uint).wrapping_sub(ofs) as size_t, | |
); | |
} | |
let ref mut fresh56 = (*jd).dptr; | |
*fresh56 = seg.offset(ofs as isize).offset( | |
-((if 0 as cty::c_int != 0 { | |
0 as cty::c_int | |
} else { | |
1 as cty::c_int | |
}) as isize), | |
); | |
return JDR_OK; | |
} | |
193 => { | |
current_block_108 = 5148048065308018341; | |
} | |
194 => { | |
current_block_108 = 5148048065308018341; | |
} | |
195 => { | |
current_block_108 = 13503438682059240994; | |
} | |
197 => { | |
current_block_108 = 12749676338018479376; | |
} | |
198 => { | |
current_block_108 = 7120504289787790845; | |
} | |
199 => { | |
current_block_108 = 11626555135028741001; | |
} | |
201 => { | |
current_block_108 = 12215488699659360936; | |
} | |
202 => { | |
current_block_108 = 5192055691381141330; | |
} | |
203 => { | |
current_block_108 = 1443089516996880600; | |
} | |
205 => { | |
current_block_108 = 15064317190960798138; | |
} | |
207 => { | |
current_block_108 = 2398610571357575873; | |
} | |
206 | 217 => { | |
current_block_108 = 2398610571357575873; | |
} | |
_ => { | |
if ((*jd).infunc).expect("non-null function pointer")( | |
jd, | |
0 as *mut uint8_t, | |
len, | |
) != len | |
{ | |
return JDR_INP; | |
} | |
current_block_108 = 5706507068631705000; | |
} | |
} | |
match current_block_108 { | |
5148048065308018341 => { | |
current_block_108 = 13503438682059240994; | |
} | |
5706507068631705000 => { | |
break 's_514; | |
} | |
_ => {} | |
} | |
match current_block_108 { | |
13503438682059240994 => { | |
current_block_108 = 12749676338018479376; | |
} | |
_ => {} | |
} | |
match current_block_108 { | |
12749676338018479376 => { | |
current_block_108 = 7120504289787790845; | |
} | |
_ => {} | |
} | |
match current_block_108 { | |
7120504289787790845 => { | |
current_block_108 = 11626555135028741001; | |
} | |
_ => {} | |
} | |
match current_block_108 { | |
11626555135028741001 => { | |
current_block_108 = 12215488699659360936; | |
} | |
_ => {} | |
} | |
match current_block_108 { | |
12215488699659360936 => { | |
current_block_108 = 5192055691381141330; | |
} | |
_ => {} | |
} | |
match current_block_108 { | |
5192055691381141330 => { | |
current_block_108 = 1443089516996880600; | |
} | |
_ => {} | |
} | |
match current_block_108 { | |
1443089516996880600 => { | |
current_block_108 = 15064317190960798138; | |
} | |
_ => {} | |
} | |
match current_block_108 { | |
15064317190960798138 => {} | |
_ => {} | |
} | |
return JDR_FMT3; | |
} | |
} | |
} | |
} | |
#[no_mangle] | |
pub unsafe extern "C" fn jd_decomp( | |
mut jd: *mut JDEC, | |
mut outfunc: Option< | |
unsafe extern "C" fn(*mut JDEC, *mut cty::c_void, *mut JRECT) -> cty::c_int, | |
>, | |
mut scale: uint8_t, | |
) -> JRESULT { | |
unsafe { | |
let mut x: cty::c_uint = 0; | |
let mut y: cty::c_uint = 0; | |
let mut mx: cty::c_uint = 0; | |
let mut my: cty::c_uint = 0; | |
let mut rst: uint16_t = 0; | |
let mut rsc: uint16_t = 0; | |
let mut rc: JRESULT = JDR_OK; | |
if jd.is_null() || outfunc.is_none() { | |
return JDR_PAR; | |
} | |
if scale as cty::c_int | |
> (if 1 as cty::c_int != 0 { | |
3 as cty::c_int | |
} else { | |
0 as cty::c_int | |
}) | |
{ | |
return JDR_PAR; | |
} | |
(*jd).scale = scale; | |
if (*jd).msx == 0 || (*jd).msy == 0 { | |
return JDR_FMT1; | |
} | |
mx = ((*jd).msx as cty::c_int * 8 as cty::c_int) as cty::c_uint; | |
my = ((*jd).msy as cty::c_int * 8 as cty::c_int) as cty::c_uint; | |
let ref mut fresh57 = (*jd).dcv[0 as cty::c_int as usize]; | |
*fresh57 = 0 as cty::c_int as int16_t; | |
let ref mut fresh58 = (*jd).dcv[1 as cty::c_int as usize]; | |
*fresh58 = *fresh57; | |
(*jd).dcv[2 as cty::c_int as usize] = *fresh58; | |
rsc = 0 as cty::c_int as uint16_t; | |
rst = rsc; | |
rc = JDR_OK; | |
y = 0 as cty::c_int as cty::c_uint; | |
while y < (*jd).height as cty::c_uint { | |
x = 0 as cty::c_int as cty::c_uint; | |
while x < (*jd).width as cty::c_uint { | |
if (*jd).nrst as cty::c_int != 0 && { | |
let fresh59 = rst; | |
rst = rst.wrapping_add(1); | |
fresh59 as cty::c_int == (*jd).nrst as cty::c_int | |
} { | |
let fresh60 = rsc; | |
rsc = rsc.wrapping_add(1); | |
rc = restart(jd, fresh60); | |
if rc as cty::c_uint != JDR_OK as cty::c_int as cty::c_uint { | |
return rc; | |
} | |
rst = 1 as cty::c_int as uint16_t; | |
} | |
rc = mcu_load(jd); | |
if rc as cty::c_uint != JDR_OK as cty::c_int as cty::c_uint { | |
return rc; | |
} | |
rc = mcu_output(jd, outfunc, x, y); | |
if rc as cty::c_uint != JDR_OK as cty::c_int as cty::c_uint { | |
return rc; | |
} | |
x = x.wrapping_add(mx); | |
} | |
y = y.wrapping_add(my); | |
} | |
return rc; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment