summaryrefslogtreecommitdiff
path: root/asm/code_8025DCC0.s
blob: 443f0fa69dc0c59cffb189a4d99ab7f5117528d1 (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
.include "macros.inc"

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

.global func_8025DCC0
func_8025DCC0:
/* 8025DCC0 00259920  38 04 00 01 */	addi r0, r4, 1
/* 8025DCC4 00259924  38 A0 00 00 */	li r5, 0
/* 8025DCC8 00259928  54 00 F8 7E */	srwi r0, r0, 1
/* 8025DCCC 0025992C  7C 09 03 A6 */	mtctr r0
/* 8025DCD0 00259930  2C 04 00 00 */	cmpwi r4, 0
/* 8025DCD4 00259934  40 81 00 2C */	ble lbl_8025DD00
lbl_8025DCD8:
/* 8025DCD8 00259938  A0 83 00 00 */	lhz r4, 0(r3)
/* 8025DCDC 0025993C  54 A0 04 3E */	clrlwi r0, r5, 0x10
/* 8025DCE0 00259940  38 63 00 02 */	addi r3, r3, 2
/* 8025DCE4 00259944  7C A5 22 14 */	add r5, r5, r4
/* 8025DCE8 00259948  54 A4 04 3E */	clrlwi r4, r5, 0x10
/* 8025DCEC 0025994C  7C 00 20 40 */	cmplw r0, r4
/* 8025DCF0 00259950  40 81 00 0C */	ble lbl_8025DCFC
/* 8025DCF4 00259954  38 04 00 01 */	addi r0, r4, 1
/* 8025DCF8 00259958  54 05 04 3E */	clrlwi r5, r0, 0x10
lbl_8025DCFC:
/* 8025DCFC 0025995C  42 00 FF DC */	bdnz lbl_8025DCD8
lbl_8025DD00:
/* 8025DD00 00259960  7C A0 28 F8 */	nor r0, r5, r5
/* 8025DD04 00259964  54 03 04 3E */	clrlwi r3, r0, 0x10
/* 8025DD08 00259968  4E 80 00 20 */	blr

.global func_8025DD0C
func_8025DD0C:
/* 8025DD0C 0025996C  90 83 00 00 */	stw r4, 0(r3)
/* 8025DD10 00259970  4E 80 00 20 */	blr

.global func_8025DD14
func_8025DD14:
/* 8025DD14 00259974  3C 80 41 C6 */	lis r4, 0x41C64E6D@ha
/* 8025DD18 00259978  80 A3 00 00 */	lwz r5, 0(r3)
/* 8025DD1C 0025997C  38 04 4E 6D */	addi r0, r4, 0x41C64E6D@l
/* 8025DD20 00259980  7C 85 01 D6 */	mullw r4, r5, r0
/* 8025DD24 00259984  38 04 30 39 */	addi r0, r4, 0x3039
/* 8025DD28 00259988  90 03 00 00 */	stw r0, 0(r3)
/* 8025DD2C 0025998C  54 03 04 3E */	clrlwi r3, r0, 0x10
/* 8025DD30 00259990  4E 80 00 20 */	blr

.global func_8025DD34
func_8025DD34:
/* 8025DD34 00259994  B0 83 00 0A */	sth r4, 0xa(r3)
/* 8025DD38 00259998  4E 80 00 20 */	blr

.global func_8025DD3C
func_8025DD3C:
/* 8025DD3C 0025999C  B0 83 00 08 */	sth r4, 8(r3)
/* 8025DD40 002599A0  4E 80 00 20 */	blr

.global func_8025DD44
func_8025DD44:
/* 8025DD44 002599A4  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8025DD48 002599A8  7C 08 02 A6 */	mflr r0
/* 8025DD4C 002599AC  90 01 00 34 */	stw r0, 0x34(r1)
/* 8025DD50 002599B0  39 61 00 30 */	addi r11, r1, 0x30
/* 8025DD54 002599B4  4B F6 93 CD */	bl _savegpr_25
/* 8025DD58 002599B8  7C 9D 23 78 */	mr r29, r4
/* 8025DD5C 002599BC  7C BE 2B 78 */	mr r30, r5
/* 8025DD60 002599C0  7C 7C 1B 78 */	mr r28, r3
/* 8025DD64 002599C4  7C DF 33 78 */	mr r31, r6
/* 8025DD68 002599C8  7C F9 3B 78 */	mr r25, r7
/* 8025DD6C 002599CC  7F A3 EB 78 */	mr r3, r29
/* 8025DD70 002599D0  7F C4 F3 78 */	mr r4, r30
/* 8025DD74 002599D4  4B FF FF 4D */	bl func_8025DCC0
/* 8025DD78 002599D8  38 9E 00 01 */	addi r4, r30, 1
/* 8025DD7C 002599DC  7C 7B 1B 78 */	mr r27, r3
/* 8025DD80 002599E0  54 80 0F FE */	srwi r0, r4, 0x1f
/* 8025DD84 002599E4  7C 00 22 14 */	add r0, r0, r4
/* 8025DD88 002599E8  54 03 00 3C */	rlwinm r3, r0, 0, 0, 0x1e
/* 8025DD8C 002599EC  38 03 00 04 */	addi r0, r3, 4
/* 8025DD90 002599F0  7C 19 00 00 */	cmpw r25, r0
/* 8025DD94 002599F4  40 80 00 0C */	bge lbl_8025DDA0
/* 8025DD98 002599F8  38 60 00 00 */	li r3, 0
/* 8025DD9C 002599FC  48 00 00 90 */	b lbl_8025DE2C
lbl_8025DDA0:
/* 8025DDA0 00259A00  A0 9C 00 08 */	lhz r4, 8(r28)
/* 8025DDA4 00259A04  7F 83 E3 78 */	mr r3, r28
/* 8025DDA8 00259A08  4B FF FF 65 */	bl func_8025DD0C
/* 8025DDAC 00259A0C  A0 7C 00 08 */	lhz r3, 8(r28)
/* 8025DDB0 00259A10  3B 40 00 02 */	li r26, 2
/* 8025DDB4 00259A14  A0 1C 00 0A */	lhz r0, 0xa(r28)
/* 8025DDB8 00259A18  7C 60 02 78 */	xor r0, r3, r0
/* 8025DDBC 00259A1C  B0 1C 00 08 */	sth r0, 8(r28)
/* 8025DDC0 00259A20  B0 1F 00 00 */	sth r0, 0(r31)
/* 8025DDC4 00259A24  3B FF 00 02 */	addi r31, r31, 2
/* 8025DDC8 00259A28  48 00 00 3C */	b lbl_8025DE04
lbl_8025DDCC:
/* 8025DDCC 00259A2C  A3 3D 00 00 */	lhz r25, 0(r29)
/* 8025DDD0 00259A30  7F 83 E3 78 */	mr r3, r28
/* 8025DDD4 00259A34  3B BD 00 02 */	addi r29, r29, 2
/* 8025DDD8 00259A38  4B FF FF 3D */	bl func_8025DD14
/* 8025DDDC 00259A3C  A0 9C 00 08 */	lhz r4, 8(r28)
/* 8025DDE0 00259A40  7F 39 1A 78 */	xor r25, r25, r3
/* 8025DDE4 00259A44  38 7A 00 02 */	addi r3, r26, 2
/* 8025DDE8 00259A48  38 1E FF FE */	addi r0, r30, -2
/* 8025DDEC 00259A4C  7F 39 22 78 */	xor r25, r25, r4
/* 8025DDF0 00259A50  B3 3F 00 00 */	sth r25, 0(r31)
/* 8025DDF4 00259A54  54 7A 04 3E */	clrlwi r26, r3, 0x10
/* 8025DDF8 00259A58  54 1E 04 3E */	clrlwi r30, r0, 0x10
/* 8025DDFC 00259A5C  3B FF 00 02 */	addi r31, r31, 2
/* 8025DE00 00259A60  B3 3C 00 08 */	sth r25, 8(r28)
lbl_8025DE04:
/* 8025DE04 00259A64  2C 1E 00 00 */	cmpwi r30, 0
/* 8025DE08 00259A68  40 82 FF C4 */	bne lbl_8025DDCC
/* 8025DE0C 00259A6C  7F 83 E3 78 */	mr r3, r28
/* 8025DE10 00259A70  4B FF FF 05 */	bl func_8025DD14
/* 8025DE14 00259A74  A0 9C 00 08 */	lhz r4, 8(r28)
/* 8025DE18 00259A78  7F 63 1A 78 */	xor r3, r27, r3
/* 8025DE1C 00259A7C  38 1A 00 02 */	addi r0, r26, 2
/* 8025DE20 00259A80  7C 63 22 78 */	xor r3, r3, r4
/* 8025DE24 00259A84  B0 7F 00 00 */	sth r3, 0(r31)
/* 8025DE28 00259A88  54 03 04 3E */	clrlwi r3, r0, 0x10
lbl_8025DE2C:
/* 8025DE2C 00259A8C  39 61 00 30 */	addi r11, r1, 0x30
/* 8025DE30 00259A90  4B F6 93 3D */	bl _restgpr_25
/* 8025DE34 00259A94  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8025DE38 00259A98  7C 08 03 A6 */	mtlr r0
/* 8025DE3C 00259A9C  38 21 00 30 */	addi r1, r1, 0x30
/* 8025DE40 00259AA0  4E 80 00 20 */	blr

.global func_8025DE44
func_8025DE44:
/* 8025DE44 00259AA4  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 8025DE48 00259AA8  7C 08 02 A6 */	mflr r0
/* 8025DE4C 00259AAC  90 01 00 34 */	stw r0, 0x34(r1)
/* 8025DE50 00259AB0  39 61 00 30 */	addi r11, r1, 0x30
/* 8025DE54 00259AB4  4B F6 92 CD */	bl _savegpr_25
/* 8025DE58 00259AB8  2C 06 00 04 */	cmpwi r6, 4
/* 8025DE5C 00259ABC  7C BB 2B 78 */	mr r27, r5
/* 8025DE60 00259AC0  7C 79 1B 78 */	mr r25, r3
/* 8025DE64 00259AC4  7C 9A 23 78 */	mr r26, r4
/* 8025DE68 00259AC8  7C DC 33 78 */	mr r28, r6
/* 8025DE6C 00259ACC  7F 7D DB 78 */	mr r29, r27
/* 8025DE70 00259AD0  40 80 00 0C */	bge lbl_8025DE7C
/* 8025DE74 00259AD4  38 60 00 00 */	li r3, 0
/* 8025DE78 00259AD8  48 00 00 D0 */	b lbl_8025DF48
lbl_8025DE7C:
/* 8025DE7C 00259ADC  A0 84 00 00 */	lhz r4, 0(r4)
/* 8025DE80 00259AE0  3B 5A 00 02 */	addi r26, r26, 2
/* 8025DE84 00259AE4  A0 03 00 0A */	lhz r0, 0xa(r3)
/* 8025DE88 00259AE8  7C 84 02 78 */	xor r4, r4, r0
/* 8025DE8C 00259AEC  B0 83 00 08 */	sth r4, 8(r3)
/* 8025DE90 00259AF0  4B FF FE 7D */	bl func_8025DD0C
/* 8025DE94 00259AF4  A0 79 00 08 */	lhz r3, 8(r25)
/* 8025DE98 00259AF8  3B DC FF FC */	addi r30, r28, -4
/* 8025DE9C 00259AFC  A0 19 00 0A */	lhz r0, 0xa(r25)
/* 8025DEA0 00259B00  7C 60 02 78 */	xor r0, r3, r0
/* 8025DEA4 00259B04  B0 19 00 08 */	sth r0, 8(r25)
/* 8025DEA8 00259B08  48 00 00 30 */	b lbl_8025DED8
lbl_8025DEAC:
/* 8025DEAC 00259B0C  A0 9A 00 00 */	lhz r4, 0(r26)
/* 8025DEB0 00259B10  7F 23 CB 78 */	mr r3, r25
/* 8025DEB4 00259B14  A0 19 00 08 */	lhz r0, 8(r25)
/* 8025DEB8 00259B18  3B 5A 00 02 */	addi r26, r26, 2
/* 8025DEBC 00259B1C  B0 99 00 08 */	sth r4, 8(r25)
/* 8025DEC0 00259B20  7C 9F 02 78 */	xor r31, r4, r0
/* 8025DEC4 00259B24  4B FF FE 51 */	bl func_8025DD14
/* 8025DEC8 00259B28  7F E0 1A 78 */	xor r0, r31, r3
/* 8025DECC 00259B2C  3B DE FF FE */	addi r30, r30, -2
/* 8025DED0 00259B30  B0 1B 00 00 */	sth r0, 0(r27)
/* 8025DED4 00259B34  3B 7B 00 02 */	addi r27, r27, 2
lbl_8025DED8:
/* 8025DED8 00259B38  2C 1E 00 00 */	cmpwi r30, 0
/* 8025DEDC 00259B3C  41 81 FF D0 */	bgt lbl_8025DEAC
/* 8025DEE0 00259B40  A0 9A 00 00 */	lhz r4, 0(r26)
/* 8025DEE4 00259B44  7F 23 CB 78 */	mr r3, r25
/* 8025DEE8 00259B48  A0 19 00 08 */	lhz r0, 8(r25)
/* 8025DEEC 00259B4C  7C 9F 02 78 */	xor r31, r4, r0
/* 8025DEF0 00259B50  4B FF FE 25 */	bl func_8025DD14
/* 8025DEF4 00259B54  7F E0 1A 78 */	xor r0, r31, r3
/* 8025DEF8 00259B58  3B FC FF FC */	addi r31, r28, -4
/* 8025DEFC 00259B5C  7F A3 EB 78 */	mr r3, r29
/* 8025DF00 00259B60  7F E4 FB 78 */	mr r4, r31
/* 8025DF04 00259B64  54 1E 04 3E */	clrlwi r30, r0, 0x10
/* 8025DF08 00259B68  4B FF FD B9 */	bl func_8025DCC0
/* 8025DF0C 00259B6C  54 60 04 3E */	clrlwi r0, r3, 0x10
/* 8025DF10 00259B70  7C 1E 00 40 */	cmplw r30, r0
/* 8025DF14 00259B74  41 82 00 30 */	beq lbl_8025DF44
/* 8025DF18 00259B78  7F A3 EB 78 */	mr r3, r29
/* 8025DF1C 00259B7C  7F E4 FB 78 */	mr r4, r31
/* 8025DF20 00259B80  4B FF FD A1 */	bl func_8025DCC0
/* 8025DF24 00259B84  3C C0 80 42 */	lis r6, lbl_804255A8@ha
/* 8025DF28 00259B88  54 64 04 3E */	clrlwi r4, r3, 0x10
/* 8025DF2C 00259B8C  7F C5 F3 78 */	mr r5, r30
/* 8025DF30 00259B90  38 66 55 A8 */	addi r3, r6, lbl_804255A8@l
/* 8025DF34 00259B94  4C C6 31 82 */	crclr 6
/* 8025DF38 00259B98  4B DA 9B 8D */	bl OSReport
/* 8025DF3C 00259B9C  38 60 00 00 */	li r3, 0
/* 8025DF40 00259BA0  48 00 00 08 */	b lbl_8025DF48
lbl_8025DF44:
/* 8025DF44 00259BA4  57 E3 04 3E */	clrlwi r3, r31, 0x10
lbl_8025DF48:
/* 8025DF48 00259BA8  39 61 00 30 */	addi r11, r1, 0x30
/* 8025DF4C 00259BAC  4B F6 92 21 */	bl _restgpr_25
/* 8025DF50 00259BB0  80 01 00 34 */	lwz r0, 0x34(r1)
/* 8025DF54 00259BB4  7C 08 03 A6 */	mtlr r0
/* 8025DF58 00259BB8  38 21 00 30 */	addi r1, r1, 0x30
/* 8025DF5C 00259BBC  4E 80 00 20 */	blr

.global func_8025DF60
func_8025DF60:
/* 8025DF60 00259BC0  38 A0 00 01 */	li r5, 1
/* 8025DF64 00259BC4  38 6D A6 C8 */	addi r3, r13, lbl_8063F988-_SDA_BASE_
/* 8025DF68 00259BC8  38 80 00 04 */	li r4, 4
/* 8025DF6C 00259BCC  38 00 00 00 */	li r0, 0
/* 8025DF70 00259BD0  98 AD A6 C8 */	stb r5, lbl_8063F988-_SDA_BASE_(r13)
/* 8025DF74 00259BD4  B0 83 00 02 */	sth r4, 2(r3)
/* 8025DF78 00259BD8  98 03 00 04 */	stb r0, 4(r3)
/* 8025DF7C 00259BDC  4E 80 00 20 */	blr