summaryrefslogtreecommitdiff
path: root/asm/Runtime/NMWException.s
blob: afb7e05d5947ee222d07c5e1d1ef22306415e063 (plain)
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
.include "macros.inc"

.section .text, "ax"  # 0x80006980 - 0x803E1E60

.global __construct_new_array
__construct_new_array:
/* 801C6CA8 001C2908  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 801C6CAC 001C290C  7C 08 02 A6 */	mflr r0
/* 801C6CB0 001C2910  2C 03 00 00 */	cmpwi r3, 0
/* 801C6CB4 001C2914  90 01 00 44 */	stw r0, 0x44(r1)
/* 801C6CB8 001C2918  BF 61 00 2C */	stmw r27, 0x2c(r1)
/* 801C6CBC 001C291C  7C 7E 1B 78 */	mr r30, r3
/* 801C6CC0 001C2920  7C 9B 23 78 */	mr r27, r4
/* 801C6CC4 001C2924  7C DC 33 78 */	mr r28, r6
/* 801C6CC8 001C2928  7C FD 3B 78 */	mr r29, r7
/* 801C6CCC 001C292C  41 82 00 C8 */	beq lbl_801C6D94
/* 801C6CD0 001C2930  2C 04 00 00 */	cmpwi r4, 0
/* 801C6CD4 001C2934  90 C3 00 00 */	stw r6, 0(r3)
/* 801C6CD8 001C2938  3B C3 00 10 */	addi r30, r3, 0x10
/* 801C6CDC 001C293C  90 E3 00 04 */	stw r7, 4(r3)
/* 801C6CE0 001C2940  41 82 00 B4 */	beq lbl_801C6D94
/* 801C6CE4 001C2944  38 00 00 00 */	li r0, 0
/* 801C6CE8 001C2948  93 C1 00 08 */	stw r30, 8(r1)
/* 801C6CEC 001C294C  7F DF F3 78 */	mr r31, r30
/* 801C6CF0 001C2950  90 C1 00 0C */	stw r6, 0xc(r1)
/* 801C6CF4 001C2954  90 E1 00 10 */	stw r7, 0x10(r1)
/* 801C6CF8 001C2958  90 A1 00 14 */	stw r5, 0x14(r1)
/* 801C6CFC 001C295C  90 01 00 18 */	stw r0, 0x18(r1)
/* 801C6D00 001C2960  48 00 00 28 */	b lbl_801C6D28
lbl_801C6D04:
/* 801C6D04 001C2964  7F 6C DB 78 */	mr r12, r27
/* 801C6D08 001C2968  7F E3 FB 78 */	mr r3, r31
/* 801C6D0C 001C296C  38 80 00 01 */	li r4, 1
/* 801C6D10 001C2970  7D 89 03 A6 */	mtctr r12
/* 801C6D14 001C2974  4E 80 04 21 */	bctrl
/* 801C6D18 001C2978  80 61 00 18 */	lwz r3, 0x18(r1)
/* 801C6D1C 001C297C  7F FF E2 14 */	add r31, r31, r28
/* 801C6D20 001C2980  38 03 00 01 */	addi r0, r3, 1
/* 801C6D24 001C2984  90 01 00 18 */	stw r0, 0x18(r1)
lbl_801C6D28:
/* 801C6D28 001C2988  80 81 00 18 */	lwz r4, 0x18(r1)
/* 801C6D2C 001C298C  7C 04 E8 40 */	cmplw r4, r29
/* 801C6D30 001C2990  41 80 FF D4 */	blt lbl_801C6D04
/* 801C6D34 001C2994  80 01 00 10 */	lwz r0, 0x10(r1)
/* 801C6D38 001C2998  7C 04 00 40 */	cmplw r4, r0
/* 801C6D3C 001C299C  40 80 00 58 */	bge lbl_801C6D94
/* 801C6D40 001C29A0  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801C6D44 001C29A4  2C 00 00 00 */	cmpwi r0, 0
/* 801C6D48 001C29A8  41 82 00 4C */	beq lbl_801C6D94
/* 801C6D4C 001C29AC  80 01 00 0C */	lwz r0, 0xc(r1)
/* 801C6D50 001C29B0  80 61 00 08 */	lwz r3, 8(r1)
/* 801C6D54 001C29B4  7C 00 21 D6 */	mullw r0, r0, r4
/* 801C6D58 001C29B8  7F E3 02 14 */	add r31, r3, r0
/* 801C6D5C 001C29BC  48 00 00 2C */	b lbl_801C6D88
lbl_801C6D60:
/* 801C6D60 001C29C0  80 01 00 0C */	lwz r0, 0xc(r1)
/* 801C6D64 001C29C4  38 80 FF FF */	li r4, -1
/* 801C6D68 001C29C8  81 81 00 14 */	lwz r12, 0x14(r1)
/* 801C6D6C 001C29CC  7F E0 F8 50 */	subf r31, r0, r31
/* 801C6D70 001C29D0  7F E3 FB 78 */	mr r3, r31
/* 801C6D74 001C29D4  7D 89 03 A6 */	mtctr r12
/* 801C6D78 001C29D8  4E 80 04 21 */	bctrl
/* 801C6D7C 001C29DC  80 61 00 18 */	lwz r3, 0x18(r1)
/* 801C6D80 001C29E0  38 03 FF FF */	addi r0, r3, -1
/* 801C6D84 001C29E4  90 01 00 18 */	stw r0, 0x18(r1)
lbl_801C6D88:
/* 801C6D88 001C29E8  80 01 00 18 */	lwz r0, 0x18(r1)
/* 801C6D8C 001C29EC  2C 00 00 00 */	cmpwi r0, 0
/* 801C6D90 001C29F0  40 82 FF D0 */	bne lbl_801C6D60
lbl_801C6D94:
/* 801C6D94 001C29F4  7F C3 F3 78 */	mr r3, r30
/* 801C6D98 001C29F8  BB 61 00 2C */	lmw r27, 0x2c(r1)
/* 801C6D9C 001C29FC  80 01 00 44 */	lwz r0, 0x44(r1)
/* 801C6DA0 001C2A00  7C 08 03 A6 */	mtlr r0
/* 801C6DA4 001C2A04  38 21 00 40 */	addi r1, r1, 0x40
/* 801C6DA8 001C2A08  4E 80 00 20 */	blr

