summaryrefslogtreecommitdiff
path: root/asm/SDK/NWC24/NWC24Download.s
blob: 42889c3c0d93da6c68c9f97b98e0dfb52a43f505 (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
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
.include "macros.inc"

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

.global NWC24iOpenDlTaskList
NWC24iOpenDlTaskList:
/* 803047F0 00300450  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 803047F4 00300454  7C 08 02 A6 */	mflr r0
/* 803047F8 00300458  90 01 00 14 */	stw r0, 0x14(r1)
/* 803047FC 0030045C  48 00 02 B1 */	bl NWC24iLoadDlHeader
/* 80304800 00300460  2C 03 00 00 */	cmpwi r3, 0
/* 80304804 00300464  41 80 00 28 */	blt lbl_8030482C
/* 80304808 00300468  38 60 00 00 */	li r3, 0
/* 8030480C 0030046C  4B FF FD DD */	bl NWC24iSynchronizeRtcCounter
/* 80304810 00300470  80 6D AF 90 */	lwz r3, lbl_80640250-_SDA_BASE_(r13)
/* 80304814 00300474  38 80 00 00 */	li r4, 0
/* 80304818 00300478  38 63 30 00 */	addi r3, r3, 0x3000
/* 8030481C 0030047C  48 00 00 29 */	bl NWC24iCheckHeaderConsistency
/* 80304820 00300480  2C 03 00 00 */	cmpwi r3, 0
/* 80304824 00300484  41 80 00 08 */	blt lbl_8030482C
/* 80304828 00300488  38 60 00 00 */	li r3, 0
lbl_8030482C:
/* 8030482C 0030048C  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80304830 00300490  7C 08 03 A6 */	mtlr r0
/* 80304834 00300494  38 21 00 10 */	addi r1, r1, 0x10
/* 80304838 00300498  4E 80 00 20 */	blr

.global NWC24iCloseDlTaskList
NWC24iCloseDlTaskList:
/* 8030483C 0030049C  38 60 00 00 */	li r3, 0
/* 80304840 003004A0  4E 80 00 20 */	blr

.global NWC24iCheckHeaderConsistency
NWC24iCheckHeaderConsistency:
/* 80304844 003004A4  94 21 FD 40 */	stwu r1, -0x2c0(r1)
/* 80304848 003004A8  7C 08 02 A6 */	mflr r0
/* 8030484C 003004AC  90 01 02 C4 */	stw r0, 0x2c4(r1)
/* 80304850 003004B0  39 61 02 C0 */	addi r11, r1, 0x2c0
/* 80304854 003004B4  4B EC 28 D1 */	bl _savegpr_26
/* 80304858 003004B8  3B E1 00 A8 */	addi r31, r1, 0xa8
/* 8030485C 003004BC  7C 7C 1B 78 */	mr r28, r3
/* 80304860 003004C0  7C 9D 23 78 */	mr r29, r4
/* 80304864 003004C4  3B C0 00 00 */	li r30, 0
/* 80304868 003004C8  3F 60 00 01 */	lis r27, 1
/* 8030486C 003004CC  48 00 02 14 */	b lbl_80304A80
lbl_80304870:
/* 80304870 003004D0  80 6D AF 90 */	lwz r3, lbl_80640250-_SDA_BASE_(r13)
/* 80304874 003004D4  57 C0 04 3E */	clrlwi r0, r30, 0x10
/* 80304878 003004D8  A0 C3 30 10 */	lhz r6, 0x3010(r3)
/* 8030487C 003004DC  38 A3 30 00 */	addi r5, r3, 0x3000
/* 80304880 003004E0  7C 00 30 40 */	cmplw r0, r6
/* 80304884 003004E4  40 80 00 0C */	bge lbl_80304890
/* 80304888 003004E8  28 00 FF FF */	cmplwi r0, 0xffff
/* 8030488C 003004EC  40 82 00 0C */	bne lbl_80304898
lbl_80304890:
/* 80304890 003004F0  38 80 FF FD */	li r4, -3
/* 80304894 003004F4  48 00 00 20 */	b lbl_803048B4
lbl_80304898:
/* 80304898 003004F8  57 C0 23 36 */	rlwinm r0, r30, 4, 0xc, 0x1b
/* 8030489C 003004FC  38 80 00 00 */	li r4, 0
/* 803048A0 00300500  7C 65 02 14 */	add r3, r5, r0
/* 803048A4 00300504  80 03 00 80 */	lwz r0, 0x80(r3)
/* 803048A8 00300508  2C 00 00 00 */	cmpwi r0, 0
/* 803048AC 0030050C  40 82 00 08 */	bne lbl_803048B4
/* 803048B0 00300510  38 80 FF F3 */	li r4, -13
lbl_803048B4:
/* 803048B4 00300514  2C 04 00 00 */	cmpwi r4, 0
/* 803048B8 00300518  40 82 01 C4 */	bne lbl_80304A7C
/* 803048BC 0030051C  2C 1D 00 00 */	cmpwi r29, 0
/* 803048C0 00300520  41 82 01 BC */	beq lbl_80304A7C
/* 803048C4 00300524  57 C0 04 3E */	clrlwi r0, r30, 0x10
/* 803048C8 00300528  7C 00 30 40 */	cmplw r0, r6
/* 803048CC 0030052C  40 80 00 0C */	bge lbl_803048D8
/* 803048D0 00300530  28 00 FF FF */	cmplwi r0, 0xffff
/* 803048D4 00300534  40 82 00 0C */	bne lbl_803048E0
lbl_803048D8:
/* 803048D8 00300538  38 60 FF FD */	li r3, -3
/* 803048DC 0030053C  48 00 00 20 */	b lbl_803048FC
lbl_803048E0:
/* 803048E0 00300540  57 C0 23 36 */	rlwinm r0, r30, 4, 0xc, 0x1b
/* 803048E4 00300544  38 60 00 00 */	li r3, 0
/* 803048E8 00300548  7C 85 02 14 */	add r4, r5, r0
/* 803048EC 0030054C  80 04 00 80 */	lwz r0, 0x80(r4)
/* 803048F0 00300550  2C 00 00 00 */	cmpwi r0, 0
/* 803048F4 00300554  40 82 00 08 */	bne lbl_803048FC
/* 803048F8 00300558  38 60 FF F3 */	li r3, -13
lbl_803048FC:
/* 803048FC 0030055C  2C 03 00 00 */	cmpwi r3, 0
/* 80304900 00300560  40 80 00 08 */	bge lbl_80304908
/* 80304904 00300564  48 00 00 78 */	b lbl_8030497C
lbl_80304908:
/* 80304908 00300568  80 8D 8C C0 */	lwz r4, lbl_8063DF80-_SDA_BASE_(r13)
/* 8030490C 0030056C  38 61 00 08 */	addi r3, r1, 8
/* 80304910 00300570  38 A0 00 0A */	li r5, 0xa
/* 80304914 00300574  4B FF D2 35 */	bl NWC24FOpen
/* 80304918 00300578  2C 03 00 00 */	cmpwi r3, 0
/* 8030491C 0030057C  40 80 00 08 */	bge lbl_80304924
/* 80304920 00300580  48 00 00 5C */	b lbl_8030497C
lbl_80304924:
/* 80304924 00300584  57 C4 49 EC */	rlwinm r4, r30, 9, 7, 0x16
/* 80304928 00300588  38 61 00 08 */	addi r3, r1, 8
/* 8030492C 0030058C  38 84 08 00 */	addi r4, r4, 0x800
/* 80304930 00300590  38 A0 00 00 */	li r5, 0
/* 80304934 00300594  4B FF D6 F9 */	bl NWC24FSeek
/* 80304938 00300598  2C 03 00 00 */	cmpwi r3, 0
/* 8030493C 0030059C  40 80 00 0C */	bge lbl_80304948
/* 80304940 003005A0  7C 7A 1B 78 */	mr r26, r3
/* 80304944 003005A4  48 00 00 24 */	b lbl_80304968
lbl_80304948:
/* 80304948 003005A8  7F E3 FB 78 */	mr r3, r31
/* 8030494C 003005AC  38 A1 00 08 */	addi r5, r1, 8
/* 80304950 003005B0  38 80 02 00 */	li r4, 0x200
/* 80304954 003005B4  4B FF D8 C5 */	bl NWC24FRead
/* 80304958 003005B8  2C 03 00 00 */	cmpwi r3, 0
/* 8030495C 003005BC  3B 40 00 00 */	li r26, 0
/* 80304960 003005C0  40 80 00 08 */	bge lbl_80304968
/* 80304964 003005C4  7C 7A 1B 78 */	mr r26, r3
lbl_80304968:
/* 80304968 003005C8  38 61 00 08 */	addi r3, r1, 8
/* 8030496C 003005CC  4B FF D5 2D */	bl NWC24FClose
/* 80304970 003005D0  2C 1A 00 00 */	cmpwi r26, 0
/* 80304974 003005D4  41 82 00 08 */	beq lbl_8030497C
/* 80304978 003005D8  7F 43 D3 78 */	mr r3, r26
lbl_8030497C:
/* 8030497C 003005DC  2C 03 00 00 */	cmpwi r3, 0
/* 80304980 003005E0  40 80 00 74 */	bge lbl_803049F4
/* 80304984 003005E4  80 6D AF 90 */	lwz r3, lbl_80640250-_SDA_BASE_(r13)
/* 80304988 003005E8  2C 1F 00 00 */	cmpwi r31, 0
/* 8030498C 003005EC  38 63 30 00 */	addi r3, r3, 0x3000
/* 80304990 003005F0  40 82 00 0C */	bne lbl_8030499C
/* 80304994 003005F4  38 00 FF FD */	li r0, -3
/* 80304998 003005F8  48 00 00 38 */	b lbl_803049D0
lbl_8030499C:
/* 8030499C 003005FC  2C 03 00 00 */	cmpwi r3, 0
/* 803049A0 00300600  40 82 00 0C */	bne lbl_803049AC
/* 803049A4 00300604  38 00 FF F7 */	li r0, -9
/* 803049A8 00300608  48 00 00 28 */	b lbl_803049D0
lbl_803049AC:
/* 803049AC 0030060C  A0 81 00 A8 */	lhz r4, 0xa8(r1)
/* 803049B0 00300610  28 04 FF FF */	cmplwi r4, 0xffff
/* 803049B4 00300614  41 82 00 18 */	beq lbl_803049CC
/* 803049B8 00300618  A0 03 00 10 */	lhz r0, 0x10(r3)
/* 803049BC 0030061C  7C 04 00 40 */	cmplw r4, r0
/* 803049C0 00300620  41 80 00 0C */	blt lbl_803049CC
/* 803049C4 00300624  38 00 FF FD */	li r0, -3
/* 803049C8 00300628  48 00 00 08 */	b lbl_803049D0
lbl_803049CC:
/* 803049CC 0030062C  38 00 00 00 */	li r0, 0
lbl_803049D0:
/* 803049D0 00300630  2C 00 00 00 */	cmpwi r0, 0
/* 803049D4 00300634  40 82 00 A8 */	bne lbl_80304A7C
/* 803049D8 00300638  7F E3 FB 78 */	mr r3, r31
/* 803049DC 0030063C  48 00 01 C1 */	bl DeleteDlTask
/* 803049E0 00300640  2C 03 00 00 */	cmpwi r3, 0
/* 803049E4 00300644  41 80 00 98 */	blt lbl_80304A7C
/* 803049E8 00300648  38 1B FF FF */	addi r0, r27, -1
/* 803049EC 0030064C  B0 01 00 A8 */	sth r0, 0xa8(r1)
/* 803049F0 00300650  48 00 00 8C */	b lbl_80304A7C
lbl_803049F4:
/* 803049F4 00300654  80 8D AF 90 */	lwz r4, lbl_80640250-_SDA_BASE_(r13)
/* 803049F8 00300658  57 C3 04 3E */	clrlwi r3, r30, 0x10
/* 803049FC 0030065C  38 84 30 00 */	addi r4, r4, 0x3000
/* 80304A00 00300660  A0 04 00 12 */	lhz r0, 0x12(r4)
/* 80304A04 00300664  7C 03 00 40 */	cmplw r3, r0
/* 80304A08 00300668  41 80 00 74 */	blt lbl_80304A7C
/* 80304A0C 0030066C  A8 01 00 C0 */	lha r0, 0xc0(r1)
/* 80304A10 00300670  2C 00 00 00 */	cmpwi r0, 0
/* 80304A14 00300674  40 82 00 68 */	bne lbl_80304A7C
/* 80304A18 00300678  2C 1F 00 00 */	cmpwi r31, 0
/* 80304A1C 0030067C  40 82 00 0C */	bne lbl_80304A28
/* 80304A20 00300680  38 00 FF FD */	li r0, -3
/* 80304A24 00300684  48 00 00 38 */	b lbl_80304A5C
lbl_80304A28:
/* 80304A28 00300688  2C 04 00 00 */	cmpwi r4, 0
/* 80304A2C 0030068C  40 82 00 0C */	bne lbl_80304A38
/* 80304A30 00300690  38 00 FF F7 */	li r0, -9
/* 80304A34 00300694  48 00 00 28 */	b lbl_80304A5C
lbl_80304A38:
/* 80304A38 00300698  A0 61 00 A8 */	lhz r3, 0xa8(r1)
/* 80304A3C 0030069C  28 03 FF FF */	cmplwi r3, 0xffff
/* 80304A40 003006A0  41 82 00 18 */	beq lbl_80304A58
/* 80304A44 003006A4  A0 04 00 10 */	lhz r0, 0x10(r4)
/* 80304A48 003006A8  7C 03 00 40 */	cmplw r3, r0
/* 80304A4C 003006AC  41 80 00 0C */	blt lbl_80304A58
/* 80304A50 003006B0  38 00 FF FD */	li r0, -3
/* 80304A54 003006B4  48 00 00 08 */	b lbl_80304A5C
lbl_80304A58:
/* 80304A58 003006B8  38 00 00 00 */	li r0, 0
lbl_80304A5C:
/* 80304A5C 003006BC  2C 00 00 00 */	cmpwi r0, 0
/* 80304A60 003006C0  40 82 00 1C */	bne lbl_80304A7C
/* 80304A64 003006C4  7F E3 FB 78 */	mr r3, r31
/* 80304A68 003006C8  48 00 01 35 */	bl DeleteDlTask
/* 80304A6C 003006CC  2C 03 00 00 */	cmpwi r3, 0
/* 80304A70 003006D0  41 80 00 0C */	blt lbl_80304A7C
/* 80304A74 003006D4  38 1B FF FF */	addi r0, r27, -1
/* 80304A78 003006D8  B0 01 00 A8 */	sth r0, 0xa8(r1)
lbl_80304A7C:
/* 80304A7C 003006DC  3B DE 00 01 */	addi r30, r30, 1
lbl_80304A80:
/* 80304A80 003006E0  A0 1C 00 10 */	lhz r0, 0x10(r28)
/* 80304A84 003006E4  57 C3 04 3E */	clrlwi r3, r30, 0x10
/* 80304A88 003006E8  7C 03 00 40 */	cmplw r3, r0
/* 80304A8C 003006EC  41 80 FD E4 */	blt lbl_80304870
/* 80304A90 003006F0  39 61 02 C0 */	addi r11, r1, 0x2c0
/* 80304A94 003006F4  38 60 00 00 */	li r3, 0
/* 80304A98 003006F8  4B EC 26 D9 */	bl _restgpr_26
/* 80304A9C 003006FC  80 01 02 C4 */	lwz r0, 0x2c4(r1)
/* 80304AA0 00300700  7C 08 03 A6 */	mtlr r0
/* 80304AA4 00300704  38 21 02 C0 */	addi r1, r1, 0x2c0
/* 80304AA8 00300708  4E 80 00 20 */	blr

.global NWC24iLoadDlHeader
NWC24iLoadDlHeader:
/* 80304AAC 0030070C  94 21 FF 50 */	stwu r1, -0xb0(r1)
/* 80304AB0 00300710  7C 08 02 A6 */	mflr r0
/* 80304AB4 00300714  38 A0 00 02 */	li r5, 2
/* 80304AB8 00300718  90 01 00 B4 */	stw r0, 0xb4(r1)
/* 80304ABC 0030071C  38 61 00 0C */	addi r3, r1, 0xc
/* 80304AC0 00300720  93 E1 00 AC */	stw r31, 0xac(r1)
/* 80304AC4 00300724  3B E0 00 00 */	li r31, 0
/* 80304AC8 00300728  80 8D 8C C0 */	lwz r4, lbl_8063DF80-_SDA_BASE_(r13)
/* 80304ACC 0030072C  93 E1 00 08 */	stw r31, 8(r1)
/* 80304AD0 00300730  4B FF D0 79 */	bl NWC24FOpen
/* 80304AD4 00300734  2C 03 00 00 */	cmpwi r3, 0
/* 80304AD8 00300738  40 80 00 08 */	bge lbl_80304AE0
/* 80304ADC 0030073C  48 00 00 AC */	b lbl_80304B88
lbl_80304AE0:
/* 80304AE0 00300740  38 61 00 0C */	addi r3, r1, 0xc
/* 80304AE4 00300744  38 80 00 00 */	li r4, 0
/* 80304AE8 00300748  38 A0 00 00 */	li r5, 0
/* 80304AEC 0030074C  4B FF D5 41 */	bl NWC24FSeek
/* 80304AF0 00300750  2C 03 00 00 */	cmpwi r3, 0
/* 80304AF4 00300754  40 80 00 08 */	bge lbl_80304AFC
/* 80304AF8 00300758  48 00 00 28 */	b lbl_80304B20
lbl_80304AFC:
/* 80304AFC 0030075C  80 6D AF 90 */	lwz r3, lbl_80640250-_SDA_BASE_(r13)
/* 80304B00 00300760  38 A1 00 0C */	addi r5, r1, 0xc
/* 80304B04 00300764  38 80 08 00 */	li r4, 0x800
/* 80304B08 00300768  38 63 30 00 */	addi r3, r3, 0x3000
/* 80304B0C 0030076C  4B FF D7 0D */	bl NWC24FRead
/* 80304B10 00300770  2C 03 00 00 */	cmpwi r3, 0
/* 80304B14 00300774  40 80 00 08 */	bge lbl_80304B1C
/* 80304B18 00300778  7C 7F 1B 78 */	mr r31, r3
lbl_80304B1C:
/* 80304B1C 0030077C  7F E3 FB 78 */	mr r3, r31
lbl_80304B20:
/* 80304B20 00300780  2C 03 00 00 */	cmpwi r3, 0
/* 80304B24 00300784  40 80 00 08 */	bge lbl_80304B2C
/* 80304B28 00300788  48 00 00 60 */	b lbl_80304B88
lbl_80304B2C:
/* 80304B2C 0030078C  38 61 00 0C */	addi r3, r1, 0xc
/* 80304B30 00300790  38 81 00 08 */	addi r4, r1, 8
/* 80304B34 00300794  4B FF DA 85 */	bl NWC24FGetLength
/* 80304B38 00300798  2C 03 00 00 */	cmpwi r3, 0
/* 80304B3C 0030079C  7C 7F 1B 78 */	mr r31, r3
/* 80304B40 003007A0  41 80 00 34 */	blt lbl_80304B74
/* 80304B44 003007A4  80 6D AF 90 */	lwz r3, lbl_80640250-_SDA_BASE_(r13)
/* 80304B48 003007A8  A0 83 30 10 */	lhz r4, 0x3010(r3)
/* 80304B4C 003007AC  28 04 00 01 */	cmplwi r4, 1
/* 80304B50 003007B0  41 80 00 18 */	blt lbl_80304B68
/* 80304B54 003007B4  A0 03 30 12 */	lhz r0, 0x3012(r3)
/* 80304B58 003007B8  28 00 00 01 */	cmplwi r0, 1
/* 80304B5C 003007BC  41 80 00 0C */	blt lbl_80304B68
/* 80304B60 003007C0  7C 04 00 40 */	cmplw r4, r0
/* 80304B64 003007C4  40 80 00 0C */	bge lbl_80304B70
lbl_80304B68:
/* 80304B68 003007C8  3B E0 FF F2 */	li r31, -14
/* 80304B6C 003007CC  48 00 00 08 */	b lbl_80304B74
lbl_80304B70:
/* 80304B70 003007D0  3B E0 00 00 */	li r31, 0
lbl_80304B74:
/* 80304B74 003007D4  38 61 00 0C */	addi r3, r1, 0xc
/* 80304B78 003007D8  4B FF D3 21 */	bl NWC24FClose
/* 80304B7C 003007DC  2C 1F 00 00 */	cmpwi r31, 0
/* 80304B80 003007E0  41 82 00 08 */	beq lbl_80304B88
/* 80304B84 003007E4  7F E3 FB 78 */	mr r3, r31
lbl_80304B88:
/* 80304B88 003007E8  80 01 00 B4 */	lwz r0, 0xb4(r1)
/* 80304B8C 003007EC  83 E1 00 AC */	lwz r31, 0xac(r1)
/* 80304B90 003007F0  7C 08 03 A6 */	mtlr r0
/* 80304B94 003007F4  38 21 00 B0 */	addi r1, r1, 0xb0
/* 80304B98 003007F8  4E 80 00 20 */	blr

.global DeleteDlTask
DeleteDlTask:
/* 80304B9C 003007FC  94 21 FF 40 */	stwu r1, -0xc0(r1)
/* 80304BA0 00300800  7C 08 02 A6 */	mflr r0
/* 80304BA4 00300804  38 A0 00 04 */	li r5, 4
/* 80304BA8 00300808  90 01 00 C4 */	stw r0, 0xc4(r1)
/* 80304BAC 0030080C  93 E1 00 BC */	stw r31, 0xbc(r1)
/* 80304BB0 00300810  93 C1 00 B8 */	stw r30, 0xb8(r1)
/* 80304BB4 00300814  93 A1 00 B4 */	stw r29, 0xb4(r1)
/* 80304BB8 00300818  7C 7D 1B 78 */	mr r29, r3
/* 80304BBC 0030081C  38 61 00 08 */	addi r3, r1, 8
/* 80304BC0 00300820  80 8D 8C C0 */	lwz r4, lbl_8063DF80-_SDA_BASE_(r13)
/* 80304BC4 00300824  4B FF CF 85 */	bl NWC24FOpen
/* 80304BC8 00300828  2C 03 00 00 */	cmpwi r3, 0
/* 80304BCC 0030082C  40 80 00 08 */	bge lbl_80304BD4
/* 80304BD0 00300830  48 00 01 30 */	b lbl_80304D00
lbl_80304BD4:
/* 80304BD4 00300834  80 6D AF 90 */	lwz r3, lbl_80640250-_SDA_BASE_(r13)
/* 80304BD8 00300838  38 80 00 00 */	li r4, 0
/* 80304BDC 0030083C  A3 FD 00 00 */	lhz r31, 0(r29)
/* 80304BE0 00300840  38 A0 02 00 */	li r5, 0x200
/* 80304BE4 00300844  3B C3 38 00 */	addi r30, r3, 0x3800
/* 80304BE8 00300848  7F C3 F3 78 */	mr r3, r30
/* 80304BEC 0030084C  4B CF F5 19 */	bl memset
/* 80304BF0 00300850  38 60 00 FF */	li r3, 0xff
/* 80304BF4 00300854  57 E0 23 36 */	rlwinm r0, r31, 4, 0xc, 0x1b
/* 80304BF8 00300858  98 7E 00 02 */	stb r3, 2(r30)
/* 80304BFC 0030085C  38 80 00 00 */	li r4, 0
/* 80304C00 00300860  38 A0 00 10 */	li r5, 0x10
/* 80304C04 00300864  B3 FE 00 00 */	sth r31, 0(r30)
/* 80304C08 00300868  80 6D AF 90 */	lwz r3, lbl_80640250-_SDA_BASE_(r13)
/* 80304C0C 0030086C  7C 63 02 14 */	add r3, r3, r0
/* 80304C10 00300870  38 63 30 80 */	addi r3, r3, 0x3080
/* 80304C14 00300874  4B CF F4 F1 */	bl memset
/* 80304C18 00300878  A0 1E 00 00 */	lhz r0, 0(r30)
/* 80304C1C 0030087C  38 61 00 08 */	addi r3, r1, 8
/* 80304C20 00300880  38 A0 00 00 */	li r5, 0
/* 80304C24 00300884  54 04 48 2C */	slwi r4, r0, 9
/* 80304C28 00300888  38 84 08 00 */	addi r4, r4, 0x800
/* 80304C2C 0030088C  4B FF D4 01 */	bl NWC24FSeek
/* 80304C30 00300890  2C 03 00 00 */	cmpwi r3, 0
/* 80304C34 00300894  40 80 00 08 */	bge lbl_80304C3C
/* 80304C38 00300898  48 00 00 40 */	b lbl_80304C78
lbl_80304C3C:
/* 80304C3C 0030089C  80 6D AF 90 */	lwz r3, lbl_80640250-_SDA_BASE_(r13)
/* 80304C40 003008A0  7F C4 F3 78 */	mr r4, r30
/* 80304C44 003008A4  38 A0 02 00 */	li r5, 0x200
/* 80304C48 003008A8  38 63 38 00 */	addi r3, r3, 0x3800
/* 80304C4C 003008AC  4B CF F3 B5 */	bl memcpy
/* 80304C50 003008B0  80 6D AF 90 */	lwz r3, lbl_80640250-_SDA_BASE_(r13)
/* 80304C54 003008B4  38 A1 00 08 */	addi r5, r1, 8
/* 80304C58 003008B8  38 80 02 00 */	li r4, 0x200
/* 80304C5C 003008BC  38 63 38 00 */	addi r3, r3, 0x3800
/* 80304C60 003008C0  4B FF D7 85 */	bl NWC24FWrite
/* 80304C64 003008C4  2C 03 00 00 */	cmpwi r3, 0
/* 80304C68 003008C8  38 00 00 00 */	li r0, 0
/* 80304C6C 003008CC  40 80 00 08 */	bge lbl_80304C74
/* 80304C70 003008D0  7C 60 1B 78 */	mr r0, r3
lbl_80304C74:
/* 80304C74 003008D4  7C 03 03 78 */	mr r3, r0
lbl_80304C78:
/* 80304C78 003008D8  2C 03 00 00 */	cmpwi r3, 0
/* 80304C7C 003008DC  7C 7E 1B 78 */	mr r30, r3
/* 80304C80 003008E0  41 80 00 6C */	blt lbl_80304CEC
/* 80304C84 003008E4  A0 1D 00 00 */	lhz r0, 0(r29)
/* 80304C88 003008E8  38 80 00 00 */	li r4, 0
/* 80304C8C 003008EC  80 6D AF 90 */	lwz r3, lbl_80640250-_SDA_BASE_(r13)
/* 80304C90 003008F0  38 A0 00 10 */	li r5, 0x10
/* 80304C94 003008F4  54 00 20 36 */	slwi r0, r0, 4
/* 80304C98 003008F8  7C 63 02 14 */	add r3, r3, r0
/* 80304C9C 003008FC  38 63 30 80 */	addi r3, r3, 0x3080
/* 80304CA0 00300900  4B CF F4 65 */	bl memset
/* 80304CA4 00300904  38 61 00 08 */	addi r3, r1, 8
/* 80304CA8 00300908  38 80 00 00 */	li r4, 0
/* 80304CAC 0030090C  38 A0 00 00 */	li r5, 0
/* 80304CB0 00300910  4B FF D3 7D */	bl NWC24FSeek
/* 80304CB4 00300914  2C 03 00 00 */	cmpwi r3, 0
/* 80304CB8 00300918  40 80 00 08 */	bge lbl_80304CC0
/* 80304CBC 0030091C  48 00 00 2C */	b lbl_80304CE8
lbl_80304CC0:
/* 80304CC0 00300920  80 6D AF 90 */	lwz r3, lbl_80640250-_SDA_BASE_(r13)
/* 80304CC4 00300924  38 A1 00 08 */	addi r5, r1, 8
/* 80304CC8 00300928  38 80 08 00 */	li r4, 0x800
/* 80304CCC 0030092C  38 63 30 00 */	addi r3, r3, 0x3000
/* 80304CD0 00300930  4B FF D7 15 */	bl NWC24FWrite
/* 80304CD4 00300934  2C 03 00 00 */	cmpwi r3, 0
/* 80304CD8 00300938  38 00 00 00 */	li r0, 0
/* 80304CDC 0030093C  40 80 00 08 */	bge lbl_80304CE4
/* 80304CE0 00300940  7C 60 1B 78 */	mr r0, r3
lbl_80304CE4:
/* 80304CE4 00300944  7C 03 03 78 */	mr r3, r0
lbl_80304CE8:
/* 80304CE8 00300948  7C 7E 1B 78 */	mr r30, r3
lbl_80304CEC:
/* 80304CEC 0030094C  38 61 00 08 */	addi r3, r1, 8
/* 80304CF0 00300950  4B FF D1 A9 */	bl NWC24FClose
/* 80304CF4 00300954  2C 1E 00 00 */	cmpwi r30, 0
/* 80304CF8 00300958  41 82 00 08 */	beq lbl_80304D00
/* 80304CFC 0030095C  7F C3 F3 78 */	mr r3, r30
lbl_80304D00:
/* 80304D00 00300960  80 01 00 C4 */	lwz r0, 0xc4(r1)
/* 80304D04 00300964  83 E1 00 BC */	lwz r31, 0xbc(r1)
/* 80304D08 00300968  83 C1 00 B8 */	lwz r30, 0xb8(r1)
/* 80304D0C 0030096C  83 A1 00 B4 */	lwz r29, 0xb4(r1)
/* 80304D10 00300970  7C 08 03 A6 */	mtlr r0
/* 80304D14 00300974  38 21 00 C0 */	addi r1, r1, 0xc0
/* 80304D18 00300978  4E 80 00 20 */	blr