rc4-md5-x86_64.s 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281
  1. .text
  2. .align 16
  3. .globl rc4_md5_enc
  4. .type rc4_md5_enc,@function
  5. rc4_md5_enc:
  6. .cfi_startproc
  7. cmpq $0,%r9
  8. je .Labort
  9. pushq %rbx
  10. .cfi_adjust_cfa_offset 8
  11. .cfi_offset %rbx,-16
  12. pushq %rbp
  13. .cfi_adjust_cfa_offset 8
  14. .cfi_offset %rbp,-24
  15. pushq %r12
  16. .cfi_adjust_cfa_offset 8
  17. .cfi_offset %r12,-32
  18. pushq %r13
  19. .cfi_adjust_cfa_offset 8
  20. .cfi_offset %r13,-40
  21. pushq %r14
  22. .cfi_adjust_cfa_offset 8
  23. .cfi_offset %r14,-48
  24. pushq %r15
  25. .cfi_adjust_cfa_offset 8
  26. .cfi_offset %r15,-56
  27. subq $40,%rsp
  28. .cfi_adjust_cfa_offset 40
  29. .Lbody:
  30. movq %rcx,%r11
  31. movq %r9,%r12
  32. movq %rsi,%r13
  33. movq %rdx,%r14
  34. movq %r8,%r15
  35. xorq %rbp,%rbp
  36. xorq %rcx,%rcx
  37. leaq 8(%rdi),%rdi
  38. movb -8(%rdi),%bpl
  39. movb -4(%rdi),%cl
  40. incb %bpl
  41. subq %r13,%r14
  42. movl (%rdi,%rbp,4),%eax
  43. addb %al,%cl
  44. leaq (%rdi,%rbp,4),%rsi
  45. shlq $6,%r12
  46. addq %r15,%r12
  47. movq %r12,16(%rsp)
  48. movq %r11,24(%rsp)
  49. movl 0(%r11),%r8d
  50. movl 4(%r11),%r9d
  51. movl 8(%r11),%r10d
  52. movl 12(%r11),%r11d
  53. jmp .Loop
  54. .align 16
  55. .Loop:
  56. movl %r8d,0(%rsp)
  57. movl %r9d,4(%rsp)
  58. movl %r10d,8(%rsp)
  59. movl %r11d,%r12d
  60. movl %r11d,12(%rsp)
  61. pxor %xmm0,%xmm0
  62. movl (%rdi,%rcx,4),%edx
  63. xorl %r10d,%r12d
  64. movl %eax,(%rdi,%rcx,4)
  65. andl %r9d,%r12d
  66. addl 0(%r15),%r8d
  67. addb %dl,%al
  68. movl 4(%rsi),%ebx
  69. addl $3614090360,%r8d
  70. xorl %r11d,%r12d
  71. movzbl %al,%eax
  72. movl %edx,0(%rsi)
  73. addl %r12d,%r8d
  74. addb %bl,%cl
  75. roll $7,%r8d
  76. movl %r10d,%r12d
  77. movd (%rdi,%rax,4),%xmm0
  78. addl %r9d,%r8d
  79. pxor %xmm1,%xmm1
  80. movl (%rdi,%rcx,4),%edx
  81. xorl %r9d,%r12d
  82. movl %ebx,(%rdi,%rcx,4)
  83. andl %r8d,%r12d
  84. addl 4(%r15),%r11d
  85. addb %dl,%bl
  86. movl 8(%rsi),%eax
  87. addl $3905402710,%r11d
  88. xorl %r10d,%r12d
  89. movzbl %bl,%ebx
  90. movl %edx,4(%rsi)
  91. addl %r12d,%r11d
  92. addb %al,%cl
  93. roll $12,%r11d
  94. movl %r9d,%r12d
  95. movd (%rdi,%rbx,4),%xmm1
  96. addl %r8d,%r11d
  97. movl (%rdi,%rcx,4),%edx
  98. xorl %r8d,%r12d
  99. movl %eax,(%rdi,%rcx,4)
  100. andl %r11d,%r12d
  101. addl 8(%r15),%r10d
  102. addb %dl,%al
  103. movl 12(%rsi),%ebx
  104. addl $606105819,%r10d
  105. xorl %r9d,%r12d
  106. movzbl %al,%eax
  107. movl %edx,8(%rsi)
  108. addl %r12d,%r10d
  109. addb %bl,%cl
  110. roll $17,%r10d
  111. movl %r8d,%r12d
  112. pinsrw $1,(%rdi,%rax,4),%xmm0
  113. addl %r11d,%r10d
  114. movl (%rdi,%rcx,4),%edx
  115. xorl %r11d,%r12d
  116. movl %ebx,(%rdi,%rcx,4)
  117. andl %r10d,%r12d
  118. addl 12(%r15),%r9d
  119. addb %dl,%bl
  120. movl 16(%rsi),%eax
  121. addl $3250441966,%r9d
  122. xorl %r8d,%r12d
  123. movzbl %bl,%ebx
  124. movl %edx,12(%rsi)
  125. addl %r12d,%r9d
  126. addb %al,%cl
  127. roll $22,%r9d
  128. movl %r11d,%r12d
  129. pinsrw $1,(%rdi,%rbx,4),%xmm1
  130. addl %r10d,%r9d
  131. movl (%rdi,%rcx,4),%edx
  132. xorl %r10d,%r12d
  133. movl %eax,(%rdi,%rcx,4)
  134. andl %r9d,%r12d
  135. addl 16(%r15),%r8d
  136. addb %dl,%al
  137. movl 20(%rsi),%ebx
  138. addl $4118548399,%r8d
  139. xorl %r11d,%r12d
  140. movzbl %al,%eax
  141. movl %edx,16(%rsi)
  142. addl %r12d,%r8d
  143. addb %bl,%cl
  144. roll $7,%r8d
  145. movl %r10d,%r12d
  146. pinsrw $2,(%rdi,%rax,4),%xmm0
  147. addl %r9d,%r8d
  148. movl (%rdi,%rcx,4),%edx
  149. xorl %r9d,%r12d
  150. movl %ebx,(%rdi,%rcx,4)
  151. andl %r8d,%r12d
  152. addl 20(%r15),%r11d
  153. addb %dl,%bl
  154. movl 24(%rsi),%eax
  155. addl $1200080426,%r11d
  156. xorl %r10d,%r12d
  157. movzbl %bl,%ebx
  158. movl %edx,20(%rsi)
  159. addl %r12d,%r11d
  160. addb %al,%cl
  161. roll $12,%r11d
  162. movl %r9d,%r12d
  163. pinsrw $2,(%rdi,%rbx,4),%xmm1
  164. addl %r8d,%r11d
  165. movl (%rdi,%rcx,4),%edx
  166. xorl %r8d,%r12d
  167. movl %eax,(%rdi,%rcx,4)
  168. andl %r11d,%r12d
  169. addl 24(%r15),%r10d
  170. addb %dl,%al
  171. movl 28(%rsi),%ebx
  172. addl $2821735955,%r10d
  173. xorl %r9d,%r12d
  174. movzbl %al,%eax
  175. movl %edx,24(%rsi)
  176. addl %r12d,%r10d
  177. addb %bl,%cl
  178. roll $17,%r10d
  179. movl %r8d,%r12d
  180. pinsrw $3,(%rdi,%rax,4),%xmm0
  181. addl %r11d,%r10d
  182. movl (%rdi,%rcx,4),%edx
  183. xorl %r11d,%r12d
  184. movl %ebx,(%rdi,%rcx,4)
  185. andl %r10d,%r12d
  186. addl 28(%r15),%r9d
  187. addb %dl,%bl
  188. movl 32(%rsi),%eax
  189. addl $4249261313,%r9d
  190. xorl %r8d,%r12d
  191. movzbl %bl,%ebx
  192. movl %edx,28(%rsi)
  193. addl %r12d,%r9d
  194. addb %al,%cl
  195. roll $22,%r9d
  196. movl %r11d,%r12d
  197. pinsrw $3,(%rdi,%rbx,4),%xmm1
  198. addl %r10d,%r9d
  199. movl (%rdi,%rcx,4),%edx
  200. xorl %r10d,%r12d
  201. movl %eax,(%rdi,%rcx,4)
  202. andl %r9d,%r12d
  203. addl 32(%r15),%r8d
  204. addb %dl,%al
  205. movl 36(%rsi),%ebx
  206. addl $1770035416,%r8d
  207. xorl %r11d,%r12d
  208. movzbl %al,%eax
  209. movl %edx,32(%rsi)
  210. addl %r12d,%r8d
  211. addb %bl,%cl
  212. roll $7,%r8d
  213. movl %r10d,%r12d
  214. pinsrw $4,(%rdi,%rax,4),%xmm0
  215. addl %r9d,%r8d
  216. movl (%rdi,%rcx,4),%edx
  217. xorl %r9d,%r12d
  218. movl %ebx,(%rdi,%rcx,4)
  219. andl %r8d,%r12d
  220. addl 36(%r15),%r11d
  221. addb %dl,%bl
  222. movl 40(%rsi),%eax
  223. addl $2336552879,%r11d
  224. xorl %r10d,%r12d
  225. movzbl %bl,%ebx
  226. movl %edx,36(%rsi)
  227. addl %r12d,%r11d
  228. addb %al,%cl
  229. roll $12,%r11d
  230. movl %r9d,%r12d
  231. pinsrw $4,(%rdi,%rbx,4),%xmm1
  232. addl %r8d,%r11d
  233. movl (%rdi,%rcx,4),%edx
  234. xorl %r8d,%r12d
  235. movl %eax,(%rdi,%rcx,4)
  236. andl %r11d,%r12d
  237. addl 40(%r15),%r10d
  238. addb %dl,%al
  239. movl 44(%rsi),%ebx
  240. addl $4294925233,%r10d
  241. xorl %r9d,%r12d
  242. movzbl %al,%eax
  243. movl %edx,40(%rsi)
  244. addl %r12d,%r10d
  245. addb %bl,%cl
  246. roll $17,%r10d
  247. movl %r8d,%r12d
  248. pinsrw $5,(%rdi,%rax,4),%xmm0
  249. addl %r11d,%r10d
  250. movl (%rdi,%rcx,4),%edx
  251. xorl %r11d,%r12d
  252. movl %ebx,(%rdi,%rcx,4)
  253. andl %r10d,%r12d
  254. addl 44(%r15),%r9d
  255. addb %dl,%bl
  256. movl 48(%rsi),%eax
  257. addl $2304563134,%r9d
  258. xorl %r8d,%r12d
  259. movzbl %bl,%ebx
  260. movl %edx,44(%rsi)
  261. addl %r12d,%r9d
  262. addb %al,%cl
  263. roll $22,%r9d
  264. movl %r11d,%r12d
  265. pinsrw $5,(%rdi,%rbx,4),%xmm1
  266. addl %r10d,%r9d
  267. movl (%rdi,%rcx,4),%edx
  268. xorl %r10d,%r12d
  269. movl %eax,(%rdi,%rcx,4)
  270. andl %r9d,%r12d
  271. addl 48(%r15),%r8d
  272. addb %dl,%al
  273. movl 52(%rsi),%ebx
  274. addl $1804603682,%r8d
  275. xorl %r11d,%r12d
  276. movzbl %al,%eax
  277. movl %edx,48(%rsi)
  278. addl %r12d,%r8d
  279. addb %bl,%cl
  280. roll $7,%r8d
  281. movl %r10d,%r12d
  282. pinsrw $6,(%rdi,%rax,4),%xmm0
  283. addl %r9d,%r8d
  284. movl (%rdi,%rcx,4),%edx
  285. xorl %r9d,%r12d
  286. movl %ebx,(%rdi,%rcx,4)
  287. andl %r8d,%r12d
  288. addl 52(%r15),%r11d
  289. addb %dl,%bl
  290. movl 56(%rsi),%eax
  291. addl $4254626195,%r11d
  292. xorl %r10d,%r12d
  293. movzbl %bl,%ebx
  294. movl %edx,52(%rsi)
  295. addl %r12d,%r11d
  296. addb %al,%cl
  297. roll $12,%r11d
  298. movl %r9d,%r12d
  299. pinsrw $6,(%rdi,%rbx,4),%xmm1
  300. addl %r8d,%r11d
  301. movl (%rdi,%rcx,4),%edx
  302. xorl %r8d,%r12d
  303. movl %eax,(%rdi,%rcx,4)
  304. andl %r11d,%r12d
  305. addl 56(%r15),%r10d
  306. addb %dl,%al
  307. movl 60(%rsi),%ebx
  308. addl $2792965006,%r10d
  309. xorl %r9d,%r12d
  310. movzbl %al,%eax
  311. movl %edx,56(%rsi)
  312. addl %r12d,%r10d
  313. addb %bl,%cl
  314. roll $17,%r10d
  315. movl %r8d,%r12d
  316. pinsrw $7,(%rdi,%rax,4),%xmm0
  317. addl %r11d,%r10d
  318. movdqu (%r13),%xmm2
  319. movl (%rdi,%rcx,4),%edx
  320. xorl %r11d,%r12d
  321. movl %ebx,(%rdi,%rcx,4)
  322. andl %r10d,%r12d
  323. addl 60(%r15),%r9d
  324. addb %dl,%bl
  325. movl 64(%rsi),%eax
  326. addl $1236535329,%r9d
  327. xorl %r8d,%r12d
  328. movzbl %bl,%ebx
  329. movl %edx,60(%rsi)
  330. addl %r12d,%r9d
  331. addb %al,%cl
  332. roll $22,%r9d
  333. movl %r10d,%r12d
  334. pinsrw $7,(%rdi,%rbx,4),%xmm1
  335. addl %r10d,%r9d
  336. psllq $8,%xmm1
  337. pxor %xmm0,%xmm2
  338. pxor %xmm1,%xmm2
  339. pxor %xmm0,%xmm0
  340. movl (%rdi,%rcx,4),%edx
  341. xorl %r9d,%r12d
  342. movl %eax,(%rdi,%rcx,4)
  343. andl %r11d,%r12d
  344. addl 4(%r15),%r8d
  345. addb %dl,%al
  346. movl 68(%rsi),%ebx
  347. addl $4129170786,%r8d
  348. xorl %r10d,%r12d
  349. movzbl %al,%eax
  350. movl %edx,64(%rsi)
  351. addl %r12d,%r8d
  352. addb %bl,%cl
  353. roll $5,%r8d
  354. movl %r9d,%r12d
  355. movd (%rdi,%rax,4),%xmm0
  356. addl %r9d,%r8d
  357. pxor %xmm1,%xmm1
  358. movl (%rdi,%rcx,4),%edx
  359. xorl %r8d,%r12d
  360. movl %ebx,(%rdi,%rcx,4)
  361. andl %r10d,%r12d
  362. addl 24(%r15),%r11d
  363. addb %dl,%bl
  364. movl 72(%rsi),%eax
  365. addl $3225465664,%r11d
  366. xorl %r9d,%r12d
  367. movzbl %bl,%ebx
  368. movl %edx,68(%rsi)
  369. addl %r12d,%r11d
  370. addb %al,%cl
  371. roll $9,%r11d
  372. movl %r8d,%r12d
  373. movd (%rdi,%rbx,4),%xmm1
  374. addl %r8d,%r11d
  375. movl (%rdi,%rcx,4),%edx
  376. xorl %r11d,%r12d
  377. movl %eax,(%rdi,%rcx,4)
  378. andl %r9d,%r12d
  379. addl 44(%r15),%r10d
  380. addb %dl,%al
  381. movl 76(%rsi),%ebx
  382. addl $643717713,%r10d
  383. xorl %r8d,%r12d
  384. movzbl %al,%eax
  385. movl %edx,72(%rsi)
  386. addl %r12d,%r10d
  387. addb %bl,%cl
  388. roll $14,%r10d
  389. movl %r11d,%r12d
  390. pinsrw $1,(%rdi,%rax,4),%xmm0
  391. addl %r11d,%r10d
  392. movl (%rdi,%rcx,4),%edx
  393. xorl %r10d,%r12d
  394. movl %ebx,(%rdi,%rcx,4)
  395. andl %r8d,%r12d
  396. addl 0(%r15),%r9d
  397. addb %dl,%bl
  398. movl 80(%rsi),%eax
  399. addl $3921069994,%r9d
  400. xorl %r11d,%r12d
  401. movzbl %bl,%ebx
  402. movl %edx,76(%rsi)
  403. addl %r12d,%r9d
  404. addb %al,%cl
  405. roll $20,%r9d
  406. movl %r10d,%r12d
  407. pinsrw $1,(%rdi,%rbx,4),%xmm1
  408. addl %r10d,%r9d
  409. movl (%rdi,%rcx,4),%edx
  410. xorl %r9d,%r12d
  411. movl %eax,(%rdi,%rcx,4)
  412. andl %r11d,%r12d
  413. addl 20(%r15),%r8d
  414. addb %dl,%al
  415. movl 84(%rsi),%ebx
  416. addl $3593408605,%r8d
  417. xorl %r10d,%r12d
  418. movzbl %al,%eax
  419. movl %edx,80(%rsi)
  420. addl %r12d,%r8d
  421. addb %bl,%cl
  422. roll $5,%r8d
  423. movl %r9d,%r12d
  424. pinsrw $2,(%rdi,%rax,4),%xmm0
  425. addl %r9d,%r8d
  426. movl (%rdi,%rcx,4),%edx
  427. xorl %r8d,%r12d
  428. movl %ebx,(%rdi,%rcx,4)
  429. andl %r10d,%r12d
  430. addl 40(%r15),%r11d
  431. addb %dl,%bl
  432. movl 88(%rsi),%eax
  433. addl $38016083,%r11d
  434. xorl %r9d,%r12d
  435. movzbl %bl,%ebx
  436. movl %edx,84(%rsi)
  437. addl %r12d,%r11d
  438. addb %al,%cl
  439. roll $9,%r11d
  440. movl %r8d,%r12d
  441. pinsrw $2,(%rdi,%rbx,4),%xmm1
  442. addl %r8d,%r11d
  443. movl (%rdi,%rcx,4),%edx
  444. xorl %r11d,%r12d
  445. movl %eax,(%rdi,%rcx,4)
  446. andl %r9d,%r12d
  447. addl 60(%r15),%r10d
  448. addb %dl,%al
  449. movl 92(%rsi),%ebx
  450. addl $3634488961,%r10d
  451. xorl %r8d,%r12d
  452. movzbl %al,%eax
  453. movl %edx,88(%rsi)
  454. addl %r12d,%r10d
  455. addb %bl,%cl
  456. roll $14,%r10d
  457. movl %r11d,%r12d
  458. pinsrw $3,(%rdi,%rax,4),%xmm0
  459. addl %r11d,%r10d
  460. movl (%rdi,%rcx,4),%edx
  461. xorl %r10d,%r12d
  462. movl %ebx,(%rdi,%rcx,4)
  463. andl %r8d,%r12d
  464. addl 16(%r15),%r9d
  465. addb %dl,%bl
  466. movl 96(%rsi),%eax
  467. addl $3889429448,%r9d
  468. xorl %r11d,%r12d
  469. movzbl %bl,%ebx
  470. movl %edx,92(%rsi)
  471. addl %r12d,%r9d
  472. addb %al,%cl
  473. roll $20,%r9d
  474. movl %r10d,%r12d
  475. pinsrw $3,(%rdi,%rbx,4),%xmm1
  476. addl %r10d,%r9d
  477. movl (%rdi,%rcx,4),%edx
  478. xorl %r9d,%r12d
  479. movl %eax,(%rdi,%rcx,4)
  480. andl %r11d,%r12d
  481. addl 36(%r15),%r8d
  482. addb %dl,%al
  483. movl 100(%rsi),%ebx
  484. addl $568446438,%r8d
  485. xorl %r10d,%r12d
  486. movzbl %al,%eax
  487. movl %edx,96(%rsi)
  488. addl %r12d,%r8d
  489. addb %bl,%cl
  490. roll $5,%r8d
  491. movl %r9d,%r12d
  492. pinsrw $4,(%rdi,%rax,4),%xmm0
  493. addl %r9d,%r8d
  494. movl (%rdi,%rcx,4),%edx
  495. xorl %r8d,%r12d
  496. movl %ebx,(%rdi,%rcx,4)
  497. andl %r10d,%r12d
  498. addl 56(%r15),%r11d
  499. addb %dl,%bl
  500. movl 104(%rsi),%eax
  501. addl $3275163606,%r11d
  502. xorl %r9d,%r12d
  503. movzbl %bl,%ebx
  504. movl %edx,100(%rsi)
  505. addl %r12d,%r11d
  506. addb %al,%cl
  507. roll $9,%r11d
  508. movl %r8d,%r12d
  509. pinsrw $4,(%rdi,%rbx,4),%xmm1
  510. addl %r8d,%r11d
  511. movl (%rdi,%rcx,4),%edx
  512. xorl %r11d,%r12d
  513. movl %eax,(%rdi,%rcx,4)
  514. andl %r9d,%r12d
  515. addl 12(%r15),%r10d
  516. addb %dl,%al
  517. movl 108(%rsi),%ebx
  518. addl $4107603335,%r10d
  519. xorl %r8d,%r12d
  520. movzbl %al,%eax
  521. movl %edx,104(%rsi)
  522. addl %r12d,%r10d
  523. addb %bl,%cl
  524. roll $14,%r10d
  525. movl %r11d,%r12d
  526. pinsrw $5,(%rdi,%rax,4),%xmm0
  527. addl %r11d,%r10d
  528. movl (%rdi,%rcx,4),%edx
  529. xorl %r10d,%r12d
  530. movl %ebx,(%rdi,%rcx,4)
  531. andl %r8d,%r12d
  532. addl 32(%r15),%r9d
  533. addb %dl,%bl
  534. movl 112(%rsi),%eax
  535. addl $1163531501,%r9d
  536. xorl %r11d,%r12d
  537. movzbl %bl,%ebx
  538. movl %edx,108(%rsi)
  539. addl %r12d,%r9d
  540. addb %al,%cl
  541. roll $20,%r9d
  542. movl %r10d,%r12d
  543. pinsrw $5,(%rdi,%rbx,4),%xmm1
  544. addl %r10d,%r9d
  545. movl (%rdi,%rcx,4),%edx
  546. xorl %r9d,%r12d
  547. movl %eax,(%rdi,%rcx,4)
  548. andl %r11d,%r12d
  549. addl 52(%r15),%r8d
  550. addb %dl,%al
  551. movl 116(%rsi),%ebx
  552. addl $2850285829,%r8d
  553. xorl %r10d,%r12d
  554. movzbl %al,%eax
  555. movl %edx,112(%rsi)
  556. addl %r12d,%r8d
  557. addb %bl,%cl
  558. roll $5,%r8d
  559. movl %r9d,%r12d
  560. pinsrw $6,(%rdi,%rax,4),%xmm0
  561. addl %r9d,%r8d
  562. movl (%rdi,%rcx,4),%edx
  563. xorl %r8d,%r12d
  564. movl %ebx,(%rdi,%rcx,4)
  565. andl %r10d,%r12d
  566. addl 8(%r15),%r11d
  567. addb %dl,%bl
  568. movl 120(%rsi),%eax
  569. addl $4243563512,%r11d
  570. xorl %r9d,%r12d
  571. movzbl %bl,%ebx
  572. movl %edx,116(%rsi)
  573. addl %r12d,%r11d
  574. addb %al,%cl
  575. roll $9,%r11d
  576. movl %r8d,%r12d
  577. pinsrw $6,(%rdi,%rbx,4),%xmm1
  578. addl %r8d,%r11d
  579. movl (%rdi,%rcx,4),%edx
  580. xorl %r11d,%r12d
  581. movl %eax,(%rdi,%rcx,4)
  582. andl %r9d,%r12d
  583. addl 28(%r15),%r10d
  584. addb %dl,%al
  585. movl 124(%rsi),%ebx
  586. addl $1735328473,%r10d
  587. xorl %r8d,%r12d
  588. movzbl %al,%eax
  589. movl %edx,120(%rsi)
  590. addl %r12d,%r10d
  591. addb %bl,%cl
  592. roll $14,%r10d
  593. movl %r11d,%r12d
  594. pinsrw $7,(%rdi,%rax,4),%xmm0
  595. addl %r11d,%r10d
  596. movdqu 16(%r13),%xmm3
  597. addb $32,%bpl
  598. movl (%rdi,%rcx,4),%edx
  599. xorl %r10d,%r12d
  600. movl %ebx,(%rdi,%rcx,4)
  601. andl %r8d,%r12d
  602. addl 48(%r15),%r9d
  603. addb %dl,%bl
  604. movl 0(%rdi,%rbp,4),%eax
  605. addl $2368359562,%r9d
  606. xorl %r11d,%r12d
  607. movzbl %bl,%ebx
  608. movl %edx,124(%rsi)
  609. addl %r12d,%r9d
  610. addb %al,%cl
  611. roll $20,%r9d
  612. movl %r11d,%r12d
  613. pinsrw $7,(%rdi,%rbx,4),%xmm1
  614. addl %r10d,%r9d
  615. movq %rcx,%rsi
  616. xorq %rcx,%rcx
  617. movb %sil,%cl
  618. leaq (%rdi,%rbp,4),%rsi
  619. psllq $8,%xmm1
  620. pxor %xmm0,%xmm3
  621. pxor %xmm1,%xmm3
  622. pxor %xmm0,%xmm0
  623. movl (%rdi,%rcx,4),%edx
  624. xorl %r10d,%r12d
  625. movl %eax,(%rdi,%rcx,4)
  626. xorl %r9d,%r12d
  627. addl 20(%r15),%r8d
  628. addb %dl,%al
  629. movl 4(%rsi),%ebx
  630. addl $4294588738,%r8d
  631. movzbl %al,%eax
  632. addl %r12d,%r8d
  633. movl %edx,0(%rsi)
  634. addb %bl,%cl
  635. roll $4,%r8d
  636. movl %r10d,%r12d
  637. movd (%rdi,%rax,4),%xmm0
  638. addl %r9d,%r8d
  639. pxor %xmm1,%xmm1
  640. movl (%rdi,%rcx,4),%edx
  641. xorl %r9d,%r12d
  642. movl %ebx,(%rdi,%rcx,4)
  643. xorl %r8d,%r12d
  644. addl 32(%r15),%r11d
  645. addb %dl,%bl
  646. movl 8(%rsi),%eax
  647. addl $2272392833,%r11d
  648. movzbl %bl,%ebx
  649. addl %r12d,%r11d
  650. movl %edx,4(%rsi)
  651. addb %al,%cl
  652. roll $11,%r11d
  653. movl %r9d,%r12d
  654. movd (%rdi,%rbx,4),%xmm1
  655. addl %r8d,%r11d
  656. movl (%rdi,%rcx,4),%edx
  657. xorl %r8d,%r12d
  658. movl %eax,(%rdi,%rcx,4)
  659. xorl %r11d,%r12d
  660. addl 44(%r15),%r10d
  661. addb %dl,%al
  662. movl 12(%rsi),%ebx
  663. addl $1839030562,%r10d
  664. movzbl %al,%eax
  665. addl %r12d,%r10d
  666. movl %edx,8(%rsi)
  667. addb %bl,%cl
  668. roll $16,%r10d
  669. movl %r8d,%r12d
  670. pinsrw $1,(%rdi,%rax,4),%xmm0
  671. addl %r11d,%r10d
  672. movl (%rdi,%rcx,4),%edx
  673. xorl %r11d,%r12d
  674. movl %ebx,(%rdi,%rcx,4)
  675. xorl %r10d,%r12d
  676. addl 56(%r15),%r9d
  677. addb %dl,%bl
  678. movl 16(%rsi),%eax
  679. addl $4259657740,%r9d
  680. movzbl %bl,%ebx
  681. addl %r12d,%r9d
  682. movl %edx,12(%rsi)
  683. addb %al,%cl
  684. roll $23,%r9d
  685. movl %r11d,%r12d
  686. pinsrw $1,(%rdi,%rbx,4),%xmm1
  687. addl %r10d,%r9d
  688. movl (%rdi,%rcx,4),%edx
  689. xorl %r10d,%r12d
  690. movl %eax,(%rdi,%rcx,4)
  691. xorl %r9d,%r12d
  692. addl 4(%r15),%r8d
  693. addb %dl,%al
  694. movl 20(%rsi),%ebx
  695. addl $2763975236,%r8d
  696. movzbl %al,%eax
  697. addl %r12d,%r8d
  698. movl %edx,16(%rsi)
  699. addb %bl,%cl
  700. roll $4,%r8d
  701. movl %r10d,%r12d
  702. pinsrw $2,(%rdi,%rax,4),%xmm0
  703. addl %r9d,%r8d
  704. movl (%rdi,%rcx,4),%edx
  705. xorl %r9d,%r12d
  706. movl %ebx,(%rdi,%rcx,4)
  707. xorl %r8d,%r12d
  708. addl 16(%r15),%r11d
  709. addb %dl,%bl
  710. movl 24(%rsi),%eax
  711. addl $1272893353,%r11d
  712. movzbl %bl,%ebx
  713. addl %r12d,%r11d
  714. movl %edx,20(%rsi)
  715. addb %al,%cl
  716. roll $11,%r11d
  717. movl %r9d,%r12d
  718. pinsrw $2,(%rdi,%rbx,4),%xmm1
  719. addl %r8d,%r11d
  720. movl (%rdi,%rcx,4),%edx
  721. xorl %r8d,%r12d
  722. movl %eax,(%rdi,%rcx,4)
  723. xorl %r11d,%r12d
  724. addl 28(%r15),%r10d
  725. addb %dl,%al
  726. movl 28(%rsi),%ebx
  727. addl $4139469664,%r10d
  728. movzbl %al,%eax
  729. addl %r12d,%r10d
  730. movl %edx,24(%rsi)
  731. addb %bl,%cl
  732. roll $16,%r10d
  733. movl %r8d,%r12d
  734. pinsrw $3,(%rdi,%rax,4),%xmm0
  735. addl %r11d,%r10d
  736. movl (%rdi,%rcx,4),%edx
  737. xorl %r11d,%r12d
  738. movl %ebx,(%rdi,%rcx,4)
  739. xorl %r10d,%r12d
  740. addl 40(%r15),%r9d
  741. addb %dl,%bl
  742. movl 32(%rsi),%eax
  743. addl $3200236656,%r9d
  744. movzbl %bl,%ebx
  745. addl %r12d,%r9d
  746. movl %edx,28(%rsi)
  747. addb %al,%cl
  748. roll $23,%r9d
  749. movl %r11d,%r12d
  750. pinsrw $3,(%rdi,%rbx,4),%xmm1
  751. addl %r10d,%r9d
  752. movl (%rdi,%rcx,4),%edx
  753. xorl %r10d,%r12d
  754. movl %eax,(%rdi,%rcx,4)
  755. xorl %r9d,%r12d
  756. addl 52(%r15),%r8d
  757. addb %dl,%al
  758. movl 36(%rsi),%ebx
  759. addl $681279174,%r8d
  760. movzbl %al,%eax
  761. addl %r12d,%r8d
  762. movl %edx,32(%rsi)
  763. addb %bl,%cl
  764. roll $4,%r8d
  765. movl %r10d,%r12d
  766. pinsrw $4,(%rdi,%rax,4),%xmm0
  767. addl %r9d,%r8d
  768. movl (%rdi,%rcx,4),%edx
  769. xorl %r9d,%r12d
  770. movl %ebx,(%rdi,%rcx,4)
  771. xorl %r8d,%r12d
  772. addl 0(%r15),%r11d
  773. addb %dl,%bl
  774. movl 40(%rsi),%eax
  775. addl $3936430074,%r11d
  776. movzbl %bl,%ebx
  777. addl %r12d,%r11d
  778. movl %edx,36(%rsi)
  779. addb %al,%cl
  780. roll $11,%r11d
  781. movl %r9d,%r12d
  782. pinsrw $4,(%rdi,%rbx,4),%xmm1
  783. addl %r8d,%r11d
  784. movl (%rdi,%rcx,4),%edx
  785. xorl %r8d,%r12d
  786. movl %eax,(%rdi,%rcx,4)
  787. xorl %r11d,%r12d
  788. addl 12(%r15),%r10d
  789. addb %dl,%al
  790. movl 44(%rsi),%ebx
  791. addl $3572445317,%r10d
  792. movzbl %al,%eax
  793. addl %r12d,%r10d
  794. movl %edx,40(%rsi)
  795. addb %bl,%cl
  796. roll $16,%r10d
  797. movl %r8d,%r12d
  798. pinsrw $5,(%rdi,%rax,4),%xmm0
  799. addl %r11d,%r10d
  800. movl (%rdi,%rcx,4),%edx
  801. xorl %r11d,%r12d
  802. movl %ebx,(%rdi,%rcx,4)
  803. xorl %r10d,%r12d
  804. addl 24(%r15),%r9d
  805. addb %dl,%bl
  806. movl 48(%rsi),%eax
  807. addl $76029189,%r9d
  808. movzbl %bl,%ebx
  809. addl %r12d,%r9d
  810. movl %edx,44(%rsi)
  811. addb %al,%cl
  812. roll $23,%r9d
  813. movl %r11d,%r12d
  814. pinsrw $5,(%rdi,%rbx,4),%xmm1
  815. addl %r10d,%r9d
  816. movl (%rdi,%rcx,4),%edx
  817. xorl %r10d,%r12d
  818. movl %eax,(%rdi,%rcx,4)
  819. xorl %r9d,%r12d
  820. addl 36(%r15),%r8d
  821. addb %dl,%al
  822. movl 52(%rsi),%ebx
  823. addl $3654602809,%r8d
  824. movzbl %al,%eax
  825. addl %r12d,%r8d
  826. movl %edx,48(%rsi)
  827. addb %bl,%cl
  828. roll $4,%r8d
  829. movl %r10d,%r12d
  830. pinsrw $6,(%rdi,%rax,4),%xmm0
  831. addl %r9d,%r8d
  832. movl (%rdi,%rcx,4),%edx
  833. xorl %r9d,%r12d
  834. movl %ebx,(%rdi,%rcx,4)
  835. xorl %r8d,%r12d
  836. addl 48(%r15),%r11d
  837. addb %dl,%bl
  838. movl 56(%rsi),%eax
  839. addl $3873151461,%r11d
  840. movzbl %bl,%ebx
  841. addl %r12d,%r11d
  842. movl %edx,52(%rsi)
  843. addb %al,%cl
  844. roll $11,%r11d
  845. movl %r9d,%r12d
  846. pinsrw $6,(%rdi,%rbx,4),%xmm1
  847. addl %r8d,%r11d
  848. movl (%rdi,%rcx,4),%edx
  849. xorl %r8d,%r12d
  850. movl %eax,(%rdi,%rcx,4)
  851. xorl %r11d,%r12d
  852. addl 60(%r15),%r10d
  853. addb %dl,%al
  854. movl 60(%rsi),%ebx
  855. addl $530742520,%r10d
  856. movzbl %al,%eax
  857. addl %r12d,%r10d
  858. movl %edx,56(%rsi)
  859. addb %bl,%cl
  860. roll $16,%r10d
  861. movl %r8d,%r12d
  862. pinsrw $7,(%rdi,%rax,4),%xmm0
  863. addl %r11d,%r10d
  864. movdqu 32(%r13),%xmm4
  865. movl (%rdi,%rcx,4),%edx
  866. xorl %r11d,%r12d
  867. movl %ebx,(%rdi,%rcx,4)
  868. xorl %r10d,%r12d
  869. addl 8(%r15),%r9d
  870. addb %dl,%bl
  871. movl 64(%rsi),%eax
  872. addl $3299628645,%r9d
  873. movzbl %bl,%ebx
  874. addl %r12d,%r9d
  875. movl %edx,60(%rsi)
  876. addb %al,%cl
  877. roll $23,%r9d
  878. movl $-1,%r12d
  879. pinsrw $7,(%rdi,%rbx,4),%xmm1
  880. addl %r10d,%r9d
  881. psllq $8,%xmm1
  882. pxor %xmm0,%xmm4
  883. pxor %xmm1,%xmm4
  884. pxor %xmm0,%xmm0
  885. movl (%rdi,%rcx,4),%edx
  886. xorl %r11d,%r12d
  887. movl %eax,(%rdi,%rcx,4)
  888. orl %r9d,%r12d
  889. addl 0(%r15),%r8d
  890. addb %dl,%al
  891. movl 68(%rsi),%ebx
  892. addl $4096336452,%r8d
  893. movzbl %al,%eax
  894. xorl %r10d,%r12d
  895. movl %edx,64(%rsi)
  896. addl %r12d,%r8d
  897. addb %bl,%cl
  898. roll $6,%r8d
  899. movl $-1,%r12d
  900. movd (%rdi,%rax,4),%xmm0
  901. addl %r9d,%r8d
  902. pxor %xmm1,%xmm1
  903. movl (%rdi,%rcx,4),%edx
  904. xorl %r10d,%r12d
  905. movl %ebx,(%rdi,%rcx,4)
  906. orl %r8d,%r12d
  907. addl 28(%r15),%r11d
  908. addb %dl,%bl
  909. movl 72(%rsi),%eax
  910. addl $1126891415,%r11d
  911. movzbl %bl,%ebx
  912. xorl %r9d,%r12d
  913. movl %edx,68(%rsi)
  914. addl %r12d,%r11d
  915. addb %al,%cl
  916. roll $10,%r11d
  917. movl $-1,%r12d
  918. movd (%rdi,%rbx,4),%xmm1
  919. addl %r8d,%r11d
  920. movl (%rdi,%rcx,4),%edx
  921. xorl %r9d,%r12d
  922. movl %eax,(%rdi,%rcx,4)
  923. orl %r11d,%r12d
  924. addl 56(%r15),%r10d
  925. addb %dl,%al
  926. movl 76(%rsi),%ebx
  927. addl $2878612391,%r10d
  928. movzbl %al,%eax
  929. xorl %r8d,%r12d
  930. movl %edx,72(%rsi)
  931. addl %r12d,%r10d
  932. addb %bl,%cl
  933. roll $15,%r10d
  934. movl $-1,%r12d
  935. pinsrw $1,(%rdi,%rax,4),%xmm0
  936. addl %r11d,%r10d
  937. movl (%rdi,%rcx,4),%edx
  938. xorl %r8d,%r12d
  939. movl %ebx,(%rdi,%rcx,4)
  940. orl %r10d,%r12d
  941. addl 20(%r15),%r9d
  942. addb %dl,%bl
  943. movl 80(%rsi),%eax
  944. addl $4237533241,%r9d
  945. movzbl %bl,%ebx
  946. xorl %r11d,%r12d
  947. movl %edx,76(%rsi)
  948. addl %r12d,%r9d
  949. addb %al,%cl
  950. roll $21,%r9d
  951. movl $-1,%r12d
  952. pinsrw $1,(%rdi,%rbx,4),%xmm1
  953. addl %r10d,%r9d
  954. movl (%rdi,%rcx,4),%edx
  955. xorl %r11d,%r12d
  956. movl %eax,(%rdi,%rcx,4)
  957. orl %r9d,%r12d
  958. addl 48(%r15),%r8d
  959. addb %dl,%al
  960. movl 84(%rsi),%ebx
  961. addl $1700485571,%r8d
  962. movzbl %al,%eax
  963. xorl %r10d,%r12d
  964. movl %edx,80(%rsi)
  965. addl %r12d,%r8d
  966. addb %bl,%cl
  967. roll $6,%r8d
  968. movl $-1,%r12d
  969. pinsrw $2,(%rdi,%rax,4),%xmm0
  970. addl %r9d,%r8d
  971. movl (%rdi,%rcx,4),%edx
  972. xorl %r10d,%r12d
  973. movl %ebx,(%rdi,%rcx,4)
  974. orl %r8d,%r12d
  975. addl 12(%r15),%r11d
  976. addb %dl,%bl
  977. movl 88(%rsi),%eax
  978. addl $2399980690,%r11d
  979. movzbl %bl,%ebx
  980. xorl %r9d,%r12d
  981. movl %edx,84(%rsi)
  982. addl %r12d,%r11d
  983. addb %al,%cl
  984. roll $10,%r11d
  985. movl $-1,%r12d
  986. pinsrw $2,(%rdi,%rbx,4),%xmm1
  987. addl %r8d,%r11d
  988. movl (%rdi,%rcx,4),%edx
  989. xorl %r9d,%r12d
  990. movl %eax,(%rdi,%rcx,4)
  991. orl %r11d,%r12d
  992. addl 40(%r15),%r10d
  993. addb %dl,%al
  994. movl 92(%rsi),%ebx
  995. addl $4293915773,%r10d
  996. movzbl %al,%eax
  997. xorl %r8d,%r12d
  998. movl %edx,88(%rsi)
  999. addl %r12d,%r10d
  1000. addb %bl,%cl
  1001. roll $15,%r10d
  1002. movl $-1,%r12d
  1003. pinsrw $3,(%rdi,%rax,4),%xmm0
  1004. addl %r11d,%r10d
  1005. movl (%rdi,%rcx,4),%edx
  1006. xorl %r8d,%r12d
  1007. movl %ebx,(%rdi,%rcx,4)
  1008. orl %r10d,%r12d
  1009. addl 4(%r15),%r9d
  1010. addb %dl,%bl
  1011. movl 96(%rsi),%eax
  1012. addl $2240044497,%r9d
  1013. movzbl %bl,%ebx
  1014. xorl %r11d,%r12d
  1015. movl %edx,92(%rsi)
  1016. addl %r12d,%r9d
  1017. addb %al,%cl
  1018. roll $21,%r9d
  1019. movl $-1,%r12d
  1020. pinsrw $3,(%rdi,%rbx,4),%xmm1
  1021. addl %r10d,%r9d
  1022. movl (%rdi,%rcx,4),%edx
  1023. xorl %r11d,%r12d
  1024. movl %eax,(%rdi,%rcx,4)
  1025. orl %r9d,%r12d
  1026. addl 32(%r15),%r8d
  1027. addb %dl,%al
  1028. movl 100(%rsi),%ebx
  1029. addl $1873313359,%r8d
  1030. movzbl %al,%eax
  1031. xorl %r10d,%r12d
  1032. movl %edx,96(%rsi)
  1033. addl %r12d,%r8d
  1034. addb %bl,%cl
  1035. roll $6,%r8d
  1036. movl $-1,%r12d
  1037. pinsrw $4,(%rdi,%rax,4),%xmm0
  1038. addl %r9d,%r8d
  1039. movl (%rdi,%rcx,4),%edx
  1040. xorl %r10d,%r12d
  1041. movl %ebx,(%rdi,%rcx,4)
  1042. orl %r8d,%r12d
  1043. addl 60(%r15),%r11d
  1044. addb %dl,%bl
  1045. movl 104(%rsi),%eax
  1046. addl $4264355552,%r11d
  1047. movzbl %bl,%ebx
  1048. xorl %r9d,%r12d
  1049. movl %edx,100(%rsi)
  1050. addl %r12d,%r11d
  1051. addb %al,%cl
  1052. roll $10,%r11d
  1053. movl $-1,%r12d
  1054. pinsrw $4,(%rdi,%rbx,4),%xmm1
  1055. addl %r8d,%r11d
  1056. movl (%rdi,%rcx,4),%edx
  1057. xorl %r9d,%r12d
  1058. movl %eax,(%rdi,%rcx,4)
  1059. orl %r11d,%r12d
  1060. addl 24(%r15),%r10d
  1061. addb %dl,%al
  1062. movl 108(%rsi),%ebx
  1063. addl $2734768916,%r10d
  1064. movzbl %al,%eax
  1065. xorl %r8d,%r12d
  1066. movl %edx,104(%rsi)
  1067. addl %r12d,%r10d
  1068. addb %bl,%cl
  1069. roll $15,%r10d
  1070. movl $-1,%r12d
  1071. pinsrw $5,(%rdi,%rax,4),%xmm0
  1072. addl %r11d,%r10d
  1073. movl (%rdi,%rcx,4),%edx
  1074. xorl %r8d,%r12d
  1075. movl %ebx,(%rdi,%rcx,4)
  1076. orl %r10d,%r12d
  1077. addl 52(%r15),%r9d
  1078. addb %dl,%bl
  1079. movl 112(%rsi),%eax
  1080. addl $1309151649,%r9d
  1081. movzbl %bl,%ebx
  1082. xorl %r11d,%r12d
  1083. movl %edx,108(%rsi)
  1084. addl %r12d,%r9d
  1085. addb %al,%cl
  1086. roll $21,%r9d
  1087. movl $-1,%r12d
  1088. pinsrw $5,(%rdi,%rbx,4),%xmm1
  1089. addl %r10d,%r9d
  1090. movl (%rdi,%rcx,4),%edx
  1091. xorl %r11d,%r12d
  1092. movl %eax,(%rdi,%rcx,4)
  1093. orl %r9d,%r12d
  1094. addl 16(%r15),%r8d
  1095. addb %dl,%al
  1096. movl 116(%rsi),%ebx
  1097. addl $4149444226,%r8d
  1098. movzbl %al,%eax
  1099. xorl %r10d,%r12d
  1100. movl %edx,112(%rsi)
  1101. addl %r12d,%r8d
  1102. addb %bl,%cl
  1103. roll $6,%r8d
  1104. movl $-1,%r12d
  1105. pinsrw $6,(%rdi,%rax,4),%xmm0
  1106. addl %r9d,%r8d
  1107. movl (%rdi,%rcx,4),%edx
  1108. xorl %r10d,%r12d
  1109. movl %ebx,(%rdi,%rcx,4)
  1110. orl %r8d,%r12d
  1111. addl 44(%r15),%r11d
  1112. addb %dl,%bl
  1113. movl 120(%rsi),%eax
  1114. addl $3174756917,%r11d
  1115. movzbl %bl,%ebx
  1116. xorl %r9d,%r12d
  1117. movl %edx,116(%rsi)
  1118. addl %r12d,%r11d
  1119. addb %al,%cl
  1120. roll $10,%r11d
  1121. movl $-1,%r12d
  1122. pinsrw $6,(%rdi,%rbx,4),%xmm1
  1123. addl %r8d,%r11d
  1124. movl (%rdi,%rcx,4),%edx
  1125. xorl %r9d,%r12d
  1126. movl %eax,(%rdi,%rcx,4)
  1127. orl %r11d,%r12d
  1128. addl 8(%r15),%r10d
  1129. addb %dl,%al
  1130. movl 124(%rsi),%ebx
  1131. addl $718787259,%r10d
  1132. movzbl %al,%eax
  1133. xorl %r8d,%r12d
  1134. movl %edx,120(%rsi)
  1135. addl %r12d,%r10d
  1136. addb %bl,%cl
  1137. roll $15,%r10d
  1138. movl $-1,%r12d
  1139. pinsrw $7,(%rdi,%rax,4),%xmm0
  1140. addl %r11d,%r10d
  1141. movdqu 48(%r13),%xmm5
  1142. addb $32,%bpl
  1143. movl (%rdi,%rcx,4),%edx
  1144. xorl %r8d,%r12d
  1145. movl %ebx,(%rdi,%rcx,4)
  1146. orl %r10d,%r12d
  1147. addl 36(%r15),%r9d
  1148. addb %dl,%bl
  1149. movl 0(%rdi,%rbp,4),%eax
  1150. addl $3951481745,%r9d
  1151. movzbl %bl,%ebx
  1152. xorl %r11d,%r12d
  1153. movl %edx,124(%rsi)
  1154. addl %r12d,%r9d
  1155. addb %al,%cl
  1156. roll $21,%r9d
  1157. movl $-1,%r12d
  1158. pinsrw $7,(%rdi,%rbx,4),%xmm1
  1159. addl %r10d,%r9d
  1160. movq %rbp,%rsi
  1161. xorq %rbp,%rbp
  1162. movb %sil,%bpl
  1163. movq %rcx,%rsi
  1164. xorq %rcx,%rcx
  1165. movb %sil,%cl
  1166. leaq (%rdi,%rbp,4),%rsi
  1167. psllq $8,%xmm1
  1168. pxor %xmm0,%xmm5
  1169. pxor %xmm1,%xmm5
  1170. addl 0(%rsp),%r8d
  1171. addl 4(%rsp),%r9d
  1172. addl 8(%rsp),%r10d
  1173. addl 12(%rsp),%r11d
  1174. movdqu %xmm2,(%r14,%r13,1)
  1175. movdqu %xmm3,16(%r14,%r13,1)
  1176. movdqu %xmm4,32(%r14,%r13,1)
  1177. movdqu %xmm5,48(%r14,%r13,1)
  1178. leaq 64(%r15),%r15
  1179. leaq 64(%r13),%r13
  1180. cmpq 16(%rsp),%r15
  1181. jb .Loop
  1182. movq 24(%rsp),%r12
  1183. subb %al,%cl
  1184. movl %r8d,0(%r12)
  1185. movl %r9d,4(%r12)
  1186. movl %r10d,8(%r12)
  1187. movl %r11d,12(%r12)
  1188. subb $1,%bpl
  1189. movl %ebp,-8(%rdi)
  1190. movl %ecx,-4(%rdi)
  1191. movq 40(%rsp),%r15
  1192. .cfi_restore %r15
  1193. movq 48(%rsp),%r14
  1194. .cfi_restore %r14
  1195. movq 56(%rsp),%r13
  1196. .cfi_restore %r13
  1197. movq 64(%rsp),%r12
  1198. .cfi_restore %r12
  1199. movq 72(%rsp),%rbp
  1200. .cfi_restore %rbp
  1201. movq 80(%rsp),%rbx
  1202. .cfi_restore %rbx
  1203. leaq 88(%rsp),%rsp
  1204. .cfi_adjust_cfa_offset -88
  1205. .Lepilogue:
  1206. .Labort:
  1207. .byte 0xf3,0xc3
  1208. .cfi_endproc
  1209. .size rc4_md5_enc,.-rc4_md5_enc