.global __dt__26__partial_array_destructorFv
__dt__26__partial_array_destructorFv:
/* 801C6DAC 001C2A0C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801C6DB0 001C2A10  7C 08 02 A6 */	mflr r0
/* 801C6DB4 001C2A14  2C 03 00 00 */	cmpwi r3, 0
/* 801C6DB8 001C2A18  90 01 00 24 */	stw r0, 0x24(r1)
/* 801C6DBC 001C2A1C  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801C6DC0 001C2A20  93 C1 00 18 */	stw r30, 0x18(r1)
/* 801C6DC4 001C2A24  7C 9E 23 78 */	mr r30, r4
/* 801C6DC8 001C2A28  93 A1 00 14 */	stw r29, 0x14(r1)
/* 801C6DCC 001C2A2C  7C 7D 1B 78 */	mr r29, r3
/* 801C6DD0 001C2A30  41 82 00 78 */	beq lbl_801C6E48
/* 801C6DD4 001C2A34  80 83 00 10 */	lwz r4, 0x10(r3)
/* 801C6DD8 001C2A38  80 03 00 08 */	lwz r0, 8(r3)
/* 801C6DDC 001C2A3C  7C 04 00 40 */	cmplw r4, r0
/* 801C6DE0 001C2A40  40 80 00 58 */	bge lbl_801C6E38
/* 801C6DE4 001C2A44  80 03 00 0C */	lwz r0, 0xc(r3)
/* 801C6DE8 001C2A48  2C 00 00 00 */	cmpwi r0, 0
/* 801C6DEC 001C2A4C  41 82 00 4C */	beq lbl_801C6E38
/* 801C6DF0 001C2A50  80 03 00 04 */	lwz r0, 4(r3)
/* 801C6DF4 001C2A54  80 63 00 00 */	lwz r3, 0(r3)
/* 801C6DF8 001C2A58  7C 00 21 D6 */	mullw r0, r0, r4
/* 801C6DFC 001C2A5C  7F E3 02 14 */	add r31, r3, r0
/* 801C6E00 001C2A60  48 00 00 2C */	b lbl_801C6E2C
lbl_801C6E04:
/* 801C6E04 001C2A64  80 1D 00 04 */	lwz r0, 4(r29)
/* 801C6E08 001C2A68  38 80 FF FF */	li r4, -1
/* 801C6E0C 001C2A6C  81 9D 00 0C */	lwz r12, 0xc(r29)
/* 801C6E10 001C2A70  7F E0 F8 50 */	subf r31, r0, r31
/* 801C6E14 001C2A74  7F E3 FB 78 */	mr r3, r31
/* 801C6E18 001C2A78  7D 89 03 A6 */	mtctr r12
/* 801C6E1C 001C2A7C  4E 80 04 21 */	bctrl
/* 801C6E20 001C2A80  80 7D 00 10 */	lwz r3, 0x10(r29)
/* 801C6E24 001C2A84  38 03 FF FF */	addi r0, r3, -1
/* 801C6E28 001C2A88  90 1D 00 10 */	stw r0, 0x10(r29)
lbl_801C6E2C:
/* 801C6E2C 001C2A8C  80 1D 00 10 */	lwz r0, 0x10(r29)
/* 801C6E30 001C2A90  2C 00 00 00 */	cmpwi r0, 0
/* 801C6E34 001C2A94  40 82 FF D0 */	bne lbl_801C6E04
lbl_801C6E38:
/* 801C6E38 001C2A98  2C 1E 00 00 */	cmpwi r30, 0
/* 801C6E3C 001C2A9C  40 81 00 0C */	ble lbl_801C6E48
/* 801C6E40 001C2AA0  7F A3 EB 78 */	mr r3, r29
/* 801C6E44 001C2AA4  48 01 3C 75 */	bl __dl__FPv
lbl_801C6E48:
/* 801C6E48 001C2AA8  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 801C6E4C 001C2AAC  7F A3 EB 78 */	mr r3, r29
/* 801C6E50 001C2AB0  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 801C6E54 001C2AB4  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 801C6E58 001C2AB8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801C6E5C 001C2ABC  7C 08 03 A6 */	mtlr r0
/* 801C6E60 001C2AC0  38 21 00 20 */	addi r1, r1, 0x20
/* 801C6E64 001C2AC4  4E 80 00 20 */	blr

