summaryrefslogtreecommitdiff
path: root/asm/Dolphin/os/OSTime.s
blob: f12669d843e480af075c8fc47e29f0c5eb45f373 (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
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
.include "macros.inc"

.section .text

.global func_803727c4
.type func_803727c4, @function
func_803727c4:
/* 803727C4 7C6D42E6 */ mftbu       r3
/* 803727C8 7C8C42E6 */ mftb        r4, 0x10c
/* 803727CC 7CAD42E6 */ mftbu       r5
/* 803727D0 7C032800 */ cmpw        r3, r5
/* 803727D4 4082FFF0 */ bne-        func_803727c4
/* 803727D8 4E800020 */ blr         
.size func_803727c4, . - func_803727c4


.global func_803727dc
.type func_803727dc, @function
func_803727dc:
/* 803727DC 7C6C42E6 */ mftb        r3, 0x10c
/* 803727E0 4E800020 */ blr         
.size func_803727dc, . - func_803727dc


.global func_803727e4
.type func_803727e4, @function
func_803727e4:
/* 803727E4 7C0802A6 */ mflr        r0
/* 803727E8 90010004 */ stw         r0, 4(r1)
/* 803727EC 9421FFE0 */ stwu        r1, -0x20(r1)
/* 803727F0 93E1001C */ stw         r31, 0x1c(r1)
/* 803727F4 93C10018 */ stw         r30, 0x18(r1)
/* 803727F8 93A10014 */ stw         r29, 0x14(r1)
/* 803727FC 4BFFC2D9 */ bl          func_8036ead4
/* 80372800 7C7F1B78 */ mr          r31, r3
/* 80372804 4BFFFFC1 */ bl          func_803727c4
/* 80372808 3CC08000 */ lis         r6, 0x8000
/* 8037280C 80A630DC */ lwz         r5, 0x30dc(r6)
/* 80372810 800630D8 */ lwz         r0, 0x30d8(r6)
/* 80372814 7FA52014 */ addc        r29, r5, r4
/* 80372818 7FC01914 */ adde        r30, r0, r3
/* 8037281C 7FE3FB78 */ mr          r3, r31
/* 80372820 4BFFC2DD */ bl          func_8036eafc
/* 80372824 7FA4EB78 */ mr          r4, r29
/* 80372828 7FC3F378 */ mr          r3, r30
/* 8037282C 80010024 */ lwz         r0, 0x24(r1)
/* 80372830 83E1001C */ lwz         r31, 0x1c(r1)
/* 80372834 83C10018 */ lwz         r30, 0x18(r1)
/* 80372838 83A10014 */ lwz         r29, 0x14(r1)
/* 8037283C 38210020 */ addi        r1, r1, 0x20
/* 80372840 7C0803A6 */ mtlr        r0
/* 80372844 4E800020 */ blr         
.size func_803727e4, . - func_803727e4


.global func_80372848
.type func_80372848, @function
func_80372848:
/* 80372848 3CA09249 */ lis         r5, 0x9249
/* 8037284C 38052493 */ addi        r0, r5, 0x2493
/* 80372850 38E30006 */ addi        r7, r3, 0x6
/* 80372854 7CC03896 */ mulhw       r6, r0, r7
/* 80372858 3CA0B38D */ lis         r5, 0xb38d
/* 8037285C 3805F9B1 */ addi        r0, r5, -0x64f
/* 80372860 7C001896 */ mulhw       r0, r0, r3
/* 80372864 7CA63A14 */ add         r5, r6, r7
/* 80372868 7CA51670 */ srawi       r5, r5, 2
/* 8037286C 54A60FFE */ srwi        r6, r5, 0x1f
/* 80372870 7CA53214 */ add         r5, r5, r6
/* 80372874 7C001A14 */ add         r0, r0, r3
/* 80372878 1CC50007 */ mulli       r6, r5, 0x7
/* 8037287C 7C004670 */ srawi       r0, r0, 8
/* 80372880 54050FFE */ srwi        r5, r0, 0x1f
/* 80372884 7CA02A14 */ add         r5, r0, r5
/* 80372888 7C063850 */ subf        r0, r6, r7
/* 8037288C 1D65016D */ mulli       r11, r5, 0x16d
/* 80372890 90040018 */ stw         r0, 0x18(r4)
/* 80372894 48000004 */ b           lbl_80372898
lbl_80372898:
/* 80372898 3CC051EC */ lis         r6, 0x51ec
/* 8037289C 3946851F */ addi        r10, r6, -0x7ae1
/* 803728A0 48000004 */ b           lbl_803728a4
lbl_803728a4:
/* 803728A4 4800000C */ b           lbl_803728b0
lbl_803728a8:
/* 803728A8 396BFE93 */ addi        r11, r11, -0x16d
/* 803728AC 38A5FFFF */ addi        r5, r5, -0x1
lbl_803728b0:
/* 803728B0 2C050001 */ cmpwi       r5, 0x1
/* 803728B4 4080000C */ bge-        lbl_803728c0
/* 803728B8 38000000 */ li          r0, 0x0
/* 803728BC 48000038 */ b           lbl_803728f4
lbl_803728c0:
/* 803728C0 3805FFFF */ addi        r0, r5, -0x1
/* 803728C4 7C0A0096 */ mulhw       r0, r10, r0
/* 803728C8 7C083E70 */ srawi       r8, r0, 7
/* 803728CC 7C062E70 */ srawi       r6, r0, 5
/* 803728D0 38050003 */ addi        r0, r5, 0x3
/* 803728D4 54C70FFE */ srwi        r7, r6, 0x1f
/* 803728D8 7C001670 */ srawi       r0, r0, 2
/* 803728DC 55090FFE */ srwi        r9, r8, 0x1f
/* 803728E0 7CC63A14 */ add         r6, r6, r7
/* 803728E4 7C000194 */ addze       r0, r0
/* 803728E8 7CE84A14 */ add         r7, r8, r9
/* 803728EC 7C060050 */ subf        r0, r6, r0
/* 803728F0 7C070214 */ add         r0, r7, r0
lbl_803728f4:
/* 803728F4 7C0B0214 */ add         r0, r11, r0
/* 803728F8 7C030000 */ cmpw        r3, r0
/* 803728FC 4180FFAC */ blt+        lbl_803728a8
/* 80372900 7CA61670 */ srawi       r6, r5, 2
/* 80372904 90A40014 */ stw         r5, 0x14(r4)
/* 80372908 7CC60194 */ addze       r6, r6
/* 8037290C 54C6103A */ slwi        r6, r6, 2
/* 80372910 7CC62810 */ subfc       r6, r6, r5
/* 80372914 7C001850 */ subf        r0, r0, r3
/* 80372918 2C060000 */ cmpwi       r6, 0x0
/* 8037291C 9004001C */ stw         r0, 0x1c(r4)
/* 80372920 38E00001 */ li          r7, 0x1
/* 80372924 39000000 */ li          r8, 0x0
/* 80372928 40820030 */ bne-        lbl_80372958
/* 8037292C 3C6051EC */ lis         r3, 0x51ec
/* 80372930 3863851F */ addi        r3, r3, -0x7ae1
/* 80372934 7C632896 */ mulhw       r3, r3, r5
/* 80372938 7C632E70 */ srawi       r3, r3, 5
/* 8037293C 54660FFE */ srwi        r6, r3, 0x1f
/* 80372940 7C633214 */ add         r3, r3, r6
/* 80372944 1C630064 */ mulli       r3, r3, 0x64
/* 80372948 7C632850 */ subf        r3, r3, r5
/* 8037294C 2C030000 */ cmpwi       r3, 0x0
/* 80372950 41820008 */ beq-        lbl_80372958
/* 80372954 7CE83B78 */ mr          r8, r7
lbl_80372958:
/* 80372958 2C080000 */ cmpwi       r8, 0x0
/* 8037295C 40820030 */ bne-        lbl_8037298c
/* 80372960 3C6051EC */ lis         r3, 0x51ec
/* 80372964 3863851F */ addi        r3, r3, -0x7ae1
/* 80372968 7C632896 */ mulhw       r3, r3, r5
/* 8037296C 7C633E70 */ srawi       r3, r3, 7
/* 80372970 54660FFE */ srwi        r6, r3, 0x1f
/* 80372974 7C633214 */ add         r3, r3, r6
/* 80372978 1C630190 */ mulli       r3, r3, 0x190
/* 8037297C 7C632850 */ subf        r3, r3, r5
/* 80372980 2C030000 */ cmpwi       r3, 0x0
/* 80372984 41820008 */ beq-        lbl_8037298c
/* 80372988 38E00000 */ li          r7, 0x0
lbl_8037298c:
/* 8037298C 2C070000 */ cmpwi       r7, 0x0
/* 80372990 41820010 */ beq-        lbl_803729a0
/* 80372994 3C60804F */ lis         r3, lbl_804ef5d8@ha
/* 80372998 38C3F5D8 */ addi        r6, r3, lbl_804ef5d8@l
/* 8037299C 4800000C */ b           lbl_803729a8
lbl_803729a0:
/* 803729A0 3C60804F */ lis         r3, lbl_804ef5a8@ha
/* 803729A4 38C3F5A8 */ addi        r6, r3, lbl_804ef5a8@l
lbl_803729a8:
/* 803729A8 38E0000C */ li          r7, 0xc
/* 803729AC 38600030 */ li          r3, 0x30
/* 803729B0 48000004 */ b           lbl_803729b4
lbl_803729b4:
/* 803729B4 48000004 */ b           lbl_803729b8
lbl_803729b8:
/* 803729B8 3863FFFC */ addi        r3, r3, -0x4
/* 803729BC 7CA6182E */ lwzx        r5, r6, r3
/* 803729C0 38E7FFFF */ addi        r7, r7, -0x1
/* 803729C4 7C002800 */ cmpw        r0, r5
/* 803729C8 4180FFF0 */ blt+        lbl_803729b8
/* 803729CC 90E40010 */ stw         r7, 0x10(r4)
/* 803729D0 7C66182E */ lwzx        r3, r6, r3
/* 803729D4 7C630050 */ subf        r3, r3, r0
/* 803729D8 38030001 */ addi        r0, r3, 0x1
/* 803729DC 9004000C */ stw         r0, 0xc(r4)
/* 803729E0 4E800020 */ blr         
.size func_80372848, . - func_80372848


.global func_803729e4
.type func_803729e4, @function
func_803729e4:
/* 803729E4 7C0802A6 */ mflr        r0
/* 803729E8 90010004 */ stw         r0, 4(r1)
/* 803729EC 9421FFC8 */ stwu        r1, -0x38(r1)
/* 803729F0 BF21001C */ stmw        r25, 0x1c(r1)
/* 803729F4 7C7D1B78 */ mr          r29, r3
/* 803729F8 7C9E2378 */ mr          r30, r4
/* 803729FC 7CBF2B78 */ mr          r31, r5
/* 80372A00 3F608000 */ lis         r27, 0x8000
/* 80372A04 801B00F8 */ lwz         r0, 0xf8(r27)
/* 80372A08 7FA3EB78 */ mr          r3, r29
/* 80372A0C 7FC4F378 */ mr          r4, r30
/* 80372A10 5406F0BE */ srwi        r6, r0, 2
/* 80372A14 38A00000 */ li          r5, 0x0
/* 80372A18 48020DB5 */ bl          func_803937cc
/* 80372A1C 7C7A1B78 */ mr          r26, r3
/* 80372A20 38A00000 */ li          r5, 0x0
/* 80372A24 7C992378 */ mr          r25, r4
/* 80372A28 6F448000 */ xoris       r4, r26, 0x8000
/* 80372A2C 6CA38000 */ xoris       r3, r5, 0x8000
/* 80372A30 7C05C810 */ subfc       r0, r5, r25
/* 80372A34 7C632110 */ subfe       r3, r3, r4
/* 80372A38 7C642110 */ subfe       r3, r4, r4
/* 80372A3C 7C6300D0 */ neg         r3, r3
/* 80372A40 2C030000 */ cmpwi       r3, 0x0
/* 80372A44 41820014 */ beq-        lbl_80372a58
/* 80372A48 801B00F8 */ lwz         r0, 0xf8(r27)
/* 80372A4C 5400F0BE */ srwi        r0, r0, 2
/* 80372A50 7F390014 */ addc        r25, r25, r0
/* 80372A54 7F5A2914 */ adde        r26, r26, r5
lbl_80372a58:
/* 80372A58 38800008 */ li          r4, 0x8
/* 80372A5C 7C7A21D6 */ mullw       r3, r26, r4
/* 80372A60 7C192016 */ mulhwu      r0, r25, r4
/* 80372A64 3F608000 */ lis         r27, 0x8000
/* 80372A68 80DB00F8 */ lwz         r6, 0xf8(r27)
/* 80372A6C 3CA0431C */ lis         r5, 0x431c
/* 80372A70 38A5DE83 */ addi        r5, r5, -0x217d
/* 80372A74 54C6F0BE */ srwi        r6, r6, 2
/* 80372A78 7CA53016 */ mulhwu      r5, r5, r6
/* 80372A7C 54A68BFE */ srwi        r6, r5, 0xf
/* 80372A80 3B800000 */ li          r28, 0x0
/* 80372A84 7C630214 */ add         r3, r3, r0
/* 80372A88 7C19E1D6 */ mullw       r0, r25, r28
/* 80372A8C 7C9921D6 */ mullw       r4, r25, r4
/* 80372A90 7C630214 */ add         r3, r3, r0
/* 80372A94 38A00000 */ li          r5, 0x0
/* 80372A98 48020B19 */ bl          func_803935b0
/* 80372A9C 38A00000 */ li          r5, 0x0
/* 80372AA0 38C003E8 */ li          r6, 0x3e8
/* 80372AA4 48020D29 */ bl          func_803937cc
/* 80372AA8 909F0024 */ stw         r4, 0x24(r31)
/* 80372AAC 3C601062 */ lis         r3, 0x1062
/* 80372AB0 38A34DD3 */ addi        r5, r3, 0x4dd3
/* 80372AB4 801B00F8 */ lwz         r0, 0xf8(r27)
/* 80372AB8 7F43D378 */ mr          r3, r26
/* 80372ABC 7F24CB78 */ mr          r4, r25
/* 80372AC0 5400F0BE */ srwi        r0, r0, 2
/* 80372AC4 7C050016 */ mulhwu      r0, r5, r0
/* 80372AC8 5406D1BE */ srwi        r6, r0, 6
/* 80372ACC 38A00000 */ li          r5, 0x0
/* 80372AD0 48020AE1 */ bl          func_803935b0
/* 80372AD4 38A00000 */ li          r5, 0x0
/* 80372AD8 38C003E8 */ li          r6, 0x3e8
/* 80372ADC 48020CF1 */ bl          func_803937cc
/* 80372AE0 909F0020 */ stw         r4, 0x20(r31)
/* 80372AE4 7FD9F010 */ subfc       r30, r25, r30
/* 80372AE8 7FBAE910 */ subfe       r29, r26, r29
/* 80372AEC 801B00F8 */ lwz         r0, 0xf8(r27)
/* 80372AF0 3CA00001 */ lis         r5, 1
/* 80372AF4 3B255180 */ addi        r25, r5, 0x5180
/* 80372AF8 7FA3EB78 */ mr          r3, r29
/* 80372AFC 5406F0BE */ srwi        r6, r0, 2
/* 80372B00 7FC4F378 */ mr          r4, r30
/* 80372B04 38A00000 */ li          r5, 0x0
/* 80372B08 48020AA9 */ bl          func_803935b0
/* 80372B0C 7F26CB78 */ mr          r6, r25
/* 80372B10 38A00000 */ li          r5, 0x0
/* 80372B14 48020A9D */ bl          func_803935b0
/* 80372B18 3CA0000B */ lis         r5, 0xb
/* 80372B1C 801B00F8 */ lwz         r0, 0xf8(r27)
/* 80372B20 38A52575 */ addi        r5, r5, 0x2575
/* 80372B24 7F442814 */ addc        r26, r4, r5
/* 80372B28 5406F0BE */ srwi        r6, r0, 2
/* 80372B2C 7C03E114 */ adde        r0, r3, r28
/* 80372B30 7FA3EB78 */ mr          r3, r29
/* 80372B34 7FC4F378 */ mr          r4, r30
/* 80372B38 38A00000 */ li          r5, 0x0
/* 80372B3C 48020A75 */ bl          func_803935b0
/* 80372B40 7F26CB78 */ mr          r6, r25
/* 80372B44 38A00000 */ li          r5, 0x0
/* 80372B48 48020C85 */ bl          func_803937cc
/* 80372B4C 7C9B2378 */ mr          r27, r4
/* 80372B50 2C1B0000 */ cmpwi       r27, 0x0
/* 80372B54 40800010 */ bge-        lbl_80372b64
/* 80372B58 3F7B0001 */ addis       r27, r27, 1
/* 80372B5C 3B5AFFFF */ addi        r26, r26, -0x1
/* 80372B60 3B7B5180 */ addi        r27, r27, 0x5180
lbl_80372b64:
/* 80372B64 7F43D378 */ mr          r3, r26
/* 80372B68 7FE4FB78 */ mr          r4, r31
/* 80372B6C 4BFFFCDD */ bl          func_80372848
/* 80372B70 3C608889 */ lis         r3, 0x8889
/* 80372B74 38A38889 */ addi        r5, r3, -0x7777
/* 80372B78 7C05D896 */ mulhw       r0, r5, r27
/* 80372B7C 7C80DA14 */ add         r4, r0, r27
/* 80372B80 7C802E70 */ srawi       r0, r4, 5
/* 80372B84 54030FFE */ srwi        r3, r0, 0x1f
/* 80372B88 7CE01A14 */ add         r7, r0, r3
/* 80372B8C 7C053896 */ mulhw       r0, r5, r7
/* 80372B90 7C003A14 */ add         r0, r0, r7
/* 80372B94 7C052E70 */ srawi       r5, r0, 5
/* 80372B98 7C002E70 */ srawi       r0, r0, 5
/* 80372B9C 54030FFE */ srwi        r3, r0, 0x1f
/* 80372BA0 7C601A14 */ add         r3, r0, r3
/* 80372BA4 7C802E70 */ srawi       r0, r4, 5
/* 80372BA8 54A60FFE */ srwi        r6, r5, 0x1f
/* 80372BAC 1C83003C */ mulli       r4, r3, 0x3c
/* 80372BB0 54030FFE */ srwi        r3, r0, 0x1f
/* 80372BB4 7CA53214 */ add         r5, r5, r6
/* 80372BB8 7C001A14 */ add         r0, r0, r3
/* 80372BBC 90BF0008 */ stw         r5, 8(r31)
/* 80372BC0 1C00003C */ mulli       r0, r0, 0x3c
/* 80372BC4 7C643850 */ subf        r3, r4, r7
/* 80372BC8 907F0004 */ stw         r3, 4(r31)
/* 80372BCC 7C00D850 */ subf        r0, r0, r27
/* 80372BD0 901F0000 */ stw         r0, 0(r31)
/* 80372BD4 BB21001C */ lmw         r25, 0x1c(r1)
/* 80372BD8 8001003C */ lwz         r0, 0x3c(r1)
/* 80372BDC 38210038 */ addi        r1, r1, 0x38
/* 80372BE0 7C0803A6 */ mtlr        r0
/* 80372BE4 4E800020 */ blr         
.size func_803729e4, . - func_803729e4