LCOV - code coverage report
Current view: top level - ballet/reedsol - fd_reedsol_recover_128.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 515 563 91.5 %
Date: 2025-07-01 05:00:49 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /* Note: This file is auto generated. */
       2             : #include "fd_reedsol_ppt.h"
       3             : #include "fd_reedsol_fderiv.h"
       4             : 
       5             : FD_FN_UNSANITIZED int
       6             : fd_reedsol_private_recover_var_128( ulong           shred_sz,
       7             :                                     uchar * const * shred,
       8             :                                     ulong           data_shred_cnt,
       9             :                                     ulong           parity_shred_cnt,
      10          15 :                                     uchar const *   erased ) {
      11          15 :   uchar _erased[ 128 ] W_ATTR;
      12          15 :   uchar pi[      128 ] W_ATTR;
      13          15 :   ulong shred_cnt = data_shred_cnt + parity_shred_cnt;
      14          15 :   ulong loaded_cnt = 0UL;
      15        1935 :   for( ulong i=0UL; i<128UL; i++) {
      16        1920 :     int load_shred = ((i<shred_cnt)&(loaded_cnt<data_shred_cnt))&&( erased[ i ]==0 );
      17        1920 :     _erased[ i ] = !load_shred;
      18        1920 :     loaded_cnt += (ulong)load_shred;
      19        1920 :   }
      20          15 :   if( FD_UNLIKELY( loaded_cnt<data_shred_cnt ) ) return FD_REEDSOL_ERR_PARTIAL;
      21             : 
      22          15 :   fd_reedsol_private_gen_pi_128( _erased, pi );
      23             : 
      24             :   /* Store the difference for each shred that was regenerated.  This
      25             :      must be 0.  Otherwise there's a corrupt shred. */
      26          15 :   gf_t diff = gf_zero();
      27             : 
      28         468 :   for( ulong shred_pos=0UL; shred_pos<shred_sz; /* advanced manually at end of loop */ ) {
      29             :     /* Load exactly data_shred_cnt un-erased input shreds into
      30             :        their respective vector.  Fill the erased vectors with 0. */
      31         453 :     gf_t in00 = _erased[  0 ] ? gf_zero() : gf_ldu( shred[  0 ] + shred_pos );
      32         453 :     gf_t in01 = _erased[  1 ] ? gf_zero() : gf_ldu( shred[  1 ] + shred_pos );
      33         453 :     gf_t in02 = _erased[  2 ] ? gf_zero() : gf_ldu( shred[  2 ] + shred_pos );
      34         453 :     gf_t in03 = _erased[  3 ] ? gf_zero() : gf_ldu( shred[  3 ] + shred_pos );
      35         453 :     gf_t in04 = _erased[  4 ] ? gf_zero() : gf_ldu( shred[  4 ] + shred_pos );
      36         453 :     gf_t in05 = _erased[  5 ] ? gf_zero() : gf_ldu( shred[  5 ] + shred_pos );
      37         453 :     gf_t in06 = _erased[  6 ] ? gf_zero() : gf_ldu( shred[  6 ] + shred_pos );
      38         453 :     gf_t in07 = _erased[  7 ] ? gf_zero() : gf_ldu( shred[  7 ] + shred_pos );
      39         453 :     gf_t in08 = _erased[  8 ] ? gf_zero() : gf_ldu( shred[  8 ] + shred_pos );
      40         453 :     gf_t in09 = _erased[  9 ] ? gf_zero() : gf_ldu( shred[  9 ] + shred_pos );
      41         453 :     gf_t in10 = _erased[ 10 ] ? gf_zero() : gf_ldu( shred[ 10 ] + shred_pos );
      42         453 :     gf_t in11 = _erased[ 11 ] ? gf_zero() : gf_ldu( shred[ 11 ] + shred_pos );
      43         453 :     gf_t in12 = _erased[ 12 ] ? gf_zero() : gf_ldu( shred[ 12 ] + shred_pos );
      44         453 :     gf_t in13 = _erased[ 13 ] ? gf_zero() : gf_ldu( shred[ 13 ] + shred_pos );
      45         453 :     gf_t in14 = _erased[ 14 ] ? gf_zero() : gf_ldu( shred[ 14 ] + shred_pos );
      46         453 :     gf_t in15 = _erased[ 15 ] ? gf_zero() : gf_ldu( shred[ 15 ] + shred_pos );
      47         453 :     gf_t in16 = _erased[ 16 ] ? gf_zero() : gf_ldu( shred[ 16 ] + shred_pos );
      48         453 :     gf_t in17 = _erased[ 17 ] ? gf_zero() : gf_ldu( shred[ 17 ] + shred_pos );
      49         453 :     gf_t in18 = _erased[ 18 ] ? gf_zero() : gf_ldu( shred[ 18 ] + shred_pos );
      50         453 :     gf_t in19 = _erased[ 19 ] ? gf_zero() : gf_ldu( shred[ 19 ] + shred_pos );
      51         453 :     gf_t in20 = _erased[ 20 ] ? gf_zero() : gf_ldu( shred[ 20 ] + shred_pos );
      52         453 :     gf_t in21 = _erased[ 21 ] ? gf_zero() : gf_ldu( shred[ 21 ] + shred_pos );
      53         453 :     gf_t in22 = _erased[ 22 ] ? gf_zero() : gf_ldu( shred[ 22 ] + shred_pos );
      54         453 :     gf_t in23 = _erased[ 23 ] ? gf_zero() : gf_ldu( shred[ 23 ] + shred_pos );
      55         453 :     gf_t in24 = _erased[ 24 ] ? gf_zero() : gf_ldu( shred[ 24 ] + shred_pos );
      56         453 :     gf_t in25 = _erased[ 25 ] ? gf_zero() : gf_ldu( shred[ 25 ] + shred_pos );
      57         453 :     gf_t in26 = _erased[ 26 ] ? gf_zero() : gf_ldu( shred[ 26 ] + shred_pos );
      58         453 :     gf_t in27 = _erased[ 27 ] ? gf_zero() : gf_ldu( shred[ 27 ] + shred_pos );
      59         453 :     gf_t in28 = _erased[ 28 ] ? gf_zero() : gf_ldu( shred[ 28 ] + shred_pos );
      60         453 :     gf_t in29 = _erased[ 29 ] ? gf_zero() : gf_ldu( shred[ 29 ] + shred_pos );
      61         453 :     gf_t in30 = _erased[ 30 ] ? gf_zero() : gf_ldu( shred[ 30 ] + shred_pos );
      62         453 :     gf_t in31 = _erased[ 31 ] ? gf_zero() : gf_ldu( shred[ 31 ] + shred_pos );
      63         453 :     gf_t in32 = _erased[ 32 ] ? gf_zero() : gf_ldu( shred[ 32 ] + shred_pos );
      64         453 :     gf_t in33 = _erased[ 33 ] ? gf_zero() : gf_ldu( shred[ 33 ] + shred_pos );
      65         453 :     gf_t in34 = _erased[ 34 ] ? gf_zero() : gf_ldu( shred[ 34 ] + shred_pos );
      66         453 :     gf_t in35 = _erased[ 35 ] ? gf_zero() : gf_ldu( shred[ 35 ] + shred_pos );
      67         453 :     gf_t in36 = _erased[ 36 ] ? gf_zero() : gf_ldu( shred[ 36 ] + shred_pos );
      68         453 :     gf_t in37 = _erased[ 37 ] ? gf_zero() : gf_ldu( shred[ 37 ] + shred_pos );
      69         453 :     gf_t in38 = _erased[ 38 ] ? gf_zero() : gf_ldu( shred[ 38 ] + shred_pos );
      70         453 :     gf_t in39 = _erased[ 39 ] ? gf_zero() : gf_ldu( shred[ 39 ] + shred_pos );
      71         453 :     gf_t in40 = _erased[ 40 ] ? gf_zero() : gf_ldu( shred[ 40 ] + shred_pos );
      72         453 :     gf_t in41 = _erased[ 41 ] ? gf_zero() : gf_ldu( shred[ 41 ] + shred_pos );
      73         453 :     gf_t in42 = _erased[ 42 ] ? gf_zero() : gf_ldu( shred[ 42 ] + shred_pos );
      74         453 :     gf_t in43 = _erased[ 43 ] ? gf_zero() : gf_ldu( shred[ 43 ] + shred_pos );
      75         453 :     gf_t in44 = _erased[ 44 ] ? gf_zero() : gf_ldu( shred[ 44 ] + shred_pos );
      76         453 :     gf_t in45 = _erased[ 45 ] ? gf_zero() : gf_ldu( shred[ 45 ] + shred_pos );
      77         453 :     gf_t in46 = _erased[ 46 ] ? gf_zero() : gf_ldu( shred[ 46 ] + shred_pos );
      78         453 :     gf_t in47 = _erased[ 47 ] ? gf_zero() : gf_ldu( shred[ 47 ] + shred_pos );
      79         453 :     gf_t in48 = _erased[ 48 ] ? gf_zero() : gf_ldu( shred[ 48 ] + shred_pos );
      80         453 :     gf_t in49 = _erased[ 49 ] ? gf_zero() : gf_ldu( shred[ 49 ] + shred_pos );
      81         453 :     gf_t in50 = _erased[ 50 ] ? gf_zero() : gf_ldu( shred[ 50 ] + shred_pos );
      82         453 :     gf_t in51 = _erased[ 51 ] ? gf_zero() : gf_ldu( shred[ 51 ] + shred_pos );
      83         453 :     gf_t in52 = _erased[ 52 ] ? gf_zero() : gf_ldu( shred[ 52 ] + shred_pos );
      84         453 :     gf_t in53 = _erased[ 53 ] ? gf_zero() : gf_ldu( shred[ 53 ] + shred_pos );
      85         453 :     gf_t in54 = _erased[ 54 ] ? gf_zero() : gf_ldu( shred[ 54 ] + shred_pos );
      86         453 :     gf_t in55 = _erased[ 55 ] ? gf_zero() : gf_ldu( shred[ 55 ] + shred_pos );
      87         453 :     gf_t in56 = _erased[ 56 ] ? gf_zero() : gf_ldu( shred[ 56 ] + shred_pos );
      88         453 :     gf_t in57 = _erased[ 57 ] ? gf_zero() : gf_ldu( shred[ 57 ] + shred_pos );
      89         453 :     gf_t in58 = _erased[ 58 ] ? gf_zero() : gf_ldu( shred[ 58 ] + shred_pos );
      90         453 :     gf_t in59 = _erased[ 59 ] ? gf_zero() : gf_ldu( shred[ 59 ] + shred_pos );
      91         453 :     gf_t in60 = _erased[ 60 ] ? gf_zero() : gf_ldu( shred[ 60 ] + shred_pos );
      92         453 :     gf_t in61 = _erased[ 61 ] ? gf_zero() : gf_ldu( shred[ 61 ] + shred_pos );
      93         453 :     gf_t in62 = _erased[ 62 ] ? gf_zero() : gf_ldu( shred[ 62 ] + shred_pos );
      94         453 :     gf_t in63 = _erased[ 63 ] ? gf_zero() : gf_ldu( shred[ 63 ] + shred_pos );
      95         453 :     gf_t in64 = _erased[ 64 ] ? gf_zero() : gf_ldu( shred[ 64 ] + shred_pos );
      96         453 :     gf_t in65 = _erased[ 65 ] ? gf_zero() : gf_ldu( shred[ 65 ] + shred_pos );
      97         453 :     gf_t in66 = _erased[ 66 ] ? gf_zero() : gf_ldu( shred[ 66 ] + shred_pos );
      98         453 :     gf_t in67 = _erased[ 67 ] ? gf_zero() : gf_ldu( shred[ 67 ] + shred_pos );
      99         453 :     gf_t in68 = _erased[ 68 ] ? gf_zero() : gf_ldu( shred[ 68 ] + shred_pos );
     100         453 :     gf_t in69 = _erased[ 69 ] ? gf_zero() : gf_ldu( shred[ 69 ] + shred_pos );
     101         453 :     gf_t in70 = _erased[ 70 ] ? gf_zero() : gf_ldu( shred[ 70 ] + shred_pos );
     102         453 :     gf_t in71 = _erased[ 71 ] ? gf_zero() : gf_ldu( shred[ 71 ] + shred_pos );
     103         453 :     gf_t in72 = _erased[ 72 ] ? gf_zero() : gf_ldu( shred[ 72 ] + shred_pos );
     104         453 :     gf_t in73 = _erased[ 73 ] ? gf_zero() : gf_ldu( shred[ 73 ] + shred_pos );
     105         453 :     gf_t in74 = _erased[ 74 ] ? gf_zero() : gf_ldu( shred[ 74 ] + shred_pos );
     106         453 :     gf_t in75 = _erased[ 75 ] ? gf_zero() : gf_ldu( shred[ 75 ] + shred_pos );
     107         453 :     gf_t in76 = _erased[ 76 ] ? gf_zero() : gf_ldu( shred[ 76 ] + shred_pos );
     108         453 :     gf_t in77 = _erased[ 77 ] ? gf_zero() : gf_ldu( shred[ 77 ] + shred_pos );
     109         453 :     gf_t in78 = _erased[ 78 ] ? gf_zero() : gf_ldu( shred[ 78 ] + shred_pos );
     110         453 :     gf_t in79 = _erased[ 79 ] ? gf_zero() : gf_ldu( shred[ 79 ] + shred_pos );
     111         453 :     gf_t in80 = _erased[ 80 ] ? gf_zero() : gf_ldu( shred[ 80 ] + shred_pos );
     112         453 :     gf_t in81 = _erased[ 81 ] ? gf_zero() : gf_ldu( shred[ 81 ] + shred_pos );
     113         453 :     gf_t in82 = _erased[ 82 ] ? gf_zero() : gf_ldu( shred[ 82 ] + shred_pos );
     114         453 :     gf_t in83 = _erased[ 83 ] ? gf_zero() : gf_ldu( shred[ 83 ] + shred_pos );
     115         453 :     gf_t in84 = _erased[ 84 ] ? gf_zero() : gf_ldu( shred[ 84 ] + shred_pos );
     116         453 :     gf_t in85 = _erased[ 85 ] ? gf_zero() : gf_ldu( shred[ 85 ] + shred_pos );
     117         453 :     gf_t in86 = _erased[ 86 ] ? gf_zero() : gf_ldu( shred[ 86 ] + shred_pos );
     118         453 :     gf_t in87 = _erased[ 87 ] ? gf_zero() : gf_ldu( shred[ 87 ] + shred_pos );
     119         453 :     gf_t in88 = _erased[ 88 ] ? gf_zero() : gf_ldu( shred[ 88 ] + shred_pos );
     120         453 :     gf_t in89 = _erased[ 89 ] ? gf_zero() : gf_ldu( shred[ 89 ] + shred_pos );
     121         453 :     gf_t in90 = _erased[ 90 ] ? gf_zero() : gf_ldu( shred[ 90 ] + shred_pos );
     122         453 :     gf_t in91 = _erased[ 91 ] ? gf_zero() : gf_ldu( shred[ 91 ] + shred_pos );
     123         453 :     gf_t in92 = _erased[ 92 ] ? gf_zero() : gf_ldu( shred[ 92 ] + shred_pos );
     124         453 :     gf_t in93 = _erased[ 93 ] ? gf_zero() : gf_ldu( shred[ 93 ] + shred_pos );
     125         453 :     gf_t in94 = _erased[ 94 ] ? gf_zero() : gf_ldu( shred[ 94 ] + shred_pos );
     126         453 :     gf_t in95 = _erased[ 95 ] ? gf_zero() : gf_ldu( shred[ 95 ] + shred_pos );
     127         453 :     gf_t in96 = _erased[ 96 ] ? gf_zero() : gf_ldu( shred[ 96 ] + shred_pos );
     128         453 :     gf_t in97 = _erased[ 97 ] ? gf_zero() : gf_ldu( shred[ 97 ] + shred_pos );
     129         453 :     gf_t in98 = _erased[ 98 ] ? gf_zero() : gf_ldu( shred[ 98 ] + shred_pos );
     130         453 :     gf_t in99 = _erased[ 99 ] ? gf_zero() : gf_ldu( shred[ 99 ] + shred_pos );
     131         453 :     gf_t in100 = _erased[ 100 ] ? gf_zero() : gf_ldu( shred[ 100 ] + shred_pos );
     132         453 :     gf_t in101 = _erased[ 101 ] ? gf_zero() : gf_ldu( shred[ 101 ] + shred_pos );
     133         453 :     gf_t in102 = _erased[ 102 ] ? gf_zero() : gf_ldu( shred[ 102 ] + shred_pos );
     134         453 :     gf_t in103 = _erased[ 103 ] ? gf_zero() : gf_ldu( shred[ 103 ] + shred_pos );
     135         453 :     gf_t in104 = _erased[ 104 ] ? gf_zero() : gf_ldu( shred[ 104 ] + shred_pos );
     136         453 :     gf_t in105 = _erased[ 105 ] ? gf_zero() : gf_ldu( shred[ 105 ] + shred_pos );
     137         453 :     gf_t in106 = _erased[ 106 ] ? gf_zero() : gf_ldu( shred[ 106 ] + shred_pos );
     138         453 :     gf_t in107 = _erased[ 107 ] ? gf_zero() : gf_ldu( shred[ 107 ] + shred_pos );
     139         453 :     gf_t in108 = _erased[ 108 ] ? gf_zero() : gf_ldu( shred[ 108 ] + shred_pos );
     140         453 :     gf_t in109 = _erased[ 109 ] ? gf_zero() : gf_ldu( shred[ 109 ] + shred_pos );
     141         453 :     gf_t in110 = _erased[ 110 ] ? gf_zero() : gf_ldu( shred[ 110 ] + shred_pos );
     142         453 :     gf_t in111 = _erased[ 111 ] ? gf_zero() : gf_ldu( shred[ 111 ] + shred_pos );
     143         453 :     gf_t in112 = _erased[ 112 ] ? gf_zero() : gf_ldu( shred[ 112 ] + shred_pos );
     144         453 :     gf_t in113 = _erased[ 113 ] ? gf_zero() : gf_ldu( shred[ 113 ] + shred_pos );
     145         453 :     gf_t in114 = _erased[ 114 ] ? gf_zero() : gf_ldu( shred[ 114 ] + shred_pos );
     146         453 :     gf_t in115 = _erased[ 115 ] ? gf_zero() : gf_ldu( shred[ 115 ] + shred_pos );
     147         453 :     gf_t in116 = _erased[ 116 ] ? gf_zero() : gf_ldu( shred[ 116 ] + shred_pos );
     148         453 :     gf_t in117 = _erased[ 117 ] ? gf_zero() : gf_ldu( shred[ 117 ] + shred_pos );
     149         453 :     gf_t in118 = _erased[ 118 ] ? gf_zero() : gf_ldu( shred[ 118 ] + shred_pos );
     150         453 :     gf_t in119 = _erased[ 119 ] ? gf_zero() : gf_ldu( shred[ 119 ] + shred_pos );
     151         453 :     gf_t in120 = _erased[ 120 ] ? gf_zero() : gf_ldu( shred[ 120 ] + shred_pos );
     152         453 :     gf_t in121 = _erased[ 121 ] ? gf_zero() : gf_ldu( shred[ 121 ] + shred_pos );
     153         453 :     gf_t in122 = _erased[ 122 ] ? gf_zero() : gf_ldu( shred[ 122 ] + shred_pos );
     154         453 :     gf_t in123 = _erased[ 123 ] ? gf_zero() : gf_ldu( shred[ 123 ] + shred_pos );
     155         453 :     gf_t in124 = _erased[ 124 ] ? gf_zero() : gf_ldu( shred[ 124 ] + shred_pos );
     156         453 :     gf_t in125 = _erased[ 125 ] ? gf_zero() : gf_ldu( shred[ 125 ] + shred_pos );
     157         453 :     gf_t in126 = _erased[ 126 ] ? gf_zero() : gf_ldu( shred[ 126 ] + shred_pos );
     158         453 :     gf_t in127 = _erased[ 127 ] ? gf_zero() : gf_ldu( shred[ 127 ] + shred_pos );
     159             :     /* Technically, we only need to multiply the non-erased ones, since
     160             :        the erased ones are 0, but we know at least half of them are
     161             :        non-erased, and the branch is going to be just as costly as the
     162             :        multiply. */
     163         453 :     in00 = GF_MUL_VAR( in00, pi[  0 ] );
     164         453 :     in01 = GF_MUL_VAR( in01, pi[  1 ] );
     165         453 :     in02 = GF_MUL_VAR( in02, pi[  2 ] );
     166         453 :     in03 = GF_MUL_VAR( in03, pi[  3 ] );
     167         453 :     in04 = GF_MUL_VAR( in04, pi[  4 ] );
     168         453 :     in05 = GF_MUL_VAR( in05, pi[  5 ] );
     169         453 :     in06 = GF_MUL_VAR( in06, pi[  6 ] );
     170         453 :     in07 = GF_MUL_VAR( in07, pi[  7 ] );
     171         453 :     in08 = GF_MUL_VAR( in08, pi[  8 ] );
     172         453 :     in09 = GF_MUL_VAR( in09, pi[  9 ] );
     173         453 :     in10 = GF_MUL_VAR( in10, pi[ 10 ] );
     174         453 :     in11 = GF_MUL_VAR( in11, pi[ 11 ] );
     175         453 :     in12 = GF_MUL_VAR( in12, pi[ 12 ] );
     176         453 :     in13 = GF_MUL_VAR( in13, pi[ 13 ] );
     177         453 :     in14 = GF_MUL_VAR( in14, pi[ 14 ] );
     178         453 :     in15 = GF_MUL_VAR( in15, pi[ 15 ] );
     179         453 :     in16 = GF_MUL_VAR( in16, pi[ 16 ] );
     180         453 :     in17 = GF_MUL_VAR( in17, pi[ 17 ] );
     181         453 :     in18 = GF_MUL_VAR( in18, pi[ 18 ] );
     182         453 :     in19 = GF_MUL_VAR( in19, pi[ 19 ] );
     183         453 :     in20 = GF_MUL_VAR( in20, pi[ 20 ] );
     184         453 :     in21 = GF_MUL_VAR( in21, pi[ 21 ] );
     185         453 :     in22 = GF_MUL_VAR( in22, pi[ 22 ] );
     186         453 :     in23 = GF_MUL_VAR( in23, pi[ 23 ] );
     187         453 :     in24 = GF_MUL_VAR( in24, pi[ 24 ] );
     188         453 :     in25 = GF_MUL_VAR( in25, pi[ 25 ] );
     189         453 :     in26 = GF_MUL_VAR( in26, pi[ 26 ] );
     190         453 :     in27 = GF_MUL_VAR( in27, pi[ 27 ] );
     191         453 :     in28 = GF_MUL_VAR( in28, pi[ 28 ] );
     192         453 :     in29 = GF_MUL_VAR( in29, pi[ 29 ] );
     193         453 :     in30 = GF_MUL_VAR( in30, pi[ 30 ] );
     194         453 :     in31 = GF_MUL_VAR( in31, pi[ 31 ] );
     195         453 :     in32 = GF_MUL_VAR( in32, pi[ 32 ] );
     196         453 :     in33 = GF_MUL_VAR( in33, pi[ 33 ] );
     197         453 :     in34 = GF_MUL_VAR( in34, pi[ 34 ] );
     198         453 :     in35 = GF_MUL_VAR( in35, pi[ 35 ] );
     199         453 :     in36 = GF_MUL_VAR( in36, pi[ 36 ] );
     200         453 :     in37 = GF_MUL_VAR( in37, pi[ 37 ] );
     201         453 :     in38 = GF_MUL_VAR( in38, pi[ 38 ] );
     202         453 :     in39 = GF_MUL_VAR( in39, pi[ 39 ] );
     203         453 :     in40 = GF_MUL_VAR( in40, pi[ 40 ] );
     204         453 :     in41 = GF_MUL_VAR( in41, pi[ 41 ] );
     205         453 :     in42 = GF_MUL_VAR( in42, pi[ 42 ] );
     206         453 :     in43 = GF_MUL_VAR( in43, pi[ 43 ] );
     207         453 :     in44 = GF_MUL_VAR( in44, pi[ 44 ] );
     208         453 :     in45 = GF_MUL_VAR( in45, pi[ 45 ] );
     209         453 :     in46 = GF_MUL_VAR( in46, pi[ 46 ] );
     210         453 :     in47 = GF_MUL_VAR( in47, pi[ 47 ] );
     211         453 :     in48 = GF_MUL_VAR( in48, pi[ 48 ] );
     212         453 :     in49 = GF_MUL_VAR( in49, pi[ 49 ] );
     213         453 :     in50 = GF_MUL_VAR( in50, pi[ 50 ] );
     214         453 :     in51 = GF_MUL_VAR( in51, pi[ 51 ] );
     215         453 :     in52 = GF_MUL_VAR( in52, pi[ 52 ] );
     216         453 :     in53 = GF_MUL_VAR( in53, pi[ 53 ] );
     217         453 :     in54 = GF_MUL_VAR( in54, pi[ 54 ] );
     218         453 :     in55 = GF_MUL_VAR( in55, pi[ 55 ] );
     219         453 :     in56 = GF_MUL_VAR( in56, pi[ 56 ] );
     220         453 :     in57 = GF_MUL_VAR( in57, pi[ 57 ] );
     221         453 :     in58 = GF_MUL_VAR( in58, pi[ 58 ] );
     222         453 :     in59 = GF_MUL_VAR( in59, pi[ 59 ] );
     223         453 :     in60 = GF_MUL_VAR( in60, pi[ 60 ] );
     224         453 :     in61 = GF_MUL_VAR( in61, pi[ 61 ] );
     225         453 :     in62 = GF_MUL_VAR( in62, pi[ 62 ] );
     226         453 :     in63 = GF_MUL_VAR( in63, pi[ 63 ] );
     227         453 :     in64 = GF_MUL_VAR( in64, pi[ 64 ] );
     228         453 :     in65 = GF_MUL_VAR( in65, pi[ 65 ] );
     229         453 :     in66 = GF_MUL_VAR( in66, pi[ 66 ] );
     230         453 :     in67 = GF_MUL_VAR( in67, pi[ 67 ] );
     231         453 :     in68 = GF_MUL_VAR( in68, pi[ 68 ] );
     232         453 :     in69 = GF_MUL_VAR( in69, pi[ 69 ] );
     233         453 :     in70 = GF_MUL_VAR( in70, pi[ 70 ] );
     234         453 :     in71 = GF_MUL_VAR( in71, pi[ 71 ] );
     235         453 :     in72 = GF_MUL_VAR( in72, pi[ 72 ] );
     236         453 :     in73 = GF_MUL_VAR( in73, pi[ 73 ] );
     237         453 :     in74 = GF_MUL_VAR( in74, pi[ 74 ] );
     238         453 :     in75 = GF_MUL_VAR( in75, pi[ 75 ] );
     239         453 :     in76 = GF_MUL_VAR( in76, pi[ 76 ] );
     240         453 :     in77 = GF_MUL_VAR( in77, pi[ 77 ] );
     241         453 :     in78 = GF_MUL_VAR( in78, pi[ 78 ] );
     242         453 :     in79 = GF_MUL_VAR( in79, pi[ 79 ] );
     243         453 :     in80 = GF_MUL_VAR( in80, pi[ 80 ] );
     244         453 :     in81 = GF_MUL_VAR( in81, pi[ 81 ] );
     245         453 :     in82 = GF_MUL_VAR( in82, pi[ 82 ] );
     246         453 :     in83 = GF_MUL_VAR( in83, pi[ 83 ] );
     247         453 :     in84 = GF_MUL_VAR( in84, pi[ 84 ] );
     248         453 :     in85 = GF_MUL_VAR( in85, pi[ 85 ] );
     249         453 :     in86 = GF_MUL_VAR( in86, pi[ 86 ] );
     250         453 :     in87 = GF_MUL_VAR( in87, pi[ 87 ] );
     251         453 :     in88 = GF_MUL_VAR( in88, pi[ 88 ] );
     252         453 :     in89 = GF_MUL_VAR( in89, pi[ 89 ] );
     253         453 :     in90 = GF_MUL_VAR( in90, pi[ 90 ] );
     254         453 :     in91 = GF_MUL_VAR( in91, pi[ 91 ] );
     255         453 :     in92 = GF_MUL_VAR( in92, pi[ 92 ] );
     256         453 :     in93 = GF_MUL_VAR( in93, pi[ 93 ] );
     257         453 :     in94 = GF_MUL_VAR( in94, pi[ 94 ] );
     258         453 :     in95 = GF_MUL_VAR( in95, pi[ 95 ] );
     259         453 :     in96 = GF_MUL_VAR( in96, pi[ 96 ] );
     260         453 :     in97 = GF_MUL_VAR( in97, pi[ 97 ] );
     261         453 :     in98 = GF_MUL_VAR( in98, pi[ 98 ] );
     262         453 :     in99 = GF_MUL_VAR( in99, pi[ 99 ] );
     263         453 :     in100 = GF_MUL_VAR( in100, pi[ 100 ] );
     264         453 :     in101 = GF_MUL_VAR( in101, pi[ 101 ] );
     265         453 :     in102 = GF_MUL_VAR( in102, pi[ 102 ] );
     266         453 :     in103 = GF_MUL_VAR( in103, pi[ 103 ] );
     267         453 :     in104 = GF_MUL_VAR( in104, pi[ 104 ] );
     268         453 :     in105 = GF_MUL_VAR( in105, pi[ 105 ] );
     269         453 :     in106 = GF_MUL_VAR( in106, pi[ 106 ] );
     270         453 :     in107 = GF_MUL_VAR( in107, pi[ 107 ] );
     271         453 :     in108 = GF_MUL_VAR( in108, pi[ 108 ] );
     272         453 :     in109 = GF_MUL_VAR( in109, pi[ 109 ] );
     273         453 :     in110 = GF_MUL_VAR( in110, pi[ 110 ] );
     274         453 :     in111 = GF_MUL_VAR( in111, pi[ 111 ] );
     275         453 :     in112 = GF_MUL_VAR( in112, pi[ 112 ] );
     276         453 :     in113 = GF_MUL_VAR( in113, pi[ 113 ] );
     277         453 :     in114 = GF_MUL_VAR( in114, pi[ 114 ] );
     278         453 :     in115 = GF_MUL_VAR( in115, pi[ 115 ] );
     279         453 :     in116 = GF_MUL_VAR( in116, pi[ 116 ] );
     280         453 :     in117 = GF_MUL_VAR( in117, pi[ 117 ] );
     281         453 :     in118 = GF_MUL_VAR( in118, pi[ 118 ] );
     282         453 :     in119 = GF_MUL_VAR( in119, pi[ 119 ] );
     283         453 :     in120 = GF_MUL_VAR( in120, pi[ 120 ] );
     284         453 :     in121 = GF_MUL_VAR( in121, pi[ 121 ] );
     285         453 :     in122 = GF_MUL_VAR( in122, pi[ 122 ] );
     286         453 :     in123 = GF_MUL_VAR( in123, pi[ 123 ] );
     287         453 :     in124 = GF_MUL_VAR( in124, pi[ 124 ] );
     288         453 :     in125 = GF_MUL_VAR( in125, pi[ 125 ] );
     289         453 :     in126 = GF_MUL_VAR( in126, pi[ 126 ] );
     290         453 :     in127 = GF_MUL_VAR( in127, pi[ 127 ] );
     291         453 :     #define ALL_VARS in00, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28, in29, in30, in31, in32, in33, in34, in35, in36, in37, in38, in39, in40, in41, in42, in43, in44, in45, in46, in47, in48, in49, in50, in51, in52, in53, in54, in55, in56, in57, in58, in59, in60, in61, in62, in63, in64, in65, in66, in67, in68, in69, in70, in71, in72, in73, in74, in75, in76, in77, in78, in79, in80, in81, in82, in83, in84, in85, in86, in87, in88, in89, in90, in91, in92, in93, in94, in95, in96, in97, in98, in99, in100, in101, in102, in103, in104, in105, in106, in107, in108, in109, in110, in111, in112, in113, in114, in115, in116, in117, in118, in119, in120, in121, in122, in123, in124, in125, in126, in127
     292         906 :     #define ALL_VARS_REF &in00, &in01, &in02, &in03, &in04, &in05, &in06, &in07, &in08, &in09, &in10, &in11, &in12, &in13, &in14, &in15, &in16, &in17, &in18, &in19, &in20, &in21, &in22, &in23, &in24, &in25, &in26, &in27, &in28, &in29, &in30, &in31, &in32, &in33, &in34, &in35, &in36, &in37, &in38, &in39, &in40, &in41, &in42, &in43, &in44, &in45, &in46, &in47, &in48, &in49, &in50, &in51, &in52, &in53, &in54, &in55, &in56, &in57, &in58, &in59, &in60, &in61, &in62, &in63, &in64, &in65, &in66, &in67, &in68, &in69, &in70, &in71, &in72, &in73, &in74, &in75, &in76, &in77, &in78, &in79, &in80, &in81, &in82, &in83, &in84, &in85, &in86, &in87, &in88, &in89, &in90, &in91, &in92, &in93, &in94, &in95, &in96, &in97, &in98, &in99, &in100, &in101, &in102, &in103, &in104, &in105, &in106, &in107, &in108, &in109, &in110, &in111, &in112, &in113, &in114, &in115, &in116, &in117, &in118, &in119, &in120, &in121, &in122, &in123, &in124, &in125, &in126, &in127
     293             : 
     294         453 :     fd_reedsol_ifft_128_0( ALL_VARS_REF );
     295             : 
     296         453 :     FD_REEDSOL_GENERATE_FDERIV( 128, ALL_VARS );
     297             : 
     298         453 :     fd_reedsol_fft_128_0( ALL_VARS_REF );
     299             : 
     300             :     /* Again, we only need to multiply the erased ones, since we don't
     301             :        use the value of the non-erased ones anymore, but I'll take
     302             :        multiplies over branches most days. */
     303         453 :     in00 = GF_MUL_VAR( in00, pi[  0 ] );
     304         453 :     in01 = GF_MUL_VAR( in01, pi[  1 ] );
     305         453 :     in02 = GF_MUL_VAR( in02, pi[  2 ] );
     306         453 :     in03 = GF_MUL_VAR( in03, pi[  3 ] );
     307         453 :     in04 = GF_MUL_VAR( in04, pi[  4 ] );
     308         453 :     in05 = GF_MUL_VAR( in05, pi[  5 ] );
     309         453 :     in06 = GF_MUL_VAR( in06, pi[  6 ] );
     310         453 :     in07 = GF_MUL_VAR( in07, pi[  7 ] );
     311         453 :     in08 = GF_MUL_VAR( in08, pi[  8 ] );
     312         453 :     in09 = GF_MUL_VAR( in09, pi[  9 ] );
     313         453 :     in10 = GF_MUL_VAR( in10, pi[ 10 ] );
     314         453 :     in11 = GF_MUL_VAR( in11, pi[ 11 ] );
     315         453 :     in12 = GF_MUL_VAR( in12, pi[ 12 ] );
     316         453 :     in13 = GF_MUL_VAR( in13, pi[ 13 ] );
     317         453 :     in14 = GF_MUL_VAR( in14, pi[ 14 ] );
     318         453 :     in15 = GF_MUL_VAR( in15, pi[ 15 ] );
     319         453 :     in16 = GF_MUL_VAR( in16, pi[ 16 ] );
     320         453 :     in17 = GF_MUL_VAR( in17, pi[ 17 ] );
     321         453 :     in18 = GF_MUL_VAR( in18, pi[ 18 ] );
     322         453 :     in19 = GF_MUL_VAR( in19, pi[ 19 ] );
     323         453 :     in20 = GF_MUL_VAR( in20, pi[ 20 ] );
     324         453 :     in21 = GF_MUL_VAR( in21, pi[ 21 ] );
     325         453 :     in22 = GF_MUL_VAR( in22, pi[ 22 ] );
     326         453 :     in23 = GF_MUL_VAR( in23, pi[ 23 ] );
     327         453 :     in24 = GF_MUL_VAR( in24, pi[ 24 ] );
     328         453 :     in25 = GF_MUL_VAR( in25, pi[ 25 ] );
     329         453 :     in26 = GF_MUL_VAR( in26, pi[ 26 ] );
     330         453 :     in27 = GF_MUL_VAR( in27, pi[ 27 ] );
     331         453 :     in28 = GF_MUL_VAR( in28, pi[ 28 ] );
     332         453 :     in29 = GF_MUL_VAR( in29, pi[ 29 ] );
     333         453 :     in30 = GF_MUL_VAR( in30, pi[ 30 ] );
     334         453 :     in31 = GF_MUL_VAR( in31, pi[ 31 ] );
     335         453 :     in32 = GF_MUL_VAR( in32, pi[ 32 ] );
     336         453 :     in33 = GF_MUL_VAR( in33, pi[ 33 ] );
     337         453 :     in34 = GF_MUL_VAR( in34, pi[ 34 ] );
     338         453 :     in35 = GF_MUL_VAR( in35, pi[ 35 ] );
     339         453 :     in36 = GF_MUL_VAR( in36, pi[ 36 ] );
     340         453 :     in37 = GF_MUL_VAR( in37, pi[ 37 ] );
     341         453 :     in38 = GF_MUL_VAR( in38, pi[ 38 ] );
     342         453 :     in39 = GF_MUL_VAR( in39, pi[ 39 ] );
     343         453 :     in40 = GF_MUL_VAR( in40, pi[ 40 ] );
     344         453 :     in41 = GF_MUL_VAR( in41, pi[ 41 ] );
     345         453 :     in42 = GF_MUL_VAR( in42, pi[ 42 ] );
     346         453 :     in43 = GF_MUL_VAR( in43, pi[ 43 ] );
     347         453 :     in44 = GF_MUL_VAR( in44, pi[ 44 ] );
     348         453 :     in45 = GF_MUL_VAR( in45, pi[ 45 ] );
     349         453 :     in46 = GF_MUL_VAR( in46, pi[ 46 ] );
     350         453 :     in47 = GF_MUL_VAR( in47, pi[ 47 ] );
     351         453 :     in48 = GF_MUL_VAR( in48, pi[ 48 ] );
     352         453 :     in49 = GF_MUL_VAR( in49, pi[ 49 ] );
     353         453 :     in50 = GF_MUL_VAR( in50, pi[ 50 ] );
     354         453 :     in51 = GF_MUL_VAR( in51, pi[ 51 ] );
     355         453 :     in52 = GF_MUL_VAR( in52, pi[ 52 ] );
     356         453 :     in53 = GF_MUL_VAR( in53, pi[ 53 ] );
     357         453 :     in54 = GF_MUL_VAR( in54, pi[ 54 ] );
     358         453 :     in55 = GF_MUL_VAR( in55, pi[ 55 ] );
     359         453 :     in56 = GF_MUL_VAR( in56, pi[ 56 ] );
     360         453 :     in57 = GF_MUL_VAR( in57, pi[ 57 ] );
     361         453 :     in58 = GF_MUL_VAR( in58, pi[ 58 ] );
     362         453 :     in59 = GF_MUL_VAR( in59, pi[ 59 ] );
     363         453 :     in60 = GF_MUL_VAR( in60, pi[ 60 ] );
     364         453 :     in61 = GF_MUL_VAR( in61, pi[ 61 ] );
     365         453 :     in62 = GF_MUL_VAR( in62, pi[ 62 ] );
     366         453 :     in63 = GF_MUL_VAR( in63, pi[ 63 ] );
     367         453 :     in64 = GF_MUL_VAR( in64, pi[ 64 ] );
     368         453 :     in65 = GF_MUL_VAR( in65, pi[ 65 ] );
     369         453 :     in66 = GF_MUL_VAR( in66, pi[ 66 ] );
     370         453 :     in67 = GF_MUL_VAR( in67, pi[ 67 ] );
     371         453 :     in68 = GF_MUL_VAR( in68, pi[ 68 ] );
     372         453 :     in69 = GF_MUL_VAR( in69, pi[ 69 ] );
     373         453 :     in70 = GF_MUL_VAR( in70, pi[ 70 ] );
     374         453 :     in71 = GF_MUL_VAR( in71, pi[ 71 ] );
     375         453 :     in72 = GF_MUL_VAR( in72, pi[ 72 ] );
     376         453 :     in73 = GF_MUL_VAR( in73, pi[ 73 ] );
     377         453 :     in74 = GF_MUL_VAR( in74, pi[ 74 ] );
     378         453 :     in75 = GF_MUL_VAR( in75, pi[ 75 ] );
     379         453 :     in76 = GF_MUL_VAR( in76, pi[ 76 ] );
     380         453 :     in77 = GF_MUL_VAR( in77, pi[ 77 ] );
     381         453 :     in78 = GF_MUL_VAR( in78, pi[ 78 ] );
     382         453 :     in79 = GF_MUL_VAR( in79, pi[ 79 ] );
     383         453 :     in80 = GF_MUL_VAR( in80, pi[ 80 ] );
     384         453 :     in81 = GF_MUL_VAR( in81, pi[ 81 ] );
     385         453 :     in82 = GF_MUL_VAR( in82, pi[ 82 ] );
     386         453 :     in83 = GF_MUL_VAR( in83, pi[ 83 ] );
     387         453 :     in84 = GF_MUL_VAR( in84, pi[ 84 ] );
     388         453 :     in85 = GF_MUL_VAR( in85, pi[ 85 ] );
     389         453 :     in86 = GF_MUL_VAR( in86, pi[ 86 ] );
     390         453 :     in87 = GF_MUL_VAR( in87, pi[ 87 ] );
     391         453 :     in88 = GF_MUL_VAR( in88, pi[ 88 ] );
     392         453 :     in89 = GF_MUL_VAR( in89, pi[ 89 ] );
     393         453 :     in90 = GF_MUL_VAR( in90, pi[ 90 ] );
     394         453 :     in91 = GF_MUL_VAR( in91, pi[ 91 ] );
     395         453 :     in92 = GF_MUL_VAR( in92, pi[ 92 ] );
     396         453 :     in93 = GF_MUL_VAR( in93, pi[ 93 ] );
     397         453 :     in94 = GF_MUL_VAR( in94, pi[ 94 ] );
     398         453 :     in95 = GF_MUL_VAR( in95, pi[ 95 ] );
     399         453 :     in96 = GF_MUL_VAR( in96, pi[ 96 ] );
     400         453 :     in97 = GF_MUL_VAR( in97, pi[ 97 ] );
     401         453 :     in98 = GF_MUL_VAR( in98, pi[ 98 ] );
     402         453 :     in99 = GF_MUL_VAR( in99, pi[ 99 ] );
     403         453 :     in100 = GF_MUL_VAR( in100, pi[ 100 ] );
     404         453 :     in101 = GF_MUL_VAR( in101, pi[ 101 ] );
     405         453 :     in102 = GF_MUL_VAR( in102, pi[ 102 ] );
     406         453 :     in103 = GF_MUL_VAR( in103, pi[ 103 ] );
     407         453 :     in104 = GF_MUL_VAR( in104, pi[ 104 ] );
     408         453 :     in105 = GF_MUL_VAR( in105, pi[ 105 ] );
     409         453 :     in106 = GF_MUL_VAR( in106, pi[ 106 ] );
     410         453 :     in107 = GF_MUL_VAR( in107, pi[ 107 ] );
     411         453 :     in108 = GF_MUL_VAR( in108, pi[ 108 ] );
     412         453 :     in109 = GF_MUL_VAR( in109, pi[ 109 ] );
     413         453 :     in110 = GF_MUL_VAR( in110, pi[ 110 ] );
     414         453 :     in111 = GF_MUL_VAR( in111, pi[ 111 ] );
     415         453 :     in112 = GF_MUL_VAR( in112, pi[ 112 ] );
     416         453 :     in113 = GF_MUL_VAR( in113, pi[ 113 ] );
     417         453 :     in114 = GF_MUL_VAR( in114, pi[ 114 ] );
     418         453 :     in115 = GF_MUL_VAR( in115, pi[ 115 ] );
     419         453 :     in116 = GF_MUL_VAR( in116, pi[ 116 ] );
     420         453 :     in117 = GF_MUL_VAR( in117, pi[ 117 ] );
     421         453 :     in118 = GF_MUL_VAR( in118, pi[ 118 ] );
     422         453 :     in119 = GF_MUL_VAR( in119, pi[ 119 ] );
     423         453 :     in120 = GF_MUL_VAR( in120, pi[ 120 ] );
     424         453 :     in121 = GF_MUL_VAR( in121, pi[ 121 ] );
     425         453 :     in122 = GF_MUL_VAR( in122, pi[ 122 ] );
     426         453 :     in123 = GF_MUL_VAR( in123, pi[ 123 ] );
     427         453 :     in124 = GF_MUL_VAR( in124, pi[ 124 ] );
     428         453 :     in125 = GF_MUL_VAR( in125, pi[ 125 ] );
     429         453 :     in126 = GF_MUL_VAR( in126, pi[ 126 ] );
     430         453 :     in127 = GF_MUL_VAR( in127, pi[ 127 ] );
     431             :     /* There are a couple of cases we have to handle:
     432             :         - If i<shred_cnt and erased[ i ], it's an actual erasure, so we
     433             :             need to store the generated value.
     434             :         - If i<shred_cnt and _erased[ i ] but not erased[ i ], it was a
     435             :             value that we ignored to ensure the data lies on a
     436             :             polynomial of the right order, so we need to compare the
     437             :             value we generated to the one that was there.
     438             :         - If i<shred_cnt and !_erased[ i ], then this is a value we
     439             :             actually used in the computation, but we destroyed it, so we
     440             :             need to reload the actual value of the shred in order to use the
     441             :             IFFT in the next step.
     442             :         - If i>=shred_cnt, do nothing, which will keep the value of the
     443             :             shred if it existed in the variable. */
     444       36702 :   #define STORE_COMPARE_RELOAD( n, var ) do{                                                        \
     445       36702 :             if(       erased[ n ] )        gf_stu( shred[ n ] + shred_pos, var );                            \
     446       36702 :             else if( _erased[ n ] ) diff = GF_OR( diff, GF_ADD( var, gf_ldu( shred[ n ] + shred_pos ) ) );       \
     447       18351 :             else                    var  = gf_ldu( shred[ n ] + shred_pos );                                     \
     448       36702 :           } while( 0 )
     449         453 :   #define STORE_COMPARE( n, var ) do{                                                         \
     450           0 :         if(       erased[ n ] )        gf_stu( shred[ n ] + shred_pos, var );                          \
     451           0 :         else                    diff = GF_OR( diff, GF_ADD( var, gf_ldu( shred[ n ] + shred_pos ) ) ); \
     452           0 :       } while( 0 )
     453         453 :     switch( fd_ulong_min( shred_cnt, 128UL ) ) {
     454           0 :       case 128UL: STORE_COMPARE_RELOAD( 127, in127 ); FALLTHRU
     455           0 :       case 127UL: STORE_COMPARE_RELOAD( 126, in126 ); FALLTHRU
     456           0 :       case 126UL: STORE_COMPARE_RELOAD( 125, in125 ); FALLTHRU
     457           0 :       case 125UL: STORE_COMPARE_RELOAD( 124, in124 ); FALLTHRU
     458           0 :       case 124UL: STORE_COMPARE_RELOAD( 123, in123 ); FALLTHRU
     459           0 :       case 123UL: STORE_COMPARE_RELOAD( 122, in122 ); FALLTHRU
     460           0 :       case 122UL: STORE_COMPARE_RELOAD( 121, in121 ); FALLTHRU
     461           0 :       case 121UL: STORE_COMPARE_RELOAD( 120, in120 ); FALLTHRU
     462           0 :       case 120UL: STORE_COMPARE_RELOAD( 119, in119 ); FALLTHRU
     463           0 :       case 119UL: STORE_COMPARE_RELOAD( 118, in118 ); FALLTHRU
     464           0 :       case 118UL: STORE_COMPARE_RELOAD( 117, in117 ); FALLTHRU
     465           0 :       case 117UL: STORE_COMPARE_RELOAD( 116, in116 ); FALLTHRU
     466           0 :       case 116UL: STORE_COMPARE_RELOAD( 115, in115 ); FALLTHRU
     467           0 :       case 115UL: STORE_COMPARE_RELOAD( 114, in114 ); FALLTHRU
     468           0 :       case 114UL: STORE_COMPARE_RELOAD( 113, in113 ); FALLTHRU
     469           0 :       case 113UL: STORE_COMPARE_RELOAD( 112, in112 ); FALLTHRU
     470           0 :       case 112UL: STORE_COMPARE_RELOAD( 111, in111 ); FALLTHRU
     471           0 :       case 111UL: STORE_COMPARE_RELOAD( 110, in110 ); FALLTHRU
     472           0 :       case 110UL: STORE_COMPARE_RELOAD( 109, in109 ); FALLTHRU
     473           0 :       case 109UL: STORE_COMPARE_RELOAD( 108, in108 ); FALLTHRU
     474           0 :       case 108UL: STORE_COMPARE_RELOAD( 107, in107 ); FALLTHRU
     475           0 :       case 107UL: STORE_COMPARE_RELOAD( 106, in106 ); FALLTHRU
     476           0 :       case 106UL: STORE_COMPARE_RELOAD( 105, in105 ); FALLTHRU
     477           0 :       case 105UL: STORE_COMPARE_RELOAD( 104, in104 ); FALLTHRU
     478           0 :       case 104UL: STORE_COMPARE_RELOAD( 103, in103 ); FALLTHRU
     479           0 :       case 103UL: STORE_COMPARE_RELOAD( 102, in102 ); FALLTHRU
     480           0 :       case 102UL: STORE_COMPARE_RELOAD( 101, in101 ); FALLTHRU
     481           0 :       case 101UL: STORE_COMPARE_RELOAD( 100, in100 ); FALLTHRU
     482           0 :       case 100UL: STORE_COMPARE_RELOAD( 99, in99 ); FALLTHRU
     483           0 :       case 99UL: STORE_COMPARE_RELOAD( 98, in98 ); FALLTHRU
     484           0 :       case 98UL: STORE_COMPARE_RELOAD( 97, in97 ); FALLTHRU
     485           0 :       case 97UL: STORE_COMPARE_RELOAD( 96, in96 ); FALLTHRU
     486         192 :       case 96UL: STORE_COMPARE_RELOAD( 95, in95 ); FALLTHRU
     487         192 :       case 95UL: STORE_COMPARE_RELOAD( 94, in94 ); FALLTHRU
     488         192 :       case 94UL: STORE_COMPARE_RELOAD( 93, in93 ); FALLTHRU
     489         192 :       case 93UL: STORE_COMPARE_RELOAD( 92, in92 ); FALLTHRU
     490         192 :       case 92UL: STORE_COMPARE_RELOAD( 91, in91 ); FALLTHRU
     491         192 :       case 91UL: STORE_COMPARE_RELOAD( 90, in90 ); FALLTHRU
     492         192 :       case 90UL: STORE_COMPARE_RELOAD( 89, in89 ); FALLTHRU
     493         192 :       case 89UL: STORE_COMPARE_RELOAD( 88, in88 ); FALLTHRU
     494         192 :       case 88UL: STORE_COMPARE_RELOAD( 87, in87 ); FALLTHRU
     495         192 :       case 87UL: STORE_COMPARE_RELOAD( 86, in86 ); FALLTHRU
     496         192 :       case 86UL: STORE_COMPARE_RELOAD( 85, in85 ); FALLTHRU
     497         192 :       case 85UL: STORE_COMPARE_RELOAD( 84, in84 ); FALLTHRU
     498         192 :       case 84UL: STORE_COMPARE_RELOAD( 83, in83 ); FALLTHRU
     499         192 :       case 83UL: STORE_COMPARE_RELOAD( 82, in82 ); FALLTHRU
     500         192 :       case 82UL: STORE_COMPARE_RELOAD( 81, in81 ); FALLTHRU
     501         192 :       case 81UL: STORE_COMPARE_RELOAD( 80, in80 ); FALLTHRU
     502         192 :       case 80UL: STORE_COMPARE_RELOAD( 79, in79 ); FALLTHRU
     503         192 :       case 79UL: STORE_COMPARE_RELOAD( 78, in78 ); FALLTHRU
     504         192 :       case 78UL: STORE_COMPARE_RELOAD( 77, in77 ); FALLTHRU
     505         192 :       case 77UL: STORE_COMPARE_RELOAD( 76, in76 ); FALLTHRU
     506         192 :       case 76UL: STORE_COMPARE_RELOAD( 75, in75 ); FALLTHRU
     507         192 :       case 75UL: STORE_COMPARE_RELOAD( 74, in74 ); FALLTHRU
     508         192 :       case 74UL: STORE_COMPARE_RELOAD( 73, in73 ); FALLTHRU
     509         192 :       case 73UL: STORE_COMPARE_RELOAD( 72, in72 ); FALLTHRU
     510         192 :       case 72UL: STORE_COMPARE_RELOAD( 71, in71 ); FALLTHRU
     511         192 :       case 71UL: STORE_COMPARE_RELOAD( 70, in70 ); FALLTHRU
     512         453 :       case 70UL: STORE_COMPARE_RELOAD( 69, in69 ); FALLTHRU
     513         453 :       case 69UL: STORE_COMPARE_RELOAD( 68, in68 ); FALLTHRU
     514         453 :       case 68UL: STORE_COMPARE_RELOAD( 67, in67 ); FALLTHRU
     515         453 :       case 67UL: STORE_COMPARE_RELOAD( 66, in66 ); FALLTHRU
     516         453 :       case 66UL: STORE_COMPARE_RELOAD( 65, in65 ); FALLTHRU
     517         453 :       case 65UL: STORE_COMPARE_RELOAD( 64, in64 ); FALLTHRU
     518         453 :       case 64UL: STORE_COMPARE_RELOAD( 63, in63 ); FALLTHRU
     519         453 :       case 63UL: STORE_COMPARE_RELOAD( 62, in62 ); FALLTHRU
     520         453 :       case 62UL: STORE_COMPARE_RELOAD( 61, in61 ); FALLTHRU
     521         453 :       case 61UL: STORE_COMPARE_RELOAD( 60, in60 ); FALLTHRU
     522         453 :       case 60UL: STORE_COMPARE_RELOAD( 59, in59 ); FALLTHRU
     523         453 :       case 59UL: STORE_COMPARE_RELOAD( 58, in58 ); FALLTHRU
     524         453 :       case 58UL: STORE_COMPARE_RELOAD( 57, in57 ); FALLTHRU
     525         453 :       case 57UL: STORE_COMPARE_RELOAD( 56, in56 ); FALLTHRU
     526         453 :       case 56UL: STORE_COMPARE_RELOAD( 55, in55 ); FALLTHRU
     527         453 :       case 55UL: STORE_COMPARE_RELOAD( 54, in54 ); FALLTHRU
     528         453 :       case 54UL: STORE_COMPARE_RELOAD( 53, in53 ); FALLTHRU
     529         453 :       case 53UL: STORE_COMPARE_RELOAD( 52, in52 ); FALLTHRU
     530         453 :       case 52UL: STORE_COMPARE_RELOAD( 51, in51 ); FALLTHRU
     531         453 :       case 51UL: STORE_COMPARE_RELOAD( 50, in50 ); FALLTHRU
     532         453 :       case 50UL: STORE_COMPARE_RELOAD( 49, in49 ); FALLTHRU
     533         453 :       case 49UL: STORE_COMPARE_RELOAD( 48, in48 ); FALLTHRU
     534         453 :       case 48UL: STORE_COMPARE_RELOAD( 47, in47 ); FALLTHRU
     535         453 :       case 47UL: STORE_COMPARE_RELOAD( 46, in46 ); FALLTHRU
     536         453 :       case 46UL: STORE_COMPARE_RELOAD( 45, in45 ); FALLTHRU
     537         453 :       case 45UL: STORE_COMPARE_RELOAD( 44, in44 ); FALLTHRU
     538         453 :       case 44UL: STORE_COMPARE_RELOAD( 43, in43 ); FALLTHRU
     539         453 :       case 43UL: STORE_COMPARE_RELOAD( 42, in42 ); FALLTHRU
     540         453 :       case 42UL: STORE_COMPARE_RELOAD( 41, in41 ); FALLTHRU
     541         453 :       case 41UL: STORE_COMPARE_RELOAD( 40, in40 ); FALLTHRU
     542         453 :       case 40UL: STORE_COMPARE_RELOAD( 39, in39 ); FALLTHRU
     543         453 :       case 39UL: STORE_COMPARE_RELOAD( 38, in38 ); FALLTHRU
     544         453 :       case 38UL: STORE_COMPARE_RELOAD( 37, in37 ); FALLTHRU
     545         453 :       case 37UL: STORE_COMPARE_RELOAD( 36, in36 ); FALLTHRU
     546         453 :       case 36UL: STORE_COMPARE_RELOAD( 35, in35 ); FALLTHRU
     547         453 :       case 35UL: STORE_COMPARE_RELOAD( 34, in34 ); FALLTHRU
     548         453 :       case 34UL: STORE_COMPARE_RELOAD( 33, in33 ); FALLTHRU
     549         453 :       case 33UL: STORE_COMPARE_RELOAD( 32, in32 ); FALLTHRU
     550         453 :       case 32UL: STORE_COMPARE_RELOAD( 31, in31 ); FALLTHRU
     551         453 :       case 31UL: STORE_COMPARE_RELOAD( 30, in30 ); FALLTHRU
     552         453 :       case 30UL: STORE_COMPARE_RELOAD( 29, in29 ); FALLTHRU
     553         453 :       case 29UL: STORE_COMPARE_RELOAD( 28, in28 ); FALLTHRU
     554         453 :       case 28UL: STORE_COMPARE_RELOAD( 27, in27 ); FALLTHRU
     555         453 :       case 27UL: STORE_COMPARE_RELOAD( 26, in26 ); FALLTHRU
     556         453 :       case 26UL: STORE_COMPARE_RELOAD( 25, in25 ); FALLTHRU
     557         453 :       case 25UL: STORE_COMPARE_RELOAD( 24, in24 ); FALLTHRU
     558         453 :       case 24UL: STORE_COMPARE_RELOAD( 23, in23 ); FALLTHRU
     559         453 :       case 23UL: STORE_COMPARE_RELOAD( 22, in22 ); FALLTHRU
     560         453 :       case 22UL: STORE_COMPARE_RELOAD( 21, in21 ); FALLTHRU
     561         453 :       case 21UL: STORE_COMPARE_RELOAD( 20, in20 ); FALLTHRU
     562         453 :       case 20UL: STORE_COMPARE_RELOAD( 19, in19 ); FALLTHRU
     563         453 :       case 19UL: STORE_COMPARE_RELOAD( 18, in18 ); FALLTHRU
     564         453 :       case 18UL: STORE_COMPARE_RELOAD( 17, in17 ); FALLTHRU
     565         453 :       case 17UL: STORE_COMPARE_RELOAD( 16, in16 ); FALLTHRU
     566         453 :       case 16UL: STORE_COMPARE_RELOAD( 15, in15 ); FALLTHRU
     567         453 :       case 15UL: STORE_COMPARE_RELOAD( 14, in14 ); FALLTHRU
     568         453 :       case 14UL: STORE_COMPARE_RELOAD( 13, in13 ); FALLTHRU
     569         453 :       case 13UL: STORE_COMPARE_RELOAD( 12, in12 ); FALLTHRU
     570         453 :       case 12UL: STORE_COMPARE_RELOAD( 11, in11 ); FALLTHRU
     571         453 :       case 11UL: STORE_COMPARE_RELOAD( 10, in10 ); FALLTHRU
     572         453 :       case 10UL: STORE_COMPARE_RELOAD(  9, in09 ); FALLTHRU
     573         453 :       case  9UL: STORE_COMPARE_RELOAD(  8, in08 ); FALLTHRU
     574         453 :       case  8UL: STORE_COMPARE_RELOAD(  7, in07 ); FALLTHRU
     575         453 :       case  7UL: STORE_COMPARE_RELOAD(  6, in06 ); FALLTHRU
     576         453 :       case  6UL: STORE_COMPARE_RELOAD(  5, in05 ); FALLTHRU
     577         453 :       case  5UL: STORE_COMPARE_RELOAD(  4, in04 ); FALLTHRU
     578         453 :       case  4UL: STORE_COMPARE_RELOAD(  3, in03 ); FALLTHRU
     579         453 :       case  3UL: STORE_COMPARE_RELOAD(  2, in02 ); FALLTHRU
     580         453 :       case  2UL: STORE_COMPARE_RELOAD(  1, in01 ); FALLTHRU
     581         453 :       case  1UL: STORE_COMPARE_RELOAD(  0, in00 );
     582         453 :     }
     583             : 
     584         453 :     ulong shreds_remaining = shred_cnt-fd_ulong_min( shred_cnt, 128UL );
     585         453 :     if( shreds_remaining>0UL ) {
     586           0 :       FD_REEDSOL_GENERATE_IFFT( 128,  0, ALL_VARS );
     587           0 :       FD_REEDSOL_GENERATE_FFT(  128, 128, ALL_VARS );
     588             : 
     589           0 :       switch( fd_ulong_min( shreds_remaining, 128UL ) ) {
     590           0 :         case  7UL: STORE_COMPARE( 134, in06 ); FALLTHRU
     591           0 :         case  6UL: STORE_COMPARE( 133, in05 ); FALLTHRU
     592           0 :         case  5UL: STORE_COMPARE( 132, in04 ); FALLTHRU
     593           0 :         case  4UL: STORE_COMPARE( 131, in03 ); FALLTHRU
     594           0 :         case  3UL: STORE_COMPARE( 130, in02 ); FALLTHRU
     595           0 :         case  2UL: STORE_COMPARE( 129, in01 ); FALLTHRU
     596           0 :         case  1UL: STORE_COMPARE( 128, in00 );
     597           0 :       }
     598           0 :       shreds_remaining -= fd_ulong_min( shreds_remaining, 128UL );
     599           0 :     }
     600         453 :     if( FD_UNLIKELY( GF_ANY( diff ) ) ) return FD_REEDSOL_ERR_CORRUPT;
     601         453 :     shred_pos += GF_WIDTH;
     602         453 :     shred_pos = fd_ulong_if( ((shred_sz-GF_WIDTH)<shred_pos) & (shred_pos<shred_sz), shred_sz-GF_WIDTH, shred_pos );
     603         453 :   }
     604          15 :   return FD_REEDSOL_SUCCESS;
     605          15 : }

Generated by: LCOV version 1.14