bn-586.S 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997
  1. // This file is generated from a similarly-named Perl script in the BoringSSL
  2. // source tree. Do not edit by hand.
  3. #if defined(__i386__)
  4. #if defined(BORINGSSL_PREFIX)
  5. #include <boringssl_prefix_symbols_asm.h>
  6. #endif
  7. .text
  8. .globl bn_mul_add_words
  9. .hidden bn_mul_add_words
  10. .type bn_mul_add_words,@function
  11. .align 16
  12. bn_mul_add_words:
  13. .L_bn_mul_add_words_begin:
  14. call .L000PIC_me_up
  15. .L000PIC_me_up:
  16. popl %eax
  17. leal OPENSSL_ia32cap_P-.L000PIC_me_up(%eax),%eax
  18. btl $26,(%eax)
  19. jnc .L001maw_non_sse2
  20. movl 4(%esp),%eax
  21. movl 8(%esp),%edx
  22. movl 12(%esp),%ecx
  23. movd 16(%esp),%mm0
  24. pxor %mm1,%mm1
  25. jmp .L002maw_sse2_entry
  26. .align 16
  27. .L003maw_sse2_unrolled:
  28. movd (%eax),%mm3
  29. paddq %mm3,%mm1
  30. movd (%edx),%mm2
  31. pmuludq %mm0,%mm2
  32. movd 4(%edx),%mm4
  33. pmuludq %mm0,%mm4
  34. movd 8(%edx),%mm6
  35. pmuludq %mm0,%mm6
  36. movd 12(%edx),%mm7
  37. pmuludq %mm0,%mm7
  38. paddq %mm2,%mm1
  39. movd 4(%eax),%mm3
  40. paddq %mm4,%mm3
  41. movd 8(%eax),%mm5
  42. paddq %mm6,%mm5
  43. movd 12(%eax),%mm4
  44. paddq %mm4,%mm7
  45. movd %mm1,(%eax)
  46. movd 16(%edx),%mm2
  47. pmuludq %mm0,%mm2
  48. psrlq $32,%mm1
  49. movd 20(%edx),%mm4
  50. pmuludq %mm0,%mm4
  51. paddq %mm3,%mm1
  52. movd 24(%edx),%mm6
  53. pmuludq %mm0,%mm6
  54. movd %mm1,4(%eax)
  55. psrlq $32,%mm1
  56. movd 28(%edx),%mm3
  57. addl $32,%edx
  58. pmuludq %mm0,%mm3
  59. paddq %mm5,%mm1
  60. movd 16(%eax),%mm5
  61. paddq %mm5,%mm2
  62. movd %mm1,8(%eax)
  63. psrlq $32,%mm1
  64. paddq %mm7,%mm1
  65. movd 20(%eax),%mm5
  66. paddq %mm5,%mm4
  67. movd %mm1,12(%eax)
  68. psrlq $32,%mm1
  69. paddq %mm2,%mm1
  70. movd 24(%eax),%mm5
  71. paddq %mm5,%mm6
  72. movd %mm1,16(%eax)
  73. psrlq $32,%mm1
  74. paddq %mm4,%mm1
  75. movd 28(%eax),%mm5
  76. paddq %mm5,%mm3
  77. movd %mm1,20(%eax)
  78. psrlq $32,%mm1
  79. paddq %mm6,%mm1
  80. movd %mm1,24(%eax)
  81. psrlq $32,%mm1
  82. paddq %mm3,%mm1
  83. movd %mm1,28(%eax)
  84. leal 32(%eax),%eax
  85. psrlq $32,%mm1
  86. subl $8,%ecx
  87. jz .L004maw_sse2_exit
  88. .L002maw_sse2_entry:
  89. testl $4294967288,%ecx
  90. jnz .L003maw_sse2_unrolled
  91. .align 4
  92. .L005maw_sse2_loop:
  93. movd (%edx),%mm2
  94. movd (%eax),%mm3
  95. pmuludq %mm0,%mm2
  96. leal 4(%edx),%edx
  97. paddq %mm3,%mm1
  98. paddq %mm2,%mm1
  99. movd %mm1,(%eax)
  100. subl $1,%ecx
  101. psrlq $32,%mm1
  102. leal 4(%eax),%eax
  103. jnz .L005maw_sse2_loop
  104. .L004maw_sse2_exit:
  105. movd %mm1,%eax
  106. emms
  107. ret
  108. .align 16
  109. .L001maw_non_sse2:
  110. pushl %ebp
  111. pushl %ebx
  112. pushl %esi
  113. pushl %edi
  114. xorl %esi,%esi
  115. movl 20(%esp),%edi
  116. movl 28(%esp),%ecx
  117. movl 24(%esp),%ebx
  118. andl $4294967288,%ecx
  119. movl 32(%esp),%ebp
  120. pushl %ecx
  121. jz .L006maw_finish
  122. .align 16
  123. .L007maw_loop:
  124. movl (%ebx),%eax
  125. mull %ebp
  126. addl %esi,%eax
  127. adcl $0,%edx
  128. addl (%edi),%eax
  129. adcl $0,%edx
  130. movl %eax,(%edi)
  131. movl %edx,%esi
  132. movl 4(%ebx),%eax
  133. mull %ebp
  134. addl %esi,%eax
  135. adcl $0,%edx
  136. addl 4(%edi),%eax
  137. adcl $0,%edx
  138. movl %eax,4(%edi)
  139. movl %edx,%esi
  140. movl 8(%ebx),%eax
  141. mull %ebp
  142. addl %esi,%eax
  143. adcl $0,%edx
  144. addl 8(%edi),%eax
  145. adcl $0,%edx
  146. movl %eax,8(%edi)
  147. movl %edx,%esi
  148. movl 12(%ebx),%eax
  149. mull %ebp
  150. addl %esi,%eax
  151. adcl $0,%edx
  152. addl 12(%edi),%eax
  153. adcl $0,%edx
  154. movl %eax,12(%edi)
  155. movl %edx,%esi
  156. movl 16(%ebx),%eax
  157. mull %ebp
  158. addl %esi,%eax
  159. adcl $0,%edx
  160. addl 16(%edi),%eax
  161. adcl $0,%edx
  162. movl %eax,16(%edi)
  163. movl %edx,%esi
  164. movl 20(%ebx),%eax
  165. mull %ebp
  166. addl %esi,%eax
  167. adcl $0,%edx
  168. addl 20(%edi),%eax
  169. adcl $0,%edx
  170. movl %eax,20(%edi)
  171. movl %edx,%esi
  172. movl 24(%ebx),%eax
  173. mull %ebp
  174. addl %esi,%eax
  175. adcl $0,%edx
  176. addl 24(%edi),%eax
  177. adcl $0,%edx
  178. movl %eax,24(%edi)
  179. movl %edx,%esi
  180. movl 28(%ebx),%eax
  181. mull %ebp
  182. addl %esi,%eax
  183. adcl $0,%edx
  184. addl 28(%edi),%eax
  185. adcl $0,%edx
  186. movl %eax,28(%edi)
  187. movl %edx,%esi
  188. subl $8,%ecx
  189. leal 32(%ebx),%ebx
  190. leal 32(%edi),%edi
  191. jnz .L007maw_loop
  192. .L006maw_finish:
  193. movl 32(%esp),%ecx
  194. andl $7,%ecx
  195. jnz .L008maw_finish2
  196. jmp .L009maw_end
  197. .L008maw_finish2:
  198. movl (%ebx),%eax
  199. mull %ebp
  200. addl %esi,%eax
  201. adcl $0,%edx
  202. addl (%edi),%eax
  203. adcl $0,%edx
  204. decl %ecx
  205. movl %eax,(%edi)
  206. movl %edx,%esi
  207. jz .L009maw_end
  208. movl 4(%ebx),%eax
  209. mull %ebp
  210. addl %esi,%eax
  211. adcl $0,%edx
  212. addl 4(%edi),%eax
  213. adcl $0,%edx
  214. decl %ecx
  215. movl %eax,4(%edi)
  216. movl %edx,%esi
  217. jz .L009maw_end
  218. movl 8(%ebx),%eax
  219. mull %ebp
  220. addl %esi,%eax
  221. adcl $0,%edx
  222. addl 8(%edi),%eax
  223. adcl $0,%edx
  224. decl %ecx
  225. movl %eax,8(%edi)
  226. movl %edx,%esi
  227. jz .L009maw_end
  228. movl 12(%ebx),%eax
  229. mull %ebp
  230. addl %esi,%eax
  231. adcl $0,%edx
  232. addl 12(%edi),%eax
  233. adcl $0,%edx
  234. decl %ecx
  235. movl %eax,12(%edi)
  236. movl %edx,%esi
  237. jz .L009maw_end
  238. movl 16(%ebx),%eax
  239. mull %ebp
  240. addl %esi,%eax
  241. adcl $0,%edx
  242. addl 16(%edi),%eax
  243. adcl $0,%edx
  244. decl %ecx
  245. movl %eax,16(%edi)
  246. movl %edx,%esi
  247. jz .L009maw_end
  248. movl 20(%ebx),%eax
  249. mull %ebp
  250. addl %esi,%eax
  251. adcl $0,%edx
  252. addl 20(%edi),%eax
  253. adcl $0,%edx
  254. decl %ecx
  255. movl %eax,20(%edi)
  256. movl %edx,%esi
  257. jz .L009maw_end
  258. movl 24(%ebx),%eax
  259. mull %ebp
  260. addl %esi,%eax
  261. adcl $0,%edx
  262. addl 24(%edi),%eax
  263. adcl $0,%edx
  264. movl %eax,24(%edi)
  265. movl %edx,%esi
  266. .L009maw_end:
  267. movl %esi,%eax
  268. popl %ecx
  269. popl %edi
  270. popl %esi
  271. popl %ebx
  272. popl %ebp
  273. ret
  274. .size bn_mul_add_words,.-.L_bn_mul_add_words_begin
  275. .globl bn_mul_words
  276. .hidden bn_mul_words
  277. .type bn_mul_words,@function
  278. .align 16
  279. bn_mul_words:
  280. .L_bn_mul_words_begin:
  281. call .L010PIC_me_up
  282. .L010PIC_me_up:
  283. popl %eax
  284. leal OPENSSL_ia32cap_P-.L010PIC_me_up(%eax),%eax
  285. btl $26,(%eax)
  286. jnc .L011mw_non_sse2
  287. movl 4(%esp),%eax
  288. movl 8(%esp),%edx
  289. movl 12(%esp),%ecx
  290. movd 16(%esp),%mm0
  291. pxor %mm1,%mm1
  292. .align 16
  293. .L012mw_sse2_loop:
  294. movd (%edx),%mm2
  295. pmuludq %mm0,%mm2
  296. leal 4(%edx),%edx
  297. paddq %mm2,%mm1
  298. movd %mm1,(%eax)
  299. subl $1,%ecx
  300. psrlq $32,%mm1
  301. leal 4(%eax),%eax
  302. jnz .L012mw_sse2_loop
  303. movd %mm1,%eax
  304. emms
  305. ret
  306. .align 16
  307. .L011mw_non_sse2:
  308. pushl %ebp
  309. pushl %ebx
  310. pushl %esi
  311. pushl %edi
  312. xorl %esi,%esi
  313. movl 20(%esp),%edi
  314. movl 24(%esp),%ebx
  315. movl 28(%esp),%ebp
  316. movl 32(%esp),%ecx
  317. andl $4294967288,%ebp
  318. jz .L013mw_finish
  319. .L014mw_loop:
  320. movl (%ebx),%eax
  321. mull %ecx
  322. addl %esi,%eax
  323. adcl $0,%edx
  324. movl %eax,(%edi)
  325. movl %edx,%esi
  326. movl 4(%ebx),%eax
  327. mull %ecx
  328. addl %esi,%eax
  329. adcl $0,%edx
  330. movl %eax,4(%edi)
  331. movl %edx,%esi
  332. movl 8(%ebx),%eax
  333. mull %ecx
  334. addl %esi,%eax
  335. adcl $0,%edx
  336. movl %eax,8(%edi)
  337. movl %edx,%esi
  338. movl 12(%ebx),%eax
  339. mull %ecx
  340. addl %esi,%eax
  341. adcl $0,%edx
  342. movl %eax,12(%edi)
  343. movl %edx,%esi
  344. movl 16(%ebx),%eax
  345. mull %ecx
  346. addl %esi,%eax
  347. adcl $0,%edx
  348. movl %eax,16(%edi)
  349. movl %edx,%esi
  350. movl 20(%ebx),%eax
  351. mull %ecx
  352. addl %esi,%eax
  353. adcl $0,%edx
  354. movl %eax,20(%edi)
  355. movl %edx,%esi
  356. movl 24(%ebx),%eax
  357. mull %ecx
  358. addl %esi,%eax
  359. adcl $0,%edx
  360. movl %eax,24(%edi)
  361. movl %edx,%esi
  362. movl 28(%ebx),%eax
  363. mull %ecx
  364. addl %esi,%eax
  365. adcl $0,%edx
  366. movl %eax,28(%edi)
  367. movl %edx,%esi
  368. addl $32,%ebx
  369. addl $32,%edi
  370. subl $8,%ebp
  371. jz .L013mw_finish
  372. jmp .L014mw_loop
  373. .L013mw_finish:
  374. movl 28(%esp),%ebp
  375. andl $7,%ebp
  376. jnz .L015mw_finish2
  377. jmp .L016mw_end
  378. .L015mw_finish2:
  379. movl (%ebx),%eax
  380. mull %ecx
  381. addl %esi,%eax
  382. adcl $0,%edx
  383. movl %eax,(%edi)
  384. movl %edx,%esi
  385. decl %ebp
  386. jz .L016mw_end
  387. movl 4(%ebx),%eax
  388. mull %ecx
  389. addl %esi,%eax
  390. adcl $0,%edx
  391. movl %eax,4(%edi)
  392. movl %edx,%esi
  393. decl %ebp
  394. jz .L016mw_end
  395. movl 8(%ebx),%eax
  396. mull %ecx
  397. addl %esi,%eax
  398. adcl $0,%edx
  399. movl %eax,8(%edi)
  400. movl %edx,%esi
  401. decl %ebp
  402. jz .L016mw_end
  403. movl 12(%ebx),%eax
  404. mull %ecx
  405. addl %esi,%eax
  406. adcl $0,%edx
  407. movl %eax,12(%edi)
  408. movl %edx,%esi
  409. decl %ebp
  410. jz .L016mw_end
  411. movl 16(%ebx),%eax
  412. mull %ecx
  413. addl %esi,%eax
  414. adcl $0,%edx
  415. movl %eax,16(%edi)
  416. movl %edx,%esi
  417. decl %ebp
  418. jz .L016mw_end
  419. movl 20(%ebx),%eax
  420. mull %ecx
  421. addl %esi,%eax
  422. adcl $0,%edx
  423. movl %eax,20(%edi)
  424. movl %edx,%esi
  425. decl %ebp
  426. jz .L016mw_end
  427. movl 24(%ebx),%eax
  428. mull %ecx
  429. addl %esi,%eax
  430. adcl $0,%edx
  431. movl %eax,24(%edi)
  432. movl %edx,%esi
  433. .L016mw_end:
  434. movl %esi,%eax
  435. popl %edi
  436. popl %esi
  437. popl %ebx
  438. popl %ebp
  439. ret
  440. .size bn_mul_words,.-.L_bn_mul_words_begin
  441. .globl bn_sqr_words
  442. .hidden bn_sqr_words
  443. .type bn_sqr_words,@function
  444. .align 16
  445. bn_sqr_words:
  446. .L_bn_sqr_words_begin:
  447. call .L017PIC_me_up
  448. .L017PIC_me_up:
  449. popl %eax
  450. leal OPENSSL_ia32cap_P-.L017PIC_me_up(%eax),%eax
  451. btl $26,(%eax)
  452. jnc .L018sqr_non_sse2
  453. movl 4(%esp),%eax
  454. movl 8(%esp),%edx
  455. movl 12(%esp),%ecx
  456. .align 16
  457. .L019sqr_sse2_loop:
  458. movd (%edx),%mm0
  459. pmuludq %mm0,%mm0
  460. leal 4(%edx),%edx
  461. movq %mm0,(%eax)
  462. subl $1,%ecx
  463. leal 8(%eax),%eax
  464. jnz .L019sqr_sse2_loop
  465. emms
  466. ret
  467. .align 16
  468. .L018sqr_non_sse2:
  469. pushl %ebp
  470. pushl %ebx
  471. pushl %esi
  472. pushl %edi
  473. movl 20(%esp),%esi
  474. movl 24(%esp),%edi
  475. movl 28(%esp),%ebx
  476. andl $4294967288,%ebx
  477. jz .L020sw_finish
  478. .L021sw_loop:
  479. movl (%edi),%eax
  480. mull %eax
  481. movl %eax,(%esi)
  482. movl %edx,4(%esi)
  483. movl 4(%edi),%eax
  484. mull %eax
  485. movl %eax,8(%esi)
  486. movl %edx,12(%esi)
  487. movl 8(%edi),%eax
  488. mull %eax
  489. movl %eax,16(%esi)
  490. movl %edx,20(%esi)
  491. movl 12(%edi),%eax
  492. mull %eax
  493. movl %eax,24(%esi)
  494. movl %edx,28(%esi)
  495. movl 16(%edi),%eax
  496. mull %eax
  497. movl %eax,32(%esi)
  498. movl %edx,36(%esi)
  499. movl 20(%edi),%eax
  500. mull %eax
  501. movl %eax,40(%esi)
  502. movl %edx,44(%esi)
  503. movl 24(%edi),%eax
  504. mull %eax
  505. movl %eax,48(%esi)
  506. movl %edx,52(%esi)
  507. movl 28(%edi),%eax
  508. mull %eax
  509. movl %eax,56(%esi)
  510. movl %edx,60(%esi)
  511. addl $32,%edi
  512. addl $64,%esi
  513. subl $8,%ebx
  514. jnz .L021sw_loop
  515. .L020sw_finish:
  516. movl 28(%esp),%ebx
  517. andl $7,%ebx
  518. jz .L022sw_end
  519. movl (%edi),%eax
  520. mull %eax
  521. movl %eax,(%esi)
  522. decl %ebx
  523. movl %edx,4(%esi)
  524. jz .L022sw_end
  525. movl 4(%edi),%eax
  526. mull %eax
  527. movl %eax,8(%esi)
  528. decl %ebx
  529. movl %edx,12(%esi)
  530. jz .L022sw_end
  531. movl 8(%edi),%eax
  532. mull %eax
  533. movl %eax,16(%esi)
  534. decl %ebx
  535. movl %edx,20(%esi)
  536. jz .L022sw_end
  537. movl 12(%edi),%eax
  538. mull %eax
  539. movl %eax,24(%esi)
  540. decl %ebx
  541. movl %edx,28(%esi)
  542. jz .L022sw_end
  543. movl 16(%edi),%eax
  544. mull %eax
  545. movl %eax,32(%esi)
  546. decl %ebx
  547. movl %edx,36(%esi)
  548. jz .L022sw_end
  549. movl 20(%edi),%eax
  550. mull %eax
  551. movl %eax,40(%esi)
  552. decl %ebx
  553. movl %edx,44(%esi)
  554. jz .L022sw_end
  555. movl 24(%edi),%eax
  556. mull %eax
  557. movl %eax,48(%esi)
  558. movl %edx,52(%esi)
  559. .L022sw_end:
  560. popl %edi
  561. popl %esi
  562. popl %ebx
  563. popl %ebp
  564. ret
  565. .size bn_sqr_words,.-.L_bn_sqr_words_begin
  566. .globl bn_div_words
  567. .hidden bn_div_words
  568. .type bn_div_words,@function
  569. .align 16
  570. bn_div_words:
  571. .L_bn_div_words_begin:
  572. movl 4(%esp),%edx
  573. movl 8(%esp),%eax
  574. movl 12(%esp),%ecx
  575. divl %ecx
  576. ret
  577. .size bn_div_words,.-.L_bn_div_words_begin
  578. .globl bn_add_words
  579. .hidden bn_add_words
  580. .type bn_add_words,@function
  581. .align 16
  582. bn_add_words:
  583. .L_bn_add_words_begin:
  584. pushl %ebp
  585. pushl %ebx
  586. pushl %esi
  587. pushl %edi
  588. movl 20(%esp),%ebx
  589. movl 24(%esp),%esi
  590. movl 28(%esp),%edi
  591. movl 32(%esp),%ebp
  592. xorl %eax,%eax
  593. andl $4294967288,%ebp
  594. jz .L023aw_finish
  595. .L024aw_loop:
  596. movl (%esi),%ecx
  597. movl (%edi),%edx
  598. addl %eax,%ecx
  599. movl $0,%eax
  600. adcl %eax,%eax
  601. addl %edx,%ecx
  602. adcl $0,%eax
  603. movl %ecx,(%ebx)
  604. movl 4(%esi),%ecx
  605. movl 4(%edi),%edx
  606. addl %eax,%ecx
  607. movl $0,%eax
  608. adcl %eax,%eax
  609. addl %edx,%ecx
  610. adcl $0,%eax
  611. movl %ecx,4(%ebx)
  612. movl 8(%esi),%ecx
  613. movl 8(%edi),%edx
  614. addl %eax,%ecx
  615. movl $0,%eax
  616. adcl %eax,%eax
  617. addl %edx,%ecx
  618. adcl $0,%eax
  619. movl %ecx,8(%ebx)
  620. movl 12(%esi),%ecx
  621. movl 12(%edi),%edx
  622. addl %eax,%ecx
  623. movl $0,%eax
  624. adcl %eax,%eax
  625. addl %edx,%ecx
  626. adcl $0,%eax
  627. movl %ecx,12(%ebx)
  628. movl 16(%esi),%ecx
  629. movl 16(%edi),%edx
  630. addl %eax,%ecx
  631. movl $0,%eax
  632. adcl %eax,%eax
  633. addl %edx,%ecx
  634. adcl $0,%eax
  635. movl %ecx,16(%ebx)
  636. movl 20(%esi),%ecx
  637. movl 20(%edi),%edx
  638. addl %eax,%ecx
  639. movl $0,%eax
  640. adcl %eax,%eax
  641. addl %edx,%ecx
  642. adcl $0,%eax
  643. movl %ecx,20(%ebx)
  644. movl 24(%esi),%ecx
  645. movl 24(%edi),%edx
  646. addl %eax,%ecx
  647. movl $0,%eax
  648. adcl %eax,%eax
  649. addl %edx,%ecx
  650. adcl $0,%eax
  651. movl %ecx,24(%ebx)
  652. movl 28(%esi),%ecx
  653. movl 28(%edi),%edx
  654. addl %eax,%ecx
  655. movl $0,%eax
  656. adcl %eax,%eax
  657. addl %edx,%ecx
  658. adcl $0,%eax
  659. movl %ecx,28(%ebx)
  660. addl $32,%esi
  661. addl $32,%edi
  662. addl $32,%ebx
  663. subl $8,%ebp
  664. jnz .L024aw_loop
  665. .L023aw_finish:
  666. movl 32(%esp),%ebp
  667. andl $7,%ebp
  668. jz .L025aw_end
  669. movl (%esi),%ecx
  670. movl (%edi),%edx
  671. addl %eax,%ecx
  672. movl $0,%eax
  673. adcl %eax,%eax
  674. addl %edx,%ecx
  675. adcl $0,%eax
  676. decl %ebp
  677. movl %ecx,(%ebx)
  678. jz .L025aw_end
  679. movl 4(%esi),%ecx
  680. movl 4(%edi),%edx
  681. addl %eax,%ecx
  682. movl $0,%eax
  683. adcl %eax,%eax
  684. addl %edx,%ecx
  685. adcl $0,%eax
  686. decl %ebp
  687. movl %ecx,4(%ebx)
  688. jz .L025aw_end
  689. movl 8(%esi),%ecx
  690. movl 8(%edi),%edx
  691. addl %eax,%ecx
  692. movl $0,%eax
  693. adcl %eax,%eax
  694. addl %edx,%ecx
  695. adcl $0,%eax
  696. decl %ebp
  697. movl %ecx,8(%ebx)
  698. jz .L025aw_end
  699. movl 12(%esi),%ecx
  700. movl 12(%edi),%edx
  701. addl %eax,%ecx
  702. movl $0,%eax
  703. adcl %eax,%eax
  704. addl %edx,%ecx
  705. adcl $0,%eax
  706. decl %ebp
  707. movl %ecx,12(%ebx)
  708. jz .L025aw_end
  709. movl 16(%esi),%ecx
  710. movl 16(%edi),%edx
  711. addl %eax,%ecx
  712. movl $0,%eax
  713. adcl %eax,%eax
  714. addl %edx,%ecx
  715. adcl $0,%eax
  716. decl %ebp
  717. movl %ecx,16(%ebx)
  718. jz .L025aw_end
  719. movl 20(%esi),%ecx
  720. movl 20(%edi),%edx
  721. addl %eax,%ecx
  722. movl $0,%eax
  723. adcl %eax,%eax
  724. addl %edx,%ecx
  725. adcl $0,%eax
  726. decl %ebp
  727. movl %ecx,20(%ebx)
  728. jz .L025aw_end
  729. movl 24(%esi),%ecx
  730. movl 24(%edi),%edx
  731. addl %eax,%ecx
  732. movl $0,%eax
  733. adcl %eax,%eax
  734. addl %edx,%ecx
  735. adcl $0,%eax
  736. movl %ecx,24(%ebx)
  737. .L025aw_end:
  738. popl %edi
  739. popl %esi
  740. popl %ebx
  741. popl %ebp
  742. ret
  743. .size bn_add_words,.-.L_bn_add_words_begin
  744. .globl bn_sub_words
  745. .hidden bn_sub_words
  746. .type bn_sub_words,@function
  747. .align 16
  748. bn_sub_words:
  749. .L_bn_sub_words_begin:
  750. pushl %ebp
  751. pushl %ebx
  752. pushl %esi
  753. pushl %edi
  754. movl 20(%esp),%ebx
  755. movl 24(%esp),%esi
  756. movl 28(%esp),%edi
  757. movl 32(%esp),%ebp
  758. xorl %eax,%eax
  759. andl $4294967288,%ebp
  760. jz .L026aw_finish
  761. .L027aw_loop:
  762. movl (%esi),%ecx
  763. movl (%edi),%edx
  764. subl %eax,%ecx
  765. movl $0,%eax
  766. adcl %eax,%eax
  767. subl %edx,%ecx
  768. adcl $0,%eax
  769. movl %ecx,(%ebx)
  770. movl 4(%esi),%ecx
  771. movl 4(%edi),%edx
  772. subl %eax,%ecx
  773. movl $0,%eax
  774. adcl %eax,%eax
  775. subl %edx,%ecx
  776. adcl $0,%eax
  777. movl %ecx,4(%ebx)
  778. movl 8(%esi),%ecx
  779. movl 8(%edi),%edx
  780. subl %eax,%ecx
  781. movl $0,%eax
  782. adcl %eax,%eax
  783. subl %edx,%ecx
  784. adcl $0,%eax
  785. movl %ecx,8(%ebx)
  786. movl 12(%esi),%ecx
  787. movl 12(%edi),%edx
  788. subl %eax,%ecx
  789. movl $0,%eax
  790. adcl %eax,%eax
  791. subl %edx,%ecx
  792. adcl $0,%eax
  793. movl %ecx,12(%ebx)
  794. movl 16(%esi),%ecx
  795. movl 16(%edi),%edx
  796. subl %eax,%ecx
  797. movl $0,%eax
  798. adcl %eax,%eax
  799. subl %edx,%ecx
  800. adcl $0,%eax
  801. movl %ecx,16(%ebx)
  802. movl 20(%esi),%ecx
  803. movl 20(%edi),%edx
  804. subl %eax,%ecx
  805. movl $0,%eax
  806. adcl %eax,%eax
  807. subl %edx,%ecx
  808. adcl $0,%eax
  809. movl %ecx,20(%ebx)
  810. movl 24(%esi),%ecx
  811. movl 24(%edi),%edx
  812. subl %eax,%ecx
  813. movl $0,%eax
  814. adcl %eax,%eax
  815. subl %edx,%ecx
  816. adcl $0,%eax
  817. movl %ecx,24(%ebx)
  818. movl 28(%esi),%ecx
  819. movl 28(%edi),%edx
  820. subl %eax,%ecx
  821. movl $0,%eax
  822. adcl %eax,%eax
  823. subl %edx,%ecx
  824. adcl $0,%eax
  825. movl %ecx,28(%ebx)
  826. addl $32,%esi
  827. addl $32,%edi
  828. addl $32,%ebx
  829. subl $8,%ebp
  830. jnz .L027aw_loop
  831. .L026aw_finish:
  832. movl 32(%esp),%ebp
  833. andl $7,%ebp
  834. jz .L028aw_end
  835. movl (%esi),%ecx
  836. movl (%edi),%edx
  837. subl %eax,%ecx
  838. movl $0,%eax
  839. adcl %eax,%eax
  840. subl %edx,%ecx
  841. adcl $0,%eax
  842. decl %ebp
  843. movl %ecx,(%ebx)
  844. jz .L028aw_end
  845. movl 4(%esi),%ecx
  846. movl 4(%edi),%edx
  847. subl %eax,%ecx
  848. movl $0,%eax
  849. adcl %eax,%eax
  850. subl %edx,%ecx
  851. adcl $0,%eax
  852. decl %ebp
  853. movl %ecx,4(%ebx)
  854. jz .L028aw_end
  855. movl 8(%esi),%ecx
  856. movl 8(%edi),%edx
  857. subl %eax,%ecx
  858. movl $0,%eax
  859. adcl %eax,%eax
  860. subl %edx,%ecx
  861. adcl $0,%eax
  862. decl %ebp
  863. movl %ecx,8(%ebx)
  864. jz .L028aw_end
  865. movl 12(%esi),%ecx
  866. movl 12(%edi),%edx
  867. subl %eax,%ecx
  868. movl $0,%eax
  869. adcl %eax,%eax
  870. subl %edx,%ecx
  871. adcl $0,%eax
  872. decl %ebp
  873. movl %ecx,12(%ebx)
  874. jz .L028aw_end
  875. movl 16(%esi),%ecx
  876. movl 16(%edi),%edx
  877. subl %eax,%ecx
  878. movl $0,%eax
  879. adcl %eax,%eax
  880. subl %edx,%ecx
  881. adcl $0,%eax
  882. decl %ebp
  883. movl %ecx,16(%ebx)
  884. jz .L028aw_end
  885. movl 20(%esi),%ecx
  886. movl 20(%edi),%edx
  887. subl %eax,%ecx
  888. movl $0,%eax
  889. adcl %eax,%eax
  890. subl %edx,%ecx
  891. adcl $0,%eax
  892. decl %ebp
  893. movl %ecx,20(%ebx)
  894. jz .L028aw_end
  895. movl 24(%esi),%ecx
  896. movl 24(%edi),%edx
  897. subl %eax,%ecx
  898. movl $0,%eax
  899. adcl %eax,%eax
  900. subl %edx,%ecx
  901. adcl $0,%eax
  902. movl %ecx,24(%ebx)
  903. .L028aw_end:
  904. popl %edi
  905. popl %esi
  906. popl %ebx
  907. popl %ebp
  908. ret
  909. .size bn_sub_words,.-.L_bn_sub_words_begin
  910. #endif
  911. .section .note.GNU-stack,"",@progbits