linux/crypto/rmd256.c
<<
2ti42ti42tp/spa 2tpspa class="lxr_search">2ti4 ="+search" method="post" onsubmit="return do_search(this);">2ti42ti42ti4Search2ti42tp/spa i4 ="ajax+*" method="post" onsubmit="return false;">2tpinput typ"v4hidden" nam"v4ajax_lookup" idv4ajax_lookup" lue="v4">2i4
pdiv idv4file_contents"
o o1p/a>pspa
 class="comment">/*p/spa
  o o2p/a>pspa
 class="comment"> * Cryptographic API.p/spa
  o o3p/a>pspa
 class="comment"> *p/spa
  o o4p/a>pspa
 class="comment"> * RIPEMD-256 - RACE IntegrityoPrimitives Elue=aon vaMessage Digest.p/spa
  o o5p/a>pspa
 class="comment"> *p/spa
  o o6p/a>pspa
 class="comment"> * Based  vathe reference implementaon vaby Anto vaBosselaers, ESAT-COSICp/spa
  o o7p/a>pspa
 class="comment"> *p/spa
  o o8p/a>pspa
 class="comment"> * Copyright (c) 2008 Adrian-Ken Rueegsegger <ken@codelabs.ch>p/spa
  o o9p/a>pspa
 class="comment"> *p/spa
  o >
  a>pspa
 class="comment"> * This program is free software; you ca
 redistribute it and/or modify itp/spa
  o 11p/a>pspa
 class="comment"> * under the terms of the GNU General Public License as published by the Freep/spa
  o 12p/a>pspa
 class="comment"> * Software Foundaon v; either versn va2 of the License, or (at your .ion>
)p/spa
  o 13p/a>pspa
 class="comment"> * any later versn v.p/spa
  o 14p/a>pspa
 class="comment"> *p/spa
  o 15p/a>pspa
 class="comment"> */p/spa
  o 16p/a>#include <crypto/internal/hash.hp/a>> o 17p/a>#include <linux/init.hp/a>> o 18p/a>#include <linux/module.hp/a>> o 19p/a>#include <linux/mm.hp/a>> o 20p/a>#include <linux/typ"s.hp/a>> o 21p/a>#include <asm/byteorder.hp/a>> o 22p/a> o 23p/a>#include "ripemd.hp/a>" o 24p/a> o 25p/a>structopa href="+code=rmd256_ctx" class="sref">rmd256_ctxp/a> { o 26p/a>        pa href="+code=u64" class="sref">u64p/a> pa href="+code=byte_count" class="sref">byte_countp/a>; o 27p/a>        pa href="+code=u32" class="sref">u32p/a> pa href="+code=state" class="sref">statep/a>[8]; o 28p/a>        pa href="+code=__le32" class="sref">__le32p/a> pa href="+code=buffer" class="sref">bufferp/a>[16]; o 29p/a>}; o 30p/a> o 31p/a>#define pa href="+code=K1" class="sref">K1p/a>  pa href="+code=RMD_K1" class="sref">RMD_K1p/a> o 32p/a>#define pa href="+code=K2" class="sref">K2p/a>  pa href="+code=RMD_K2" class="sref">RMD_K2p/a> o 33p/a>#define pa href="+code=K3" class="sref">K3p/a>  pa href="+code=RMD_K3" class="sref">RMD_K3p/a> o 34p/a>#define pa href="+code=K4" class="sref">K4p/a>  pa href="+code=RMD_K4" class="sref">RMD_K4p/a> o 35p/a>#define pa href="+code=KK1" class="sref">KK1p/a> pa href="+code=RMD_K6" class="sref">RMD_K6p/a> o 36p/a>#define pa href="+code=KK2" class="sref">KK2p/a> pa href="+code=RMD_K7" class="sref">RMD_K7p/a> o 37p/a>#define pa href="+code=KK3" class="sref">KK3p/a> pa href="+code=RMD_K8" class="sref">RMD_K8p/a> o 38p/a>#define pa href="+code=KK4" class="sref">KK4p/a> pa href="+code=RMD_K1" class="sref">RMD_K1p/a> o 39p/a> o 40p/a>#define pa href="+code=F1" class="sref">F1p/a>(pa href="+code=x" class="sref">xp/a>, pa href="+code=y" class="sref">yp/a>, pa href="+code=z" class="sref">zp/a>) (pa href="+code=x" class="sref">xp/a> ^ pa href="+code=y" class="sref">yp/a> ^ pa href="+code=z" class="sref">zp/a>)         pspa
 class="comment">/* XOR */p/spa
  o 41p/a>#define pa href="+code=F2" class="sref">F2p/a>(pa href="+code=x" class="sref">xp/a>, pa href="+code=y" class="sref">yp/a>, pa href="+code=z" class="sref">zp/a>) (pa href="+code=z" class="sref">zp/a> ^ (pa href="+code=x" class="sref">xp/a> & (pa href="+code=y" class="sref">yp/a> ^ pa href="+code=z" class="sref">zp/a>))) pspa
 class="comment">/* x ? y : z */p/spa
  o 42p/a>#define pa href="+code=F3" class="sref">F3p/a>(pa href="+code=x" class="sref">xp/a>, pa href="+code=y" class="sref">yp/a>, pa href="+code=z" class="sref">zp/a>) ((pa href="+code=x" class="sref">xp/a> | ~pa href="+code=y" class="sref">yp/a>) ^ pa href="+code=z" class="sref">zp/a>) o 43p/a>#define pa href="+code=F4" class="sref">F4p/a>(pa href="+code=x" class="sref">xp/a>, pa href="+code=y" class="sref">yp/a>, pa href="+code=z" class="sref">zp/a>) (pa href="+code=y" class="sref">yp/a> ^ (pa href="+code=z" class="sref">zp/a> & (pa href="+code=x" class="sref">xp/a> ^ pa href="+code=y" class="sref">yp/a>))) pspa
 class="comment">/* z ? x : y */p/spa
  o 44p/a> o 45p/a>#define pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=a" class="sref">ap/a>, pa href="+code=b" class="sref">bp/a>, pa href="+code=c" class="sref">cp/a>, pa href="+code=d" class="sref">dp/a>, pa href="+code=f" class="sref">fp/a>, pa href="+code=k" class="sref">kp/a>, pa href="+code=x" class="sref">xp/a>, pa href="+code=s" class="sref">sp/a>)  { \ o 46p/a>        (pa href="+code=a" class="sref">ap/a>) += pa href="+code=f" class="sref">fp/a>((pa href="+code=b" class="sref">bp/a>), (pa href="+code=c" class="sref">cp/a>), (pa href="+code=d" class="sref">dp/a>)) + pa href="+code=le32_to_cpup" class="sref">le32_to_cpupp/a>(&(pa href="+code=x" class="sref">xp/a>)) + (pa href="+code=k" class="sref">kp/a>); \ o 47p/a>        (pa href="+code=a" class="sref">ap/a>) = pa href="+code=rol32" class="sref">rol32p/a>((pa href="+code=a" class="sref">ap/a>), (pa href="+code=s" class="sref">sp/a>)); \ o 48p/a>} o 49p/a> o 50p/a>static voidopa href="+code=rmd256_transform" class="sref">rmd256_transformp/a>(pa href="+code=u32" class="sref">u32p/a> *pa href="+code=state" class="sref">statep/a>, constopa href="+code=__le32" class="sref">__le32p/a> *pa href="+code=in" class="sref">inp/a>) o 51p/a>{ o 52p/a>        pa href="+code=u32" class="sref">u32p/a> pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=tmp" class="sref">tmpp/a>; o 53p/a> o 54p/a>        pspa
 class="comment">/* Initialize left lane */p/spa
  o 55p/a>        pa href="+code=aa" class="sref">aap/a> = pa href="+code=state" class="sref">statep/a>[0]; o 56p/a>        pa href="+code=bb" class="sref">bbp/a> = pa href="+code=state" class="sref">statep/a>[1]; o 57p/a>        pa href="+code=cc" class="sref">ccp/a> = pa href="+code=state" class="sref">statep/a>[2]; o 58p/a>        pa href="+code=dd" class="sref">ddp/a> = pa href="+code=state" class="sref">statep/a>[3]; o 59p/a> o 60p/a>        pspa
 class="comment">/* Initialize right lane */p/spa
  o 61p/a>        pa href="+code=aaa" class="sref">aaap/a> = pa href="+code=state" class="sref">statep/a>[4]; o 62p/a>        pa href="+code=bbb" class="sref">bbbp/a> = pa href="+code=state" class="sref">statep/a>[5]; o 63p/a>        pa href="+code=ccc" class="sref">cccp/a> = pa href="+code=state" class="sref">statep/a>[6]; o 64p/a>        pa href="+code=ddd" class="sref">dddp/a> = pa href="+code=state" class="sref">statep/a>[7]; o 65p/a> o 66p/a>        pspa
 class="comment">/* round 1: left lane */p/spa
  o 67p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=K1" class="sref">K1p/a>, pa href="+code=in" class="sref">inp/a>[0],o 11); o 68p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=K1" class="sref">K1p/a>, pa href="+code=in" class="sref">inp/a>[1],o 14); o 69p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=K1" class="sref">K1p/a>, pa href="+code=in" class="sref">inp/a>[2],o 15); o 70p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=K1" class="sref">K1p/a>, pa href="+code=in" class="sref">inp/a>[3],o 12); o 71p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=K1" class="sref">K1p/a>, pa href="+code=in" class="sref">inp/a>[4],o  5); o 72p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=K1" class="sref">K1p/a>, pa href="+code=in" class="sref">inp/a>[5],o  8); o 73p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=K1" class="sref">K1p/a>, pa href="+code=in" class="sref">inp/a>[6],o  7); o 74p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=K1" class="sref">K1p/a>, pa href="+code=in" class="sref">inp/a>[7],o  9); o 75p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=K1" class="sref">K1p/a>, pa href="+code=in" class="sref">inp/a>[8],o 11); o 76p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=K1" class="sref">K1p/a>, pa href="+code=in" class="sref">inp/a>[9],o 13); o 77p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=K1" class="sref">K1p/a>, pa href="+code=in" class="sref">inp/a>[10],o14); o 78p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=K1" class="sref">K1p/a>, pa href="+code=in" class="sref">inp/a>[11],o15); o 79p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=K1" class="sref">K1p/a>, pa href="+code=in" class="sref">inp/a>[12],o 6); o 80p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=K1" class="sref">K1p/a>, pa href="+code=in" class="sref">inp/a>[13],o 7); o 81p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=K1" class="sref">K1p/a>, pa href="+code=in" class="sref">inp/a>[14],o 9); o 82p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=K1" class="sref">K1p/a>, pa href="+code=in" class="sref">inp/a>[15],o 8); o 83p/a> o 84p/a>        pspa
 class="comment">/* round 1: right lane */p/spa
  o 85p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=KK1" class="sref">KK1p/a>, pa href="+code=in" class="sref">inp/a>[5],o  8); o 86p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=KK1" class="sref">KK1p/a>, pa href="+code=in" class="sref">inp/a>[14],o 9); o 87p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=KK1" class="sref">KK1p/a>, pa href="+code=in" class="sref">inp/a>[7],o  9); o 88p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=KK1" class="sref">KK1p/a>, pa href="+code=in" class="sref">inp/a>[0],o 11); o 89p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=KK1" class="sref">KK1p/a>, pa href="+code=in" class="sref">inp/a>[9],o 13); o 90p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=KK1" class="sref">KK1p/a>, pa href="+code=in" class="sref">inp/a>[2],o 15); o 91p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=KK1" class="sref">KK1p/a>, pa href="+code=in" class="sref">inp/a>[11],o15); o 92p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=KK1" class="sref">KK1p/a>, pa href="+code=in" class="sref">inp/a>[4],o  5); o 93p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=KK1" class="sref">KK1p/a>, pa href="+code=in" class="sref">inp/a>[13],o 7); o 94p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=KK1" class="sref">KK1p/a>, pa href="+code=in" class="sref">inp/a>[6],o  7); o 95p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=KK1" class="sref">KK1p/a>, pa href="+code=in" class="sref">inp/a>[15],o 8); o 96p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=KK1" class="sref">KK1p/a>, pa href="+code=in" class="sref">inp/a>[8],o 11); o 97p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=KK1" class="sref">KK1p/a>, pa href="+code=in" class="sref">inp/a>[1],o 14); o 98p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=KK1" class="sref">KK1p/a>, pa href="+code=in" class="sref">inp/a>[10],o14); o 99p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=KK1" class="sref">KK1p/a>, pa href="+code=in" class="sref">inp/a>[3],o 12); o100p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=KK1" class="sref">KK1p/a>, pa href="+code=in" class="sref">inp/a>[12],o 6); o101p/a> o102p/a>        pspa
 class="comment">/* Swap contents of "a" registers */p/spa
  o103p/a>        pa href="+code=tmp" class="sref">tmpp/a> = pa href="+code=aa" class="sref">aap/a>; pa href="+code=aa" class="sref">aap/a> = pa href="+code=aaa" class="sref">aaap/a>; pa href="+code=aaa" class="sref">aaap/a> = pa href="+code=tmp" class="sref">tmpp/a>; o104p/a> o105p/a>        pspa
 class="comment">/* round 2: left lane */p/spa
  o106p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=K2" class="sref">K2p/a>, pa href="+code=in" class="sref">inp/a>[7],o  7); o107p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=K2" class="sref">K2p/a>, pa href="+code=in" class="sref">inp/a>[4],o  6); o108p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=K2" class="sref">K2p/a>, pa href="+code=in" class="sref">inp/a>[13],o 8); o109p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=K2" class="sref">K2p/a>, pa href="+code=in" class="sref">inp/a>[1],o 13); o110p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=K2" class="sref">K2p/a>, pa href="+code=in" class="sref">inp/a>[10],o11); o111p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=K2" class="sref">K2p/a>, pa href="+code=in" class="sref">inp/a>[6],o  9); o112p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=K2" class="sref">K2p/a>, pa href="+code=in" class="sref">inp/a>[15],o 7); o113p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=K2" class="sref">K2p/a>, pa href="+code=in" class="sref">inp/a>[3],o 15); o114p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=K2" class="sref">K2p/a>, pa href="+code=in" class="sref">inp/a>[12],o 7); o115p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=K2" class="sref">K2p/a>, pa href="+code=in" class="sref">inp/a>[0],o 12); o116p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=K2" class="sref">K2p/a>, pa href="+code=in" class="sref">inp/a>[9],o 15); o117p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=K2" class="sref">K2p/a>, pa href="+code=in" class="sref">inp/a>[5],o  9); o118p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=K2" class="sref">K2p/a>, pa href="+code=in" class="sref">inp/a>[2],o 11); o119p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=K2" class="sref">K2p/a>, pa href="+code=in" class="sref">inp/a>[14],o 7); o120p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=K2" class="sref">K2p/a>, pa href="+code=in" class="sref">inp/a>[11],o13); o121p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=K2" class="sref">K2p/a>, pa href="+code=in" class="sref">inp/a>[8],o 12); o122p/a> o123p/a>        pspa
 class="comment">/* round 2: right lane */p/spa
  o124p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=KK2" class="sref">KK2p/a>, pa href="+code=in" class="sref">inp/a>[6],o  9); o125p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=KK2" class="sref">KK2p/a>, pa href="+code=in" class="sref">inp/a>[11],o13); o126p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=KK2" class="sref">KK2p/a>, pa href="+code=in" class="sref">inp/a>[3],o 15); o127p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=KK2" class="sref">KK2p/a>, pa href="+code=in" class="sref">inp/a>[7],o  7); o128p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=KK2" class="sref">KK2p/a>, pa href="+code=in" class="sref">inp/a>[0],o 12); o129p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=KK2" class="sref">KK2p/a>, pa href="+code=in" class="sref">inp/a>[13],o 8); o130p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=KK2" class="sref">KK2p/a>, pa href="+code=in" class="sref">inp/a>[5],o  9); o131p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=KK2" class="sref">KK2p/a>, pa href="+code=in" class="sref">inp/a>[10],o11); o132p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=KK2" class="sref">KK2p/a>, pa href="+code=in" class="sref">inp/a>[14],o 7); o133p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=KK2" class="sref">KK2p/a>, pa href="+code=in" class="sref">inp/a>[15],o 7); o134p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=KK2" class="sref">KK2p/a>, pa href="+code=in" class="sref">inp/a>[8],o 12); o135p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=KK2" class="sref">KK2p/a>, pa href="+code=in" class="sref">inp/a>[12],o 7); o136p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=KK2" class="sref">KK2p/a>, pa href="+code=in" class="sref">inp/a>[4],o  6); o137p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=KK2" class="sref">KK2p/a>, pa href="+code=in" class="sref">inp/a>[9],o 15); o138p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=KK2" class="sref">KK2p/a>, pa href="+code=in" class="sref">inp/a>[1],o 13); o139p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=KK2" class="sref">KK2p/a>, pa href="+code=in" class="sref">inp/a>[2],o 11); o140p/a> o141p/a>        pspa
 class="comment">/* Swap contents of "b" registers */p/spa
  o142p/a>        pa href="+code=tmp" class="sref">tmpp/a> = pa href="+code=bb" class="sref">bbp/a>; pa href="+code=bb" class="sref">bbp/a> = pa href="+code=bbb" class="sref">bbbp/a>; pa href="+code=bbb" class="sref">bbbp/a> = pa href="+code=tmp" class="sref">tmpp/a>; o143p/a> o144p/a>        pspa
 class="comment">/* round 3: left lane */p/spa
  o145p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=K3" class="sref">K3p/a>, pa href="+code=in" class="sref">inp/a>[3],o 11); o146p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=K3" class="sref">K3p/a>, pa href="+code=in" class="sref">inp/a>[10],o13); o147p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=K3" class="sref">K3p/a>, pa href="+code=in" class="sref">inp/a>[14],o 6); o148p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=K3" class="sref">K3p/a>, pa href="+code=in" class="sref">inp/a>[4],o  7); o149p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=K3" class="sref">K3p/a>, pa href="+code=in" class="sref">inp/a>[9],o 14); o150p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=K3" class="sref">K3p/a>, pa href="+code=in" class="sref">inp/a>[15],o 9); o151p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=K3" class="sref">K3p/a>, pa href="+code=in" class="sref">inp/a>[8],o 13); o152p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=K3" class="sref">K3p/a>, pa href="+code=in" class="sref">inp/a>[1],o 15); o153p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=K3" class="sref">K3p/a>, pa href="+code=in" class="sref">inp/a>[2],o 14); o154p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=K3" class="sref">K3p/a>, pa href="+code=in" class="sref">inp/a>[7],o  8); o155p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=K3" class="sref">K3p/a>, pa href="+code=in" class="sref">inp/a>[0],o 13); o156p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=K3" class="sref">K3p/a>, pa href="+code=in" class="sref">inp/a>[6],o  6); o157p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=K3" class="sref">K3p/a>, pa href="+code=in" class="sref">inp/a>[13],o 5); o158p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=K3" class="sref">K3p/a>, pa href="+code=in" class="sref">inp/a>[11],o12); o159p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=K3" class="sref">K3p/a>, pa href="+code=in" class="sref">inp/a>[5],o  7); o160p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=F3" class="sref">F3p/a>, pa href="+code=K3" class="sref">K3p/a>, pa href="+code=in" class="sref">inp/a>[12],o 5); o161p/a> o162p/a>        pspa
 class="comment">/* round 3: right lane */p/spa
  o163p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=KK3" class="sref">KK3p/a>, pa href="+code=in" class="sref">inp/a>[15],o 9); o164p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=KK3" class="sref">KK3p/a>, pa href="+code=in" class="sref">inp/a>[5],o  7); o165p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=KK3" class="sref">KK3p/a>, pa href="+code=in" class="sref">inp/a>[1],o 15); o166p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=KK3" class="sref">KK3p/a>, pa href="+code=in" class="sref">inp/a>[3],o 11); o167p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=KK3" class="sref">KK3p/a>, pa href="+code=in" class="sref">inp/a>[7],o  8); o168p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=KK3" class="sref">KK3p/a>, pa href="+code=in" class="sref">inp/a>[14],o 6); o169p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=KK3" class="sref">KK3p/a>, pa href="+code=in" class="sref">inp/a>[6],o  6); o170p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=KK3" class="sref">KK3p/a>, pa href="+code=in" class="sref">inp/a>[9],o 14); o171p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=KK3" class="sref">KK3p/a>, pa href="+code=in" class="sref">inp/a>[11],o12); o172p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=KK3" class="sref">KK3p/a>, pa href="+code=in" class="sref">inp/a>[8],o 13); o173p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=KK3" class="sref">KK3p/a>, pa href="+code=in" class="sref">inp/a>[12],o 5); o174p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=KK3" class="sref">KK3p/a>, pa href="+code=in" class="sref">inp/a>[2],o 14); o175p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=KK3" class="sref">KK3p/a>, pa href="+code=in" class="sref">inp/a>[10],o13); o176p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=KK3" class="sref">KK3p/a>, pa href="+code=in" class="sref">inp/a>[0],o 13); o177p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=KK3" class="sref">KK3p/a>, pa href="+code=in" class="sref">inp/a>[4],o  7); o178p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=F2" class="sref">F2p/a>, pa href="+code=KK3" class="sref">KK3p/a>, pa href="+code=in" class="sref">inp/a>[13],o 5); o179p/a> o180p/a>        pspa
 class="comment">/* Swap contents of "c" registers */p/spa
  o181p/a>        pa href="+code=tmp" class="sref">tmpp/a> = pa href="+code=cc" class="sref">ccp/a>; pa href="+code=cc" class="sref">ccp/a> = pa href="+code=ccc" class="sref">cccp/a>; pa href="+code=ccc" class="sref">cccp/a> = pa href="+code=tmp" class="sref">tmpp/a>; o182p/a> o183p/a>        pspa
 class="comment">/* round 4: left lane */p/spa
  o184p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=K4" class="sref">K4p/a>, pa href="+code=in" class="sref">inp/a>[1],o 11); o185p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=K4" class="sref">K4p/a>, pa href="+code=in" class="sref">inp/a>[9],o 12); o186p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=K4" class="sref">K4p/a>, pa href="+code=in" class="sref">inp/a>[11],o14); o187p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=K4" class="sref">K4p/a>, pa href="+code=in" class="sref">inp/a>[10],o15); o188p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=K4" class="sref">K4p/a>, pa href="+code=in" class="sref">inp/a>[0],o 14); o189p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=K4" class="sref">K4p/a>, pa href="+code=in" class="sref">inp/a>[8],o 15); o190p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=K4" class="sref">K4p/a>, pa href="+code=in" class="sref">inp/a>[12],o 9); o191p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=K4" class="sref">K4p/a>, pa href="+code=in" class="sref">inp/a>[4],o  8); o192p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=K4" class="sref">K4p/a>, pa href="+code=in" class="sref">inp/a>[13],o 9); o193p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=K4" class="sref">K4p/a>, pa href="+code=in" class="sref">inp/a>[3],o 14); o194p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=K4" class="sref">K4p/a>, pa href="+code=in" class="sref">inp/a>[7],o  5); o195p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=K4" class="sref">K4p/a>, pa href="+code=in" class="sref">inp/a>[15],o 6); o196p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=K4" class="sref">K4p/a>, pa href="+code=in" class="sref">inp/a>[14],o 8); o197p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=K4" class="sref">K4p/a>, pa href="+code=in" class="sref">inp/a>[5],o  6); o198p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=bb" class="sref">bbp/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=K4" class="sref">K4p/a>, pa href="+code=in" class="sref">inp/a>[6],o  5); o199p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bb" class="sref">bbp/a>, pa href="+code=cc" class="sref">ccp/a>, pa href="+code=dd" class="sref">ddp/a>, pa href="+code=aa" class="sref">aap/a>, pa href="+code=F4" class="sref">F4p/a>, pa href="+code=K4" class="sref">K4p/a>, pa href="+code=in" class="sref">inp/a>[2],o 12);  200p/a>  201p/a>        pspa
 class="comment">/* round 4: right lane */p/spa
   202p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=KK4" class="sref">KK4p/a>, pa href="+code=in" class="sref">inp/a>[8],o 15);  203p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=KK4" class="sref">KK4p/a>, pa href="+code=in" class="sref">inp/a>[6],o  5);  204p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=KK4" class="sref">KK4p/a>, pa href="+code=in" class="sref">inp/a>[4],o  8);  205p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=KK4" class="sref">KK4p/a>, pa href="+code=in" class="sref">inp/a>[1],o 11);  206p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=KK4" class="sref">KK4p/a>, pa href="+code=in" class="sref">inp/a>[3],o 14);  207p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=KK4" class="sref">KK4p/a>, pa href="+code=in" class="sref">inp/a>[11],o14);  208p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=KK4" class="sref">KK4p/a>, pa href="+code=in" class="sref">inp/a>[15],o 6);  209p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=KK4" class="sref">KK4p/a>, pa href="+code=in" class="sref">inp/a>[0],o 14);  210p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=KK4" class="sref">KK4p/a>, pa href="+code=in" class="sref">inp/a>[5],o  6);  211p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=KK4" class="sref">KK4p/a>, pa href="+code=in" class="sref">inp/a>[12],o 9);  212p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=KK4" class="sref">KK4p/a>, pa href="+code=in" class="sref">inp/a>[2],o 12);  213p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=KK4" class="sref">KK4p/a>, pa href="+code=in" class="sref">inp/a>[13],o 9);  214p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=KK4" class="sref">KK4p/a>, pa href="+code=in" class="sref">inp/a>[9],o 12);  215p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=KK4" class="sref">KK4p/a>, pa href="+code=in" class="sref">inp/a>[7],o  5);  216p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=KK4" class="sref">KK4p/a>, pa href="+code=in" class="sref">inp/a>[10],o15);  217p/a>        pa href="+code=ROUND" class="sref">ROUNDp/a>(pa href="+code=bbb" class="sref">bbbp/a>, pa href="+code=ccc" class="sref">cccp/a>, pa href="+code=ddd" class="sref">dddp/a>, pa href="+code=aaa" class="sref">aaap/a>, pa href="+code=F1" class="sref">F1p/a>, pa href="+code=KK4" class="sref">KK4p/a>, pa href="+code=in" class="sref">inp/a>[14],o 8);  218p/a>  219p/a>        pspa
 class="comment">/* Swap contents of "d" registers */p/spa
   220p/a>        pa href="+code=tmp" class="sref">tmpp/a> = pa href="+code=dd" class="sref">ddp/a>; pa href="+code=dd" class="sref">ddp/a> = pa href="+code=ddd" class="sref">dddp/a>; pa href="+code=ddd" class="sref">dddp/a> = pa href="+code=tmp" class="sref">tmpp/a>;  221p/a>  222p/a>        pspa
 class="comment">/* combine results */p/spa
   223p/a>        pa href="+code=state" class="sref">statep/a>[0] += pa href="+code=aa" class="sref">aap/a>;  224p/a>        pa href="+code=state" class="sref">statep/a>[1] += pa href="+code=bb" class="sref">bbp/a>;  225p/a>        pa href="+code=state" class="sref">statep/a>[2] += pa href="+code=cc" class="sref">ccp/a>;  226p/a>        pa href="+code=state" class="sref">statep/a>[3] += pa href="+code=dd" class="sref">ddp/a>;  227p/a>        pa href="+code=state" class="sref">statep/a>[4] += pa href="+code=aaa" class="sref">aaap/a>;  228p/a>        pa href="+code=state" class="sref">statep/a>[5] += pa href="+code=bbb" class="sref">bbbp/a>;  229p/a>        pa href="+code=state" class="sref">statep/a>[6] += pa href="+code=ccc" class="sref">cccp/a>;  230p/a>        pa href="+code=state" class="sref">statep/a>[7] += pa href="+code=ddd" class="sref">dddp/a>;  231p/a>  232p/a>        return;  233p/a>}  234p/a>  235p/a>static int pa href="+code=rmd256_init" class="sref">rmd256_initp/a>(struct pa href="+code=shash_desc" class="sref">shash_descp/a> *pa href="+code=desc" class="sref">descp/a>)  236p/a>{  237p/a>        struct pa href="+code=rmd256_ctx" class="sref">rmd256_ctxp/a> *pa href="+code=rctx" class="sref">rctxp/a> = pa href="+code=shash_desc_ctx" class="sref">shash_desc_ctxp/a>(pa href="+code=desc" class="sref">descp/a>);  238p/a>  239p/a>        pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=byte_count" class="sref">byte_countp/a> = 0; o240p/a> o241p/a>        pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=state" class="sref">statep/a>[0] = pa href="+code=RMD_H0" class="sref">RMD_H0p/a>; o242p/a>        pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=state" class="sref">statep/a>[1] = pa href="+code=RMD_H1" class="sref">RMD_H1p/a>; o243p/a>        pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=state" class="sref">statep/a>[2] = pa href="+code=RMD_H2" class="sref">RMD_H2p/a>; o244p/a>        pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=state" class="sref">statep/a>[3] = pa href="+code=RMD_H3" class="sref">RMD_H3p/a>; o245p/a>        pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=state" class="sref">statep/a>[4] = pa href="+code=RMD_H5" class="sref">RMD_H5p/a>; o246p/a>        pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=state" class="sref">statep/a>[5] = pa href="+code=RMD_H6" class="sref">RMD_H6p/a>; o247p/a>        pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=state" class="sref">statep/a>[6] = pa href="+code=RMD_H7" class="sref">RMD_H7p/a>; o248p/a>        pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=state" class="sref">statep/a>[7] = pa href="+code=RMD_H8" class="sref">RMD_H8p/a>; o249p/a> o250p/a>        pa href="+code=memset" class="sref">memsetp/a>(pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=buffer" class="sref">bufferp/a>, 0, sizeof(pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=buffer" class="sref">bufferp/a>)); o251p/a> o252p/a>        return 0; o253p/a>} o254p/a> o255p/a>static int pa href="+code=rmd256_update" class="sref">rmd256_updatep/a>(struct pa href="+code=shash_desc" class="sref">shash_descp/a> *pa href="+code=desc" class="sref">descp/a>, const pa href="+code=u8" class="sref">u8p/a> *pa href="+code=data" class="sref">datap/a>, o256p/a>                         unsigned int pa href="+code=len" class="sref">lenp/a>) o257p/a>{ o258p/a>        struct pa href="+code=rmd256_ctx" class="sref">rmd256_ctxp/a> *pa href="+code=rctx" class="sref">rctxp/a> = pa href="+code=shash_desc_ctx" class="sref">shash_desc_ctxp/a>(pa href="+code=desc" class="sref">descp/a>); o259p/a>        const pa href="+code=u32" class="sref">u32p/a> pa href="+code=avail" class="sref">availp/a> = sizeof(pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=buffer" class="sref">bufferp/a>) - (pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=byte_count" class="sref">byte_countp/a> & 0x3f); o260p/a> o261p/a>        pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=byte_count" class="sref">byte_countp/a> += pa href="+code=len" class="sref">lenp/a>; o262p/a> o263p/a>        pspa
 class="comment">/* Enough space in buffer? If so copy and we're done */p/spa
  o264p/a>        if (pa href="+code=avail" class="sref">availp/a> > pa href="+code=len" class="sref">lenp/a>) { o265p/a>                pa href="+code=memcpy" class="sref">memcpyp/a>((char *)pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=buffer" class="sref">bufferp/a> + (sizeof(pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=buffer" class="sref">bufferp/a>) - pa href="+code=avail" class="sref">availp/a>), o266p/a>                       pa href="+code=data" class="sref">datap/a>, pa href="+code=len" class="sref">lenp/a>); o267p/a>                goto pa href="+code=out" class="sref">outp/a>; o268p/a>        } o269p/a> o270p/a>        pa href="+code=memcpy" class="sref">memcpyp/a>((char *)pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=buffer" class="sref">bufferp/a> + (sizeof(pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=buffer" class="sref">bufferp/a>) - pa href="+code=avail" class="sref">availp/a>), o271p/a>               pa href="+code=data" class="sref">datap/a>, pa href="+code=avail" class="sref">availp/a>); o272p/a> o273p/a>        pa href="+code=rmd256_transform" class="sref">rmd256_transformp/a>(pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=state" class="sref">statep/a>, pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=buffer" class="sref">bufferp/a>); o274p/a>        pa href="+code=data" class="sref">datap/a> += pa href="+code=avail" class="sref">availp/a>; o275p/a>        pa href="+code=len" class="sref">lenp/a> -= pa href="+code=avail" class="sref">availp/a>; o276p/a> o277p/a>        while (pa href="+code=len" class="sref">lenp/a> >= sizeof(pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=buffer" class="sref">bufferp/a>)) { o278p/a>                pa href="+code=memcpy" class="sref">memcpyp/a>(pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=buffer" class="sref">bufferp/a>, pa href="+code=data" class="sref">datap/a>, sizeof(pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=buffer" class="sref">bufferp/a>)); o279p/a>                pa href="+code=rmd256_transform" class="sref">rmd256_transformp/a>(pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=state" class="sref">statep/a>, pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=buffer" class="sref">bufferp/a>); o280p/a>                pa href="+code=data" class="sref">datap/a> += sizeof(pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=buffer" class="sref">bufferp/a>); o281p/a>                pa href="+code=len" class="sref">lenp/a> -= sizeof(pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=buffer" class="sref">bufferp/a>); o282p/a>        } o283p/a> o284p/a>        pa href="+code=memcpy" class="sref">memcpyp/a>(pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=buffer" class="sref">bufferp/a>, pa href="+code=data" class="sref">datap/a>, pa href="+code=len" class="sref">lenp/a>); o285p/a> o286p/a>pa href="+code=out" class="sref">outp/a>: o287p/a>        return 0; o288p/a>} o289p/a> o290p/a>pspa
 class="comment">/* Add padding and return the message digest. */p/spa
  o291p/a>static int pa href="+code=rmd256_final" class="sref">rmd256_finalp/a>(struct pa href="+code=shash_desc" class="sref">shash_descp/a> *pa href="+code=desc" class="sref">descp/a>, pa href="+code=u8" class="sref">u8p/a> *pa href="+code=out" class="sref">outp/a>) o292p/a>{ o293p/a>        struct pa href="+code=rmd256_ctx" class="sref">rmd256_ctxp/a> *pa href="+code=rctx" class="sref">rctxp/a> = pa href="+code=shash_desc_ctx" class="sref">shash_desc_ctxp/a>(pa href="+code=desc" class="sref">descp/a>); o294p/a>        pa href="+code=u32" class="sref">u32p/a> pa href="+code=i" class="sref">ip/a>, pa href="+code=index" class="sref">indexp/a>, pa href="+code=padlen" class="sref">padlenp/a>; o295p/a>        pa href="+code=__le64" class="sref">__le64p/a> pa href="+code=bits" class="sref">bitsp/a>; o296p/a>        pa href="+code=__le32" class="sref">__le32p/a> *pa href="+code=dst" class="sref">dstp/a> = (pa href="+code=__le32" class="sref">__le32p/a> *)pa href="+code=out" class="sref">outp/a>; o297p/a>        static const pa href="+code=u8" class="sref">u8p/a> pa href="+code=padding" class="sref">paddingp/a>[64] = { 0x80, }; o298p/a> o299p/a>        pa href="+code=bits" class="sref">bitsp/a> = pa href="+code=cpu_to_le64" class="sref">cpu_to_le64p/a>(pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=byte_count" class="sref">byte_countp/a> << 3);  300p/a>  301p/a>        pspa
 class="comment">/* Pad out to 56 mod 64 */p/spa
   302p/a>        pa href="+code=index" class="sref">indexp/a> = pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=byte_count" class="sref">byte_countp/a> & 0x3f;  303p/a>        pa href="+code=padlen" class="sref">padlenp/a> = (pa href="+code=index" class="sref">indexp/a> < 56) ? (56 - pa href="+code=index" class="sref">indexp/a>) : ((64+56) - pa href="+code=index" class="sref">indexp/a>);  304p/a>        pa href="+code=rmd256_update" class="sref">rmd256_updatep/a>(pa href="+code=desc" class="sref">descp/a>, pa href="+code=padding" class="sref">paddingp/a>, pa href="+code=padlen" class="sref">padlenp/a>);  305p/a>  306p/a>        pspa
 class="comment">/* Append length */p/spa
   307p/a>        pa href="+code=rmd256_update" class="sref">rmd256_updatep/a>(pa href="+code=desc" class="sref">descp/a>, (const pa href="+code=u8" class="sref">u8p/a> *)&pa href="+code=bits" class="sref">bitsp/a>, sizeof(pa href="+code=bits" class="sref">bitsp/a>));  308p/a>  309p/a>        pspa
 class="comment">/* Store state in digest */p/spa
   310p/a>        for (pa href="+code=i" class="sref">ip/a> = 0; pa href="+code=i" class="sref">ip/a> < 8; pa href="+code=i" class="sref">ip/a>++)  311p/a>                pa href="+code=dst" class="sref">dstp/a>[pa href="+code=i" class="sref">ip/a>] = pa href="+code=cpu_to_le32p" class="sref">cpu_to_le32pp/a>(&pa href="+code=rctx" class="sref">rctxp/a>->pa href="+code=state" class="sref">statep/a>[pa href="+code=i" class="sref">ip/a>]);  312p/a>  313p/a>        pspa
 class="comment">/* Wipe context */p/spa
   314p/a>        pa href="+code=memset" class="sref">memsetp/a>(pa href="+code=rctx" class="sref">rctxp/a>, 0, sizeof(*pa href="+code=rctx" class="sref">rctxp/a>));  315p/a>  316p/a>        return 0;  317p/a>}  318p/a>  319p/a>static struct pa href="+code=shash_alg" class="sref">shash_algp/a> pa href="+code=alg" class="sref">algp/a> = {  320p/a>        .pa href="+code=digestsize" class="sref">digestsizep/a>     =       pa href="+code=RMD256_DIGEST_SIZE" class="sref">RMD256_DIGEST_SIZEp/a>,  321p/a>        .pa href="+code=init" class="sref">initp/a>           =       pa href="+code=rmd256_init" class="sref">rmd256_initp/a>,  322p/a>        .pa href="+code=update" class="sref">updatep/a>         =       pa href="+code=rmd256_update" class="sref">rmd256_updatep/a>,  323p/a>        .pa href="+code=final" class="sref">finalp/a>          =       pa href="+code=rmd256_final" class="sref">rmd256_finalp/a>,  324p/a>        .pa href="+code=descsize" class="sref">descsizep/a>       =       sizeof(struct pa href="+code=rmd256_ctx" class="sref">rmd256_ctxp/a>),  325p/a>        .pa href="+code=base" class="sref">basep/a>           =       {  326p/a>                .pa href="+code=cra_nam"" class="sref">cra_nam"p/a>        =      pspa
 class="string">"rmd256"p/spa
 ,  327p/a>                .pa href="+code=cra_flags" class="sref">cra_flagsp/a>       =      pa href="+code=CRYPTO_ALG_TYPE_SHASH" class="sref">CRYPTO_ALG_TYPE_SHASHp/a>,  328p/a>                .pa href="+code=cra_blocksize" class="sref">cra_blocksizep/a>   =      pa href="+code=RMD256_BLOCK_SIZE" class="sref">RMD256_BLOCK_SIZEp/a>,  329p/a>                .pa href="+code=cra_module" class="sref">cra_modulep/a>      =      pa href="+code=THIS_MODULE" class="sref">THIS_MODULEp/a>,  330p/a>        }  331p/a>};  332p/a>  333p/a>static int pa href="+code=__init" class="sref">__initp/a> pa href="+code=rmd256_mod_init" class="sref">rmd256_mod_initp/a>(void)  334p/a>{  335p/a>        return pa href="+code=crypto_register_shash" class="sref">crypto_register_shashp/a>(&pa href="+code=alg" class="sref">algp/a>);  336p/a>}  337p/a>  338p/a>static void pa href="+code=__exit" class="sref">__exitp/a> pa href="+code=rmd256_mod_fini" class="sref">rmd256_mod_finip/a>(void)  339p/a>{ o340p/a>        pa href="+code=crypto_unregister_shash" class="sref">crypto_unregister_shashp/a>(&pa href="+code=alg" class="sref">algp/a>); o341p/a>} o342p/a> o343p/a>pa href="+code=module_init" class="sref">module_initp/a>(pa href="+code=rmd256_mod_init" class="sref">rmd256_mod_initp/a>); o344p/a>pa href="+code=module_exit" class="sref">module_exitp/a>(pa href="+code=rmd256_mod_fini" class="sref">rmd256_mod_finip/a>); o345p/a> o346p/a>pa href="+code=MODULE_LICENSE" class="sref">MODULE_LICENSEp/a>(pspa
 class="string">"GPL"p/spa
 ); o347p/a>pa href="+code=MODULE_AUTHOR" class="sref">MODULE_AUTHORp/a>(pspa
 class="string">"Adrian-Ken Rueegsegger <ken@codelabs.ch>"p/spa
 ); o348p/a>pa href="+code=MODULE_DESCRIPTION" class="sref">MODULE_DESCRIPTIONp/a>(pspa
 class="string">"RIPEMD-256 Message Digest"p/spa
 ); o349p/a>
lxr.linux.no kindly hosted by Redpill Linpro ASp/a>, provider of Linux consulting and operations services sinceo1995.