mirror of https://github.com/zeldaret/tp.git
				
				
				
			
		
			
				
	
	
		
			338 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			338 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| .include "macros.inc"
 | |
| 
 | |
| .section .text, "ax" # 803584a0
 | |
| 
 | |
| 
 | |
| .global __CARDSeek
 | |
| __CARDSeek:
 | |
| /* 803584A0 003553E0  7C 08 02 A6 */	mflr r0
 | |
| /* 803584A4 003553E4  90 01 00 04 */	stw r0, 4(r1)
 | |
| /* 803584A8 003553E8  94 21 FF D0 */	stwu r1, -0x30(r1)
 | |
| /* 803584AC 003553EC  93 E1 00 2C */	stw r31, 0x2c(r1)
 | |
| /* 803584B0 003553F0  3B E6 00 00 */	addi r31, r6, 0
 | |
| /* 803584B4 003553F4  93 C1 00 28 */	stw r30, 0x28(r1)
 | |
| /* 803584B8 003553F8  3B C5 00 00 */	addi r30, r5, 0
 | |
| /* 803584BC 003553FC  93 A1 00 24 */	stw r29, 0x24(r1)
 | |
| /* 803584C0 00355400  3B A4 00 00 */	addi r29, r4, 0
 | |
| /* 803584C4 00355404  38 81 00 18 */	addi r4, r1, 0x18
 | |
| /* 803584C8 00355408  93 81 00 20 */	stw r28, 0x20(r1)
 | |
| /* 803584CC 0035540C  7C 7C 1B 78 */	mr r28, r3
 | |
| /* 803584D0 00355410  80 63 00 00 */	lwz r3, 0(r3)
 | |
| /* 803584D4 00355414  4B FF B6 E1 */	bl __CARDGetControlBlock
 | |
| /* 803584D8 00355418  2C 03 00 00 */	cmpwi r3, 0
 | |
| /* 803584DC 0035541C  40 80 00 08 */	bge lbl_803584E4
 | |
| /* 803584E0 00355420  48 00 01 58 */	b lbl_80358638
 | |
| lbl_803584E4:
 | |
| /* 803584E4 00355424  A0 1C 00 10 */	lhz r0, 0x10(r28)
 | |
| /* 803584E8 00355428  28 00 00 05 */	cmplwi r0, 5
 | |
| /* 803584EC 0035542C  41 80 00 28 */	blt lbl_80358514
 | |
| /* 803584F0 00355430  80 61 00 18 */	lwz r3, 0x18(r1)
 | |
| /* 803584F4 00355434  A0 A3 00 10 */	lhz r5, 0x10(r3)
 | |
| /* 803584F8 00355438  7C 00 28 40 */	cmplw r0, r5
 | |
| /* 803584FC 0035543C  40 80 00 18 */	bge lbl_80358514
 | |
| /* 80358500 00355440  80 83 00 0C */	lwz r4, 0xc(r3)
 | |
| /* 80358504 00355444  80 1C 00 08 */	lwz r0, 8(r28)
 | |
| /* 80358508 00355448  7C 85 21 D6 */	mullw r4, r5, r4
 | |
| /* 8035850C 0035544C  7C 04 00 00 */	cmpw r4, r0
 | |
| /* 80358510 00355450  41 81 00 14 */	bgt lbl_80358524
 | |
| lbl_80358514:
 | |
| /* 80358514 00355454  80 61 00 18 */	lwz r3, 0x18(r1)
 | |
| /* 80358518 00355458  38 80 FF 80 */	li r4, -128
 | |
| /* 8035851C 0035545C  4B FF B7 51 */	bl __CARDPutControlBlock
 | |
| /* 80358520 00355460  48 00 01 18 */	b lbl_80358638
 | |
| lbl_80358524:
 | |
| /* 80358524 00355464  4B FF D2 59 */	bl __CARDGetDirBlock
 | |
| /* 80358528 00355468  80 1C 00 04 */	lwz r0, 4(r28)
 | |
| /* 8035852C 0035546C  80 A1 00 18 */	lwz r5, 0x18(r1)
 | |
| /* 80358530 00355470  54 00 30 32 */	slwi r0, r0, 6
 | |
| /* 80358534 00355474  7C 83 02 14 */	add r4, r3, r0
 | |
| /* 80358538 00355478  80 65 00 0C */	lwz r3, 0xc(r5)
 | |
