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

pub fn b32_decode_1(ptr_input:*const u8,len_input:usize,ptr_alphabet:*const u8,ptr_output:*mut u8,np:usize){
    let mut ptr_data=ptr_input;
    let mut len_data=len_input;
    let mut ptr_out=ptr_output;
    unsafe{
        while len_data>8{
            *ptr_out.offset(0)=*ptr_alphabet.offset(*ptr_data.offset(0) as isize)<<3|
                *ptr_alphabet.offset(*ptr_data.offset(1) as isize)>>2;
            *ptr_out.offset(1)=*ptr_alphabet.offset(*ptr_data.offset(1) as isize)<<6|
                *ptr_alphabet.offset(*ptr_data.offset(2) as isize)<<1|
                *ptr_alphabet.offset(*ptr_data.offset(3) as isize)>>4;
            *ptr_out.offset(2)=*ptr_alphabet.offset(*ptr_data.offset(3) as isize)<<4|
                *ptr_alphabet.offset(*ptr_data.offset(4) as isize)>>1;
            *ptr_out.offset(3)=*ptr_alphabet.offset(*ptr_data.offset(4) as isize)<<7|
                *ptr_alphabet.offset(*ptr_data.offset(5) as isize)<<2|
                *ptr_alphabet.offset(*ptr_data.offset(6) as isize)>>3;
            *ptr_out.offset(4)=*ptr_alphabet.offset(*ptr_data.offset(6) as isize)<<5|
                *ptr_alphabet.offset(*ptr_data.offset(7) as isize)<<0;
            ptr_out=ptr_out.offset(5);
            ptr_data=ptr_data.offset(8);
            len_data-=8;
        }
        if len_data==8{
            if np>0{
                if np>3{
                    if np>5{
                        *ptr_out.offset(0)=*ptr_alphabet.offset(*ptr_data.offset(0) as isize)<<3|
                            *ptr_alphabet.offset(*ptr_data.offset(1) as isize)>>2;
                        *ptr_out.offset(1)=*ptr_alphabet.offset(*ptr_data.offset(1) as isize)<<6;
                    }else{
                        *ptr_out.offset(0)=*ptr_alphabet.offset(*ptr_data.offset(0) as isize)<<3|
                            *ptr_alphabet.offset(*ptr_data.offset(1) as isize)>>2;
                        *ptr_out.offset(1)=*ptr_alphabet.offset(*ptr_data.offset(1) as isize)<<6|
                            *ptr_alphabet.offset(*ptr_data.offset(2) as isize)<<1|
                            *ptr_alphabet.offset(*ptr_data.offset(3) as isize)>>4;
                        *ptr_out.offset(2)=*ptr_alphabet.offset(*ptr_data.offset(3) as isize)<<4;
                    }
                }else{
                    if np>2{
                        *ptr_out.offset(0)=*ptr_alphabet.offset(*ptr_data.offset(0) as isize)<<3|
                            *ptr_alphabet.offset(*ptr_data.offset(1) as isize)>>2;
                        *ptr_out.offset(1)=*ptr_alphabet.offset(*ptr_data.offset(1) as isize)<<6|
                            *ptr_alphabet.offset(*ptr_data.offset(2) as isize)<<1|
                            *ptr_alphabet.offset(*ptr_data.offset(3) as isize)>>4;
                        *ptr_out.offset(2)=*ptr_alphabet.offset(*ptr_data.offset(3) as isize)<<4|
                            *ptr_alphabet.offset(*ptr_data.offset(4) as isize)>>1;
                        *ptr_out.offset(3)=*ptr_alphabet.offset(*ptr_data.offset(4) as isize)<<7;
                    }else{
                        *ptr_out.offset(0)=*ptr_alphabet.offset(*ptr_data.offset(0) as isize)<<3|
                            *ptr_alphabet.offset(*ptr_data.offset(1) as isize)>>2;
                        *ptr_out.offset(1)=*ptr_alphabet.offset(*ptr_data.offset(1) as isize)<<6|
                            *ptr_alphabet.offset(*ptr_data.offset(2) as isize)<<1|
                            *ptr_alphabet.offset(*ptr_data.offset(3) as isize)>>4;
                        *ptr_out.offset(2)=*ptr_alphabet.offset(*ptr_data.offset(3) as isize)<<4|
                            *ptr_alphabet.offset(*ptr_data.offset(4) as isize)>>1;
                        *ptr_out.offset(3)=*ptr_alphabet.offset(*ptr_data.offset(4) as isize)<<7|
                            *ptr_alphabet.offset(*ptr_data.offset(5) as isize)<<2|
                            *ptr_alphabet.offset(*ptr_data.offset(6) as isize)>>3;
                        *ptr_out.offset(4)=*ptr_alphabet.offset(*ptr_data.offset(6) as isize)<<5;
                    }
                }
            }else{
                *ptr_out.offset(0)=*ptr_alphabet.offset(*ptr_data.offset(0) as isize)<<3|
                    *ptr_alphabet.offset(*ptr_data.offset(1) as isize)>>2;
                *ptr_out.offset(1)=*ptr_alphabet.offset(*ptr_data.offset(1) as isize)<<6|
                    *ptr_alphabet.offset(*ptr_data.offset(2) as isize)<<1|
                    *ptr_alphabet.offset(*ptr_data.offset(3) as isize)>>4;
                *ptr_out.offset(2)=*ptr_alphabet.offset(*ptr_data.offset(3) as isize)<<4|
                    *ptr_alphabet.offset(*ptr_data.offset(4) as isize)>>1;
                *ptr_out.offset(3)=*ptr_alphabet.offset(*ptr_data.offset(4) as isize)<<7|
                    *ptr_alphabet.offset(*ptr_data.offset(5) as isize)<<2|
                    *ptr_alphabet.offset(*ptr_data.offset(6) as isize)>>3;
                *ptr_out.offset(4)=*ptr_alphabet.offset(*ptr_data.offset(6) as isize)<<5|
                    *ptr_alphabet.offset(*ptr_data.offset(7) as isize)<<0;
            }
        }
    }
}

