summaryrefslogtreecommitdiff
path: root/asm/Dolphin/os/OSContext.s
blob: 23fa01a2c0c619c0ce54895fb1386cc8976ef806 (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
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
.include "macros.inc"

.section .text

.global func_8036de4c
.type func_8036de4c, @function
func_8036de4c:
/* 8036DE4C A0A401A2 */ lhz         r5, 0x1a2(r4)
/* 8036DE50 54A507FF */ clrlwi.     r5, r5, 0x1f
/* 8036DE54 41820118 */ beq-        lbl_8036df6c
/* 8036DE58 C8040190 */ lfd         f0, 0x190(r4)
/* 8036DE5C FDFE058E */ mtfsf       0xff, f0
/* 8036DE60 7CB8E2A6 */ mfspr       r5, 0x398
/* 8036DE64 54A51FFF */ rlwinm.     r5, r5, 3, 0x1f, 0x1f
/* 8036DE68 41820084 */ beq-        lbl_8036deec
/* 8036DE6C E00401C8 */ .4byte      0xe00401c8
/* 8036DE70 E02401D0 */ .4byte      0xe02401d0
/* 8036DE74 E04401D8 */ .4byte      0xe04401d8
/* 8036DE78 E06401E0 */ .4byte      0xe06401e0
/* 8036DE7C E08401E8 */ .4byte      0xe08401e8
/* 8036DE80 E0A401F0 */ .4byte      0xe0a401f0
/* 8036DE84 E0C401F8 */ .4byte      0xe0c401f8
/* 8036DE88 E0E40200 */ .4byte      0xe0e40200
/* 8036DE8C E1040208 */ .4byte      0xe1040208
/* 8036DE90 E1240210 */ .4byte      0xe1240210
/* 8036DE94 E1440218 */ .4byte      0xe1440218
/* 8036DE98 E1640220 */ .4byte      0xe1640220
/* 8036DE9C E1840228 */ .4byte      0xe1840228
/* 8036DEA0 E1A40230 */ .4byte      0xe1a40230
/* 8036DEA4 E1C40238 */ .4byte      0xe1c40238
/* 8036DEA8 E1E40240 */ .4byte      0xe1e40240
/* 8036DEAC E2040248 */ .4byte      0xe2040248
/* 8036DEB0 E2240250 */ .4byte      0xe2240250
/* 8036DEB4 E2440258 */ .4byte      0xe2440258
/* 8036DEB8 E2640260 */ .4byte      0xe2640260
/* 8036DEBC E2840268 */ .4byte      0xe2840268
/* 8036DEC0 E2A40270 */ .4byte      0xe2a40270
/* 8036DEC4 E2C40278 */ .4byte      0xe2c40278
/* 8036DEC8 E2E40280 */ .4byte      0xe2e40280
/* 8036DECC E3040288 */ .4byte      0xe3040288
/* 8036DED0 E3240290 */ .4byte      0xe3240290
/* 8036DED4 E3440298 */ .4byte      0xe3440298
/* 8036DED8 E36402A0 */ .4byte      0xe36402a0
/* 8036DEDC E38402A8 */ .4byte      0xe38402a8
/* 8036DEE0 E3A402B0 */ .4byte      0xe3a402b0
/* 8036DEE4 E3C402B8 */ .4byte      0xe3c402b8
/* 8036DEE8 E3E402C0 */ .4byte      0xe3e402c0
lbl_8036deec:
/* 8036DEEC C8040090 */ lfd         f0, 0x90(r4)
/* 8036DEF0 C8240098 */ lfd         f1, 0x98(r4)
/* 8036DEF4 C84400A0 */ lfd         f2, 0xa0(r4)
/* 8036DEF8 C86400A8 */ lfd         f3, 0xa8(r4)
/* 8036DEFC C88400B0 */ lfd         f4, 0xb0(r4)
/* 8036DF00 C8A400B8 */ lfd         f5, 0xb8(r4)
/* 8036DF04 C8C400C0 */ lfd         f6, 0xc0(r4)
/* 8036DF08 C8E400C8 */ lfd         f7, 0xc8(r4)
/* 8036DF0C C90400D0 */ lfd         f8, 0xd0(r4)
/* 8036DF10 C92400D8 */ lfd         f9, 0xd8(r4)
/* 8036DF14 C94400E0 */ lfd         f10, 0xe0(r4)
/* 8036DF18 C96400E8 */ lfd         f11, 0xe8(r4)
/* 8036DF1C C98400F0 */ lfd         f12, 0xf0(r4)
/* 8036DF20 C9A400F8 */ lfd         f13, 0xf8(r4)
/* 8036DF24 C9C40100 */ lfd         f14, 0x100(r4)
/* 8036DF28 C9E40108 */ lfd         f15, 0x108(r4)
/* 8036DF2C CA040110 */ lfd         f16, 0x110(r4)
/* 8036DF30 CA240118 */ lfd         f17, 0x118(r4)
/* 8036DF34 CA440120 */ lfd         f18, 0x120(r4)
/* 8036DF38 CA640128 */ lfd         f19, 0x128(r4)
/* 8036DF3C CA840130 */ lfd         f20, 0x130(r4)
/* 8036DF40 CAA40138 */ lfd         f21, 0x138(r4)
/* 8036DF44 CAC40140 */ lfd         f22, 0x140(r4)
/* 8036DF48 CAE40148 */ lfd         f23, 0x148(r4)
/* 8036DF4C CB040150 */ lfd         f24, 0x150(r4)
/* 8036DF50 CB240158 */ lfd         f25, 0x158(r4)
/* 8036DF54 CB440160 */ lfd         f26, 0x160(r4)
/* 8036DF58 CB640168 */ lfd         f27, 0x168(r4)
/* 8036DF5C CB840170 */ lfd         f28, 0x170(r4)
/* 8036DF60 CBA40178 */ lfd         f29, 0x178(r4)
/* 8036DF64 CBC40180 */ lfd         f30, 0x180(r4)
/* 8036DF68 CBE40188 */ lfd         f31, 0x188(r4)
lbl_8036df6c:
/* 8036DF6C 4E800020 */ blr         
.size func_8036de4c, . - func_8036de4c


.global func_8036df70
.type func_8036df70, @function
func_8036df70:
/* 8036DF70 A06501A2 */ lhz         r3, 0x1a2(r5)
/* 8036DF74 60630001 */ ori         r3, r3, 1
/* 8036DF78 B06501A2 */ sth         r3, 0x1a2(r5)
/* 8036DF7C D8050090 */ stfd        f0, 0x90(r5)
/* 8036DF80 D8250098 */ stfd        f1, 0x98(r5)
/* 8036DF84 D84500A0 */ stfd        f2, 0xa0(r5)
/* 8036DF88 D86500A8 */ stfd        f3, 0xa8(r5)
/* 8036DF8C D88500B0 */ stfd        f4, 0xb0(r5)
/* 8036DF90 D8A500B8 */ stfd        f5, 0xb8(r5)
/* 8036DF94 D8C500C0 */ stfd        f6, 0xc0(r5)
/* 8036DF98 D8E500C8 */ stfd        f7, 0xc8(r5)
/* 8036DF9C D90500D0 */ stfd        f8, 0xd0(r5)
/* 8036DFA0 D92500D8 */ stfd        f9, 0xd8(r5)
/* 8036DFA4 D94500E0 */ stfd        f10, 0xe0(r5)
/* 8036DFA8 D96500E8 */ stfd        f11, 0xe8(r5)
/* 8036DFAC D98500F0 */ stfd        f12, 0xf0(r5)
/* 8036DFB0 D9A500F8 */ stfd        f13, 0xf8(r5)
/* 8036DFB4 D9C50100 */ stfd        f14, 0x100(r5)
/* 8036DFB8 D9E50108 */ stfd        f15, 0x108(r5)
/* 8036DFBC DA050110 */ stfd        f16, 0x110(r5)
/* 8036DFC0 DA250118 */ stfd        f17, 0x118(r5)
/* 8036DFC4 DA450120 */ stfd        f18, 0x120(r5)
/* 8036DFC8 DA650128 */ stfd        f19, 0x128(r5)
/* 8036DFCC DA850130 */ stfd        f20, 0x130(r5)
/* 8036DFD0 DAA50138 */ stfd        f21, 0x138(r5)
/* 8036DFD4 DAC50140 */ stfd        f22, 0x140(r5)
/* 8036DFD8 DAE50148 */ stfd        f23, 0x148(r5)
/* 8036DFDC DB050150 */ stfd        f24, 0x150(r5)
/* 8036DFE0 DB250158 */ stfd        f25, 0x158(r5)
/* 8036DFE4 DB450160 */ stfd        f26, 0x160(r5)
/* 8036DFE8 DB650168 */ stfd        f27, 0x168(r5)
/* 8036DFEC DB850170 */ stfd        f28, 0x170(r5)
/* 8036DFF0 DBA50178 */ stfd        f29, 0x178(r5)
/* 8036DFF4 DBC50180 */ stfd        f30, 0x180(r5)
/* 8036DFF8 DBE50188 */ stfd        f31, 0x188(r5)
/* 8036DFFC FC00048E */ mffs        f0
/* 8036E000 D8050190 */ stfd        f0, 0x190(r5)
/* 8036E004 C8050090 */ lfd         f0, 0x90(r5)
/* 8036E008 7C78E2A6 */ mfspr       r3, 0x398
/* 8036E00C 54631FFF */ rlwinm.     r3, r3, 3, 0x1f, 0x1f
/* 8036E010 41820084 */ beq-        lbl_8036e094
/* 8036E014 F00501C8 */ .4byte      0xf00501c8
/* 8036E018 F02501D0 */ .4byte      0xf02501d0
/* 8036E01C F04501D8 */ .4byte      0xf04501d8
/* 8036E020 F06501E0 */ .4byte      0xf06501e0
/* 8036E024 F08501E8 */ .4byte      0xf08501e8
/* 8036E028 F0A501F0 */ .4byte      0xf0a501f0
/* 8036E02C F0C501F8 */ .4byte      0xf0c501f8
/* 8036E030 F0E50200 */ .4byte      0xf0e50200
/* 8036E034 F1050208 */ .4byte      0xf1050208
/* 8036E038 F1250210 */ .4byte      0xf1250210
/* 8036E03C F1450218 */ .4byte      0xf1450218
/* 8036E040 F1650220 */ .4byte      0xf1650220
/* 8036E044 F1850228 */ .4byte      0xf1850228
/* 8036E048 F1A50230 */ .4byte      0xf1a50230
/* 8036E04C F1C50238 */ .4byte      0xf1c50238
/* 8036E050 F1E50240 */ .4byte      0xf1e50240
/* 8036E054 F2050248 */ .4byte      0xf2050248
/* 8036E058 F2250250 */ .4byte      0xf2250250
/* 8036E05C F2450258 */ .4byte      0xf2450258
/* 8036E060 F2650260 */ .4byte      0xf2650260
/* 8036E064 F2850268 */ .4byte      0xf2850268
/* 8036E068 F2A50270 */ .4byte      0xf2a50270
/* 8036E06C F2C50278 */ .4byte      0xf2c50278
/* 8036E070 F2E50280 */ .4byte      0xf2e50280
/* 8036E074 F3050288 */ .4byte      0xf3050288
/* 8036E078 F3250290 */ .4byte      0xf3250290
/* 8036E07C F3450298 */ .4byte      0xf3450298
/* 8036E080 F36502A0 */ .4byte      0xf36502a0
/* 8036E084 F38502A8 */ .4byte      0xf38502a8
/* 8036E088 F3A502B0 */ .4byte      0xf3a502b0
/* 8036E08C F3C502B8 */ .4byte      0xf3c502b8
/* 8036E090 F3E502C0 */ .4byte      0xf3e502c0
lbl_8036e094:
/* 8036E094 4E800020 */ blr         
.size func_8036df70, . - func_8036df70


.global func_8036e098
.type func_8036e098, @function
func_8036e098:
/* 8036E098 3C808000 */ lis         r4, 0x8000
/* 8036E09C 906400D4 */ stw         r3, 0xd4(r4)
/* 8036E0A0 546500BE */ clrlwi      r5, r3, 2
/* 8036E0A4 90A400C0 */ stw         r5, 0xc0(r4)
/* 8036E0A8 80A400D8 */ lwz         r5, 0xd8(r4)
/* 8036E0AC 7C051800 */ cmpw        r5, r3
/* 8036E0B0 40820020 */ bne-        lbl_8036e0d0
/* 8036E0B4 80C3019C */ lwz         r6, 0x19c(r3)
/* 8036E0B8 60C62000 */ ori         r6, r6, 0x2000
/* 8036E0BC 90C3019C */ stw         r6, 0x19c(r3)
/* 8036E0C0 7CC000A6 */ mfmsr       r6
/* 8036E0C4 60C60002 */ ori         r6, r6, 2
/* 8036E0C8 7CC00124 */ mtmsr       r6
/* 8036E0CC 4E800020 */ blr         
lbl_8036e0d0:
/* 8036E0D0 80C3019C */ lwz         r6, 0x19c(r3)
/* 8036E0D4 54C604E2 */ rlwinm      r6, r6, 0, 0x13, 0x11
/* 8036E0D8 90C3019C */ stw         r6, 0x19c(r3)
/* 8036E0DC 7CC000A6 */ mfmsr       r6
/* 8036E0E0 54C604E2 */ rlwinm      r6, r6, 0, 0x13, 0x11
/* 8036E0E4 60C60002 */ ori         r6, r6, 2
/* 8036E0E8 7CC00124 */ mtmsr       r6
/* 8036E0EC 4C00012C */ isync       
/* 8036E0F0 4E800020 */ blr         
.size func_8036e098, . - func_8036e098


.global func_8036e0f4
.type func_8036e0f4, @function
func_8036e0f4:
/* 8036E0F4 3C608000 */ lis         r3, 0x8000
/* 8036E0F8 806300D4 */ lwz         r3, 0xd4(r3)
/* 8036E0FC 4E800020 */ blr         
.size func_8036e0f4, . - func_8036e0f4


.global func_8036e100
.type func_8036e100, @function
func_8036e100:
/* 8036E100 BDA30034 */ stmw        r13, 0x34(r3)
/* 8036E104 7C11E2A6 */ mfspr       r0, 0x391
/* 8036E108 900301A8 */ stw         r0, 0x1a8(r3)
/* 8036E10C 7C12E2A6 */ mfspr       r0, 0x392
/* 8036E110 900301AC */ stw         r0, 0x1ac(r3)
/* 8036E114 7C13E2A6 */ mfspr       r0, 0x393
/* 8036E118 900301B0 */ stw         r0, 0x1b0(r3)
/* 8036E11C 7C14E2A6 */ mfspr       r0, 0x394
/* 8036E120 900301B4 */ stw         r0, 0x1b4(r3)
/* 8036E124 7C15E2A6 */ mfspr       r0, 0x395
/* 8036E128 900301B8 */ stw         r0, 0x1b8(r3)
/* 8036E12C 7C16E2A6 */ mfspr       r0, 0x396
/* 8036E130 900301BC */ stw         r0, 0x1bc(r3)
/* 8036E134 7C17E2A6 */ mfspr       r0, 0x397
/* 8036E138 900301C0 */ stw         r0, 0x1c0(r3)
/* 8036E13C 7C000026 */ mfcr        r0
/* 8036E140 90030080 */ stw         r0, 0x80(r3)
/* 8036E144 7C0802A6 */ mflr        r0
/* 8036E148 90030084 */ stw         r0, 0x84(r3)
/* 8036E14C 90030198 */ stw         r0, 0x198(r3)
/* 8036E150 7C0000A6 */ mfmsr       r0
/* 8036E154 9003019C */ stw         r0, 0x19c(r3)
/* 8036E158 7C0902A6 */ mfctr       r0
/* 8036E15C 90030088 */ stw         r0, 0x88(r3)
/* 8036E160 7C0102A6 */ mfxer       r0
/* 8036E164 9003008C */ stw         r0, 0x8c(r3)
/* 8036E168 90230004 */ stw         r1, 4(r3)
/* 8036E16C 90430008 */ stw         r2, 8(r3)
/* 8036E170 38000001 */ li          r0, 0x1
/* 8036E174 9003000C */ stw         r0, 0xc(r3)
/* 8036E178 38600000 */ li          r3, 0x0
/* 8036E17C 4E800020 */ blr         
.size func_8036e100, . - func_8036e100


.global func_8036e180
.type func_8036e180, @function
func_8036e180:
/* 8036E180 3C808037 */ lis         r4, func_8036ead4@ha
/* 8036E184 80C30198 */ lwz         r6, 0x198(r3)
/* 8036E188 38A4EAD4 */ addi        r5, r4, func_8036ead4@l
/* 8036E18C 7C062840 */ cmplw       r6, r5
/* 8036E190 41800018 */ blt-        lbl_8036e1a8
/* 8036E194 3C808037 */ lis         r4, func_8036eae4@ha
/* 8036E198 3804EAE4 */ addi        r0, r4, func_8036eae4@l
/* 8036E19C 7C060040 */ cmplw       r6, r0
/* 8036E1A0 41810008 */ bgt-        lbl_8036e1a8
/* 8036E1A4 90A30198 */ stw         r5, 0x198(r3)
lbl_8036e1a8:
/* 8036E1A8 80030000 */ lwz         r0, 0(r3)
/* 8036E1AC 80230004 */ lwz         r1, 4(r3)
/* 8036E1B0 80430008 */ lwz         r2, 8(r3)
/* 8036E1B4 A08301A2 */ lhz         r4, 0x1a2(r3)
/* 8036E1B8 548507BD */ rlwinm.     r5, r4, 0, 0x1e, 0x1e
/* 8036E1BC 41820014 */ beq-        lbl_8036e1d0
/* 8036E1C0 548407FA */ rlwinm      r4, r4, 0, 0x1f, 0x1d
/* 8036E1C4 B08301A2 */ sth         r4, 0x1a2(r3)
/* 8036E1C8 B8A30014 */ lmw         r5, 0x14(r3)
/* 8036E1CC 48000008 */ b           lbl_8036e1d4
lbl_8036e1d0:
/* 8036E1D0 B9A30034 */ lmw         r13, 0x34(r3)
lbl_8036e1d4:
/* 8036E1D4 808301A8 */ lwz         r4, 0x1a8(r3)
/* 8036E1D8 7C91E3A6 */ mtspr       0x391, r4
/* 8036E1DC 808301AC */ lwz         r4, 0x1ac(r3)
/* 8036E1E0 7C92E3A6 */ mtspr       0x392, r4
/* 8036E1E4 808301B0 */ lwz         r4, 0x1b0(r3)
/* 8036E1E8 7C93E3A6 */ mtspr       0x393, r4
/* 8036E1EC 808301B4 */ lwz         r4, 0x1b4(r3)
/* 8036E1F0 7C94E3A6 */ mtspr       0x394, r4
/* 8036E1F4 808301B8 */ lwz         r4, 0x1b8(r3)
/* 8036E1F8 7C95E3A6 */ mtspr       0x395, r4
/* 8036E1FC 808301BC */ lwz         r4, 0x1bc(r3)
/* 8036E200 7C96E3A6 */ mtspr       0x396, r4
/* 8036E204 808301C0 */ lwz         r4, 0x1c0(r3)
/* 8036E208 7C97E3A6 */ mtspr       0x397, r4
/* 8036E20C 80830080 */ lwz         r4, 0x80(r3)
/* 8036E210 7C8FF120 */ mtcrf       0xff, r4
/* 8036E214 80830084 */ lwz         r4, 0x84(r3)
/* 8036E218 7C8803A6 */ mtlr        r4
/* 8036E21C 80830088 */ lwz         r4, 0x88(r3)
/* 8036E220 7C8903A6 */ mtctr       r4
/* 8036E224 8083008C */ lwz         r4, 0x8c(r3)
/* 8036E228 7C8103A6 */ mtxer       r4
/* 8036E22C 7C8000A6 */ mfmsr       r4
/* 8036E230 5484045E */ rlwinm      r4, r4, 0, 0x11, 0xf
/* 8036E234 548407FA */ rlwinm      r4, r4, 0, 0x1f, 0x1d
/* 8036E238 7C800124 */ mtmsr       r4
/* 8036E23C 80830198 */ lwz         r4, 0x198(r3)
/* 8036E240 7C9A03A6 */ mtspr       0x1a, r4
/* 8036E244 8083019C */ lwz         r4, 0x19c(r3)
/* 8036E248 7C9B03A6 */ mtspr       0x1b, r4
/* 8036E24C 80830010 */ lwz         r4, 0x10(r3)
/* 8036E250 8063000C */ lwz         r3, 0xc(r3)
/* 8036E254 4C000064 */ rfi         
.size func_8036e180, . - func_8036e180


.global func_8036e258
.type func_8036e258, @function
func_8036e258:
/* 8036E258 7C230B78 */ mr          r3, r1
/* 8036E25C 4E800020 */ blr         
.size func_8036e258, . - func_8036e258


.global func_8036e260
.type func_8036e260, @function
func_8036e260:
/* 8036E260 38A00000 */ li          r5, 0x0
/* 8036E264 B0A301A0 */ sth         r5, 0x1a0(r3)
/* 8036E268 3C808000 */ lis         r4, 0x8000
/* 8036E26C B0A301A2 */ sth         r5, 0x1a2(r3)
/* 8036E270 800400D8 */ lwz         r0, 0xd8(r4)
/* 8036E274 7C030040 */ cmplw       r3, r0
/* 8036E278 40820008 */ bne-        lbl_8036e280
/* 8036E27C 90A400D8 */ stw         r5, 0xd8(r4)
lbl_8036e280:
/* 8036E280 4E800020 */ blr         
.size func_8036e260, . - func_8036e260


.global func_8036e284
.type func_8036e284, @function
func_8036e284:
/* 8036E284 90830198 */ stw         r4, 0x198(r3)
/* 8036E288 90A30004 */ stw         r5, 4(r3)
/* 8036E28C 39600000 */ li          r11, 0x0
/* 8036E290 616B9032 */ ori         r11, r11, 0x9032
/* 8036E294 9163019C */ stw         r11, 0x19c(r3)
/* 8036E298 38000000 */ li          r0, 0x0
/* 8036E29C 90030080 */ stw         r0, 0x80(r3)
/* 8036E2A0 9003008C */ stw         r0, 0x8c(r3)
/* 8036E2A4 90430008 */ stw         r2, 8(r3)
/* 8036E2A8 91A30034 */ stw         r13, 0x34(r3)
/* 8036E2AC 9003000C */ stw         r0, 0xc(r3)
/* 8036E2B0 90030010 */ stw         r0, 0x10(r3)
/* 8036E2B4 90030014 */ stw         r0, 0x14(r3)
/* 8036E2B8 90030018 */ stw         r0, 0x18(r3)
/* 8036E2BC 9003001C */ stw         r0, 0x1c(r3)
/* 8036E2C0 90030020 */ stw         r0, 0x20(r3)
/* 8036E2C4 90030024 */ stw         r0, 0x24(r3)
/* 8036E2C8 90030028 */ stw         r0, 0x28(r3)
/* 8036E2CC 9003002C */ stw         r0, 0x2c(r3)
/* 8036E2D0 90030030 */ stw         r0, 0x30(r3)
/* 8036E2D4 90030038 */ stw         r0, 0x38(r3)
/* 8036E2D8 9003003C */ stw         r0, 0x3c(r3)
/* 8036E2DC 90030040 */ stw         r0, 0x40(r3)
/* 8036E2E0 90030044 */ stw         r0, 0x44(r3)
/* 8036E2E4 90030048 */ stw         r0, 0x48(r3)
/* 8036E2E8 9003004C */ stw         r0, 0x4c(r3)
/* 8036E2EC 90030050 */ stw         r0, 0x50(r3)
/* 8036E2F0 90030054 */ stw         r0, 0x54(r3)
/* 8036E2F4 90030058 */ stw         r0, 0x58(r3)
/* 8036E2F8 9003005C */ stw         r0, 0x5c(r3)
/* 8036E2FC 90030060 */ stw         r0, 0x60(r3)
/* 8036E300 90030064 */ stw         r0, 0x64(r3)
/* 8036E304 90030068 */ stw         r0, 0x68(r3)
/* 8036E308 9003006C */ stw         r0, 0x6c(r3)
/* 8036E30C 90030070 */ stw         r0, 0x70(r3)
/* 8036E310 90030074 */ stw         r0, 0x74(r3)
/* 8036E314 90030078 */ stw         r0, 0x78(r3)
/* 8036E318 9003007C */ stw         r0, 0x7c(r3)
/* 8036E31C 900301A4 */ stw         r0, 0x1a4(r3)
/* 8036E320 900301A8 */ stw         r0, 0x1a8(r3)
/* 8036E324 900301AC */ stw         r0, 0x1ac(r3)
/* 8036E328 900301B0 */ stw         r0, 0x1b0(r3)
/* 8036E32C 900301B4 */ stw         r0, 0x1b4(r3)
/* 8036E330 900301B8 */ stw         r0, 0x1b8(r3)
/* 8036E334 900301BC */ stw         r0, 0x1bc(r3)
/* 8036E338 900301C0 */ stw         r0, 0x1c0(r3)
/* 8036E33C 4BFFFF24 */ b           func_8036e260
.size func_8036e284, . - func_8036e284


.global func_8036e340
.type func_8036e340, @function
func_8036e340:
/* 8036E340 7C0802A6 */ mflr        r0
/* 8036E344 90010004 */ stw         r0, 4(r1)
/* 8036E348 9421FD08 */ stwu        r1, -0x2f8(r1)
/* 8036E34C BF2102DC */ stmw        r25, 0x2dc(r1)
/* 8036E350 7C7C1B78 */ mr          r28, r3
/* 8036E354 3C60804F */ lis         r3, lbl_804ef020@ha
/* 8036E358 4CC63182 */ crclr       6
/* 8036E35C 3BE3F020 */ addi        r31, r3, lbl_804ef020@l
/* 8036E360 7FE3FB78 */ mr          r3, r31
/* 8036E364 7F84E378 */ mr          r4, r28
/* 8036E368 4800034D */ bl          func_8036e6b4
/* 8036E36C 3B200000 */ li          r25, 0x0
/* 8036E370 5720103A */ slwi        r0, r25, 2
/* 8036E374 7F7C0214 */ add         r27, r28, r0
/* 8036E378 48000004 */ b           lbl_8036e37c
lbl_8036e37c:
/* 8036E37C 48000004 */ b           lbl_8036e380
lbl_8036e380:
/* 8036E380 48000004 */ b           lbl_8036e384
lbl_8036e384:
/* 8036E384 811B0040 */ lwz         r8, 0x40(r27)
/* 8036E388 7F24CB78 */ mr          r4, r25
/* 8036E38C 80BB0000 */ lwz         r5, 0(r27)
/* 8036E390 387F0044 */ addi        r3, r31, 0x44
/* 8036E394 4CC63182 */ crclr       6
/* 8036E398 7CA62B78 */ mr          r6, r5
/* 8036E39C 7D094378 */ mr          r9, r8
/* 8036E3A0 38F90010 */ addi        r7, r25, 0x10
/* 8036E3A4 48000311 */ bl          func_8036e6b4
/* 8036E3A8 3B7B0004 */ addi        r27, r27, 0x4
/* 8036E3AC 3B390001 */ addi        r25, r25, 0x1
/* 8036E3B0 28190010 */ cmplwi      r25, 0x10
/* 8036E3B4 4180FFD0 */ blt+        lbl_8036e384
/* 8036E3B8 809C0084 */ lwz         r4, 0x84(r28)
/* 8036E3BC 387F0074 */ addi        r3, r31, 0x74
/* 8036E3C0 80BC0080 */ lwz         r5, 0x80(r28)
/* 8036E3C4 4CC63182 */ crclr       6
/* 8036E3C8 480002ED */ bl          func_8036e6b4
/* 8036E3CC 809C0198 */ lwz         r4, 0x198(r28)
/* 8036E3D0 387F00A4 */ addi        r3, r31, 0xa4
/* 8036E3D4 80BC019C */ lwz         r5, 0x19c(r28)
/* 8036E3D8 4CC63182 */ crclr       6
/* 8036E3DC 480002D9 */ bl          func_8036e6b4
/* 8036E3E0 387F00D4 */ addi        r3, r31, 0xd4
/* 8036E3E4 4CC63182 */ crclr       6
/* 8036E3E8 480002CD */ bl          func_8036e6b4
/* 8036E3EC 3B200000 */ li          r25, 0x0
/* 8036E3F0 5720103A */ slwi        r0, r25, 2
/* 8036E3F4 7F7C0214 */ add         r27, r28, r0
/* 8036E3F8 48000004 */ b           lbl_8036e3fc
lbl_8036e3fc:
/* 8036E3FC 48000004 */ b           lbl_8036e400
lbl_8036e400:
/* 8036E400 48000004 */ b           lbl_8036e404
lbl_8036e404:
/* 8036E404 80BB01A4 */ lwz         r5, 0x1a4(r27)
/* 8036E408 7F24CB78 */ mr          r4, r25
/* 8036E40C 80FB01B4 */ lwz         r7, 0x1b4(r27)
/* 8036E410 387F00E8 */ addi        r3, r31, 0xe8
/* 8036E414 38D90004 */ addi        r6, r25, 0x4
/* 8036E418 4CC63182 */ crclr       6
/* 8036E41C 48000299 */ bl          func_8036e6b4
/* 8036E420 3B7B0004 */ addi        r27, r27, 0x4
/* 8036E424 3B390001 */ addi        r25, r25, 0x1
/* 8036E428 28190004 */ cmplwi      r25, 4
/* 8036E42C 4180FFD8 */ blt+        lbl_8036e404
/* 8036E430 A01C01A2 */ lhz         r0, 0x1a2(r28)
/* 8036E434 540007FE */ clrlwi      r0, r0, 0x1f
/* 8036E438 28000000 */ cmplwi      r0, 0
/* 8036E43C 4182013C */ beq-        lbl_8036e578
/* 8036E440 48000695 */ bl          func_8036ead4
/* 8036E444 3CC08000 */ lis         r6, 0x8000
/* 8036E448 800600D4 */ lwz         r0, 0xd4(r6)
/* 8036E44C 38A00000 */ li          r5, 0x0
/* 8036E450 38810010 */ addi        r4, r1, 0x10
/* 8036E454 B0A101B0 */ sth         r5, 0x1b0(r1)
/* 8036E458 7C1E0378 */ mr          r30, r0
/* 8036E45C 7C7D1B78 */ mr          r29, r3
/* 8036E460 B0A101B2 */ sth         r5, 0x1b2(r1)
/* 8036E464 800600D8 */ lwz         r0, 0xd8(r6)
/* 8036E468 7C040040 */ cmplw       r4, r0
/* 8036E46C 40820008 */ bne-        lbl_8036e474
/* 8036E470 90A600D8 */ stw         r5, 0xd8(r6)
lbl_8036e474:
/* 8036E474 38610010 */ addi        r3, r1, 0x10
/* 8036E478 4BFFFC21 */ bl          func_8036e098
/* 8036E47C 387F010C */ addi        r3, r31, 0x10c
/* 8036E480 4CC63182 */ crclr       6
/* 8036E484 48000231 */ bl          func_8036e6b4
/* 8036E488 3B200000 */ li          r25, 0x0
/* 8036E48C 57201838 */ slwi        r0, r25, 3
/* 8036E490 7F5C0214 */ add         r26, r28, r0
/* 8036E494 48000004 */ b           lbl_8036e498
lbl_8036e498:
/* 8036E498 48000004 */ b           lbl_8036e49c
lbl_8036e49c:
/* 8036E49C 48000004 */ b           lbl_8036e4a0
lbl_8036e4a0:
/* 8036E4A0 C83A0098 */ lfd         f1, 0x98(r26)
/* 8036E4A4 48024E95 */ bl          func_80393338
/* 8036E4A8 7C7B1B78 */ mr          r27, r3
/* 8036E4AC C83A0090 */ lfd         f1, 0x90(r26)
/* 8036E4B0 48024E89 */ bl          func_80393338
/* 8036E4B4 7C651B78 */ mr          r5, r3
/* 8036E4B8 4CC63182 */ crclr       6
/* 8036E4BC 7F24CB78 */ mr          r4, r25
/* 8036E4C0 7F67DB78 */ mr          r7, r27
/* 8036E4C4 387F0120 */ addi        r3, r31, 0x120
/* 8036E4C8 38D90001 */ addi        r6, r25, 0x1
/* 8036E4CC 480001E9 */ bl          func_8036e6b4
/* 8036E4D0 3B5A0010 */ addi        r26, r26, 0x10
/* 8036E4D4 3B390002 */ addi        r25, r25, 0x2
/* 8036E4D8 28190020 */ cmplwi      r25, 0x20
/* 8036E4DC 4180FFC4 */ blt+        lbl_8036e4a0
/* 8036E4E0 387F013C */ addi        r3, r31, 0x13c
/* 8036E4E4 4CC63182 */ crclr       6
/* 8036E4E8 480001CD */ bl          func_8036e6b4
/* 8036E4EC 3B200000 */ li          r25, 0x0
/* 8036E4F0 57201838 */ slwi        r0, r25, 3
/* 8036E4F4 7F5C0214 */ add         r26, r28, r0
/* 8036E4F8 48000004 */ b           lbl_8036e4fc
lbl_8036e4fc:
/* 8036E4FC 48000004 */ b           lbl_8036e500
lbl_8036e500:
/* 8036E500 48000004 */ b           lbl_8036e504
lbl_8036e504:
/* 8036E504 C83A01D0 */ lfd         f1, 0x1d0(r26)
/* 8036E508 48024E31 */ bl          func_80393338
/* 8036E50C 7C7B1B78 */ mr          r27, r3
/* 8036E510 C83A01C8 */ lfd         f1, 0x1c8(r26)
/* 8036E514 48024E25 */ bl          func_80393338
/* 8036E518 7C651B78 */ mr          r5, r3
/* 8036E51C 4CC63182 */ crclr       6
/* 8036E520 7F24CB78 */ mr          r4, r25
/* 8036E524 7F67DB78 */ mr          r7, r27
/* 8036E528 387F0150 */ addi        r3, r31, 0x150
/* 8036E52C 38D90001 */ addi        r6, r25, 0x1
/* 8036E530 48000185 */ bl          func_8036e6b4
/* 8036E534 3B5A0010 */ addi        r26, r26, 0x10
/* 8036E538 3B390002 */ addi        r25, r25, 0x2
/* 8036E53C 28190020 */ cmplwi      r25, 0x20
/* 8036E540 4180FFC4 */ blt+        lbl_8036e504
/* 8036E544 38A00000 */ li          r5, 0x0
/* 8036E548 B0A101B0 */ sth         r5, 0x1b0(r1)
/* 8036E54C 3C608000 */ lis         r3, 0x8000
/* 8036E550 38810010 */ addi        r4, r1, 0x10
/* 8036E554 B0A101B2 */ sth         r5, 0x1b2(r1)
/* 8036E558 800300D8 */ lwz         r0, 0xd8(r3)
/* 8036E55C 7C040040 */ cmplw       r4, r0
/* 8036E560 40820008 */ bne-        lbl_8036e568
/* 8036E564 90A300D8 */ stw         r5, 0xd8(r3)
lbl_8036e568:
/* 8036E568 7FC3F378 */ mr          r3, r30
/* 8036E56C 4BFFFB2D */ bl          func_8036e098
/* 8036E570 7FA3EB78 */ mr          r3, r29
/* 8036E574 48000589 */ bl          func_8036eafc
lbl_8036e578:
/* 8036E578 387F0170 */ addi        r3, r31, 0x170
/* 8036E57C 4CC63182 */ crclr       6
/* 8036E580 48000135 */ bl          func_8036e6b4
/* 8036E584 833C0004 */ lwz         r25, 4(r28)
/* 8036E588 3B400000 */ li          r26, 0x0
/* 8036E58C 48000004 */ b           lbl_8036e590
lbl_8036e590:
/* 8036E590 48000004 */ b           lbl_8036e594
lbl_8036e594:
/* 8036E594 48000020 */ b           lbl_8036e5b4
lbl_8036e598:
/* 8036E598 80B90000 */ lwz         r5, 0(r25)
/* 8036E59C 7F24CB78 */ mr          r4, r25
/* 8036E5A0 80D90004 */ lwz         r6, 4(r25)
/* 8036E5A4 387F0198 */ addi        r3, r31, 0x198
/* 8036E5A8 4CC63182 */ crclr       6
/* 8036E5AC 48000109 */ bl          func_8036e6b4
/* 8036E5B0 83390000 */ lwz         r25, 0(r25)
lbl_8036e5b4:
/* 8036E5B4 28190000 */ cmplwi      r25, 0
/* 8036E5B8 4182001C */ beq-        lbl_8036e5d4
/* 8036E5BC 3C190001 */ addis       r0, r25, 1
/* 8036E5C0 2800FFFF */ cmplwi      r0, 0xffff
/* 8036E5C4 41820010 */ beq-        lbl_8036e5d4
/* 8036E5C8 281A0010 */ cmplwi      r26, 0x10
/* 8036E5CC 3B5A0001 */ addi        r26, r26, 0x1
/* 8036E5D0 4180FFC8 */ blt+        lbl_8036e598
lbl_8036e5d4:
/* 8036E5D4 BB2102DC */ lmw         r25, 0x2dc(r1)
/* 8036E5D8 800102FC */ lwz         r0, 0x2fc(r1)
/* 8036E5DC 382102F8 */ addi        r1, r1, 0x2f8
/* 8036E5E0 7C0803A6 */ mtlr        r0
/* 8036E5E4 4E800020 */ blr         
.size func_8036e340, . - func_8036e340


.global func_8036e5e8
.type func_8036e5e8, @function
func_8036e5e8:
/* 8036E5E8 7CA000A6 */ mfmsr       r5
/* 8036E5EC 60A52000 */ ori         r5, r5, 0x2000
/* 8036E5F0 7CA00124 */ mtmsr       r5
/* 8036E5F4 4C00012C */ isync       
/* 8036E5F8 80A4019C */ lwz         r5, 0x19c(r4)
/* 8036E5FC 60A52000 */ ori         r5, r5, 0x2000
/* 8036E600 7CBB03A6 */ mtspr       0x1b, r5
/* 8036E604 3C608000 */ lis         r3, 0x8000
/* 8036E608 80A300D8 */ lwz         r5, 0xd8(r3)
/* 8036E60C 908300D8 */ stw         r4, 0xd8(r3)
/* 8036E610 7C052000 */ cmpw        r5, r4
/* 8036E614 41820014 */ beq-        lbl_8036e628
/* 8036E618 2C050000 */ cmpwi       r5, 0x0
/* 8036E61C 41820008 */ beq-        lbl_8036e624
/* 8036E620 4BFFF951 */ bl          func_8036df70
lbl_8036e624:
/* 8036E624 4BFFF829 */ bl          func_8036de4c
lbl_8036e628:
/* 8036E628 80640080 */ lwz         r3, 0x80(r4)
/* 8036E62C 7C6FF120 */ mtcrf       0xff, r3
/* 8036E630 80640084 */ lwz         r3, 0x84(r4)
/* 8036E634 7C6803A6 */ mtlr        r3
/* 8036E638 80640198 */ lwz         r3, 0x198(r4)
/* 8036E63C 7C7A03A6 */ mtspr       0x1a, r3
/* 8036E640 80640088 */ lwz         r3, 0x88(r4)
/* 8036E644 7C6903A6 */ mtctr       r3
/* 8036E648 8064008C */ lwz         r3, 0x8c(r4)
/* 8036E64C 7C6103A6 */ mtxer       r3
/* 8036E650 A06401A2 */ lhz         r3, 0x1a2(r4)
/* 8036E654 546307FA */ rlwinm      r3, r3, 0, 0x1f, 0x1d
/* 8036E658 B06401A2 */ sth         r3, 0x1a2(r4)
/* 8036E65C 80A40014 */ lwz         r5, 0x14(r4)
/* 8036E660 8064000C */ lwz         r3, 0xc(r4)
/* 8036E664 80840010 */ lwz         r4, 0x10(r4)
/* 8036E668 4C000064 */ rfi         
.size func_8036e5e8, . - func_8036e5e8


.global func_8036e66c
.type func_8036e66c, @function
func_8036e66c:
/* 8036E66C 7C0802A6 */ mflr        r0
/* 8036E670 90010004 */ stw         r0, 4(r1)
/* 8036E674 9421FFF8 */ stwu        r1, -8(r1)
/* 8036E678 3C608037 */ lis         r3, func_8036e5e8@ha
/* 8036E67C 3883E5E8 */ addi        r4, r3, func_8036e5e8@l
/* 8036E680 38600007 */ li          r3, 0x7
/* 8036E684 4BFFE469 */ bl          func_8036caec
/* 8036E688 38000000 */ li          r0, 0x0
/* 8036E68C 4CC63182 */ crclr       6
/* 8036E690 3C808000 */ lis         r4, 0x8000
/* 8036E694 3C60804F */ lis         r3, lbl_804ef1d4@ha
/* 8036E698 900400D8 */ stw         r0, 0xd8(r4)
/* 8036E69C 3863F1D4 */ addi        r3, r3, lbl_804ef1d4@l
/* 8036E6A0 4BFFDC11 */ bl          func_8036c2b0
/* 8036E6A4 8001000C */ lwz         r0, 0xc(r1)
/* 8036E6A8 38210008 */ addi        r1, r1, 0x8
/* 8036E6AC 7C0803A6 */ mtlr        r0
/* 8036E6B0 4E800020 */ blr         
.size func_8036e66c, . - func_8036e66c