| /* 8035853C 0035547C  A0 04 00 38 */	lhz r0, 0x38(r4)
 | |
| /* 80358540 00355480  7C 60 19 D6 */	mullw r3, r0, r3
 | |
| /* 80358544 00355484  7C 03 F0 00 */	cmpw r3, r30
 | |
| /* 80358548 00355488  40 81 00 10 */	ble lbl_80358558
 | |
| /* 8035854C 0035548C  7C 1E EA 14 */	add r0, r30, r29
 | |
| /* 80358550 00355490  7C 03 00 00 */	cmpw r3, r0
 | |
| /* 80358554 00355494  40 80 00 14 */	bge lbl_80358568
 | |
| lbl_80358558:
 | |
| /* 80358558 00355498  38 65 00 00 */	addi r3, r5, 0
 | |
| /* 8035855C 0035549C  38 80 FF F5 */	li r4, -11
 | |
| /* 80358560 003554A0  4B FF B7 0D */	bl __CARDPutControlBlock
 | |
| /* 80358564 003554A4  48 00 00 D4 */	b lbl_80358638
 | |
| lbl_80358568:
 | |
| /* 80358568 003554A8  93 85 00 C0 */	stw r28, 0xc0(r5)
 | |
| /* 8035856C 003554AC  93 BC 00 0C */	stw r29, 0xc(r28)
 | |
| /* 80358570 003554B0  80 1C 00 08 */	lwz r0, 8(r28)
 | |
| /* 80358574 003554B4  7C 1E 00 00 */	cmpw r30, r0
 | |
| /* 80358578 003554B8  40 80 00 40 */	bge lbl_803585B8
 | |
| /* 8035857C 003554BC  38 00 00 00 */	li r0, 0
 | |
| /* 80358580 003554C0  90 1C 00 08 */	stw r0, 8(r28)
 | |
| /* 80358584 003554C4  A0 04 00 36 */	lhz r0, 0x36(r4)
 | |
| /* 80358588 003554C8  B0 1C 00 10 */	sth r0, 0x10(r28)
 | |
| /* 8035858C 003554CC  A0 9C 00 10 */	lhz r4, 0x10(r28)
 | |
| /* 80358590 003554D0  28 04 00 05 */	cmplwi r4, 5
 | |
| /* 80358594 003554D4  41 80 00 14 */	blt lbl_803585A8
 | |
| /* 80358598 003554D8  80 61 00 18 */	lwz r3, 0x18(r1)
 | |
| /* 8035859C 003554DC  A0 03 00 10 */	lhz r0, 0x10(r3)
 | |
| /* 803585A0 003554E0  7C 04 00 40 */	cmplw r4, r0
 | |
| /* 803585A4 003554E4  41 80 00 14 */	blt lbl_803585B8
 | |
| lbl_803585A8:
 | |
| /* 803585A8 003554E8  80 61 00 18 */	lwz r3, 0x18(r1)
 | |
| /* 803585AC 003554EC  38 80 FF FA */	li r4, -6
 | |
| /* 803585B0 003554F0  4B FF B6 BD */	bl __CARDPutControlBlock
 | |
| /* 803585B4 003554F4  48 00 00 84 */	b lbl_80358638
 | |
| lbl_803585B8:
 | |
| /* 803585B8 003554F8  80 61 00 18 */	lwz r3, 0x18(r1)
 | |
| /* 803585BC 003554FC  4B FF CE 59 */	bl __CARDGetFatBlock
 | |
| /* 803585C0 00355500  48 00 00 4C */	b lbl_8035860C
 | |
| lbl_803585C4:
 | |
| /* 803585C4 00355504  80 1C 00 08 */	lwz r0, 8(r28)
 | |
| /* 803585C8 00355508  7C 00 22 14 */	add r0, r0, r4
 | |
| /* 803585CC 0035550C  90 1C 00 08 */	stw r0, 8(r28)
 | |
| /* 803585D0 00355510  A0 1C 00 10 */	lhz r0, 0x10(r28)
 | |
| /* 803585D4 00355514  54 00 08 3C */	slwi r0, r0, 1
 | |
| /* 803585D8 00355518  7C 03 02 2E */	lhzx r0, r3, r0
 | |
| /* 803585DC 0035551C  B0 1C 00 10 */	sth r0, 0x10(r28)
 | |
| /* 803585E0 00355520  A0 BC 00 10 */	lhz r5, 0x10(r28)
 | |
