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
|
.include "macros.inc"
.section .text, "ax" # 0x80006980 - 0x803E1E60
.global __SCF1
__SCF1:
/* 802EC78C 002E83EC 3C C0 73 B6 */ lis r6, 0x73B5DBFA@ha
/* 802EC790 002E83F0 38 00 00 80 */ li r0, 0x80
/* 802EC794 002E83F4 39 66 DB FA */ addi r11, r6, 0x73B5DBFA@l
/* 802EC798 002E83F8 39 20 00 00 */ li r9, 0
/* 802EC79C 002E83FC 39 80 00 00 */ li r12, 0
/* 802EC7A0 002E8400 38 C0 00 00 */ li r6, 0
/* 802EC7A4 002E8404 39 40 00 00 */ li r10, 0
/* 802EC7A8 002E8408 7C 09 03 A6 */ mtctr r0
lbl_802EC7AC:
/* 802EC7AC 002E840C 3D 0A 80 00 */ addis r8, r10, 0x8000
/* 802EC7B0 002E8410 89 08 38 00 */ lbz r8, 0x3800(r8)
/* 802EC7B4 002E8414 2C 08 00 00 */ cmpwi r8, 0
/* 802EC7B8 002E8418 41 82 00 48 */ beq lbl_802EC800
/* 802EC7BC 002E841C 7C E3 60 AE */ lbzx r7, r3, r12
/* 802EC7C0 002E8420 7D 00 5A 78 */ xor r0, r8, r11
/* 802EC7C4 002E8424 54 08 06 3E */ clrlwi r8, r0, 0x18
/* 802EC7C8 002E8428 7C E0 07 75 */ extsb. r0, r7
/* 802EC7CC 002E842C 40 82 00 14 */ bne lbl_802EC7E0
/* 802EC7D0 002E8430 28 08 00 3D */ cmplwi r8, 0x3d
/* 802EC7D4 002E8434 40 82 00 0C */ bne lbl_802EC7E0
/* 802EC7D8 002E8438 39 20 00 01 */ li r9, 1
/* 802EC7DC 002E843C 48 00 00 9C */ b lbl_802EC878
lbl_802EC7E0:
/* 802EC7E0 002E8440 7C E7 07 74 */ extsb r7, r7
/* 802EC7E4 002E8444 38 0C 00 01 */ addi r0, r12, 1
/* 802EC7E8 002E8448 7D 07 3A 78 */ xor r7, r8, r7
/* 802EC7EC 002E844C 70 E7 00 DF */ andi. r7, r7, 0xdf
/* 802EC7F0 002E8450 7C E7 00 34 */ cntlzw r7, r7
/* 802EC7F4 002E8454 54 E7 DF FE */ rlwinm r7, r7, 0x1b, 0x1f, 0x1f
/* 802EC7F8 002E8458 7C E7 00 D0 */ neg r7, r7
/* 802EC7FC 002E845C 7C 0C 38 38 */ and r12, r0, r7
lbl_802EC800:
/* 802EC800 002E8460 39 4A 00 01 */ addi r10, r10, 1
/* 802EC804 002E8464 55 67 0F FE */ srwi r7, r11, 0x1f
/* 802EC808 002E8468 3D 0A 80 00 */ addis r8, r10, 0x8000
/* 802EC80C 002E846C 55 60 08 3C */ slwi r0, r11, 1
/* 802EC810 002E8470 89 08 38 00 */ lbz r8, 0x3800(r8)
/* 802EC814 002E8474 7C EB 03 78 */ or r11, r7, r0
/* 802EC818 002E8478 2C 08 00 00 */ cmpwi r8, 0
/* 802EC81C 002E847C 41 82 00 48 */ beq lbl_802EC864
/* 802EC820 002E8480 7C E3 60 AE */ lbzx r7, r3, r12
/* 802EC824 002E8484 7D 00 5A 78 */ xor r0, r8, r11
/* 802EC828 002E8488 54 08 06 3E */ clrlwi r8, r0, 0x18
/* 802EC82C 002E848C 7C E0 07 75 */ extsb. r0, r7
/* 802EC830 002E8490 40 82 00 14 */ bne lbl_802EC844
/* 802EC834 002E8494 28 08 00 3D */ cmplwi r8, 0x3d
/* 802EC838 002E8498 40 82 00 0C */ bne lbl_802EC844
/* 802EC83C 002E849C 39 20 00 01 */ li r9, 1
/* 802EC840 002E84A0 48 00 00 38 */ b lbl_802EC878
lbl_802EC844:
/* 802EC844 002E84A4 7C E7 07 74 */ extsb r7, r7
/* 802EC848 002E84A8 38 0C 00 01 */ addi r0, r12, 1
/* 802EC84C 002E84AC 7D 07 3A 78 */ xor r7, r8, r7
/* 802EC850 002E84B0 70 E7 00 DF */ andi. r7, r7, 0xdf
/* 802EC854 002E84B4 7C E7 00 34 */ cntlzw r7, r7
/* 802EC858 002E84B8 54 E7 DF FE */ rlwinm r7, r7, 0x1b, 0x1f, 0x1f
/* 802EC85C 002E84BC 7C E7 00 D0 */ neg r7, r7
/* 802EC860 002E84C0 7C 0C 38 38 */ and r12, r0, r7
lbl_802EC864:
/* 802EC864 002E84C4 55 67 0F FE */ srwi r7, r11, 0x1f
/* 802EC868 002E84C8 55 60 08 3C */ slwi r0, r11, 1
/* 802EC86C 002E84CC 7C EB 03 78 */ or r11, r7, r0
/* 802EC870 002E84D0 39 4A 00 01 */ addi r10, r10, 1
/* 802EC874 002E84D4 42 00 FF 38 */ bdnz lbl_802EC7AC
lbl_802EC878:
/* 802EC878 002E84D8 2C 09 00 00 */ cmpwi r9, 0
/* 802EC87C 002E84DC 41 82 00 74 */ beq lbl_802EC8F0
/* 802EC880 002E84E0 39 4A 00 01 */ addi r10, r10, 1
/* 802EC884 002E84E4 48 00 00 5C */ b lbl_802EC8E0
lbl_802EC888:
/* 802EC888 002E84E8 3C 6A 80 00 */ addis r3, r10, 0x8000
/* 802EC88C 002E84EC 55 67 0F FE */ srwi r7, r11, 0x1f
/* 802EC890 002E84F0 88 63 38 00 */ lbz r3, 0x3800(r3)
/* 802EC894 002E84F4 55 60 08 3C */ slwi r0, r11, 1
/* 802EC898 002E84F8 7C EB 03 78 */ or r11, r7, r0
/* 802EC89C 002E84FC 2C 03 00 00 */ cmpwi r3, 0
/* 802EC8A0 002E8500 41 82 00 20 */ beq lbl_802EC8C0
/* 802EC8A4 002E8504 7C 60 5A 78 */ xor r0, r3, r11
/* 802EC8A8 002E8508 54 03 06 3E */ clrlwi r3, r0, 0x18
/* 802EC8AC 002E850C 28 03 00 0D */ cmplwi r3, 0xd
/* 802EC8B0 002E8510 41 82 00 0C */ beq lbl_802EC8BC
/* 802EC8B4 002E8514 28 03 00 0A */ cmplwi r3, 0xa
/* 802EC8B8 002E8518 40 82 00 08 */ bne lbl_802EC8C0
lbl_802EC8BC:
/* 802EC8BC 002E851C 38 60 00 00 */ li r3, 0
lbl_802EC8C0:
/* 802EC8C0 002E8520 2C 03 00 00 */ cmpwi r3, 0
/* 802EC8C4 002E8524 98 64 00 00 */ stb r3, 0(r4)
/* 802EC8C8 002E8528 38 C6 00 01 */ addi r6, r6, 1
/* 802EC8CC 002E852C 38 84 00 01 */ addi r4, r4, 1
/* 802EC8D0 002E8530 40 82 00 0C */ bne lbl_802EC8DC
/* 802EC8D4 002E8534 38 60 00 01 */ li r3, 1
/* 802EC8D8 002E8538 4E 80 00 20 */ blr
lbl_802EC8DC:
/* 802EC8DC 002E853C 39 4A 00 01 */ addi r10, r10, 1
lbl_802EC8E0:
/* 802EC8E0 002E8540 28 0A 01 00 */ cmplwi r10, 0x100
/* 802EC8E4 002E8544 40 80 00 0C */ bge lbl_802EC8F0
/* 802EC8E8 002E8548 7C 06 28 40 */ cmplw r6, r5
/* 802EC8EC 002E854C 41 80 FF 9C */ blt lbl_802EC888
lbl_802EC8F0:
/* 802EC8F0 002E8550 38 60 00 00 */ li r3, 0
/* 802EC8F4 002E8554 4E 80 00 20 */ blr
.global SCGetProductArea
SCGetProductArea:
/* 802EC8F8 002E8558 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802EC8FC 002E855C 7C 08 02 A6 */ mflr r0
/* 802EC900 002E8560 38 6D 8B C0 */ addi r3, r13, lbl_8063DE80-_SDA_BASE_
/* 802EC904 002E8564 38 A0 00 04 */ li r5, 4
/* 802EC908 002E8568 90 01 00 24 */ stw r0, 0x24(r1)
/* 802EC90C 002E856C 38 81 00 08 */ addi r4, r1, 8
/* 802EC910 002E8570 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 802EC914 002E8574 93 C1 00 18 */ stw r30, 0x18(r1)
/* 802EC918 002E8578 3F C0 80 44 */ lis r30, lbl_80445A38@ha
/* 802EC91C 002E857C 3B DE 5A 38 */ addi r30, r30, lbl_80445A38@l
/* 802EC920 002E8580 4B FF FE 6D */ bl __SCF1
/* 802EC924 002E8584 2C 03 00 00 */ cmpwi r3, 0
/* 802EC928 002E8588 41 82 00 38 */ beq lbl_802EC960
/* 802EC92C 002E858C 48 00 00 24 */ b lbl_802EC950
lbl_802EC930:
/* 802EC930 002E8590 38 7E 00 01 */ addi r3, r30, 1
/* 802EC934 002E8594 38 81 00 08 */ addi r4, r1, 8
/* 802EC938 002E8598 4B EE 1B 15 */ bl strcmp
/* 802EC93C 002E859C 2C 03 00 00 */ cmpwi r3, 0
/* 802EC940 002E85A0 40 82 00 0C */ bne lbl_802EC94C
/* 802EC944 002E85A4 7F E3 FB 78 */ mr r3, r31
/* 802EC948 002E85A8 48 00 00 1C */ b lbl_802EC964
lbl_802EC94C:
/* 802EC94C 002E85AC 3B DE 00 05 */ addi r30, r30, 5
lbl_802EC950:
/* 802EC950 002E85B0 8B FE 00 00 */ lbz r31, 0(r30)
/* 802EC954 002E85B4 7F E0 07 74 */ extsb r0, r31
/* 802EC958 002E85B8 2C 00 FF FF */ cmpwi r0, -1
/* 802EC95C 002E85BC 40 82 FF D4 */ bne lbl_802EC930
lbl_802EC960:
/* 802EC960 002E85C0 38 60 FF FF */ li r3, -1
lbl_802EC964:
/* 802EC964 002E85C4 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802EC968 002E85C8 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 802EC96C 002E85CC 83 C1 00 18 */ lwz r30, 0x18(r1)
/* 802EC970 002E85D0 7C 08 03 A6 */ mtlr r0
/* 802EC974 002E85D4 38 21 00 20 */ addi r1, r1, 0x20
/* 802EC978 002E85D8 4E 80 00 20 */ blr
.global SCGetProductCode
SCGetProductCode:
/* 802EC97C 002E85DC 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802EC980 002E85E0 7C 08 02 A6 */ mflr r0
/* 802EC984 002E85E4 38 6D 8B C8 */ addi r3, r13, lbl_8063DE88-_SDA_BASE_
/* 802EC988 002E85E8 38 8D AF 28 */ addi r4, r13, lbl_806401E8-_SDA_BASE_
/* 802EC98C 002E85EC 90 01 00 14 */ stw r0, 0x14(r1)
/* 802EC990 002E85F0 38 A0 00 06 */ li r5, 6
/* 802EC994 002E85F4 4B FF FD F9 */ bl __SCF1
/* 802EC998 002E85F8 2C 03 00 00 */ cmpwi r3, 0
/* 802EC99C 002E85FC 38 60 00 00 */ li r3, 0
/* 802EC9A0 002E8600 41 82 00 08 */ beq lbl_802EC9A8
/* 802EC9A4 002E8604 38 6D AF 28 */ addi r3, r13, lbl_806401E8-_SDA_BASE_
lbl_802EC9A8:
/* 802EC9A8 002E8608 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802EC9AC 002E860C 7C 08 03 A6 */ mtlr r0
/* 802EC9B0 002E8610 38 21 00 10 */ addi r1, r1, 0x10
/* 802EC9B4 002E8614 4E 80 00 20 */ blr
.global SCGetProductSN
SCGetProductSN:
/* 802EC9B8 002E8618 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 802EC9BC 002E861C 7C 08 02 A6 */ mflr r0
/* 802EC9C0 002E8620 38 A0 00 0B */ li r5, 0xb
/* 802EC9C4 002E8624 90 01 00 24 */ stw r0, 0x24(r1)
/* 802EC9C8 002E8628 38 81 00 08 */ addi r4, r1, 8
/* 802EC9CC 002E862C 93 E1 00 1C */ stw r31, 0x1c(r1)
/* 802EC9D0 002E8630 7C 7F 1B 78 */ mr r31, r3
/* 802EC9D4 002E8634 38 6D 8B D0 */ addi r3, r13, lbl_8063DE90-_SDA_BASE_
/* 802EC9D8 002E8638 4B FF FD B5 */ bl __SCF1
/* 802EC9DC 002E863C 2C 03 00 00 */ cmpwi r3, 0
/* 802EC9E0 002E8640 41 82 00 28 */ beq lbl_802ECA08
/* 802EC9E4 002E8644 7F E5 FB 78 */ mr r5, r31
/* 802EC9E8 002E8648 38 61 00 08 */ addi r3, r1, 8
/* 802EC9EC 002E864C 38 8D 8B D8 */ addi r4, r13, lbl_8063DE98-_SDA_BASE_
/* 802EC9F0 002E8650 4C C6 31 82 */ crclr 6
/* 802EC9F4 002E8654 4B EE 18 15 */ bl sscanf
/* 802EC9F8 002E8658 2C 03 00 01 */ cmpwi r3, 1
/* 802EC9FC 002E865C 40 82 00 0C */ bne lbl_802ECA08
/* 802ECA00 002E8660 38 60 00 01 */ li r3, 1
/* 802ECA04 002E8664 48 00 00 08 */ b lbl_802ECA0C
lbl_802ECA08:
/* 802ECA08 002E8668 38 60 00 00 */ li r3, 0
lbl_802ECA0C:
/* 802ECA0C 002E866C 80 01 00 24 */ lwz r0, 0x24(r1)
/* 802ECA10 002E8670 83 E1 00 1C */ lwz r31, 0x1c(r1)
/* 802ECA14 002E8674 7C 08 03 A6 */ mtlr r0
/* 802ECA18 002E8678 38 21 00 20 */ addi r1, r1, 0x20
/* 802ECA1C 002E867C 4E 80 00 20 */ blr
|