summaryrefslogtreecommitdiff
path: root/asm/Dolphin/os/OSResetSW.s
blob: 33dd3ced1cddfdecafeb78dd8c552ef3f16d75c9 (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
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
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
.include "macros.inc"

.section .text

.global func_803707e4
.type func_803707e4, @function
func_803707e4:
/* 803707E4 7C0802A6 */ mflr        r0
/* 803707E8 90010004 */ stw         r0, 4(r1)
/* 803707EC 9421FFD8 */ stwu        r1, -0x28(r1)
/* 803707F0 93E10024 */ stw         r31, 0x24(r1)
/* 803707F4 93C10020 */ stw         r30, 0x20(r1)
/* 803707F8 93A1001C */ stw         r29, 0x1c(r1)
/* 803707FC 48001FE9 */ bl          func_803727e4
/* 80370800 3CA08000 */ lis         r5, 0x8000
/* 80370804 908DCA94 */ stw         r4, lbl_805c68b4@sda21(0)
/* 80370808 800500F8 */ lwz         r0, 0xf8(r5)
/* 8037080C 3C80431C */ lis         r4, 0x431c
/* 80370810 3884DE83 */ addi        r4, r4, -0x217d
/* 80370814 906DCA90 */ stw         r3, lbl_805c68b0@sda21(0)
/* 80370818 5400F0BE */ srwi        r0, r0, 2
/* 8037081C 7C040016 */ mulhwu      r0, r4, r0
/* 80370820 54008BFE */ srwi        r0, r0, 0xf
/* 80370824 1C000064 */ mulli       r0, r0, 0x64
/* 80370828 541DE8FE */ srwi        r29, r0, 3
/* 8037082C 3BC00000 */ li          r30, 0x0
/* 80370830 3FE0CC00 */ lis         r31, 0xcc00
lbl_80370834:
/* 80370834 48001FB1 */ bl          func_803727e4
/* 80370838 80CDCA94 */ lwz         r6, lbl_805c68b4@sda21(0)
/* 8037083C 6FC58000 */ xoris       r5, r30, 0x8000
/* 80370840 800DCA90 */ lwz         r0, lbl_805c68b0@sda21(0)
/* 80370844 7C862010 */ subfc       r4, r6, r4
/* 80370848 7C001910 */ subfe       r0, r0, r3
/* 8037084C 6C038000 */ xoris       r3, r0, 0x8000
/* 80370850 7C1D2010 */ subfc       r0, r29, r4
/* 80370854 7CA51910 */ subfe       r5, r5, r3
/* 80370858 7CA31910 */ subfe       r5, r3, r3
/* 8037085C 7CA500D1 */ neg.        r5, r5
/* 80370860 41820010 */ beq-        lbl_80370870
/* 80370864 801F3000 */ lwz         r0, 0x3000(r31)
/* 80370868 540003DF */ rlwinm.     r0, r0, 0, 0xf, 0xf
/* 8037086C 4182FFC8 */ beq+        lbl_80370834
lbl_80370870:
/* 80370870 3C60CC00 */ lis         r3, 0xcc00
/* 80370874 80033000 */ lwz         r0, 0x3000(r3)
/* 80370878 540003DF */ rlwinm.     r0, r0, 0, 0xf, 0xf
/* 8037087C 40820034 */ bne-        lbl_803708b0
/* 80370880 38000001 */ li          r0, 0x1
/* 80370884 900DCA7C */ stw         r0, lbl_805c689c@sda21(0)
/* 80370888 38600200 */ li          r3, 0x200
/* 8037088C 900DCA80 */ stw         r0, lbl_805c68a0@sda21(0)
/* 80370890 4BFFE60D */ bl          func_8036ee9c
/* 80370894 818DCA78 */ lwz         r12, lbl_805c6898@sda21(0)
/* 80370898 280C0000 */ cmplwi      r12, 0
/* 8037089C 41820014 */ beq-        lbl_803708b0
/* 803708A0 38000000 */ li          r0, 0x0
/* 803708A4 7D8803A6 */ mtlr        r12
/* 803708A8 900DCA78 */ stw         r0, lbl_805c6898@sda21(0)
/* 803708AC 4E800021 */ blrl        
lbl_803708b0:
/* 803708B0 38000002 */ li          r0, 0x2
/* 803708B4 3C60CC00 */ lis         r3, 0xcc00
/* 803708B8 90033000 */ stw         r0, 0x3000(r3)
/* 803708BC 8001002C */ lwz         r0, 0x2c(r1)
/* 803708C0 83E10024 */ lwz         r31, 0x24(r1)
/* 803708C4 83C10020 */ lwz         r30, 0x20(r1)
/* 803708C8 83A1001C */ lwz         r29, 0x1c(r1)
/* 803708CC 38210028 */ addi        r1, r1, 0x28
/* 803708D0 7C0803A6 */ mtlr        r0
/* 803708D4 4E800020 */ blr         
.size func_803707e4, . - func_803707e4


.global func_803708d8
.type func_803708d8, @function
func_803708d8:
/* 803708D8 7C0802A6 */ mflr        r0
/* 803708DC 90010004 */ stw         r0, 4(r1)
/* 803708E0 9421FFE8 */ stwu        r1, -0x18(r1)
/* 803708E4 93E10014 */ stw         r31, 0x14(r1)
/* 803708E8 93C10010 */ stw         r30, 0x10(r1)
/* 803708EC 93A1000C */ stw         r29, 0xc(r1)
/* 803708F0 4BFFE1E5 */ bl          func_8036ead4
/* 803708F4 7C7E1B78 */ mr          r30, r3
/* 803708F8 48001EED */ bl          func_803727e4
/* 803708FC 3CA0CC00 */ lis         r5, 0xcc00
/* 80370900 80053000 */ lwz         r0, 0x3000(r5)
/* 80370904 540003DF */ rlwinm.     r0, r0, 0, 0xf, 0xf
/* 80370908 408200DC */ bne-        lbl_803709e4
/* 8037090C 800DCA7C */ lwz         r0, lbl_805c689c@sda21(0)
/* 80370910 2C000000 */ cmpwi       r0, 0x0
/* 80370914 40820040 */ bne-        lbl_80370954
/* 80370918 800DCA88 */ lwz         r0, lbl_805c68a8@sda21(0)
/* 8037091C 38C00000 */ li          r6, 0x0
/* 80370920 80ADCA8C */ lwz         r5, lbl_805c68ac@sda21(0)
/* 80370924 38E00001 */ li          r7, 0x1
/* 80370928 7C003278 */ xor         r0, r0, r6
/* 8037092C 7CA53278 */ xor         r5, r5, r6
/* 80370930 90EDCA7C */ stw         r7, lbl_805c689c@sda21(0)
/* 80370934 7CA00379 */ or.         r0, r5, r0
/* 80370938 41820008 */ beq-        lbl_80370940
/* 8037093C 48000008 */ b           lbl_80370944
lbl_80370940:
/* 80370940 7CC73378 */ mr          r7, r6
lbl_80370944:
/* 80370944 908DCA94 */ stw         r4, lbl_805c68b4@sda21(0)
/* 80370948 7CFD3B78 */ mr          r29, r7
/* 8037094C 906DCA90 */ stw         r3, lbl_805c68b0@sda21(0)
/* 80370950 48000148 */ b           lbl_80370a98
lbl_80370954:
/* 80370954 800DCA88 */ lwz         r0, lbl_805c68a8@sda21(0)
/* 80370958 39200000 */ li          r9, 0x0
/* 8037095C 80ADCA8C */ lwz         r5, lbl_805c68ac@sda21(0)
/* 80370960 39400001 */ li          r10, 0x1
/* 80370964 7C004A78 */ xor         r0, r0, r9
/* 80370968 7CA54A78 */ xor         r5, r5, r9
/* 8037096C 7CA00379 */ or.         r0, r5, r0
/* 80370970 40820058 */ bne-        lbl_803709c8
/* 80370974 3CC08000 */ lis         r6, 0x8000
/* 80370978 80ADCA94 */ lwz         r5, lbl_805c68b4@sda21(0)
/* 8037097C 80E600F8 */ lwz         r7, 0xf8(r6)
/* 80370980 3CC0431C */ lis         r6, 0x431c
/* 80370984 3906DE83 */ addi        r8, r6, -0x217d
/* 80370988 800DCA90 */ lwz         r0, lbl_805c68b0@sda21(0)
/* 8037098C 54E6F0BE */ srwi        r6, r7, 2
/* 80370990 7CC83016 */ mulhwu      r6, r8, r6
/* 80370994 54C68BFE */ srwi        r6, r6, 0xf
/* 80370998 1CC60064 */ mulli       r6, r6, 0x64
/* 8037099C 7CE52010 */ subfc       r7, r5, r4
/* 803709A0 7C001910 */ subfe       r0, r0, r3
/* 803709A4 54C8E8FE */ srwi        r8, r6, 3
/* 803709A8 6C058000 */ xoris       r5, r0, 0x8000
/* 803709AC 6D268000 */ xoris       r6, r9, 0x8000
/* 803709B0 7C074010 */ subfc       r0, r7, r8
/* 803709B4 7CA53110 */ subfe       r5, r5, r6
/* 803709B8 7CA63110 */ subfe       r5, r6, r6
/* 803709BC 7CA500D1 */ neg.        r5, r5
/* 803709C0 40820008 */ bne-        lbl_803709c8
/* 803709C4 7D2A4B78 */ mr          r10, r9
lbl_803709c8:
/* 803709C8 2C0A0000 */ cmpwi       r10, 0x0
/* 803709CC 4182000C */ beq-        lbl_803709d8
/* 803709D0 38000001 */ li          r0, 0x1
/* 803709D4 48000008 */ b           lbl_803709dc
lbl_803709d8:
/* 803709D8 38000000 */ li          r0, 0x0
lbl_803709dc:
/* 803709DC 7C1D0378 */ mr          r29, r0
/* 803709E0 480000B8 */ b           lbl_80370a98
lbl_803709e4:
/* 803709E4 800DCA7C */ lwz         r0, lbl_805c689c@sda21(0)
/* 803709E8 2C000000 */ cmpwi       r0, 0x0
/* 803709EC 41820034 */ beq-        lbl_80370a20
/* 803709F0 80ADCA80 */ lwz         r5, lbl_805c68a0@sda21(0)
/* 803709F4 38000000 */ li          r0, 0x0
/* 803709F8 900DCA7C */ stw         r0, lbl_805c689c@sda21(0)
/* 803709FC 2C050000 */ cmpwi       r5, 0x0
/* 80370A00 3BA50000 */ addi        r29, r5, 0x0
/* 80370A04 41820010 */ beq-        lbl_80370a14
/* 80370A08 908DCA8C */ stw         r4, lbl_805c68ac@sda21(0)
/* 80370A0C 906DCA88 */ stw         r3, lbl_805c68a8@sda21(0)
/* 80370A10 48000088 */ b           lbl_80370a98
lbl_80370a14:
/* 80370A14 900DCA8C */ stw         r0, lbl_805c68ac@sda21(0)
/* 80370A18 900DCA88 */ stw         r0, lbl_805c68a8@sda21(0)
/* 80370A1C 4800007C */ b           lbl_80370a98
lbl_80370a20:
/* 80370A20 80CDCA88 */ lwz         r6, lbl_805c68a8@sda21(0)
/* 80370A24 39000000 */ li          r8, 0x0
/* 80370A28 80EDCA8C */ lwz         r7, lbl_805c68ac@sda21(0)
/* 80370A2C 7CC04278 */ xor         r0, r6, r8
/* 80370A30 7CE54278 */ xor         r5, r7, r8
/* 80370A34 7CA00379 */ or.         r0, r5, r0
/* 80370A38 41820050 */ beq-        lbl_80370a88
/* 80370A3C 3CA08000 */ lis         r5, 0x8000
/* 80370A40 800500F8 */ lwz         r0, 0xf8(r5)
/* 80370A44 3CA01062 */ lis         r5, 0x1062
/* 80370A48 38A54DD3 */ addi        r5, r5, 0x4dd3
/* 80370A4C 5400F0BE */ srwi        r0, r0, 2
/* 80370A50 7C050016 */ mulhwu      r0, r5, r0
/* 80370A54 5400D1BE */ srwi        r0, r0, 6
/* 80370A58 1C000028 */ mulli       r0, r0, 0x28
/* 80370A5C 7CE72010 */ subfc       r7, r7, r4
/* 80370A60 7CA61910 */ subfe       r5, r6, r3
/* 80370A64 6CA68000 */ xoris       r6, r5, 0x8000
/* 80370A68 6D058000 */ xoris       r5, r8, 0x8000
/* 80370A6C 7C003810 */ subfc       r0, r0, r7
/* 80370A70 7CA53110 */ subfe       r5, r5, r6
/* 80370A74 7CA63110 */ subfe       r5, r6, r6
/* 80370A78 7CA500D1 */ neg.        r5, r5
/* 80370A7C 4182000C */ beq-        lbl_80370a88
/* 80370A80 3BA00001 */ li          r29, 0x1
/* 80370A84 48000014 */ b           lbl_80370a98
lbl_80370a88:
/* 80370A88 38000000 */ li          r0, 0x0
/* 80370A8C 900DCA8C */ stw         r0, lbl_805c68ac@sda21(0)
/* 80370A90 3BA00000 */ li          r29, 0x0
/* 80370A94 900DCA88 */ stw         r0, lbl_805c68a8@sda21(0)
lbl_80370a98:
/* 80370A98 3CA08000 */ lis         r5, 0x8000
/* 80370A9C 93ADCA80 */ stw         r29, lbl_805c68a0@sda21(0)
/* 80370AA0 880530E3 */ lbz         r0, 0x30e3(r5)
/* 80370AA4 540006BF */ clrlwi.     r0, r0, 0x1a
/* 80370AA8 418200A0 */ beq-        lbl_80370b48
/* 80370AAC 1D40003C */ mulli       r10, r0, 0x3c
/* 80370AB0 800500F8 */ lwz         r0, 0xf8(r5)
/* 80370AB4 812DCA24 */ lwz         r9, lbl_805c6844@sda21(0)
/* 80370AB8 810DCA20 */ lwz         r8, lbl_805c6840@sda21(0)
/* 80370ABC 5406F0BE */ srwi        r6, r0, 2
/* 80370AC0 7D40FE70 */ srawi       r0, r10, 0x1f
/* 80370AC4 7CE031D6 */ mullw       r7, r0, r6
/* 80370AC8 7C0A3016 */ mulhwu      r0, r10, r6
/* 80370ACC 7CAA31D6 */ mullw       r5, r10, r6
/* 80370AD0 7D292814 */ addc        r9, r9, r5
/* 80370AD4 3BE00000 */ li          r31, 0x0
/* 80370AD8 7CE70214 */ add         r7, r7, r0
/* 80370ADC 7C0AF9D6 */ mullw       r0, r10, r31
/* 80370AE0 7C070214 */ add         r0, r7, r0
/* 80370AE4 7D080114 */ adde        r8, r8, r0
/* 80370AE8 6D078000 */ xoris       r7, r8, 0x8000
/* 80370AEC 6C658000 */ xoris       r5, r3, 0x8000
/* 80370AF0 7C044810 */ subfc       r0, r4, r9
/* 80370AF4 7CA53910 */ subfe       r5, r5, r7
/* 80370AF8 7CA73910 */ subfe       r5, r7, r7
/* 80370AFC 7CA500D1 */ neg.        r5, r5
/* 80370B00 41820048 */ beq-        lbl_80370b48
/* 80370B04 7C892010 */ subfc       r4, r9, r4
/* 80370B08 7C681910 */ subfe       r3, r8, r3
/* 80370B0C 38A00000 */ li          r5, 0x0
/* 80370B10 48022AA1 */ bl          func_803935b0
/* 80370B14 38A00000 */ li          r5, 0x0
/* 80370B18 38C00002 */ li          r6, 0x2
/* 80370B1C 48022A95 */ bl          func_803935b0
/* 80370B20 38000001 */ li          r0, 0x1
/* 80370B24 7C840038 */ and         r4, r4, r0
/* 80370B28 7C60F838 */ and         r0, r3, r31
/* 80370B2C 7C83FA78 */ xor         r3, r4, r31
/* 80370B30 7C00FA78 */ xor         r0, r0, r31
/* 80370B34 7C600379 */ or.         r0, r3, r0
/* 80370B38 4082000C */ bne-        lbl_80370b44
/* 80370B3C 3BA00001 */ li          r29, 0x1
/* 80370B40 48000008 */ b           lbl_80370b48
lbl_80370b44:
/* 80370B44 3BA00000 */ li          r29, 0x0
lbl_80370b48:
/* 80370B48 7FC3F378 */ mr          r3, r30
/* 80370B4C 4BFFDFB1 */ bl          func_8036eafc
/* 80370B50 7FA3EB78 */ mr          r3, r29
/* 80370B54 8001001C */ lwz         r0, 0x1c(r1)
/* 80370B58 83E10014 */ lwz         r31, 0x14(r1)
/* 80370B5C 83C10010 */ lwz         r30, 0x10(r1)
/* 80370B60 83A1000C */ lwz         r29, 0xc(r1)
/* 80370B64 38210018 */ addi        r1, r1, 0x18
/* 80370B68 7C0803A6 */ mtlr        r0
/* 80370B6C 4E800020 */ blr         
.size func_803708d8, . - func_803708d8