Subversion Repositories Kolibri OS

Rev

Rev 6419 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. ;    aes256.inc - AES256
  2. ;
  3. ;    Copyright (C) 2016 Ivan Baravy (dunkaist)
  4. ;    Copyright (C) 2016 Jeffrey Amelynck
  5. ;
  6. ;    This program is free software: you can redistribute it and/or modify
  7. ;    it under the terms of the GNU General Public License as published by
  8. ;    the Free Software Foundation, either version 3 of the License, or
  9. ;    (at your option) any later version.
  10. ;
  11. ;    This program is distributed in the hope that it will be useful,
  12. ;    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. ;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. ;    GNU General Public License for more details.
  15. ;
  16. ;    You should have received a copy of the GNU General Public License
  17. ;    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  18.  
  19. AES256_ROUNDS           = 14
  20. AES256_BLOCKSIZE        = 16
  21.  
  22. struct aes256_context
  23.         key     rd 4*(AES256_ROUNDS+1)
  24. ends
  25.  
  26.  
  27. proc aes256_set_encrypt_key _ctx, _userkey
  28. locals
  29.         i       dd ?
  30. endl
  31.         push    ebx esi edi
  32.  
  33.         mov     [i], 0
  34.         mov     ebx, [_ctx]
  35.  
  36.         mov     esi, [_userkey]
  37.         lea     edi, [ebx + aes256_context.key]
  38. repeat 8
  39.         lodsd
  40.         bswap   eax
  41.         stosd
  42. end repeat
  43.  
  44.         lea     esi, [ebx + aes256_context.key]
  45.  
  46.   .while:
  47.         mov     ebx, [esi + 4*7]
  48.  
  49.         mov     ecx, [esi + 4*0]
  50.  
  51.         mov     eax, ebx
  52.         shr     eax, 16
  53.         movzx   eax, al
  54.         mov     eax, [Te2 + 4*eax]
  55.         and     eax, 0xff000000
  56.         xor     ecx, eax
  57.  
  58.         mov     eax, ebx
  59.         shr     eax, 8
  60.         movzx   eax, al
  61.         mov     eax, [Te3 + 4*eax]
  62.         and     eax, 0x00ff0000
  63.         xor     ecx, eax
  64.  
  65.         mov     eax, ebx
  66.         shr     eax, 0
  67.         movzx   eax, al
  68.         mov     eax, [Te0 + 4*eax]
  69.         and     eax, 0x0000ff00
  70.         xor     ecx, eax
  71.  
  72.         mov     eax, ebx
  73.         shr     eax, 24
  74.         mov     eax, [Te1 + 4*eax]
  75.         and     eax, 0x000000ff
  76.         xor     ecx, eax
  77.  
  78.         mov     eax, [i]
  79.         xor     ecx, [rcon + 4*eax]
  80.  
  81.         mov     [esi + 4*8], ecx
  82.  
  83.  
  84.         xor     ecx, [esi + 4*1]
  85.         mov     [esi + 4*9], ecx
  86.  
  87.         xor     ecx, [esi + 4*2]
  88.         mov     [esi + 4*10], ecx
  89.  
  90.         xor     ecx, [esi + 4*3]
  91.         mov     [esi + 4*11], ecx
  92.  
  93.  
  94.         inc     [i]
  95.         cmp     [i], 7
  96.         jz      .done
  97.  
  98.  
  99.         mov     ebx, [esi + 4*11]
  100.  
  101.         mov     ecx, [esi + 4*4]
  102.  
  103.         mov     eax, ebx
  104.         shr     eax, 24
  105.         mov     eax, [Te2 + 4*eax]
  106.         and     eax, 0xff000000
  107.         xor     ecx, eax
  108.  
  109.         mov     eax, ebx
  110.         shr     eax, 16
  111.         movzx   eax, al
  112.         mov     eax, [Te3 + 4*eax]
  113.         and     eax, 0x00ff0000
  114.         xor     ecx, eax
  115.  
  116.         mov     eax, ebx
  117.         shr     eax, 8
  118.         movzx   eax, al
  119.         mov     eax, [Te0 + 4*eax]
  120.         and     eax, 0x0000ff00
  121.         xor     ecx, eax
  122.  
  123.         mov     eax, ebx
  124.         shr     eax, 0
  125.         movzx   eax, al
  126.         mov     eax, [Te1 + 4*eax]
  127.         and     eax, 0x000000ff
  128.         xor     ecx, eax
  129.  
  130.         mov     [esi + 4*12], ecx
  131.  
  132.  
  133.         xor     ecx, [esi + 4*5]
  134.         mov     [esi + 4*13], ecx
  135.  
  136.         xor     ecx, [esi + 4*6]
  137.         mov     [esi + 4*14], ecx
  138.  
  139.         xor     ecx, [esi + 4*7]
  140.         mov     [esi + 4*15], ecx
  141.  
  142.         add     esi, 4*8
  143.  
  144.         jmp     .while
  145.  
  146.   .done:
  147.         pop     edi esi ebx
  148.         ret
  149. endp
  150.  
  151.  
  152. proc aes256_set_decrypt_key _ctx, _userkey
  153.  
  154.         push    ebx esi edi
  155.  
  156.         stdcall aes256_set_encrypt_key, [_ctx], [_userkey]
  157.  
  158. ; Invert the order of the round keys
  159.         mov     ebx, [_ctx]
  160.         lea     esi, [ebx + aes256_context.key]
  161.         lea     edi, [ebx + aes256_context.key + 4*4*AES256_ROUNDS]
  162.   @@:
  163.         mov     eax, [esi+0]
  164.         mov     ebx, [edi+0]
  165.         mov     [esi+0], ebx
  166.         mov     [edi+0], eax
  167.         mov     eax, [esi+4]
  168.         mov     ebx, [edi+4]
  169.         mov     [esi+4], ebx
  170.         mov     [edi+4], eax
  171.         mov     eax, [esi+8]
  172.         mov     ebx, [edi+8]
  173.         mov     [esi+8], ebx
  174.         mov     [edi+8], eax
  175.         mov     eax, [esi+12]
  176.         mov     ebx, [edi+12]
  177.         mov     [esi+12], ebx
  178.         mov     [edi+12], eax
  179.         add     esi, 4*4
  180.         sub     edi, 4*4
  181.         cmp     esi, edi
  182.         jb      @r
  183.  
  184. ; Apply the inverse MixColumn transform to all round keys but the first and the last
  185.         mov     ecx, (AES256_ROUNDS-1)*4
  186.         mov     ebx, [_ctx]
  187.         lea     edi, [ebx + aes256_context.key + 16]
  188.   .inverse:
  189.         mov     eax, [edi]
  190.         shr     eax, 24
  191.         mov     eax, [Te1 + 4*eax]
  192.         movzx   eax, al
  193.         mov     ebx, [Td0 + 4*eax]
  194.  
  195.         mov     eax, [edi]
  196.         shr     eax, 16
  197.         movzx   eax, al
  198.         mov     eax, [Te1 + 4*eax]
  199.         movzx   eax, al
  200.         mov     eax, [Td1 + 4*eax]
  201.         xor     ebx, eax
  202.  
  203.         mov     eax, [edi]
  204.         shr     eax, 8
  205.         movzx   eax, al
  206.         mov     eax, [Te1 + 4*eax]
  207.         movzx   eax, al
  208.         mov     eax, [Td2 + 4*eax]
  209.         xor     ebx, eax
  210.  
  211.         mov     eax, [edi]
  212.         movzx   eax, al
  213.         mov     eax, [Te1 + 4*eax]
  214.         movzx   eax, al
  215.         mov     eax, [Td3 + 4*eax]
  216.         xor     eax, ebx
  217.         stosd
  218.  
  219.         dec     ecx
  220.         jnz     .inverse
  221.  
  222.   .done:
  223.         pop     edi esi ebx
  224.         ret
  225. endp
  226.  
  227. proc aes256_encrypt _key, _in, _out
  228. locals
  229.         s       rd 4
  230.         t       rd 4
  231.         r       dd ?
  232. endl
  233.         push    ebx esi edi
  234.  
  235.         DEBUGF  1,'input  : '
  236.         stdcall dump_hex, [_in], 4
  237.  
  238.         mov     ebx, [_key]
  239.         mov     esi, [_in]
  240.         lea     edi, [s]
  241.  
  242.         mov     eax, [esi + 4*0]
  243.         bswap   eax
  244.         xor     eax, [ebx + 4*0]
  245.         mov     [edi + 4*0], eax
  246.  
  247.         mov     eax, [esi + 4*1]
  248.         bswap   eax
  249.         xor     eax, [ebx + 4*1]
  250.         mov     [edi + 4*1], eax
  251.  
  252.         mov     eax, [esi +  4*2]
  253.         bswap   eax
  254.         xor     eax, [ebx + 4*2]
  255.         mov     [edi + 4*2], eax
  256.  
  257.         mov     eax, [esi + 4*3]
  258.         bswap   eax
  259.         xor     eax, [ebx + 4*3]
  260.         mov     [edi + 4*3], eax
  261.  
  262.  
  263.         mov     [r], AES256_ROUNDS SHR 1
  264.  
  265.   .for:
  266.         lea     esi, [s]
  267.         lea     edi, [t]
  268.  
  269.  
  270.         mov     ecx, [ebx + 4*4]
  271.  
  272.         mov     eax, [esi + 4*0]
  273.         shr     eax, 24
  274.         mov     eax, [Te0 + 4*eax]
  275.         xor     ecx, eax
  276.  
  277.         mov     eax, [esi + 4*1]
  278.         shr     eax, 16
  279.         movzx   eax, al
  280.         mov     eax, [Te1 + 4*eax]
  281.         xor     ecx, eax
  282.  
  283.         mov     eax, [esi + 4*2]
  284.         shr     eax, 8
  285.         movzx   eax, al
  286.         mov     eax, [Te2 + 4*eax]
  287.         xor     ecx, eax
  288.  
  289.         mov     eax, [esi + 4*3]
  290.         movzx   eax, al
  291.         mov     eax, [Te3 + 4*eax]
  292.         xor     ecx, eax
  293.  
  294.         mov     [edi + 4*0], ecx
  295.  
  296.  
  297.         mov     ecx, [ebx + 4*5]
  298.  
  299.         mov     eax, [esi + 4*1]
  300.         shr     eax, 24
  301.         mov     eax, [Te0 + 4*eax]
  302.         xor     ecx, eax
  303.  
  304.         mov     eax, [esi + 4*2]
  305.         shr     eax, 16
  306.         movzx   eax, al
  307.         mov     eax, [Te1 + 4*eax]
  308.         xor     ecx, eax
  309.  
  310.         mov     eax, [esi + 4*3]
  311.         shr     eax, 8
  312.         movzx   eax, al
  313.         mov     eax, [Te2 + 4*eax]
  314.         xor     ecx, eax
  315.  
  316.         mov     eax, [esi + 4*0]
  317.         movzx   eax, al
  318.         mov     eax, [Te3 + 4*eax]
  319.         xor     ecx, eax
  320.  
  321.         mov     [edi + 4*1], ecx
  322.  
  323.  
  324.         mov     ecx, [ebx + 4*6]
  325.  
  326.         mov     eax, [esi + 4*2]
  327.         shr     eax, 24
  328.         mov     eax, [Te0 + 4*eax]
  329.         xor     ecx, eax
  330.  
  331.         mov     eax, [esi + 4*3]
  332.         shr     eax, 16
  333.         movzx   eax, al
  334.         mov     eax, [Te1 + 4*eax]
  335.         xor     ecx, eax
  336.  
  337.         mov     eax, [esi + 4*0]
  338.         shr     eax, 8
  339.         movzx   eax, al
  340.         mov     eax, [Te2 + 4*eax]
  341.         xor     ecx, eax
  342.  
  343.         mov     eax, [esi + 4*1]
  344.         movzx   eax, al
  345.         mov     eax, [Te3 + 4*eax]
  346.         xor     ecx, eax
  347.  
  348.         mov     [edi + 4*2], ecx
  349.  
  350.  
  351.         mov     ecx, [ebx + 4*7]
  352.  
  353.         mov     eax, [esi + 4*3]
  354.         shr     eax, 24
  355.         mov     eax, [Te0 + 4*eax]
  356.         xor     ecx, eax
  357.  
  358.         mov     eax, [esi + 4*0]
  359.         shr     eax, 16
  360.         movzx   eax, al
  361.         mov     eax, [Te1 + 4*eax]
  362.         xor     ecx, eax
  363.  
  364.         mov     eax, [esi + 4*1]
  365.         shr     eax, 8
  366.         movzx   eax, al
  367.         mov     eax, [Te2 + 4*eax]
  368.         xor     ecx, eax
  369.  
  370.         mov     eax, [esi + 4*2]
  371.         movzx   eax, al
  372.         mov     eax, [Te3 + 4*eax]
  373.         xor     ecx, eax
  374.  
  375.         mov     [edi + 4*3], ecx
  376.  
  377.  
  378.         add     ebx, 4*8
  379.         dec     [r]
  380.         jz      .end_for
  381.  
  382.  
  383.         mov     ecx, [ebx + 4*0]
  384.  
  385.         mov     eax, [edi + 4*0]
  386.         shr     eax, 24
  387.         mov     eax, [Te0 + 4*eax]
  388.         xor     ecx, eax
  389.  
  390.         mov     eax, [edi + 4*1]
  391.         shr     eax, 16
  392.         movzx   eax, al
  393.         mov     eax, [Te1 + 4*eax]
  394.         xor     ecx, eax
  395.  
  396.         mov     eax, [edi + 4*2]
  397.         shr     eax, 8
  398.         movzx   eax, al
  399.         mov     eax, [Te2 + 4*eax]
  400.         xor     ecx, eax
  401.  
  402.         mov     eax, [edi + 4*3]
  403.         movzx   eax, al
  404.         mov     eax, [Te3 + 4*eax]
  405.         xor     ecx, eax
  406.  
  407.         mov     [esi + 4*0], ecx
  408.  
  409.  
  410.         mov     ecx, [ebx + 4*1]
  411.  
  412.         mov     eax, [edi + 4*1]
  413.         shr     eax, 24
  414.         mov     eax, [Te0 + 4*eax]
  415.         xor     ecx, eax
  416.  
  417.         mov     eax, [edi + 4*2]
  418.         shr     eax, 16
  419.         movzx   eax, al
  420.         mov     eax, [Te1 + 4*eax]
  421.         xor     ecx, eax
  422.  
  423.         mov     eax, [edi + 4*3]
  424.         shr     eax, 8
  425.         movzx   eax, al
  426.         mov     eax, [Te2 + 4*eax]
  427.         xor     ecx, eax
  428.  
  429.         mov     eax, [edi + 4*0]
  430.         movzx   eax, al
  431.         mov     eax, [Te3 + 4*eax]
  432.         xor     ecx, eax
  433.  
  434.         mov     [esi + 4*1], ecx
  435.  
  436.  
  437.         mov     ecx, [ebx + 4*2]
  438.  
  439.         mov     eax, [edi + 4*2]
  440.         shr     eax, 24
  441.         mov     eax, [Te0 + 4*eax]
  442.         xor     ecx, eax
  443.  
  444.         mov     eax, [edi + 4*3]
  445.         shr     eax, 16
  446.         movzx   eax, al
  447.         mov     eax, [Te1 + 4*eax]
  448.         xor     ecx, eax
  449.  
  450.         mov     eax, [edi + 4*0]
  451.         shr     eax, 8
  452.         movzx   eax, al
  453.         mov     eax, [Te2 + 4*eax]
  454.         xor     ecx, eax
  455.  
  456.         mov     eax, [edi + 4*1]
  457.         movzx   eax, al
  458.         mov     eax, [Te3 + 4*eax]
  459.         xor     ecx, eax
  460.  
  461.         mov     [esi + 4*2], ecx
  462.  
  463.  
  464.         mov     ecx, [ebx + 4*3]
  465.  
  466.         mov     eax, [edi + 4*3]
  467.         shr     eax, 24
  468.         mov     eax, [Te0 + 4*eax]
  469.         xor     ecx, eax
  470.  
  471.         mov     eax, [edi + 4*0]
  472.         shr     eax, 16
  473.         movzx   eax, al
  474.         mov     eax, [Te1 + 4*eax]
  475.         xor     ecx, eax
  476.  
  477.         mov     eax, [edi + 4*1]
  478.         shr     eax, 8
  479.         movzx   eax, al
  480.         mov     eax, [Te2 + 4*eax]
  481.         xor     ecx, eax
  482.  
  483.         mov     eax, [edi + 4*2]
  484.         movzx   eax, al
  485.         mov     eax, [Te3 + 4*eax]
  486.         xor     ecx, eax
  487.  
  488.         mov     [esi + 4*3], ecx
  489.  
  490.         jmp     .for
  491.   .end_for:
  492.  
  493.         mov     ecx, [ebx + 4*0]
  494.  
  495.         mov     eax, [edi + 4*0]
  496.         shr     eax, 24
  497.         mov     eax, [Te2 + 4*eax]
  498.         and     eax, 0xff000000
  499.         xor     ecx, eax
  500.  
  501.         mov     eax, [edi + 4*1]
  502.         shr     eax, 16
  503.         movzx   eax, al
  504.         mov     eax, [Te3 + 4*eax]
  505.         and     eax, 0x00ff0000
  506.         xor     ecx, eax
  507.  
  508.         mov     eax, [edi + 4*2]
  509.         shr     eax, 8
  510.         movzx   eax, al
  511.         mov     eax, [Te0 + 4*eax]
  512.         and     eax, 0x0000ff00
  513.         xor     ecx, eax
  514.  
  515.         mov     eax, [edi + 4*3]
  516.         movzx   eax, al
  517.         mov     eax, [Te1 + 4*eax]
  518.         and     eax, 0x000000ff
  519.         xor     ecx, eax
  520.  
  521.         mov     [esi + 4*0], ecx
  522.  
  523.  
  524.         mov     ecx, [ebx + 4*1]
  525.  
  526.         mov     eax, [edi + 4*1]
  527.         shr     eax, 24
  528.         mov     eax, [Te2 + 4*eax]
  529.         and     eax, 0xff000000
  530.         xor     ecx, eax
  531.  
  532.         mov     eax, [edi + 4*2]
  533.         shr     eax, 16
  534.         movzx   eax, al
  535.         mov     eax, [Te3 + 4*eax]
  536.         and     eax, 0x00ff0000
  537.         xor     ecx, eax
  538.  
  539.         mov     eax, [edi + 4*3]
  540.         shr     eax, 8
  541.         movzx   eax, al
  542.         mov     eax, [Te0 + 4*eax]
  543.         and     eax, 0x0000ff00
  544.         xor     ecx, eax
  545.  
  546.         mov     eax, [edi + 4*0]
  547.         movzx   eax, al
  548.         mov     eax, [Te1 + 4*eax]
  549.         and     eax, 0x000000ff
  550.         xor     ecx, eax
  551.  
  552.         mov     [esi + 4*1], ecx
  553.  
  554.  
  555.         mov     ecx, [ebx + 4*2]
  556.  
  557.         mov     eax, [edi + 4*2]
  558.         shr     eax, 24
  559.         mov     eax, [Te2 + 4*eax]
  560.         and     eax, 0xff000000
  561.         xor     ecx, eax
  562.  
  563.         mov     eax, [edi + 4*3]
  564.         shr     eax, 16
  565.         movzx   eax, al
  566.         mov     eax, [Te3 + 4*eax]
  567.         and     eax, 0x00ff0000
  568.         xor     ecx, eax
  569.  
  570.         mov     eax, [edi + 4*0]
  571.         shr     eax, 8
  572.         movzx   eax, al
  573.         mov     eax, [Te0 + 4*eax]
  574.         and     eax, 0x0000ff00
  575.         xor     ecx, eax
  576.  
  577.         mov     eax, [edi + 4*1]
  578.         movzx   eax, al
  579.         mov     eax, [Te1 + 4*eax]
  580.         and     eax, 0x000000ff
  581.         xor     ecx, eax
  582.  
  583.         mov     [esi + 4*2], ecx
  584.  
  585.  
  586.         mov     ecx, [ebx + 4*3]
  587.  
  588.         mov     eax, [edi + 4*3]
  589.         shr     eax, 24
  590.         mov     eax, [Te2 + 4*eax]
  591.         and     eax, 0xff000000
  592.         xor     ecx, eax
  593.  
  594.         mov     eax, [edi + 4*0]
  595.         shr     eax, 16
  596.         movzx   eax, al
  597.         mov     eax, [Te3 + 4*eax]
  598.         and     eax, 0x00ff0000
  599.         xor     ecx, eax
  600.  
  601.         mov     eax, [edi + 4*1]
  602.         shr     eax, 8
  603.         movzx   eax, al
  604.         mov     eax, [Te0 + 4*eax]
  605.         and     eax, 0x0000ff00
  606.         xor     ecx, eax
  607.  
  608.         mov     eax, [edi + 4*2]
  609.         movzx   eax, al
  610.         mov     eax, [Te1 + 4*eax]
  611.         and     eax, 0x000000ff
  612.         xor     ecx, eax
  613.  
  614.         mov     [esi + 4*3], ecx
  615.  
  616.  
  617.         mov     edi, [_out]
  618.         lodsd
  619.         bswap   eax
  620.         stosd
  621.         lodsd
  622.         bswap   eax
  623.         stosd
  624.         lodsd
  625.         bswap   eax
  626.         stosd
  627.         lodsd
  628.         bswap   eax
  629.         stosd
  630.  
  631.         DEBUGF  1,'output : '
  632.         stdcall dump_hex, [_out], 4
  633.  
  634.         pop     edi esi ebx
  635.         ret
  636. endp
  637.  
  638. proc aes256_decrypt _key, _in, _out
  639. locals
  640.         s       rd 4
  641.         t       rd 4
  642.         r       dd ?
  643. endl
  644.         push    ebx esi edi
  645.  
  646.         DEBUGF  1,'input  : '
  647.         stdcall dump_hex, [_in], 4
  648.  
  649.         mov     ebx, [_key]
  650.         mov     esi, [_in]
  651.         lea     edi, [s]
  652.  
  653.         mov     eax, [esi + 4*0]
  654.         bswap   eax
  655.         xor     eax, [ebx + 4*0]
  656.         mov     [edi + 4*0], eax
  657.  
  658.         mov     eax, [esi + 4*1]
  659.         bswap   eax
  660.         xor     eax, [ebx + 4*1]
  661.         mov     [edi + 4*1], eax
  662.  
  663.         mov     eax, [esi +  4*2]
  664.         bswap   eax
  665.         xor     eax, [ebx + 4*2]
  666.         mov     [edi + 4*2], eax
  667.  
  668.         mov     eax, [esi + 4*3]
  669.         bswap   eax
  670.         xor     eax, [ebx + 4*3]
  671.         mov     [edi + 4*3], eax
  672.  
  673.  
  674.         mov     [r], AES256_ROUNDS SHR 1
  675.   .for:
  676.         lea     esi, [s]
  677.         lea     edi, [t]
  678.  
  679.  
  680.         mov     ecx, [ebx + 4*4]
  681.  
  682.         mov     eax, [esi + 4*0]
  683.         shr     eax, 24
  684.         mov     eax, [Td0 + 4*eax]
  685.         xor     ecx, eax
  686.  
  687.         mov     eax, [esi + 4*3]
  688.         shr     eax, 16
  689.         movzx   eax, al
  690.         mov     eax, [Td1 + 4*eax]
  691.         xor     ecx, eax
  692.  
  693.         mov     eax, [esi + 4*2]
  694.         shr     eax, 8
  695.         movzx   eax, al
  696.         mov     eax, [Td2 + 4*eax]
  697.         xor     ecx, eax
  698.  
  699.         mov     eax, [esi + 4*1]
  700.         movzx   eax, al
  701.         mov     eax, [Td3 + 4*eax]
  702.         xor     ecx, eax
  703.  
  704.         mov     [edi + 4*0], ecx
  705.  
  706.  
  707.         mov     ecx, [ebx + 4*5]
  708.  
  709.         mov     eax, [esi + 4*1]
  710.         shr     eax, 24
  711.         mov     eax, [Td0 + 4*eax]
  712.         xor     ecx, eax
  713.  
  714.         mov     eax, [esi + 4*0]
  715.         shr     eax, 16
  716.         movzx   eax, al
  717.         mov     eax, [Td1 + 4*eax]
  718.         xor     ecx, eax
  719.  
  720.         mov     eax, [esi + 4*3]
  721.         shr     eax, 8
  722.         movzx   eax, al
  723.         mov     eax, [Td2 + 4*eax]
  724.         xor     ecx, eax
  725.  
  726.         mov     eax, [esi + 4*2]
  727.         movzx   eax, al
  728.         mov     eax, [Td3 + 4*eax]
  729.         xor     ecx, eax
  730.  
  731.         mov     [edi + 4*1], ecx
  732.  
  733.  
  734.         mov     ecx, [ebx + 4*6]
  735.  
  736.         mov     eax, [esi + 4*2]
  737.         shr     eax, 24
  738.         mov     eax, [Td0 + 4*eax]
  739.         xor     ecx, eax
  740.  
  741.         mov     eax, [esi + 4*1]
  742.         shr     eax, 16
  743.         movzx   eax, al
  744.         mov     eax, [Td1 + 4*eax]
  745.         xor     ecx, eax
  746.  
  747.         mov     eax, [esi + 4*0]
  748.         shr     eax, 8
  749.         movzx   eax, al
  750.         mov     eax, [Td2 + 4*eax]
  751.         xor     ecx, eax
  752.  
  753.         mov     eax, [esi + 4*3]
  754.         movzx   eax, al
  755.         mov     eax, [Td3 + 4*eax]
  756.         xor     ecx, eax
  757.  
  758.         mov     [edi + 4*2], ecx
  759.  
  760.  
  761.         mov     ecx, [ebx + 4*7]
  762.  
  763.         mov     eax, [esi + 4*3]
  764.         shr     eax, 24
  765.         mov     eax, [Td0 + 4*eax]
  766.         xor     ecx, eax
  767.  
  768.         mov     eax, [esi + 4*2]
  769.         shr     eax, 16
  770.         movzx   eax, al
  771.         mov     eax, [Td1 + 4*eax]
  772.         xor     ecx, eax
  773.  
  774.         mov     eax, [esi + 4*1]
  775.         shr     eax, 8
  776.         movzx   eax, al
  777.         mov     eax, [Td2 + 4*eax]
  778.         xor     ecx, eax
  779.  
  780.         mov     eax, [esi + 4*0]
  781.         movzx   eax, al
  782.         mov     eax, [Td3 + 4*eax]
  783.         xor     ecx, eax
  784.  
  785.         mov     [edi + 4*3], ecx
  786.  
  787.  
  788.         add     ebx, 4*8
  789.         dec     [r]
  790.         jz      .end_for
  791.  
  792.  
  793.         mov     ecx, [ebx + 4*0]
  794.  
  795.         mov     eax, [edi + 4*0]
  796.         shr     eax, 24
  797.         mov     eax, [Td0 + 4*eax]
  798.         xor     ecx, eax
  799.  
  800.         mov     eax, [edi + 4*3]
  801.         shr     eax, 16
  802.         movzx   eax, al
  803.         mov     eax, [Td1 + 4*eax]
  804.         xor     ecx, eax
  805.  
  806.         mov     eax, [edi + 4*2]
  807.         shr     eax, 8
  808.         movzx   eax, al
  809.         mov     eax, [Td2 + 4*eax]
  810.         xor     ecx, eax
  811.  
  812.         mov     eax, [edi + 4*1]
  813.         movzx   eax, al
  814.         mov     eax, [Td3 + 4*eax]
  815.         xor     ecx, eax
  816.  
  817.         mov     [esi + 4*0], ecx
  818.  
  819.  
  820.         mov     ecx, [ebx + 4*1]
  821.  
  822.         mov     eax, [edi + 4*1]
  823.         shr     eax, 24
  824.         mov     eax, [Td0 + 4*eax]
  825.         xor     ecx, eax
  826.  
  827.         mov     eax, [edi + 4*0]
  828.         shr     eax, 16
  829.         movzx   eax, al
  830.         mov     eax, [Td1 + 4*eax]
  831.         xor     ecx, eax
  832.  
  833.         mov     eax, [edi + 4*3]
  834.         shr     eax, 8
  835.         movzx   eax, al
  836.         mov     eax, [Td2 + 4*eax]
  837.         xor     ecx, eax
  838.  
  839.         mov     eax, [edi + 4*2]
  840.         movzx   eax, al
  841.         mov     eax, [Td3 + 4*eax]
  842.         xor     ecx, eax
  843.  
  844.         mov     [esi + 4*1], ecx
  845.  
  846.  
  847.         mov     ecx, [ebx + 4*2]
  848.  
  849.         mov     eax, [edi + 4*2]
  850.         shr     eax, 24
  851.         mov     eax, [Td0 + 4*eax]
  852.         xor     ecx, eax
  853.  
  854.         mov     eax, [edi + 4*1]
  855.         shr     eax, 16
  856.         movzx   eax, al
  857.         mov     eax, [Td1 + 4*eax]
  858.         xor     ecx, eax
  859.  
  860.         mov     eax, [edi + 4*0]
  861.         shr     eax, 8
  862.         movzx   eax, al
  863.         mov     eax, [Td2 + 4*eax]
  864.         xor     ecx, eax
  865.  
  866.         mov     eax, [edi + 4*3]
  867.         movzx   eax, al
  868.         mov     eax, [Td3 + 4*eax]
  869.         xor     ecx, eax
  870.  
  871.         mov     [esi + 4*2], ecx
  872.  
  873.  
  874.         mov     ecx, [ebx + 4*3]
  875.  
  876.         mov     eax, [edi + 4*3]
  877.         shr     eax, 24
  878.         mov     eax, [Td0 + 4*eax]
  879.         xor     ecx, eax
  880.  
  881.         mov     eax, [edi + 4*2]
  882.         shr     eax, 16
  883.         movzx   eax, al
  884.         mov     eax, [Td1 + 4*eax]
  885.         xor     ecx, eax
  886.  
  887.         mov     eax, [edi + 4*1]
  888.         shr     eax, 8
  889.         movzx   eax, al
  890.         mov     eax, [Td2 + 4*eax]
  891.         xor     ecx, eax
  892.  
  893.         mov     eax, [edi + 4*0]
  894.         movzx   eax, al
  895.         mov     eax, [Td3 + 4*eax]
  896.         xor     ecx, eax
  897.  
  898.         mov     [esi + 4*3], ecx
  899.  
  900.         jmp     .for
  901.   .end_for:
  902.  
  903. ; Apply last round
  904.  
  905.         mov     ecx, [ebx + 4*0]
  906.  
  907.         mov     eax, [edi + 4*0]
  908.         shr     eax, 24
  909.         movzx   eax, [Td4 + eax]
  910.         shl     eax, 24
  911.         xor     ecx, eax
  912.  
  913.         mov     eax, [edi + 4*3]
  914.         shr     eax, 16
  915.         movzx   eax, al
  916.         movzx   eax, [Td4 + eax]
  917.         shl     eax, 16
  918.         xor     ecx, eax
  919.  
  920.         mov     eax, [edi + 4*2]
  921.         shr     eax, 8
  922.         movzx   eax, al
  923.         movzx   eax, [Td4 + eax]
  924.         shl     eax, 8
  925.         xor     ecx, eax
  926.  
  927.         mov     eax, [edi + 4*1]
  928.         movzx   eax, al
  929.         movzx   eax, [Td4 + eax]
  930.         xor     ecx, eax
  931.  
  932.         mov     [esi + 4*0], ecx
  933.  
  934.  
  935.         mov     ecx, [ebx + 4*1]
  936.  
  937.         mov     eax, [edi + 4*1]
  938.         shr     eax, 24
  939.         movzx   eax, [Td4 + eax]
  940.         shl     eax, 24
  941.         xor     ecx, eax
  942.  
  943.         mov     eax, [edi + 4*0]
  944.         shr     eax, 16
  945.         movzx   eax, al
  946.         movzx   eax, [Td4 + eax]
  947.         shl     eax, 16
  948.         xor     ecx, eax
  949.  
  950.         mov     eax, [edi + 4*3]
  951.         shr     eax, 8
  952.         movzx   eax, al
  953.         movzx   eax, [Td4 + eax]
  954.         shl     eax, 8
  955.         xor     ecx, eax
  956.  
  957.         mov     eax, [edi + 4*2]
  958.         movzx   eax, al
  959.         movzx   eax, [Td4 + eax]
  960.         xor     ecx, eax
  961.  
  962.         mov     [esi + 4*1], ecx
  963.  
  964.  
  965.         mov     ecx, [ebx + 4*2]
  966.  
  967.         mov     eax, [edi + 4*2]
  968.         shr     eax, 24
  969.         movzx   eax, [Td4 + eax]
  970.         shl     eax, 24
  971.         xor     ecx, eax
  972.  
  973.         mov     eax, [edi + 4*1]
  974.         shr     eax, 16
  975.         movzx   eax, al
  976.         movzx   eax, [Td4 + eax]
  977.         shl     eax, 16
  978.         xor     ecx, eax
  979.  
  980.         mov     eax, [edi + 4*0]
  981.         shr     eax, 8
  982.         movzx   eax, al
  983.         movzx   eax, [Td4 + eax]
  984.         shl     eax, 8
  985.         xor     ecx, eax
  986.  
  987.         mov     eax, [edi + 4*3]
  988.         movzx   eax, al
  989.         movzx   eax, [Td4 + eax]
  990.         xor     ecx, eax
  991.  
  992.         mov     [esi + 4*2], ecx
  993.  
  994.  
  995.         mov     ecx, [ebx + 4*3]
  996.  
  997.         mov     eax, [edi + 4*3]
  998.         shr     eax, 24
  999.         movzx   eax, [Td4 + eax]
  1000.         shl     eax, 24
  1001.         xor     ecx, eax
  1002.  
  1003.         mov     eax, [edi + 4*2]
  1004.         shr     eax, 16
  1005.         movzx   eax, al
  1006.         movzx   eax, [Td4 + eax]
  1007.         shl     eax, 16
  1008.         xor     ecx, eax
  1009.  
  1010.         mov     eax, [edi + 4*1]
  1011.         shr     eax, 8
  1012.         movzx   eax, al
  1013.         movzx   eax, [Td4 + eax]
  1014.         shl     eax, 8
  1015.         xor     ecx, eax
  1016.  
  1017.         mov     eax, [edi + 4*0]
  1018.         movzx   eax, al
  1019.         movzx   eax, [Td4 + eax]
  1020.         xor     ecx, eax
  1021.  
  1022.         mov     [esi + 4*3], ecx
  1023.  
  1024.  
  1025.         mov     edi, [_out]
  1026.         lodsd
  1027.         bswap   eax
  1028.         stosd
  1029.         lodsd
  1030.         bswap   eax
  1031.         stosd
  1032.         lodsd
  1033.         bswap   eax
  1034.         stosd
  1035.         lodsd
  1036.         bswap   eax
  1037.         stosd
  1038.  
  1039.         DEBUGF  1,'output : '
  1040.         stdcall dump_hex, [_out], 4
  1041.  
  1042.         pop     edi esi ebx
  1043.         ret
  1044. endp
  1045.  
  1046. iglobal
  1047.  
  1048. Te0     dd \
  1049.         0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, \
  1050.         0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, \
  1051.         0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, \
  1052.         0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, \
  1053.         0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87, \
  1054.         0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, \
  1055.         0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, \
  1056.         0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b, \
  1057.         0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, \
  1058.         0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, \
  1059.         0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108, \
  1060.         0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, \
  1061.         0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, \
  1062.         0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5, \
  1063.         0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, \
  1064.         0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, \
  1065.         0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e, \
  1066.         0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, \
  1067.         0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, \
  1068.         0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497, \
  1069.         0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, \
  1070.         0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, \
  1071.         0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b, \
  1072.         0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, \
  1073.         0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, \
  1074.         0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594, \
  1075.         0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, \
  1076.         0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, \
  1077.         0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a, \
  1078.         0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, \
  1079.         0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, \
  1080.         0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d, \
  1081.         0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, \
  1082.         0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, \
  1083.         0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47, \
  1084.         0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, \
  1085.         0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, \
  1086.         0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883, \
  1087.         0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, \
  1088.         0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, \
  1089.         0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e, \
  1090.         0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, \
  1091.         0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, \
  1092.         0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b, \
  1093.         0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, \
  1094.         0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, \
  1095.         0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25, \
  1096.         0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, \
  1097.         0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, \
  1098.         0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651, \
  1099.         0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, \
  1100.         0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, \
  1101.         0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa, \
  1102.         0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, \
  1103.         0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, \
  1104.         0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9, \
  1105.         0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, \
  1106.         0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, \
  1107.         0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920, \
  1108.         0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, \
  1109.         0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, \
  1110.         0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8, \
  1111.         0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, \
  1112.         0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a
  1113.  
  1114. Te1     dd \
  1115.         0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, \
  1116.         0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, \
  1117.         0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, \
  1118.         0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, \
  1119.         0x458fcaca, 0x9d1f8282, 0x4089c9c9, 0x87fa7d7d, \
  1120.         0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, \
  1121.         0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, \
  1122.         0xbf239c9c, 0xf753a4a4, 0x96e47272, 0x5b9bc0c0, \
  1123.         0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, \
  1124.         0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, \
  1125.         0x5c683434, 0xf451a5a5, 0x34d1e5e5, 0x08f9f1f1, \
  1126.         0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, \
  1127.         0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, \
  1128.         0x28301818, 0xa1379696, 0x0f0a0505, 0xb52f9a9a, \
  1129.         0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, \
  1130.         0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, \
  1131.         0x1b120909, 0x9e1d8383, 0x74582c2c, 0x2e341a1a, \
  1132.         0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, \
  1133.         0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, \
  1134.         0x7b522929, 0x3edde3e3, 0x715e2f2f, 0x97138484, \
  1135.         0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, \
  1136.         0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, \
  1137.         0xbed46a6a, 0x468dcbcb, 0xd967bebe, 0x4b723939, \
  1138.         0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, \
  1139.         0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, \
  1140.         0xc5864343, 0xd79a4d4d, 0x55663333, 0x94118585, \
  1141.         0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, \
  1142.         0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, \
  1143.         0xf3a25151, 0xfe5da3a3, 0xc0804040, 0x8a058f8f, \
  1144.         0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, \
  1145.         0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, \
  1146.         0x30201010, 0x1ae5ffff, 0x0efdf3f3, 0x6dbfd2d2, \
  1147.         0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, \
  1148.         0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, \
  1149.         0x5793c4c4, 0xf255a7a7, 0x82fc7e7e, 0x477a3d3d, \
  1150.         0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, \
  1151.         0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, \
  1152.         0x66442222, 0x7e542a2a, 0xab3b9090, 0x830b8888, \
  1153.         0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, \
  1154.         0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, \
  1155.         0x3bdbe0e0, 0x56643232, 0x4e743a3a, 0x1e140a0a, \
  1156.         0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, \
  1157.         0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, \
  1158.         0xa8399191, 0xa4319595, 0x37d3e4e4, 0x8bf27979, \
  1159.         0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, \
  1160.         0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, \
  1161.         0xb4d86c6c, 0xfaac5656, 0x07f3f4f4, 0x25cfeaea, \
  1162.         0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, \
  1163.         0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, \
  1164.         0x24381c1c, 0xf157a6a6, 0xc773b4b4, 0x5197c6c6, \
  1165.         0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, \
  1166.         0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, \
  1167.         0x90e07070, 0x427c3e3e, 0xc471b5b5, 0xaacc6666, \
  1168.         0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, \
  1169.         0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, \
  1170.         0x91178686, 0x5899c1c1, 0x273a1d1d, 0xb9279e9e, \
  1171.         0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, \
  1172.         0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, \
  1173.         0xb62d9b9b, 0x223c1e1e, 0x92158787, 0x20c9e9e9, \
  1174.         0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, \
  1175.         0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, \
  1176.         0xda65bfbf, 0x31d7e6e6, 0xc6844242, 0xb8d06868, \
  1177.         0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, \
  1178.         0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616
  1179.  
  1180. Te2     dd \
  1181.         0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, \
  1182.         0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, \
  1183.         0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, \
  1184.         0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, \
  1185.         0xca458fca, 0x829d1f82, 0xc94089c9, 0x7d87fa7d, \
  1186.         0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, \
  1187.         0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, \
  1188.         0x9cbf239c, 0xa4f753a4, 0x7296e472, 0xc05b9bc0, \
  1189.         0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, \
  1190.         0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, \
  1191.         0x345c6834, 0xa5f451a5, 0xe534d1e5, 0xf108f9f1, \
  1192.         0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, \
  1193.         0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, \
  1194.         0x18283018, 0x96a13796, 0x050f0a05, 0x9ab52f9a, \
  1195.         0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, \
  1196.         0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, \
  1197.         0x091b1209, 0x839e1d83, 0x2c74582c, 0x1a2e341a, \
  1198.         0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, \
  1199.         0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, \
  1200.         0x297b5229, 0xe33edde3, 0x2f715e2f, 0x84971384, \
  1201.         0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, \
  1202.         0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, \
  1203.         0x6abed46a, 0xcb468dcb, 0xbed967be, 0x394b7239, \
  1204.         0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, \
  1205.         0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, \
  1206.         0x43c58643, 0x4dd79a4d, 0x33556633, 0x85941185, \
  1207.         0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, \
  1208.         0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, \
  1209.         0x51f3a251, 0xa3fe5da3, 0x40c08040, 0x8f8a058f, \
  1210.         0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, \
  1211.         0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, \
  1212.         0x10302010, 0xff1ae5ff, 0xf30efdf3, 0xd26dbfd2, \
  1213.         0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, \
  1214.         0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, \
  1215.         0xc45793c4, 0xa7f255a7, 0x7e82fc7e, 0x3d477a3d, \
  1216.         0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, \
  1217.         0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, \
  1218.         0x22664422, 0x2a7e542a, 0x90ab3b90, 0x88830b88, \
  1219.         0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, \
  1220.         0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, \
  1221.         0xe03bdbe0, 0x32566432, 0x3a4e743a, 0x0a1e140a, \
  1222.         0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, \
  1223.         0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, \
  1224.         0x91a83991, 0x95a43195, 0xe437d3e4, 0x798bf279, \
  1225.         0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, \
  1226.         0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, \
  1227.         0x6cb4d86c, 0x56faac56, 0xf407f3f4, 0xea25cfea, \
  1228.         0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, \
  1229.         0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, \
  1230.         0x1c24381c, 0xa6f157a6, 0xb4c773b4, 0xc65197c6, \
  1231.         0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, \
  1232.         0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, \
  1233.         0x7090e070, 0x3e427c3e, 0xb5c471b5, 0x66aacc66, \
  1234.         0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, \
  1235.         0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, \
  1236.         0x86911786, 0xc15899c1, 0x1d273a1d, 0x9eb9279e, \
  1237.         0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, \
  1238.         0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, \
  1239.         0x9bb62d9b, 0x1e223c1e, 0x87921587, 0xe920c9e9, \
  1240.         0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, \
  1241.         0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, \
  1242.         0xbfda65bf, 0xe631d7e6, 0x42c68442, 0x68b8d068, \
  1243.         0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, \
  1244.         0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16
  1245.  
  1246. Te3     dd \
  1247.         0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, \
  1248.         0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, \
  1249.         0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, \
  1250.         0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, \
  1251.         0xcaca458f, 0x82829d1f, 0xc9c94089, 0x7d7d87fa, \
  1252.         0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, \
  1253.         0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, \
  1254.         0x9c9cbf23, 0xa4a4f753, 0x727296e4, 0xc0c05b9b, \
  1255.         0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, \
  1256.         0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, \
  1257.         0x34345c68, 0xa5a5f451, 0xe5e534d1, 0xf1f108f9, \
  1258.         0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, \
  1259.         0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, \
  1260.         0x18182830, 0x9696a137, 0x05050f0a, 0x9a9ab52f, \
  1261.         0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, \
  1262.         0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, \
  1263.         0x09091b12, 0x83839e1d, 0x2c2c7458, 0x1a1a2e34, \
  1264.         0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, \
  1265.         0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, \
  1266.         0x29297b52, 0xe3e33edd, 0x2f2f715e, 0x84849713, \
  1267.         0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, \
  1268.         0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, \
  1269.         0x6a6abed4, 0xcbcb468d, 0xbebed967, 0x39394b72, \
  1270.         0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, \
  1271.         0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, \
  1272.         0x4343c586, 0x4d4dd79a, 0x33335566, 0x85859411, \
  1273.         0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, \
  1274.         0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, \
  1275.         0x5151f3a2, 0xa3a3fe5d, 0x4040c080, 0x8f8f8a05, \
  1276.         0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, \
  1277.         0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, \
  1278.         0x10103020, 0xffff1ae5, 0xf3f30efd, 0xd2d26dbf, \
  1279.         0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, \
  1280.         0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, \
  1281.         0xc4c45793, 0xa7a7f255, 0x7e7e82fc, 0x3d3d477a, \
  1282.         0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, \
  1283.         0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, \
  1284.         0x22226644, 0x2a2a7e54, 0x9090ab3b, 0x8888830b, \
  1285.         0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, \
  1286.         0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, \
  1287.         0xe0e03bdb, 0x32325664, 0x3a3a4e74, 0x0a0a1e14, \
  1288.         0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, \
  1289.         0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, \
  1290.         0x9191a839, 0x9595a431, 0xe4e437d3, 0x79798bf2, \
  1291.         0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, \
  1292.         0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, \
  1293.         0x6c6cb4d8, 0x5656faac, 0xf4f407f3, 0xeaea25cf, \
  1294.         0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, \
  1295.         0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, \
  1296.         0x1c1c2438, 0xa6a6f157, 0xb4b4c773, 0xc6c65197, \
  1297.         0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, \
  1298.         0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, \
  1299.         0x707090e0, 0x3e3e427c, 0xb5b5c471, 0x6666aacc, \
  1300.         0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, \
  1301.         0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, \
  1302.         0x86869117, 0xc1c15899, 0x1d1d273a, 0x9e9eb927, \
  1303.         0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, \
  1304.         0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, \
  1305.         0x9b9bb62d, 0x1e1e223c, 0x87879215, 0xe9e920c9, \
  1306.         0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, \
  1307.         0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, \
  1308.         0xbfbfda65, 0xe6e631d7, 0x4242c684, 0x6868b8d0, \
  1309.         0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, \
  1310.         0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c
  1311.  
  1312.  
  1313. Td0     dd \
  1314.         0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, \
  1315.         0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, \
  1316.         0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25, \
  1317.         0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f, \
  1318.         0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1, \
  1319.         0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6, \
  1320.         0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da, \
  1321.         0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844, \
  1322.         0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd, \
  1323.         0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4, \
  1324.         0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45, \
  1325.         0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94, \
  1326.         0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7, \
  1327.         0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a, \
  1328.         0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5, \
  1329.         0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c, \
  1330.         0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1, \
  1331.         0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a, \
  1332.         0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75, \
  1333.         0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051, \
  1334.         0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46, \
  1335.         0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff, \
  1336.         0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77, \
  1337.         0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb, \
  1338.         0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000, \
  1339.         0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e, \
  1340.         0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927, \
  1341.         0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a, \
  1342.         0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e, \
  1343.         0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16, \
  1344.         0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d, \
  1345.         0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8, \
  1346.         0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd, \
  1347.         0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34, \
  1348.         0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163, \
  1349.         0xd731dcca, 0x42638510, 0x13972240, 0x84c61120, \
  1350.         0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d, \
  1351.         0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0, \
  1352.         0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422, \
  1353.         0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef, \
  1354.         0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36, \
  1355.         0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4, \
  1356.         0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662, \
  1357.         0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5, \
  1358.         0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3, \
  1359.         0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b, \
  1360.         0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8, \
  1361.         0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6, \
  1362.         0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6, \
  1363.         0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0, \
  1364.         0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815, \
  1365.         0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f, \
  1366.         0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df, \
  1367.         0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f, \
  1368.         0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e, \
  1369.         0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713, \
  1370.         0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89, \
  1371.         0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c, \
  1372.         0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf, \
  1373.         0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86, \
  1374.         0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f, \
  1375.         0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541, \
  1376.         0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190, \
  1377.         0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742
  1378.  
  1379. Td1     dd \
  1380.         0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, \
  1381.         0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, \
  1382.         0x552030fa, 0xf6ad766d, 0x9188cc76, 0x25f5024c, \
  1383.         0xfc4fe5d7, 0xd7c52acb, 0x80263544, 0x8fb562a3, \
  1384.         0x49deb15a, 0x6725ba1b, 0x9845ea0e, 0xe15dfec0, \
  1385.         0x02c32f75, 0x12814cf0, 0xa38d4697, 0xc66bd3f9, \
  1386.         0xe7038f5f, 0x9515929c, 0xebbf6d7a, 0xda955259, \
  1387.         0x2dd4be83, 0xd3587421, 0x2949e069, 0x448ec9c8, \
  1388.         0x6a75c289, 0x78f48e79, 0x6b99583e, 0xdd27b971, \
  1389.         0xb6bee14f, 0x17f088ad, 0x66c920ac, 0xb47dce3a, \
  1390.         0x1863df4a, 0x82e51a31, 0x60975133, 0x4562537f, \
  1391.         0xe0b16477, 0x84bb6bae, 0x1cfe81a0, 0x94f9082b, \
  1392.         0x58704868, 0x198f45fd, 0x8794de6c, 0xb7527bf8, \
  1393.         0x23ab73d3, 0xe2724b02, 0x57e31f8f, 0x2a6655ab, \
  1394.         0x07b2eb28, 0x032fb5c2, 0x9a86c57b, 0xa5d33708, \
  1395.         0xf2302887, 0xb223bfa5, 0xba02036a, 0x5ced1682, \
  1396.         0x2b8acf1c, 0x92a779b4, 0xf0f307f2, 0xa14e69e2, \
  1397.         0xcd65daf4, 0xd50605be, 0x1fd13462, 0x8ac4a6fe, \
  1398.         0x9d342e53, 0xa0a2f355, 0x32058ae1, 0x75a4f6eb, \
  1399.         0x390b83ec, 0xaa4060ef, 0x065e719f, 0x51bd6e10, \
  1400.         0xf93e218a, 0x3d96dd06, 0xaedd3e05, 0x464de6bd, \
  1401.         0xb591548d, 0x0571c45d, 0x6f0406d4, 0xff605015, \
  1402.         0x241998fb, 0x97d6bde9, 0xcc894043, 0x7767d99e, \
  1403.         0xbdb0e842, 0x8807898b, 0x38e7195b, 0xdb79c8ee, \
  1404.         0x47a17c0a, 0xe97c420f, 0xc9f8841e, 0x00000000, \
  1405.         0x83098086, 0x48322bed, 0xac1e1170, 0x4e6c5a72, \
  1406.         0xfbfd0eff, 0x560f8538, 0x1e3daed5, 0x27362d39, \
  1407.         0x640a0fd9, 0x21685ca6, 0xd19b5b54, 0x3a24362e, \
  1408.         0xb10c0a67, 0x0f9357e7, 0xd2b4ee96, 0x9e1b9b91, \
  1409.         0x4f80c0c5, 0xa261dc20, 0x695a774b, 0x161c121a, \
  1410.         0x0ae293ba, 0xe5c0a02a, 0x433c22e0, 0x1d121b17, \
  1411.         0x0b0e090d, 0xadf28bc7, 0xb92db6a8, 0xc8141ea9, \
  1412.         0x8557f119, 0x4caf7507, 0xbbee99dd, 0xfda37f60, \
  1413.         0x9ff70126, 0xbc5c72f5, 0xc544663b, 0x345bfb7e, \
  1414.         0x768b4329, 0xdccb23c6, 0x68b6edfc, 0x63b8e4f1, \
  1415.         0xcad731dc, 0x10426385, 0x40139722, 0x2084c611, \
  1416.         0x7d854a24, 0xf8d2bb3d, 0x11aef932, 0x6dc729a1, \
  1417.         0x4b1d9e2f, 0xf3dcb230, 0xec0d8652, 0xd077c1e3, \
  1418.         0x6c2bb316, 0x99a970b9, 0xfa119448, 0x2247e964, \
  1419.         0xc4a8fc8c, 0x1aa0f03f, 0xd8567d2c, 0xef223390, \
  1420.         0xc787494e, 0xc1d938d1, 0xfe8ccaa2, 0x3698d40b, \
  1421.         0xcfa6f581, 0x28a57ade, 0x26dab78e, 0xa43fadbf, \
  1422.         0xe42c3a9d, 0x0d507892, 0x9b6a5fcc, 0x62547e46, \
  1423.         0xc2f68d13, 0xe890d8b8, 0x5e2e39f7, 0xf582c3af, \
  1424.         0xbe9f5d80, 0x7c69d093, 0xa96fd52d, 0xb3cf2512, \
  1425.         0x3bc8ac99, 0xa710187d, 0x6ee89c63, 0x7bdb3bbb, \
  1426.         0x09cd2678, 0xf46e5918, 0x01ec9ab7, 0xa8834f9a, \
  1427.         0x65e6956e, 0x7eaaffe6, 0x0821bccf, 0xe6ef15e8, \
  1428.         0xd9bae79b, 0xce4a6f36, 0xd4ea9f09, 0xd629b07c, \
  1429.         0xaf31a4b2, 0x312a3f23, 0x30c6a594, 0xc035a266, \
  1430.         0x37744ebc, 0xa6fc82ca, 0xb0e090d0, 0x1533a7d8, \
  1431.         0x4af10498, 0xf741ecda, 0x0e7fcd50, 0x2f1791f6, \
  1432.         0x8d764dd6, 0x4d43efb0, 0x54ccaa4d, 0xdfe49604, \
  1433.         0xe39ed1b5, 0x1b4c6a88, 0xb8c12c1f, 0x7f466551, \
  1434.         0x049d5eea, 0x5d018c35, 0x73fa8774, 0x2efb0b41, \
  1435.         0x5ab3671d, 0x5292dbd2, 0x33e91056, 0x136dd647, \
  1436.         0x8c9ad761, 0x7a37a10c, 0x8e59f814, 0x89eb133c, \
  1437.         0xeecea927, 0x35b761c9, 0xede11ce5, 0x3c7a47b1, \
  1438.         0x599cd2df, 0x3f55f273, 0x791814ce, 0xbf73c737, \
  1439.         0xea53f7cd, 0x5b5ffdaa, 0x14df3d6f, 0x867844db, \
  1440.         0x81caaff3, 0x3eb968c4, 0x2c382434, 0x5fc2a340, \
  1441.         0x72161dc3, 0x0cbce225, 0x8b283c49, 0x41ff0d95, \
  1442.         0x7139a801, 0xde080cb3, 0x9cd8b4e4, 0x906456c1, \
  1443.         0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857
  1444.  
  1445. Td2     dd \
  1446.         0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, \
  1447.         0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, \
  1448.         0xfa552030, 0x6df6ad76, 0x769188cc, 0x4c25f502, \
  1449.         0xd7fc4fe5, 0xcbd7c52a, 0x44802635, 0xa38fb562, \
  1450.         0x5a49deb1, 0x1b6725ba, 0x0e9845ea, 0xc0e15dfe, \
  1451.         0x7502c32f, 0xf012814c, 0x97a38d46, 0xf9c66bd3, \
  1452.         0x5fe7038f, 0x9c951592, 0x7aebbf6d, 0x59da9552, \
  1453.         0x832dd4be, 0x21d35874, 0x692949e0, 0xc8448ec9, \
  1454.         0x896a75c2, 0x7978f48e, 0x3e6b9958, 0x71dd27b9, \
  1455.         0x4fb6bee1, 0xad17f088, 0xac66c920, 0x3ab47dce, \
  1456.         0x4a1863df, 0x3182e51a, 0x33609751, 0x7f456253, \
  1457.         0x77e0b164, 0xae84bb6b, 0xa01cfe81, 0x2b94f908, \
  1458.         0x68587048, 0xfd198f45, 0x6c8794de, 0xf8b7527b, \
  1459.         0xd323ab73, 0x02e2724b, 0x8f57e31f, 0xab2a6655, \
  1460.         0x2807b2eb, 0xc2032fb5, 0x7b9a86c5, 0x08a5d337, \
  1461.         0x87f23028, 0xa5b223bf, 0x6aba0203, 0x825ced16, \
  1462.         0x1c2b8acf, 0xb492a779, 0xf2f0f307, 0xe2a14e69, \
  1463.         0xf4cd65da, 0xbed50605, 0x621fd134, 0xfe8ac4a6, \
  1464.         0x539d342e, 0x55a0a2f3, 0xe132058a, 0xeb75a4f6, \
  1465.         0xec390b83, 0xefaa4060, 0x9f065e71, 0x1051bd6e, \
  1466.         0x8af93e21, 0x063d96dd, 0x05aedd3e, 0xbd464de6, \
  1467.         0x8db59154, 0x5d0571c4, 0xd46f0406, 0x15ff6050, \
  1468.         0xfb241998, 0xe997d6bd, 0x43cc8940, 0x9e7767d9, \
  1469.         0x42bdb0e8, 0x8b880789, 0x5b38e719, 0xeedb79c8, \
  1470.         0x0a47a17c, 0x0fe97c42, 0x1ec9f884, 0x00000000, \
  1471.         0x86830980, 0xed48322b, 0x70ac1e11, 0x724e6c5a, \
  1472.         0xfffbfd0e, 0x38560f85, 0xd51e3dae, 0x3927362d, \
  1473.         0xd9640a0f, 0xa621685c, 0x54d19b5b, 0x2e3a2436, \
  1474.         0x67b10c0a, 0xe70f9357, 0x96d2b4ee, 0x919e1b9b, \
  1475.         0xc54f80c0, 0x20a261dc, 0x4b695a77, 0x1a161c12, \
  1476.         0xba0ae293, 0x2ae5c0a0, 0xe0433c22, 0x171d121b, \
  1477.         0x0d0b0e09, 0xc7adf28b, 0xa8b92db6, 0xa9c8141e, \
  1478.         0x198557f1, 0x074caf75, 0xddbbee99, 0x60fda37f, \
  1479.         0x269ff701, 0xf5bc5c72, 0x3bc54466, 0x7e345bfb, \
  1480.         0x29768b43, 0xc6dccb23, 0xfc68b6ed, 0xf163b8e4, \
  1481.         0xdccad731, 0x85104263, 0x22401397, 0x112084c6, \
  1482.         0x247d854a, 0x3df8d2bb, 0x3211aef9, 0xa16dc729, \
  1483.         0x2f4b1d9e, 0x30f3dcb2, 0x52ec0d86, 0xe3d077c1, \
  1484.         0x166c2bb3, 0xb999a970, 0x48fa1194, 0x642247e9, \
  1485.         0x8cc4a8fc, 0x3f1aa0f0, 0x2cd8567d, 0x90ef2233, \
  1486.         0x4ec78749, 0xd1c1d938, 0xa2fe8cca, 0x0b3698d4, \
  1487.         0x81cfa6f5, 0xde28a57a, 0x8e26dab7, 0xbfa43fad, \
  1488.         0x9de42c3a, 0x920d5078, 0xcc9b6a5f, 0x4662547e, \
  1489.         0x13c2f68d, 0xb8e890d8, 0xf75e2e39, 0xaff582c3, \
  1490.         0x80be9f5d, 0x937c69d0, 0x2da96fd5, 0x12b3cf25, \
  1491.         0x993bc8ac, 0x7da71018, 0x636ee89c, 0xbb7bdb3b, \
  1492.         0x7809cd26, 0x18f46e59, 0xb701ec9a, 0x9aa8834f, \
  1493.         0x6e65e695, 0xe67eaaff, 0xcf0821bc, 0xe8e6ef15, \
  1494.         0x9bd9bae7, 0x36ce4a6f, 0x09d4ea9f, 0x7cd629b0, \
  1495.         0xb2af31a4, 0x23312a3f, 0x9430c6a5, 0x66c035a2, \
  1496.         0xbc37744e, 0xcaa6fc82, 0xd0b0e090, 0xd81533a7, \
  1497.         0x984af104, 0xdaf741ec, 0x500e7fcd, 0xf62f1791, \
  1498.         0xd68d764d, 0xb04d43ef, 0x4d54ccaa, 0x04dfe496, \
  1499.         0xb5e39ed1, 0x881b4c6a, 0x1fb8c12c, 0x517f4665, \
  1500.         0xea049d5e, 0x355d018c, 0x7473fa87, 0x412efb0b, \
  1501.         0x1d5ab367, 0xd25292db, 0x5633e910, 0x47136dd6, \
  1502.         0x618c9ad7, 0x0c7a37a1, 0x148e59f8, 0x3c89eb13, \
  1503.         0x27eecea9, 0xc935b761, 0xe5ede11c, 0xb13c7a47, \
  1504.         0xdf599cd2, 0x733f55f2, 0xce791814, 0x37bf73c7, \
  1505.         0xcdea53f7, 0xaa5b5ffd, 0x6f14df3d, 0xdb867844, \
  1506.         0xf381caaf, 0xc43eb968, 0x342c3824, 0x405fc2a3, \
  1507.         0xc372161d, 0x250cbce2, 0x498b283c, 0x9541ff0d, \
  1508.         0x017139a8, 0xb3de080c, 0xe49cd8b4, 0xc1906456, \
  1509.         0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8
  1510.  
  1511. Td3     dd \
  1512.         0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, \
  1513.         0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, \
  1514.         0x30fa5520, 0x766df6ad, 0xcc769188, 0x024c25f5, \
  1515.         0xe5d7fc4f, 0x2acbd7c5, 0x35448026, 0x62a38fb5, \
  1516.         0xb15a49de, 0xba1b6725, 0xea0e9845, 0xfec0e15d, \
  1517.         0x2f7502c3, 0x4cf01281, 0x4697a38d, 0xd3f9c66b, \
  1518.         0x8f5fe703, 0x929c9515, 0x6d7aebbf, 0x5259da95, \
  1519.         0xbe832dd4, 0x7421d358, 0xe0692949, 0xc9c8448e, \
  1520.         0xc2896a75, 0x8e7978f4, 0x583e6b99, 0xb971dd27, \
  1521.         0xe14fb6be, 0x88ad17f0, 0x20ac66c9, 0xce3ab47d, \
  1522.         0xdf4a1863, 0x1a3182e5, 0x51336097, 0x537f4562, \
  1523.         0x6477e0b1, 0x6bae84bb, 0x81a01cfe, 0x082b94f9, \
  1524.         0x48685870, 0x45fd198f, 0xde6c8794, 0x7bf8b752, \
  1525.         0x73d323ab, 0x4b02e272, 0x1f8f57e3, 0x55ab2a66, \
  1526.         0xeb2807b2, 0xb5c2032f, 0xc57b9a86, 0x3708a5d3, \
  1527.         0x2887f230, 0xbfa5b223, 0x036aba02, 0x16825ced, \
  1528.         0xcf1c2b8a, 0x79b492a7, 0x07f2f0f3, 0x69e2a14e, \
  1529.         0xdaf4cd65, 0x05bed506, 0x34621fd1, 0xa6fe8ac4, \
  1530.         0x2e539d34, 0xf355a0a2, 0x8ae13205, 0xf6eb75a4, \
  1531.         0x83ec390b, 0x60efaa40, 0x719f065e, 0x6e1051bd, \
  1532.         0x218af93e, 0xdd063d96, 0x3e05aedd, 0xe6bd464d, \
  1533.         0x548db591, 0xc45d0571, 0x06d46f04, 0x5015ff60, \
  1534.         0x98fb2419, 0xbde997d6, 0x4043cc89, 0xd99e7767, \
  1535.         0xe842bdb0, 0x898b8807, 0x195b38e7, 0xc8eedb79, \
  1536.         0x7c0a47a1, 0x420fe97c, 0x841ec9f8, 0x00000000, \
  1537.         0x80868309, 0x2bed4832, 0x1170ac1e, 0x5a724e6c, \
  1538.         0x0efffbfd, 0x8538560f, 0xaed51e3d, 0x2d392736, \
  1539.         0x0fd9640a, 0x5ca62168, 0x5b54d19b, 0x362e3a24, \
  1540.         0x0a67b10c, 0x57e70f93, 0xee96d2b4, 0x9b919e1b, \
  1541.         0xc0c54f80, 0xdc20a261, 0x774b695a, 0x121a161c, \
  1542.         0x93ba0ae2, 0xa02ae5c0, 0x22e0433c, 0x1b171d12, \
  1543.         0x090d0b0e, 0x8bc7adf2, 0xb6a8b92d, 0x1ea9c814, \
  1544.         0xf1198557, 0x75074caf, 0x99ddbbee, 0x7f60fda3, \
  1545.         0x01269ff7, 0x72f5bc5c, 0x663bc544, 0xfb7e345b, \
  1546.         0x4329768b, 0x23c6dccb, 0xedfc68b6, 0xe4f163b8, \
  1547.         0x31dccad7, 0x63851042, 0x97224013, 0xc6112084, \
  1548.         0x4a247d85, 0xbb3df8d2, 0xf93211ae, 0x29a16dc7, \
  1549.         0x9e2f4b1d, 0xb230f3dc, 0x8652ec0d, 0xc1e3d077, \
  1550.         0xb3166c2b, 0x70b999a9, 0x9448fa11, 0xe9642247, \
  1551.         0xfc8cc4a8, 0xf03f1aa0, 0x7d2cd856, 0x3390ef22, \
  1552.         0x494ec787, 0x38d1c1d9, 0xcaa2fe8c, 0xd40b3698, \
  1553.         0xf581cfa6, 0x7ade28a5, 0xb78e26da, 0xadbfa43f, \
  1554.         0x3a9de42c, 0x78920d50, 0x5fcc9b6a, 0x7e466254, \
  1555.         0x8d13c2f6, 0xd8b8e890, 0x39f75e2e, 0xc3aff582, \
  1556.         0x5d80be9f, 0xd0937c69, 0xd52da96f, 0x2512b3cf, \
  1557.         0xac993bc8, 0x187da710, 0x9c636ee8, 0x3bbb7bdb, \
  1558.         0x267809cd, 0x5918f46e, 0x9ab701ec, 0x4f9aa883, \
  1559.         0x956e65e6, 0xffe67eaa, 0xbccf0821, 0x15e8e6ef, \
  1560.         0xe79bd9ba, 0x6f36ce4a, 0x9f09d4ea, 0xb07cd629, \
  1561.         0xa4b2af31, 0x3f23312a, 0xa59430c6, 0xa266c035, \
  1562.         0x4ebc3774, 0x82caa6fc, 0x90d0b0e0, 0xa7d81533, \
  1563.         0x04984af1, 0xecdaf741, 0xcd500e7f, 0x91f62f17, \
  1564.         0x4dd68d76, 0xefb04d43, 0xaa4d54cc, 0x9604dfe4, \
  1565.         0xd1b5e39e, 0x6a881b4c, 0x2c1fb8c1, 0x65517f46, \
  1566.         0x5eea049d, 0x8c355d01, 0x877473fa, 0x0b412efb, \
  1567.         0x671d5ab3, 0xdbd25292, 0x105633e9, 0xd647136d, \
  1568.         0xd7618c9a, 0xa10c7a37, 0xf8148e59, 0x133c89eb, \
  1569.         0xa927eece, 0x61c935b7, 0x1ce5ede1, 0x47b13c7a, \
  1570.         0xd2df599c, 0xf2733f55, 0x14ce7918, 0xc737bf73, \
  1571.         0xf7cdea53, 0xfdaa5b5f, 0x3d6f14df, 0x44db8678, \
  1572.         0xaff381ca, 0x68c43eb9, 0x24342c38, 0xa3405fc2, \
  1573.         0x1dc37216, 0xe2250cbc, 0x3c498b28, 0x0d9541ff, \
  1574.         0xa8017139, 0x0cb3de08, 0xb4e49cd8, 0x56c19064, \
  1575.         0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0
  1576.  
  1577. Td4     db \
  1578.         0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, \
  1579.         0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, \
  1580.         0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, \
  1581.         0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, \
  1582.         0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, \
  1583.         0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, \
  1584.         0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, \
  1585.         0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, \
  1586.         0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, \
  1587.         0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, \
  1588.         0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, \
  1589.         0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, \
  1590.         0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, \
  1591.         0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, \
  1592.         0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, \
  1593.         0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, \
  1594.         0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, \
  1595.         0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, \
  1596.         0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, \
  1597.         0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, \
  1598.         0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, \
  1599.         0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, \
  1600.         0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, \
  1601.         0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, \
  1602.         0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, \
  1603.         0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, \
  1604.         0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, \
  1605.         0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, \
  1606.         0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, \
  1607.         0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, \
  1608.         0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, \
  1609.         0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d
  1610.  
  1611. rcon    dd \
  1612.         0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x10000000, \
  1613.         0x20000000, 0x40000000, 0x80000000, 0x1B000000, 0x36000000
  1614.  
  1615. endg