asmpoly_gcc.S 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  1. @/* ***** BEGIN LICENSE BLOCK *****
  2. @ * Version: RCSL 1.0/RPSL 1.0
  3. @ *
  4. @ * Portions Copyright (c) 1995-2002 RealNetworks, Inc. All Rights Reserved.
  5. @ *
  6. @ * The contents of this file, and the files included with this file, are
  7. @ * subject to the current version of the RealNetworks Public Source License
  8. @ * Version 1.0 (the "RPSL") available at
  9. @ * http://www.helixcommunity.org/content/rpsl unless you have licensed
  10. @ * the file under the RealNetworks Community Source License Version 1.0
  11. @ * (the "RCSL") available at http://www.helixcommunity.org/content/rcsl,
  12. @ * in which case the RCSL will apply. You may also obtain the license terms
  13. @ * directly from RealNetworks. You may not use this file except in
  14. @ * compliance with the RPSL or, if you have a valid RCSL with RealNetworks
  15. @ * applicable to this file, the RCSL. Please see the applicable RPSL or
  16. @ * RCSL for the rights, obligations and limitations governing use of the
  17. @ * contents of the file.
  18. @ *
  19. @ * This file is part of the Helix DNA Technology. RealNetworks is the
  20. @ * developer of the Original Code and owns the copyrights in the portions
  21. @ * it created.
  22. @ *
  23. @ * This file, and the files included with this file, is distributed and made
  24. @ * available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  25. @ * EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  26. @ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS
  27. @ * FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
  28. @ *
  29. @ * Technology Compatibility Kit Test Suite(s) Location:
  30. @ * http://www.helixcommunity.org/content/tck
  31. @ *
  32. @ * Contributor(s):
  33. @ *
  34. @ * ***** END LICENSE BLOCK ***** */
  35. .GLOBAL xmp3_PolyphaseStereo
  36. xmp3_PolyphaseStereo:
  37. STMFD r13!,{r4-r11,r14}
  38. SUB r13,r13,#8
  39. STR r0,[r13,#4]
  40. MOV r4,#0x2000000
  41. MOV r8,#0x2000000
  42. MOV r5,#0
  43. MOV r9,#0
  44. LDR r12,[r2],#4
  45. LDR r14,[r2],#4
  46. LDR r0,[r1,#0]
  47. LDR r3,[r1,#0x5c]
  48. SMLAL r4,r5,r0,r12
  49. LDR r0,[r1,#0x80]
  50. RSB r14,r14,#0
  51. SMLAL r4,r5,r3,r14
  52. LDR r3,[r1,#0xdc]
  53. SMLAL r8,r9,r0,r12
  54. SMLAL r8,r9,r3,r14
  55. LDR r12,[r2],#4
  56. LDR r14,[r2],#4
  57. LDR r0,[r1,#4]
  58. LDR r3,[r1,#0x58]
  59. SMLAL r4,r5,r0,r12
  60. LDR r0,[r1,#0x84]
  61. RSB r14,r14,#0
  62. SMLAL r4,r5,r3,r14
  63. LDR r3,[r1,#0xd8]
  64. SMLAL r8,r9,r0,r12
  65. SMLAL r8,r9,r3,r14
  66. LDR r12,[r2],#4
  67. LDR r14,[r2],#4
  68. LDR r0,[r1,#8]
  69. LDR r3,[r1,#0x54]
  70. SMLAL r4,r5,r0,r12
  71. LDR r0,[r1,#0x88]
  72. RSB r14,r14,#0
  73. SMLAL r4,r5,r3,r14
  74. LDR r3,[r1,#0xd4]
  75. SMLAL r8,r9,r0,r12
  76. SMLAL r8,r9,r3,r14
  77. LDR r12,[r2],#4
  78. LDR r14,[r2],#4
  79. LDR r0,[r1,#0xc]
  80. LDR r3,[r1,#0x50]
  81. SMLAL r4,r5,r0,r12
  82. LDR r0,[r1,#0x8c]
  83. RSB r14,r14,#0
  84. SMLAL r4,r5,r3,r14
  85. LDR r3,[r1,#0xd0]
  86. SMLAL r8,r9,r0,r12
  87. SMLAL r8,r9,r3,r14
  88. LDR r12,[r2],#4
  89. LDR r14,[r2],#4
  90. LDR r0,[r1,#0x10]
  91. LDR r3,[r1,#0x4c]
  92. SMLAL r4,r5,r0,r12
  93. LDR r0,[r1,#0x90]
  94. RSB r14,r14,#0
  95. SMLAL r4,r5,r3,r14
  96. LDR r3,[r1,#0xcc]
  97. SMLAL r8,r9,r0,r12
  98. SMLAL r8,r9,r3,r14
  99. LDR r12,[r2],#4
  100. LDR r14,[r2],#4
  101. LDR r0,[r1,#0x14]
  102. LDR r3,[r1,#0x48]
  103. SMLAL r4,r5,r0,r12
  104. LDR r0,[r1,#0x94]
  105. RSB r14,r14,#0
  106. SMLAL r4,r5,r3,r14
  107. LDR r3,[r1,#0xc8]
  108. SMLAL r8,r9,r0,r12
  109. SMLAL r8,r9,r3,r14
  110. LDR r12,[r2],#4
  111. LDR r14,[r2],#4
  112. LDR r0,[r1,#0x18]
  113. LDR r3,[r1,#0x44]
  114. SMLAL r4,r5,r0,r12
  115. LDR r0,[r1,#0x98]
  116. RSB r14,r14,#0
  117. SMLAL r4,r5,r3,r14
  118. LDR r3,[r1,#0xc4]
  119. SMLAL r8,r9,r0,r12
  120. SMLAL r8,r9,r3,r14
  121. LDR r12,[r2],#4
  122. LDR r14,[r2],#4
  123. LDR r0,[r1,#0x1c]
  124. LDR r3,[r1,#0x40]
  125. SMLAL r4,r5,r0,r12
  126. LDR r0,[r1,#0x9c]
  127. RSB r14,r14,#0
  128. SMLAL r4,r5,r3,r14
  129. LDR r3,[r1,#0xc0]
  130. SMLAL r8,r9,r0,r12
  131. SMLAL r8,r9,r3,r14
  132. LDR r0,[r13,#4]
  133. MOV r14,#0x7f00
  134. ORR r14,r14,#0xff
  135. MOV r4,r4,LSR #26
  136. ORR r4,r4,r5,LSL #6
  137. MOV r12,r4,ASR #31
  138. CMP r12,r4,ASR #15
  139. EORNE r4,r12,r14
  140. MOV r8,r8,LSR #26
  141. ORR r8,r8,r9,LSL #6
  142. MOV r12,r8,ASR #31
  143. CMP r12,r8,ASR #15
  144. EORNE r8,r12,r14
  145. STRH r4,[r0,#0]
  146. STRH r8,[r0,#2]
  147. ADD r2,r2,#0x3c0
  148. ADD r1,r1,#0x1000
  149. MOV r4,#0x2000000
  150. MOV r8,#0x2000000
  151. MOV r5,#0
  152. MOV r9,#0
  153. LDR r12,[r2],#4
  154. LDR r0,[r1,#0]
  155. LDR r3,[r1,#0x80]
  156. SMLAL r4,r5,r0,r12
  157. SMLAL r8,r9,r3,r12
  158. LDR r12,[r2],#4
  159. LDR r0,[r1,#4]
  160. LDR r3,[r1,#0x84]
  161. SMLAL r4,r5,r0,r12
  162. SMLAL r8,r9,r3,r12
  163. LDR r12,[r2],#4
  164. LDR r0,[r1,#8]
  165. LDR r3,[r1,#0x88]
  166. SMLAL r4,r5,r0,r12
  167. SMLAL r8,r9,r3,r12
  168. LDR r12,[r2],#4
  169. LDR r0,[r1,#0xc]
  170. LDR r3,[r1,#0x8c]
  171. SMLAL r4,r5,r0,r12
  172. SMLAL r8,r9,r3,r12
  173. LDR r12,[r2],#4
  174. LDR r0,[r1,#0x10]
  175. LDR r3,[r1,#0x90]
  176. SMLAL r4,r5,r0,r12
  177. SMLAL r8,r9,r3,r12
  178. LDR r12,[r2],#4
  179. LDR r0,[r1,#0x14]
  180. LDR r3,[r1,#0x94]
  181. SMLAL r4,r5,r0,r12
  182. SMLAL r8,r9,r3,r12
  183. LDR r12,[r2],#4
  184. LDR r0,[r1,#0x18]
  185. LDR r3,[r1,#0x98]
  186. SMLAL r4,r5,r0,r12
  187. SMLAL r8,r9,r3,r12
  188. LDR r12,[r2],#4
  189. LDR r0,[r1,#0x1c]
  190. LDR r3,[r1,#0x9c]
  191. SMLAL r4,r5,r0,r12
  192. SMLAL r8,r9,r3,r12
  193. LDR r0,[r13,#4]
  194. MOV r14,#0x7f00
  195. ORR r14,r14,#0xff
  196. MOV r4,r4,LSR #26
  197. ORR r4,r4,r5,LSL #6
  198. MOV r12,r4,ASR #31
  199. CMP r12,r4,ASR #15
  200. EORNE r4,r12,r14
  201. MOV r8,r8,LSR #26
  202. ORR r8,r8,r9,LSL #6
  203. MOV r12,r8,ASR #31
  204. CMP r12,r8,ASR #15
  205. EORNE r8,r12,r14
  206. STRH r4,[r0,#0x40]
  207. STRH r8,[r0,#0x42]
  208. SUB r2,r2,#0x3e0
  209. SUB r1,r1,#0xf00
  210. MOV r12,#0xf
  211. ADD r0,r0,#4
  212. LoopPS:
  213. STR r12,[r13,#0]
  214. STR r0,[r13,#4]
  215. MOV r4,#0x2000000
  216. MOV r8,#0x2000000
  217. MOV r6,#0x2000000
  218. MOV r10,#0x2000000
  219. MOV r5,#0
  220. MOV r9,#0
  221. MOV r7,#0
  222. MOV r11,#0
  223. LDR r12,[r2],#4
  224. LDR r14,[r2],#4
  225. LDR r0,[r1,#0]
  226. LDR r3,[r1,#0x5c]
  227. SMLAL r4,r5,r0,r12
  228. SMLAL r6,r7,r0,r14
  229. RSB r14,r14,#0
  230. SMLAL r6,r7,r3,r12
  231. SMLAL r4,r5,r3,r14
  232. LDR r3,[r1,#0xdc]
  233. LDR r0,[r1,#0x80]
  234. SMLAL r8,r9,r3,r14
  235. SMLAL r10,r11,r3,r12
  236. RSB r14,r14,#0
  237. SMLAL r8,r9,r0,r12
  238. SMLAL r10,r11,r0,r14
  239. LDR r12,[r2],#4
  240. LDR r14,[r2],#4
  241. LDR r0,[r1,#4]
  242. LDR r3,[r1,#0x58]
  243. SMLAL r4,r5,r0,r12
  244. SMLAL r6,r7,r0,r14
  245. RSB r14,r14,#0
  246. SMLAL r6,r7,r3,r12
  247. SMLAL r4,r5,r3,r14
  248. LDR r3,[r1,#0xd8]
  249. LDR r0,[r1,#0x84]
  250. SMLAL r8,r9,r3,r14
  251. SMLAL r10,r11,r3,r12
  252. RSB r14,r14,#0
  253. SMLAL r8,r9,r0,r12
  254. SMLAL r10,r11,r0,r14
  255. LDR r12,[r2],#4
  256. LDR r14,[r2],#4
  257. LDR r0,[r1,#8]
  258. LDR r3,[r1,#0x54]
  259. SMLAL r4,r5,r0,r12
  260. SMLAL r6,r7,r0,r14
  261. RSB r14,r14,#0
  262. SMLAL r6,r7,r3,r12
  263. SMLAL r4,r5,r3,r14
  264. LDR r3,[r1,#0xd4]
  265. LDR r0,[r1,#0x88]
  266. SMLAL r8,r9,r3,r14
  267. SMLAL r10,r11,r3,r12
  268. RSB r14,r14,#0
  269. SMLAL r8,r9,r0,r12
  270. SMLAL r10,r11,r0,r14
  271. LDR r12,[r2],#4
  272. LDR r14,[r2],#4
  273. LDR r0,[r1,#0xc]
  274. LDR r3,[r1,#0x50]
  275. SMLAL r4,r5,r0,r12
  276. SMLAL r6,r7,r0,r14
  277. RSB r14,r14,#0
  278. SMLAL r6,r7,r3,r12
  279. SMLAL r4,r5,r3,r14
  280. LDR r3,[r1,#0xd0]
  281. LDR r0,[r1,#0x8c]
  282. SMLAL r8,r9,r3,r14
  283. SMLAL r10,r11,r3,r12
  284. RSB r14,r14,#0
  285. SMLAL r8,r9,r0,r12
  286. SMLAL r10,r11,r0,r14
  287. LDR r12,[r2],#4
  288. LDR r14,[r2],#4
  289. LDR r0,[r1,#0x10]
  290. LDR r3,[r1,#0x4c]
  291. SMLAL r4,r5,r0,r12
  292. SMLAL r6,r7,r0,r14
  293. RSB r14,r14,#0
  294. SMLAL r6,r7,r3,r12
  295. SMLAL r4,r5,r3,r14
  296. LDR r3,[r1,#0xcc]
  297. LDR r0,[r1,#0x90]
  298. SMLAL r8,r9,r3,r14
  299. SMLAL r10,r11,r3,r12
  300. RSB r14,r14,#0
  301. SMLAL r8,r9,r0,r12
  302. SMLAL r10,r11,r0,r14
  303. LDR r12,[r2],#4
  304. LDR r14,[r2],#4
  305. LDR r0,[r1,#0x14]
  306. LDR r3,[r1,#0x48]
  307. SMLAL r4,r5,r0,r12
  308. SMLAL r6,r7,r0,r14
  309. RSB r14,r14,#0
  310. SMLAL r6,r7,r3,r12
  311. SMLAL r4,r5,r3,r14
  312. LDR r3,[r1,#0xc8]
  313. LDR r0,[r1,#0x94]
  314. SMLAL r8,r9,r3,r14
  315. SMLAL r10,r11,r3,r12
  316. RSB r14,r14,#0
  317. SMLAL r8,r9,r0,r12
  318. SMLAL r10,r11,r0,r14
  319. LDR r12,[r2],#4
  320. LDR r14,[r2],#4
  321. LDR r0,[r1,#0x18]
  322. LDR r3,[r1,#0x44]
  323. SMLAL r4,r5,r0,r12
  324. SMLAL r6,r7,r0,r14
  325. RSB r14,r14,#0
  326. SMLAL r6,r7,r3,r12
  327. SMLAL r4,r5,r3,r14
  328. LDR r3,[r1,#0xc4]
  329. LDR r0,[r1,#0x98]
  330. SMLAL r8,r9,r3,r14
  331. SMLAL r10,r11,r3,r12
  332. RSB r14,r14,#0
  333. SMLAL r8,r9,r0,r12
  334. SMLAL r10,r11,r0,r14
  335. LDR r12,[r2],#4
  336. LDR r14,[r2],#4
  337. LDR r0,[r1,#0x1c]
  338. LDR r3,[r1,#0x40]
  339. SMLAL r4,r5,r0,r12
  340. SMLAL r6,r7,r0,r14
  341. RSB r14,r14,#0
  342. SMLAL r6,r7,r3,r12
  343. SMLAL r4,r5,r3,r14
  344. LDR r3,[r1,#0xc0]
  345. LDR r0,[r1,#0x9c]
  346. SMLAL r8,r9,r3,r14
  347. SMLAL r10,r11,r3,r12
  348. RSB r14,r14,#0
  349. SMLAL r8,r9,r0,r12
  350. SMLAL r10,r11,r0,r14
  351. ADD r1,r1,#0x100
  352. LDR r0,[r13,#4]
  353. MOV r14,#0x7f00
  354. ORR r14,r14,#0xff
  355. MOV r4,r4,LSR #26
  356. ORR r4,r4,r5,LSL #6
  357. MOV r12,r4,ASR #31
  358. CMP r12,r4,ASR #15
  359. EORNE r4,r12,r14
  360. MOV r8,r8,LSR #26
  361. ORR r8,r8,r9,LSL #6
  362. MOV r12,r8,ASR #31
  363. CMP r12,r8,ASR #15
  364. EORNE r8,r12,r14
  365. MOV r6,r6,LSR #26
  366. ORR r6,r6,r7,LSL #6
  367. MOV r12,r6,ASR #31
  368. CMP r12,r6,ASR #15
  369. EORNE r6,r12,r14
  370. MOV r10,r10,LSR #26
  371. ORR r10,r10,r11,LSL #6
  372. MOV r12,r10,ASR #31
  373. CMP r12,r10,ASR #15
  374. EORNE r10,r12,r14
  375. LDR r12,[r13,#0]
  376. ADD r14,r0,r12,LSL #3
  377. STRH r6,[r14],#2
  378. STRH r10,[r14],#2
  379. STRH r4,[r0],#2
  380. STRH r8,[r0],#2
  381. SUBS r12,r12,#1
  382. BNE LoopPS
  383. ADD r13,r13,#8
  384. LDMFD r13!,{r4-r11,pc}
  385. .GLOBAL xmp3_PolyphaseMono
  386. xmp3_PolyphaseMono:
  387. STMFD r13!,{r4-r11,r14}
  388. SUB r13,r13,#8
  389. STR r0,[r13,#4]
  390. MOV r4,#0x2000000
  391. MOV r5,#0
  392. LDR r12,[r2],#4
  393. LDR r14,[r2],#4
  394. LDR r0,[r1,#0]
  395. LDR r3,[r1,#0x5c]
  396. RSB r14,r14,#0
  397. SMLAL r4,r5,r0,r12
  398. SMLAL r4,r5,r3,r14
  399. LDR r12,[r2],#4
  400. LDR r14,[r2],#4
  401. LDR r0,[r1,#4]
  402. LDR r3,[r1,#0x58]
  403. RSB r14,r14,#0
  404. SMLAL r4,r5,r0,r12
  405. SMLAL r4,r5,r3,r14
  406. LDR r12,[r2],#4
  407. LDR r14,[r2],#4
  408. LDR r0,[r1,#8]
  409. LDR r3,[r1,#0x54]
  410. RSB r14,r14,#0
  411. SMLAL r4,r5,r0,r12
  412. SMLAL r4,r5,r3,r14
  413. LDR r12,[r2],#4
  414. LDR r14,[r2],#4
  415. LDR r0,[r1,#0xc]
  416. LDR r3,[r1,#0x50]
  417. RSB r14,r14,#0
  418. SMLAL r4,r5,r0,r12
  419. SMLAL r4,r5,r3,r14
  420. LDR r12,[r2],#4
  421. LDR r14,[r2],#4
  422. LDR r0,[r1,#0x10]
  423. LDR r3,[r1,#0x4c]
  424. RSB r14,r14,#0
  425. SMLAL r4,r5,r0,r12
  426. SMLAL r4,r5,r3,r14
  427. LDR r12,[r2],#4
  428. LDR r14,[r2],#4
  429. LDR r0,[r1,#0x14]
  430. LDR r3,[r1,#0x48]
  431. RSB r14,r14,#0
  432. SMLAL r4,r5,r0,r12
  433. SMLAL r4,r5,r3,r14
  434. LDR r12,[r2],#4
  435. LDR r14,[r2],#4
  436. LDR r0,[r1,#0x18]
  437. LDR r3,[r1,#0x44]
  438. RSB r14,r14,#0
  439. SMLAL r4,r5,r0,r12
  440. SMLAL r4,r5,r3,r14
  441. LDR r12,[r2],#4
  442. LDR r14,[r2],#4
  443. LDR r0,[r1,#0x1c]
  444. LDR r3,[r1,#0x40]
  445. RSB r14,r14,#0
  446. SMLAL r4,r5,r0,r12
  447. SMLAL r4,r5,r3,r14
  448. LDR r0,[r13,#4]
  449. MOV r14,#0x7f00
  450. ORR r14,r14,#0xff
  451. MOV r4,r4,LSR #26
  452. ORR r4,r4,r5,LSL #6
  453. MOV r12,r4,ASR #31
  454. CMP r12,r4,ASR #15
  455. EORNE r4,r12,r14
  456. STRH r4,[r0,#0]
  457. ADD r2,r2,#0x3c0
  458. ADD r1,r1,#0x1000
  459. MOV r4,#0x2000000
  460. MOV r5,#0
  461. LDR r12,[r2],#4
  462. LDR r0,[r1,#0]
  463. SMLAL r4,r5,r0,r12
  464. LDR r12,[r2],#4
  465. LDR r0,[r1,#4]
  466. SMLAL r4,r5,r0,r12
  467. LDR r12,[r2],#4
  468. LDR r0,[r1,#8]
  469. SMLAL r4,r5,r0,r12
  470. LDR r12,[r2],#4
  471. LDR r0,[r1,#0xc]
  472. SMLAL r4,r5,r0,r12
  473. LDR r12,[r2],#4
  474. LDR r0,[r1,#0x10]
  475. SMLAL r4,r5,r0,r12
  476. LDR r12,[r2],#4
  477. LDR r0,[r1,#0x14]
  478. SMLAL r4,r5,r0,r12
  479. LDR r12,[r2],#4
  480. LDR r0,[r1,#0x18]
  481. SMLAL r4,r5,r0,r12
  482. LDR r12,[r2],#4
  483. LDR r0,[r1,#0x1c]
  484. SMLAL r4,r5,r0,r12
  485. LDR r0,[r13,#4]
  486. MOV r14,#0x7f00
  487. ORR r14,r14,#0xff
  488. MOV r4,r4,LSR #26
  489. ORR r4,r4,r5,LSL #6
  490. MOV r12,r4,ASR #31
  491. CMP r12,r4,ASR #15
  492. EORNE r4,r12,r14
  493. STRH r4,[r0,#0x20]
  494. SUB r2,r2,#0x3e0
  495. SUB r1,r1,#0xf00
  496. MOV r12,#0xf
  497. ADD r0,r0,#2
  498. LoopPM:
  499. STR r12,[r13,#0]
  500. STR r0,[r13,#4]
  501. MOV r4,#0x2000000
  502. MOV r6,#0x2000000
  503. MOV r5,#0
  504. MOV r7,#0
  505. LDR r12,[r2],#4
  506. LDR r14,[r2],#4
  507. LDR r0,[r1,#0]
  508. LDR r3,[r1,#0x5c]
  509. SMLAL r4,r5,r0,r12
  510. SMLAL r6,r7,r0,r14
  511. RSB r14,r14,#0
  512. SMLAL r4,r5,r3,r14
  513. SMLAL r6,r7,r3,r12
  514. LDR r12,[r2],#4
  515. LDR r14,[r2],#4
  516. LDR r0,[r1,#4]
  517. LDR r3,[r1,#0x58]
  518. SMLAL r4,r5,r0,r12
  519. SMLAL r6,r7,r0,r14
  520. RSB r14,r14,#0
  521. SMLAL r4,r5,r3,r14
  522. SMLAL r6,r7,r3,r12
  523. LDR r12,[r2],#4
  524. LDR r14,[r2],#4
  525. LDR r0,[r1,#8]
  526. LDR r3,[r1,#0x54]
  527. SMLAL r4,r5,r0,r12
  528. SMLAL r6,r7,r0,r14
  529. RSB r14,r14,#0
  530. SMLAL r4,r5,r3,r14
  531. SMLAL r6,r7,r3,r12
  532. LDR r12,[r2],#4
  533. LDR r14,[r2],#4
  534. LDR r0,[r1,#0xc]
  535. LDR r3,[r1,#0x50]
  536. SMLAL r4,r5,r0,r12
  537. SMLAL r6,r7,r0,r14
  538. RSB r14,r14,#0
  539. SMLAL r4,r5,r3,r14
  540. SMLAL r6,r7,r3,r12
  541. LDR r12,[r2],#4
  542. LDR r14,[r2],#4
  543. LDR r0,[r1,#0x10]
  544. LDR r3,[r1,#0x4c]
  545. SMLAL r4,r5,r0,r12
  546. SMLAL r6,r7,r0,r14
  547. RSB r14,r14,#0
  548. SMLAL r4,r5,r3,r14
  549. SMLAL r6,r7,r3,r12
  550. LDR r12,[r2],#4
  551. LDR r14,[r2],#4
  552. LDR r0,[r1,#0x14]
  553. LDR r3,[r1,#0x48]
  554. SMLAL r4,r5,r0,r12
  555. SMLAL r6,r7,r0,r14
  556. RSB r14,r14,#0
  557. SMLAL r4,r5,r3,r14
  558. SMLAL r6,r7,r3,r12
  559. LDR r12,[r2],#4
  560. LDR r14,[r2],#4
  561. LDR r0,[r1,#0x18]
  562. LDR r3,[r1,#0x44]
  563. SMLAL r4,r5,r0,r12
  564. SMLAL r6,r7,r0,r14
  565. RSB r14,r14,#0
  566. SMLAL r4,r5,r3,r14
  567. SMLAL r6,r7,r3,r12
  568. LDR r12,[r2],#4
  569. LDR r14,[r2],#4
  570. LDR r0,[r1,#0x1c]
  571. LDR r3,[r1,#0x40]
  572. SMLAL r4,r5,r0,r12
  573. SMLAL r6,r7,r0,r14
  574. RSB r14,r14,#0
  575. SMLAL r4,r5,r3,r14
  576. SMLAL r6,r7,r3,r12
  577. ADD r1,r1,#0x100
  578. LDR r0,[r13,#4]
  579. MOV r14,#0x7f00
  580. ORR r14,r14,#0xff
  581. MOV r4,r4,LSR #26
  582. ORR r4,r4,r5,LSL #6
  583. MOV r12,r4,ASR #31
  584. CMP r12,r4,ASR #15
  585. EORNE r4,r12,r14
  586. MOV r6,r6,LSR #26
  587. ORR r6,r6,r7,LSL #6
  588. MOV r12,r6,ASR #31
  589. CMP r12,r6,ASR #15
  590. EORNE r6,r12,r14
  591. LDR r12,[r13,#0]
  592. ADD r14,r0,r12,LSL #2
  593. STRH r6,[r14],#2
  594. STRH r4,[r0],#2
  595. SUBS r12,r12,#1
  596. BNE LoopPM
  597. ADD r13,r13,#8
  598. LDMFD r13!,{r4-r11,pc}
  599. .END