pub fn b32_decode_2(ptr_input:*const u8,len_input:usize,ptr_alphabet:*const u8,mut ptr_u16:*mut u16,np:usize){
    let mut ptr_data=ptr_input;
    let mut len_data=len_input;
    unsafe{
        while len_data > 16 {
            *ptr_u16.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(0) as isize) as u16)<<11|
                (*ptr_alphabet.offset(*ptr_data.offset(1) as isize) as u16)<<06|
                (*ptr_alphabet.offset(*ptr_data.offset(2) as isize) as u16)<<01|
                (*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)>>04;
            *ptr_u16.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)<<12|
                (*ptr_alphabet.offset(*ptr_data.offset(4) as isize) as u16)<<07|
                (*ptr_alphabet.offset(*ptr_data.offset(5) as isize) as u16)<<02|
                (*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)>>03;
            *ptr_u16.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)<<13|
                (*ptr_alphabet.offset(*ptr_data.offset(7) as isize) as u16)<<08|
                (*ptr_alphabet.offset(*ptr_data.offset(8) as isize) as u16)<<03|
                (*ptr_alphabet.offset(*ptr_data.offset(9) as isize) as u16)>>02;
            *ptr_u16.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(9) as isize) as u16)<<14|
                (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u16)<<09|
                (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u16)<<04|
                (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u16)>>01;
            *ptr_u16.offset(4)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u16)<<15|
                (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u16)<<10|
                (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u16)<<05|
                (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u16)>>00;
            ptr_u16=ptr_u16.offset(5);
            ptr_data=ptr_data.offset(16);
            len_data-=16;
        }
        if np > 0 {
            if np > 3 {
                if np == 4 {
                    *ptr_u16.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(0) as isize) as u16)<<11|
                        (*ptr_alphabet.offset(*ptr_data.offset(1) as isize) as u16)<<06|
                        (*ptr_alphabet.offset(*ptr_data.offset(2) as isize) as u16)<<01|
                        (*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)>>04;
                }else{
                    *ptr_u16.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(0) as isize) as u16)<<11|
                        (*ptr_alphabet.offset(*ptr_data.offset(1) as isize) as u16)<<06|
                        (*ptr_alphabet.offset(*ptr_data.offset(2) as isize) as u16)<<01|
                        (*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)>>04;
                    *ptr_u16.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)<<12|
                        (*ptr_alphabet.offset(*ptr_data.offset(4) as isize) as u16)<<07|
                        (*ptr_alphabet.offset(*ptr_data.offset(5) as isize) as u16)<<02|
                        (*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)>>03;
                    *ptr_u16.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)<<13|
                        (*ptr_alphabet.offset(*ptr_data.offset(7) as isize) as u16)<<08|
                        (*ptr_alphabet.offset(*ptr_data.offset(8) as isize) as u16)<<03|
                        (*ptr_alphabet.offset(*ptr_data.offset(9) as isize) as u16)>>02;
                }
            }else{
                if np == 1 {
                    *ptr_u16.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(0) as isize) as u16)<<11|
                        (*ptr_alphabet.offset(*ptr_data.offset(1) as isize) as u16)<<06|
                        (*ptr_alphabet.offset(*ptr_data.offset(2) as isize) as u16)<<01|
                        (*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)>>04;
                    *ptr_u16.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)<<12|
                        (*ptr_alphabet.offset(*ptr_data.offset(4) as isize) as u16)<<07|
                        (*ptr_alphabet.offset(*ptr_data.offset(5) as isize) as u16)<<02|
                        (*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)>>03;
                }else{
                    *ptr_u16.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(0) as isize) as u16)<<11|
                        (*ptr_alphabet.offset(*ptr_data.offset(1) as isize) as u16)<<06|
                        (*ptr_alphabet.offset(*ptr_data.offset(2) as isize) as u16)<<01|
                        (*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)>>04;
                    *ptr_u16.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)<<12|
                        (*ptr_alphabet.offset(*ptr_data.offset(4) as isize) as u16)<<07|
                        (*ptr_alphabet.offset(*ptr_data.offset(5) as isize) as u16)<<02|
                        (*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)>>03;
                    *ptr_u16.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)<<13|
                        (*ptr_alphabet.offset(*ptr_data.offset(7) as isize) as u16)<<08|
                        (*ptr_alphabet.offset(*ptr_data.offset(8) as isize) as u16)<<03|
                        (*ptr_alphabet.offset(*ptr_data.offset(9) as isize) as u16)>>02;
                    *ptr_u16.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(9) as isize) as u16)<<14|
                        (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u16)<<09|
                        (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u16)<<04|
                        (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u16)>>01;
                }
            }
        }else{
            *ptr_u16.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(0) as isize) as u16)<<11|
                (*ptr_alphabet.offset(*ptr_data.offset(1) as isize) as u16)<<06|
                (*ptr_alphabet.offset(*ptr_data.offset(2) as isize) as u16)<<01|
                (*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)>>04;
            *ptr_u16.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(3) as isize) as u16)<<12|
                (*ptr_alphabet.offset(*ptr_data.offset(4) as isize) as u16)<<07|
                (*ptr_alphabet.offset(*ptr_data.offset(5) as isize) as u16)<<02|
                (*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)>>03;
            *ptr_u16.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(6) as isize) as u16)<<13|
                (*ptr_alphabet.offset(*ptr_data.offset(7) as isize) as u16)<<08|
                (*ptr_alphabet.offset(*ptr_data.offset(8) as isize) as u16)<<03|
                (*ptr_alphabet.offset(*ptr_data.offset(9) as isize) as u16)>>02;
            *ptr_u16.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(9) as isize) as u16)<<14|
                (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u16)<<09|
                (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u16)<<04|
                (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u16)>>01;
            *ptr_u16.offset(4)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u16)<<15|
                (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u16)<<10|
                (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u16)<<05|
                (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u16)>>00;
        }
    }
}

