summaryrefslogtreecommitdiff
path: root/asm/SDK/SC/scapi_prdinfo.s
blob: c242d6c64dd3117bcc61671edec469f76c524995 (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
.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