summaryrefslogtreecommitdiff
path: root/asm/SDK/OS/OSTime.s
blob: f8f40faec739f8c406dde59ebb081a7d05d51d3c (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
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
.include "macros.inc"

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

.global OSGetTime
OSGetTime:
/* 802727B8 0026E418  7C 6D 42 E6 */	mftbu r3
/* 802727BC 0026E41C  7C 8C 42 E6 */	mftb r4, 0x10c
/* 802727C0 0026E420  7C AD 42 E6 */	mftbu r5
/* 802727C4 0026E424  7C 03 28 00 */	cmpw r3, r5
/* 802727C8 0026E428  40 82 FF F0 */	bne OSGetTime
/* 802727CC 0026E42C  4E 80 00 20 */	blr

.global OSGetTick
OSGetTick:
/* 802727D0 0026E430  7C 6C 42 E6 */	mftb r3, 0x10c
/* 802727D4 0026E434  4E 80 00 20 */	blr

.global __OSGetSystemTime
__OSGetSystemTime:
/* 802727D8 0026E438  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802727DC 0026E43C  7C 08 02 A6 */	mflr r0
/* 802727E0 0026E440  90 01 00 24 */	stw r0, 0x24(r1)
/* 802727E4 0026E444  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802727E8 0026E448  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802727EC 0026E44C  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802727F0 0026E450  4B FF BF 6D */	bl OSDisableInterrupts
/* 802727F4 0026E454  7C 7F 1B 78 */	mr r31, r3
/* 802727F8 0026E458  4B FF FF C1 */	bl OSGetTime
/* 802727FC 0026E45C  3C C0 80 00 */	lis r6, 0x800030DC@ha
/* 80272800 0026E460  80 A6 30 DC */	lwz r5, 0x800030DC@l(r6)
/* 80272804 0026E464  80 06 30 D8 */	lwz r0, 0x30d8(r6)
/* 80272808 0026E468  7F A5 20 14 */	addc r29, r5, r4
/* 8027280C 0026E46C  7F C0 19 14 */	adde r30, r0, r3
/* 80272810 0026E470  7F E3 FB 78 */	mr r3, r31
/* 80272814 0026E474  4B FF BF 71 */	bl OSRestoreInterrupts
/* 80272818 0026E478  7F A4 EB 78 */	mr r4, r29
/* 8027281C 0026E47C  7F C3 F3 78 */	mr r3, r30
/* 80272820 0026E480  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 80272824 0026E484  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 80272828 0026E488  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 8027282C 0026E48C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80272830 0026E490  7C 08 03 A6 */	mtlr r0
/* 80272834 0026E494  38 21 00 20 */	addi r1, r1, 0x20
/* 80272838 0026E498  4E 80 00 20 */	blr

.global __OSTimeToSystemTime
__OSTimeToSystemTime:
/* 8027283C 0026E49C  94 21 FF F0 */	stwu r1, -0x10(r1)
/* 80272840 0026E4A0  7C 08 02 A6 */	mflr r0
/* 80272844 0026E4A4  90 01 00 14 */	stw r0, 0x14(r1)
/* 80272848 0026E4A8  93 E1 00 0C */	stw r31, 0xc(r1)
/* 8027284C 0026E4AC  7C 7F 1B 78 */	mr r31, r3
/* 80272850 0026E4B0  93 C1 00 08 */	stw r30, 8(r1)
/* 80272854 0026E4B4  7C 9E 23 78 */	mr r30, r4
/* 80272858 0026E4B8  4B FF BF 05 */	bl OSDisableInterrupts
/* 8027285C 0026E4BC  3C A0 80 00 */	lis r5, 0x800030DC@ha
/* 80272860 0026E4C0  80 85 30 DC */	lwz r4, 0x800030DC@l(r5)
/* 80272864 0026E4C4  80 05 30 D8 */	lwz r0, 0x30d8(r5)
/* 80272868 0026E4C8  7F C4 F0 14 */	addc r30, r4, r30
/* 8027286C 0026E4CC  7F E0 F9 14 */	adde r31, r0, r31
/* 80272870 0026E4D0  4B FF BF 15 */	bl OSRestoreInterrupts
/* 80272874 0026E4D4  7F E3 FB 78 */	mr r3, r31
/* 80272878 0026E4D8  7F C4 F3 78 */	mr r4, r30
/* 8027287C 0026E4DC  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 80272880 0026E4E0  83 C1 00 08 */	lwz r30, 8(r1)
/* 80272884 0026E4E4  80 01 00 14 */	lwz r0, 0x14(r1)
/* 80272888 0026E4E8  7C 08 03 A6 */	mtlr r0
/* 8027288C 0026E4EC  38 21 00 10 */	addi r1, r1, 0x10
/* 80272890 0026E4F0  4E 80 00 20 */	blr

.global GetDates
GetDates:
/* 80272894 0026E4F4  3C E0 92 49 */	lis r7, 0x92492493@ha
/* 80272898 0026E4F8  3C C0 B3 8D */	lis r6, 0xB38CF9B1@ha
/* 8027289C 0026E4FC  39 03 00 06 */	addi r8, r3, 6
/* 802728A0 0026E500  3C A0 51 EC */	lis r5, 0x51EB851F@ha
/* 802728A4 0026E504  38 06 F9 B1 */	addi r0, r6, 0xB38CF9B1@l
/* 802728A8 0026E508  38 E7 24 93 */	addi r7, r7, 0x92492493@l
/* 802728AC 0026E50C  7C C7 40 96 */	mulhw r6, r7, r8
/* 802728B0 0026E510  39 45 85 1F */	addi r10, r5, 0x51EB851F@l
/* 802728B4 0026E514  7C 00 18 96 */	mulhw r0, r0, r3
/* 802728B8 0026E518  7C A6 42 14 */	add r5, r6, r8
/* 802728BC 0026E51C  7C A5 16 70 */	srawi r5, r5, 2
/* 802728C0 0026E520  54 A6 0F FE */	srwi r6, r5, 0x1f
/* 802728C4 0026E524  7C A5 32 14 */	add r5, r5, r6
/* 802728C8 0026E528  7C 00 1A 14 */	add r0, r0, r3
/* 802728CC 0026E52C  1C C5 00 07 */	mulli r6, r5, 7
/* 802728D0 0026E530  7C 00 46 70 */	srawi r0, r0, 8
/* 802728D4 0026E534  54 05 0F FE */	srwi r5, r0, 0x1f
/* 802728D8 0026E538  7C A0 2A 14 */	add r5, r0, r5
/* 802728DC 0026E53C  7C 06 40 50 */	subf r0, r6, r8
/* 802728E0 0026E540  1D 65 01 6D */	mulli r11, r5, 0x16d
/* 802728E4 0026E544  90 04 00 18 */	stw r0, 0x18(r4)
/* 802728E8 0026E548  48 00 00 0C */	b lbl_802728F4
lbl_802728EC:
/* 802728EC 0026E54C  39 6B FE 93 */	addi r11, r11, -365
/* 802728F0 0026E550  38 A5 FF FF */	addi r5, r5, -1
lbl_802728F4:
/* 802728F4 0026E554  2C 05 00 01 */	cmpwi r5, 1
/* 802728F8 0026E558  41 80 00 3C */	blt lbl_80272934
/* 802728FC 0026E55C  38 C5 FF FF */	addi r6, r5, -1
/* 80272900 0026E560  38 05 00 03 */	addi r0, r5, 3
/* 80272904 0026E564  7C CA 30 96 */	mulhw r6, r10, r6
/* 80272908 0026E568  7C C8 3E 70 */	srawi r8, r6, 7
/* 8027290C 0026E56C  7C C6 2E 70 */	srawi r6, r6, 5
/* 80272910 0026E570  54 C7 0F FE */	srwi r7, r6, 0x1f
/* 80272914 0026E574  7C 00 16 70 */	srawi r0, r0, 2
/* 80272918 0026E578  55 09 0F FE */	srwi r9, r8, 0x1f
/* 8027291C 0026E57C  7C C6 3A 14 */	add r6, r6, r7
/* 80272920 0026E580  7C 00 01 94 */	addze r0, r0
/* 80272924 0026E584  7C E8 4A 14 */	add r7, r8, r9
/* 80272928 0026E588  7C 06 00 50 */	subf r0, r6, r0
/* 8027292C 0026E58C  7C 07 02 14 */	add r0, r7, r0
/* 80272930 0026E590  48 00 00 08 */	b lbl_80272938
lbl_80272934:
/* 80272934 0026E594  38 00 00 00 */	li r0, 0
lbl_80272938:
/* 80272938 0026E598  7D 0B 02 14 */	add r8, r11, r0
/* 8027293C 0026E59C  7C 03 40 00 */	cmpw r3, r8
/* 80272940 0026E5A0  41 80 FF AC */	blt lbl_802728EC
/* 80272944 0026E5A4  54 A0 F0 02 */	slwi r0, r5, 0x1e
/* 80272948 0026E5A8  54 A7 0F FE */	srwi r7, r5, 0x1f
/* 8027294C 0026E5AC  7C C7 00 50 */	subf r6, r7, r0
/* 80272950 0026E5B0  90 A4 00 14 */	stw r5, 0x14(r4)
/* 80272954 0026E5B4  7C 08 18 50 */	subf r0, r8, r3
/* 80272958 0026E5B8  54 C3 10 3E */	rotlwi r3, r6, 2
/* 8027295C 0026E5BC  90 04 00 1C */	stw r0, 0x1c(r4)
/* 80272960 0026E5C0  7C 63 3A 15 */	add. r3, r3, r7
/* 80272964 0026E5C4  38 E0 00 00 */	li r7, 0
/* 80272968 0026E5C8  40 82 00 28 */	bne lbl_80272990
/* 8027296C 0026E5CC  3C 60 51 EC */	lis r3, 0x51EB851F@ha
/* 80272970 0026E5D0  38 63 85 1F */	addi r3, r3, 0x51EB851F@l
/* 80272974 0026E5D4  7C 63 28 96 */	mulhw r3, r3, r5
/* 80272978 0026E5D8  7C 63 2E 70 */	srawi r3, r3, 5
/* 8027297C 0026E5DC  54 66 0F FE */	srwi r6, r3, 0x1f
/* 80272980 0026E5E0  7C 63 32 14 */	add r3, r3, r6
/* 80272984 0026E5E4  1C 63 00 64 */	mulli r3, r3, 0x64
/* 80272988 0026E5E8  7C 63 28 51 */	subf. r3, r3, r5
/* 8027298C 0026E5EC  40 82 00 28 */	bne lbl_802729B4
lbl_80272990:
/* 80272990 0026E5F0  3C 60 51 EC */	lis r3, 0x51EB851F@ha
/* 80272994 0026E5F4  38 63 85 1F */	addi r3, r3, 0x51EB851F@l
/* 80272998 0026E5F8  7C 63 28 96 */	mulhw r3, r3, r5
/* 8027299C 0026E5FC  7C 63 3E 70 */	srawi r3, r3, 7
/* 802729A0 0026E600  54 66 0F FE */	srwi r6, r3, 0x1f
/* 802729A4 0026E604  7C 63 32 14 */	add r3, r3, r6
/* 802729A8 0026E608  1C 63 01 90 */	mulli r3, r3, 0x190
/* 802729AC 0026E60C  7C 63 28 51 */	subf. r3, r3, r5
/* 802729B0 0026E610  40 82 00 08 */	bne lbl_802729B8
lbl_802729B4:
/* 802729B4 0026E614  38 E0 00 01 */	li r7, 1
lbl_802729B8:
/* 802729B8 0026E618  2C 07 00 00 */	cmpwi r7, 0
/* 802729BC 0026E61C  3C C0 80 42 */	lis r6, lbl_80427DC8@ha
/* 802729C0 0026E620  38 C6 7D C8 */	addi r6, r6, lbl_80427DC8@l
/* 802729C4 0026E624  41 82 00 0C */	beq lbl_802729D0
/* 802729C8 0026E628  3C C0 80 42 */	lis r6, lbl_80427DF8@ha
/* 802729CC 0026E62C  38 C6 7D F8 */	addi r6, r6, lbl_80427DF8@l
lbl_802729D0:
/* 802729D0 0026E630  38 E0 00 0C */	li r7, 0xc
/* 802729D4 0026E634  38 60 00 30 */	li r3, 0x30
lbl_802729D8:
/* 802729D8 0026E638  38 63 FF FC */	addi r3, r3, -4
/* 802729DC 0026E63C  38 E7 FF FF */	addi r7, r7, -1
/* 802729E0 0026E640  7C A6 18 2E */	lwzx r5, r6, r3
/* 802729E4 0026E644  7C 00 28 00 */	cmpw r0, r5
/* 802729E8 0026E648  41 80 FF F0 */	blt lbl_802729D8
/* 802729EC 0026E64C  90 E4 00 10 */	stw r7, 0x10(r4)
/* 802729F0 0026E650  7C 66 18 2E */	lwzx r3, r6, r3
/* 802729F4 0026E654  7C 63 00 50 */	subf r3, r3, r0
/* 802729F8 0026E658  38 03 00 01 */	addi r0, r3, 1
/* 802729FC 0026E65C  90 04 00 0C */	stw r0, 0xc(r4)
/* 80272A00 0026E660  4E 80 00 20 */	blr

.global OSTicksToCalendarTime
OSTicksToCalendarTime:
/* 80272A04 0026E664  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 80272A08 0026E668  7C 08 02 A6 */	mflr r0
/* 80272A0C 0026E66C  90 01 00 24 */	stw r0, 0x24(r1)
/* 80272A10 0026E670  39 61 00 20 */	addi r11, r1, 0x20
/* 80272A14 0026E674  4B F5 47 11 */	bl _savegpr_26
/* 80272A18 0026E678  3C C0 80 00 */	lis r6, 0x800000F8@ha
/* 80272A1C 0026E67C  7C BD 2B 78 */	mr r29, r5
/* 80272A20 0026E680  80 06 00 F8 */	lwz r0, 0x800000F8@l(r6)
/* 80272A24 0026E684  7C 7C 1B 78 */	mr r28, r3
/* 80272A28 0026E688  7C 9B 23 78 */	mr r27, r4
/* 80272A2C 0026E68C  38 A0 00 00 */	li r5, 0
/* 80272A30 0026E690  54 1A F0 BE */	srwi r26, r0, 2
/* 80272A34 0026E694  7F 46 D3 78 */	mr r6, r26
/* 80272A38 0026E698  4B F5 4A 5D */	bl __mod2i
/* 80272A3C 0026E69C  38 E0 00 00 */	li r7, 0
/* 80272A40 0026E6A0  6C 60 80 00 */	xoris r0, r3, 0x8000
/* 80272A44 0026E6A4  6C E6 80 00 */	xoris r6, r7, 0x8000
/* 80272A48 0026E6A8  7C 9E 23 78 */	mr r30, r4
/* 80272A4C 0026E6AC  7C A7 20 10 */	subfc r5, r7, r4
/* 80272A50 0026E6B0  7C 7F 1B 78 */	mr r31, r3
/* 80272A54 0026E6B4  7C C6 01 10 */	subfe r6, r6, r0
/* 80272A58 0026E6B8  7C C0 01 10 */	subfe r6, r0, r0
/* 80272A5C 0026E6BC  7C C6 00 D1 */	neg. r6, r6
/* 80272A60 0026E6C0  41 82 00 0C */	beq lbl_80272A6C
/* 80272A64 0026E6C4  7F C4 D0 14 */	addc r30, r4, r26
/* 80272A68 0026E6C8  7F E3 39 14 */	adde r31, r3, r7
lbl_80272A6C:
/* 80272A6C 0026E6CC  3C 80 43 1C */	lis r4, 0x431BDE83@ha
/* 80272A70 0026E6D0  57 E3 18 38 */	slwi r3, r31, 3
/* 80272A74 0026E6D4  38 04 DE 83 */	addi r0, r4, 0x431BDE83@l
/* 80272A78 0026E6D8  38 A0 00 00 */	li r5, 0
/* 80272A7C 0026E6DC  7C 00 D0 16 */	mulhwu r0, r0, r26
/* 80272A80 0026E6E0  57 C4 18 38 */	slwi r4, r30, 3
/* 80272A84 0026E6E4  53 C3 1F 7E */	rlwimi r3, r30, 3, 0x1d, 0x1f
/* 80272A88 0026E6E8  54 06 8B FE */	srwi r6, r0, 0xf
/* 80272A8C 0026E6EC  4B F5 47 ED */	bl __div2i
/* 80272A90 0026E6F0  38 C0 03 E8 */	li r6, 0x3e8
/* 80272A94 0026E6F4  38 A0 00 00 */	li r5, 0
/* 80272A98 0026E6F8  4B F5 49 FD */	bl __mod2i
/* 80272A9C 0026E6FC  90 9D 00 24 */	stw r4, 0x24(r29)
/* 80272AA0 0026E700  3F 40 80 00 */	lis r26, 0x800000F8@ha
/* 80272AA4 0026E704  3C 80 10 62 */	lis r4, 0x10624DD3@ha
/* 80272AA8 0026E708  7F E3 FB 78 */	mr r3, r31
/* 80272AAC 0026E70C  80 1A 00 F8 */	lwz r0, 0x800000F8@l(r26)
/* 80272AB0 0026E710  38 C4 4D D3 */	addi r6, r4, 0x10624DD3@l
/* 80272AB4 0026E714  7F C4 F3 78 */	mr r4, r30
/* 80272AB8 0026E718  38 A0 00 00 */	li r5, 0
/* 80272ABC 0026E71C  54 00 F0 BE */	srwi r0, r0, 2
/* 80272AC0 0026E720  7C 06 00 16 */	mulhwu r0, r6, r0
/* 80272AC4 0026E724  54 06 D1 BE */	srwi r6, r0, 6
/* 80272AC8 0026E728  4B F5 47 B1 */	bl __div2i
/* 80272ACC 0026E72C  38 C0 03 E8 */	li r6, 0x3e8
/* 80272AD0 0026E730  38 A0 00 00 */	li r5, 0
/* 80272AD4 0026E734  4B F5 49 C1 */	bl __mod2i
/* 80272AD8 0026E738  90 9D 00 20 */	stw r4, 0x20(r29)
/* 80272ADC 0026E73C  7C 9E D8 10 */	subfc r4, r30, r27
/* 80272AE0 0026E740  7C 7F E1 10 */	subfe r3, r31, r28
/* 80272AE4 0026E744  38 A0 00 00 */	li r5, 0
/* 80272AE8 0026E748  80 1A 00 F8 */	lwz r0, 0xf8(r26)
/* 80272AEC 0026E74C  54 06 F0 BE */	srwi r6, r0, 2
/* 80272AF0 0026E750  4B F5 47 89 */	bl __div2i
/* 80272AF4 0026E754  3F 60 00 01 */	lis r27, 0x00015180@ha
/* 80272AF8 0026E758  7C 9C 23 78 */	mr r28, r4
/* 80272AFC 0026E75C  7C 7A 1B 78 */	mr r26, r3
/* 80272B00 0026E760  38 A0 00 00 */	li r5, 0
/* 80272B04 0026E764  38 DB 51 80 */	addi r6, r27, 0x00015180@l
/* 80272B08 0026E768  4B F5 47 71 */	bl __div2i
/* 80272B0C 0026E76C  3C 60 00 0B */	lis r3, 0x000B2575@ha
/* 80272B10 0026E770  38 DB 51 80 */	addi r6, r27, 0x5180
/* 80272B14 0026E774  38 03 25 75 */	addi r0, r3, 0x000B2575@l
/* 80272B18 0026E778  38 A0 00 00 */	li r5, 0
/* 80272B1C 0026E77C  7F 43 D3 78 */	mr r3, r26
/* 80272B20 0026E780  7F 44 00 14 */	addc r26, r4, r0
/* 80272B24 0026E784  7F 84 E3 78 */	mr r4, r28
/* 80272B28 0026E788  4B F5 49 6D */	bl __mod2i
/* 80272B2C 0026E78C  2C 04 00 00 */	cmpwi r4, 0
/* 80272B30 0026E790  7C 9F 23 78 */	mr r31, r4
/* 80272B34 0026E794  40 80 00 10 */	bge lbl_80272B44
/* 80272B38 0026E798  3F E4 00 01 */	addis r31, r4, 1
/* 80272B3C 0026E79C  3B 5A FF FF */	addi r26, r26, -1
/* 80272B40 0026E7A0  3B FF 51 80 */	addi r31, r31, 0x5180
lbl_80272B44:
/* 80272B44 0026E7A4  7F 43 D3 78 */	mr r3, r26
/* 80272B48 0026E7A8  7F A4 EB 78 */	mr r4, r29
/* 80272B4C 0026E7AC  4B FF FD 49 */	bl GetDates
/* 80272B50 0026E7B0  3C 60 88 89 */	lis r3, 0x88888889@ha
/* 80272B54 0026E7B4  39 61 00 20 */	addi r11, r1, 0x20
/* 80272B58 0026E7B8  38 A3 88 89 */	addi r5, r3, 0x88888889@l
/* 80272B5C 0026E7BC  7C 05 F8 96 */	mulhw r0, r5, r31
/* 80272B60 0026E7C0  7C 60 FA 14 */	add r3, r0, r31
/* 80272B64 0026E7C4  7C 60 2E 70 */	srawi r0, r3, 5
/* 80272B68 0026E7C8  54 04 0F FE */	srwi r4, r0, 0x1f
/* 80272B6C 0026E7CC  7D 00 22 14 */	add r8, r0, r4
/* 80272B70 0026E7D0  7C 05 40 96 */	mulhw r0, r5, r8
/* 80272B74 0026E7D4  7C 00 42 14 */	add r0, r0, r8
/* 80272B78 0026E7D8  7C 06 2E 70 */	srawi r6, r0, 5
/* 80272B7C 0026E7DC  7C 04 2E 70 */	srawi r4, r0, 5
/* 80272B80 0026E7E0  7C 60 2E 70 */	srawi r0, r3, 5
/* 80272B84 0026E7E4  54 C7 0F FE */	srwi r7, r6, 0x1f
/* 80272B88 0026E7E8  54 85 0F FE */	srwi r5, r4, 0x1f
/* 80272B8C 0026E7EC  54 03 0F FE */	srwi r3, r0, 0x1f
/* 80272B90 0026E7F0  7C C6 3A 14 */	add r6, r6, r7
/* 80272B94 0026E7F4  7C 00 1A 14 */	add r0, r0, r3
/* 80272B98 0026E7F8  7C 84 2A 14 */	add r4, r4, r5
/* 80272B9C 0026E7FC  1C 64 00 3C */	mulli r3, r4, 0x3c
/* 80272BA0 0026E800  90 DD 00 08 */	stw r6, 8(r29)
/* 80272BA4 0026E804  1C 00 00 3C */	mulli r0, r0, 0x3c
/* 80272BA8 0026E808  7C 63 40 50 */	subf r3, r3, r8
/* 80272BAC 0026E80C  90 7D 00 04 */	stw r3, 4(r29)
/* 80272BB0 0026E810  7C 00 F8 50 */	subf r0, r0, r31
/* 80272BB4 0026E814  90 1D 00 00 */	stw r0, 0(r29)
/* 80272BB8 0026E818  4B F5 45 B9 */	bl _restgpr_26
/* 80272BBC 0026E81C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 80272BC0 0026E820  7C 08 03 A6 */	mtlr r0
/* 80272BC4 0026E824  38 21 00 20 */	addi r1, r1, 0x20
/* 80272BC8 0026E828  4E 80 00 20 */	blr

.global OSCalendarTimeToTicks
OSCalendarTimeToTicks:
/* 80272BCC 0026E82C  94 21 FF C0 */	stwu r1, -0x40(r1)
/* 80272BD0 0026E830  7C 08 02 A6 */	mflr r0
/* 80272BD4 0026E834  90 01 00 44 */	stw r0, 0x44(r1)
/* 80272BD8 0026E838  39 61 00 40 */	addi r11, r1, 0x40
/* 80272BDC 0026E83C  4B F5 45 31 */	bl _savegpr_20
/* 80272BE0 0026E840  3C 80 2A AB */	lis r4, 0x2AAAAAAB@ha
/* 80272BE4 0026E844  80 A3 00 10 */	lwz r5, 0x10(r3)
/* 80272BE8 0026E848  38 04 AA AB */	addi r0, r4, 0x2AAAAAAB@l
/* 80272BEC 0026E84C  7C 00 28 96 */	mulhw r0, r0, r5
/* 80272BF0 0026E850  7C 00 0E 70 */	srawi r0, r0, 1
/* 80272BF4 0026E854  54 04 0F FE */	srwi r4, r0, 0x1f
/* 80272BF8 0026E858  7C C0 22 14 */	add r6, r0, r4
/* 80272BFC 0026E85C  1C 06 00 0C */	mulli r0, r6, 0xc
/* 80272C00 0026E860  7C 80 28 51 */	subf. r4, r0, r5
/* 80272C04 0026E864  40 80 00 0C */	bge lbl_80272C10
/* 80272C08 0026E868  38 84 00 0C */	addi r4, r4, 0xc
/* 80272C0C 0026E86C  38 C6 FF FF */	addi r6, r6, -1
lbl_80272C10:
/* 80272C10 0026E870  80 03 00 14 */	lwz r0, 0x14(r3)
/* 80272C14 0026E874  7D 20 32 14 */	add r9, r0, r6
/* 80272C18 0026E878  2C 09 00 01 */	cmpwi r9, 1
/* 80272C1C 0026E87C  40 80 00 0C */	bge lbl_80272C28
/* 80272C20 0026E880  38 E0 00 00 */	li r7, 0
/* 80272C24 0026E884  48 00 00 40 */	b lbl_80272C64
lbl_80272C28:
/* 80272C28 0026E888  3C A0 51 EC */	lis r5, 0x51EB851F@ha
/* 80272C2C 0026E88C  38 C9 FF FF */	addi r6, r9, -1
/* 80272C30 0026E890  38 A5 85 1F */	addi r5, r5, 0x51EB851F@l
/* 80272C34 0026E894  38 09 00 03 */	addi r0, r9, 3
/* 80272C38 0026E898  7C A5 30 96 */	mulhw r5, r5, r6
/* 80272C3C 0026E89C  7C A7 3E 70 */	srawi r7, r5, 7
/* 80272C40 0026E8A0  7C A5 2E 70 */	srawi r5, r5, 5
/* 80272C44 0026E8A4  54 A6 0F FE */	srwi r6, r5, 0x1f
/* 80272C48 0026E8A8  7C 00 16 70 */	srawi r0, r0, 2
/* 80272C4C 0026E8AC  54 E8 0F FE */	srwi r8, r7, 0x1f
/* 80272C50 0026E8B0  7C A5 32 14 */	add r5, r5, r6
/* 80272C54 0026E8B4  7C 00 01 94 */	addze r0, r0
/* 80272C58 0026E8B8  7C C7 42 14 */	add r6, r7, r8
/* 80272C5C 0026E8BC  7C 05 00 50 */	subf r0, r5, r0
/* 80272C60 0026E8C0  7C E6 02 14 */	add r7, r6, r0
lbl_80272C64:
/* 80272C64 0026E8C4  55 20 F0 02 */	slwi r0, r9, 0x1e
/* 80272C68 0026E8C8  55 25 0F FE */	srwi r5, r9, 0x1f
/* 80272C6C 0026E8CC  7C 05 00 50 */	subf r0, r5, r0
/* 80272C70 0026E8D0  38 C0 00 00 */	li r6, 0
/* 80272C74 0026E8D4  54 00 10 3E */	rotlwi r0, r0, 2
/* 80272C78 0026E8D8  7C 00 2A 15 */	add. r0, r0, r5
/* 80272C7C 0026E8DC  40 82 00 28 */	bne lbl_80272CA4
/* 80272C80 0026E8E0  3C A0 51 EC */	lis r5, 0x51EB851F@ha
/* 80272C84 0026E8E4  38 05 85 1F */	addi r0, r5, 0x51EB851F@l
/* 80272C88 0026E8E8  7C 00 48 96 */	mulhw r0, r0, r9
/* 80272C8C 0026E8EC  7C 00 2E 70 */	srawi r0, r0, 5
/* 80272C90 0026E8F0  54 05 0F FE */	srwi r5, r0, 0x1f
/* 80272C94 0026E8F4  7C 00 2A 14 */	add r0, r0, r5
/* 80272C98 0026E8F8  1C 00 00 64 */	mulli r0, r0, 0x64
/* 80272C9C 0026E8FC  7C 00 48 51 */	subf. r0, r0, r9
/* 80272CA0 0026E900  40 82 00 28 */	bne lbl_80272CC8
lbl_80272CA4:
/* 80272CA4 0026E904  3C A0 51 EC */	lis r5, 0x51EB851F@ha
/* 80272CA8 0026E908  38 05 85 1F */	addi r0, r5, 0x51EB851F@l
/* 80272CAC 0026E90C  7C 00 48 96 */	mulhw r0, r0, r9
/* 80272CB0 0026E910  7C 00 3E 70 */	srawi r0, r0, 7
/* 80272CB4 0026E914  54 05 0F FE */	srwi r5, r0, 0x1f
/* 80272CB8 0026E918  7C 00 2A 14 */	add r0, r0, r5
/* 80272CBC 0026E91C  1C 00 01 90 */	mulli r0, r0, 0x190
/* 80272CC0 0026E920  7C 00 48 51 */	subf. r0, r0, r9
/* 80272CC4 0026E924  40 82 00 08 */	bne lbl_80272CCC
lbl_80272CC8:
/* 80272CC8 0026E928  38 C0 00 01 */	li r6, 1
lbl_80272CCC:
/* 80272CCC 0026E92C  2C 06 00 00 */	cmpwi r6, 0
/* 80272CD0 0026E930  3E C0 80 42 */	lis r22, lbl_80427DC8@ha
/* 80272CD4 0026E934  3A D6 7D C8 */	addi r22, r22, lbl_80427DC8@l
/* 80272CD8 0026E938  41 82 00 0C */	beq lbl_80272CE4
/* 80272CDC 0026E93C  3E C0 80 42 */	lis r22, lbl_80427DF8@ha
/* 80272CE0 0026E940  3A D6 7D F8 */	addi r22, r22, lbl_80427DF8@l
lbl_80272CE4:
/* 80272CE4 0026E944  3C A0 80 00 */	lis r5, 0x800000F8@ha
/* 80272CE8 0026E948  80 C3 00 24 */	lwz r6, 0x24(r3)
/* 80272CEC 0026E94C  80 05 00 F8 */	lwz r0, 0x800000F8@l(r5)
/* 80272CF0 0026E950  54 8C 10 3A */	slwi r12, r4, 2
/* 80272CF4 0026E954  3D 40 43 1C */	lis r10, 0x431BDE83@ha
/* 80272CF8 0026E958  38 A0 00 00 */	li r5, 0
/* 80272CFC 0026E95C  54 08 F0 BE */	srwi r8, r0, 2
/* 80272D00 0026E960  7C D4 FE 70 */	srawi r20, r6, 0x1f
/* 80272D04 0026E964  38 0A DE 83 */	addi r0, r10, 0x431BDE83@l
/* 80272D08 0026E968  82 E3 00 0C */	lwz r23, 0xc(r3)
/* 80272D0C 0026E96C  7C 00 40 16 */	mulhwu r0, r0, r8
/* 80272D10 0026E970  7E D6 60 2E */	lwzx r22, r22, r12
/* 80272D14 0026E974  7D 97 3A 14 */	add r12, r23, r7
/* 80272D18 0026E978  83 63 00 04 */	lwz r27, 4(r3)
/* 80272D1C 0026E97C  3D 40 00 01 */	lis r10, 0x00015180@ha
/* 80272D20 0026E980  83 A3 00 08 */	lwz r29, 8(r3)
/* 80272D24 0026E984  54 04 8B FE */	srwi r4, r0, 0xf
/* 80272D28 0026E988  3C E0 10 62 */	lis r7, 0x10624DD3@ha
/* 80272D2C 0026E98C  7E A4 30 16 */	mulhwu r21, r4, r6
/* 80272D30 0026E990  3D 60 01 E1 */	lis r11, 0x01E13380@ha
/* 80272D34 0026E994  38 E7 4D D3 */	addi r7, r7, 0x10624DD3@l
/* 80272D38 0026E998  83 43 00 00 */	lwz r26, 0(r3)
/* 80272D3C 0026E99C  38 0B 33 80 */	addi r0, r11, 0x01E13380@l
/* 80272D40 0026E9A0  81 63 00 20 */	lwz r11, 0x20(r3)
/* 80272D44 0026E9A4  7F 05 31 D6 */	mullw r24, r5, r6
/* 80272D48 0026E9A8  3A EA 51 80 */	addi r23, r10, 0x00015180@l
/* 80272D4C 0026E9AC  7C 76 62 14 */	add r3, r22, r12
/* 80272D50 0026E9B0  3B 80 00 3C */	li r28, 0x3c
/* 80272D54 0026E9B4  3A C3 FF FF */	addi r22, r3, -1
/* 80272D58 0026E9B8  3C 60 4E 1E */	lis r3, 0x4E1E4080@ha
/* 80272D5C 0026E9BC  7F 24 31 D6 */	mullw r25, r4, r6
/* 80272D60 0026E9C0  7D 55 C2 14 */	add r10, r21, r24
/* 80272D64 0026E9C4  3B E3 40 80 */	addi r31, r3, 0x4E1E4080@l
/* 80272D68 0026E9C8  3B C0 0E 10 */	li r30, 0xe10
/* 80272D6C 0026E9CC  39 80 FF F1 */	li r12, -15
/* 80272D70 0026E9D0  7C C4 A1 D6 */	mullw r6, r4, r20
/* 80272D74 0026E9D4  57 24 E8 3E */	rotlwi r4, r25, 0x1d
/* 80272D78 0026E9D8  7D 4A 32 14 */	add r10, r10, r6
/* 80272D7C 0026E9DC  7C C7 40 16 */	mulhwu r6, r7, r8
/* 80272D80 0026E9E0  7D 43 53 78 */	mr r3, r10
/* 80272D84 0026E9E4  51 44 E8 04 */	rlwimi r4, r10, 0x1d, 0, 2
/* 80272D88 0026E9E8  53 23 07 7E */	rlwimi r3, r25, 0, 0x1d, 0x1f
/* 80272D8C 0026E9EC  7C 63 1E 70 */	srawi r3, r3, 3
/* 80272D90 0026E9F0  54 CA D1 BE */	srwi r10, r6, 6
/* 80272D94 0026E9F4  7C 84 01 94 */	addze r4, r4
/* 80272D98 0026E9F8  7C 63 01 94 */	addze r3, r3
/* 80272D9C 0026E9FC  7D 38 FE 70 */	srawi r24, r9, 0x1f
/* 80272DA0 0026EA00  7C E0 48 16 */	mulhwu r7, r0, r9
/* 80272DA4 0026EA04  7E D9 FE 70 */	srawi r25, r22, 0x1f
/* 80272DA8 0026EA08  7E A5 49 D6 */	mullw r21, r5, r9
/* 80272DAC 0026EA0C  7E 87 AA 14 */	add r20, r7, r21
/* 80272DB0 0026EA10  7E A0 C1 D6 */	mullw r21, r0, r24
/* 80272DB4 0026EA14  7C D7 B0 16 */	mulhwu r6, r23, r22
/* 80272DB8 0026EA18  7E 94 AA 14 */	add r20, r20, r21
/* 80272DBC 0026EA1C  7C E5 B1 D6 */	mullw r7, r5, r22
/* 80272DC0 0026EA20  7F 06 3A 14 */	add r24, r6, r7
/* 80272DC4 0026EA24  7C E0 49 D6 */	mullw r7, r0, r9
/* 80272DC8 0026EA28  7C D7 C9 D6 */	mullw r6, r23, r25
/* 80272DCC 0026EA2C  7C 17 B1 D6 */	mullw r0, r23, r22
/* 80272DD0 0026EA30  7F 18 32 14 */	add r24, r24, r6
/* 80272DD4 0026EA34  7F 27 00 14 */	addc r25, r7, r0
/* 80272DD8 0026EA38  7C FB E0 96 */	mulhw r7, r27, r28
/* 80272DDC 0026EA3C  7F 94 C1 14 */	adde r28, r20, r24
/* 80272DE0 0026EA40  7C 1D F0 96 */	mulhw r0, r29, r30
/* 80272DE4 0026EA44  1D 3B 00 3C */	mulli r9, r27, 0x3c
/* 80272DE8 0026EA48  1C DD 0E 10 */	mulli r6, r29, 0xe10
/* 80272DEC 0026EA4C  7C C9 30 14 */	addc r6, r9, r6
/* 80272DF0 0026EA50  7C E7 01 14 */	adde r7, r7, r0
/* 80272DF4 0026EA54  7F 40 FE 70 */	srawi r0, r26, 0x1f
/* 80272DF8 0026EA58  7C C6 D0 14 */	addc r6, r6, r26
/* 80272DFC 0026EA5C  7C 07 01 14 */	adde r0, r7, r0
/* 80272E00 0026EA60  7C C6 F8 14 */	addc r6, r6, r31
/* 80272E04 0026EA64  7C 00 61 14 */	adde r0, r0, r12
/* 80272E08 0026EA68  7D 99 30 14 */	addc r12, r25, r6
/* 80272E0C 0026EA6C  7C DC 01 14 */	adde r6, r28, r0
/* 80272E10 0026EA70  7D 26 41 D6 */	mullw r9, r6, r8
/* 80272E14 0026EA74  7D 60 FE 70 */	srawi r0, r11, 0x1f
/* 80272E18 0026EA78  7C EC 40 16 */	mulhwu r7, r12, r8
/* 80272E1C 0026EA7C  7C CA 58 16 */	mulhwu r6, r10, r11
/* 80272E20 0026EA80  7D 27 4A 14 */	add r9, r7, r9
/* 80272E24 0026EA84  7C E5 59 D6 */	mullw r7, r5, r11
/* 80272E28 0026EA88  7C AC 29 D6 */	mullw r5, r12, r5
/* 80272E2C 0026EA8C  7C C6 3A 14 */	add r6, r6, r7
/* 80272E30 0026EA90  7C 0A 01 D6 */	mullw r0, r10, r0
/* 80272E34 0026EA94  7C E9 2A 14 */	add r7, r9, r5
/* 80272E38 0026EA98  7C C6 02 14 */	add r6, r6, r0
/* 80272E3C 0026EA9C  7C 0A 59 D6 */	mullw r0, r10, r11
/* 80272E40 0026EAA0  39 61 00 40 */	addi r11, r1, 0x40
/* 80272E44 0026EAA4  7C AC 41 D6 */	mullw r5, r12, r8
/* 80272E48 0026EAA8  7C A5 00 14 */	addc r5, r5, r0
/* 80272E4C 0026EAAC  7C 07 31 14 */	adde r0, r7, r6
/* 80272E50 0026EAB0  7C 84 28 14 */	addc r4, r4, r5
/* 80272E54 0026EAB4  7C 63 01 14 */	adde r3, r3, r0
/* 80272E58 0026EAB8  4B F5 43 01 */	bl _restgpr_20
/* 80272E5C 0026EABC  80 01 00 44 */	lwz r0, 0x44(r1)
/* 80272E60 0026EAC0  7C 08 03 A6 */	mtlr r0
/* 80272E64 0026EAC4  38 21 00 40 */	addi r1, r1, 0x40
/* 80272E68 0026EAC8  4E 80 00 20 */	blr