pub fn b32_decode_4(ptr_input:*const u8,len_input:usize,ptr_alphabet:*const u8,mut ptr_u32:*mut u32,np:usize){
    let mut ptr_data=ptr_input;
    let mut len_data=len_input;
    unsafe{
        while len_data>32{
            *ptr_u32.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u32)<<27|
                (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u32)<<22|
                (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u32)<<17|
                (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u32)<<12|
                (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u32)<<07|
                (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u32)<<02|
                (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)>>03;
            *ptr_u32.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)<<29|
                (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u32)<<24|
                (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u32)<<19|
                (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u32)<<14|
                (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u32)<<09|
                (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u32)<<04|
                (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)>>01;
            *ptr_u32.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)<<31|
                (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u32)<<26|
                (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u32)<<21|
                (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u32)<<16|
                (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u32)<<11|
                (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u32)<<06|
                (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u32)<<01|
                (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u32)>>04;
            *ptr_u32.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u32)<<28|
                (*ptr_alphabet.offset(*ptr_data.offset(20) as isize) as u32)<<23|
                (*ptr_alphabet.offset(*ptr_data.offset(21) as isize) as u32)<<18|
                (*ptr_alphabet.offset(*ptr_data.offset(22) as isize) as u32)<<13|
                (*ptr_alphabet.offset(*ptr_data.offset(23) as isize) as u32)<<08|
                (*ptr_alphabet.offset(*ptr_data.offset(24) as isize) as u32)<<03|
                (*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u32)>>02;
            *ptr_u32.offset(4)=(*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u32)<<30|
                (*ptr_alphabet.offset(*ptr_data.offset(26) as isize) as u32)<<25|
                (*ptr_alphabet.offset(*ptr_data.offset(27) as isize) as u32)<<20|
                (*ptr_alphabet.offset(*ptr_data.offset(28) as isize) as u32)<<15|
                (*ptr_alphabet.offset(*ptr_data.offset(29) as isize) as u32)<<10|
                (*ptr_alphabet.offset(*ptr_data.offset(30) as isize) as u32)<<05|
                (*ptr_alphabet.offset(*ptr_data.offset(31) as isize) as u32)>>00;
            len_data-=32;
            ptr_data=ptr_data.offset(32);
            ptr_u32=ptr_u32.offset(5);
        }
        if np > 0 {
            if np > 3 {
                if np == 4 {
                    *ptr_u32.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u32)<<27|
                        (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u32)<<22|
                        (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u32)<<17|
                        (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u32)<<12|
                        (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u32)<<07|
                        (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u32)<<02|
                        (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)>>03;
                    *ptr_u32.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)<<29|
                        (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u32)<<24|
                        (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u32)<<19|
                        (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u32)<<14|
                        (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u32)<<09|
                        (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u32)<<04|
                        (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)>>01;
                    *ptr_u32.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)<<31|
                        (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u32)<<26|
                        (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u32)<<21|
                        (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u32)<<16|
                        (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u32)<<11|
                        (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u32)<<06|
                        (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u32)<<01|
                        (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u32)>>04;
                }else{
                    *ptr_u32.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u32)<<27|
                        (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u32)<<22|
                        (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u32)<<17|
                        (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u32)<<12|
                        (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u32)<<07|
                        (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u32)<<02|
                        (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)>>03;
                    *ptr_u32.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)<<29|
                        (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u32)<<24|
                        (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u32)<<19|
                        (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u32)<<14|
                        (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u32)<<09|
                        (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u32)<<04|
                        (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)>>01;
                    *ptr_u32.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)<<31|
                        (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u32)<<26|
                        (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u32)<<21|
                        (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u32)<<16|
                        (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u32)<<11|
                        (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u32)<<06|
                        (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u32)<<01|
                        (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u32)>>04;
                    *ptr_u32.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u32)<<28|
                        (*ptr_alphabet.offset(*ptr_data.offset(20) as isize) as u32)<<23|
                        (*ptr_alphabet.offset(*ptr_data.offset(21) as isize) as u32)<<18|
                        (*ptr_alphabet.offset(*ptr_data.offset(22) as isize) as u32)<<13|
                        (*ptr_alphabet.offset(*ptr_data.offset(23) as isize) as u32)<<08|
                        (*ptr_alphabet.offset(*ptr_data.offset(24) as isize) as u32)<<03|
                        (*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u32)>>02;
                }
            }else{
                if np == 1 {
                    *ptr_u32.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u32)<<27|
                        (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u32)<<22|
                        (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u32)<<17|
                        (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u32)<<12|
                        (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u32)<<07|
                        (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u32)<<02|
                        (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)>>03;

                }else{
                    *ptr_u32.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u32)<<27|
                        (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u32)<<22|
                        (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u32)<<17|
                        (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u32)<<12|
                        (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u32)<<07|
                        (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u32)<<02|
                        (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)>>03;
                    *ptr_u32.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)<<29|
                        (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u32)<<24|
                        (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u32)<<19|
                        (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u32)<<14|
                        (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u32)<<09|
                        (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u32)<<04|
                        (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)>>01;
                }
            }
        }else{
            *ptr_u32.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u32)<<27|
                (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u32)<<22|
                (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u32)<<17|
                (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u32)<<12|
                (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u32)<<07|
                (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u32)<<02|
                (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)>>03;
            *ptr_u32.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u32)<<29|
                (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u32)<<24|
                (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u32)<<19|
                (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u32)<<14|
                (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u32)<<09|
                (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u32)<<04|
                (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)>>01;
            *ptr_u32.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u32)<<31|
                (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u32)<<26|
                (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u32)<<21|
                (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u32)<<16|
                (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u32)<<11|
                (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u32)<<06|
                (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u32)<<01|
                (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u32)>>04;
            *ptr_u32.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u32)<<28|
                (*ptr_alphabet.offset(*ptr_data.offset(20) as isize) as u32)<<23|
                (*ptr_alphabet.offset(*ptr_data.offset(21) as isize) as u32)<<18|
                (*ptr_alphabet.offset(*ptr_data.offset(22) as isize) as u32)<<13|
                (*ptr_alphabet.offset(*ptr_data.offset(23) as isize) as u32)<<08|
                (*ptr_alphabet.offset(*ptr_data.offset(24) as isize) as u32)<<03|
                (*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u32)>>02;
            *ptr_u32.offset(4)=(*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u32)<<30|
                (*ptr_alphabet.offset(*ptr_data.offset(26) as isize) as u32)<<25|
                (*ptr_alphabet.offset(*ptr_data.offset(27) as isize) as u32)<<20|
                (*ptr_alphabet.offset(*ptr_data.offset(28) as isize) as u32)<<15|
                (*ptr_alphabet.offset(*ptr_data.offset(29) as isize) as u32)<<10|
                (*ptr_alphabet.offset(*ptr_data.offset(30) as isize) as u32)<<05|
                (*ptr_alphabet.offset(*ptr_data.offset(31) as isize) as u32)>>00;
        }
    }
}