| /* 803585E4 00355524  28 05 00 05 */	cmplwi r5, 5
 | |
| /* 803585E8 00355528  41 80 00 14 */	blt lbl_803585FC
 | |
| /* 803585EC 0035552C  80 81 00 18 */	lwz r4, 0x18(r1)
 | |
| /* 803585F0 00355530  A0 04 00 10 */	lhz r0, 0x10(r4)
 | |
| /* 803585F4 00355534  7C 05 00 40 */	cmplw r5, r0
 | |
| /* 803585F8 00355538  41 80 00 14 */	blt lbl_8035860C
 | |
| lbl_803585FC:
 | |
| /* 803585FC 0035553C  80 61 00 18 */	lwz r3, 0x18(r1)
 | |
| /* 80358600 00355540  38 80 FF FA */	li r4, -6
 | |
| /* 80358604 00355544  4B FF B6 69 */	bl __CARDPutControlBlock
 | |
| /* 80358608 00355548  48 00 00 30 */	b lbl_80358638
 | |
| lbl_8035860C:
 | |
| /* 8035860C 0035554C  80 81 00 18 */	lwz r4, 0x18(r1)
 | |
| /* 80358610 00355550  80 BC 00 08 */	lwz r5, 8(r28)
 | |
| /* 80358614 00355554  80 84 00 0C */	lwz r4, 0xc(r4)
 | |
| /* 80358618 00355558  38 04 FF FF */	addi r0, r4, -1
 | |
| /* 8035861C 0035555C  7F C0 00 78 */	andc r0, r30, r0
 | |
| /* 80358620 00355560  7C 05 00 40 */	cmplw r5, r0
 | |
| /* 80358624 00355564  41 80 FF A0 */	blt lbl_803585C4
 | |
| /* 80358628 00355568  93 DC 00 08 */	stw r30, 8(r28)
 | |
| /* 8035862C 0035556C  38 60 00 00 */	li r3, 0
 | |
| /* 80358630 00355570  80 01 00 18 */	lwz r0, 0x18(r1)
 | |
| /* 80358634 00355574  90 1F 00 00 */	stw r0, 0(r31)
 | |
| lbl_80358638:
 | |
| /* 80358638 00355578  80 01 00 34 */	lwz r0, 0x34(r1)
 | |
| /* 8035863C 0035557C  83 E1 00 2C */	lwz r31, 0x2c(r1)
 | |
| /* 80358640 00355580  83 C1 00 28 */	lwz r30, 0x28(r1)
 | |
| /* 80358644 00355584  83 A1 00 24 */	lwz r29, 0x24(r1)
 | |
| /* 80358648 00355588  83 81 00 20 */	lwz r28, 0x20(r1)
 | |
| /* 8035864C 0035558C  38 21 00 30 */	addi r1, r1, 0x30
 | |
| /* 80358650 00355590  7C 08 03 A6 */	mtlr r0
 | |
| /* 80358654 00355594  4E 80 00 20 */	blr 
 | |
| .global ReadCallback
 | |
| ReadCallback:
 | |
| /* 80358658 00355598  7C 08 02 A6 */	mflr r0
 | |
| /* 8035865C 0035559C  90 01 00 04 */	stw r0, 4(r1)
 | |
| /* 80358660 003555A0  94 21 FF D8 */	stwu r1, -0x28(r1)
 | |
| /* 80358664 003555A4  BF 61 00 14 */	stmw r27, 0x14(r1)
 | |
| /* 80358668 003555A8  3B A3 00 00 */	addi r29, r3, 0
 | |
| /* 8035866C 003555AC  3C 60 80 45 */	lis r3, lbl_8044CBC0@ha
 | |
| /* 80358670 003555B0  1C BD 01 10 */	mulli r5, r29, 0x110
 | |
| /* 80358674 003555B4  38 03 CB C0 */	addi r0, r3, lbl_8044CBC0@l
 | |
| /* 80358678 003555B8  7C 9E 23 79 */	or. r30, r4, r4
 | |
| /* 8035867C 003555BC  7F E0 2A 14 */	add r31, r0, r5
 | |
| /* 80358680 003555C0  41 80 00 C8 */	blt lbl_80358748
 | |
| /* 80358684 003555C4  83 9F 00 C0 */	lwz r28, 0xc0(r31)
 | |
