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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global VFi_NandFlushNANDFromHandleIdx
VFi_NandFlushNANDFromHandleIdx:
/* 8031BE1C 00317A7C 94 21 FF D0 */ stwu r1, -0x30(r1)
/* 8031BE20 00317A80 7C 08 02 A6 */ mflr r0
/* 8031BE24 00317A84 90 01 00 34 */ stw r0, 0x34(r1)
/* 8031BE28 00317A88 39 61 00 30 */ addi r11, r1, 0x30
/* 8031BE2C 00317A8C 4B EA B2 ED */ bl _savegpr_23
/* 8031BE30 00317A90 7C 7A 1B 78 */ mr r26, r3
/* 8031BE34 00317A94 7C 9B 23 78 */ mr r27, r4
/* 8031BE38 00317A98 4B FF ED A9 */ bl VFSysGetDriveP
/* 8031BE3C 00317A9C 7C 77 1B 78 */ mr r23, r3
/* 8031BE40 00317AA0 7F 43 D3 78 */ mr r3, r26
/* 8031BE44 00317AA4 4B FF EC 39 */ bl VFSysGetHandleP
/* 8031BE48 00317AA8 2C 03 00 00 */ cmpwi r3, 0
/* 8031BE4C 00317AAC 41 82 00 24 */ beq lbl_8031BE70
/* 8031BE50 00317AB0 80 63 00 00 */ lwz r3, 0(r3)
/* 8031BE54 00317AB4 2C 03 00 00 */ cmpwi r3, 0
/* 8031BE58 00317AB8 41 82 00 18 */ beq lbl_8031BE70
/* 8031BE5C 00317ABC 80 03 00 0C */ lwz r0, 0xc(r3)
/* 8031BE60 00317AC0 28 00 00 01 */ cmplwi r0, 1
/* 8031BE64 00317AC4 40 82 00 0C */ bne lbl_8031BE70
/* 8031BE68 00317AC8 38 60 00 00 */ li r3, 0
/* 8031BE6C 00317ACC 48 00 02 9C */ b lbl_8031C108
lbl_8031BE70:
/* 8031BE70 00317AD0 2C 17 00 00 */ cmpwi r23, 0
/* 8031BE74 00317AD4 41 82 02 90 */ beq lbl_8031C104
/* 8031BE78 00317AD8 3C 60 10 62 */ lis r3, 0x10624DD3@ha
/* 8031BE7C 00317ADC 83 97 00 00 */ lwz r28, 0(r23)
/* 8031BE80 00317AE0 3B B7 00 3C */ addi r29, r23, 0x3c
/* 8031BE84 00317AE4 83 CD B0 08 */ lwz r30, lbl_806402C8-_SDA_BASE_(r13)
/* 8031BE88 00317AE8 3B 23 4D D3 */ addi r25, r3, 0x10624DD3@l
/* 8031BE8C 00317AEC 3B E0 00 00 */ li r31, 0
/* 8031BE90 00317AF0 3F 00 80 00 */ lis r24, 0x8000
/* 8031BE94 00317AF4 3A E0 00 00 */ li r23, 0
/* 8031BE98 00317AF8 48 00 00 50 */ b lbl_8031BEE8
lbl_8031BE9C:
/* 8031BE9C 00317AFC 7F 83 E3 78 */ mr r3, r28
/* 8031BEA0 00317B00 4B FC C7 E9 */ bl NANDClose
/* 8031BEA4 00317B04 2C 03 FF FD */ cmpwi r3, -3
/* 8031BEA8 00317B08 7C 7F 1B 78 */ mr r31, r3
/* 8031BEAC 00317B0C 41 82 00 08 */ beq lbl_8031BEB4
/* 8031BEB0 00317B10 48 00 00 44 */ b lbl_8031BEF4
lbl_8031BEB4:
/* 8031BEB4 00317B14 80 18 00 F8 */ lwz r0, 0xf8(r24)
/* 8031BEB8 00317B18 80 CD B0 0C */ lwz r6, lbl_806402CC-_SDA_BASE_(r13)
/* 8031BEBC 00317B1C 54 00 F0 BE */ srwi r0, r0, 2
/* 8031BEC0 00317B20 7C 79 00 16 */ mulhwu r3, r25, r0
/* 8031BEC4 00317B24 7C C0 FE 70 */ srawi r0, r6, 0x1f
/* 8031BEC8 00317B28 7C 97 31 D6 */ mullw r4, r23, r6
/* 8031BECC 00317B2C 54 65 D1 BE */ srwi r5, r3, 6
/* 8031BED0 00317B30 7C 65 30 16 */ mulhwu r3, r5, r6
/* 8031BED4 00317B34 7C 05 01 D6 */ mullw r0, r5, r0
/* 8031BED8 00317B38 7C 63 22 14 */ add r3, r3, r4
/* 8031BEDC 00317B3C 7C 85 31 D6 */ mullw r4, r5, r6
/* 8031BEE0 00317B40 7C 63 02 14 */ add r3, r3, r0
/* 8031BEE4 00317B44 4B F5 68 21 */ bl OSSleepTicks
lbl_8031BEE8:
/* 8031BEE8 00317B48 2C 1E 00 00 */ cmpwi r30, 0
/* 8031BEEC 00317B4C 3B DE FF FF */ addi r30, r30, -1
/* 8031BEF0 00317B50 41 81 FF AC */ bgt lbl_8031BE9C
lbl_8031BEF4:
/* 8031BEF4 00317B54 2C 1F 00 00 */ cmpwi r31, 0
/* 8031BEF8 00317B58 40 80 00 20 */ bge lbl_8031BF18
/* 8031BEFC 00317B5C 2C 1B 00 00 */ cmpwi r27, 0
/* 8031BF00 00317B60 41 82 00 10 */ beq lbl_8031BF10
/* 8031BF04 00317B64 7F 43 D3 78 */ mr r3, r26
/* 8031BF08 00317B68 7F E4 FB 78 */ mr r4, r31
/* 8031BF0C 00317B6C 4B FF FE 6D */ bl dCommon_setLastDeviceErrorToDisk2
lbl_8031BF10:
/* 8031BF10 00317B70 7F E3 FB 78 */ mr r3, r31
/* 8031BF14 00317B74 48 00 01 F4 */ b lbl_8031C108
lbl_8031BF18:
/* 8031BF18 00317B78 28 1A 00 1A */ cmplwi r26, 0x1a
/* 8031BF1C 00317B7C 40 80 00 BC */ bge lbl_8031BFD8
/* 8031BF20 00317B80 3C 60 80 61 */ lis r3, lbl_8060FA50@ha
/* 8031BF24 00317B84 57 40 20 36 */ slwi r0, r26, 4
/* 8031BF28 00317B88 38 63 FA 50 */ addi r3, r3, lbl_8060FA50@l
/* 8031BF2C 00317B8C 7C 63 02 14 */ add r3, r3, r0
/* 8031BF30 00317B90 81 83 00 04 */ lwz r12, 4(r3)
/* 8031BF34 00317B94 2C 0C 00 00 */ cmpwi r12, 0
/* 8031BF38 00317B98 41 82 00 20 */ beq lbl_8031BF58
/* 8031BF3C 00317B9C 7F A3 EB 78 */ mr r3, r29
/* 8031BF40 00317BA0 7F 84 E3 78 */ mr r4, r28
/* 8031BF44 00317BA4 38 A0 00 03 */ li r5, 3
/* 8031BF48 00317BA8 7D 89 03 A6 */ mtctr r12
/* 8031BF4C 00317BAC 4E 80 04 21 */ bctrl
/* 8031BF50 00317BB0 7C 7F 1B 78 */ mr r31, r3
/* 8031BF54 00317BB4 48 00 01 8C */ b lbl_8031C0E0
lbl_8031BF58:
/* 8031BF58 00317BB8 3C 60 10 62 */ lis r3, 0x10624DD3@ha
/* 8031BF5C 00317BBC 83 CD B0 08 */ lwz r30, lbl_806402C8-_SDA_BASE_(r13)
/* 8031BF60 00317BC0 3B 23 4D D3 */ addi r25, r3, 0x10624DD3@l
/* 8031BF64 00317BC4 3B E0 00 00 */ li r31, 0
/* 8031BF68 00317BC8 3F 00 80 00 */ lis r24, 0x8000
/* 8031BF6C 00317BCC 3A E0 00 00 */ li r23, 0
/* 8031BF70 00317BD0 48 00 00 58 */ b lbl_8031BFC8
lbl_8031BF74:
/* 8031BF74 00317BD4 7F A3 EB 78 */ mr r3, r29
/* 8031BF78 00317BD8 7F 84 E3 78 */ mr r4, r28
/* 8031BF7C 00317BDC 38 A0 00 03 */ li r5, 3
/* 8031BF80 00317BE0 4B FC C4 89 */ bl NANDOpen
/* 8031BF84 00317BE4 2C 03 FF FD */ cmpwi r3, -3
/* 8031BF88 00317BE8 7C 7F 1B 78 */ mr r31, r3
/* 8031BF8C 00317BEC 41 82 00 08 */ beq lbl_8031BF94
/* 8031BF90 00317BF0 48 00 01 50 */ b lbl_8031C0E0
lbl_8031BF94:
/* 8031BF94 00317BF4 80 18 00 F8 */ lwz r0, 0xf8(r24)
/* 8031BF98 00317BF8 80 CD B0 0C */ lwz r6, lbl_806402CC-_SDA_BASE_(r13)
/* 8031BF9C 00317BFC 54 00 F0 BE */ srwi r0, r0, 2
/* 8031BFA0 00317C00 7C 79 00 16 */ mulhwu r3, r25, r0
/* 8031BFA4 00317C04 7C C0 FE 70 */ srawi r0, r6, 0x1f
/* 8031BFA8 00317C08 7C 97 31 D6 */ mullw r4, r23, r6
/* 8031BFAC 00317C0C 54 65 D1 BE */ srwi r5, r3, 6
/* 8031BFB0 00317C10 7C 65 30 16 */ mulhwu r3, r5, r6
/* 8031BFB4 00317C14 7C 05 01 D6 */ mullw r0, r5, r0
/* 8031BFB8 00317C18 7C 63 22 14 */ add r3, r3, r4
/* 8031BFBC 00317C1C 7C 85 31 D6 */ mullw r4, r5, r6
/* 8031BFC0 00317C20 7C 63 02 14 */ add r3, r3, r0
/* 8031BFC4 00317C24 4B F5 67 41 */ bl OSSleepTicks
lbl_8031BFC8:
/* 8031BFC8 00317C28 2C 1E 00 00 */ cmpwi r30, 0
/* 8031BFCC 00317C2C 3B DE FF FF */ addi r30, r30, -1
/* 8031BFD0 00317C30 41 81 FF A4 */ bgt lbl_8031BF74
/* 8031BFD4 00317C34 48 00 01 0C */ b lbl_8031C0E0
lbl_8031BFD8:
/* 8031BFD8 00317C38 3C 1A 00 01 */ addis r0, r26, 1
/* 8031BFDC 00317C3C 28 00 FF F6 */ cmplwi r0, 0xfff6
/* 8031BFE0 00317C40 40 82 00 84 */ bne lbl_8031C064
/* 8031BFE4 00317C44 3C 60 10 62 */ lis r3, 0x10624DD3@ha
/* 8031BFE8 00317C48 83 CD B0 08 */ lwz r30, lbl_806402C8-_SDA_BASE_(r13)
/* 8031BFEC 00317C4C 3B 23 4D D3 */ addi r25, r3, 0x10624DD3@l
/* 8031BFF0 00317C50 3B E0 00 00 */ li r31, 0
/* 8031BFF4 00317C54 3F 00 80 00 */ lis r24, 0x8000
/* 8031BFF8 00317C58 3A E0 00 00 */ li r23, 0
/* 8031BFFC 00317C5C 48 00 00 58 */ b lbl_8031C054
lbl_8031C000:
/* 8031C000 00317C60 7F A3 EB 78 */ mr r3, r29
/* 8031C004 00317C64 7F 84 E3 78 */ mr r4, r28
/* 8031C008 00317C68 38 A0 00 03 */ li r5, 3
/* 8031C00C 00317C6C 4B FC C3 FD */ bl NANDOpen
/* 8031C010 00317C70 2C 03 FF FD */ cmpwi r3, -3
/* 8031C014 00317C74 7C 7F 1B 78 */ mr r31, r3
/* 8031C018 00317C78 41 82 00 08 */ beq lbl_8031C020
/* 8031C01C 00317C7C 48 00 00 C4 */ b lbl_8031C0E0
lbl_8031C020:
/* 8031C020 00317C80 80 18 00 F8 */ lwz r0, 0xf8(r24)
/* 8031C024 00317C84 80 CD B0 0C */ lwz r6, lbl_806402CC-_SDA_BASE_(r13)
/* 8031C028 00317C88 54 00 F0 BE */ srwi r0, r0, 2
/* 8031C02C 00317C8C 7C 79 00 16 */ mulhwu r3, r25, r0
/* 8031C030 00317C90 7C C0 FE 70 */ srawi r0, r6, 0x1f
/* 8031C034 00317C94 7C 97 31 D6 */ mullw r4, r23, r6
/* 8031C038 00317C98 54 65 D1 BE */ srwi r5, r3, 6
/* 8031C03C 00317C9C 7C 65 30 16 */ mulhwu r3, r5, r6
/* 8031C040 00317CA0 7C 05 01 D6 */ mullw r0, r5, r0
/* 8031C044 00317CA4 7C 63 22 14 */ add r3, r3, r4
/* 8031C048 00317CA8 7C 85 31 D6 */ mullw r4, r5, r6
/* 8031C04C 00317CAC 7C 63 02 14 */ add r3, r3, r0
/* 8031C050 00317CB0 4B F5 66 B5 */ bl OSSleepTicks
lbl_8031C054:
/* 8031C054 00317CB4 2C 1E 00 00 */ cmpwi r30, 0
/* 8031C058 00317CB8 3B DE FF FF */ addi r30, r30, -1
/* 8031C05C 00317CBC 41 81 FF A4 */ bgt lbl_8031C000
/* 8031C060 00317CC0 48 00 00 80 */ b lbl_8031C0E0
lbl_8031C064:
/* 8031C064 00317CC4 3C 60 10 62 */ lis r3, 0x10624DD3@ha
/* 8031C068 00317CC8 83 CD B0 08 */ lwz r30, lbl_806402C8-_SDA_BASE_(r13)
/* 8031C06C 00317CCC 3A E3 4D D3 */ addi r23, r3, 0x10624DD3@l
/* 8031C070 00317CD0 3B E0 00 00 */ li r31, 0
/* 8031C074 00317CD4 3F 00 80 00 */ lis r24, 0x8000
/* 8031C078 00317CD8 3B 20 00 00 */ li r25, 0
/* 8031C07C 00317CDC 48 00 00 58 */ b lbl_8031C0D4
lbl_8031C080:
/* 8031C080 00317CE0 7F A3 EB 78 */ mr r3, r29
/* 8031C084 00317CE4 7F 84 E3 78 */ mr r4, r28
/* 8031C088 00317CE8 38 A0 00 03 */ li r5, 3
/* 8031C08C 00317CEC 4B FC C4 09 */ bl NANDPrivateOpen
/* 8031C090 00317CF0 2C 03 FF FD */ cmpwi r3, -3
/* 8031C094 00317CF4 7C 7F 1B 78 */ mr r31, r3
/* 8031C098 00317CF8 41 82 00 08 */ beq lbl_8031C0A0
/* 8031C09C 00317CFC 48 00 00 44 */ b lbl_8031C0E0
lbl_8031C0A0:
/* 8031C0A0 00317D00 80 18 00 F8 */ lwz r0, 0xf8(r24)
/* 8031C0A4 00317D04 80 CD B0 0C */ lwz r6, lbl_806402CC-_SDA_BASE_(r13)
/* 8031C0A8 00317D08 54 00 F0 BE */ srwi r0, r0, 2
/* 8031C0AC 00317D0C 7C 77 00 16 */ mulhwu r3, r23, r0
/* 8031C0B0 00317D10 7C C0 FE 70 */ srawi r0, r6, 0x1f
/* 8031C0B4 00317D14 7C 99 31 D6 */ mullw r4, r25, r6
/* 8031C0B8 00317D18 54 65 D1 BE */ srwi r5, r3, 6
/* 8031C0BC 00317D1C 7C 65 30 16 */ mulhwu r3, r5, r6
/* 8031C0C0 00317D20 7C 05 01 D6 */ mullw r0, r5, r0
/* 8031C0C4 00317D24 7C 63 22 14 */ add r3, r3, r4
/* 8031C0C8 00317D28 7C 85 31 D6 */ mullw r4, r5, r6
/* 8031C0CC 00317D2C 7C 63 02 14 */ add r3, r3, r0
/* 8031C0D0 00317D30 4B F5 66 35 */ bl OSSleepTicks
lbl_8031C0D4:
/* 8031C0D4 00317D34 2C 1E 00 00 */ cmpwi r30, 0
/* 8031C0D8 00317D38 3B DE FF FF */ addi r30, r30, -1
/* 8031C0DC 00317D3C 41 81 FF A4 */ bgt lbl_8031C080
lbl_8031C0E0:
/* 8031C0E0 00317D40 2C 1F 00 00 */ cmpwi r31, 0
/* 8031C0E4 00317D44 40 80 00 20 */ bge lbl_8031C104
/* 8031C0E8 00317D48 2C 1B 00 00 */ cmpwi r27, 0
/* 8031C0EC 00317D4C 41 82 00 10 */ beq lbl_8031C0FC
/* 8031C0F0 00317D50 7F 43 D3 78 */ mr r3, r26
/* 8031C0F4 00317D54 7F E4 FB 78 */ mr r4, r31
/* 8031C0F8 00317D58 4B FF FC 81 */ bl dCommon_setLastDeviceErrorToDisk2
lbl_8031C0FC:
/* 8031C0FC 00317D5C 7F E3 FB 78 */ mr r3, r31
/* 8031C100 00317D60 48 00 00 08 */ b lbl_8031C108
lbl_8031C104:
/* 8031C104 00317D64 38 60 00 00 */ li r3, 0
lbl_8031C108:
/* 8031C108 00317D68 39 61 00 30 */ addi r11, r1, 0x30
/* 8031C10C 00317D6C 4B EA B0 59 */ bl _restgpr_23
/* 8031C110 00317D70 80 01 00 34 */ lwz r0, 0x34(r1)
/* 8031C114 00317D74 7C 08 03 A6 */ mtlr r0
/* 8031C118 00317D78 38 21 00 30 */ addi r1, r1, 0x30
/* 8031C11C 00317D7C 4E 80 00 20 */ blr
|