pub fn b32_decode_8(ptr_input:*const u8,len_input:usize,ptr_alphabet:*const u8,mut ptr_u64:*mut u64,np:usize){
    let mut ptr_data=ptr_input;
    let mut len_data=len_input;
    unsafe{
        while len_data>64{
            *ptr_u64.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u64)<<59|
                (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u64)<<54|
                (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u64)<<49|
                (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u64)<<44|
                (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u64)<<39|
                (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u64)<<34|
                (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u64)<<29|
                (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u64)<<24|
                (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u64)<<19|
                (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u64)<<14|
                (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u64)<<09|
                (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u64)<<04|
                (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)>>01;
            *ptr_u64.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)<<63|
                (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u64)<<58|
                (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u64)<<53|
                (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u64)<<48|
                (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u64)<<43|
                (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u64)<<38|
                (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u64)<<33|
                (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u64)<<28|
                (*ptr_alphabet.offset(*ptr_data.offset(20) as isize) as u64)<<23|
                (*ptr_alphabet.offset(*ptr_data.offset(21) as isize) as u64)<<18|
                (*ptr_alphabet.offset(*ptr_data.offset(22) as isize) as u64)<<13|
                (*ptr_alphabet.offset(*ptr_data.offset(23) as isize) as u64)<<08|
                (*ptr_alphabet.offset(*ptr_data.offset(24) as isize) as u64)<<03|
                (*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)>>02;
            *ptr_u64.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)<<62|
                (*ptr_alphabet.offset(*ptr_data.offset(26) as isize) as u64)<<57|
                (*ptr_alphabet.offset(*ptr_data.offset(27) as isize) as u64)<<52|
                (*ptr_alphabet.offset(*ptr_data.offset(28) as isize) as u64)<<47|
                (*ptr_alphabet.offset(*ptr_data.offset(29) as isize) as u64)<<42|
                (*ptr_alphabet.offset(*ptr_data.offset(30) as isize) as u64)<<37|
                (*ptr_alphabet.offset(*ptr_data.offset(31) as isize) as u64)<<32|
                (*ptr_alphabet.offset(*ptr_data.offset(32) as isize) as u64)<<27|
                (*ptr_alphabet.offset(*ptr_data.offset(33) as isize) as u64)<<22|
                (*ptr_alphabet.offset(*ptr_data.offset(34) as isize) as u64)<<17|
                (*ptr_alphabet.offset(*ptr_data.offset(35) as isize) as u64)<<12|
                (*ptr_alphabet.offset(*ptr_data.offset(36) as isize) as u64)<<07|
                (*ptr_alphabet.offset(*ptr_data.offset(37) as isize) as u64)<<02|
                (*ptr_alphabet.offset(*ptr_data.offset(38) as isize) as u64)>>03;
            *ptr_u64.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(38) as isize) as u64)<<61|
                (*ptr_alphabet.offset(*ptr_data.offset(39) as isize) as u64)<<56|
                (*ptr_alphabet.offset(*ptr_data.offset(40) as isize) as u64)<<51|
                (*ptr_alphabet.offset(*ptr_data.offset(41) as isize) as u64)<<46|
                (*ptr_alphabet.offset(*ptr_data.offset(42) as isize) as u64)<<41|
                (*ptr_alphabet.offset(*ptr_data.offset(43) as isize) as u64)<<36|
                (*ptr_alphabet.offset(*ptr_data.offset(44) as isize) as u64)<<31|
                (*ptr_alphabet.offset(*ptr_data.offset(45) as isize) as u64)<<26|
                (*ptr_alphabet.offset(*ptr_data.offset(46) as isize) as u64)<<21|
                (*ptr_alphabet.offset(*ptr_data.offset(47) as isize) as u64)<<16|
                (*ptr_alphabet.offset(*ptr_data.offset(48) as isize) as u64)<<11|
                (*ptr_alphabet.offset(*ptr_data.offset(49) as isize) as u64)<<06|
                (*ptr_alphabet.offset(*ptr_data.offset(50) as isize) as u64)<<01|
                (*ptr_alphabet.offset(*ptr_data.offset(51) as isize) as u64)>>04;
            *ptr_u64.offset(4)=(*ptr_alphabet.offset(*ptr_data.offset(51) as isize) as u64)<<60|
                (*ptr_alphabet.offset(*ptr_data.offset(52) as isize) as u64)<<55|
                (*ptr_alphabet.offset(*ptr_data.offset(53) as isize) as u64)<<50|
                (*ptr_alphabet.offset(*ptr_data.offset(54) as isize) as u64)<<45|
                (*ptr_alphabet.offset(*ptr_data.offset(55) as isize) as u64)<<40|
                (*ptr_alphabet.offset(*ptr_data.offset(56) as isize) as u64)<<35|
                (*ptr_alphabet.offset(*ptr_data.offset(57) as isize) as u64)<<30|
                (*ptr_alphabet.offset(*ptr_data.offset(58) as isize) as u64)<<25|
                (*ptr_alphabet.offset(*ptr_data.offset(59) as isize) as u64)<<20|
                (*ptr_alphabet.offset(*ptr_data.offset(60) as isize) as u64)<<15|
                (*ptr_alphabet.offset(*ptr_data.offset(61) as isize) as u64)<<10|
                (*ptr_alphabet.offset(*ptr_data.offset(62) as isize) as u64)<<05|
                (*ptr_alphabet.offset(*ptr_data.offset(63) as isize) as u64)<<00;
            len_data-=64;
            ptr_data=ptr_data.offset(64);
            ptr_u64=ptr_u64.offset(5);
        }
        if np > 0 {
            if np > 3 {
                if np == 4 {
                    *ptr_u64.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u64)<<59|
                        (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u64)<<54|
                        (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u64)<<49|
                        (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u64)<<44|
                        (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u64)<<39|
                        (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u64)<<34|
                        (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u64)<<29|
                        (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u64)<<24|
                        (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u64)<<19|
                        (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u64)<<14|
                        (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u64)<<09|
                        (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u64)<<04|
                        (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)>>01;
                    *ptr_u64.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)<<63|
                        (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u64)<<58|
                        (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u64)<<53|
                        (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u64)<<48|
                        (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u64)<<43|
                        (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u64)<<38|
                        (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u64)<<33|
                        (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u64)<<28|
                        (*ptr_alphabet.offset(*ptr_data.offset(20) as isize) as u64)<<23|
                        (*ptr_alphabet.offset(*ptr_data.offset(21) as isize) as u64)<<18|
                        (*ptr_alphabet.offset(*ptr_data.offset(22) as isize) as u64)<<13|
                        (*ptr_alphabet.offset(*ptr_data.offset(23) as isize) as u64)<<08|
                        (*ptr_alphabet.offset(*ptr_data.offset(24) as isize) as u64)<<03|
                        (*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)>>02;
                    *ptr_u64.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)<<62|
                        (*ptr_alphabet.offset(*ptr_data.offset(26) as isize) as u64)<<57|
                        (*ptr_alphabet.offset(*ptr_data.offset(27) as isize) as u64)<<52|
                        (*ptr_alphabet.offset(*ptr_data.offset(28) as isize) as u64)<<47|
                        (*ptr_alphabet.offset(*ptr_data.offset(29) as isize) as u64)<<42|
                        (*ptr_alphabet.offset(*ptr_data.offset(30) as isize) as u64)<<37|
                        (*ptr_alphabet.offset(*ptr_data.offset(31) as isize) as u64)<<32|
                        (*ptr_alphabet.offset(*ptr_data.offset(32) as isize) as u64)<<27|
                        (*ptr_alphabet.offset(*ptr_data.offset(33) as isize) as u64)<<22|
                        (*ptr_alphabet.offset(*ptr_data.offset(34) as isize) as u64)<<17|
                        (*ptr_alphabet.offset(*ptr_data.offset(35) as isize) as u64)<<12|
                        (*ptr_alphabet.offset(*ptr_data.offset(36) as isize) as u64)<<07|
                        (*ptr_alphabet.offset(*ptr_data.offset(37) as isize) as u64)<<02|
                        (*ptr_alphabet.offset(*ptr_data.offset(38) as isize) as u64)>>03;
                    *ptr_u64.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(38) as isize) as u64)<<61|
                        (*ptr_alphabet.offset(*ptr_data.offset(39) as isize) as u64)<<56|
                        (*ptr_alphabet.offset(*ptr_data.offset(40) as isize) as u64)<<51|
                        (*ptr_alphabet.offset(*ptr_data.offset(41) as isize) as u64)<<46|
                        (*ptr_alphabet.offset(*ptr_data.offset(42) as isize) as u64)<<41|
                        (*ptr_alphabet.offset(*ptr_data.offset(43) as isize) as u64)<<36|
                        (*ptr_alphabet.offset(*ptr_data.offset(44) as isize) as u64)<<31|
                        (*ptr_alphabet.offset(*ptr_data.offset(45) as isize) as u64)<<26|
                        (*ptr_alphabet.offset(*ptr_data.offset(46) as isize) as u64)<<21|
                        (*ptr_alphabet.offset(*ptr_data.offset(47) as isize) as u64)<<16|
                        (*ptr_alphabet.offset(*ptr_data.offset(48) as isize) as u64)<<11|
                        (*ptr_alphabet.offset(*ptr_data.offset(49) as isize) as u64)<<06|
                        (*ptr_alphabet.offset(*ptr_data.offset(50) as isize) as u64)<<01|
                        (*ptr_alphabet.offset(*ptr_data.offset(51) as isize) as u64)>>04;
                }else{
                    *ptr_u64.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u64)<<59|
                        (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u64)<<54|
                        (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u64)<<49|
                        (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u64)<<44|
                        (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u64)<<39|
                        (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u64)<<34|
                        (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u64)<<29|
                        (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u64)<<24|
                        (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u64)<<19|
                        (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u64)<<14|
                        (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u64)<<09|
                        (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u64)<<04|
                        (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)>>01;
                    *ptr_u64.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)<<63|
                        (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u64)<<58|
                        (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u64)<<53|
                        (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u64)<<48|
                        (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u64)<<43|
                        (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u64)<<38|
                        (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u64)<<33|
                        (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u64)<<28|
                        (*ptr_alphabet.offset(*ptr_data.offset(20) as isize) as u64)<<23|
                        (*ptr_alphabet.offset(*ptr_data.offset(21) as isize) as u64)<<18|
                        (*ptr_alphabet.offset(*ptr_data.offset(22) as isize) as u64)<<13|
                        (*ptr_alphabet.offset(*ptr_data.offset(23) as isize) as u64)<<08|
                        (*ptr_alphabet.offset(*ptr_data.offset(24) as isize) as u64)<<03|
                        (*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)>>02;
                }
            }else{
                if np == 1 {
                    *ptr_u64.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u64)<<59|
                        (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u64)<<54|
                        (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u64)<<49|
                        (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u64)<<44|
                        (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u64)<<39|
                        (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u64)<<34|
                        (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u64)<<29|
                        (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u64)<<24|
                        (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u64)<<19|
                        (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u64)<<14|
                        (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u64)<<09|
                        (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u64)<<04|
                        (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)>>01;
                    *ptr_u64.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)<<63|
                        (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u64)<<58|
                        (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u64)<<53|
                        (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u64)<<48|
                        (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u64)<<43|
                        (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u64)<<38|
                        (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u64)<<33|
                        (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u64)<<28|
                        (*ptr_alphabet.offset(*ptr_data.offset(20) as isize) as u64)<<23|
                        (*ptr_alphabet.offset(*ptr_data.offset(21) as isize) as u64)<<18|
                        (*ptr_alphabet.offset(*ptr_data.offset(22) as isize) as u64)<<13|
                        (*ptr_alphabet.offset(*ptr_data.offset(23) as isize) as u64)<<08|
                        (*ptr_alphabet.offset(*ptr_data.offset(24) as isize) as u64)<<03|
                        (*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)>>02;
                    *ptr_u64.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)<<62|
                        (*ptr_alphabet.offset(*ptr_data.offset(26) as isize) as u64)<<57|
                        (*ptr_alphabet.offset(*ptr_data.offset(27) as isize) as u64)<<52|
                        (*ptr_alphabet.offset(*ptr_data.offset(28) as isize) as u64)<<47|
                        (*ptr_alphabet.offset(*ptr_data.offset(29) as isize) as u64)<<42|
                        (*ptr_alphabet.offset(*ptr_data.offset(30) as isize) as u64)<<37|
                        (*ptr_alphabet.offset(*ptr_data.offset(31) as isize) as u64)<<32|
                        (*ptr_alphabet.offset(*ptr_data.offset(32) as isize) as u64)<<27|
                        (*ptr_alphabet.offset(*ptr_data.offset(33) as isize) as u64)<<22|
                        (*ptr_alphabet.offset(*ptr_data.offset(34) as isize) as u64)<<17|
                        (*ptr_alphabet.offset(*ptr_data.offset(35) as isize) as u64)<<12|
                        (*ptr_alphabet.offset(*ptr_data.offset(36) as isize) as u64)<<07|
                        (*ptr_alphabet.offset(*ptr_data.offset(37) as isize) as u64)<<02|
                        (*ptr_alphabet.offset(*ptr_data.offset(38) as isize) as u64)>>03;
                }else{
                    *ptr_u64.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u64)<<59|
                        (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u64)<<54|
                        (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u64)<<49|
                        (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u64)<<44|
                        (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u64)<<39|
                        (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u64)<<34|
                        (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u64)<<29|
                        (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u64)<<24|
                        (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u64)<<19|
                        (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u64)<<14|
                        (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u64)<<09|
                        (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u64)<<04|
                        (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)>>01;
                }
            }
        }else{
            *ptr_u64.offset(0)=(*ptr_alphabet.offset(*ptr_data.offset(00) as isize) as u64)<<59|
                (*ptr_alphabet.offset(*ptr_data.offset(01) as isize) as u64)<<54|
                (*ptr_alphabet.offset(*ptr_data.offset(02) as isize) as u64)<<49|
                (*ptr_alphabet.offset(*ptr_data.offset(03) as isize) as u64)<<44|
                (*ptr_alphabet.offset(*ptr_data.offset(04) as isize) as u64)<<39|
                (*ptr_alphabet.offset(*ptr_data.offset(05) as isize) as u64)<<34|
                (*ptr_alphabet.offset(*ptr_data.offset(06) as isize) as u64)<<29|
                (*ptr_alphabet.offset(*ptr_data.offset(07) as isize) as u64)<<24|
                (*ptr_alphabet.offset(*ptr_data.offset(08) as isize) as u64)<<19|
                (*ptr_alphabet.offset(*ptr_data.offset(09) as isize) as u64)<<14|
                (*ptr_alphabet.offset(*ptr_data.offset(10) as isize) as u64)<<09|
                (*ptr_alphabet.offset(*ptr_data.offset(11) as isize) as u64)<<04|
                (*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)>>01;
            *ptr_u64.offset(1)=(*ptr_alphabet.offset(*ptr_data.offset(12) as isize) as u64)<<63|
                (*ptr_alphabet.offset(*ptr_data.offset(13) as isize) as u64)<<58|
                (*ptr_alphabet.offset(*ptr_data.offset(14) as isize) as u64)<<53|
                (*ptr_alphabet.offset(*ptr_data.offset(15) as isize) as u64)<<48|
                (*ptr_alphabet.offset(*ptr_data.offset(16) as isize) as u64)<<43|
                (*ptr_alphabet.offset(*ptr_data.offset(17) as isize) as u64)<<38|
                (*ptr_alphabet.offset(*ptr_data.offset(18) as isize) as u64)<<33|
                (*ptr_alphabet.offset(*ptr_data.offset(19) as isize) as u64)<<28|
                (*ptr_alphabet.offset(*ptr_data.offset(20) as isize) as u64)<<23|
                (*ptr_alphabet.offset(*ptr_data.offset(21) as isize) as u64)<<18|
                (*ptr_alphabet.offset(*ptr_data.offset(22) as isize) as u64)<<13|
                (*ptr_alphabet.offset(*ptr_data.offset(23) as isize) as u64)<<08|
                (*ptr_alphabet.offset(*ptr_data.offset(24) as isize) as u64)<<03|
                (*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)>>02;
            *ptr_u64.offset(2)=(*ptr_alphabet.offset(*ptr_data.offset(25) as isize) as u64)<<62|
                (*ptr_alphabet.offset(*ptr_data.offset(26) as isize) as u64)<<57|
                (*ptr_alphabet.offset(*ptr_data.offset(27) as isize) as u64)<<52|
                (*ptr_alphabet.offset(*ptr_data.offset(28) as isize) as u64)<<47|
                (*ptr_alphabet.offset(*ptr_data.offset(29) as isize) as u64)<<42|
                (*ptr_alphabet.offset(*ptr_data.offset(30) as isize) as u64)<<37|
                (*ptr_alphabet.offset(*ptr_data.offset(31) as isize) as u64)<<32|
                (*ptr_alphabet.offset(*ptr_data.offset(32) as isize) as u64)<<27|
                (*ptr_alphabet.offset(*ptr_data.offset(33) as isize) as u64)<<22|
                (*ptr_alphabet.offset(*ptr_data.offset(34) as isize) as u64)<<17|
                (*ptr_alphabet.offset(*ptr_data.offset(35) as isize) as u64)<<12|
                (*ptr_alphabet.offset(*ptr_data.offset(36) as isize) as u64)<<07|
                (*ptr_alphabet.offset(*ptr_data.offset(37) as isize) as u64)<<02|
                (*ptr_alphabet.offset(*ptr_data.offset(38) as isize) as u64)>>03;
            *ptr_u64.offset(3)=(*ptr_alphabet.offset(*ptr_data.offset(38) as isize) as u64)<<61|
                (*ptr_alphabet.offset(*ptr_data.offset(39) as isize) as u64)<<56|
                (*ptr_alphabet.offset(*ptr_data.offset(40) as isize) as u64)<<51|
                (*ptr_alphabet.offset(*ptr_data.offset(41) as isize) as u64)<<46|
                (*ptr_alphabet.offset(*ptr_data.offset(42) as isize) as u64)<<41|
                (*ptr_alphabet.offset(*ptr_data.offset(43) as isize) as u64)<<36|
                (*ptr_alphabet.offset(*ptr_data.offset(44) as isize) as u64)<<31|
                (*ptr_alphabet.offset(*ptr_data.offset(45) as isize) as u64)<<26|
                (*ptr_alphabet.offset(*ptr_data.offset(46) as isize) as u64)<<21|
                (*ptr_alphabet.offset(*ptr_data.offset(47) as isize) as u64)<<16|
                (*ptr_alphabet.offset(*ptr_data.offset(48) as isize) as u64)<<11|
                (*ptr_alphabet.offset(*ptr_data.offset(49) as isize) as u64)<<06|
                (*ptr_alphabet.offset(*ptr_data.offset(50) as isize) as u64)<<01|
                (*ptr_alphabet.offset(*ptr_data.offset(51) as isize) as u64)>>04;
            *ptr_u64.offset(4)=(*ptr_alphabet.offset(*ptr_data.offset(51) as isize) as u64)<<60|
                (*ptr_alphabet.offset(*ptr_data.offset(52) as isize) as u64)<<55|
                (*ptr_alphabet.offset(*ptr_data.offset(53) as isize) as u64)<<50|
                (*ptr_alphabet.offset(*ptr_data.offset(54) as isize) as u64)<<45|
                (*ptr_alphabet.offset(*ptr_data.offset(55) as isize) as u64)<<40|
                (*ptr_alphabet.offset(*ptr_data.offset(56) as isize) as u64)<<35|
                (*ptr_alphabet.offset(*ptr_data.offset(57) as isize) as u64)<<30|
                (*ptr_alphabet.offset(*ptr_data.offset(58) as isize) as u64)<<25|
                (*ptr_alphabet.offset(*ptr_data.offset(59) as isize) as u64)<<20|
                (*ptr_alphabet.offset(*ptr_data.offset(60) as isize) as u64)<<15|
                (*ptr_alphabet.offset(*ptr_data.offset(61) as isize) as u64)<<10|
                (*ptr_alphabet.offset(*ptr_data.offset(62) as isize) as u64)<<05|
                (*ptr_alphabet.offset(*ptr_data.offset(63) as isize) as u64)<<00;
        }
    }
}