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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
|
.include "asm/macros.inc"
.include "global.inc"
.section .data
.global UNK_02105BD4
UNK_02105BD4: ; 0x02105BD4
.byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x32, 0x00, 0x00, 0x01, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x03, 0x1E, 0xEC, 0xEC, 0x00, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x10, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x32, 0x00, 0x9D, 0x00, 0x00
.byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x32, 0x00, 0x00, 0x01, 0x00
.text
thumb_func_start FUN_02023AC4
FUN_02023AC4: ; 0x02023AC4
mov r0, #0x20
bx lr
thumb_func_start FUN_02023AC8
FUN_02023AC8: ; 0x02023AC8
mov r0, #0x20
bx lr
thumb_func_start FUN_02023ACC
FUN_02023ACC: ; 0x02023ACC
ldr r3, _02023AD4 ; =MI_CpuCopy8
mov r2, #0x20
bx r3
nop
_02023AD4: .word MI_CpuCopy8
thumb_func_start FUN_02023AD8
FUN_02023AD8: ; 0x02023AD8
ldr r3, _02023AE0 ; =memset
mov r1, #0x0
mov r2, #0x20
bx r3
.balign 4
_02023AE0: .word memset
thumb_func_start FUN_02023AE4
FUN_02023AE4: ; 0x02023AE4
ldr r3, _02023AF0 ; =CopyU16ArrayToStringN
add r2, r0, #0x0
add r0, r1, #0x0
add r1, r2, #0x0
mov r2, #0xc
bx r3
.balign 4
_02023AF0: .word CopyU16ArrayToStringN
thumb_func_start FUN_02023AF4
FUN_02023AF4: ; 0x02023AF4
push {r3-r5, lr}
add r5, r0, #0x0
mov r0, #0x18
bl String_ctor
add r1, r5, #0x0
add r4, r0, #0x0
bl CopyU16ArrayToString
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
thumb_func_start FUN_02023B0C
FUN_02023B0C: ; 0x02023B0C
mov r2, #0x0
cmp r1, #0xc
bhi _02023B9E
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #0x6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_02023B1E: ; jump table (using 16-bit offset)
.short _02023B9E - _02023B1E - 2; case 0
.short _02023B38 - _02023B1E - 2; case 1
.short _02023B3C - _02023B1E - 2; case 2
.short _02023B40 - _02023B1E - 2; case 3
.short _02023B44 - _02023B1E - 2; case 4
.short _02023B4C - _02023B1E - 2; case 5
.short _02023B52 - _02023B1E - 2; case 6
.short _02023B66 - _02023B1E - 2; case 7
.short _02023B6C - _02023B1E - 2; case 8
.short _02023B80 - _02023B1E - 2; case 9
.short _02023B88 - _02023B1E - 2; case 10
.short _02023B90 - _02023B1E - 2; case 11
.short _02023B98 - _02023B1E - 2; case 12
_02023B38:
ldrb r2, [r0, #0x1a]
b _02023B9E
_02023B3C:
ldrb r2, [r0, #0x1b]
b _02023B9E
_02023B40:
ldrh r2, [r0, #0x18]
b _02023B9E
_02023B44:
ldrb r0, [r0, #0x1e]
lsl r0, r0, #0x1f
lsr r2, r0, #0x1f
b _02023B9E
_02023B4C:
mov r1, #0x1c
ldrsb r2, [r0, r1]
b _02023B9E
_02023B52:
mov r1, #0x1c
ldrsb r0, [r0, r1]
cmp r0, #0x0
ble _02023B5E
mov r2, #0x1
b _02023B9E
_02023B5E:
bge _02023B9E
add r2, r1, #0x0
sub r2, #0x1d
b _02023B9E
_02023B66:
mov r1, #0x1d
ldrsb r2, [r0, r1]
b _02023B9E
_02023B6C:
mov r1, #0x1d
ldrsb r0, [r0, r1]
cmp r0, #0x0
ble _02023B78
mov r2, #0x1
b _02023B9E
_02023B78:
bge _02023B9E
add r2, r1, #0x0
sub r2, #0x1e
b _02023B9E
_02023B80:
ldrb r0, [r0, #0x1e]
lsl r0, r0, #0x1c
lsr r2, r0, #0x1f
b _02023B9E
_02023B88:
ldrb r0, [r0, #0x1e]
lsl r0, r0, #0x1d
lsr r2, r0, #0x1f
b _02023B9E
_02023B90:
ldrb r0, [r0, #0x1e]
lsl r0, r0, #0x1e
lsr r2, r0, #0x1f
b _02023B9E
_02023B98:
ldrb r0, [r0, #0x1e]
lsl r0, r0, #0x1b
lsr r2, r0, #0x1f
_02023B9E:
add r0, r2, #0x0
bx lr
.balign 4
thumb_func_start FUN_02023BA4
FUN_02023BA4: ; 0x02023BA4
push {r3-r5, lr}
add r5, r1, #0x0
add r4, r0, #0x0
cmp r5, #0x1
blt _02023BB2
bl GF_AssertFail
_02023BB2:
add r0, r4, #0x0
mov r1, #0xd
bl SavArray_get
add r4, r0, #0x0
lsl r5, r5, #0x5
add r0, r4, r5
mov r1, #0x1
bl FUN_02023B0C
cmp r0, #0x0
beq _02023BCE
add r0, r4, r5
pop {r3-r5, pc}
_02023BCE:
mov r0, #0x0
pop {r3-r5, pc}
.balign 4
thumb_func_start FUN_02023BD4
FUN_02023BD4: ; 0x02023BD4
push {r4, lr}
add r4, r1, #0x0
mov r1, #0xd
bl SavArray_get
add r1, r0, #0x0
add r0, r4, #0x0
bl FUN_02023ACC
pop {r4, pc}
thumb_func_start FUN_02023BE8
FUN_02023BE8: ; 0x02023BE8
push {r3, lr}
cmp r1, #0x5
bhs _02023BF6
ldr r2, _02023C00 ; =UNK_02105BD4
lsl r0, r1, #0x5
add r0, r2, r0
pop {r3, pc}
_02023BF6:
mov r1, #0xd
bl SavArray_get
pop {r3, pc}
nop
_02023C00: .word UNK_02105BD4
thumb_func_start FUN_02023C04
FUN_02023C04: ; 0x02023C04
push {r4-r6, lr}
add r5, r1, #0x0
add r4, r2, #0x0
cmp r5, #0x5
bhs _02023C2C
ldr r2, _02023C3C ; =0x0000013A
mov r0, #0x0
mov r1, #0x1a
bl NewMsgDataFromNarc
add r5, #0x38
add r6, r0, #0x0
add r1, r5, #0x0
add r2, r4, #0x0
bl ReadMsgDataIntoString
add r0, r6, #0x0
bl DestroyMsgData
pop {r4-r6, pc}
_02023C2C:
mov r1, #0x0
bl FUN_02023BA4
add r1, r4, #0x0
bl FUN_02023AE4
pop {r4-r6, pc}
nop
_02023C3C: .word 0x0000013A
|