Advertisement
EliteAnax17

Untitled

Jun 12th, 2017
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 69.24 KB | None | 0 0
  1. @ Generated by gcc 2.9-arm-000512 for Thumb/elf
  2. .code 16
  3. .gcc2_compiled.:
  4. .text
  5. .align 2, 0
  6. .globl HealStatusConditions
  7. .type HealStatusConditions,function
  8. .thumb_func
  9. HealStatusConditions:
  10. push {r4, r5, r6, lr}
  11. add sp, sp, #0xfffffffc
  12. add r5, r0, #0
  13. add r4, r2, #0
  14. lsl r3, r3, #0x18
  15. lsr r6, r3, #0x18
  16. mov r1, #0x37
  17. mov r2, #0x0
  18. bl GetMonData
  19. add r1, r0, #0
  20. str r1, [sp]
  21. and r0, r0, r4
  22. cmp r0, #0
  23. beq .L3 @cond_branch
  24. mvn r4, r4
  25. and r1, r1, r4
  26. str r1, [sp]
  27. add r0, r5, #0
  28. mov r1, #0x37
  29. mov r2, sp
  30. bl SetMonData
  31. ldr r0, .L7
  32. ldr r1, .L7+0x4
  33. add r0, r0, r1
  34. ldrb r1, [r0]
  35. mov r0, #0x2
  36. and r0, r0, r1
  37. cmp r0, #0
  38. beq .L4 @cond_branch
  39. cmp r6, #0x4
  40. beq .L4 @cond_branch
  41. ldr r0, .L7+0x8
  42. mov r1, #0x58
  43. mul r1, r1, r6
  44. add r0, r0, #0x4c
  45. add r1, r1, r0
  46. ldr r0, [r1]
  47. and r0, r0, r4
  48. str r0, [r1]
  49. .L4:
  50. mov r0, #0x0
  51. b .L6
  52. .L8:
  53. .align 2, 0
  54. .L7:
  55. .word gMain
  56. .word 0x43d
  57. .word gBattleMons
  58. .L3:
  59. mov r0, #0x1
  60. .L6:
  61. add sp, sp, #0x4
  62. pop {r4, r5, r6}
  63. pop {r1}
  64. bx r1
  65. .Lfe1:
  66. .size HealStatusConditions,.Lfe1-HealStatusConditions
  67. .align 2, 0
  68. .globl GetItemEffectParamOffset
  69. .type GetItemEffectParamOffset,function
  70. .thumb_func
  71. GetItemEffectParamOffset:
  72. push {r4, r5, r6, r7, lr}
  73. lsl r0, r0, #0x10
  74. lsr r3, r0, #0x10
  75. lsl r1, r1, #0x18
  76. lsr r4, r1, #0x18
  77. lsl r2, r2, #0x18
  78. lsr r5, r2, #0x18
  79. mov r7, #0x6
  80. ldr r1, .L79
  81. add r0, r3, #0
  82. sub r0, r0, #0xd
  83. lsl r0, r0, #0x2
  84. add r0, r0, r1
  85. ldr r0, [r0]
  86. cmp r0, #0
  87. bne .L10 @cond_branch
  88. cmp r3, #0xaf
  89. beq .L68 @cond_branch
  90. .L77:
  91. mov r0, #0x0
  92. b .L67
  93. .L80:
  94. .align 2, 0
  95. .L79:
  96. .word gItemEffectTable
  97. .L10:
  98. cmp r3, #0xaf
  99. bne .L11 @cond_branch
  100. .L68:
  101. ldr r0, .L81
  102. ldrb r1, [r0]
  103. lsl r0, r1, #0x3
  104. sub r0, r0, r1
  105. lsl r0, r0, #0x2
  106. ldr r1, .L81+0x4
  107. add r0, r0, r1
  108. .L11:
  109. mov ip, r0
  110. mov r2, #0x0
  111. .L15:
  112. cmp r2, #0x4
  113. beq .L22 @cond_branch
  114. cmp r2, #0x4
  115. ble .L65 @cond_branch
  116. cmp r2, #0x5
  117. beq .L43 @cond_branch
  118. b .L14
  119. .L82:
  120. .align 2, 0
  121. .L81:
  122. .word gUnknown_02024A60
  123. .word gEnigmaBerries+0x8
  124. .L65:
  125. cmp r2, #0
  126. blt .L14 @cond_branch
  127. cmp r2, r4
  128. bne .L14 @cond_branch
  129. b .L77
  130. .L22:
  131. mov r0, ip
  132. ldrb r3, [r0, #0x4]
  133. mov r0, #0x20
  134. and r0, r0, r3
  135. cmp r0, #0
  136. beq .L23 @cond_branch
  137. mov r0, #0xdf
  138. and r3, r3, r0
  139. .L23:
  140. mov r6, #0x0
  141. cmp r3, #0
  142. beq .L14 @cond_branch
  143. .L26:
  144. mov r0, #0x1
  145. and r0, r0, r3
  146. cmp r0, #0
  147. beq .L27 @cond_branch
  148. cmp r6, #0x7
  149. bhi .L27 @cond_branch
  150. lsl r0, r6, #0x2
  151. ldr r1, .L83
  152. add r0, r0, r1
  153. ldr r0, [r0]
  154. mov pc, r0
  155. .L84:
  156. .align 2, 0
  157. .L83:
  158. .word .L39
  159. .align 2, 0
  160. .align 2, 0
  161. .L39:
  162. .word .L35
  163. .word .L33
  164. .word .L29
  165. .word .L35
  166. .word .L27
  167. .word .L27
  168. .word .L27
  169. .word .L37
  170. .L29:
  171. mov r0, #0x10
  172. and r0, r0, r3
  173. cmp r0, #0
  174. beq .L35 @cond_branch
  175. mov r0, #0xef
  176. and r3, r3, r0
  177. .L33:
  178. .L35:
  179. cmp r2, r4
  180. bne .L36 @cond_branch
  181. add r0, r3, #0
  182. and r0, r0, r5
  183. cmp r0, #0
  184. bne .L75 @cond_branch
  185. .L36:
  186. add r0, r7, #0x1
  187. lsl r0, r0, #0x18
  188. lsr r7, r0, #0x18
  189. b .L27
  190. .L37:
  191. cmp r2, r4
  192. beq .L77 @cond_branch
  193. .L27:
  194. add r0, r6, #0x1
  195. lsl r0, r0, #0x18
  196. lsr r6, r0, #0x18
  197. lsr r3, r3, #0x1
  198. cmp r2, r4
  199. bne .L24 @cond_branch
  200. lsr r5, r5, #0x1
  201. .L24:
  202. cmp r3, #0
  203. bne .L26 @cond_branch
  204. b .L14
  205. .L43:
  206. mov r0, ip
  207. ldrb r3, [r0, #0x5]
  208. mov r6, #0x0
  209. .L78:
  210. cmp r3, #0
  211. beq .L14 @cond_branch
  212. mov r0, #0x1
  213. and r0, r0, r3
  214. cmp r0, #0
  215. beq .L47 @cond_branch
  216. cmp r6, #0
  217. blt .L47 @cond_branch
  218. cmp r6, #0x6
  219. ble .L55 @cond_branch
  220. cmp r6, #0x7
  221. beq .L57 @cond_branch
  222. b .L47
  223. .L55:
  224. cmp r2, r4
  225. bne .L56 @cond_branch
  226. add r0, r3, #0
  227. and r0, r0, r5
  228. cmp r0, #0
  229. bne .L75 @cond_branch
  230. .L56:
  231. add r0, r7, #0x1
  232. lsl r0, r0, #0x18
  233. lsr r7, r0, #0x18
  234. b .L47
  235. .L57:
  236. cmp r2, r4
  237. bne .LCB298
  238. b .L77 @long jump
  239. .LCB298:
  240. .L47:
  241. add r0, r6, #0x1
  242. lsl r0, r0, #0x18
  243. lsr r6, r0, #0x18
  244. lsr r3, r3, #0x1
  245. cmp r2, r4
  246. bne .L78 @cond_branch
  247. lsr r5, r5, #0x1
  248. b .L78
  249. .L14:
  250. add r2, r2, #0x1
  251. cmp r2, #0x5
  252. bgt .LCB323
  253. b .L15 @long jump
  254. .LCB323:
  255. .L75:
  256. add r0, r7, #0
  257. .L67:
  258. pop {r4, r5, r6, r7}
  259. pop {r1}
  260. bx r1
  261. .Lfe2:
  262. .size GetItemEffectParamOffset,.Lfe2-GetItemEffectParamOffset
  263. .align 2, 0
  264. .globl sub_803F324
  265. .type sub_803F324,function
  266. .thumb_func
  267. sub_803F324:
  268. push {lr}
  269. ldr r2, .L86
  270. ldr r1, .L86+0x4
  271. ldrb r1, [r1]
  272. strb r1, [r2]
  273. ldr r3, .L86+0x8
  274. ldr r2, .L86+0xc
  275. ldr r1, .L86+0x10
  276. add r0, r0, r1
  277. ldrb r0, [r0]
  278. lsl r0, r0, #0x2
  279. add r0, r0, r2
  280. ldr r1, [r0]
  281. add r0, r3, #0
  282. bl StringCopy
  283. ldr r0, .L86+0x14
  284. ldr r1, .L86+0x18
  285. bl StringCopy
  286. ldr r0, .L86+0x1c
  287. bl get_battle_strings_
  288. pop {r0}
  289. bx r0
  290. .L87:
  291. .align 2, 0
  292. .L86:
  293. .word gEnemyMonIndex
  294. .word gUnknown_02024E6C
  295. .word gUnknown_030041C0
  296. .word gUnknown_08400F58
  297. .word gUnknown_082082F8
  298. .word gUnknown_03004290
  299. .word gUnknown_083FFDB3
  300. .word gUnknown_083FFDD3
  301. .Lfe3:
  302. .size sub_803F324,.Lfe3-sub_803F324
  303. .align 2, 0
  304. .globl sub_803F378
  305. .type sub_803F378,function
  306. .thumb_func
  307. sub_803F378:
  308. push {r4, r5, r6, r7, lr}
  309. mov r7, r8
  310. push {r7}
  311. lsl r0, r0, #0x10
  312. lsr r0, r0, #0x10
  313. cmp r0, #0xaf
  314. bne .L89 @cond_branch
  315. ldr r0, .L104
  316. ldr r1, .L104+0x4
  317. add r0, r0, r1
  318. ldrb r1, [r0]
  319. mov r0, #0x2
  320. and r0, r0, r1
  321. cmp r0, #0
  322. beq .L90 @cond_branch
  323. ldr r2, .L104+0x8
  324. ldrb r1, [r2]
  325. lsl r0, r1, #0x3
  326. sub r0, r0, r1
  327. lsl r0, r0, #0x2
  328. ldr r1, .L104+0xc
  329. add r7, r0, r1
  330. b .L92
  331. .L105:
  332. .align 2, 0
  333. .L104:
  334. .word gMain
  335. .word 0x43d
  336. .word gUnknown_02024E6C
  337. .word gEnigmaBerries+0x8
  338. .L90:
  339. ldr r7, .L106
  340. b .L103
  341. .L107:
  342. .align 2, 0
  343. .L106:
  344. .word gSaveBlock1+0x3676
  345. .L89:
  346. ldr r1, .L108
  347. sub r0, r0, #0xd
  348. lsl r0, r0, #0x2
  349. add r0, r0, r1
  350. ldr r7, [r0]
  351. .L103:
  352. ldr r2, .L108+0x4
  353. .L92:
  354. ldr r1, .L108+0x8
  355. ldrb r0, [r2]
  356. strb r0, [r1]
  357. mov r5, #0x0
  358. ldr r0, .L108+0xc
  359. mov r8, r0
  360. mov r6, #0x0
  361. .L96:
  362. add r4, r7, r5
  363. ldrb r1, [r4]
  364. mov r0, #0xf
  365. and r0, r0, r1
  366. cmp r0, #0
  367. beq .L97 @cond_branch
  368. add r0, r6, #0
  369. bl sub_803F324
  370. .L97:
  371. ldrb r1, [r4]
  372. mov r0, #0xf0
  373. and r0, r0, r1
  374. cmp r0, #0
  375. beq .L95 @cond_branch
  376. cmp r5, #0
  377. beq .L99 @cond_branch
  378. add r0, r6, #0x1
  379. bl sub_803F324
  380. b .L95
  381. .L109:
  382. .align 2, 0
  383. .L108:
  384. .word gItemEffectTable
  385. .word gUnknown_02024E6C
  386. .word gUnknown_02024C0B
  387. .word gPlayerMonIndex
  388. .L99:
  389. ldr r0, .L110
  390. ldrb r0, [r0]
  391. mov r1, r8
  392. strb r0, [r1]
  393. ldr r0, .L110+0x4
  394. bl get_battle_strings_
  395. .L95:
  396. add r6, r6, #0x2
  397. add r5, r5, #0x1
  398. cmp r5, #0x2
  399. ble .L96 @cond_branch
  400. ldrb r1, [r7, #0x3]
  401. mov r0, #0x80
  402. and r0, r0, r1
  403. cmp r0, #0
  404. beq .L102 @cond_branch
  405. ldr r1, .L110+0x8
  406. ldr r0, .L110
  407. ldrb r0, [r0]
  408. strb r0, [r1]
  409. ldr r0, .L110+0xc
  410. bl get_battle_strings_
  411. .L102:
  412. ldr r0, .L110+0x10
  413. pop {r3}
  414. mov r8, r3
  415. pop {r4, r5, r6, r7}
  416. pop {r1}
  417. bx r1
  418. .L111:
  419. .align 2, 0
  420. .L110:
  421. .word gUnknown_02024E6C
  422. .word gUnknown_083FEE92
  423. .word gPlayerMonIndex
  424. .word gUnknown_083FEE5D
  425. .word gUnknown_020238CC
  426. .Lfe4:
  427. .size sub_803F378,.Lfe4-sub_803F378
  428. .align 2, 0
  429. .globl GetNature
  430. .type GetNature,function
  431. .thumb_func
  432. GetNature:
  433. push {lr}
  434. mov r1, #0x0
  435. mov r2, #0x0
  436. bl GetMonData
  437. mov r1, #0x19
  438. bl __umodsi3
  439. lsl r0, r0, #0x18
  440. lsr r0, r0, #0x18
  441. pop {r1}
  442. bx r1
  443. .Lfe5:
  444. .size GetNature,.Lfe5-GetNature
  445. .align 2, 0
  446. .globl GetNatureFromPersonality
  447. .type GetNatureFromPersonality,function
  448. .thumb_func
  449. GetNatureFromPersonality:
  450. push {lr}
  451. mov r1, #0x19
  452. bl __umodsi3
  453. lsl r0, r0, #0x18
  454. lsr r0, r0, #0x18
  455. pop {r1}
  456. bx r1
  457. .Lfe6:
  458. .size GetNatureFromPersonality,.Lfe6-GetNatureFromPersonality
  459. .align 2, 0
  460. .globl GetEvolutionTargetSpecies
  461. .type GetEvolutionTargetSpecies,function
  462. .thumb_func
  463. GetEvolutionTargetSpecies:
  464. push {r4, r5, r6, r7, lr}
  465. mov r7, sl
  466. mov r6, r9
  467. mov r5, r8
  468. push {r5, r6, r7}
  469. add sp, sp, #0xffffffec
  470. mov r8, r0
  471. lsl r1, r1, #0x18
  472. lsr r5, r1, #0x18
  473. lsl r2, r2, #0x10
  474. lsr r2, r2, #0x10
  475. mov r9, r2
  476. mov r0, #0x0
  477. mov sl, r0
  478. mov r0, r8
  479. mov r1, #0xb
  480. mov r2, #0x0
  481. bl GetMonData
  482. lsl r0, r0, #0x10
  483. lsr r7, r0, #0x10
  484. mov r0, r8
  485. mov r1, #0xc
  486. mov r2, #0x0
  487. bl GetMonData
  488. mov r1, sp
  489. strh r0, [r1]
  490. mov r0, r8
  491. mov r1, #0x0
  492. mov r2, #0x0
  493. bl GetMonData
  494. add r4, r0, #0
  495. mov r0, r8
  496. mov r1, #0x17
  497. mov r2, #0x0
  498. bl GetMonData
  499. lsl r0, r0, #0x18
  500. lsr r0, r0, #0x18
  501. str r0, [sp, #0xc]
  502. lsr r4, r4, #0x10
  503. str r4, [sp, #0x10]
  504. mov r0, sp
  505. ldrh r0, [r0]
  506. cmp r0, #0xaf
  507. bne .L115 @cond_branch
  508. ldr r0, .L184
  509. ldr r1, .L184+0x4
  510. add r0, r0, r1
  511. ldrb r0, [r0]
  512. b .L116
  513. .L185:
  514. .align 2, 0
  515. .L184:
  516. .word gSaveBlock1
  517. .word 0x3688
  518. .L115:
  519. bl ItemId_GetHoldEffect
  520. lsl r0, r0, #0x18
  521. lsr r0, r0, #0x18
  522. .L116:
  523. cmp r0, #0x26
  524. bne .L117 @cond_branch
  525. cmp r5, #0x3
  526. beq .L117 @cond_branch
  527. mov r0, #0x0
  528. b .L176
  529. .L117:
  530. cmp r5, #0x1
  531. bne .LCB676
  532. b .L153 @long jump
  533. .LCB676:
  534. cmp r5, #0x1
  535. bgt .L175 @cond_branch
  536. cmp r5, #0
  537. beq .L119 @cond_branch
  538. b .L118
  539. .L175:
  540. cmp r5, #0x3
  541. ble .LCB685
  542. b .L118 @long jump
  543. .LCB685:
  544. mov r2, #0x0
  545. str r2, [sp, #0x4]
  546. ldr r3, .L186
  547. lsl r6, r7, #0x2
  548. b .L170
  549. .L187:
  550. .align 2, 0
  551. .L186:
  552. .word gEvolutionTable
  553. .L119:
  554. mov r0, r8
  555. mov r1, #0x38
  556. mov r2, #0x0
  557. bl GetMonData
  558. lsl r0, r0, #0x18
  559. lsr r0, r0, #0x18
  560. mov r9, r0
  561. mov r0, r8
  562. mov r1, #0x20
  563. mov r2, #0x0
  564. bl GetMonData
  565. lsl r0, r0, #0x10
  566. lsr r0, r0, #0x10
  567. str r0, [sp, #0x8]
  568. mov r0, #0x0
  569. str r0, [sp, #0x4]
  570. lsl r6, r7, #0x2
  571. .L123:
  572. ldr r1, .L188
  573. ldr r0, [sp, #0x4]
  574. lsl r2, r0, #0x3
  575. add r0, r6, r7
  576. lsl r0, r0, #0x3
  577. add r0, r2, r0
  578. add r0, r0, r1
  579. ldrh r0, [r0]
  580. sub r0, r0, #0x1
  581. add r3, r1, #0
  582. add r4, r2, #0
  583. cmp r0, #0xe
  584. bls .LCB740
  585. b .L122 @long jump
  586. .LCB740:
  587. lsl r0, r0, #0x2
  588. ldr r1, .L188+0x4
  589. add r0, r0, r1
  590. ldr r0, [r0]
  591. mov pc, r0
  592. .L189:
  593. .align 2, 0
  594. .L188:
  595. .word gEvolutionTable
  596. .word .L150
  597. .align 2, 0
  598. .align 2, 0
  599. .L150:
  600. .word .L125
  601. .word .L127
  602. .word .L129
  603. .word .L131
  604. .word .L122
  605. .word .L122
  606. .word .L122
  607. .word .L133
  608. .word .L136
  609. .word .L139
  610. .word .L142
  611. .word .L144
  612. .word .L146
  613. .word .L122
  614. .word .L148
  615. .L125:
  616. ldr r1, [sp, #0x8]
  617. cmp r1, #0xdb
  618. bhi .LCB762
  619. b .L122 @long jump
  620. .LCB762:
  621. add r0, r6, r7
  622. lsl r0, r0, #0x3
  623. add r0, r4, r0
  624. add r0, r0, r3
  625. b .L178
  626. .L127:
  627. bl RtcCalcLocalTime
  628. ldr r0, .L190
  629. ldrb r0, [r0, #0x2]
  630. sub r0, r0, #0xc
  631. lsl r0, r0, #0x18
  632. lsr r0, r0, #0x18
  633. cmp r0, #0xb
  634. bls .LCB780
  635. b .L122 @long jump
  636. .LCB780:
  637. ldr r2, [sp, #0x8]
  638. cmp r2, #0xdb
  639. bhi .LCB783
  640. b .L122 @long jump
  641. .LCB783:
  642. b .L179
  643. .L191:
  644. .align 2, 0
  645. .L190:
  646. .word gLocalTime
  647. .L129:
  648. bl RtcCalcLocalTime
  649. ldr r0, .L192
  650. ldrb r0, [r0, #0x2]
  651. cmp r0, #0xb
  652. bls .LCB801
  653. b .L122 @long jump
  654. .LCB801:
  655. ldr r0, [sp, #0x8]
  656. cmp r0, #0xdb
  657. bhi .LCB804
  658. b .L122 @long jump
  659. .LCB804:
  660. .L179:
  661. ldr r1, .L192+0x4
  662. add r0, r6, r7
  663. lsl r0, r0, #0x3
  664. add r0, r4, r0
  665. add r0, r0, r1
  666. .L178:
  667. ldrh r0, [r0, #0x4]
  668. mov sl, r0
  669. b .L122
  670. .L193:
  671. .align 2, 0
  672. .L192:
  673. .word gLocalTime
  674. .word gEvolutionTable
  675. .L131:
  676. add r0, r6, r7
  677. lsl r0, r0, #0x3
  678. add r0, r4, r0
  679. add r1, r0, r3
  680. ldrh r0, [r1, #0x2]
  681. cmp r0, r9
  682. bhi .L122 @cond_branch
  683. b .L180
  684. .L133:
  685. add r0, r6, r7
  686. lsl r0, r0, #0x3
  687. add r0, r4, r0
  688. add r5, r0, r3
  689. ldrh r0, [r5, #0x2]
  690. cmp r0, r9
  691. bhi .L122 @cond_branch
  692. mov r0, r8
  693. mov r1, #0x3b
  694. mov r2, #0x0
  695. bl GetMonData
  696. add r4, r0, #0
  697. mov r0, r8
  698. mov r1, #0x3c
  699. mov r2, #0x0
  700. bl GetMonData
  701. cmp r4, r0
  702. bls .L122 @cond_branch
  703. b .L181
  704. .L136:
  705. add r0, r6, r7
  706. lsl r0, r0, #0x3
  707. add r0, r4, r0
  708. add r5, r0, r3
  709. ldrh r0, [r5, #0x2]
  710. cmp r0, r9
  711. bhi .L122 @cond_branch
  712. mov r0, r8
  713. mov r1, #0x3b
  714. mov r2, #0x0
  715. bl GetMonData
  716. add r4, r0, #0
  717. mov r0, r8
  718. mov r1, #0x3c
  719. mov r2, #0x0
  720. bl GetMonData
  721. cmp r4, r0
  722. bne .L122 @cond_branch
  723. b .L181
  724. .L139:
  725. add r0, r6, r7
  726. lsl r0, r0, #0x3
  727. add r0, r4, r0
  728. add r5, r0, r3
  729. ldrh r0, [r5, #0x2]
  730. cmp r0, r9
  731. bhi .L122 @cond_branch
  732. mov r0, r8
  733. mov r1, #0x3b
  734. mov r2, #0x0
  735. bl GetMonData
  736. add r4, r0, #0
  737. mov r0, r8
  738. mov r1, #0x3c
  739. mov r2, #0x0
  740. bl GetMonData
  741. cmp r4, r0
  742. bcs .L122 @cond_branch
  743. .L181:
  744. ldrh r5, [r5, #0x4]
  745. mov sl, r5
  746. b .L122
  747. .L142:
  748. add r0, r6, r7
  749. lsl r0, r0, #0x3
  750. add r0, r4, r0
  751. add r4, r0, r3
  752. ldrh r0, [r4, #0x2]
  753. cmp r0, r9
  754. bhi .L122 @cond_branch
  755. ldr r0, [sp, #0x10]
  756. mov r1, #0xa
  757. bl __umodsi3
  758. lsl r0, r0, #0x10
  759. lsr r0, r0, #0x10
  760. cmp r0, #0x4
  761. bhi .L122 @cond_branch
  762. b .L182
  763. .L144:
  764. add r0, r6, r7
  765. lsl r0, r0, #0x3
  766. add r0, r4, r0
  767. add r4, r0, r3
  768. ldrh r0, [r4, #0x2]
  769. cmp r0, r9
  770. bhi .L122 @cond_branch
  771. ldr r0, [sp, #0x10]
  772. mov r1, #0xa
  773. bl __umodsi3
  774. lsl r0, r0, #0x10
  775. lsr r0, r0, #0x10
  776. cmp r0, #0x4
  777. bls .L122 @cond_branch
  778. .L182:
  779. ldrh r4, [r4, #0x4]
  780. mov sl, r4
  781. b .L122
  782. .L146:
  783. add r0, r6, r7
  784. lsl r0, r0, #0x3
  785. add r0, r4, r0
  786. add r1, r0, r3
  787. ldrh r0, [r1, #0x2]
  788. cmp r0, r9
  789. bhi .L122 @cond_branch
  790. b .L180
  791. .L148:
  792. add r0, r6, r7
  793. lsl r0, r0, #0x3
  794. add r0, r4, r0
  795. add r1, r0, r3
  796. ldrh r0, [r1, #0x2]
  797. ldr r2, [sp, #0xc]
  798. cmp r0, r2
  799. bhi .L122 @cond_branch
  800. .L180:
  801. ldrh r1, [r1, #0x4]
  802. mov sl, r1
  803. .L122:
  804. ldr r0, [sp, #0x4]
  805. add r0, r0, #0x1
  806. str r0, [sp, #0x4]
  807. cmp r0, #0x4
  808. bgt .LCB1028
  809. b .L123 @long jump
  810. .LCB1028:
  811. b .L118
  812. .L153:
  813. lsl r6, r7, #0x2
  814. ldr r1, .L194
  815. add r0, r6, r7
  816. lsl r0, r0, #0x3
  817. add r4, r0, r1
  818. mov r5, sp
  819. mov r1, #0x4
  820. str r1, [sp, #0x4]
  821. .L157:
  822. ldrh r0, [r4]
  823. cmp r0, #0x5
  824. beq .L183 @cond_branch
  825. cmp r0, #0x6
  826. bne .L156 @cond_branch
  827. ldrh r0, [r4, #0x2]
  828. ldrh r1, [r5]
  829. cmp r0, r1
  830. bne .L156 @cond_branch
  831. mov r0, #0x0
  832. strh r0, [r5]
  833. mov r0, r8
  834. mov r1, #0xc
  835. mov r2, sp
  836. bl SetMonData
  837. .L183:
  838. ldrh r2, [r4, #0x4]
  839. mov sl, r2
  840. .L156:
  841. add r4, r4, #0x8
  842. ldr r0, [sp, #0x4]
  843. sub r0, r0, #0x1
  844. str r0, [sp, #0x4]
  845. cmp r0, #0
  846. bge .L157 @cond_branch
  847. b .L118
  848. .L195:
  849. .align 2, 0
  850. .L194:
  851. .word gEvolutionTable
  852. .L177:
  853. ldrh r1, [r1, #0x4]
  854. mov sl, r1
  855. b .L118
  856. .L170:
  857. add r0, r6, r7
  858. ldr r1, [sp, #0x4]
  859. add r0, r0, r1
  860. lsl r0, r0, #0x3
  861. add r1, r0, r3
  862. ldrh r0, [r1]
  863. cmp r0, #0x7
  864. bne .L169 @cond_branch
  865. ldrh r0, [r1, #0x2]
  866. cmp r0, r9
  867. beq .L177 @cond_branch
  868. .L169:
  869. ldr r2, [sp, #0x4]
  870. add r2, r2, #0x1
  871. str r2, [sp, #0x4]
  872. cmp r2, #0x4
  873. ble .L170 @cond_branch
  874. .L118:
  875. mov r0, sl
  876. .L176:
  877. add sp, sp, #0x14
  878. pop {r3, r4, r5}
  879. mov r8, r3
  880. mov r9, r4
  881. mov sl, r5
  882. pop {r4, r5, r6, r7}
  883. pop {r1}
  884. bx r1
  885. .Lfe7:
  886. .size GetEvolutionTargetSpecies,.Lfe7-GetEvolutionTargetSpecies
  887. .align 2, 0
  888. .globl HoennPokedexNumToSpecies
  889. .type HoennPokedexNumToSpecies,function
  890. .thumb_func
  891. HoennPokedexNumToSpecies:
  892. push {r4, lr}
  893. lsl r0, r0, #0x10
  894. lsr r2, r0, #0x10
  895. cmp r2, #0
  896. beq .L203 @cond_branch
  897. mov r1, #0x0
  898. ldr r3, .L205
  899. ldrh r0, [r3]
  900. cmp r0, r2
  901. beq .L199 @cond_branch
  902. mov r4, #0xcd
  903. lsl r4, r4, #0x1
  904. .L200:
  905. add r0, r1, #0x1
  906. lsl r0, r0, #0x10
  907. lsr r1, r0, #0x10
  908. cmp r1, r4
  909. bhi .L199 @cond_branch
  910. lsl r0, r1, #0x1
  911. add r0, r0, r3
  912. ldrh r0, [r0]
  913. cmp r0, r2
  914. bne .L200 @cond_branch
  915. .L199:
  916. ldr r0, .L205+0x4
  917. cmp r1, r0
  918. beq .L203 @cond_branch
  919. add r0, r1, #0x1
  920. lsl r0, r0, #0x10
  921. lsr r0, r0, #0x10
  922. b .L204
  923. .L206:
  924. .align 2, 0
  925. .L205:
  926. .word gSpeciesToHoennPokedexNum
  927. .word 0x19b
  928. .L203:
  929. mov r0, #0x0
  930. .L204:
  931. pop {r4}
  932. pop {r1}
  933. bx r1
  934. .Lfe8:
  935. .size HoennPokedexNumToSpecies,.Lfe8-HoennPokedexNumToSpecies
  936. .align 2, 0
  937. .globl NationalPokedexNumToSpecies
  938. .type NationalPokedexNumToSpecies,function
  939. .thumb_func
  940. NationalPokedexNumToSpecies:
  941. push {r4, lr}
  942. lsl r0, r0, #0x10
  943. lsr r2, r0, #0x10
  944. cmp r2, #0
  945. beq .L214 @cond_branch
  946. mov r1, #0x0
  947. ldr r3, .L216
  948. ldrh r0, [r3]
  949. cmp r0, r2
  950. beq .L210 @cond_branch
  951. mov r4, #0xcd
  952. lsl r4, r4, #0x1
  953. .L211:
  954. add r0, r1, #0x1
  955. lsl r0, r0, #0x10
  956. lsr r1, r0, #0x10
  957. cmp r1, r4
  958. bhi .L210 @cond_branch
  959. lsl r0, r1, #0x1
  960. add r0, r0, r3
  961. ldrh r0, [r0]
  962. cmp r0, r2
  963. bne .L211 @cond_branch
  964. .L210:
  965. ldr r0, .L216+0x4
  966. cmp r1, r0
  967. beq .L214 @cond_branch
  968. add r0, r1, #0x1
  969. lsl r0, r0, #0x10
  970. lsr r0, r0, #0x10
  971. b .L215
  972. .L217:
  973. .align 2, 0
  974. .L216:
  975. .word gSpeciesToNationalPokedexNum
  976. .word 0x19b
  977. .L214:
  978. mov r0, #0x0
  979. .L215:
  980. pop {r4}
  981. pop {r1}
  982. bx r1
  983. .Lfe9:
  984. .size NationalPokedexNumToSpecies,.Lfe9-NationalPokedexNumToSpecies
  985. .align 2, 0
  986. .globl NationalToHoennOrder
  987. .type NationalToHoennOrder,function
  988. .thumb_func
  989. NationalToHoennOrder:
  990. push {r4, lr}
  991. lsl r0, r0, #0x10
  992. lsr r2, r0, #0x10
  993. cmp r2, #0
  994. beq .L225 @cond_branch
  995. mov r1, #0x0
  996. ldr r3, .L227
  997. ldrh r0, [r3]
  998. cmp r0, r2
  999. beq .L221 @cond_branch
  1000. mov r4, #0xcd
  1001. lsl r4, r4, #0x1
  1002. .L222:
  1003. add r0, r1, #0x1
  1004. lsl r0, r0, #0x10
  1005. lsr r1, r0, #0x10
  1006. cmp r1, r4
  1007. bhi .L221 @cond_branch
  1008. lsl r0, r1, #0x1
  1009. add r0, r0, r3
  1010. ldrh r0, [r0]
  1011. cmp r0, r2
  1012. bne .L222 @cond_branch
  1013. .L221:
  1014. ldr r0, .L227+0x4
  1015. cmp r1, r0
  1016. beq .L225 @cond_branch
  1017. add r0, r1, #0x1
  1018. lsl r0, r0, #0x10
  1019. lsr r0, r0, #0x10
  1020. b .L226
  1021. .L228:
  1022. .align 2, 0
  1023. .L227:
  1024. .word gHoennToNationalOrder
  1025. .word 0x19b
  1026. .L225:
  1027. mov r0, #0x0
  1028. .L226:
  1029. pop {r4}
  1030. pop {r1}
  1031. bx r1
  1032. .Lfe10:
  1033. .size NationalToHoennOrder,.Lfe10-NationalToHoennOrder
  1034. .align 2, 0
  1035. .globl SpeciesToNationalPokedexNum
  1036. .type SpeciesToNationalPokedexNum,function
  1037. .thumb_func
  1038. SpeciesToNationalPokedexNum:
  1039. push {lr}
  1040. lsl r0, r0, #0x10
  1041. lsr r1, r0, #0x10
  1042. cmp r1, #0
  1043. beq .L230 @cond_branch
  1044. ldr r0, .L232
  1045. sub r1, r1, #0x1
  1046. lsl r1, r1, #0x1
  1047. add r1, r1, r0
  1048. ldrh r0, [r1]
  1049. b .L231
  1050. .L233:
  1051. .align 2, 0
  1052. .L232:
  1053. .word gSpeciesToNationalPokedexNum
  1054. .L230:
  1055. mov r0, #0x0
  1056. .L231:
  1057. pop {r1}
  1058. bx r1
  1059. .Lfe11:
  1060. .size SpeciesToNationalPokedexNum,.Lfe11-SpeciesToNationalPokedexNum
  1061. .align 2, 0
  1062. .globl SpeciesToHoennPokedexNum
  1063. .type SpeciesToHoennPokedexNum,function
  1064. .thumb_func
  1065. SpeciesToHoennPokedexNum:
  1066. push {lr}
  1067. lsl r0, r0, #0x10
  1068. lsr r1, r0, #0x10
  1069. cmp r1, #0
  1070. beq .L235 @cond_branch
  1071. ldr r0, .L237
  1072. sub r1, r1, #0x1
  1073. lsl r1, r1, #0x1
  1074. add r1, r1, r0
  1075. ldrh r0, [r1]
  1076. b .L236
  1077. .L238:
  1078. .align 2, 0
  1079. .L237:
  1080. .word gSpeciesToHoennPokedexNum
  1081. .L235:
  1082. mov r0, #0x0
  1083. .L236:
  1084. pop {r1}
  1085. bx r1
  1086. .Lfe12:
  1087. .size SpeciesToHoennPokedexNum,.Lfe12-SpeciesToHoennPokedexNum
  1088. .align 2, 0
  1089. .globl HoennToNationalOrder
  1090. .type HoennToNationalOrder,function
  1091. .thumb_func
  1092. HoennToNationalOrder:
  1093. push {lr}
  1094. lsl r0, r0, #0x10
  1095. lsr r1, r0, #0x10
  1096. cmp r1, #0
  1097. beq .L240 @cond_branch
  1098. ldr r0, .L242
  1099. sub r1, r1, #0x1
  1100. lsl r1, r1, #0x1
  1101. add r1, r1, r0
  1102. ldrh r0, [r1]
  1103. b .L241
  1104. .L243:
  1105. .align 2, 0
  1106. .L242:
  1107. .word gHoennToNationalOrder
  1108. .L240:
  1109. mov r0, #0x0
  1110. .L241:
  1111. pop {r1}
  1112. bx r1
  1113. .Lfe13:
  1114. .size HoennToNationalOrder,.Lfe13-HoennToNationalOrder
  1115. .align 2, 0
  1116. .globl SpeciesToCryId
  1117. .type SpeciesToCryId,function
  1118. .thumb_func
  1119. SpeciesToCryId:
  1120. push {lr}
  1121. lsl r0, r0, #0x10
  1122. lsr r0, r0, #0x10
  1123. add r1, r0, #0
  1124. cmp r0, #0xfa
  1125. bls .L247 @cond_branch
  1126. ldr r0, .L248
  1127. cmp r1, r0
  1128. bls .L246 @cond_branch
  1129. ldr r0, .L248+0x4
  1130. ldr r2, .L248+0x8
  1131. add r1, r1, r2
  1132. lsl r1, r1, #0x1
  1133. add r1, r1, r0
  1134. ldrh r0, [r1]
  1135. b .L247
  1136. .L249:
  1137. .align 2, 0
  1138. .L248:
  1139. .word 0x113
  1140. .word gSpeciesIdToCryId
  1141. .word 0xfffffeec
  1142. .L246:
  1143. mov r0, #0xc8
  1144. .L247:
  1145. pop {r1}
  1146. bx r1
  1147. .Lfe14:
  1148. .size SpeciesToCryId,.Lfe14-SpeciesToCryId
  1149. .align 2, 0
  1150. .globl unref_sub_803F938
  1151. .type unref_sub_803F938,function
  1152. .thumb_func
  1153. unref_sub_803F938:
  1154. push {r4, r5, r6, r7, lr}
  1155. mov r7, sl
  1156. mov r6, r9
  1157. mov r5, r8
  1158. push {r5, r6, r7}
  1159. add sp, sp, #0xfffffff8
  1160. add r5, r1, #0
  1161. mov sl, r2
  1162. lsl r0, r0, #0x10
  1163. mov r1, #0x9a
  1164. lsl r1, r1, #0x11
  1165. cmp r0, r1
  1166. bne .L251 @cond_branch
  1167. ldr r1, .L275
  1168. ldr r0, [r1]
  1169. cmp sl, r0
  1170. beq .L251 @cond_branch
  1171. ldr r0, [r1, #0x8]
  1172. cmp sl, r0
  1173. beq .L251 @cond_branch
  1174. mov r6, #0x0
  1175. .L255:
  1176. lsl r3, r6, #0x3
  1177. add r3, r3, r6
  1178. lsl r3, r3, #0x2
  1179. ldr r0, .L275+0x4
  1180. add r4, r3, r0
  1181. ldrb r1, [r4]
  1182. add r1, r1, #0xf8
  1183. mov r2, #0xf
  1184. add r0, r5, #0
  1185. and r0, r0, r2
  1186. add r1, r1, r0
  1187. lsl r1, r1, #0x18
  1188. lsr r1, r1, #0x18
  1189. mov ip, r1
  1190. ldrb r1, [r4, #0x1]
  1191. add r1, r1, #0xf8
  1192. mov r0, #0xf0
  1193. and r0, r0, r5
  1194. lsr r0, r0, #0x4
  1195. add r1, r1, r0
  1196. lsl r1, r1, #0x18
  1197. lsr r1, r1, #0x18
  1198. mov r2, #0x0
  1199. lsr r5, r5, #0x8
  1200. str r5, [sp, #0x4]
  1201. add r6, r6, #0x1
  1202. str r6, [sp]
  1203. mov r9, r3
  1204. .L259:
  1205. lsl r0, r2, #0x1
  1206. add r0, r0, r9
  1207. ldr r3, .L275+0x8
  1208. add r0, r0, r3
  1209. ldrh r3, [r0]
  1210. mov r4, ip
  1211. add r0, r4, #0
  1212. add r0, r0, #0x10
  1213. add r7, r1, #0x1
  1214. add r2, r2, #0x1
  1215. mov r8, r2
  1216. cmp r4, r0
  1217. bge .L261 @cond_branch
  1218. lsr r0, r1, #0x3
  1219. lsl r6, r0, #0x8
  1220. mov r0, #0x7
  1221. and r1, r1, r0
  1222. lsl r5, r1, #0x2
  1223. .L263:
  1224. add r0, r4, #0
  1225. cmp r4, #0
  1226. bge .L264 @cond_branch
  1227. add r0, r4, #0x7
  1228. .L264:
  1229. asr r0, r0, #0x3
  1230. lsl r2, r0, #0x5
  1231. add r2, r2, sl
  1232. lsl r0, r0, #0x3
  1233. sub r0, r4, r0
  1234. lsr r1, r0, #0x1f
  1235. add r0, r0, r1
  1236. asr r0, r0, #0x1
  1237. add r2, r2, r0
  1238. add r2, r2, r6
  1239. add r2, r2, r5
  1240. mov r1, #0x1
  1241. add r0, r3, #0
  1242. and r0, r0, r1
  1243. cmp r0, #0
  1244. beq .L266 @cond_branch
  1245. add r0, r4, #0
  1246. and r0, r0, r1
  1247. cmp r0, #0
  1248. beq .L267 @cond_branch
  1249. ldrb r1, [r2]
  1250. mov r0, #0xf0
  1251. and r0, r0, r1
  1252. sub r0, r0, #0x10
  1253. lsl r0, r0, #0x18
  1254. lsr r0, r0, #0x18
  1255. cmp r0, #0x20
  1256. bhi .L266 @cond_branch
  1257. add r0, r1, #0
  1258. add r0, r0, #0x40
  1259. b .L274
  1260. .L276:
  1261. .align 2, 0
  1262. .L275:
  1263. .word gUnknown_081FAF4C
  1264. .word gSpindaSpotGraphics
  1265. .word gSpindaSpotGraphics+0x2
  1266. .L267:
  1267. ldrb r1, [r2]
  1268. mov r0, #0xf
  1269. and r0, r0, r1
  1270. sub r0, r0, #0x1
  1271. lsl r0, r0, #0x18
  1272. lsr r0, r0, #0x18
  1273. cmp r0, #0x2
  1274. bhi .L266 @cond_branch
  1275. add r0, r1, #0x4
  1276. .L274:
  1277. strb r0, [r2]
  1278. .L266:
  1279. asr r3, r3, #0x1
  1280. add r4, r4, #0x1
  1281. mov r0, ip
  1282. add r0, r0, #0x10
  1283. cmp r4, r0
  1284. blt .L263 @cond_branch
  1285. .L261:
  1286. lsl r0, r7, #0x18
  1287. lsr r1, r0, #0x18
  1288. mov r2, r8
  1289. cmp r2, #0xf
  1290. ble .L259 @cond_branch
  1291. ldr r5, [sp, #0x4]
  1292. ldr r6, [sp]
  1293. cmp r6, #0x3
  1294. ble .L255 @cond_branch
  1295. .L251:
  1296. add sp, sp, #0x8
  1297. pop {r3, r4, r5}
  1298. mov r8, r3
  1299. mov r9, r4
  1300. mov sl, r5
  1301. pop {r4, r5, r6, r7}
  1302. pop {r0}
  1303. bx r0
  1304. .Lfe15:
  1305. .size unref_sub_803F938,.Lfe15-unref_sub_803F938
  1306. .align 2, 0
  1307. .globl DrawSpindaSpots
  1308. .type DrawSpindaSpots,function
  1309. .thumb_func
  1310. DrawSpindaSpots:
  1311. push {r4, r5, r6, r7, lr}
  1312. mov r7, sl
  1313. mov r6, r9
  1314. mov r5, r8
  1315. push {r5, r6, r7}
  1316. add sp, sp, #0xfffffff8
  1317. add r5, r1, #0
  1318. str r2, [sp]
  1319. lsl r0, r0, #0x10
  1320. lsl r3, r3, #0x18
  1321. lsr r3, r3, #0x18
  1322. mov r1, #0x9a
  1323. lsl r1, r1, #0x11
  1324. cmp r0, r1
  1325. bne .L278 @cond_branch
  1326. cmp r3, #0
  1327. beq .L278 @cond_branch
  1328. mov r6, #0x0
  1329. .L282:
  1330. lsl r3, r6, #0x3
  1331. add r3, r3, r6
  1332. lsl r3, r3, #0x2
  1333. ldr r0, .L302
  1334. add r4, r3, r0
  1335. ldrb r1, [r4]
  1336. add r1, r1, #0xf8
  1337. mov r2, #0xf
  1338. add r0, r5, #0
  1339. and r0, r0, r2
  1340. add r1, r1, r0
  1341. lsl r1, r1, #0x18
  1342. lsr r1, r1, #0x18
  1343. mov ip, r1
  1344. ldrb r1, [r4, #0x1]
  1345. add r1, r1, #0xf8
  1346. mov r0, #0xf0
  1347. and r0, r0, r5
  1348. lsr r0, r0, #0x4
  1349. add r1, r1, r0
  1350. lsl r1, r1, #0x18
  1351. lsr r1, r1, #0x18
  1352. mov r2, #0x0
  1353. lsr r5, r5, #0x8
  1354. str r5, [sp, #0x4]
  1355. add r6, r6, #0x1
  1356. mov sl, r6
  1357. mov r9, r3
  1358. .L286:
  1359. lsl r0, r2, #0x1
  1360. add r0, r0, r9
  1361. ldr r3, .L302+0x4
  1362. add r0, r0, r3
  1363. ldrh r3, [r0]
  1364. mov r4, ip
  1365. add r0, r4, #0
  1366. add r0, r0, #0x10
  1367. add r7, r1, #0x1
  1368. add r2, r2, #0x1
  1369. mov r8, r2
  1370. cmp r4, r0
  1371. bge .L288 @cond_branch
  1372. lsr r0, r1, #0x3
  1373. lsl r6, r0, #0x8
  1374. mov r0, #0x7
  1375. and r1, r1, r0
  1376. lsl r5, r1, #0x2
  1377. .L290:
  1378. add r0, r4, #0
  1379. cmp r4, #0
  1380. bge .L291 @cond_branch
  1381. add r0, r4, #0x7
  1382. .L291:
  1383. asr r0, r0, #0x3
  1384. lsl r2, r0, #0x5
  1385. ldr r1, [sp]
  1386. add r2, r1, r2
  1387. lsl r0, r0, #0x3
  1388. sub r0, r4, r0
  1389. lsr r1, r0, #0x1f
  1390. add r0, r0, r1
  1391. asr r0, r0, #0x1
  1392. add r2, r2, r0
  1393. add r2, r2, r6
  1394. add r2, r2, r5
  1395. mov r1, #0x1
  1396. add r0, r3, #0
  1397. and r0, r0, r1
  1398. cmp r0, #0
  1399. beq .L293 @cond_branch
  1400. add r0, r4, #0
  1401. and r0, r0, r1
  1402. cmp r0, #0
  1403. beq .L294 @cond_branch
  1404. ldrb r1, [r2]
  1405. mov r0, #0xf0
  1406. and r0, r0, r1
  1407. sub r0, r0, #0x10
  1408. lsl r0, r0, #0x18
  1409. lsr r0, r0, #0x18
  1410. cmp r0, #0x20
  1411. bhi .L293 @cond_branch
  1412. add r0, r1, #0
  1413. add r0, r0, #0x40
  1414. b .L301
  1415. .L303:
  1416. .align 2, 0
  1417. .L302:
  1418. .word gSpindaSpotGraphics
  1419. .word gSpindaSpotGraphics+0x2
  1420. .L294:
  1421. ldrb r1, [r2]
  1422. mov r0, #0xf
  1423. and r0, r0, r1
  1424. sub r0, r0, #0x1
  1425. lsl r0, r0, #0x18
  1426. lsr r0, r0, #0x18
  1427. cmp r0, #0x2
  1428. bhi .L293 @cond_branch
  1429. add r0, r1, #0x4
  1430. .L301:
  1431. strb r0, [r2]
  1432. .L293:
  1433. asr r3, r3, #0x1
  1434. add r4, r4, #0x1
  1435. mov r0, ip
  1436. add r0, r0, #0x10
  1437. cmp r4, r0
  1438. blt .L290 @cond_branch
  1439. .L288:
  1440. lsl r0, r7, #0x18
  1441. lsr r1, r0, #0x18
  1442. mov r2, r8
  1443. cmp r2, #0xf
  1444. ble .L286 @cond_branch
  1445. ldr r5, [sp, #0x4]
  1446. mov r6, sl
  1447. cmp r6, #0x3
  1448. ble .L282 @cond_branch
  1449. .L278:
  1450. add sp, sp, #0x8
  1451. pop {r3, r4, r5}
  1452. mov r8, r3
  1453. mov r9, r4
  1454. mov sl, r5
  1455. pop {r4, r5, r6, r7}
  1456. pop {r0}
  1457. bx r0
  1458. .Lfe16:
  1459. .size DrawSpindaSpots,.Lfe16-DrawSpindaSpots
  1460. .align 2, 0
  1461. .globl EvolutionRenameMon
  1462. .type EvolutionRenameMon,function
  1463. .thumb_func
  1464. EvolutionRenameMon:
  1465. push {r4, r5, r6, r7, lr}
  1466. mov r7, r8
  1467. push {r7}
  1468. add r7, r0, #0
  1469. add r4, r1, #0
  1470. lsl r4, r4, #0x10
  1471. lsr r4, r4, #0x10
  1472. lsl r2, r2, #0x10
  1473. lsr r2, r2, #0x10
  1474. mov r8, r2
  1475. ldr r5, .L306
  1476. mov r1, #0x2
  1477. add r2, r5, #0
  1478. bl GetMonData
  1479. mov r6, #0xb
  1480. mov r0, r4
  1481. mul r0, r0, r6
  1482. ldr r4, .L306+0x4
  1483. add r0, r0, r4
  1484. add r1, r5, #0
  1485. bl StringCompareWithoutExtCtrlCodes
  1486. cmp r0, #0
  1487. bne .L305 @cond_branch
  1488. mov r2, r8
  1489. mul r2, r2, r6
  1490. add r2, r2, r4
  1491. add r0, r7, #0
  1492. mov r1, #0x2
  1493. bl SetMonData
  1494. .L305:
  1495. pop {r3}
  1496. mov r8, r3
  1497. pop {r4, r5, r6, r7}
  1498. pop {r0}
  1499. bx r0
  1500. .L307:
  1501. .align 2, 0
  1502. .L306:
  1503. .word gStringVar1
  1504. .word gSpeciesNames
  1505. .Lfe17:
  1506. .size EvolutionRenameMon,.Lfe17-EvolutionRenameMon
  1507. .align 2, 0
  1508. .globl sub_803FBBC
  1509. .type sub_803FBBC,function
  1510. .thumb_func
  1511. sub_803FBBC:
  1512. push {r4, r5, lr}
  1513. mov r5, #0x0
  1514. ldr r4, .L317
  1515. bl GetMultiplayerId
  1516. lsl r0, r0, #0x18
  1517. lsr r0, r0, #0x18
  1518. lsl r1, r0, #0x3
  1519. sub r1, r1, r0
  1520. lsl r1, r1, #0x2
  1521. add r1, r1, r4
  1522. ldrh r0, [r1, #0x18]
  1523. cmp r0, #0x2
  1524. bgt .L316 @cond_branch
  1525. cmp r0, #0x1
  1526. bge .L313 @cond_branch
  1527. cmp r0, #0
  1528. beq .L311 @cond_branch
  1529. b .L309
  1530. .L318:
  1531. .align 2, 0
  1532. .L317:
  1533. .word gLinkPlayers
  1534. .L316:
  1535. cmp r0, #0x3
  1536. bne .L309 @cond_branch
  1537. .L311:
  1538. mov r5, #0x0
  1539. b .L309
  1540. .L313:
  1541. mov r5, #0x1
  1542. .L309:
  1543. add r0, r5, #0
  1544. pop {r4, r5}
  1545. pop {r1}
  1546. bx r1
  1547. .Lfe18:
  1548. .size sub_803FBBC,.Lfe18-sub_803FBBC
  1549. .align 2, 0
  1550. .globl sub_803FBFC
  1551. .type sub_803FBFC,function
  1552. .thumb_func
  1553. sub_803FBFC:
  1554. push {lr}
  1555. lsl r0, r0, #0x18
  1556. lsr r0, r0, #0x18
  1557. mov r3, #0x0
  1558. ldr r2, .L328
  1559. lsl r1, r0, #0x3
  1560. sub r1, r1, r0
  1561. lsl r1, r1, #0x2
  1562. add r1, r1, r2
  1563. ldrh r0, [r1, #0x18]
  1564. cmp r0, #0x2
  1565. bgt .L327 @cond_branch
  1566. cmp r0, #0x1
  1567. bge .L324 @cond_branch
  1568. cmp r0, #0
  1569. beq .L322 @cond_branch
  1570. b .L320
  1571. .L329:
  1572. .align 2, 0
  1573. .L328:
  1574. .word gLinkPlayers
  1575. .L327:
  1576. cmp r0, #0x3
  1577. bne .L320 @cond_branch
  1578. .L322:
  1579. mov r3, #0x0
  1580. b .L320
  1581. .L324:
  1582. mov r3, #0x1
  1583. .L320:
  1584. add r0, r3, #0
  1585. pop {r1}
  1586. bx r1
  1587. .Lfe19:
  1588. .size sub_803FBFC,.Lfe19-sub_803FBFC
  1589. .align 2, 0
  1590. .globl sub_803FC34
  1591. .type sub_803FC34,function
  1592. .thumb_func
  1593. sub_803FC34:
  1594. push {lr}
  1595. lsl r0, r0, #0x10
  1596. lsr r3, r0, #0x10
  1597. mov r2, #0x0
  1598. ldr r1, .L338
  1599. b .L337
  1600. .L339:
  1601. .align 2, 0
  1602. .L338:
  1603. .word gLinkPlayers
  1604. .L333:
  1605. add r1, r1, #0x1c
  1606. add r2, r2, #0x1
  1607. cmp r2, #0x3
  1608. bgt .L332 @cond_branch
  1609. .L337:
  1610. ldrh r0, [r1, #0x18]
  1611. cmp r0, r3
  1612. bne .L333 @cond_branch
  1613. .L332:
  1614. add r0, r2, #0
  1615. pop {r1}
  1616. bx r1
  1617. .Lfe20:
  1618. .size sub_803FC34,.Lfe20-sub_803FC34
  1619. .align 2, 0
  1620. .globl sub_803FC58
  1621. .type sub_803FC58,function
  1622. .thumb_func
  1623. sub_803FC58:
  1624. lsl r0, r0, #0x10
  1625. lsr r0, r0, #0x10
  1626. ldr r2, .L341
  1627. lsl r1, r0, #0x2
  1628. add r1, r1, r0
  1629. lsl r1, r1, #0x3
  1630. add r1, r1, r2
  1631. ldrb r1, [r1, #0x2]
  1632. mov r0, #0x7f
  1633. and r0, r0, r1
  1634. bx lr
  1635. .L342:
  1636. .align 2, 0
  1637. .L341:
  1638. .word gTrainers
  1639. .Lfe21:
  1640. .size sub_803FC58,.Lfe21-sub_803FC58
  1641. .align 2, 0
  1642. .globl nature_stat_mod
  1643. .type nature_stat_mod,function
  1644. .thumb_func
  1645. nature_stat_mod:
  1646. push {r4, r5, lr}
  1647. lsl r0, r0, #0x18
  1648. lsr r4, r0, #0x18
  1649. lsl r1, r1, #0x10
  1650. lsr r3, r1, #0x10
  1651. lsl r2, r2, #0x18
  1652. lsr r5, r2, #0x18
  1653. mov r0, #0xff
  1654. lsl r0, r0, #0x18
  1655. add r2, r2, r0
  1656. lsr r2, r2, #0x18
  1657. cmp r2, #0x4
  1658. bls .L344 @cond_branch
  1659. add r0, r3, #0
  1660. b .L350
  1661. .L344:
  1662. ldr r0, .L352
  1663. lsl r1, r4, #0x2
  1664. add r1, r1, r4
  1665. sub r1, r1, #0x1
  1666. add r1, r5, r1
  1667. add r1, r1, r0
  1668. ldrb r1, [r1, #0]
  1669. lsl r1, r1, #24
  1670. asr r1, r1, #24
  1671. mov r0, #0x1
  1672. neg r0, r0
  1673. cmp r1, r0
  1674. beq .L347 @cond_branch
  1675. cmp r1, #0x1
  1676. bne .L345 @cond_branch
  1677. mov r0, #0x6e
  1678. b .L351
  1679. .L353:
  1680. .align 2, 0
  1681. .L352:
  1682. .word gNatureStatTable
  1683. .L347:
  1684. mov r0, #0x5a
  1685. .L351:
  1686. mul r0, r0, r3
  1687. lsl r0, r0, #0x10
  1688. lsr r0, r0, #0x10
  1689. mov r1, #0x64
  1690. bl __udivsi3
  1691. lsl r0, r0, #0x10
  1692. lsr r0, r0, #0x10
  1693. b .L350
  1694. .L345:
  1695. add r0, r3, #0
  1696. .L350:
  1697. pop {r4, r5}
  1698. pop {r1}
  1699. bx r1
  1700. .Lfe22:
  1701. .size nature_stat_mod,.Lfe22-nature_stat_mod
  1702. .align 2, 0
  1703. .globl AdjustFriendship
  1704. .type AdjustFriendship,function
  1705. .thumb_func
  1706. AdjustFriendship:
  1707. push {r4, r5, r6, r7, lr}
  1708. add sp, sp, #0xfffffffc
  1709. add r7, r0, #0
  1710. lsl r1, r1, #0x18
  1711. lsr r5, r1, #0x18
  1712. mov r1, #0x41
  1713. mov r2, #0x0
  1714. bl GetMonData
  1715. lsl r0, r0, #0x10
  1716. lsr r6, r0, #0x10
  1717. add r0, r7, #0
  1718. mov r1, #0xc
  1719. mov r2, #0x0
  1720. bl GetMonData
  1721. lsl r0, r0, #0x10
  1722. lsr r0, r0, #0x10
  1723. cmp r0, #0xaf
  1724. bne .L355 @cond_branch
  1725. ldr r0, .L371
  1726. ldr r1, .L371+0x4
  1727. add r0, r0, r1
  1728. ldrb r1, [r0]
  1729. mov r0, #0x2
  1730. and r0, r0, r1
  1731. cmp r0, #0
  1732. beq .L356 @cond_branch
  1733. ldr r0, .L371+0x8
  1734. ldrb r4, [r0, #0x7]
  1735. b .L358
  1736. .L372:
  1737. .align 2, 0
  1738. .L371:
  1739. .word gMain
  1740. .word 0x43d
  1741. .word gEnigmaBerries
  1742. .L356:
  1743. ldr r0, .L373
  1744. ldr r1, .L373+0x4
  1745. add r0, r0, r1
  1746. ldrb r4, [r0]
  1747. b .L358
  1748. .L374:
  1749. .align 2, 0
  1750. .L373:
  1751. .word gSaveBlock1
  1752. .word 0x3688
  1753. .L355:
  1754. bl ItemId_GetHoldEffect
  1755. lsl r0, r0, #0x18
  1756. lsr r4, r0, #0x18
  1757. .L358:
  1758. cmp r6, #0
  1759. bne .LCB2262
  1760. b .L359 @long jump
  1761. .LCB2262:
  1762. mov r0, #0xce
  1763. lsl r0, r0, #0x1
  1764. cmp r6, r0
  1765. bne .LCB2268
  1766. b .L359 @long jump
  1767. .LCB2268:
  1768. mov r6, #0x0
  1769. add r0, r7, #0
  1770. mov r1, #0x20
  1771. mov r2, #0x0
  1772. bl GetMonData
  1773. lsl r0, r0, #0x10
  1774. lsr r0, r0, #0x10
  1775. mov r1, sp
  1776. strh r0, [r1]
  1777. lsl r0, r0, #0x10
  1778. asr r0, r0, #0x10
  1779. cmp r0, #0x63
  1780. ble .L360 @cond_branch
  1781. mov r6, #0x1
  1782. .L360:
  1783. cmp r0, #0xc7
  1784. ble .L361 @cond_branch
  1785. add r0, r6, #0x1
  1786. lsl r0, r0, #0x18
  1787. lsr r6, r0, #0x18
  1788. .L361:
  1789. cmp r5, #0x5
  1790. bne .L363 @cond_branch
  1791. bl Random
  1792. mov r1, #0x1
  1793. and r1, r1, r0
  1794. cmp r1, #0
  1795. bne .L359 @cond_branch
  1796. .L363:
  1797. cmp r5, #0x3
  1798. bne .L364 @cond_branch
  1799. ldr r0, .L375
  1800. ldrh r1, [r0]
  1801. mov r0, #0x8
  1802. and r0, r0, r1
  1803. cmp r0, #0
  1804. beq .L359 @cond_branch
  1805. ldr r2, .L375+0x4
  1806. ldr r0, .L375+0x8
  1807. ldrh r1, [r0]
  1808. lsl r0, r1, #0x2
  1809. add r0, r0, r1
  1810. lsl r0, r0, #0x3
  1811. add r0, r0, r2
  1812. ldrb r1, [r0, #0x1]
  1813. add r0, r1, #0
  1814. sub r0, r0, #0x18
  1815. lsl r0, r0, #0x18
  1816. lsr r0, r0, #0x18
  1817. cmp r0, #0x1
  1818. bls .L364 @cond_branch
  1819. cmp r1, #0x20
  1820. bne .L359 @cond_branch
  1821. .L364:
  1822. ldr r1, .L375+0xc
  1823. lsl r0, r5, #0x1
  1824. add r0, r0, r5
  1825. add r0, r6, r0
  1826. add r0, r0, r1
  1827. ldrb r2, [r0]
  1828. mov r1, #0x0
  1829. ldrsb r1, [r0, r1]
  1830. cmp r1, #0
  1831. ble .L365 @cond_branch
  1832. cmp r4, #0x1b
  1833. bne .L365 @cond_branch
  1834. mov r0, #0x96
  1835. mul r0, r0, r1
  1836. mov r1, #0x64
  1837. bl __divsi3
  1838. lsl r0, r0, #0x18
  1839. lsr r2, r0, #0x18
  1840. .L365:
  1841. lsl r2, r2, #0x18
  1842. asr r2, r2, #0x18
  1843. mov r0, sp
  1844. mov r1, #0x0
  1845. ldrsh r0, [r0, r1]
  1846. add r0, r0, r2
  1847. mov r1, sp
  1848. strh r0, [r1]
  1849. cmp r2, #0
  1850. ble .L366 @cond_branch
  1851. add r0, r7, #0
  1852. mov r1, #0x26
  1853. mov r2, #0x0
  1854. bl GetMonData
  1855. cmp r0, #0xb
  1856. bne .L367 @cond_branch
  1857. mov r0, sp
  1858. mov r1, #0x0
  1859. ldrsh r0, [r0, r1]
  1860. add r0, r0, #0x1
  1861. mov r1, sp
  1862. strh r0, [r1]
  1863. .L367:
  1864. add r0, r7, #0
  1865. mov r1, #0x23
  1866. mov r2, #0x0
  1867. bl GetMonData
  1868. add r4, r0, #0
  1869. bl sav1_map_get_name
  1870. lsl r0, r0, #0x18
  1871. lsr r0, r0, #0x18
  1872. cmp r4, r0
  1873. bne .L366 @cond_branch
  1874. mov r0, sp
  1875. mov r1, #0x0
  1876. ldrsh r0, [r0, r1]
  1877. add r0, r0, #0x1
  1878. mov r1, sp
  1879. strh r0, [r1]
  1880. .L366:
  1881. mov r0, sp
  1882. mov r1, #0x0
  1883. ldrsh r0, [r0, r1]
  1884. cmp r0, #0
  1885. bge .L369 @cond_branch
  1886. mov r1, #0x0
  1887. mov r0, sp
  1888. strh r1, [r0]
  1889. .L369:
  1890. mov r0, sp
  1891. mov r1, #0x0
  1892. ldrsh r0, [r0, r1]
  1893. cmp r0, #0xff
  1894. ble .L370 @cond_branch
  1895. mov r1, #0xff
  1896. mov r0, sp
  1897. strh r1, [r0]
  1898. .L370:
  1899. add r0, r7, #0
  1900. mov r1, #0x20
  1901. mov r2, sp
  1902. bl SetMonData
  1903. .L359:
  1904. add sp, sp, #0x4
  1905. pop {r4, r5, r6, r7}
  1906. pop {r0}
  1907. bx r0
  1908. .L376:
  1909. .align 2, 0
  1910. .L375:
  1911. .word gBattleTypeFlags
  1912. .word gTrainers
  1913. .word gTrainerBattleOpponent
  1914. .word gUnknown_082082FE
  1915. .Lfe23:
  1916. .size AdjustFriendship,.Lfe23-AdjustFriendship
  1917. .align 2, 0
  1918. .globl MonGainEVs
  1919. .type MonGainEVs,function
  1920. .thumb_func
  1921. MonGainEVs:
  1922. push {r4, r5, r6, r7, lr}
  1923. mov r7, r8
  1924. push {r7}
  1925. add sp, sp, #0xfffffff8
  1926. mov r8, r0
  1927. lsl r1, r1, #0x10
  1928. lsr r5, r1, #0x10
  1929. mov r4, #0x0
  1930. mov r7, #0x0
  1931. mov r6, #0x0
  1932. .L381:
  1933. add r1, r6, #0
  1934. add r1, r1, #0x1a
  1935. mov r0, r8
  1936. mov r2, #0x0
  1937. bl GetMonData
  1938. mov r2, sp
  1939. add r1, r2, r6
  1940. strb r0, [r1]
  1941. ldrb r0, [r1]
  1942. add r0, r7, r0
  1943. lsl r0, r0, #0x10
  1944. lsr r7, r0, #0x10
  1945. add r6, r6, #0x1
  1946. cmp r6, #0x5
  1947. ble .L381 @cond_branch
  1948. mov r6, #0x0
  1949. b .L407
  1950. .L387:
  1951. mov r0, r8
  1952. mov r1, #0x0
  1953. bl CheckPartyHasHadPokerus
  1954. lsl r0, r0, #0x18
  1955. mov r2, #0x1
  1956. cmp r0, #0
  1957. beq .L388 @cond_branch
  1958. mov r2, #0x2
  1959. .L388:
  1960. cmp r6, #0x5
  1961. bhi .L390 @cond_branch
  1962. lsl r0, r6, #0x2
  1963. ldr r1, .L411
  1964. add r0, r0, r1
  1965. ldr r0, [r0]
  1966. mov pc, r0
  1967. .L412:
  1968. .align 2, 0
  1969. .L411:
  1970. .word .L397
  1971. .align 2, 0
  1972. .align 2, 0
  1973. .L397:
  1974. .word .L391
  1975. .word .L392
  1976. .word .L393
  1977. .word .L394
  1978. .word .L395
  1979. .word .L396
  1980. .L391:
  1981. ldr r0, .L413
  1982. lsl r1, r5, #0x3
  1983. sub r1, r1, r5
  1984. lsl r1, r1, #0x2
  1985. add r1, r1, r0
  1986. ldrb r0, [r1, #0xa]
  1987. lsl r0, r0, #0x1e
  1988. b .L408
  1989. .L414:
  1990. .align 2, 0
  1991. .L413:
  1992. .word gBaseStats
  1993. .L392:
  1994. ldr r0, .L415
  1995. lsl r1, r5, #0x3
  1996. sub r1, r1, r5
  1997. lsl r1, r1, #0x2
  1998. add r1, r1, r0
  1999. ldrb r0, [r1, #0xa]
  2000. b .L409
  2001. .L416:
  2002. .align 2, 0
  2003. .L415:
  2004. .word gBaseStats
  2005. .L393:
  2006. ldr r0, .L417
  2007. lsl r1, r5, #0x3
  2008. sub r1, r1, r5
  2009. lsl r1, r1, #0x2
  2010. add r1, r1, r0
  2011. ldrb r0, [r1, #0xa]
  2012. lsl r0, r0, #0x1a
  2013. b .L408
  2014. .L418:
  2015. .align 2, 0
  2016. .L417:
  2017. .word gBaseStats
  2018. .L394:
  2019. ldr r0, .L419
  2020. lsl r1, r5, #0x3
  2021. sub r1, r1, r5
  2022. lsl r1, r1, #0x2
  2023. add r1, r1, r0
  2024. ldrb r0, [r1, #0xa]
  2025. lsr r0, r0, #0x6
  2026. b .L410
  2027. .L420:
  2028. .align 2, 0
  2029. .L419:
  2030. .word gBaseStats
  2031. .L395:
  2032. ldr r0, .L421
  2033. lsl r1, r5, #0x3
  2034. sub r1, r1, r5
  2035. lsl r1, r1, #0x2
  2036. add r1, r1, r0
  2037. ldrb r0, [r1, #0xb]
  2038. lsl r0, r0, #0x1e
  2039. b .L408
  2040. .L422:
  2041. .align 2, 0
  2042. .L421:
  2043. .word gBaseStats
  2044. .L396:
  2045. ldr r0, .L423
  2046. lsl r1, r5, #0x3
  2047. sub r1, r1, r5
  2048. lsl r1, r1, #0x2
  2049. add r1, r1, r0
  2050. ldrb r0, [r1, #0xb]
  2051. .L409:
  2052. lsl r0, r0, #0x1c
  2053. .L408:
  2054. lsr r0, r0, #0x1e
  2055. .L410:
  2056. mov r4, r0
  2057. mul r4, r4, r2
  2058. .L390:
  2059. mov r0, r8
  2060. mov r1, #0xc
  2061. mov r2, #0x0
  2062. bl GetMonData
  2063. lsl r0, r0, #0x10
  2064. lsr r0, r0, #0x10
  2065. cmp r0, #0xaf
  2066. bne .L399 @cond_branch
  2067. ldr r0, .L423+0x4
  2068. ldr r1, .L423+0x8
  2069. add r0, r0, r1
  2070. ldrb r1, [r0]
  2071. mov r0, #0x2
  2072. and r0, r0, r1
  2073. cmp r0, #0
  2074. beq .L400 @cond_branch
  2075. ldr r0, .L423+0xc
  2076. ldrb r0, [r0, #0x7]
  2077. b .L402
  2078. .L424:
  2079. .align 2, 0
  2080. .L423:
  2081. .word gBaseStats
  2082. .word gMain
  2083. .word 0x43d
  2084. .word gEnigmaBerries
  2085. .L400:
  2086. ldr r0, .L425
  2087. ldr r2, .L425+0x4
  2088. add r0, r0, r2
  2089. ldrb r0, [r0]
  2090. b .L402
  2091. .L426:
  2092. .align 2, 0
  2093. .L425:
  2094. .word gSaveBlock1
  2095. .word 0x3688
  2096. .L399:
  2097. bl ItemId_GetHoldEffect
  2098. lsl r0, r0, #0x18
  2099. lsr r0, r0, #0x18
  2100. .L402:
  2101. cmp r0, #0x18
  2102. bne .L403 @cond_branch
  2103. lsl r0, r4, #0x11
  2104. lsr r4, r0, #0x10
  2105. .L403:
  2106. lsl r0, r4, #0x10
  2107. asr r2, r0, #0x10
  2108. add r1, r7, r2
  2109. mov r0, #0xff
  2110. lsl r0, r0, #0x1
  2111. cmp r1, r0
  2112. ble .L404 @cond_branch
  2113. add r0, r2, r0
  2114. add r1, r7, r4
  2115. sub r0, r0, r1
  2116. lsl r0, r0, #0x10
  2117. lsr r4, r0, #0x10
  2118. .L404:
  2119. mov r0, sp
  2120. add r2, r0, r6
  2121. ldrb r3, [r2]
  2122. lsl r0, r4, #0x10
  2123. asr r1, r0, #0x10
  2124. add r0, r3, r1
  2125. cmp r0, #0xff
  2126. ble .L405 @cond_branch
  2127. add r0, r1, #0
  2128. add r0, r0, #0xff
  2129. add r1, r3, r4
  2130. sub r0, r0, r1
  2131. lsl r0, r0, #0x10
  2132. lsr r4, r0, #0x10
  2133. .L405:
  2134. add r0, r3, r4
  2135. strb r0, [r2]
  2136. add r0, r7, r4
  2137. lsl r0, r0, #0x10
  2138. lsr r7, r0, #0x10
  2139. add r1, r6, #0
  2140. add r1, r1, #0x1a
  2141. mov r0, r8
  2142. bl SetMonData
  2143. add r6, r6, #0x1
  2144. cmp r6, #0x5
  2145. bgt .L384 @cond_branch
  2146. .L407:
  2147. ldr r0, .L427
  2148. cmp r7, r0
  2149. bhi .LCB2764
  2150. b .L387 @long jump
  2151. .LCB2764:
  2152. .L384:
  2153. add sp, sp, #0x8
  2154. pop {r3}
  2155. mov r8, r3
  2156. pop {r4, r5, r6, r7}
  2157. pop {r0}
  2158. bx r0
  2159. .L428:
  2160. .align 2, 0
  2161. .L427:
  2162. .word 0x1fd
  2163. .Lfe24:
  2164. .size MonGainEVs,.Lfe24-MonGainEVs
  2165. .align 2, 0
  2166. .globl GetMonEVCount
  2167. .type GetMonEVCount,function
  2168. .thumb_func
  2169. GetMonEVCount:
  2170. push {r4, r5, r6, lr}
  2171. add r6, r0, #0
  2172. mov r5, #0x0
  2173. mov r4, #0x0
  2174. .L433:
  2175. add r1, r4, #0
  2176. add r1, r1, #0x1a
  2177. add r0, r6, #0
  2178. mov r2, #0x0
  2179. bl GetMonData
  2180. add r0, r5, r0
  2181. lsl r0, r0, #0x10
  2182. lsr r5, r0, #0x10
  2183. add r4, r4, #0x1
  2184. cmp r4, #0x5
  2185. ble .L433 @cond_branch
  2186. add r0, r5, #0
  2187. pop {r4, r5, r6}
  2188. pop {r1}
  2189. bx r1
  2190. .Lfe25:
  2191. .size GetMonEVCount,.Lfe25-GetMonEVCount
  2192. .align 2, 0
  2193. .globl RandomlyGivePartyPokerus
  2194. .type RandomlyGivePartyPokerus,function
  2195. .thumb_func
  2196. RandomlyGivePartyPokerus:
  2197. push {r4, r5, r6, lr}
  2198. add sp, sp, #0xfffffffc
  2199. add r6, r0, #0
  2200. bl Random
  2201. lsl r0, r0, #0x10
  2202. lsr r5, r0, #0x10
  2203. mov r0, #0x80
  2204. lsl r0, r0, #0x7
  2205. cmp r5, r0
  2206. beq .L441 @cond_branch
  2207. mov r0, #0x80
  2208. lsl r0, r0, #0x8
  2209. cmp r5, r0
  2210. beq .L441 @cond_branch
  2211. mov r0, #0xc0
  2212. lsl r0, r0, #0x8
  2213. cmp r5, r0
  2214. bne .L436 @cond_branch
  2215. .L441:
  2216. bl Random
  2217. lsl r0, r0, #0x10
  2218. lsr r0, r0, #0x10
  2219. mov r1, #0x6
  2220. bl __umodsi3
  2221. lsl r0, r0, #0x10
  2222. lsr r5, r0, #0x10
  2223. mov r0, #0x64
  2224. mul r0, r0, r5
  2225. add r4, r6, r0
  2226. add r0, r4, #0
  2227. mov r1, #0xb
  2228. mov r2, #0x0
  2229. bl GetMonData
  2230. cmp r0, #0
  2231. beq .L441 @cond_branch
  2232. add r0, r4, #0
  2233. mov r1, #0x2d
  2234. mov r2, #0x0
  2235. bl GetMonData
  2236. cmp r0, #0
  2237. bne .L441 @cond_branch
  2238. ldr r1, .L455
  2239. lsl r0, r5, #0x2
  2240. add r0, r0, r1
  2241. ldrb r1, [r0]
  2242. add r0, r6, #0
  2243. bl CheckPartyHasHadPokerus
  2244. lsl r0, r0, #0x18
  2245. cmp r0, #0
  2246. bne .L436 @cond_branch
  2247. mov r4, sp
  2248. .L449:
  2249. bl Random
  2250. lsl r0, r0, #0x18
  2251. lsr r0, r0, #0x18
  2252. strb r0, [r4]
  2253. cmp r0, #0
  2254. beq .L449 @cond_branch
  2255. mov r0, #0xf0
  2256. mov r1, sp
  2257. ldrb r1, [r1]
  2258. and r0, r0, r1
  2259. cmp r0, #0
  2260. beq .L454 @cond_branch
  2261. mov r0, #0x7
  2262. and r1, r1, r0
  2263. mov r0, sp
  2264. strb r1, [r0]
  2265. .L454:
  2266. mov r0, sp
  2267. ldrb r0, [r0]
  2268. lsl r1, r0, #0x4
  2269. orr r0, r0, r1
  2270. lsl r0, r0, #0x18
  2271. lsr r0, r0, #0x18
  2272. mov r1, sp
  2273. strb r0, [r1]
  2274. mov r1, #0xf3
  2275. and r1, r1, r0
  2276. mov r0, sp
  2277. strb r1, [r0]
  2278. add r1, r1, #0x1
  2279. strb r1, [r0]
  2280. mov r0, #0x64
  2281. mul r0, r0, r5
  2282. add r0, r6, r0
  2283. mov r1, #0x22
  2284. mov r2, sp
  2285. bl SetMonData
  2286. .L436:
  2287. add sp, sp, #0x4
  2288. pop {r4, r5, r6}
  2289. pop {r0}
  2290. bx r0
  2291. .L456:
  2292. .align 2, 0
  2293. .L455:
  2294. .word gBitTable
  2295. .Lfe26:
  2296. .size RandomlyGivePartyPokerus,.Lfe26-RandomlyGivePartyPokerus
  2297. .align 2, 0
  2298. .globl CheckPartyPokerus
  2299. .type CheckPartyPokerus,function
  2300. .thumb_func
  2301. CheckPartyPokerus:
  2302. push {r4, r5, r6, r7, lr}
  2303. add sp, sp, #0xfffffffc
  2304. add r7, r0, #0
  2305. lsl r1, r1, #0x18
  2306. lsr r4, r1, #0x18
  2307. mov r3, #0x0
  2308. mov r6, #0x1
  2309. mov r5, #0x0
  2310. cmp r4, #0
  2311. beq .L458 @cond_branch
  2312. .L459:
  2313. mov r0, #0x1
  2314. and r0, r0, r4
  2315. cmp r0, #0
  2316. beq .L462 @cond_branch
  2317. mov r0, #0x64
  2318. mul r0, r0, r3
  2319. add r0, r7, r0
  2320. mov r1, #0x22
  2321. mov r2, #0x0
  2322. str r3, [sp]
  2323. bl GetMonData
  2324. mov r1, #0xf
  2325. and r1, r1, r0
  2326. ldr r3, [sp]
  2327. cmp r1, #0
  2328. beq .L462 @cond_branch
  2329. orr r5, r5, r6
  2330. lsl r0, r5, #0x18
  2331. lsr r5, r0, #0x18
  2332. .L462:
  2333. add r3, r3, #0x1
  2334. lsl r6, r6, #0x1
  2335. lsr r4, r4, #0x1
  2336. cmp r4, #0
  2337. bne .L459 @cond_branch
  2338. b .L465
  2339. .L458:
  2340. add r0, r7, #0
  2341. mov r1, #0x22
  2342. mov r2, #0x0
  2343. bl GetMonData
  2344. mov r1, #0xf
  2345. and r1, r1, r0
  2346. cmp r1, #0
  2347. beq .L465 @cond_branch
  2348. mov r5, #0x1
  2349. .L465:
  2350. add r0, r5, #0
  2351. add sp, sp, #0x4
  2352. pop {r4, r5, r6, r7}
  2353. pop {r1}
  2354. bx r1
  2355. .Lfe27:
  2356. .size CheckPartyPokerus,.Lfe27-CheckPartyPokerus
  2357. .align 2, 0
  2358. .globl CheckPartyHasHadPokerus
  2359. .type CheckPartyHasHadPokerus,function
  2360. .thumb_func
  2361. CheckPartyHasHadPokerus:
  2362. push {r4, r5, r6, r7, lr}
  2363. add sp, sp, #0xfffffffc
  2364. add r7, r0, #0
  2365. lsl r1, r1, #0x18
  2366. lsr r4, r1, #0x18
  2367. mov r3, #0x0
  2368. mov r6, #0x1
  2369. mov r5, #0x0
  2370. cmp r4, #0
  2371. beq .L468 @cond_branch
  2372. .L469:
  2373. mov r0, #0x1
  2374. and r0, r0, r4
  2375. cmp r0, #0
  2376. beq .L472 @cond_branch
  2377. mov r0, #0x64
  2378. mul r0, r0, r3
  2379. add r0, r7, r0
  2380. mov r1, #0x22
  2381. mov r2, #0x0
  2382. str r3, [sp]
  2383. bl GetMonData
  2384. ldr r3, [sp]
  2385. cmp r0, #0
  2386. beq .L472 @cond_branch
  2387. orr r5, r5, r6
  2388. lsl r0, r5, #0x18
  2389. lsr r5, r0, #0x18
  2390. .L472:
  2391. add r3, r3, #0x1
  2392. lsl r6, r6, #0x1
  2393. lsr r4, r4, #0x1
  2394. cmp r4, #0
  2395. bne .L469 @cond_branch
  2396. b .L475
  2397. .L468:
  2398. add r0, r7, #0
  2399. mov r1, #0x22
  2400. mov r2, #0x0
  2401. bl GetMonData
  2402. cmp r0, #0
  2403. beq .L475 @cond_branch
  2404. mov r5, #0x1
  2405. .L475:
  2406. add r0, r5, #0
  2407. add sp, sp, #0x4
  2408. pop {r4, r5, r6, r7}
  2409. pop {r1}
  2410. bx r1
  2411. .Lfe28:
  2412. .size CheckPartyHasHadPokerus,.Lfe28-CheckPartyHasHadPokerus
  2413. .align 2, 0
  2414. .globl UpdatePartyPokerusTime
  2415. .type UpdatePartyPokerusTime,function
  2416. .thumb_func
  2417. UpdatePartyPokerusTime:
  2418. push {r4, r5, r6, r7, lr}
  2419. add sp, sp, #0xfffffffc
  2420. lsl r0, r0, #0x10
  2421. lsr r7, r0, #0x10
  2422. mov r5, #0x0
  2423. mov r6, sp
  2424. .L481:
  2425. mov r0, #0x64
  2426. mov r1, r5
  2427. mul r1, r1, r0
  2428. ldr r0, .L489
  2429. add r4, r1, r0
  2430. add r0, r4, #0
  2431. mov r1, #0xb
  2432. mov r2, #0x0
  2433. bl GetMonData
  2434. cmp r0, #0
  2435. beq .L480 @cond_branch
  2436. add r0, r4, #0
  2437. mov r1, #0x22
  2438. mov r2, #0x0
  2439. bl GetMonData
  2440. lsl r0, r0, #0x18
  2441. lsr r0, r0, #0x18
  2442. strb r0, [r6]
  2443. mov r1, #0xf
  2444. add r2, r0, #0
  2445. and r1, r1, r2
  2446. cmp r1, #0
  2447. beq .L480 @cond_branch
  2448. cmp r1, r7
  2449. bcc .L485 @cond_branch
  2450. cmp r7, #0x4
  2451. bls .L484 @cond_branch
  2452. .L485:
  2453. mov r0, #0xf0
  2454. and r0, r0, r2
  2455. b .L488
  2456. .L490:
  2457. .align 2, 0
  2458. .L489:
  2459. .word gPlayerParty
  2460. .L484:
  2461. sub r0, r2, r7
  2462. .L488:
  2463. strb r0, [r6]
  2464. mov r0, #0x64
  2465. mul r0, r0, r5
  2466. ldr r1, .L491
  2467. add r0, r0, r1
  2468. mov r1, #0x22
  2469. mov r2, sp
  2470. bl SetMonData
  2471. .L480:
  2472. add r5, r5, #0x1
  2473. cmp r5, #0x5
  2474. ble .L481 @cond_branch
  2475. add sp, sp, #0x4
  2476. pop {r4, r5, r6, r7}
  2477. pop {r0}
  2478. bx r0
  2479. .L492:
  2480. .align 2, 0
  2481. .L491:
  2482. .word gPlayerParty
  2483. .Lfe29:
  2484. .size UpdatePartyPokerusTime,.Lfe29-UpdatePartyPokerusTime
  2485. .align 2, 0
  2486. .globl PartySpreadPokerus
  2487. .type PartySpreadPokerus,function
  2488. .thumb_func
  2489. PartySpreadPokerus:
  2490. push {r4, r5, r6, r7, lr}
  2491. add sp, sp, #0xfffffffc
  2492. add r7, r0, #0
  2493. bl Random
  2494. lsl r0, r0, #0x10
  2495. lsr r0, r0, #0x10
  2496. mov r1, #0x3
  2497. bl __umodsi3
  2498. lsl r0, r0, #0x10
  2499. cmp r0, #0
  2500. bne .L494 @cond_branch
  2501. mov r5, #0x0
  2502. .L498:
  2503. mov r0, #0x64
  2504. mov r6, r5
  2505. mul r6, r6, r0
  2506. add r4, r7, r6
  2507. add r0, r4, #0
  2508. mov r1, #0xb
  2509. mov r2, #0x0
  2510. bl GetMonData
  2511. cmp r0, #0
  2512. beq .L497 @cond_branch
  2513. add r0, r4, #0
  2514. mov r1, #0x22
  2515. mov r2, #0x0
  2516. bl GetMonData
  2517. lsl r0, r0, #0x18
  2518. lsr r1, r0, #0x18
  2519. mov r0, sp
  2520. strb r1, [r0]
  2521. cmp r1, #0
  2522. beq .L497 @cond_branch
  2523. mov r0, #0xf
  2524. and r0, r0, r1
  2525. cmp r0, #0
  2526. beq .L497 @cond_branch
  2527. cmp r5, #0
  2528. beq .L502 @cond_branch
  2529. add r0, r6, #0
  2530. sub r0, r0, #0x64
  2531. add r4, r7, r0
  2532. add r0, r4, #0
  2533. mov r1, #0x22
  2534. mov r2, #0x0
  2535. bl GetMonData
  2536. mov r1, #0xf0
  2537. and r1, r1, r0
  2538. cmp r1, #0
  2539. bne .L502 @cond_branch
  2540. add r0, r4, #0
  2541. mov r1, #0x22
  2542. mov r2, sp
  2543. bl SetMonData
  2544. .L502:
  2545. cmp r5, #0x5
  2546. beq .L497 @cond_branch
  2547. mov r0, #0x64
  2548. mul r0, r0, r5
  2549. add r0, r0, #0x64
  2550. add r4, r7, r0
  2551. add r0, r4, #0
  2552. mov r1, #0x22
  2553. mov r2, #0x0
  2554. bl GetMonData
  2555. mov r1, #0xf0
  2556. and r1, r1, r0
  2557. cmp r1, #0
  2558. bne .L497 @cond_branch
  2559. add r0, r4, #0
  2560. mov r1, #0x22
  2561. mov r2, sp
  2562. bl SetMonData
  2563. add r5, r5, #0x1
  2564. .L497:
  2565. add r5, r5, #0x1
  2566. cmp r5, #0x5
  2567. ble .L498 @cond_branch
  2568. .L494:
  2569. add sp, sp, #0x4
  2570. pop {r4, r5, r6, r7}
  2571. pop {r0}
  2572. bx r0
  2573. .Lfe30:
  2574. .size PartySpreadPokerus,.Lfe30-PartySpreadPokerus
  2575. .align 2, 0
  2576. .globl TryIncrementMonLevel
  2577. .type TryIncrementMonLevel,function
  2578. .thumb_func
  2579. TryIncrementMonLevel:
  2580. push {r4, r5, r6, lr}
  2581. add sp, sp, #0xfffffffc
  2582. add r6, r0, #0
  2583. mov r1, #0xb
  2584. mov r2, #0x0
  2585. bl GetMonData
  2586. add r4, r0, #0
  2587. lsl r4, r4, #0x10
  2588. lsr r4, r4, #0x10
  2589. add r0, r6, #0
  2590. mov r1, #0x38
  2591. mov r2, #0x0
  2592. bl GetMonData
  2593. add r0, r0, #0x1
  2594. mov r1, sp
  2595. strb r0, [r1]
  2596. add r0, r6, #0
  2597. mov r1, #0x19
  2598. mov r2, #0x0
  2599. bl GetMonData
  2600. ldr r5, .L509
  2601. mov r1, sp
  2602. ldrb r2, [r1]
  2603. lsl r2, r2, #0x2
  2604. ldr r3, .L509+0x4
  2605. lsl r1, r4, #0x3
  2606. sub r1, r1, r4
  2607. lsl r1, r1, #0x2
  2608. add r1, r1, r3
  2609. ldrb r3, [r1, #0x13]
  2610. mov r1, #0xca
  2611. lsl r1, r1, #0x1
  2612. mul r1, r1, r3
  2613. add r2, r2, r1
  2614. add r2, r2, r5
  2615. ldr r1, [r2]
  2616. cmp r0, r1
  2617. bhi .L506 @cond_branch
  2618. mov r0, #0x0
  2619. b .L508
  2620. .L510:
  2621. .align 2, 0
  2622. .L509:
  2623. .word gExperienceTables
  2624. .word gBaseStats
  2625. .L506:
  2626. add r0, r6, #0
  2627. mov r1, #0x38
  2628. mov r2, sp
  2629. bl SetMonData
  2630. mov r0, #0x1
  2631. .L508:
  2632. add sp, sp, #0x4
  2633. pop {r4, r5, r6}
  2634. pop {r1}
  2635. bx r1
  2636. .Lfe31:
  2637. .size TryIncrementMonLevel,.Lfe31-TryIncrementMonLevel
  2638. .align 2, 0
  2639. .globl CanMonLearnTMHM
  2640. .type CanMonLearnTMHM,function
  2641. .thumb_func
  2642. CanMonLearnTMHM:
  2643. push {r4, r5, lr}
  2644. lsl r1, r1, #0x18
  2645. lsr r4, r1, #0x18
  2646. add r5, r4, #0
  2647. mov r1, #0x41
  2648. mov r2, #0x0
  2649. bl GetMonData
  2650. lsl r0, r0, #0x10
  2651. lsr r1, r0, #0x10
  2652. add r3, r1, #0
  2653. mov r0, #0xce
  2654. lsl r0, r0, #0x1
  2655. cmp r1, r0
  2656. bne .L512 @cond_branch
  2657. mov r0, #0x0
  2658. b .L516
  2659. .L512:
  2660. cmp r4, #0x1f
  2661. bls .L514 @cond_branch
  2662. add r0, r4, #0
  2663. sub r0, r0, #0x20
  2664. mov r2, #0x1
  2665. lsl r2, r2, r0
  2666. ldr r0, .L518
  2667. lsl r1, r1, #0x3
  2668. add r0, r0, #0x4
  2669. add r1, r1, r0
  2670. ldr r0, [r1]
  2671. and r0, r0, r2
  2672. b .L517
  2673. .L519:
  2674. .align 2, 0
  2675. .L518:
  2676. .word gTMHMLearnsets
  2677. .L514:
  2678. mov r1, #0x1
  2679. lsl r1, r1, r5
  2680. ldr r2, .L520
  2681. lsl r0, r3, #0x3
  2682. add r0, r0, r2
  2683. ldr r0, [r0]
  2684. and r0, r0, r1
  2685. .L517:
  2686. .L516:
  2687. pop {r4, r5}
  2688. pop {r1}
  2689. bx r1
  2690. .L521:
  2691. .align 2, 0
  2692. .L520:
  2693. .word gTMHMLearnsets
  2694. .Lfe32:
  2695. .size CanMonLearnTMHM,.Lfe32-CanMonLearnTMHM
  2696. .align 2, 0
  2697. .globl GetMoveRelearnerMoves
  2698. .type GetMoveRelearnerMoves,function
  2699. .thumb_func
  2700. GetMoveRelearnerMoves:
  2701. push {r4, r5, r6, r7, lr}
  2702. mov r7, sl
  2703. mov r6, r9
  2704. mov r5, r8
  2705. push {r5, r6, r7}
  2706. add sp, sp, #0xffffffe8
  2707. add r6, r0, #0
  2708. str r1, [sp, #0x8]
  2709. mov r0, #0x0
  2710. mov sl, r0
  2711. add r0, r6, #0
  2712. mov r1, #0xb
  2713. mov r2, #0x0
  2714. bl GetMonData
  2715. lsl r0, r0, #0x10
  2716. lsr r7, r0, #0x10
  2717. add r0, r6, #0
  2718. mov r1, #0x38
  2719. mov r2, #0x0
  2720. bl GetMonData
  2721. lsl r0, r0, #0x18
  2722. lsr r0, r0, #0x18
  2723. str r0, [sp, #0xc]
  2724. mov r5, #0x0
  2725. mov r4, sp
  2726. .L526:
  2727. add r1, r5, #0
  2728. add r1, r1, #0xd
  2729. add r0, r6, #0
  2730. mov r2, #0x0
  2731. bl GetMonData
  2732. strh r0, [r4]
  2733. add r4, r4, #0x2
  2734. add r5, r5, #0x1
  2735. cmp r5, #0x3
  2736. ble .L526 @cond_branch
  2737. mov r5, #0x0
  2738. ldr r6, .L549
  2739. lsl r1, r7, #0x2
  2740. add r2, r1, r6
  2741. ldr r3, [r2]
  2742. ldrh r0, [r3]
  2743. ldr r4, .L549+0x4
  2744. str r1, [sp, #0x14]
  2745. cmp r0, r4
  2746. beq .L529 @cond_branch
  2747. mov r9, r2
  2748. str r3, [sp, #0x10]
  2749. .L532:
  2750. lsl r2, r5, #0x1
  2751. ldr r1, [sp, #0x10]
  2752. add r0, r2, r1
  2753. ldrh r3, [r0]
  2754. mov r0, #0xfe
  2755. lsl r0, r0, #0x8
  2756. and r0, r0, r3
  2757. ldr r4, [sp, #0xc]
  2758. lsl r1, r4, #0x9
  2759. add r7, r2, #0
  2760. add r5, r5, #0x1
  2761. mov ip, r5
  2762. cmp r0, r1
  2763. bgt .L530 @cond_branch
  2764. mov r4, #0x0
  2765. mov r0, sp
  2766. ldrh r1, [r0]
  2767. ldr r0, .L549+0x8
  2768. and r0, r0, r3
  2769. cmp r1, r0
  2770. beq .L535 @cond_branch
  2771. ldr r0, [sp, #0x14]
  2772. ldr r1, .L549
  2773. add r6, r0, r1
  2774. ldr r2, .L549+0x8
  2775. mov r8, r2
  2776. mov r3, sp
  2777. add r5, r7, #0
  2778. .L536:
  2779. add r3, r3, #0x2
  2780. add r4, r4, #0x1
  2781. cmp r4, #0x3
  2782. bgt .L535 @cond_branch
  2783. ldr r0, [r6]
  2784. add r0, r5, r0
  2785. ldrh r1, [r0]
  2786. ldrh r2, [r3]
  2787. mov r0, r8
  2788. and r0, r0, r1
  2789. cmp r2, r0
  2790. bne .L536 @cond_branch
  2791. .L535:
  2792. cmp r4, #0x4
  2793. bne .L530 @cond_branch
  2794. mov r4, #0x0
  2795. cmp r4, sl
  2796. bge .L542 @cond_branch
  2797. mov r1, r9
  2798. ldr r0, [r1]
  2799. add r0, r7, r0
  2800. ldrh r1, [r0]
  2801. ldr r0, [sp, #0x8]
  2802. ldrh r2, [r0]
  2803. ldr r0, .L549+0x8
  2804. and r0, r0, r1
  2805. cmp r2, r0
  2806. beq .L542 @cond_branch
  2807. ldr r1, [sp, #0x14]
  2808. ldr r2, .L549
  2809. add r6, r1, r2
  2810. ldr r0, .L549+0x8
  2811. mov r8, r0
  2812. ldr r3, [sp, #0x8]
  2813. add r5, r7, #0
  2814. .L543:
  2815. add r3, r3, #0x2
  2816. add r4, r4, #0x1
  2817. cmp r4, sl
  2818. bge .L542 @cond_branch
  2819. ldr r0, [r6]
  2820. add r0, r5, r0
  2821. ldrh r1, [r0]
  2822. ldrh r2, [r3]
  2823. mov r0, r8
  2824. and r0, r0, r1
  2825. cmp r2, r0
  2826. bne .L543 @cond_branch
  2827. .L542:
  2828. cmp r4, sl
  2829. bne .L530 @cond_branch
  2830. mov r0, sl
  2831. add r0, r0, #0x1
  2832. lsl r0, r0, #0x18
  2833. lsr r0, r0, #0x18
  2834. mov sl, r0
  2835. lsl r2, r4, #0x1
  2836. ldr r1, [sp, #0x8]
  2837. add r2, r2, r1
  2838. mov r4, r9
  2839. ldr r0, [r4]
  2840. add r0, r7, r0
  2841. ldrh r1, [r0]
  2842. ldr r0, .L549+0x8
  2843. and r0, r0, r1
  2844. strh r0, [r2]
  2845. .L530:
  2846. mov r5, ip
  2847. cmp r5, #0x13
  2848. bgt .L529 @cond_branch
  2849. mov r1, r9
  2850. ldr r0, [r1]
  2851. lsl r1, r5, #0x1
  2852. add r1, r1, r0
  2853. ldrh r0, [r1]
  2854. ldr r2, .L549+0x4
  2855. cmp r0, r2
  2856. bne .L532 @cond_branch
  2857. .L529:
  2858. mov r0, sl
  2859. add sp, sp, #0x18
  2860. pop {r3, r4, r5}
  2861. mov r8, r3
  2862. mov r9, r4
  2863. mov sl, r5
  2864. pop {r4, r5, r6, r7}
  2865. pop {r1}
  2866. bx r1
  2867. .L550:
  2868. .align 2, 0
  2869. .L549:
  2870. .word gLevelUpLearnsets
  2871. .word 0xffff
  2872. .word 0x1ff
  2873. .Lfe33:
  2874. .size GetMoveRelearnerMoves,.Lfe33-GetMoveRelearnerMoves
  2875. .align 2, 0
  2876. .globl GetLevelUpMovesBySpecies
  2877. .type GetLevelUpMovesBySpecies,function
  2878. .thumb_func
  2879. GetLevelUpMovesBySpecies:
  2880. push {r4, r5, r6, r7, lr}
  2881. add r6, r1, #0
  2882. lsl r0, r0, #0x10
  2883. mov r5, #0x0
  2884. mov r4, #0x0
  2885. ldr r1, .L558
  2886. lsr r0, r0, #0xe
  2887. add r0, r0, r1
  2888. ldr r2, [r0]
  2889. ldrh r0, [r2]
  2890. ldr r1, .L558+0x4
  2891. cmp r0, r1
  2892. beq .L553 @cond_branch
  2893. ldr r0, .L558+0x8
  2894. mov ip, r0
  2895. add r7, r1, #0
  2896. add r3, r2, #0
  2897. .L555:
  2898. add r1, r5, #0
  2899. add r0, r1, #0x1
  2900. lsl r0, r0, #0x18
  2901. lsr r5, r0, #0x18
  2902. lsl r1, r1, #0x1
  2903. add r1, r1, r6
  2904. ldrh r2, [r3]
  2905. mov r0, ip
  2906. and r0, r0, r2
  2907. strh r0, [r1]
  2908. add r3, r3, #0x2
  2909. add r4, r4, #0x1
  2910. cmp r4, #0x13
  2911. bgt .L553 @cond_branch
  2912. ldrh r0, [r3]
  2913. cmp r0, r7
  2914. bne .L555 @cond_branch
  2915. .L553:
  2916. add r0, r5, #0
  2917. pop {r4, r5, r6, r7}
  2918. pop {r1}
  2919. bx r1
  2920. .L559:
  2921. .align 2, 0
  2922. .L558:
  2923. .word gLevelUpLearnsets
  2924. .word 0xffff
  2925. .word 0x1ff
  2926. .Lfe34:
  2927. .size GetLevelUpMovesBySpecies,.Lfe34-GetLevelUpMovesBySpecies
  2928. .align 2, 0
  2929. .globl sub_8040574
  2930. .type sub_8040574,function
  2931. .thumb_func
  2932. sub_8040574:
  2933. push {r4, r5, r6, r7, lr}
  2934. mov r7, sl
  2935. mov r6, r9
  2936. mov r5, r8
  2937. push {r5, r6, r7}
  2938. add sp, sp, #0xffffffc4
  2939. add r6, r0, #0
  2940. mov r0, #0x0
  2941. mov sl, r0
  2942. add r0, r6, #0
  2943. mov r1, #0x41
  2944. mov r2, #0x0
  2945. bl GetMonData
  2946. lsl r0, r0, #0x10
  2947. lsr r4, r0, #0x10
  2948. add r0, r6, #0
  2949. mov r1, #0x38
  2950. mov r2, #0x0
  2951. bl GetMonData
  2952. lsl r0, r0, #0x18
  2953. lsr r0, r0, #0x18
  2954. str r0, [sp, #0x30]
  2955. mov r0, #0xce
  2956. lsl r0, r0, #0x1
  2957. cmp r4, r0
  2958. bne .L561 @cond_branch
  2959. mov r0, #0x0
  2960. b .L588
  2961. .L561:
  2962. mov r5, #0x0
  2963. lsl r4, r4, #0x2
  2964. str r4, [sp, #0x38]
  2965. mov r4, sp
  2966. .L565:
  2967. add r1, r5, #0
  2968. add r1, r1, #0xd
  2969. add r0, r6, #0
  2970. mov r2, #0x0
  2971. bl GetMonData
  2972. strh r0, [r4]
  2973. add r4, r4, #0x2
  2974. add r5, r5, #0x1
  2975. cmp r5, #0x3
  2976. ble .L565 @cond_branch
  2977. mov r5, #0x0
  2978. ldr r3, .L589
  2979. ldr r2, [sp, #0x38]
  2980. add r1, r2, r3
  2981. ldr r0, [r1]
  2982. ldrh r0, [r0]
  2983. ldr r2, .L589+0x4
  2984. cmp r0, r2
  2985. beq .L568 @cond_branch
  2986. mov r9, r1
  2987. mov r4, sp
  2988. add r4, r4, #0x8
  2989. str r4, [sp, #0x34]
  2990. .L571:
  2991. mov r1, r9
  2992. ldr r0, [r1]
  2993. lsl r2, r5, #0x1
  2994. add r0, r2, r0
  2995. ldrh r3, [r0]
  2996. mov r0, #0xfe
  2997. lsl r0, r0, #0x8
  2998. and r0, r0, r3
  2999. ldr r4, [sp, #0x30]
  3000. lsl r1, r4, #0x9
  3001. add r7, r2, #0
  3002. add r5, r5, #0x1
  3003. mov ip, r5
  3004. cmp r0, r1
  3005. bgt .L569 @cond_branch
  3006. mov r4, #0x0
  3007. mov r0, sp
  3008. ldrh r1, [r0]
  3009. ldr r0, .L589+0x8
  3010. and r0, r0, r3
  3011. cmp r1, r0
  3012. beq .L574 @cond_branch
  3013. ldr r0, [sp, #0x38]
  3014. ldr r1, .L589
  3015. add r6, r0, r1
  3016. ldr r2, .L589+0x8
  3017. mov r8, r2
  3018. mov r3, sp
  3019. add r5, r7, #0
  3020. .L575:
  3021. add r3, r3, #0x2
  3022. add r4, r4, #0x1
  3023. cmp r4, #0x3
  3024. bgt .L574 @cond_branch
  3025. ldr r0, [r6]
  3026. add r0, r5, r0
  3027. ldrh r1, [r0]
  3028. ldrh r2, [r3]
  3029. mov r0, r8
  3030. and r0, r0, r1
  3031. cmp r2, r0
  3032. bne .L575 @cond_branch
  3033. .L574:
  3034. cmp r4, #0x4
  3035. bne .L569 @cond_branch
  3036. mov r4, #0x0
  3037. cmp r4, sl
  3038. bge .L581 @cond_branch
  3039. mov r1, r9
  3040. ldr r0, [r1]
  3041. add r0, r7, r0
  3042. ldrh r1, [r0]
  3043. ldr r0, [sp, #0x34]
  3044. ldrh r2, [r0]
  3045. ldr r0, .L589+0x8
  3046. and r0, r0, r1
  3047. add r1, sp, #0x8
  3048. cmp r2, r0
  3049. beq .L581 @cond_branch
  3050. ldr r2, [sp, #0x38]
  3051. ldr r0, .L589
  3052. add r6, r2, r0
  3053. ldr r2, .L589+0x8
  3054. mov r8, r2
  3055. add r3, r1, #0
  3056. add r5, r7, #0
  3057. .L582:
  3058. add r3, r3, #0x2
  3059. add r4, r4, #0x1
  3060. cmp r4, sl
  3061. bge .L581 @cond_branch
  3062. ldr r0, [r6]
  3063. add r0, r5, r0
  3064. ldrh r1, [r0]
  3065. ldrh r2, [r3]
  3066. mov r0, r8
  3067. and r0, r0, r1
  3068. cmp r2, r0
  3069. bne .L582 @cond_branch
  3070. .L581:
  3071. cmp r4, sl
  3072. bne .L569 @cond_branch
  3073. mov r0, sl
  3074. add r0, r0, #0x1
  3075. lsl r0, r0, #0x18
  3076. lsr r0, r0, #0x18
  3077. mov sl, r0
  3078. lsl r2, r4, #0x1
  3079. ldr r4, [sp, #0x34]
  3080. add r2, r4, r2
  3081. mov r1, r9
  3082. ldr r0, [r1]
  3083. add r0, r7, r0
  3084. ldrh r1, [r0]
  3085. ldr r0, .L589+0x8
  3086. and r0, r0, r1
  3087. strh r0, [r2]
  3088. .L569:
  3089. mov r5, ip
  3090. cmp r5, #0x13
  3091. bgt .L568 @cond_branch
  3092. mov r2, r9
  3093. ldr r0, [r2]
  3094. lsl r1, r5, #0x1
  3095. add r1, r1, r0
  3096. ldrh r0, [r1]
  3097. ldr r4, .L589+0x4
  3098. cmp r0, r4
  3099. bne .L571 @cond_branch
  3100. .L568:
  3101. mov r0, sl
  3102. .L588:
  3103. add sp, sp, #0x3c
  3104. pop {r3, r4, r5}
  3105. mov r8, r3
  3106. mov r9, r4
  3107. mov sl, r5
  3108. pop {r4, r5, r6, r7}
  3109. pop {r1}
  3110. bx r1
  3111. .L590:
  3112. .align 2, 0
  3113. .L589:
  3114. .word gLevelUpLearnsets
  3115. .word 0xffff
  3116. .word 0x1ff
  3117. .Lfe35:
  3118. .size sub_8040574,.Lfe35-sub_8040574
  3119. .align 2, 0
  3120. .globl SpeciesToPokedexNum
  3121. .type SpeciesToPokedexNum,function
  3122. .thumb_func
  3123. SpeciesToPokedexNum:
  3124. push {r4, lr}
  3125. lsl r0, r0, #0x10
  3126. lsr r4, r0, #0x10
  3127. bl IsNationalPokedexEnabled
  3128. cmp r0, #0
  3129. beq .L592 @cond_branch
  3130. add r0, r4, #0
  3131. bl SpeciesToNationalPokedexNum
  3132. lsl r0, r0, #0x10
  3133. lsr r0, r0, #0x10
  3134. b .L595
  3135. .L592:
  3136. add r0, r4, #0
  3137. bl SpeciesToHoennPokedexNum
  3138. add r4, r0, #0
  3139. cmp r4, #0xca
  3140. bls .L594 @cond_branch
  3141. ldr r0, .L596
  3142. b .L595
  3143. .L597:
  3144. .align 2, 0
  3145. .L596:
  3146. .word 0xffff
  3147. .L594:
  3148. add r0, r4, #0
  3149. .L595:
  3150. pop {r4}
  3151. pop {r1}
  3152. bx r1
  3153. .Lfe36:
  3154. .size SpeciesToPokedexNum,.Lfe36-SpeciesToPokedexNum
  3155. .align 2, 0
  3156. .globl ClearBattleMonForms
  3157. .type ClearBattleMonForms,function
  3158. .thumb_func
  3159. ClearBattleMonForms:
  3160. push {lr}
  3161. ldr r1, .L604
  3162. mov r2, #0x0
  3163. add r0, r1, #0x3
  3164. .L602:
  3165. strb r2, [r0]
  3166. sub r0, r0, #0x1
  3167. cmp r0, r1
  3168. bge .L602 @cond_branch
  3169. pop {r0}
  3170. bx r0
  3171. .L605:
  3172. .align 2, 0
  3173. .L604:
  3174. .word gBattleMonForms
  3175. .Lfe37:
  3176. .size ClearBattleMonForms,.Lfe37-ClearBattleMonForms
  3177. .align 2, 0
  3178. .globl sub_8040728
  3179. .type sub_8040728,function
  3180. .thumb_func
  3181. sub_8040728:
  3182. push {lr}
  3183. ldr r0, .L627
  3184. ldrh r1, [r0]
  3185. mov r0, #0x80
  3186. lsl r0, r0, #0x5
  3187. and r0, r0, r1
  3188. cmp r0, #0
  3189. beq .L607 @cond_branch
  3190. ldr r0, .L627+0x4
  3191. b .L625
  3192. .L628:
  3193. .align 2, 0
  3194. .L627:
  3195. .word gBattleTypeFlags
  3196. .word 0x1cf
  3197. .L607:
  3198. mov r0, #0x80
  3199. lsl r0, r0, #0x7
  3200. and r0, r0, r1
  3201. cmp r0, #0
  3202. beq .L608 @cond_branch
  3203. mov r0, #0xe7
  3204. lsl r0, r0, #0x1
  3205. b .L625
  3206. .L608:
  3207. mov r0, #0x2
  3208. and r0, r0, r1
  3209. cmp r0, #0
  3210. beq .LCB4205
  3211. b .L623 @long jump
  3212. .LCB4205:
  3213. mov r0, #0x8
  3214. and r0, r0, r1
  3215. cmp r0, #0
  3216. bne .LCB4211
  3217. b .L610 @long jump
  3218. .LCB4211:
  3219. ldr r3, .L629
  3220. ldr r2, .L629+0x4
  3221. ldrh r1, [r2]
  3222. lsl r0, r1, #0x2
  3223. add r0, r0, r1
  3224. lsl r0, r0, #0x3
  3225. add r0, r0, r3
  3226. ldrb r0, [r0, #0x1]
  3227. sub r0, r0, #0x2
  3228. cmp r0, #0x31
  3229. bls .LCB4224
  3230. b .L623 @long jump
  3231. .LCB4224:
  3232. lsl r0, r0, #0x2
  3233. ldr r1, .L629+0x8
  3234. add r0, r0, r1
  3235. ldr r0, [r0]
  3236. mov pc, r0
  3237. .L630:
  3238. .align 2, 0
  3239. .L629:
  3240. .word gTrainers
  3241. .word gTrainerBattleOpponent
  3242. .word .L624
  3243. .align 2, 0
  3244. .align 2, 0
  3245. .L624:
  3246. .word .L613
  3247. .word .L617
  3248. .word .L617
  3249. .word .L623
  3250. .word .L623
  3251. .word .L623
  3252. .word .L623
  3253. .word .L623
  3254. .word .L623
  3255. .word .L623
  3256. .word .L623
  3257. .word .L623
  3258. .word .L623
  3259. .word .L623
  3260. .word .L623
  3261. .word .L623
  3262. .word .L623
  3263. .word .L623
  3264. .word .L623
  3265. .word .L623
  3266. .word .L623
  3267. .word .L623
  3268. .word .L622
  3269. .word .L618
  3270. .word .L623
  3271. .word .L623
  3272. .word .L623
  3273. .word .L623
  3274. .word .L623
  3275. .word .L623
  3276. .word .L619
  3277. .word .L623
  3278. .word .L623
  3279. .word .L623
  3280. .word .L623
  3281. .word .L623
  3282. .word .L623
  3283. .word .L623
  3284. .word .L623
  3285. .word .L623
  3286. .word .L623
  3287. .word .L623
  3288. .word .L623
  3289. .word .L623
  3290. .word .L620
  3291. .word .L623
  3292. .word .L623
  3293. .word .L613
  3294. .word .L617
  3295. .word .L617
  3296. .L613:
  3297. mov r0, #0xe9
  3298. lsl r0, r0, #0x1
  3299. b .L625
  3300. .L617:
  3301. mov r0, #0xe5
  3302. lsl r0, r0, #0x1
  3303. b .L625
  3304. .L618:
  3305. mov r0, #0xe6
  3306. lsl r0, r0, #0x1
  3307. b .L625
  3308. .L619:
  3309. ldr r0, .L631
  3310. b .L625
  3311. .L632:
  3312. .align 2, 0
  3313. .L631:
  3314. .word 0x1cd
  3315. .L620:
  3316. ldrh r1, [r2]
  3317. lsl r0, r1, #0x2
  3318. add r0, r0, r1
  3319. lsl r0, r0, #0x3
  3320. ldr r1, .L633
  3321. add r0, r0, r1
  3322. ldr r1, .L633+0x4
  3323. bl StringCompare
  3324. cmp r0, #0
  3325. beq .L623 @cond_branch
  3326. mov r0, #0xe8
  3327. lsl r0, r0, #0x1
  3328. b .L625
  3329. .L634:
  3330. .align 2, 0
  3331. .L633:
  3332. .word gTrainers+0x4
  3333. .word BattleText_Wally
  3334. .L622:
  3335. ldr r0, .L635
  3336. b .L625
  3337. .L636:
  3338. .align 2, 0
  3339. .L635:
  3340. .word 0x1d1
  3341. .L623:
  3342. ldr r0, .L637
  3343. b .L625
  3344. .L638:
  3345. .align 2, 0
  3346. .L637:
  3347. .word 0x1cb
  3348. .L610:
  3349. ldr r0, .L639
  3350. .L625:
  3351. pop {r1}
  3352. bx r1
  3353. .L640:
  3354. .align 2, 0
  3355. .L639:
  3356. .word 0x1c9
  3357. .Lfe38:
  3358. .size sub_8040728,.Lfe38-sub_8040728
  3359. .align 2, 0
  3360. .globl sub_80408BC
  3361. .type sub_80408BC,function
  3362. .thumb_func
  3363. sub_80408BC:
  3364. push {lr}
  3365. bl ResetMapMusic
  3366. bl m4aMPlayAllStop
  3367. bl sub_8040728
  3368. lsl r0, r0, #0x10
  3369. lsr r0, r0, #0x10
  3370. bl PlayBGM
  3371. pop {r0}
  3372. bx r0
  3373. .Lfe39:
  3374. .size sub_80408BC,.Lfe39-sub_80408BC
  3375. .align 2, 0
  3376. .globl current_map_music_set__default_for_battle
  3377. .type current_map_music_set__default_for_battle,function
  3378. .thumb_func
  3379. current_map_music_set__default_for_battle:
  3380. push {r4, lr}
  3381. lsl r0, r0, #0x10
  3382. lsr r4, r0, #0x10
  3383. bl ResetMapMusic
  3384. bl m4aMPlayAllStop
  3385. cmp r4, #0
  3386. beq .L643 @cond_branch
  3387. add r0, r4, #0
  3388. bl PlayNewMapMusic
  3389. b .L644
  3390. .L643:
  3391. bl sub_8040728
  3392. lsl r0, r0, #0x10
  3393. lsr r0, r0, #0x10
  3394. bl PlayNewMapMusic
  3395. .L644:
  3396. pop {r4}
  3397. pop {r0}
  3398. bx r0
  3399. .Lfe40:
  3400. .size current_map_music_set__default_for_battle,.Lfe40-current_map_music_set__default_for_battle
  3401. .align 2, 0
  3402. .globl pokemon_get_pal
  3403. .type pokemon_get_pal,function
  3404. .thumb_func
  3405. pokemon_get_pal:
  3406. push {r4, r5, r6, lr}
  3407. add r5, r0, #0
  3408. mov r1, #0x41
  3409. mov r2, #0x0
  3410. bl GetMonData
  3411. add r4, r0, #0
  3412. lsl r4, r4, #0x10
  3413. lsr r4, r4, #0x10
  3414. add r0, r5, #0
  3415. mov r1, #0x1
  3416. mov r2, #0x0
  3417. bl GetMonData
  3418. add r6, r0, #0
  3419. add r0, r5, #0
  3420. mov r1, #0x0
  3421. mov r2, #0x0
  3422. bl GetMonData
  3423. add r2, r0, #0
  3424. add r0, r4, #0
  3425. add r1, r6, #0
  3426. bl species_and_otid_get_pal
  3427. pop {r4, r5, r6}
  3428. pop {r1}
  3429. bx r1
  3430. .Lfe41:
  3431. .size pokemon_get_pal,.Lfe41-pokemon_get_pal
  3432. .align 2, 0
  3433. .globl species_and_otid_get_pal
  3434. .type species_and_otid_get_pal,function
  3435. .thumb_func
  3436. species_and_otid_get_pal:
  3437. push {r4, r5, lr}
  3438. add r3, r2, #0
  3439. lsl r0, r0, #0x10
  3440. lsr r4, r0, #0x10
  3441. add r5, r4, #0
  3442. mov r0, #0xce
  3443. lsl r0, r0, #0x1
  3444. cmp r4, r0
  3445. bls .L647 @cond_branch
  3446. ldr r0, .L653
  3447. ldr r0, [r0]
  3448. b .L651
  3449. .L654:
  3450. .align 2, 0
  3451. .L653:
  3452. .word gMonPaletteTable
  3453. .L647:
  3454. lsr r0, r1, #0x10
  3455. ldr r2, .L655
  3456. and r1, r1, r2
  3457. eor r0, r0, r1
  3458. lsr r1, r3, #0x10
  3459. eor r0, r0, r1
  3460. and r3, r3, r2
  3461. eor r0, r0, r3
  3462. cmp r0, #0x7
  3463. bls .L648 @cond_branch
  3464. ldr r0, .L655+0x4
  3465. lsl r1, r4, #0x3
  3466. b .L652
  3467. .L656:
  3468. .align 2, 0
  3469. .L655:
  3470. .word 0xffff
  3471. .word gMonPaletteTable
  3472. .L648:
  3473. ldr r0, .L657
  3474. lsl r1, r5, #0x3
  3475. .L652:
  3476. add r1, r1, r0
  3477. ldr r0, [r1]
  3478. .L651:
  3479. pop {r4, r5}
  3480. pop {r1}
  3481. bx r1
  3482. .L658:
  3483. .align 2, 0
  3484. .L657:
  3485. .word gMonShinyPaletteTable
  3486. .Lfe42:
  3487. .size species_and_otid_get_pal,.Lfe42-species_and_otid_get_pal
  3488. .align 2, 0
  3489. .globl sub_8040990
  3490. .type sub_8040990,function
  3491. .thumb_func
  3492. sub_8040990:
  3493. push {r4, r5, r6, lr}
  3494. add r5, r0, #0
  3495. mov r1, #0x41
  3496. mov r2, #0x0
  3497. bl GetMonData
  3498. add r4, r0, #0
  3499. lsl r4, r4, #0x10
  3500. lsr r4, r4, #0x10
  3501. add r0, r5, #0
  3502. mov r1, #0x1
  3503. mov r2, #0x0
  3504. bl GetMonData
  3505. add r6, r0, #0
  3506. add r0, r5, #0
  3507. mov r1, #0x0
  3508. mov r2, #0x0
  3509. bl GetMonData
  3510. add r2, r0, #0
  3511. add r0, r4, #0
  3512. add r1, r6, #0
  3513. bl sub_80409C8
  3514. pop {r4, r5, r6}
  3515. pop {r1}
  3516. bx r1
  3517. .Lfe43:
  3518. .size sub_8040990,.Lfe43-sub_8040990
  3519. .align 2, 0
  3520. .globl sub_80409C8
  3521. .type sub_80409C8,function
  3522. .thumb_func
  3523. sub_80409C8:
  3524. push {r4, lr}
  3525. lsl r0, r0, #0x10
  3526. lsr r4, r0, #0x10
  3527. lsr r0, r1, #0x10
  3528. ldr r3, .L666
  3529. and r1, r1, r3
  3530. eor r0, r0, r1
  3531. lsr r1, r2, #0x10
  3532. eor r0, r0, r1
  3533. and r2, r2, r3
  3534. eor r0, r0, r2
  3535. cmp r0, #0x7
  3536. bls .L661 @cond_branch
  3537. lsl r0, r4, #0x3
  3538. ldr r1, .L666+0x4
  3539. b .L665
  3540. .L667:
  3541. .align 2, 0
  3542. .L666:
  3543. .word 0xffff
  3544. .word gMonPaletteTable
  3545. .L661:
  3546. lsl r0, r4, #0x3
  3547. ldr r1, .L668
  3548. .L665:
  3549. add r0, r0, r1
  3550. pop {r4}
  3551. pop {r1}
  3552. bx r1
  3553. .L669:
  3554. .align 2, 0
  3555. .L668:
  3556. .word gMonShinyPaletteTable
  3557. .Lfe44:
  3558. .size sub_80409C8,.Lfe44-sub_80409C8
  3559. .align 2, 0
  3560. .globl IsHMMove2
  3561. .type IsHMMove2,function
  3562. .thumb_func
  3563. IsHMMove2:
  3564. push {r4, lr}
  3565. lsl r0, r0, #0x10
  3566. lsr r3, r0, #0x10
  3567. ldr r2, .L677
  3568. ldrh r0, [r2]
  3569. ldr r1, .L677+0x4
  3570. cmp r0, r1
  3571. beq .L672 @cond_branch
  3572. add r4, r1, #0
  3573. add r1, r2, #0
  3574. .L673:
  3575. ldrh r0, [r2]
  3576. add r1, r1, #0x2
  3577. add r2, r2, #0x2
  3578. cmp r0, r3
  3579. bne .L671 @cond_branch
  3580. mov r0, #0x1
  3581. b .L676
  3582. .L678:
  3583. .align 2, 0
  3584. .L677:
  3585. .word gHMMoves
  3586. .word 0xffff
  3587. .L671:
  3588. ldrh r0, [r1]
  3589. cmp r0, r4
  3590. bne .L673 @cond_branch
  3591. .L672:
  3592. mov r0, #0x0
  3593. .L676:
  3594. pop {r4}
  3595. pop {r1}
  3596. bx r1
  3597. .Lfe45:
  3598. .size IsHMMove2,.Lfe45-IsHMMove2
  3599. .align 2, 0
  3600. .globl sub_8040A3C
  3601. .type sub_8040A3C,function
  3602. .thumb_func
  3603. sub_8040A3C:
  3604. lsl r0, r0, #0x10
  3605. lsr r0, r0, #0x10
  3606. ldr r2, .L680
  3607. lsl r1, r0, #0x3
  3608. sub r1, r1, r0
  3609. lsl r1, r1, #0x2
  3610. add r1, r1, r2
  3611. ldrb r0, [r1, #0x19]
  3612. lsr r0, r0, #0x7
  3613. bx lr
  3614. .L681:
  3615. .align 2, 0
  3616. .L680:
  3617. .word gBaseStats
  3618. .Lfe46:
  3619. .size sub_8040A3C,.Lfe46-sub_8040A3C
  3620. .align 2, 0
  3621. .globl sub_8040A54
  3622. .type sub_8040A54,function
  3623. .thumb_func
  3624. sub_8040A54:
  3625. push {r4, lr}
  3626. lsl r4, r1, #0x18
  3627. lsr r4, r4, #0x18
  3628. bl GetNature
  3629. lsl r0, r0, #0x18
  3630. lsr r0, r0, #0x18
  3631. ldr r2, .L683
  3632. lsl r1, r0, #0x2
  3633. add r1, r1, r0
  3634. add r1, r1, r4
  3635. add r1, r1, r2
  3636. mov r0, #0x0
  3637. ldrsb r0, [r1, r0]
  3638. pop {r4}
  3639. pop {r1}
  3640. bx r1
  3641. .L684:
  3642. .align 2, 0
  3643. .L683:
  3644. .word gUnknown_083F7E28
  3645. .Lfe47:
  3646. .size sub_8040A54,.Lfe47-sub_8040A54
  3647. .align 2, 0
  3648. .globl sub_8040A7C
  3649. .type sub_8040A7C,function
  3650. .thumb_func
  3651. sub_8040A7C:
  3652. push {r4, lr}
  3653. lsl r4, r1, #0x18
  3654. lsr r4, r4, #0x18
  3655. bl GetNatureFromPersonality
  3656. lsl r0, r0, #0x18
  3657. lsr r0, r0, #0x18
  3658. ldr r2, .L686
  3659. lsl r1, r0, #0x2
  3660. add r1, r1, r0
  3661. add r1, r1, r4
  3662. add r1, r1, r2
  3663. mov r0, #0x0
  3664. ldrsb r0, [r1, r0]
  3665. pop {r4}
  3666. pop {r1}
  3667. bx r1
  3668. .L687:
  3669. .align 2, 0
  3670. .L686:
  3671. .word gUnknown_083F7E28
  3672. .Lfe48:
  3673. .size sub_8040A7C,.Lfe48-sub_8040A7C
  3674. .align 2, 0
  3675. .globl IsTradedMon
  3676. .type IsTradedMon,function
  3677. .thumb_func
  3678. IsTradedMon:
  3679. push {r4, lr}
  3680. add sp, sp, #0xfffffff8
  3681. add r4, r0, #0
  3682. mov r1, #0x7
  3683. mov r2, sp
  3684. bl GetMonData
  3685. add r0, r4, #0
  3686. mov r1, #0x1
  3687. mov r2, #0x0
  3688. bl GetMonData
  3689. mov r1, sp
  3690. bl IsOtherTrainer
  3691. lsl r0, r0, #0x18
  3692. lsr r0, r0, #0x18
  3693. add sp, sp, #0x8
  3694. pop {r4}
  3695. pop {r1}
  3696. bx r1
  3697. .Lfe49:
  3698. .size IsTradedMon,.Lfe49-IsTradedMon
  3699. .align 2, 0
  3700. .globl IsOtherTrainer
  3701. .type IsOtherTrainer,function
  3702. .thumb_func
  3703. IsOtherTrainer:
  3704. push {r4, r5, lr}
  3705. add r5, r1, #0
  3706. ldr r3, .L699
  3707. ldrb r2, [r3, #0xa]
  3708. ldrb r1, [r3, #0xb]
  3709. lsl r1, r1, #0x8
  3710. orr r2, r2, r1
  3711. ldrb r1, [r3, #0xc]
  3712. lsl r1, r1, #0x10
  3713. orr r2, r2, r1
  3714. ldrb r1, [r3, #0xd]
  3715. lsl r1, r1, #0x18
  3716. orr r2, r2, r1
  3717. cmp r0, r2
  3718. bne .L690 @cond_branch
  3719. mov r4, #0x0
  3720. ldrb r0, [r5]
  3721. cmp r0, #0xff
  3722. beq .L692 @cond_branch
  3723. add r2, r5, #0
  3724. .L694:
  3725. add r1, r4, r3
  3726. ldrb r0, [r2]
  3727. ldrb r1, [r1]
  3728. cmp r0, r1
  3729. bne .L698 @cond_branch
  3730. add r2, r2, #0x1
  3731. add r4, r4, #0x1
  3732. ldrb r0, [r2]
  3733. cmp r0, #0xff
  3734. bne .L694 @cond_branch
  3735. .L692:
  3736. mov r0, #0x0
  3737. b .L697
  3738. .L700:
  3739. .align 2, 0
  3740. .L699:
  3741. .word gSaveBlock2
  3742. .L698:
  3743. .L690:
  3744. mov r0, #0x1
  3745. .L697:
  3746. pop {r4, r5}
  3747. pop {r1}
  3748. bx r1
  3749. .Lfe50:
  3750. .size IsOtherTrainer,.Lfe50-IsOtherTrainer
  3751. .align 2, 0
  3752. .globl MonRestorePP
  3753. .type MonRestorePP,function
  3754. .thumb_func
  3755. MonRestorePP:
  3756. push {lr}
  3757. bl BoxMonRestorePP
  3758. pop {r0}
  3759. bx r0
  3760. .Lfe51:
  3761. .size MonRestorePP,.Lfe51-MonRestorePP
  3762. .align 2, 0
  3763. .globl BoxMonRestorePP
  3764. .type BoxMonRestorePP,function
  3765. .thumb_func
  3766. BoxMonRestorePP:
  3767. push {r4, r5, r6, lr}
  3768. add sp, sp, #0xfffffffc
  3769. add r5, r0, #0
  3770. mov r6, #0x0
  3771. .L706:
  3772. add r4, r6, #0
  3773. add r4, r4, #0xd
  3774. add r0, r5, #0
  3775. add r1, r4, #0
  3776. mov r2, #0x0
  3777. bl GetBoxMonData
  3778. cmp r0, #0
  3779. beq .L705 @cond_branch
  3780. add r0, r5, #0
  3781. add r1, r4, #0
  3782. mov r2, #0x0
  3783. bl GetBoxMonData
  3784. add r4, r0, #0
  3785. lsl r4, r4, #0x10
  3786. lsr r4, r4, #0x10
  3787. add r0, r5, #0
  3788. mov r1, #0x15
  3789. mov r2, #0x0
  3790. bl GetBoxMonData
  3791. add r1, r0, #0
  3792. lsl r1, r1, #0x18
  3793. lsr r1, r1, #0x18
  3794. lsl r2, r6, #0x18
  3795. lsr r2, r2, #0x18
  3796. add r0, r4, #0
  3797. bl CalculatePPWithBonus
  3798. mov r1, sp
  3799. strb r0, [r1]
  3800. add r1, r6, #0
  3801. add r1, r1, #0x11
  3802. add r0, r5, #0
  3803. mov r2, sp
  3804. bl SetBoxMonData
  3805. .L705:
  3806. add r6, r6, #0x1
  3807. cmp r6, #0x3
  3808. ble .L706 @cond_branch
  3809. add sp, sp, #0x4
  3810. pop {r4, r5, r6}
  3811. pop {r0}
  3812. bx r0
  3813. .Lfe52:
  3814. .size BoxMonRestorePP,.Lfe52-BoxMonRestorePP
  3815. .align 2, 0
  3816. .globl sub_8040B8C
  3817. .type sub_8040B8C,function
  3818. .thumb_func
  3819. sub_8040B8C:
  3820. push {r4, r5, lr}
  3821. ldr r1, .L713
  3822. ldr r2, .L713+0x4
  3823. ldr r3, .L713+0x8
  3824. add r0, r2, r3
  3825. ldrb r0, [r0]
  3826. strb r0, [r1]
  3827. ldr r5, .L713+0xc
  3828. mov r0, #0xfd
  3829. strb r0, [r5]
  3830. mov r0, #0x4
  3831. strb r0, [r5, #0x1]
  3832. ldr r0, .L713+0x10
  3833. add r4, r2, r0
  3834. ldrb r0, [r4]
  3835. strb r0, [r5, #0x2]
  3836. mov r0, #0xff
  3837. strb r0, [r5, #0x4]
  3838. ldrb r0, [r4]
  3839. bl battle_side_get_owner
  3840. lsl r0, r0, #0x18
  3841. cmp r0, #0
  3842. bne .L710 @cond_branch
  3843. ldr r1, .L713+0x14
  3844. ldrb r0, [r4]
  3845. lsl r0, r0, #0x1
  3846. add r0, r0, r1
  3847. ldrb r0, [r0]
  3848. bl pokemon_order_func
  3849. b .L712
  3850. .L714:
  3851. .align 2, 0
  3852. .L713:
  3853. .word byte_2024C06
  3854. .word unk_2000000
  3855. .word 0x160c0
  3856. .word gUnknown_030041C0
  3857. .word 0x16054
  3858. .word gUnknown_02024A6A
  3859. .L710:
  3860. ldr r0, .L715
  3861. ldrb r1, [r4]
  3862. lsl r1, r1, #0x1
  3863. add r1, r1, r0
  3864. ldrh r0, [r1]
  3865. .L712:
  3866. strb r0, [r5, #0x3]
  3867. ldr r4, .L715+0x4
  3868. mov r0, #0xfd
  3869. strb r0, [r4]
  3870. mov r0, #0x4
  3871. strb r0, [r4, #0x1]
  3872. ldr r1, .L715+0x8
  3873. ldrb r0, [r1]
  3874. strb r0, [r4, #0x2]
  3875. ldr r2, .L715
  3876. ldrb r0, [r1]
  3877. lsl r0, r0, #0x1
  3878. add r0, r0, r2
  3879. ldrb r0, [r0]
  3880. bl pokemon_order_func
  3881. strb r0, [r4, #0x3]
  3882. mov r0, #0xff
  3883. strb r0, [r4, #0x4]
  3884. ldr r0, .L715+0xc
  3885. ldr r1, .L715+0x10
  3886. bl sub_8120FFC
  3887. pop {r4, r5}
  3888. pop {r0}
  3889. bx r0
  3890. .L716:
  3891. .align 2, 0
  3892. .L715:
  3893. .word gUnknown_02024A6A
  3894. .word gUnknown_03004290
  3895. .word gUnknown_02024E6C
  3896. .word BattleText_PreventedSwitch
  3897. .word gStringVar4
  3898. .Lfe53:
  3899. .size sub_8040B8C,.Lfe53-sub_8040B8C
  3900. .align 2, 0
  3901. .globl SetWildMonHeldItem
  3902. .type SetWildMonHeldItem,function
  3903. .thumb_func
  3904. SetWildMonHeldItem:
  3905. push {r4, r5, lr}
  3906. ldr r0, .L724
  3907. ldrh r1, [r0]
  3908. ldr r0, .L724+0x4
  3909. and r0, r0, r1
  3910. cmp r0, #0
  3911. bne .L717 @cond_branch
  3912. bl Random
  3913. lsl r0, r0, #0x10
  3914. lsr r0, r0, #0x10
  3915. mov r1, #0x64
  3916. bl __umodsi3
  3917. lsl r0, r0, #0x10
  3918. lsr r5, r0, #0x10
  3919. ldr r4, .L724+0x8
  3920. add r0, r4, #0
  3921. mov r1, #0xb
  3922. mov r2, #0x0
  3923. bl GetMonData
  3924. lsl r0, r0, #0x10
  3925. lsr r0, r0, #0x10
  3926. ldr r2, .L724+0xc
  3927. lsl r1, r0, #0x3
  3928. sub r1, r1, r0
  3929. lsl r3, r1, #0x2
  3930. add r1, r3, r2
  3931. ldrh r0, [r1, #0xc]
  3932. ldrh r1, [r1, #0xe]
  3933. cmp r0, r1
  3934. beq .L723 @cond_branch
  3935. cmp r5, #0x2c
  3936. bls .L717 @cond_branch
  3937. cmp r5, #0x5e
  3938. bhi .L721 @cond_branch
  3939. .L723:
  3940. add r2, r2, #0xc
  3941. add r2, r3, r2
  3942. add r0, r4, #0
  3943. mov r1, #0xc
  3944. bl SetMonData
  3945. b .L717
  3946. .L725:
  3947. .align 2, 0
  3948. .L724:
  3949. .word gBattleTypeFlags
  3950. .word 0x2008
  3951. .word gEnemyParty
  3952. .word gBaseStats
  3953. .L721:
  3954. add r2, r2, #0xe
  3955. add r2, r3, r2
  3956. add r0, r4, #0
  3957. mov r1, #0xc
  3958. bl SetMonData
  3959. .L717:
  3960. pop {r4, r5}
  3961. pop {r0}
  3962. bx r0
  3963. .Lfe54:
  3964. .size SetWildMonHeldItem,.Lfe54-SetWildMonHeldItem
  3965. .align 2, 0
  3966. .globl IsShiny
  3967. .type IsShiny,function
  3968. .thumb_func
  3969. IsShiny:
  3970. push {r4, r5, lr}
  3971. add r4, r0, #0
  3972. mov r1, #0x1
  3973. mov r2, #0x0
  3974. bl GetMonData
  3975. add r5, r0, #0
  3976. add r0, r4, #0
  3977. mov r1, #0x0
  3978. mov r2, #0x0
  3979. bl GetMonData
  3980. add r1, r0, #0
  3981. add r0, r5, #0
  3982. bl IsShinyOtIdPersonality
  3983. lsl r0, r0, #0x18
  3984. lsr r0, r0, #0x18
  3985. pop {r4, r5}
  3986. pop {r1}
  3987. bx r1
  3988. .Lfe55:
  3989. .size IsShiny,.Lfe55-IsShiny
  3990. .align 2, 0
  3991. .globl IsShinyOtIdPersonality
  3992. .type IsShinyOtIdPersonality,function
  3993. .thumb_func
  3994. IsShinyOtIdPersonality:
  3995. push {r4, lr}
  3996. mov r4, #0x0
  3997. lsr r2, r0, #0x10
  3998. ldr r3, .L729
  3999. and r0, r0, r3
  4000. eor r2, r2, r0
  4001. lsr r0, r1, #0x10
  4002. eor r2, r2, r0
  4003. and r1, r1, r3
  4004. eor r2, r2, r1
  4005. cmp r2, #0x7
  4006. bhi .L728 @cond_branch
  4007. mov r4, #0x1
  4008. .L728:
  4009. add r0, r4, #0
  4010. pop {r4}
  4011. pop {r1}
  4012. bx r1
  4013. .L730:
  4014. .align 2, 0
  4015. .L729:
  4016. .word 0xffff
  4017. .Lfe56:
  4018. .size IsShinyOtIdPersonality,.Lfe56-IsShinyOtIdPersonality
  4019. .align 2, 0
  4020. .globl sub_8040D08
  4021. .type sub_8040D08,function
  4022. .thumb_func
  4023. sub_8040D08:
  4024. push {r4, lr}
  4025. bl GetMultiplayerId
  4026. lsl r0, r0, #0x18
  4027. lsr r0, r0, #0x18
  4028. ldr r4, .L732
  4029. lsl r1, r0, #0x3
  4030. sub r1, r1, r0
  4031. lsl r1, r1, #0x2
  4032. add r1, r1, r4
  4033. ldrh r1, [r1, #0x18]
  4034. mov r0, #0x2
  4035. eor r0, r0, r1
  4036. bl sub_803FC34
  4037. add r1, r0, #0
  4038. lsl r0, r1, #0x3
  4039. sub r0, r0, r1
  4040. lsl r0, r0, #0x2
  4041. add r4, r4, #0x8
  4042. add r0, r0, r4
  4043. pop {r4}
  4044. pop {r1}
  4045. bx r1
  4046. .L733:
  4047. .align 2, 0
  4048. .L732:
  4049. .word gLinkPlayers
  4050. .Lfe57:
  4051. .size sub_8040D08,.Lfe57-sub_8040D08
  4052. .align 2, 0
  4053. .globl sub_8040D3C
  4054. .type sub_8040D3C,function
  4055. .thumb_func
  4056. sub_8040D3C:
  4057. push {r4, lr}
  4058. add r4, r1, #0
  4059. lsl r0, r0, #0x10
  4060. lsr r1, r0, #0x10
  4061. add r0, r1, #0
  4062. lsl r2, r2, #0x18
  4063. lsr r2, r2, #0x18
  4064. mov r3, #0x0
  4065. cmp r1, #0x20
  4066. beq .L736 @cond_branch
  4067. cmp r1, #0x1d
  4068. bne .L735 @cond_branch
  4069. .L736:
  4070. cmp r2, #0x2
  4071. bne .L737 @cond_branch
  4072. mov r0, #0xb
  4073. mul r1, r1, r0
  4074. ldr r0, .L743
  4075. add r1, r1, r0
  4076. b .L738
  4077. .L744:
  4078. .align 2, 0
  4079. .L743:
  4080. .word gSpeciesNames
  4081. .L737:
  4082. ldr r1, .L745
  4083. cmp r0, #0x20
  4084. bne .L738 @cond_branch
  4085. sub r1, r1, #0xb
  4086. .L738:
  4087. add r0, r4, #0
  4088. bl StringCompareWithoutExtCtrlCodes
  4089. mov r3, #0x0
  4090. cmp r0, #0
  4091. bne .L735 @cond_branch
  4092. mov r3, #0x1
  4093. .L735:
  4094. add r0, r3, #0
  4095. pop {r4}
  4096. pop {r1}
  4097. bx r1
  4098. .L746:
  4099. .align 2, 0
  4100. .L745:
  4101. .word gJapaneseNidoranNames+0xb
  4102. .Lfe58:
  4103. .size sub_8040D3C,.Lfe58-sub_8040D3C
  4104. .align 2, 0
  4105. .globl sub_8040D8C
  4106. .type sub_8040D8C,function
  4107. .thumb_func
  4108. sub_8040D8C:
  4109. push {lr}
  4110. lsl r0, r0, #0x10
  4111. lsr r3, r0, #0x10
  4112. mov r2, #0x2
  4113. ldrb r0, [r1]
  4114. cmp r0, #0xfc
  4115. bne .L748 @cond_branch
  4116. ldrb r0, [r1, #0x1]
  4117. cmp r0, #0x15
  4118. bne .L748 @cond_branch
  4119. mov r2, #0x1
  4120. .L748:
  4121. add r0, r3, #0
  4122. bl sub_8040D3C
  4123. pop {r1}
  4124. bx r1
  4125. .Lfe59:
  4126. .size sub_8040D8C,.Lfe59-sub_8040D8C
  4127. .align 2, 0
  4128. .globl unref_sub_8040DAC
  4129. .type unref_sub_8040DAC,function
  4130. .thumb_func
  4131. unref_sub_8040DAC:
  4132. push {r4, r5, r6, lr}
  4133. add sp, sp, #0xfffffff4
  4134. add r6, r0, #0
  4135. mov r1, #0xb
  4136. mov r2, #0x0
  4137. bl GetMonData
  4138. add r5, r0, #0
  4139. lsl r5, r5, #0x10
  4140. lsr r5, r5, #0x10
  4141. add r0, r6, #0
  4142. mov r1, #0x3
  4143. mov r2, #0x0
  4144. bl GetMonData
  4145. add r4, r0, #0
  4146. lsl r4, r4, #0x18
  4147. lsr r4, r4, #0x18
  4148. add r0, r6, #0
  4149. mov r1, #0x2
  4150. mov r2, sp
  4151. bl GetMonData
  4152. add r0, r5, #0
  4153. mov r1, sp
  4154. add r2, r4, #0
  4155. bl sub_8040D3C
  4156. add sp, sp, #0xc
  4157. pop {r4, r5, r6}
  4158. pop {r1}
  4159. bx r1
  4160. .Lfe60:
  4161. .size unref_sub_8040DAC,.Lfe60-unref_sub_8040DAC
  4162. .text
  4163. .align 2, 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement