view compal/c156-fw-disasm @ 392:35009c936a4a

compal/melody-extr: first attempt at actual melody extraction
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 01 Apr 2022 06:03:47 +0000
parents 5259ce993e87
children
line wrap: on
line source

; This disassembly is an attempt at analyzing Mot C155/156 fw, specifically
; the version published in c156-flashimg-r1.zip.  I was hoping to get to the
; Init_Target() and AI_InitIOConfig() functions as easily as in the C11x and
; C139 versions, but this fw has been hacked up pretty heavily.

; Entry point from bootloader
   200e0:	ea06105a	b	0x1a4250
   200e4:	ea06105a	b	0x1a4254
   200e8:	ea061059	b	0x1a4254
   200ec:	ea061058	b	0x1a4254
   200f0:	ea061057	b	0x1a4254
   200f4:	ea06105a	b	0x1a4264
   200f8:	ea06105a	b	0x1a4268
   200fc:	ea06105e	b	0x1a427c

; this code appears to be the counterpart to TI's _INT_Initialize
  1a4034:	e51f1024	ldr	r1, =0xffff9800	; via 0x1a4018
  1a4038:	e15f21ba	ldrh	r2, =0x2006	; via 0x1a4026
  1a403c:	e1c120b0	strh	r2, [r1]
  1a4040:	e5912000	ldr	r2, [r1]
  1a4044:	e2022001	and	r2, r2, #1
  1a4048:	e3520001	cmp	r2, #1
  1a404c:	0afffffb	beq	0x1a4040
  1a4050:	e51f1044	ldr	r1, =0xfffffd00	; via 0x1a4014
  1a4054:	e15f23b8	ldrh	r2, =0x1081	; via 0x1a4024
  1a4058:	e1c120b0	strh	r2, [r1]
  1a405c:	e51f1048	ldr	r1, =0xfffffb10	; via 0x1a401c
  1a4060:	e15f23be	ldrh	r2, =0xf7ff	; via 0x1a402a
  1a4064:	e1d100b0	ldrh	r0, [r1]
  1a4068:	e0000002	and	r0, r0, r2
  1a406c:	e1c100b0	strh	r0, [r1]
  1a4070:	e51f1058	ldr	r1, =0xffffff08	; via 0x1a4020
  1a4074:	e15f25b0	ldrh	r2, =0x0	; via 0x1a402c
  1a4078:	e1c120b0	strh	r2, [r1]
  1a407c:	e51f1074	ldr	r1, =0xfffffb00	; via 0x1a4010
  1a4080:	e15f28b8	ldrh	r2, =0x2a1	; via 0x1a4000
  1a4084:	e1c120b0	strh	r2, [r1]
  1a4088:	e15f28be	ldrh	r2, =0x2a1	; via 0x1a4002
  1a408c:	e1c120b2	strh	r2, [r1, #2]
  1a4090:	e15f29b4	ldrh	r2, =0x2a4	; via 0x1a4004
  1a4094:	e1c120b4	strh	r2, [r1, #4]
  1a4098:	e15f29ba	ldrh	r2, =0x2a3	; via 0x1a4006
  1a409c:	e1c120b6	strh	r2, [r1, #6]
  1a40a0:	e15f2ab0	ldrh	r2, =0xe85	; via 0x1a4008
  1a40a4:	e1c120ba	strh	r2, [r1, #10]	; 0xa
  1a40a8:	e15f2ab6	ldrh	r2, =0xc0	; via 0x1a400a
  1a40ac:	e1c120bc	strh	r2, [r1, #12]	; 0xc
  1a40b0:	e15f2abc	ldrh	r2, =0x40	; via 0x1a400c
  1a40b4:	e1c120b8	strh	r2, [r1, #8]
  1a40b8:	e15f2bb2	ldrh	r2, =0x2a	; via 0x1a400e
  1a40bc:	e1c120be	strh	r2, [r1, #14]	; 0xe
  1a40c0:	e10f0000	mrs	r0, CPSR
  1a40c4:	e3c0001f	bic	r0, r0, #31	; 0x1f
  1a40c8:	e3800013	orr	r0, r0, #19	; 0x13
  1a40cc:	e38000c0	orr	r0, r0, #192	; 0xc0
  1a40d0:	e129f000	msr	CPSR_fc, r0
  1a40d4:	e3a00001	mov	r0, #1
  1a40d8:	e59f12b8	ldr	r1, =0x11694f8	; via 0x1a4398
  1a40dc:	e5810000	str	r0, [r1]
  1a40e0:	e59f02a8	ldr	r0, =0x1169500	; via 0x1a4390
  1a40e4:	e3a01010	mov	r1, #16	; 0x10
  1a40e8:	e0800001	add	r0, r0, r1
  1a40ec:	e3a01b01	mov	r1, #1024	; 0x400
  1a40f0:	e2411004	sub	r1, r1, #4
  1a40f4:	e0802001	add	r2, r0, r1
  1a40f8:	e3c22003	bic	r2, r2, #3
  1a40fc:	e1a0a000	mov	r10, r0
  1a4100:	e59f3294	ldr	r3, =0x82e97c	; via 0x1a439c
  1a4104:	e583a000	str	r10, [r3]
  1a4108:	e1a0d002	mov	sp, r2
  1a410c:	e59f328c	ldr	r3, =0x82eaa0	; via 0x1a43a0
  1a4110:	e583d000	str	sp, [r3]
  1a4114:	e3a01c01	mov	r1, #256	; 0x100
  1a4118:	e0822001	add	r2, r2, r1
  1a411c:	e3c22003	bic	r2, r2, #3
  1a4120:	e10f0000	mrs	r0, CPSR
  1a4124:	e3c0001f	bic	r0, r0, #31	; 0x1f
  1a4128:	e3800012	orr	r0, r0, #18	; 0x12
  1a412c:	e129f000	msr	CPSR_fc, r0
  1a4130:	e1a0d002	mov	sp, r2
  1a4134:	e3a01c02	mov	r1, #512	; 0x200
  1a4138:	e0822001	add	r2, r2, r1
  1a413c:	e3c22003	bic	r2, r2, #3
  1a4140:	e10f0000	mrs	r0, CPSR
  1a4144:	e3c0001f	bic	r0, r0, #31	; 0x1f
  1a4148:	e3800011	orr	r0, r0, #17	; 0x11
  1a414c:	e129f000	msr	CPSR_fc, r0
  1a4150:	e1a0d002	mov	sp, r2
  1a4154:	e10f0000	mrs	r0, CPSR
  1a4158:	e3c0001f	bic	r0, r0, #31	; 0x1f
  1a415c:	e3800013	orr	r0, r0, #19	; 0x13
  1a4160:	e129f000	msr	CPSR_fc, r0
  1a4164:	e59f3238	ldr	r3, =0x82e8e4	; via 0x1a43a4
  1a4168:	e2822004	add	r2, r2, #4
  1a416c:	e5832000	str	r2, [r3]
  1a4170:	e3a01b01	mov	r1, #1024	; 0x400
  1a4174:	e3c11003	bic	r1, r1, #3
  1a4178:	e0822001	add	r2, r2, r1
  1a417c:	e59f3224	ldr	r3, =0x82e968	; via 0x1a43a8
  1a4180:	e5831000	str	r1, [r3]
  1a4184:	e3a01002	mov	r1, #2
  1a4188:	e59f321c	ldr	r3, =0x82e978	; via 0x1a43ac
  1a418c:	e5831000	str	r1, [r3]
  1a4190:	e1a04002	mov	r4, r2
  1a4194:	eb0cd342	bl	0x4d8ea4
  1a4198:	e1a02004	mov	r2, r4
  1a419c:	e51f0174	ldr	r0, =0x3e79c	; via 0x1a4030
  1a41a0:	e3700001	cmn	r0, #1
  1a41a4:	1b000083	blne	0x1a43b8
  1a41a8:	e1a00002	mov	r0, r2
  1a41ac:	ea19d513	b	0x819600	; _INC_Initialize

  1a4250:	ea0cc185	b	0x4d486c
  1a4254:	eaf9efa9	b	0x20100
  1a4258:	eafffffe	b	0x1a4258
  1a425c:	eafffffe	b	0x1a425c
  1a4260:	eafffffe	b	0x1a4260
  1a4264:	eafffffe	b	0x1a4264

$Init_Target:
  4bf76c:	b570		push	{r4, r5, r6, lr}
  4bf76e:	b081		sub	sp, #4
  4bf770:	4c73		ldr	r4, =0xfffef006	; via 0x4bf940
  4bf772:	2003		mov	r0, #3
  4bf774:	0340		lsl	r0, r0, #13
  4bf776:	8060		strh	r0, [r4, #2]
  4bf778:	f00e ffce	bl	0x4ce718	; $TM_DisableWatchdog
; 8 MiB MEMIF setting
  4bf77c:	2008		mov	r0, #8
  4bf77e:	8821		ldrh	r1, [r4, #0]
  4bf780:	4308		orr	r0, r1
  4bf782:	8020		strh	r0, [r4, #0]
; standard code continues
  4bf784:	486f		ldr	r0, =0xfffffd02	; via 0x4bf944
  4bf786:	2105		mov	r1, #5
  4bf788:	8001		strh	r1, [r0, #0]
  4bf78a:	2180		mov	r1, #128	; 0x80
  4bf78c:	8802		ldrh	r2, [r0, #0]
  4bf78e:	4311		orr	r1, r2
  4bf790:	8001		strh	r1, [r0, #0]
  4bf792:	2180		mov	r1, #128	; 0x80
  4bf794:	8802		ldrh	r2, [r0, #0]
  4bf796:	4311		orr	r1, r2
  4bf798:	8001		strh	r1, [r0, #0]
  4bf79a:	496b		ldr	r1, =0xffdf	; via 0x4bf948
  4bf79c:	8802		ldrh	r2, [r0, #0]
  4bf79e:	4011		and	r1, r2
  4bf7a0:	8001		strh	r1, [r0, #0]
  4bf7a2:	4e6a		ldr	r6, =0xfffff900	; via 0x4bf94c
  4bf7a4:	20ff		mov	r0, #255	; 0xff
  4bf7a6:	0200		lsl	r0, r0, #8
  4bf7a8:	8030		strh	r0, [r6, #0]
  4bf7aa:	4d69		ldr	r5, =0xffff9800	; via 0x4bf950
  4bf7ac:	4869		ldr	r0, =0xfff3	; via 0x4bf954
  4bf7ae:	8829		ldrh	r1, [r5, #0]
  4bf7b0:	4008		and	r0, r1
  4bf7b2:	8028		strh	r0, [r5, #0]
  4bf7b4:	8828		ldrh	r0, [r5, #0]
  4bf7b6:	8028		strh	r0, [r5, #0]
  4bf7b8:	4867		ldr	r0, =0xf01f	; via 0x4bf958
  4bf7ba:	8829		ldrh	r1, [r5, #0]
  4bf7bc:	4008		and	r0, r1
  4bf7be:	8028		strh	r0, [r5, #0]
  4bf7c0:	2001		mov	r0, #1
  4bf7c2:	0280		lsl	r0, r0, #10
  4bf7c4:	8829		ldrh	r1, [r5, #0]
  4bf7c6:	4308		orr	r0, r1
  4bf7c8:	8028		strh	r0, [r5, #0]
  4bf7ca:	2000		mov	r0, #0
  4bf7cc:	2102		mov	r1, #2
  4bf7ce:	2200		mov	r2, #0
  4bf7d0:	f010 f806	bl	0x4cf7e0	; $CLKM_InitARMClock
  4bf7d4:	4961		ldr	r1, =0xfffffb00	; via 0x4bf95c
  4bf7d6:	20a4		mov	r0, #164	; 0xa4
  4bf7d8:	8008		strh	r0, [r1, #0]
  4bf7da:	8048		strh	r0, [r1, #2]
  4bf7dc:	22a5		mov	r2, #165	; 0xa5
  4bf7de:	808a		strh	r2, [r1, #4]
  4bf7e0:	80c8		strh	r0, [r1, #6]
  4bf7e2:	20a6		mov	r0, #166	; 0xa6
  4bf7e4:	8148		strh	r0, [r1, #10]	; 0xa
  4bf7e6:	20c0		mov	r0, #192	; 0xc0
  4bf7e8:	8188		strh	r0, [r1, #12]	; 0xc
  4bf7ea:	2040		mov	r0, #64	; 0x40
  4bf7ec:	8108		strh	r0, [r1, #8]
  4bf7ee:	2020		mov	r0, #32	; 0x20
  4bf7f0:	8070		strh	r0, [r6, #2]
  4bf7f2:	2000		mov	r0, #0
  4bf7f4:	80b0		strh	r0, [r6, #4]
  4bf7f6:	2010		mov	r0, #16	; 0x10
  4bf7f8:	8829		ldrh	r1, [r5, #0]
  4bf7fa:	4308		orr	r0, r1
  4bf7fc:	8028		strh	r0, [r5, #0]
  4bf7fe:	4858		ldr	r0, =0xfffffa08	; via 0x4bf960
  4bf800:	4958		ldr	r1, =0xffff	; via 0x4bf964
  4bf802:	8001		strh	r1, [r0, #0]
  4bf804:	8041		strh	r1, [r0, #2]
  4bf806:	2103		mov	r1, #3
  4bf808:	8181		strh	r1, [r0, #12]	; 0xc
  4bf80a:	f00d f8a7	bl	0x4cc95c	; $IQ_SetupInterrupts
  4bf80e:	4856		ldr	r0, =0xfffffc00	; via 0x4bf968
  4bf810:	2124		mov	r1, #36	; 0x24
  4bf812:	8001		strh	r1, [r0, #0]
  4bf814:	210d		mov	r1, #13	; 0xd
  4bf816:	8041		strh	r1, [r0, #2]
  4bf818:	2500		mov	r5, #0
  4bf81a:	4854		ldr	r0, =0xfffe2016	; via 0x4bf96c
  4bf81c:	8005		strh	r5, [r0, #0]
  4bf81e:	4954		ldr	r1, =0xfffe2014	; via 0x4bf970
  4bf820:	2002		mov	r0, #2
  4bf822:	8008		strh	r0, [r1, #0]
  4bf824:	4953		ldr	r1, =0xfffe2002	; via 0x4bf974
  4bf826:	2084		mov	r0, #132	; 0x84
  4bf828:	8008		strh	r0, [r1, #0]
  4bf82a:	4953		ldr	r1, =0xfffe2000	; via 0x4bf978
  4bf82c:	4853		ldr	r0, =0x3de0	; via 0x4bf97c
  4bf82e:	8008		strh	r0, [r1, #0]
  4bf830:	4a53		ldr	r2, =0xfffe2022	; via 0x4bf980
  4bf832:	200a		mov	r0, #10	; 0xa
  4bf834:	8010		strh	r0, [r2, #0]
  4bf836:	4a53		ldr	r2, =0xfffe2020	; via 0x4bf984
  4bf838:	4853		ldr	r0, =0x45a	; via 0x4bf988
  4bf83a:	8010		strh	r0, [r2, #0]
  4bf83c:	4a53		ldr	r2, =0xfffe201e	; via 0x4bf98c
  4bf83e:	20ff		mov	r0, #255	; 0xff
  4bf840:	304b		add	r0, #75	; 0x4b
  4bf842:	8010		strh	r0, [r2, #0]
  4bf844:	4852		ldr	r0, =0xfffe201c	; via 0x4bf990
  4bf846:	221f		mov	r2, #31	; 0x1f
  4bf848:	8002		strh	r2, [r0, #0]
  4bf84a:	4852		ldr	r0, =0xfffe2024	; via 0x4bf994
  4bf84c:	8005		strh	r5, [r0, #0]
  4bf84e:	4a52		ldr	r2, =0xfffe2010	; via 0x4bf998
  4bf850:	2002		mov	r0, #2
  4bf852:	8813		ldrh	r3, [r2, #0]
  4bf854:	4318		orr	r0, r3
  4bf856:	8010		strh	r0, [r2, #0]
  4bf858:	2004		mov	r0, #4
  4bf85a:	8813		ldrh	r3, [r2, #0]
  4bf85c:	4318		orr	r0, r3
  4bf85e:	8010		strh	r0, [r2, #0]
  4bf860:	2027		mov	r0, #39	; 0x27
  4bf862:	80e0		strh	r0, [r4, #6]
  4bf864:	8a08		ldrh	r0, [r1, #16]	; 0x10
  4bf866:	0840		lsr	r0, r0, #1
  4bf868:	d30f		bcc	0x4bf88a
  4bf86a:	8a08		ldrh	r0, [r1, #16]	; 0x10
  4bf86c:	0400		lsl	r0, r0, #16
  4bf86e:	0c40		lsr	r0, r0, #17
  4bf870:	0040		lsl	r0, r0, #1
  4bf872:	8208		strh	r0, [r1, #16]	; 0x10
  4bf874:	2001		mov	r0, #1
  4bf876:	e001		b	0x4bf87c
  4bf878:	9800		ldr	r0, [sp, #0]
  4bf87a:	3001		add	r0, #1
  4bf87c:	9000		str	r0, [sp, #0]
  4bf87e:	9800		ldr	r0, [sp, #0]
  4bf880:	2832		cmp	r0, #50	; 0x32
  4bf882:	d3f9		bcc	0x4bf878
  4bf884:	8a48		ldrh	r0, [r1, #18]	; 0x12
  4bf886:	2800		cmp	r0, #0
  4bf888:	d0fc		beq	0x4bf884
  4bf88a:	f00f f92c	bl	0x4ceae6	; ARMIO setup?
  4bf88e:	2027		mov	r0, #39	; 0x27
  4bf890:	0500		lsl	r0, r0, #20
  4bf892:	8005		strh	r5, [r0, #0]
  4bf894:	2001		mov	r0, #1
  4bf896:	f00e ff4f	bl	0x4ce738
  4bf89a:	2002		mov	r0, #2
  4bf89c:	f00e ff4c	bl	0x4ce738
  4bf8a0:	b001		add	sp, #4
  4bf8a2:	bd70		pop	{r4, r5, r6, pc}

  4bf8a4:	b500		push	{lr}
  4bf8a6:	f79c fdc9	bl	0x45c43c
  4bf8aa:	f70f f9e4	bl	0x3cec76
  4bf8ae:	f73c f835	bl	0x3fb91c
  4bf8b2:	f7d4 fbb7	bl	0x494024
  4bf8b6:	f699 f8b5	bl	0x358a24
  4bf8ba:	bd00		pop	{pc}

  4bf8bc:	b500		push	{lr}
  4bf8be:	4837		ldr	r0, =0x1175c94	; via 0x4bf99c
  4bf8c0:	f756 ff05	bl	0x4166ce
  4bf8c4:	f757 f9ca	bl	0x416c5c
  4bf8c8:	bd00		pop	{pc}

  4bf8ca:	b500		push	{lr}
  4bf8cc:	2004		mov	r0, #4
  4bf8ce:	f00d f8a6	bl	0x4cca1e
  4bf8d2:	2012		mov	r0, #18	; 0x12
  4bf8d4:	f00d f8a3	bl	0x4cca1e
  4bf8d8:	2007		mov	r0, #7
  4bf8da:	f00d f8a0	bl	0x4cca1e
  4bf8de:	2008		mov	r0, #8
  4bf8e0:	f00d f89d	bl	0x4cca1e
  4bf8e4:	bd00		pop	{pc}

  4bf8e6:	b510		push	{r4, lr}
  4bf8e8:	1c04		add	r4, r0, #0
  4bf8ea:	2012		mov	r0, #18	; 0x12
  4bf8ec:	f00d f8a8	bl	0x4cca40
  4bf8f0:	2007		mov	r0, #7
  4bf8f2:	f00d f8a5	bl	0x4cca40
  4bf8f6:	2c00		cmp	r4, #0
  4bf8f8:	d012		beq	0x4bf920
  4bf8fa:	3c01		sub	r4, #1
  4bf8fc:	2c00		cmp	r4, #0
  4bf8fe:	d009		beq	0x4bf914
  4bf900:	3c01		sub	r4, #1
  4bf902:	2c00		cmp	r4, #0
  4bf904:	d114		bne	0x4bf930
  4bf906:	2049		mov	r0, #73	; 0x49
  4bf908:	00c0		lsl	r0, r0, #3
  4bf90a:	f756 fdef	bl	0x4164ec
  4bf90e:	2101		mov	r1, #1
  4bf910:	4a23		ldr	r2, =0x4a502f	; via 0x4bf9a0
  4bf912:	e00a		b	0x4bf92a
  4bf914:	20ff		mov	r0, #255	; 0xff
  4bf916:	3069		add	r0, #105	; 0x69
  4bf918:	f756 fde8	bl	0x4164ec
  4bf91c:	4a20		ldr	r2, =0x4a502f	; via 0x4bf9a0
  4bf91e:	e003		b	0x4bf928
  4bf920:	2068		mov	r0, #104	; 0x68
  4bf922:	f756 fde3	bl	0x4164ec
  4bf926:	2200		mov	r2, #0
  4bf928:	2100		mov	r1, #0
  4bf92a:	2001		mov	r0, #1
  4bf92c:	f757 f938	bl	0x416ba0
  4bf930:	2012		mov	r0, #18	; 0x12
  4bf932:	f00d f874	bl	0x4cca1e
  4bf936:	2007		mov	r0, #7
  4bf938:	f00d f871	bl	0x4cca1e
  4bf93c:	bd10		pop	{r4, pc}
  4bf93e:	46c0		nop			(mov r8, r8)

  4cfb9a:	4770		bx	lr
  4cfb9c:	4770		bx	lr
  4cfb9e:	4806		ldr	r0, =0x1175c90	; via 0x4cfbb8
  4cfba0:	7800		ldrb	r0, [r0, #0]
  4cfba2:	4770		bx	lr

; code looks like TI's bootloader.s, not int.s
  4d486c:	e51f101c	ldr	r1, =0xffff9800	; via 0x4d4858
  4d4870:	e15f21b2	ldrh	r2, =0x2006	; via 0x4d4866
  4d4874:	e1c120b0	strh	r2, [r1]
  4d4878:	e5912000	ldr	r2, [r1]
  4d487c:	e2022001	and	r2, r2, #1
  4d4880:	e3520001	cmp	r2, #1
  4d4884:	0afffffb	beq	0x4d4878
  4d4888:	e51f103c	ldr	r1, =0xfffffd00	; via 0x4d4854
  4d488c:	e15f23b0	ldrh	r2, =0x1081	; via 0x4d4864
  4d4890:	e1c120b0	strh	r2, [r1]
  4d4894:	e51f1040	ldr	r1, =0xfffffb10	; via 0x4d485c
  4d4898:	e15f23b8	ldrh	r2, =0x800	; via 0x4d4868
  4d489c:	e1d100b0	ldrh	r0, [r1]
  4d48a0:	e1800002	orr	r0, r0, r2
  4d48a4:	e1c100b0	strh	r0, [r1]
  4d48a8:	e51f1050	ldr	r1, =0xffffff08	; via 0x4d4860
  4d48ac:	e15f24ba	ldrh	r2, =0x0	; via 0x4d486a
  4d48b0:	e1c120b0	strh	r2, [r1]
  4d48b4:	e51f107c	ldr	r1, =0xfffffb00	; via 0x4d4840
  4d48b8:	e15f27bc	ldrh	r2, =0x2a1	; via 0x4d4844
  4d48bc:	e1c120b0	strh	r2, [r1]
  4d48c0:	e15f28b2	ldrh	r2, =0x2a1	; via 0x4d4846
  4d48c4:	e1c120b2	strh	r2, [r1, #2]
  4d48c8:	e15f28b8	ldrh	r2, =0x2a1	; via 0x4d4848
  4d48cc:	e1c120b4	strh	r2, [r1, #4]
  4d48d0:	e15f28be	ldrh	r2, =0x283	; via 0x4d484a
  4d48d4:	e1c120b6	strh	r2, [r1, #6]
  4d48d8:	e15f29b4	ldrh	r2, =0x281	; via 0x4d484c
  4d48dc:	e1c120ba	strh	r2, [r1, #10]	; 0xa
  4d48e0:	e15f29ba	ldrh	r2, =0xc0	; via 0x4d484e
  4d48e4:	e1c120bc	strh	r2, [r1, #12]	; 0xc
  4d48e8:	e15f2ab0	ldrh	r2, =0x40	; via 0x4d4850
  4d48ec:	e1c120b8	strh	r2, [r1, #8]
  4d48f0:	e15f2ab6	ldrh	r2, =0x2a	; via 0x4d4852
  4d48f4:	e1c120be	strh	r2, [r1, #14]	; 0xe
  4d48f8:	e59f0014	ldr	r0, =0x1195770	; via 0x4d4914
  4d48fc:	e3a01b01	mov	r1, #1024	; 0x400
  4d4900:	e2411004	sub	r1, r1, #4
  4d4904:	e0802001	add	r2, r0, r1
  4d4908:	e3c22003	bic	r2, r2, #3
  4d490c:	e1a0d002	mov	sp, r2
  4d4910:	eaf33dc7	b	0x1a4034

  4d6b80:	2900		cmp	r1, #0
  4d6b82:	d006		beq	0x4d6b92
  4d6b84:	6803		ldr	r3, [r0, #0]
  4d6b86:	6013		str	r3, [r2, #0]
  4d6b88:	3204		add	r2, #4
  4d6b8a:	3004		add	r0, #4
  4d6b8c:	3904		sub	r1, #4
  4d6b8e:	2900		cmp	r1, #0
  4d6b90:	d1f8		bne	0x4d6b84
  4d6b92:	4770		bx	lr

  4d6bc0:	b500		push	{lr}
  4d6bc2:	2000		mov	r0, #0
  4d6bc4:	4909		ldr	r1, =0x116a020	; via 0x4d6bec
  4d6bc6:	8008		strh	r0, [r1, #0]
  4d6bc8:	4909		ldr	r1, =0x116a022	; via 0x4d6bf0
  4d6bca:	8008		strh	r0, [r1, #0]
  4d6bcc:	4a09		ldr	r2, =0x800000	; via 0x4d6bf4
  4d6bce:	480a		ldr	r0, =0x20188	; via 0x4d6bf8
  4d6bd0:	490a		ldr	r1, =0x81e614	; via 0x4d6bfc
  4d6bd2:	1a89		sub	r1, r1, r2
  4d6bd4:	3904		sub	r1, #4
  4d6bd6:	2304		mov	r3, #4
  4d6bd8:	189a		add	r2, r3, r2
  4d6bda:	f7ff ffd1	bl	0x4d6b80
  4d6bde:	4a08		ldr	r2, =0x81e618	; via 0x4d6c00
  4d6be0:	4808		ldr	r0, =0x4d9280	; via 0x4d6c04
  4d6be2:	4909		ldr	r1, =0x81e868	; via 0x4d6c08
  4d6be4:	1a89		sub	r1, r1, r2
  4d6be6:	f7ff ffcb	bl	0x4d6b80
  4d6bea:	bd00		pop	{pc}

; code from  0x20188 is moved to 0x800004, length 0x1E610
; code from 0x4D9280 is moved to 0x81E618, length 0x250

$Application_Initialize:
  4d751a:	b500		push	{lr}
  4d751c:	f7f8 fb3d	bl	0x4cfb9a	; empty function
  4d7520:	4916		ldr	r1, =0x116b56c	; via 0x4d757c
  4d7522:	4817		ldr	r0, =0xffff5800	; via 0x4d7580
  4d7524:	6008		str	r0, [r1, #0]
  4d7526:	2000		mov	r0, #0
  4d7528:	2107		mov	r1, #7
  4d752a:	f7e3 fba9	bl	0x4bac80
  4d752e:	f001 f8db	bl	0x4d86e8
  4d7532:	f7d8 fde2	bl	0x4b00fa
  4d7536:	f329 ff4b	bl	0x8013d0
  4d753a:	f7d8 fdde	bl	0x4b00fa
  4d753e:	f001 f8d9	bl	0x4d86f4
  4d7542:	2000		mov	r0, #0
  4d7544:	2102		mov	r1, #2
  4d7546:	4a0f		ldr	r2, =0x4d7519	; via 0x4d7584
  4d7548:	f73f fb2a	bl	0x416ba0
  4d754c:	f7fe fb82	bl	0x4d5c54
  4d7550:	f75d fc05	bl	0x434d5e
  4d7554:	f7f8 fb21	bl	0x4cfb9a	; empty function
  4d7558:	4808		ldr	r0, =0x116b56c	; via 0x4d757c
  4d755a:	4909		ldr	r1, =0xffff5800	; via 0x4d7580
  4d755c:	6001		str	r1, [r0, #0]
  4d755e:	2000		mov	r0, #0
  4d7560:	2107		mov	r1, #7
  4d7562:	f7e3 fb8d	bl	0x4bac80
  4d7566:	f7b4 fa1d	bl	0x48b9a4
  4d756a:	bd00		pop	{pc}

  4d86e8:	b500		push	{lr}
  4d86ea:	f7e7 f83f	bl	0x4bf76c
  4d86ee:	f7e7 f8d9	bl	0x4bf8a4
  4d86f2:	bd00		pop	{pc}

  4d86f4:	b500		push	{lr}
  4d86f6:	f7e7 f8e1	bl	0x4bf8bc
  4d86fa:	bd00		pop	{pc}

  4d86fc:	b500		push	{lr}
  4d86fe:	f7e7 f8e4	bl	0x4bf8ca
  4d8702:	bd00		pop	{pc}

  4d8704:	b500		push	{lr}
  4d8706:	200a		mov	r0, #10	; 0xa
  4d8708:	f7f4 f989	bl	0x4cca1e
  4d870c:	bd00		pop	{pc}
  4d870e:	0000

  4d8710:	4770		bx	lr
  4d8712:	4770		bx	lr
  4d8714:	4770		bx	lr
  4d8716:	4770		bx	lr
  4d8718:	4770		bx	lr
  4d871a:	4770		bx	lr
  4d871c:	4770		bx	lr
  4d871e:	4770		bx	lr
  4d8720:	4770		bx	lr
  4d8722:	4770		bx	lr

  4d8724:	4803		ldr	r0, =0xfffe480e	; via 0x4d8734
  4d8726:	8800		ldrh	r0, [r0, #0]
  4d8728:	07c0		lsl	r0, r0, #31
  4d872a:	0fc0		lsr	r0, r0, #31
  4d872c:	0600		lsl	r0, r0, #24
  4d872e:	0e00		lsr	r0, r0, #24
  4d8730:	4770		bx	lr
  4d8732:	46c0		nop			(mov r8, r8)

  4d8ea4:	e92d4000	stmdb	sp!, {lr}
  4d8ea8:	e28fe001	add	lr, pc, #1
  4d8eac:	e12fff1e	bx	lr
  4d8eb0:	f7fd fe86	bl	0x4d6bc0
  4d8eb4:	4778		bx	pc
  4d8eb6:	46c0		nop			(mov r8, r8)
  4d8eb8:	e8bd8000	ldmia	sp!, {pc}

; IRAM code

_INC_Initialize:	; call veneer
  819600:	e92d4000	stmdb	sp!, {lr}
  819604:	e28fe001	add	lr, pc, #1
  819608:	e12fff1e	bx	lr
  81960c:	f000 f804	bl	0x819618
  819610:	4778		bx	pc
  819612:	46c0		nop			(mov r8, r8)
  819614:	e8bd8000	ldmia	sp!, {pc}

$INC_Initialize:
  819618:	b500		push	{lr}
  81961a:	b081		sub	sp, #4
  81961c:	9000		str	r0, [sp, #0]
  81961e:	4914		ldr	r1, =0x82ef7c	; via 0x819670
  819620:	2001		mov	r0, #1
  819622:	6008		str	r0, [r1, #0]
  819624:	f000 f836	bl	0x819694
  819628:	f000 f85c	bl	0x8196e4
  81962c:	f000 f908	bl	0x819840
  819630:	f000 f8ee	bl	0x819810
  819634:	f000 f91a	bl	0x81986c
  819638:	f000 f85c	bl	0x8196f4
  81963c:	f000 f8d8	bl	0x8197f0
  819640:	f000 f904	bl	0x81984c
  819644:	f000 f9c0	bl	0x8199c8
  819648:	f000 f82c	bl	0x8196a4
  81964c:	f000 f83a	bl	0x8196c4
  819650:	f000 f810	bl	0x819674
  819654:	f000 f86e	bl	0x819734
  819658:	f000 f85c	bl	0x819714
  81965c:	9800		ldr	r0, [sp, #0]
  81965e:	f4bd ff5c	bl	0x4d751a	; $Application_Initialize
  819662:	4803		ldr	r0, =0x82ef7c	; via 0x819670
  819664:	2102		mov	r1, #2
  819666:	6001		str	r1, [r0, #0]
  819668:	f7fb fa48	bl	0x814afc
  81966c:	b001		add	sp, #4
  81966e:	bd00		pop	{pc}