summaryrefslogtreecommitdiff
path: root/asm/SDK/WENC/wenc.s
blob: 21827563bc5cdaf3448530af4e816bbdcbddb994 (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
.include "macros.inc"

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

.global WENCGetEncodeData
WENCGetEncodeData:
/* 802ECA20 002E8680  94 21 FF 70 */	stwu r1, -0x90(r1)
/* 802ECA24 002E8684  7C 08 02 A6 */	mflr r0
/* 802ECA28 002E8688  90 01 00 94 */	stw r0, 0x94(r1)
/* 802ECA2C 002E868C  39 61 00 90 */	addi r11, r1, 0x90
/* 802ECA30 002E8690  4B ED A6 D5 */	bl _savegpr_18
/* 802ECA34 002E8694  3D 40 80 40 */	lis r10, lbl_80400004@ha
/* 802ECA38 002E8698  85 2A E0 B8 */	lwzu r9, -0x1f48(r10)
/* 802ECA3C 002E869C  39 66 00 01 */	addi r11, r6, 1
/* 802ECA40 002E86A0  7C 99 23 78 */	mr r25, r4
/* 802ECA44 002E86A4  55 64 0F FE */	srwi r4, r11, 0x1f
/* 802ECA48 002E86A8  81 0A 00 04 */	lwz r8, lbl_80400004@l(r10)
/* 802ECA4C 002E86AC  7C FF 3B 78 */	mr r31, r7
/* 802ECA50 002E86B0  80 0A 00 08 */	lwz r0, 8(r10)
/* 802ECA54 002E86B4  7C 84 5A 14 */	add r4, r4, r11
/* 802ECA58 002E86B8  82 4A 00 0C */	lwz r18, 0xc(r10)
/* 802ECA5C 002E86BC  83 6A 00 10 */	lwz r27, 0x10(r10)
/* 802ECA60 002E86C0  7C DE 33 78 */	mr r30, r6
/* 802ECA64 002E86C4  83 4A 00 14 */	lwz r26, 0x14(r10)
/* 802ECA68 002E86C8  7C 7C 1B 78 */	mr r28, r3
/* 802ECA6C 002E86CC  83 0A 00 18 */	lwz r24, 0x18(r10)
/* 802ECA70 002E86D0  7C BD 2B 78 */	mr r29, r5
/* 802ECA74 002E86D4  82 EA 00 1C */	lwz r23, 0x1c(r10)
/* 802ECA78 002E86D8  7C 85 0E 70 */	srawi r5, r4, 1
/* 802ECA7C 002E86DC  82 CA 00 20 */	lwz r22, 0x20(r10)
/* 802ECA80 002E86E0  7F E3 FB 78 */	mr r3, r31
/* 802ECA84 002E86E4  82 AA 00 24 */	lwz r21, 0x24(r10)
/* 802ECA88 002E86E8  38 80 00 00 */	li r4, 0
/* 802ECA8C 002E86EC  82 8A 00 28 */	lwz r20, 0x28(r10)
/* 802ECA90 002E86F0  82 6A 00 2C */	lwz r19, 0x2c(r10)
/* 802ECA94 002E86F4  81 8A 00 30 */	lwz r12, 0x30(r10)
/* 802ECA98 002E86F8  81 6A 00 34 */	lwz r11, 0x34(r10)
/* 802ECA9C 002E86FC  80 EA 00 38 */	lwz r7, 0x38(r10)
/* 802ECAA0 002E8700  80 CA 00 3C */	lwz r6, 0x3c(r10)
/* 802ECAA4 002E8704  91 21 00 08 */	stw r9, 8(r1)
/* 802ECAA8 002E8708  91 01 00 0C */	stw r8, 0xc(r1)
/* 802ECAAC 002E870C  90 01 00 10 */	stw r0, 0x10(r1)
/* 802ECAB0 002E8710  92 41 00 14 */	stw r18, 0x14(r1)
/* 802ECAB4 002E8714  93 61 00 18 */	stw r27, 0x18(r1)
/* 802ECAB8 002E8718  93 41 00 1C */	stw r26, 0x1c(r1)
/* 802ECABC 002E871C  93 01 00 20 */	stw r24, 0x20(r1)
/* 802ECAC0 002E8720  92 E1 00 24 */	stw r23, 0x24(r1)
/* 802ECAC4 002E8724  92 C1 00 28 */	stw r22, 0x28(r1)
/* 802ECAC8 002E8728  92 A1 00 2C */	stw r21, 0x2c(r1)
/* 802ECACC 002E872C  92 81 00 30 */	stw r20, 0x30(r1)
/* 802ECAD0 002E8730  92 61 00 34 */	stw r19, 0x34(r1)
/* 802ECAD4 002E8734  91 81 00 38 */	stw r12, 0x38(r1)
/* 802ECAD8 002E8738  91 61 00 3C */	stw r11, 0x3c(r1)
/* 802ECADC 002E873C  90 E1 00 40 */	stw r7, 0x40(r1)
/* 802ECAE0 002E8740  90 C1 00 44 */	stw r6, 0x44(r1)
/* 802ECAE4 002E8744  4B D1 76 21 */	bl memset
/* 802ECAE8 002E8748  57 20 07 FF */	clrlwi. r0, r25, 0x1f
/* 802ECAEC 002E874C  40 82 00 20 */	bne lbl_802ECB0C
/* 802ECAF0 002E8750  39 60 00 00 */	li r11, 0
/* 802ECAF4 002E8754  39 80 00 7F */	li r12, 0x7f
/* 802ECAF8 002E8758  38 A0 00 00 */	li r5, 0
/* 802ECAFC 002E875C  3B 60 00 00 */	li r27, 0
/* 802ECB00 002E8760  3B 40 00 00 */	li r26, 0
/* 802ECB04 002E8764  3B 20 00 00 */	li r25, 0
/* 802ECB08 002E8768  48 00 00 1C */	b lbl_802ECB24
lbl_802ECB0C:
/* 802ECB0C 002E876C  81 7C 00 00 */	lwz r11, 0(r28)
/* 802ECB10 002E8770  81 9C 00 04 */	lwz r12, 4(r28)
/* 802ECB14 002E8774  80 BC 00 08 */	lwz r5, 8(r28)
/* 802ECB18 002E8778  83 7C 00 0C */	lwz r27, 0xc(r28)
/* 802ECB1C 002E877C  83 5C 00 10 */	lwz r26, 0x10(r28)
/* 802ECB20 002E8780  83 3C 00 14 */	lwz r25, 0x14(r28)
lbl_802ECB24:
/* 802ECB24 002E8784  3C 60 00 01 */	lis r3, 0x0000FFFF@ha
/* 802ECB28 002E8788  3B 01 00 08 */	addi r24, r1, 8
/* 802ECB2C 002E878C  C8 42 A4 90 */	lfd f2, lbl_80642A90-_SDA2_BASE_(r2)
/* 802ECB30 002E8790  38 83 FF FF */	addi r4, r3, 0x0000FFFF@l
/* 802ECB34 002E8794  38 C0 00 00 */	li r6, 0
/* 802ECB38 002E8798  3C 00 FF FF */	lis r0, 0xffff
/* 802ECB3C 002E879C  3E E0 43 30 */	lis r23, 0x4330
/* 802ECB40 002E87A0  7F C9 03 A6 */	mtctr r30
/* 802ECB44 002E87A4  2C 1E 00 00 */	cmpwi r30, 0
/* 802ECB48 002E87A8  40 81 01 7C */	ble lbl_802ECCC4
lbl_802ECB4C:
/* 802ECB4C 002E87AC  A8 BD 00 00 */	lha r5, 0(r29)
/* 802ECB50 002E87B0  39 40 00 00 */	li r10, 0
/* 802ECB54 002E87B4  39 20 00 00 */	li r9, 0
/* 802ECB58 002E87B8  39 00 00 00 */	li r8, 0
/* 802ECB5C 002E87BC  7C 05 58 00 */	cmpw r5, r11
/* 802ECB60 002E87C0  38 E0 00 00 */	li r7, 0
/* 802ECB64 002E87C4  3B BD 00 02 */	addi r29, r29, 2
/* 802ECB68 002E87C8  40 80 00 08 */	bge lbl_802ECB70
/* 802ECB6C 002E87CC  38 E0 00 01 */	li r7, 1
lbl_802ECB70:
/* 802ECB70 002E87D0  7E 6B 28 50 */	subf r19, r11, r5
/* 802ECB74 002E87D4  7E 65 FE 70 */	srawi r5, r19, 0x1f
/* 802ECB78 002E87D8  7C BB 9A 78 */	xor r27, r5, r19
/* 802ECB7C 002E87DC  7F 65 D8 50 */	subf r27, r5, r27
/* 802ECB80 002E87E0  7C 1B 60 00 */	cmpw r27, r12
/* 802ECB84 002E87E4  41 80 00 0C */	blt lbl_802ECB90
/* 802ECB88 002E87E8  39 00 00 01 */	li r8, 1
/* 802ECB8C 002E87EC  7F 6C D8 50 */	subf r27, r12, r27
lbl_802ECB90:
/* 802ECB90 002E87F0  55 85 0F FE */	srwi r5, r12, 0x1f
/* 802ECB94 002E87F4  7C A5 62 14 */	add r5, r5, r12
/* 802ECB98 002E87F8  7C BA 0E 70 */	srawi r26, r5, 1
/* 802ECB9C 002E87FC  7C 1B D0 00 */	cmpw r27, r26
/* 802ECBA0 002E8800  41 80 00 0C */	blt lbl_802ECBAC
/* 802ECBA4 002E8804  39 20 00 01 */	li r9, 1
/* 802ECBA8 002E8808  7F 7A D8 50 */	subf r27, r26, r27
lbl_802ECBAC:
/* 802ECBAC 002E880C  57 45 0F FE */	srwi r5, r26, 0x1f
/* 802ECBB0 002E8810  7C A5 D2 14 */	add r5, r5, r26
/* 802ECBB4 002E8814  7C B9 0E 70 */	srawi r25, r5, 1
/* 802ECBB8 002E8818  7C 1B C8 00 */	cmpw r27, r25
/* 802ECBBC 002E881C  41 80 00 0C */	blt lbl_802ECBC8
/* 802ECBC0 002E8820  39 40 00 01 */	li r10, 1
/* 802ECBC4 002E8824  7F 79 D8 50 */	subf r27, r25, r27
lbl_802ECBC8:
/* 802ECBC8 002E8828  7E 99 51 D6 */	mullw r20, r25, r10
/* 802ECBCC 002E882C  54 E5 08 3C */	slwi r5, r7, 1
/* 802ECBD0 002E8830  57 33 0F FE */	srwi r19, r25, 0x1f
/* 802ECBD4 002E8834  20 A5 00 01 */	subfic r5, r5, 1
/* 802ECBD8 002E8838  7E 73 CA 14 */	add r19, r19, r25
/* 802ECBDC 002E883C  7E AC 41 D6 */	mullw r21, r12, r8
/* 802ECBE0 002E8840  7E 73 0E 70 */	srawi r19, r19, 1
/* 802ECBE4 002E8844  7E DA 49 D6 */	mullw r22, r26, r9
/* 802ECBE8 002E8848  7E B4 AA 14 */	add r21, r20, r21
/* 802ECBEC 002E884C  7E D3 B2 14 */	add r22, r19, r22
/* 802ECBF0 002E8850  7E D5 B2 14 */	add r22, r21, r22
/* 802ECBF4 002E8854  7C A5 B1 D6 */	mullw r5, r5, r22
/* 802ECBF8 002E8858  7C 05 20 00 */	cmpw r5, r4
/* 802ECBFC 002E885C  40 81 00 08 */	ble lbl_802ECC04
/* 802ECC00 002E8860  38 A3 FF FF */	addi r5, r3, -1
lbl_802ECC04:
/* 802ECC04 002E8864  7C 05 00 00 */	cmpw r5, r0
/* 802ECC08 002E8868  40 80 00 08 */	bge lbl_802ECC10
/* 802ECC0C 002E886C  3C A0 FF FF */	lis r5, 0xffff
lbl_802ECC10:
/* 802ECC10 002E8870  7D 6B 2A 14 */	add r11, r11, r5
/* 802ECC14 002E8874  2C 0B 7F FF */	cmpwi r11, 0x7fff
/* 802ECC18 002E8878  40 81 00 08 */	ble lbl_802ECC20
/* 802ECC1C 002E887C  39 60 7F FF */	li r11, 0x7fff
lbl_802ECC20:
/* 802ECC20 002E8880  2C 0B 80 00 */	cmpwi r11, -32768
/* 802ECC24 002E8884  40 80 00 08 */	bge lbl_802ECC2C
/* 802ECC28 002E8888  39 60 80 00 */	li r11, -32768
lbl_802ECC2C:
/* 802ECC2C 002E888C  6D 8C 80 00 */	xoris r12, r12, 0x8000
/* 802ECC30 002E8890  55 12 10 3A */	slwi r18, r8, 2
/* 802ECC34 002E8894  91 81 00 4C */	stw r12, 0x4c(r1)
/* 802ECC38 002E8898  54 D6 07 FE */	clrlwi r22, r6, 0x1f
/* 802ECC3C 002E889C  55 29 08 3C */	slwi r9, r9, 1
/* 802ECC40 002E88A0  7D 0A 92 14 */	add r8, r10, r18
/* 802ECC44 002E88A4  92 E1 00 48 */	stw r23, 0x48(r1)
/* 802ECC48 002E88A8  7D 09 42 14 */	add r8, r9, r8
/* 802ECC4C 002E88AC  55 08 18 38 */	slwi r8, r8, 3
/* 802ECC50 002E88B0  54 CC 0F FE */	srwi r12, r6, 0x1f
/* 802ECC54 002E88B4  C8 21 00 48 */	lfd f1, 0x48(r1)
/* 802ECC58 002E88B8  7D 29 92 14 */	add r9, r9, r18
/* 802ECC5C 002E88BC  7C 18 44 AE */	lfdx f0, r24, r8
/* 802ECC60 002E88C0  7D 0C 32 14 */	add r8, r12, r6
/* 802ECC64 002E88C4  FC 21 10 28 */	fsub f1, f1, f2
/* 802ECC68 002E88C8  7D 0C 0E 70 */	srawi r12, r8, 1
/* 802ECC6C 002E88CC  54 E8 18 38 */	slwi r8, r7, 3
/* 802ECC70 002E88D0  7C EA 4A 14 */	add r7, r10, r9
/* 802ECC74 002E88D4  7C E8 3A 14 */	add r7, r8, r7
/* 802ECC78 002E88D8  3A D6 FF FF */	addi r22, r22, -1
/* 802ECC7C 002E88DC  FC 01 00 32 */	fmul f0, f1, f0
/* 802ECC80 002E88E0  56 C9 07 7A */	rlwinm r9, r22, 0, 0x1d, 0x1d
/* 802ECC84 002E88E4  54 E7 06 3E */	clrlwi r7, r7, 0x18
/* 802ECC88 002E88E8  7D 1F 60 AE */	lbzx r8, r31, r12
/* 802ECC8C 002E88EC  7C E7 48 30 */	slw r7, r7, r9
/* 802ECC90 002E88F0  7D 07 3B 78 */	or r7, r8, r7
/* 802ECC94 002E88F4  FC 00 00 1E */	fctiwz f0, f0
/* 802ECC98 002E88F8  7C FF 61 AE */	stbx r7, r31, r12
/* 802ECC9C 002E88FC  D8 01 00 50 */	stfd f0, 0x50(r1)
/* 802ECCA0 002E8900  81 81 00 54 */	lwz r12, 0x54(r1)
/* 802ECCA4 002E8904  2C 0C 00 7F */	cmpwi r12, 0x7f
/* 802ECCA8 002E8908  41 81 00 08 */	bgt lbl_802ECCB0
/* 802ECCAC 002E890C  39 80 00 7F */	li r12, 0x7f
lbl_802ECCB0:
/* 802ECCB0 002E8910  2C 0C 60 00 */	cmpwi r12, 0x6000
/* 802ECCB4 002E8914  41 80 00 08 */	blt lbl_802ECCBC
/* 802ECCB8 002E8918  39 80 60 00 */	li r12, 0x6000
lbl_802ECCBC:
/* 802ECCBC 002E891C  38 C6 00 01 */	addi r6, r6, 1
/* 802ECCC0 002E8920  42 00 FE 8C */	bdnz lbl_802ECB4C
lbl_802ECCC4:
/* 802ECCC4 002E8924  91 7C 00 00 */	stw r11, 0(r28)
/* 802ECCC8 002E8928  39 61 00 90 */	addi r11, r1, 0x90
/* 802ECCCC 002E892C  7F C3 F3 78 */	mr r3, r30
/* 802ECCD0 002E8930  91 9C 00 04 */	stw r12, 4(r28)
/* 802ECCD4 002E8934  90 BC 00 08 */	stw r5, 8(r28)
/* 802ECCD8 002E8938  93 7C 00 0C */	stw r27, 0xc(r28)
/* 802ECCDC 002E893C  93 5C 00 10 */	stw r26, 0x10(r28)
/* 802ECCE0 002E8940  93 3C 00 14 */	stw r25, 0x14(r28)
/* 802ECCE4 002E8944  4B ED A4 6D */	bl _restgpr_18
/* 802ECCE8 002E8948  80 01 00 94 */	lwz r0, 0x94(r1)
/* 802ECCEC 002E894C  7C 08 03 A6 */	mtlr r0
/* 802ECCF0 002E8950  38 21 00 90 */	addi r1, r1, 0x90
/* 802ECCF4 002E8954  4E 80 00 20 */	blr