| /* 80358688 003555C8  80 9C 00 0C */	lwz r4, 0xc(r28)
 | |
| /* 8035868C 003555CC  2C 04 00 00 */	cmpwi r4, 0
 | |
| /* 80358690 003555D0  40 80 00 0C */	bge lbl_8035869C
 | |
| /* 80358694 003555D4  3B C0 FF F2 */	li r30, -14
 | |
| /* 80358698 003555D8  48 00 00 B0 */	b lbl_80358748
 | |
| lbl_8035869C:
 | |
| /* 8035869C 003555DC  80 BF 00 0C */	lwz r5, 0xc(r31)
 | |
| /* 803586A0 003555E0  80 DC 00 08 */	lwz r6, 8(r28)
 | |
| /* 803586A4 003555E4  38 05 FF FF */	addi r0, r5, -1
 | |
| /* 803586A8 003555E8  7C 03 00 F8 */	nor r3, r0, r0
 | |
| /* 803586AC 003555EC  7C 06 2A 14 */	add r0, r6, r5
 | |
| /* 803586B0 003555F0  7C 60 00 38 */	and r0, r3, r0
 | |
| /* 803586B4 003555F4  7F 66 00 50 */	subf r27, r6, r0
 | |
| /* 803586B8 003555F8  7C 1B 20 50 */	subf r0, r27, r4
 | |
| /* 803586BC 003555FC  90 1C 00 0C */	stw r0, 0xc(r28)
 | |
| /* 803586C0 00355600  80 1C 00 0C */	lwz r0, 0xc(r28)
 | |
| /* 803586C4 00355604  2C 00 00 00 */	cmpwi r0, 0
 | |
| /* 803586C8 00355608  40 81 00 80 */	ble lbl_80358748
 | |
| /* 803586CC 0035560C  7F E3 FB 78 */	mr r3, r31
 | |
| /* 803586D0 00355610  4B FF CD 45 */	bl __CARDGetFatBlock
 | |
| /* 803586D4 00355614  80 1C 00 08 */	lwz r0, 8(r28)
 | |
| /* 803586D8 00355618  7C 00 DA 14 */	add r0, r0, r27
 | |
| /* 803586DC 0035561C  90 1C 00 08 */	stw r0, 8(r28)
 | |
| /* 803586E0 00355620  A0 1C 00 10 */	lhz r0, 0x10(r28)
 | |
| /* 803586E4 00355624  54 00 08 3C */	slwi r0, r0, 1
 | |
| /* 803586E8 00355628  7C 03 02 2E */	lhzx r0, r3, r0
 | |
| /* 803586EC 0035562C  B0 1C 00 10 */	sth r0, 0x10(r28)
 | |
| /* 803586F0 00355630  A0 7C 00 10 */	lhz r3, 0x10(r28)
 | |
| /* 803586F4 00355634  28 03 00 05 */	cmplwi r3, 5
 | |
| /* 803586F8 00355638  41 80 00 10 */	blt lbl_80358708
 | |
| /* 803586FC 0035563C  A0 1F 00 10 */	lhz r0, 0x10(r31)
 | |
| /* 80358700 00355640  7C 03 00 40 */	cmplw r3, r0
 | |
| /* 80358704 00355644  41 80 00 0C */	blt lbl_80358710
 | |
| lbl_80358708:
 | |
| /* 80358708 00355648  3B C0 FF FA */	li r30, -6
 | |
| /* 8035870C 0035564C  48 00 00 3C */	b lbl_80358748
 | |
| lbl_80358710:
 | |
| /* 80358710 00355650  80 BC 00 0C */	lwz r5, 0xc(r28)
 | |
| /* 80358714 00355654  80 1F 00 0C */	lwz r0, 0xc(r31)
 | |
| /* 80358718 00355658  7C 05 00 00 */	cmpw r5, r0
 | |
| /* 8035871C 0035565C  40 80 00 08 */	bge lbl_80358724
 | |
| /* 80358720 00355660  48 00 00 08 */	b lbl_80358728
 | |
| lbl_80358724:
 | |
| /* 80358724 00355664  7C 05 03 78 */	mr r5, r0
 | |
| lbl_80358728:
 | |
| /* 80358728 00355668  7C 80 19 D6 */	mullw r4, r0, r3
 | |
| /* 8035872C 0035566C  80 DF 00 B4 */	lwz r6, 0xb4(r31)
 | |
| .global ReadCallback
 | |
