diff options
| author | red031000 <rubenru09@aol.com> | 2020-05-15 01:15:52 +0100 | 
|---|---|---|
| committer | red031000 <rubenru09@aol.com> | 2020-05-15 01:15:52 +0100 | 
| commit | c18e760f86792d80305bb9a62529c0f07075f8d1 (patch) | |
| tree | 47e29e3607fb3cfba2622aac1bb6a9b1f22f2b68 | |
| parent | 0252f2028d60248db23770a6a33030b40fbcee1e (diff) | |
split libspi
| -rw-r--r-- | arm9/arm9.lcf | 3 | ||||
| -rw-r--r-- | arm9/asm/SPI_mic.s | 528 | ||||
| -rw-r--r-- | arm9/asm/SPI_tp.s (renamed from arm9/asm/libspi.s) | 527 | 
3 files changed, 532 insertions, 526 deletions
| diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index 0f1b6fda..6be919a5 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -216,7 +216,8 @@ SECTIONS {  		DGT_hash2.o (.text)  		DGT_sha1s_arm4cw.o (.text)  		CP_context.o (.text) -		libspi.o (.text) +		SPI_tp.o (.text) +		SPI_mic.o (.text)  		libpm.o (.text)  		librtc.o (.text)  		libcard.o (.text) diff --git a/arm9/asm/SPI_mic.s b/arm9/asm/SPI_mic.s new file mode 100644 index 00000000..f82afbcc --- /dev/null +++ b/arm9/asm/SPI_mic.s @@ -0,0 +1,528 @@ +	.include "asm/macros.inc" +	.include "global.inc" + +	.text + +	arm_func_start MicWaitBusy +MicWaitBusy: ; 0x020D4408 +	ldr ip, _020D441C ; =0x021D54B0 +_020D440C: +	ldr r0, [r12, #0x0] +	cmp r0, #0x1 +	beq _020D440C +	bx lr +	.balign 4 +_020D441C: .word 0x021D54B0 + +	arm_func_start MicGetResultCallback +MicGetResultCallback: ; 0x020D4420 +	ldr r1, _020D442C ; =0x021D54B0 +	str r0, [r1, #0xc] +	bx lr +	.balign 4 +_020D442C: .word 0x021D54B0 + +	arm_func_start MicStopAutoSampling +MicStopAutoSampling: +	stmdb sp!, {lr} +	sub sp, sp, #0x4 +	ldr r1, _020D4460 ; =0x03004200 +	mov r0, #0x9 +	mov r2, #0x0 +	bl PXI_SendWordByFifo +_020D4448: +	cmp r0, #0x0 +	movge r0, #0x1 +	movlt r0, #0x0 +	add sp, sp, #4 +	ldmfd sp!, {lr} +	bx lr +_020D4460: .word 0x03004200 + +	arm_func_start MicStartAutoSampling +MicStartAutoSampling: ; 0x020D4464 +	stmdb sp!, {r4-r6,lr} +	ldr ip, _020D4584 ; =0x02004100 +	mov r6, r0 +	mov r5, r1 +	mov r4, r2 +	orr r1, r3, r12 +	mov r0, #0x9 +	mov r2, #0x0 +	bl PXI_SendWordByFifo +_020D4488: +	cmp r0, #0x0 +	movlt r0, #0x0 +	ldmltia sp!, {r4-r6, lr} +	bxlt lr +	mov r0, r6, lsr #0x10 +	orr r1, r0, #0x10000 +	mov r0, #0x9 +	mov r2, #0x0 +	bl PXI_SendWordByFifo +	cmp r0, #0x0 +	movlt r0, #0x0 +	ldmltia sp!, {r4-r6, lr} +	bxlt lr +	ldr r1, _020D4588 +	mov r0, #0x9 +	and r1, r6, r1 +	orr r1, r1, #0x20000 +	mov r2, #0x0 +	bl PXI_SendWordByFifo +	cmp r0, #0x0 +	movlt r0, #0x0 +	ldmltia sp!, {r4-r6, lr} +	bxlt lr +	mov r0, r5, lsr #0x10 +	orr r1, r0, #0x30000 +	mov r0, #0x9 +	mov r2, #0x0 +	bl PXI_SendWordByFifo +	cmp r0, #0x0 +	movlt r0, #0x0 +	ldmltia sp!, {r4-r6, lr} +	bxlt lr +	ldr r1, _020D4588 +	mov r0, #0x9 +	and r1, r5, r1 +	orr r1, r1, #0x40000 +	mov r2, #0x0 +	bl PXI_SendWordByFifo +	cmp r0, #0x0 +	movlt r0, #0x0 +	ldmltia sp!, {r4-r6, lr} +	bxlt lr +	mov r0, r4, lsr #0x10 +	orr r1, r0, #0x50000 +	mov r0, #0x9 +	mov r2, #0x0 +	bl PXI_SendWordByFifo +	cmp r0, #0x0 +	movlt r0, #0x0 +	ldmltia sp!, {r4-r6, lr} +	bxlt lr +	ldr r0, _020D4588 +	ldr r1, _020D458C +	and r0, r4, r0 +	orr r1, r0, r1 +	mov r0, #0x9 +	mov r2, #0x0 +	bl PXI_SendWordByFifo +	cmp r0, #0x0 +	movge r0, #0x1 +	movlt r0, #0x0 +	ldmia sp!, {r4-r6, lr} +	bx lr +_020D4584: .word 0x02004100 +_020D4588: .word 0x0000FFFF +_020D458C: .word 0x01060000 + +	arm_func_start MicDoSampling +MicDoSampling: ; 0x020D4590 +	stmdb sp!, {lr} +	sub sp, sp, #0x4 +	ldr r1, _020D45C4 ; =0x03004000 +	mov r2, #0x0 +	orr r1, r0, r1 +	mov r0, #0x9 +	bl PXI_SendWordByFifo +_020D45AC: +	cmp r0, #0x0 +	movge r0, #0x1 +	movlt r0, #0x0 +	add sp, sp, #0x4 +	ldmfd sp!, {lr} +	bx lr +_020D45C4: .word 0x03004000 + +	arm_func_start MicCommonCallback +MicCommonCallback: ; 0x020D45C8 +	stmdb sp!, {r4,lr} +	mov r4, r1 +	cmp r2, #0x0 +	beq _020D4610 +	ldr r0, _020D4700 ; =0x021D54B0 +	ldr r2, _020D4700 ; =0x021D54B0 +	ldr r1, [r0, #0x0] +	ldr r12, [r2, #0x4] +	cmp r1, #0x0 +	movne r1, #0x0 +	strne r1, [r0, #0x0] +	cmp r12, #0x0 +	beq _020D4610 +	ldr r1, [r2, #0x8] +	mov r3, #0x0 +	mov r0, #0x6 +	str r3, [r2, #0x4] +	blx r12 +_020D4610: +	and r0, r4, #0xff +	mov r1, r0, lsl #0x10 +	and r2, r4, #0x7f00 +	mov r0, r2, lsl #0x8 +	mov r1, r1, lsr #0x10 +	cmp r1, #0x4 +	mov r2, r0, lsr #0x10 +	addls pc, pc, r1, lsl #0x2 +	b _020D4670 +_020D4634: +	b _020D4648 +	b _020D4650 +	b _020D4658 +	b _020D4660 +	b _020D4668 +_020D4648: +	mov r0, #0x0 +	b _020D4674 +_020D4650: +	mov r0, #0x4 +	b _020D4674 +_020D4658: +	mov r0, #0x2 +	b _020D4674 +_020D4660: +	mov r0, #0x5 +	b _020D4674 +_020D4668: +	mov r0, #0x1 +	b _020D4674 +_020D4670: +	mov r0, #0x6 +_020D4674: +	cmp r2, #0x51 +	bne _020D46A0 +	ldr r1, _020D4700 ; =0x021D54B0 +	ldr r2, [r1, #0x10] +	cmp r2, #0x0 +	ldmeqia sp!, {r4,lr} +	bxeq lr +	ldr r1, [r1, #0x14] +	blx r2 +	ldmia sp!, {r4,lr} +	bx lr +_020D46A0: +	cmp r2, #0x40 +	bne _020D46C0 +	ldr r1, _020D4700 ; =0x021D54B0 +	ldr r2, [r1, #0x18] +	cmp r2, #0x0 +	ldrne r1, _020D4704 ; =0x027FFF94 +	ldrneh r1, [r1, #0x0] +	strneh r1, [r2, #0x0] +_020D46C0: +	ldr r1, _020D4700 ; =0x021D54B0 +	ldr r2, [r1, #0x0] +	cmp r2, #0x0 +	movne r2, #0x0 +	strne r2, [r1, #0x0] +	ldr r2, _020D4700 ; =0x021D54B0 +	ldr r4, [r2, #0x4] +	cmp r4, #0x0 +	ldmeqia sp!, {r4,lr} +	bxeq lr +	ldr r1, [r2, #0x8] +	mov r3, #0x0 +	str r3, [r2, #0x4] +	blx r4 +	ldmia sp!, {r4,lr} +	bx lr +	.balign 4 +_020D4700: .word 0x021D54B0 +_020D4704: .word 0x027FFF94 + +	arm_func_start MIC_GetLastSamplingAddress +MIC_GetLastSamplingAddress: ; 0x020D4708 +	ldr r0, _020D4714 ; =0x027FFF90 +	ldr r0, [r0, #0x0] +	bx lr +	.balign 4 +_020D4714: .word 0x027FFF90 + +	arm_func_start MIC_StopAutoSampling +MIC_StopAutoSampling: ; 0x020D4718 +	stmdb sp!, {lr} +	sub sp, sp, #0x4 +	ldr r0, _020D4754 ; =MicGetResultCallback +	mov r1, #0x0 +	bl MIC_StopAutoSamplingAsync +	ldr r1, _020D4758 ; =0x021D54B0 +	cmp r0, #0x0 +	str r0, [r1, #0xc] +	bne _020D4740 +	bl MicWaitBusy +_020D4740: +	ldr r0, _020D4758 ; =0x021D54B0 +	ldr r0, [r0, #0xc] +	add sp, sp, #0x4 +	ldmia sp!, {lr} +	bx lr +	.balign 4 +_020D4754: .word MicGetResultCallback +_020D4758: .word 0x021D54B0 + +	arm_func_start MIC_StopAutoSamplingAsync +MIC_StopAutoSamplingAsync: ; 0x020D475C +	stmdb sp!, {r4-r5,lr} +	sub sp, sp, #0x4 +	mov r5, r0 +	mov r4, r1 +	bl OS_DisableInterrupts +	ldr r1, _020D47C8 ; =0x021D54B0 +	ldr r2, [r1, #0x0] +	cmp r2, #0x0 +	beq _020D4794 +	bl OS_RestoreInterrupts +	add sp, sp, #0x4 +	mov r0, #0x1 +	ldmia sp!, {r4-r5,lr} +	bx lr +_020D4794: +	mov r2, #0x1 +	str r2, [r1, #0x0] +	bl OS_RestoreInterrupts +	ldr r0, _020D47C8 ; =0x021D54B0 +	str r5, [r0, #0x4] +	str r4, [r0, #0x8] +	bl MicStopAutoSampling +_020D47B0: +	cmp r0, #0x0 +	movne r0, #0x0 +	moveq r0, #0x3 +	add sp, sp, #0x4 +	ldmia sp!, {r4-r5, lr} +	bx lr +_020D47C8: .word 0x021D54B0 + +	arm_func_start MIC_StartAutoSampling +MIC_StartAutoSampling: ; 0x020D47CC +	stmdb sp!, {lr} +	sub sp, sp, #0x4 +	ldr r1, _020D4808 ; =MicGetResultCallback +	mov r2, #0x0 +	bl MIC_StartAutoSamplingAsync +	ldr r1, _020D480C ; =0x021D54B0 +	cmp r0, #0x0 +	str r0, [r1, #0xc] +	bne _020D47F4 +	bl MicWaitBusy +_020D47F4: +	ldr r0, _020D480C ; =0x021D54B0 +	ldr r0, [r0, #0xc] +	add sp, sp, #0x4 +	ldmia sp!, {lr} +	bx lr +	.balign 4 +_020D4808: .word MicGetResultCallback +_020D480C: .word 0x021D54B0 + +	arm_func_start MIC_StartAutoSamplingAsync +MIC_StartAutoSamplingAsync: ; 0x020D4810 +	stmdb sp!, {r4-r7,lr} +	sub sp, sp, #0x4 +	mov r7, r0 +	ldr r0, [r7, #0x4] +	mov r6, r1 +	ands r0, r0, #0x1f +	mov r5, r2 +	addne sp, sp, #0x4 +	movne r0, #0x2 +	ldmneia sp!, {r4-r7,lr} +	bxne lr +	ldr r1, [r7, #0x8] +	ands r0, r1, #0x1f +	addne sp, sp, #0x4 +	movne r0, #0x2 +	ldmneia sp!, {r4-r7,lr} +	bxne lr +	cmp r1, #0x0 +	addeq sp, sp, #0x4 +	moveq r0, #0x2 +	ldmeqia sp!, {r4-r7,lr} +	bxeq lr +	ldr r0, [r7, #0xc] +	cmp r0, #0x400 +	addcc sp, sp, #0x4 +	movcc r0, #0x2 +	ldmccia sp!, {r4-r7,lr} +	bxcc lr +	ldr r0, [r7, #0x0] +	cmp r0, #0x5 +	addls pc, pc, r0, lsl #0x2 +	b _020D48D8 +_020D4890: +	b _020D48A8 +	b _020D48B0 +	b _020D48B8 +	b _020D48C0 +	b _020D48C8 +	b _020D48D0 +_020D48A8: +	mov r1, #0x0 +	b _020D48E8 +_020D48B0: +	mov r1, #0x1 +	b _020D48E8 +_020D48B8: +	mov r1, #0x2 +	b _020D48E8 +_020D48C0: +	mov r1, #0x3 +	b _020D48E8 +_020D48C8: +	mov r1, #0x5 +	b _020D48E8 +_020D48D0: +	mov r1, #0x7 +	b _020D48E8 +_020D48D8: +	add sp, sp, #0x4 +	mov r0, #0x2 +	ldmia sp!, {r4-r7,lr} +	bx lr +_020D48E8: +	ldr r0, [r7, #0x10] +	cmp r0, #0x0 +	orrne r0, r1, #0x10 +	andne r0, r0, #0xff +	andeq r0, r1, #0xff +	and r4, r0, #0xff +	bl OS_DisableInterrupts +	ldr r1, _020D497C +	ldr r2, [r1] +	cmp r2, #0x0 +	beq _020D4928 +	bl OS_RestoreInterrupts +	add sp, sp, #0x4 +	mov r0, #0x1 +	ldmia sp!, {r4-r7,lr} +	bx lr +_020D4928: +	mov r2, #0x1 +	str r2, [r1] +	bl OS_RestoreInterrupts +	ldr r0, _020D497C +	mov r3, r4 +	str r6, [r0, #0x4] +	str r5, [r0, #0x8] +	ldr r1, [r7, #0x14] +	str r1, [r0, #0x10] +	ldr r1, [r7, #0x18] +	str r1, [r0, #0x14] +	ldr r0, [r7, #0x4] +	ldr r1, [r7, #0x8] +	ldr r2, [r7, #0xC] +	bl MicStartAutoSampling +	cmp r0, #0x0 +	movne r0, #0x0 +	moveq r0, #0x3 +	add sp, sp, #0x4 +	ldmia sp!, {r4-r7,lr} +	bx lr +_020D497C: .word 0x021D54B0 + +	arm_func_start MIC_DoSamplingAsync +MIC_DoSamplingAsync: ; 0x020D4980 +	stmdb sp!, {r4-r7,lr} +	sub sp, sp, #0x4 +	cmp r0, #0x6 +	mov r7, r1 +	mov r6, r2 +	mov r5, r3 +	addge sp, sp, #0x4 +	movge r0, #0x2 +	ldmgeia sp!, {r4-r7,lr} +	bxge lr +	cmp r0, #0x3 +	addls pc, pc, r0, lsl #0x2 +	b _020D49E4 +_020D49B4: +	b _020D49C4 +	b _020D49CC +	b _020D49D4 +	b _020D49DC +_020D49C4: +	mov r4, #0x0 +	b _020D49F4 +_020D49CC: +	mov r4, #0x1 +	b _020D49F4 +_020D49D4: +	mov r4, #0x2 +	b _020D49F4 +_020D49DC: +	mov r4, #0x3 +	b _020D49F4 +_020D49E4: +	add sp, sp, #0x4 +	mov r0, #0x2 +	ldmia sp!, {r4-r7,lr} +	bx lr +_020D49F4: +	bl OS_DisableInterrupts +	ldr r1, _020D4A58 +	ldr r2, [r1] +	cmp r2, #0x0 +	beq _020D4A1C +	bl OS_RestoreInterrupts +	add sp, sp, #0x4 +	mov r0, #0x1 +	ldmia sp!, {r4-r7,lr} +	bx lr +_020D4A1C: +	mov r2, #0x1 +	str r2, [r1] +	bl OS_RestoreInterrupts +	ldr r1, _020D4A58 +	mov r0, r4 +	str r6, [r1, #0x4] +	str r5, [r1, #0x8] +	str r7, [r1, #0x18] +	bl MicDoSampling +	cmp r0, #0x0 +	movne r0, #0x0 +	moveq r0, #0x3 +	add sp, sp, #0x4 +	ldmia sp!, {r4-r7,lr} +	bx lr +_020D4A58: .word 0x021D54B0 + +	arm_func_start MIC_Init +MIC_Init: ; 0x020D4A5C +	stmdb sp!, {r4-r5,lr} +	sub sp, sp, #0x4 +	ldr r1, _020D4AD8 ; =0x021D54AC +	ldrh r0, [r1, #0x0] +	cmp r0, #0x0 +	addne sp, sp, #0x4 +	ldmneia sp!, {r4-r5,lr} +	bxne lr +	ldr r0, _020D4ADC ; =0x021D54B0 +	mov r2, #0x0 +	mov r3, #0x1 +	strh r3, [r1, #0x0] +	str r2, [r0, #0x0] +	str r2, [r0, #0x4] +	bl PXI_Init +	mov r5, #0x9 +	mov r4, #0x1 +_020D4AA0: +	mov r0, r5 +	mov r1, r4 +	bl PXI_IsCallbackReady +_020D4AAC: +	cmp r0, #0x0 +	beq _020D4AA0 +	ldr r2, _020D4AE0 +	mov r3, #0x0 +	ldr r1, _020D4AE4 +	mov r0, #0x9 +	str r3, [r2] +	bl PXI_SetFifoRecvCallback +	add sp, sp, #0x4 +	ldmia sp!, {r4-r5, lr} +	bx lr +_020D4AD8: .word 0x021D54AC +_020D4ADC: .word 0x021D54B0 +_020D4AE0: .word 0x027FFF90 +_020D4AE4: .word MicCommonCallback diff --git a/arm9/asm/libspi.s b/arm9/asm/SPI_tp.s index 915bb22c..e9de5fa1 100644 --- a/arm9/asm/libspi.s +++ b/arm9/asm/SPI_tp.s @@ -1,6 +1,7 @@  	.include "asm/macros.inc"  	.include "global.inc" -	.section .text + +    .text  	arm_func_start TP_CheckError  TP_CheckError: ; 0x020D36C4 @@ -961,527 +962,3 @@ _020D43EC:  _020D43FC: .word 0x021D5474  _020D4400: .word 0x027FFFAA  _020D4404: .word 0x027FFFAC - -	arm_func_start MicWaitBusy -MicWaitBusy: ; 0x020D4408 -	ldr ip, _020D441C ; =0x021D54B0 -_020D440C: -	ldr r0, [r12, #0x0] -	cmp r0, #0x1 -	beq _020D440C -	bx lr -	.balign 4 -_020D441C: .word 0x021D54B0 - -	arm_func_start MicGetResultCallback -MicGetResultCallback: ; 0x020D4420 -	ldr r1, _020D442C ; =0x021D54B0 -	str r0, [r1, #0xc] -	bx lr -	.balign 4 -_020D442C: .word 0x021D54B0 - -	arm_func_start MicStopAutoSampling -MicStopAutoSampling: -	stmdb sp!, {lr} -	sub sp, sp, #0x4 -	ldr r1, _020D4460 ; =0x03004200 -	mov r0, #0x9 -	mov r2, #0x0 -	bl PXI_SendWordByFifo -_020D4448: -	cmp r0, #0x0 -	movge r0, #0x1 -	movlt r0, #0x0 -	add sp, sp, #4 -	ldmfd sp!, {lr} -	bx lr -_020D4460: .word 0x03004200 - -	arm_func_start MicStartAutoSampling -MicStartAutoSampling: ; 0x020D4464 -	stmdb sp!, {r4-r6,lr} -	ldr ip, _020D4584 ; =0x02004100 -	mov r6, r0 -	mov r5, r1 -	mov r4, r2 -	orr r1, r3, r12 -	mov r0, #0x9 -	mov r2, #0x0 -	bl PXI_SendWordByFifo -_020D4488: -	cmp r0, #0x0 -	movlt r0, #0x0 -	ldmltia sp!, {r4-r6, lr} -	bxlt lr -	mov r0, r6, lsr #0x10 -	orr r1, r0, #0x10000 -	mov r0, #0x9 -	mov r2, #0x0 -	bl PXI_SendWordByFifo -	cmp r0, #0x0 -	movlt r0, #0x0 -	ldmltia sp!, {r4-r6, lr} -	bxlt lr -	ldr r1, _020D4588 -	mov r0, #0x9 -	and r1, r6, r1 -	orr r1, r1, #0x20000 -	mov r2, #0x0 -	bl PXI_SendWordByFifo -	cmp r0, #0x0 -	movlt r0, #0x0 -	ldmltia sp!, {r4-r6, lr} -	bxlt lr -	mov r0, r5, lsr #0x10 -	orr r1, r0, #0x30000 -	mov r0, #0x9 -	mov r2, #0x0 -	bl PXI_SendWordByFifo -	cmp r0, #0x0 -	movlt r0, #0x0 -	ldmltia sp!, {r4-r6, lr} -	bxlt lr -	ldr r1, _020D4588 -	mov r0, #0x9 -	and r1, r5, r1 -	orr r1, r1, #0x40000 -	mov r2, #0x0 -	bl PXI_SendWordByFifo -	cmp r0, #0x0 -	movlt r0, #0x0 -	ldmltia sp!, {r4-r6, lr} -	bxlt lr -	mov r0, r4, lsr #0x10 -	orr r1, r0, #0x50000 -	mov r0, #0x9 -	mov r2, #0x0 -	bl PXI_SendWordByFifo -	cmp r0, #0x0 -	movlt r0, #0x0 -	ldmltia sp!, {r4-r6, lr} -	bxlt lr -	ldr r0, _020D4588 -	ldr r1, _020D458C -	and r0, r4, r0 -	orr r1, r0, r1 -	mov r0, #0x9 -	mov r2, #0x0 -	bl PXI_SendWordByFifo -	cmp r0, #0x0 -	movge r0, #0x1 -	movlt r0, #0x0 -	ldmia sp!, {r4-r6, lr} -	bx lr -_020D4584: .word 0x02004100 -_020D4588: .word 0x0000FFFF -_020D458C: .word 0x01060000 - -	arm_func_start MicDoSampling -MicDoSampling: ; 0x020D4590 -	stmdb sp!, {lr} -	sub sp, sp, #0x4 -	ldr r1, _020D45C4 ; =0x03004000 -	mov r2, #0x0 -	orr r1, r0, r1 -	mov r0, #0x9 -	bl PXI_SendWordByFifo -_020D45AC: -	cmp r0, #0x0 -	movge r0, #0x1 -	movlt r0, #0x0 -	add sp, sp, #0x4 -	ldmfd sp!, {lr} -	bx lr -_020D45C4: .word 0x03004000 - -	arm_func_start MicCommonCallback -MicCommonCallback: ; 0x020D45C8 -	stmdb sp!, {r4,lr} -	mov r4, r1 -	cmp r2, #0x0 -	beq _020D4610 -	ldr r0, _020D4700 ; =0x021D54B0 -	ldr r2, _020D4700 ; =0x021D54B0 -	ldr r1, [r0, #0x0] -	ldr r12, [r2, #0x4] -	cmp r1, #0x0 -	movne r1, #0x0 -	strne r1, [r0, #0x0] -	cmp r12, #0x0 -	beq _020D4610 -	ldr r1, [r2, #0x8] -	mov r3, #0x0 -	mov r0, #0x6 -	str r3, [r2, #0x4] -	blx r12 -_020D4610: -	and r0, r4, #0xff -	mov r1, r0, lsl #0x10 -	and r2, r4, #0x7f00 -	mov r0, r2, lsl #0x8 -	mov r1, r1, lsr #0x10 -	cmp r1, #0x4 -	mov r2, r0, lsr #0x10 -	addls pc, pc, r1, lsl #0x2 -	b _020D4670 -_020D4634: -	b _020D4648 -	b _020D4650 -	b _020D4658 -	b _020D4660 -	b _020D4668 -_020D4648: -	mov r0, #0x0 -	b _020D4674 -_020D4650: -	mov r0, #0x4 -	b _020D4674 -_020D4658: -	mov r0, #0x2 -	b _020D4674 -_020D4660: -	mov r0, #0x5 -	b _020D4674 -_020D4668: -	mov r0, #0x1 -	b _020D4674 -_020D4670: -	mov r0, #0x6 -_020D4674: -	cmp r2, #0x51 -	bne _020D46A0 -	ldr r1, _020D4700 ; =0x021D54B0 -	ldr r2, [r1, #0x10] -	cmp r2, #0x0 -	ldmeqia sp!, {r4,lr} -	bxeq lr -	ldr r1, [r1, #0x14] -	blx r2 -	ldmia sp!, {r4,lr} -	bx lr -_020D46A0: -	cmp r2, #0x40 -	bne _020D46C0 -	ldr r1, _020D4700 ; =0x021D54B0 -	ldr r2, [r1, #0x18] -	cmp r2, #0x0 -	ldrne r1, _020D4704 ; =0x027FFF94 -	ldrneh r1, [r1, #0x0] -	strneh r1, [r2, #0x0] -_020D46C0: -	ldr r1, _020D4700 ; =0x021D54B0 -	ldr r2, [r1, #0x0] -	cmp r2, #0x0 -	movne r2, #0x0 -	strne r2, [r1, #0x0] -	ldr r2, _020D4700 ; =0x021D54B0 -	ldr r4, [r2, #0x4] -	cmp r4, #0x0 -	ldmeqia sp!, {r4,lr} -	bxeq lr -	ldr r1, [r2, #0x8] -	mov r3, #0x0 -	str r3, [r2, #0x4] -	blx r4 -	ldmia sp!, {r4,lr} -	bx lr -	.balign 4 -_020D4700: .word 0x021D54B0 -_020D4704: .word 0x027FFF94 - -	arm_func_start MIC_GetLastSamplingAddress -MIC_GetLastSamplingAddress: ; 0x020D4708 -	ldr r0, _020D4714 ; =0x027FFF90 -	ldr r0, [r0, #0x0] -	bx lr -	.balign 4 -_020D4714: .word 0x027FFF90 - -	arm_func_start MIC_StopAutoSampling -MIC_StopAutoSampling: ; 0x020D4718 -	stmdb sp!, {lr} -	sub sp, sp, #0x4 -	ldr r0, _020D4754 ; =MicGetResultCallback -	mov r1, #0x0 -	bl MIC_StopAutoSamplingAsync -	ldr r1, _020D4758 ; =0x021D54B0 -	cmp r0, #0x0 -	str r0, [r1, #0xc] -	bne _020D4740 -	bl MicWaitBusy -_020D4740: -	ldr r0, _020D4758 ; =0x021D54B0 -	ldr r0, [r0, #0xc] -	add sp, sp, #0x4 -	ldmia sp!, {lr} -	bx lr -	.balign 4 -_020D4754: .word MicGetResultCallback -_020D4758: .word 0x021D54B0 - -	arm_func_start MIC_StopAutoSamplingAsync -MIC_StopAutoSamplingAsync: ; 0x020D475C -	stmdb sp!, {r4-r5,lr} -	sub sp, sp, #0x4 -	mov r5, r0 -	mov r4, r1 -	bl OS_DisableInterrupts -	ldr r1, _020D47C8 ; =0x021D54B0 -	ldr r2, [r1, #0x0] -	cmp r2, #0x0 -	beq _020D4794 -	bl OS_RestoreInterrupts -	add sp, sp, #0x4 -	mov r0, #0x1 -	ldmia sp!, {r4-r5,lr} -	bx lr -_020D4794: -	mov r2, #0x1 -	str r2, [r1, #0x0] -	bl OS_RestoreInterrupts -	ldr r0, _020D47C8 ; =0x021D54B0 -	str r5, [r0, #0x4] -	str r4, [r0, #0x8] -	bl MicStopAutoSampling -_020D47B0: -	cmp r0, #0x0 -	movne r0, #0x0 -	moveq r0, #0x3 -	add sp, sp, #0x4 -	ldmia sp!, {r4-r5, lr} -	bx lr -_020D47C8: .word 0x021D54B0 - -	arm_func_start MIC_StartAutoSampling -MIC_StartAutoSampling: ; 0x020D47CC -	stmdb sp!, {lr} -	sub sp, sp, #0x4 -	ldr r1, _020D4808 ; =MicGetResultCallback -	mov r2, #0x0 -	bl MIC_StartAutoSamplingAsync -	ldr r1, _020D480C ; =0x021D54B0 -	cmp r0, #0x0 -	str r0, [r1, #0xc] -	bne _020D47F4 -	bl MicWaitBusy -_020D47F4: -	ldr r0, _020D480C ; =0x021D54B0 -	ldr r0, [r0, #0xc] -	add sp, sp, #0x4 -	ldmia sp!, {lr} -	bx lr -	.balign 4 -_020D4808: .word MicGetResultCallback -_020D480C: .word 0x021D54B0 - -	arm_func_start MIC_StartAutoSamplingAsync -MIC_StartAutoSamplingAsync: ; 0x020D4810 -	stmdb sp!, {r4-r7,lr} -	sub sp, sp, #0x4 -	mov r7, r0 -	ldr r0, [r7, #0x4] -	mov r6, r1 -	ands r0, r0, #0x1f -	mov r5, r2 -	addne sp, sp, #0x4 -	movne r0, #0x2 -	ldmneia sp!, {r4-r7,lr} -	bxne lr -	ldr r1, [r7, #0x8] -	ands r0, r1, #0x1f -	addne sp, sp, #0x4 -	movne r0, #0x2 -	ldmneia sp!, {r4-r7,lr} -	bxne lr -	cmp r1, #0x0 -	addeq sp, sp, #0x4 -	moveq r0, #0x2 -	ldmeqia sp!, {r4-r7,lr} -	bxeq lr -	ldr r0, [r7, #0xc] -	cmp r0, #0x400 -	addcc sp, sp, #0x4 -	movcc r0, #0x2 -	ldmccia sp!, {r4-r7,lr} -	bxcc lr -	ldr r0, [r7, #0x0] -	cmp r0, #0x5 -	addls pc, pc, r0, lsl #0x2 -	b _020D48D8 -_020D4890: -	b _020D48A8 -	b _020D48B0 -	b _020D48B8 -	b _020D48C0 -	b _020D48C8 -	b _020D48D0 -_020D48A8: -	mov r1, #0x0 -	b _020D48E8 -_020D48B0: -	mov r1, #0x1 -	b _020D48E8 -_020D48B8: -	mov r1, #0x2 -	b _020D48E8 -_020D48C0: -	mov r1, #0x3 -	b _020D48E8 -_020D48C8: -	mov r1, #0x5 -	b _020D48E8 -_020D48D0: -	mov r1, #0x7 -	b _020D48E8 -_020D48D8: -	add sp, sp, #0x4 -	mov r0, #0x2 -	ldmia sp!, {r4-r7,lr} -	bx lr -_020D48E8: -	ldr r0, [r7, #0x10] -	cmp r0, #0x0 -	orrne r0, r1, #0x10 -	andne r0, r0, #0xff -	andeq r0, r1, #0xff -	and r4, r0, #0xff -	bl OS_DisableInterrupts -	ldr r1, _020D497C -	ldr r2, [r1] -	cmp r2, #0x0 -	beq _020D4928 -	bl OS_RestoreInterrupts -	add sp, sp, #0x4 -	mov r0, #0x1 -	ldmia sp!, {r4-r7,lr} -	bx lr -_020D4928: -	mov r2, #0x1 -	str r2, [r1] -	bl OS_RestoreInterrupts -	ldr r0, _020D497C -	mov r3, r4 -	str r6, [r0, #0x4] -	str r5, [r0, #0x8] -	ldr r1, [r7, #0x14] -	str r1, [r0, #0x10] -	ldr r1, [r7, #0x18] -	str r1, [r0, #0x14] -	ldr r0, [r7, #0x4] -	ldr r1, [r7, #0x8] -	ldr r2, [r7, #0xC] -	bl MicStartAutoSampling -	cmp r0, #0x0 -	movne r0, #0x0 -	moveq r0, #0x3 -	add sp, sp, #0x4 -	ldmia sp!, {r4-r7,lr} -	bx lr -_020D497C: .word 0x021D54B0 - -	arm_func_start MIC_DoSamplingAsync -MIC_DoSamplingAsync: ; 0x020D4980 -	stmdb sp!, {r4-r7,lr} -	sub sp, sp, #0x4 -	cmp r0, #0x6 -	mov r7, r1 -	mov r6, r2 -	mov r5, r3 -	addge sp, sp, #0x4 -	movge r0, #0x2 -	ldmgeia sp!, {r4-r7,lr} -	bxge lr -	cmp r0, #0x3 -	addls pc, pc, r0, lsl #0x2 -	b _020D49E4 -_020D49B4: -	b _020D49C4 -	b _020D49CC -	b _020D49D4 -	b _020D49DC -_020D49C4: -	mov r4, #0x0 -	b _020D49F4 -_020D49CC: -	mov r4, #0x1 -	b _020D49F4 -_020D49D4: -	mov r4, #0x2 -	b _020D49F4 -_020D49DC: -	mov r4, #0x3 -	b _020D49F4 -_020D49E4: -	add sp, sp, #0x4 -	mov r0, #0x2 -	ldmia sp!, {r4-r7,lr} -	bx lr -_020D49F4: -	bl OS_DisableInterrupts -	ldr r1, _020D4A58 -	ldr r2, [r1] -	cmp r2, #0x0 -	beq _020D4A1C -	bl OS_RestoreInterrupts -	add sp, sp, #0x4 -	mov r0, #0x1 -	ldmia sp!, {r4-r7,lr} -	bx lr -_020D4A1C: -	mov r2, #0x1 -	str r2, [r1] -	bl OS_RestoreInterrupts -	ldr r1, _020D4A58 -	mov r0, r4 -	str r6, [r1, #0x4] -	str r5, [r1, #0x8] -	str r7, [r1, #0x18] -	bl MicDoSampling -	cmp r0, #0x0 -	movne r0, #0x0 -	moveq r0, #0x3 -	add sp, sp, #0x4 -	ldmia sp!, {r4-r7,lr} -	bx lr -_020D4A58: .word 0x021D54B0 - -	arm_func_start MIC_Init -MIC_Init: ; 0x020D4A5C -	stmdb sp!, {r4-r5,lr} -	sub sp, sp, #0x4 -	ldr r1, _020D4AD8 ; =0x021D54AC -	ldrh r0, [r1, #0x0] -	cmp r0, #0x0 -	addne sp, sp, #0x4 -	ldmneia sp!, {r4-r5,lr} -	bxne lr -	ldr r0, _020D4ADC ; =0x021D54B0 -	mov r2, #0x0 -	mov r3, #0x1 -	strh r3, [r1, #0x0] -	str r2, [r0, #0x0] -	str r2, [r0, #0x4] -	bl PXI_Init -	mov r5, #0x9 -	mov r4, #0x1 -_020D4AA0: -	mov r0, r5 -	mov r1, r4 -	bl PXI_IsCallbackReady -_020D4AAC: -	cmp r0, #0x0 -	beq _020D4AA0 -	ldr r2, _020D4AE0 -	mov r3, #0x0 -	ldr r1, _020D4AE4 -	mov r0, #0x9 -	str r3, [r2] -	bl PXI_SetFifoRecvCallback -	add sp, sp, #0x4 -	ldmia sp!, {r4-r5, lr} -	bx lr -_020D4AD8: .word 0x021D54AC -_020D4ADC: .word 0x021D54B0 -_020D4AE0: .word 0x027FFF90 -_020D4AE4: .word MicCommonCallback | 
