1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
.include "constants/gba_constants.inc"
.include "asm/macros.inc"
.syntax unified
.text
thumb_func_start ReverseString
ReverseString:
push {r4,r5,lr}
adds r3, r0, 0
subs r4, r1, 0x1
adds r2, r3, r4
movs r5, 0
cmp r5, r4
bge _08004566
_08004552:
ldrb r1, [r3]
ldrb r0, [r2]
strb r0, [r3]
adds r3, 0x1
strb r1, [r2]
subs r2, 0x1
adds r5, 0x1
subs r4, 0x1
cmp r5, r4
blt _08004552
_08004566:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end ReverseString
thumb_func_start ConvertToDecimal
ConvertToDecimal:
push {r4-r7,lr}
adds r4, r1, 0
cmp r4, 0
ble _08004578
movs r7, 0x1
b _0800457E
_08004578:
negs r4, r4
movs r7, 0x1
negs r7, r7
_0800457E:
cmp r2, 0
ble _080045A0
adds r6, r0, 0
adds r5, r2, 0
_08004586:
adds r0, r4, 0
movs r1, 0xA
bl __modsi3
stm r6!, {r0}
adds r0, r4, 0
movs r1, 0xA
bl __divsi3
adds r4, r0, 0
subs r5, 0x1
cmp r5, 0
bne _08004586
_080045A0:
adds r0, r7, 0
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end ConvertToDecimal
thumb_func_start ConvertFromDecimal
ConvertFromDecimal:
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
ldm r4!, {r1}
movs r3, 0xA
cmp r2, 0x1
ble _080045CA
subs r2, 0x1
_080045B8:
ldm r4!, {r0}
muls r0, r3
adds r1, r0
subs r2, 0x1
lsls r0, r3, 2
adds r0, r3
lsls r3, r0, 1
cmp r2, 0
bne _080045B8
_080045CA:
adds r0, r1, 0
cmp r5, 0
bge _080045D2
negs r0, r0
_080045D2:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end ConvertFromDecimal
thumb_func_start ConvertFromBCD
ConvertFromBCD:
push {r4,lr}
adds r1, r0, 0
movs r2, 0x1
movs r3, 0
cmp r1, 0
ble _080045FA
movs r4, 0xF
_080045E6:
adds r0, r1, 0
ands r0, r4
muls r0, r2
adds r3, r0
lsls r0, r2, 2
adds r0, r2
lsls r2, r0, 1
asrs r1, 4
cmp r1, 0
bgt _080045E6
_080045FA:
adds r0, r3, 0
pop {r4}
pop {r1}
bx r1
thumb_func_end ConvertFromBCD
thumb_func_start ConvertToBCD
ConvertToBCD:
push {r4-r6,lr}
adds r4, r0, 0
movs r5, 0
movs r6, 0
cmp r4, 0
ble _0800462C
_08004610:
adds r0, r4, 0
movs r1, 0xA
bl __modsi3
lsls r0, r5
adds r6, r0
adds r5, 0x4
adds r0, r4, 0
movs r1, 0xA
bl __divsi3
adds r4, r0, 0
cmp r4, 0
bgt _08004610
_0800462C:
adds r0, r6, 0
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end ConvertToBCD
.align 2, 0 @ Don't pad with nop.
|