summaryrefslogtreecommitdiff
path: root/asm/SDK/WPAD/WPADMem.s
blob: 174c3066a762526e7c405b0e8e4999c6b80675c9 (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
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
.include "macros.inc"

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

ResultCallback:
/* 802B2D18 002AE978  1C C3 00 14 */	mulli r6, r3, 0x14
/* 802B2D1C 002AE97C  3C A0 80 54 */	lis r5, lbl_8053A480@ha
/* 802B2D20 002AE980  38 00 00 00 */	li r0, 0
/* 802B2D24 002AE984  38 A5 A4 80 */	addi r5, r5, lbl_8053A480@l
/* 802B2D28 002AE988  7C 05 31 2E */	stwx r0, r5, r6
/* 802B2D2C 002AE98C  7C A5 32 14 */	add r5, r5, r6
/* 802B2D30 002AE990  81 85 00 10 */	lwz r12, 0x10(r5)
/* 802B2D34 002AE994  2C 0C 00 00 */	cmpwi r12, 0
/* 802B2D38 002AE998  90 05 00 10 */	stw r0, 0x10(r5)
/* 802B2D3C 002AE99C  4D 82 00 20 */	beqlr
/* 802B2D40 002AE9A0  7D 89 03 A6 */	mtctr r12
/* 802B2D44 002AE9A4  4E 80 04 20 */	bctr
/* 802B2D48 002AE9A8  4E 80 00 20 */	blr

WriteCallback:
/* 802B2D4C 002AE9AC  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802B2D50 002AE9B0  7C 08 02 A6 */	mflr r0
/* 802B2D54 002AE9B4  3C C0 80 54 */	lis r6, lbl_8053A480@ha
/* 802B2D58 002AE9B8  90 01 00 24 */	stw r0, 0x24(r1)
/* 802B2D5C 002AE9BC  38 C6 A4 80 */	addi r6, r6, lbl_8053A480@l
/* 802B2D60 002AE9C0  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802B2D64 002AE9C4  7C 7F 1B 78 */	mr r31, r3
/* 802B2D68 002AE9C8  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802B2D6C 002AE9CC  1F C3 00 14 */	mulli r30, r3, 0x14
/* 802B2D70 002AE9D0  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802B2D74 002AE9D4  7C A6 F2 14 */	add r5, r6, r30
/* 802B2D78 002AE9D8  93 81 00 10 */	stw r28, 0x10(r1)
/* 802B2D7C 002AE9DC  A0 E5 00 08 */	lhz r7, 8(r5)
/* 802B2D80 002AE9E0  2C 07 00 00 */	cmpwi r7, 0
/* 802B2D84 002AE9E4  40 82 00 28 */	bne lbl_802B2DAC
/* 802B2D88 002AE9E8  38 00 00 00 */	li r0, 0
/* 802B2D8C 002AE9EC  7C 06 F1 2E */	stwx r0, r6, r30
/* 802B2D90 002AE9F0  81 85 00 10 */	lwz r12, 0x10(r5)
/* 802B2D94 002AE9F4  2C 0C 00 00 */	cmpwi r12, 0
/* 802B2D98 002AE9F8  90 05 00 10 */	stw r0, 0x10(r5)
/* 802B2D9C 002AE9FC  41 82 01 00 */	beq lbl_802B2E9C
/* 802B2DA0 002AEA00  7D 89 03 A6 */	mtctr r12
/* 802B2DA4 002AEA04  4E 80 04 21 */	bctrl
/* 802B2DA8 002AEA08  48 00 00 F4 */	b lbl_802B2E9C
lbl_802B2DAC:
/* 802B2DAC 002AEA0C  28 07 00 10 */	cmplwi r7, 0x10
/* 802B2DB0 002AEA10  38 00 00 10 */	li r0, 0x10
/* 802B2DB4 002AEA14  41 81 00 08 */	bgt lbl_802B2DBC
/* 802B2DB8 002AEA18  7C E0 3B 78 */	mr r0, r7
lbl_802B2DBC:
/* 802B2DBC 002AEA1C  2C 04 00 00 */	cmpwi r4, 0
/* 802B2DC0 002AEA20  54 1C 04 3E */	clrlwi r28, r0, 0x10
/* 802B2DC4 002AEA24  40 82 00 64 */	bne lbl_802B2E28
/* 802B2DC8 002AEA28  A0 05 00 08 */	lhz r0, 8(r5)
/* 802B2DCC 002AEA2C  3C 60 80 54 */	lis r3, lbl_8053A480@ha
/* 802B2DD0 002AEA30  38 63 A4 80 */	addi r3, r3, lbl_8053A480@l
/* 802B2DD4 002AEA34  7C 1C 00 50 */	subf r0, r28, r0
/* 802B2DD8 002AEA38  B0 05 00 08 */	sth r0, 8(r5)
/* 802B2DDC 002AEA3C  7F C3 F2 14 */	add r30, r3, r30
/* 802B2DE0 002AEA40  80 7E 00 0C */	lwz r3, 0xc(r30)
/* 802B2DE4 002AEA44  38 03 00 10 */	addi r0, r3, 0x10
/* 802B2DE8 002AEA48  90 1E 00 0C */	stw r0, 0xc(r30)
/* 802B2DEC 002AEA4C  80 7E 00 04 */	lwz r3, 4(r30)
/* 802B2DF0 002AEA50  38 03 00 10 */	addi r0, r3, 0x10
/* 802B2DF4 002AEA54  90 1E 00 04 */	stw r0, 4(r30)
/* 802B2DF8 002AEA58  4B FB B9 65 */	bl OSDisableInterrupts
/* 802B2DFC 002AEA5C  3C E0 80 2B */	lis r7, WriteCallback@ha
/* 802B2E00 002AEA60  80 9E 00 04 */	lwz r4, 4(r30)
/* 802B2E04 002AEA64  7C 7D 1B 78 */	mr r29, r3
/* 802B2E08 002AEA68  80 DE 00 0C */	lwz r6, 0xc(r30)
/* 802B2E0C 002AEA6C  7F E3 FB 78 */	mr r3, r31
/* 802B2E10 002AEA70  7F 85 E3 78 */	mr r5, r28
/* 802B2E14 002AEA74  38 E7 2D 4C */	addi r7, r7, WriteCallback@l
/* 802B2E18 002AEA78  48 00 08 25 */	bl WPADWriteMemoryAsync
/* 802B2E1C 002AEA7C  7F A3 EB 78 */	mr r3, r29
/* 802B2E20 002AEA80  4B FB B9 65 */	bl OSRestoreInterrupts
/* 802B2E24 002AEA84  48 00 00 78 */	b lbl_802B2E9C
lbl_802B2E28:
/* 802B2E28 002AEA88  2C 04 FF FE */	cmpwi r4, -2
/* 802B2E2C 002AEA8C  40 82 00 40 */	bne lbl_802B2E6C
/* 802B2E30 002AEA90  4B FB B9 2D */	bl OSDisableInterrupts
/* 802B2E34 002AEA94  3C 80 80 54 */	lis r4, lbl_8053A480@ha
/* 802B2E38 002AEA98  3C E0 80 2B */	lis r7, WriteCallback@ha
/* 802B2E3C 002AEA9C  38 84 A4 80 */	addi r4, r4, lbl_8053A480@l
/* 802B2E40 002AEAA0  7C 7D 1B 78 */	mr r29, r3
/* 802B2E44 002AEAA4  7C C4 F2 14 */	add r6, r4, r30
/* 802B2E48 002AEAA8  7F E3 FB 78 */	mr r3, r31
/* 802B2E4C 002AEAAC  80 86 00 04 */	lwz r4, 4(r6)
/* 802B2E50 002AEAB0  7F 85 E3 78 */	mr r5, r28
/* 802B2E54 002AEAB4  80 C6 00 0C */	lwz r6, 0xc(r6)
/* 802B2E58 002AEAB8  38 E7 2D 4C */	addi r7, r7, WriteCallback@l
/* 802B2E5C 002AEABC  48 00 07 E1 */	bl WPADWriteMemoryAsync
/* 802B2E60 002AEAC0  7F A3 EB 78 */	mr r3, r29
/* 802B2E64 002AEAC4  4B FB B9 21 */	bl OSRestoreInterrupts
/* 802B2E68 002AEAC8  48 00 00 34 */	b lbl_802B2E9C
lbl_802B2E6C:
/* 802B2E6C 002AEACC  3C 60 80 54 */	lis r3, lbl_8053A480@ha
/* 802B2E70 002AEAD0  38 00 00 00 */	li r0, 0
/* 802B2E74 002AEAD4  38 63 A4 80 */	addi r3, r3, lbl_8053A480@l
/* 802B2E78 002AEAD8  7C 03 F1 2E */	stwx r0, r3, r30
/* 802B2E7C 002AEADC  7C 63 F2 14 */	add r3, r3, r30
/* 802B2E80 002AEAE0  81 83 00 10 */	lwz r12, 0x10(r3)
/* 802B2E84 002AEAE4  2C 0C 00 00 */	cmpwi r12, 0
/* 802B2E88 002AEAE8  90 03 00 10 */	stw r0, 0x10(r3)
/* 802B2E8C 002AEAEC  41 82 00 10 */	beq lbl_802B2E9C
/* 802B2E90 002AEAF0  7F E3 FB 78 */	mr r3, r31
/* 802B2E94 002AEAF4  7D 89 03 A6 */	mtctr r12
/* 802B2E98 002AEAF8  4E 80 04 21 */	bctrl
lbl_802B2E9C:
/* 802B2E9C 002AEAFC  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802B2EA0 002AEB00  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802B2EA4 002AEB04  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802B2EA8 002AEB08  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802B2EAC 002AEB0C  83 81 00 10 */	lwz r28, 0x10(r1)
/* 802B2EB0 002AEB10  7C 08 03 A6 */	mtlr r0
/* 802B2EB4 002AEB14  38 21 00 20 */	addi r1, r1, 0x20
/* 802B2EB8 002AEB18  4E 80 00 20 */	blr

WriteGameDataSub:
/* 802B2EBC 002AEB1C  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802B2EC0 002AEB20  7C 08 02 A6 */	mflr r0
/* 802B2EC4 002AEB24  3C A0 80 53 */	lis r5, lbl_80536D70@ha
/* 802B2EC8 002AEB28  90 01 00 24 */	stw r0, 0x24(r1)
/* 802B2ECC 002AEB2C  54 60 10 3A */	slwi r0, r3, 2
/* 802B2ED0 002AEB30  38 A5 6D 70 */	addi r5, r5, lbl_80536D70@l
/* 802B2ED4 002AEB34  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802B2ED8 002AEB38  7C 7F 1B 78 */	mr r31, r3
/* 802B2EDC 002AEB3C  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802B2EE0 002AEB40  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802B2EE4 002AEB44  93 81 00 10 */	stw r28, 0x10(r1)
/* 802B2EE8 002AEB48  7C C5 00 2E */	lwzx r6, r5, r0
/* 802B2EEC 002AEB4C  80 06 00 3C */	lwz r0, 0x3c(r6)
/* 802B2EF0 002AEB50  2C 00 00 00 */	cmpwi r0, 0
/* 802B2EF4 002AEB54  40 82 00 1C */	bne lbl_802B2F10
/* 802B2EF8 002AEB58  7C 85 00 34 */	cntlzw r5, r4
/* 802B2EFC 002AEB5C  38 00 FF FD */	li r0, -3
/* 802B2F00 002AEB60  54 A5 DF FE */	rlwinm r5, r5, 0x1b, 0x1f, 0x1f
/* 802B2F04 002AEB64  7C A5 00 D0 */	neg r5, r5
/* 802B2F08 002AEB68  7C 00 28 78 */	andc r0, r0, r5
/* 802B2F0C 002AEB6C  90 06 00 3C */	stw r0, 0x3c(r6)
lbl_802B2F10:
/* 802B2F10 002AEB70  2C 04 00 00 */	cmpwi r4, 0
/* 802B2F14 002AEB74  40 82 00 90 */	bne lbl_802B2FA4
/* 802B2F18 002AEB78  80 06 00 38 */	lwz r0, 0x38(r6)
/* 802B2F1C 002AEB7C  2C 00 00 00 */	cmpwi r0, 0
/* 802B2F20 002AEB80  41 82 00 10 */	beq lbl_802B2F30
/* 802B2F24 002AEB84  80 06 00 3C */	lwz r0, 0x3c(r6)
/* 802B2F28 002AEB88  2C 00 00 00 */	cmpwi r0, 0
/* 802B2F2C 002AEB8C  40 82 00 74 */	bne lbl_802B2FA0
lbl_802B2F30:
/* 802B2F30 002AEB90  1F C3 00 14 */	mulli r30, r3, 0x14
/* 802B2F34 002AEB94  3C 80 80 54 */	lis r4, lbl_8053A480@ha
/* 802B2F38 002AEB98  38 60 00 10 */	li r3, 0x10
/* 802B2F3C 002AEB9C  38 84 A4 80 */	addi r4, r4, lbl_8053A480@l
/* 802B2F40 002AEBA0  7C 84 F2 14 */	add r4, r4, r30
/* 802B2F44 002AEBA4  A0 04 00 08 */	lhz r0, 8(r4)
/* 802B2F48 002AEBA8  28 00 00 10 */	cmplwi r0, 0x10
/* 802B2F4C 002AEBAC  41 81 00 08 */	bgt lbl_802B2F54
/* 802B2F50 002AEBB0  7C 03 03 78 */	mr r3, r0
lbl_802B2F54:
/* 802B2F54 002AEBB4  A0 04 00 08 */	lhz r0, 8(r4)
/* 802B2F58 002AEBB8  54 7C 04 3E */	clrlwi r28, r3, 0x10
/* 802B2F5C 002AEBBC  7C 1C 00 50 */	subf r0, r28, r0
/* 802B2F60 002AEBC0  B0 04 00 08 */	sth r0, 8(r4)
/* 802B2F64 002AEBC4  4B FB B7 F9 */	bl OSDisableInterrupts
/* 802B2F68 002AEBC8  3C 80 80 54 */	lis r4, lbl_8053A480@ha
/* 802B2F6C 002AEBCC  3C E0 80 2B */	lis r7, WriteCallback@ha
/* 802B2F70 002AEBD0  38 84 A4 80 */	addi r4, r4, lbl_8053A480@l
/* 802B2F74 002AEBD4  7C 7D 1B 78 */	mr r29, r3
/* 802B2F78 002AEBD8  7C C4 F2 14 */	add r6, r4, r30
/* 802B2F7C 002AEBDC  7F E3 FB 78 */	mr r3, r31
/* 802B2F80 002AEBE0  80 86 00 04 */	lwz r4, 4(r6)
/* 802B2F84 002AEBE4  7F 85 E3 78 */	mr r5, r28
/* 802B2F88 002AEBE8  80 C6 00 0C */	lwz r6, 0xc(r6)
/* 802B2F8C 002AEBEC  38 E7 2D 4C */	addi r7, r7, WriteCallback@l
/* 802B2F90 002AEBF0  48 00 06 AD */	bl WPADWriteMemoryAsync
/* 802B2F94 002AEBF4  7F A3 EB 78 */	mr r3, r29
/* 802B2F98 002AEBF8  4B FB B7 ED */	bl OSRestoreInterrupts
/* 802B2F9C 002AEBFC  48 00 00 40 */	b lbl_802B2FDC
lbl_802B2FA0:
/* 802B2FA0 002AEC00  38 80 FF FD */	li r4, -3
lbl_802B2FA4:
/* 802B2FA4 002AEC04  1C C3 00 14 */	mulli r6, r3, 0x14
/* 802B2FA8 002AEC08  3C A0 80 54 */	lis r5, lbl_8053A480@ha
/* 802B2FAC 002AEC0C  38 A5 A4 80 */	addi r5, r5, lbl_8053A480@l
/* 802B2FB0 002AEC10  7F A5 32 14 */	add r29, r5, r6
/* 802B2FB4 002AEC14  80 1D 00 10 */	lwz r0, 0x10(r29)
/* 802B2FB8 002AEC18  2C 00 00 00 */	cmpwi r0, 0
/* 802B2FBC 002AEC1C  41 82 00 20 */	beq lbl_802B2FDC
/* 802B2FC0 002AEC20  3B C0 00 00 */	li r30, 0
/* 802B2FC4 002AEC24  7F E3 FB 78 */	mr r3, r31
/* 802B2FC8 002AEC28  7F C5 31 2E */	stwx r30, r5, r6
/* 802B2FCC 002AEC2C  81 9D 00 10 */	lwz r12, 0x10(r29)
/* 802B2FD0 002AEC30  7D 89 03 A6 */	mtctr r12
/* 802B2FD4 002AEC34  4E 80 04 21 */	bctrl
/* 802B2FD8 002AEC38  93 DD 00 10 */	stw r30, 0x10(r29)
lbl_802B2FDC:
/* 802B2FDC 002AEC3C  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802B2FE0 002AEC40  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802B2FE4 002AEC44  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802B2FE8 002AEC48  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802B2FEC 002AEC4C  83 81 00 10 */	lwz r28, 0x10(r1)
/* 802B2FF0 002AEC50  7C 08 03 A6 */	mtlr r0
/* 802B2FF4 002AEC54  38 21 00 20 */	addi r1, r1, 0x20
/* 802B2FF8 002AEC58  4E 80 00 20 */	blr

writeCheck1:
/* 802B2FFC 002AEC5C  3C A0 80 53 */	lis r5, lbl_80536D70@ha
/* 802B3000 002AEC60  54 60 10 3A */	slwi r0, r3, 2
/* 802B3004 002AEC64  38 A5 6D 70 */	addi r5, r5, lbl_80536D70@l
/* 802B3008 002AEC68  7C A5 00 2E */	lwzx r5, r5, r0
/* 802B300C 002AEC6C  80 05 00 38 */	lwz r0, 0x38(r5)
/* 802B3010 002AEC70  2C 00 00 00 */	cmpwi r0, 0
/* 802B3014 002AEC74  4C 82 00 20 */	bnelr
/* 802B3018 002AEC78  7C 83 00 34 */	cntlzw r3, r4
/* 802B301C 002AEC7C  38 00 FF FD */	li r0, -3
/* 802B3020 002AEC80  54 63 DF FE */	rlwinm r3, r3, 0x1b, 0x1f, 0x1f
/* 802B3024 002AEC84  7C 63 00 D0 */	neg r3, r3
/* 802B3028 002AEC88  7C 00 18 78 */	andc r0, r0, r3
/* 802B302C 002AEC8C  90 05 00 38 */	stw r0, 0x38(r5)
/* 802B3030 002AEC90  4E 80 00 20 */	blr

writeCheck2:
/* 802B3034 002AEC94  3C A0 80 53 */	lis r5, lbl_80536D70@ha
/* 802B3038 002AEC98  54 60 10 3A */	slwi r0, r3, 2
/* 802B303C 002AEC9C  38 A5 6D 70 */	addi r5, r5, lbl_80536D70@l
/* 802B3040 002AECA0  7C A5 00 2E */	lwzx r5, r5, r0
/* 802B3044 002AECA4  80 05 00 3C */	lwz r0, 0x3c(r5)
/* 802B3048 002AECA8  2C 00 00 00 */	cmpwi r0, 0
/* 802B304C 002AECAC  4C 82 00 20 */	bnelr
/* 802B3050 002AECB0  7C 83 00 34 */	cntlzw r3, r4
/* 802B3054 002AECB4  38 00 FF FD */	li r0, -3
/* 802B3058 002AECB8  54 63 DF FE */	rlwinm r3, r3, 0x1b, 0x1f, 0x1f
/* 802B305C 002AECBC  7C 63 00 D0 */	neg r3, r3
/* 802B3060 002AECC0  7C 00 18 78 */	andc r0, r0, r3
/* 802B3064 002AECC4  90 05 00 3C */	stw r0, 0x3c(r5)
/* 802B3068 002AECC8  4E 80 00 20 */	blr

.global WPADWriteGameData
WPADWriteGameData:
/* 802B306C 002AECCC  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 802B3070 002AECD0  7C 08 02 A6 */	mflr r0
/* 802B3074 002AECD4  90 01 00 34 */	stw r0, 0x34(r1)
/* 802B3078 002AECD8  39 61 00 30 */	addi r11, r1, 0x30
/* 802B307C 002AECDC  4B F1 40 9D */	bl _savegpr_23
/* 802B3080 002AECE0  3D 00 80 53 */	lis r8, lbl_80536D70@ha
/* 802B3084 002AECE4  54 60 10 3A */	slwi r0, r3, 2
/* 802B3088 002AECE8  39 08 6D 70 */	addi r8, r8, lbl_80536D70@l
/* 802B308C 002AECEC  7C 7D 1B 78 */	mr r29, r3
/* 802B3090 002AECF0  7F C8 00 2E */	lwzx r30, r8, r0
/* 802B3094 002AECF4  7C 97 23 78 */	mr r23, r4
/* 802B3098 002AECF8  7C B8 2B 78 */	mr r24, r5
/* 802B309C 002AECFC  7C DB 33 78 */	mr r27, r6
/* 802B30A0 002AED00  7C FA 3B 78 */	mr r26, r7
/* 802B30A4 002AED04  4B FB B6 B9 */	bl OSDisableInterrupts
/* 802B30A8 002AED08  83 3E 08 BC */	lwz r25, 0x8bc(r30)
/* 802B30AC 002AED0C  7C 7F 1B 78 */	mr r31, r3
/* 802B30B0 002AED10  80 1E 08 DC */	lwz r0, 0x8dc(r30)
/* 802B30B4 002AED14  2C 19 FF FF */	cmpwi r25, -1
/* 802B30B8 002AED18  41 82 03 24 */	beq lbl_802B33DC
/* 802B30BC 002AED1C  2C 00 00 00 */	cmpwi r0, 0
/* 802B30C0 002AED20  40 82 00 0C */	bne lbl_802B30CC
/* 802B30C4 002AED24  3B 20 FF FE */	li r25, -2
/* 802B30C8 002AED28  48 00 03 14 */	b lbl_802B33DC
lbl_802B30CC:
/* 802B30CC 002AED2C  1F 3D 00 14 */	mulli r25, r29, 0x14
/* 802B30D0 002AED30  3F 80 80 54 */	lis r28, lbl_8053A480@ha
/* 802B30D4 002AED34  3B 9C A4 80 */	addi r28, r28, lbl_8053A480@l
/* 802B30D8 002AED38  7C 1C C8 2E */	lwzx r0, r28, r25
/* 802B30DC 002AED3C  2C 00 00 00 */	cmpwi r0, 0
/* 802B30E0 002AED40  40 82 02 F8 */	bne lbl_802B33D8
/* 802B30E4 002AED44  38 7E 01 60 */	addi r3, r30, 0x160
/* 802B30E8 002AED48  38 80 00 09 */	li r4, 9
/* 802B30EC 002AED4C  4B FF 9F E9 */	bl __CanPushCmdQueue
/* 802B30F0 002AED50  2C 03 00 00 */	cmpwi r3, 0
/* 802B30F4 002AED54  40 82 00 0C */	bne lbl_802B3100
/* 802B30F8 002AED58  3B 20 FF FE */	li r25, -2
/* 802B30FC 002AED5C  48 00 02 E0 */	b lbl_802B33DC
lbl_802B3100:
/* 802B3100 002AED60  38 00 00 01 */	li r0, 1
/* 802B3104 002AED64  7C DC CA 14 */	add r6, r28, r25
/* 802B3108 002AED68  7C 1C C9 2E */	stwx r0, r28, r25
/* 802B310C 002AED6C  38 1B 00 9A */	addi r0, r27, 0x9a
/* 802B3110 002AED70  80 8D AE 54 */	lwz r4, lbl_80640114-_SDA_BASE_(r13)
/* 802B3114 002AED74  38 7E 00 2A */	addi r3, r30, 0x2a
/* 802B3118 002AED78  93 46 00 10 */	stw r26, 0x10(r6)
/* 802B311C 002AED7C  38 A0 00 04 */	li r5, 4
/* 802B3120 002AED80  B3 06 00 08 */	sth r24, 8(r6)
/* 802B3124 002AED84  90 06 00 0C */	stw r0, 0xc(r6)
/* 802B3128 002AED88  92 E6 00 04 */	stw r23, 4(r6)
/* 802B312C 002AED8C  4B D5 0E D5 */	bl memcpy
/* 802B3130 002AED90  3C 80 80 54 */	lis r4, lbl_8053A440@ha
/* 802B3134 002AED94  38 7E 00 08 */	addi r3, r30, 8
/* 802B3138 002AED98  38 84 A4 40 */	addi r4, r4, lbl_8053A440@l
/* 802B313C 002AED9C  38 A0 00 22 */	li r5, 0x22
/* 802B3140 002AEDA0  4B D5 0E C1 */	bl memcpy
/* 802B3144 002AEDA4  4B FB F6 75 */	bl OSGetTime
/* 802B3148 002AEDA8  90 9E 00 04 */	stw r4, 4(r30)
/* 802B314C 002AEDAC  38 A0 00 00 */	li r5, 0
/* 802B3150 002AEDB0  38 00 00 03 */	li r0, 3
/* 802B3154 002AEDB4  38 80 00 00 */	li r4, 0
/* 802B3158 002AEDB8  90 7E 00 00 */	stw r3, 0(r30)
/* 802B315C 002AEDBC  88 6D AE 58 */	lbz r3, lbl_80640118-_SDA_BASE_(r13)
/* 802B3160 002AEDC0  98 7E 00 2E */	stb r3, 0x2e(r30)
/* 802B3164 002AEDC4  98 BE 00 2F */	stb r5, 0x2f(r30)
/* 802B3168 002AEDC8  7C 09 03 A6 */	mtctr r0
lbl_802B316C:
/* 802B316C 002AEDCC  54 80 06 3E */	clrlwi r0, r4, 0x18
/* 802B3170 002AEDD0  88 BE 00 2F */	lbz r5, 0x2f(r30)
/* 802B3174 002AEDD4  7C 7E 00 AE */	lbzx r3, r30, r0
/* 802B3178 002AEDD8  7C DE 02 14 */	add r6, r30, r0
/* 802B317C 002AEDDC  38 84 00 07 */	addi r4, r4, 7
/* 802B3180 002AEDE0  7C 65 1A 14 */	add r3, r5, r3
/* 802B3184 002AEDE4  98 7E 00 2F */	stb r3, 0x2f(r30)
/* 802B3188 002AEDE8  54 65 06 3E */	clrlwi r5, r3, 0x18
/* 802B318C 002AEDEC  54 80 06 3E */	clrlwi r0, r4, 0x18
/* 802B3190 002AEDF0  38 84 00 07 */	addi r4, r4, 7
/* 802B3194 002AEDF4  88 66 00 01 */	lbz r3, 1(r6)
/* 802B3198 002AEDF8  7C 65 1A 14 */	add r3, r5, r3
/* 802B319C 002AEDFC  98 7E 00 2F */	stb r3, 0x2f(r30)
/* 802B31A0 002AEE00  54 65 06 3E */	clrlwi r5, r3, 0x18
/* 802B31A4 002AEE04  88 66 00 02 */	lbz r3, 2(r6)
/* 802B31A8 002AEE08  7C 65 1A 14 */	add r3, r5, r3
/* 802B31AC 002AEE0C  98 7E 00 2F */	stb r3, 0x2f(r30)
/* 802B31B0 002AEE10  54 65 06 3E */	clrlwi r5, r3, 0x18
/* 802B31B4 002AEE14  88 66 00 03 */	lbz r3, 3(r6)
/* 802B31B8 002AEE18  7C 65 1A 14 */	add r3, r5, r3
/* 802B31BC 002AEE1C  98 7E 00 2F */	stb r3, 0x2f(r30)
/* 802B31C0 002AEE20  54 65 06 3E */	clrlwi r5, r3, 0x18
/* 802B31C4 002AEE24  88 66 00 04 */	lbz r3, 4(r6)
/* 802B31C8 002AEE28  7C 65 1A 14 */	add r3, r5, r3
/* 802B31CC 002AEE2C  98 7E 00 2F */	stb r3, 0x2f(r30)
/* 802B31D0 002AEE30  54 65 06 3E */	clrlwi r5, r3, 0x18
/* 802B31D4 002AEE34  88 66 00 05 */	lbz r3, 5(r6)
/* 802B31D8 002AEE38  7C 65 1A 14 */	add r3, r5, r3
/* 802B31DC 002AEE3C  98 7E 00 2F */	stb r3, 0x2f(r30)
/* 802B31E0 002AEE40  54 65 06 3E */	clrlwi r5, r3, 0x18
/* 802B31E4 002AEE44  88 66 00 06 */	lbz r3, 6(r6)
/* 802B31E8 002AEE48  7C DE 02 14 */	add r6, r30, r0
/* 802B31EC 002AEE4C  54 80 06 3E */	clrlwi r0, r4, 0x18
/* 802B31F0 002AEE50  7C 65 1A 14 */	add r3, r5, r3
/* 802B31F4 002AEE54  98 7E 00 2F */	stb r3, 0x2f(r30)
/* 802B31F8 002AEE58  54 65 06 3E */	clrlwi r5, r3, 0x18
/* 802B31FC 002AEE5C  88 66 00 00 */	lbz r3, 0(r6)
/* 802B3200 002AEE60  7C 65 1A 14 */	add r3, r5, r3
/* 802B3204 002AEE64  98 7E 00 2F */	stb r3, 0x2f(r30)
/* 802B3208 002AEE68  54 65 06 3E */	clrlwi r5, r3, 0x18
/* 802B320C 002AEE6C  88 66 00 01 */	lbz r3, 1(r6)
/* 802B3210 002AEE70  7C 65 1A 14 */	add r3, r5, r3
/* 802B3214 002AEE74  98 7E 00 2F */	stb r3, 0x2f(r30)
/* 802B3218 002AEE78  54 65 06 3E */	clrlwi r5, r3, 0x18
/* 802B321C 002AEE7C  88 66 00 02 */	lbz r3, 2(r6)
/* 802B3220 002AEE80  7C 65 1A 14 */	add r3, r5, r3
/* 802B3224 002AEE84  98 7E 00 2F */	stb r3, 0x2f(r30)
/* 802B3228 002AEE88  54 65 06 3E */	clrlwi r5, r3, 0x18
/* 802B322C 002AEE8C  88 66 00 03 */	lbz r3, 3(r6)
/* 802B3230 002AEE90  7C 65 1A 14 */	add r3, r5, r3
/* 802B3234 002AEE94  98 7E 00 2F */	stb r3, 0x2f(r30)
/* 802B3238 002AEE98  54 65 06 3E */	clrlwi r5, r3, 0x18
/* 802B323C 002AEE9C  88 66 00 04 */	lbz r3, 4(r6)
/* 802B3240 002AEEA0  7C 65 1A 14 */	add r3, r5, r3
/* 802B3244 002AEEA4  98 7E 00 2F */	stb r3, 0x2f(r30)
/* 802B3248 002AEEA8  54 65 06 3E */	clrlwi r5, r3, 0x18
/* 802B324C 002AEEAC  88 66 00 05 */	lbz r3, 5(r6)
/* 802B3250 002AEEB0  7C 65 1A 14 */	add r3, r5, r3
/* 802B3254 002AEEB4  98 7E 00 2F */	stb r3, 0x2f(r30)
/* 802B3258 002AEEB8  54 65 06 3E */	clrlwi r5, r3, 0x18
/* 802B325C 002AEEBC  88 66 00 06 */	lbz r3, 6(r6)
/* 802B3260 002AEEC0  7C 65 1A 14 */	add r3, r5, r3
/* 802B3264 002AEEC4  98 7E 00 2F */	stb r3, 0x2f(r30)
/* 802B3268 002AEEC8  42 00 FF 04 */	bdnz lbl_802B316C
/* 802B326C 002AEECC  7C FE 00 AE */	lbzx r7, r30, r0
/* 802B3270 002AEED0  38 A4 00 02 */	addi r5, r4, 2
/* 802B3274 002AEED4  89 1E 00 2F */	lbz r8, 0x2f(r30)
/* 802B3278 002AEED8  38 64 00 03 */	addi r3, r4, 3
/* 802B327C 002AEEDC  54 69 06 3E */	clrlwi r9, r3, 0x18
/* 802B3280 002AEEE0  38 C4 00 01 */	addi r6, r4, 1
/* 802B3284 002AEEE4  7C E8 3A 14 */	add r7, r8, r7
/* 802B3288 002AEEE8  38 04 00 04 */	addi r0, r4, 4
/* 802B328C 002AEEEC  54 C4 06 3E */	clrlwi r4, r6, 0x18
/* 802B3290 002AEEF0  98 FE 00 2F */	stb r7, 0x2f(r30)
/* 802B3294 002AEEF4  54 08 06 3E */	clrlwi r8, r0, 0x18
/* 802B3298 002AEEF8  54 E6 06 3E */	clrlwi r6, r7, 0x18
/* 802B329C 002AEEFC  7C 9E 20 AE */	lbzx r4, r30, r4
/* 802B32A0 002AEF00  3F 80 80 2B */	lis r28, writeCheck1@ha
/* 802B32A4 002AEF04  54 A5 06 3E */	clrlwi r5, r5, 0x18
/* 802B32A8 002AEF08  38 00 00 00 */	li r0, 0
/* 802B32AC 002AEF0C  7C 86 22 14 */	add r4, r6, r4
/* 802B32B0 002AEF10  7F A3 EB 78 */	mr r3, r29
/* 802B32B4 002AEF14  98 9E 00 2F */	stb r4, 0x2f(r30)
/* 802B32B8 002AEF18  54 8B 06 3E */	clrlwi r11, r4, 0x18
/* 802B32BC 002AEF1C  7F C4 F3 78 */	mr r4, r30
/* 802B32C0 002AEF20  38 FC 2F FC */	addi r7, r28, writeCheck1@l
/* 802B32C4 002AEF24  7D 5E 28 AE */	lbzx r10, r30, r5
/* 802B32C8 002AEF28  38 A0 00 10 */	li r5, 0x10
/* 802B32CC 002AEF2C  38 C0 00 2A */	li r6, 0x2a
/* 802B32D0 002AEF30  7D 4B 52 14 */	add r10, r11, r10
/* 802B32D4 002AEF34  99 5E 00 2F */	stb r10, 0x2f(r30)
/* 802B32D8 002AEF38  55 4A 06 3E */	clrlwi r10, r10, 0x18
/* 802B32DC 002AEF3C  7D 3E 48 AE */	lbzx r9, r30, r9
/* 802B32E0 002AEF40  7D 2A 4A 14 */	add r9, r10, r9
/* 802B32E4 002AEF44  99 3E 00 2F */	stb r9, 0x2f(r30)
/* 802B32E8 002AEF48  55 29 06 3E */	clrlwi r9, r9, 0x18
/* 802B32EC 002AEF4C  7D 1E 40 AE */	lbzx r8, r30, r8
/* 802B32F0 002AEF50  7D 09 42 14 */	add r8, r9, r8
/* 802B32F4 002AEF54  55 08 06 3E */	clrlwi r8, r8, 0x18
/* 802B32F8 002AEF58  39 08 00 55 */	addi r8, r8, 0x55
/* 802B32FC 002AEF5C  99 1E 00 2F */	stb r8, 0x2f(r30)
/* 802B3300 002AEF60  90 1E 00 38 */	stw r0, 0x38(r30)
/* 802B3304 002AEF64  90 1E 00 3C */	stw r0, 0x3c(r30)
/* 802B3308 002AEF68  48 00 03 35 */	bl WPADWriteMemoryAsync
/* 802B330C 002AEF6C  3B 7E 00 10 */	addi r27, r30, 0x10
/* 802B3310 002AEF70  7F A3 EB 78 */	mr r3, r29
/* 802B3314 002AEF74  7F 64 DB 78 */	mr r4, r27
/* 802B3318 002AEF78  38 FC 2F FC */	addi r7, r28, 0x2ffc
/* 802B331C 002AEF7C  38 A0 00 10 */	li r5, 0x10
/* 802B3320 002AEF80  38 C0 00 3A */	li r6, 0x3a
/* 802B3324 002AEF84  48 00 03 19 */	bl WPADWriteMemoryAsync
/* 802B3328 002AEF88  3B 5E 00 20 */	addi r26, r30, 0x20
/* 802B332C 002AEF8C  7F A3 EB 78 */	mr r3, r29
/* 802B3330 002AEF90  7F 44 D3 78 */	mr r4, r26
/* 802B3334 002AEF94  38 FC 2F FC */	addi r7, r28, 0x2ffc
/* 802B3338 002AEF98  38 A0 00 10 */	li r5, 0x10
/* 802B333C 002AEF9C  38 C0 00 4A */	li r6, 0x4a
/* 802B3340 002AEFA0  48 00 02 FD */	bl WPADWriteMemoryAsync
/* 802B3344 002AEFA4  3B 3E 00 30 */	addi r25, r30, 0x30
/* 802B3348 002AEFA8  7F A3 EB 78 */	mr r3, r29
/* 802B334C 002AEFAC  7F 24 CB 78 */	mr r4, r25
/* 802B3350 002AEFB0  38 FC 2F FC */	addi r7, r28, 0x2ffc
/* 802B3354 002AEFB4  38 A0 00 08 */	li r5, 8
/* 802B3358 002AEFB8  38 C0 00 5A */	li r6, 0x5a
/* 802B335C 002AEFBC  48 00 02 E1 */	bl WPADWriteMemoryAsync
/* 802B3360 002AEFC0  3F 80 80 2B */	lis r28, writeCheck2@ha
/* 802B3364 002AEFC4  7F A3 EB 78 */	mr r3, r29
/* 802B3368 002AEFC8  7F C4 F3 78 */	mr r4, r30
/* 802B336C 002AEFCC  38 A0 00 10 */	li r5, 0x10
/* 802B3370 002AEFD0  38 FC 30 34 */	addi r7, r28, writeCheck2@l
/* 802B3374 002AEFD4  38 C0 00 62 */	li r6, 0x62
/* 802B3378 002AEFD8  48 00 02 C5 */	bl WPADWriteMemoryAsync
/* 802B337C 002AEFDC  7F A3 EB 78 */	mr r3, r29
/* 802B3380 002AEFE0  7F 64 DB 78 */	mr r4, r27
/* 802B3384 002AEFE4  38 FC 30 34 */	addi r7, r28, 0x3034
/* 802B3388 002AEFE8  38 A0 00 10 */	li r5, 0x10
/* 802B338C 002AEFEC  38 C0 00 72 */	li r6, 0x72
/* 802B3390 002AEFF0  48 00 02 AD */	bl WPADWriteMemoryAsync
/* 802B3394 002AEFF4  7F A3 EB 78 */	mr r3, r29
/* 802B3398 002AEFF8  7F 44 D3 78 */	mr r4, r26
/* 802B339C 002AEFFC  38 FC 30 34 */	addi r7, r28, 0x3034
/* 802B33A0 002AF000  38 A0 00 10 */	li r5, 0x10
/* 802B33A4 002AF004  38 C0 00 82 */	li r6, 0x82
/* 802B33A8 002AF008  48 00 02 95 */	bl WPADWriteMemoryAsync
/* 802B33AC 002AF00C  3C E0 80 2B */	lis r7, WriteGameDataSub@ha
/* 802B33B0 002AF010  7F A3 EB 78 */	mr r3, r29
/* 802B33B4 002AF014  7F 24 CB 78 */	mr r4, r25
/* 802B33B8 002AF018  38 A0 00 08 */	li r5, 8
/* 802B33BC 002AF01C  38 E7 2E BC */	addi r7, r7, WriteGameDataSub@l
/* 802B33C0 002AF020  38 C0 00 92 */	li r6, 0x92
/* 802B33C4 002AF024  48 00 02 79 */	bl WPADWriteMemoryAsync
/* 802B33C8 002AF028  7F E3 FB 78 */	mr r3, r31
/* 802B33CC 002AF02C  4B FB B3 B9 */	bl OSRestoreInterrupts
/* 802B33D0 002AF030  38 60 00 00 */	li r3, 0
/* 802B33D4 002AF034  48 00 00 30 */	b lbl_802B3404
lbl_802B33D8:
/* 802B33D8 002AF038  3B 20 FF FE */	li r25, -2
lbl_802B33DC:
/* 802B33DC 002AF03C  7F E3 FB 78 */	mr r3, r31
/* 802B33E0 002AF040  4B FB B3 A5 */	bl OSRestoreInterrupts
/* 802B33E4 002AF044  2C 1A 00 00 */	cmpwi r26, 0
/* 802B33E8 002AF048  41 82 00 18 */	beq lbl_802B3400
/* 802B33EC 002AF04C  7F 4C D3 78 */	mr r12, r26
/* 802B33F0 002AF050  7F A3 EB 78 */	mr r3, r29
/* 802B33F4 002AF054  7F 24 CB 78 */	mr r4, r25
/* 802B33F8 002AF058  7D 89 03 A6 */	mtctr r12
/* 802B33FC 002AF05C  4E 80 04 21 */	bctrl
lbl_802B3400:
/* 802B3400 002AF060  7F 23 CB 78 */	mr r3, r25
lbl_802B3404:
/* 802B3404 002AF064  39 61 00 30 */	addi r11, r1, 0x30
/* 802B3408 002AF068  4B F1 3D 5D */	bl _restgpr_23
/* 802B340C 002AF06C  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802B3410 002AF070  7C 08 03 A6 */	mtlr r0
/* 802B3414 002AF074  38 21 00 30 */	addi r1, r1, 0x30
/* 802B3418 002AF078  4E 80 00 20 */	blr

.global WPADReadGameData
WPADReadGameData:
/* 802B341C 002AF07C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 802B3420 002AF080  7C 08 02 A6 */	mflr r0
/* 802B3424 002AF084  90 01 00 34 */	stw r0, 0x34(r1)
/* 802B3428 002AF088  39 61 00 30 */	addi r11, r1, 0x30
/* 802B342C 002AF08C  4B F1 3C E9 */	bl _savegpr_22
/* 802B3430 002AF090  3D 00 80 53 */	lis r8, lbl_80536D70@ha
/* 802B3434 002AF094  54 60 10 3A */	slwi r0, r3, 2
/* 802B3438 002AF098  39 08 6D 70 */	addi r8, r8, lbl_80536D70@l
/* 802B343C 002AF09C  7C 78 1B 78 */	mr r24, r3
/* 802B3440 002AF0A0  7E E8 00 2E */	lwzx r23, r8, r0
/* 802B3444 002AF0A4  7C 99 23 78 */	mr r25, r4
/* 802B3448 002AF0A8  7C BA 2B 78 */	mr r26, r5
/* 802B344C 002AF0AC  7C DB 33 78 */	mr r27, r6
/* 802B3450 002AF0B0  7C FC 3B 78 */	mr r28, r7
/* 802B3454 002AF0B4  4B FB B3 09 */	bl OSDisableInterrupts
/* 802B3458 002AF0B8  82 D7 08 BC */	lwz r22, 0x8bc(r23)
/* 802B345C 002AF0BC  7C 7D 1B 78 */	mr r29, r3
/* 802B3460 002AF0C0  80 17 08 DC */	lwz r0, 0x8dc(r23)
/* 802B3464 002AF0C4  2C 16 FF FF */	cmpwi r22, -1
/* 802B3468 002AF0C8  41 82 00 C8 */	beq lbl_802B3530
/* 802B346C 002AF0CC  2C 00 00 00 */	cmpwi r0, 0
/* 802B3470 002AF0D0  40 82 00 0C */	bne lbl_802B347C
/* 802B3474 002AF0D4  3A C0 FF FE */	li r22, -2
/* 802B3478 002AF0D8  48 00 00 B8 */	b lbl_802B3530
lbl_802B347C:
/* 802B347C 002AF0DC  1F D8 00 14 */	mulli r30, r24, 0x14
/* 802B3480 002AF0E0  3F E0 80 54 */	lis r31, lbl_8053A480@ha
/* 802B3484 002AF0E4  3B FF A4 80 */	addi r31, r31, lbl_8053A480@l
/* 802B3488 002AF0E8  7C 1F F0 2E */	lwzx r0, r31, r30
/* 802B348C 002AF0EC  2C 00 00 00 */	cmpwi r0, 0
/* 802B3490 002AF0F0  40 82 00 9C */	bne lbl_802B352C
/* 802B3494 002AF0F4  80 17 00 38 */	lwz r0, 0x38(r23)
/* 802B3498 002AF0F8  38 80 00 00 */	li r4, 0
/* 802B349C 002AF0FC  2C 00 00 00 */	cmpwi r0, 0
/* 802B34A0 002AF100  41 82 00 10 */	beq lbl_802B34B0
/* 802B34A4 002AF104  80 17 00 3C */	lwz r0, 0x3c(r23)
/* 802B34A8 002AF108  2C 00 00 00 */	cmpwi r0, 0
/* 802B34AC 002AF10C  40 82 00 08 */	bne lbl_802B34B4
lbl_802B34B0:
/* 802B34B0 002AF110  38 80 00 01 */	li r4, 1
lbl_802B34B4:
/* 802B34B4 002AF114  7C 64 00 D0 */	neg r3, r4
/* 802B34B8 002AF118  38 00 FF FA */	li r0, -6
/* 802B34BC 002AF11C  7C 63 23 78 */	or r3, r3, r4
/* 802B34C0 002AF120  7C 63 FE 70 */	srawi r3, r3, 0x1f
/* 802B34C4 002AF124  7C 16 18 79 */	andc. r22, r0, r3
/* 802B34C8 002AF128  40 82 00 68 */	bne lbl_802B3530
/* 802B34CC 002AF12C  80 6D AE 54 */	lwz r3, lbl_80640114-_SDA_BASE_(r13)
/* 802B34D0 002AF130  38 97 00 2A */	addi r4, r23, 0x2a
/* 802B34D4 002AF134  38 A0 00 04 */	li r5, 4
/* 802B34D8 002AF138  4B F1 6E C1 */	bl memcmp
/* 802B34DC 002AF13C  2C 03 00 00 */	cmpwi r3, 0
/* 802B34E0 002AF140  40 82 00 44 */	bne lbl_802B3524
/* 802B34E4 002AF144  38 00 00 01 */	li r0, 1
/* 802B34E8 002AF148  3C 60 80 54 */	lis r3, lbl_8053A480@ha
/* 802B34EC 002AF14C  38 63 A4 80 */	addi r3, r3, lbl_8053A480@l
/* 802B34F0 002AF150  7C 1F F1 2E */	stwx r0, r31, r30
/* 802B34F4 002AF154  7C 83 F2 14 */	add r4, r3, r30
/* 802B34F8 002AF158  93 84 00 10 */	stw r28, 0x10(r4)
/* 802B34FC 002AF15C  7F A3 EB 78 */	mr r3, r29
/* 802B3500 002AF160  4B FB B2 85 */	bl OSRestoreInterrupts
/* 802B3504 002AF164  3C E0 80 2B */	lis r7, ResultCallback@ha
/* 802B3508 002AF168  7F 03 C3 78 */	mr r3, r24
/* 802B350C 002AF16C  7F 24 CB 78 */	mr r4, r25
/* 802B3510 002AF170  7F 45 D3 78 */	mr r5, r26
/* 802B3514 002AF174  38 DB 00 9A */	addi r6, r27, 0x9a
/* 802B3518 002AF178  38 E7 2D 18 */	addi r7, r7, ResultCallback@l
/* 802B351C 002AF17C  48 00 00 55 */	bl WPADReadMemoryAsync
/* 802B3520 002AF180  48 00 00 38 */	b lbl_802B3558
lbl_802B3524:
/* 802B3524 002AF184  3A C0 FF FB */	li r22, -5
/* 802B3528 002AF188  48 00 00 08 */	b lbl_802B3530
lbl_802B352C:
/* 802B352C 002AF18C  3A C0 FF FE */	li r22, -2
lbl_802B3530:
/* 802B3530 002AF190  7F A3 EB 78 */	mr r3, r29
/* 802B3534 002AF194  4B FB B2 51 */	bl OSRestoreInterrupts
/* 802B3538 002AF198  2C 1C 00 00 */	cmpwi r28, 0
/* 802B353C 002AF19C  41 82 00 18 */	beq lbl_802B3554
/* 802B3540 002AF1A0  7F 8C E3 78 */	mr r12, r28
/* 802B3544 002AF1A4  7F 03 C3 78 */	mr r3, r24
/* 802B3548 002AF1A8  7E C4 B3 78 */	mr r4, r22
/* 802B354C 002AF1AC  7D 89 03 A6 */	mtctr r12
/* 802B3550 002AF1B0  4E 80 04 21 */	bctrl
lbl_802B3554:
/* 802B3554 002AF1B4  7E C3 B3 78 */	mr r3, r22
lbl_802B3558:
/* 802B3558 002AF1B8  39 61 00 30 */	addi r11, r1, 0x30
/* 802B355C 002AF1BC  4B F1 3C 05 */	bl _restgpr_22
/* 802B3560 002AF1C0  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802B3564 002AF1C4  7C 08 03 A6 */	mtlr r0
/* 802B3568 002AF1C8  38 21 00 30 */	addi r1, r1, 0x30
/* 802B356C 002AF1CC  4E 80 00 20 */	blr

.global WPADReadMemoryAsync
WPADReadMemoryAsync:
/* 802B3570 002AF1D0  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 802B3574 002AF1D4  7C 08 02 A6 */	mflr r0
/* 802B3578 002AF1D8  90 01 00 34 */	stw r0, 0x34(r1)
/* 802B357C 002AF1DC  39 61 00 30 */	addi r11, r1, 0x30
/* 802B3580 002AF1E0  4B F1 3B 9D */	bl _savegpr_24
/* 802B3584 002AF1E4  3D 00 80 53 */	lis r8, lbl_80536D70@ha
/* 802B3588 002AF1E8  54 60 10 3A */	slwi r0, r3, 2
/* 802B358C 002AF1EC  39 08 6D 70 */	addi r8, r8, lbl_80536D70@l
/* 802B3590 002AF1F0  7C 78 1B 78 */	mr r24, r3
/* 802B3594 002AF1F4  7F E8 00 2E */	lwzx r31, r8, r0
/* 802B3598 002AF1F8  7C 99 23 78 */	mr r25, r4
/* 802B359C 002AF1FC  7C BA 2B 78 */	mr r26, r5
/* 802B35A0 002AF200  7C DB 33 78 */	mr r27, r6
/* 802B35A4 002AF204  7C FC 3B 78 */	mr r28, r7
/* 802B35A8 002AF208  4B FB B1 B5 */	bl OSDisableInterrupts
/* 802B35AC 002AF20C  83 BF 08 BC */	lwz r29, 0x8bc(r31)
/* 802B35B0 002AF210  83 DF 08 DC */	lwz r30, 0x8dc(r31)
/* 802B35B4 002AF214  4B FB B1 D1 */	bl OSRestoreInterrupts
/* 802B35B8 002AF218  2C 1D FF FF */	cmpwi r29, -1
/* 802B35BC 002AF21C  41 82 00 40 */	beq lbl_802B35FC
/* 802B35C0 002AF220  2C 1E 00 00 */	cmpwi r30, 0
/* 802B35C4 002AF224  40 82 00 0C */	bne lbl_802B35D0
/* 802B35C8 002AF228  3B A0 FF FE */	li r29, -2
/* 802B35CC 002AF22C  48 00 00 30 */	b lbl_802B35FC
lbl_802B35D0:
/* 802B35D0 002AF230  7F 24 CB 78 */	mr r4, r25
/* 802B35D4 002AF234  7F 45 D3 78 */	mr r5, r26
/* 802B35D8 002AF238  7F 66 DB 78 */	mr r6, r27
/* 802B35DC 002AF23C  7F 87 E3 78 */	mr r7, r28
/* 802B35E0 002AF240  38 7F 01 60 */	addi r3, r31, 0x160
/* 802B35E4 002AF244  4B FF 99 45 */	bl WPADiSendReadData
/* 802B35E8 002AF248  7C 83 00 D0 */	neg r4, r3
/* 802B35EC 002AF24C  38 00 FF FE */	li r0, -2
/* 802B35F0 002AF250  7C 83 1B 78 */	or r3, r4, r3
/* 802B35F4 002AF254  7C 63 FE 70 */	srawi r3, r3, 0x1f
/* 802B35F8 002AF258  7C 1D 18 78 */	andc r29, r0, r3
lbl_802B35FC:
/* 802B35FC 002AF25C  2C 1D 00 00 */	cmpwi r29, 0
/* 802B3600 002AF260  41 82 00 20 */	beq lbl_802B3620
/* 802B3604 002AF264  2C 1C 00 00 */	cmpwi r28, 0
/* 802B3608 002AF268  41 82 00 18 */	beq lbl_802B3620
/* 802B360C 002AF26C  7F 8C E3 78 */	mr r12, r28
/* 802B3610 002AF270  7F 03 C3 78 */	mr r3, r24
/* 802B3614 002AF274  7F A4 EB 78 */	mr r4, r29
/* 802B3618 002AF278  7D 89 03 A6 */	mtctr r12
/* 802B361C 002AF27C  4E 80 04 21 */	bctrl
lbl_802B3620:
/* 802B3620 002AF280  39 61 00 30 */	addi r11, r1, 0x30
/* 802B3624 002AF284  7F A3 EB 78 */	mr r3, r29
/* 802B3628 002AF288  4B F1 3B 41 */	bl _restgpr_24
/* 802B362C 002AF28C  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802B3630 002AF290  7C 08 03 A6 */	mtlr r0
/* 802B3634 002AF294  38 21 00 30 */	addi r1, r1, 0x30
/* 802B3638 002AF298  4E 80 00 20 */	blr

.global WPADWriteMemoryAsync
WPADWriteMemoryAsync:
/* 802B363C 002AF29C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 802B3640 002AF2A0  7C 08 02 A6 */	mflr r0
/* 802B3644 002AF2A4  90 01 00 34 */	stw r0, 0x34(r1)
/* 802B3648 002AF2A8  39 61 00 30 */	addi r11, r1, 0x30
/* 802B364C 002AF2AC  4B F1 3A D1 */	bl _savegpr_24
/* 802B3650 002AF2B0  3D 00 80 53 */	lis r8, lbl_80536D70@ha
/* 802B3654 002AF2B4  54 60 10 3A */	slwi r0, r3, 2
/* 802B3658 002AF2B8  39 08 6D 70 */	addi r8, r8, lbl_80536D70@l
/* 802B365C 002AF2BC  7C 78 1B 78 */	mr r24, r3
/* 802B3660 002AF2C0  7F E8 00 2E */	lwzx r31, r8, r0
/* 802B3664 002AF2C4  7C 99 23 78 */	mr r25, r4
/* 802B3668 002AF2C8  7C BA 2B 78 */	mr r26, r5
/* 802B366C 002AF2CC  7C DB 33 78 */	mr r27, r6
/* 802B3670 002AF2D0  7C FC 3B 78 */	mr r28, r7
/* 802B3674 002AF2D4  4B FB B0 E9 */	bl OSDisableInterrupts
/* 802B3678 002AF2D8  83 BF 08 BC */	lwz r29, 0x8bc(r31)
/* 802B367C 002AF2DC  83 DF 08 DC */	lwz r30, 0x8dc(r31)
/* 802B3680 002AF2E0  4B FB B1 05 */	bl OSRestoreInterrupts
/* 802B3684 002AF2E4  2C 1D FF FF */	cmpwi r29, -1
/* 802B3688 002AF2E8  41 82 00 40 */	beq lbl_802B36C8
/* 802B368C 002AF2EC  2C 1E 00 00 */	cmpwi r30, 0
/* 802B3690 002AF2F0  40 82 00 0C */	bne lbl_802B369C
/* 802B3694 002AF2F4  3B A0 FF FE */	li r29, -2
/* 802B3698 002AF2F8  48 00 00 30 */	b lbl_802B36C8
lbl_802B369C:
/* 802B369C 002AF2FC  7F 24 CB 78 */	mr r4, r25
/* 802B36A0 002AF300  7F 45 D3 78 */	mr r5, r26
/* 802B36A4 002AF304  7F 66 DB 78 */	mr r6, r27
/* 802B36A8 002AF308  7F 87 E3 78 */	mr r7, r28
/* 802B36AC 002AF30C  38 7F 01 60 */	addi r3, r31, 0x160
/* 802B36B0 002AF310  4B FF 96 C1 */	bl WPADiSendWriteData
/* 802B36B4 002AF314  7C 83 00 D0 */	neg r4, r3
/* 802B36B8 002AF318  38 00 FF FE */	li r0, -2
/* 802B36BC 002AF31C  7C 83 1B 78 */	or r3, r4, r3
/* 802B36C0 002AF320  7C 63 FE 70 */	srawi r3, r3, 0x1f
/* 802B36C4 002AF324  7C 1D 18 78 */	andc r29, r0, r3
lbl_802B36C8:
/* 802B36C8 002AF328  2C 1D 00 00 */	cmpwi r29, 0
/* 802B36CC 002AF32C  41 82 00 20 */	beq lbl_802B36EC
/* 802B36D0 002AF330  2C 1C 00 00 */	cmpwi r28, 0
/* 802B36D4 002AF334  41 82 00 18 */	beq lbl_802B36EC
/* 802B36D8 002AF338  7F 8C E3 78 */	mr r12, r28
/* 802B36DC 002AF33C  7F 03 C3 78 */	mr r3, r24
/* 802B36E0 002AF340  7F A4 EB 78 */	mr r4, r29
/* 802B36E4 002AF344  7D 89 03 A6 */	mtctr r12
/* 802B36E8 002AF348  4E 80 04 21 */	bctrl
lbl_802B36EC:
/* 802B36EC 002AF34C  39 61 00 30 */	addi r11, r1, 0x30
/* 802B36F0 002AF350  7F A3 EB 78 */	mr r3, r29
/* 802B36F4 002AF354  4B F1 3A 75 */	bl _restgpr_24
/* 802B36F8 002AF358  80 01 00 34 */	lwz r0, 0x34(r1)
/* 802B36FC 002AF35C  7C 08 03 A6 */	mtlr r0
/* 802B3700 002AF360  38 21 00 30 */	addi r1, r1, 0x30
/* 802B3704 002AF364  4E 80 00 20 */	blr

.global WPADGetGameTitleUtf16
WPADGetGameTitleUtf16:
/* 802B3708 002AF368  94 21 FF E0 */	stwu r1, -0x20(r1)
/* 802B370C 002AF36C  7C 08 02 A6 */	mflr r0
/* 802B3710 002AF370  3C A0 80 53 */	lis r5, lbl_80536D70@ha
/* 802B3714 002AF374  90 01 00 24 */	stw r0, 0x24(r1)
/* 802B3718 002AF378  54 60 10 3A */	slwi r0, r3, 2
/* 802B371C 002AF37C  38 A5 6D 70 */	addi r5, r5, lbl_80536D70@l
/* 802B3720 002AF380  93 E1 00 1C */	stw r31, 0x1c(r1)
/* 802B3724 002AF384  93 C1 00 18 */	stw r30, 0x18(r1)
/* 802B3728 002AF388  93 A1 00 14 */	stw r29, 0x14(r1)
/* 802B372C 002AF38C  7C 9D 23 78 */	mr r29, r4
/* 802B3730 002AF390  7F E5 00 2E */	lwzx r31, r5, r0
/* 802B3734 002AF394  4B FB B0 29 */	bl OSDisableInterrupts
/* 802B3738 002AF398  80 1F 00 38 */	lwz r0, 0x38(r31)
/* 802B373C 002AF39C  38 A0 00 00 */	li r5, 0
/* 802B3740 002AF3A0  2C 00 00 00 */	cmpwi r0, 0
/* 802B3744 002AF3A4  41 82 00 10 */	beq lbl_802B3754
/* 802B3748 002AF3A8  80 1F 00 3C */	lwz r0, 0x3c(r31)
/* 802B374C 002AF3AC  2C 00 00 00 */	cmpwi r0, 0
/* 802B3750 002AF3B0  40 82 00 08 */	bne lbl_802B3758
lbl_802B3754:
/* 802B3754 002AF3B4  38 A0 00 01 */	li r5, 1
lbl_802B3758:
/* 802B3758 002AF3B8  7C 85 00 D0 */	neg r4, r5
/* 802B375C 002AF3BC  38 00 FF FC */	li r0, -4
/* 802B3760 002AF3C0  7C 84 2B 78 */	or r4, r4, r5
/* 802B3764 002AF3C4  7C 84 FE 70 */	srawi r4, r4, 0x1f
/* 802B3768 002AF3C8  7C 1E 20 79 */	andc. r30, r0, r4
/* 802B376C 002AF3CC  40 82 00 10 */	bne lbl_802B377C
/* 802B3770 002AF3D0  38 1F 00 08 */	addi r0, r31, 8
/* 802B3774 002AF3D4  90 1D 00 00 */	stw r0, 0(r29)
/* 802B3778 002AF3D8  48 00 00 0C */	b lbl_802B3784
lbl_802B377C:
/* 802B377C 002AF3DC  38 00 00 00 */	li r0, 0
/* 802B3780 002AF3E0  90 1D 00 00 */	stw r0, 0(r29)
lbl_802B3784:
/* 802B3784 002AF3E4  4B FB B0 01 */	bl OSRestoreInterrupts
/* 802B3788 002AF3E8  7F C3 F3 78 */	mr r3, r30
/* 802B378C 002AF3EC  83 E1 00 1C */	lwz r31, 0x1c(r1)
/* 802B3790 002AF3F0  83 C1 00 18 */	lwz r30, 0x18(r1)
/* 802B3794 002AF3F4  83 A1 00 14 */	lwz r29, 0x14(r1)
/* 802B3798 002AF3F8  80 01 00 24 */	lwz r0, 0x24(r1)
/* 802B379C 002AF3FC  7C 08 03 A6 */	mtlr r0
/* 802B37A0 002AF400  38 21 00 20 */	addi r1, r1, 0x20
/* 802B37A4 002AF404  4E 80 00 20 */	blr

.global WPADSetGameTitleUtf16
WPADSetGameTitleUtf16:
/* 802B37A8 002AF408  3C 80 80 54 */	lis r4, lbl_8053A440@ha
/* 802B37AC 002AF40C  38 00 00 02 */	li r0, 2
/* 802B37B0 002AF410  38 A0 00 00 */	li r5, 0
/* 802B37B4 002AF414  38 84 A4 40 */	addi r4, r4, lbl_8053A440@l
/* 802B37B8 002AF418  7C 09 03 A6 */	mtctr r0
lbl_802B37BC:
/* 802B37BC 002AF41C  A0 03 00 00 */	lhz r0, 0(r3)
/* 802B37C0 002AF420  2C 00 00 00 */	cmpwi r0, 0
/* 802B37C4 002AF424  B0 04 00 00 */	sth r0, 0(r4)
/* 802B37C8 002AF428  41 82 00 84 */	beq lbl_802B384C
/* 802B37CC 002AF42C  A0 03 00 02 */	lhz r0, 2(r3)
/* 802B37D0 002AF430  2C 00 00 00 */	cmpwi r0, 0
/* 802B37D4 002AF434  B0 04 00 02 */	sth r0, 2(r4)
/* 802B37D8 002AF438  41 82 00 74 */	beq lbl_802B384C
/* 802B37DC 002AF43C  A0 03 00 04 */	lhz r0, 4(r3)
/* 802B37E0 002AF440  2C 00 00 00 */	cmpwi r0, 0
/* 802B37E4 002AF444  B0 04 00 04 */	sth r0, 4(r4)
/* 802B37E8 002AF448  41 82 00 64 */	beq lbl_802B384C
/* 802B37EC 002AF44C  A0 03 00 06 */	lhz r0, 6(r3)
/* 802B37F0 002AF450  2C 00 00 00 */	cmpwi r0, 0
/* 802B37F4 002AF454  B0 04 00 06 */	sth r0, 6(r4)
/* 802B37F8 002AF458  41 82 00 54 */	beq lbl_802B384C
/* 802B37FC 002AF45C  A0 03 00 08 */	lhz r0, 8(r3)
/* 802B3800 002AF460  2C 00 00 00 */	cmpwi r0, 0
/* 802B3804 002AF464  B0 04 00 08 */	sth r0, 8(r4)
/* 802B3808 002AF468  41 82 00 44 */	beq lbl_802B384C
/* 802B380C 002AF46C  A0 03 00 0A */	lhz r0, 0xa(r3)
/* 802B3810 002AF470  2C 00 00 00 */	cmpwi r0, 0
/* 802B3814 002AF474  B0 04 00 0A */	sth r0, 0xa(r4)
/* 802B3818 002AF478  41 82 00 34 */	beq lbl_802B384C
/* 802B381C 002AF47C  A0 03 00 0C */	lhz r0, 0xc(r3)
/* 802B3820 002AF480  2C 00 00 00 */	cmpwi r0, 0
/* 802B3824 002AF484  B0 04 00 0C */	sth r0, 0xc(r4)
/* 802B3828 002AF488  41 82 00 24 */	beq lbl_802B384C
/* 802B382C 002AF48C  A0 03 00 0E */	lhz r0, 0xe(r3)
/* 802B3830 002AF490  2C 00 00 00 */	cmpwi r0, 0
/* 802B3834 002AF494  B0 04 00 0E */	sth r0, 0xe(r4)
/* 802B3838 002AF498  41 82 00 14 */	beq lbl_802B384C
/* 802B383C 002AF49C  38 63 00 10 */	addi r3, r3, 0x10
/* 802B3840 002AF4A0  38 84 00 10 */	addi r4, r4, 0x10
/* 802B3844 002AF4A4  38 A5 00 07 */	addi r5, r5, 7
/* 802B3848 002AF4A8  42 00 FF 74 */	bdnz lbl_802B37BC
lbl_802B384C:
/* 802B384C 002AF4AC  3C 60 80 54 */	lis r3, lbl_8053A440@ha
/* 802B3850 002AF4B0  38 00 00 00 */	li r0, 0
/* 802B3854 002AF4B4  38 63 A4 40 */	addi r3, r3, lbl_8053A440@l
/* 802B3858 002AF4B8  B0 03 00 20 */	sth r0, 0x20(r3)
/* 802B385C 002AF4BC  4E 80 00 20 */	blr