| /* 80358730 00355670  3C 60 80 36 */	lis r3, ReadCallback@ha
 | |
| .global ReadCallback
 | |
| /* 80358734 00355674  38 E3 86 58 */	addi r7, r3, ReadCallback@l
 | |
| /* 80358738 00355678  38 7D 00 00 */	addi r3, r29, 0
 | |
| /* 8035873C 0035567C  4B FF CB 25 */	bl __CARDRead
 | |
| /* 80358740 00355680  7C 7E 1B 79 */	or. r30, r3, r3
 | |
| /* 80358744 00355684  40 80 00 30 */	bge lbl_80358774
 | |
| lbl_80358748:
 | |
| /* 80358748 00355688  83 7F 00 D0 */	lwz r27, 0xd0(r31)
 | |
| /* 8035874C 0035568C  38 00 00 00 */	li r0, 0
 | |
| /* 80358750 00355690  38 7F 00 00 */	addi r3, r31, 0
 | |
| /* 80358754 00355694  90 1F 00 D0 */	stw r0, 0xd0(r31)
 | |
| /* 80358758 00355698  7F C4 F3 78 */	mr r4, r30
 | |
| /* 8035875C 0035569C  4B FF B5 11 */	bl __CARDPutControlBlock
 | |
| /* 80358760 003556A0  39 9B 00 00 */	addi r12, r27, 0
 | |
| /* 80358764 003556A4  7D 88 03 A6 */	mtlr r12
 | |
| /* 80358768 003556A8  38 7D 00 00 */	addi r3, r29, 0
 | |
| /* 8035876C 003556AC  38 9E 00 00 */	addi r4, r30, 0
 | |
| /* 80358770 003556B0  4E 80 00 21 */	blrl 
 | |
| lbl_80358774:
 | |
| /* 80358774 003556B4  BB 61 00 14 */	lmw r27, 0x14(r1)
 | |
| /* 80358778 003556B8  80 01 00 2C */	lwz r0, 0x2c(r1)
 | |
| /* 8035877C 003556BC  38 21 00 28 */	addi r1, r1, 0x28
 | |
| /* 80358780 003556C0  7C 08 03 A6 */	mtlr r0
 | |
| /* 80358784 003556C4  4E 80 00 20 */	blr 
 | |
| 
 | |
| .global CARDReadAsync
 | |
| CARDReadAsync:
 | |
| /* 80358788 003556C8  7C 08 02 A6 */	mflr r0
 | |
| /* 8035878C 003556CC  90 01 00 04 */	stw r0, 4(r1)
 | |
| /* 80358790 003556D0  54 C0 05 FF */	clrlwi. r0, r6, 0x17
 | |
| /* 80358794 003556D4  94 21 FF D0 */	stwu r1, -0x30(r1)
 | |
| /* 80358798 003556D8  93 E1 00 2C */	stw r31, 0x2c(r1)
 | |
| /* 8035879C 003556DC  3B E5 00 00 */	addi r31, r5, 0
 | |
| /* 803587A0 003556E0  93 C1 00 28 */	stw r30, 0x28(r1)
 | |
| /* 803587A4 003556E4  3B C4 00 00 */	addi r30, r4, 0
 | |
| /* 803587A8 003556E8  93 A1 00 24 */	stw r29, 0x24(r1)
 | |
| /* 803587AC 003556EC  3B A3 00 00 */	addi r29, r3, 0
 | |
| /* 803587B0 003556F0  93 81 00 20 */	stw r28, 0x20(r1)
 | |
| /* 803587B4 003556F4  3B 87 00 00 */	addi r28, r7, 0
 | |
| /* 803587B8 003556F8  40 82 00 0C */	bne lbl_803587C4
 | |
| /* 803587BC 003556FC  57 E0 05 FF */	clrlwi. r0, r31, 0x17
 | |
| /* 803587C0 00355700  41 82 00 0C */	beq lbl_803587CC
 | |
| lbl_803587C4:
 | |
| /* 803587C4 00355704  38 60 FF 80 */	li r3, -128
 | |
| /* 803587C8 00355708  48 00 00 E4 */	b lbl_803588AC
 | |
| lbl_803587CC:
 | |
| /* 803587CC 0035570C  38 7D 00 00 */	addi r3, r29, 0
 | |
| /* 803587D0 00355710  38 9F 00 00 */	addi r4, r31, 0
 | |
