wdg_base32/include/decode/
decode.rs

1pub fn b32_decode_1(ptr_input:*const u8,len_input:usize,ptr_alphabet:*const u8,ptr_output:*mut u8,len_pads:usize){
2    let mut ptr_data=ptr_input;
3    let mut len_data=len_input;
4    let mut ptr_out=ptr_output;
5    unsafe{
6        while len_data>8{
7            *ptr_out.offset(0)=*ptr_alphabet.offset(*ptr_data.offset(0) as isize)<<3|
8                *ptr_alphabet.offset(*ptr_data.offset(1) as isize)>>2;
9            *ptr_out.offset(1)=*ptr_alphabet.offset(*ptr_data.offset(1) as isize)<<6|
10                *ptr_alphabet.offset(*ptr_data.offset(2) as isize)<<1|
11                *ptr_alphabet.offset(*ptr_data.offset(3) as isize)>>4;
12            *ptr_out.offset(2)=*ptr_alphabet.offset(*ptr_data.offset(3) as isize)<<4|
13                *ptr_alphabet.offset(*ptr_data.offset(4) as isize)>>1;
14            *ptr_out.offset(3)=*ptr_alphabet.offset(*ptr_data.offset(4) as isize)<<7|
15                *ptr_alphabet.offset(*ptr_data.offset(5) as isize)<<2|
16                *ptr_alphabet.offset(*ptr_data.offset(6) as isize)>>3;
17            *ptr_out.offset(4)=*ptr_alphabet.offset(*ptr_data.offset(6) as isize)<<5|
18                *ptr_alphabet.offset(*ptr_data.offset(7) as isize)<<0;
19            ptr_out=ptr_out.offset(5);
20            ptr_data=ptr_data.offset(8);
21            len_data-=8;
22        }
23        if len_data==8{
24            if len_pads>0{
25                if len_pads>3{
26                    if len_pads>5{
27                        *ptr_out.offset(0)=*ptr_alphabet.offset(*ptr_data.offset(0) as isize)<<3|
28                            *ptr_alphabet.offset(*ptr_data.offset(1) as isize)>>2;
29                        *ptr_out.offset(1)=*ptr_alphabet.offset(*ptr_data.offset(1) as isize)<<6;
30                    }else{
31                        *ptr_out.offset(0)=*ptr_alphabet.offset(*ptr_data.offset(0) as isize)<<3|
32                            *ptr_alphabet.offset(*ptr_data.offset(1) as isize)>>2;
33                        *ptr_out.offset(1)=*ptr_alphabet.offset(*ptr_data.offset(1) as isize)<<6|
34                            *ptr_alphabet.offset(*ptr_data.offset(2) as isize)<<1|
35                            *ptr_alphabet.offset(*ptr_data.offset(3) as isize)>>4;
36                        *ptr_out.offset(2)=*ptr_alphabet.offset(*ptr_data.offset(3) as isize)<<4;
37                    }
38                }else{
39                    if len_pads>2{
40                        *ptr_out.offset(0)=*ptr_alphabet.offset(*ptr_data.offset(0) as isize)<<3|
41                            *ptr_alphabet.offset(*ptr_data.offset(1) as isize)>>2;
42                        *ptr_out.offset(1)=*ptr_alphabet.offset(*ptr_data.offset(1) as isize)<<6|
43                            *ptr_alphabet.offset(*ptr_data.offset(2) as isize)<<1|
44                            *ptr_alphabet.offset(*ptr_data.offset(3) as isize)>>4;
45                        *ptr_out.offset(2)=*ptr_alphabet.offset(*ptr_data.offset(3) as isize)<<4|
46                            *ptr_alphabet.offset(*ptr_data.offset(4) as isize)>>1;
47                        *ptr_out.offset(3)=*ptr_alphabet.offset(*ptr_data.offset(4) as isize)<<7;
48                    }else{
49                        *ptr_out.offset(0)=*ptr_alphabet.offset(*ptr_data.offset(0) as isize)<<3|
50                            *ptr_alphabet.offset(*ptr_data.offset(1) as isize)>>2;
51                        *ptr_out.offset(1)=*ptr_alphabet.offset(*ptr_data.offset(1) as isize)<<6|
52                            *ptr_alphabet.offset(*ptr_data.offset(2) as isize)<<1|
53                            *ptr_alphabet.offset(*ptr_data.offset(3) as isize)>>4;
54                        *ptr_out.offset(2)=*ptr_alphabet.offset(*ptr_data.offset(3) as isize)<<4|
55                            *ptr_alphabet.offset(*ptr_data.offset(4) as isize)>>1;
56                        *ptr_out.offset(3)=*ptr_alphabet.offset(*ptr_data.offset(4) as isize)<<7|
57                            *ptr_alphabet.offset(*ptr_data.offset(5) as isize)<<2|
58                            *ptr_alphabet.offset(*ptr_data.offset(6) as isize)>>3;
59                        *ptr_out.offset(4)=*ptr_alphabet.offset(*ptr_data.offset(6) as isize)<<5;
60                    }
61                }
62            }else{
63                *ptr_out.offset(0)=*ptr_alphabet.offset(*ptr_data.offset(0) as isize)<<3|
64                    *ptr_alphabet.offset(*ptr_data.offset(1) as isize)>>2;
65                *ptr_out.offset(1)=*ptr_alphabet.offset(*ptr_data.offset(1) as isize)<<6|
66                    *ptr_alphabet.offset(*ptr_data.offset(2) as isize)<<1|
67                    *ptr_alphabet.offset(*ptr_data.offset(3) as isize)>>4;
68                *ptr_out.offset(2)=*ptr_alphabet.offset(*ptr_data.offset(3) as isize)<<4|
69                    *ptr_alphabet.offset(*ptr_data.offset(4) as isize)>>1;
70                *ptr_out.offset(3)=*ptr_alphabet.offset(*ptr_data.offset(4) as isize)<<7|
71                    *ptr_alphabet.offset(*ptr_data.offset(5) as isize)<<2|
72                    *ptr_alphabet.offset(*ptr_data.offset(6) as isize)>>3;
73                *ptr_out.offset(4)=*ptr_alphabet.offset(*ptr_data.offset(6) as isize)<<5|
74                    *ptr_alphabet.offset(*ptr_data.offset(7) as isize)<<0;
75            }
76        }
77    }
78}
79
80pub fn b32_decode_2(ptr_input:*const u8,len_input:usize,ptr_alphabet:*const u8,ptr_output:*mut u16,len_pads:usize){
81    let mut ptr_data=ptr_input;
82    let mut len_data=len_input;
83    let mut ptr_out=ptr_output;
84    unsafe{
85        while len_data > 16 {
86            *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(0) as isize) as u16)<<11|
87                (*ptr_alphabet.offset(*ptr_data.offset(1) as isize) as u16)<<06|
88                (*ptr_alphabet.offset(*ptr_data.offset(2) as isize) as u16)<<01|
89                (*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)>>04;
90            *ptr_out.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)<<12|
91                (*ptr_alphabet.offset(*ptr_data.offset(4) as isize) as u16)<<07|
92                (*ptr_alphabet.offset(*ptr_data.offset(5) as isize) as u16)<<02|
93                (*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)>>03;
94            *ptr_out.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)<<13|
95                (*ptr_alphabet.offset(*ptr_data.offset(7) as isize) as u16)<<08|
96                (*ptr_alphabet.offset(*ptr_data.offset(8) as isize) as u16)<<03|
97                (*ptr_alphabet.offset(*ptr_data.offset(9) as isize) as u16)>>02;
98            *ptr_out.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(9) as isize) as u16)<<14|
99                (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u16)<<09|
100                (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u16)<<04|
101                (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u16)>>01;
102            *ptr_out.offset(4)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u16)<<15|
103                (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u16)<<10|
104                (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u16)<<05|
105                (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u16)>>00;
106            ptr_out=ptr_out.offset(5);
107            ptr_data=ptr_data.offset(16);
108            len_data-=16;
109        }
110        if len_pads > 0 {
111            if len_pads > 3 {
112                if len_pads == 4 {
113                    *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(0) as isize) as u16)<<11|
114                        (*ptr_alphabet.offset(*ptr_data.offset(1) as isize) as u16)<<06|
115                        (*ptr_alphabet.offset(*ptr_data.offset(2) as isize) as u16)<<01|
116                        (*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)>>04;
117                }else{
118                    *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(0) as isize) as u16)<<11|
119                        (*ptr_alphabet.offset(*ptr_data.offset(1) as isize) as u16)<<06|
120                        (*ptr_alphabet.offset(*ptr_data.offset(2) as isize) as u16)<<01|
121                        (*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)>>04;
122                    *ptr_out.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)<<12|
123                        (*ptr_alphabet.offset(*ptr_data.offset(4) as isize) as u16)<<07|
124                        (*ptr_alphabet.offset(*ptr_data.offset(5) as isize) as u16)<<02|
125                        (*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)>>03;
126                    *ptr_out.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)<<13|
127                        (*ptr_alphabet.offset(*ptr_data.offset(7) as isize) as u16)<<08|
128                        (*ptr_alphabet.offset(*ptr_data.offset(8) as isize) as u16)<<03|
129                        (*ptr_alphabet.offset(*ptr_data.offset(9) as isize) as u16)>>02;
130                }
131            }else{
132                if len_pads == 1 {
133                    *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(0) as isize) as u16)<<11|
134                        (*ptr_alphabet.offset(*ptr_data.offset(1) as isize) as u16)<<06|
135                        (*ptr_alphabet.offset(*ptr_data.offset(2) as isize) as u16)<<01|
136                        (*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)>>04;
137                    *ptr_out.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)<<12|
138                        (*ptr_alphabet.offset(*ptr_data.offset(4) as isize) as u16)<<07|
139                        (*ptr_alphabet.offset(*ptr_data.offset(5) as isize) as u16)<<02|
140                        (*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)>>03;
141                }else{
142                    *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(0) as isize) as u16)<<11|
143                        (*ptr_alphabet.offset(*ptr_data.offset(1) as isize) as u16)<<06|
144                        (*ptr_alphabet.offset(*ptr_data.offset(2) as isize) as u16)<<01|
145                        (*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)>>04;
146                    *ptr_out.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)<<12|
147                        (*ptr_alphabet.offset(*ptr_data.offset(4) as isize) as u16)<<07|
148                        (*ptr_alphabet.offset(*ptr_data.offset(5) as isize) as u16)<<02|
149                        (*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)>>03;
150                    *ptr_out.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)<<13|
151                        (*ptr_alphabet.offset(*ptr_data.offset(7) as isize) as u16)<<08|
152                        (*ptr_alphabet.offset(*ptr_data.offset(8) as isize) as u16)<<03|
153                        (*ptr_alphabet.offset(*ptr_data.offset(9) as isize) as u16)>>02;
154                    *ptr_out.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(9) as isize) as u16)<<14|
155                        (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u16)<<09|
156                        (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u16)<<04|
157                        (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u16)>>01;
158                }
159            }
160        }else{
161            *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(0) as isize) as u16)<<11|
162                (*ptr_alphabet.offset(*ptr_data.offset(1) as isize) as u16)<<06|
163                (*ptr_alphabet.offset(*ptr_data.offset(2) as isize) as u16)<<01|
164                (*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)>>04;
165            *ptr_out.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)<<12|
166                (*ptr_alphabet.offset(*ptr_data.offset(4) as isize) as u16)<<07|
167                (*ptr_alphabet.offset(*ptr_data.offset(5) as isize) as u16)<<02|
168                (*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)>>03;
169            *ptr_out.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)<<13|
170                (*ptr_alphabet.offset(*ptr_data.offset(7) as isize) as u16)<<08|
171                (*ptr_alphabet.offset(*ptr_data.offset(8) as isize) as u16)<<03|
172                (*ptr_alphabet.offset(*ptr_data.offset(9) as isize) as u16)>>02;
173            *ptr_out.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(9) as isize) as u16)<<14|
174                (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u16)<<09|
175                (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u16)<<04|
176                (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u16)>>01;
177            *ptr_out.offset(4)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u16)<<15|
178                (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u16)<<10|
179                (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u16)<<05|
180                (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u16)>>00;
181        }
182    }
183}
184
185pub fn b32_decode_4(ptr_input:*const u8,len_input:usize,ptr_alphabet:*const u8,ptr_output:*mut u32,len_pads:usize){
186    let mut ptr_data=ptr_input;
187    let mut len_data=len_input;
188    let mut ptr_out=ptr_output;
189    unsafe{
190        while len_data>32{
191            *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u32)<<27|
192                (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u32)<<22|
193                (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u32)<<17|
194                (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u32)<<12|
195                (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u32)<<07|
196                (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u32)<<02|
197                (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)>>03;
198            *ptr_out.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)<<29|
199                (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u32)<<24|
200                (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u32)<<19|
201                (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u32)<<14|
202                (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u32)<<09|
203                (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u32)<<04|
204                (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)>>01;
205            *ptr_out.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)<<31|
206                (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u32)<<26|
207                (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u32)<<21|
208                (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u32)<<16|
209                (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u32)<<11|
210                (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u32)<<06|
211                (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u32)<<01|
212                (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u32)>>04;
213            *ptr_out.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u32)<<28|
214                (*ptr_alphabet.offset(*ptr_data.offset(20) as isize) as u32)<<23|
215                (*ptr_alphabet.offset(*ptr_data.offset(21) as isize) as u32)<<18|
216                (*ptr_alphabet.offset(*ptr_data.offset(22) as isize) as u32)<<13|
217                (*ptr_alphabet.offset(*ptr_data.offset(23) as isize) as u32)<<08|
218                (*ptr_alphabet.offset(*ptr_data.offset(24) as isize) as u32)<<03|
219                (*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u32)>>02;
220            *ptr_out.offset(4)=(*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u32)<<30|
221                (*ptr_alphabet.offset(*ptr_data.offset(26) as isize) as u32)<<25|
222                (*ptr_alphabet.offset(*ptr_data.offset(27) as isize) as u32)<<20|
223                (*ptr_alphabet.offset(*ptr_data.offset(28) as isize) as u32)<<15|
224                (*ptr_alphabet.offset(*ptr_data.offset(29) as isize) as u32)<<10|
225                (*ptr_alphabet.offset(*ptr_data.offset(30) as isize) as u32)<<05|
226                (*ptr_alphabet.offset(*ptr_data.offset(31) as isize) as u32)>>00;
227            len_data-=32;
228            ptr_data=ptr_data.offset(32);
229            ptr_out=ptr_out.offset(5);
230        }
231        if len_pads > 0 {
232            if len_pads > 3 {
233                if len_pads == 4 {
234                    *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u32)<<27|
235                        (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u32)<<22|
236                        (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u32)<<17|
237                        (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u32)<<12|
238                        (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u32)<<07|
239                        (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u32)<<02|
240                        (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)>>03;
241                    *ptr_out.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)<<29|
242                        (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u32)<<24|
243                        (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u32)<<19|
244                        (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u32)<<14|
245                        (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u32)<<09|
246                        (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u32)<<04|
247                        (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)>>01;
248                    *ptr_out.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)<<31|
249                        (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u32)<<26|
250                        (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u32)<<21|
251                        (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u32)<<16|
252                        (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u32)<<11|
253                        (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u32)<<06|
254                        (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u32)<<01|
255                        (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u32)>>04;
256                }else{
257                    *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u32)<<27|
258                        (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u32)<<22|
259                        (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u32)<<17|
260                        (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u32)<<12|
261                        (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u32)<<07|
262                        (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u32)<<02|
263                        (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)>>03;
264                    *ptr_out.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)<<29|
265                        (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u32)<<24|
266                        (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u32)<<19|
267                        (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u32)<<14|
268                        (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u32)<<09|
269                        (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u32)<<04|
270                        (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)>>01;
271                    *ptr_out.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)<<31|
272                        (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u32)<<26|
273                        (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u32)<<21|
274                        (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u32)<<16|
275                        (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u32)<<11|
276                        (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u32)<<06|
277                        (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u32)<<01|
278                        (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u32)>>04;
279                    *ptr_out.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u32)<<28|
280                        (*ptr_alphabet.offset(*ptr_data.offset(20) as isize) as u32)<<23|
281                        (*ptr_alphabet.offset(*ptr_data.offset(21) as isize) as u32)<<18|
282                        (*ptr_alphabet.offset(*ptr_data.offset(22) as isize) as u32)<<13|
283                        (*ptr_alphabet.offset(*ptr_data.offset(23) as isize) as u32)<<08|
284                        (*ptr_alphabet.offset(*ptr_data.offset(24) as isize) as u32)<<03|
285                        (*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u32)>>02;
286                }
287            }else{
288                if len_pads == 1 {
289                    *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u32)<<27|
290                        (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u32)<<22|
291                        (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u32)<<17|
292                        (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u32)<<12|
293                        (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u32)<<07|
294                        (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u32)<<02|
295                        (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)>>03;
296
297                }else{
298                    *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u32)<<27|
299                        (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u32)<<22|
300                        (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u32)<<17|
301                        (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u32)<<12|
302                        (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u32)<<07|
303                        (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u32)<<02|
304                        (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)>>03;
305                    *ptr_out.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)<<29|
306                        (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u32)<<24|
307                        (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u32)<<19|
308                        (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u32)<<14|
309                        (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u32)<<09|
310                        (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u32)<<04|
311                        (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)>>01;
312                }
313            }
314        }else{
315            *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u32)<<27|
316                (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u32)<<22|
317                (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u32)<<17|
318                (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u32)<<12|
319                (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u32)<<07|
320                (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u32)<<02|
321                (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)>>03;
322            *ptr_out.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)<<29|
323                (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u32)<<24|
324                (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u32)<<19|
325                (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u32)<<14|
326                (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u32)<<09|
327                (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u32)<<04|
328                (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)>>01;
329            *ptr_out.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)<<31|
330                (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u32)<<26|
331                (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u32)<<21|
332                (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u32)<<16|
333                (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u32)<<11|
334                (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u32)<<06|
335                (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u32)<<01|
336                (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u32)>>04;
337            *ptr_out.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u32)<<28|
338                (*ptr_alphabet.offset(*ptr_data.offset(20) as isize) as u32)<<23|
339                (*ptr_alphabet.offset(*ptr_data.offset(21) as isize) as u32)<<18|
340                (*ptr_alphabet.offset(*ptr_data.offset(22) as isize) as u32)<<13|
341                (*ptr_alphabet.offset(*ptr_data.offset(23) as isize) as u32)<<08|
342                (*ptr_alphabet.offset(*ptr_data.offset(24) as isize) as u32)<<03|
343                (*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u32)>>02;
344            *ptr_out.offset(4)=(*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u32)<<30|
345                (*ptr_alphabet.offset(*ptr_data.offset(26) as isize) as u32)<<25|
346                (*ptr_alphabet.offset(*ptr_data.offset(27) as isize) as u32)<<20|
347                (*ptr_alphabet.offset(*ptr_data.offset(28) as isize) as u32)<<15|
348                (*ptr_alphabet.offset(*ptr_data.offset(29) as isize) as u32)<<10|
349                (*ptr_alphabet.offset(*ptr_data.offset(30) as isize) as u32)<<05|
350                (*ptr_alphabet.offset(*ptr_data.offset(31) as isize) as u32)>>00;
351        }
352    }
353}
354
355pub fn b32_decode_8(ptr_input:*const u8,len_input:usize,ptr_alphabet:*const u8,ptr_output:*mut u64,len_pads:usize){
356    let mut ptr_data=ptr_input;
357    let mut len_data=len_input;
358    let mut ptr_out=ptr_output;
359    unsafe{
360        while len_data>64{
361            *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u64)<<59|
362                (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u64)<<54|
363                (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u64)<<49|
364                (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u64)<<44|
365                (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u64)<<39|
366                (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u64)<<34|
367                (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u64)<<29|
368                (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u64)<<24|
369                (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u64)<<19|
370                (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u64)<<14|
371                (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u64)<<09|
372                (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u64)<<04|
373                (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)>>01;
374            *ptr_out.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)<<63|
375                (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u64)<<58|
376                (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u64)<<53|
377                (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u64)<<48|
378                (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u64)<<43|
379                (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u64)<<38|
380                (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u64)<<33|
381                (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u64)<<28|
382                (*ptr_alphabet.offset(*ptr_data.offset(20) as isize) as u64)<<23|
383                (*ptr_alphabet.offset(*ptr_data.offset(21) as isize) as u64)<<18|
384                (*ptr_alphabet.offset(*ptr_data.offset(22) as isize) as u64)<<13|
385                (*ptr_alphabet.offset(*ptr_data.offset(23) as isize) as u64)<<08|
386                (*ptr_alphabet.offset(*ptr_data.offset(24) as isize) as u64)<<03|
387                (*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)>>02;
388            *ptr_out.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)<<62|
389                (*ptr_alphabet.offset(*ptr_data.offset(26) as isize) as u64)<<57|
390                (*ptr_alphabet.offset(*ptr_data.offset(27) as isize) as u64)<<52|
391                (*ptr_alphabet.offset(*ptr_data.offset(28) as isize) as u64)<<47|
392                (*ptr_alphabet.offset(*ptr_data.offset(29) as isize) as u64)<<42|
393                (*ptr_alphabet.offset(*ptr_data.offset(30) as isize) as u64)<<37|
394                (*ptr_alphabet.offset(*ptr_data.offset(31) as isize) as u64)<<32|
395                (*ptr_alphabet.offset(*ptr_data.offset(32) as isize) as u64)<<27|
396                (*ptr_alphabet.offset(*ptr_data.offset(33) as isize) as u64)<<22|
397                (*ptr_alphabet.offset(*ptr_data.offset(34) as isize) as u64)<<17|
398                (*ptr_alphabet.offset(*ptr_data.offset(35) as isize) as u64)<<12|
399                (*ptr_alphabet.offset(*ptr_data.offset(36) as isize) as u64)<<07|
400                (*ptr_alphabet.offset(*ptr_data.offset(37) as isize) as u64)<<02|
401                (*ptr_alphabet.offset(*ptr_data.offset(38) as isize) as u64)>>03;
402            *ptr_out.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(38) as isize) as u64)<<61|
403                (*ptr_alphabet.offset(*ptr_data.offset(39) as isize) as u64)<<56|
404                (*ptr_alphabet.offset(*ptr_data.offset(40) as isize) as u64)<<51|
405                (*ptr_alphabet.offset(*ptr_data.offset(41) as isize) as u64)<<46|
406                (*ptr_alphabet.offset(*ptr_data.offset(42) as isize) as u64)<<41|
407                (*ptr_alphabet.offset(*ptr_data.offset(43) as isize) as u64)<<36|
408                (*ptr_alphabet.offset(*ptr_data.offset(44) as isize) as u64)<<31|
409                (*ptr_alphabet.offset(*ptr_data.offset(45) as isize) as u64)<<26|
410                (*ptr_alphabet.offset(*ptr_data.offset(46) as isize) as u64)<<21|
411                (*ptr_alphabet.offset(*ptr_data.offset(47) as isize) as u64)<<16|
412                (*ptr_alphabet.offset(*ptr_data.offset(48) as isize) as u64)<<11|
413                (*ptr_alphabet.offset(*ptr_data.offset(49) as isize) as u64)<<06|
414                (*ptr_alphabet.offset(*ptr_data.offset(50) as isize) as u64)<<01|
415                (*ptr_alphabet.offset(*ptr_data.offset(51) as isize) as u64)>>04;
416            *ptr_out.offset(4)=(*ptr_alphabet.offset(*ptr_data.offset(51) as isize) as u64)<<60|
417                (*ptr_alphabet.offset(*ptr_data.offset(52) as isize) as u64)<<55|
418                (*ptr_alphabet.offset(*ptr_data.offset(53) as isize) as u64)<<50|
419                (*ptr_alphabet.offset(*ptr_data.offset(54) as isize) as u64)<<45|
420                (*ptr_alphabet.offset(*ptr_data.offset(55) as isize) as u64)<<40|
421                (*ptr_alphabet.offset(*ptr_data.offset(56) as isize) as u64)<<35|
422                (*ptr_alphabet.offset(*ptr_data.offset(57) as isize) as u64)<<30|
423                (*ptr_alphabet.offset(*ptr_data.offset(58) as isize) as u64)<<25|
424                (*ptr_alphabet.offset(*ptr_data.offset(59) as isize) as u64)<<20|
425                (*ptr_alphabet.offset(*ptr_data.offset(60) as isize) as u64)<<15|
426                (*ptr_alphabet.offset(*ptr_data.offset(61) as isize) as u64)<<10|
427                (*ptr_alphabet.offset(*ptr_data.offset(62) as isize) as u64)<<05|
428                (*ptr_alphabet.offset(*ptr_data.offset(63) as isize) as u64)<<00;
429            len_data-=64;
430            ptr_data=ptr_data.offset(64);
431            ptr_out=ptr_out.offset(5);
432        }
433        if len_pads > 0 {
434            if len_pads > 3 {
435                if len_pads == 4 {
436                    *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u64)<<59|
437                        (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u64)<<54|
438                        (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u64)<<49|
439                        (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u64)<<44|
440                        (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u64)<<39|
441                        (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u64)<<34|
442                        (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u64)<<29|
443                        (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u64)<<24|
444                        (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u64)<<19|
445                        (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u64)<<14|
446                        (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u64)<<09|
447                        (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u64)<<04|
448                        (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)>>01;
449                    *ptr_out.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)<<63|
450                        (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u64)<<58|
451                        (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u64)<<53|
452                        (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u64)<<48|
453                        (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u64)<<43|
454                        (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u64)<<38|
455                        (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u64)<<33|
456                        (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u64)<<28|
457                        (*ptr_alphabet.offset(*ptr_data.offset(20) as isize) as u64)<<23|
458                        (*ptr_alphabet.offset(*ptr_data.offset(21) as isize) as u64)<<18|
459                        (*ptr_alphabet.offset(*ptr_data.offset(22) as isize) as u64)<<13|
460                        (*ptr_alphabet.offset(*ptr_data.offset(23) as isize) as u64)<<08|
461                        (*ptr_alphabet.offset(*ptr_data.offset(24) as isize) as u64)<<03|
462                        (*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)>>02;
463                    *ptr_out.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)<<62|
464                        (*ptr_alphabet.offset(*ptr_data.offset(26) as isize) as u64)<<57|
465                        (*ptr_alphabet.offset(*ptr_data.offset(27) as isize) as u64)<<52|
466                        (*ptr_alphabet.offset(*ptr_data.offset(28) as isize) as u64)<<47|
467                        (*ptr_alphabet.offset(*ptr_data.offset(29) as isize) as u64)<<42|
468                        (*ptr_alphabet.offset(*ptr_data.offset(30) as isize) as u64)<<37|
469                        (*ptr_alphabet.offset(*ptr_data.offset(31) as isize) as u64)<<32|
470                        (*ptr_alphabet.offset(*ptr_data.offset(32) as isize) as u64)<<27|
471                        (*ptr_alphabet.offset(*ptr_data.offset(33) as isize) as u64)<<22|
472                        (*ptr_alphabet.offset(*ptr_data.offset(34) as isize) as u64)<<17|
473                        (*ptr_alphabet.offset(*ptr_data.offset(35) as isize) as u64)<<12|
474                        (*ptr_alphabet.offset(*ptr_data.offset(36) as isize) as u64)<<07|
475                        (*ptr_alphabet.offset(*ptr_data.offset(37) as isize) as u64)<<02|
476                        (*ptr_alphabet.offset(*ptr_data.offset(38) as isize) as u64)>>03;
477                    *ptr_out.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(38) as isize) as u64)<<61|
478                        (*ptr_alphabet.offset(*ptr_data.offset(39) as isize) as u64)<<56|
479                        (*ptr_alphabet.offset(*ptr_data.offset(40) as isize) as u64)<<51|
480                        (*ptr_alphabet.offset(*ptr_data.offset(41) as isize) as u64)<<46|
481                        (*ptr_alphabet.offset(*ptr_data.offset(42) as isize) as u64)<<41|
482                        (*ptr_alphabet.offset(*ptr_data.offset(43) as isize) as u64)<<36|
483                        (*ptr_alphabet.offset(*ptr_data.offset(44) as isize) as u64)<<31|
484                        (*ptr_alphabet.offset(*ptr_data.offset(45) as isize) as u64)<<26|
485                        (*ptr_alphabet.offset(*ptr_data.offset(46) as isize) as u64)<<21|
486                        (*ptr_alphabet.offset(*ptr_data.offset(47) as isize) as u64)<<16|
487                        (*ptr_alphabet.offset(*ptr_data.offset(48) as isize) as u64)<<11|
488                        (*ptr_alphabet.offset(*ptr_data.offset(49) as isize) as u64)<<06|
489                        (*ptr_alphabet.offset(*ptr_data.offset(50) as isize) as u64)<<01|
490                        (*ptr_alphabet.offset(*ptr_data.offset(51) as isize) as u64)>>04;
491                }else{
492                    *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u64)<<59|
493                        (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u64)<<54|
494                        (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u64)<<49|
495                        (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u64)<<44|
496                        (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u64)<<39|
497                        (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u64)<<34|
498                        (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u64)<<29|
499                        (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u64)<<24|
500                        (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u64)<<19|
501                        (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u64)<<14|
502                        (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u64)<<09|
503                        (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u64)<<04|
504                        (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)>>01;
505                    *ptr_out.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)<<63|
506                        (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u64)<<58|
507                        (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u64)<<53|
508                        (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u64)<<48|
509                        (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u64)<<43|
510                        (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u64)<<38|
511                        (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u64)<<33|
512                        (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u64)<<28|
513                        (*ptr_alphabet.offset(*ptr_data.offset(20) as isize) as u64)<<23|
514                        (*ptr_alphabet.offset(*ptr_data.offset(21) as isize) as u64)<<18|
515                        (*ptr_alphabet.offset(*ptr_data.offset(22) as isize) as u64)<<13|
516                        (*ptr_alphabet.offset(*ptr_data.offset(23) as isize) as u64)<<08|
517                        (*ptr_alphabet.offset(*ptr_data.offset(24) as isize) as u64)<<03|
518                        (*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)>>02;
519                }
520            }else{
521                if len_pads == 1 {
522                    *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u64)<<59|
523                        (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u64)<<54|
524                        (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u64)<<49|
525                        (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u64)<<44|
526                        (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u64)<<39|
527                        (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u64)<<34|
528                        (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u64)<<29|
529                        (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u64)<<24|
530                        (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u64)<<19|
531                        (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u64)<<14|
532                        (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u64)<<09|
533                        (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u64)<<04|
534                        (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)>>01;
535                    *ptr_out.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)<<63|
536                        (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u64)<<58|
537                        (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u64)<<53|
538                        (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u64)<<48|
539                        (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u64)<<43|
540                        (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u64)<<38|
541                        (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u64)<<33|
542                        (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u64)<<28|
543                        (*ptr_alphabet.offset(*ptr_data.offset(20) as isize) as u64)<<23|
544                        (*ptr_alphabet.offset(*ptr_data.offset(21) as isize) as u64)<<18|
545                        (*ptr_alphabet.offset(*ptr_data.offset(22) as isize) as u64)<<13|
546                        (*ptr_alphabet.offset(*ptr_data.offset(23) as isize) as u64)<<08|
547                        (*ptr_alphabet.offset(*ptr_data.offset(24) as isize) as u64)<<03|
548                        (*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)>>02;
549                    *ptr_out.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)<<62|
550                        (*ptr_alphabet.offset(*ptr_data.offset(26) as isize) as u64)<<57|
551                        (*ptr_alphabet.offset(*ptr_data.offset(27) as isize) as u64)<<52|
552                        (*ptr_alphabet.offset(*ptr_data.offset(28) as isize) as u64)<<47|
553                        (*ptr_alphabet.offset(*ptr_data.offset(29) as isize) as u64)<<42|
554                        (*ptr_alphabet.offset(*ptr_data.offset(30) as isize) as u64)<<37|
555                        (*ptr_alphabet.offset(*ptr_data.offset(31) as isize) as u64)<<32|
556                        (*ptr_alphabet.offset(*ptr_data.offset(32) as isize) as u64)<<27|
557                        (*ptr_alphabet.offset(*ptr_data.offset(33) as isize) as u64)<<22|
558                        (*ptr_alphabet.offset(*ptr_data.offset(34) as isize) as u64)<<17|
559                        (*ptr_alphabet.offset(*ptr_data.offset(35) as isize) as u64)<<12|
560                        (*ptr_alphabet.offset(*ptr_data.offset(36) as isize) as u64)<<07|
561                        (*ptr_alphabet.offset(*ptr_data.offset(37) as isize) as u64)<<02|
562                        (*ptr_alphabet.offset(*ptr_data.offset(38) as isize) as u64)>>03;
563                }else{
564                    *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u64)<<59|
565                        (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u64)<<54|
566                        (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u64)<<49|
567                        (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u64)<<44|
568                        (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u64)<<39|
569                        (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u64)<<34|
570                        (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u64)<<29|
571                        (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u64)<<24|
572                        (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u64)<<19|
573                        (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u64)<<14|
574                        (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u64)<<09|
575                        (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u64)<<04|
576                        (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)>>01;
577                }
578            }
579        }else{
580            *ptr_out.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u64)<<59|
581                (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u64)<<54|
582                (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u64)<<49|
583                (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u64)<<44|
584                (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u64)<<39|
585                (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u64)<<34|
586                (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u64)<<29|
587                (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u64)<<24|
588                (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u64)<<19|
589                (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u64)<<14|
590                (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u64)<<09|
591                (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u64)<<04|
592                (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)>>01;
593            *ptr_out.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)<<63|
594                (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u64)<<58|
595                (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u64)<<53|
596                (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u64)<<48|
597                (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u64)<<43|
598                (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u64)<<38|
599                (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u64)<<33|
600                (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u64)<<28|
601                (*ptr_alphabet.offset(*ptr_data.offset(20) as isize) as u64)<<23|
602                (*ptr_alphabet.offset(*ptr_data.offset(21) as isize) as u64)<<18|
603                (*ptr_alphabet.offset(*ptr_data.offset(22) as isize) as u64)<<13|
604                (*ptr_alphabet.offset(*ptr_data.offset(23) as isize) as u64)<<08|
605                (*ptr_alphabet.offset(*ptr_data.offset(24) as isize) as u64)<<03|
606                (*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)>>02;
607            *ptr_out.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)<<62|
608                (*ptr_alphabet.offset(*ptr_data.offset(26) as isize) as u64)<<57|
609                (*ptr_alphabet.offset(*ptr_data.offset(27) as isize) as u64)<<52|
610                (*ptr_alphabet.offset(*ptr_data.offset(28) as isize) as u64)<<47|
611                (*ptr_alphabet.offset(*ptr_data.offset(29) as isize) as u64)<<42|
612                (*ptr_alphabet.offset(*ptr_data.offset(30) as isize) as u64)<<37|
613                (*ptr_alphabet.offset(*ptr_data.offset(31) as isize) as u64)<<32|
614                (*ptr_alphabet.offset(*ptr_data.offset(32) as isize) as u64)<<27|
615                (*ptr_alphabet.offset(*ptr_data.offset(33) as isize) as u64)<<22|
616                (*ptr_alphabet.offset(*ptr_data.offset(34) as isize) as u64)<<17|
617                (*ptr_alphabet.offset(*ptr_data.offset(35) as isize) as u64)<<12|
618                (*ptr_alphabet.offset(*ptr_data.offset(36) as isize) as u64)<<07|
619                (*ptr_alphabet.offset(*ptr_data.offset(37) as isize) as u64)<<02|
620                (*ptr_alphabet.offset(*ptr_data.offset(38) as isize) as u64)>>03;
621            *ptr_out.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(38) as isize) as u64)<<61|
622                (*ptr_alphabet.offset(*ptr_data.offset(39) as isize) as u64)<<56|
623                (*ptr_alphabet.offset(*ptr_data.offset(40) as isize) as u64)<<51|
624                (*ptr_alphabet.offset(*ptr_data.offset(41) as isize) as u64)<<46|
625                (*ptr_alphabet.offset(*ptr_data.offset(42) as isize) as u64)<<41|
626                (*ptr_alphabet.offset(*ptr_data.offset(43) as isize) as u64)<<36|
627                (*ptr_alphabet.offset(*ptr_data.offset(44) as isize) as u64)<<31|
628                (*ptr_alphabet.offset(*ptr_data.offset(45) as isize) as u64)<<26|
629                (*ptr_alphabet.offset(*ptr_data.offset(46) as isize) as u64)<<21|
630                (*ptr_alphabet.offset(*ptr_data.offset(47) as isize) as u64)<<16|
631                (*ptr_alphabet.offset(*ptr_data.offset(48) as isize) as u64)<<11|
632                (*ptr_alphabet.offset(*ptr_data.offset(49) as isize) as u64)<<06|
633                (*ptr_alphabet.offset(*ptr_data.offset(50) as isize) as u64)<<01|
634                (*ptr_alphabet.offset(*ptr_data.offset(51) as isize) as u64)>>04;
635            *ptr_out.offset(4)=(*ptr_alphabet.offset(*ptr_data.offset(51) as isize) as u64)<<60|
636                (*ptr_alphabet.offset(*ptr_data.offset(52) as isize) as u64)<<55|
637                (*ptr_alphabet.offset(*ptr_data.offset(53) as isize) as u64)<<50|
638                (*ptr_alphabet.offset(*ptr_data.offset(54) as isize) as u64)<<45|
639                (*ptr_alphabet.offset(*ptr_data.offset(55) as isize) as u64)<<40|
640                (*ptr_alphabet.offset(*ptr_data.offset(56) as isize) as u64)<<35|
641                (*ptr_alphabet.offset(*ptr_data.offset(57) as isize) as u64)<<30|
642                (*ptr_alphabet.offset(*ptr_data.offset(58) as isize) as u64)<<25|
643                (*ptr_alphabet.offset(*ptr_data.offset(59) as isize) as u64)<<20|
644                (*ptr_alphabet.offset(*ptr_data.offset(60) as isize) as u64)<<15|
645                (*ptr_alphabet.offset(*ptr_data.offset(61) as isize) as u64)<<10|
646                (*ptr_alphabet.offset(*ptr_data.offset(62) as isize) as u64)<<05|
647                (*ptr_alphabet.offset(*ptr_data.offset(63) as isize) as u64)<<00;
648        }
649    }
650}