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 DWC_Init
DWC_Init:
/* 8031C598 003181F8 94 21 FE E0 */ stwu r1, -0x120(r1)
/* 8031C59C 003181FC 7C 08 02 A6 */ mflr r0
/* 8031C5A0 00318200 90 01 01 24 */ stw r0, 0x124(r1)
/* 8031C5A4 00318204 39 61 01 20 */ addi r11, r1, 0x120
/* 8031C5A8 00318208 4B EA AB 7D */ bl _savegpr_26
/* 8031C5AC 0031820C 3F C0 80 44 */ lis r30, lbl_80446718@ha
/* 8031C5B0 00318210 7C 7A 1B 78 */ mr r26, r3
/* 8031C5B4 00318214 7C 9F 23 78 */ mr r31, r4
/* 8031C5B8 00318218 7C BB 2B 78 */ mr r27, r5
/* 8031C5BC 0031821C 7C DC 33 78 */ mr r28, r6
/* 8031C5C0 00318220 7C FD 3B 78 */ mr r29, r7
/* 8031C5C4 00318224 3B DE 67 18 */ addi r30, r30, lbl_80446718@l
/* 8031C5C8 00318228 38 6D 8D 30 */ addi r3, r13, lbl_8063DFF0-_SDA_BASE_
/* 8031C5CC 0031822C 38 8D 8D 30 */ addi r4, r13, lbl_8063DFF0-_SDA_BASE_
/* 8031C5D0 00318230 4B EB 1E 7D */ bl strcmp
/* 8031C5D4 00318234 2C 03 00 00 */ cmpwi r3, 0
/* 8031C5D8 00318238 40 82 00 10 */ bne lbl_8031C5E8
/* 8031C5DC 0031823C 38 7E 00 00 */ addi r3, r30, 0
/* 8031C5E0 00318240 4B F4 D0 71 */ bl OSRegisterVersion
/* 8031C5E4 00318244 48 00 00 2C */ b lbl_8031C610
lbl_8031C5E8:
/* 8031C5E8 00318248 38 9E 00 48 */ addi r4, r30, 0x48
/* 8031C5EC 0031824C 38 6D 8D 30 */ addi r3, r13, lbl_8063DFF0-_SDA_BASE_
/* 8031C5F0 00318250 4B EB 1E 5D */ bl strcmp
/* 8031C5F4 00318254 2C 03 00 00 */ cmpwi r3, 0
/* 8031C5F8 00318258 40 82 00 10 */ bne lbl_8031C608
/* 8031C5FC 0031825C 38 7E 00 54 */ addi r3, r30, 0x54
/* 8031C600 00318260 4B F4 D0 51 */ bl OSRegisterVersion
/* 8031C604 00318264 48 00 00 0C */ b lbl_8031C610
lbl_8031C608:
/* 8031C608 00318268 38 7E 00 00 */ addi r3, r30, 0
/* 8031C60C 0031826C 4B F4 D0 45 */ bl OSRegisterVersion
lbl_8031C610:
/* 8031C610 00318270 7F 83 E3 78 */ mr r3, r28
/* 8031C614 00318274 7F A4 EB 78 */ mr r4, r29
/* 8031C618 00318278 48 00 02 C9 */ bl DWCi_SetMemFunc
/* 8031C61C 0031827C 7F 43 D3 78 */ mr r3, r26
/* 8031C620 00318280 48 01 79 FD */ bl DWCi_Auth_InitInterface
/* 8031C624 00318284 93 6D B0 18 */ stw r27, lbl_806402D8-_SDA_BASE_(r13)
/* 8031C628 00318288 48 01 52 CD */ bl DWCi_Np_GetConsoleId
/* 8031C62C 0031828C 3C 60 80 32 */ lis r3, DWCi_GsMalloc@ha
/* 8031C630 00318290 3C 80 80 32 */ lis r4, DWCi_GsFree@ha
/* 8031C634 00318294 3C A0 80 32 */ lis r5, DWCi_GsRealloc@ha
/* 8031C638 00318298 3C C0 80 32 */ lis r6, DWCi_GsMemalign@ha
/* 8031C63C 0031829C 38 63 C9 A4 */ addi r3, r3, DWCi_GsMalloc@l
/* 8031C640 003182A0 38 84 CA B4 */ addi r4, r4, DWCi_GsFree@l
/* 8031C644 003182A4 38 A5 C9 F8 */ addi r5, r5, DWCi_GsRealloc@l
/* 8031C648 003182A8 38 C6 CA D8 */ addi r6, r6, DWCi_GsMemalign@l
/* 8031C64C 003182AC 48 01 CC AD */ bl gsiMemoryCallbacksSet
/* 8031C650 003182B0 3C 60 80 62 */ lis r3, lbl_80620DE8@ha
/* 8031C654 003182B4 7F E4 FB 78 */ mr r4, r31
/* 8031C658 003182B8 38 63 0D E8 */ addi r3, r3, lbl_80620DE8@l
/* 8031C65C 003182BC 4B EB 1C 75 */ bl strcpy
/* 8031C660 003182C0 2C 1A 00 00 */ cmpwi r26, 0
/* 8031C664 003182C4 40 82 00 14 */ bne lbl_8031C678
/* 8031C668 003182C8 3C 60 80 45 */ lis r3, lbl_8044C338@ha
/* 8031C66C 003182CC 38 9E 00 A0 */ addi r4, r30, 0xa0
/* 8031C670 003182D0 38 63 C3 38 */ addi r3, r3, lbl_8044C338@l
/* 8031C674 003182D4 4B EB 1C 5D */ bl strcpy
lbl_8031C678:
/* 8031C678 003182D8 38 7E 00 B4 */ addi r3, r30, 0xb4
/* 8031C67C 003182DC 48 01 BA 5D */ bl gethostbyname
/* 8031C680 003182E0 2C 03 00 00 */ cmpwi r3, 0
/* 8031C684 003182E4 41 82 01 E0 */ beq lbl_8031C864
/* 8031C688 003182E8 38 7E 00 D0 */ addi r3, r30, 0xd0
/* 8031C68C 003182EC 48 01 BA 4D */ bl gethostbyname
/* 8031C690 003182F0 2C 03 00 00 */ cmpwi r3, 0
/* 8031C694 003182F4 41 82 01 D0 */ beq lbl_8031C864
/* 8031C698 003182F8 38 7E 00 EC */ addi r3, r30, 0xec
/* 8031C69C 003182FC 48 01 BA 3D */ bl gethostbyname
/* 8031C6A0 00318300 2C 03 00 00 */ cmpwi r3, 0
/* 8031C6A4 00318304 41 82 01 C0 */ beq lbl_8031C864
/* 8031C6A8 00318308 38 7E 01 0C */ addi r3, r30, 0x10c
/* 8031C6AC 0031830C 48 01 BA 2D */ bl gethostbyname
/* 8031C6B0 00318310 2C 03 00 00 */ cmpwi r3, 0
/* 8031C6B4 00318314 41 82 01 B0 */ beq lbl_8031C864
/* 8031C6B8 00318318 2C 1F 00 00 */ cmpwi r31, 0
/* 8031C6BC 0031831C 41 82 01 A0 */ beq lbl_8031C85C
/* 8031C6C0 00318320 7F E5 FB 78 */ mr r5, r31
/* 8031C6C4 00318324 38 61 00 08 */ addi r3, r1, 8
/* 8031C6C8 00318328 38 9E 01 2C */ addi r4, r30, 0x12c
/* 8031C6CC 0031832C 4C C6 31 82 */ crclr 6
/* 8031C6D0 00318330 4B EB 04 2D */ bl sprintf
/* 8031C6D4 00318334 38 61 00 08 */ addi r3, r1, 8
/* 8031C6D8 00318338 48 01 BA 01 */ bl gethostbyname
/* 8031C6DC 0031833C 2C 03 00 00 */ cmpwi r3, 0
/* 8031C6E0 00318340 41 82 01 84 */ beq lbl_8031C864
/* 8031C6E4 00318344 7F E5 FB 78 */ mr r5, r31
/* 8031C6E8 00318348 38 61 00 08 */ addi r3, r1, 8
/* 8031C6EC 0031834C 38 9E 01 50 */ addi r4, r30, 0x150
/* 8031C6F0 00318350 4C C6 31 82 */ crclr 6
/* 8031C6F4 00318354 4B EB 04 09 */ bl sprintf
/* 8031C6F8 00318358 38 61 00 08 */ addi r3, r1, 8
/* 8031C6FC 0031835C 48 01 B9 DD */ bl gethostbyname
/* 8031C700 00318360 2C 03 00 00 */ cmpwi r3, 0
/* 8031C704 00318364 41 82 01 60 */ beq lbl_8031C864
/* 8031C708 00318368 7F E5 FB 78 */ mr r5, r31
/* 8031C70C 0031836C 38 61 00 08 */ addi r3, r1, 8
/* 8031C710 00318370 38 9E 01 70 */ addi r4, r30, 0x170
/* 8031C714 00318374 4C C6 31 82 */ crclr 6
/* 8031C718 00318378 4B EB 03 E5 */ bl sprintf
/* 8031C71C 0031837C 38 61 00 08 */ addi r3, r1, 8
/* 8031C720 00318380 48 01 B9 B9 */ bl gethostbyname
/* 8031C724 00318384 2C 03 00 00 */ cmpwi r3, 0
/* 8031C728 00318388 41 82 01 3C */ beq lbl_8031C864
/* 8031C72C 0031838C 7F E5 FB 78 */ mr r5, r31
/* 8031C730 00318390 38 61 00 08 */ addi r3, r1, 8
/* 8031C734 00318394 38 9E 01 90 */ addi r4, r30, 0x190
/* 8031C738 00318398 4C C6 31 82 */ crclr 6
/* 8031C73C 0031839C 4B EB 03 C1 */ bl sprintf
/* 8031C740 003183A0 38 61 00 08 */ addi r3, r1, 8
/* 8031C744 003183A4 48 01 B9 95 */ bl gethostbyname
/* 8031C748 003183A8 2C 03 00 00 */ cmpwi r3, 0
/* 8031C74C 003183AC 41 82 01 18 */ beq lbl_8031C864
/* 8031C750 003183B0 7F E5 FB 78 */ mr r5, r31
/* 8031C754 003183B4 38 61 00 08 */ addi r3, r1, 8
/* 8031C758 003183B8 38 9E 01 B0 */ addi r4, r30, 0x1b0
/* 8031C75C 003183BC 4C C6 31 82 */ crclr 6
/* 8031C760 003183C0 4B EB 03 9D */ bl sprintf
/* 8031C764 003183C4 38 61 00 08 */ addi r3, r1, 8
/* 8031C768 003183C8 48 01 B9 71 */ bl gethostbyname
/* 8031C76C 003183CC 2C 03 00 00 */ cmpwi r3, 0
/* 8031C770 003183D0 41 82 00 F4 */ beq lbl_8031C864
/* 8031C774 003183D4 7F E5 FB 78 */ mr r5, r31
/* 8031C778 003183D8 38 61 00 08 */ addi r3, r1, 8
/* 8031C77C 003183DC 38 9E 01 D0 */ addi r4, r30, 0x1d0
/* 8031C780 003183E0 4C C6 31 82 */ crclr 6
/* 8031C784 003183E4 4B EB 03 79 */ bl sprintf
/* 8031C788 003183E8 38 61 00 08 */ addi r3, r1, 8
/* 8031C78C 003183EC 48 01 B9 4D */ bl gethostbyname
/* 8031C790 003183F0 2C 03 00 00 */ cmpwi r3, 0
/* 8031C794 003183F4 41 82 00 D0 */ beq lbl_8031C864
/* 8031C798 003183F8 7F E5 FB 78 */ mr r5, r31
/* 8031C79C 003183FC 38 61 00 08 */ addi r3, r1, 8
/* 8031C7A0 00318400 38 9E 01 F4 */ addi r4, r30, 0x1f4
/* 8031C7A4 00318404 4C C6 31 82 */ crclr 6
/* 8031C7A8 00318408 4B EB 03 55 */ bl sprintf
/* 8031C7AC 0031840C 38 61 00 08 */ addi r3, r1, 8
/* 8031C7B0 00318410 48 01 B9 29 */ bl gethostbyname
/* 8031C7B4 00318414 2C 03 00 00 */ cmpwi r3, 0
/* 8031C7B8 00318418 41 82 00 AC */ beq lbl_8031C864
/* 8031C7BC 0031841C 3C 80 80 42 */ lis r4, lbl_80422D48@ha
/* 8031C7C0 00318420 3C 60 9C D0 */ lis r3, 0x9CCF9319@ha
/* 8031C7C4 00318424 38 84 2D 48 */ addi r4, r4, lbl_80422D48@l
/* 8031C7C8 00318428 7F E7 FB 78 */ mr r7, r31
/* 8031C7CC 0031842C 80 C4 00 38 */ lwz r6, 0x38(r4)
/* 8031C7D0 00318430 38 A3 93 19 */ addi r5, r3, 0x9CCF9319@l
/* 8031C7D4 00318434 39 00 00 00 */ li r8, 0
/* 8031C7D8 00318438 48 00 00 3C */ b lbl_8031C814
lbl_8031C7DC:
/* 8031C7DC 0031843C 7C 88 29 D6 */ mullw r4, r8, r5
/* 8031C7E0 00318440 7C 68 07 75 */ extsb. r8, r3
/* 8031C7E4 00318444 38 00 00 00 */ li r0, 0
/* 8031C7E8 00318448 41 80 00 0C */ blt lbl_8031C7F4
/* 8031C7EC 0031844C 2C 08 01 00 */ cmpwi r8, 0x100
/* 8031C7F0 00318450 41 80 00 08 */ blt lbl_8031C7F8
lbl_8031C7F4:
/* 8031C7F4 00318454 38 00 00 01 */ li r0, 1
lbl_8031C7F8:
/* 8031C7F8 00318458 2C 00 00 00 */ cmpwi r0, 0
/* 8031C7FC 0031845C 41 82 00 08 */ beq lbl_8031C804
/* 8031C800 00318460 48 00 00 0C */ b lbl_8031C80C
lbl_8031C804:
/* 8031C804 00318464 80 66 00 10 */ lwz r3, 0x10(r6)
/* 8031C808 00318468 7D 03 40 AE */ lbzx r8, r3, r8
lbl_8031C80C:
/* 8031C80C 0031846C 7D 04 42 14 */ add r8, r4, r8
/* 8031C810 00318470 38 E7 00 01 */ addi r7, r7, 1
lbl_8031C814:
/* 8031C814 00318474 88 67 00 00 */ lbz r3, 0(r7)
/* 8031C818 00318478 7C 60 07 75 */ extsb. r0, r3
/* 8031C81C 0031847C 40 82 FF C0 */ bne lbl_8031C7DC
/* 8031C820 00318480 3C 60 CC CD */ lis r3, 0xCCCCCCCD@ha
/* 8031C824 00318484 7F E5 FB 78 */ mr r5, r31
/* 8031C828 00318488 38 03 CC CD */ addi r0, r3, 0xCCCCCCCD@l
/* 8031C82C 0031848C 38 9E 02 18 */ addi r4, r30, 0x218
/* 8031C830 00318490 7C 00 40 16 */ mulhwu r0, r0, r8
/* 8031C834 00318494 38 61 00 08 */ addi r3, r1, 8
/* 8031C838 00318498 54 00 E1 3E */ srwi r0, r0, 4
/* 8031C83C 0031849C 1C 00 00 14 */ mulli r0, r0, 0x14
/* 8031C840 003184A0 7C C0 40 50 */ subf r6, r0, r8
/* 8031C844 003184A4 4C C6 31 82 */ crclr 6
/* 8031C848 003184A8 4B EB 02 B5 */ bl sprintf
/* 8031C84C 003184AC 38 61 00 08 */ addi r3, r1, 8
/* 8031C850 003184B0 48 01 B8 89 */ bl gethostbyname
/* 8031C854 003184B4 2C 03 00 00 */ cmpwi r3, 0
/* 8031C858 003184B8 41 82 00 0C */ beq lbl_8031C864
lbl_8031C85C:
/* 8031C85C 003184BC 38 60 00 00 */ li r3, 0
/* 8031C860 003184C0 48 00 00 18 */ b lbl_8031C878
lbl_8031C864:
/* 8031C864 003184C4 38 9E 02 34 */ addi r4, r30, 0x234
/* 8031C868 003184C8 38 60 00 08 */ li r3, 8
/* 8031C86C 003184CC 4C C6 31 82 */ crclr 6
/* 8031C870 003184D0 48 00 02 C5 */ bl DWC_Printf
/* 8031C874 003184D4 38 60 FF FF */ li r3, -1
lbl_8031C878:
/* 8031C878 003184D8 39 61 01 20 */ addi r11, r1, 0x120
/* 8031C87C 003184DC 4B EA A8 F5 */ bl _restgpr_26
/* 8031C880 003184E0 80 01 01 24 */ lwz r0, 0x124(r1)
/* 8031C884 003184E4 7C 08 03 A6 */ mtlr r0
/* 8031C888 003184E8 38 21 01 20 */ addi r1, r1, 0x120
/* 8031C88C 003184EC 4E 80 00 20 */ blr
.global DWC_Shutdown
DWC_Shutdown:
/* 8031C890 003184F0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8031C894 003184F4 7C 08 02 A6 */ mflr r0
/* 8031C898 003184F8 3C 60 80 32 */ lis r3, DWCi_GsMalloc@ha
/* 8031C89C 003184FC 3C 80 80 32 */ lis r4, DWCi_GsFree@ha
/* 8031C8A0 00318500 3C A0 80 32 */ lis r5, DWCi_GsRealloc@ha
/* 8031C8A4 00318504 3C C0 80 32 */ lis r6, DWCi_GsMemalign@ha
/* 8031C8A8 00318508 90 01 00 14 */ stw r0, 0x14(r1)
/* 8031C8AC 0031850C 38 63 C9 A4 */ addi r3, r3, DWCi_GsMalloc@l
/* 8031C8B0 00318510 38 84 CA B4 */ addi r4, r4, DWCi_GsFree@l
/* 8031C8B4 00318514 38 A5 C9 F8 */ addi r5, r5, DWCi_GsRealloc@l
/* 8031C8B8 00318518 38 C6 CA D8 */ addi r6, r6, DWCi_GsMemalign@l
/* 8031C8BC 0031851C 48 01 CA 3D */ bl gsiMemoryCallbacksSet
/* 8031C8C0 00318520 38 6D 8D 38 */ addi r3, r13, lbl_8063DFF8-_SDA_BASE_
/* 8031C8C4 00318524 48 01 B8 15 */ bl gethostbyname
/* 8031C8C8 00318528 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8031C8CC 0031852C 7C 08 03 A6 */ mtlr r0
/* 8031C8D0 00318530 38 21 00 10 */ addi r1, r1, 0x10
/* 8031C8D4 00318534 4E 80 00 20 */ blr
.global DWCi_GetGamecode
DWCi_GetGamecode:
/* 8031C8D8 00318538 80 6D B0 18 */ lwz r3, lbl_806402D8-_SDA_BASE_(r13)
/* 8031C8DC 0031853C 4E 80 00 20 */ blr
|