auth.s 81 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787
  1. # qhasm: int64 r11_caller
  2. # qhasm: int64 r12_caller
  3. # qhasm: int64 r13_caller
  4. # qhasm: int64 r14_caller
  5. # qhasm: int64 r15_caller
  6. # qhasm: int64 rbx_caller
  7. # qhasm: int64 rbp_caller
  8. # qhasm: caller r11_caller
  9. # qhasm: caller r12_caller
  10. # qhasm: caller r13_caller
  11. # qhasm: caller r14_caller
  12. # qhasm: caller r15_caller
  13. # qhasm: caller rbx_caller
  14. # qhasm: caller rbp_caller
  15. # qhasm: stack64 r11_stack
  16. # qhasm: stack64 r12_stack
  17. # qhasm: stack64 r13_stack
  18. # qhasm: stack64 r14_stack
  19. # qhasm: stack64 r15_stack
  20. # qhasm: stack64 rbx_stack
  21. # qhasm: stack64 rbp_stack
  22. # qhasm: int64 out
  23. # qhasm: stack64 out_stack
  24. # qhasm: int64 m
  25. # qhasm: int64 l
  26. # qhasm: int64 k
  27. # qhasm: stack64 k_stack
  28. # qhasm: int64 m0
  29. # qhasm: int64 m1
  30. # qhasm: int64 m2
  31. # qhasm: int64 m3
  32. # qhasm: float80 a0
  33. # qhasm: float80 a1
  34. # qhasm: float80 a2
  35. # qhasm: float80 a3
  36. # qhasm: float80 h0
  37. # qhasm: float80 h1
  38. # qhasm: float80 h2
  39. # qhasm: float80 h3
  40. # qhasm: float80 x0
  41. # qhasm: float80 x1
  42. # qhasm: float80 x2
  43. # qhasm: float80 x3
  44. # qhasm: float80 y0
  45. # qhasm: float80 y1
  46. # qhasm: float80 y2
  47. # qhasm: float80 y3
  48. # qhasm: float80 r0x0
  49. # qhasm: float80 r1x0
  50. # qhasm: float80 r2x0
  51. # qhasm: float80 r3x0
  52. # qhasm: float80 r0x1
  53. # qhasm: float80 r1x1
  54. # qhasm: float80 r2x1
  55. # qhasm: float80 sr3x1
  56. # qhasm: float80 r0x2
  57. # qhasm: float80 r1x2
  58. # qhasm: float80 sr2x2
  59. # qhasm: float80 sr3x2
  60. # qhasm: float80 r0x3
  61. # qhasm: float80 sr1x3
  62. # qhasm: float80 sr2x3
  63. # qhasm: float80 sr3x3
  64. # qhasm: stack64 d0
  65. # qhasm: stack64 d1
  66. # qhasm: stack64 d2
  67. # qhasm: stack64 d3
  68. # qhasm: stack64 r0
  69. # qhasm: stack64 r1
  70. # qhasm: stack64 r2
  71. # qhasm: stack64 r3
  72. # qhasm: stack64 sr1
  73. # qhasm: stack64 sr2
  74. # qhasm: stack64 sr3
  75. # qhasm: enter crypto_onetimeauth_poly1305_amd64
  76. .text
  77. .p2align 5
  78. .globl _crypto_onetimeauth_poly1305_amd64
  79. .globl crypto_onetimeauth_poly1305_amd64
  80. _crypto_onetimeauth_poly1305_amd64:
  81. crypto_onetimeauth_poly1305_amd64:
  82. mov %rsp,%r11
  83. and $31,%r11
  84. add $192,%r11
  85. sub %r11,%rsp
  86. # qhasm: input out
  87. # qhasm: input m
  88. # qhasm: input l
  89. # qhasm: input k
  90. # qhasm: r11_stack = r11_caller
  91. # asm 1: movq <r11_caller=int64#9,>r11_stack=stack64#1
  92. # asm 2: movq <r11_caller=%r11,>r11_stack=32(%rsp)
  93. movq %r11,32(%rsp)
  94. # qhasm: r12_stack = r12_caller
  95. # asm 1: movq <r12_caller=int64#10,>r12_stack=stack64#2
  96. # asm 2: movq <r12_caller=%r12,>r12_stack=40(%rsp)
  97. movq %r12,40(%rsp)
  98. # qhasm: r13_stack = r13_caller
  99. # asm 1: movq <r13_caller=int64#11,>r13_stack=stack64#3
  100. # asm 2: movq <r13_caller=%r13,>r13_stack=48(%rsp)
  101. movq %r13,48(%rsp)
  102. # qhasm: r14_stack = r14_caller
  103. # asm 1: movq <r14_caller=int64#12,>r14_stack=stack64#4
  104. # asm 2: movq <r14_caller=%r14,>r14_stack=56(%rsp)
  105. movq %r14,56(%rsp)
  106. # qhasm: r15_stack = r15_caller
  107. # asm 1: movq <r15_caller=int64#13,>r15_stack=stack64#5
  108. # asm 2: movq <r15_caller=%r15,>r15_stack=64(%rsp)
  109. movq %r15,64(%rsp)
  110. # qhasm: rbx_stack = rbx_caller
  111. # asm 1: movq <rbx_caller=int64#14,>rbx_stack=stack64#6
  112. # asm 2: movq <rbx_caller=%rbx,>rbx_stack=72(%rsp)
  113. movq %rbx,72(%rsp)
  114. # qhasm: rbp_stack = rbp_caller
  115. # asm 1: movq <rbp_caller=int64#15,>rbp_stack=stack64#7
  116. # asm 2: movq <rbp_caller=%rbp,>rbp_stack=80(%rsp)
  117. movq %rbp,80(%rsp)
  118. # qhasm: round *(uint16 *) &crypto_onetimeauth_poly1305_amd64_rounding
  119. fldcw crypto_onetimeauth_poly1305_amd64_rounding(%rip)
  120. # qhasm: m0 = *(uint32 *) (k + 0)
  121. # asm 1: movl 0(<k=int64#4),>m0=int64#5d
  122. # asm 2: movl 0(<k=%rcx),>m0=%r8d
  123. movl 0(%rcx),%r8d
  124. # qhasm: m1 = *(uint32 *) (k + 4)
  125. # asm 1: movl 4(<k=int64#4),>m1=int64#6d
  126. # asm 2: movl 4(<k=%rcx),>m1=%r9d
  127. movl 4(%rcx),%r9d
  128. # qhasm: m2 = *(uint32 *) (k + 8)
  129. # asm 1: movl 8(<k=int64#4),>m2=int64#7d
  130. # asm 2: movl 8(<k=%rcx),>m2=%eax
  131. movl 8(%rcx),%eax
  132. # qhasm: m3 = *(uint32 *) (k + 12)
  133. # asm 1: movl 12(<k=int64#4),>m3=int64#8d
  134. # asm 2: movl 12(<k=%rcx),>m3=%r10d
  135. movl 12(%rcx),%r10d
  136. # qhasm: out_stack = out
  137. # asm 1: movq <out=int64#1,>out_stack=stack64#8
  138. # asm 2: movq <out=%rdi,>out_stack=88(%rsp)
  139. movq %rdi,88(%rsp)
  140. # qhasm: k_stack = k
  141. # asm 1: movq <k=int64#4,>k_stack=stack64#9
  142. # asm 2: movq <k=%rcx,>k_stack=96(%rsp)
  143. movq %rcx,96(%rsp)
  144. # qhasm: d0 top = 0x43300000
  145. # asm 1: movl $0x43300000,>d0=stack64#10
  146. # asm 2: movl $0x43300000,>d0=108(%rsp)
  147. movl $0x43300000,108(%rsp)
  148. # qhasm: d1 top = 0x45300000
  149. # asm 1: movl $0x45300000,>d1=stack64#11
  150. # asm 2: movl $0x45300000,>d1=116(%rsp)
  151. movl $0x45300000,116(%rsp)
  152. # qhasm: d2 top = 0x47300000
  153. # asm 1: movl $0x47300000,>d2=stack64#12
  154. # asm 2: movl $0x47300000,>d2=124(%rsp)
  155. movl $0x47300000,124(%rsp)
  156. # qhasm: d3 top = 0x49300000
  157. # asm 1: movl $0x49300000,>d3=stack64#13
  158. # asm 2: movl $0x49300000,>d3=132(%rsp)
  159. movl $0x49300000,132(%rsp)
  160. # qhasm: (uint32) m0 &= 0x0fffffff
  161. # asm 1: and $0x0fffffff,<m0=int64#5d
  162. # asm 2: and $0x0fffffff,<m0=%r8d
  163. and $0x0fffffff,%r8d
  164. # qhasm: (uint32) m1 &= 0x0ffffffc
  165. # asm 1: and $0x0ffffffc,<m1=int64#6d
  166. # asm 2: and $0x0ffffffc,<m1=%r9d
  167. and $0x0ffffffc,%r9d
  168. # qhasm: (uint32) m2 &= 0x0ffffffc
  169. # asm 1: and $0x0ffffffc,<m2=int64#7d
  170. # asm 2: and $0x0ffffffc,<m2=%eax
  171. and $0x0ffffffc,%eax
  172. # qhasm: (uint32) m3 &= 0x0ffffffc
  173. # asm 1: and $0x0ffffffc,<m3=int64#8d
  174. # asm 2: and $0x0ffffffc,<m3=%r10d
  175. and $0x0ffffffc,%r10d
  176. # qhasm: inplace d0 bottom = m0
  177. # asm 1: movl <m0=int64#5d,<d0=stack64#10
  178. # asm 2: movl <m0=%r8d,<d0=104(%rsp)
  179. movl %r8d,104(%rsp)
  180. # qhasm: inplace d1 bottom = m1
  181. # asm 1: movl <m1=int64#6d,<d1=stack64#11
  182. # asm 2: movl <m1=%r9d,<d1=112(%rsp)
  183. movl %r9d,112(%rsp)
  184. # qhasm: inplace d2 bottom = m2
  185. # asm 1: movl <m2=int64#7d,<d2=stack64#12
  186. # asm 2: movl <m2=%eax,<d2=120(%rsp)
  187. movl %eax,120(%rsp)
  188. # qhasm: inplace d3 bottom = m3
  189. # asm 1: movl <m3=int64#8d,<d3=stack64#13
  190. # asm 2: movl <m3=%r10d,<d3=128(%rsp)
  191. movl %r10d,128(%rsp)
  192. # qhasm: a0 = *(float64 *) &d0
  193. # asm 1: fldl <d0=stack64#10
  194. # asm 2: fldl <d0=104(%rsp)
  195. fldl 104(%rsp)
  196. # comment:fpstackfrombottom:<a0#28:
  197. # qhasm: a0 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_doffset0
  198. fsubl crypto_onetimeauth_poly1305_amd64_doffset0(%rip)
  199. # comment:fpstackfrombottom:<a0#28:
  200. # qhasm: a1 = *(float64 *) &d1
  201. # asm 1: fldl <d1=stack64#11
  202. # asm 2: fldl <d1=112(%rsp)
  203. fldl 112(%rsp)
  204. # comment:fpstackfrombottom:<a0#28:<a1#29:
  205. # qhasm: a1 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_doffset1
  206. fsubl crypto_onetimeauth_poly1305_amd64_doffset1(%rip)
  207. # comment:fpstackfrombottom:<a0#28:<a1#29:
  208. # qhasm: a2 = *(float64 *) &d2
  209. # asm 1: fldl <d2=stack64#12
  210. # asm 2: fldl <d2=120(%rsp)
  211. fldl 120(%rsp)
  212. # comment:fpstackfrombottom:<a0#28:<a1#29:<a2#30:
  213. # qhasm: a2 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_doffset2
  214. fsubl crypto_onetimeauth_poly1305_amd64_doffset2(%rip)
  215. # comment:fpstackfrombottom:<a0#28:<a1#29:<a2#30:
  216. # qhasm: a3 = *(float64 *) &d3
  217. # asm 1: fldl <d3=stack64#13
  218. # asm 2: fldl <d3=128(%rsp)
  219. fldl 128(%rsp)
  220. # comment:fpstackfrombottom:<a0#28:<a1#29:<a2#30:<a3#31:
  221. # qhasm: a3 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_doffset3
  222. fsubl crypto_onetimeauth_poly1305_amd64_doffset3(%rip)
  223. # comment:fpstackfrombottom:<a0#28:<a1#29:<a2#30:<a3#31:
  224. # qhasm: internal stacktop a0
  225. # asm 1: fxch <a0=float80#4
  226. # asm 2: fxch <a0=%st(3)
  227. fxch %st(3)
  228. # qhasm: *(float64 *) &r0 = a0
  229. # asm 1: fstpl >r0=stack64#14
  230. # asm 2: fstpl >r0=136(%rsp)
  231. fstpl 136(%rsp)
  232. # comment:fpstackfrombottom:<a3#31:<a1#29:<a2#30:
  233. # qhasm: internal stacktop a1
  234. # asm 1: fxch <a1=float80#2
  235. # asm 2: fxch <a1=%st(1)
  236. fxch %st(1)
  237. # qhasm: *(float64 *) &r1 = a1
  238. # asm 1: fstl >r1=stack64#15
  239. # asm 2: fstl >r1=144(%rsp)
  240. fstl 144(%rsp)
  241. # comment:fpstackfrombottom:<a3#31:<a2#30:<a1#29:
  242. # qhasm: a1 *= *(float64 *) &crypto_onetimeauth_poly1305_amd64_scale
  243. fmull crypto_onetimeauth_poly1305_amd64_scale(%rip)
  244. # comment:fpstackfrombottom:<a3#31:<a2#30:<a1#29:
  245. # qhasm: *(float64 *) &sr1 = a1
  246. # asm 1: fstpl >sr1=stack64#16
  247. # asm 2: fstpl >sr1=152(%rsp)
  248. fstpl 152(%rsp)
  249. # comment:fpstackfrombottom:<a3#31:<a2#30:
  250. # qhasm: *(float64 *) &r2 = a2
  251. # asm 1: fstl >r2=stack64#17
  252. # asm 2: fstl >r2=160(%rsp)
  253. fstl 160(%rsp)
  254. # comment:fpstackfrombottom:<a3#31:<a2#30:
  255. # qhasm: a2 *= *(float64 *) &crypto_onetimeauth_poly1305_amd64_scale
  256. fmull crypto_onetimeauth_poly1305_amd64_scale(%rip)
  257. # comment:fpstackfrombottom:<a3#31:<a2#30:
  258. # qhasm: *(float64 *) &sr2 = a2
  259. # asm 1: fstpl >sr2=stack64#18
  260. # asm 2: fstpl >sr2=168(%rsp)
  261. fstpl 168(%rsp)
  262. # comment:fpstackfrombottom:<a3#31:
  263. # qhasm: *(float64 *) &r3 = a3
  264. # asm 1: fstl >r3=stack64#19
  265. # asm 2: fstl >r3=176(%rsp)
  266. fstl 176(%rsp)
  267. # comment:fpstackfrombottom:<a3#31:
  268. # qhasm: a3 *= *(float64 *) &crypto_onetimeauth_poly1305_amd64_scale
  269. fmull crypto_onetimeauth_poly1305_amd64_scale(%rip)
  270. # comment:fpstackfrombottom:<a3#31:
  271. # qhasm: *(float64 *) &sr3 = a3
  272. # asm 1: fstpl >sr3=stack64#20
  273. # asm 2: fstpl >sr3=184(%rsp)
  274. fstpl 184(%rsp)
  275. # comment:fpstackfrombottom:
  276. # qhasm: h3 = 0
  277. fldz
  278. # comment:fpstackfrombottom:<h3#39:
  279. # qhasm: h2 = 0
  280. fldz
  281. # comment:fpstackfrombottom:<h3#39:<h2#40:
  282. # qhasm: h1 = 0
  283. fldz
  284. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:
  285. # qhasm: h0 = 0
  286. fldz
  287. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  288. # qhasm: unsigned<? l - 16
  289. # asm 1: cmp $16,<l=int64#3
  290. # asm 2: cmp $16,<l=%rdx
  291. cmp $16,%rdx
  292. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  293. # comment:fp stack unchanged by jump
  294. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  295. # qhasm: goto addatmost15bytes if unsigned<
  296. jb ._addatmost15bytes
  297. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  298. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  299. # qhasm: initialatleast16bytes:
  300. ._initialatleast16bytes:
  301. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  302. # qhasm: m3 = *(uint32 *) (m + 12)
  303. # asm 1: movl 12(<m=int64#2),>m3=int64#1d
  304. # asm 2: movl 12(<m=%rsi),>m3=%edi
  305. movl 12(%rsi),%edi
  306. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  307. # qhasm: m2 = *(uint32 *) (m + 8)
  308. # asm 1: movl 8(<m=int64#2),>m2=int64#4d
  309. # asm 2: movl 8(<m=%rsi),>m2=%ecx
  310. movl 8(%rsi),%ecx
  311. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  312. # qhasm: m1 = *(uint32 *) (m + 4)
  313. # asm 1: movl 4(<m=int64#2),>m1=int64#5d
  314. # asm 2: movl 4(<m=%rsi),>m1=%r8d
  315. movl 4(%rsi),%r8d
  316. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  317. # qhasm: m0 = *(uint32 *) (m + 0)
  318. # asm 1: movl 0(<m=int64#2),>m0=int64#6d
  319. # asm 2: movl 0(<m=%rsi),>m0=%r9d
  320. movl 0(%rsi),%r9d
  321. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  322. # qhasm: inplace d3 bottom = m3
  323. # asm 1: movl <m3=int64#1d,<d3=stack64#13
  324. # asm 2: movl <m3=%edi,<d3=128(%rsp)
  325. movl %edi,128(%rsp)
  326. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  327. # qhasm: inplace d2 bottom = m2
  328. # asm 1: movl <m2=int64#4d,<d2=stack64#12
  329. # asm 2: movl <m2=%ecx,<d2=120(%rsp)
  330. movl %ecx,120(%rsp)
  331. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  332. # qhasm: inplace d1 bottom = m1
  333. # asm 1: movl <m1=int64#5d,<d1=stack64#11
  334. # asm 2: movl <m1=%r8d,<d1=112(%rsp)
  335. movl %r8d,112(%rsp)
  336. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  337. # qhasm: inplace d0 bottom = m0
  338. # asm 1: movl <m0=int64#6d,<d0=stack64#10
  339. # asm 2: movl <m0=%r9d,<d0=104(%rsp)
  340. movl %r9d,104(%rsp)
  341. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  342. # qhasm: m += 16
  343. # asm 1: add $16,<m=int64#2
  344. # asm 2: add $16,<m=%rsi
  345. add $16,%rsi
  346. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  347. # qhasm: l -= 16
  348. # asm 1: sub $16,<l=int64#3
  349. # asm 2: sub $16,<l=%rdx
  350. sub $16,%rdx
  351. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  352. # qhasm: internal stacktop h3
  353. # asm 1: fxch <h3=float80#4
  354. # asm 2: fxch <h3=%st(3)
  355. fxch %st(3)
  356. # qhasm: h3 += *(float64 *) &d3
  357. # asm 1: faddl <d3=stack64#13
  358. # asm 2: faddl <d3=128(%rsp)
  359. faddl 128(%rsp)
  360. # comment:fpstackfrombottom:<h0#42:<h2#40:<h1#41:<h3#39:
  361. # qhasm: h3 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_doffset3minustwo128
  362. fsubl crypto_onetimeauth_poly1305_amd64_doffset3minustwo128(%rip)
  363. # comment:fpstackfrombottom:<h0#42:<h2#40:<h1#41:<h3#39:
  364. # qhasm: internal stacktop h1
  365. # asm 1: fxch <h1=float80#2
  366. # asm 2: fxch <h1=%st(1)
  367. fxch %st(1)
  368. # qhasm: h1 += *(float64 *) &d1
  369. # asm 1: faddl <d1=stack64#11
  370. # asm 2: faddl <d1=112(%rsp)
  371. faddl 112(%rsp)
  372. # comment:fpstackfrombottom:<h0#42:<h2#40:<h3#39:<h1#41:
  373. # qhasm: h1 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_doffset1
  374. fsubl crypto_onetimeauth_poly1305_amd64_doffset1(%rip)
  375. # comment:fpstackfrombottom:<h0#42:<h2#40:<h3#39:<h1#41:
  376. # qhasm: internal stacktop h2
  377. # asm 1: fxch <h2=float80#3
  378. # asm 2: fxch <h2=%st(2)
  379. fxch %st(2)
  380. # qhasm: h2 += *(float64 *) &d2
  381. # asm 1: faddl <d2=stack64#12
  382. # asm 2: faddl <d2=120(%rsp)
  383. faddl 120(%rsp)
  384. # comment:fpstackfrombottom:<h0#42:<h1#41:<h3#39:<h2#40:
  385. # qhasm: h2 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_doffset2
  386. fsubl crypto_onetimeauth_poly1305_amd64_doffset2(%rip)
  387. # comment:fpstackfrombottom:<h0#42:<h1#41:<h3#39:<h2#40:
  388. # qhasm: internal stacktop h0
  389. # asm 1: fxch <h0=float80#4
  390. # asm 2: fxch <h0=%st(3)
  391. fxch %st(3)
  392. # qhasm: h0 += *(float64 *) &d0
  393. # asm 1: faddl <d0=stack64#10
  394. # asm 2: faddl <d0=104(%rsp)
  395. faddl 104(%rsp)
  396. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  397. # qhasm: h0 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_doffset0
  398. fsubl crypto_onetimeauth_poly1305_amd64_doffset0(%rip)
  399. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  400. # qhasm: unsigned<? l - 16
  401. # asm 1: cmp $16,<l=int64#3
  402. # asm 2: cmp $16,<l=%rdx
  403. cmp $16,%rdx
  404. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  405. # comment:fp stack unchanged by jump
  406. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  407. # qhasm: goto multiplyaddatmost15bytes if unsigned<
  408. jb ._multiplyaddatmost15bytes
  409. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  410. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  411. # qhasm: multiplyaddatleast16bytes:
  412. ._multiplyaddatleast16bytes:
  413. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  414. # qhasm: m3 = *(uint32 *) (m + 12)
  415. # asm 1: movl 12(<m=int64#2),>m3=int64#1d
  416. # asm 2: movl 12(<m=%rsi),>m3=%edi
  417. movl 12(%rsi),%edi
  418. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  419. # qhasm: m2 = *(uint32 *) (m + 8)
  420. # asm 1: movl 8(<m=int64#2),>m2=int64#4d
  421. # asm 2: movl 8(<m=%rsi),>m2=%ecx
  422. movl 8(%rsi),%ecx
  423. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  424. # qhasm: m1 = *(uint32 *) (m + 4)
  425. # asm 1: movl 4(<m=int64#2),>m1=int64#5d
  426. # asm 2: movl 4(<m=%rsi),>m1=%r8d
  427. movl 4(%rsi),%r8d
  428. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  429. # qhasm: m0 = *(uint32 *) (m + 0)
  430. # asm 1: movl 0(<m=int64#2),>m0=int64#6d
  431. # asm 2: movl 0(<m=%rsi),>m0=%r9d
  432. movl 0(%rsi),%r9d
  433. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  434. # qhasm: inplace d3 bottom = m3
  435. # asm 1: movl <m3=int64#1d,<d3=stack64#13
  436. # asm 2: movl <m3=%edi,<d3=128(%rsp)
  437. movl %edi,128(%rsp)
  438. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  439. # qhasm: inplace d2 bottom = m2
  440. # asm 1: movl <m2=int64#4d,<d2=stack64#12
  441. # asm 2: movl <m2=%ecx,<d2=120(%rsp)
  442. movl %ecx,120(%rsp)
  443. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  444. # qhasm: inplace d1 bottom = m1
  445. # asm 1: movl <m1=int64#5d,<d1=stack64#11
  446. # asm 2: movl <m1=%r8d,<d1=112(%rsp)
  447. movl %r8d,112(%rsp)
  448. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  449. # qhasm: inplace d0 bottom = m0
  450. # asm 1: movl <m0=int64#6d,<d0=stack64#10
  451. # asm 2: movl <m0=%r9d,<d0=104(%rsp)
  452. movl %r9d,104(%rsp)
  453. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  454. # qhasm: m += 16
  455. # asm 1: add $16,<m=int64#2
  456. # asm 2: add $16,<m=%rsi
  457. add $16,%rsi
  458. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  459. # qhasm: l -= 16
  460. # asm 1: sub $16,<l=int64#3
  461. # asm 2: sub $16,<l=%rdx
  462. sub $16,%rdx
  463. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  464. # qhasm: x0 = *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha130
  465. fldl crypto_onetimeauth_poly1305_amd64_alpha130(%rip)
  466. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#53:
  467. # qhasm: x0 += h3
  468. # asm 1: fadd <h3=float80#3,<x0=float80#1
  469. # asm 2: fadd <h3=%st(2),<x0=%st(0)
  470. fadd %st(2),%st(0)
  471. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#53:
  472. # qhasm: x0 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha130
  473. fsubl crypto_onetimeauth_poly1305_amd64_alpha130(%rip)
  474. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#53:
  475. # qhasm: h3 -= x0
  476. # asm 1: fsubr <x0=float80#1,<h3=float80#3
  477. # asm 2: fsubr <x0=%st(0),<h3=%st(2)
  478. fsubr %st(0),%st(2)
  479. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#53:
  480. # qhasm: x0 *= *(float64 *) &crypto_onetimeauth_poly1305_amd64_scale
  481. fmull crypto_onetimeauth_poly1305_amd64_scale(%rip)
  482. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#53:
  483. # qhasm: x1 = *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha32
  484. fldl crypto_onetimeauth_poly1305_amd64_alpha32(%rip)
  485. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#53:<x1#54:
  486. # qhasm: x1 += h0
  487. # asm 1: fadd <h0=float80#3,<x1=float80#1
  488. # asm 2: fadd <h0=%st(2),<x1=%st(0)
  489. fadd %st(2),%st(0)
  490. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#53:<x1#54:
  491. # qhasm: x1 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha32
  492. fsubl crypto_onetimeauth_poly1305_amd64_alpha32(%rip)
  493. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#53:<x1#54:
  494. # qhasm: h0 -= x1
  495. # asm 1: fsubr <x1=float80#1,<h0=float80#3
  496. # asm 2: fsubr <x1=%st(0),<h0=%st(2)
  497. fsubr %st(0),%st(2)
  498. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#53:<x1#54:
  499. # qhasm: internal stacktop h0
  500. # asm 1: fxch <h0=float80#3
  501. # asm 2: fxch <h0=%st(2)
  502. fxch %st(2)
  503. # qhasm: x0 += h0
  504. # asm 1: faddp <h0=float80#1,<x0=float80#2
  505. # asm 2: faddp <h0=%st(0),<x0=%st(1)
  506. faddp %st(0),%st(1)
  507. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<x1#54:<x0#53:
  508. # qhasm: x2 = *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha64
  509. fldl crypto_onetimeauth_poly1305_amd64_alpha64(%rip)
  510. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<x1#54:<x0#53:<x2#55:
  511. # qhasm: x2 += h1
  512. # asm 1: fadd <h1=float80#5,<x2=float80#1
  513. # asm 2: fadd <h1=%st(4),<x2=%st(0)
  514. fadd %st(4),%st(0)
  515. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<x1#54:<x0#53:<x2#55:
  516. # qhasm: x2 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha64
  517. fsubl crypto_onetimeauth_poly1305_amd64_alpha64(%rip)
  518. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<x1#54:<x0#53:<x2#55:
  519. # qhasm: h1 -= x2
  520. # asm 1: fsubr <x2=float80#1,<h1=float80#5
  521. # asm 2: fsubr <x2=%st(0),<h1=%st(4)
  522. fsubr %st(0),%st(4)
  523. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<x1#54:<x0#53:<x2#55:
  524. # qhasm: x3 = *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha96
  525. fldl crypto_onetimeauth_poly1305_amd64_alpha96(%rip)
  526. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<x1#54:<x0#53:<x2#55:<x3#56:
  527. # qhasm: x3 += h2
  528. # asm 1: fadd <h2=float80#7,<x3=float80#1
  529. # asm 2: fadd <h2=%st(6),<x3=%st(0)
  530. fadd %st(6),%st(0)
  531. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<x1#54:<x0#53:<x2#55:<x3#56:
  532. # qhasm: x3 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha96
  533. fsubl crypto_onetimeauth_poly1305_amd64_alpha96(%rip)
  534. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<x1#54:<x0#53:<x2#55:<x3#56:
  535. # qhasm: h2 -= x3
  536. # asm 1: fsubr <x3=float80#1,<h2=float80#7
  537. # asm 2: fsubr <x3=%st(0),<h2=%st(6)
  538. fsubr %st(0),%st(6)
  539. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<x1#54:<x0#53:<x2#55:<x3#56:
  540. # qhasm: internal stacktop h2
  541. # asm 1: fxch <h2=float80#7
  542. # asm 2: fxch <h2=%st(6)
  543. fxch %st(6)
  544. # qhasm: x2 += h2
  545. # asm 1: faddp <h2=float80#1,<x2=float80#2
  546. # asm 2: faddp <h2=%st(0),<x2=%st(1)
  547. faddp %st(0),%st(1)
  548. # comment:fpstackfrombottom:<x3#56:<h1#41:<h3#39:<x1#54:<x0#53:<x2#55:
  549. # qhasm: internal stacktop h3
  550. # asm 1: fxch <h3=float80#4
  551. # asm 2: fxch <h3=%st(3)
  552. fxch %st(3)
  553. # qhasm: x3 += h3
  554. # asm 1: faddp <h3=float80#1,<x3=float80#6
  555. # asm 2: faddp <h3=%st(0),<x3=%st(5)
  556. faddp %st(0),%st(5)
  557. # comment:fpstackfrombottom:<x3#56:<h1#41:<x2#55:<x1#54:<x0#53:
  558. # qhasm: internal stacktop h1
  559. # asm 1: fxch <h1=float80#4
  560. # asm 2: fxch <h1=%st(3)
  561. fxch %st(3)
  562. # qhasm: x1 += h1
  563. # asm 1: faddp <h1=float80#1,<x1=float80#2
  564. # asm 2: faddp <h1=%st(0),<x1=%st(1)
  565. faddp %st(0),%st(1)
  566. # comment:fpstackfrombottom:<x3#56:<x0#53:<x2#55:<x1#54:
  567. # qhasm: h3 = *(float64 *) &r3
  568. # asm 1: fldl <r3=stack64#19
  569. # asm 2: fldl <r3=176(%rsp)
  570. fldl 176(%rsp)
  571. # comment:fpstackfrombottom:<x3#56:<x0#53:<x2#55:<x1#54:<h3#39:
  572. # qhasm: h3 *= x0
  573. # asm 1: fmul <x0=float80#4,<h3=float80#1
  574. # asm 2: fmul <x0=%st(3),<h3=%st(0)
  575. fmul %st(3),%st(0)
  576. # comment:fpstackfrombottom:<x3#56:<x0#53:<x2#55:<x1#54:<h3#39:
  577. # qhasm: h2 = *(float64 *) &r2
  578. # asm 1: fldl <r2=stack64#17
  579. # asm 2: fldl <r2=160(%rsp)
  580. fldl 160(%rsp)
  581. # comment:fpstackfrombottom:<x3#56:<x0#53:<x2#55:<x1#54:<h3#39:<h2#40:
  582. # qhasm: h2 *= x0
  583. # asm 1: fmul <x0=float80#5,<h2=float80#1
  584. # asm 2: fmul <x0=%st(4),<h2=%st(0)
  585. fmul %st(4),%st(0)
  586. # comment:fpstackfrombottom:<x3#56:<x0#53:<x2#55:<x1#54:<h3#39:<h2#40:
  587. # qhasm: h1 = *(float64 *) &r1
  588. # asm 1: fldl <r1=stack64#15
  589. # asm 2: fldl <r1=144(%rsp)
  590. fldl 144(%rsp)
  591. # comment:fpstackfrombottom:<x3#56:<x0#53:<x2#55:<x1#54:<h3#39:<h2#40:<h1#41:
  592. # qhasm: h1 *= x0
  593. # asm 1: fmul <x0=float80#6,<h1=float80#1
  594. # asm 2: fmul <x0=%st(5),<h1=%st(0)
  595. fmul %st(5),%st(0)
  596. # comment:fpstackfrombottom:<x3#56:<x0#53:<x2#55:<x1#54:<h3#39:<h2#40:<h1#41:
  597. # qhasm: h0 = *(float64 *) &r0
  598. # asm 1: fldl <r0=stack64#14
  599. # asm 2: fldl <r0=136(%rsp)
  600. fldl 136(%rsp)
  601. # comment:fpstackfrombottom:<x3#56:<x0#53:<x2#55:<x1#54:<h3#39:<h2#40:<h1#41:<h0#42:
  602. # qhasm: h0 *= x0
  603. # asm 1: fmulp <x0=float80#1,<h0=float80#7
  604. # asm 2: fmulp <x0=%st(0),<h0=%st(6)
  605. fmulp %st(0),%st(6)
  606. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<x1#54:<h3#39:<h2#40:<h1#41:
  607. # qhasm: r2x1 = *(float64 *) &r2
  608. # asm 1: fldl <r2=stack64#17
  609. # asm 2: fldl <r2=160(%rsp)
  610. fldl 160(%rsp)
  611. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<x1#54:<h3#39:<h2#40:<h1#41:<r2x1#57:
  612. # qhasm: r2x1 *= x1
  613. # asm 1: fmul <x1=float80#5,<r2x1=float80#1
  614. # asm 2: fmul <x1=%st(4),<r2x1=%st(0)
  615. fmul %st(4),%st(0)
  616. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<x1#54:<h3#39:<h2#40:<h1#41:<r2x1#57:
  617. # qhasm: h3 += r2x1
  618. # asm 1: faddp <r2x1=float80#1,<h3=float80#4
  619. # asm 2: faddp <r2x1=%st(0),<h3=%st(3)
  620. faddp %st(0),%st(3)
  621. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<x1#54:<h3#39:<h2#40:<h1#41:
  622. # qhasm: r1x1 = *(float64 *) &r1
  623. # asm 1: fldl <r1=stack64#15
  624. # asm 2: fldl <r1=144(%rsp)
  625. fldl 144(%rsp)
  626. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<x1#54:<h3#39:<h2#40:<h1#41:<r1x1#58:
  627. # qhasm: r1x1 *= x1
  628. # asm 1: fmul <x1=float80#5,<r1x1=float80#1
  629. # asm 2: fmul <x1=%st(4),<r1x1=%st(0)
  630. fmul %st(4),%st(0)
  631. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<x1#54:<h3#39:<h2#40:<h1#41:<r1x1#58:
  632. # qhasm: h2 += r1x1
  633. # asm 1: faddp <r1x1=float80#1,<h2=float80#3
  634. # asm 2: faddp <r1x1=%st(0),<h2=%st(2)
  635. faddp %st(0),%st(2)
  636. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<x1#54:<h3#39:<h2#40:<h1#41:
  637. # qhasm: r0x1 = *(float64 *) &r0
  638. # asm 1: fldl <r0=stack64#14
  639. # asm 2: fldl <r0=136(%rsp)
  640. fldl 136(%rsp)
  641. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<x1#54:<h3#39:<h2#40:<h1#41:<r0x1#59:
  642. # qhasm: r0x1 *= x1
  643. # asm 1: fmul <x1=float80#5,<r0x1=float80#1
  644. # asm 2: fmul <x1=%st(4),<r0x1=%st(0)
  645. fmul %st(4),%st(0)
  646. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<x1#54:<h3#39:<h2#40:<h1#41:<r0x1#59:
  647. # qhasm: h1 += r0x1
  648. # asm 1: faddp <r0x1=float80#1,<h1=float80#2
  649. # asm 2: faddp <r0x1=%st(0),<h1=%st(1)
  650. faddp %st(0),%st(1)
  651. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<x1#54:<h3#39:<h2#40:<h1#41:
  652. # qhasm: sr3x1 = *(float64 *) &sr3
  653. # asm 1: fldl <sr3=stack64#20
  654. # asm 2: fldl <sr3=184(%rsp)
  655. fldl 184(%rsp)
  656. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<x1#54:<h3#39:<h2#40:<h1#41:<sr3x1#60:
  657. # qhasm: sr3x1 *= x1
  658. # asm 1: fmulp <x1=float80#1,<sr3x1=float80#5
  659. # asm 2: fmulp <x1=%st(0),<sr3x1=%st(4)
  660. fmulp %st(0),%st(4)
  661. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<sr3x1#60:<h3#39:<h2#40:<h1#41:
  662. # qhasm: internal stacktop sr3x1
  663. # asm 1: fxch <sr3x1=float80#4
  664. # asm 2: fxch <sr3x1=%st(3)
  665. fxch %st(3)
  666. # qhasm: h0 += sr3x1
  667. # asm 1: faddp <sr3x1=float80#1,<h0=float80#6
  668. # asm 2: faddp <sr3x1=%st(0),<h0=%st(5)
  669. faddp %st(0),%st(5)
  670. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<h1#41:<h3#39:<h2#40:
  671. # qhasm: r1x2 = *(float64 *) &r1
  672. # asm 1: fldl <r1=stack64#15
  673. # asm 2: fldl <r1=144(%rsp)
  674. fldl 144(%rsp)
  675. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<h1#41:<h3#39:<h2#40:<r1x2#61:
  676. # qhasm: r1x2 *= x2
  677. # asm 1: fmul <x2=float80#5,<r1x2=float80#1
  678. # asm 2: fmul <x2=%st(4),<r1x2=%st(0)
  679. fmul %st(4),%st(0)
  680. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<h1#41:<h3#39:<h2#40:<r1x2#61:
  681. # qhasm: h3 += r1x2
  682. # asm 1: faddp <r1x2=float80#1,<h3=float80#3
  683. # asm 2: faddp <r1x2=%st(0),<h3=%st(2)
  684. faddp %st(0),%st(2)
  685. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<h1#41:<h3#39:<h2#40:
  686. # qhasm: r0x2 = *(float64 *) &r0
  687. # asm 1: fldl <r0=stack64#14
  688. # asm 2: fldl <r0=136(%rsp)
  689. fldl 136(%rsp)
  690. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<h1#41:<h3#39:<h2#40:<r0x2#62:
  691. # qhasm: r0x2 *= x2
  692. # asm 1: fmul <x2=float80#5,<r0x2=float80#1
  693. # asm 2: fmul <x2=%st(4),<r0x2=%st(0)
  694. fmul %st(4),%st(0)
  695. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<h1#41:<h3#39:<h2#40:<r0x2#62:
  696. # qhasm: h2 += r0x2
  697. # asm 1: faddp <r0x2=float80#1,<h2=float80#2
  698. # asm 2: faddp <r0x2=%st(0),<h2=%st(1)
  699. faddp %st(0),%st(1)
  700. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<h1#41:<h3#39:<h2#40:
  701. # qhasm: sr3x2 = *(float64 *) &sr3
  702. # asm 1: fldl <sr3=stack64#20
  703. # asm 2: fldl <sr3=184(%rsp)
  704. fldl 184(%rsp)
  705. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<h1#41:<h3#39:<h2#40:<sr3x2#63:
  706. # qhasm: sr3x2 *= x2
  707. # asm 1: fmul <x2=float80#5,<sr3x2=float80#1
  708. # asm 2: fmul <x2=%st(4),<sr3x2=%st(0)
  709. fmul %st(4),%st(0)
  710. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<h1#41:<h3#39:<h2#40:<sr3x2#63:
  711. # qhasm: h1 += sr3x2
  712. # asm 1: faddp <sr3x2=float80#1,<h1=float80#4
  713. # asm 2: faddp <sr3x2=%st(0),<h1=%st(3)
  714. faddp %st(0),%st(3)
  715. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<h1#41:<h3#39:<h2#40:
  716. # qhasm: sr2x2 = *(float64 *) &sr2
  717. # asm 1: fldl <sr2=stack64#18
  718. # asm 2: fldl <sr2=168(%rsp)
  719. fldl 168(%rsp)
  720. # comment:fpstackfrombottom:<x3#56:<h0#42:<x2#55:<h1#41:<h3#39:<h2#40:<sr2x2#64:
  721. # qhasm: sr2x2 *= x2
  722. # asm 1: fmulp <x2=float80#1,<sr2x2=float80#5
  723. # asm 2: fmulp <x2=%st(0),<sr2x2=%st(4)
  724. fmulp %st(0),%st(4)
  725. # comment:fpstackfrombottom:<x3#56:<h0#42:<sr2x2#64:<h1#41:<h3#39:<h2#40:
  726. # qhasm: internal stacktop sr2x2
  727. # asm 1: fxch <sr2x2=float80#4
  728. # asm 2: fxch <sr2x2=%st(3)
  729. fxch %st(3)
  730. # qhasm: h0 += sr2x2
  731. # asm 1: faddp <sr2x2=float80#1,<h0=float80#5
  732. # asm 2: faddp <sr2x2=%st(0),<h0=%st(4)
  733. faddp %st(0),%st(4)
  734. # comment:fpstackfrombottom:<x3#56:<h0#42:<h2#40:<h1#41:<h3#39:
  735. # qhasm: r0x3 = *(float64 *) &r0
  736. # asm 1: fldl <r0=stack64#14
  737. # asm 2: fldl <r0=136(%rsp)
  738. fldl 136(%rsp)
  739. # comment:fpstackfrombottom:<x3#56:<h0#42:<h2#40:<h1#41:<h3#39:<r0x3#65:
  740. # qhasm: r0x3 *= x3
  741. # asm 1: fmul <x3=float80#6,<r0x3=float80#1
  742. # asm 2: fmul <x3=%st(5),<r0x3=%st(0)
  743. fmul %st(5),%st(0)
  744. # comment:fpstackfrombottom:<x3#56:<h0#42:<h2#40:<h1#41:<h3#39:<r0x3#65:
  745. # qhasm: h3 += r0x3
  746. # asm 1: faddp <r0x3=float80#1,<h3=float80#2
  747. # asm 2: faddp <r0x3=%st(0),<h3=%st(1)
  748. faddp %st(0),%st(1)
  749. # comment:fpstackfrombottom:<x3#56:<h0#42:<h2#40:<h1#41:<h3#39:
  750. # qhasm: stacktop h0
  751. # asm 1: fxch <h0=float80#4
  752. # asm 2: fxch <h0=%st(3)
  753. fxch %st(3)
  754. # comment:fpstackfrombottom:<x3#56:<h3#39:<h2#40:<h1#41:<h0#42:
  755. # qhasm: sr3x3 = *(float64 *) &sr3
  756. # asm 1: fldl <sr3=stack64#20
  757. # asm 2: fldl <sr3=184(%rsp)
  758. fldl 184(%rsp)
  759. # comment:fpstackfrombottom:<x3#56:<h3#39:<h2#40:<h1#41:<h0#42:<sr3x3#66:
  760. # qhasm: sr3x3 *= x3
  761. # asm 1: fmul <x3=float80#6,<sr3x3=float80#1
  762. # asm 2: fmul <x3=%st(5),<sr3x3=%st(0)
  763. fmul %st(5),%st(0)
  764. # comment:fpstackfrombottom:<x3#56:<h3#39:<h2#40:<h1#41:<h0#42:<sr3x3#66:
  765. # qhasm: h2 += sr3x3
  766. # asm 1: faddp <sr3x3=float80#1,<h2=float80#4
  767. # asm 2: faddp <sr3x3=%st(0),<h2=%st(3)
  768. faddp %st(0),%st(3)
  769. # comment:fpstackfrombottom:<x3#56:<h3#39:<h2#40:<h1#41:<h0#42:
  770. # qhasm: stacktop h1
  771. # asm 1: fxch <h1=float80#2
  772. # asm 2: fxch <h1=%st(1)
  773. fxch %st(1)
  774. # comment:fpstackfrombottom:<x3#56:<h3#39:<h2#40:<h0#42:<h1#41:
  775. # qhasm: sr2x3 = *(float64 *) &sr2
  776. # asm 1: fldl <sr2=stack64#18
  777. # asm 2: fldl <sr2=168(%rsp)
  778. fldl 168(%rsp)
  779. # comment:fpstackfrombottom:<x3#56:<h3#39:<h2#40:<h0#42:<h1#41:<sr2x3#67:
  780. # qhasm: sr2x3 *= x3
  781. # asm 1: fmul <x3=float80#6,<sr2x3=float80#1
  782. # asm 2: fmul <x3=%st(5),<sr2x3=%st(0)
  783. fmul %st(5),%st(0)
  784. # comment:fpstackfrombottom:<x3#56:<h3#39:<h2#40:<h0#42:<h1#41:<sr2x3#67:
  785. # qhasm: h1 += sr2x3
  786. # asm 1: faddp <sr2x3=float80#1,<h1=float80#2
  787. # asm 2: faddp <sr2x3=%st(0),<h1=%st(1)
  788. faddp %st(0),%st(1)
  789. # comment:fpstackfrombottom:<x3#56:<h3#39:<h2#40:<h0#42:<h1#41:
  790. # qhasm: sr1x3 = *(float64 *) &sr1
  791. # asm 1: fldl <sr1=stack64#16
  792. # asm 2: fldl <sr1=152(%rsp)
  793. fldl 152(%rsp)
  794. # comment:fpstackfrombottom:<x3#56:<h3#39:<h2#40:<h0#42:<h1#41:<sr1x3#68:
  795. # qhasm: sr1x3 *= x3
  796. # asm 1: fmulp <x3=float80#1,<sr1x3=float80#6
  797. # asm 2: fmulp <x3=%st(0),<sr1x3=%st(5)
  798. fmulp %st(0),%st(5)
  799. # comment:fpstackfrombottom:<sr1x3#68:<h3#39:<h2#40:<h0#42:<h1#41:
  800. # qhasm: internal stacktop sr1x3
  801. # asm 1: fxch <sr1x3=float80#5
  802. # asm 2: fxch <sr1x3=%st(4)
  803. fxch %st(4)
  804. # qhasm: h0 += sr1x3
  805. # asm 1: faddp <sr1x3=float80#1,<h0=float80#2
  806. # asm 2: faddp <sr1x3=%st(0),<h0=%st(1)
  807. faddp %st(0),%st(1)
  808. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:
  809. # qhasm: unsigned<? l - 16
  810. # asm 1: cmp $16,<l=int64#3
  811. # asm 2: cmp $16,<l=%rdx
  812. cmp $16,%rdx
  813. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:
  814. # qhasm: stacktop h3
  815. # asm 1: fxch <h3=float80#3
  816. # asm 2: fxch <h3=%st(2)
  817. fxch %st(2)
  818. # comment:fpstackfrombottom:<h1#41:<h0#42:<h2#40:<h3#39:
  819. # qhasm: y3 = *(float64 *) &d3
  820. # asm 1: fldl <d3=stack64#13
  821. # asm 2: fldl <d3=128(%rsp)
  822. fldl 128(%rsp)
  823. # comment:fpstackfrombottom:<h1#41:<h0#42:<h2#40:<h3#39:<y3#70:
  824. # qhasm: y3 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_doffset3minustwo128
  825. fsubl crypto_onetimeauth_poly1305_amd64_doffset3minustwo128(%rip)
  826. # comment:fpstackfrombottom:<h1#41:<h0#42:<h2#40:<h3#39:<y3#70:
  827. # qhasm: h3 += y3
  828. # asm 1: faddp <y3=float80#1,<h3=float80#2
  829. # asm 2: faddp <y3=%st(0),<h3=%st(1)
  830. faddp %st(0),%st(1)
  831. # comment:fpstackfrombottom:<h1#41:<h0#42:<h2#40:<h3#39:
  832. # qhasm: stacktop h2
  833. # asm 1: fxch <h2=float80#2
  834. # asm 2: fxch <h2=%st(1)
  835. fxch %st(1)
  836. # comment:fpstackfrombottom:<h1#41:<h0#42:<h3#39:<h2#40:
  837. # qhasm: y2 = *(float64 *) &d2
  838. # asm 1: fldl <d2=stack64#12
  839. # asm 2: fldl <d2=120(%rsp)
  840. fldl 120(%rsp)
  841. # comment:fpstackfrombottom:<h1#41:<h0#42:<h3#39:<h2#40:<y2#71:
  842. # qhasm: y2 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_doffset2
  843. fsubl crypto_onetimeauth_poly1305_amd64_doffset2(%rip)
  844. # comment:fpstackfrombottom:<h1#41:<h0#42:<h3#39:<h2#40:<y2#71:
  845. # qhasm: h2 += y2
  846. # asm 1: faddp <y2=float80#1,<h2=float80#2
  847. # asm 2: faddp <y2=%st(0),<h2=%st(1)
  848. faddp %st(0),%st(1)
  849. # comment:fpstackfrombottom:<h1#41:<h0#42:<h3#39:<h2#40:
  850. # qhasm: stacktop h1
  851. # asm 1: fxch <h1=float80#4
  852. # asm 2: fxch <h1=%st(3)
  853. fxch %st(3)
  854. # comment:fpstackfrombottom:<h2#40:<h0#42:<h3#39:<h1#41:
  855. # qhasm: y1 = *(float64 *) &d1
  856. # asm 1: fldl <d1=stack64#11
  857. # asm 2: fldl <d1=112(%rsp)
  858. fldl 112(%rsp)
  859. # comment:fpstackfrombottom:<h2#40:<h0#42:<h3#39:<h1#41:<y1#72:
  860. # qhasm: y1 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_doffset1
  861. fsubl crypto_onetimeauth_poly1305_amd64_doffset1(%rip)
  862. # comment:fpstackfrombottom:<h2#40:<h0#42:<h3#39:<h1#41:<y1#72:
  863. # qhasm: h1 += y1
  864. # asm 1: faddp <y1=float80#1,<h1=float80#2
  865. # asm 2: faddp <y1=%st(0),<h1=%st(1)
  866. faddp %st(0),%st(1)
  867. # comment:fpstackfrombottom:<h2#40:<h0#42:<h3#39:<h1#41:
  868. # qhasm: stacktop h0
  869. # asm 1: fxch <h0=float80#3
  870. # asm 2: fxch <h0=%st(2)
  871. fxch %st(2)
  872. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  873. # qhasm: y0 = *(float64 *) &d0
  874. # asm 1: fldl <d0=stack64#10
  875. # asm 2: fldl <d0=104(%rsp)
  876. fldl 104(%rsp)
  877. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<y0#73:
  878. # qhasm: y0 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_doffset0
  879. fsubl crypto_onetimeauth_poly1305_amd64_doffset0(%rip)
  880. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<y0#73:
  881. # qhasm: h0 += y0
  882. # asm 1: faddp <y0=float80#1,<h0=float80#2
  883. # asm 2: faddp <y0=%st(0),<h0=%st(1)
  884. faddp %st(0),%st(1)
  885. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  886. # comment:fp stack unchanged by jump
  887. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  888. # qhasm: goto multiplyaddatleast16bytes if !unsigned<
  889. jae ._multiplyaddatleast16bytes
  890. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  891. # comment:fp stack unchanged by fallthrough
  892. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  893. # qhasm: multiplyaddatmost15bytes:
  894. ._multiplyaddatmost15bytes:
  895. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:
  896. # qhasm: x0 = *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha130
  897. fldl crypto_onetimeauth_poly1305_amd64_alpha130(%rip)
  898. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#74:
  899. # qhasm: x0 += h3
  900. # asm 1: fadd <h3=float80#3,<x0=float80#1
  901. # asm 2: fadd <h3=%st(2),<x0=%st(0)
  902. fadd %st(2),%st(0)
  903. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#74:
  904. # qhasm: x0 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha130
  905. fsubl crypto_onetimeauth_poly1305_amd64_alpha130(%rip)
  906. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#74:
  907. # qhasm: h3 -= x0
  908. # asm 1: fsubr <x0=float80#1,<h3=float80#3
  909. # asm 2: fsubr <x0=%st(0),<h3=%st(2)
  910. fsubr %st(0),%st(2)
  911. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#74:
  912. # qhasm: x0 *= *(float64 *) &crypto_onetimeauth_poly1305_amd64_scale
  913. fmull crypto_onetimeauth_poly1305_amd64_scale(%rip)
  914. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#74:
  915. # qhasm: x1 = *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha32
  916. fldl crypto_onetimeauth_poly1305_amd64_alpha32(%rip)
  917. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#74:<x1#75:
  918. # qhasm: x1 += h0
  919. # asm 1: fadd <h0=float80#3,<x1=float80#1
  920. # asm 2: fadd <h0=%st(2),<x1=%st(0)
  921. fadd %st(2),%st(0)
  922. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#74:<x1#75:
  923. # qhasm: x1 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha32
  924. fsubl crypto_onetimeauth_poly1305_amd64_alpha32(%rip)
  925. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#74:<x1#75:
  926. # qhasm: h0 -= x1
  927. # asm 1: fsubr <x1=float80#1,<h0=float80#3
  928. # asm 2: fsubr <x1=%st(0),<h0=%st(2)
  929. fsubr %st(0),%st(2)
  930. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#74:<x1#75:
  931. # qhasm: x2 = *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha64
  932. fldl crypto_onetimeauth_poly1305_amd64_alpha64(%rip)
  933. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#74:<x1#75:<x2#76:
  934. # qhasm: x2 += h1
  935. # asm 1: fadd <h1=float80#6,<x2=float80#1
  936. # asm 2: fadd <h1=%st(5),<x2=%st(0)
  937. fadd %st(5),%st(0)
  938. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#74:<x1#75:<x2#76:
  939. # qhasm: x2 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha64
  940. fsubl crypto_onetimeauth_poly1305_amd64_alpha64(%rip)
  941. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#74:<x1#75:<x2#76:
  942. # qhasm: h1 -= x2
  943. # asm 1: fsubr <x2=float80#1,<h1=float80#6
  944. # asm 2: fsubr <x2=%st(0),<h1=%st(5)
  945. fsubr %st(0),%st(5)
  946. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#74:<x1#75:<x2#76:
  947. # qhasm: x3 = *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha96
  948. fldl crypto_onetimeauth_poly1305_amd64_alpha96(%rip)
  949. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#74:<x1#75:<x2#76:<x3#77:
  950. # qhasm: x3 += h2
  951. # asm 1: fadd <h2=float80#8,<x3=float80#1
  952. # asm 2: fadd <h2=%st(7),<x3=%st(0)
  953. fadd %st(7),%st(0)
  954. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#74:<x1#75:<x2#76:<x3#77:
  955. # qhasm: x3 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha96
  956. fsubl crypto_onetimeauth_poly1305_amd64_alpha96(%rip)
  957. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#74:<x1#75:<x2#76:<x3#77:
  958. # qhasm: h2 -= x3
  959. # asm 1: fsubr <x3=float80#1,<h2=float80#8
  960. # asm 2: fsubr <x3=%st(0),<h2=%st(7)
  961. fsubr %st(0),%st(7)
  962. # comment:fpstackfrombottom:<h2#40:<h1#41:<h3#39:<h0#42:<x0#74:<x1#75:<x2#76:<x3#77:
  963. # qhasm: internal stacktop h2
  964. # asm 1: fxch <h2=float80#8
  965. # asm 2: fxch <h2=%st(7)
  966. fxch %st(7)
  967. # qhasm: x2 += h2
  968. # asm 1: faddp <h2=float80#1,<x2=float80#2
  969. # asm 2: faddp <h2=%st(0),<x2=%st(1)
  970. faddp %st(0),%st(1)
  971. # comment:fpstackfrombottom:<x3#77:<h1#41:<h3#39:<h0#42:<x0#74:<x1#75:<x2#76:
  972. # qhasm: internal stacktop h1
  973. # asm 1: fxch <h1=float80#6
  974. # asm 2: fxch <h1=%st(5)
  975. fxch %st(5)
  976. # qhasm: x1 += h1
  977. # asm 1: faddp <h1=float80#1,<x1=float80#2
  978. # asm 2: faddp <h1=%st(0),<x1=%st(1)
  979. faddp %st(0),%st(1)
  980. # comment:fpstackfrombottom:<x3#77:<x2#76:<h3#39:<h0#42:<x0#74:<x1#75:
  981. # qhasm: internal stacktop h3
  982. # asm 1: fxch <h3=float80#4
  983. # asm 2: fxch <h3=%st(3)
  984. fxch %st(3)
  985. # qhasm: x3 += h3
  986. # asm 1: faddp <h3=float80#1,<x3=float80#6
  987. # asm 2: faddp <h3=%st(0),<x3=%st(5)
  988. faddp %st(0),%st(5)
  989. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<h0#42:<x0#74:
  990. # qhasm: x0 += h0
  991. # asm 1: faddp <h0=float80#1,<x0=float80#2
  992. # asm 2: faddp <h0=%st(0),<x0=%st(1)
  993. faddp %st(0),%st(1)
  994. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<x0#74:
  995. # qhasm: h3 = *(float64 *) &r3
  996. # asm 1: fldl <r3=stack64#19
  997. # asm 2: fldl <r3=176(%rsp)
  998. fldl 176(%rsp)
  999. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<x0#74:<h3#39:
  1000. # qhasm: h3 *= x0
  1001. # asm 1: fmul <x0=float80#2,<h3=float80#1
  1002. # asm 2: fmul <x0=%st(1),<h3=%st(0)
  1003. fmul %st(1),%st(0)
  1004. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<x0#74:<h3#39:
  1005. # qhasm: h2 = *(float64 *) &r2
  1006. # asm 1: fldl <r2=stack64#17
  1007. # asm 2: fldl <r2=160(%rsp)
  1008. fldl 160(%rsp)
  1009. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<x0#74:<h3#39:<h2#40:
  1010. # qhasm: h2 *= x0
  1011. # asm 1: fmul <x0=float80#3,<h2=float80#1
  1012. # asm 2: fmul <x0=%st(2),<h2=%st(0)
  1013. fmul %st(2),%st(0)
  1014. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<x0#74:<h3#39:<h2#40:
  1015. # qhasm: h1 = *(float64 *) &r1
  1016. # asm 1: fldl <r1=stack64#15
  1017. # asm 2: fldl <r1=144(%rsp)
  1018. fldl 144(%rsp)
  1019. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<x0#74:<h3#39:<h2#40:<h1#41:
  1020. # qhasm: h1 *= x0
  1021. # asm 1: fmul <x0=float80#4,<h1=float80#1
  1022. # asm 2: fmul <x0=%st(3),<h1=%st(0)
  1023. fmul %st(3),%st(0)
  1024. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<x0#74:<h3#39:<h2#40:<h1#41:
  1025. # qhasm: h0 = *(float64 *) &r0
  1026. # asm 1: fldl <r0=stack64#14
  1027. # asm 2: fldl <r0=136(%rsp)
  1028. fldl 136(%rsp)
  1029. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<x0#74:<h3#39:<h2#40:<h1#41:<h0#42:
  1030. # qhasm: h0 *= x0
  1031. # asm 1: fmulp <x0=float80#1,<h0=float80#5
  1032. # asm 2: fmulp <x0=%st(0),<h0=%st(4)
  1033. fmulp %st(0),%st(4)
  1034. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<h0#42:<h3#39:<h2#40:<h1#41:
  1035. # qhasm: r2x1 = *(float64 *) &r2
  1036. # asm 1: fldl <r2=stack64#17
  1037. # asm 2: fldl <r2=160(%rsp)
  1038. fldl 160(%rsp)
  1039. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<h0#42:<h3#39:<h2#40:<h1#41:<r2x1#78:
  1040. # qhasm: r2x1 *= x1
  1041. # asm 1: fmul <x1=float80#6,<r2x1=float80#1
  1042. # asm 2: fmul <x1=%st(5),<r2x1=%st(0)
  1043. fmul %st(5),%st(0)
  1044. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<h0#42:<h3#39:<h2#40:<h1#41:<r2x1#78:
  1045. # qhasm: h3 += r2x1
  1046. # asm 1: faddp <r2x1=float80#1,<h3=float80#4
  1047. # asm 2: faddp <r2x1=%st(0),<h3=%st(3)
  1048. faddp %st(0),%st(3)
  1049. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<h0#42:<h3#39:<h2#40:<h1#41:
  1050. # qhasm: r1x1 = *(float64 *) &r1
  1051. # asm 1: fldl <r1=stack64#15
  1052. # asm 2: fldl <r1=144(%rsp)
  1053. fldl 144(%rsp)
  1054. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<h0#42:<h3#39:<h2#40:<h1#41:<r1x1#79:
  1055. # qhasm: r1x1 *= x1
  1056. # asm 1: fmul <x1=float80#6,<r1x1=float80#1
  1057. # asm 2: fmul <x1=%st(5),<r1x1=%st(0)
  1058. fmul %st(5),%st(0)
  1059. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<h0#42:<h3#39:<h2#40:<h1#41:<r1x1#79:
  1060. # qhasm: h2 += r1x1
  1061. # asm 1: faddp <r1x1=float80#1,<h2=float80#3
  1062. # asm 2: faddp <r1x1=%st(0),<h2=%st(2)
  1063. faddp %st(0),%st(2)
  1064. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<h0#42:<h3#39:<h2#40:<h1#41:
  1065. # qhasm: r0x1 = *(float64 *) &r0
  1066. # asm 1: fldl <r0=stack64#14
  1067. # asm 2: fldl <r0=136(%rsp)
  1068. fldl 136(%rsp)
  1069. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<h0#42:<h3#39:<h2#40:<h1#41:<r0x1#80:
  1070. # qhasm: r0x1 *= x1
  1071. # asm 1: fmul <x1=float80#6,<r0x1=float80#1
  1072. # asm 2: fmul <x1=%st(5),<r0x1=%st(0)
  1073. fmul %st(5),%st(0)
  1074. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<h0#42:<h3#39:<h2#40:<h1#41:<r0x1#80:
  1075. # qhasm: h1 += r0x1
  1076. # asm 1: faddp <r0x1=float80#1,<h1=float80#2
  1077. # asm 2: faddp <r0x1=%st(0),<h1=%st(1)
  1078. faddp %st(0),%st(1)
  1079. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<h0#42:<h3#39:<h2#40:<h1#41:
  1080. # qhasm: sr3x1 = *(float64 *) &sr3
  1081. # asm 1: fldl <sr3=stack64#20
  1082. # asm 2: fldl <sr3=184(%rsp)
  1083. fldl 184(%rsp)
  1084. # comment:fpstackfrombottom:<x3#77:<x2#76:<x1#75:<h0#42:<h3#39:<h2#40:<h1#41:<sr3x1#81:
  1085. # qhasm: sr3x1 *= x1
  1086. # asm 1: fmulp <x1=float80#1,<sr3x1=float80#6
  1087. # asm 2: fmulp <x1=%st(0),<sr3x1=%st(5)
  1088. fmulp %st(0),%st(5)
  1089. # comment:fpstackfrombottom:<x3#77:<x2#76:<sr3x1#81:<h0#42:<h3#39:<h2#40:<h1#41:
  1090. # qhasm: internal stacktop sr3x1
  1091. # asm 1: fxch <sr3x1=float80#5
  1092. # asm 2: fxch <sr3x1=%st(4)
  1093. fxch %st(4)
  1094. # qhasm: h0 += sr3x1
  1095. # asm 1: faddp <sr3x1=float80#1,<h0=float80#4
  1096. # asm 2: faddp <sr3x1=%st(0),<h0=%st(3)
  1097. faddp %st(0),%st(3)
  1098. # comment:fpstackfrombottom:<x3#77:<x2#76:<h1#41:<h0#42:<h3#39:<h2#40:
  1099. # qhasm: r1x2 = *(float64 *) &r1
  1100. # asm 1: fldl <r1=stack64#15
  1101. # asm 2: fldl <r1=144(%rsp)
  1102. fldl 144(%rsp)
  1103. # comment:fpstackfrombottom:<x3#77:<x2#76:<h1#41:<h0#42:<h3#39:<h2#40:<r1x2#82:
  1104. # qhasm: r1x2 *= x2
  1105. # asm 1: fmul <x2=float80#6,<r1x2=float80#1
  1106. # asm 2: fmul <x2=%st(5),<r1x2=%st(0)
  1107. fmul %st(5),%st(0)
  1108. # comment:fpstackfrombottom:<x3#77:<x2#76:<h1#41:<h0#42:<h3#39:<h2#40:<r1x2#82:
  1109. # qhasm: h3 += r1x2
  1110. # asm 1: faddp <r1x2=float80#1,<h3=float80#3
  1111. # asm 2: faddp <r1x2=%st(0),<h3=%st(2)
  1112. faddp %st(0),%st(2)
  1113. # comment:fpstackfrombottom:<x3#77:<x2#76:<h1#41:<h0#42:<h3#39:<h2#40:
  1114. # qhasm: r0x2 = *(float64 *) &r0
  1115. # asm 1: fldl <r0=stack64#14
  1116. # asm 2: fldl <r0=136(%rsp)
  1117. fldl 136(%rsp)
  1118. # comment:fpstackfrombottom:<x3#77:<x2#76:<h1#41:<h0#42:<h3#39:<h2#40:<r0x2#83:
  1119. # qhasm: r0x2 *= x2
  1120. # asm 1: fmul <x2=float80#6,<r0x2=float80#1
  1121. # asm 2: fmul <x2=%st(5),<r0x2=%st(0)
  1122. fmul %st(5),%st(0)
  1123. # comment:fpstackfrombottom:<x3#77:<x2#76:<h1#41:<h0#42:<h3#39:<h2#40:<r0x2#83:
  1124. # qhasm: h2 += r0x2
  1125. # asm 1: faddp <r0x2=float80#1,<h2=float80#2
  1126. # asm 2: faddp <r0x2=%st(0),<h2=%st(1)
  1127. faddp %st(0),%st(1)
  1128. # comment:fpstackfrombottom:<x3#77:<x2#76:<h1#41:<h0#42:<h3#39:<h2#40:
  1129. # qhasm: sr3x2 = *(float64 *) &sr3
  1130. # asm 1: fldl <sr3=stack64#20
  1131. # asm 2: fldl <sr3=184(%rsp)
  1132. fldl 184(%rsp)
  1133. # comment:fpstackfrombottom:<x3#77:<x2#76:<h1#41:<h0#42:<h3#39:<h2#40:<sr3x2#84:
  1134. # qhasm: sr3x2 *= x2
  1135. # asm 1: fmul <x2=float80#6,<sr3x2=float80#1
  1136. # asm 2: fmul <x2=%st(5),<sr3x2=%st(0)
  1137. fmul %st(5),%st(0)
  1138. # comment:fpstackfrombottom:<x3#77:<x2#76:<h1#41:<h0#42:<h3#39:<h2#40:<sr3x2#84:
  1139. # qhasm: h1 += sr3x2
  1140. # asm 1: faddp <sr3x2=float80#1,<h1=float80#5
  1141. # asm 2: faddp <sr3x2=%st(0),<h1=%st(4)
  1142. faddp %st(0),%st(4)
  1143. # comment:fpstackfrombottom:<x3#77:<x2#76:<h1#41:<h0#42:<h3#39:<h2#40:
  1144. # qhasm: sr2x2 = *(float64 *) &sr2
  1145. # asm 1: fldl <sr2=stack64#18
  1146. # asm 2: fldl <sr2=168(%rsp)
  1147. fldl 168(%rsp)
  1148. # comment:fpstackfrombottom:<x3#77:<x2#76:<h1#41:<h0#42:<h3#39:<h2#40:<sr2x2#85:
  1149. # qhasm: sr2x2 *= x2
  1150. # asm 1: fmulp <x2=float80#1,<sr2x2=float80#6
  1151. # asm 2: fmulp <x2=%st(0),<sr2x2=%st(5)
  1152. fmulp %st(0),%st(5)
  1153. # comment:fpstackfrombottom:<x3#77:<sr2x2#85:<h1#41:<h0#42:<h3#39:<h2#40:
  1154. # qhasm: internal stacktop sr2x2
  1155. # asm 1: fxch <sr2x2=float80#5
  1156. # asm 2: fxch <sr2x2=%st(4)
  1157. fxch %st(4)
  1158. # qhasm: h0 += sr2x2
  1159. # asm 1: faddp <sr2x2=float80#1,<h0=float80#3
  1160. # asm 2: faddp <sr2x2=%st(0),<h0=%st(2)
  1161. faddp %st(0),%st(2)
  1162. # comment:fpstackfrombottom:<x3#77:<h2#40:<h1#41:<h0#42:<h3#39:
  1163. # qhasm: r0x3 = *(float64 *) &r0
  1164. # asm 1: fldl <r0=stack64#14
  1165. # asm 2: fldl <r0=136(%rsp)
  1166. fldl 136(%rsp)
  1167. # comment:fpstackfrombottom:<x3#77:<h2#40:<h1#41:<h0#42:<h3#39:<r0x3#86:
  1168. # qhasm: r0x3 *= x3
  1169. # asm 1: fmul <x3=float80#6,<r0x3=float80#1
  1170. # asm 2: fmul <x3=%st(5),<r0x3=%st(0)
  1171. fmul %st(5),%st(0)
  1172. # comment:fpstackfrombottom:<x3#77:<h2#40:<h1#41:<h0#42:<h3#39:<r0x3#86:
  1173. # qhasm: h3 += r0x3
  1174. # asm 1: faddp <r0x3=float80#1,<h3=float80#2
  1175. # asm 2: faddp <r0x3=%st(0),<h3=%st(1)
  1176. faddp %st(0),%st(1)
  1177. # comment:fpstackfrombottom:<x3#77:<h2#40:<h1#41:<h0#42:<h3#39:
  1178. # qhasm: sr3x3 = *(float64 *) &sr3
  1179. # asm 1: fldl <sr3=stack64#20
  1180. # asm 2: fldl <sr3=184(%rsp)
  1181. fldl 184(%rsp)
  1182. # comment:fpstackfrombottom:<x3#77:<h2#40:<h1#41:<h0#42:<h3#39:<sr3x3#87:
  1183. # qhasm: sr3x3 *= x3
  1184. # asm 1: fmul <x3=float80#6,<sr3x3=float80#1
  1185. # asm 2: fmul <x3=%st(5),<sr3x3=%st(0)
  1186. fmul %st(5),%st(0)
  1187. # comment:fpstackfrombottom:<x3#77:<h2#40:<h1#41:<h0#42:<h3#39:<sr3x3#87:
  1188. # qhasm: h2 += sr3x3
  1189. # asm 1: faddp <sr3x3=float80#1,<h2=float80#5
  1190. # asm 2: faddp <sr3x3=%st(0),<h2=%st(4)
  1191. faddp %st(0),%st(4)
  1192. # comment:fpstackfrombottom:<x3#77:<h2#40:<h1#41:<h0#42:<h3#39:
  1193. # qhasm: sr2x3 = *(float64 *) &sr2
  1194. # asm 1: fldl <sr2=stack64#18
  1195. # asm 2: fldl <sr2=168(%rsp)
  1196. fldl 168(%rsp)
  1197. # comment:fpstackfrombottom:<x3#77:<h2#40:<h1#41:<h0#42:<h3#39:<sr2x3#88:
  1198. # qhasm: sr2x3 *= x3
  1199. # asm 1: fmul <x3=float80#6,<sr2x3=float80#1
  1200. # asm 2: fmul <x3=%st(5),<sr2x3=%st(0)
  1201. fmul %st(5),%st(0)
  1202. # comment:fpstackfrombottom:<x3#77:<h2#40:<h1#41:<h0#42:<h3#39:<sr2x3#88:
  1203. # qhasm: h1 += sr2x3
  1204. # asm 1: faddp <sr2x3=float80#1,<h1=float80#4
  1205. # asm 2: faddp <sr2x3=%st(0),<h1=%st(3)
  1206. faddp %st(0),%st(3)
  1207. # comment:fpstackfrombottom:<x3#77:<h2#40:<h1#41:<h0#42:<h3#39:
  1208. # qhasm: sr1x3 = *(float64 *) &sr1
  1209. # asm 1: fldl <sr1=stack64#16
  1210. # asm 2: fldl <sr1=152(%rsp)
  1211. fldl 152(%rsp)
  1212. # comment:fpstackfrombottom:<x3#77:<h2#40:<h1#41:<h0#42:<h3#39:<sr1x3#89:
  1213. # qhasm: sr1x3 *= x3
  1214. # asm 1: fmulp <x3=float80#1,<sr1x3=float80#6
  1215. # asm 2: fmulp <x3=%st(0),<sr1x3=%st(5)
  1216. fmulp %st(0),%st(5)
  1217. # comment:fpstackfrombottom:<sr1x3#89:<h2#40:<h1#41:<h0#42:<h3#39:
  1218. # qhasm: internal stacktop sr1x3
  1219. # asm 1: fxch <sr1x3=float80#5
  1220. # asm 2: fxch <sr1x3=%st(4)
  1221. fxch %st(4)
  1222. # qhasm: h0 += sr1x3
  1223. # asm 1: faddp <sr1x3=float80#1,<h0=float80#2
  1224. # asm 2: faddp <sr1x3=%st(0),<h0=%st(1)
  1225. faddp %st(0),%st(1)
  1226. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1227. # comment:fp stack unchanged by fallthrough
  1228. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1229. # qhasm: addatmost15bytes:
  1230. ._addatmost15bytes:
  1231. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1232. # qhasm: =? l - 0
  1233. # asm 1: cmp $0,<l=int64#3
  1234. # asm 2: cmp $0,<l=%rdx
  1235. cmp $0,%rdx
  1236. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1237. # comment:fp stack unchanged by jump
  1238. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1239. # qhasm: goto nomorebytes if =
  1240. je ._nomorebytes
  1241. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1242. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1243. # qhasm: stack128 lastchunk
  1244. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1245. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1246. # qhasm: int64 destination
  1247. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1248. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1249. # qhasm: int64 numbytes
  1250. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1251. # qhasm: ((uint32 *)&lastchunk)[0] = 0
  1252. # asm 1: movl $0,>lastchunk=stack128#1
  1253. # asm 2: movl $0,>lastchunk=0(%rsp)
  1254. movl $0,0(%rsp)
  1255. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1256. # qhasm: ((uint32 *)&lastchunk)[1] = 0
  1257. # asm 1: movl $0,4+<lastchunk=stack128#1
  1258. # asm 2: movl $0,4+<lastchunk=0(%rsp)
  1259. movl $0,4+0(%rsp)
  1260. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1261. # qhasm: ((uint32 *)&lastchunk)[2] = 0
  1262. # asm 1: movl $0,8+<lastchunk=stack128#1
  1263. # asm 2: movl $0,8+<lastchunk=0(%rsp)
  1264. movl $0,8+0(%rsp)
  1265. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1266. # qhasm: ((uint32 *)&lastchunk)[3] = 0
  1267. # asm 1: movl $0,12+<lastchunk=stack128#1
  1268. # asm 2: movl $0,12+<lastchunk=0(%rsp)
  1269. movl $0,12+0(%rsp)
  1270. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1271. # qhasm: destination = &lastchunk
  1272. # asm 1: leaq <lastchunk=stack128#1,>destination=int64#1
  1273. # asm 2: leaq <lastchunk=0(%rsp),>destination=%rdi
  1274. leaq 0(%rsp),%rdi
  1275. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1276. # qhasm: numbytes = l
  1277. # asm 1: mov <l=int64#3,>numbytes=int64#4
  1278. # asm 2: mov <l=%rdx,>numbytes=%rcx
  1279. mov %rdx,%rcx
  1280. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1281. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1282. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1283. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1284. # qhasm: while (numbytes) { *destination++ = *m++; --numbytes }
  1285. rep movsb
  1286. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1287. # qhasm: *(uint8 *) (destination + 0) = 1
  1288. # asm 1: movb $1,0(<destination=int64#1)
  1289. # asm 2: movb $1,0(<destination=%rdi)
  1290. movb $1,0(%rdi)
  1291. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1292. # qhasm: m3 = ((uint32 *)&lastchunk)[3]
  1293. # asm 1: movl 12+<lastchunk=stack128#1,>m3=int64#1d
  1294. # asm 2: movl 12+<lastchunk=0(%rsp),>m3=%edi
  1295. movl 12+0(%rsp),%edi
  1296. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1297. # qhasm: m2 = ((uint32 *)&lastchunk)[2]
  1298. # asm 1: movl 8+<lastchunk=stack128#1,>m2=int64#2d
  1299. # asm 2: movl 8+<lastchunk=0(%rsp),>m2=%esi
  1300. movl 8+0(%rsp),%esi
  1301. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1302. # qhasm: m1 = ((uint32 *)&lastchunk)[1]
  1303. # asm 1: movl 4+<lastchunk=stack128#1,>m1=int64#3d
  1304. # asm 2: movl 4+<lastchunk=0(%rsp),>m1=%edx
  1305. movl 4+0(%rsp),%edx
  1306. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1307. # qhasm: m0 = ((uint32 *)&lastchunk)[0]
  1308. # asm 1: movl <lastchunk=stack128#1,>m0=int64#4d
  1309. # asm 2: movl <lastchunk=0(%rsp),>m0=%ecx
  1310. movl 0(%rsp),%ecx
  1311. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1312. # qhasm: inplace d3 bottom = m3
  1313. # asm 1: movl <m3=int64#1d,<d3=stack64#13
  1314. # asm 2: movl <m3=%edi,<d3=128(%rsp)
  1315. movl %edi,128(%rsp)
  1316. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1317. # qhasm: inplace d2 bottom = m2
  1318. # asm 1: movl <m2=int64#2d,<d2=stack64#12
  1319. # asm 2: movl <m2=%esi,<d2=120(%rsp)
  1320. movl %esi,120(%rsp)
  1321. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1322. # qhasm: inplace d1 bottom = m1
  1323. # asm 1: movl <m1=int64#3d,<d1=stack64#11
  1324. # asm 2: movl <m1=%edx,<d1=112(%rsp)
  1325. movl %edx,112(%rsp)
  1326. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1327. # qhasm: inplace d0 bottom = m0
  1328. # asm 1: movl <m0=int64#4d,<d0=stack64#10
  1329. # asm 2: movl <m0=%ecx,<d0=104(%rsp)
  1330. movl %ecx,104(%rsp)
  1331. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1332. # qhasm: internal stacktop h3
  1333. # asm 1: fxch <h3=float80#4
  1334. # asm 2: fxch <h3=%st(3)
  1335. fxch %st(3)
  1336. # qhasm: h3 += *(float64 *) &d3
  1337. # asm 1: faddl <d3=stack64#13
  1338. # asm 2: faddl <d3=128(%rsp)
  1339. faddl 128(%rsp)
  1340. # comment:fpstackfrombottom:<h0#42:<h2#40:<h1#41:<h3#39:
  1341. # qhasm: h3 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_doffset3
  1342. fsubl crypto_onetimeauth_poly1305_amd64_doffset3(%rip)
  1343. # comment:fpstackfrombottom:<h0#42:<h2#40:<h1#41:<h3#39:
  1344. # qhasm: internal stacktop h2
  1345. # asm 1: fxch <h2=float80#3
  1346. # asm 2: fxch <h2=%st(2)
  1347. fxch %st(2)
  1348. # qhasm: h2 += *(float64 *) &d2
  1349. # asm 1: faddl <d2=stack64#12
  1350. # asm 2: faddl <d2=120(%rsp)
  1351. faddl 120(%rsp)
  1352. # comment:fpstackfrombottom:<h0#42:<h3#39:<h1#41:<h2#40:
  1353. # qhasm: h2 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_doffset2
  1354. fsubl crypto_onetimeauth_poly1305_amd64_doffset2(%rip)
  1355. # comment:fpstackfrombottom:<h0#42:<h3#39:<h1#41:<h2#40:
  1356. # qhasm: internal stacktop h1
  1357. # asm 1: fxch <h1=float80#2
  1358. # asm 2: fxch <h1=%st(1)
  1359. fxch %st(1)
  1360. # qhasm: h1 += *(float64 *) &d1
  1361. # asm 1: faddl <d1=stack64#11
  1362. # asm 2: faddl <d1=112(%rsp)
  1363. faddl 112(%rsp)
  1364. # comment:fpstackfrombottom:<h0#42:<h3#39:<h2#40:<h1#41:
  1365. # qhasm: h1 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_doffset1
  1366. fsubl crypto_onetimeauth_poly1305_amd64_doffset1(%rip)
  1367. # comment:fpstackfrombottom:<h0#42:<h3#39:<h2#40:<h1#41:
  1368. # qhasm: internal stacktop h0
  1369. # asm 1: fxch <h0=float80#4
  1370. # asm 2: fxch <h0=%st(3)
  1371. fxch %st(3)
  1372. # qhasm: h0 += *(float64 *) &d0
  1373. # asm 1: faddl <d0=stack64#10
  1374. # asm 2: faddl <d0=104(%rsp)
  1375. faddl 104(%rsp)
  1376. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:
  1377. # qhasm: h0 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_doffset0
  1378. fsubl crypto_onetimeauth_poly1305_amd64_doffset0(%rip)
  1379. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:
  1380. # qhasm: x0 = *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha130
  1381. fldl crypto_onetimeauth_poly1305_amd64_alpha130(%rip)
  1382. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:<x0#98:
  1383. # qhasm: x0 += h3
  1384. # asm 1: fadd <h3=float80#4,<x0=float80#1
  1385. # asm 2: fadd <h3=%st(3),<x0=%st(0)
  1386. fadd %st(3),%st(0)
  1387. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:<x0#98:
  1388. # qhasm: x0 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha130
  1389. fsubl crypto_onetimeauth_poly1305_amd64_alpha130(%rip)
  1390. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:<x0#98:
  1391. # qhasm: h3 -= x0
  1392. # asm 1: fsubr <x0=float80#1,<h3=float80#4
  1393. # asm 2: fsubr <x0=%st(0),<h3=%st(3)
  1394. fsubr %st(0),%st(3)
  1395. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:<x0#98:
  1396. # qhasm: x0 *= *(float64 *) &crypto_onetimeauth_poly1305_amd64_scale
  1397. fmull crypto_onetimeauth_poly1305_amd64_scale(%rip)
  1398. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:<x0#98:
  1399. # qhasm: x1 = *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha32
  1400. fldl crypto_onetimeauth_poly1305_amd64_alpha32(%rip)
  1401. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:<x0#98:<x1#99:
  1402. # qhasm: x1 += h0
  1403. # asm 1: fadd <h0=float80#3,<x1=float80#1
  1404. # asm 2: fadd <h0=%st(2),<x1=%st(0)
  1405. fadd %st(2),%st(0)
  1406. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:<x0#98:<x1#99:
  1407. # qhasm: x1 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha32
  1408. fsubl crypto_onetimeauth_poly1305_amd64_alpha32(%rip)
  1409. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:<x0#98:<x1#99:
  1410. # qhasm: h0 -= x1
  1411. # asm 1: fsubr <x1=float80#1,<h0=float80#3
  1412. # asm 2: fsubr <x1=%st(0),<h0=%st(2)
  1413. fsubr %st(0),%st(2)
  1414. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:<x0#98:<x1#99:
  1415. # qhasm: x2 = *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha64
  1416. fldl crypto_onetimeauth_poly1305_amd64_alpha64(%rip)
  1417. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:<x0#98:<x1#99:<x2#100:
  1418. # qhasm: x2 += h1
  1419. # asm 1: fadd <h1=float80#7,<x2=float80#1
  1420. # asm 2: fadd <h1=%st(6),<x2=%st(0)
  1421. fadd %st(6),%st(0)
  1422. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:<x0#98:<x1#99:<x2#100:
  1423. # qhasm: x2 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha64
  1424. fsubl crypto_onetimeauth_poly1305_amd64_alpha64(%rip)
  1425. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:<x0#98:<x1#99:<x2#100:
  1426. # qhasm: h1 -= x2
  1427. # asm 1: fsubr <x2=float80#1,<h1=float80#7
  1428. # asm 2: fsubr <x2=%st(0),<h1=%st(6)
  1429. fsubr %st(0),%st(6)
  1430. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:<x0#98:<x1#99:<x2#100:
  1431. # qhasm: x3 = *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha96
  1432. fldl crypto_onetimeauth_poly1305_amd64_alpha96(%rip)
  1433. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:<x0#98:<x1#99:<x2#100:<x3#101:
  1434. # qhasm: x3 += h2
  1435. # asm 1: fadd <h2=float80#6,<x3=float80#1
  1436. # asm 2: fadd <h2=%st(5),<x3=%st(0)
  1437. fadd %st(5),%st(0)
  1438. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:<x0#98:<x1#99:<x2#100:<x3#101:
  1439. # qhasm: x3 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha96
  1440. fsubl crypto_onetimeauth_poly1305_amd64_alpha96(%rip)
  1441. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:<x0#98:<x1#99:<x2#100:<x3#101:
  1442. # qhasm: h2 -= x3
  1443. # asm 1: fsubr <x3=float80#1,<h2=float80#6
  1444. # asm 2: fsubr <x3=%st(0),<h2=%st(5)
  1445. fsubr %st(0),%st(5)
  1446. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<h0#42:<x0#98:<x1#99:<x2#100:<x3#101:
  1447. # qhasm: internal stacktop h0
  1448. # asm 1: fxch <h0=float80#5
  1449. # asm 2: fxch <h0=%st(4)
  1450. fxch %st(4)
  1451. # qhasm: x0 += h0
  1452. # asm 1: faddp <h0=float80#1,<x0=float80#4
  1453. # asm 2: faddp <h0=%st(0),<x0=%st(3)
  1454. faddp %st(0),%st(3)
  1455. # comment:fpstackfrombottom:<h1#41:<h3#39:<h2#40:<x3#101:<x0#98:<x1#99:<x2#100:
  1456. # qhasm: internal stacktop h1
  1457. # asm 1: fxch <h1=float80#7
  1458. # asm 2: fxch <h1=%st(6)
  1459. fxch %st(6)
  1460. # qhasm: x1 += h1
  1461. # asm 1: faddp <h1=float80#1,<x1=float80#2
  1462. # asm 2: faddp <h1=%st(0),<x1=%st(1)
  1463. faddp %st(0),%st(1)
  1464. # comment:fpstackfrombottom:<x2#100:<h3#39:<h2#40:<x3#101:<x0#98:<x1#99:
  1465. # qhasm: internal stacktop h2
  1466. # asm 1: fxch <h2=float80#4
  1467. # asm 2: fxch <h2=%st(3)
  1468. fxch %st(3)
  1469. # qhasm: x2 += h2
  1470. # asm 1: faddp <h2=float80#1,<x2=float80#6
  1471. # asm 2: faddp <h2=%st(0),<x2=%st(5)
  1472. faddp %st(0),%st(5)
  1473. # comment:fpstackfrombottom:<x2#100:<h3#39:<x1#99:<x3#101:<x0#98:
  1474. # qhasm: internal stacktop h3
  1475. # asm 1: fxch <h3=float80#4
  1476. # asm 2: fxch <h3=%st(3)
  1477. fxch %st(3)
  1478. # qhasm: x3 += h3
  1479. # asm 1: faddp <h3=float80#1,<x3=float80#2
  1480. # asm 2: faddp <h3=%st(0),<x3=%st(1)
  1481. faddp %st(0),%st(1)
  1482. # comment:fpstackfrombottom:<x2#100:<x0#98:<x1#99:<x3#101:
  1483. # qhasm: h3 = *(float64 *) &r3
  1484. # asm 1: fldl <r3=stack64#19
  1485. # asm 2: fldl <r3=176(%rsp)
  1486. fldl 176(%rsp)
  1487. # comment:fpstackfrombottom:<x2#100:<x0#98:<x1#99:<x3#101:<h3#39:
  1488. # qhasm: h3 *= x0
  1489. # asm 1: fmul <x0=float80#4,<h3=float80#1
  1490. # asm 2: fmul <x0=%st(3),<h3=%st(0)
  1491. fmul %st(3),%st(0)
  1492. # comment:fpstackfrombottom:<x2#100:<x0#98:<x1#99:<x3#101:<h3#39:
  1493. # qhasm: h2 = *(float64 *) &r2
  1494. # asm 1: fldl <r2=stack64#17
  1495. # asm 2: fldl <r2=160(%rsp)
  1496. fldl 160(%rsp)
  1497. # comment:fpstackfrombottom:<x2#100:<x0#98:<x1#99:<x3#101:<h3#39:<h2#40:
  1498. # qhasm: h2 *= x0
  1499. # asm 1: fmul <x0=float80#5,<h2=float80#1
  1500. # asm 2: fmul <x0=%st(4),<h2=%st(0)
  1501. fmul %st(4),%st(0)
  1502. # comment:fpstackfrombottom:<x2#100:<x0#98:<x1#99:<x3#101:<h3#39:<h2#40:
  1503. # qhasm: h1 = *(float64 *) &r1
  1504. # asm 1: fldl <r1=stack64#15
  1505. # asm 2: fldl <r1=144(%rsp)
  1506. fldl 144(%rsp)
  1507. # comment:fpstackfrombottom:<x2#100:<x0#98:<x1#99:<x3#101:<h3#39:<h2#40:<h1#41:
  1508. # qhasm: h1 *= x0
  1509. # asm 1: fmul <x0=float80#6,<h1=float80#1
  1510. # asm 2: fmul <x0=%st(5),<h1=%st(0)
  1511. fmul %st(5),%st(0)
  1512. # comment:fpstackfrombottom:<x2#100:<x0#98:<x1#99:<x3#101:<h3#39:<h2#40:<h1#41:
  1513. # qhasm: h0 = *(float64 *) &r0
  1514. # asm 1: fldl <r0=stack64#14
  1515. # asm 2: fldl <r0=136(%rsp)
  1516. fldl 136(%rsp)
  1517. # comment:fpstackfrombottom:<x2#100:<x0#98:<x1#99:<x3#101:<h3#39:<h2#40:<h1#41:<h0#42:
  1518. # qhasm: h0 *= x0
  1519. # asm 1: fmulp <x0=float80#1,<h0=float80#7
  1520. # asm 2: fmulp <x0=%st(0),<h0=%st(6)
  1521. fmulp %st(0),%st(6)
  1522. # comment:fpstackfrombottom:<x2#100:<h0#42:<x1#99:<x3#101:<h3#39:<h2#40:<h1#41:
  1523. # qhasm: r2x1 = *(float64 *) &r2
  1524. # asm 1: fldl <r2=stack64#17
  1525. # asm 2: fldl <r2=160(%rsp)
  1526. fldl 160(%rsp)
  1527. # comment:fpstackfrombottom:<x2#100:<h0#42:<x1#99:<x3#101:<h3#39:<h2#40:<h1#41:<r2x1#102:
  1528. # qhasm: r2x1 *= x1
  1529. # asm 1: fmul <x1=float80#6,<r2x1=float80#1
  1530. # asm 2: fmul <x1=%st(5),<r2x1=%st(0)
  1531. fmul %st(5),%st(0)
  1532. # comment:fpstackfrombottom:<x2#100:<h0#42:<x1#99:<x3#101:<h3#39:<h2#40:<h1#41:<r2x1#102:
  1533. # qhasm: h3 += r2x1
  1534. # asm 1: faddp <r2x1=float80#1,<h3=float80#4
  1535. # asm 2: faddp <r2x1=%st(0),<h3=%st(3)
  1536. faddp %st(0),%st(3)
  1537. # comment:fpstackfrombottom:<x2#100:<h0#42:<x1#99:<x3#101:<h3#39:<h2#40:<h1#41:
  1538. # qhasm: r1x1 = *(float64 *) &r1
  1539. # asm 1: fldl <r1=stack64#15
  1540. # asm 2: fldl <r1=144(%rsp)
  1541. fldl 144(%rsp)
  1542. # comment:fpstackfrombottom:<x2#100:<h0#42:<x1#99:<x3#101:<h3#39:<h2#40:<h1#41:<r1x1#103:
  1543. # qhasm: r1x1 *= x1
  1544. # asm 1: fmul <x1=float80#6,<r1x1=float80#1
  1545. # asm 2: fmul <x1=%st(5),<r1x1=%st(0)
  1546. fmul %st(5),%st(0)
  1547. # comment:fpstackfrombottom:<x2#100:<h0#42:<x1#99:<x3#101:<h3#39:<h2#40:<h1#41:<r1x1#103:
  1548. # qhasm: h2 += r1x1
  1549. # asm 1: faddp <r1x1=float80#1,<h2=float80#3
  1550. # asm 2: faddp <r1x1=%st(0),<h2=%st(2)
  1551. faddp %st(0),%st(2)
  1552. # comment:fpstackfrombottom:<x2#100:<h0#42:<x1#99:<x3#101:<h3#39:<h2#40:<h1#41:
  1553. # qhasm: r0x1 = *(float64 *) &r0
  1554. # asm 1: fldl <r0=stack64#14
  1555. # asm 2: fldl <r0=136(%rsp)
  1556. fldl 136(%rsp)
  1557. # comment:fpstackfrombottom:<x2#100:<h0#42:<x1#99:<x3#101:<h3#39:<h2#40:<h1#41:<r0x1#104:
  1558. # qhasm: r0x1 *= x1
  1559. # asm 1: fmul <x1=float80#6,<r0x1=float80#1
  1560. # asm 2: fmul <x1=%st(5),<r0x1=%st(0)
  1561. fmul %st(5),%st(0)
  1562. # comment:fpstackfrombottom:<x2#100:<h0#42:<x1#99:<x3#101:<h3#39:<h2#40:<h1#41:<r0x1#104:
  1563. # qhasm: h1 += r0x1
  1564. # asm 1: faddp <r0x1=float80#1,<h1=float80#2
  1565. # asm 2: faddp <r0x1=%st(0),<h1=%st(1)
  1566. faddp %st(0),%st(1)
  1567. # comment:fpstackfrombottom:<x2#100:<h0#42:<x1#99:<x3#101:<h3#39:<h2#40:<h1#41:
  1568. # qhasm: sr3x1 = *(float64 *) &sr3
  1569. # asm 1: fldl <sr3=stack64#20
  1570. # asm 2: fldl <sr3=184(%rsp)
  1571. fldl 184(%rsp)
  1572. # comment:fpstackfrombottom:<x2#100:<h0#42:<x1#99:<x3#101:<h3#39:<h2#40:<h1#41:<sr3x1#105:
  1573. # qhasm: sr3x1 *= x1
  1574. # asm 1: fmulp <x1=float80#1,<sr3x1=float80#6
  1575. # asm 2: fmulp <x1=%st(0),<sr3x1=%st(5)
  1576. fmulp %st(0),%st(5)
  1577. # comment:fpstackfrombottom:<x2#100:<h0#42:<sr3x1#105:<x3#101:<h3#39:<h2#40:<h1#41:
  1578. # qhasm: internal stacktop sr3x1
  1579. # asm 1: fxch <sr3x1=float80#5
  1580. # asm 2: fxch <sr3x1=%st(4)
  1581. fxch %st(4)
  1582. # qhasm: h0 += sr3x1
  1583. # asm 1: faddp <sr3x1=float80#1,<h0=float80#6
  1584. # asm 2: faddp <sr3x1=%st(0),<h0=%st(5)
  1585. faddp %st(0),%st(5)
  1586. # comment:fpstackfrombottom:<x2#100:<h0#42:<h1#41:<x3#101:<h3#39:<h2#40:
  1587. # qhasm: r1x2 = *(float64 *) &r1
  1588. # asm 1: fldl <r1=stack64#15
  1589. # asm 2: fldl <r1=144(%rsp)
  1590. fldl 144(%rsp)
  1591. # comment:fpstackfrombottom:<x2#100:<h0#42:<h1#41:<x3#101:<h3#39:<h2#40:<r1x2#106:
  1592. # qhasm: r1x2 *= x2
  1593. # asm 1: fmul <x2=float80#7,<r1x2=float80#1
  1594. # asm 2: fmul <x2=%st(6),<r1x2=%st(0)
  1595. fmul %st(6),%st(0)
  1596. # comment:fpstackfrombottom:<x2#100:<h0#42:<h1#41:<x3#101:<h3#39:<h2#40:<r1x2#106:
  1597. # qhasm: h3 += r1x2
  1598. # asm 1: faddp <r1x2=float80#1,<h3=float80#3
  1599. # asm 2: faddp <r1x2=%st(0),<h3=%st(2)
  1600. faddp %st(0),%st(2)
  1601. # comment:fpstackfrombottom:<x2#100:<h0#42:<h1#41:<x3#101:<h3#39:<h2#40:
  1602. # qhasm: r0x2 = *(float64 *) &r0
  1603. # asm 1: fldl <r0=stack64#14
  1604. # asm 2: fldl <r0=136(%rsp)
  1605. fldl 136(%rsp)
  1606. # comment:fpstackfrombottom:<x2#100:<h0#42:<h1#41:<x3#101:<h3#39:<h2#40:<r0x2#107:
  1607. # qhasm: r0x2 *= x2
  1608. # asm 1: fmul <x2=float80#7,<r0x2=float80#1
  1609. # asm 2: fmul <x2=%st(6),<r0x2=%st(0)
  1610. fmul %st(6),%st(0)
  1611. # comment:fpstackfrombottom:<x2#100:<h0#42:<h1#41:<x3#101:<h3#39:<h2#40:<r0x2#107:
  1612. # qhasm: h2 += r0x2
  1613. # asm 1: faddp <r0x2=float80#1,<h2=float80#2
  1614. # asm 2: faddp <r0x2=%st(0),<h2=%st(1)
  1615. faddp %st(0),%st(1)
  1616. # comment:fpstackfrombottom:<x2#100:<h0#42:<h1#41:<x3#101:<h3#39:<h2#40:
  1617. # qhasm: sr3x2 = *(float64 *) &sr3
  1618. # asm 1: fldl <sr3=stack64#20
  1619. # asm 2: fldl <sr3=184(%rsp)
  1620. fldl 184(%rsp)
  1621. # comment:fpstackfrombottom:<x2#100:<h0#42:<h1#41:<x3#101:<h3#39:<h2#40:<sr3x2#108:
  1622. # qhasm: sr3x2 *= x2
  1623. # asm 1: fmul <x2=float80#7,<sr3x2=float80#1
  1624. # asm 2: fmul <x2=%st(6),<sr3x2=%st(0)
  1625. fmul %st(6),%st(0)
  1626. # comment:fpstackfrombottom:<x2#100:<h0#42:<h1#41:<x3#101:<h3#39:<h2#40:<sr3x2#108:
  1627. # qhasm: h1 += sr3x2
  1628. # asm 1: faddp <sr3x2=float80#1,<h1=float80#5
  1629. # asm 2: faddp <sr3x2=%st(0),<h1=%st(4)
  1630. faddp %st(0),%st(4)
  1631. # comment:fpstackfrombottom:<x2#100:<h0#42:<h1#41:<x3#101:<h3#39:<h2#40:
  1632. # qhasm: sr2x2 = *(float64 *) &sr2
  1633. # asm 1: fldl <sr2=stack64#18
  1634. # asm 2: fldl <sr2=168(%rsp)
  1635. fldl 168(%rsp)
  1636. # comment:fpstackfrombottom:<x2#100:<h0#42:<h1#41:<x3#101:<h3#39:<h2#40:<sr2x2#109:
  1637. # qhasm: sr2x2 *= x2
  1638. # asm 1: fmulp <x2=float80#1,<sr2x2=float80#7
  1639. # asm 2: fmulp <x2=%st(0),<sr2x2=%st(6)
  1640. fmulp %st(0),%st(6)
  1641. # comment:fpstackfrombottom:<sr2x2#109:<h0#42:<h1#41:<x3#101:<h3#39:<h2#40:
  1642. # qhasm: internal stacktop sr2x2
  1643. # asm 1: fxch <sr2x2=float80#6
  1644. # asm 2: fxch <sr2x2=%st(5)
  1645. fxch %st(5)
  1646. # qhasm: h0 += sr2x2
  1647. # asm 1: faddp <sr2x2=float80#1,<h0=float80#5
  1648. # asm 2: faddp <sr2x2=%st(0),<h0=%st(4)
  1649. faddp %st(0),%st(4)
  1650. # comment:fpstackfrombottom:<h2#40:<h0#42:<h1#41:<x3#101:<h3#39:
  1651. # qhasm: r0x3 = *(float64 *) &r0
  1652. # asm 1: fldl <r0=stack64#14
  1653. # asm 2: fldl <r0=136(%rsp)
  1654. fldl 136(%rsp)
  1655. # comment:fpstackfrombottom:<h2#40:<h0#42:<h1#41:<x3#101:<h3#39:<r0x3#110:
  1656. # qhasm: r0x3 *= x3
  1657. # asm 1: fmul <x3=float80#3,<r0x3=float80#1
  1658. # asm 2: fmul <x3=%st(2),<r0x3=%st(0)
  1659. fmul %st(2),%st(0)
  1660. # comment:fpstackfrombottom:<h2#40:<h0#42:<h1#41:<x3#101:<h3#39:<r0x3#110:
  1661. # qhasm: h3 += r0x3
  1662. # asm 1: faddp <r0x3=float80#1,<h3=float80#2
  1663. # asm 2: faddp <r0x3=%st(0),<h3=%st(1)
  1664. faddp %st(0),%st(1)
  1665. # comment:fpstackfrombottom:<h2#40:<h0#42:<h1#41:<x3#101:<h3#39:
  1666. # qhasm: sr3x3 = *(float64 *) &sr3
  1667. # asm 1: fldl <sr3=stack64#20
  1668. # asm 2: fldl <sr3=184(%rsp)
  1669. fldl 184(%rsp)
  1670. # comment:fpstackfrombottom:<h2#40:<h0#42:<h1#41:<x3#101:<h3#39:<sr3x3#111:
  1671. # qhasm: sr3x3 *= x3
  1672. # asm 1: fmul <x3=float80#3,<sr3x3=float80#1
  1673. # asm 2: fmul <x3=%st(2),<sr3x3=%st(0)
  1674. fmul %st(2),%st(0)
  1675. # comment:fpstackfrombottom:<h2#40:<h0#42:<h1#41:<x3#101:<h3#39:<sr3x3#111:
  1676. # qhasm: h2 += sr3x3
  1677. # asm 1: faddp <sr3x3=float80#1,<h2=float80#6
  1678. # asm 2: faddp <sr3x3=%st(0),<h2=%st(5)
  1679. faddp %st(0),%st(5)
  1680. # comment:fpstackfrombottom:<h2#40:<h0#42:<h1#41:<x3#101:<h3#39:
  1681. # qhasm: sr2x3 = *(float64 *) &sr2
  1682. # asm 1: fldl <sr2=stack64#18
  1683. # asm 2: fldl <sr2=168(%rsp)
  1684. fldl 168(%rsp)
  1685. # comment:fpstackfrombottom:<h2#40:<h0#42:<h1#41:<x3#101:<h3#39:<sr2x3#112:
  1686. # qhasm: sr2x3 *= x3
  1687. # asm 1: fmul <x3=float80#3,<sr2x3=float80#1
  1688. # asm 2: fmul <x3=%st(2),<sr2x3=%st(0)
  1689. fmul %st(2),%st(0)
  1690. # comment:fpstackfrombottom:<h2#40:<h0#42:<h1#41:<x3#101:<h3#39:<sr2x3#112:
  1691. # qhasm: h1 += sr2x3
  1692. # asm 1: faddp <sr2x3=float80#1,<h1=float80#4
  1693. # asm 2: faddp <sr2x3=%st(0),<h1=%st(3)
  1694. faddp %st(0),%st(3)
  1695. # comment:fpstackfrombottom:<h2#40:<h0#42:<h1#41:<x3#101:<h3#39:
  1696. # qhasm: sr1x3 = *(float64 *) &sr1
  1697. # asm 1: fldl <sr1=stack64#16
  1698. # asm 2: fldl <sr1=152(%rsp)
  1699. fldl 152(%rsp)
  1700. # comment:fpstackfrombottom:<h2#40:<h0#42:<h1#41:<x3#101:<h3#39:<sr1x3#113:
  1701. # qhasm: sr1x3 *= x3
  1702. # asm 1: fmulp <x3=float80#1,<sr1x3=float80#3
  1703. # asm 2: fmulp <x3=%st(0),<sr1x3=%st(2)
  1704. fmulp %st(0),%st(2)
  1705. # comment:fpstackfrombottom:<h2#40:<h0#42:<h1#41:<sr1x3#113:<h3#39:
  1706. # qhasm: internal stacktop sr1x3
  1707. # asm 1: fxch <sr1x3=float80#2
  1708. # asm 2: fxch <sr1x3=%st(1)
  1709. fxch %st(1)
  1710. # qhasm: h0 += sr1x3
  1711. # asm 1: faddp <sr1x3=float80#1,<h0=float80#4
  1712. # asm 2: faddp <sr1x3=%st(0),<h0=%st(3)
  1713. faddp %st(0),%st(3)
  1714. # comment:fpstackfrombottom:<h2#40:<h0#42:<h1#41:<h3#39:
  1715. # comment:automatically reorganizing fp stack for fallthrough
  1716. # qhasm: internal stacktop h2
  1717. # asm 1: fxch <h2=float80#4
  1718. # asm 2: fxch <h2=%st(3)
  1719. fxch %st(3)
  1720. # comment:fpstackfrombottom:<h3#39:<h0#42:<h1#41:<h2#40:
  1721. # qhasm: internal stacktop h0
  1722. # asm 1: fxch <h0=float80#3
  1723. # asm 2: fxch <h0=%st(2)
  1724. fxch %st(2)
  1725. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1726. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1727. # qhasm: nomorebytes:
  1728. ._nomorebytes:
  1729. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:
  1730. # qhasm: x0 = *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha130
  1731. fldl crypto_onetimeauth_poly1305_amd64_alpha130(%rip)
  1732. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:<x0#114:
  1733. # qhasm: x0 += h3
  1734. # asm 1: fadd <h3=float80#5,<x0=float80#1
  1735. # asm 2: fadd <h3=%st(4),<x0=%st(0)
  1736. fadd %st(4),%st(0)
  1737. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:<x0#114:
  1738. # qhasm: x0 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha130
  1739. fsubl crypto_onetimeauth_poly1305_amd64_alpha130(%rip)
  1740. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:<x0#114:
  1741. # qhasm: h3 -= x0
  1742. # asm 1: fsubr <x0=float80#1,<h3=float80#5
  1743. # asm 2: fsubr <x0=%st(0),<h3=%st(4)
  1744. fsubr %st(0),%st(4)
  1745. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:<x0#114:
  1746. # qhasm: x0 *= *(float64 *) &crypto_onetimeauth_poly1305_amd64_scale
  1747. fmull crypto_onetimeauth_poly1305_amd64_scale(%rip)
  1748. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:<x0#114:
  1749. # qhasm: x1 = *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha32
  1750. fldl crypto_onetimeauth_poly1305_amd64_alpha32(%rip)
  1751. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:<x0#114:<x1#115:
  1752. # qhasm: x1 += h0
  1753. # asm 1: fadd <h0=float80#3,<x1=float80#1
  1754. # asm 2: fadd <h0=%st(2),<x1=%st(0)
  1755. fadd %st(2),%st(0)
  1756. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:<x0#114:<x1#115:
  1757. # qhasm: x1 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha32
  1758. fsubl crypto_onetimeauth_poly1305_amd64_alpha32(%rip)
  1759. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:<x0#114:<x1#115:
  1760. # qhasm: h0 -= x1
  1761. # asm 1: fsubr <x1=float80#1,<h0=float80#3
  1762. # asm 2: fsubr <x1=%st(0),<h0=%st(2)
  1763. fsubr %st(0),%st(2)
  1764. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:<x0#114:<x1#115:
  1765. # qhasm: x2 = *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha64
  1766. fldl crypto_onetimeauth_poly1305_amd64_alpha64(%rip)
  1767. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:<x0#114:<x1#115:<x2#116:
  1768. # qhasm: x2 += h1
  1769. # asm 1: fadd <h1=float80#5,<x2=float80#1
  1770. # asm 2: fadd <h1=%st(4),<x2=%st(0)
  1771. fadd %st(4),%st(0)
  1772. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:<x0#114:<x1#115:<x2#116:
  1773. # qhasm: x2 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha64
  1774. fsubl crypto_onetimeauth_poly1305_amd64_alpha64(%rip)
  1775. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:<x0#114:<x1#115:<x2#116:
  1776. # qhasm: h1 -= x2
  1777. # asm 1: fsubr <x2=float80#1,<h1=float80#5
  1778. # asm 2: fsubr <x2=%st(0),<h1=%st(4)
  1779. fsubr %st(0),%st(4)
  1780. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:<x0#114:<x1#115:<x2#116:
  1781. # qhasm: x3 = *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha96
  1782. fldl crypto_onetimeauth_poly1305_amd64_alpha96(%rip)
  1783. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:<x0#114:<x1#115:<x2#116:<x3#117:
  1784. # qhasm: x3 += h2
  1785. # asm 1: fadd <h2=float80#7,<x3=float80#1
  1786. # asm 2: fadd <h2=%st(6),<x3=%st(0)
  1787. fadd %st(6),%st(0)
  1788. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:<x0#114:<x1#115:<x2#116:<x3#117:
  1789. # qhasm: x3 -= *(float64 *) &crypto_onetimeauth_poly1305_amd64_alpha96
  1790. fsubl crypto_onetimeauth_poly1305_amd64_alpha96(%rip)
  1791. # comment:fpstackfrombottom:<h3#39:<h2#40:<h1#41:<h0#42:<x0#114:<x1#115:<x2#116:<x3#117:
  1792. # qhasm: stacktop h2
  1793. # asm 1: fxch <h2=float80#7
  1794. # asm 2: fxch <h2=%st(6)
  1795. fxch %st(6)
  1796. # comment:fpstackfrombottom:<h3#39:<x3#117:<h1#41:<h0#42:<x0#114:<x1#115:<x2#116:<h2#40:
  1797. # qhasm: h2 -= x3
  1798. # asm 1: fsub <x3=float80#7,<h2=float80#1
  1799. # asm 2: fsub <x3=%st(6),<h2=%st(0)
  1800. fsub %st(6),%st(0)
  1801. # comment:fpstackfrombottom:<h3#39:<x3#117:<h1#41:<h0#42:<x0#114:<x1#115:<x2#116:<h2#40:
  1802. # qhasm: internal stacktop h0
  1803. # asm 1: fxch <h0=float80#5
  1804. # asm 2: fxch <h0=%st(4)
  1805. fxch %st(4)
  1806. # qhasm: x0 += h0
  1807. # asm 1: faddp <h0=float80#1,<x0=float80#4
  1808. # asm 2: faddp <h0=%st(0),<x0=%st(3)
  1809. faddp %st(0),%st(3)
  1810. # comment:fpstackfrombottom:<h3#39:<x3#117:<h1#41:<h2#40:<x0#114:<x1#115:<x2#116:
  1811. # qhasm: internal stacktop h1
  1812. # asm 1: fxch <h1=float80#5
  1813. # asm 2: fxch <h1=%st(4)
  1814. fxch %st(4)
  1815. # qhasm: x1 += h1
  1816. # asm 1: faddp <h1=float80#1,<x1=float80#2
  1817. # asm 2: faddp <h1=%st(0),<x1=%st(1)
  1818. faddp %st(0),%st(1)
  1819. # comment:fpstackfrombottom:<h3#39:<x3#117:<x2#116:<h2#40:<x0#114:<x1#115:
  1820. # qhasm: internal stacktop h2
  1821. # asm 1: fxch <h2=float80#3
  1822. # asm 2: fxch <h2=%st(2)
  1823. fxch %st(2)
  1824. # qhasm: x2 += h2
  1825. # asm 1: faddp <h2=float80#1,<x2=float80#4
  1826. # asm 2: faddp <h2=%st(0),<x2=%st(3)
  1827. faddp %st(0),%st(3)
  1828. # comment:fpstackfrombottom:<h3#39:<x3#117:<x2#116:<x1#115:<x0#114:
  1829. # qhasm: internal stacktop h3
  1830. # asm 1: fxch <h3=float80#5
  1831. # asm 2: fxch <h3=%st(4)
  1832. fxch %st(4)
  1833. # qhasm: x3 += h3
  1834. # asm 1: faddp <h3=float80#1,<x3=float80#4
  1835. # asm 2: faddp <h3=%st(0),<x3=%st(3)
  1836. faddp %st(0),%st(3)
  1837. # comment:fpstackfrombottom:<x0#114:<x3#117:<x2#116:<x1#115:
  1838. # qhasm: internal stacktop x0
  1839. # asm 1: fxch <x0=float80#4
  1840. # asm 2: fxch <x0=%st(3)
  1841. fxch %st(3)
  1842. # qhasm: x0 += *(float64 *) &crypto_onetimeauth_poly1305_amd64_hoffset0
  1843. faddl crypto_onetimeauth_poly1305_amd64_hoffset0(%rip)
  1844. # comment:fpstackfrombottom:<x1#115:<x3#117:<x2#116:<x0#114:
  1845. # qhasm: internal stacktop x1
  1846. # asm 1: fxch <x1=float80#4
  1847. # asm 2: fxch <x1=%st(3)
  1848. fxch %st(3)
  1849. # qhasm: x1 += *(float64 *) &crypto_onetimeauth_poly1305_amd64_hoffset1
  1850. faddl crypto_onetimeauth_poly1305_amd64_hoffset1(%rip)
  1851. # comment:fpstackfrombottom:<x0#114:<x3#117:<x2#116:<x1#115:
  1852. # qhasm: internal stacktop x2
  1853. # asm 1: fxch <x2=float80#2
  1854. # asm 2: fxch <x2=%st(1)
  1855. fxch %st(1)
  1856. # qhasm: x2 += *(float64 *) &crypto_onetimeauth_poly1305_amd64_hoffset2
  1857. faddl crypto_onetimeauth_poly1305_amd64_hoffset2(%rip)
  1858. # comment:fpstackfrombottom:<x0#114:<x3#117:<x1#115:<x2#116:
  1859. # qhasm: internal stacktop x3
  1860. # asm 1: fxch <x3=float80#3
  1861. # asm 2: fxch <x3=%st(2)
  1862. fxch %st(2)
  1863. # qhasm: x3 += *(float64 *) &crypto_onetimeauth_poly1305_amd64_hoffset3
  1864. faddl crypto_onetimeauth_poly1305_amd64_hoffset3(%rip)
  1865. # comment:fpstackfrombottom:<x0#114:<x2#116:<x1#115:<x3#117:
  1866. # qhasm: internal stacktop x0
  1867. # asm 1: fxch <x0=float80#4
  1868. # asm 2: fxch <x0=%st(3)
  1869. fxch %st(3)
  1870. # qhasm: *(float64 *) &d0 = x0
  1871. # asm 1: fstpl >d0=stack64#10
  1872. # asm 2: fstpl >d0=104(%rsp)
  1873. fstpl 104(%rsp)
  1874. # comment:fpstackfrombottom:<x3#117:<x2#116:<x1#115:
  1875. # qhasm: *(float64 *) &d1 = x1
  1876. # asm 1: fstpl >d1=stack64#11
  1877. # asm 2: fstpl >d1=112(%rsp)
  1878. fstpl 112(%rsp)
  1879. # comment:fpstackfrombottom:<x3#117:<x2#116:
  1880. # qhasm: *(float64 *) &d2 = x2
  1881. # asm 1: fstpl >d2=stack64#12
  1882. # asm 2: fstpl >d2=120(%rsp)
  1883. fstpl 120(%rsp)
  1884. # comment:fpstackfrombottom:<x3#117:
  1885. # qhasm: *(float64 *) &d3 = x3
  1886. # asm 1: fstpl >d3=stack64#13
  1887. # asm 2: fstpl >d3=128(%rsp)
  1888. fstpl 128(%rsp)
  1889. # comment:fpstackfrombottom:
  1890. # qhasm: int64 f0
  1891. # qhasm: int64 f1
  1892. # qhasm: int64 f2
  1893. # qhasm: int64 f3
  1894. # qhasm: int64 f4
  1895. # qhasm: int64 g0
  1896. # qhasm: int64 g1
  1897. # qhasm: int64 g2
  1898. # qhasm: int64 g3
  1899. # qhasm: int64 f
  1900. # qhasm: int64 notf
  1901. # qhasm: stack64 f1_stack
  1902. # qhasm: stack64 f2_stack
  1903. # qhasm: stack64 f3_stack
  1904. # qhasm: stack64 f4_stack
  1905. # qhasm: stack64 g0_stack
  1906. # qhasm: stack64 g1_stack
  1907. # qhasm: stack64 g2_stack
  1908. # qhasm: stack64 g3_stack
  1909. # qhasm: g0 = top d0
  1910. # asm 1: movl <d0=stack64#10,>g0=int64#1d
  1911. # asm 2: movl <d0=108(%rsp),>g0=%edi
  1912. movl 108(%rsp),%edi
  1913. # qhasm: (uint32) g0 &= 63
  1914. # asm 1: and $63,<g0=int64#1d
  1915. # asm 2: and $63,<g0=%edi
  1916. and $63,%edi
  1917. # qhasm: g1 = top d1
  1918. # asm 1: movl <d1=stack64#11,>g1=int64#2d
  1919. # asm 2: movl <d1=116(%rsp),>g1=%esi
  1920. movl 116(%rsp),%esi
  1921. # qhasm: (uint32) g1 &= 63
  1922. # asm 1: and $63,<g1=int64#2d
  1923. # asm 2: and $63,<g1=%esi
  1924. and $63,%esi
  1925. # qhasm: g2 = top d2
  1926. # asm 1: movl <d2=stack64#12,>g2=int64#3d
  1927. # asm 2: movl <d2=124(%rsp),>g2=%edx
  1928. movl 124(%rsp),%edx
  1929. # qhasm: (uint32) g2 &= 63
  1930. # asm 1: and $63,<g2=int64#3d
  1931. # asm 2: and $63,<g2=%edx
  1932. and $63,%edx
  1933. # qhasm: g3 = top d3
  1934. # asm 1: movl <d3=stack64#13,>g3=int64#4d
  1935. # asm 2: movl <d3=132(%rsp),>g3=%ecx
  1936. movl 132(%rsp),%ecx
  1937. # qhasm: (uint32) g3 &= 63
  1938. # asm 1: and $63,<g3=int64#4d
  1939. # asm 2: and $63,<g3=%ecx
  1940. and $63,%ecx
  1941. # qhasm: f1 = bottom d1
  1942. # asm 1: movl <d1=stack64#11,>f1=int64#5d
  1943. # asm 2: movl <d1=112(%rsp),>f1=%r8d
  1944. movl 112(%rsp),%r8d
  1945. # qhasm: carry? (uint32) f1 += g0
  1946. # asm 1: add <g0=int64#1d,<f1=int64#5d
  1947. # asm 2: add <g0=%edi,<f1=%r8d
  1948. add %edi,%r8d
  1949. # qhasm: f1_stack = f1
  1950. # asm 1: movq <f1=int64#5,>f1_stack=stack64#11
  1951. # asm 2: movq <f1=%r8,>f1_stack=112(%rsp)
  1952. movq %r8,112(%rsp)
  1953. # qhasm: f2 = bottom d2
  1954. # asm 1: movl <d2=stack64#12,>f2=int64#1d
  1955. # asm 2: movl <d2=120(%rsp),>f2=%edi
  1956. movl 120(%rsp),%edi
  1957. # qhasm: carry? (uint32) f2 += g1 + carry
  1958. # asm 1: adc <g1=int64#2d,<f2=int64#1d
  1959. # asm 2: adc <g1=%esi,<f2=%edi
  1960. adc %esi,%edi
  1961. # qhasm: f2_stack = f2
  1962. # asm 1: movq <f2=int64#1,>f2_stack=stack64#12
  1963. # asm 2: movq <f2=%rdi,>f2_stack=120(%rsp)
  1964. movq %rdi,120(%rsp)
  1965. # qhasm: f3 = bottom d3
  1966. # asm 1: movl <d3=stack64#13,>f3=int64#1d
  1967. # asm 2: movl <d3=128(%rsp),>f3=%edi
  1968. movl 128(%rsp),%edi
  1969. # qhasm: carry? (uint32) f3 += g2 + carry
  1970. # asm 1: adc <g2=int64#3d,<f3=int64#1d
  1971. # asm 2: adc <g2=%edx,<f3=%edi
  1972. adc %edx,%edi
  1973. # qhasm: f3_stack = f3
  1974. # asm 1: movq <f3=int64#1,>f3_stack=stack64#13
  1975. # asm 2: movq <f3=%rdi,>f3_stack=128(%rsp)
  1976. movq %rdi,128(%rsp)
  1977. # qhasm: f4 = 0
  1978. # asm 1: mov $0,>f4=int64#1
  1979. # asm 2: mov $0,>f4=%rdi
  1980. mov $0,%rdi
  1981. # qhasm: carry? (uint32) f4 += g3 + carry
  1982. # asm 1: adc <g3=int64#4d,<f4=int64#1d
  1983. # asm 2: adc <g3=%ecx,<f4=%edi
  1984. adc %ecx,%edi
  1985. # qhasm: f4_stack = f4
  1986. # asm 1: movq <f4=int64#1,>f4_stack=stack64#14
  1987. # asm 2: movq <f4=%rdi,>f4_stack=136(%rsp)
  1988. movq %rdi,136(%rsp)
  1989. # qhasm: g0 = 5
  1990. # asm 1: mov $5,>g0=int64#1
  1991. # asm 2: mov $5,>g0=%rdi
  1992. mov $5,%rdi
  1993. # qhasm: f0 = bottom d0
  1994. # asm 1: movl <d0=stack64#10,>f0=int64#2d
  1995. # asm 2: movl <d0=104(%rsp),>f0=%esi
  1996. movl 104(%rsp),%esi
  1997. # qhasm: carry? (uint32) g0 += f0
  1998. # asm 1: add <f0=int64#2d,<g0=int64#1d
  1999. # asm 2: add <f0=%esi,<g0=%edi
  2000. add %esi,%edi
  2001. # qhasm: g0_stack = g0
  2002. # asm 1: movq <g0=int64#1,>g0_stack=stack64#10
  2003. # asm 2: movq <g0=%rdi,>g0_stack=104(%rsp)
  2004. movq %rdi,104(%rsp)
  2005. # qhasm: g1 = 0
  2006. # asm 1: mov $0,>g1=int64#1
  2007. # asm 2: mov $0,>g1=%rdi
  2008. mov $0,%rdi
  2009. # qhasm: f1 = f1_stack
  2010. # asm 1: movq <f1_stack=stack64#11,>f1=int64#3
  2011. # asm 2: movq <f1_stack=112(%rsp),>f1=%rdx
  2012. movq 112(%rsp),%rdx
  2013. # qhasm: carry? (uint32) g1 += f1 + carry
  2014. # asm 1: adc <f1=int64#3d,<g1=int64#1d
  2015. # asm 2: adc <f1=%edx,<g1=%edi
  2016. adc %edx,%edi
  2017. # qhasm: g1_stack = g1
  2018. # asm 1: movq <g1=int64#1,>g1_stack=stack64#11
  2019. # asm 2: movq <g1=%rdi,>g1_stack=112(%rsp)
  2020. movq %rdi,112(%rsp)
  2021. # qhasm: g2 = 0
  2022. # asm 1: mov $0,>g2=int64#1
  2023. # asm 2: mov $0,>g2=%rdi
  2024. mov $0,%rdi
  2025. # qhasm: f2 = f2_stack
  2026. # asm 1: movq <f2_stack=stack64#12,>f2=int64#4
  2027. # asm 2: movq <f2_stack=120(%rsp),>f2=%rcx
  2028. movq 120(%rsp),%rcx
  2029. # qhasm: carry? (uint32) g2 += f2 + carry
  2030. # asm 1: adc <f2=int64#4d,<g2=int64#1d
  2031. # asm 2: adc <f2=%ecx,<g2=%edi
  2032. adc %ecx,%edi
  2033. # qhasm: g2_stack = g2
  2034. # asm 1: movq <g2=int64#1,>g2_stack=stack64#12
  2035. # asm 2: movq <g2=%rdi,>g2_stack=120(%rsp)
  2036. movq %rdi,120(%rsp)
  2037. # qhasm: g3 = 0
  2038. # asm 1: mov $0,>g3=int64#1
  2039. # asm 2: mov $0,>g3=%rdi
  2040. mov $0,%rdi
  2041. # qhasm: f3 = f3_stack
  2042. # asm 1: movq <f3_stack=stack64#13,>f3=int64#5
  2043. # asm 2: movq <f3_stack=128(%rsp),>f3=%r8
  2044. movq 128(%rsp),%r8
  2045. # qhasm: carry? (uint32) g3 += f3 + carry
  2046. # asm 1: adc <f3=int64#5d,<g3=int64#1d
  2047. # asm 2: adc <f3=%r8d,<g3=%edi
  2048. adc %r8d,%edi
  2049. # qhasm: g3_stack = g3
  2050. # asm 1: movq <g3=int64#1,>g3_stack=stack64#13
  2051. # asm 2: movq <g3=%rdi,>g3_stack=128(%rsp)
  2052. movq %rdi,128(%rsp)
  2053. # qhasm: f = 0xfffffffc
  2054. # asm 1: mov $0xfffffffc,>f=int64#1
  2055. # asm 2: mov $0xfffffffc,>f=%rdi
  2056. mov $0xfffffffc,%rdi
  2057. # qhasm: f4 = f4_stack
  2058. # asm 1: movq <f4_stack=stack64#14,>f4=int64#6
  2059. # asm 2: movq <f4_stack=136(%rsp),>f4=%r9
  2060. movq 136(%rsp),%r9
  2061. # qhasm: carry? (uint32) f += f4 + carry
  2062. # asm 1: adc <f4=int64#6d,<f=int64#1d
  2063. # asm 2: adc <f4=%r9d,<f=%edi
  2064. adc %r9d,%edi
  2065. # qhasm: (int32) f >>= 16
  2066. # asm 1: sar $16,<f=int64#1d
  2067. # asm 2: sar $16,<f=%edi
  2068. sar $16,%edi
  2069. # qhasm: notf = f
  2070. # asm 1: mov <f=int64#1,>notf=int64#6
  2071. # asm 2: mov <f=%rdi,>notf=%r9
  2072. mov %rdi,%r9
  2073. # qhasm: (uint32) notf ^= 0xffffffff
  2074. # asm 1: xor $0xffffffff,<notf=int64#6d
  2075. # asm 2: xor $0xffffffff,<notf=%r9d
  2076. xor $0xffffffff,%r9d
  2077. # qhasm: f0 &= f
  2078. # asm 1: and <f=int64#1,<f0=int64#2
  2079. # asm 2: and <f=%rdi,<f0=%rsi
  2080. and %rdi,%rsi
  2081. # qhasm: g0 = g0_stack
  2082. # asm 1: movq <g0_stack=stack64#10,>g0=int64#7
  2083. # asm 2: movq <g0_stack=104(%rsp),>g0=%rax
  2084. movq 104(%rsp),%rax
  2085. # qhasm: g0 &= notf
  2086. # asm 1: and <notf=int64#6,<g0=int64#7
  2087. # asm 2: and <notf=%r9,<g0=%rax
  2088. and %r9,%rax
  2089. # qhasm: f0 |= g0
  2090. # asm 1: or <g0=int64#7,<f0=int64#2
  2091. # asm 2: or <g0=%rax,<f0=%rsi
  2092. or %rax,%rsi
  2093. # qhasm: f1 &= f
  2094. # asm 1: and <f=int64#1,<f1=int64#3
  2095. # asm 2: and <f=%rdi,<f1=%rdx
  2096. and %rdi,%rdx
  2097. # qhasm: g1 = g1_stack
  2098. # asm 1: movq <g1_stack=stack64#11,>g1=int64#7
  2099. # asm 2: movq <g1_stack=112(%rsp),>g1=%rax
  2100. movq 112(%rsp),%rax
  2101. # qhasm: g1 &= notf
  2102. # asm 1: and <notf=int64#6,<g1=int64#7
  2103. # asm 2: and <notf=%r9,<g1=%rax
  2104. and %r9,%rax
  2105. # qhasm: f1 |= g1
  2106. # asm 1: or <g1=int64#7,<f1=int64#3
  2107. # asm 2: or <g1=%rax,<f1=%rdx
  2108. or %rax,%rdx
  2109. # qhasm: f2 &= f
  2110. # asm 1: and <f=int64#1,<f2=int64#4
  2111. # asm 2: and <f=%rdi,<f2=%rcx
  2112. and %rdi,%rcx
  2113. # qhasm: g2 = g2_stack
  2114. # asm 1: movq <g2_stack=stack64#12,>g2=int64#7
  2115. # asm 2: movq <g2_stack=120(%rsp),>g2=%rax
  2116. movq 120(%rsp),%rax
  2117. # qhasm: g2 &= notf
  2118. # asm 1: and <notf=int64#6,<g2=int64#7
  2119. # asm 2: and <notf=%r9,<g2=%rax
  2120. and %r9,%rax
  2121. # qhasm: f2 |= g2
  2122. # asm 1: or <g2=int64#7,<f2=int64#4
  2123. # asm 2: or <g2=%rax,<f2=%rcx
  2124. or %rax,%rcx
  2125. # qhasm: f3 &= f
  2126. # asm 1: and <f=int64#1,<f3=int64#5
  2127. # asm 2: and <f=%rdi,<f3=%r8
  2128. and %rdi,%r8
  2129. # qhasm: g3 = g3_stack
  2130. # asm 1: movq <g3_stack=stack64#13,>g3=int64#1
  2131. # asm 2: movq <g3_stack=128(%rsp),>g3=%rdi
  2132. movq 128(%rsp),%rdi
  2133. # qhasm: g3 &= notf
  2134. # asm 1: and <notf=int64#6,<g3=int64#1
  2135. # asm 2: and <notf=%r9,<g3=%rdi
  2136. and %r9,%rdi
  2137. # qhasm: f3 |= g3
  2138. # asm 1: or <g3=int64#1,<f3=int64#5
  2139. # asm 2: or <g3=%rdi,<f3=%r8
  2140. or %rdi,%r8
  2141. # qhasm: out = out_stack
  2142. # asm 1: movq <out_stack=stack64#8,>out=int64#1
  2143. # asm 2: movq <out_stack=88(%rsp),>out=%rdi
  2144. movq 88(%rsp),%rdi
  2145. # qhasm: k = k_stack
  2146. # asm 1: movq <k_stack=stack64#9,>k=int64#6
  2147. # asm 2: movq <k_stack=96(%rsp),>k=%r9
  2148. movq 96(%rsp),%r9
  2149. # qhasm: carry? (uint32) f0 += *(uint32 *) (k + 16)
  2150. # asm 1: addl 16(<k=int64#6),<f0=int64#2d
  2151. # asm 2: addl 16(<k=%r9),<f0=%esi
  2152. addl 16(%r9),%esi
  2153. # qhasm: carry? (uint32) f1 += *(uint32 *) (k + 20) + carry
  2154. # asm 1: adcl 20(<k=int64#6),<f1=int64#3d
  2155. # asm 2: adcl 20(<k=%r9),<f1=%edx
  2156. adcl 20(%r9),%edx
  2157. # qhasm: carry? (uint32) f2 += *(uint32 *) (k + 24) + carry
  2158. # asm 1: adcl 24(<k=int64#6),<f2=int64#4d
  2159. # asm 2: adcl 24(<k=%r9),<f2=%ecx
  2160. adcl 24(%r9),%ecx
  2161. # qhasm: carry? (uint32) f3 += *(uint32 *) (k + 28) + carry
  2162. # asm 1: adcl 28(<k=int64#6),<f3=int64#5d
  2163. # asm 2: adcl 28(<k=%r9),<f3=%r8d
  2164. adcl 28(%r9),%r8d
  2165. # qhasm: *(uint32 *) (out + 0) = f0
  2166. # asm 1: movl <f0=int64#2d,0(<out=int64#1)
  2167. # asm 2: movl <f0=%esi,0(<out=%rdi)
  2168. movl %esi,0(%rdi)
  2169. # qhasm: *(uint32 *) (out + 4) = f1
  2170. # asm 1: movl <f1=int64#3d,4(<out=int64#1)
  2171. # asm 2: movl <f1=%edx,4(<out=%rdi)
  2172. movl %edx,4(%rdi)
  2173. # qhasm: *(uint32 *) (out + 8) = f2
  2174. # asm 1: movl <f2=int64#4d,8(<out=int64#1)
  2175. # asm 2: movl <f2=%ecx,8(<out=%rdi)
  2176. movl %ecx,8(%rdi)
  2177. # qhasm: *(uint32 *) (out + 12) = f3
  2178. # asm 1: movl <f3=int64#5d,12(<out=int64#1)
  2179. # asm 2: movl <f3=%r8d,12(<out=%rdi)
  2180. movl %r8d,12(%rdi)
  2181. # qhasm: r11_caller = r11_stack
  2182. # asm 1: movq <r11_stack=stack64#1,>r11_caller=int64#9
  2183. # asm 2: movq <r11_stack=32(%rsp),>r11_caller=%r11
  2184. movq 32(%rsp),%r11
  2185. # qhasm: r12_caller = r12_stack
  2186. # asm 1: movq <r12_stack=stack64#2,>r12_caller=int64#10
  2187. # asm 2: movq <r12_stack=40(%rsp),>r12_caller=%r12
  2188. movq 40(%rsp),%r12
  2189. # qhasm: r13_caller = r13_stack
  2190. # asm 1: movq <r13_stack=stack64#3,>r13_caller=int64#11
  2191. # asm 2: movq <r13_stack=48(%rsp),>r13_caller=%r13
  2192. movq 48(%rsp),%r13
  2193. # qhasm: r14_caller = r14_stack
  2194. # asm 1: movq <r14_stack=stack64#4,>r14_caller=int64#12
  2195. # asm 2: movq <r14_stack=56(%rsp),>r14_caller=%r14
  2196. movq 56(%rsp),%r14
  2197. # qhasm: r15_caller = r15_stack
  2198. # asm 1: movq <r15_stack=stack64#5,>r15_caller=int64#13
  2199. # asm 2: movq <r15_stack=64(%rsp),>r15_caller=%r15
  2200. movq 64(%rsp),%r15
  2201. # qhasm: rbx_caller = rbx_stack
  2202. # asm 1: movq <rbx_stack=stack64#6,>rbx_caller=int64#14
  2203. # asm 2: movq <rbx_stack=72(%rsp),>rbx_caller=%rbx
  2204. movq 72(%rsp),%rbx
  2205. # qhasm: rbp_caller = rbp_stack
  2206. # asm 1: movq <rbp_stack=stack64#7,>rbp_caller=int64#15
  2207. # asm 2: movq <rbp_stack=80(%rsp),>rbp_caller=%rbp
  2208. movq 80(%rsp),%rbp
  2209. # qhasm: leave
  2210. add %r11,%rsp
  2211. xor %rax,%rax
  2212. xor %rdx,%rdx
  2213. ret