| /* 803587D4 00355714  38 A6 00 00 */	addi r5, r6, 0
 | |
| /* 803587D8 00355718  38 C1 00 1C */	addi r6, r1, 0x1c
 | |
| /* 803587DC 0035571C  4B FF FC C5 */	bl __CARDSeek
 | |
| /* 803587E0 00355720  2C 03 00 00 */	cmpwi r3, 0
 | |
| /* 803587E4 00355724  40 80 00 08 */	bge lbl_803587EC
 | |
| /* 803587E8 00355728  48 00 00 C4 */	b lbl_803588AC
 | |
| lbl_803587EC:
 | |
| /* 803587EC 0035572C  80 61 00 1C */	lwz r3, 0x1c(r1)
 | |
| /* 803587F0 00355730  4B FF CF 8D */	bl __CARDGetDirBlock
 | |
| /* 803587F4 00355734  80 1D 00 04 */	lwz r0, 4(r29)
 | |
| /* 803587F8 00355738  54 00 30 32 */	slwi r0, r0, 6
 | |
| /* 803587FC 0035573C  7C 83 02 14 */	add r4, r3, r0
 | |
| /* 80358800 00355740  80 61 00 1C */	lwz r3, 0x1c(r1)
 | |
| /* 80358804 00355744  4B FF F6 A1 */	bl __CARDIsReadable
 | |
| /* 80358808 00355748  7C 64 1B 79 */	or. r4, r3, r3
 | |
| /* 8035880C 0035574C  40 80 00 10 */	bge lbl_8035881C
 | |
| /* 80358810 00355750  80 61 00 1C */	lwz r3, 0x1c(r1)
 | |
| /* 80358814 00355754  4B FF B4 59 */	bl __CARDPutControlBlock
 | |
| /* 80358818 00355758  48 00 00 94 */	b lbl_803588AC
 | |
| lbl_8035881C:
 | |
| /* 8035881C 0035575C  38 7E 00 00 */	addi r3, r30, 0
 | |
| /* 80358820 00355760  38 9F 00 00 */	addi r4, r31, 0
 | |
| /* 80358824 00355764  4B FE 2D 5D */	bl DCInvalidateRange
 | |
| /* 80358828 00355768  28 1C 00 00 */	cmplwi r28, 0
 | |
| /* 8035882C 0035576C  41 82 00 0C */	beq lbl_80358838
 | |
| /* 80358830 00355770  7F 80 E3 78 */	mr r0, r28
 | |
| /* 80358834 00355774  48 00 00 0C */	b lbl_80358840
 | |
| lbl_80358838:
 | |
| .global __CARDDefaultApiCallback
 | |
| /* 80358838 00355778  3C 60 80 35 */	lis r3, __CARDDefaultApiCallback@ha
 | |
| .global __CARDDefaultApiCallback
 | |
| /* 8035883C 0035577C  38 03 2A 30 */	addi r0, r3, __CARDDefaultApiCallback@l
 | |
| lbl_80358840:
 | |
| /* 80358840 00355780  80 61 00 1C */	lwz r3, 0x1c(r1)
 | |
| /* 80358844 00355784  90 03 00 D0 */	stw r0, 0xd0(r3)
 | |
| /* 80358848 00355788  80 61 00 1C */	lwz r3, 0x1c(r1)
 | |
| /* 8035884C 0035578C  80 9D 00 08 */	lwz r4, 8(r29)
 | |
| /* 80358850 00355790  80 A3 00 0C */	lwz r5, 0xc(r3)
 | |
| /* 80358854 00355794  38 05 FF FF */	addi r0, r5, -1
 | |
| /* 80358858 00355798  7C 88 00 38 */	and r8, r4, r0
 | |
| /* 8035885C 0035579C  7C 68 28 50 */	subf r3, r8, r5
 | |
| /* 80358860 003557A0  7C 1F 18 00 */	cmpw r31, r3
 | |
| /* 80358864 003557A4  40 80 00 08 */	bge lbl_8035886C
 | |
| /* 80358868 003557A8  7F E3 FB 78 */	mr r3, r31
 | |
| lbl_8035886C:
 | |
| /* 8035886C 003557AC  A0 1D 00 10 */	lhz r0, 0x10(r29)
 | |
| .global ReadCallback
 | |
| /* 80358870 003557B0  3C 80 80 36 */	lis r4, ReadCallback@ha
 | |
