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
247
248
249
250
251
252
253
254
255
256
257
258
259
|
.include "asm/macros.inc"
.include "global.inc"
.text
arm_func_start MTX_Identity33_
MTX_Identity33_: ; 0x020C3F14
mov r2, #0x1000
str r2, [r0, #0x20]
mov r3, #0x0
stmia r0!, {r2-r3}
mov r1, #0x0
stmia r0!, {r1,r3}
stmia r0!, {r2-r3}
stmia r0!, {r1,r3}
bx lr
thumb_func_start MTX_RotX33_
MTX_RotX33_: ; 0x020C3F38
mov r3, #0x1
lsl r3, r3, #0xc
str r3, [r0, #0x0]
mov r3, #0x0
str r3, [r0, #0x4]
str r3, [r0, #0x8]
str r3, [r0, #0xc]
str r2, [r0, #0x10]
str r1, [r0, #0x14]
str r3, [r0, #0x18]
neg r1, r1
str r1, [r0, #0x1c]
str r2, [r0, #0x20]
bx lr
thumb_func_start MTX_RotY33_
MTX_RotY33_: ; 0x020C3F54
str r2, [r0, #0x0]
str r2, [r0, #0x20]
mov r3, #0x0
str r3, [r0, #0x4]
str r3, [r0, #0xc]
str r3, [r0, #0x14]
str r3, [r0, #0x1c]
neg r2, r1
mov r3, #0x1
lsl r3, r3, #0xc
str r1, [r0, #0x18]
str r2, [r0, #0x8]
str r3, [r0, #0x10]
bx lr
thumb_func_start MTX_RotZ33_
MTX_RotZ33_: ; 0x020C3F70
stmia r0!, {r2}
mov r3, #0x0
stmia r0!, {r1,r3}
neg r1, r1
stmia r0!, {r1-r2}
mov r1, #0x1
lsl r1, r1, #0xc
str r3, [r0, #0x0]
str r3, [r0, #0x4]
str r3, [r0, #0x8]
str r1, [r0, #0xc]
bx lr
arm_func_start MTX_MultVec33
MTX_MultVec33: ; 0x020C3F88
stmdb sp!, {r4-r6,lr}
ldr r12, [r0, #0x4]
ldr r4, [r1, #0xc]
ldr r3, [r0, #0x0]
smull r6, r5, r12, r4
ldr r4, [r1, #0x0]
ldr r0, [r0, #0x8]
smlal r6, r5, r3, r4
ldr r4, [r1, #0x18]
smlal r6, r5, r0, r4
mov r4, r6, lsr #0xc
orr r4, r4, r5, lsl #0x14
str r4, [r2, #0x0]
ldr r4, [r1, #0x10]
ldr r5, [r1, #0x4]
smull r6, lr, r12, r4
smlal r6, lr, r3, r5
ldr r4, [r1, #0x1c]
smlal r6, lr, r0, r4
mov r4, r6, lsr #0xc
orr r4, r4, lr, lsl #0x14
str r4, [r2, #0x4]
ldr lr, [r1, #0x14]
ldr r4, [r1, #0x8]
smull r5, lr, r12, lr
smlal r5, lr, r3, r4
ldr r1, [r1, #0x20]
smlal r5, lr, r0, r1
mov r0, r5, lsr #0xc
orr r0, r0, lr, lsl #0x14
str r0, [r2, #0x8]
ldmia sp!, {r4-r6,lr}
bx lr
arm_func_start MTX_Concat33
MTX_Concat33: ; 0x020C400C
stmdb sp!, {r4-r9,lr}
sub sp, sp, #0x24
ldr r5, [r0, #0x4]
ldr r3, [r1, #0xc]
mov r12, r2
smull r8, r7, r5, r3
ldr r6, [r0, #0x0]
ldr r3, [r1, #0x0]
cmp r12, r1
smlal r8, r7, r6, r3
ldr r4, [r0, #0x8]
ldr r3, [r1, #0x18]
addeq r2, sp, #0x0
smlal r8, r7, r4, r3
mov r3, r8, lsr #0xc
orr r3, r3, r7, lsl #0x14
str r3, [r2, #0x0]
ldr r3, [r1, #0x10]
ldr r7, [r1, #0x4]
smull r9, r8, r5, r3
smlal r9, r8, r6, r7
ldr r3, [r1, #0x1c]
add lr, sp, #0x0
smlal r9, r8, r4, r3
mov r3, r9, lsr #0xc
orr r3, r3, r8, lsl #0x14
str r3, [r2, #0x4]
ldr r3, [r1, #0x14]
ldr r7, [r1, #0x8]
smull r9, r8, r5, r3
smlal r9, r8, r6, r7
ldr r6, [r1, #0x20]
cmp r2, lr
smlal r9, r8, r4, r6
mov r4, r9, lsr #0xc
orr r4, r4, r8, lsl #0x14
str r4, [r2, #0x8]
ldr r4, [r0, #0x10]
ldr r5, [r0, #0xc]
smull r9, r8, r4, r3
smlal r9, r8, r5, r7
ldr r3, [r0, #0x14]
addne sp, sp, #0x24
smlal r9, r8, r3, r6
mov r6, r9, lsr #0xc
orr r6, r6, r8, lsl #0x14
str r6, [r2, #0x14]
ldr r6, [r1, #0x10]
ldr r7, [r1, #0x4]
smull r9, r8, r4, r6
smlal r9, r8, r5, r7
ldr r6, [r1, #0x1c]
smlal r9, r8, r3, r6
mov r6, r9, lsr #0xc
orr r6, r6, r8, lsl #0x14
str r6, [r2, #0x10]
ldr r7, [r1, #0xc]
ldr r6, [r1, #0x0]
smull r9, r8, r4, r7
smlal r9, r8, r5, r6
ldr r5, [r1, #0x18]
smlal r9, r8, r3, r5
mov r3, r9, lsr #0xc
orr r3, r3, r8, lsl #0x14
str r3, [r2, #0xc]
ldr r4, [r0, #0x1c]
ldr r3, [r0, #0x18]
smull r8, r7, r4, r7
smlal r8, r7, r3, r6
ldr r0, [r0, #0x20]
smlal r8, r7, r0, r5
mov r5, r8, lsr #0xc
orr r5, r5, r7, lsl #0x14
str r5, [r2, #0x18]
ldr r5, [r1, #0x10]
ldr r6, [r1, #0x4]
smull r8, r5, r4, r5
smlal r8, r5, r3, r6
ldr r7, [r1, #0x1c]
smlal r8, r5, r0, r7
mov r6, r8, lsr #0xc
orr r6, r6, r5, lsl #0x14
str r6, [r2, #0x1c]
ldr r6, [r1, #0x20]
ldr r5, [r1, #0x8]
ldr r1, [r1, #0x14]
smull r7, r1, r4, r1
smlal r7, r1, r3, r5
smlal r7, r1, r0, r6
mov r0, r7, lsr #0xc
orr r0, r0, r1, lsl #0x14
str r0, [r2, #0x20]
ldmneia sp!, {r4-r9,lr}
bxne lr
ldmia lr!, {r0-r3}
stmia r12!, {r0-r3}
ldmia lr!, {r0-r3}
stmia r12!, {r0-r3}
ldr r0, [lr, #0x0]
str r0, [r12, #0x0]
add sp, sp, #0x24
ldmia sp!, {r4-r9,lr}
bx lr
arm_func_start MTX_ScaleApply33
MTX_ScaleApply33: ; 0x020C41A8
stmdb sp!, {r4,lr}
ldr r4, [r0, #0x0]
ldr r12, [sp, #0x8]
smull lr, r4, r2, r4
mov lr, lr, lsr #0xc
orr lr, lr, r4, lsl #0x14
str lr, [r1, #0x0]
ldr r4, [r0, #0x4]
smull lr, r4, r2, r4
mov lr, lr, lsr #0xc
orr lr, lr, r4, lsl #0x14
str lr, [r1, #0x4]
ldr lr, [r0, #0x8]
smull r4, lr, r2, lr
mov r2, r4, lsr #0xc
orr r2, r2, lr, lsl #0x14
str r2, [r1, #0x8]
ldr r2, [r0, #0xc]
smull lr, r2, r3, r2
mov lr, lr, lsr #0xc
orr lr, lr, r2, lsl #0x14
str lr, [r1, #0xc]
ldr r2, [r0, #0x10]
smull lr, r2, r3, r2
mov lr, lr, lsr #0xc
orr lr, lr, r2, lsl #0x14
str lr, [r1, #0x10]
ldr r2, [r0, #0x14]
smull lr, r2, r3, r2
mov r3, lr, lsr #0xc
orr r3, r3, r2, lsl #0x14
str r3, [r1, #0x14]
ldr r2, [r0, #0x18]
smull r3, r2, r12, r2
mov r3, r3, lsr #0xc
orr r3, r3, r2, lsl #0x14
str r3, [r1, #0x18]
ldr r2, [r0, #0x1c]
smull r3, r2, r12, r2
mov r3, r3, lsr #0xc
orr r3, r3, r2, lsl #0x14
str r3, [r1, #0x1c]
ldr r0, [r0, #0x20]
smull r2, r0, r12, r0
mov r2, r2, lsr #0xc
orr r2, r2, r0, lsl #0x14
str r2, [r1, #0x20]
ldmia sp!, {r4,lr}
bx lr
|