smesh_lol_web_common_crypto_chacha20.mjs raw

   1  // Package smesh.lol/web/common/crypto/chacha20
   2  // Generated by MoxieJS — Moxie JavaScript backend
   3  
   4  import * as $rt from './$runtime/index.mjs';
   5  
   6  // Package-level variables
   7  
   8  export function init() {
   9    return;
  10  }
  11  
  12  export function HChaCha20(key, nonce) {
  13    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89;
  14    let $block = 0;
  15    while (true) {
  16      switch ($block) {
  17        case 0: {
  18          $t0_1 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
  19          $t0_1.$set($rt.builtin.cloneValue(key));
  20          $t1_2 = { $value: $rt.builtin.makeSlice(16, 16, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
  21          $t1_2.$set($rt.builtin.cloneValue(nonce));
  22          $t2_3 = { $value: $rt.builtin.makeSlice(16, 16, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
  23          $t3_4 = $t2_3.$get().addr(0);
  24          $t3_4.$set(1634760805);
  25          $t4_5 = $t2_3.$get().addr(1);
  26          $t4_5.$set(857760878);
  27          $t5_6 = $t2_3.$get().addr(2);
  28          $t5_6.$set(2036477234);
  29          $t6_7 = $t2_3.$get().addr(3);
  30          $t6_7.$set(1797285236);
  31          $t7_8 = $rt.builtin.sliceSlice($t0_1.$get(), 0, 4, undefined);
  32          $t8_9 = le32($t7_8);
  33          $t9_10 = $t2_3.$get().addr(4);
  34          $t9_10.$set($t8_9);
  35          $t10_11 = $rt.builtin.sliceSlice($t0_1.$get(), 4, 8, undefined);
  36          $t11_12 = le32($t10_11);
  37          $t12_13 = $t2_3.$get().addr(5);
  38          $t12_13.$set($t11_12);
  39          $t13_14 = $rt.builtin.sliceSlice($t0_1.$get(), 8, 12, undefined);
  40          $t14_15 = le32($t13_14);
  41          $t15_16 = $t2_3.$get().addr(6);
  42          $t15_16.$set($t14_15);
  43          $t16_17 = $rt.builtin.sliceSlice($t0_1.$get(), 12, 16, undefined);
  44          $t17_18 = le32($t16_17);
  45          $t18_19 = $t2_3.$get().addr(7);
  46          $t18_19.$set($t17_18);
  47          $t19_20 = $rt.builtin.sliceSlice($t0_1.$get(), 16, 20, undefined);
  48          $t20_21 = le32($t19_20);
  49          $t21_22 = $t2_3.$get().addr(8);
  50          $t21_22.$set($t20_21);
  51          $t22_23 = $rt.builtin.sliceSlice($t0_1.$get(), 20, 24, undefined);
  52          $t23_24 = le32($t22_23);
  53          $t24_25 = $t2_3.$get().addr(9);
  54          $t24_25.$set($t23_24);
  55          $t25_26 = $rt.builtin.sliceSlice($t0_1.$get(), 24, 28, undefined);
  56          $t26_27 = le32($t25_26);
  57          $t27_28 = $t2_3.$get().addr(10);
  58          $t27_28.$set($t26_27);
  59          $t28_29 = $rt.builtin.sliceSlice($t0_1.$get(), 28, 32, undefined);
  60          $t29_30 = le32($t28_29);
  61          $t30_31 = $t2_3.$get().addr(11);
  62          $t30_31.$set($t29_30);
  63          $t31_32 = $rt.builtin.sliceSlice($t1_2.$get(), 0, 4, undefined);
  64          $t32_33 = le32($t31_32);
  65          $t33_34 = $t2_3.$get().addr(12);
  66          $t33_34.$set($t32_33);
  67          $t34_35 = $rt.builtin.sliceSlice($t1_2.$get(), 4, 8, undefined);
  68          $t35_36 = le32($t34_35);
  69          $t36_37 = $t2_3.$get().addr(13);
  70          $t36_37.$set($t35_36);
  71          $t37_38 = $rt.builtin.sliceSlice($t1_2.$get(), 8, 12, undefined);
  72          $t38_39 = le32($t37_38);
  73          $t39_40 = $t2_3.$get().addr(14);
  74          $t39_40.$set($t38_39);
  75          $t40_41 = $rt.builtin.sliceSlice($t1_2.$get(), 12, 16, undefined);
  76          $t41_42 = le32($t40_41);
  77          $t42_43 = $t2_3.$get().addr(15);
  78          $t42_43.$set($t41_42);
  79          $t43_44 = (0 < 10);
  80          if ($t43_44) {
  81            $t44_45 = 0;
  82            $block = 1; break;
  83          }
  84          else {
  85            $block = 2; break;
  86          }
  87          break;
  88        }
  89        case 1: {
  90          $t45_46 = qr($t2_3, 0, 4, 8, 12);
  91          $t46_47 = qr($t2_3, 1, 5, 9, 13);
  92          $t47_48 = qr($t2_3, 2, 6, 10, 14);
  93          $t48_49 = qr($t2_3, 3, 7, 11, 15);
  94          $t49_50 = qr($t2_3, 0, 5, 10, 15);
  95          $t50_51 = qr($t2_3, 1, 6, 11, 12);
  96          $t51_52 = qr($t2_3, 2, 7, 8, 13);
  97          $t52_53 = qr($t2_3, 3, 4, 9, 14);
  98          $t53_54 = ($t44_45 + 1);
  99          $t54_55 = ($t53_54 < 10);
 100          if ($t54_55) {
 101            $t44_45 = $t53_54;
 102            $block = 1; break;
 103          }
 104          else {
 105            $block = 2; break;
 106          }
 107          break;
 108        }
 109        case 2: {
 110          $t55_56 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 111          $t56_57 = $rt.builtin.sliceSlice($t55_56.$get(), 0, 4, undefined);
 112          $t57_58 = $t2_3.$get().addr(0);
 113          $t58_59 = $t57_58.$get();
 114          $t59_60 = put32($t56_57, $t58_59);
 115          $t60_61 = $rt.builtin.sliceSlice($t55_56.$get(), 4, 8, undefined);
 116          $t61_62 = $t2_3.$get().addr(1);
 117          $t62_63 = $t61_62.$get();
 118          $t63_64 = put32($t60_61, $t62_63);
 119          $t64_65 = $rt.builtin.sliceSlice($t55_56.$get(), 8, 12, undefined);
 120          $t65_66 = $t2_3.$get().addr(2);
 121          $t66_67 = $t65_66.$get();
 122          $t67_68 = put32($t64_65, $t66_67);
 123          $t68_69 = $rt.builtin.sliceSlice($t55_56.$get(), 12, 16, undefined);
 124          $t69_70 = $t2_3.$get().addr(3);
 125          $t70_71 = $t69_70.$get();
 126          $t71_72 = put32($t68_69, $t70_71);
 127          $t72_73 = $rt.builtin.sliceSlice($t55_56.$get(), 16, 20, undefined);
 128          $t73_74 = $t2_3.$get().addr(12);
 129          $t74_75 = $t73_74.$get();
 130          $t75_76 = put32($t72_73, $t74_75);
 131          $t76_77 = $rt.builtin.sliceSlice($t55_56.$get(), 20, 24, undefined);
 132          $t77_78 = $t2_3.$get().addr(13);
 133          $t78_79 = $t77_78.$get();
 134          $t79_80 = put32($t76_77, $t78_79);
 135          $t80_81 = $rt.builtin.sliceSlice($t55_56.$get(), 24, 28, undefined);
 136          $t81_82 = $t2_3.$get().addr(14);
 137          $t82_83 = $t81_82.$get();
 138          $t83_84 = put32($t80_81, $t82_83);
 139          $t84_85 = $rt.builtin.sliceSlice($t55_56.$get(), 28, 32, undefined);
 140          $t85_86 = $t2_3.$get().addr(15);
 141          $t86_87 = $t85_86.$get();
 142          $t87_88 = put32($t84_85, $t86_87);
 143          $t88_89 = $t55_56.$get();
 144          return $t88_89;
 145          break;
 146        }
 147      }
 148    }
 149  }
 150  
 151  export function XORAt(key, nonce, counter, data) {
 152    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68;
 153    let $block = 0;
 154    while (true) {
 155      switch ($block) {
 156        case 0: {
 157          $t0_1 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 158          $t0_1.$set($rt.builtin.cloneValue(key));
 159          $t1_2 = { $value: $rt.builtin.makeSlice(12, 12, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 160          $t1_2.$set($rt.builtin.cloneValue(nonce));
 161          $t2_3 = $rt.builtin.len(data);
 162          $t3_4 = $rt.builtin.makeSlice($t2_3, $t2_3, 0);
 163          $t4_5 = { $value: $rt.builtin.makeSlice(16, 16, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 164          $t5_6 = $t4_5.$get().addr(0);
 165          $t5_6.$set(1634760805);
 166          $t6_7 = $t4_5.$get().addr(1);
 167          $t6_7.$set(857760878);
 168          $t7_8 = $t4_5.$get().addr(2);
 169          $t7_8.$set(2036477234);
 170          $t8_9 = $t4_5.$get().addr(3);
 171          $t8_9.$set(1797285236);
 172          $t9_10 = $rt.builtin.sliceSlice($t0_1.$get(), 0, 4, undefined);
 173          $t10_11 = le32($t9_10);
 174          $t11_12 = $t4_5.$get().addr(4);
 175          $t11_12.$set($t10_11);
 176          $t12_13 = $rt.builtin.sliceSlice($t0_1.$get(), 4, 8, undefined);
 177          $t13_14 = le32($t12_13);
 178          $t14_15 = $t4_5.$get().addr(5);
 179          $t14_15.$set($t13_14);
 180          $t15_16 = $rt.builtin.sliceSlice($t0_1.$get(), 8, 12, undefined);
 181          $t16_17 = le32($t15_16);
 182          $t17_18 = $t4_5.$get().addr(6);
 183          $t17_18.$set($t16_17);
 184          $t18_19 = $rt.builtin.sliceSlice($t0_1.$get(), 12, 16, undefined);
 185          $t19_20 = le32($t18_19);
 186          $t20_21 = $t4_5.$get().addr(7);
 187          $t20_21.$set($t19_20);
 188          $t21_22 = $rt.builtin.sliceSlice($t0_1.$get(), 16, 20, undefined);
 189          $t22_23 = le32($t21_22);
 190          $t23_24 = $t4_5.$get().addr(8);
 191          $t23_24.$set($t22_23);
 192          $t24_25 = $rt.builtin.sliceSlice($t0_1.$get(), 20, 24, undefined);
 193          $t25_26 = le32($t24_25);
 194          $t26_27 = $t4_5.$get().addr(9);
 195          $t26_27.$set($t25_26);
 196          $t27_28 = $rt.builtin.sliceSlice($t0_1.$get(), 24, 28, undefined);
 197          $t28_29 = le32($t27_28);
 198          $t29_30 = $t4_5.$get().addr(10);
 199          $t29_30.$set($t28_29);
 200          $t30_31 = $rt.builtin.sliceSlice($t0_1.$get(), 28, 32, undefined);
 201          $t31_32 = le32($t30_31);
 202          $t32_33 = $t4_5.$get().addr(11);
 203          $t32_33.$set($t31_32);
 204          $t33_34 = $t4_5.$get().addr(12);
 205          $t33_34.$set(counter);
 206          $t34_35 = $rt.builtin.sliceSlice($t1_2.$get(), 0, 4, undefined);
 207          $t35_36 = le32($t34_35);
 208          $t36_37 = $t4_5.$get().addr(13);
 209          $t36_37.$set($t35_36);
 210          $t37_38 = $rt.builtin.sliceSlice($t1_2.$get(), 4, 8, undefined);
 211          $t38_39 = le32($t37_38);
 212          $t39_40 = $t4_5.$get().addr(14);
 213          $t39_40.$set($t38_39);
 214          $t40_41 = $rt.builtin.sliceSlice($t1_2.$get(), 8, 12, undefined);
 215          $t41_42 = le32($t40_41);
 216          $t42_43 = $t4_5.$get().addr(15);
 217          $t42_43.$set($t41_42);
 218          $t53_54 = 0;
 219          $block = 3; break;
 220          break;
 221        }
 222        case 1: {
 223          $t43_44 = { $value: $rt.builtin.makeSlice(64, 64, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 224          $t44_45 = blockFn($t4_5, $t43_44);
 225          $t45_46 = $t4_5.$get().addr(12);
 226          $t46_47 = $t45_46.$get();
 227          $t47_48 = (($t46_47 + 1) >>> 0);
 228          $t48_49 = $t4_5.$get().addr(12);
 229          $t48_49.$set($t47_48);
 230          $t49_50 = $rt.builtin.len(data);
 231          $t50_51 = ($t49_50 - $t53_54);
 232          $t51_52 = Math.min($t50_51, 64);
 233          $t52_53 = (0 < $t51_52);
 234          if ($t52_53) {
 235            $t56_57 = 0;
 236            $block = 4; break;
 237          }
 238          else {
 239            $block = 5; break;
 240          }
 241          break;
 242        }
 243        case 2: {
 244          return $t3_4;
 245          break;
 246        }
 247        case 3: {
 248          $t54_55 = $rt.builtin.len(data);
 249          $t55_56 = ($t53_54 < $t54_55);
 250          if ($t55_56) {
 251            $block = 1; break;
 252          }
 253          else {
 254            $block = 2; break;
 255          }
 256          break;
 257        }
 258        case 4: {
 259          $t57_58 = ($t53_54 + $t56_57);
 260          $t58_59 = ($t53_54 + $t56_57);
 261          $t59_60 = data.addr($t58_59);
 262          $t60_61 = $t59_60.$get();
 263          $t61_62 = $t43_44.$get().addr($t56_57);
 264          $t62_63 = $t61_62.$get();
 265          $t63_64 = ($t60_61 ^ $t62_63);
 266          $t64_65 = $t3_4.addr($t57_58);
 267          $t64_65.$set($t63_64);
 268          $t65_66 = ($t56_57 + 1);
 269          $t66_67 = ($t65_66 < $t51_52);
 270          if ($t66_67) {
 271            $t56_57 = $t65_66;
 272            $block = 4; break;
 273          }
 274          else {
 275            $block = 5; break;
 276          }
 277          break;
 278        }
 279        case 5: {
 280          $t67_68 = ($t53_54 + $t51_52);
 281          $t53_54 = $t67_68;
 282          $block = 3; break;
 283          break;
 284        }
 285      }
 286    }
 287  }
 288  
 289  export function XOR(key, nonce, data) {
 290    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68;
 291    let $block = 0;
 292    while (true) {
 293      switch ($block) {
 294        case 0: {
 295          $t0_1 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 296          $t0_1.$set($rt.builtin.cloneValue(key));
 297          $t1_2 = { $value: $rt.builtin.makeSlice(12, 12, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 298          $t1_2.$set($rt.builtin.cloneValue(nonce));
 299          $t2_3 = $rt.builtin.len(data);
 300          $t3_4 = $rt.builtin.makeSlice($t2_3, $t2_3, 0);
 301          $t4_5 = { $value: $rt.builtin.makeSlice(16, 16, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 302          $t5_6 = $t4_5.$get().addr(0);
 303          $t5_6.$set(1634760805);
 304          $t6_7 = $t4_5.$get().addr(1);
 305          $t6_7.$set(857760878);
 306          $t7_8 = $t4_5.$get().addr(2);
 307          $t7_8.$set(2036477234);
 308          $t8_9 = $t4_5.$get().addr(3);
 309          $t8_9.$set(1797285236);
 310          $t9_10 = $rt.builtin.sliceSlice($t0_1.$get(), 0, 4, undefined);
 311          $t10_11 = le32($t9_10);
 312          $t11_12 = $t4_5.$get().addr(4);
 313          $t11_12.$set($t10_11);
 314          $t12_13 = $rt.builtin.sliceSlice($t0_1.$get(), 4, 8, undefined);
 315          $t13_14 = le32($t12_13);
 316          $t14_15 = $t4_5.$get().addr(5);
 317          $t14_15.$set($t13_14);
 318          $t15_16 = $rt.builtin.sliceSlice($t0_1.$get(), 8, 12, undefined);
 319          $t16_17 = le32($t15_16);
 320          $t17_18 = $t4_5.$get().addr(6);
 321          $t17_18.$set($t16_17);
 322          $t18_19 = $rt.builtin.sliceSlice($t0_1.$get(), 12, 16, undefined);
 323          $t19_20 = le32($t18_19);
 324          $t20_21 = $t4_5.$get().addr(7);
 325          $t20_21.$set($t19_20);
 326          $t21_22 = $rt.builtin.sliceSlice($t0_1.$get(), 16, 20, undefined);
 327          $t22_23 = le32($t21_22);
 328          $t23_24 = $t4_5.$get().addr(8);
 329          $t23_24.$set($t22_23);
 330          $t24_25 = $rt.builtin.sliceSlice($t0_1.$get(), 20, 24, undefined);
 331          $t25_26 = le32($t24_25);
 332          $t26_27 = $t4_5.$get().addr(9);
 333          $t26_27.$set($t25_26);
 334          $t27_28 = $rt.builtin.sliceSlice($t0_1.$get(), 24, 28, undefined);
 335          $t28_29 = le32($t27_28);
 336          $t29_30 = $t4_5.$get().addr(10);
 337          $t29_30.$set($t28_29);
 338          $t30_31 = $rt.builtin.sliceSlice($t0_1.$get(), 28, 32, undefined);
 339          $t31_32 = le32($t30_31);
 340          $t32_33 = $t4_5.$get().addr(11);
 341          $t32_33.$set($t31_32);
 342          $t33_34 = $t4_5.$get().addr(12);
 343          $t33_34.$set(0);
 344          $t34_35 = $rt.builtin.sliceSlice($t1_2.$get(), 0, 4, undefined);
 345          $t35_36 = le32($t34_35);
 346          $t36_37 = $t4_5.$get().addr(13);
 347          $t36_37.$set($t35_36);
 348          $t37_38 = $rt.builtin.sliceSlice($t1_2.$get(), 4, 8, undefined);
 349          $t38_39 = le32($t37_38);
 350          $t39_40 = $t4_5.$get().addr(14);
 351          $t39_40.$set($t38_39);
 352          $t40_41 = $rt.builtin.sliceSlice($t1_2.$get(), 8, 12, undefined);
 353          $t41_42 = le32($t40_41);
 354          $t42_43 = $t4_5.$get().addr(15);
 355          $t42_43.$set($t41_42);
 356          $t53_54 = 0;
 357          $block = 3; break;
 358          break;
 359        }
 360        case 1: {
 361          $t43_44 = { $value: $rt.builtin.makeSlice(64, 64, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 362          $t44_45 = blockFn($t4_5, $t43_44);
 363          $t45_46 = $t4_5.$get().addr(12);
 364          $t46_47 = $t45_46.$get();
 365          $t47_48 = (($t46_47 + 1) >>> 0);
 366          $t48_49 = $t4_5.$get().addr(12);
 367          $t48_49.$set($t47_48);
 368          $t49_50 = $rt.builtin.len(data);
 369          $t50_51 = ($t49_50 - $t53_54);
 370          $t51_52 = Math.min($t50_51, 64);
 371          $t52_53 = (0 < $t51_52);
 372          if ($t52_53) {
 373            $t56_57 = 0;
 374            $block = 4; break;
 375          }
 376          else {
 377            $block = 5; break;
 378          }
 379          break;
 380        }
 381        case 2: {
 382          return $t3_4;
 383          break;
 384        }
 385        case 3: {
 386          $t54_55 = $rt.builtin.len(data);
 387          $t55_56 = ($t53_54 < $t54_55);
 388          if ($t55_56) {
 389            $block = 1; break;
 390          }
 391          else {
 392            $block = 2; break;
 393          }
 394          break;
 395        }
 396        case 4: {
 397          $t57_58 = ($t53_54 + $t56_57);
 398          $t58_59 = ($t53_54 + $t56_57);
 399          $t59_60 = data.addr($t58_59);
 400          $t60_61 = $t59_60.$get();
 401          $t61_62 = $t43_44.$get().addr($t56_57);
 402          $t62_63 = $t61_62.$get();
 403          $t63_64 = ($t60_61 ^ $t62_63);
 404          $t64_65 = $t3_4.addr($t57_58);
 405          $t64_65.$set($t63_64);
 406          $t65_66 = ($t56_57 + 1);
 407          $t66_67 = ($t65_66 < $t51_52);
 408          if ($t66_67) {
 409            $t56_57 = $t65_66;
 410            $block = 4; break;
 411          }
 412          else {
 413            $block = 5; break;
 414          }
 415          break;
 416        }
 417        case 5: {
 418          $t67_68 = ($t53_54 + $t51_52);
 419          $t53_54 = $t67_68;
 420          $block = 3; break;
 421          break;
 422        }
 423      }
 424    }
 425  }
 426  
 427  export function blockFn(state, out) {
 428    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43;
 429    let $block = 0;
 430    while (true) {
 431      switch ($block) {
 432        case 0: {
 433          $t0_1 = { $value: $rt.builtin.makeSlice(16, 16, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 434          $t1_2 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, undefined, undefined);
 435          $t2_3 = $rt.builtin.sliceSlice(state.$get(), undefined, undefined, undefined);
 436          $t3_4 = $rt.builtin.copy($t1_2, $t2_3);
 437          $t4_5 = (0 < 10);
 438          if ($t4_5) {
 439            $t5_6 = 0;
 440            $block = 1; break;
 441          }
 442          else {
 443            $block = 2; break;
 444          }
 445          break;
 446        }
 447        case 1: {
 448          $t6_7 = qr($t0_1, 0, 4, 8, 12);
 449          $t7_8 = qr($t0_1, 1, 5, 9, 13);
 450          $t8_9 = qr($t0_1, 2, 6, 10, 14);
 451          $t9_10 = qr($t0_1, 3, 7, 11, 15);
 452          $t10_11 = qr($t0_1, 0, 5, 10, 15);
 453          $t11_12 = qr($t0_1, 1, 6, 11, 12);
 454          $t12_13 = qr($t0_1, 2, 7, 8, 13);
 455          $t13_14 = qr($t0_1, 3, 4, 9, 14);
 456          $t14_15 = ($t5_6 + 1);
 457          $t15_16 = ($t14_15 < 10);
 458          if ($t15_16) {
 459            $t5_6 = $t14_15;
 460            $block = 1; break;
 461          }
 462          else {
 463            $block = 2; break;
 464          }
 465          break;
 466        }
 467        case 2: {
 468          $t16_17 = (0 < 16);
 469          if ($t16_17) {
 470            $t17_18 = 0;
 471            $block = 3; break;
 472          }
 473          else {
 474            $block = 4; break;
 475          }
 476          break;
 477        }
 478        case 3: {
 479          $t18_19 = $t0_1.$get().addr($t17_18);
 480          $t19_20 = $t18_19.$get();
 481          $t20_21 = state.$get().addr($t17_18);
 482          $t21_22 = $t20_21.$get();
 483          $t22_23 = (($t19_20 + $t21_22) >>> 0);
 484          $t23_24 = ($t17_18 * 4);
 485          $t24_25 = ($t22_23 & 0xFF);
 486          $t25_26 = out.$get().addr($t23_24);
 487          $t25_26.$set($t24_25);
 488          $t26_27 = ($t17_18 * 4);
 489          $t27_28 = ($t26_27 + 1);
 490          $t28_29 = ($t22_23 >>> 8);
 491          $t29_30 = ($t28_29 & 0xFF);
 492          $t30_31 = out.$get().addr($t27_28);
 493          $t30_31.$set($t29_30);
 494          $t31_32 = ($t17_18 * 4);
 495          $t32_33 = ($t31_32 + 2);
 496          $t33_34 = ($t22_23 >>> 16);
 497          $t34_35 = ($t33_34 & 0xFF);
 498          $t35_36 = out.$get().addr($t32_33);
 499          $t35_36.$set($t34_35);
 500          $t36_37 = ($t17_18 * 4);
 501          $t37_38 = ($t36_37 + 3);
 502          $t38_39 = ($t22_23 >>> 24);
 503          $t39_40 = ($t38_39 & 0xFF);
 504          $t40_41 = out.$get().addr($t37_38);
 505          $t40_41.$set($t39_40);
 506          $t41_42 = ($t17_18 + 1);
 507          $t42_43 = ($t41_42 < 16);
 508          if ($t42_43) {
 509            $t17_18 = $t41_42;
 510            $block = 3; break;
 511          }
 512          else {
 513            $block = 4; break;
 514          }
 515          break;
 516        }
 517        case 4: {
 518          return;
 519          break;
 520        }
 521      }
 522    }
 523  }
 524  
 525  export function qr(s, a, b, c, d) {
 526    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80;
 527    $t0_1 = s.$get().addr(b);
 528    $t1_2 = $t0_1.$get();
 529    $t2_3 = s.$get().addr(a);
 530    $t3_4 = $t2_3.$get();
 531    $t4_5 = (($t3_4 + $t1_2) >>> 0);
 532    $t5_6 = s.$get().addr(a);
 533    $t5_6.$set($t4_5);
 534    $t6_7 = s.$get().addr(a);
 535    $t7_8 = $t6_7.$get();
 536    $t8_9 = s.$get().addr(d);
 537    $t9_10 = $t8_9.$get();
 538    $t10_11 = (($t9_10 ^ $t7_8) >>> 0);
 539    $t11_12 = s.$get().addr(d);
 540    $t11_12.$set($t10_11);
 541    $t12_13 = s.$get().addr(d);
 542    $t13_14 = $t12_13.$get();
 543    $t14_15 = (($t13_14 << 16) >>> 0);
 544    $t15_16 = s.$get().addr(d);
 545    $t16_17 = $t15_16.$get();
 546    $t17_18 = ($t16_17 >>> 16);
 547    $t18_19 = (($t14_15 + $t17_18) >>> 0);
 548    $t19_20 = s.$get().addr(d);
 549    $t19_20.$set($t18_19);
 550    $t20_21 = s.$get().addr(d);
 551    $t21_22 = $t20_21.$get();
 552    $t22_23 = s.$get().addr(c);
 553    $t23_24 = $t22_23.$get();
 554    $t24_25 = (($t23_24 + $t21_22) >>> 0);
 555    $t25_26 = s.$get().addr(c);
 556    $t25_26.$set($t24_25);
 557    $t26_27 = s.$get().addr(c);
 558    $t27_28 = $t26_27.$get();
 559    $t28_29 = s.$get().addr(b);
 560    $t29_30 = $t28_29.$get();
 561    $t30_31 = (($t29_30 ^ $t27_28) >>> 0);
 562    $t31_32 = s.$get().addr(b);
 563    $t31_32.$set($t30_31);
 564    $t32_33 = s.$get().addr(b);
 565    $t33_34 = $t32_33.$get();
 566    $t34_35 = (($t33_34 << 12) >>> 0);
 567    $t35_36 = s.$get().addr(b);
 568    $t36_37 = $t35_36.$get();
 569    $t37_38 = ($t36_37 >>> 20);
 570    $t38_39 = (($t34_35 + $t37_38) >>> 0);
 571    $t39_40 = s.$get().addr(b);
 572    $t39_40.$set($t38_39);
 573    $t40_41 = s.$get().addr(b);
 574    $t41_42 = $t40_41.$get();
 575    $t42_43 = s.$get().addr(a);
 576    $t43_44 = $t42_43.$get();
 577    $t44_45 = (($t43_44 + $t41_42) >>> 0);
 578    $t45_46 = s.$get().addr(a);
 579    $t45_46.$set($t44_45);
 580    $t46_47 = s.$get().addr(a);
 581    $t47_48 = $t46_47.$get();
 582    $t48_49 = s.$get().addr(d);
 583    $t49_50 = $t48_49.$get();
 584    $t50_51 = (($t49_50 ^ $t47_48) >>> 0);
 585    $t51_52 = s.$get().addr(d);
 586    $t51_52.$set($t50_51);
 587    $t52_53 = s.$get().addr(d);
 588    $t53_54 = $t52_53.$get();
 589    $t54_55 = (($t53_54 << 8) >>> 0);
 590    $t55_56 = s.$get().addr(d);
 591    $t56_57 = $t55_56.$get();
 592    $t57_58 = ($t56_57 >>> 24);
 593    $t58_59 = (($t54_55 + $t57_58) >>> 0);
 594    $t59_60 = s.$get().addr(d);
 595    $t59_60.$set($t58_59);
 596    $t60_61 = s.$get().addr(d);
 597    $t61_62 = $t60_61.$get();
 598    $t62_63 = s.$get().addr(c);
 599    $t63_64 = $t62_63.$get();
 600    $t64_65 = (($t63_64 + $t61_62) >>> 0);
 601    $t65_66 = s.$get().addr(c);
 602    $t65_66.$set($t64_65);
 603    $t66_67 = s.$get().addr(c);
 604    $t67_68 = $t66_67.$get();
 605    $t68_69 = s.$get().addr(b);
 606    $t69_70 = $t68_69.$get();
 607    $t70_71 = (($t69_70 ^ $t67_68) >>> 0);
 608    $t71_72 = s.$get().addr(b);
 609    $t71_72.$set($t70_71);
 610    $t72_73 = s.$get().addr(b);
 611    $t73_74 = $t72_73.$get();
 612    $t74_75 = (($t73_74 << 7) >>> 0);
 613    $t75_76 = s.$get().addr(b);
 614    $t76_77 = $t75_76.$get();
 615    $t77_78 = ($t76_77 >>> 25);
 616    $t78_79 = (($t74_75 + $t77_78) >>> 0);
 617    $t79_80 = s.$get().addr(b);
 618    $t79_80.$set($t78_79);
 619    return;
 620  }
 621  
 622  export function le32(b) {
 623    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18;
 624    $t0_1 = b.addr(0);
 625    $t1_2 = $t0_1.$get();
 626    $t2_3 = ($t1_2 >>> 0);
 627    $t3_4 = b.addr(1);
 628    $t4_5 = $t3_4.$get();
 629    $t5_6 = ($t4_5 >>> 0);
 630    $t6_7 = (($t5_6 << 8) >>> 0);
 631    $t7_8 = (($t2_3 + $t6_7) >>> 0);
 632    $t8_9 = b.addr(2);
 633    $t9_10 = $t8_9.$get();
 634    $t10_11 = ($t9_10 >>> 0);
 635    $t11_12 = (($t10_11 << 16) >>> 0);
 636    $t12_13 = (($t7_8 + $t11_12) >>> 0);
 637    $t13_14 = b.addr(3);
 638    $t14_15 = $t13_14.$get();
 639    $t15_16 = ($t14_15 >>> 0);
 640    $t16_17 = (($t15_16 << 24) >>> 0);
 641    $t17_18 = (($t12_13 + $t16_17) >>> 0);
 642    return $t17_18;
 643  }
 644  
 645  export function put32(b, v) {
 646    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11;
 647    $t0_1 = (v & 0xFF);
 648    $t1_2 = b.addr(0);
 649    $t1_2.$set($t0_1);
 650    $t2_3 = (v >>> 8);
 651    $t3_4 = ($t2_3 & 0xFF);
 652    $t4_5 = b.addr(1);
 653    $t4_5.$set($t3_4);
 654    $t5_6 = (v >>> 16);
 655    $t6_7 = ($t5_6 & 0xFF);
 656    $t7_8 = b.addr(2);
 657    $t7_8.$set($t6_7);
 658    $t8_9 = (v >>> 24);
 659    $t9_10 = ($t8_9 & 0xFF);
 660    $t10_11 = b.addr(3);
 661    $t10_11.$set($t9_10);
 662    return;
 663  }
 664  
 665  export function __moxie_concat(a, b) {
 666    let $t0_1;
 667    $t0_1 = $rt.types.makeInterface('string', '__moxie_concat: compiler failed to intercept');
 668    $rt.runtime.panic($t0_1);
 669  }
 670  
 671  export function __moxie_eq(a, b) {
 672    let $t0_1;
 673    $t0_1 = $rt.types.makeInterface('string', '__moxie_eq: compiler failed to intercept');
 674    $rt.runtime.panic($t0_1);
 675  }
 676  
 677  export function __moxie_lt(a, b) {
 678    let $t0_1;
 679    $t0_1 = $rt.types.makeInterface('string', '__moxie_lt: compiler failed to intercept');
 680    $rt.runtime.panic($t0_1);
 681  }
 682  
 683  export function __moxie_secalloc(n) {
 684    let $t0_1;
 685    $t0_1 = $rt.types.makeInterface('string', '__moxie_secalloc: compiler failed to intercept');
 686    $rt.runtime.panic($t0_1);
 687  }
 688  
 689