summaryrefslogtreecommitdiff
path: root/asm/SDK/VF/pdm_mbr.s
blob: 2488bcc475025ce97fd5e69e64386f1f2c5948e9 (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
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
.include "macros.inc"

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

.global VFipdm_mbr_get_table
VFipdm_mbr_get_table:
/* 803087F0 00304450  2C 03 00 00 */	cmpwi r3, 0
/* 803087F4 00304454  41 82 00 0C */	beq lbl_80308800
/* 803087F8 00304458  2C 05 00 00 */	cmpwi r5, 0
/* 803087FC 0030445C  40 82 00 0C */	bne lbl_80308808
lbl_80308800:
/* 80308800 00304460  38 60 00 01 */	li r3, 1
/* 80308804 00304464  4E 80 00 20 */	blr
lbl_80308808:
/* 80308808 00304468  2C 04 00 00 */	cmpwi r4, 0
/* 8030880C 0030446C  40 82 00 14 */	bne lbl_80308820
/* 80308810 00304470  38 00 00 00 */	li r0, 0
/* 80308814 00304474  90 05 00 04 */	stw r0, 4(r5)
/* 80308818 00304478  90 05 00 00 */	stw r0, 0(r5)
/* 8030881C 0030447C  48 00 00 18 */	b lbl_80308834
lbl_80308820:
/* 80308820 00304480  80 05 00 04 */	lwz r0, 4(r5)
/* 80308824 00304484  2C 00 00 00 */	cmpwi r0, 0
/* 80308828 00304488  40 82 00 08 */	bne lbl_80308830
/* 8030882C 0030448C  90 85 00 04 */	stw r4, 4(r5)
lbl_80308830:
/* 80308830 00304490  90 85 00 00 */	stw r4, 0(r5)
lbl_80308834:
/* 80308834 00304494  38 00 00 04 */	li r0, 4
/* 80308838 00304498  38 63 01 BE */	addi r3, r3, 0x1be
/* 8030883C 0030449C  7C 09 03 A6 */	mtctr r0
lbl_80308840:
/* 80308840 003044A0  88 03 00 00 */	lbz r0, 0(r3)
/* 80308844 003044A4  98 05 00 08 */	stb r0, 8(r5)
/* 80308848 003044A8  88 03 00 04 */	lbz r0, 4(r3)
/* 8030884C 003044AC  98 05 00 09 */	stb r0, 9(r5)
/* 80308850 003044B0  88 03 00 01 */	lbz r0, 1(r3)
/* 80308854 003044B4  98 05 00 0C */	stb r0, 0xc(r5)
/* 80308858 003044B8  88 83 00 03 */	lbz r4, 3(r3)
/* 8030885C 003044BC  88 03 00 02 */	lbz r0, 2(r3)
/* 80308860 003044C0  50 80 44 2E */	rlwimi r0, r4, 8, 0x10, 0x17
/* 80308864 003044C4  54 06 15 AE */	rlwinm r6, r0, 2, 0x16, 0x17
/* 80308868 003044C8  7C 04 46 70 */	srawi r4, r0, 8
/* 8030886C 003044CC  54 00 06 BE */	clrlwi r0, r0, 0x1a
/* 80308870 003044D0  7C 86 22 14 */	add r4, r6, r4
/* 80308874 003044D4  B0 85 00 0A */	sth r4, 0xa(r5)
/* 80308878 003044D8  98 05 00 0D */	stb r0, 0xd(r5)
/* 8030887C 003044DC  88 83 00 06 */	lbz r4, 6(r3)
/* 80308880 003044E0  88 03 00 05 */	lbz r0, 5(r3)
/* 80308884 003044E4  50 80 44 2E */	rlwimi r0, r4, 8, 0x10, 0x17
/* 80308888 003044E8  98 05 00 10 */	stb r0, 0x10(r5)
/* 8030888C 003044EC  88 83 00 07 */	lbz r4, 7(r3)
/* 80308890 003044F0  88 03 00 06 */	lbz r0, 6(r3)
/* 80308894 003044F4  50 80 44 2E */	rlwimi r0, r4, 8, 0x10, 0x17
/* 80308898 003044F8  54 06 15 AE */	rlwinm r6, r0, 2, 0x16, 0x17
/* 8030889C 003044FC  7C 04 46 70 */	srawi r4, r0, 8
/* 803088A0 00304500  54 00 06 BE */	clrlwi r0, r0, 0x1a
/* 803088A4 00304504  7C 86 22 14 */	add r4, r6, r4
/* 803088A8 00304508  B0 85 00 0E */	sth r4, 0xe(r5)
/* 803088AC 0030450C  98 05 00 11 */	stb r0, 0x11(r5)
/* 803088B0 00304510  88 83 00 09 */	lbz r4, 9(r3)
/* 803088B4 00304514  88 03 00 08 */	lbz r0, 8(r3)
/* 803088B8 00304518  50 80 44 2E */	rlwimi r0, r4, 8, 0x10, 0x17
/* 803088BC 0030451C  88 C3 00 0A */	lbz r6, 0xa(r3)
/* 803088C0 00304520  88 83 00 0B */	lbz r4, 0xb(r3)
/* 803088C4 00304524  50 C0 82 1E */	rlwimi r0, r6, 0x10, 8, 0xf
/* 803088C8 00304528  50 80 C0 0E */	rlwimi r0, r4, 0x18, 0, 7
/* 803088CC 0030452C  90 05 00 14 */	stw r0, 0x14(r5)
/* 803088D0 00304530  88 C3 00 0E */	lbz r6, 0xe(r3)
/* 803088D4 00304534  88 83 00 0D */	lbz r4, 0xd(r3)
/* 803088D8 00304538  88 03 00 0C */	lbz r0, 0xc(r3)
/* 803088DC 0030453C  88 E3 00 0F */	lbz r7, 0xf(r3)
/* 803088E0 00304540  50 80 44 2E */	rlwimi r0, r4, 8, 0x10, 0x17
/* 803088E4 00304544  50 C0 82 1E */	rlwimi r0, r6, 0x10, 8, 0xf
/* 803088E8 00304548  38 63 00 10 */	addi r3, r3, 0x10
/* 803088EC 0030454C  50 E0 C0 0E */	rlwimi r0, r7, 0x18, 0, 7
/* 803088F0 00304550  90 05 00 18 */	stw r0, 0x18(r5)
/* 803088F4 00304554  38 A5 00 14 */	addi r5, r5, 0x14
/* 803088F8 00304558  42 00 FF 48 */	bdnz lbl_80308840
/* 803088FC 0030455C  38 60 00 00 */	li r3, 0
/* 80308900 00304560  4E 80 00 20 */	blr

.global VFipdm_mbr_get_mbr_part_table
VFipdm_mbr_get_mbr_part_table:
/* 80308904 00304564  94 21 FD E0 */	stwu r1, -0x220(r1)
/* 80308908 00304568  7C 08 02 A6 */	mflr r0
/* 8030890C 0030456C  2C 03 00 00 */	cmpwi r3, 0
/* 80308910 00304570  90 01 02 24 */	stw r0, 0x224(r1)
/* 80308914 00304574  93 E1 02 1C */	stw r31, 0x21c(r1)
/* 80308918 00304578  7C 9F 23 78 */	mr r31, r4
/* 8030891C 0030457C  93 C1 02 18 */	stw r30, 0x218(r1)
/* 80308920 00304580  7C 7E 1B 78 */	mr r30, r3
/* 80308924 00304584  41 82 00 0C */	beq lbl_80308930
/* 80308928 00304588  2C 04 00 00 */	cmpwi r4, 0
/* 8030892C 0030458C  40 82 00 0C */	bne lbl_80308938
lbl_80308930:
/* 80308930 00304590  38 60 00 01 */	li r3, 1
/* 80308934 00304594  48 00 00 78 */	b lbl_803089AC
lbl_80308938:
/* 80308938 00304598  4B FF E4 65 */	bl VFipdm_disk_check_disk_handle
/* 8030893C 0030459C  2C 03 00 00 */	cmpwi r3, 0
/* 80308940 003045A0  41 82 00 08 */	beq lbl_80308948
/* 80308944 003045A4  48 00 00 68 */	b lbl_803089AC
lbl_80308948:
/* 80308948 003045A8  7F C3 F3 78 */	mr r3, r30
/* 8030894C 003045AC  38 81 00 10 */	addi r4, r1, 0x10
/* 80308950 003045B0  39 01 00 0C */	addi r8, r1, 0xc
/* 80308954 003045B4  38 A0 00 00 */	li r5, 0
/* 80308958 003045B8  38 C0 00 01 */	li r6, 1
/* 8030895C 003045BC  38 E0 02 00 */	li r7, 0x200
/* 80308960 003045C0  4B FF E7 89 */	bl VFipdm_disk_physical_read
/* 80308964 003045C4  2C 03 00 00 */	cmpwi r3, 0
/* 80308968 003045C8  41 82 00 08 */	beq lbl_80308970
/* 8030896C 003045CC  48 00 00 40 */	b lbl_803089AC
lbl_80308970:
/* 80308970 003045D0  7F C3 F3 78 */	mr r3, r30
/* 80308974 003045D4  38 81 00 10 */	addi r4, r1, 0x10
/* 80308978 003045D8  38 A1 00 08 */	addi r5, r1, 8
/* 8030897C 003045DC  48 00 02 19 */	bl VFipdm_mbr_check_master_boot_record
/* 80308980 003045E0  80 01 00 08 */	lwz r0, 8(r1)
/* 80308984 003045E4  2C 00 00 00 */	cmpwi r0, 0
/* 80308988 003045E8  41 82 00 18 */	beq lbl_803089A0
/* 8030898C 003045EC  7F E5 FB 78 */	mr r5, r31
/* 80308990 003045F0  38 61 00 10 */	addi r3, r1, 0x10
/* 80308994 003045F4  38 80 00 00 */	li r4, 0
/* 80308998 003045F8  4B FF FE 59 */	bl VFipdm_mbr_get_table
/* 8030899C 003045FC  48 00 00 0C */	b lbl_803089A8
lbl_803089A0:
/* 803089A0 00304600  38 60 00 05 */	li r3, 5
/* 803089A4 00304604  48 00 00 08 */	b lbl_803089AC
lbl_803089A8:
/* 803089A8 00304608  38 60 00 00 */	li r3, 0
lbl_803089AC:
/* 803089AC 0030460C  80 01 02 24 */	lwz r0, 0x224(r1)
/* 803089B0 00304610  83 E1 02 1C */	lwz r31, 0x21c(r1)
/* 803089B4 00304614  83 C1 02 18 */	lwz r30, 0x218(r1)
/* 803089B8 00304618  7C 08 03 A6 */	mtlr r0
/* 803089BC 0030461C  38 21 02 20 */	addi r1, r1, 0x220
/* 803089C0 00304620  4E 80 00 20 */	blr

.global VFipdm_mbr_get_epbr_part_table
VFipdm_mbr_get_epbr_part_table:
/* 803089C4 00304624  94 21 FD C0 */	stwu r1, -0x240(r1)
/* 803089C8 00304628  7C 08 02 A6 */	mflr r0
/* 803089CC 0030462C  2C 03 00 00 */	cmpwi r3, 0
/* 803089D0 00304630  90 01 02 44 */	stw r0, 0x244(r1)
/* 803089D4 00304634  93 E1 02 3C */	stw r31, 0x23c(r1)
/* 803089D8 00304638  93 C1 02 38 */	stw r30, 0x238(r1)
/* 803089DC 0030463C  7C 9E 23 78 */	mr r30, r4
/* 803089E0 00304640  93 A1 02 34 */	stw r29, 0x234(r1)
/* 803089E4 00304644  7C 7D 1B 78 */	mr r29, r3
/* 803089E8 00304648  41 82 00 0C */	beq lbl_803089F4
/* 803089EC 0030464C  2C 04 00 00 */	cmpwi r4, 0
/* 803089F0 00304650  40 82 00 0C */	bne lbl_803089FC
lbl_803089F4:
/* 803089F4 00304654  38 60 00 01 */	li r3, 1
/* 803089F8 00304658  48 00 01 80 */	b lbl_80308B78
lbl_803089FC:
/* 803089FC 0030465C  4B FF E3 A1 */	bl VFipdm_disk_check_disk_handle
/* 80308A00 00304660  2C 03 00 00 */	cmpwi r3, 0
/* 80308A04 00304664  41 82 00 08 */	beq lbl_80308A0C
/* 80308A08 00304668  48 00 01 70 */	b lbl_80308B78
lbl_80308A0C:
/* 80308A0C 0030466C  3B E0 00 00 */	li r31, 0
/* 80308A10 00304670  38 A0 00 00 */	li r5, 0
/* 80308A14 00304674  1C 1F 00 14 */	mulli r0, r31, 0x14
/* 80308A18 00304678  7C 7E 02 14 */	add r3, r30, r0
/* 80308A1C 0030467C  88 63 00 09 */	lbz r3, 9(r3)
/* 80308A20 00304680  28 03 00 05 */	cmplwi r3, 5
/* 80308A24 00304684  41 82 00 0C */	beq lbl_80308A30
/* 80308A28 00304688  28 03 00 0F */	cmplwi r3, 0xf
/* 80308A2C 0030468C  40 82 00 18 */	bne lbl_80308A44
lbl_80308A30:
/* 80308A30 00304690  7C 7E 02 14 */	add r3, r30, r0
/* 80308A34 00304694  80 9E 00 04 */	lwz r4, 4(r30)
/* 80308A38 00304698  80 03 00 14 */	lwz r0, 0x14(r3)
/* 80308A3C 0030469C  7F E4 02 14 */	add r31, r4, r0
/* 80308A40 003046A0  48 00 00 A4 */	b lbl_80308AE4
lbl_80308A44:
/* 80308A44 003046A4  38 A0 00 01 */	li r5, 1
/* 80308A48 003046A8  1C 05 00 14 */	mulli r0, r5, 0x14
/* 80308A4C 003046AC  7C 7E 02 14 */	add r3, r30, r0
/* 80308A50 003046B0  88 63 00 09 */	lbz r3, 9(r3)
/* 80308A54 003046B4  28 03 00 05 */	cmplwi r3, 5
/* 80308A58 003046B8  41 82 00 0C */	beq lbl_80308A64
/* 80308A5C 003046BC  28 03 00 0F */	cmplwi r3, 0xf
/* 80308A60 003046C0  40 82 00 18 */	bne lbl_80308A78
lbl_80308A64:
/* 80308A64 003046C4  7C 7E 02 14 */	add r3, r30, r0
/* 80308A68 003046C8  80 9E 00 04 */	lwz r4, 4(r30)
/* 80308A6C 003046CC  80 03 00 14 */	lwz r0, 0x14(r3)
/* 80308A70 003046D0  7F E4 02 14 */	add r31, r4, r0
/* 80308A74 003046D4  48 00 00 70 */	b lbl_80308AE4
lbl_80308A78:
/* 80308A78 003046D8  38 A0 00 02 */	li r5, 2
/* 80308A7C 003046DC  1C 05 00 14 */	mulli r0, r5, 0x14
/* 80308A80 003046E0  7C 7E 02 14 */	add r3, r30, r0
/* 80308A84 003046E4  88 63 00 09 */	lbz r3, 9(r3)
/* 80308A88 003046E8  28 03 00 05 */	cmplwi r3, 5
/* 80308A8C 003046EC  41 82 00 0C */	beq lbl_80308A98
/* 80308A90 003046F0  28 03 00 0F */	cmplwi r3, 0xf
/* 80308A94 003046F4  40 82 00 18 */	bne lbl_80308AAC
lbl_80308A98:
/* 80308A98 003046F8  7C 7E 02 14 */	add r3, r30, r0
/* 80308A9C 003046FC  80 9E 00 04 */	lwz r4, 4(r30)
/* 80308AA0 00304700  80 03 00 14 */	lwz r0, 0x14(r3)
/* 80308AA4 00304704  7F E4 02 14 */	add r31, r4, r0
/* 80308AA8 00304708  48 00 00 3C */	b lbl_80308AE4
lbl_80308AAC:
/* 80308AAC 0030470C  38 A0 00 03 */	li r5, 3
/* 80308AB0 00304710  1C 05 00 14 */	mulli r0, r5, 0x14
/* 80308AB4 00304714  7C 7E 02 14 */	add r3, r30, r0
/* 80308AB8 00304718  88 63 00 09 */	lbz r3, 9(r3)
/* 80308ABC 0030471C  28 03 00 05 */	cmplwi r3, 5
/* 80308AC0 00304720  41 82 00 0C */	beq lbl_80308ACC
/* 80308AC4 00304724  28 03 00 0F */	cmplwi r3, 0xf
/* 80308AC8 00304728  40 82 00 18 */	bne lbl_80308AE0
lbl_80308ACC:
/* 80308ACC 0030472C  7C 7E 02 14 */	add r3, r30, r0
/* 80308AD0 00304730  80 9E 00 04 */	lwz r4, 4(r30)
/* 80308AD4 00304734  80 03 00 14 */	lwz r0, 0x14(r3)
/* 80308AD8 00304738  7F E4 02 14 */	add r31, r4, r0
/* 80308ADC 0030473C  48 00 00 08 */	b lbl_80308AE4
lbl_80308AE0:
/* 80308AE0 00304740  38 A0 00 04 */	li r5, 4
lbl_80308AE4:
/* 80308AE4 00304744  28 05 00 04 */	cmplwi r5, 4
/* 80308AE8 00304748  40 82 00 0C */	bne lbl_80308AF4
/* 80308AEC 0030474C  38 60 00 07 */	li r3, 7
/* 80308AF0 00304750  48 00 00 88 */	b lbl_80308B78
lbl_80308AF4:
/* 80308AF4 00304754  7F A3 EB 78 */	mr r3, r29
/* 80308AF8 00304758  38 81 00 10 */	addi r4, r1, 0x10
/* 80308AFC 0030475C  4B FF EB D9 */	bl VFipdm_disk_get_media_information
/* 80308B00 00304760  2C 03 00 00 */	cmpwi r3, 0
/* 80308B04 00304764  41 82 00 08 */	beq lbl_80308B0C
/* 80308B08 00304768  48 00 00 70 */	b lbl_80308B78
lbl_80308B0C:
/* 80308B0C 0030476C  A0 01 00 18 */	lhz r0, 0x18(r1)
/* 80308B10 00304770  7F A3 EB 78 */	mr r3, r29
/* 80308B14 00304774  38 81 00 28 */	addi r4, r1, 0x28
/* 80308B18 00304778  39 01 00 0C */	addi r8, r1, 0xc
/* 80308B1C 0030477C  7C 00 4E 70 */	srawi r0, r0, 9
/* 80308B20 00304780  38 C0 00 01 */	li r6, 1
/* 80308B24 00304784  7C BF 01 D6 */	mullw r5, r31, r0
/* 80308B28 00304788  38 E0 02 00 */	li r7, 0x200
/* 80308B2C 0030478C  4B FF E5 BD */	bl VFipdm_disk_physical_read
/* 80308B30 00304790  2C 03 00 00 */	cmpwi r3, 0
/* 80308B34 00304794  41 82 00 08 */	beq lbl_80308B3C
/* 80308B38 00304798  48 00 00 40 */	b lbl_80308B78
lbl_80308B3C:
/* 80308B3C 0030479C  7F A3 EB 78 */	mr r3, r29
/* 80308B40 003047A0  38 81 00 28 */	addi r4, r1, 0x28
/* 80308B44 003047A4  38 A1 00 08 */	addi r5, r1, 8
/* 80308B48 003047A8  48 00 00 4D */	bl VFipdm_mbr_check_master_boot_record
/* 80308B4C 003047AC  80 01 00 08 */	lwz r0, 8(r1)
/* 80308B50 003047B0  2C 00 00 00 */	cmpwi r0, 0
/* 80308B54 003047B4  41 82 00 18 */	beq lbl_80308B6C
/* 80308B58 003047B8  7F E4 FB 78 */	mr r4, r31
/* 80308B5C 003047BC  7F C5 F3 78 */	mr r5, r30
/* 80308B60 003047C0  38 61 00 28 */	addi r3, r1, 0x28
/* 80308B64 003047C4  4B FF FC 8D */	bl VFipdm_mbr_get_table
/* 80308B68 003047C8  48 00 00 0C */	b lbl_80308B74
lbl_80308B6C:
/* 80308B6C 003047CC  38 60 00 06 */	li r3, 6
/* 80308B70 003047D0  48 00 00 08 */	b lbl_80308B78
lbl_80308B74:
/* 80308B74 003047D4  38 60 00 00 */	li r3, 0
lbl_80308B78:
/* 80308B78 003047D8  80 01 02 44 */	lwz r0, 0x244(r1)
/* 80308B7C 003047DC  83 E1 02 3C */	lwz r31, 0x23c(r1)
/* 80308B80 003047E0  83 C1 02 38 */	lwz r30, 0x238(r1)
/* 80308B84 003047E4  83 A1 02 34 */	lwz r29, 0x234(r1)
/* 80308B88 003047E8  7C 08 03 A6 */	mtlr r0
/* 80308B8C 003047EC  38 21 02 40 */	addi r1, r1, 0x240
/* 80308B90 003047F0  4E 80 00 20 */	blr

.global VFipdm_mbr_check_master_boot_record
VFipdm_mbr_check_master_boot_record:
/* 80308B94 003047F4  94 21 FF 80 */	stwu r1, -0x80(r1)
/* 80308B98 003047F8  7C 08 02 A6 */	mflr r0
/* 80308B9C 003047FC  2C 03 00 00 */	cmpwi r3, 0
/* 80308BA0 00304800  90 01 00 84 */	stw r0, 0x84(r1)
/* 80308BA4 00304804  93 E1 00 7C */	stw r31, 0x7c(r1)
/* 80308BA8 00304808  7C BF 2B 78 */	mr r31, r5
/* 80308BAC 0030480C  93 C1 00 78 */	stw r30, 0x78(r1)
/* 80308BB0 00304810  7C 9E 23 78 */	mr r30, r4
/* 80308BB4 00304814  93 A1 00 74 */	stw r29, 0x74(r1)
/* 80308BB8 00304818  7C 7D 1B 78 */	mr r29, r3
/* 80308BBC 0030481C  41 82 00 14 */	beq lbl_80308BD0
/* 80308BC0 00304820  2C 04 00 00 */	cmpwi r4, 0
/* 80308BC4 00304824  41 82 00 0C */	beq lbl_80308BD0
/* 80308BC8 00304828  2C 05 00 00 */	cmpwi r5, 0
/* 80308BCC 0030482C  40 82 00 0C */	bne lbl_80308BD8
lbl_80308BD0:
/* 80308BD0 00304830  38 60 00 01 */	li r3, 1
/* 80308BD4 00304834  48 00 01 C0 */	b lbl_80308D94
lbl_80308BD8:
/* 80308BD8 00304838  4B FF E1 C5 */	bl VFipdm_disk_check_disk_handle
/* 80308BDC 0030483C  2C 03 00 00 */	cmpwi r3, 0
/* 80308BE0 00304840  41 82 00 08 */	beq lbl_80308BE8
/* 80308BE4 00304844  48 00 01 B0 */	b lbl_80308D94
lbl_80308BE8:
/* 80308BE8 00304848  38 00 00 00 */	li r0, 0
/* 80308BEC 0030484C  90 1F 00 00 */	stw r0, 0(r31)
/* 80308BF0 00304850  88 1E 01 FE */	lbz r0, 0x1fe(r30)
/* 80308BF4 00304854  28 00 00 55 */	cmplwi r0, 0x55
/* 80308BF8 00304858  40 82 00 10 */	bne lbl_80308C08
/* 80308BFC 0030485C  88 1E 01 FF */	lbz r0, 0x1ff(r30)
/* 80308C00 00304860  28 00 00 AA */	cmplwi r0, 0xaa
/* 80308C04 00304864  41 82 00 0C */	beq lbl_80308C10
lbl_80308C08:
/* 80308C08 00304868  38 60 00 00 */	li r3, 0
/* 80308C0C 0030486C  48 00 01 88 */	b lbl_80308D94
lbl_80308C10:
/* 80308C10 00304870  7F C3 F3 78 */	mr r3, r30
/* 80308C14 00304874  38 A1 00 10 */	addi r5, r1, 0x10
/* 80308C18 00304878  38 80 00 00 */	li r4, 0
/* 80308C1C 0030487C  4B FF FB D5 */	bl VFipdm_mbr_get_table
/* 80308C20 00304880  80 E1 00 24 */	lwz r7, 0x24(r1)
/* 80308C24 00304884  57 A4 06 3E */	clrlwi r4, r29, 0x18
/* 80308C28 00304888  80 C1 00 28 */	lwz r6, 0x28(r1)
/* 80308C2C 0030488C  3C A0 80 58 */	lis r5, lbl_8057EA60@ha
/* 80308C30 00304890  20 67 FF FF */	subfic r3, r7, -1
/* 80308C34 00304894  38 00 00 01 */	li r0, 1
/* 80308C38 00304898  1C 84 00 34 */	mulli r4, r4, 0x34
/* 80308C3C 0030489C  38 A5 EA 60 */	addi r5, r5, lbl_8057EA60@l
/* 80308C40 003048A0  7C 06 18 40 */	cmplw r6, r3
/* 80308C44 003048A4  7C A5 22 14 */	add r5, r5, r4
/* 80308C48 003048A8  41 81 00 14 */	bgt lbl_80308C5C
/* 80308C4C 003048AC  80 65 01 BC */	lwz r3, 0x1bc(r5)
/* 80308C50 003048B0  7C 87 32 14 */	add r4, r7, r6
/* 80308C54 003048B4  7C 04 18 40 */	cmplw r4, r3
/* 80308C58 003048B8  40 81 00 10 */	ble lbl_80308C68
lbl_80308C5C:
/* 80308C5C 003048BC  38 00 00 00 */	li r0, 0
/* 80308C60 003048C0  90 1F 00 00 */	stw r0, 0(r31)
/* 80308C64 003048C4  48 00 00 C4 */	b lbl_80308D28
lbl_80308C68:
/* 80308C68 003048C8  2C 07 00 00 */	cmpwi r7, 0
/* 80308C6C 003048CC  41 82 00 08 */	beq lbl_80308C74
/* 80308C70 003048D0  90 1F 00 00 */	stw r0, 0(r31)
lbl_80308C74:
/* 80308C74 003048D4  80 E1 00 38 */	lwz r7, 0x38(r1)
/* 80308C78 003048D8  80 C1 00 3C */	lwz r6, 0x3c(r1)
/* 80308C7C 003048DC  20 67 FF FF */	subfic r3, r7, -1
/* 80308C80 003048E0  7C 06 18 40 */	cmplw r6, r3
/* 80308C84 003048E4  41 81 00 14 */	bgt lbl_80308C98
/* 80308C88 003048E8  80 65 01 BC */	lwz r3, 0x1bc(r5)
/* 80308C8C 003048EC  7C 87 32 14 */	add r4, r7, r6
/* 80308C90 003048F0  7C 04 18 40 */	cmplw r4, r3
/* 80308C94 003048F4  40 81 00 10 */	ble lbl_80308CA4
lbl_80308C98:
/* 80308C98 003048F8  38 00 00 00 */	li r0, 0
/* 80308C9C 003048FC  90 1F 00 00 */	stw r0, 0(r31)
/* 80308CA0 00304900  48 00 00 88 */	b lbl_80308D28
lbl_80308CA4:
/* 80308CA4 00304904  2C 07 00 00 */	cmpwi r7, 0
/* 80308CA8 00304908  41 82 00 08 */	beq lbl_80308CB0
/* 80308CAC 0030490C  90 1F 00 00 */	stw r0, 0(r31)
lbl_80308CB0:
/* 80308CB0 00304910  80 E1 00 4C */	lwz r7, 0x4c(r1)
/* 80308CB4 00304914  80 C1 00 50 */	lwz r6, 0x50(r1)
/* 80308CB8 00304918  20 67 FF FF */	subfic r3, r7, -1
/* 80308CBC 0030491C  7C 06 18 40 */	cmplw r6, r3
/* 80308CC0 00304920  41 81 00 14 */	bgt lbl_80308CD4
/* 80308CC4 00304924  80 65 01 BC */	lwz r3, 0x1bc(r5)
/* 80308CC8 00304928  7C 87 32 14 */	add r4, r7, r6
/* 80308CCC 0030492C  7C 04 18 40 */	cmplw r4, r3
/* 80308CD0 00304930  40 81 00 10 */	ble lbl_80308CE0
lbl_80308CD4:
/* 80308CD4 00304934  38 00 00 00 */	li r0, 0
/* 80308CD8 00304938  90 1F 00 00 */	stw r0, 0(r31)
/* 80308CDC 0030493C  48 00 00 4C */	b lbl_80308D28
lbl_80308CE0:
/* 80308CE0 00304940  2C 07 00 00 */	cmpwi r7, 0
/* 80308CE4 00304944  41 82 00 08 */	beq lbl_80308CEC
/* 80308CE8 00304948  90 1F 00 00 */	stw r0, 0(r31)
lbl_80308CEC:
/* 80308CEC 0030494C  80 E1 00 60 */	lwz r7, 0x60(r1)
/* 80308CF0 00304950  80 C1 00 64 */	lwz r6, 0x64(r1)
/* 80308CF4 00304954  20 67 FF FF */	subfic r3, r7, -1
/* 80308CF8 00304958  7C 06 18 40 */	cmplw r6, r3
/* 80308CFC 0030495C  41 81 00 14 */	bgt lbl_80308D10
/* 80308D00 00304960  80 65 01 BC */	lwz r3, 0x1bc(r5)
/* 80308D04 00304964  7C 87 32 14 */	add r4, r7, r6
/* 80308D08 00304968  7C 04 18 40 */	cmplw r4, r3
/* 80308D0C 0030496C  40 81 00 10 */	ble lbl_80308D1C
lbl_80308D10:
/* 80308D10 00304970  38 00 00 00 */	li r0, 0
/* 80308D14 00304974  90 1F 00 00 */	stw r0, 0(r31)
/* 80308D18 00304978  48 00 00 10 */	b lbl_80308D28
lbl_80308D1C:
/* 80308D1C 0030497C  2C 07 00 00 */	cmpwi r7, 0
/* 80308D20 00304980  41 82 00 08 */	beq lbl_80308D28
/* 80308D24 00304984  90 1F 00 00 */	stw r0, 0(r31)
lbl_80308D28:
/* 80308D28 00304988  80 1F 00 00 */	lwz r0, 0(r31)
/* 80308D2C 0030498C  2C 00 00 00 */	cmpwi r0, 0
/* 80308D30 00304990  40 82 00 60 */	bne lbl_80308D90
/* 80308D34 00304994  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80308D38 00304998  2C 00 00 00 */	cmpwi r0, 0
/* 80308D3C 0030499C  40 82 00 54 */	bne lbl_80308D90
/* 80308D40 003049A0  80 01 00 38 */	lwz r0, 0x38(r1)
/* 80308D44 003049A4  2C 00 00 00 */	cmpwi r0, 0
/* 80308D48 003049A8  40 82 00 48 */	bne lbl_80308D90
/* 80308D4C 003049AC  80 01 00 4C */	lwz r0, 0x4c(r1)
/* 80308D50 003049B0  2C 00 00 00 */	cmpwi r0, 0
/* 80308D54 003049B4  40 82 00 3C */	bne lbl_80308D90
/* 80308D58 003049B8  80 01 00 60 */	lwz r0, 0x60(r1)
/* 80308D5C 003049BC  2C 00 00 00 */	cmpwi r0, 0
/* 80308D60 003049C0  40 82 00 30 */	bne lbl_80308D90
/* 80308D64 003049C4  7F C3 F3 78 */	mr r3, r30
/* 80308D68 003049C8  38 81 00 08 */	addi r4, r1, 8
/* 80308D6C 003049CC  4B FF DB C1 */	bl VFipdm_bpb_check_boot_sector
/* 80308D70 003049D0  80 01 00 08 */	lwz r0, 8(r1)
/* 80308D74 003049D4  2C 00 00 00 */	cmpwi r0, 0
/* 80308D78 003049D8  40 82 00 10 */	bne lbl_80308D88
/* 80308D7C 003049DC  38 00 00 01 */	li r0, 1
/* 80308D80 003049E0  90 1F 00 00 */	stw r0, 0(r31)
/* 80308D84 003049E4  48 00 00 0C */	b lbl_80308D90
lbl_80308D88:
/* 80308D88 003049E8  38 00 00 00 */	li r0, 0
/* 80308D8C 003049EC  90 1F 00 00 */	stw r0, 0(r31)
lbl_80308D90:
/* 80308D90 003049F0  38 60 00 00 */	li r3, 0
lbl_80308D94:
/* 80308D94 003049F4  80 01 00 84 */	lwz r0, 0x84(r1)
/* 80308D98 003049F8  83 E1 00 7C */	lwz r31, 0x7c(r1)
/* 80308D9C 003049FC  83 C1 00 78 */	lwz r30, 0x78(r1)
/* 80308DA0 00304A00  83 A1 00 74 */	lwz r29, 0x74(r1)
/* 80308DA4 00304A04  7C 08 03 A6 */	mtlr r0
/* 80308DA8 00304A08  38 21 00 80 */	addi r1, r1, 0x80
/* 80308DAC 00304A0C  4E 80 00 20 */	blr