.global __construct_array
__construct_array:
/* 801C6E68 001C2AC8  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 801C6E6C 001C2ACC  7C 08 02 A6 */	mflr r0
/* 801C6E70 001C2AD0  90 01 00 34 */	stw r0, 0x34(r1)
/* 801C6E74 001C2AD4  38 00 00 00 */	li r0, 0
/* 801C6E78 001C2AD8  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 801C6E7C 001C2ADC  7C 7F 1B 78 */	mr r31, r3
/* 801C6E80 001C2AE0  93 C1 00 28 */	stw r30, 0x28(r1)
/* 801C6E84 001C2AE4  7C FE 3B 78 */	mr r30, r7
/* 801C6E88 001C2AE8  93 A1 00 24 */	stw r29, 0x24(r1)
/* 801C6E8C 001C2AEC  7C DD 33 78 */	mr r29, r6
/* 801C6E90 001C2AF0  93 81 00 20 */	stw r28, 0x20(r1)
/* 801C6E94 001C2AF4  7C 9C 23 78 */	mr r28, r4
/* 801C6E98 001C2AF8  90 61 00 08 */	stw r3, 8(r1)
/* 801C6E9C 001C2AFC  90 C1 00 0C */	stw r6, 0xc(r1)
/* 801C6EA0 001C2B00  90 E1 00 10 */	stw r7, 0x10(r1)
/* 801C6EA4 001C2B04  90 A1 00 14 */	stw r5, 0x14(r1)
/* 801C6EA8 001C2B08  90 01 00 18 */	stw r0, 0x18(r1)
/* 801C6EAC 001C2B0C  48 00 00 28 */	b lbl_801C6ED4
lbl_801C6EB0:
/* 801C6EB0 001C2B10  7F 8C E3 78 */	mr r12, r28
/* 801C6EB4 001C2B14  7F E3 FB 78 */	mr r3, r31
/* 801C6EB8 001C2B18  38 80 00 01 */	li r4, 1
/* 801C6EBC 001C2B1C  7D 89 03 A6 */	mtctr r12
/* 801C6EC0 001C2B20  4E 80 04 21 */	bctrl
/* 801C6EC4 001C2B24  80 61 00 18 */	lwz r3, 0x18(r1)
/* 801C6EC8 001C2B28  7F FF EA 14 */	add r31, r31, r29
/* 801C6ECC 001C2B2C  38 03 00 01 */	addi r0, r3, 1
/* 801C6ED0 001C2B30  90 01 00 18 */	stw r0, 0x18(r1)
lbl_801C6ED4:
/* 801C6ED4 001C2B34  80 81 00 18 */	lwz r4, 0x18(r1)
/* 801C6ED8 001C2B38  7C 04 F0 40 */	cmplw r4, r30
/* 801C6EDC 001C2B3C  41 80 FF D4 */	blt lbl_801C6EB0
/* 801C6EE0 001C2B40  80 01 00 10 */	lwz r0, 0x10(r1)
/* 801C6EE4 001C2B44  7C 04 00 40 */	cmplw r4, r0
/* 801C6EE8 001C2B48  40 80 00 58 */	bge lbl_801C6F40
/* 801C6EEC 001C2B4C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 801C6EF0 001C2B50  2C 00 00 00 */	cmpwi r0, 0
/* 801C6EF4 001C2B54  41 82 00 4C */	beq lbl_801C6F40
/* 801C6EF8 001C2B58  80 01 00 0C */	lwz r0, 0xc(r1)
/* 801C6EFC 001C2B5C  80 61 00 08 */	lwz r3, 8(r1)
/* 801C6F00 001C2B60  7C 00 21 D6 */	mullw r0, r0, r4
/* 801C6F04 001C2B64  7F E3 02 14 */	add r31, r3, r0
/* 801C6F08 001C2B68  48 00 00 2C */	b lbl_801C6F34
lbl_801C6F0C:
/* 801C6F0C 001C2B6C  80 01 00 0C */	lwz r0, 0xc(r1)
/* 801C6F10 001C2B70  38 80 FF FF */	li r4, -1
/* 801C6F14 001C2B74  81 81 00 14 */	lwz r12, 0x14(r1)
/* 801C6F18 001C2B78  7F E0 F8 50 */	subf r31, r0, r31
/* 801C6F1C 001C2B7C  7F E3 FB 78 */	mr r3, r31
/* 801C6F20 001C2B80  7D 89 03 A6 */	mtctr r12
/* 801C6F24 001C2B84  4E 80 04 21 */	bctrl
/* 801C6F28 001C2B88  80 61 00 18 */	lwz r3, 0x18(r1)
/* 801C6F2C 001C2B8C  38 03 FF FF */	addi r0, r3, -1
/* 801C6F30 001C2B90  90 01 00 18 */	stw r0, 0x18(r1)
lbl_801C6F34:
/* 801C6F34 001C2B94  80 01 00 18 */	lwz r0, 0x18(r1)
/* 801C6F38 001C2B98  2C 00 00 00 */	cmpwi r0, 0
/* 801C6F3C 001C2B9C  40 82 FF D0 */	bne lbl_801C6F0C
lbl_801C6F40:
/* 801C6F40 001C2BA0  80 01 00 34 */	lwz r0, 0x34(r1)
/* 801C6F44 001C2BA4  83 E1 00 2C */	lwz r31, 0x2c(r1)
/* 801C6F48 001C2BA8  83 C1 00 28 */	lwz r30, 0x28(r1)
/* 801C6F4C 001C2BAC  83 A1 00 24 */	lwz r29, 0x24(r1)
/* 801C6F50 001C2BB0  83 81 00 20 */	lwz r28, 0x20(r1)
/* 801C6F54 001C2BB4  7C 08 03 A6 */	mtlr r0
/* 801C6F58 001C2BB8  38 21 00 30 */	addi r1, r1, 0x30
/* 801C6F5C 001C2BBC  4E 80 00 20 */	blr

