Sin descripción

new_move_third.S 1.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. .text
  2. .align 2
  3. .thumb
  4. .thumb_func
  5. .global new_move_third
  6. new_move_third:
  7. new_move_sym:
  8. lsl r2, r5, #0x1
  9. add r2, r2, r5
  10. ldr r1, [sp, #0x10]
  11. add r0, r2, r1
  12. ldrb r0, [r0, #0x2]
  13. ldr r1, [sp, #0xC]
  14. add r7, r2, #0x0
  15. add r5, #0x1
  16. mov r12, r5
  17. cmp r0, r1
  18. bgt later
  19. mov r4, #0x0
  20. cmp r1, r0
  21. beq later2
  22. mov r4, #0x1
  23. neg r4, r4
  24. ldr r0, [sp, #0x14]
  25. ldr r1, =moveset_table
  26. add r6, r0, r1
  27. mov r3, sp
  28. sub r3, #0x2
  29. add r5, r7, #0x0
  30. there: add r3, #0x2
  31. add r4, #0x1
  32. cmp r4, #0x3
  33. bgt later2
  34. ldr r0, [r6, #0x0]
  35. add r0, r5, r0
  36. ldrb r2, [r0, #0x0]
  37. ldrb r0, [r0, #0x1]
  38. lsl r0, r0, #0x8
  39. orr r0, r2
  40. ldrh r2, [r3, #0x0]
  41. cmp r0, r2
  42. bne there
  43. later2: cmp r4, #0x4
  44. bne later
  45. mov r4, #0x0
  46. cmp r4, r10
  47. bge later3
  48. mov r1, r9
  49. ldr r0, [r1, #0x0]
  50. add r0, r7, r0
  51. ldrb r2, [r0, #0x0]
  52. ldrb r1, [r0, #0x1]
  53. lsl r1, r1, #0x8
  54. orr r1, r2
  55. ldr r0, [sp, #0x8]
  56. ldrh r2, [r0, #0x0]
  57. cmp r1, r2
  58. beq later3
  59. ldr r1, [sp, #0x14]
  60. ldr r2, =moveset_table
  61. add r6, r1, r2
  62. ldr r3, [sp, #0x8]
  63. add r5, r7, #0x0
  64. there2: add r3, #0x2
  65. add r4, #0x1
  66. cmp r4, r10
  67. bge later3
  68. ldr r0, [r6, #0x0]
  69. add r0, r5, r0
  70. ldrb r2, [r0, #0x0]
  71. ldrb r0, [r0, #0x1]
  72. lsl r0, r0, #0x8
  73. orr r0, r2
  74. ldrh r2, [r3, #0x0]
  75. cmp r0, r2
  76. bne there2
  77. later3: cmp r4, r10
  78. bne later
  79. mov r0, r10
  80. add r0, #0x1
  81. mov r10, r0
  82. lsl r2, r4, #0x1
  83. ldr r1, [sp, #0x8]
  84. add r2, r2, r1
  85. mov r4, r9
  86. ldr r0, [r4, #0x0]
  87. add r0, r7, r0
  88. ldrb r1, [r0, #0x0]
  89. ldrb r0, [r0, #0x1]
  90. lsl r0, r0, #0x8
  91. orr r0, r1
  92. strh r0, [r2, #0x0]
  93. later: mov r5, r12
  94. mov r1, r9
  95. ldr r0, [r1, #0x0]
  96. lsl r1, r5, #0x1
  97. add r1, r1, r5
  98. add r1, r1, r0
  99. ldrb r0, [r1, #0x2]
  100. cmp r0, #0xFF
  101. bne new_move_sym
  102. mov r0, r10
  103. add sp, #0x18
  104. pop {r3-r5}
  105. mov r8, r3
  106. mov r9, r4
  107. mov r10, r5
  108. pop {r4-r7}
  109. pop {r1}
  110. bx r1