Subversion Repositories Kolibri OS

Rev

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