| /* 80358874 003557B4  3B E3 00 00 */	addi r31, r3, 0
 | |
| /* 80358878 003557B8  80 7D 00 00 */	lwz r3, 0(r29)
 | |
| /* 8035887C 003557BC  7C 05 01 D6 */	mullw r0, r5, r0
 | |
| .global ReadCallback
 | |
| /* 80358880 003557C0  38 E4 86 58 */	addi r7, r4, ReadCallback@l
 | |
| /* 80358884 003557C4  38 BF 00 00 */	addi r5, r31, 0
 | |
| /* 80358888 003557C8  38 DE 00 00 */	addi r6, r30, 0
 | |
| /* 8035888C 003557CC  7C 88 02 14 */	add r4, r8, r0
 | |
| /* 80358890 003557D0  4B FF C9 D1 */	bl __CARDRead
 | |
| /* 80358894 003557D4  7C 7D 1B 79 */	or. r29, r3, r3
 | |
| /* 80358898 003557D8  40 80 00 10 */	bge lbl_803588A8
 | |
| /* 8035889C 003557DC  80 61 00 1C */	lwz r3, 0x1c(r1)
 | |
| /* 803588A0 003557E0  7F A4 EB 78 */	mr r4, r29
 | |
| /* 803588A4 003557E4  4B FF B3 C9 */	bl __CARDPutControlBlock
 | |
| lbl_803588A8:
 | |
| /* 803588A8 003557E8  7F A3 EB 78 */	mr r3, r29
 | |
| lbl_803588AC:
 | |
| /* 803588AC 003557EC  80 01 00 34 */	lwz r0, 0x34(r1)
 | |
| /* 803588B0 003557F0  83 E1 00 2C */	lwz r31, 0x2c(r1)
 | |
| /* 803588B4 003557F4  83 C1 00 28 */	lwz r30, 0x28(r1)
 | |
| /* 803588B8 003557F8  83 A1 00 24 */	lwz r29, 0x24(r1)
 | |
| /* 803588BC 003557FC  83 81 00 20 */	lwz r28, 0x20(r1)
 | |
| /* 803588C0 00355800  38 21 00 30 */	addi r1, r1, 0x30
 | |
| /* 803588C4 00355804  7C 08 03 A6 */	mtlr r0
 | |
| /* 803588C8 00355808  4E 80 00 20 */	blr 
 | |
| 
 | |
| .global CARDRead
 | |
| CARDRead:
 | |
| /* 803588CC 0035580C  7C 08 02 A6 */	mflr r0
 | |
| .global __CARDSyncCallback
 | |
| /* 803588D0 00355810  3C E0 80 35 */	lis r7, __CARDSyncCallback@ha
 | |
| /* 803588D4 00355814  90 01 00 04 */	stw r0, 4(r1)
 | |
| .global __CARDSyncCallback
 | |
| /* 803588D8 00355818  38 E7 2A 34 */	addi r7, r7, __CARDSyncCallback@l
 | |
| /* 803588DC 0035581C  94 21 FF E0 */	stwu r1, -0x20(r1)
 | |
| /* 803588E0 00355820  93 E1 00 1C */	stw r31, 0x1c(r1)
 | |
| /* 803588E4 00355824  3B E3 00 00 */	addi r31, r3, 0
 | |
| /* 803588E8 00355828  4B FF FE A1 */	bl CARDReadAsync
 | |
| /* 803588EC 0035582C  2C 03 00 00 */	cmpwi r3, 0
 | |
| /* 803588F0 00355830  40 80 00 08 */	bge lbl_803588F8
 | |
| /* 803588F4 00355834  48 00 00 0C */	b lbl_80358900
 | |
| lbl_803588F8:
 | |
| /* 803588F8 00355838  80 7F 00 00 */	lwz r3, 0(r31)
 | |
| /* 803588FC 0035583C  4B FF B5 25 */	bl __CARDSync
 | |
| lbl_80358900:
 | |
| /* 80358900 00355840  80 01 00 24 */	lwz r0, 0x24(r1)
 | |
| /* 80358904 00355844  83 E1 00 1C */	lwz r31, 0x1c(r1)
 | |
| /* 80358908 00355848  38 21 00 20 */	addi r1, r1, 0x20
 | |
| /* 8035890C 0035584C  7C 08 03 A6 */	mtlr r0
 | |
| /* 80358910 00355850  4E 80 00 20 */	blr 
 |