.global __destroy_arr
__destroy_arr:
/* 801C6F60 001C2BC0  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 801C6F64 001C2BC4  7C 08 02 A6 */	mflr r0
/* 801C6F68 001C2BC8  90 01 00 24 */	stw r0, 0x24(r1)
/* 801C6F6C 001C2BCC  7C 05 31 D6 */	mullw r0, r5, r6
/* 801C6F70 001C2BD0  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 801C6F74 001C2BD4  93 C1 00 18 */	stw r30, 0x18(r1)
/* 801C6F78 001C2BD8  7C DE 33 78 */	mr r30, r6
/* 801C6F7C 001C2BDC  7F E3 02 14 */	add r31, r3, r0
/* 801C6F80 001C2BE0  93 A1 00 14 */	stw r29, 0x14(r1)
/* 801C6F84 001C2BE4  7C BD 2B 78 */	mr r29, r5
/* 801C6F88 001C2BE8  93 81 00 10 */	stw r28, 0x10(r1)
/* 801C6F8C 001C2BEC  7C 9C 23 78 */	mr r28, r4
/* 801C6F90 001C2BF0  48 00 00 20 */	b lbl_801C6FB0
lbl_801C6F94:
/* 801C6F94 001C2BF4  7F FD F8 50 */	subf r31, r29, r31
/* 801C6F98 001C2BF8  7F 8C E3 78 */	mr r12, r28
/* 801C6F9C 001C2BFC  7F E3 FB 78 */	mr r3, r31
/* 801C6FA0 001C2C00  38 80 FF FF */	li r4, -1
/* 801C6FA4 001C2C04  7D 89 03 A6 */	mtctr r12
/* 801C6FA8 001C2C08  4E 80 04 21 */	bctrl
/* 801C6FAC 001C2C0C  3B DE FF FF */	addi r30, r30, -1
lbl_801C6FB0:
/* 801C6FB0 001C2C10  2C 1E 00 00 */	cmpwi r30, 0
/* 801C6FB4 001C2C14  40 82 FF E0 */	bne lbl_801C6F94
/* 801C6FB8 001C2C18  80 01 00 24 */	lwz r0, 0x24(r1)
/* 801C6FBC 001C2C1C  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 801C6FC0 001C2C20  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 801C6FC4 001C2C24  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 801C6FC8 001C2C28  83 81 00 10 */	lwz r28, 0x10(r1)
/* 801C6FCC 001C2C2C  7C 08 03 A6 */	mtlr r0
/* 801C6FD0 001C2C30  38 21 00 20 */	addi r1, r1, 0x20
/* 801C6FD4 001C2C34  4E 80 00 20 */	blr