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
|
.include "asm/macros.inc"
.include "global.inc"
.section .text
.balign 4, 0
thumb_func_start MOD05_021F61F4
MOD05_021F61F4: ; 0x021F61F4
push {r4, r5, r6, lr}
add r6, r1, #0
add r5, r0, #0
add r0, r6, #0
mov r1, #0x34
bl AllocFromHeapAtEnd
add r4, r0, #0
mov r1, #0
mov r2, #0x34
bl memset
str r6, [r4]
mov r0, #0
str r0, [r4, #0xc]
str r5, [r4, #0x2c]
ldr r0, [r5, #0x20]
str r0, [r4, #0x30]
bl Camera_GetDistance
str r0, [r4, #0x10]
str r0, [r4, #0x20]
ldr r0, _021F622C ; =MOD05_021F6270
ldr r2, _021F6230 ; =0x0000FFFF
add r1, r4, #0
bl FUN_0200CA44
pop {r4, r5, r6, pc}
.align 2, 0
_021F622C: .word MOD05_021F6270
_021F6230: .word 0x0000FFFF
thumb_func_start MOD05_021F6234
MOD05_021F6234: ; 0x021F6234
push {r3, lr}
bl FUN_0201B6C8
ldr r0, [r0, #8]
pop {r3, pc}
.align 2, 0
thumb_func_start MOD05_021F6240
MOD05_021F6240: ; 0x021F6240
push {r4, lr}
add r4, r0, #0
bl FUN_0201B6C8
bl FreeToHeap
add r0, r4, #0
bl FUN_0200CAB4
pop {r4, pc}
thumb_func_start MOD05_021F6254
MOD05_021F6254: ; 0x021F6254
push {r4, r5, r6, lr}
add r5, r1, #0
add r4, r2, #0
add r6, r3, #0
bl FUN_0201B6C8
mov r1, #0
str r1, [r0, #4]
str r1, [r0, #8]
str r5, [r0, #0xc]
str r4, [r0, #0x14]
str r6, [r0, #0x1c]
str r1, [r0, #0x24]
pop {r4, r5, r6, pc}
thumb_func_start MOD05_021F6270
MOD05_021F6270: ; 0x021F6270
push {r3, lr}
add r0, r1, #0
ldr r1, [r1, #0xc]
lsl r2, r1, #2
ldr r1, _021F6280 ; =UNK05_021FD1B8
ldr r1, [r1, r2]
blx r1
pop {r3, pc}
.align 2, 0
_021F6280: .word UNK05_021FD1B8
thumb_func_start MOD05_021F6284
MOD05_021F6284: ; 0x021F6284
mov r1, #1
str r1, [r0, #8]
bx lr
.align 2, 0
thumb_func_start MOD05_021F628C
MOD05_021F628C: ; 0x021F628C
push {r4, lr}
add r4, r0, #0
ldr r1, [r4, #4]
cmp r1, #0
beq _021F629C
cmp r1, #1
beq _021F62A6
pop {r4, pc}
_021F629C:
bl MOD05_021F630C
ldr r0, [r4, #4]
add r0, r0, #1
str r0, [r4, #4]
_021F62A6:
add r0, r4, #0
bl MOD05_021F633C
cmp r0, #1
bne _021F62BA
ldr r0, [r4, #4]
add r0, r0, #1
str r0, [r4, #4]
mov r0, #1
str r0, [r4, #8]
_021F62BA:
add r0, r4, #0
bl MOD05_021F62FC
pop {r4, pc}
.align 2, 0
thumb_func_start MOD05_021F62C4
MOD05_021F62C4: ; 0x021F62C4
push {r4, lr}
add r4, r0, #0
ldr r1, [r4, #4]
cmp r1, #0
beq _021F62D4
cmp r1, #1
beq _021F62DE
pop {r4, pc}
_021F62D4:
bl MOD05_021F6324
ldr r0, [r4, #4]
add r0, r0, #1
str r0, [r4, #4]
_021F62DE:
add r0, r4, #0
bl MOD05_021F633C
cmp r0, #1
bne _021F62F2
ldr r0, [r4, #4]
add r0, r0, #1
str r0, [r4, #4]
mov r0, #1
str r0, [r4, #8]
_021F62F2:
add r0, r4, #0
bl MOD05_021F62FC
pop {r4, pc}
.align 2, 0
thumb_func_start MOD05_021F62FC
MOD05_021F62FC: ; 0x021F62FC
ldr r3, _021F6308 ; =FUN_0201EFE0
add r1, r0, #0
ldr r0, [r1, #0x20]
ldr r1, [r1, #0x30]
bx r3
nop
_021F6308: .word Camera_SetDistance
thumb_func_start MOD05_021F630C
MOD05_021F630C: ; 0x021F630C
push {r4, lr}
add r4, r0, #0
ldr r0, [r4, #0x14]
ldr r1, [r4, #0x1c]
bl _s32_div_f
str r0, [r4, #0x28]
ldr r1, [r4, #0x20]
ldr r0, [r4, #0x14]
add r0, r1, r0
str r0, [r4, #0x18]
pop {r4, pc}
thumb_func_start MOD05_021F6324
MOD05_021F6324: ; 0x021F6324
push {r4, lr}
add r4, r0, #0
ldr r1, [r4, #0x10]
ldr r0, [r4, #0x20]
sub r0, r1, r0
ldr r1, [r4, #0x1c]
bl _s32_div_f
str r0, [r4, #0x28]
ldr r0, [r4, #0x10]
str r0, [r4, #0x18]
pop {r4, pc}
thumb_func_start MOD05_021F633C
MOD05_021F633C: ; 0x021F633C
ldr r2, [r0, #0x20]
ldr r1, [r0, #0x28]
add r1, r2, r1
str r1, [r0, #0x20]
ldr r1, [r0, #0x24]
add r2, r1, #1
str r2, [r0, #0x24]
ldr r1, [r0, #0x1c]
cmp r2, r1
blo _021F635A
str r1, [r0, #0x24]
ldr r1, [r0, #0x18]
str r1, [r0, #0x20]
mov r0, #1
bx lr
_021F635A:
mov r0, #0
bx lr
.align 2, 0
.section .rodata
.global UNK05_021FD1B8
UNK05_021FD1B8: ; 0x021FD1B8
.word MOD05_021F6284, MOD05_021F628C, MOD05_021F62C4, 0x00000000
|