Index: a.bat
===================================================================
--- /1121s/branch/mouse/mouse_public_sdk_1M/a.bat	(revision 6478)
+++ /1121s/branch/mouse/mouse_public_sdk_1M/a.bat	(working copy)
@@ -1,3 +1,4 @@
+set baud=a0
 e pu
 e 8043 00
 
Index: do_sdk.bat
===================================================================
--- /1121s/branch/mouse/mouse_public_sdk_1M/do_sdk.bat	(revision 6478)
+++ /1121s/branch/mouse/mouse_public_sdk_1M/do_sdk.bat	(working copy)
@@ -4,6 +4,7 @@
 @set YC_PATCH_FILE=yc_patch_yc1021.h
 @set enc=1
 @set enckey=0000000000000000
+@set sched_optimize=0
 @rem set device_option=rfbqb
 @set device_option=mouse
 @rem set device_option=shutter
@@ -25,9 +26,10 @@
 set/p mode=Please press mode SA or SB:
 
 setlocal enabledelayedexpansion
-copy program\patch_sdk.prog + program\patch.prog  output\bt_program23.meta
+copy program\patch_sdk.prog output\bt_program23.meta
 copy format\rom.format + format\labels.format + format\command.format  output\bt_format.meta > nul
-
+
+
 ::perl util/memalloc.pl output/bt_format.meta
 
 if "%device_option%" equ "hci" (
@@ -70,6 +72,12 @@
 cd output
 osiuasm bt_program23 -O-W
 
+if "%sched_optimize%" equ "1" (
+echo ***********optimizing sched begin***********
+perl ../util/deletenote.pl ../output/sched.rom
+perl ../util/transform_name2addr.pl ../output/sched.rom ../output/sched.rom ../output/memmap.format
+perl ../util/sortsched.pl ../output/sched.rom ../output/sched.rom
+)
 if /I "%mode%" equ "SA" (goto SAmode)
 if /I "%mode%" equ "SB" (goto SBmode)
 
@@ -85,9 +93,9 @@
 echo create auth rom
 perl ../util/mergepatch.pl mouse_ble_att_list usb_kbdata_vendor_define usb_kbdata usb_msdata usb_devicedata usb_confdata ble_shutter_gatt_list ble_shutter_key_value_list ble_car_att_list sha256 
 perl ../util/romcrc.pl romcode.rom
-perl  ../util/mergepatch.pl otp
-
-
+perl ../util/mergepatch.pl otp
+perl ../util/otpcheck.pl 
+echo.
 if "%device_option%" equ "mouse" (
 cd ..\output
 copy eeprom.dat ..\util\eeprom.dat
Index: eotp.bat
===================================================================
--- /1121s/branch/mouse/mouse_public_sdk_1M/eotp.bat	(nonexistent)
+++ /1121s/branch/mouse/mouse_public_sdk_1M/eotp.bat	(working copy)
@@ -0,0 +1,7 @@
+call do_sdk.bat eep
+set baud=a0
+e pu
+e 8043 00
+e otp output/otp.dat 0
+e otr 0 20
+e ku
\ No newline at end of file
Index: format/labels.format
===================================================================
--- /1121s/branch/mouse/mouse_public_sdk_1M/format/labels.format	(revision 6478)
+++ /1121s/branch/mouse/mouse_public_sdk_1M/format/labels.format	(working copy)
@@ -852,6 +852,7 @@
 0x355a g24_ch_syncword_crc8_init
 0x355c g24_reconn_dispatch
 0x3565 g24_reconn_dispatch_next
+0x3572 g24_reconn_dispatch_end
 0x357b g24_txbuf_clear
 0x357f g24_reconn_data_prep
 0x3586 g24_reconn_device_fail
@@ -2247,6 +2248,7 @@
 0x55d6 mouse_le_name_clear
 0x55db mouse_le_name_clear_next
 0x55dd mouse_le_name_patch_len_overflow
+0x55ee mouse_le_name_patch_len_next
 0x55f3 mouse_le_swift_pair_disable
 0x55f6 mouse_sensor_spi_init
 0x55fa mouse_spi_write_flash_cb
Index: output/otp.dat
===================================================================
--- /1121s/branch/mouse/mouse_public_sdk_1M/output/otp.dat	(revision 6478)
+++ /1121s/branch/mouse/mouse_public_sdk_1M/output/otp.dat	(working copy)
@@ -27,2612 +27,2612 @@
 1e
 aa
 55
-40
+f0
 15
 4e
 06
 a3
-10
+17
 a2
 a1
 1a
-60
+46
 23
 16
 29
-8a
+8b
 50
 e2
 3b
-f1
+f2
 04
 50
 c7
-3b
+34
 27
 04
 c7
-19
+06
 53
 b3
 aa
-0d
+01
 ae
 4a
 7a
-c0
+c1
 5f
 16
 cf
-7b
+64
 41
 0b
 59
-9b
+96
 32
 eb
 3c
-72
+4e
 42
 ec
 fb
-51
+5f
 21
 34
 55
-d1
+e4
 54
 74
 8e
-e5
+fb
 9e
 af
 86
-76
+56
 6f
 e2
 3b
-ec
+cc
 04
 57
 2d
-fb
+dd
 35
 5a
 d3
-17
+fe
 fb
 f0
-24
-5b
+74
+67
 61
 67
 7a
-a0
+c5
 9a
 2a
 65
-64
+11
 f7
-dc
-c3
-ae
+dd
+43
+ac
 ca
-93
-eb
-5a
+91
+6a
+fc
 f6
-fd
+82
 fe
-92
+da
 0d
-b9
-88
-6e
+bb
+0e
+c6
 50
 83
-9b
-bb
+1c
+6b
 6f
-31
-5b
-05
+30
+dd
+10
 f3
 0e
-9d
-bd
+1c
+74
 2b
-50
-d1
-5a
+57
+51
+5f
 9d
-89
-54
-3b
+88
+53
+e8
 6a
 da
-4e
-dc
-8b
-0d
+cf
+d2
 8b
-fb
+0e
+0b
+fe
 9b
 d7
-9e
-47
+1e
+1f
 79
-d1
-10
-8c
+d0
+97
+84
 28
-2c
+23
 69
-53
+2e
 bc
-c3
-e2
-fe
+c2
+63
+1a
 41
-15
-1e
-06
+16
+1f
+f1
 ad
-41
-02
-e2
+40
+82
+fa
 43
-10
-48
-22
+39
+ce
+a5
 59
-a1
+a9
 fa
-6c
-c6
 33
-f8
-3c
+c6
+32
+78
+28
 b9
-85
-d6
-a7
-67
-fd
-68
-19
-5d
-52
-3d
-77
+83
+d4
+0a
+87
+b0
+4b
+cd
+bd
+78
+1f
+44
 5f
-a3
+a4
 e8
-fd
+03
 37
-89
+96
 b1
-5b
+63
 9f
 f9
-8d
-44
+0d
+6e
 04
-a3
-4d
-5e
+a2
+cd
+56
 f3
-60
-37
-64
+6f
+b7
+61
 d9
-c3
-e3
-30
+c2
+63
+67
 99
-7b
+40
 13
-b9
+96
 3d
 c8
-7f
-95
+ff
+d2
 c6
-b8
-22
-fa
+d6
+a1
+27
 2f
-8d
+8c
 a5
-cb
+c8
 54
-3c
-ab
-b6
+3e
+ad
+8b
 7b
-f1
-ab
-57
+f7
+af
+61
 0f
-c6
-cf
-62
+c5
+4f
+61
 ad
-28
-c7
-25
-84
-6e
-88
-64
-3e
-17
-8c
-7a
-5f
-cf
-b4
-50
-59
+29
+c4
+bf
+85
+5e
+8a
+cb
+df
+48
+2f
+20
+5f
+af
+e2
+58
+59
 fd
-fc
-7c
+fd
+66
 2e
 be
-a9
-50
+f7
+5d
 47
 fa
-af
-88
+a5
+e7
 b3
 9e
-20
-17
+42
+90
 27
 1b
-77
-8d
+15
+38
 3f
 8e
-55
-0e
+44
+19
 40
 b6
-ad
-05
+b8
+86
 c6
-f5
-65
-b1
-c8
-e9
+95
+41
+01
+98
+40
 8f
-b5
-12
-7d
-8c
-d3
-28
-0a
-0e
-cf
+88
+42
+d4
+ad
+80
+78
+a0
+20
+fc
 ca
 6b
-79
-0a
+66
+c0
 fa
 e7
-79
-f4
+7b
+24
 05
 26
-9f
-91
+a8
+eb
 1b
 f7
-af
+ac
 0a
-c8
-d0
-bc
-62
-56
-d6
-be
-52
+98
+5a
+9a
+5e
+06
+5c
+9e
+4e
 46
 85
-ee
+ed
+41
+15
+2b
+13
+35
+3d
+12
+61
+58
+b2
+69
+db
 94
-45
-81
-11
-a9
-45
-32
-49
-51
-72
-29
-2c
-f4
-10
-22
-f7
+97
+80
+2b
 79
-7e
-5c
-33
-2c
-ae
-4e
-4f
-49
-9f
-5c
-06
+09
+f6
+d1
+b5
+de
+45
+8b
+d0
+1f
+59
+fe
 ce
-63
-2a
-8c
-2b
-d9
-c9
-89
 db
-ba
-3c
-bf
+2c
+0d
+49
+e1
+8e
+0a
+b9
+bd
+d7
+cf
 e8
-5d
-c5
-12
-be
-ca
+22
+d9
+15
+b4
+cd
 2a
 49
-4f
-5b
-ff
-dd
-ef
-d8
-a7
-9c
-ca
-ed
-ef
-d9
+4c
+1c
+2f
+75
+3c
+88
+86
+06
+10
+aa
+37
+e7
 34
-7f
-d2
-48
-c7
-d9
-ee
-48
+38
+8a
 f6
+9f
+89
+47
+2d
+19
 98
-71
-25
-d3
+f9
+f1
+c3
 b2
-56
-d9
-83
-40
-ed
-a2
-5c
+dd
+76
+4e
+07
+be
+26
+4c
 a3
-9c
-e3
-58
 9f
-cf
-bf
-e4
+21
+1f
+9f
+cc
+55
+b4
 27
 66
-b5
-fc
-25
-0e
-8c
-c0
-b7
-76
-28
-16
-06
-bb
-51
-d6
-0f
-99
-1f
-22
-f4
-51
-d3
-87
-36
-3c
+2b
 42
-70
-9d
-0a
-bb
-f9
-f6
-71
-da
-86
-35
-21
-15
-a2
-c7
-1a
-3d
-31
+75
+c4
+9f
+b5
+e7
+bc
+5e
 d1
-44
-ab
-37
-85
-80
+41
+e8
+57
+9c
 0f
-97
-00
-3e
+92
+a1
+3d
 b3
-e1
-59
-aa
+02
+47
+79
+66
+fd
 7e
-76
-9e
-9c
-19
-0a
-1d
-4d
-a7
-83
-e1
-80
-1f
-e6
-ae
+3f
+8a
 93
-7c
-d6
-1f
-be
-08
-c5
-d8
-52
-22
-eb
-8f
-7d
-92
-ea
-40
-2c
 49
-75
-67
-a7
-54
+2e
+bd
+c4
+9a
+42
+c2
+f0
+97
+0f
+d8
+7b
+c2
 56
-64
-f6
-27
-8b
-66
+f9
+7c
+d7
+33
+92
+f1
+b9
+1d
+47
+6e
+3e
+e0
+46
+c0
+3e
+cb
+2e
+1e
+98
+d0
+2a
+4b
+71
+a9
 99
-d4
+90
+6b
+91
+b9
+e9
+70
+b4
+1f
+bd
+8c
+ff
+88
+98
+a2
+50
+8f
+77
+50
+88
+68
+4a
+19
+62
+58
+03
+aa
+51
+73
+8d
 28
+83
+66
+9a
+3f
+7d
 15
 90
-a0
-37
-9a
-e9
-f7
-09
-b3
-52
-f7
-b2
-92
-9e
-e7
-82
-0d
-53
+a1
+81
+ca
 29
-d6
-3a
-af
-39
-51
-8b
-f2
-b9
-ac
+b5
 4e
-cd
-f6
-9d
-59
-bb
-b6
-a5
+e3
+92
+b5
+2d
+ba
+8a
+db
+fa
+4a
 d7
-0b
-cb
-c5
-dc
-9f
-d9
-77
-f9
-8b
-08
-8e
-f3
-1b
-0f
-f8
-96
+20
+be
+3a
+ac
+5e
+48
+db
+38
+b0
+4c
+1e
 07
-79
-c1
-66
-d9
-2e
-1e
-89
-06
-9f
-cc
-3a
-13
-a0
-fb
-8d
-44
-c4
-f6
-34
-d1
-86
+fc
+c8
+16
+1b
+72
+09
+c0
+71
+7b
+0e
+8c
+15
+e0
+12
+a9
+41
 80
-c3
+fd
+f3
+1b
+8b
+14
+8c
+cd
+8c
+a0
+c9
+b8
 66
-27
-a2
-51
-b6
-42
-d6
-62
-04
-bd
-00
-e4
-02
-9c
-4b
-a6
+1a
+89
+33
+70
+94
+25
+79
+63
+95
+9a
+2e
+08
+0c
+26
+1b
+49
 98
-2a
-be
-eb
-48
-27
-b0
-1d
-d6
-62
-27
-f8
-d9
-c1
-c3
-c5
-9f
-81
-ca
-8e
-53
-29
-9b
+8c
+e6
+e3
+ab
+46
+c6
+0e
+18
+2d
 f4
-7f
-72
-b4
-1b
-8f
-5d
-6d
-de
-23
+37
 91
-b9
-1b
-5a
-27
-9a
-fa
-c2
-d5
-90
-cf
-6a
-93
-82
-02
-14
+07
+40
 1c
-0f
-dd
-88
+41
+be
+4b
+23
+1b
+e1
+41
+a7
+a3
+b2
+76
 ae
-0f
-81
-2b
+2f
+f8
+f9
+ae
+9b
+8a
+0a
 c5
-ff
-88
-70
-f2
-a4
-22
-dd
-f3
-2e
+d3
+de
+6a
+6f
+a8
+f9
+df
+77
+b1
+5c
+1f
+dc
 57
+8e
+83
+7e
+58
+1b
+4a
+66
+2a
+f9
+cc
+55
+aa
+c8
+d3
+56
+de
+7d
 bc
-be
-b3
-98
-06
-e0
-92
-2d
-d5
-62
-d2
-5e
-dd
+a6
+03
+ca
+f8
 e8
+0d
+d1
+c1
+c0
+1f
+d8
+8f
+72
+7c
+35
+04
+71
+12
+48
+d6
+7e
+0f
+8f
+7c
+61
+77
+7d
+7f
+40
+ca
 11
-90
-b9
+3d
+28
+9c
+20
+3f
 da
-3b
-22
-d9
-a9
-bb
-ee
-17
-39
-67
-76
-1a
-01
-b7
-31
-aa
-49
-32
-dc
-11
-c8
-1e
-30
-b2
-f4
-9d
+14
+6d
+59
+6d
+83
+9e
+16
+03
+59
+0e
+0b
+75
+b3
+26
+d0
+c6
+d0
+dc
+12
+c7
+c6
+60
+38
+74
+82
 a4
 04
-a7
-23
-0d
-13
-e1
-7e
-24
-06
-82
-72
-ce
-79
-3b
-b6
+27
+33
+25
+7d
+e8
+a8
+33
+7d
+09
+fb
+9e
+f3
+4d
+88
 4f
-58
-c9
-bb
+5b
+cb
+20
 71
-76
+36
 3d
-83
-98
-90
-da
-a7
-6f
-c5
-8f
-89
-78
-28
-97
-4a
-fa
-9b
-c8
-40
-f6
-b6
-c2
-60
-23
-b7
-d2
-ae
-93
+f4
+d7
+45
+9e
 55
-15
-4b
-50
-c1
-09
-9d
-eb
-4d
-fb
-6f
-db
-7d
-a3
+1f
+c6
+73
+82
+3f
+a2
+1d
+48
+bd
+cb
 45
-fd
-79
-4e
-02
+40
+e9
+cc
+c3
+75
+4c
+dc
+2d
+ee
+a3
+f9
+9e
+4f
+af
+71
+7d
+ee
+84
+27
+72
+b8
+cc
+04
+20
+77
+ea
+80
+cc
+7f
 b5
-c6
-87
-b3
-51
+d7
+47
+d0
+6e
+9a
+75
+ab
+ca
 01
-0b
-ac
+1f
+df
+68
+b4
+e9
+65
+2a
+ed
+1c
+a4
 c5
-a8
-9f
-de
-50
-dd
-6d
-bc
-92
-99
+1a
 62
-67
-cd
-08
-e1
-6b
-35
-8d
-bb
-3d
-2d
-2c
+5e
+22
+2e
 39
-0c
-94
-96
-36
-d8
-0c
-4b
-8a
-05
-49
-f4
-29
+3d
+75
+14
+fa
+57
 db
-83
-99
-7e
-40
-df
-ca
-54
-0c
-a4
-c4
-3c
-f3
-47
-f9
-b5
-58
-36
-0d
-87
-a4
-3e
-f7
-10
-76
-8a
-a4
+1c
+b7
+ee
+74
 4b
-d9
-5d
-00
-d0
-ce
-e5
-3f
-0c
-e1
-65
-66
-0f
-6c
-3e
-d4
-17
-1a
-bf
-e8
+f6
+fa
+4e
+4c
+21
+1d
+04
+39
+fe
 b0
-79
-cb
+a8
 62
-f7
-b1
-6d
-bb
-92
-7c
-bd
-16
-09
-06
-97
-0a
-ac
-8a
-bb
-78
-ab
-19
-3b
-70
-79
-f0
+29
 fe
+a3
+7c
+7c
+9e
+e8
+61
+c9
+58
+3e
+0d
+8c
+57
 4e
-91
-20
-40
-52
-fe
-33
+f6
 ec
-93
-ac
-07
-21
+61
+85
+0c
+08
+8b
+6a
+a6
 aa
-00
-34
 cd
-5e
-6b
-b9
-80
-e2
-20
-11
-72
-63
-96
-23
-05
-1e
-5d
-33
-c6
-6a
-d6
-95
+12
+8e
+78
+e7
+7b
+b6
+70
+53
+6e
 fd
-b0
-b5
-32
-98
+1f
+1c
+bf
+f8
+b8
+a2
+cb
+62
+8d
+46
+1d
+a1
+14
+73
+c5
+1d
+4c
+5d
+6f
+03
+96
+b2
 b3
-77
-1a
+78
+ab
+d0
+4b
+71
+85
+ff
+01
+ef
+ae
+7c
 08
-0c
-f2
-fd
-d5
-30
-4a
-d1
-1a
-25
-9a
-1c
-e2
+4d
+8a
+32
+a3
+03
+26
+01
+78
+ca
+96
+5c
+8a
+ee
+c0
+05
+f7
+02
+88
+09
+75
+82
+b8
+24
+45
+46
+f3
+e9
+b9
+d8
 d8
+9a
+ed
+72
+54
+4a
+87
+c9
+db
+08
+37
+ed
+8c
 de
 3d
-39
-3a
-f6
-d6
+fb
+b5
+2a
+0d
+5f
+35
+e1
+b2
+32
+f8
+0d
+69
+f0
+88
+47
 22
-74
+14
 56
-d3
-46
-86
-9d
-85
-a6
-ef
-5f
+dd
+31
+66
+70
+1e
+9a
+95
+75
 c1
-94
-f4
-56
-6c
-17
-43
-8b
-f4
-d8
-8c
-67
-39
-f4
+ec
+be
+fc
+40
 50
+f2
+01
+02
+88
+26
+74
+1b
 eb
-e2
-d9
-31
-8a
-5c
-e6
-bf
-c9
-d2
-b0
-f7
-d3
-6d
+3a
+0b
+a7
+38
+4e
+0a
+60
+b6
+15
+96
+51
+18
+9d
+f6
+9e
+19
+d6
 49
-1c
-13
-d5
-c8
-28
-02
-73
+0a
+9c
+d8
+14
+8d
 28
-91
-ff
-49
-b1
-2f
-79
-e6
+f1
+da
+76
 fe
-85
-4e
-a6
-c3
-97
-d6
-55
-c6
+ef
+df
+77
+b2
+b7
+88
 a7
 8c
-26
-52
-46
-00
-09
+37
+11
+77
+7e
+a1
+f1
+20
+56
+27
+57
+16
 41
 67
 d1
-71
+92
 61
-f6
-32
-9f
-7a
-24
-d1
+f4
+b1
+45
+d3
+11
+14
+fb
+6b
 1f
+5b
+72
+1b
+6d
 d3
-79
-79
-0a
-e3
-af
-61
-99
+b7
 dd
 23
-83
-7a
-e1
-53
-56
-ea
+fd
+23
 e5
-20
-52
+09
+60
+71
+9d
+6a
+fc
+59
 81
-c6
-9a
-d8
-e5
+4b
+33
+e8
+e2
+fd
+a7
+89
+fe
+11
+b3
+4e
+e7
 aa
+85
+e3
+b9
 b5
-61
-b4
-e1
-7b
-50
-6f
-0f
-66
-df
-ee
-ed
-1e
-99
-c3
+8e
+25
 94
 c3
-50
-2f
+44
+ad
 bf
-00
-05
-2f
-dd
-f3
-cb
-16
-a3
-7e
-29
-13
-d6
-45
-c5
-fe
-21
-91
-28
-11
-5a
-d0
-05
-db
-b3
-ac
+02
+81
 e1
-7c
+75
+ba
+ac
+d7
+fb
+77
+54
+0a
+36
+32
+76
+c9
+21
+f1
+08
+cb
+0a
+7a
+27
+57
+84
+47
+81
+0a
 27
 64
 9a
-19
+76
 29
-dc
-25
-5a
+fc
+07
+7c
 33
 14
+7f
+59
+18
+2c
+82
+44
 4e
-4e
-30
-83
-a7
-49
-1e
-ce
-99
-8a
+64
+8e
+6b
 59
-f7
-03
-b2
-0c
-22
-a6
-78
-3b
-ad
-ef
-ae
-8c
-07
-eb
-99
-3e
-a3
-13
-dd
-f6
-11
-5f
-65
+a2
+a1
+b1
+43
+82
+46
+59
+23
+ee
+cd
+ac
+6c
+08
+cb
+d0
+de
+b6
+33
+59
+a6
+bb
+58
+14
 93
 f7
-d7
-29
-bc
-9b
-97
-77
-4d
-ab
-a9
-51
-85
-34
-da
-76
+f3
+24
+a3
+f0
+6c
+07
+5a
+d0
+ac
+83
+d5
+9e
+3a
+6c
 5b
 6d
-58
-2a
-82
-1e
-ae
-39
+8f
+3d
+02
+db
+ad
+3f
 d8
-4a
+2a
+8e
+dc
+00
+cd
+a9
 8e
-c1
-0a
-97
-d7
-83
 98
 3e
 17
-72
-7a
-de
-dd
-67
+0f
+88
+d1
+23
+4d
 fd
 af
 66
-bb
-12
-3f
-f9
-de
-1e
-2b
-80
-f1
-2e
-9c
-a1
-be
-83
-da
-67
+ca
+ea
+9f
+d8
+7d
+4e
+e1
+84
+92
+7e
+56
+b0
+ba
+d3
+10
+57
+5a
 1b
-b3
-6d
+47
+11
+ce
+79
+7b
 14
-be
-13
-c0
-28
 1b
-0b
-91
-66
+5b
+5b
+84
+a6
+5e
 b1
-9c
-00
-0f
-52
+f1
+54
 4e
 13
-13
-55
-e1
-ca
-e8
-fd
+33
+04
+d3
+05
+99
+0f
 b0
-2f
-44
-f7
-e3
-f6
-98
-c2
-f8
-fe
-75
-25
-16
-18
-d8
-ec
-22
-43
-02
-f9
-21
-d4
-14
-44
-50
-9a
+4e
 64
-9a
-7e
-98
-b9
-13
-36
-cf
-f6
-14
-bf
-e2
-11
-90
-5b
+c4
+e9
+99
+47
 80
-f3
-af
-24
-ae
-91
-f6
-d2
-21
+f8
+be
+54
+07
 96
-d1
-eb
-3f
+f8
+d7
 e9
-5b
-44
-bf
-53
-68
-bf
-ad
-08
+65
+f2
+2a
+67
+59
+94
+3a
 aa
-d0
 17
-cd
+2b
+6c
+58
+d6
+b1
+b2
+d8
+5c
+77
+89
+17
+ef
+2b
+b0
+81
+61
+d1
+0d
+93
+de
+ce
+b0
+e1
+10
+81
+19
+2e
+14
+3e
+e8
+70
+bc
+5f
+7d
+27
+bf
+8d
 29
-46
-32
+bb
+a8
+62
+42
+29
+01
+e3
+85
+88
+da
+12
+e6
+e2
+d3
 ae
-78
-f2
-98
-6b
-03
-c4
-d5
-c2
-68
+46
+fe
 71
-3b
-b8
-84
-08
-99
-14
-44
-e4
-65
-fa
-10
-45
-f4
-ff
-11
-97
-1a
-12
+38
+b7
+87
+17
+f0
+55
 de
-56
-d5
-32
-c4
-cc
-ef
-51
+54
+e4
+7b
+74
+3d
 f4
-83
-ea
-c8
+a8
+4f
+2a
+cb
+1b
+d9
+fc
+1c
+33
+c7
+63
+46
+61
+e7
+9d
+3c
+47
 85
-32
-96
-a9
-30
-b6
-a1
-2b
-3d
-58
-40
-f6
+62
+3f
+89
+1c
 e6
+5e
+29
+3a
+08
+ea
+59
+d0
 84
 05
-e0
-b8
-a5
-fe
-df
-f6
-cc
-f3
-08
-f0
-ff
-c1
-80
-c7
+ec
+a3
+ba
 94
-03
-2e
-5a
-fb
-7f
-cb
-d9
-35
-2c
-d5
-74
+92
+7d
+7c
+71
+87
+a5
+c8
+21
+6b
+ef
+33
+fa
+26
+32
+65
+e8
+1c
+bb
+22
+54
+ec
+57
 f7
 08
 40
-0d
-c3
-99
-68
-85
-e9
-1f
-22
-82
-71
-fe
-11
-27
-f7
-ae
-2a
-18
-ff
-f9
-2b
-54
-3e
-0c
-0e
-56
-7e
-2a
-5e
-9f
-5a
-b0
-2c
-48
-22
-7f
-b9
-a2
-3c
-c4
-03
-af
-1f
-be
-92
-ab
-1f
-e0
-e9
-24
-b0
-de
-02
-6b
-9b
-2c
-c1
-3a
-1f
-7c
-dd
-de
-7d
-8d
-88
-25
-39
+0b
+93
+70
+58
+86
+77
+09
+e3
+0b
+66
+86
+19
+21
 a7
+04
+a9
+44
+d7
+73
+25
+02
+29
+77
+89
+5b
+31
+ea
+9f
+56
+f5
+58
+e6
+dd
+a0
 1f
+93
+13
+c1
+55
+f4
 a8
-6a
-b6
-72
+f9
+49
+12
+ab
+4f
+29
+d8
+6b
+e0
+77
+26
+0d
+d4
+ac
+0a
+c0
+67
+06
+9c
+57
+75
+9c
+4a
+d9
+3d
+fd
+1e
+c0
+5a
+fe
+3a
+19
+d5
+fc
+cd
+b3
+a4
+9e
+b3
+98
+dc
+27
+0e
 f1
-dd
-ed
-0f
-4d
-1c
-f8
-ce
-c5
-97
-86
-c4
-6d
-a8
-4e
-95
+ea
+68
+ea
 bf
-79
-00
-7e
-fd
+fc
+86
+fc
+99
 d0
-14
-93
-6a
-e4
-db
-95
-03
-59
-63
-85
-ed
-08
-4e
+55
+92
+17
+ab
+7b
+5f
+87
+66
+a5
+dc
+9a
+43
+ef
+07
+10
+5b
+96
 cd
-91
-0b
+4a
+45
 a7
-36
-4b
-0a
-27
-0f
 c4
-10
-36
-10
-1c
-b4
-a9
-03
-d6
-8c
-15
-aa
-be
-2d
-05
-12
-8b
+3f
+44
 07
-e7
-25
-bc
+ed
+1d
+fc
+c1
+8b
+33
+8b
+bd
+e0
+38
+da
+a3
+ee
+c7
+3c
+45
+5a
+ce
 66
-cb
-c8
-b2
+cf
 48
-d4
-1b
-79
-f6
+b2
 78
-a7
-7f
-6c
-c3
+dd
+99
+1f
+8e
+59
+a6
+f5
+6b
+6b
 d8
 3f
-56
-2b
-f1
-11
-42
-4a
-df
-5c
-bd
-b8
-a1
-46
+30
+ed
+73
+05
+fe
+4b
+5a
+d4
+ad
+bb
+91
+bb
 6c
 66
 82
 d7
-79
-b4
-43
-25
-14
-78
-80
-5d
-01
-70
-0d
-87
-5d
-b5
-34
-b0
-83
-3c
-9f
-b3
-7b
-7a
-f1
-db
-e0
-fd
-94
-10
-5e
-3c
+66
+1f
+3e
 21
-a4
-b4
-44
-75
+2b
+b8
+3d
+43
+0e
 d8
-66
-de
-3b
-ac
-54
-07
-a2
-f5
-58
+0c
+fd
+16
+63
+35
+73
+f3
+3f
+2a
+4a
+fc
 d8
-13
-ac
-b2
-65
-c2
+f1
+da
+a8
+f2
+a1
+eb
+26
+1c
 04
-98
+3f
+fc
+4c
+96
+38
+75
+de
+45
+e1
+d6
+67
+85
+09
+1c
 b1
-06
-9b
-1d
-40
+fe
 aa
-cf
-06
+b2
 25
-a6
-fc
-bc
-08
-b4
-f3
-54
-70
-db
-e0
-f1
-84
+e4
 8a
-03
-33
+fe
+d1
+86
+86
+1d
+4f
 2a
-c5
+ce
+7e
+34
+58
+f9
+7f
+df
+b5
+6a
+43
+b8
+6c
+19
+ce
+24
+53
+0f
+74
+e9
+28
+8e
 81
-64
-a0
-c1
-d7
-1d
-63
-91
-ee
-e5
-23
-bd
-87
-d8
-fe
-03
+19
+c2
+e3
+52
+c3
+39
+bf
+af
+39
+1b
+65
+dd
+3e
+5f
 25
-e5
-46
-3a
-46
+a6
+87
+9c
+f1
 7f
-b4
-46
+d4
+12
+23
+9e
+59
+de
+78
 66
-f8
-29
-5f
-68
-ba
-92
-ed
+7e
+35
+c7
+41
+d9
+8b
+9b
 3d
-46
+f9
+0f
+33
+e6
+dd
+47
+2b
+13
+ae
+7a
+9a
+ff
+c0
+c3
+00
+4a
+57
+61
+12
 28
-85
 97
-bf
-fa
-8e
-62
-be
-d5
-1d
-84
-5c
-0e
-9e
-a3
-1e
-e3
-e5
-f6
-4f
-cf
-f7
-f7
-67
-57
-e9
-b8
-3d
-5f
+41
 14
-d8
-0b
-33
-27
-a8
-73
-ab
-4e
-7a
-fb
-67
-0d
-87
-73
-b1
+64
+5a
+b2
+47
+34
+f3
+f2
 a2
-9e
-29
+34
+0b
+eb
+f5
+1e
+b0
+fe
+ff
+64
 7d
-fa
-e4
-ce
-b5
-a3
-a2
-a0
-58
-e6
-d6
-38
-66
-22
-da
-9d
+df
+96
 ca
-7a
-27
+7e
+5c
+00
+f6
+f5
+f6
+6c
+dc
+d3
+71
+82
+60
+10
+f8
+75
 8a
-a0
-0b
+0c
+45
+13
+33
+90
+f7
 4f
-07
-43
-75
+bf
+12
+b9
+ee
 a4
-9d
-f0
-e8
-87
-9d
-e3
-56
-6b
+b2
+f6
+66
+d3
+1d
+52
+5b
 62
-e2
-bd
-6f
-c4
-68
-26
-01
-3e
-23
-d5
-da
-a6
-bd
+f5
+96
+25
+ff
+6a
+07
+c3
+9b
+ff
+54
+15
+fa
+ad
+59
+88
+39
+15
+5b
+5e
+e3
+87
+54
+99
+b4
+7b
+15
+64
+e8
+cf
 83
-72
-61
+a8
+6a
+af
+ba
+38
 3d
+17
+f4
+c5
+b8
+2f
+da
+3d
+cb
+79
 27
-40
-ac
-27
-b0
 3c
-75
-52
-cd
-44
-08
-d9
-fb
-a8
-7d
-69
-87
-70
-dd
+f5
+79
+8e
+01
+74
+64
+89
+98
+b8
+d3
+82
+48
+fa
+13
 68
-be
-c5
-e0
-3f
-ce
-4a
-f2
-2c
-37
-4b
-e2
-f8
-0b
-cb
-3b
-b3
-09
-39
-60
-90
-20
-3f
-ba
-0d
-cc
-a9
-d6
-6e
+d1
+d2
+62
 0f
-cf
-8d
-23
-36
-7c
-fb
-d7
-ff
-89
-e5
+42
+9d
+40
+4a
+73
+8f
+75
+40
+ee
+1d
 69
-0a
-07
-58
-f2
-f6
+39
+35
+df
+50
+76
 b0
-58
-aa
-54
+17
+0a
 b3
-41
-49
-d2
+04
+c2
+44
+32
 27
-ca
+f7
+75
+0f
+77
+7c
+70
+ed
+bb
 17
-19
-00
-c4
-07
-35
-cc
-28
-34
-0c
-a9
-36
-90
-59
-ad
-2f
-e2
-73
-61
-99
+96
+5f
+7e
 79
-30
-82
-b2
-87
-9c
-f2
-07
+10
 d8
-57
-13
-b4
-07
-a4
-25
-2f
-49
-fd
-04
-b5
-0d
-fa
-d2
-6c
+c5
+29
+67
 71
+9f
+d1
+66
+d4
+58
+4d
+47
+bc
+85
+f7
+d5
+2b
+1c
+8f
+24
+da
+25
+17
+4b
+a2
 16
-f0
-68
-44
-2f
-ac
-9b
+c2
+a4
+fe
+dd
+51
+53
+4e
+0f
+53
+46
+04
+bc
+9c
 6c
-85
+ff
 f9
-cb
-61
-99
-3c
-3c
-1e
-50
-71
-53
+73
+01
+43
+41
+03
 bc
+23
+23
+03
+55
 c7
 49
-39
-8e
-6b
-a7
-ca
-89
-c6
-b7
-cc
-ae
-5a
-b5
-f2
-cc
-cc
+85
+35
+4f
+1e
+82
+e3
+ac
+f9
+fc
+af
+5c
 b3
-6f
-43
-b8
-ea
-49
-92
-29
-83
-84
+aa
+88
+b1
 55
-3c
-98
-6c
-0f
+6f
 02
-fb
+90
+01
+be
+31
+8b
+85
+8b
+ff
+ff
+00
+b1
+68
+7d
+10
+4f
+77
+c3
+d0
+12
+97
+f7
+75
+f0
+8c
+7d
+c6
+23
+f6
+42
+33
+0b
+81
+79
+7d
+c7
+14
+d9
+2d
+8b
+84
 af
-3e
-bf
-3a
-28
-95
-d8
-e3
-bf
-48
-1e
-a8
-c0
-ab
-ce
-78
-5b
-48
-54
 ba
-d6
-62
-1a
-85
-c4
-44
-46
-78
-9d
-ad
-31
-34
-c9
-8e
-e7
-7e
-94
-8f
-1a
-8f
-3b
-bd
-26
-db
+b0
+cd
+b0
+c7
+66
+6d
+a5
+15
 74
-49
+b7
+1c
+67
+bc
 15
-e8
-6a
-bd
-9c
-80
-d8
-e4
-d0
-29
+e5
 45
-b8
-d8
-6c
-82
 33
-7b
-e1
-ea
-df
-41
-56
+88
+fb
+62
+c5
+59
+de
 4a
-85
-97
-70
-25
-17
-94
-bc
+80
+ab
+ae
+2e
+41
+ba
+72
+0b
+c9
+e3
+3d
+03
+09
+e2
+c1
+09
 72
+07
+98
+b7
+22
+bf
+94
+11
+02
 c2
-54
-a9
-e6
-33
-47
-5a
+32
+75
+04
+f2
+ec
+71
 b9
-e3
-ae
-70
+e2
+2a
+67
 8e
-78
-b9
-bc
-96
-94
-8f
-c6
+1f
+3a
+13
+91
+3d
+0b
+cb
 8f
-31
+2b
 05
-77
+c6
 fb
-3d
-eb
-73
-ed
-94
-1b
-09
-63
-bb
+3c
+60
+02
+b7
+52
+ca
+a5
+1f
+99
+19
+b2
+da
+83
+04
+99
+b7
+52
+ca
+81
+04
+a3
+f7
+c2
+c8
+02
+4e
+2e
 98
-56
-96
-fe
-46
-ff
-0f
-34
-9b
-c7
-38
-43
-78
-6e
-87
+aa
+e1
+f3
+93
+f8
+68
 c3
-20
-5d
-a7
-0a
-6e
-26
-97
-c2
-41
-ea
 7c
 a8
 d1
 9c
 24
 02
-f2
-57
+dd
+ef
 d2
 86
-b6
-4d
-1b
-9c
-3a
-a6
-46
-8e
-55
-c1
-10
-22
-c6
-ee
-5e
-96
-1e
-ff
-95
-7c
-3c
-9a
-d0
-62
-82
-d7
-67
-6e
-c4
-85
-5a
-aa
-1a
-ee
-3f
-ef
-71
-00
-27
-b8
-e8
+b9
+9b
+24
+47
+69
+09
 e8
-af
-fe
-63
-2a
 ef
-28
-16
-7f
-95
-17
-47
+1d
+82
+bd
+42
+a0
 b9
-df
-7f
-3e
-f4
-30
+26
+ec
+1e
+e5
+92
+d5
 b4
+ff
+6c
+5e
+fe
+d7
+2c
+ac
+a0
+7f
+5a
+d0
+6d
 d9
-b9
-c2
-10
-24
+70
+4b
+1c
+3b
+c1
+42
+33
+b3
+02
+9e
+ff
+fe
+ed
+d5
+4f
+05
+38
 74
+d4
+a1
+e0
+de
+16
+f6
+d1
+75
+03
+0b
+89
+84
+ef
+8f
 1e
-8b
-df
-6d
-47
-c4
-1e
-cb
-4a
-7f
-d5
-45
-66
-91
-fd
-78
+b1
+85
+d1
+08
+64
+d1
+e2
+4e
+25
+8e
+72
+11
+37
+48
+d1
 d6
-d5
-a3
-31
-d2
-04
-59
-a5
-a2
-94
-84
+ed
+79
+40
+64
+e0
+1e
+b2
+48
+5b
+a1
+c2
+4b
+fe
+9c
+8c
+0a
+c8
 9e
-a9
-5e
-29
-6a
-11
-4a
-45
-4f
-a5
-15
-2b
-d8
-e2
-43
-20
+17
+47
 b6
+1e
+3e
+da
+45
+0a
+48
 4c
-b1
-c5
-22
-38
-11
-05
-20
+93
+1f
+90
+3c
+25
+6b
+c6
 6b
-0c
-ec
-46
-41
 6c
-02
-31
+34
+d4
+b8
+2c
+06
+c3
 38
 67
-83
-c8
-1c
-3d
-cb
-2e
-01
-6e
-8f
-ca
+b6
+42
+74
+30
+aa
+d0
+f8
+0c
+0f
+cc
+9b
+78
+e1
+d0
+ba
+b3
 62
-58
-8f
-69
-ca
-fc
-9c
-1c
-66
-04
-92
-ab
-59
-e4
-a7
-8d
-00
+0b
+21
+d4
+fd
 57
-e0
-f9
-18
-46
-34
-4f
+a0
+c4
+84
+6c
+00
 37
-86
-56
 8a
+eb
+70
+4b
+55
+b0
+7f
+ac
+10
+de
 65
 2a
 c1
-4b
-b4
+5a
+fc
+73
+0a
+17
+64
+7e
+c1
 1b
-4e
-78
-9d
-3e
-af
-cb
 9c
-fb
-bd
-7b
-50
-1f
-65
-a1
-c8
-6f
-71
-a4
-0e
-68
-54
-9e
-b6
+9b
+86
+cb
+00
+14
+2c
+59
+79
 27
-9c
-63
-2d
-af
-ec
-3f
-d9
+b7
+e8
+0e
+08
+55
+2c
+86
+6f
+5a
+38
+6a
 7f
-2a
-b4
-8b
+02
+71
+96
+bd
+49
+fb
+33
 42
-de
-05
-76
-a7
-28
-db
+24
+c9
 61
-35
-6f
-69
+0e
+75
+76
+29
+3d
+ab
+77
 07
 b7
-44
-fb
-93
-d7
-df
-4c
-ac
-e5
-81
-48
-08
-45
-e0
-8a
-b3
-0b
-b8
-19
-43
-ff
-16
-55
-3b
-60
+28
+4a
 db
-6e
-fd
-b0
+bf
+3d
+3d
+e3
+45
+24
+86
+08
+3f
+b4
+a7
 cb
-65
-69
-76
-75
-6e
+4b
+ed
+94
+43
+9f
+40
+9e
+33
+2c
+5d
+c3
+05
+30
+24
+1a
+d9
+9e
+f3
 e9
-b8
 e9
-ec
-bf
-88
-7a
-ff
-2b
-73
-96
-bb
+d8
 fa
-90
-84
-68
-4f
-dc
-9b
-8d
-37
-4f
-04
-5b
-8b
-6e
+6c
+08
+aa
+ba
+86
+93
+73
+14
+32
+f2
+82
+44
+45
+08
+7c
+59
+3d
+0f
+4d
+22
+00
+3b
 ae
-97
-7a
+6e
+50
+d9
 6a
-e9
-51
-85
-4c
-29
-8c
-15
-5c
-52
-42
-be
-ef
+97
+43
+7f
+6c
+8b
+20
 06
-19
-fb
-76
-f6
-2e
-f9
-39
-fa
-57
+d0
+73
+89
+66
+d6
+04
+08
+08
+14
+08
+3d
+06
+9c
+c6
+e6
 b0
-84
-b9
-a7
-09
+86
+1f
+d1
+81
 72
-61
-69
-5b
-33
-24
-69
-58
-e7
-2e
-70
-bc
-0b
-0b
-9b
-2f
-43
-ff
-52
-0d
-b8
+2a
+67
+4c
+d0
+a4
+57
+1a
+c7
+8c
+f1
+86
+4b
+af
+a5
+8d
+47
+bd
+e2
 cf
-ef
-c5
-5b
-3b
-d4
+3a
+4b
+9f
+3d
+9b
+7b
+18
 30
 f9
-87
-b9
-af
-c6
-8a
-f2
+90
+0c
+57
+46
+61
+53
 df
-fd
-3c
-0a
+9d
+2b
+bb
 89
-2e
-9b
-e9
-e1
-a1
-bd
-90
-75
-1a
-c9
+3f
+5e
+89
+5e
+01
+7c
+87
+f5
+19
+93
 88
-03
-83
-2e
+fc
+99
+2c
+52
+e5
+72
+e2
+a8
+d1
+14
+df
+99
+0d
+52
+0f
+62
+eb
+cb
+b5
+c5
+b2
+95
+54
+3f
+e8
+39
+15
+bf
+be
+13
+53
+82
+c3
+7c
+d7
+ff
+35
+67
+8c
+70
 34
-1f
-72
+12
+d8
+7c
+b9
+c1
+81
 d7
+89
+ad
+3a
 df
-2b
-34
-6b
-ab
-1a
-cb
-bb
 33
-20
-07
-00
-52
-7e
-e2
-61
-aa
-50
-3f
-5f
-d1
-f1
-d1
-14
-8d
-04
-a6
-55
-66
-6d
-5c
-4b
-bc
-46
+d7
+60
+d2
+7c
+1f
 78
-3f
+f4
 f2
-3b
-e7
-5b
-d6
-6b
-8f
-ba
-c5
+ea
+ee
+84
+b9
+51
+8a
+0d
+f3
+de
+2e
+8d
+0a
+db
 09
+fc
+14
+a4
+72
 b5
-51
-bc
-33
-9b
-3f
-e7
-10
-32
-e5
-f0
-b9
-31
-d4
-31
-bc
-1e
-80
-56
-45
-00
-7e
-3e
-a3
-05
-36
-ad
+4d
+f5
+68
+dc
+7a
+8f
 ca
-54
-e8
-dd
-3d
-54
-8d
-f9
-23
-b2
-45
-f8
-48
-3c
 66
-c6
-1e
-eb
-b5
-29
-82
-33
+2c
+7d
+8e
+90
+07
+9c
+96
+5b
+fe
+a9
+01
+fa
+86
+3f
 af
-65
-e4
-ff
+6e
+e0
+e8
 b3
-71
+be
 3a
-d3
-f1
-8d
-ec
-ea
-71
-10
-e3
-23
-2d
-51
-66
-61
-51
-9c
-e4
-f3
-ce
-9d
+b3
+f5
+7f
+a3
+4a
+e0
+56
+9b
+19
+65
 e4
-73
+6e
+62
+57
+6f
+d4
 b9
-b3
+8b
+32
+1b
+d4
+86
+f2
 d5
-7e
-09
-6f
+7c
+df
+b7
 f1
 b9
-72
-eb
+71
+0b
 0e
 92
 d9
@@ -2644,779 +2644,779 @@
 d1
 49
 45
-3f
-e6
-92
-ad
-64
-ea
-38
-7c
-80
-b7
+c1
+a9
+50
+dd
+49
+a5
+a0
+39
+df
+b7
+b3
+18
+5a
+30
+85
+5e
+44
+0b
+ec
+c0
+4a
+07
+14
+0c
+ae
+58
+80
+67
+46
+84
+c1
+5f
+90
+f7
+a1
+67
+3e
+9c
+79
+6b
+77
+26
+45
 e9
-1a
-2b
-38
-87
-df
-9b
-0f
-d6
-f5
-10
-48
-d5
-7d
-35
-f4
-e1
-a0
-55
-2c
-78
+cf
+d0
+ea
 7a
-2e
-f7
-c1
-67
-c3
 93
-d1
-68
-b0
-69
-9f
-1d
-c4
-7a
-18
-3d
-e8
-dd
+ad
 27
-b2
+8a
+5b
+83
+bd
+06
+5b
 76
-7c
-1a
-3f
-bb
+7a
 7d
-b4
-81
-45
+f9
 3b
 e3
-a0
-fd
-92
-b0
-17
-0d
-61
-cd
+a3
+39
+4d
 54
-3b
-e3
-a9
-ae
-bc
-87
-7f
-45
-00
-1f
-d6
-35
-d9
-70
-7c
-cb
-b9
-72
-14
-f2
-b4
-0d
-b1
-4e
-a6
-f0
-3d
-7a
 e9
+af
+65
+cc
+63
+15
+ac
+69
+dd
+d3
+67
+5f
+75
+2a
+1f
+f6
+61
 e2
-e4
+47
+9c
+47
+82
+7d
+bd
+77
+ac
+cd
+f7
+32
 86
-7e
-74
-b7
-9e
-d5
-0e
-35
-66
-dc
-b2
-7f
-9d
-57
-e1
-b6
-a2
-8b
-2c
-be
-3e
-4f
 b3
-97
-13
-44
+be
+b9
+a8
+b2
+82
+f4
+32
+73
+1d
+1d
+15
+09
+9f
+e5
+7b
 ef
 2a
-9b
-e4
-60
-9d
-1f
-e9
-35
-4b
-6c
-b3
-7c
-1d
-53
-b7
-52
-84
-58
-8f
-73
-3d
-70
-ac
+e3
 fb
-7a
-f4
-66
-5f
-0f
-03
 ae
-71
-2e
-37
-b0
-cd
-3f
-3d
-90
-61
-40
-97
-e1
+74
+e6
+26
+db
+1a
 07
-72
-f1
-83
-59
-c9
+10
+b7
 8c
-d6
-15
+13
+44
+a0
+ea
+5f
+47
+cf
+7d
+ec
+cb
+0e
+d1
+93
+4c
+74
+1c
+d1
+7b
+51
+00
+da
+31
+d9
+1c
+82
+57
+fb
+1a
+f6
+c7
+4f
+01
+e3
+8a
 71
-f2
-17
-a2
-db
+2e
 37
-8b
-56
-b8
-96
-e8
-28
+bc
+c8
+2d
+bd
+95
+11
 40
+af
+cc
+f8
+d4
+4b
+a6
+bd
+e8
+39
+0e
+ba
 90
-22
-d7
-38
-87
-2d
-dd
-44
-56
-e2
-1d
-fc
-e0
-ee
-57
-a3
+36
+8f
+cd
+7c
+0a
+8c
+52
+f9
 94
-69
-f7
-b1
-89
-f4
-e9
-0d
-d6
-b0
-2c
-5d
-57
-d0
-14
-51
-48
-8a
-d8
-3c
-6d
-9e
-3d
-70
-0d
-f1
-3d
-22
+29
+37
+e1
+17
+07
+37
+58
+85
+f9
+a5
+24
 34
-94
-41
-55
-1c
+d7
+15
+fd
+63
+30
+67
+eb
+30
+65
+08
+16
 b0
-b8
-02
-d3
+0e
 ed
-a6
-e4
-42
-73
-3d
-1a
-a0
-7c
-c6
-47
-4a
-df
-84
-e0
-51
-38
-e4
+4f
+05
+43
+78
+2e
+d1
 d2
-79
-a9
-be
-1e
-ce
-bd
-f1
-d4
-76
-41
-2b
-16
-5e
-ac
-6e
 4b
-3f
-b8
-0a
-13
-af
-48
-64
+c0
+0c
+ae
+80
+05
+29
+b6
+d8
+e3
+0f
+3b
+72
+97
+70
+74
+f9
+33
+40
+b3
+bc
+23
+d1
+dc
+e9
+44
+dc
+89
+dd
+3a
+f7
+6d
+b6
+43
+f2
+33
+cc
+ef
+69
+0b
+04
+93
 a4
-fd
-d9
-64
+7d
+5e
 3e
+2d
 9a
-a9
-6a
-d6
+f1
+b4
+45
+d0
+34
+b4
+3f
+bf
+c3
+22
+24
+fd
+08
+9b
+70
+fc
+b9
+ce
+01
 00
+23
+be
+5c
+8c
+8a
+96
 b5
-20
-2d
-51
-c2
-73
-b2
-ce
-66
-4d
-7d
-dc
-61
-91
-87
-e1
-6d
+5d
+c0
+6c
+0d
+5d
+23
+b3
+d2
+d7
+4d
+5d
+de
+94
+c1
+86
+a2
+8e
 f0
-d3
-41
+f3
+43
+40
+0e
+39
+c9
+94
+2c
+c5
+31
+61
 a6
-76
-79
-a9
-5c
-6b
-04
-29
-33
-91
-b3
+57
+b6
+71
+50
+a7
+0b
 93
-49
-f3
-53
-4e
-69
 f2
-28
-36
-91
-cd
-43
-7a
-0c
-60
-1f
-ac
-d7
-d3
-17
-8c
-a4
-a3
-e3
-7b
-d6
+48
+61
+bd
+86
+96
+1c
+68
+30
+26
+e4
 d1
-76
-9b
-98
+c4
+ae
+0e
+a4
+ec
+87
+3c
+c5
+8e
+19
+e5
+d5
 2f
-8a
-39
-b8
+9f
+66
+83
 39
 d1
-42
-b9
-39
-ab
-d4
-8d
-4d
+3f
+76
+76
+0a
+90
+3d
+b5
 13
-36
-4a
-f1
-77
-cf
-59
+c4
+c0
+49
+71
+d3
+5d
 5b
-ac
-e2
-82
-b4
-b4
-b8
-86
-6d
-7c
-47
-d0
+ae
+37
+f7
+bb
+19
+b9
+1b
+62
+d3
+e5
+5a
 54
 86
-88
-1b
-00
-7d
+0b
+9f
+78
+5d
+05
+8c
+dc
+04
+a2
+32
+b3
+1a
+e4
+1a
 40
+29
 82
-9b
-a5
-e0
-38
-b3
-1e
-69
-0f
-a2
-83
-dd
-df
-12
+e3
+5d
+a1
+b1
+db
+d5
+0b
+6e
+05
+46
+8d
+6f
+7d
+41
+bf
 21
+3b
+e1
+17
+f3
+f2
+b7
+5e
+9c
+10
+3f
+da
+ff
+26
+92
+a9
+9a
+09
+df
+74
+46
+f0
 77
-bd
-ea
+39
+97
+30
+85
+5f
+83
+f4
+72
+a0
 ad
-11
-04
-46
-ef
-b3
-cd
-7e
-19
+f9
+8a
+53
+eb
+4f
+a4
+20
+64
+32
+4d
+08
+b9
+40
+69
+42
+7c
+39
+c8
+3c
+b9
+24
+0e
+1b
+57
+6a
+37
+db
+be
+16
+d4
+68
+d5
+9c
 00
-8b
-e1
-75
-72
-1a
-b7
-7f
-9e
-ee
-6f
+d7
+b9
+9b
 dc
-9a
-22
-92
-89
-99
-12
-90
-b4
-dd
-3c
-d9
-dd
-d0
-23
-2b
-0b
-ca
-0a
-48
-a2
-8f
-05
-c5
-f3
-73
-14
-ac
+88
+81
+15
+71
+1f
+53
+88
+11
 21
+a9
+16
+d7
+70
 e7
-d4
-4d
-52
-ba
-4b
 61
-47
-72
-f4
-fd
-b3
-e1
-18
-41
-ba
-c0
-bb
-8d
-9d
-9f
-da
-9f
-a8
-90
-19
-c2
-f5
-37
-ce
-64
-ee
-fe
-14
+fa
+f8
 3e
-dc
-99
-d3
-51
-48
-b1
-d9
-98
-d4
-fc
-ee
-18
-31
-be
-47
-25
-15
-29
-a8
-18
-22
-51
 7a
-b0
-84
-23
-1b
+bf
+9c
+64
+33
+bd
+49
+14
+fd
+ff
+04
+e9
+1d
 dd
-91
-51
-43
-f6
-70
-68
-8a
-77
-15
-d1
-2b
-a0
-e5
-19
-f2
-2a
-48
-18
-f9
-63
-bc
-7a
-11
-80
-e6
-d4
-c4
-2f
-84
-79
-63
-f5
-09
-f3
+f1
 0f
-61
-f0
-94
-b9
+9c
 b9
-d6
+d0
+ad
 f6
-0b
-e0
-38
-2f
-ee
-60
-63
-4d
-c1
-64
-6d
-83
-b9
-ca
 48
-e3
-40
+d3
+f1
+ea
+ef
+27
+5c
 85
-4c
+f4
+ae
+64
+fd
+83
+9e
+7a
+49
+60
 86
-01
-24
-0e
-92
+d7
+91
+7f
+a2
+1f
+63
+bf
+28
+ba
+ed
+14
+52
+74
+df
+58
+96
+ab
 cb
-61
-0e
+e5
+99
+af
+b1
+5a
+1b
+68
+e7
+23
+cd
+14
+24
+bf
+c9
+0c
+a1
+ca
+97
+cc
+cc
+d9
+89
+a7
+15
+5f
+0f
+f7
+72
+ff
 51
-70
-8a
-d2
-65
+0b
 45
+cd
+29
+99
+73
+c1
+0f
+89
+49
+7a
+d6
 77
-6f
-e6
-6f
-8a
-ce
-43
-c0
-7f
-55
-2d
-4d
+bd
 d3
-54
+4e
 bb
-43
+6c
 de
-b9
-51
-9e
+b8
+de
+26
 b6
-a4
-5e
-19
+c4
+03
+66
+a9
 a1
-a5
+13
+45
+34
+4c
 9d
-f4
-29
-e6
-9e
-ae
-ab
-60
-14
+81
+91
 62
-9e
-85
-ad
-d4
+30
+62
+64
+e5
+e7
+47
 93
-4a
-aa
-fa
-db
-fa
-ae
-e0
+2a
+c2
+89
+93
+92
+3b
+81
 63
 f8
 07
 8d
-ce
-5b
-bd
+2f
+1b
+be
+2e
 10
-48
-6c
-98
-45
-a5
-08
-29
+2a
 67
-05
-8c
-f3
+18
+45
+6b
+aa
+16
+3a
+1e
+8d
 8a
-54
-6f
-3f
-9c
-97
-1b
-da
-da
-28
-0d
-99
-14
-df
-7d
-37
-e9
-f0
-ef
-25
-57
-a0
-af
-e2
-41
+a6
+6e
+88
+7e
+ea
+b9
+35
+78
+12
+2f
+ba
+d4
+d8
+d4
+b7
+aa
+48
+93
+5a
+15
+e7
+6d
+a8
+cd
 d5
 8d
-ab
-79
-d0
-48
-55
-13
-04
-09
-24
-10
-ca
-ae
-64
-81
+aa
+87
 9f
-c2
-a2
+89
+1f
+db
+5f
+ef
+58
+10
+f1
+2f
+9a
+85
+a5
+c0
+86
 63
-e0
-56
-9e
-9d
+aa
+37
 d4
-84
-ca
-5a
-21
-d2
-5e
-47
-a0
-68
-bd
-6c
-87
+4b
+a1
+26
+25
+fa
+1e
+73
+7d
 44
-ad
-c4
-f3
-07
-ea
-ee
+ef
+b1
+f7
+95
 c8
-e3
-d9
-d6
-cc
-45
-22
-2d
-54
-05
-0f
+9e
+68
+ef
+b4
+a4
+a0
+1b
+b5
+63
+b6
+72
+7c
+84
+6b
+dc
+d4
+01
+57
 0c
-b4
-a0
-9b
-a9
-30
-bd
-58
-02
-a9
-ba
-ca
-52
+4a
+e1
+d2
+0b
+0a
+ff
+17
+47
+e1
+d2
+00
+b1
 4d
+78
+6a
+4b
+b8
 7b
-e5
-82
-f0
-70
-e4
-04
+a1
+30
 f2
 82
 4e
@@ -3425,2050 +3425,2226 @@
 f2
 3b
 3a
-4b
-f0
-a1
-f8
-a7
-38
-15
-29
-1f
-8d
-7a
-e8
-9a
-9b
-15
-24
+8b
+22
+df
+fe
+e5
 58
-86
-29
-a3
+ad
+47
+62
+0f
+97
+4a
+a0
+d9
+00
+61
+5a
+8e
 29
-d0
-50
+b7
+ab
+d4
+0a
 15
 18
-38
-6d
-30
-2d
-88
-50
-2a
+5a
+b0
+6f
+58
+0b
+be
+18
 3e
-ae
+b4
 e3
-e1
-cb
-31
-be
-10
-6a
-1e
-e7
+c8
+6d
+52
+f7
+d7
 6f
-10
-82
-96
-e9
-7e
-f6
-a5
-79
-0f
-34
+9e
+bf
+6d
+5f
+03
+df
+11
+8e
+d1
 90
+97
+31
+17
+b6
 8a
-63
-7f
-e8
+59
+5d
+91
+d8
+ce
 2b
-81
-e8
-57
-99
-3a
-fa
-9b
-56
-ff
-fa
-32
-c5
-42
-87
-e4
+1d
+7b
+75
+23
+d1
 f8
-18
-5b
-18
-cc
-6a
-0b
-af
-68
-f9
-99
-ad
-88
+f0
+52
+3d
+11
+c0
+a1
+3e
+fe
+57
+d8
+d1
+3c
+2f
+4d
+d3
+6e
+07
+d8
+eb
+f3
 3a
 93
 47
 f8
 83
 cc
-94
+fc
+06
+6b
+57
+60
+06
+f5
+c2
+97
+17
+96
+5c
+32
 1c
-24
-f4
-2a
-09
-bd
-c9
-d2
-c1
-2e
-5a
-4d
-71
 97
-f1
-ea
-e3
 b3
-db
-8f
-2e
-95
-6f
-eb
-1c
-74
-57
-d0
-05
+36
+73
+03
 1f
-69
+c8
+3b
+8b
+48
+2d
+72
+01
+d5
+32
+95
+ff
+49
+43
 74
-a5
-d4
-69
-c2
-fb
-44
-55
-81
+7e
+2b
+dc
+4f
+7e
+77
+a7
 fc
-4e
-60
-33
-3d
-89
-90
-70
+01
 c4
-6c
-2b
+2a
+39
+24
+fa
+e5
+bc
+8e
+9b
 1c
+9d
+cb
+87
+4d
+bc
+89
+3f
+cb
+ac
+de
 97
-8c
-04
-04
-7b
-fc
-bb
-2a
+bd
+8a
 b9
-75
-71
-74
-72
-49
-15
-52
-2d
-cd
-a5
-40
-00
-0f
-ba
-20
+32
+67
+d7
+f3
 86
+66
+00
+35
 98
-1c
-67
+5a
+d7
+d7
+dc
+ad
+8c
 2b
-64
-2d
-87
-7a
-85
-6d
-7c
-79
-32
-62
-79
-5b
-fe
-88
-41
-19
-2e
-b4
-07
-12
-5d
+f4
+cd
+38
+8a
+c6
+f3
 d1
-28
-36
+b0
+44
+a3
+5a
+b1
+0b
+88
+e5
+6b
+f2
+7b
+14
+a3
+90
+6e
+4d
 8a
 c2
 82
 33
 63
 6b
-7c
-c5
-48
-4a
-eb
-a9
-d6
-da
-44
-0a
+14
+fb
+07
+ea
+21
+c1
+e9
+7b
+39
+29
 94
-95
+ef
 ba
-55
-dd
-bc
-c6
+53
+92
+7c
+5c
 f4
-35
-15
-9e
-4d
-31
-81
-03
-08
-e2
-3f
-e2
-66
-9f
-9a
-d6
+7a
+b1
 da
-77
-ff
-ed
-99
-5c
-42
+c3
+92
+66
+4a
 dd
-22
-e3
-7b
+52
+ff
 24
-2b
-cb
-96
+f7
+45
+f8
+ae
+4e
+6d
+dc
+f3
+0e
+5c
+02
+b6
+67
+e4
+d7
+aa
+eb
+66
+fc
+91
+1b
+89
 54
-19
+18
+53
+67
 89
-74
-1b
-ce
-90
-2b
-79
-e9
-56
-8a
+42
+fa
+b2
+ef
 dd
 04
-a5
-67
-8a
-ea
-7f
-e5
-61
+d0
+d4
+bd
+10
+fd
+e7
+b9
 29
+f3
+ab
+2b
+ea
+7d
+43
+22
+bf
+fc
+7c
+2a
 b4
-0b
-bc
-6e
-08
-c1
-95
-6b
-b4
-0f
-60
-ee
-8d
-24
+72
 82
-27
-b3
-87
-c3
-80
-69
-e9
-c0
-e9
-3e
+37
+f4
+89
+c5
+e6
 0a
-9c
-a6
-15
-ae
+1c
+68
+2e
+ea
+84
+4c
+e3
+2d
+f0
+4f
 a6
 cc
-6b
-bc
-31
-73
+6e
+3e
+eb
+75
 65
-4d
-19
-20
+0d
+1a
+b6
 16
-83
-89
-a3
-fe
-2b
-f9
-99
-44
-f3
-9c
-c2
-96
-b2
-f0
-fc
-75
+87
+07
+63
+23
+55
+84
+ce
+0b
+29
+59
+0e
+38
+52
+36
+6c
+95
+8b
+f2
+38
+7f
+5f
 cb
-72
+8c
+eb
+22
+f6
+e2
+7a
 27
-d8
-be
-01
-f7
-14
+b9
+ac
+cf
+b4
+fe
+a5
+2c
+d2
+e2
+59
+37
+75
+a9
+4c
+b1
+9a
+a6
+5b
+6c
+37
 62
+af
+47
+86
+59
+24
 f6
-e3
-0f
-a6
-db
-c2
-7d
-df
-f1
-96
-94
-b4
-f5
-1c
 7b
+90
+d5
+ed
+d9
 5f
-e0
-9f
-b1
-99
+c7
+ce
+e6
+89
+bb
 22
-10
-2b
-94
-27
-79
+93
+56
+3b
 ff
-a0
-25
-24
-b9
-fa
 56
-ae
-9a
-60
-67
+08
+6a
 21
-ce
-e0
-0b
-bb
-61
-11
-1f
-ee
-8a
-d7
-34
-b1
-56
-6c
-b4
-37
-be
-ca
 c5
-f1
+02
+cd
+41
+6f
+ff
+8a
 e5
-18
-4f
-e8
-03
-b7
-10
-5e
+5a
+cc
+4e
+39
+97
+b4
+19
 c1
 38
+e1
+ec
+97
+0c
 b8
-d6
-39
-68
-ff
-4b
-59
-9e
+58
 85
-3a
-92
-cd
-c0
-65
-34
-e5
-cf
-e0
-05
-b3
-10
-41
-4d
-1c
-fc
-54
-51
-06
-95
-83
-21
-78
-c8
-1e
-d1
-76
-ff
-cc
-ad
-f8
-52
-f4
+74
+27
+53
+70
+32
+c3
+a5
+34
+e1
+4e
+95
+06
+2c
+13
+83
+e2
+fc
+b9
+f2
+50
+07
+96
+46
+c1
+18
+4b
+dc
+7e
+94
+ba
+6d
+ea
+7b
+13
+e2
 9b
 74
 f9
 77
-df
-4b
-48
-70
-4a
-ff
 d0
+e3
+4c
+4d
+f2
+d9
+ac
 41
-7b
-62
-21
-da
-3d
+30
+e3
+e7
+af
+35
 ae
-3d
-9a
-5b
+3e
+57
+53
 04
 1b
-86
+93
 94
-6e
-8b
-8e
-0c
-36
-8b
-b2
-69
-24
-99
-75
-e8
-12
-03
-a1
-67
-ac
-15
-eb
-9f
-6b
+2e
+88
 4d
-c1
-c9
-05
-a1
-6b
-ae
-14
-2b
-e5
-01
-d9
-4b
-ac
-fe
-65
-55
-2a
-c9
-73
-c4
-8f
-91
+0c
+31
+8a
+da
+c5
+6e
+df
+93
+b3
+5e
+23
+e2
+9b
 2e
-75
-f9
-2a
-7c
-98
+95
+e9
+d0
+c8
+50
+1e
+f6
+a5
+02
+21
+e9
+b7
+6e
+4f
+01
+99
+17
+0f
 b1
-a1
-7b
-ad
-fa
-06
-4a
-6a
-3f
-67
-0d
-ee
-7e
-24
-a6
+c5
+90
+9f
+29
+53
+1d
+c6
 3e
-42
 cb
-a9
-21
-bf
-4c
-db
-bb
-f2
+31
+30
+c9
+16
 c4
+de
+0c
+07
+af
+59
+0e
+49
+ea
+31
+c9
+ee
+ac
+a5
+83
+45
+fb
+f7
+2b
+c8
+22
+5f
+03
+58
+ba
+8a
+cc
 45
 95
-50
-db
+4d
+d3
 3c
-3a
-fe
-df
+39
+33
+d7
 d3
 43
-db
-c6
-3d
-bc
-1b
+ce
+81
+be
+fe
+c0
 2f
-5c
-9e
-b3
-60
-7d
-c4
-79
-ab
-88
-de
-c3
-c1
-79
-88
-93
+7c
+9d
 46
-3a
-35
-44
-24
-a3
-84
-ac
-12
-bf
-fe
-c4
-8e
-b2
-72
-17
-d8
-2d
-f4
+2f
+de
+e3
 41
+ec
+2b
+ca
+e8
+8e
+da
+af
+f8
+46
+5a
+57
+2b
+6b
+07
+a2
+a1
+f6
+fe
+cc
+4a
+6d
+f8
+1b
+65
+20
+8d
+ab
+9e
 0f
 70
-35
-78
+3d
+50
 3b
 7d
-1c
-a8
+1b
+79
 71
 a5
-55
-39
-61
-ac
-e7
-6e
-70
-07
-d9
 0d
-93
-1d
-9c
+7e
+61
+cc
+e0
+03
+3f
 a7
-a6
-db
-f8
-cf
+44
+b8
+73
+5d
+44
+b6
+46
+9a
+a0
+d4
 65
-43
-a1
-60
-a6
-12
-6f
-f6
-f3
-cf
-a6
-ae
-01
-2d
-71
-17
-5e
-6c
-47
+63
+fa
+84
+e9
 b1
-1b
-69
+35
+75
+b4
+6c
+e3
 3e
-ad
-d1
-15
-11
-82
-63
-61
-4b
-00
-66
-14
-bd
-71
-38
+4e
+8e
+65
+7a
+19
+cf
 5d
-e4
-25
-d8
-2d
-88
+d1
+1b
+29
+62
+a8
+64
+96
+5a
+ff
+de
+c2
+57
+9a
+29
 d7
+bd
+4a
+85
+de
+e5
+20
+22
+0d
+8b
+2c
 6a
-71
-61
-36
-55
-1c
+11
+27
+c6
 1a
-97
-bb
-e1
-52
-1d
-0a
-ea
-43
-ec
+bc
+b2
+b1
+fc
+41
+c7
+e0
+5a
+ed
+5f
+ff
 05
-6d
-16
-0c
-8b
-4e
-ad
-3b
-e2
-08
-9d
-d7
-4a
-e1
-14
-ce
-07
+4d
 77
-b0
-49
-45
-44
-84
-f7
-ac
-31
-86
-a7
-ec
 bd
-45
-f7
-b4
+8b
+4e
+95
+c8
 e2
-9e
-50
-d2
-79
-61
-9c
-80
-2b
-3e
-aa
-fc
-d2
-2d
-a9
+68
+f3
+42
+70
+c3
+5f
+ff
+e7
+17
+eb
+82
 a5
-27
-0b
-9a
-75
-3b
-ea
-ef
-c2
-b8
-90
-f5
+0e
+57
+c0
+4c
+68
+d9
+31
+0c
+e3
+1a
+64
+54
+be
+41
+d6
+32
+24
 3e
-42
+02
+60
+61
+61
+41
+fc
+b2
+2c
+84
+dd
+67
 50
-9c
-83
-7a
-15
-3d
-38
-26
-0a
-ca
-6c
-1f
+7e
+32
+99
+fa
+ee
+c2
+d8
+ce
+36
+71
+e2
+c1
+bf
+63
+3a
+cd
+22
+68
+4e
+12
+db
 96
 5f
-13
+d8
+49
+e9
 95
 75
 6c
-7d
-7d
-b5
-ef
-b7
-54
-d5
-40
-e2
 2d
-74
-0f
+15
+b3
+0a
+02
+d4
+59
+c7
+5f
+8d
+bb
+e3
 95
 fb
-86
-8e
+9e
+98
 b8
 dd
-00
-3a
-e0
-09
-5b
-66
+03
+55
+a3
+93
+9b
+a6
 90
-5d
-d1
-73
-2a
-3b
-dd
-b7
+50
+a8
+71
+7a
+11
+d8
+a9
 05
-3c
-39
 1c
-de
-8c
-0f
-3e
 60
-0d
-bc
-20
-dd
-a3
-b5
-b0
-5e
-6b
-14
-5b
-5f
-94
-e8
-0c
-12
-41
-a1
-db
-19
-2b
-bc
-ec
-b4
-54
-bb
-48
-28
-c5
-57
-48
-81
-f5
-92
-dd
-eb
-d6
-85
-94
-0a
-39
-9f
-b5
-88
-b0
-91
-c9
-dd
-80
+f1
+a6
+ac
+53
+25
+1d
+8f
+08
+24
+7a
+63
+7b
+84
+c6
+61
+90
+6d
+f8
+6c
+ab
+e4
+a2
 18
-91
-6f
 31
-95
-3a
-bc
-90
-ed
+88
+01
+77
+38
+89
+1b
+ad
 f8
-75
-b3
+33
+2a
+42
+d7
+48
+79
 95
-e7
-74
-16
-35
-9d
-5b
+c8
+19
+d3
+9f
+c7
+47
+0d
+92
+96
+9a
+d8
+d7
+09
+19
+c2
+29
+89
+04
+8f
 71
-d0
-e7
-8c
-0e
-0e
-e4
-30
-3b
+38
+dd
+ec
 98
-88
-0d
-b5
+f2
+97
+3a
+72
+d2
+26
+96
+d5
+eb
+5d
+e9
+b9
 d6
-8c
+1e
+c3
+ce
+99
+07
+38
+3a
+10
+9d
+ef
+15
+ce
+86
 92
 71
-b6
 b4
-01
-ea
-90
-a2
-ea
-0f
-0c
-d1
-ea
+f3
+3a
+71
+ee
+a1
+ba
+05
+53
+f1
+5a
+c1
+f1
+05
+06
+d2
+8d
+93
+31
 0a
-20
-b2
+05
+26
+a7
+04
+76
+62
+39
+d9
+e2
+ea
+06
+ef
 49
-52
+1d
 46
-6e
-4d
-30
-51
-8f
-e0
+c7
+a6
+6d
+56
+22
+fc
+82
+4b
+a4
+ec
+18
+3b
 c4
-e8
-ab
-31
+2f
+84
+10
+e5
+53
+05
+ec
+c7
+18
+e5
+9d
+f7
+fb
+c2
+41
+3f
+c3
+19
+1a
+75
+84
+07
+c1
 db
-6d
+7f
+b0
+ac
+5e
+0a
+04
 60
-39
-0d
-0c
-f5
-46
-c4
-a7
-3c
-06
-25
-5d
+79
 d8
-b3
-a4
-b0
-15
+fd
+32
+38
+03
+32
+d0
+63
+d6
+59
+bc
+0a
+30
+fe
+ef
+b6
 74
-60
-09
-19
-f2
-28
-8d
-36
-44
+f7
+89
+3a
+71
+70
 c0
+dc
+e0
 65
-e2
-8d
+d3
+27
+77
+ce
+d0
+b5
+a5
+9a
+d8
+08
+17
+96
+10
 fb
-45
+30
+a6
+85
+a6
+d4
 11
+23
+70
 51
-33
-63
-cc
-05
-d0
-03
-ef
+c3
+2b
+1f
+38
+92
 d9
-d8
-6c
-54
-14
-58
-5f
-cf
-60
-5b
-03
-86
+7a
+31
+42
+96
+69
+22
+b4
+20
+55
+05
+90
+a6
+80
+6e
+71
+0d
+0f
+71
+02
+c5
+7c
+27
+2d
+38
+09
 7d
-99
-44
-97
-32
-c0
-32
-51
-5e
-ca
-76
-48
-ef
 b6
-48
-69
-89
-3b
-f8
-98
-65
-bc
+3c
+70
+9a
+2f
+9e
+76
+7a
+f2
+9e
+a1
+35
+cb
+81
+42
+e3
+16
+de
 63
-d8
-9c
-e7
-df
-9b
-ef
-14
-df
-d3
-97
-a8
-84
-cd
+ec
+a1
+b2
 11
-7a
-64
-0f
+f3
+e4
+a4
+c9
 85
-a6
-d9
+88
+ed
 ec
-23
-70
-5a
+0d
+12
+9f
+bc
+4d
+07
+6e
+21
+fc
+00
+0c
+c9
 98
-64
-df
-a9
-bd
-76
-9a
-f0
-92
-31
-8b
-e3
-0b
-87
-b6
-c7
-67
-a6
-e0
-3b
-7e
-42
-ab
-6a
-1a
-27
-a3
-42
-f8
-da
-d1
-23
-9e
-6c
-17
-87
+c9
 4d
-81
-d2
-c3
-24
-89
 05
-92
 15
-9e
-e5
-44
-fb
-96
+1f
+b6
 09
-9c
-71
-45
-b3
-c8
-f7
-47
-b4
-65
-d1
-a2
-4c
-ce
-6c
-7f
-9c
-cd
-1c
-6e
-21
-98
-7d
-5c
-af
-9e
+95
+f4
+1b
 4c
-02
-c5
-8b
-89
-be
-0d
-13
-a6
-f8
-73
 67
-20
-92
-06
-2a
+6f
+70
 cf
-b3
-39
-80
-c7
-59
-e2
-12
-9b
-0b
-93
-7a
-a2
-f4
-41
-ed
-bb
-0d
-64
-8b
-52
-a3
-17
-fb
-1d
+ce
+f3
+1e
+53
+28
+e4
+5a
+6b
+f2
+c2
+44
+53
+b8
+f9
+bf
+9f
+f5
+5a
+a0
+1b
+4a
+c1
+0c
+f5
+b9
+01
 3c
 0e
-e9
-91
-b6
-23
-ea
-0e
-96
+69
+9f
+56
+02
 3a
-0c
-48
-e6
-ef
-b8
-db
-49
-16
-82
-5e
-b9
-e6
-f5
-1d
-40
-25
-ef
-9c
-f6
-74
-f1
-85
-ea
-15
-3b
-2d
-fb
-0a
-0a
-33
+1e
+96
+5a
+38
+b1
+a9
 3f
-bc
-16
-cb
-bd
-d2
-b8
-8d
-74
+fb
+b0
+fb
+cf
+e0
+28
+14
+9f
+b6
+4a
+07
+e4
+ca
+20
 e9
-a4
-2b
+d0
+56
+52
+ad
+d4
+4b
+c7
+e4
+af
+2e
+50
+df
+9c
+43
+98
+f2
+76
+a5
+36
+97
+d6
+c0
+11
 ed
-70
-fc
-d7
-1a
-7d
+74
+7c
+df
+19
+75
 37
-b8
+cb
 60
 fe
-65
-3a
-f1
-b8
-11
-0e
+64
+b7
+a1
+be
+23
+a3
 cb
-3a
-20
-c6
+2e
+14
+30
 80
 7a
 c4
 f5
-d7
-b1
+d6
 36
-e4
-6a
-6e
+52
+ce
+88
+c4
 d1
+d9
+32
+00
+8a
+bb
+cd
 a3
-7d
-c0
-4f
-8c
-c5
-a7
+e2
+b6
+88
+20
+e1
+77
+4e
+8d
+cf
+24
+f5
+fa
+0a
+a5
 6f
-a2
 6a
+30
+06
+08
+bb
+a1
+a5
+bd
+fe
+e0
+68
+3b
+05
+80
+b7
 df
-e5
-fb
-01
-2d
-6b
-4c
-15
+b7
 ba
-76
-98
-6f
-0a
-60
 1a
-08
-db
-9e
-5b
-f2
-3a
-f3
-cd
-df
-51
-d4
-1b
-90
-63
-78
-c0
-de
-76
-98
+6f
+4f
+7e
 1d
-99
-49
-69
-3f
-a8
-b1
-bb
-86
-1c
-c6
-9b
-cc
-a2
-ea
-6e
-70
-f1
-f0
-59
-22
-6c
-a3
-d4
-46
-8f
+2c
+88
+2e
+1e
+bf
+19
+89
 5d
-0f
-45
-bd
-c1
-a5
-67
-77
-57
-60
-da
-7c
-ea
+04
+cb
+bf
+84
+a2
+8a
+5f
+d0
+be
+30
+c9
+85
+c3
+47
+f3
+32
+6d
+88
 83
-dd
-12
+33
+f2
+01
+68
+6d
+07
+51
+01
+c9
+d0
+02
+a5
+a3
+f2
+fb
+14
 c4
-f1
-ca
 75
-da
-76
-c0
-4d
-66
-7e
-53
-ef
-a5
-84
-0c
-2f
-17
-da
-d1
+ba
+74
+a2
+02
+b2
+d8
+7d
+a0
+01
+9a
+59
+85
+c7
+18
+16
 32
 6e
-d2
-11
-79
-ac
-41
-81
+b6
+ad
+0c
+2e
+fe
+c0
 03
 f4
-d5
-73
-96
-3f
-0d
+d6
+0c
+a9
+bc
+f3
 1c
-05
-dd
-a8
-13
-b1
-a5
-c6
-f8
+3a
+7f
+ee
+1d
+89
+a7
+98
+52
 70
 57
-37
-b1
-f4
-58
-77
-e6
-b2
-5c
-42
 66
-c6
-1e
-41
-af
-cd
-5b
-fa
-cc
+a8
+ce
+1a
+2d
+87
+fd
+f8
+6b
+93
 7f
 2a
-50
-e3
-ba
-3a
-dc
-70
-12
-a1
-52
-31
-5f
+e5
+af
+82
+fb
+65
+b8
+9e
+75
+89
+ca
+40
+5a
+ea
+c4
+46
+9c
 25
-e0
-49
+34
+17
+2d
+10
+be
 10
 f5
 f6
 2b
 59
 ca
-dd
-37
-37
-99
-b8
-58
-8e
-8a
-f5
-f2
-dd
-7b
-9b
-74
-dc
-fa
-5e
 bd
-43
-c6
-96
-42
-63
-ec
-b2
-50
-d9
-54
-38
-14
-01
-fd
+ed
+00
+7d
+ff
+4b
+2b
+fb
+23
+3a
+d5
 79
-c0
-fe
-6a
+52
+1e
+e3
+78
+78
+bd
+5c
+60
+50
+16
+83
+d3
+00
+a1
+a6
+8b
+91
+25
+09
+ff
 fa
-a2
-dd
-4f
-61
-ca
-f4
-6a
-d1
-93
-e6
-a4
-c8
-3b
-5b
-57
-db
-8d
-43
-7d
-b1
-a0
-f4
-9b
+26
+86
+2a
 a3
-c9
-f0
-f1
-62
-61
-d3
-33
-90
+e4
+d2
+e4
 6f
-fe
+c5
+a4
+0d
+ea
+28
+dc
+86
+ef
+d6
+1c
+97
+70
+de
+7c
+de
+15
+32
+cb
+39
+83
+66
+c8
+f3
+12
+c8
+9c
 93
-74
-da
-8c
-56
-b0
-43
-14
-63
-92
-03
-df
+38
+d5
+c4
+b1
+29
+99
+c4
+5e
+23
+a8
+2e
+41
+c3
+a8
+27
 19
-c1
-e6
-8e
-31
-b3
-54
+af
+15
+d3
+51
+42
+e1
 b9
 96
-be
-82
+86
+a5
 76
-1b
-14
-64
+7b
+4f
+79
 45
-1b
-d6
-6b
-2c
-d3
+7b
+b4
+3d
+ce
+34
 ca
 7f
 68
 83
-b0
-9f
-b8
-54
-a0
+d0
+20
+bc
+60
+a4
+34
+0c
+b1
+6a
+69
+c4
+8d
 f8
-43
-71
-9b
-0e
-ec
-ca
-84
 86
+d7
+6c
+b8
+0a
+5f
+64
+0b
+bd
+44
+aa
+3c
+09
+8d
+07
+88
+02
+4a
+9e
+05
+5a
+26
+d7
 94
-d2
-bc
-c1
-57
-62
-4c
-b0
-a7
-c1
-38
-db
-92
-a1
-41
-6e
+c9
+56
+d7
+cc
+e8
+2b
+13
+70
+3a
+de
+3d
+77
+6d
+1e
+82
+5d
+9a
 4e
-e4
-53
-ab
-59
-68
-6f
-e2
-11
-15
+43
+7a
+7d
+26
+43
+ea
+c2
+cc
+7c
+84
+04
+24
+35
+fd
+67
+6d
+12
+ae
+49
+e7
+78
+6a
+f7
+88
+e3
+44
+7e
+ca
+cb
+66
+4a
+31
 e9
-e5
+74
+74
+da
+f7
+db
+35
+4a
+47
+0c
+64
+1d
+a0
+50
+50
+5c
+de
+b3
+4a
+62
+5a
+98
+ad
+d6
+8a
 1c
-f3
-b6
+0b
+54
+ee
+d4
+da
+27
+9d
+b4
+a2
+10
+e1
+cc
+93
+83
+d4
+d9
+2c
+be
+40
+5d
+45
+55
+b3
+49
+ed
+86
+ce
+6a
+a9
+a7
+5e
 63
-78
-21
-3f
-2b
-01
+bc
+aa
+46
+87
+fd
+54
+80
+fc
+6c
+39
+b7
+a9
 25
-a5
-e6
-4e
-79
-23
+1f
 90
-19
-83
-77
-16
-8b
-dc
-19
-eb
-5c
-75
-f9
-ab
-2a
-b0
-b0
-a7
-a8
-b8
-f6
-c9
-88
+e5
+43
+16
+f0
+49
 e3
-19
-92
-82
+4f
+99
+3a
+c5
+3c
+eb
+4f
 a3
-a2
-43
-7e
-4d
-66
-cc
-c6
-a2
-db
-20
-a9
-18
-dd
-3d
+4a
+f0
 1d
-a0
-35
-a4
-5c
-de
-b5
-e3
-2a
+99
+2d
+47
+a3
+0b
+a9
 32
-0a
-15
+6e
+e3
+fa
+bc
+7f
+78
 30
-59
-72
-f8
-1c
-e6
-44
+fa
+df
 81
-23
-c9
-e1
-17
-17
-49
-cd
-b5
-d3
-d3
+99
+98
 cb
-ca
-be
+36
+13
 3a
-87
-7d
-1a
-77
-50
-40
-65
-85
-6a
-a2
-e8
+68
 fe
-f4
-6b
-e6
-34
-21
-11
 54
-80
-96
-6a
-71
-df
-0f
-dd
-50
-50
-76
-ab
-f7
-4f
-90
-bb
-e0
-61
-a4
+c8
 e7
-dc
-89
-96
-65
-95
-3c
-e6
-91
-6a
-87
+a7
+41
+0e
 3d
-24
-d1
-72
+11
+7f
+fd
+70
+a7
+f1
+3a
+1b
+32
+f1
+63
+a4
+d2
+0b
+b6
+6c
+4a
+1a
+c2
+2d
+0c
+fd
+e3
+1d
 37
-04
-f2
-be
+30
+7e
+dc
+24
+f3
+b4
+e5
+a8
 ff
-65
-d0
-f6
-01
-09
+4f
+93
+0a
+61
+e9
+7c
+7b
+fa
+17
+24
+3f
+ba
 99
-f8
-96
-a5
-43
-53
-3d
+df
+0b
+f4
+b9
+ce
+72
+c0
+6d
+d6
+27
+d0
+b3
+a0
+a9
+95
+2b
+35
+7b
 9d
-e1
+e3
+f7
+4e
+23
+ca
+62
+43
+81
+d4
+c4
+c4
+a9
+57
+b3
+d6
+b4
+9f
+a4
+b7
+87
+71
+6b
 4c
-ea
-bf
-a5
-3b
-64
-84
-d3
-02
-31
-8e
-10
-fa
-1e
-39
-be
-c3
-68
-80
-a3
-fb
-2f
-13
-1a
+53
+32
+79
+c4
+81
+8f
+c1
+30
+43
+34
+a9
 a2
-1a
-07
+49
+d5
+f1
+fd
 b5
-eb
-81
-00
-7f
-be
 4f
-c8
-5b
-83
-a6
-fb
+0f
+c3
+a1
+d4
+18
+de
+7a
+cf
+9b
+c0
+78
+36
+04
+88
+bb
+63
+a9
+b1
+bd
+b1
+5c
+e8
+e0
+3d
 b7
-47
-3b
-b5
 65
-89
-cc
-5f
-fe
-57
-fa
-81
-c2
-d9
-da
-0a
+e2
+e8
+17
+d1
+09
+12
+aa
+2d
+48
+fc
+07
+04
+8a
+e4
+d1
+68
+43
+ce
+38
+f0
+ea
+54
+83
 f4
+37
+4b
+92
+cd
+e7
 b9
-f9
-2c
-68
-89
+7c
+9b
+b4
+ee
+47
+9f
+f0
+c0
+11
+a0
+3c
+36
+6a
+97
+95
+59
+74
+e8
+97
+99
+a2
 49
-28
-d0
-d3
+5c
+bc
+f0
+8e
+77
 94
-71
-85
-37
 8f
-21
-e5
-c3
-a2
+1a
+d4
+44
+4e
+bf
+1a
+1e
+6e
 ff
+6b
+0a
+db
+ea
+1a
+b0
+11
+ca
+2d
+45
+55
+5f
+15
+3d
+b4
+71
+28
+3f
+2c
+5f
+46
+3a
+69
 2b
+78
+d0
+19
+92
+3d
+c0
+d5
+17
+a4
+53
 c9
+eb
+3f
+bf
+2b
+ae
+e8
 e3
-88
-81
-ee
-c0
-3a
-ee
-b5
-91
-5f
-8b
-39
-b1
-58
-83
-10
+46
+ed
+63
+a5
+62
 69
+3e
+a0
+24
+52
+39
+c0
+41
+f5
+8a
+17
+80
 d6
-53
-32
-7a
-00
-81
-8f
-c2
 c9
+c2
+a1
+f7
 79
-56
-a8
-b9
-71
-b5
-23
-f0
-ba
-e7
-01
-33
-b8
-71
-df
-77
+47
+b2
+5f
+9a
+6d
+ee
+8c
+ae
+35
+13
+25
+15
+4c
+89
+62
+0c
+79
+a1
+1b
+fc
+fe
+fe
+d1
+eb
+0c
+c1
+ce
+c4
+b0
+48
+dc
+00
+6c
+d9
+d3
+f9
+7d
+be
+12
 7a
-af
+a6
 91
-34
-38
+b4
+80
+f3
+7d
+bb
+fd
+56
+df
+a9
+45
+9d
+2e
 3e
-9f
+9b
+23
 ad
+41
+43
+0e
+4c
+6a
+d9
+12
+5e
+ee
 0c
-23
-23
-5d
-b9
-ab
-51
-5b
-af
-9d
-27
+cb
+b7
+d2
+fe
+7c
+7f
+22
+bd
+79
 bf
-06
-ca
-16
-d1
-e9
-4a
-2b
-63
-a8
-90
-07
-04
-8a
+29
+64
+25
 e4
-df
-97
-13
-c7
-18
-17
-f5
-fd
-31
-ae
-87
-2e
-6c
-ea
-d8
-7b
-01
-c4
-ac
-ef
+8d
+e4
+90
+86
+99
+52
+e8
 d6
-d0
-45
-40
-9d
-ec
-84
-50
-4f
-02
-da
-9b
-35
+d6
+d8
+89
+08
 fd
-39
-f9
-64
-01
-ab
+02
+a4
+b2
+ba
+eb
+9d
+c1
+15
+16
+27
+0a
+fb
+09
+c5
+27
+36
+32
 1a
+b1
+db
+5f
+ef
+a0
+46
+8c
+9b
+95
+c2
+f4
 45
-d9
-97
-b3
-8f
-0e
-9c
+cc
+31
 2c
-d1
-02
-55
-be
-f2
-d5
-9c
-ac
-61
-b3
-fa
-ed
-11
-bb
-65
-4d
-c4
-fd
-15
-3d
-df
-de
 2c
-7f
-fb
-ba
-76
-72
-af
-6e
 37
-70
-b6
+78
+58
+38
 3f
-65
-2a
-f0
-42
-a4
-51
-44
-12
-67
-ab
-00
-41
-90
-c3
+77
+b5
+d5
 43
-a8
-6c
-0e
-ec
-6b
-71
-00
-e7
-3f
-f9
-86
-3d
 7c
-8a
-75
-6c
-73
-c9
-c2
-f3
-fb
-79
-27
-e1
-7e
-9a
-6d
-bd
-d0
-ae
-35
+f1
+bf
 13
+4a
+7f
+4b
+9f
+1c
+e0
+cf
+7a
+6e
+df
+5e
+c0
+6c
+27
+a9
+12
+f6
+9b
+0c
+d7
 25
-15
-4c
-88
-8b
-43
-d9
-6d
+bb
+7e
 0b
+10
+8c
+2c
+69
+e1
+99
+ea
+5e
+74
+32
+04
+01
+cd
+b2
+02
 1d
-bb
-7b
-9c
-eb
+29
+81
+8e
+66
+4c
 0c
+15
+78
+62
+95
+b0
+51
+ea
+54
+18
 c9
-0c
-fe
-b1
-6e
-82
-4f
-ac
+55
+e8
+fd
+8c
+3e
+15
+dd
+71
+c1
+34
+03
 47
-a7
-c7
-06
-98
+5c
 78
-35
-66
-0f
+a3
+27
+81
+d4
+95
+ef
+ff
+c8
+fb
+77
+aa
+f8
+b8
+f1
+69
 c0
-be
-88
-5b
-f5
-fd
-36
-d0
-d8
-7f
-9c
-55
-63
-9b
-23
-ad
+1a
+c6
+d5
+61
+14
+3a
+38
+d3
+25
+08
 13
-34
-ce
-35
-6a
 aa
 55
 40
@@ -5490,7 +5666,7 @@
 00
 d7
 18
-84
+86
 f2
 7d
 69
@@ -5723,7 +5899,7 @@
 00
 1b
 47
-01
+03
 aa
 55
 01
@@ -5792,13 +5968,6 @@
 07
 aa
 55
-01
-00
-1f
-4b
-ff
-aa
-55
 06
 00
 e6
@@ -6172,30 +6341,6 @@
 00
 aa
 55
-03
-00
-ec
-46
-00
-50
-00
-aa
-55
-02
-00
-eb
-43
-80
-1f
-aa
-55
-01
-00
-f4
-43
-80
-aa
-55
 04
 00
 fa
@@ -6458,7 +6603,7 @@
 ff
 aa
 55
-1a
+26
 00
 d6
 48
@@ -6468,74 +6613,34 @@
 27
 ab
 40
+b3
+56
+9b
+e6
+a8
+12
+a9
+c0
 be
-d1
+e6
+a5
+af
 a0
-41
+21
 a1
-12
+02
+b8
+10
+b9
+0b
 a7
 ff
-b6
-00
 b5
-c8
-a5
-af
-ff
-00
-09
+d0
+b6
 00
 ff
-ff
-aa
-55
-2e
-00
-fc
-48
-09
-5a
-0d
-10
-0e
-c5
-5b
-9a
-10
-38
-11
-42
-28
-28
-41
-23
-49
-39
-4a
-b0
-4b
-a0
-4c
-90
-4d
-70
-09
 00
-ff
-ff
-09
-5a
-06
-02
-09
-69
-0d
-48
-0e
-9f
-0f
-ba
 09
 00
 ff
@@ -6544,13 +6649,6 @@
 55
 01
 00
-07
-44
-01
-aa
-55
-01
-00
 09
 44
 0a
@@ -6558,13 +6656,6 @@
 55
 01
 00
-08
-44
-00
-aa
-55
-01
-00
 48
 41
 0c
@@ -6722,8 +6813,8 @@
 aa
 aa
 55
-47
-54
-4b
-79
+b5
+3c
+f6
+da
 20
Index: output/program.lis
===================================================================
--- /1121s/branch/mouse/mouse_public_sdk_1M/output/program.lis	(revision 6478)
+++ /1121s/branch/mouse/mouse_public_sdk_1M/output/program.lis	(working copy)
@@ -1,1810 +1,1862 @@
               include "bt_format "
-              org 0x0000
-0000 c284002b bbit1 8 ,pf_patch_ext 
-0001 c00002c5 beq patch00_0 ,p_soft_reset 
-0002 c001003c beq patch00_2 ,p_main_loop 
-0003 c0080045 beq patch02_0 ,p_shutdown_radio 
-0004 c0088047 beq patch02_1 ,p_set_sync_on 
-0005 c00a0149 beq patch02_4 ,p_set_lemode 
-0006 c00a80e3 beq patch02_5 ,p_rf_rx_enable 
-0007 c00b0050 beq patch02_6 ,p_calc_freq 
-0008 c00c0109 beq patch03_0 ,p_txon 
-0009 c00c8110 beq patch03_1 ,p_set_tx_power 
-000a c00d005c beq patch03_2 ,p_initialize_radio_cont 
-000b c0128240 beq patch04_5 ,p_lpm_sleep 
-000c c01381d4 beq patch04_7 ,p_lpm_adjust_clk 
-000d c03402c0 beq patch0d_0 ,p_mouse_cb_fuction 
-000e c03482d2 beq patch0d_1 ,p_mouse_load_device_info_check 
-000f c03502ce beq patch0d_2 ,p_mouse_default_init 
-0010 c0360284 beq patch0d_4 ,p_mouse_param_init 
-0011 c037046c beq patch0d_6 ,p_mouse_start_work 
-0012 c037d4b6 beq patch0d_7 ,mouse4_0_check_reconn_target 
-0013 c03984bc beq patch0e_3 ,p_mouse_setgpio_hibernate 
-0014 c03a0234 beq patch0e_4 ,p_mouse_lpm_before_common 
-0015 c03d050d beq patch0f_2 ,p_mouse_motion 
-0016 c03f849f beq patch0f_7 ,p_mouse_3io6key_check 
-0017 c04084f2 beq patch10_1 ,p_mouse_init_sensor 
-0018 c04203b6 beq patch10_4 ,p_mouse_buletooth_fast_conn_end 
-0019 c0428401 beq patch10_5 ,p_mouse_priority_bb_event 
-001a c0430209 beq patch10_6 ,p_mouse_le 
-001b c04383df beq patch10_7 ,p_mouse_bb_event_timer 
-001c c04403ff beq patch11_0 ,p_mouse_start_discovery 
-001d c04503c9 beq patch11_2 ,p_mouse_store_remote_bdaddr 
-001e c04582ea beq patch11_3 ,p_mouse_app_initflag_check 
-001f c046030d beq patch11_4 ,p_mouse_store_device_info 
-0020 c0468373 beq patch11_5 ,p_mouse_store_dpi_info_check 
-0021 c0470487 beq patch11_6 ,p_mouse_idle 
-0022 c04804df beq patch12_0 ,p_mouse_check_select_device_by_switch 
-0023 c0498518 beq patch12_3 ,p_mouse_drawing_optima 
-0024 c04a84b3 beq patch12_5 ,p_mouse_24g_hibernate_set 
-0025 c04b04c8 beq patch12_6 ,p_mouse_24g_package_data 
-0026 c0628262 beq patch18_5 ,p_otp_read_data 
-0027 c06a8228 beq patch1a_5 ,p_gpio_set_wake_by_current_state 
-0028 c06b0221 beq patch1a_6 ,p_gpio_set_wake 
-0029 c06d0083 beq patch1b_2 ,p_sadc_calibration 
-002a 2020235a branch assert 
+              org 0x0000 
+0000 c284002c bbit1 8,pf_patch_ext
+0001 c00002e3 beq patch00_0,p_soft_reset
+0002 c001003d beq patch00_2,p_main_loop
+0003 c0080046 beq patch02_0,p_shutdown_radio
+0004 c0088048 beq patch02_1,p_set_sync_on
+0005 c00a0156 beq patch02_4,p_set_lemode
+0006 c00a80ef beq patch02_5,p_rf_rx_enable
+0007 c00b0051 beq patch02_6,p_calc_freq
+0008 c00c0116 beq patch03_0,p_txon
+0009 c00c811d beq patch03_1,p_set_tx_power
+000a c00d0060 beq patch03_2,p_initialize_radio_cont
+000b c012824e beq patch04_5,p_lpm_sleep
+000c c01381e1 beq patch04_7,p_lpm_adjust_clk
+000d c03402de beq patch0d_0,p_mouse_cb_fuction
+000e c03482f2 beq patch0d_1,p_mouse_load_device_info_check
+000f c03502ee beq patch0d_2,p_mouse_default_init
+0010 c03602a2 beq patch0d_4,p_mouse_param_init
+0011 c0370485 beq patch0d_6,p_mouse_start_work
+0012 c037848a beq patch0d_7,p_mouse4_0_check_reconn_target
+0013 c03984d9 beq patch0e_3,p_mouse_setgpio_hibernate
+0014 c03a0241 beq patch0e_4,p_mouse_lpm_before_common
+0015 c03c850f beq patch0f_1,p_mouse_le_name_modify
+0016 c03d0539 beq patch0f_2,p_mouse_motion
+0017 c03f84ba beq patch0f_7,p_mouse_3io6key_check
+0018 c040851e beq patch10_1,p_mouse_init_sensor
+0019 c04203d1 beq patch10_4,p_mouse_buletooth_fast_conn_end
+001a c042841c beq patch10_5,p_mouse_priority_bb_event
+001b c0430216 beq patch10_6,p_mouse_le
+001c c04383fa beq patch10_7,p_mouse_bb_event_timer
+001d c044041a beq patch11_0,p_mouse_start_discovery
+001e c04503e4 beq patch11_2,p_mouse_store_remote_bdaddr
+001f c0458308 beq patch11_3,p_mouse_app_initflag_check
+0020 c046032b beq patch11_4,p_mouse_store_device_info
+0021 c046838f beq patch11_5,p_mouse_store_dpi_info_check
+0022 c04704a2 beq patch11_6,p_mouse_idle
+0023 c04804fc beq patch12_0,p_mouse_check_select_device_by_switch
+0024 c0498544 beq patch12_3,p_mouse_drawing_optima
+0025 c04a84d0 beq patch12_5,p_mouse_24g_hibernate_set
+0026 c04b04e5 beq patch12_6,p_mouse_24g_package_data
+0027 c0628277 beq patch18_5,p_otp_read_data
+0028 c06a8235 beq patch1a_5,p_gpio_set_wake_by_current_state
+0029 c06b022e beq patch1a_6,p_gpio_set_wake
+002a c06d008e beq patch1b_2,p_sadc_calibration
+002b 2020235a branch assert
 
 pf_patch_ext:
-002b c00a0169 beq patch22_4 ,p_le_slave_match 
-002c c00d0188 beq patch23_2 ,p_le_got_first_packet_new 
-002d c01201ad beq patch24_4 ,p_le_receive_rxon 
-002e c0128190 beq patch24_5 ,p_le_rx_dec 
-002f c0130195 beq patch24_6 ,p_le_rx_nopayload 
-0030 c01c81a7 beq patch27_1 ,p_le_parse 
-0031 c01d01e3 beq patch27_2 ,p_le_parse_l2cap 
-0032 c02601df beq patch29_4 ,p_le_adv_not_match 
-0033 c02681ab beq patch29_5 ,p_le_init_adv 
-0034 c0480265 beq patch32_0 ,p_g24_reconn_dispatch 
-0035 c0490279 beq patch32_2 ,p_g24_reconn_device_fail 
-0036 c04b04aa beq patch32_6 ,p_g24_short_sleep 
-0037 c04d00f1 beq patch33_2 ,p_mouse_g24_retransmit 
-0038 c04e80fe beq patch33_5 ,p_g24_transmit_hop_process 
-0039 c04f8291 beq patch33_7 ,p_power_ctrl_start 
-003a c17f8000 rtneq patch3f_7 
-003b 2020235a branch assert 
+002c c00a0176 beq patch22_4,p_le_slave_match
+002d c00d0195 beq patch23_2,p_le_got_first_packet_new	//p_le_got_first_packet
+002e c01201ba beq patch24_4,p_le_receive_rxon
+002f c012819d beq patch24_5,p_le_rx_dec
+0030 c01301a2 beq patch24_6,p_le_rx_nopayload
+0031 c01c81b4 beq patch27_1,p_le_parse
+0032 c01d01f0 beq patch27_2,p_le_parse_l2cap
+0033 c02601ec beq patch29_4,p_le_adv_not_match
+0034 c02681b8 beq patch29_5,p_le_init_adv
+0035 c048027a beq patch32_0,p_g24_reconn_dispatch
+0036 c0490297 beq patch32_2,p_g24_reconn_device_fail
+0037 c04b04c7 beq patch32_6,p_g24_short_sleep
+0038 c04d00fd beq patch33_2,p_mouse_g24_retransmit
+0039 c04e810b beq patch33_5,p_g24_transmit_hop_process
+003a c04f82af beq patch33_7,p_power_ctrl_start
+003b c17f8000 rtneq patch3f_7
+003c 2020235a branch assert
 
 p_main_loop:
-003c 20407552 call sp_calc_sequence_256 
-003d 20407448 call sp_calc_sequence_256_check 
-003e 20402a45 call le_advertising_dispatch 
-003f 2040202a call idle_dispatch 
-0040 204042ad call app_process_idle 
-0041 20402018 call connection_dispatch 
-0042 2040310f call g24_dispatch 
-0043 2040248c call lpm_dispatch 
-0044 2020003c branch p_main_loop 
+003d 20407552 call sp_calc_sequence_256
+003e 20407448 call sp_calc_sequence_256_check
+003f 20402a45 call le_advertising_dispatch
+0040 2040202a call idle_dispatch
+0041 204042ad call app_process_idle
+0042 20402018 call connection_dispatch
+0043 2040310f call g24_dispatch
+0044 2040248c call lpm_dispatch
+0045 2020003d branch p_main_loop
 
 p_shutdown_radio:
-0045 70890000 jam 0 ,0x8900 
-0046 20202153 branch shutdown_radio + 1 
+0046 70890000 jam 0,0x8900
+0047 20202153 branch shutdown_radio+1
 
 p_set_sync_on:
-0047 708a0f60 jam 0x60 ,0x8a0f 
-0048 708a10aa jam 0xaa ,0x8a10 
-0049 708a127a jam 0x7a ,0x8a12 
-004a 708a2500 jam 0x00 ,0x8a25 
-004b 708a2600 jam 0x00 ,0x8a26 
-004c 2000003c nop 60 
-004d 708a2020 jam 0x20 ,0x8a20 
-004e 708a23f5 jam 0xf5 ,0x8a23 
-004f 20202169 branch set_sync_on_next 
+0048 708a0f60 jam 0x60,0x8a0f
+0049 708a10aa jam 0xaa,0x8a10
+004a 708a127a jam 0x7a,0x8a12
+004b 708a2500 jam 0x00,0x8a25
+004c 708a2600 jam 0x00,0x8a26
+004d 2000003c nop 60
+004e 708a2020 jam 0x20,0x8a20
+004f 708a23f5 jam 0xf5,0x8a23
+0050 20202169 branch set_sync_on_next
 
 p_calc_freq:
-0050 58000960 setarg 2400 
-0051 9840fe00 iadd temp ,pdata 
-0052 1fe22200 copy pdata ,rega 
-0053 6848c099 fetcht 1 ,mem_fcomp_div 
-0054 18430400 rshift temp ,temp 
-0055 9846fc00 idiv temp 
-0056 20407d62 call wait_div_end 
-0057 1807fe00 quotient pdata 
-0058 1fec8e00 rshift8 pdata ,queue 
-0059 60f0890a storer queue ,1 ,0x890a 
-005a 67f08909 store 1 ,0x8909 
-005b 202021da branch calc_freq + 10 
+0051 58000960 setarg 2400
+0052 9840fe00 iadd temp,pdata
+0053 1fe22200 copy pdata, rega
+0054 6848c099 fetcht 1,mem_fcomp_div
+0055 18430400 rshift temp,temp
+0056 9846fc00 idiv temp
+0057 20407d62 call wait_div_end
+0058 1807fe00 quotient pdata
+0059 1fec8e00 rshift8 pdata,queue
+005a 60f0890a storer queue, 1,0x890a
+005b 67f08909 store 1,0x8909
+005c 202021da branch calc_freq+10
+
+p_set_ck2rfpll:
+005d 37d98200 until null,lpo_edge
+005e 70813c58 jam 0x58,0x813c
+005f 202023e2 branch lpm_write_wait
 
 p_initialize_radio_cont:
-005c 7001bb00 jam 0 ,mem_le_testtype 
-005d 7001bc00 jam 0 ,mem_cmd_le_create_conn 
-005e 37d98200 until null ,lpo_edge 
-005f 7089460d jam 0x0d ,0x8946 
-0060 70896f10 jam 0x10 ,0x896f 
-0061 708a13cd jam 0xcd ,0x8a13 
-0062 708a0610 jam 0x10 ,0x8a06 
-0063 708a844a jam 0x4a ,0x8a84 
-0064 708a8540 jam 0x40 ,0x8a85 
-0065 708a16fe jam 0xfe ,0x8a16 
-0066 204000b8 call p_set_otp_config 
-0067 204070d7 call wdt_set_disable 
-0068 37d98200 until null ,lpo_edge 
-0069 70813b5f jam 0x5f ,0x813b 
-006a 37d98200 until null ,lpo_edge 
-006b 70813c88 jam 0x88 ,0x813c 
-006c 37d98200 until null ,lpo_edge 
-006d 6fe0c099 fetch 1 ,mem_fcomp_div 
-006e c00800ad beq xtal_16m ,p_initialize_radio_16m 
-006f 6fe0c438 fetch 1 ,mem_ring_ibias_trim 
-0070 1fe1fe04 or_into 0x04 ,pdata 
-0071 67f08a02 store 1 ,0x8a02 
-0072 70890f01 jam 0x01 ,0x890f 
-0073 708a8024 jam 0x24 ,0x8a80 
-0074 708a8162 jam 0x62 ,0x8a81 
-0075 58e61212 setarg 0xe61212 
-0076 67f18a73 store 3 ,0x8a73 
+0060 7001bb00 jam 0,mem_le_testtype
+0061 7001bc00 jam 0,mem_cmd_le_create_conn
+0062 37d98200 until null,lpo_edge
+0063 7089460d jam 0x0d,0x8946
+0064 70896f10 jam 0x10,0x896f
+0065 708a8840 jam 0x40,core_rx_cfg0
+0066 708a13cd jam 0xcd,0x8a13
+0067 708a0610 jam 0x10,0x8a06
+0068 708a844a jam 0x4a,0x8a84
+0069 708a8540 jam 0x40,0x8a85
+006a 708a16fe jam 0xfe,0x8a16
+006b 204000c7 call p_set_otp_config
+006c 204070d7 call wdt_set_disable
+006d 2455805d ncall p_set_ck2rfpll,wake
+006e 37d98200 until null,lpo_edge
+006f 70813b5f jam 0x5f,0x813b
+0070 37d98200 until null,lpo_edge
+0071 70813c88 jam 0x88,0x813c
+0072 37d98200 until null,lpo_edge
+0073 6fe0c099 fetch 1,mem_fcomp_div
+0074 c00800b8 beq xtal_16m,p_initialize_radio_16m
+0075 6fe0c438 fetch 1,mem_ring_ibias_trim
+0076 1fe1fe04 or_into 0x04,pdata
+0077 67f08a02 store 1,0x8a02
+0078 70890f01 jam 0x01,0x890f
+0079 708a8024 jam 0x24,0x8a80
+007a 708a8162 jam 0x62,0x8a81
+007b 58e61212 setarg 0xe61212
+007c 67f18a73 store 3,0x8a73
 
 p_initialize_radio2:
-0077 708a8660 jam 0x60 ,0x8a86 
-0078 708a8b3b jam 0x3b ,0x8a8b 
-0079 2040009f call p_dpll_on 
-007a 70804300 jam 0 ,core_config 
-007b 70804205 jam clksel_dpll ,core_clksel 
-007c 58557474 setarg 0x557474 
-007d 67f18968 store 3 ,0x8968 
-007e 7089606e jam 0x6e ,0x8960 
-007f 2040011c call p_rx_dcoc 
-0080 20400147 call p_rfpll_aac_ghpc 
-0081 2040009a call p_set_xtal_cap 
-0082 7041480c jam system_clk_12m ,mem_system_clk 
+007d 708a8660 jam 0x60,0x8a86
+007e 708a8b3b jam 0x3b,0x8a8b
+007f 204000aa call p_dpll_on
+0080 70804300 jam 0,core_config
+0081 70804205 jam clksel_dpll,core_clksel
+0082 58557474 setarg 0x557474
+0083 67f18968 store 3,0x8968
+0084 7089606e jam 0x6e,0x8960
+0085 20400129 call p_rx_dcoc
+0086 20400154 call p_rfpll_aac_ghpc
+0087 204000a5 call p_set_xtal_cap
+0088 708a3006 jam 0x06,0x8a30
+0089 708a32dd jam 0xdd,0x8a32
+008a 708a88e0 jam 0xe0,0x8a88
+008b 708a8c2d jam 0x2d,0x8a8c
+008c 708a3178 jam 0x78,0x8a31
+008d 7041480c jam system_clk_12m,mem_system_clk
 
 p_sadc_calibration:
-0083 20758000 rtn wake 
-0084 708a0777 jam 0x77 ,core_gpadc_ctrl 
-0085 708a08c9 jam 0xc9 ,core_gpadc_cfg0 
-0086 708a0b01 jam 0x01 ,core_gpadc_cfg3 
-0087 6fe0c409 fetch 1 ,mem_adc_clkdiv 
-0088 67f080cd store 1 ,core_sadc_clkdiv 
-0089 20000bb8 nop 3000 
-008a 20400093 call p_sadc_read 
-008b 708a08c1 jam 0xc1 ,core_gpadc_cfg0 
-008c 6a40c419 fetchr regb ,1 ,mem_spi_write_addr 
-008d df200008 arg 8 ,loopcnt 
-008e 20406f58 call sadc_cal_read + 1 
-008f 6fe0c419 fetch 1 ,mem_spi_write_addr 
-0090 67e0c433 store 1 ,mem_adc_cal_c7 
-0091 6240c419 storer regb ,1 ,mem_spi_write_addr 
-0092 20600000 rtn 
+008e 20758000 rtn wake
+008f 708a0777 jam 0x77,core_gpadc_ctrl
+0090 708a08c9 jam 0xc9,core_gpadc_cfg0
+0091 708a0b01 jam 0x01,core_gpadc_cfg3
+0092 6fe0c409 fetch 1,mem_adc_clkdiv
+0093 67f080cd store 1,core_sadc_clkdiv
+0094 20000bb8 nop 3000
+0095 2040009e call p_sadc_read
+0096 708a08c1 jam 0xc1,core_gpadc_cfg0
+0097 6a40c419 fetchr regb,1,mem_spi_write_addr
+0098 df200008 arg 8,loopcnt	//rg_gpadc_sar_dat_sel c0-c7
+0099 20406f58 call sadc_cal_read+1
+009a 6fe0c419 fetch 1,mem_spi_write_addr
+009b 67e0c433 store 1,mem_adc_cal_c7
+009c 6240c419 storer regb,1,mem_spi_write_addr
+009d 20600000 rtn
 
 p_sadc_read:
-0093 7080cc03 jam 0x03 ,core_sadc_ctrl 
+009e 7080cc03 jam 0x03,core_sadc_ctrl
 
 p_sadc_read_wait:
-0094 6ff08129 fetch 1 ,core_perf_status 
-0095 c3028094 bbit0 saradc_done ,p_sadc_read_wait 
-0096 68590164 fetcht 2 ,core_sadc_data 
-0097 6049440a storet 2 ,mem_adc_current_value 
-0098 7080cc00 jam 0x00 ,core_sadc_ctrl 
-0099 20600000 rtn 
+009f 6ff08129 fetch 1,core_perf_status
+00a0 c302809f bbit0 saradc_done,p_sadc_read_wait
+00a1 68590164 fetcht 2,core_sadc_data
+00a2 6049440a storet 2,mem_adc_current_value
+00a3 7080cc00 jam 0x00,core_sadc_ctrl
+00a4 20600000 rtn
 
 p_set_xtal_cap:
-009a 20758000 rtn wake 
-009b 37d98200 until null ,lpo_edge 
-009c 6fe0c11c fetch 1 ,mem_xtal_c_sel 
+00a5 20758000 rtn wake
+00a6 37d98200 until null,lpo_edge
+00a7 6fe0c11c fetch 1,mem_xtal_c_sel
 
 p_set_xtal_cap_next:
-009d 67f0813a store 1 ,core_xtal_cap 
-009e 202023e2 branch lpm_write_wait 
+00a8 67f0813a store 1,core_xtal_cap
+00a9 202023e2 branch lpm_write_wait
 
 p_dpll_on:
-009f 6fe0c099 fetch 1 ,mem_fcomp_div 
-00a0 c00c00a5 beq xtal_24m ,p_dpll_on_24m 
-00a1 6fe0c438 fetch 1 ,mem_ring_ibias_trim 
-00a2 1fe1fe06 or_into 0x06 ,pdata 
-00a3 67f08a02 store 1 ,0x8a02 
-00a4 708a05e0 jam 0xe0 ,0x8a05 
+00aa 6fe0c099 fetch 1,mem_fcomp_div
+00ab c00c00b0 beq xtal_24m,p_dpll_on_24m
+00ac 6fe0c438 fetch 1,mem_ring_ibias_trim
+00ad 1fe1fe06 or_into 0x06,pdata
+00ae 67f08a02 store 1,0x8a02
+00af 708a05e0 jam 0xe0,0x8a05
 
 p_dpll_on_24m:
-00a5 708a00d8 jam 0xd8 ,0x8a00 
-00a6 2000003c nop 60 
-00a7 708a01a0 jam 0xa0 ,0x8a01 
-00a8 708a00df jam 0xdf ,0x8a00 
-00a9 708a01fa jam 0xfa ,0x8a01 
-00aa 20000014 nop 20 
-00ab 708a009f jam 0x9f ,0x8a00 
-00ac 20600000 rtn 
+00b0 708a00d8 jam 0xd8,0x8a00
+00b1 2000003c nop 60
+00b2 708a01a0 jam 0xa0,0x8a01
+00b3 708a00df jam 0xdf,0x8a00
+00b4 708a01fa jam 0xfa,0x8a01
+00b5 20000014 nop 20
+00b6 708a009f jam 0x9f,0x8a00
+00b7 20600000 rtn
 
 p_initialize_radio_16m:
-00ad 6fe0c438 fetch 1 ,mem_ring_ibias_trim 
-00ae 1fe1fe06 or_into 0x06 ,pdata 
-00af 67f08a02 store 1 ,0x8a02 
-00b0 70890f00 jam 0x00 ,0x890f 
-00b1 708a8023 jam 0x23 ,0x8a80 
-00b2 708a81b0 jam 0xb0 ,0x8a81 
-00b3 58e40909 setarg 0xe40909 
-00b4 67f18a73 store 3 ,0x8a73 
-00b5 708a762a jam 0x2a ,0x8a76 
-00b6 70890204 jam 0x04 ,0x8902 
-00b7 20200077 branch p_initialize_radio2 
-
-p_set_otp_config:
-00b8 203580ca branch p_set_otp_config_wake ,wake 
-00b9 6fe2020d fetch 4 ,mem_otp_core_ldo 
-00ba 207a0000 rtn blank 
-00bb 37d98200 until null ,lpo_edge 
-00bc 6ff08136 fetch 1 ,0x8136 
-00bd 1fe17ef0 and pdata ,0xf0 ,pdata 
-00be 6848820d fetcht 1 ,mem_otp_core_ldo 
-00bf 9841fe00 ior temp ,pdata 
-00c0 1fe0fffd increase -3 ,pdata 
-00c1 67f08136 store 1 ,0x8136 
-00c2 37d98200 until null ,lpo_edge 
-00c3 6ff08138 fetch 1 ,0x8138 
-00c4 1fe17e07 and pdata ,0x7 ,pdata 
-00c5 6848820e fetcht 1 ,mem_otp_verf_bg 
-00c6 18498400 lshift3 temp ,temp 
-00c7 9841fe00 ior temp ,pdata 
-00c8 67f08138 store 1 ,0x8138 
-00c9 37d98200 until null ,lpo_edge 
+00b8 6fe0c438 fetch 1,mem_ring_ibias_trim
+00b9 1fe1fe06 or_into 0x06,pdata
+00ba 67f08a02 store 1,0x8a02
+00bb 70890f00 jam 0x00,0x890f
+00bc 708a8023 jam 0x23,0x8a80
+00bd 708a81b0 jam 0xb0,0x8a81
+00be 58e40909 setarg 0xe40909
+00bf 67f18a73 store 3,0x8a73
+00c0 708a762a jam 0x2a,0x8a76
+00c1 70890204 jam 0x04,0x8902
+00c2 2020007d branch p_initialize_radio2
 
 p_set_otp_config_wake:
-00ca 6fe1415b fetch 2 ,mem_otp_charge_pump_x 
-00cb 207a0000 rtn blank 
-00cc 67e1020f store 2 ,mem_otp_charge_pump 
+00c3 6fe1415b fetch 2,mem_otp_charge_pump_x
+00c4 207a0000 rtn blank
+00c5 67e1020f store 2,mem_otp_charge_pump
+00c6 202000d9 branch p_set_otp_config2
+
+p_set_otp_config:
+00c7 203580c3 branch p_set_otp_config_wake,wake
+00c8 6fe2020d fetch 4,mem_otp_core_ldo
+00c9 207a0000 rtn blank
+00ca 37d98200 until null,lpo_edge
+00cb 6ff08136 fetch 1,0x8136
+00cc 1fe17ef0 and pdata,0xf0,pdata
+00cd 6848820d fetcht 1,mem_otp_core_ldo
+00ce 9841fe00 ior temp,pdata
+00cf 1fe0fffd increase -3,pdata
+00d0 67f08136 store 1,0x8136
+00d1 37d98200 until null,lpo_edge
+00d2 6ff08138 fetch 1,0x8138
+00d3 1fe17e07 and pdata,0x7,pdata
+00d4 6848820e fetcht 1,mem_otp_verf_bg
+00d5 18498400 lshift3 temp,temp
+00d6 9841fe00 ior temp,pdata
+00d7 67f08138 store 1,0x8138
+00d8 37d98200 until null,lpo_edge
 
 p_set_otp_config2:
-00cd 6ff08acb fetch 1 ,0x8acb 
-00ce 1fe17ef0 and pdata ,0xf0 ,pdata 
-00cf 6848820f fetcht 1 ,mem_otp_charge_pump 
-00d0 6048c15b storet 1 ,mem_otp_charge_pump_x 
-00d1 9841fe00 ior temp ,pdata 
-00d2 67f08acb store 1 ,0x8acb 
-00d3 6fe08210 fetch 1 ,mem_otp_dpll_ibais 
-00d4 67e0c15c store 1 ,mem_otp_dpll_ibais_x 
-00d5 2feffe03 isolate1 3 ,pdata 
-00d6 6ff08a06 fetch 1 ,0x8a06 
-00d7 7920fe07 setflag true ,7 ,pdata 
-00d8 67f08a06 store 1 ,0x8a06 
-00d9 6fe08210 fetch 1 ,mem_otp_dpll_ibais 
-00da 1fe10407 and pdata ,7 ,temp 
-00db 18520400 lshift4 temp ,temp 
-00dc 18438400 lshift temp ,temp 
-00dd 6048c438 storet 1 ,mem_ring_ibias_trim 
-00de 6ff08a02 fetch 1 ,0x8a02 
-00df 1fe17e1f and pdata ,0x1f ,pdata 
-00e0 9841fe00 ior temp ,pdata 
-00e1 67f08a02 store 1 ,0x8a02 
-00e2 20600000 rtn 
+00d9 6ff08acb fetch 1,0x8acb
+00da 1fe17ef0 and pdata,0xf0,pdata
+00db 6848820f fetcht 1,mem_otp_charge_pump
+00dc 6048c15b storet 1,mem_otp_charge_pump_x
+00dd 9841fe00 ior temp,pdata
+00de 67f08acb store 1,0x8acb
+00df 6fe08210 fetch 1,mem_otp_dpll_ibais
+00e0 67e0c15c store 1,mem_otp_dpll_ibais_x
+00e1 2feffe03 isolate1 3,pdata
+00e2 6ff08a06 fetch 1,0x8a06
+00e3 7920fe07 setflag true,7,pdata
+00e4 67f08a06 store 1,0x8a06
+00e5 6fe08210 fetch 1,mem_otp_dpll_ibais
+00e6 1fe10407 and pdata,7,temp
+00e7 18520400 lshift4 temp,temp
+00e8 18438400 lshift temp,temp
+00e9 6048c438 storet 1,mem_ring_ibias_trim
+00ea 6ff08a02 fetch 1,0x8a02
+00eb 1fe17e1f and pdata,0x1f,pdata
+00ec 9841fe00 ior temp,pdata
+00ed 67f08a02 store 1,0x8a02
+00ee 20600000 rtn
 
 p_rf_rx_enable:
-00e3 2040686f call rf_debug_rx_gpio_high 
-00e4 204021ba call rf_rx_agc_set 
-00e5 18002a08 force 8 ,radio_ctrl 
-00e6 18002a00 force 0 ,radio_ctrl 
-00e7 580aaada setarg 0x0aaada 
-00e8 67f18a0f store 3 ,0x8a0f 
-00e9 708a2540 jam 0x40 ,0x8a25 
-00ea 708a2610 jam 0x10 ,0x8a26 
-00eb 2000003c nop 60 
-00ec 708a01fb jam 0xfb ,0x8a01 
-00ed 708a25ff jam 0xff ,0x8a25 
-00ee 708a2630 jam 0x30 ,0x8a26 
-00ef 708a16fe jam 0xfe ,0x8a16 
-00f0 202021b4 branch rf_rx_enable + 14 
+00ef 2040686f call rf_debug_rx_gpio_high
+00f0 204021ba call rf_rx_agc_set
+00f1 18002a08 force 8,radio_ctrl
+00f2 18002a00 force 0,radio_ctrl
+00f3 580aaada setarg 0x0aaada
+00f4 67f18a0f store 3,0x8a0f
+00f5 708a2540 jam 0x40,0x8a25
+00f6 708a2610 jam 0x10,0x8a26
+00f7 2000003c nop 60
+00f8 708a01fb jam 0xfb,0x8a01
+00f9 708a25ff jam 0xff,0x8a25
+00fa 708a2630 jam 0x30,0x8a26
+00fb 708a16fe jam 0xfe,0x8a16
+00fc 202021b4 branch rf_rx_enable+14
 
 p_mouse_g24_retransmit:
-00f1 6fe0c793 fetch 1 ,mem_mouse_need_soft_reset 
-00f2 247a0000 nrtn blank 
-00f3 204000f6 call p_mouse_retransmit_select_device_by_pb_button 
-00f4 204000f9 call p_mouse_select_device_by_dpi_button_once 
-00f5 20203662 branch g24_retransmit0 
+00fd 6fe0c793 fetch 1,mem_mouse_need_soft_reset
+00fe 247a0000 nrtn blank
+00ff 20400103 call p_mouse_retransmit_select_device_by_pb_button
+0100 20400106 call p_mouse_select_device_by_dpi_button_once
+0101 2040561c call mouse_wheel_check
+0102 20203662 branch g24_retransmit0
 
 p_mouse_retransmit_select_device_by_pb_button:
-00f6 6fe0c655 fetch 1 ,mem_config_select_device_button_gpio 
-00f7 c17f8000 rtneq gpio_disable 
-00f8 20205e78 branch mouse_retransmit_select_device_by_pb_button 
+0103 6fe0c655 fetch 1,mem_config_select_device_button_gpio
+0104 c17f8000 rtneq gpio_disable
+0105 20205e78 branch mouse_retransmit_select_device_by_pb_button
 
 p_mouse_select_device_by_dpi_button_once:
-00f9 d8e0000c arg 12 ,queue 
-00fa 20407cef call timer_check 
-00fb 247a0000 nrtn blank 
-00fc 2040048b call p_mouse_dpi_check_retransmit 
-00fd 20206102 branch mouse_g24_retransmit_event_set 
+0106 d8e0000c arg 12,queue
+0107 20407cef call timer_check
+0108 247a0000 nrtn blank
+0109 204004a6 call p_mouse_dpi_check_retransmit
+010a 20206102 branch mouse_g24_retransmit_event_set
 
 p_g24_transmit_hop_process:
-00fe 6848c601 fetcht 1 ,mem_24g_retry 
-00ff 6fe0c621 fetch 1 ,mem_24g_fast_hop_count 
-0100 98467c00 isub temp ,null 
-0101 24210103 nbranch p_g24_tx_fast_hop ,positive 
-0102 20203681 branch g24_transmit_hop_process + 5 
+010b 6848c601 fetcht 1,mem_24g_retry
+010c 6fe0c621 fetch 1,mem_24g_fast_hop_count			// 125hz=11  250hz=5
+010d 98467c00 isub temp,null
+010e 24210110 nbranch p_g24_tx_fast_hop,positive		// >= (6+6)or(3+3) hop fast    fail packet count >= 2
+010f 20203681 branch g24_transmit_hop_process+5
 
 p_g24_tx_fast_hop:
-0103 6fe2458f fetch 4 ,mem_24g_addr 
-0104 684a45e4 fetcht 4 ,mem_24g_fast_conn_addr 
-0105 98467c00 isub temp ,null 
-0106 2022b222 branch g24_ch ,zero 
-0107 204002b6 call p_power_ctrl_txpower_incrs 
-0108 2020369b branch g24_tx_fast_hop + 1 
+0110 6fe2458f fetch 4,mem_24g_addr
+0111 684a45e4 fetcht 4,mem_24g_fast_conn_addr
+0112 98467c00 isub temp,null
+0113 2022b222 branch g24_ch,zero		//fast conn->power no chage
+0114 204002d4 call p_power_ctrl_txpower_incrs
+0115 2020369b branch g24_tx_fast_hop+1
 
 p_txon:
-0109 580aaa7e setarg 0x0aaa7e 
-010a 67f18a0f store 3 ,0x8a0f 
-010b 2000003c nop 60 
-010c 708a2500 jam 0x00 ,0x8a25 
-010d 708a260d jam 0x0d ,0x8a26 
-010e 708a16f6 jam 0xf6 ,0x8a16 
-010f 20202203 branch txon + 7 
+0116 580aaa7e setarg 0x0aaa7e
+0117 67f18a0f store 3,0x8a0f
+0118 2000003c nop 60
+0119 708a2500 jam 0x00,0x8a25
+011a 708a260d jam 0x0d,0x8a26
+011b 708a16f6 jam 0xf6,0x8a16
+011c 20202203 branch txon+7
 
 p_set_tx_power:
-0110 6fe0c141 fetch 1 ,mem_tx_power 
-0111 c0032225 beq tx_power_6db ,set_tx_power_7db 
-0112 c04f0119 beq tx_power_f30db ,p_set_tx_power_f30db 
-0113 c0550115 beq tx_power_factory ,p_set_tx_power_factory 
-0114 2020220e branch set_tx_power + 2 
+011d 6fe0c141 fetch 1,mem_tx_power
+011e c0032225 beq tx_power_6db,set_tx_power_7db
+011f c04f0126 beq tx_power_f30db,p_set_tx_power_f30db
+0120 c0550122 beq tx_power_factory,p_set_tx_power_factory
+0121 2020220e branch set_tx_power+2
 
 p_set_tx_power_factory:
-0115 708a1417 jam 0x17 ,0x8a14 
-0116 6fe1ca08 fetch 3 ,mem_tx_power_factory_param_new 
+0122 708a1417 jam 0x17,0x8a14
+0123 6fe1ca08 fetch 3,mem_tx_power_factory_param_new
 
 p_mouse_tx_power_set:
-0117 67f18a60 store 3 ,0x8a60 
-0118 2020221a branch set_tx_power_8a63_28 
+0124 67f18a60 store 3,0x8a60
+0125 2020221a branch set_tx_power_8a63_28
 
 p_set_tx_power_f30db:
-0119 708a1417 jam 0x17 ,0x8a14 
-011a 58250300 setarg 0x250300 
-011b 20200117 branch p_mouse_tx_power_set 
+0126 708a1417 jam 0x17,0x8a14
+0127 58250300 setarg 0x250300
+0128 20200124 branch p_mouse_tx_power_set
 
 p_rx_dcoc:
-011c 20758000 rtn wake 
-011d 20402160 call set_sync_on 
-011e d8400027 arg 39 ,temp 
-011f 2040216f call set_freq_rx 
-0120 204021a6 call rf_rx_enable 
-0121 708a257f jam 0x7f ,0x8a25 
-0122 708a301a jam 0x1a ,0x8a30 
-0123 708a3178 jam 0x78 ,0x8a31 
-0124 708a8fb2 jam 0xb2 ,0x8a8f 
-0125 708ac200 jam 0 ,0x8ac2 
-0126 708ac300 jam 0 ,0x8ac3 
-0127 d8e00006 arg 6 ,queue 
-0128 20400139 call p_rx_dcoc_avg 
-0129 2a2ffe0d isolate1 13 ,rega 
-012a 2040211d call qset_start 
-012b 2a4ffe0d isolate1 13 ,regb 
-012c 2040211e call qset_p 
-012d d8e00005 arg 5 ,queue 
+0129 20758000 rtn wake
+012a 20402160 call set_sync_on
+012b d8400027 arg 39,temp
+012c 2040216f call set_freq_rx
+012d 204021a6 call rf_rx_enable
+012e 708a257f jam 0x7f,0x8a25
+012f 708a301a jam 0x1a,0x8a30
+0130 708a3178 jam 0x78,0x8a31
+0131 708a8fb2 jam 0xb2,0x8a8f
+0132 708ac200 jam 0,0x8ac2
+0133 708ac300 jam 0,0x8ac3
+0134 d8e00006 arg 6,queue
+0135 20400146 call p_rx_dcoc_avg
+0136 2a2ffe0d isolate1 13,rega
+0137 2040211d call qset_start
+0138 2a4ffe0d isolate1 13,regb
+0139 2040211e call qset_p
+013a d8e00005 arg 5,queue
 
 p_rx_dcoc_loop2:
-012e 2040211c call qset1_p 
-012f 2040211e call qset_p 
-0130 20400139 call p_rx_dcoc_avg 
-0131 d8a08ac2 arg 0x8ac2 ,contw 
-0132 1a31fe00 rshift4 rega ,pdata 
-0133 20402117 call qsetxor 
-0134 1a51fe00 rshift4 regb ,pdata 
-0135 20402117 call qsetxor 
-0136 18e08fff increase -1 ,queue 
-0137 2021012e branch p_rx_dcoc_loop2 ,positive 
-0138 2020214f branch rx_dcoc_loop2 + 10 
+013b 2040211c call qset1_p
+013c 2040211e call qset_p
+013d 20400146 call p_rx_dcoc_avg
+013e d8a08ac2 arg 0x8ac2,contw
+013f 1a31fe00 rshift4 rega,pdata
+0140 20402117 call qsetxor
+0141 1a51fe00 rshift4 regb,pdata
+0142 20402117 call qsetxor
+0143 18e08fff increase -1,queue
+0144 2021013b branch p_rx_dcoc_loop2,positive
+0145 2020214f branch rx_dcoc_loop2+10
 
 p_rx_dcoc_avg:
-0139 2000003c nop 60 
-013a 58000f00 setarg mem_dcoc_buf 
-013b 67f10982 store 2 ,0x8982 
-013c 58000ff0 setarg mem_dcoc_buf_end 
-013d 67f10984 store 2 ,0x8984 
-013e 70898109 jam 0x9 ,0x8981 
-013f 70898103 jam 0x3 ,0x8981 
-0140 70898006 jam 0x6 ,0x8980 
-0141 2000003c nop 60 
-0142 da200000 arg 0 ,rega 
-0143 da400000 arg 0 ,regb 
-0144 df200010 arg 16 ,loopcnt 
-0145 d8c00f00 arg mem_dcoc_buf ,contr 
-0146 2020212d branch rx_dcoc_loop 
+0146 2000003c nop 60
+0147 58000f00 setarg mem_dcoc_buf
+0148 67f10982 store 2,0x8982
+0149 58000ff0 setarg mem_dcoc_buf_end
+014a 67f10984 store 2,0x8984
+014b 70898109 jam 0x9,0x8981
+014c 70898103 jam 0x3,0x8981
+014d 70898006 jam 0x6,0x8980
+014e 2000003c nop 60
+014f da200000 arg 0,rega
+0150 da400000 arg 0,regb
+0151 df200010 arg 16,loopcnt
+0152 d8c00f00 arg mem_dcoc_buf,contr
+0153 2020212d branch rx_dcoc_loop
 
 p_rfpll_aac_ghpc:
-0147 20758000 rtn wake 
-0148 20202272 branch rfpll_aac_ghpc + 1 
+0154 20758000 rtn wake
+0155 20202272 branch rfpll_aac_ghpc+1
 
 p_set_lemode:
-0149 708a8211 jam 0x11 ,0x8a82 
-014a 708a8d12 jam 0x12 ,0x8a8d 
-014b 708a8e0a jam 0x0a ,0x8a8e 
-014c 6fe0c099 fetch 1 ,mem_fcomp_div 
-014d c0080162 beq xtal_16m ,p_set_lemode_2m_16m 
-014e 58005762 setarg 0x5762 
-014f 67f10907 store 2 ,0x8907 
+0156 708a8211 jam 0x11,0x8a82
+0157 708a8d12 jam 0x12,0x8a8d
+0158 708a8e0a jam 0x0a,0x8a8e
+0159 6fe0c099 fetch 1,mem_fcomp_div
+015a c008016f beq xtal_16m,p_set_lemode_2m_16m
+015b 58005762 setarg 0x5762
+015c 67f10907 store 2,0x8907
 
 p_set_lemode_2m:
-0150 70890103 jam 3 ,0x8901 
-0151 70893003 jam 3 ,0x8930 
-0152 c6168000 rtnmark1 mark_ble_2m 
-0153 70890101 jam 1 ,0x8901 
-0154 708a8207 jam 0x07 ,0x8a82 
-0155 708a8d44 jam 0x44 ,0x8a8d 
-0156 708a8e0a jam 0x0a ,0x8a8e 
-0157 6fe0c099 fetch 1 ,mem_fcomp_div 
-0158 c008015f beq xtal_16m ,p_set_lemode_1m_16m 
-0159 58002bb1 setarg 0x2bb1 
-015a 67f10907 store 2 ,0x8907 
+015d 70890103 jam 3,0x8901
+015e 70893003 jam 3,0x8930
+015f c6168000 rtnmark1 mark_ble_2m
+0160 70890101 jam 1,0x8901
+0161 708a8207 jam 0x07,0x8a82
+0162 708a8d44 jam 0x44,0x8a8d
+0163 708a8e0a jam 0x0a,0x8a8e
+0164 6fe0c099 fetch 1,mem_fcomp_div
+0165 c008016c beq xtal_16m,p_set_lemode_1m_16m
+0166 58002bb1 setarg 0x2bb1
+0167 67f10907 store 2,0x8907
 
 p_set_lemode_1m:
-015b c6978000 rtnmark0 mark_ble_lr 
-015c 70893024 jam 0x24 ,0x8930 
-015d 70890105 jam 5 ,0x8901 
-015e 20600000 rtn 
+0168 c6978000 rtnmark0 mark_ble_lr
+0169 70893024 jam 0x24,0x8930
+016a 70890105 jam 5,0x8901
+016b 20600000 rtn
 
 p_set_lemode_1m_16m:
-015f 58004189 setarg 0x4189 
-0160 67f10907 store 2 ,0x8907 
-0161 2020015b branch p_set_lemode_1m 
+016c 58004189 setarg 0x4189
+016d 67f10907 store 2,0x8907
+016e 20200168 branch p_set_lemode_1m
 
 p_set_lemode_2m_16m:
-0162 58008312 setarg 0x8312 
-0163 67f10907 store 2 ,0x8907 
-0164 20200150 branch p_set_lemode_2m 
+016f 58008312 setarg 0x8312
+0170 67f10907 store 2,0x8907
+0171 2020015d branch p_set_lemode_2m
 
 p_le_check_retransmit_timesout:
-0165 6fe0cbf9 fetch 1 ,mem_le_conn_rcv_new 
-0166 da600100 arg 256 ,regc 
-0167 9a60fe00 iadd regc ,pdata 
-0168 20600000 rtn 
+0172 6fe0cbf9 fetch 1,mem_le_conn_rcv_new
+0173 da600100 arg 256,regc
+0174 9a60fe00 iadd regc,pdata
+0175 20600000 rtn
 
 p_le_slave_match:
-0169 2040016b call p_le_check_retransmit 
-016a 20202563 branch le_slave_match + 1 
+0176 20400178 call p_le_check_retransmit
+0177 20202563 branch le_slave_match+1
 
 p_le_check_retransmit:
-016b 6fe0cbfa fetch 1 ,mem_le_conn_first_rcv 
-016c 207a0000 rtn blank 
-016d 6fe0cbfb fetch 1 ,mem_le_check_retransmit_flag 
-016e 247a0000 nrtn blank 
-016f 6848cbfa fetcht 1 ,mem_le_conn_first_rcv 
-0170 6fe0cbf9 fetch 1 ,mem_le_conn_rcv_new 
-0171 98467c00 isub temp ,null 
-0172 24410165 ncall p_le_check_retransmit_timesout ,positive 
-0173 98467e00 isub temp ,pdata 
-0174 1fe67c64 sub pdata ,100 ,null 
-0175 2021017d branch p_le_check_retransmit_count ,positive 
-0176 6fe0cbfc fetch 1 ,mem_le_retransmit_cnt 
-0177 1fe67c14 sub pdata ,20 ,null 
-0178 2441017b ncall p_app_ble_disconnect ,positive 
-0179 704bfb01 jam 1 ,mem_le_check_retransmit_flag 
-017a 20600000 rtn 
+0178 6fe0cbfa fetch 1,mem_le_conn_first_rcv
+0179 207a0000 rtn blank
+017a 6fe0cbfb fetch 1,mem_le_check_retransmit_flag
+017b 247a0000 nrtn blank
+017c 6848cbfa fetcht 1,mem_le_conn_first_rcv
+017d 6fe0cbf9 fetch 1,mem_le_conn_rcv_new
+017e 98467c00 isub temp,null
+017f 24410172 ncall p_le_check_retransmit_timesout,positive
+0180 98467e00 isub temp,pdata
+0181 1fe67c64 sub pdata,100,null
+0182 2021018a branch p_le_check_retransmit_count,positive
+0183 6fe0cbfc fetch 1,mem_le_retransmit_cnt
+0184 1fe67c14 sub pdata,20,null
+0185 24410188 ncall p_app_ble_disconnect,positive
+0186 704bfb01 jam 1,mem_le_check_retransmit_flag
+0187 20600000 rtn
 
 p_app_ble_disconnect:
-017b 704bfd01 jam 1 ,mem_le_check_retransmit_discon_flag 
-017c 2020431f branch app_ble_disconnect 
+0188 704bfd01 jam 1,mem_le_check_retransmit_discon_flag
+0189 2020431f branch app_ble_disconnect
 
 p_le_check_retransmit_count:
-017d 6848817f fetcht 1 ,mem_le_arq 
-017e 6fe0804c fetch 1 ,mem_le_rxbuf_data_header 
-017f 1fe37e00 rshift pdata ,pdata 
-0180 9842fe00 ixor temp ,pdata 
-0181 2feffe02 isolate1 nesn ,pdata 
-0182 58000000 setarg 0 
-0183 6848cbfc fetcht 1 ,mem_le_retransmit_cnt 
-0184 7920fe00 setflag true ,0 ,pdata 
-0185 98408400 iadd temp ,temp 
-0186 6048cbfc storet 1 ,mem_le_retransmit_cnt 
-0187 20600000 rtn 
+018a 6848817f fetcht 1,mem_le_arq
+018b 6fe0804c fetch 1,mem_le_rxbuf_data_header
+018c 1fe37e00 rshift pdata,pdata
+018d 9842fe00 ixor temp,pdata
+018e 2feffe02 isolate1 nesn,pdata
+018f 58000000 setarg 0
+0190 6848cbfc fetcht 1,mem_le_retransmit_cnt
+0191 7920fe00 setflag true,0,pdata
+0192 98408400 iadd temp,temp
+0193 6048cbfc storet 1,mem_le_retransmit_cnt
+0194 20600000 rtn
 
 p_le_got_first_packet_new:
-0188 6fe08005 fetch 1 ,mem_le_conn_rcv 
-0189 1fe0fe01 increase 1 ,pdata 
-018a 67e08005 store 1 ,mem_le_conn_rcv 
-018b 2436818f nbranch p_le_got_first_packet_new + 7 ,match 
-018c 6fe0cbf9 fetch 1 ,mem_le_conn_rcv_new 
-018d 1fe0fe01 increase 1 ,pdata 
-018e 67e0cbf9 store 1 ,mem_le_conn_rcv_new 
-018f 2020259b branch le_got_first_packet + 4 
+0195 6fe08005 fetch 1,mem_le_conn_rcv
+0196 1fe0fe01 increase 1,pdata
+0197 67e08005 store 1,mem_le_conn_rcv
+0198 2436819c nbranch p_le_got_first_packet_new+7,match
+0199 6fe0cbf9 fetch 1,mem_le_conn_rcv_new			//lpm  use retention mem
+019a 1fe0fe01 increase 1,pdata
+019b 67e0cbf9 store 1,mem_le_conn_rcv_new
+019c 2020259b branch le_got_first_packet+4
 
 p_le_rx_dec:
-0190 2040281c call le_check_retransmit 
-0191 6a20804d fetchr rega ,1 ,mem_le_rxbuf_data_length 
-0192 1a20a3fc increase -4 ,rega 
-0193 242126fa nbranch le_crc_fail_consecutive ,positive 
-0194 2020268e branch le_rx_dec + 6 
+019d 2040281c call le_check_retransmit
+019e 6a20804d fetchr rega, 1,mem_le_rxbuf_data_length
+019f 1a20a3fc increase -4,rega
+01a0 242126fa nbranch le_crc_fail_consecutive,positive
+01a1 2020268e branch le_rx_dec+6
 
 p_le_rx_nopayload:
-0195 09800018 parse demod ,bucket ,24 
-0196 1fef7e00 rshift32 pdata ,pdata 
-0197 1ff17e00 rshift16 pdata ,pdata 
-0198 e7e18005 istore 3 ,contw 
-0199 78287c00 enable swfine 
-019a 2040270d call le_set_until_tx_timer 
-019b 202326f6 branch le_crc_fail ,crc_failed 
-019c c59926af bmark0 mark_ble_encryption ,le_rx_match 
-019d 6fe0804d fetch 1 ,mem_le_rxbuf_data_length 
-019e 203a26af branch le_rx_match ,blank 
-019f 1fe0fffc increase -4 ,pdata 
-01a0 67e0804d store 1 ,mem_le_rxbuf_data_length 
-01a1 204072cb call wait_ccm_done 
-01a2 6ff08108 fetch 1 ,core_misc_status 
-01a3 c303a6fa bbit0 7 ,le_crc_fail_consecutive 
-01a4 1800700c force regidx_result ,regext_index 
-01a5 65e20154 storer regext ,4 ,mem_le_peer_mic 
-01a6 202026af branch le_rx_match 
+01a2 09800018 parse demod,bucket,24
+01a3 1fef7e00 rshift32 pdata,pdata
+01a4 1ff17e00 rshift16 pdata,pdata
+01a5 e7e18005 istore 3,contw
+01a6 78287c00 enable swfine
+01a7 2040270d call le_set_until_tx_timer
+01a8 202326f6 branch le_crc_fail,crc_failed
+01a9 c59926af bmark0 mark_ble_encryption,le_rx_match
+01aa 6fe0804d fetch 1,mem_le_rxbuf_data_length
+01ab 203a26af branch le_rx_match,blank
+01ac 1fe0fffc increase -4,pdata
+01ad 67e0804d store 1,mem_le_rxbuf_data_length
+01ae 204072cb call wait_ccm_done
+01af 6ff08108 fetch 1,core_misc_status
+01b0 c303a6fa bbit0 7, le_crc_fail_consecutive
+01b1 1800700c force regidx_result,regext_index
+01b2 65e20154 storer regext, 4,mem_le_peer_mic
+01b3 202026af branch le_rx_match
 
 p_le_parse:
-01a7 6fe0c334 fetch 1 ,mem_le_packet_llid 
-01a8 c1000000 rtneq llid_reserved 
-01a9 c001b04a beq llid_le_ll ,le_parse_ll 
-01aa 202028e1 branch le_parse_l2cap 
+01b4 6fe0c334 fetch 1,mem_le_packet_llid
+01b5 c1000000 rtneq llid_reserved
+01b6 c001b04a beq llid_le_ll,le_parse_ll
+01b7 202028e1 branch le_parse_l2cap
 
 p_le_init_adv:
-01ab 793f8030 set0 mark_ble_crc_fail ,mark 
-01ac 20202af6 branch le_init_adv + 1 
+01b8 793f8030 set0 mark_ble_crc_fail,mark
+01b9 20202af6 branch le_init_adv+1
 
 p_le_receive_rxon:
-01ad 204025c2 call le_prep 
-01ae c59781b3 bmark0 mark_ble_lr ,p_le_receive_nolr 
-01af 783cfc00 pulse dewhiten_code_calc 
-01b0 2000001e nop 30 
-01b1 204025c2 call le_prep 
-01b2 19699600 lshift3 timeup ,timeup 
+01ba 204025c2 call le_prep
+01bb c59781c0 bmark0 mark_ble_lr,p_le_receive_nolr
+01bc 783cfc00 pulse dewhiten_code_calc
+01bd 2000001e nop 30
+01be 204025c2 call le_prep
+01bf 19699600 lshift3 timeup,timeup
 
 p_le_receive_nolr:
-01b3 7856fc00 disable match 
-01b4 7826fc00 enable decode_fec0 
-01b5 7830fc00 enable is_rx 
-01b6 78507c00 disable is_tx 
-01b7 19623600 copy timeup ,stop_watch 
-01b8 37c18400 correlate null ,timeout 
-01b9 203701bc branch p_le_receive_on_attempt ,attempt 
-01ba 1b420400 copy clke ,temp 
-01bb 604b000f storet 6 ,mem_sync_clke 
+01c0 7856fc00 disable match
+01c1 7826fc00 enable decode_fec0
+01c2 7830fc00 enable is_rx
+01c3 78507c00 disable is_tx
+01c4 19623600 copy timeup,stop_watch
+01c5 37c18400 correlate null,timeout
+01c6 203701c9 branch p_le_receive_on_attempt,attempt
+01c7 1b420400 copy clke,temp
+01c8 604b000f storet 6,mem_sync_clke
 
 p_le_receive_on_attempt:
-01bc 242c26fa nbranch le_unsync_end ,sync 
-01bd 78287c00 enable swfine 
-01be 6fe0c167 fetch 1 ,mem_le_tx_ifs_defference 
-01bf d8404e20 arg param_20ms_init ,temp 
-01c0 98408400 iadd temp ,temp 
-01c1 6fe0c148 fetch 1 ,mem_system_clk 
-01c2 984fb600 imul32 temp ,stop_watch 
-01c3 20406877 call rf_debug_rx_sync_line 
-01c4 20372677 branch le_receive_skip ,attempt 
-01c5 204001ca call p_calc_clke_all_modem 
-01c6 6fe08168 fetch 1 ,mem_le_state 
-01c7 c301a677 bbit0 lestate_got_first_packet ,le_receive_skip 
-01c8 2055a477 call lpm_adjust_clk ,wake 
-01c9 20202677 branch le_receive_skip 
+01c9 242c26fa nbranch le_unsync_end,sync
+01ca 78287c00 enable swfine
+01cb 6fe0c167 fetch 1,mem_le_tx_ifs_defference
+01cc d8404e20 arg param_20ms_init,temp
+01cd 98408400 iadd temp,temp
+01ce 6fe0c148 fetch 1,mem_system_clk
+01cf 984fb600 imul32 temp,stop_watch
+01d0 20406877 call rf_debug_rx_sync_line	//l-h
+01d1 20372677 branch le_receive_skip,attempt
+01d2 204001d7 call p_calc_clke_all_modem
+01d3 6fe08168 fetch 1,mem_le_state
+01d4 c301a677 bbit0 lestate_got_first_packet,le_receive_skip
+01d5 2055a477 call lpm_adjust_clk,wake
+01d6 20202677 branch le_receive_skip
 
 p_calc_clke_all_modem:
-01ca 684b000f fetcht 6 ,mem_sync_clke 
-01cb 1b427e00 copy clke ,pdata 
-01cc 20407d12 call clk_diff 
-01cd 1fe20400 copy pdata ,temp 
-01ce 204026ff call calc_clke_all_modem 
-01cf 1b425600 copy clke ,rege 
-01d0 1d227e00 copy clke_rt ,pdata 
-01d1 9840fe00 iadd temp ,pdata 
-01d2 1fe25200 copy pdata ,clke_rt 
-01d3 20600000 rtn 
+01d7 684b000f fetcht  6,mem_sync_clke
+01d8 1b427e00 copy clke,pdata
+01d9 20407d12 call clk_diff
+01da 1fe20400 copy pdata,temp
+01db 204026ff call calc_clke_all_modem
+01dc 1b425600 copy clke,rege
+01dd 1d227e00 copy clke_rt,pdata
+01de 9840fe00 iadd temp,pdata
+01df 1fe25200 copy pdata,clke_rt
+01e0 20600000 rtn
 
 p_lpm_adjust_clk:
-01d4 c584a489 bmark0 mark_context ,lpm_clear_counter 
-01d5 684a40ad fetcht 4 ,mem_sleep_counter_all 
-01d6 dfe00600 arg 0x600 ,pdata 
-01d7 98467c00 isub temp ,null 
-01d8 20610000 rtn positive 
-01d9 18422200 copy temp ,rega 
-01da 684b000f fetcht 6 ,mem_sync_clke 
-01db 1d627e00 deposit rege 
-01dc 20407d10 call clk_diff_rt 
-01dd 1a220400 copy rega ,temp 
-01de 2020247d branch lpm_adjust_clk + 6 
+01e1 c584a489 bmark0 mark_context,lpm_clear_counter
+01e2 684a40ad fetcht 4,mem_sleep_counter_all
+01e3 dfe00600 arg 0x600,pdata
+01e4 98467c00 isub temp,null
+01e5 20610000 rtn positive				// interval too small
+01e6 18422200 copy temp,rega
+01e7 684b000f fetcht 6,mem_sync_clke
+01e8 1d627e00 deposit rege
+01e9 20407d10 call clk_diff_rt
+01ea 1a220400 copy rega,temp
+01eb 2020247d branch lpm_adjust_clk+6
 
 p_le_adv_not_match:
-01df 20402152 call shutdown_radio 
-01e0 70890000 jam 0 ,0x8900 
-01e1 793f8030 set0 mark_ble_crc_fail ,mark 
-01e2 20202ae3 branch le_adv_not_match + 1 
+01ec 20402152 call shutdown_radio
+01ed 70890000 jam 0,0x8900
+01ee 793f8030 set0 mark_ble_crc_fail,mark
+01ef 20202ae3 branch le_adv_not_match+1
 
 p_le_parse_l2cap:
-01e3 efe10006 ifetch 2 ,contr 
-01e4 c00201e6 beq le_l2cap_cid_att ,p_le_parse_att 
-01e5 202028eb branch le_parse_l2cap_next + 2 
+01f0 efe10006 ifetch 2,contr
+01f1 c00201f3 beq le_l2cap_cid_att,p_le_parse_att
+01f2 202028eb branch le_parse_l2cap_next+2
 
 p_le_parse_att:
-01e6 efe18006 ifetch 3 ,contr 
-01e7 67e1c397 store 3 ,mem_le_att_opcode 
-01e8 c00501eb beq attop_read_request ,p_le_parse_att_read_request 
-01e9 c00901fa beq attop_write_request ,p_le_parse_att_write_request 
-01ea 20202b96 branch le_parse_att2 
+01f3 efe18006 ifetch 3,contr
+01f4 67e1c397 store 3,mem_le_att_opcode
+01f5 c00501f8 beq attop_read_request,p_le_parse_att_read_request
+01f6 c0090207 beq attop_write_request,p_le_parse_att_write_request
+01f7 20202b96 branch le_parse_att2
 
 p_le_parse_att_read_request:
-01eb 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-01ec c31dad19 bbit0 mouse_enable_le_battery_service_cancel ,le_parse_att_read_request 
-01ed 20402dc7 call le_check_encrypt_state 
-01ee 68494398 fetcht 2 ,mem_le_att_handle 
-01ef 6fe0c321 fetch 1 ,mem_le_configuration 
-01f0 c28181f5 bbit1 bit_ble_read_auth ,p_le_send_att_read_response_check_auth 
+01f8 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+01f9 c31dad19 bbit0 mouse_enable_le_battery_service_cancel,le_parse_att_read_request
+01fa 20402dc7 call le_check_encrypt_state
+01fb 68494398 fetcht 2,mem_le_att_handle
+01fc 6fe0c321 fetch 1,mem_le_configuration
+01fd c2818202 bbit1 bit_ble_read_auth,p_le_send_att_read_response_check_auth
 
 p_le_send_att_read_response:
-01f1 6fe14398 fetch 2 ,mem_le_att_handle 
-01f2 c0182e03 beq 0x30 ,le_send_att_error_response_notfound 
-01f3 68494398 fetcht 2 ,mem_le_att_handle 
-01f4 20202d1d branch le_send_att_read_response 
+01fe 6fe14398 fetch 2,mem_le_att_handle
+01ff c0182e03 beq 0x30,le_send_att_error_response_notfound
+0200 68494398 fetcht 2,mem_le_att_handle
+0201 20202d1d branch le_send_att_read_response
 
 p_le_send_att_read_response_check_auth:
-01f5 6fe14332 fetch 2 ,mem_le_pairing_handle 
-01f6 98467c00 isub temp ,null 
-01f7 242281f1 nbranch p_le_send_att_read_response ,zero 
-01f8 243401f1 nbranch p_le_send_att_read_response ,user 
-01f9 20202d46 branch le_send_att_read_response_error_insufficient_auth 
+0202 6fe14332 fetch 2,mem_le_pairing_handle
+0203 98467c00 isub temp,null
+0204 242281fe nbranch p_le_send_att_read_response,zero
+0205 243401fe nbranch p_le_send_att_read_response,user
+0206 20202d46 branch le_send_att_read_response_error_insufficient_auth
 
 p_le_parse_att_write_request:
-01fa 18c22200 copy contr ,rega 
-01fb 6fe14335 fetch 2 ,mem_le_l2cap_size 
-01fc 1fe0a5fd add pdata ,-3 ,regb 
-01fd 20402929 call le_writeatt_cb 
-01fe 6fe0c78f fetch 1 ,mem_mouse_bluetooth_fast_conn_flag 
-01ff c07fadac beq 0xff ,le_send_att_write_response_check_auth 
-0200 6fe0c795 fetch 1 ,mem_mouse_le_reconnect_flag 
-0201 203a2dac branch le_send_att_write_response_check_auth ,blank 
-0202 6fe0c843 fetch 1 ,mem_le_connect_status_flag 
-0203 c280adac bbit1 ll_start_enc_flag ,le_send_att_write_response_check_auth 
-0204 5800001a setarg 0x001a 
-0205 68494398 fetcht 2 ,mem_le_att_handle 
-0206 98467c00 isub temp ,null 
-0207 2422adac nbranch le_send_att_write_response_check_auth ,zero 
-0208 20202d46 branch le_send_att_read_response_error_insufficient_auth 
+0207 18c22200 copy contr,rega
+0208 6fe14335 fetch 2,mem_le_l2cap_size
+0209 1fe0a5fd add pdata,-3,regb
+020a 20402929 call le_writeatt_cb
+020b 6fe0c78f fetch 1,mem_mouse_bluetooth_fast_conn_flag
+020c c07fadac beq 0xff,le_send_att_write_response_check_auth
+020d 6fe0c795 fetch 1,mem_mouse_le_reconnect_flag
+020e 203a2dac branch le_send_att_write_response_check_auth,blank
+020f 6fe0c843 fetch 1,mem_le_connect_status_flag
+0210 c280adac bbit1 ll_start_enc_flag,le_send_att_write_response_check_auth
+0211 5800001a setarg 0x001a
+0212 68494398 fetcht 2,mem_le_att_handle
+0213 98467c00 isub temp,null
+0214 2422adac nbranch le_send_att_write_response_check_auth,zero
+0215 20202d46 branch le_send_att_read_response_error_insufficient_auth
 
 p_mouse_le:
-0209 20402a28 call le_fifo_check_nearly_full 
-020a 247a0000 nrtn blank 
-020b 6fe0c78f fetch 1 ,mem_mouse_bluetooth_fast_conn_flag 
-020c c07f8214 beq 0xff ,p_mouse_le_next 
-020d 6fe0c843 fetch 1 ,mem_le_connect_status_flag 
-020e 1fe17e03 and pdata ,0x03 ,pdata 
-020f c1818000 rtnne 0x03 
-0210 6fe0cbfb fetch 1 ,mem_le_check_retransmit_flag 
-0211 207a0000 rtn blank 
-0212 6fe0cbfd fetch 1 ,mem_le_check_retransmit_discon_flag 
-0213 247a0000 nrtn blank 
+0216 20402a28 call le_fifo_check_nearly_full
+0217 247a0000 nrtn blank
+0218 6fe0c78f fetch 1,mem_mouse_bluetooth_fast_conn_flag
+0219 c07f8221 beq 0xff,p_mouse_le_next
+021a 6fe0c843 fetch 1,mem_le_connect_status_flag
+021b 1fe17e03 and pdata,0x03,pdata
+021c c1818000 rtnne 0x03
+021d 6fe0cbfb fetch 1,mem_le_check_retransmit_flag
+021e 207a0000 rtn blank
+021f 6fe0cbfd fetch 1,mem_le_check_retransmit_discon_flag
+0220 247a0000 nrtn blank
 
 p_mouse_le_next:
-0214 6fe0c956 fetch 1 ,mem_mouse_clear_sensor_data_flag 
-0215 205a5a71 call mouse_clear_sensor_data_by_reset ,blank 
-0216 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-0217 c280db5b bbit1 mouse_24g_pairing_flag ,mouse_le_send_empty_packet 
-0218 c2805b5b bbit1 mouse_select_device_flag ,mouse_le_send_empty_packet 
-0219 c282db5b bbit1 mouse_bt_discovery_button_down_flag ,mouse_le_send_empty_packet 
-021a c2835b5b bbit1 mouse_bt_discovery_button_long_down_flag ,mouse_le_send_empty_packet 
-021b 20405601 call mouse_motion 
-021c 20405ab2 call mouse_check_125hz 
-021d 24740000 nrtn user 
-021e 20405abc call mouse_current_mult_update 
-021f 204004d4 call p_mouse_data_xy_release 
-0220 20205b37 branch mouse_le_next + 12 
+0221 6fe0c956 fetch 1,mem_mouse_clear_sensor_data_flag
+0222 205a5a71 call mouse_clear_sensor_data_by_reset,blank
+0223 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+0224 c280db5b bbit1 mouse_24g_pairing_flag,mouse_le_send_empty_packet
+0225 c2805b5b bbit1 mouse_select_device_flag,mouse_le_send_empty_packet
+0226 c282db5b bbit1 mouse_bt_discovery_button_down_flag,mouse_le_send_empty_packet
+0227 c2835b5b bbit1 mouse_bt_discovery_button_long_down_flag,mouse_le_send_empty_packet
+0228 20405601 call mouse_motion
+0229 20405ab2 call mouse_check_125hz
+022a 24740000 nrtn user
+022b 20405abc call mouse_current_mult_update
+022c 204004f1 call p_mouse_data_xy_release
+022d 20205b37 branch mouse_le_next+12
 
 p_gpio_set_wake:
-0221 18467cff sub temp ,ui_button_gpio_disable ,null 
-0222 20628000 rtn zero 
-0223 d9000004 arg 4 ,debug 
-0224 284ffe07 isolate1 gpio_active_bit ,temp 
-0225 2020eebd branch gpio_set_wake_high ,true 
-0226 d9000003 arg 3 ,debug 
-0227 20206ebd branch gpio_set_wake_high 
+022e 18467cff sub temp,ui_button_gpio_disable,null
+022f 20628000 rtn zero
+0230 d9000004 arg 4,debug
+0231 284ffe07 isolate1 gpio_active_bit,temp
+0232 2020eebd branch gpio_set_wake_high,true
+0233 d9000003 arg 3,debug
+0234 20206ebd branch gpio_set_wake_high
 
 p_gpio_set_wake_by_current_state:
-0228 18467cff sub temp ,gpio_disable ,null 
-0229 20628000 rtn zero 
-022a 20406ee6 call gpio_get_bit 
-022b 2020822e branch p_gpio_set_qdec_mode ,true 
+0235 18467cff sub temp,gpio_disable,null
+0236 20628000 rtn zero
+0237 20406ee6 call gpio_get_bit
+0238 2020823b branch p_gpio_set_qdec_mode,true
 
 p_gpio_set_low_wake:
-022c d9000003 arg 3 ,debug 
-022d 20206ebd branch gpio_set_wake_high 
+0239 d9000003 arg 3,debug
+023a 20206ebd branch gpio_set_wake_high
 
 p_gpio_set_qdec_mode:
-022e 704b1d01 jam 1 ,mem_mouse_qdec_set_flag 
+023b 704b1d01 jam 1,mem_mouse_qdec_set_flag
 
 p_mouse_qdec_lpm_cfg:
-022f d9000006 arg 6 ,debug 
-0230 20206ebd branch gpio_set_wake_high 
+023c d9000006 arg 6,debug
+023d 20206ebd branch gpio_set_wake_high
 
 p_mouse_puchk_disable:
-0231 58000010 setarg 0x10 
+023e 58000010 setarg 0x10			//bit0-1:key_delay	bit2-3:pu_delay		bit4-6:interval	bit7:enable
 
 p_mouse_puchk_set:
-0232 67f08141 store 1 ,core_puwakeup 
-0233 202023e2 branch lpm_write_wait 
+023f 67f08141 store 1,core_puwakeup
+0240 202023e2 branch lpm_write_wait
 
 p_mouse_lpm_before_common:
-0234 204004af call p_clear_wake 
-0235 704b1d00 jam 0 ,mem_mouse_qdec_set_flag 
-0236 6848c654 fetcht 1 ,mem_matrix_public_gpio 
-0237 20406ef7 call gpio_out_active 
-0238 6848c654 fetcht 1 ,mem_matrix_public_gpio 
-0239 20406ed3 call gpio_clr_wake 
-023a 2040550d call mouse_lpm_before_common + 1 
-023b 204054f9 call mouse_gpio_pd_idle 
+0241 204004cc call p_clear_wake
+0242 704b1d00 jam 0,mem_mouse_qdec_set_flag
+0243 6848c654 fetcht 1,mem_matrix_public_gpio		// enable b4/b5/dpi wakeup
+0244 20406ef7 call gpio_out_active
+0245 6848c654 fetcht 1,mem_matrix_public_gpio
+0246 20406ed3 call gpio_clr_wake
+0247 2040561c call mouse_wheel_check
+0248 2040550d call mouse_lpm_before_common+1
+0249 204054f9 call mouse_gpio_pd_idle
 
 p_mouse_wheel_set_impedance:
-023c 6848c64a fetcht 1 ,mem_whee_a_data_gpio 
-023d 20406f0f call gpio_set_high_impedance 
-023e 6848c64b fetcht 1 ,mem_whee_b_data_gpio 
-023f 20206f0f branch gpio_set_high_impedance 
+024a 6848c64a fetcht 1,mem_whee_a_data_gpio
+024b 20406f0f call gpio_set_high_impedance
+024c 6848c64b fetcht 1,mem_whee_b_data_gpio
+024d 20206f0f branch gpio_set_high_impedance
 
 p_lpm_sleep:
 
 p_lpm_sleep_skip_cb_function:
-0240 6fe240ad fetch 4 ,mem_sleep_counter_all 
-0241 9840fe00 iadd temp ,pdata 
-0242 67e240ad store 4 ,mem_sleep_counter_all 
-0243 2040024a call p_lpm_save_context 
-0244 20400246 call p_mouse_puchk_set_check 
-0245 20202425 branch lpm_sleep_skip_cb_function + 4 
+024e 6fe240ad fetch 4,mem_sleep_counter_all	// sleep total time, 32k unit
+024f 9840fe00 iadd temp,pdata
+0250 67e240ad store 4,mem_sleep_counter_all
+0251 2040025f call p_lpm_save_context
+0252 2040025b call p_mouse_puchk_set_check
+0253 6fe0c0cb fetch 1,mem_lpm_hv_sel
+0254 79207e04 set1 lpm_doze_en_bit, pdata
+0255 204023e1 call lpm_write_sel_hv
+0256 2455a3cb ncall lpm_preon_counter,wake
+0257 37d98200 until null,lpo_edge
+0258 1b227e00 copy clkn,pdata
+0259 67e340b1 store 6,mem_sleep_clkn
+025a 2020242b branch lpm_sleep_skip_cb_function+10
 
 p_mouse_puchk_set_check:
-0246 6fe0cb1d fetch 1 ,mem_mouse_qdec_set_flag 
-0247 203a0231 branch p_mouse_puchk_disable ,blank 
+025b 6fe0cb1d fetch 1,mem_mouse_qdec_set_flag
+025c 203a023e branch p_mouse_puchk_disable,blank
 
 p_mouse_puchk_enable:
-0248 58000080 setarg 0x80 
-0249 20200232 branch p_mouse_puchk_set 
+025d 58000080 setarg 0x80			//bit0-1:key_delay	bit2-3:pu_delay		bit4-6:interval	bit7:enable
+025e 2020023f branch p_mouse_puchk_set
 
 p_lpm_save_context:
-024a 600440e7 storer mark ,8 ,mem_saved_mark 
-024b d8c08070 arg core_gpio_conf ,contr 
-024c d8a040cc arg mem_saved_gpio ,contw 
-024d 20407c8f call memcpy16 
-024e d8c080d4 arg core_gpio_conf_hi ,contr 
-024f 20407c89 call memcpy8 
-0250 6ff08080 fetch 1 ,core_spid_ctrl 
-0251 67e0c0ef store 1 ,mem_saved_spidctrl 
-0252 18422400 copy temp ,regb 
+025f 600440e7 storer mark,8,mem_saved_mark
+0260 d8c08070 arg core_gpio_conf,contr
+0261 d8a040cc arg mem_saved_gpio,contw
+0262 20407c8f call memcpy16
+0263 d8c080d4 arg core_gpio_conf_hi,contr
+0264 20407c89 call memcpy8
+0265 6ff08080 fetch 1,core_spid_ctrl
+0266 67e0c0ef store 1,mem_saved_spidctrl
+0267 18422400 copy temp,regb
 
 p_lpm_write_gpio_wakeup:
-0253 df20000c arg 12 ,loopcnt 
-0254 da200016 arg mem_gpio_wakeup_cfg ,rega 
-0255 da60814d arg core_gpio_wakeup_cfg ,regc 
-0256 37d98200 until null ,lpo_edge 
+0268 df20000c arg 12,loopcnt
+0269 da200016 arg mem_gpio_wakeup_cfg,rega
+026a da60814d arg core_gpio_wakeup_cfg,regc
+026b 37d98200 until null,lpo_edge
 
 p_lpm_write_gpio_loop:
-0257 efe08011 ifetch 1 ,rega 
-0258 e8408013 ifetcht 1 ,regc 
-0259 98467c00 isub temp ,null 
-025a 2022825d branch p_lpm_write_gpio_loop_next ,zero 
-025b e7e08013 istore 1 ,regc 
-025c 37d98200 until null ,lpo_edge 
+026c efe08011 ifetch 1,rega
+026d e8408013 ifetcht 1,regc
+026e 98467c00 isub temp,null
+026f 20228272 branch p_lpm_write_gpio_loop_next,zero
+0270 e7e08013 istore 1,regc
+0271 37d98200 until null,lpo_edge
 
 p_lpm_write_gpio_loop_next:
-025d 1a20a201 increase 1 ,rega 
-025e 1a60a601 increase 1 ,regc 
-025f c2000257 loop p_lpm_write_gpio_loop 
-0260 1a420400 copy regb ,temp 
-0261 20600000 rtn 
+0272 1a20a201 increase 1,rega
+0273 1a60a601 increase 1,regc
+0274 c200026c loop p_lpm_write_gpio_loop
+0275 1a420400 copy regb,temp
+0276 20600000 rtn
 
 p_otp_read_data:
-0262 20406b3a call enable_otp_read 
-0263 20406b75 call otp_read_data + 1 
-0264 20206b38 branch otp_disable_chgpump 
+0277 20406b3a call enable_otp_read			//read enable
+0278 20406b75 call otp_read_data+1
+0279 20206b38 branch otp_disable_chgpump	//disable otp
 
 p_g24_reconn_dispatch:
-0265 6fe145e0 fetch 2 ,mem_24g_reconn_count 
-0266 d84001f8 arg 0x01f8 ,temp 
-0267 98417e00 iand temp ,pdata 
-0268 203a026a branch p_g24_reconn_dispatch_next ,blank 
-0269 20203561 branch g24_reconn_dispatch + 5 
+027a 6fe145e0 fetch 2,mem_24g_reconn_count
+027b d84001f8 arg 0x01f8,temp
+027c 98417e00 iand temp,pdata
+027d 203a027f branch p_g24_reconn_dispatch_next,blank
+027e 20203561 branch g24_reconn_dispatch+5
 
 p_g24_reconn_dispatch_next:
-026a 2040357f call g24_reconn_data_prep 
-026b 20403651 call g24_transmit_receive_ack 
-026c 242c3586 nbranch g24_reconn_device_fail ,sync 
-026d 2437b586 nbranch g24_reconn_device_fail ,user3 
-026e 2040366e call g24_ackpayload_parse 
-026f 6fe0c57d fetch 1 ,mem_24g_rxdata_length 
-0270 203a028a branch p_recv_addr_zero_skip ,blank 
+027f 2040357f call g24_reconn_data_prep
+0280 20403651 call g24_transmit_receive_ack
+0281 242c3586 nbranch g24_reconn_device_fail,sync
+0282 2437b586 nbranch g24_reconn_device_fail,user3
+0283 2040366e call g24_ackpayload_parse
+0284 6fe0c57d fetch 1,mem_24g_rxdata_length	//ack payload length
+0285 203a02a8 branch p_recv_addr_zero_skip,blank
 
 p_g24_reconn_dispatch_next_2:
-0271 6fe245cc fetch 4 ,mem_24g_pair_addr 
-0272 684a458f fetcht 4 ,mem_24g_addr 
-0273 98467c00 isub temp ,null 
-0274 20228276 branch p_g24_reconn_mode_judge ,zero 
-0275 2020356e branch g24_reconn_dispatch_next + 9 
+0286 6fe245cc fetch 4,mem_24g_pair_addr
+0287 684a458f fetcht 4,mem_24g_addr
+0288 98467c00 isub temp,null
+0289 20228294 branch p_g24_reconn_mode_judge,zero
+028a 6fe24604 fetch 4,mem_24g_device_addr
+028b 684a458f fetcht 4,mem_24g_addr
+028c 98467c00 isub temp,null
+028d 2022828f branch p_g24_store_receiver_addr,zero
+028e 20203572 branch g24_reconn_dispatch_end
+
+p_g24_store_receiver_addr:
+028f 6fe2455f fetch 4,mem_24g_rxpayload+2
+0290 207a0000 rtn blank	//收到空地址跳出当前回连，原先会直接走回连结束流程。
+0291 67e245e8 store 4,mem_24g_receiver_addr
+0292 2040355a call g24_ch_syncword_crc8_init
+0293 20203572 branch g24_reconn_dispatch_end
 
 p_g24_reconn_mode_judge:
-0276 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-0277 c298604e bbit1 mouse_enable_auto_24g_paring ,mouse_24g_pair_mode_check 
-0278 20203549 branch g24_reconn_receiver_addr 
+0294 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+0295 c298604e bbit1 mouse_enable_auto_24g_paring,mouse_24g_pair_mode_check
+0296 20203549 branch g24_reconn_receiver_addr
 
 p_g24_reconn_device_fail:
-0279 6fe0c5e3 fetch 1 ,mem_24g_fast_conn_enable 
-027a 203a3222 branch g24_ch ,blank 
-027b 6fe145e0 fetch 2 ,mem_24g_reconn_count 
-027c 1fe0fe01 increase 1 ,pdata 
-027d 67e145e0 store 2 ,mem_24g_reconn_count 
-027e 2feffe09 isolate1 9 ,pdata 
-027f 6fe0c5e2 fetch 1 ,mem_24g_reconn_type 
-0280 c0028282 beq pair_and_receiver ,p_g24_reconn_pair_and_receiver 
-0281 2020358d branch g24_reconn_device_fail + 7 
+0297 6fe0c5e3 fetch 1,mem_24g_fast_conn_enable
+0298 203a3222 branch g24_ch,blank
+0299 6fe145e0 fetch 2,mem_24g_reconn_count
+029a 1fe0fe01 increase 1,pdata
+029b 67e145e0 store 2,mem_24g_reconn_count
+029c 2feffe09 isolate1 9,pdata
+029d 6fe0c5e2 fetch 1,mem_24g_reconn_type
+029e c00282a0 beq pair_and_receiver,p_g24_reconn_pair_and_receiver
+029f 2020358d branch g24_reconn_device_fail+7
 
 p_g24_reconn_pair_and_receiver:
-0282 2020b549 branch g24_reconn_receiver_addr ,true 
-0283 2020329c branch g24_pair_init_param 
+02a0 2020b549 branch g24_reconn_receiver_addr,true
+02a1 2020329c branch g24_pair_init_param
 
 p_mouse_param_init:
-0284 2040543b call mouse_param_common_init 
-0285 58004a1d setarg mem_le_tx_buffer0_omemalloc_new 
-0286 67e1433f store 2 ,mem_ble_l2cap_tx_buff0_ptr 
-0287 58000020 setarg mouse_ble_l2cap_txbuff_size_new 
-0288 67e14341 store 2 ,mem_ble_l2cap_tx_buff_size_ptr 
-0289 2020544c branch mouse_param_init + 2 
+02a2 2040543b call mouse_param_common_init
+02a3 58004a1d setarg mem_le_tx_buffer0_omemalloc_new
+02a4 67e1433f store 2,mem_ble_l2cap_tx_buff0_ptr
+02a5 58000020 setarg mouse_ble_l2cap_txbuff_size_new
+02a6 67e14341 store 2,mem_ble_l2cap_tx_buff_size_ptr
+02a7 2020544c branch mouse_param_init+2
 
 p_recv_addr_zero_skip:
-028a 6fe245e4 fetch 4 ,mem_24g_fast_conn_addr 
-028b 684a458f fetcht 4 ,mem_24g_addr 
-028c 98467c00 isub temp ,null 
-028d 20228271 branch p_g24_reconn_dispatch_next_2 ,zero 
-028e 6fe2455f fetch 4 ,mem_24g_rxpayload + 2 
-028f 207a0000 rtn blank 
-0290 20200271 branch p_g24_reconn_dispatch_next_2 
+02a8 6fe245e4 fetch 4,mem_24g_fast_conn_addr
+02a9 684a458f fetcht 4,mem_24g_addr
+02aa 98467c00 isub temp,null
+02ab 20228286 branch p_g24_reconn_dispatch_next_2,zero
+02ac 6fe2455f fetch 4,mem_24g_rxpayload+2
+02ad 207a0000 rtn blank
+02ae 20200286 branch p_g24_reconn_dispatch_next_2
 
 p_power_ctrl_start:
-0291 6fe0c437 fetch 1 ,mem_power_ctrl_disable 
-0292 247a0000 nrtn blank 
-0293 6fe144e9 fetch 2 ,mem_ui_state_map 
-0294 c3858000 rtnbit1 ui_state_ble_adv 
-0295 6a2145f0 fetchr rega ,2 ,mem_rssi_signal_buf_ptr 
-0296 204035b4 call rssi_average 
-0297 6048c624 storet 1 ,mem_rssi_avg_received 
-0298 6fe0c629 fetch 1 ,mem_rssi_dis_max_24g 
-0299 c513029b bmark1 mark_24g ,p_power_ctrl_start_next 
-029a 6fe0c62c fetch 1 ,mem_rssi_dis_max_ble 
+02af 6fe0c437 fetch 1,mem_power_ctrl_disable
+02b0 247a0000 nrtn blank
+02b1 6fe144e9 fetch 2,mem_ui_state_map
+02b2 c3858000 rtnbit1 ui_state_ble_adv
+02b3 6a2145f0 fetchr rega,2,mem_rssi_signal_buf_ptr
+02b4 204035b4 call rssi_average
+02b5 6048c624 storet 1,mem_rssi_avg_received
+02b6 6fe0c629 fetch 1,mem_rssi_dis_max_24g
+02b7 c51302b9 bmark1 mark_24g,p_power_ctrl_start_next
+02b8 6fe0c62c fetch 1,mem_rssi_dis_max_ble
 
 p_power_ctrl_start_next:
-029b 98467c00 isub temp ,null 
-029c 242102b5 nbranch p_power_ctrl_txpower_incrs_force ,positive 
-029d 6fe0c626 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
-029e 1fe67c02 sub pdata ,2 ,null 
-029f 242102a3 nbranch p_power_ctrl_txpower_decrs_check ,positive 
-02a0 6fe0c626 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
-02a1 c00002b6 beq 0 ,p_power_ctrl_txpower_incrs 
-02a2 20600000 rtn 
+02b9 98467c00 isub temp,null
+02ba 242102d3 nbranch p_power_ctrl_txpower_incrs_force,positive
+02bb 6fe0c626 fetch 1,mem_power_ctrl_pac_succ_cnt
+02bc 1fe67c02 sub pdata,2,null
+02bd 242102c1 nbranch p_power_ctrl_txpower_decrs_check,positive
+02be 6fe0c626 fetch 1,mem_power_ctrl_pac_succ_cnt
+02bf c00002d4 beq 0,p_power_ctrl_txpower_incrs
+02c0 20600000 rtn
 
 p_power_ctrl_txpower_decrs_check:
-02a3 6fe0c626 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
-02a4 6848c627 fetcht 1 ,mem_power_ctrl_pac_succ_cnt_init 
-02a5 98467c00 isub temp ,null 
-02a6 24628000 nrtn zero 
-02a7 70462600 jam 0 ,mem_power_ctrl_pac_succ_cnt 
+02c1 6fe0c626 fetch 1,mem_power_ctrl_pac_succ_cnt
+02c2 6848c627 fetcht 1,mem_power_ctrl_pac_succ_cnt_init
+02c3 98467c00 isub temp,null
+02c4 24628000 nrtn zero
+02c5 70462600 jam 0,mem_power_ctrl_pac_succ_cnt
 
 p_power_ctrl_txpower_decrs:
-02a8 6848c624 fetcht 1 ,mem_rssi_avg_received 
-02a9 6fe0c628 fetch 1 ,mem_rssi_dis_min_24g 
-02aa c51302ac bmark1 mark_24g ,p_power_ctrl_txpower_decrs_next 
-02ab 6fe0c62b fetch 1 ,mem_rssi_dis_min_ble 
+02c6 6848c624 fetcht 1,mem_rssi_avg_received
+02c7 6fe0c628 fetch 1,mem_rssi_dis_min_24g
+02c8 c51302ca bmark1 mark_24g,p_power_ctrl_txpower_decrs_next
+02c9 6fe0c62b fetch 1,mem_rssi_dis_min_ble
 
 p_power_ctrl_txpower_decrs_next:
-02ac 98467c00 isub temp ,null 
-02ad 24610000 nrtn positive 
-02ae 6fe0c625 fetch 1 ,mem_power_ctrl_level 
-02af c0003715 beq 0 ,power_ctrl_decrs_level0 
-02b0 1fe0ffff increase -1 ,pdata 
-02b1 67e0c625 store 1 ,mem_power_ctrl_level 
-02b2 c00102be beq 2 ,p_power_ctrl_decrs_level2 
-02b3 c000b70b beq 1 ,power_ctrl_decrs_level1 
-02b4 20203715 branch power_ctrl_decrs_level0 
+02ca 98467c00 isub temp,null
+02cb 24610000 nrtn positive
+02cc 6fe0c625 fetch 1,mem_power_ctrl_level
+02cd c0003715 beq 0,power_ctrl_decrs_level0
+02ce 1fe0ffff increase -1,pdata
+02cf 67e0c625 store 1,mem_power_ctrl_level
+02d0 c00102dc beq 2,p_power_ctrl_decrs_level2
+02d1 c000b70b beq 1,power_ctrl_decrs_level1	//0dbm
+02d2 20203715 branch power_ctrl_decrs_level0 //-5dbm
 
 p_power_ctrl_txpower_incrs_force:
-02b5 70462600 jam 0 ,mem_power_ctrl_pac_succ_cnt 
+02d3 70462600 jam 0,mem_power_ctrl_pac_succ_cnt
 
 p_power_ctrl_txpower_incrs:
-02b6 6fe0c625 fetch 1 ,mem_power_ctrl_level 
-02b7 c00182bc beq 3 ,p_power_ctrl_incrs_level3 
-02b8 1fe0fe01 increase 1 ,pdata 
-02b9 67e0c625 store 1 ,mem_power_ctrl_level 
-02ba c000b70b beq 1 ,power_ctrl_incrs_level1 
-02bb c00102be beq 2 ,p_power_ctrl_incrs_level2 
+02d4 6fe0c625 fetch 1,mem_power_ctrl_level
+02d5 c00182da beq 3,p_power_ctrl_incrs_level3
+02d6 1fe0fe01 increase 1,pdata
+02d7 67e0c625 store 1,mem_power_ctrl_level
+02d8 c000b70b beq 1,power_ctrl_incrs_level1	//0dbm
+02d9 c00102dc beq 2,p_power_ctrl_incrs_level2
 
 p_power_ctrl_incrs_level3:
-02bc 70414105 jam tx_power_5db ,mem_tx_power 
-02bd 20600000 rtn 
+02da 70414105 jam tx_power_5db,mem_tx_power
+02db 20600000 rtn
 
 p_power_ctrl_decrs_level2:
 
 p_power_ctrl_incrs_level2:
-02be 70414103 jam tx_power_3db ,mem_tx_power 
-02bf 20600000 rtn 
+02dc 70414103 jam tx_power_3db,mem_tx_power
+02dd 20600000 rtn
 
 p_mouse_cb_fuction:
-02c0 58006235 setarg mouse_24g_short_sleep 
-02c1 67e145f8 store 2 ,mem_cb_24g_transmit_short_sleep 
-02c2 5800622b setarg mouse_24g_long_sleep 
-02c3 67e145fa store 2 ,mem_cb_24g_transmit_long_sleep 
-02c4 202053f3 branch mouse_cb_fuction + 7 
+02de 58006235 setarg mouse_24g_short_sleep
+02df 67e145f8 store 2,mem_cb_24g_transmit_short_sleep
+02e0 5800622b setarg mouse_24g_long_sleep
+02e1 67e145fa store 2,mem_cb_24g_transmit_long_sleep
+02e2 202053f3 branch mouse_cb_fuction+7
 
 p_soft_reset:
-02c5 2435a002 nbranch soft_reset + 1 ,wake 
-02c6 37d98200 until null ,lpo_edge 
-02c7 37d98200 until null ,lpo_edge 
-02c8 20800000 clear_stack 
-02c9 205582cb call p_mouse_wheel_init_set ,wake 
-02ca 20202003 branch soft_reset + 2 
+02e3 2435a002 nbranch soft_reset+1,wake
+02e4 37d98200 until null,lpo_edge
+02e5 37d98200 until null,lpo_edge
+02e6 20800000 clear_stack
+02e7 70808073 jam 0x73,core_spid_ctrl
+02e8 205582ea call p_mouse_wheel_init_set,wake
+02e9 20202003 branch soft_reset+2
 
 p_mouse_wheel_init_set:
-02cb 20400231 call p_mouse_puchk_disable 
-02cc 204058df call mouse_matrix_public_gpio_reset 
-02cd 20206004 branch mouse_wheel_gpio_init 
+02ea 2040023e call p_mouse_puchk_disable
+02eb 204058df call mouse_matrix_public_gpio_reset
+02ec 20406004 call mouse_wheel_gpio_init
+02ed 2020561c branch mouse_wheel_check
 
 p_mouse_default_init:
-02ce 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-02cf 2feffe16 isolate1 mouse_enable_keyboard ,pdata 
-02d0 2040df08 call mouse_customer_key_enable ,true 
-02d1 2020542c branch mouse_default_parm_init 
+02ee 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+02ef 2feffe16 isolate1 mouse_enable_keyboard,pdata
+02f0 2040df08 call mouse_customer_key_enable,true
+02f1 2020542c branch mouse_default_parm_init
 
 p_mouse_load_device_info_check:
-02d2 20400484 call p_mouse_store_normal_tx_power 
-02d3 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-02d4 c289dd60 bbit1 mouse_enable_eeprom ,mouse_load_eeprom_info_check 
-02d5 c2895d6e bbit1 mouse_enable_flash ,mouse_load_flash_info_check 
-02d6 c28a02d8 bbit1 mouse_enable_otp ,p_mouse_load_otp_info_check 
-02d7 20600000 rtn 
+02f2 2040049f call p_mouse_store_normal_tx_power
+02f3 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+02f4 c28a02f6 bbit1 mouse_enable_otp,p_mouse_load_otp_info_check
+02f5 20600000 rtn
 
 p_mouse_load_otp_info_check:
-02d8 204002e3 call p_mouse_device_flag_temp_store 
-02d9 20405e43 call mouse_read_otp_dpi 
-02da 20405db4 call mouse_read_otp_device_flag 
-02db 204002f5 call p_mouse_device_flag_check 
-02dc 204002e0 call p_mouse_select_device_by_switch_check 
-02dd 204002e6 call p_mouse_read_otp_device_info 
-02de 204002fd call p_mouse_read_otp_le_addr_increase_count_info 
-02df 20205daa branch mouse_otp_load_app_initflag 
+02f6 20400301 call p_mouse_device_flag_temp_store
+02f7 20405e43 call mouse_read_otp_dpi
+02f8 20405db4 call mouse_read_otp_device_flag
+02f9 20400313 call p_mouse_device_flag_check		//reinit to load info
+02fa 204002fe call p_mouse_select_device_by_switch_check
+02fb 20400304 call p_mouse_read_otp_device_info
+02fc 2040031b call p_mouse_read_otp_le_addr_increase_count_info
+02fd 20205daa branch mouse_otp_load_app_initflag
 
 p_mouse_select_device_by_switch_check:
-02e0 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-02e1 c4150000 rtnbit0 mouse_enable_select_device_by_switch_gpio 
-02e2 204004df call p_mouse_check_select_device_by_switch 
+02fe 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+02ff c4150000 rtnbit0 mouse_enable_select_device_by_switch_gpio
+0300 204004fc call p_mouse_check_select_device_by_switch
 
 p_mouse_device_flag_temp_store:
-02e3 6fe0c666 fetch 1 ,mem_device_flag 
-02e4 67e0ca06 store 1 ,mem_mouse_device_flag_temp 
-02e5 20600000 rtn 
+0301 6fe0c666 fetch 1,mem_device_flag
+0302 67e0ca06 store 1,mem_mouse_device_flag_temp
+0303 20600000 rtn
 
 p_mouse_read_otp_device_info:
-02e6 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-02e7 2feffe3e isolate1 mouse_enable_24g_first_auto_pairing ,pdata 
-02e8 2040ddd1 call mouse_read_otp_le_device1 ,true 
-02e9 20205dcc branch mouse_read_otp_device_info 
+0304 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+0305 2feffe3e isolate1 mouse_enable_24g_first_auto_pairing,pdata
+0306 2040ddd1 call mouse_read_otp_le_device1,true
+0307 20205dcc branch mouse_read_otp_device_info
 
 p_mouse_app_initflag_check:
-02ea 6fe1468e fetch 2 ,mem_store_flag 
-02eb d840aa55 arg eeprom_init_flag ,temp 
-02ec 98467c00 isub temp ,null 
-02ed 20228369 branch p_mouse_load_device_info ,zero 
-02ee 6049468e storet 2 ,mem_store_flag 
-02ef 20405c9c call mouse_ble_init_address 
-02f0 20405c8c call mouse_load_default_dpi 
-02f1 58001122 setarg 0x1122 
-02f2 67e14695 store 2 ,mem_random_addr_increase_count 
+0308 6fe1468e fetch 2,mem_store_flag
+0309 d840aa55 arg eeprom_init_flag,temp
+030a 98467c00 isub temp,null
+030b 20228385 branch p_mouse_load_device_info,zero
+030c 6049468e storet 2,mem_store_flag
+030d 20405c9c call mouse_ble_init_address
+030e 20405c8c call mouse_load_default_dpi
+030f 58001122 setarg 0x1122
+0310 67e14695 store 2,mem_random_addr_increase_count
 
 p_mouse_device_flag_temp_load:
-02f3 6fe0ca06 fetch 1 ,mem_mouse_device_flag_temp 
-02f4 20205dca branch mouse_device_flag_load_end 
+0311 6fe0ca06 fetch 1,mem_mouse_device_flag_temp		//reinit device flag
+0312 20205dca branch mouse_device_flag_load_end
 
 p_mouse_device_flag_check:
-02f5 6fe0c666 fetch 1 ,mem_device_flag 
-02f6 1fe67c00 sub pdata ,0 ,null 
-02f7 202282f3 branch p_mouse_device_flag_temp_load ,zero 
-02f8 1fe67c04 sub pdata ,4 ,null 
-02f9 202282fb branch p_mouse_24g_init ,zero 
-02fa 20610000 rtn positive 
+0313 6fe0c666 fetch 1,mem_device_flag
+0314 1fe67c00 sub pdata,0,null
+0315 20228311 branch p_mouse_device_flag_temp_load,zero
+0316 1fe67c04 sub pdata,4,null
+0317 20228319 branch p_mouse_24g_init,zero
+0318 20610000 rtn positive
 
 p_mouse_24g_init:
-02fb 70466600 jam mode_24g_device ,mem_device_flag 
-02fc 20600000 rtn 
+0319 70466600 jam mode_24g_device,mem_device_flag
+031a 20600000 rtn
 
 p_mouse_read_otp_le_addr_increase_count_info:
-02fd 6fe0c666 fetch 1 ,mem_device_flag 
-02fe c1000000 rtneq mode_24g_device 
-02ff 6a4149fe fetchr regb ,2 ,mem_otp_offset_le_addr_increase_count 
-0300 1a422600 copy regb ,regc 
+031b 6fe0c666 fetch 1,mem_device_flag
+031c c1000000 rtneq mode_24g_device
+031d 6a4149fe fetchr regb,2,mem_otp_offset_le_addr_increase_count
+031e 1a422600 copy regb,regc
 
 p_mouse_read_otp_le_addr_increase_count_loop:
-0301 20405e3d call mouse_read_otp_le_addr_increase_count_common 
-0302 6fe149e0 fetch 2 ,mem_random_addr_increase_count_temp 
-0303 203a030b branch p_mouse_le_addr_increase_count_load ,blank 
-0304 67e149de store 2 ,mem_random_addr_increase_count_last 
-0305 1a60a602 increase 2 ,regc 
-0306 6fe14a00 fetch 2 ,mem_otp_offset_le_addr_increase_count_end 
-0307 9a667c00 isub regc ,null 
-0308 2421030b nbranch p_mouse_le_addr_increase_count_load ,positive 
-0309 1a622400 copy regc ,regb 
-030a 20200301 branch p_mouse_read_otp_le_addr_increase_count_loop 
+031f 20405e3d call mouse_read_otp_le_addr_increase_count_common
+0320 6fe149e0 fetch 2,mem_random_addr_increase_count_temp
+0321 203a0329 branch p_mouse_le_addr_increase_count_load,blank
+0322 67e149de store 2,mem_random_addr_increase_count_last
+0323 1a60a602 increase 2,regc
+0324 6fe14a00 fetch 2,mem_otp_offset_le_addr_increase_count_end
+0325 9a667c00 isub regc,null
+0326 24210329 nbranch p_mouse_le_addr_increase_count_load,positive	//if read end,retention last value
+0327 1a622400 copy regc,regb
+0328 2020031f branch p_mouse_read_otp_le_addr_increase_count_loop
 
 p_mouse_le_addr_increase_count_load:
-030b 6fe149de fetch 2 ,mem_random_addr_increase_count_last 
-030c 20205e41 branch mouse_le_addr_increase_store 
+0329 6fe149de fetch 2,mem_random_addr_increase_count_last
+032a 20205e41 branch mouse_le_addr_increase_store
 
 p_mouse_store_device_info:
-030d 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-030e c289dcb1 bbit1 mouse_enable_eeprom ,mouse_store_eeprom_device_info 
-030f c2895cb9 bbit1 mouse_enable_flash ,mouse_store_flash_device_info 
-0310 c28a0312 bbit1 mouse_enable_otp ,p_mouse_store_otp_device_info 
-0311 20600000 rtn 
+032b 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+032c c28a032e bbit1 mouse_enable_otp,p_mouse_store_otp_device_info
+032d 20600000 rtn
 
 p_mouse_store_otp_device_info:
-0312 20400315 call p_mouse_write_otp_locall_addr 
-0313 2040031a call p_mouse_write_otp_device_flag 
-0314 20205cc1 branch mouse_store_otp_device_info + 1 
+032e 20400331 call p_mouse_write_otp_locall_addr
+032f 20400336 call p_mouse_write_otp_device_flag
+0330 20205cc1 branch mouse_store_otp_device_info+1
 
 p_mouse_write_otp_locall_addr:
-0315 6fe0c666 fetch 1 ,mem_device_flag 
-0316 c1000000 rtneq mode_24g_device 
-0317 c0008341 beq mode_bt_device1 ,p_mouse_write_otp_le_locall_addr1 
-0318 c0010355 beq mode_bt_device2 ,p_mouse_write_otp_le_locall_addr2 
-0319 20600000 rtn 
+0331 6fe0c666 fetch 1,mem_device_flag
+0332 c1000000 rtneq mode_24g_device
+0333 c000835d beq mode_bt_device1,p_mouse_write_otp_le_locall_addr1
+0334 c0010371 beq mode_bt_device2,p_mouse_write_otp_le_locall_addr2
+0335 20600000 rtn
 
 p_mouse_write_otp_device_flag:
-031a 6a4149e2 fetchr regb ,2 ,mem_otp_offset_device_flag 
-031b 1a422600 copy regb ,regc 
+0336 6a4149e2 fetchr regb,2,mem_otp_offset_device_flag
+0337 1a422600 copy regb,regc
 
 p_mouse_write_otp_device_flag_loop:
-031c 20405dc0 call mouse_read_otp_device_flag_common 
-031d 6fe0c9a1 fetch 1 ,mem_device_flag_temp 
-031e 203a0326 branch p_mouse_device_flag_store ,blank 
-031f 67e0c9a0 store 1 ,mem_device_flag_last 
-0320 1a60a601 increase 1 ,regc 
-0321 6fe149e4 fetch 2 ,mem_otp_offset_device_flag_end 
-0322 9a667c00 isub regc ,null 
-0323 24610000 nrtn positive 
-0324 1a622400 copy regc ,regb 
-0325 2020031c branch p_mouse_write_otp_device_flag_loop 
+0338 20405dc0 call mouse_read_otp_device_flag_common
+0339 6fe0c9a1 fetch 1,mem_device_flag_temp
+033a 203a0342 branch p_mouse_device_flag_store,blank
+033b 67e0c9a0 store 1,mem_device_flag_last
+033c 1a60a601 increase 1,regc
+033d 6fe149e4 fetch 2,mem_otp_offset_device_flag_end
+033e 9a667c00 isub regc,null
+033f 24610000 nrtn positive
+0340 1a622400 copy regc,regb
+0341 20200338 branch p_mouse_write_otp_device_flag_loop
 
 p_mouse_device_flag_store:
-0326 6fe0c9a0 fetch 1 ,mem_device_flag_last 
-0327 1fe17ef0 and pdata ,0xf0 ,pdata 
-0328 203a0330 branch p_mouse_device_flag_store_check ,blank 
-0329 6fe0c666 fetch 1 ,mem_device_flag 
-032a 2040033e call p_mouse_device_flag_otp_store_judge 
-032b 67e0c9a2 store 1 ,mem_device_flag_value 
+0342 6fe0c9a0 fetch 1,mem_device_flag_last
+0343 1fe17ef0 and pdata,0xf0,pdata
+0344 203a034c branch p_mouse_device_flag_store_check,blank
+0345 6fe0c666 fetch 1,mem_device_flag
+0346 2040035a call p_mouse_device_flag_otp_store_judge			// add device_flag check
+0347 67e0c9a2 store 1,mem_device_flag_value
 
 p_mouse_device_flag_store_end:
-032c df200001 arg 1 ,loopcnt 
-032d 1a622400 copy regc ,regb 
-032e da2049a2 arg mem_device_flag_value ,rega 
-032f 20206b45 branch otp_write 
+0348 df200001 arg 1,loopcnt
+0349 1a622400 copy regc,regb
+034a da2049a2 arg mem_device_flag_value,rega
+034b 20206b45 branch otp_write
 
 p_mouse_device_flag_store_check:
-0330 6848c9a0 fetcht 1 ,mem_device_flag_last 
-0331 6fe0c666 fetch 1 ,mem_device_flag 
-0332 2040033e call p_mouse_device_flag_otp_store_judge 
-0333 98467c00 isub temp ,null 
-0334 20628000 rtn zero 
-0335 1ff27e00 lshift4 pdata ,pdata 
-0336 9840fe00 iadd temp ,pdata 
-0337 67e0c9a2 store 1 ,mem_device_flag_value 
-0338 1a627e00 copy regc ,pdata 
-0339 684949e2 fetcht 2 ,mem_otp_offset_device_flag 
-033a 98467c00 isub temp ,null 
-033b 2022832c branch p_mouse_device_flag_store_end ,zero 
-033c 1a60a7ff increase -1 ,regc 
-033d 2020032c branch p_mouse_device_flag_store_end 
+034c 6848c9a0 fetcht 1,mem_device_flag_last
+034d 6fe0c666 fetch 1,mem_device_flag
+034e 2040035a call p_mouse_device_flag_otp_store_judge
+034f 98467c00 isub temp,null
+0350 20628000 rtn zero
+0351 1ff27e00 lshift4 pdata,pdata
+0352 9840fe00 iadd temp,pdata
+0353 67e0c9a2 store 1,mem_device_flag_value
+0354 1a627e00 copy regc,pdata
+0355 684949e2 fetcht 2,mem_otp_offset_device_flag
+0356 98467c00 isub temp,null
+0357 20228348 branch p_mouse_device_flag_store_end,zero
+0358 1a60a7ff increase -1,regc
+0359 20200348 branch p_mouse_device_flag_store_end
 
 p_mouse_device_flag_otp_store_judge:
-033e c1800000 rtnne mode_24g_device 
-033f 1fe0fe04 increase 4 ,pdata 
-0340 20600000 rtn 
+035a c1800000 rtnne mode_24g_device
+035b 1fe0fe04 increase 4,pdata
+035c 20600000 rtn
 
 p_mouse_write_otp_le_locall_addr1:
-0341 6a4149ee fetchr regb ,2 ,mem_otp_offset_le_locall_addr1 
-0342 1a422600 copy regb ,regc 
+035d 6a4149ee fetchr regb,2,mem_otp_offset_le_locall_addr1
+035e 1a422600 copy regb,regc
 
 p_mouse_write_otp_le_locall_addr1_loop:
-0343 20405df3 call mouse_read_otp_le_locall_addr1_common 
-0344 6fe349b5 fetch 6 ,mem_mouse_le_locall_addr1_temp 
-0345 203a034d branch p_mouse_le_local_addr1_store ,blank 
-0346 67e349af store 6 ,mem_mouse_le_locall_addr1_last 
-0347 1a60a606 increase 6 ,regc 
-0348 6fe149f0 fetch 2 ,mem_otp_offset_le_locall_addr1_end 
-0349 9a667c00 isub regc ,null 
-034a 24610000 nrtn positive 
-034b 1a622400 copy regc ,regb 
-034c 20200343 branch p_mouse_write_otp_le_locall_addr1_loop 
+035f 20405df3 call mouse_read_otp_le_locall_addr1_common
+0360 6fe349b5 fetch 6,mem_mouse_le_locall_addr1_temp
+0361 203a0369 branch p_mouse_le_local_addr1_store,blank
+0362 67e349af store 6,mem_mouse_le_locall_addr1_last
+0363 1a60a606 increase 6,regc
+0364 6fe149f0 fetch 2,mem_otp_offset_le_locall_addr1_end
+0365 9a667c00 isub regc,null
+0366 24610000 nrtn positive	//if read end,retention last value
+0367 1a622400 copy regc,regb
+0368 2020035f branch p_mouse_write_otp_le_locall_addr1_loop
 
 p_mouse_le_local_addr1_store:
-034d 6fe349af fetch 6 ,mem_mouse_le_locall_addr1_last 
-034e 684b466e fetcht 6 ,mem_device1_locall_addr 
-034f 98467c00 isub temp ,null 
-0350 20628000 rtn zero 
-0351 df200006 arg 6 ,loopcnt 
-0352 da20466e arg mem_device1_locall_addr ,rega 
-0353 1a622400 copy regc ,regb 
-0354 20206b45 branch otp_write 
+0369 6fe349af fetch 6,mem_mouse_le_locall_addr1_last
+036a 684b466e fetcht 6,mem_device1_locall_addr
+036b 98467c00 isub temp,null
+036c 20628000 rtn zero
+036d df200006 arg 6,loopcnt
+036e da20466e arg mem_device1_locall_addr,rega
+036f 1a622400 copy regc,regb
+0370 20206b45 branch otp_write
 
 p_mouse_write_otp_le_locall_addr2:
-0355 6a4149f6 fetchr regb ,2 ,mem_otp_offset_le_locall_addr2 
-0356 1a422600 copy regb ,regc 
+0371 6a4149f6 fetchr regb,2,mem_otp_offset_le_locall_addr2
+0372 1a422600 copy regb,regc
 
 p_mouse_write_otp_le_locall_addr2_loop:
-0357 20405e17 call mouse_read_otp_le_locall_addr2_common 
-0358 6fe349cd fetch 6 ,mem_mouse_le_locall_addr2_temp 
-0359 203a0361 branch p_mouse_le_local_addr2_store ,blank 
-035a 67e349c7 store 6 ,mem_mouse_le_locall_addr2_last 
-035b 1a60a606 increase 6 ,regc 
-035c 6fe149f8 fetch 2 ,mem_otp_offset_le_locall_addr2_end 
-035d 9a667c00 isub regc ,null 
-035e 24610000 nrtn positive 
-035f 1a622400 copy regc ,regb 
-0360 20200357 branch p_mouse_write_otp_le_locall_addr2_loop 
+0373 20405e17 call mouse_read_otp_le_locall_addr2_common
+0374 6fe349cd fetch 6,mem_mouse_le_locall_addr2_temp
+0375 203a037d branch p_mouse_le_local_addr2_store,blank
+0376 67e349c7 store 6,mem_mouse_le_locall_addr2_last
+0377 1a60a606 increase 6,regc
+0378 6fe149f8 fetch 2,mem_otp_offset_le_locall_addr2_end
+0379 9a667c00 isub regc,null
+037a 24610000 nrtn positive	//if read end,retention last value
+037b 1a622400 copy regc,regb
+037c 20200373 branch p_mouse_write_otp_le_locall_addr2_loop
 
 p_mouse_le_local_addr2_store:
-0361 6fe349c7 fetch 6 ,mem_mouse_le_locall_addr2_last 
-0362 684b467b fetcht 6 ,mem_device2_locall_addr 
-0363 98467c00 isub temp ,null 
-0364 20628000 rtn zero 
-0365 df200006 arg 6 ,loopcnt 
-0366 da20467b arg mem_device2_locall_addr ,rega 
-0367 1a622400 copy regc ,regb 
-0368 20206b45 branch otp_write 
+037d 6fe349c7 fetch 6,mem_mouse_le_locall_addr2_last
+037e 684b467b fetcht 6,mem_device2_locall_addr
+037f 98467c00 isub temp,null
+0380 20628000 rtn zero
+0381 df200006 arg 6,loopcnt
+0382 da20467b arg mem_device2_locall_addr,rega
+0383 1a622400 copy regc,regb
+0384 20206b45 branch otp_write
 
 p_mouse_load_device_info:
-0369 204003a0 call p_mouse_le_locall_addr_init_check 
-036a 204003b8 call p_mouse_select_reconn_device 
-036b 2040036d call p_mouse_otp_load_dpi 
-036c 20205c90 branch mouse_load_device_info + 1 
+0385 204003bb call p_mouse_le_locall_addr_init_check
+0386 204003d3 call p_mouse_select_reconn_device
+0387 20400389 call p_mouse_otp_load_dpi
+0388 20205c90 branch mouse_load_device_info+1
 
 p_mouse_otp_load_dpi:
-036d 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-036e c4078000 rtnbit0 mouse_enable_load_and_store_dpi 
-036f 6fe0c690 fetch 1 ,mem_mouse_dpi 
-0370 c0005c94 beq 0 ,mouse_otp_load_dpi 
-0371 c0035742 beq 6 ,mouse_dpi_reinit_set 
-0372 20600000 rtn 
+0389 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+038a c4078000 rtnbit0 mouse_enable_load_and_store_dpi
+038b 6fe0c690 fetch 1,mem_mouse_dpi
+038c c0005c94 beq 0,mouse_otp_load_dpi
+038d c0035742 beq 6,mouse_dpi_reinit_set
+038e 20600000 rtn
 
 p_mouse_store_dpi_info_check:
-0373 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-0374 c289dcb5 bbit1 mouse_enable_eeprom ,mouse_store_eerpom_dpi 
-0375 c28a0377 bbit1 mouse_enable_otp ,p_mouse_store_otp_dpi 
-0376 20600000 rtn 
+038f 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+0390 c28a0392 bbit1 mouse_enable_otp,p_mouse_store_otp_dpi
+0391 20600000 rtn
 
 p_mouse_store_otp_dpi:
-0377 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-0378 c4078000 rtnbit0 mouse_enable_load_and_store_dpi 
-0379 6a4149fa fetchr regb ,2 ,mem_otp_offset_dpi 
-037a 1a422600 copy regb ,regc 
+0392 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+0393 c4078000 rtnbit0 mouse_enable_load_and_store_dpi
+0394 6a4149fa fetchr regb,2,mem_otp_offset_dpi
+0395 1a422600 copy regb,regc
 
 p_mouse_otp_store_dpi_loop:
-037b 20405e51 call mouse_read_otp_dpi_common 
-037c 6fe0c9d4 fetch 1 ,mem_mouse_dpi_temp 
-037d 203a0385 branch p_mouse_otp_dpi_store ,blank 
-037e 67e0c9d3 store 1 ,mem_mouse_dpi_last 
-037f 1a60a601 increase 1 ,regc 
-0380 6fe149fc fetch 2 ,mem_otp_offset_dpi_end 
-0381 9a667c00 isub regc ,null 
-0382 24610000 nrtn positive 
-0383 1a622400 copy regc ,regb 
-0384 2020037b branch p_mouse_otp_store_dpi_loop 
+0396 20405e51 call mouse_read_otp_dpi_common
+0397 6fe0c9d4 fetch 1,mem_mouse_dpi_temp
+0398 203a03a0 branch p_mouse_otp_dpi_store,blank
+0399 67e0c9d3 store 1,mem_mouse_dpi_last
+039a 1a60a601 increase 1,regc
+039b 6fe149fc fetch 2,mem_otp_offset_dpi_end
+039c 9a667c00 isub regc,null
+039d 24610000 nrtn positive
+039e 1a622400 copy regc,regb
+039f 20200396 branch p_mouse_otp_store_dpi_loop
 
 p_mouse_otp_dpi_store:
-0385 6fe0c9d3 fetch 1 ,mem_mouse_dpi_last 
-0386 1fe17ef0 and pdata ,0xf0 ,pdata 
-0387 203a038f branch p_mouse_dpi_store_last_check ,blank 
-0388 6fe0c690 fetch 1 ,mem_mouse_dpi 
-0389 2040039d call p_mouse_dpi_otp_store_judge 
-038a 67e0c9d5 store 1 ,mem_mouse_otp_dpi_value 
+03a0 6fe0c9d3 fetch 1,mem_mouse_dpi_last
+03a1 1fe17ef0 and pdata,0xf0,pdata
+03a2 203a03aa branch p_mouse_dpi_store_last_check,blank
+03a3 6fe0c690 fetch 1,mem_mouse_dpi
+03a4 204003b8 call p_mouse_dpi_otp_store_judge		//add dpi check
+03a5 67e0c9d5 store 1,mem_mouse_otp_dpi_value
 
 p_mouse_dpi_store_end:
-038b df200001 arg 1 ,loopcnt 
-038c 1a622400 copy regc ,regb 
-038d da2049d5 arg mem_mouse_otp_dpi_value ,rega 
-038e 20206b45 branch otp_write 
+03a6 df200001 arg 1,loopcnt
+03a7 1a622400 copy regc,regb
+03a8 da2049d5 arg mem_mouse_otp_dpi_value,rega
+03a9 20206b45 branch otp_write
 
 p_mouse_dpi_store_last_check:
-038f 6848c9d3 fetcht 1 ,mem_mouse_dpi_last 
-0390 6fe0c690 fetch 1 ,mem_mouse_dpi 
-0391 2040039d call p_mouse_dpi_otp_store_judge 
-0392 98467c00 isub temp ,null 
-0393 20628000 rtn zero 
-0394 1ff27e00 lshift4 pdata ,pdata 
-0395 9840fe00 iadd temp ,pdata 
-0396 67e0c9d5 store 1 ,mem_mouse_otp_dpi_value 
-0397 1a627e00 copy regc ,pdata 
-0398 684949fa fetcht 2 ,mem_otp_offset_dpi 
-0399 98467c00 isub temp ,null 
-039a 2022838b branch p_mouse_dpi_store_end ,zero 
-039b 1a60a7ff increase -1 ,regc 
-039c 2020038b branch p_mouse_dpi_store_end 
+03aa 6848c9d3 fetcht 1,mem_mouse_dpi_last
+03ab 6fe0c690 fetch 1,mem_mouse_dpi
+03ac 204003b8 call p_mouse_dpi_otp_store_judge
+03ad 98467c00 isub temp,null
+03ae 20628000 rtn zero
+03af 1ff27e00 lshift4 pdata,pdata
+03b0 9840fe00 iadd temp,pdata
+03b1 67e0c9d5 store 1,mem_mouse_otp_dpi_value
+03b2 1a627e00 copy regc,pdata
+03b3 684949fa fetcht 2,mem_otp_offset_dpi
+03b4 98467c00 isub temp,null
+03b5 202283a6 branch p_mouse_dpi_store_end,zero
+03b6 1a60a7ff increase -1,regc
+03b7 202003a6 branch p_mouse_dpi_store_end
 
 p_mouse_dpi_otp_store_judge:
-039d c1800000 rtnne mouse_dpi_level1 
-039e 1fe0fe06 increase 6 ,pdata 
-039f 20600000 rtn 
+03b8 c1800000 rtnne mouse_dpi_level1
+03b9 1fe0fe06 increase 6,pdata
+03ba 20600000 rtn
 
 p_mouse_le_locall_addr_init_check:
-03a0 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-03a1 c29f03a7 bbit1 mouse_enable_24g_first_auto_pairing ,p_mouse_le_addr1_init_check 
-03a2 6fe0c666 fetch 1 ,mem_device_flag 
-03a3 c1000000 rtneq mode_24g_device 
-03a4 c00083a7 beq mode_bt_device1 ,p_mouse_le_addr1_init_check 
-03a5 c00103ae beq mode_bt_device2 ,p_mouse_le_addr2_init_check 
-03a6 20600000 rtn 
+03bb 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+03bc c29f03c2 bbit1 mouse_enable_24g_first_auto_pairing,p_mouse_le_addr1_init_check
+03bd 6fe0c666 fetch 1,mem_device_flag
+03be c1000000 rtneq mode_24g_device
+03bf c00083c2 beq mode_bt_device1,p_mouse_le_addr1_init_check
+03c0 c00103c9 beq mode_bt_device2,p_mouse_le_addr2_init_check
+03c1 20600000 rtn
 
 p_mouse_le_addr1_init_check:
-03a7 6fe3466e fetch 6 ,mem_device1_locall_addr 
-03a8 684b46e6 fetcht 6 ,mem_mouse_compare_addr 
-03a9 98467c00 isub temp ,null 
-03aa 24628000 nrtn zero 
-03ab 6fe342db fetch 6 ,mem_le_lap 
-03ac 67e3466e store 6 ,mem_device1_locall_addr 
-03ad 20600000 rtn 
+03c2 6fe3466e fetch 6,mem_device1_locall_addr
+03c3 684b46e6 fetcht 6,mem_mouse_compare_addr
+03c4 98467c00 isub temp,null
+03c5 24628000 nrtn zero
+03c6 6fe342db fetch 6,mem_le_lap
+03c7 67e3466e store 6,mem_device1_locall_addr
+03c8 20600000 rtn
 
 p_mouse_le_addr2_init_check:
-03ae 6fe3467b fetch 6 ,mem_device2_locall_addr 
-03af 684b46e6 fetcht 6 ,mem_mouse_compare_addr 
-03b0 98467c00 isub temp ,null 
-03b1 24628000 nrtn zero 
-03b2 6fe342db fetch 6 ,mem_le_lap 
-03b3 1fe0ff00 add pdata ,0x0100 ,pdata 
-03b4 67e3467b store 6 ,mem_device2_locall_addr 
-03b5 20600000 rtn 
+03c9 6fe3467b fetch 6,mem_device2_locall_addr
+03ca 684b46e6 fetcht 6,mem_mouse_compare_addr
+03cb 98467c00 isub temp,null
+03cc 24628000 nrtn zero
+03cd 6fe342db fetch 6,mem_le_lap
+03ce 1fe0ff00 add pdata,0x0100,pdata
+03cf 67e3467b store 6,mem_device2_locall_addr
+03d0 20600000 rtn
 
 p_mouse_buletooth_fast_conn_end:
-03b6 204003b8 call p_mouse_select_reconn_device 
-03b7 20205a9c branch mouse_buletooth_fast_conn_end + 2 
+03d1 204003d3 call p_mouse_select_reconn_device
+03d2 20205a9c branch mouse_buletooth_fast_conn_end+2
 
 p_mouse_select_reconn_device:
-03b8 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-03b9 c30a5c6f bbit0 mouse_enable_otp ,mouse_select_reconn_device 
-03ba c29f03c0 bbit1 mouse_enable_24g_first_auto_pairing ,p_mouse_load_le_device1 
+03d3 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+03d4 c30a5c6f bbit0 mouse_enable_otp,mouse_select_reconn_device			//linkkey 16 byte delete,need add
+03d5 c29f03db bbit1 mouse_enable_24g_first_auto_pairing,p_mouse_load_le_device1
 
 p_mouse_select_reconn_device_start:
-03bb 6fe0c666 fetch 1 ,mem_device_flag 
-03bc c1000000 rtneq mode_24g_device 
-03bd c00083c0 beq mode_bt_device1 ,p_mouse_load_le_device1 
-03be c00103c5 beq mode_bt_device2 ,p_mouse_load_le_device2 
-03bf 20600000 rtn 
+03d6 6fe0c666 fetch 1,mem_device_flag
+03d7 c1000000 rtneq mode_24g_device
+03d8 c00083db beq mode_bt_device1,p_mouse_load_le_device1
+03d9 c00103e0 beq mode_bt_device2,p_mouse_load_le_device2
+03da 20600000 rtn
 
 p_mouse_load_le_device1:
-03c0 6fe34668 fetch 6 ,mem_device1_addr 
-03c1 67e34116 store 6 ,mem_hci_plap 
-03c2 6fe3466e fetch 6 ,mem_device1_locall_addr 
+03db 6fe34668 fetch 6,mem_device1_addr
+03dc 67e34116 store 6,mem_hci_plap
+03dd 6fe3466e fetch 6,mem_device1_locall_addr
 
 p_mouse_le_lap_store:
-03c3 67e342db store 6 ,mem_le_lap 
-03c4 20600000 rtn 
+03de 67e342db store 6,mem_le_lap
+03df 20600000 rtn
 
 p_mouse_load_le_device2:
-03c5 6fe34675 fetch 6 ,mem_device2_addr 
-03c6 67e34116 store 6 ,mem_hci_plap 
-03c7 6fe3467b fetch 6 ,mem_device2_locall_addr 
-03c8 202003c3 branch p_mouse_le_lap_store 
+03e0 6fe34675 fetch 6,mem_device2_addr
+03e1 67e34116 store 6,mem_hci_plap
+03e2 6fe3467b fetch 6,mem_device2_locall_addr
+03e3 202003de branch p_mouse_le_lap_store
 
 p_mouse_store_remote_bdaddr:
-03c9 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-03ca c4010000 rtnbit0 mouse_store_eeprom_flag 
-03cb c30a5c43 bbit0 mouse_enable_otp ,mouse_store_remote_bdaddr + 1 
-03cc d8e00002 arg mouse_store_eeprom_flag ,queue 
-03cd 20405f04 call mouse_disable_function_flag 
-03ce 20405c4a call mouse_check_device_addr 
-03cf 204003d1 call p_mouse_before_store_reconn_info 
-03d0 20205ca3 branch mouse_store_device_info_delay 
+03e4 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+03e5 c4010000 rtnbit0 mouse_store_eeprom_flag
+03e6 c30a5c43 bbit0 mouse_enable_otp,mouse_store_remote_bdaddr+1
+03e7 d8e00002 arg mouse_store_eeprom_flag,queue
+03e8 20405f04 call mouse_disable_function_flag
+03e9 20405c4a call mouse_check_device_addr
+03ea 204003ec call p_mouse_before_store_reconn_info
+03eb 20205ca3 branch mouse_store_device_info_delay
 
 p_mouse_before_store_reconn_info:
-03d1 6fe0c666 fetch 1 ,mem_device_flag 
-03d2 c00083d5 beq mode_bt_device1 ,p_mouse_store_le_device1 
-03d3 c00103da beq mode_bt_device2 ,p_mouse_store_le_device2 
-03d4 20600000 rtn 
+03ec 6fe0c666 fetch 1,mem_device_flag
+03ed c00083f0 beq mode_bt_device1,p_mouse_store_le_device1
+03ee c00103f5 beq mode_bt_device2,p_mouse_store_le_device2
+03ef 20600000 rtn
 
 p_mouse_store_le_device1:
-03d5 6fe30178 fetch 6 ,mem_le_plap 
-03d6 67e34668 store 6 ,mem_device1_addr 
-03d7 6fe342db fetch 6 ,mem_le_lap 
-03d8 67e3466e store 6 ,mem_device1_locall_addr 
-03d9 20600000 rtn 
+03f0 6fe30178 fetch 6,mem_le_plap
+03f1 67e34668 store 6,mem_device1_addr
+03f2 6fe342db fetch 6,mem_le_lap
+03f3 67e3466e store 6,mem_device1_locall_addr
+03f4 20600000 rtn
 
 p_mouse_store_le_device2:
-03da 6fe30178 fetch 6 ,mem_le_plap 
-03db 67e34675 store 6 ,mem_device2_addr 
-03dc 6fe342db fetch 6 ,mem_le_lap 
-03dd 67e3467b store 6 ,mem_device2_locall_addr 
-03de 20600000 rtn 
+03f5 6fe30178 fetch 6,mem_le_plap
+03f6 67e34675 store 6,mem_device2_addr
+03f7 6fe342db fetch 6,mem_le_lap
+03f8 67e3467b store 6,mem_device2_locall_addr
+03f9 20600000 rtn
 
 p_mouse_bb_event_timer:
-03df 204003f5 call p_mouse_le_send_conn_param_update_timer 
-03e0 2040614d call mouse_low_voltage_led_timer 
-03e1 2040553d call mouse_adc_read 
-03e2 20406110 call mouse_logo_led_on_timer 
-03e3 204061b1 call mouse_led_multi_timer 
-03e4 2040611e call mouse_dpi_led_blink_delay_timer 
-03e5 2040328e call g24_pair_timeout_timer 
-03e6 20403531 call g24_reconn_timeout_timer 
-03e7 20405fdd call mouse_24g_long_sleep_param_update_timer 
-03e8 2040572c call mouse_dpi_key_check_long_press 
-03e9 20405b9b call mouse_bt_discovery_check 
-03ea 20405bab call mouse_commbination_key_process 
-03eb 20405bce call mouse_check_discovery_timeout_timer 
-03ec 20405bd3 call mouse_check_direct_timeout_timer 
-03ed 20405be1 call mouse_le_enable_att_list_timer 
-03ee 20405bee call mouse_le_battery_updata_timer 
-03ef 20405be4 call mouse_le_send_smp_security_request_timer 
-03f0 20405bfb call mouse_check_reconnect_delay_long_sleep 
-03f1 204003f8 call p_mouse_current_mult_update_timer 
-03f2 204056b6 call mouse_wheel_trigger_timer 
-03f3 20405c0e call mouse_store_information_delay_timer 
-03f4 20205c05 branch mouse_check_no_data_timeout_timer 
+03fa 20400410 call p_mouse_le_send_conn_param_update_timer
+03fb 2040614d call mouse_low_voltage_led_timer
+03fc 2040553d call mouse_adc_read
+03fd 20406110 call mouse_logo_led_on_timer
+03fe 204061b1 call mouse_led_multi_timer
+03ff 2040611e call mouse_dpi_led_blink_delay_timer
+0400 2040328e call g24_pair_timeout_timer
+0401 20403531 call g24_reconn_timeout_timer
+0402 20405fdd call mouse_24g_long_sleep_param_update_timer
+0403 2040572c call mouse_dpi_key_check_long_press
+0404 20405b9b call mouse_bt_discovery_check
+0405 20405bab call mouse_commbination_key_process
+0406 20405bce call mouse_check_discovery_timeout_timer
+0407 20405bd3 call mouse_check_direct_timeout_timer
+0408 20405be1 call mouse_le_enable_att_list_timer
+0409 20405bee call mouse_le_battery_updata_timer
+040a 20405be4 call mouse_le_send_smp_security_request_timer
+040b 20405bfb call mouse_check_reconnect_delay_long_sleep		//delete 3.0,reconnect fail
+040c 20400413 call p_mouse_current_mult_update_timer
+040d 204056b6 call mouse_wheel_trigger_timer
+040e 20405c0e call mouse_store_information_delay_timer
+040f 20205c05 branch mouse_check_no_data_timeout_timer
 
 p_mouse_le_send_conn_param_update_timer:
-03f5 da604a05 arg mem_mouse_le_send_conn_param_update_timer ,regc 
-03f6 da405aef arg mouse_updata_le_param ,regb 
-03f7 202042e0 branch timer_single_step 
+0410 da604a05 arg mem_mouse_le_send_conn_param_update_timer,regc
+0411 da405aef arg mouse_updata_le_param,regb
+0412 202042e0 branch timer_single_step
 
 p_mouse_current_mult_update_timer:
-03f8 da60477e arg mem_mouse_current_mult_timer ,regc 
-03f9 da4003fb arg p_mouse_current_mult_reinit ,regb 
-03fa 202042e0 branch timer_single_step 
+0413 da60477e arg mem_mouse_current_mult_timer,regc
+0414 da400416 arg p_mouse_current_mult_reinit,regb
+0415 202042e0 branch timer_single_step
 
 p_mouse_current_mult_reinit:
-03fb 6fe0c96b fetch 1 ,mem_lpm_mult_init 
-03fc 67e0c0c0 store 1 ,mem_lpm_mult 
-03fd 70477d03 jam 3 ,mem_mouse_long_mult_flag 
-03fe 20600000 rtn 
+0416 6fe0c96b fetch 1,mem_lpm_mult_init
+0417 67e0c0c0 store 1,mem_lpm_mult
+0418 70477d03 jam 3,mem_mouse_long_mult_flag
+0419 20600000 rtn
 
 p_mouse_start_discovery:
-03ff 204059ed call mouse_sensor_powerdown 
-0400 20205c1b branch mouse_start_discovery + 1 
+041a 204059ed call mouse_sensor_powerdown
+041b 20205c1b branch mouse_start_discovery+1
 
 p_mouse_priority_bb_event:
-0401 1a627e00 copy regc ,pdata 
-0402 c0200416 beq bt_evt_le_parse_conn_papa_update_rsp ,p_mouse_le_conn_param_update_rsp_recieved 
-0403 c00a841b beq bt_evt_le_disconnected ,p_mouse_le_bb_disconnected 
-0404 c019040d beq bt_evt_le_start_enc ,p_mouse_le_ll_start_encryt 
-0405 c01e0438 beq bt_evt_24g_attempt_success ,p_mouse_24g_attempt_success 
-0406 c01c8448 beq bt_evt_24g_pairing_complete ,p_mouse_24g_pairing_complete 
-0407 c01d044d beq bt_evt_24g_attempt_fail ,p_mouse_24g_attempt_fail 
-0408 c00a040a beq bt_evt_le_connected ,p_mouse_le_bb_event_connected 
-0409 20205ac3 branch mouse_priority_bb_event + 2 
+041c 1a627e00 copy regc,pdata
+041d c0200431 beq bt_evt_le_parse_conn_papa_update_rsp,p_mouse_le_conn_param_update_rsp_recieved
+041e c00a8436 beq bt_evt_le_disconnected,p_mouse_le_bb_disconnected
+041f c0190428 beq bt_evt_le_start_enc,p_mouse_le_ll_start_encryt
+0420 c01e0453 beq bt_evt_24g_attempt_success,p_mouse_24g_attempt_success
+0421 c01c8463 beq bt_evt_24g_pairing_complete,p_mouse_24g_pairing_complete
+0422 c01d0468 beq bt_evt_24g_attempt_fail,p_mouse_24g_attempt_fail
+0423 c00a0425 beq bt_evt_le_connected,p_mouse_le_bb_event_connected
+0424 20205ac3 branch mouse_priority_bb_event+2
 
 p_mouse_le_bb_event_connected:
-040a 58000000 setarg 0 
-040b 67e24bfa store 4 ,mem_le_conn_first_rcv 
-040c 20205ad0 branch mouse_le_bb_event_connected 
+0425 58000000 setarg 0
+0426 67e24bfa store 4,mem_le_conn_first_rcv
+0427 20205ad0 branch mouse_le_bb_event_connected
 
 p_mouse_le_ll_start_encryt:
-040d 6fe0c795 fetch 1 ,mem_mouse_le_reconnect_flag 
-040e c0008411 beq 1 ,p_mouse_le_ll_reconn_start_encryt 
-040f 70484414 jam 20 ,mem_le_start_encrypt_timer 
-0410 20200413 branch p_mouse_le_ll_reconn_start_encryt_new 
+0428 6fe0c795 fetch 1,mem_mouse_le_reconnect_flag
+0429 c000842c beq 1,p_mouse_le_ll_reconn_start_encryt
+042a 70484414 jam 20,mem_le_start_encrypt_timer
+042b 2020042e branch p_mouse_le_ll_reconn_start_encryt_new
 
 p_mouse_le_ll_reconn_start_encryt:
-0411 20405aef call mouse_updata_le_param 
-0412 70484405 jam 5 ,mem_le_start_encrypt_timer 
+042c 20405aef call mouse_updata_le_param
+042d 70484405 jam 5,mem_le_start_encrypt_timer
 
 p_mouse_le_ll_reconn_start_encryt_new:
-0413 6fe0cbf9 fetch 1 ,mem_le_conn_rcv_new 
-0414 67e0cbfa store 1 ,mem_le_conn_first_rcv 
-0415 20205af6 branch mouse_le_ll_enable_start_enc_flag 
+042e 6fe0cbf9 fetch 1,mem_le_conn_rcv_new
+042f 67e0cbfa store 1,mem_le_conn_first_rcv
+0430 20205af6 branch mouse_le_ll_enable_start_enc_flag
 
 p_mouse_le_conn_param_update_rsp_recieved:
-0416 6fe0ca04 fetch 1 ,mem_mouse_le_send_conn_param_update 
-0417 247a0000 nrtn blank 
-0418 704a0401 jam 1 ,mem_mouse_le_send_conn_param_update 
-0419 704a051e jam 30 ,mem_mouse_le_send_conn_param_update_timer 
-041a 20600000 rtn 
+0431 6fe0ca04 fetch 1,mem_mouse_le_send_conn_param_update
+0432 247a0000 nrtn blank
+0433 704a0401 jam 1,mem_mouse_le_send_conn_param_update
+0434 704a051e jam 30,mem_mouse_le_send_conn_param_update_timer
+0435 20600000 rtn
 
 p_mouse_le_bb_disconnected:
-041b 58000000 setarg 0 
-041c 67e0ca04 store 1 ,mem_mouse_le_send_conn_param_update 
-041d 67e0ca05 store 1 ,mem_mouse_le_send_conn_param_update_timer 
-041e 58000000 setarg 0 
-041f 67e147c0 store 2 ,mem_le_battery_level_updata_timer 
-0420 70479400 jam 0 ,mem_mouse_le_bb_connected_flag 
-0421 d8400006 arg le_interval_7_5ms ,temp 
-0422 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-0423 c28d8425 bbit1 mouse_enable_bt_125hz ,p_mouse_le_bb_disconnected_next 
-0424 d8400007 arg le_interval_8_75ms ,temp 
+0436 58000000 setarg 0
+0437 67e0ca04 store 1,mem_mouse_le_send_conn_param_update
+0438 67e0ca05 store 1,mem_mouse_le_send_conn_param_update_timer
+0439 58000000 setarg 0
+043a 67e147c0 store 2,mem_le_battery_level_updata_timer
+043b 70479400 jam 0,mem_mouse_le_bb_connected_flag
+043c d8400006 arg le_interval_7_5ms,temp
+043d 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+043e c28d8440 bbit1 mouse_enable_bt_125hz,p_mouse_le_bb_disconnected_next
+043f d8400007 arg le_interval_8_75ms,temp
 
 p_mouse_le_bb_disconnected_next:
-0425 604942d3 storet 2 ,mem_le_interval_min 
-0426 604942d5 storet 2 ,mem_le_interval_min + 2 
-0427 7047c200 jam le_lpm_enable ,mem_mouse_le_conn_param_reject 
-0428 70495600 jam 0 ,mem_mouse_clear_sensor_data_flag 
-0429 204029cb call le_clr_config_more_data 
+0440 604942d3 storet 2,mem_le_interval_min
+0441 604942d5 storet 2,mem_le_interval_min+2
+0442 7047c200 jam le_lpm_enable,mem_mouse_le_conn_param_reject
+0443 70495600 jam 0,mem_mouse_clear_sensor_data_flag
+0444 204029cb call le_clr_config_more_data
 
 p_mouse_bb_disconnected:
-042a 20405b7b call mouse_bb_discon_clear_stack 
-042b 6fe143ef fetch app_disc_rsn_size ,mem_app_disconn_reason 
-042c c283842f bbit1 app_disc_ble ,p_mouse4_0_event_bb_disconn 
-042d c28042fc bbit1 app_disc_by_button ,app_disconn_reason_clear 
-042e 20205c1a branch mouse_start_discovery 
+0445 20405b7b call mouse_bb_discon_clear_stack
+0446 6fe143ef fetch app_disc_rsn_size,mem_app_disconn_reason
+0447 c283844a bbit1 app_disc_ble,p_mouse4_0_event_bb_disconn
+0448 c28042fc bbit1 app_disc_by_button,app_disconn_reason_clear
+0449 20205c1a branch mouse_start_discovery
 
 p_mouse4_0_event_bb_disconn:
-042f 6fe143ef fetch app_disc_rsn_size ,mem_app_disconn_reason 
-0430 c28042fc bbit1 app_disc_by_button ,app_disconn_reason_clear 
-0431 6fe0c843 fetch 1 ,mem_le_connect_status_flag 
-0432 1fe17e03 and pdata ,0x03 ,pdata 
-0433 20405b21 call mouse_le_clean_connect_flag 
-0434 c081d4a9 bne 0x03 ,mouse_start_reconnect 
-0435 6fe0cbfd fetch 1 ,mem_le_check_retransmit_discon_flag 
-0436 243a54a9 nbranch mouse_start_reconnect ,blank 
-0437 202054cd branch mouse_app_enter_hibernate 
+044a 6fe143ef fetch app_disc_rsn_size,mem_app_disconn_reason
+044b c28042fc bbit1 app_disc_by_button,app_disconn_reason_clear
+044c 6fe0c843 fetch 1,mem_le_connect_status_flag
+044d 1fe17e03 and pdata,0x03,pdata
+044e 20405b21 call mouse_le_clean_connect_flag
+044f c081d4a9 bne 0x03,mouse_start_reconnect
+0450 6fe0cbfd fetch 1,mem_le_check_retransmit_discon_flag
+0451 243a54a9 nbranch mouse_start_reconnect,blank
+0452 202054cd branch mouse_app_enter_hibernate
 
 p_mouse_24g_attempt_success:
-0438 6fe2458f fetch 4 ,mem_24g_addr 
-0439 67e245e8 store 4 ,mem_24g_receiver_addr 
-043a 67e24691 store 4 ,mem_mouse_24g_addr 
-043b 2040355a call g24_ch_syncword_crc8_init 
-043c 20405c0b call mouse_no_data_timer_init 
-043d 2040618e call mouse_device_poweron_led_config 
-043e 20405a73 call mouse_init_sensor_reset 
-043f 70477d00 jam 0 ,mem_mouse_long_mult_flag 
-0440 7045fc00 jam 0 ,mem_24g_conn_sm 
-0441 7045e200 jam 0 ,mem_24g_reconn_type 
-0442 6fe245e8 fetch 4 ,mem_24g_receiver_addr 
-0443 684a45e4 fetcht 4 ,mem_24g_fast_conn_addr 
-0444 98467c00 isub temp ,null 
-0445 20628000 rtn zero 
-0446 2040044a call p_mouse_fetch_normal_tx_power 
-0447 20206042 branch mouse_24g_first_store_reconn_info 
+0453 6fe2458f fetch 4,mem_24g_addr
+0454 67e245e8 store 4,mem_24g_receiver_addr
+0455 67e24691 store 4,mem_mouse_24g_addr		// if need store 24g address to eeprom/flash,need get mem_24g_addr
+0456 2040355a call g24_ch_syncword_crc8_init
+0457 20405c0b call mouse_no_data_timer_init
+0458 2040618e call mouse_device_poweron_led_config
+0459 20405a73 call mouse_init_sensor_reset
+045a 70477d00 jam 0,mem_mouse_long_mult_flag
+045b 7045fc00 jam 0,mem_24g_conn_sm
+045c 7045e200 jam 0,mem_24g_reconn_type
+045d 6fe245e8 fetch 4,mem_24g_receiver_addr
+045e 684a45e4 fetcht 4,mem_24g_fast_conn_addr
+045f 98467c00 isub temp,null
+0460 20628000 rtn zero
+0461 20400465 call p_mouse_fetch_normal_tx_power
+0462 20206042 branch mouse_24g_first_store_reconn_info
 
 p_mouse_24g_pairing_complete:
-0448 2040044a call p_mouse_fetch_normal_tx_power 
-0449 20206084 branch mouse_24g_pairing_complete 
+0463 20400465 call p_mouse_fetch_normal_tx_power
+0464 20206084 branch mouse_24g_pairing_complete
 
 p_mouse_fetch_normal_tx_power:
-044a 6fe0ca07 fetch 1 ,mem_normal_tx_power 
-044b 67e0c141 store 1 ,mem_tx_power 
-044c 20206016 branch mouse_soft_agc_disable 
+0465 6fe0ca07 fetch 1,mem_normal_tx_power
+0466 67e0c141 store 1,mem_tx_power
+0467 20206016 branch mouse_soft_agc_disable
 
 p_mouse_24g_attempt_fail:
-044d 2040044a call p_mouse_fetch_normal_tx_power 
-044e 6fe0c87a fetch 1 ,mem_mouse_dpi_button_state 
-044f c1008000 rtneq dpi_button_state_down 
-0450 6fe0c600 fetch 1 ,mem_24g_attempt_fail_flag 
-0451 243a5ff2 nbranch mouse_24g_hibernate_set ,blank 
-0452 6fe0c5e2 fetch 1 ,mem_24g_reconn_type 
-0453 c002845f beq pair_and_receiver ,p_mouse_24g_auto_pair_attempt_fail 
-0454 c0008457 beq fast_conn_and_receiver ,p_mouse_24g_fast_conn_attempt_fail 
-0455 c0018466 beq receiver_and_3_0_addr ,p_mouse_reconn_dongle_attempt_fail 
-0456 20206055 branch mouse_24g_attempt_fail + 2 
+0468 20400465 call p_mouse_fetch_normal_tx_power
+0469 6fe0c87a fetch 1,mem_mouse_dpi_button_state
+046a c1008000 rtneq dpi_button_state_down
+046b 6fe0c600 fetch 1,mem_24g_attempt_fail_flag
+046c 243a5ff2 nbranch mouse_24g_hibernate_set,blank
+046d 6fe0c5e2 fetch 1,mem_24g_reconn_type
+046e c002847a beq pair_and_receiver,p_mouse_24g_auto_pair_attempt_fail
+046f c0008472 beq fast_conn_and_receiver,p_mouse_24g_fast_conn_attempt_fail
+0470 c0018481 beq receiver_and_3_0_addr,p_mouse_reconn_dongle_attempt_fail
+0471 20206055 branch mouse_24g_attempt_fail+2
 
 p_mouse_24g_fast_conn_attempt_fail:
-0457 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-0458 c29f045b bbit1 mouse_enable_24g_first_auto_pairing ,p_mouse_24g_start_auto_pair 
-0459 c298045b bbit1 mouse_enable_auto_24g_paring ,p_mouse_24g_start_auto_pair 
-045a 20206062 branch mouse_24g_fast_conn_attempt_fail + 3 
+0472 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+0473 c29f0476 bbit1 mouse_enable_24g_first_auto_pairing,p_mouse_24g_start_auto_pair
+0474 c2980476 bbit1 mouse_enable_auto_24g_paring,p_mouse_24g_start_auto_pair
+0475 20206062 branch mouse_24g_fast_conn_attempt_fail+3
 
 p_mouse_24g_start_auto_pair:
-045b 6fe145d6 fetch 2 ,mem_24g_pair_timeout_init 
-045c 67e145de store 2 ,mem_24g_reconn_timeout 
-045d 7045e205 jam pair_and_receiver ,mem_24g_reconn_type 
-045e 20203534 branch g24_reconn_start 
+0476 6fe145d6 fetch 2,mem_24g_pair_timeout_init
+0477 67e145de store 2,mem_24g_reconn_timeout
+0478 7045e205 jam pair_and_receiver,mem_24g_reconn_type
+0479 20203534 branch g24_reconn_start
 
 p_mouse_24g_auto_pair_attempt_fail:
-045f 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-0460 c31f6059 bbit0 mouse_enable_24g_first_auto_pairing ,mouse_24g_attempt_fail_enter_hibernate 
-0461 6fe0c71b fetch 1 ,mem_device_number 
-0462 c000e059 beq 1 ,mouse_24g_attempt_fail_enter_hibernate 
+047a 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+047b c31f6059 bbit0 mouse_enable_24g_first_auto_pairing,mouse_24g_attempt_fail_enter_hibernate
+047c 6fe0c71b fetch 1,mem_device_number
+047d c000e059 beq 1,mouse_24g_attempt_fail_enter_hibernate		//24g first mode and only 2.4g device
 
 p_mouse_24g_first_bluetooth_reconnect:
-0463 20406018 call mouse_24g_stop 
-0464 70466601 jam mode_bt_device1 ,mem_device_flag 
-0465 20205491 branch mouse_le_fast_conn_judge 
+047e 20406018 call mouse_24g_stop
+047f 70466601 jam mode_bt_device1,mem_device_flag
+0480 20205491 branch mouse_le_fast_conn_judge
 
 p_mouse_reconn_dongle_attempt_fail:
-0466 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-0467 c31f6059 bbit0 mouse_enable_24g_first_auto_pairing ,mouse_24g_attempt_fail_enter_hibernate 
-0468 c289e059 bbit1 mouse_enable_eeprom ,mouse_24g_attempt_fail_enter_hibernate 
-0469 c28a6059 bbit1 mouse_enable_otp ,mouse_24g_attempt_fail_enter_hibernate 
-046a c2896059 bbit1 mouse_enable_flash ,mouse_24g_attempt_fail_enter_hibernate 
-046b 2020045b branch p_mouse_24g_start_auto_pair 
+0481 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+0482 c31f6059 bbit0 mouse_enable_24g_first_auto_pairing,mouse_24g_attempt_fail_enter_hibernate
+0483 c28a6059 bbit1 mouse_enable_otp,mouse_24g_attempt_fail_enter_hibernate
+0484 20200476 branch p_mouse_24g_start_auto_pair
 
 p_mouse_start_work:
-046c 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-046d c29f0471 bbit1 mouse_enable_24g_first_auto_pairing ,p_mouse_24g_first_start_auto_pair_mode 
-046e 6fe0c666 fetch 1 ,mem_device_flag 
-046f c000047c beq mode_24g_device ,p_mouse_24g_start_mode 
-0470 20205491 branch mouse_le_fast_conn_judge 
+0485 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+0486 c29f048c bbit1 mouse_enable_24g_first_auto_pairing,p_mouse_24g_first_start_auto_pair_mode
+0487 6fe0c666 fetch 1,mem_device_flag
+0488 c0000497 beq mode_24g_device,p_mouse_24g_start_mode
+0489 20205491 branch mouse_le_fast_conn_judge
+
+p_mouse4_0_check_reconn_target:
+048a 2040619f call mouse_device_le_reconn_led_config
+048b 202054b6 branch mouse4_0_check_reconn_target
 
 p_mouse_24g_first_start_auto_pair_mode:
-0471 204054ac call mouse_wakeup_from_power_check 
-0472 20340478 branch p_mouse_24g_first_start_reconn ,user 
+048c 204054ac call mouse_wakeup_from_power_check
+048d 20340493 branch p_mouse_24g_first_start_reconn,user
 
 p_mouse_24g_reconn_general_dongle:
-0473 70466600 jam mode_24g_device ,mem_device_flag 
-0474 6fe14721 fetch 2 ,mem_mouse_24g_power_on_fast_conn_timer 
-0475 67e145de store 2 ,mem_24g_reconn_timeout 
-0476 7045e201 jam fast_conn_and_receiver ,mem_24g_reconn_type 
-0477 20203534 branch g24_reconn_start 
+048e 70466600 jam mode_24g_device,mem_device_flag
+048f 6fe14721 fetch 2,mem_mouse_24g_power_on_fast_conn_timer
+0490 67e145de store 2,mem_24g_reconn_timeout
+0491 7045e201 jam fast_conn_and_receiver,mem_24g_reconn_type
+0492 20203534 branch g24_reconn_start
 
 p_mouse_24g_first_start_reconn:
-0478 6fe0c666 fetch 1 ,mem_device_flag 
-0479 c0006067 beq mode_24g_device ,mouse_24g_reconn_dongle_start 
-047a 20405aa8 call mouse_bluetooth_fast_conn_disable 
-047b 20200463 branch p_mouse_24g_first_bluetooth_reconnect 
+0493 6fe0c666 fetch 1,mem_device_flag
+0494 c0006067 beq mode_24g_device,mouse_24g_reconn_dongle_start
+0495 20405aa8 call mouse_bluetooth_fast_conn_disable
+0496 2020047e branch p_mouse_24g_first_bluetooth_reconnect
 
 p_mouse_24g_start_mode:
-047c 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-047d c308e02a bbit0 mouse_enable_24g ,mouse_24g_mode_setup_error 
-047e 20406195 call mouse_device_24g_pair_led_config 
-047f 204054ac call mouse_wakeup_from_power_check 
-0480 20346067 branch mouse_24g_reconn_dongle_start ,user 
-0481 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-0482 c2980473 bbit1 mouse_enable_auto_24g_paring ,p_mouse_24g_reconn_general_dongle 
-0483 20206023 branch mouse_24g_start_mode + 7 
+0497 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+0498 c308e02a bbit0 mouse_enable_24g,mouse_24g_mode_setup_error
+0499 20406195 call mouse_device_24g_pair_led_config
+049a 204054ac call mouse_wakeup_from_power_check	// wake from hibernate :enble user
+049b 20346067 branch mouse_24g_reconn_dongle_start,user
+049c 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+049d c298048e bbit1 mouse_enable_auto_24g_paring,p_mouse_24g_reconn_general_dongle
+049e 20206023 branch mouse_24g_start_mode+7
 
 p_mouse_store_normal_tx_power:
-0484 6fe0c141 fetch 1 ,mem_tx_power 
-0485 67e0ca07 store 1 ,mem_normal_tx_power 
-0486 20600000 rtn 
+049f 6fe0c141 fetch 1,mem_tx_power
+04a0 67e0ca07 store 1,mem_normal_tx_power
+04a1 20600000 rtn
 
 p_mouse_idle:
-0487 2040620e call mouse_low_voltage_led_no_enter_lpm 
-0488 204078aa call ui_check_paring_button 
-0489 2040048d call p_mouse_dpi_check 
-048a 20205e61 branch mouse_idle + 4 
+04a2 2040620e call mouse_low_voltage_led_no_enter_lpm
+04a3 204078aa call ui_check_paring_button
+04a4 204004a8 call p_mouse_dpi_check
+04a5 20205e61 branch mouse_idle+4
 
 p_mouse_dpi_check_retransmit:
-048b 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-048c c4140000 rtnbit0 mouse_enable_select_device_by_dpi_button 
+04a6 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+04a7 c4140000 rtnbit0 mouse_enable_select_device_by_dpi_button
 
 p_mouse_dpi_check:
-048d 6fe0c649 fetch 1 ,mem_dpi_button_gpio 
-048e c17f8000 rtneq gpio_disable 
-048f da200000 arg 0 ,rega 
-0490 70497705 jam mouse_dpi_key ,mem_mouse_key_temp 
-0491 6848c649 fetcht 1 ,mem_dpi_button_gpio 
-0492 20400494 call p_mouse_dpi_key_check 
-0493 202056c1 branch mouse_dpi_check_next 
+04a8 6fe0c649 fetch 1,mem_dpi_button_gpio
+04a9 c17f8000 rtneq gpio_disable
+04aa da200000 arg 0,rega
+04ab 70497705 jam mouse_dpi_key,mem_mouse_key_temp
+04ac 6848c649 fetcht 1,mem_dpi_button_gpio
+04ad 204004af call p_mouse_dpi_key_check
+04ae 202056c1 branch mouse_dpi_check_next
 
 p_mouse_dpi_key_check:
-0494 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-0495 c295d6de bbit1 mouse_enable_dpi_key_connect_gnd ,mouse_dpi_key_connect_gnd 
-0496 6fe0c974 fetch 1 ,mem_mouse_dpikey_press_status 
-0497 1fe22600 copy pdata ,regc 
-0498 6fe0c654 fetch 1 ,mem_matrix_public_gpio 
-0499 c07f849b beq gpio_disable ,p_mouse_3io6key_dpi_check 
-049a 202056ce branch mouse_dpi_key_check_next 
+04af 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+04b0 c295d6de bbit1 mouse_enable_dpi_key_connect_gnd,mouse_dpi_key_connect_gnd
+04b1 6fe0c974 fetch 1,mem_mouse_dpikey_press_status
+04b2 1fe22600 copy pdata,regc
+04b3 6fe0c654 fetch 1,mem_matrix_public_gpio
+04b4 c07f84b6 beq gpio_disable,p_mouse_3io6key_dpi_check
+04b5 202056ce branch mouse_dpi_key_check_next
 
 p_mouse_3io6key_dpi_check:
-049b 6fe0c649 fetch 1 ,mem_dpi_button_gpio 
-049c 20405946 call mouse_gpio_config_output_low 
-049d 6848c649 fetcht 1 ,mem_dpi_button_gpio 
-049e 2020049f branch p_mouse_3io6key_check 
+04b6 6fe0c649 fetch 1,mem_dpi_button_gpio
+04b7 20405946 call mouse_gpio_config_output_low
+04b8 6848c649 fetcht 1,mem_dpi_button_gpio
+04b9 202004ba branch p_mouse_3io6key_check
 
 p_mouse_3io6key_check:
-049f 1a627e00 copy regc ,pdata 
-04a0 67e0c978 store 1 ,mem_mouse_key_status 
-04a1 1fe3fe00 lshift pdata ,pdata 
-04a2 1fe22400 copy pdata ,regb 
-04a3 18422600 copy temp ,regc 
-04a4 204055b1 call mouse_gpio_config_input_pd 
-04a5 1a620400 copy regc ,temp 
-04a6 20406ee6 call gpio_get_bit 
-04a7 7d20a400 nsetflag true ,0 ,regb 
-04a8 2040593d call mouse_check_press 
-04a9 20205929 branch mouse_check_key_connect_gnd_1 
+04ba 1a627e00 copy regc,pdata
+04bb 67e0c978 store 1,mem_mouse_key_status
+04bc 1fe3fe00 lshift pdata,pdata
+04bd 1fe22400 copy pdata,regb
+04be 18422600 copy temp,regc
+04bf 20406ef7 call gpio_out_active
+04c0 1a620400 copy regc,temp
+04c1 204055b1 call mouse_gpio_config_input_pd
+04c2 1a620400 copy regc,temp
+04c3 20406ee6 call gpio_get_bit
+04c4 7d20a400 nsetflag true,0,regb
+04c5 2040593d call mouse_check_press
+04c6 20205929 branch mouse_check_key_connect_gnd_1
 
 p_g24_short_sleep:
-04aa 204036b4 call g24_lpm_wait 
-04ab 24740000 nrtn user 
-04ac 204036be call g24_setgpio_lpm_before 
-04ad 204004af call p_clear_wake 
-04ae 2020361b branch g24_short_sleep_next 
+04c7 204036b4 call g24_lpm_wait
+04c8 24740000 nrtn user
+04c9 204036be call g24_setgpio_lpm_before
+04ca 204004cc call p_clear_wake
+04cb 2020361b branch g24_short_sleep_next
 
 p_clear_wake:
-04af 58000000 setarg 0 
-04b0 67e40016 store 8 ,mem_gpio_wakeup_cfg 
-04b1 67e2001e store 4 ,mem_gpio_wakeup_cfg + 8 
-04b2 20600000 rtn 
+04cc 58000000 setarg 0
+04cd 67e40016 store 8,mem_gpio_wakeup_cfg	//gpio5(ice)enable wake
+04ce 67e2001e store 4,mem_gpio_wakeup_cfg+8
+04cf 20600000 rtn
 
 p_mouse_24g_hibernate_set:
-04b3 70460000 jam 0 ,mem_24g_attempt_fail_flag 
-04b4 20403647 call g24_transmit_next_packet 
-04b5 5fffffff setarg -1 
-04b6 67e245af store 4 ,mem_24g_enter_hibernate 
-04b7 58000000 setarg 0 
-04b8 67e3c846 store 7 ,mem_mouse_key 
-04b9 70473f01 jam 1 ,mem_sensor_shutdown_flag 
-04ba 204059ed call mouse_sensor_powerdown 
-04bb 2020622b branch mouse_24g_long_sleep 
+04d0 70460000 jam 0,mem_24g_attempt_fail_flag
+04d1 20403647 call g24_transmit_next_packet
+04d2 5fffffff setarg -1
+04d3 67e245af store 4,mem_24g_enter_hibernate
+04d4 58000000 setarg 0
+04d5 67e3c846 store 7,mem_mouse_key
+04d6 70473f01 jam 1,mem_sensor_shutdown_flag
+04d7 204059ed call mouse_sensor_powerdown
+04d8 2020622b branch mouse_24g_long_sleep
 
 p_mouse_setgpio_hibernate:
-04bc 20405a92 call mouse_set_sdio_high 
-04bd 204004af call p_clear_wake 
-04be 204056a9 call mouse_before_hibernate_wheel_gpio_set 
-04bf 6fe0c64d fetch 1 ,mem_mouse_sensor_sdio_gpio 
-04c0 20405943 call mouse_gpio_config_output_high 
-04c1 6848c65a fetcht 1 ,mem_device_switch_gpio 
-04c2 204055ab call mouse_gpio_set_pupd_by_input 
-04c3 d8400015 arg 21 ,temp 
-04c4 204055b5 call mouse_gpio_config_input_pu 
-04c5 2040611a call mouse_logo_led_off 
-04c6 20400234 call p_mouse_lpm_before_common 
-04c7 202054e2 branch mouse_setgpio_hibernate_next 
+04d9 20405a92 call mouse_set_sdio_high
+04da 204004cc call p_clear_wake
+04db 204056a9 call mouse_before_hibernate_wheel_gpio_set
+04dc 6fe0c64d fetch 1,mem_mouse_sensor_sdio_gpio
+04dd 20405943 call mouse_gpio_config_output_high
+04de 6848c65a fetcht 1,mem_device_switch_gpio
+04df 204055ab call mouse_gpio_set_pupd_by_input
+04e0 d8400015 arg 21,temp	//ice band gpio
+04e1 204055b5 call mouse_gpio_config_input_pu
+04e2 2040611a call mouse_logo_led_off
+04e3 20400241 call p_mouse_lpm_before_common
+04e4 202054e2 branch mouse_setgpio_hibernate_next
 
 p_mouse_24g_package_data:
-04c8 c6930000 rtnmark0 mark_24g 
-04c9 20405601 call mouse_motion 
-04ca 24740000 nrtn user 
-04cb 6fe0c77c fetch 1 ,mem_mouse_24g_long_sleep_flag 
-04cc 70477c00 jam 0 ,mem_mouse_24g_long_sleep_flag 
-04cd 245a04dd ncall p_mouse_24g_short_sleep_clear_wake ,blank 
-04ce 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-04cf c30b04d2 bbit0 mouse_enable_keyboard ,p_mouse_24g_mouse_package_data 
-04d0 6fe0c96c fetch 1 ,mem_customer_key 
-04d1 243a60b6 nbranch mouse_24g_keyboard_package_data ,blank 
+04e5 c6930000 rtnmark0 mark_24g
+04e6 20405601 call mouse_motion
+04e7 24740000 nrtn user
+04e8 6fe0c77c fetch 1,mem_mouse_24g_long_sleep_flag
+04e9 70477c00 jam 0,mem_mouse_24g_long_sleep_flag
+04ea 245a04fa ncall p_mouse_24g_short_sleep_clear_wake,blank
+04eb 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+04ec c30b04ef bbit0 mouse_enable_keyboard,p_mouse_24g_mouse_package_data
+04ed 6fe0c96c fetch 1,mem_customer_key
+04ee 243a60b6 nbranch mouse_24g_keyboard_package_data,blank
 
 p_mouse_24g_mouse_package_data:
-04d2 204004d4 call p_mouse_data_xy_release 
-04d3 202060a2 branch mouse_24g_mouse_package_data + 1 
+04ef 204004f1 call p_mouse_data_xy_release
+04f0 202060a2 branch mouse_24g_mouse_package_data+1
 
 p_mouse_data_xy_release:
-04d4 6fe0c659 fetch 1 ,mem_sensor_motion_gpio 
-04d5 c1ff8000 rtnne gpio_disable 
-04d6 6fe0c77d fetch 1 ,mem_mouse_long_mult_flag 
-04d7 207a0000 rtn blank 
-04d8 1fe0ffff increase -1 ,pdata 
-04d9 67e0c77d store 1 ,mem_mouse_long_mult_flag 
-04da 58000000 setarg 0 
-04db 67e24847 store 4 ,mem_mouse_x 
-04dc 20205a73 branch mouse_init_sensor_reset 
+04f1 6fe0c659 fetch 1,mem_sensor_motion_gpio
+04f2 c1ff8000 rtnne gpio_disable
+04f3 6fe0c77d fetch 1,mem_mouse_long_mult_flag
+04f4 207a0000 rtn blank
+04f5 1fe0ffff increase -1,pdata
+04f6 67e0c77d store 1,mem_mouse_long_mult_flag
+04f7 58000000 setarg 0
+04f8 67e24847 store 4,mem_mouse_x
+04f9 20205a73 branch mouse_init_sensor_reset
 
 p_mouse_24g_short_sleep_clear_wake:
-04dd 204004af call p_clear_wake 
-04de 20200253 branch p_lpm_write_gpio_wakeup 
+04fa 204004cc call p_clear_wake
+04fb 20200268 branch p_lpm_write_gpio_wakeup
 
 p_mouse_check_select_device_by_switch:
-04df 6fe44713 fetch mouse_flag_len ,mem_mouse_flag 
-04e0 c4150000 rtnbit0 mouse_enable_select_device_by_switch_gpio 
-04e1 c31f84ec bbit0 mouse_enable_switch_gpio_connect_vin ,p_mouse_switch_gpio_connect_gnd 
+04fc 6fe44713 fetch mouse_flag_len,mem_mouse_flag
+04fd c4150000 rtnbit0 mouse_enable_select_device_by_switch_gpio
+04fe c31f8509 bbit0 mouse_enable_switch_gpio_connect_vin,p_mouse_switch_gpio_connect_gnd
 
 p_mouse_switch_gpio_connect_vin_check:
-04e2 204004ee call p_mouse_switch_gpio_pd_set 
-04e3 204004e8 call p_mouse_switch_gpio_connect_vin 
+04ff 2040050b call p_mouse_switch_gpio_pd_set
+0500 20400505 call p_mouse_switch_gpio_connect_vin
 
 p_mouse_switch_gpio_pu_set:
-04e4 6848c65a fetcht 1 ,mem_device_switch_gpio 
-04e5 20406ef3 call gpio_out_inactive 
-04e6 6848c65a fetcht 1 ,mem_device_switch_gpio 
-04e7 202055b5 branch mouse_gpio_config_input_pu 
+0501 6848c65a fetcht 1,mem_device_switch_gpio
+0502 20406ef3 call gpio_out_inactive
+0503 6848c65a fetcht 1,mem_device_switch_gpio
+0504 202055b5 branch mouse_gpio_config_input_pu
 
 p_mouse_switch_gpio_connect_vin:
-04e8 6848c65a fetcht 1 ,mem_device_switch_gpio 
-04e9 20406ee6 call gpio_get_bit 
-04ea 2420dec2 nbranch mouse_check_select_24g_device ,true 
-04eb 20205ebe branch mouse_select_btdevice 
+0505 6848c65a fetcht 1,mem_device_switch_gpio
+0506 20406ee6 call gpio_get_bit
+0507 2420dec2 nbranch mouse_check_select_24g_device,true
+0508 20205ebe branch mouse_select_btdevice
 
 p_mouse_switch_gpio_connect_gnd:
-04ec 204004e4 call p_mouse_switch_gpio_pu_set 
-04ed 20405ebb call mouse_switch_gpio_connect_gnd 
+0509 20400501 call p_mouse_switch_gpio_pu_set
+050a 20405ebb call mouse_switch_gpio_connect_gnd
 
 p_mouse_switch_gpio_pd_set:
-04ee 6848c65a fetcht 1 ,mem_device_switch_gpio 
-04ef 20406ef7 call gpio_out_active 
-04f0 6848c65a fetcht 1 ,mem_device_switch_gpio 
-04f1 202055b1 branch mouse_gpio_config_input_pd 
+050b 6848c65a fetcht 1,mem_device_switch_gpio
+050c 20406ef7 call gpio_out_active
+050d 6848c65a fetcht 1,mem_device_switch_gpio
+050e 202055b1 branch mouse_gpio_config_input_pd
+
+p_mouse_le_name_modify:
+050f 6fe0c98c fetch 1,mem_le_name_patch_len
+0510 207a0000 rtn blank
+0511 1fe22200 copy pdata,rega
+0512 1fe67c0b sub pdata,11,null
+0513 242155dd nbranch mouse_le_name_patch_len_overflow,positive
+0514 204055d6 call mouse_le_name_clear
+0515 204055ee call mouse_le_name_patch_len_next
+0516 1a220400 copy rega,temp
+0517 18408401 increase 1,temp
+0518 6048c7a7 storet 1,mem_le_adv_swift_pair+7
+0519 d8a047a9 arg mem_le_adv_swift_pair+9,contw
+051a 204055d3 call mouse_le_name_modify_next
+051b 6048c369 storet 1,mem_le_scan_data
+051c d8a0436b arg mem_le_scan_data+2,contw
+051d 202055d3 branch mouse_le_name_modify_next
 
 p_mouse_init_sensor:
-04f2 20405958 call mouse_read_sensor_id 
-04f3 c018595f beq p32xx_id1 ,mouse_init_p32xx_id2_judge 
-04f4 c018d9c6 beq p3065_id1 ,mouse_init_p3065 
-04f5 c02c04f7 beq pka8g2_id1 ,p_mouse_ka8g2_id2_judge 
-04f6 20205952 branch mouse_init_sensor + 5 
+051e 20405958 call mouse_read_sensor_id
+051f c018595f beq p32xx_id1,mouse_init_p32xx_id2_judge
+0520 c018d9c6 beq p3065_id1,mouse_init_p3065
+0521 c02c0523 beq pka8g2_id1,p_mouse_ka8g2_id2_judge
+0522 20205952 branch mouse_init_sensor+5
 
 p_mouse_ka8g2_id2_judge:
-04f7 204059e7 call mouse_sensor_poweron 
-04f8 6fe0c85a fetch 1 ,mem_sensor_id2 
-04f9 c02c84fb beq pka8g2_id2 ,p_mouse_ka8g2_init_param 
-04fa 2020595f branch mouse_init_p32xx_id2_judge 
+0523 204059e7 call mouse_sensor_poweron
+0524 6fe0c85a fetch 1,mem_sensor_id2
+0525 c02c8527 beq pka8g2_id2,p_mouse_ka8g2_init_param
+0526 2020595f branch mouse_init_p32xx_id2_judge
 
 p_mouse_ka8g2_init_param:
-04fb 7049570b jam ka8g2 ,mem_config_sensor_type 
-04fc da604a0b arg mem_sensor_ka8g2_init_new ,regc 
-04fd 20205995 branch mouse_sensor_wr_seq 
+0527 7049570b jam ka8g2,mem_config_sensor_type
+0528 da604a0b arg mem_sensor_ka8g2_init_new,regc
+0529 20205995 branch mouse_sensor_wr_seq
 
 p_mouse_check_sensor_data:
-04fe 6fe0c420 fetch 1 ,mem_spi_write_flash_sm 
-04ff c1800000 rtnne flash_sm_no_buys 
-0500 6fe0c957 fetch 1 ,mem_config_sensor_type 
-0501 c0058503 beq ka8g2 ,p_mouse_pka8g2_sensor_motion 
-0502 202059f8 branch mouse_check_sensor_data + 2 
+052a 6fe0c420 fetch 1,mem_spi_write_flash_sm
+052b c1800000 rtnne flash_sm_no_buys
+052c 6fe0c957 fetch 1,mem_config_sensor_type
+052d c005852f beq ka8g2,p_mouse_pka8g2_sensor_motion
+052e 202059f8 branch mouse_check_sensor_data+2
 
 p_mouse_pka8g2_sensor_motion:
-0503 20405a6d call mouse_clear_sensor_data 
-0504 6fe0c659 fetch 1 ,mem_sensor_motion_gpio 
-0505 c07f8509 beq gpio_disable ,p_mouse_pka8g2_sensor_motion_1 
-0506 6848c659 fetcht 1 ,mem_sensor_motion_gpio 
-0507 20406ee6 call gpio_get_bit 
-0508 24608000 nrtn true 
+052f 20405a6d call mouse_clear_sensor_data
+0530 6fe0c659 fetch 1,mem_sensor_motion_gpio
+0531 c07f8535 beq gpio_disable,p_mouse_pka8g2_sensor_motion_1
+0532 6848c659 fetcht 1,mem_sensor_motion_gpio
+0533 20406ee6 call gpio_get_bit
+0534 24608000 nrtn true
 
 p_mouse_pka8g2_sensor_motion_1:
-0509 58000000 setarg pan_reg_pid_l 
-050a 204069e5 call twspi_read 
-050b c0ac5955 bne pka8g2_id1 ,mouse_twspi_reset 
-050c 20205a2f branch mouse_p3212_sensor_motion_2 
+0535 58000000 setarg pan_reg_pid_l
+0536 204069e5 call twspi_read
+0537 c0ac5955 bne pka8g2_id1,mouse_twspi_reset
+0538 20205a2f branch mouse_p3212_sensor_motion_2
 
 p_mouse_motion:
-050d 78547c00 disable user 
-050e 58000000 setarg 0 
-050f 67e34847 store 6 ,mem_mouse_x 
-0510 204004fe call p_mouse_check_sensor_data 
-0511 58000089 setarg 0x0089 
-0512 204069e4 call twspi_write 
-0513 20405747 call mouse_setting_sensor_type 
-0514 20405612 call mouse_zwheel 
-0515 20405617 call mouse_t_zwheel 
-0516 2040051b call p_mouse_key 
-0517 2020560c branch mouse_motion + 11 
+0539 78547c00 disable user
+053a 58000000 setarg 0
+053b 67e34847 store 6,mem_mouse_x
+053c 2040052a call p_mouse_check_sensor_data
+053d 58000089 setarg 0x0089
+053e 204069e4 call twspi_write
+053f 20405747 call mouse_setting_sensor_type
+0540 20405612 call mouse_zwheel
+0541 20405617 call mouse_t_zwheel
+0542 20400547 call p_mouse_key
+0543 2020560c branch mouse_motion+11
 
 p_mouse_drawing_optima:
-0518 6fe0c957 fetch 1 ,mem_config_sensor_type 
-0519 c1058000 rtneq ka8g2 
-051a 20205f27 branch mouse_drawing_optima + 1 
+0544 6fe0c957 fetch 1,mem_config_sensor_type
+0545 c1058000 rtneq ka8g2
+0546 20205f27 branch mouse_drawing_optima+1
 
 p_mouse_key:
-051b 2040584c call mouse_check_firekey_gpio 
-051c 6fe0c987 fetch 1 ,mem_fire_key_flag 
-051d 243a5860 nbranch fire_key_press ,blank 
-051e 6fe0c982 fetch 1 ,mem_fire_key_status 
-051f 243a585f nbranch fire_key_process ,blank 
-0520 20405888 call mouse_check_key_gpio 
-0521 20400523 call p_mouse_ghost_key_check 
-0522 202057ad branch mouse_key + 7 
+0547 2040584c call mouse_check_firekey_gpio
+0548 6fe0c987 fetch 1,mem_fire_key_flag
+0549 243a5860 nbranch fire_key_press,blank
+054a 6fe0c982 fetch 1,mem_fire_key_status
+054b 243a585f nbranch fire_key_process,blank
+054c 20405888 call mouse_check_key_gpio
+054d 2040054f call p_mouse_ghost_key_check
+054e 202057ad branch mouse_key+7
 
 p_mouse_ghost_key_check:
-0523 70497900 jam 0 ,mem_mouse_matrix_key_cow_count 
-0524 70497a00 jam 0 ,mem_mouse_matrix_key_row_count 
-0525 70497b00 jam 0 ,mem_mouse_ghost_flag 
-0526 1fe22400 copy pdata ,regb 
-0527 6848c644 fetcht 1 ,mem_lbutton_gpio 
-0528 6fe0c647 fetch 1 ,mem_bk_button_gpio 
-0529 98467c00 isub temp ,null 
-052a 20228535 branch p_mouse_matrix_ghost_key_l_bk ,zero 
-052b 6fe0c648 fetch 1 ,mem_fw_button_gpio 
-052c 98467c00 isub temp ,null 
-052d 2022853b branch p_mouse_matrix_ghost_key_l_fw ,zero 
-052e 6848c645 fetcht 1 ,mem_mbutton_gpio 
-052f 6fe0c647 fetch 1 ,mem_bk_button_gpio 
-0530 98467c00 isub temp ,null 
-0531 20228544 branch p_mouse_ghost_key_mbk_rfw ,zero 
+054f 70497900 jam 0,mem_mouse_matrix_key_cow_count
+0550 70497a00 jam 0,mem_mouse_matrix_key_row_count
+0551 70497b00 jam 0,mem_mouse_ghost_flag
+0552 1fe22400 copy pdata,regb
+0553 6848c644 fetcht 1,mem_lbutton_gpio
+0554 6fe0c647 fetch 1,mem_bk_button_gpio
+0555 98467c00 isub temp,null
+0556 20228561 branch p_mouse_matrix_ghost_key_l_bk,zero
+0557 6fe0c648 fetch 1,mem_fw_button_gpio
+0558 98467c00 isub temp,null
+0559 20228567 branch p_mouse_matrix_ghost_key_l_fw,zero
+055a 6848c645 fetcht 1,mem_mbutton_gpio
+055b 6fe0c647 fetch 1,mem_bk_button_gpio
+055c 98467c00 isub temp,null
+055d 20228570 branch p_mouse_ghost_key_mbk_rfw,zero
 
 p_mouse_ghost_key_mfw_rbk:
-0532 204057fb call mouse_ghost_key_check_m_fw 
+055e 204057fb call mouse_ghost_key_check_m_fw
 
 p_mouse_ghost_key_rbk:
-0533 20400549 call p_mouse_ghost_key_check_r_bk 
-0534 202057e5 branch mouse_ghost_key_check_next 
+055f 20400575 call p_mouse_ghost_key_check_r_bk
+0560 202057e5 branch mouse_ghost_key_check_next
 
 p_mouse_matrix_ghost_key_l_bk:
-0535 6848c645 fetcht 1 ,mem_mbutton_gpio 
-0536 6fe0c648 fetch 1 ,mem_fw_button_gpio 
-0537 98467c00 isub temp ,null 
-0538 2022d7d6 branch mouse_ghost_key_lbk_mfw ,zero 
+0561 6848c645 fetcht 1,mem_mbutton_gpio
+0562 6fe0c648 fetch 1,mem_fw_button_gpio
+0563 98467c00 isub temp,null
+0564 2022d7d6 branch mouse_ghost_key_lbk_mfw,zero
 
 p_mouse_ghost_key_lbk_rfw:
-0539 204057ef call mouse_ghost_key_check_l_bk 
-053a 20200545 branch p_mouse_ghost_key_rfw 
+0565 204057ef call mouse_ghost_key_check_l_bk
+0566 20200571 branch p_mouse_ghost_key_rfw
 
 p_mouse_matrix_ghost_key_l_fw:
-053b 6848c645 fetcht 1 ,mem_mbutton_gpio 
-053c 6fe0c647 fetch 1 ,mem_bk_button_gpio 
-053d 98467c00 isub temp ,null 
-053e 20228541 branch p_mouse_ghost_key_lfw_mbk ,zero 
+0567 6848c645 fetcht 1,mem_mbutton_gpio
+0568 6fe0c647 fetch 1,mem_bk_button_gpio
+0569 98467c00 isub temp,null
+056a 2022856d branch p_mouse_ghost_key_lfw_mbk,zero
 
 p_mouse_ghost_key_lfw_rbk:
-053f 2040054b call p_mouse_ghost_key_check_l_fw 
-0540 20200533 branch p_mouse_ghost_key_rbk 
+056b 20400577 call p_mouse_ghost_key_check_l_fw
+056c 2020055f branch p_mouse_ghost_key_rbk
 
 p_mouse_ghost_key_lfw_mbk:
-0541 2040054b call p_mouse_ghost_key_check_l_fw 
-0542 20400547 call p_mouse_ghost_key_check_m_bk 
-0543 202057e5 branch mouse_ghost_key_check_next 
+056d 20400577 call p_mouse_ghost_key_check_l_fw
+056e 20400573 call p_mouse_ghost_key_check_m_bk
+056f 202057e5 branch mouse_ghost_key_check_next
 
 p_mouse_ghost_key_mbk_rfw:
-0544 20400547 call p_mouse_ghost_key_check_m_bk 
+0570 20400573 call p_mouse_ghost_key_check_m_bk
 
 p_mouse_ghost_key_rfw:
-0545 2040054d call p_mouse_ghost_key_check_r_fw 
-0546 202057e5 branch mouse_ghost_key_check_next 
+0571 20400579 call p_mouse_ghost_key_check_r_fw
+0572 202057e5 branch mouse_ghost_key_check_next
 
 p_mouse_ghost_key_check_m_bk:
-0547 1a417e12 and regb ,mouse_m_bk_button ,pdata 
-0548 202057f3 branch mouse_ghost_key_check_m_bk + 1 
+0573 1a417e12 and regb,mouse_m_bk_button,pdata
+0574 202057f3 branch mouse_ghost_key_check_m_bk+1
 
 p_mouse_ghost_key_check_r_bk:
-0549 1a417e0a and regb ,mouse_r_bk_button ,pdata 
-054a 202057f6 branch mouse_ghost_key_check_r_bk + 1 
+0575 1a417e0a and regb,mouse_r_bk_button,pdata
+0576 202057f6 branch mouse_ghost_key_check_r_bk+1
 
 p_mouse_ghost_key_check_l_fw:
-054b 1a417e11 and regb ,mouse_l_fw_button ,pdata 
-054c 202057f9 branch mouse_ghost_key_check_l_fw + 1 
+0577 1a417e11 and regb,mouse_l_fw_button,pdata
+0578 202057f9 branch mouse_ghost_key_check_l_fw+1
 
 p_mouse_ghost_key_check_r_fw:
-054d 1a417e12 and regb ,mouse_r_fw_button ,pdata 
-054e 202057ff branch mouse_ghost_key_check_r_fw + 1 
+0579 1a417e12 and regb,mouse_r_fw_button,pdata
+057a 202057ff branch mouse_ghost_key_check_r_fw+1
 
Index: output/romcode.rom
===================================================================
--- /1121s/branch/mouse/mouse_public_sdk_1M/output/romcode.rom	(revision 6478)
+++ /1121s/branch/mouse/mouse_public_sdk_1M/output/romcode.rom	(working copy)
@@ -30851,50 +30851,6 @@
 00000000
 00000000
 00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
-00000000
 00020001
 18000228
 03020002
@@ -31406,4 +31362,4 @@
 00000000
 00000000
 00000000
-000002f7
\ No newline at end of file
+00000837
\ No newline at end of file
Index: program/app_mouse.prog
===================================================================
--- /1121s/branch/mouse/mouse_public_sdk_1M/program/app_mouse.prog	(nonexistent)
+++ /1121s/branch/mouse/mouse_public_sdk_1M/program/app_mouse.prog	(working copy)
@@ -0,0 +1,5311 @@
+
+ifdef COMPILE_MOUSE
+mouse_init:
+	call enable_authrom
+	call mouse_setting_config
+	call mouse_init_sunt
+	rtn wake
+	call mouse_setting_sensor_type
+	call mouse_drawing_optima_init
+	call mouse_cb_fuction
+	call mouse_sensor_powerdown
+mouse_init_wireless:	
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BTN_DOWN,mouse_start_discovery
+	call mouse_check_select_device_by_switch
+	branch mouse_start_work
+
+
+mouse_cb_fuction:
+	bpatch patch0d_0,mem_patch0d
+	setarg mouse_24g_short_sleep
+	store 2,mem_cb_24g_transmit_short_sleep
+	setarg mouse_24g_long_sleep
+	store 2,mem_cb_24g_transmit_long_sleep
+	setarg mouse_24g_before_lpm_sleep
+	store 2,mem_cb_before_lpm_sleep
+	setarg mouse_24g_package_data
+	store 2,mem_cb_24g_transmit_data
+	setarg mouse_24g_search_dongle
+	store 2,mem_cb_24g_search_receiver
+	setarg mouse_lpm_before_common
+	store 2,mem_cb_24g_lpm_before
+	setarg mouse_le
+	store 2,mem_cb_le_process
+	setarg mouse_process_lpm_before
+	store 2,mem_cb_before_lpm
+	setarg mouse_priority_bb_event
+	store 2,mem_cb_bb_event_process
+	setarg mouse_idle
+	store 2,mem_cb_idle_process
+	setarg mouse_before_hibernate
+	store 2,mem_cb_before_hibernate
+	setarg mouse_le_bb_event_connect_complete
+	store 2,mem_cb_att_write	
+	setarg mouse_bb_event_timer
+	store 2,mem_cb_event_timer
+	setarg mouse_spi_write_flash_cb
+	store 2,mem_cb_spi_flash_write_complate
+	setarg mouse_lpm_check_wake_lock
+	store 2,mem_cb_check_wakelock
+	setarg mouse_le_transmit
+	store 2,mem_cb_ble_transmit
+	setarg mouse_set_lpm_mult
+	store 2,mem_cb_bt_set_mult
+	rtn
+
+
+mouse_setting_config:
+	rtn wake
+	call g24_transmit_init
+	call g24_chmap_param_init
+	call mouse_24g_send_time_long_wake
+	call mouse_gpio_init
+	call mouse_le_name_modify
+	call mouse_param_init
+	call mouse_device_multi_led_parm_init
+	call le_set_fixed_ltk_justwork
+mouse_load_device_info_check:
+	bpatch patch0d_1,mem_patch0d
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_EEPROM,mouse_load_eeprom_info_check
+	bbit1 MOUSE_ENABLE_FLASH,mouse_load_flash_info_check
+	bbit1 MOUSE_ENABLE_OTP,mouse_load_otp_info_check
+	rtn
+	
+mouse_xtal_init:
+	jam XTAL_16M,mem_fcomp_div		// 0x08--16M 
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit1 MOUSE_ENABLE_16M
+	jam XTAL_24M,mem_fcomp_div		// 0x18--24M
+	rtn
+
+mouse_24g_phy_select:
+	call g24_enable_1M
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_24G_2M_PHY
+	branch g24_enable_2M
+
+mouse_default_init:
+	bpatch patch0d_2,mem_patch0d
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	isolate1 MOUSE_KEYBOARD_ENABLE,pdata
+	call mouse_customer_key_enable,true
+	
+mouse_default_parm_init:
+	fetch 2,mem_mouse_24g_pair_timeout_init
+	store 2,mem_24g_pair_timeout_init
+
+	fetch 1,mem_mouse_24g_reconn_timeout_init
+	store 2,mem_24g_reconn_timeout_init
+
+	fetch 5,mem_rssi_dis_min_24g_init
+	store 5,mem_rssi_dis_min_24g
+
+	fetch 1,mem_mouse_24g_pair_tx_power
+	store 1,mem_24g_pair_tx_power
+
+	fetch 1,mem_24g_ch_map_update
+	ncall g24_chamap_param_update,blank
+mouse_default_parm_init_next:
+	bpatch patch0d_3,mem_patch0d
+	call mouse_xtal_init
+	call mouse_24g_phy_select
+	call mouse_24g_long_sleep_set
+	branch g24_pair_param_init
+
+mouse_param_common_init:
+	setarg MOUSE_BLE_ATT_LIST_ADDR				//ble attlist start address
+	store 2,mem_ui_le_uuid_table
+	jam 3,mem_lpm_mult_timeout
+	jam 8,mem_lpm_overhead
+	jam PB_BUTTON_STATE_UP,mem_select_device_button_statue
+	jam COMMBINATION_KEY_STATE_UP,mem_commbination_key_statue	
+	setarg 0x0200
+	store 2,mem_lpm_interval
+	jam 0x17,mem_le_local_mtu
+	jam 0x17,mem_le_remote_mtu
+
+	setarg mem_le_tx_buffer0_omemalloc
+	store 2,mem_ble_l2cap_tx_buff0_ptr
+	setarg MOUSE_BLE_L2CAP_TXBUFF_SIZE
+	store 2,mem_ble_l2cap_tx_buff_size_ptr
+	branch mouse_adc_gpio_mux_init
+	
+mouse_param_init:
+	bpatch patch0d_4,mem_patch0d
+	call mouse_param_common_init
+	jam DPI_BUTTON_STATE_UP,mem_mouse_dpi_button_state	
+//===========init spi param==============================
+	setarg 0x0a77
+	store 2,mem_spi_init_clk
+	setsect 0,0x1224
+	setsect 1,0x4000
+	setsect 2,0x0
+	istore 5,contw
+//======================================================	
+	
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_BT_125Hz,mouse_param_init_intervl_end
+	setarg LE_INTERVAL_7_5MS
+	store 2,mem_le_interval_min
+	store 2,mem_le_interval_min+2
+mouse_param_init_intervl_end:
+	call mouse_g24_interval_param_8ms
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_24G_250Hz,mouse_24g_short_sleep_set_end
+	call mouse_g24_interval_param_4ms
+mouse_24g_short_sleep_set_end:
+	fetch 3,mem_24g_short_sleep_set
+	store 3,mem_mouse_24g_short_sleep_set_init
+	fetch 1,mem_device_flag
+	store 1,mem_device_flag_temp
+	fetch 3,mem_le_lap+3
+	store 3,mem_mouse_le_lap_temp
+	setarg 0
+	store 7,mem_mouse_key
+	fetch 1,mem_ui_button_timeout
+	store 1,mem_bt_discovery_count
+	store 1,mem_select_device_count
+	call le_modified_name_adv
+mouse_sensor_set_angle:
+	bpatch patch0d_5,mem_patch0d
+	fetch 1,mem_sensor_angle_default
+	store 1,mem_config_sensor_angle
+	fetch 1,mem_select_sensor_angle_gpio
+	rtneq GPIO_DISABLE
+	fetcht 1,mem_select_sensor_angle_gpio
+	call mouse_gpio_config_input_pu
+	fetcht 1,mem_select_sensor_angle_gpio
+	call gpio_get_bit
+	call mouse_sensor_switch_angle,true
+	branch mouse_gpio_config_input_pd
+mouse_sensor_switch_angle:
+	fetch 1,mem_sensor_angle_switch
+	store 1,mem_config_sensor_angle
+	rtn
+
+mouse_g24_interval_param_4ms:
+	fetch 3,mem_mouse_24g_short_sleep_set_4ms
+	store 3,mem_24g_short_sleep_set
+	fetch 3,mem_mouse_24g_long_sleep_set_4ms
+	store 3,mem_24g_long_sleep_set
+	fetch 1,mem_mouse_24g_fast_hop_count_4ms
+	store 1,mem_24g_fast_hop_count
+	fetch 4,mem_mouse_24g_tsniff_4ms
+	store 4,mem_mouse_24g_tsniff	
+mouse_report_rate_set_250hz:
+	setarg 0x100c0c
+	store 3,mem_24g_interval
+	rtn
+
+mouse_g24_interval_param_8ms:
+	fetch 3,mem_mouse_24g_short_sleep_set_8ms
+	store 3,mem_24g_short_sleep_set
+	fetch 3,mem_mouse_24g_long_sleep_set_8ms
+	store 3,mem_24g_long_sleep_set
+	fetch 1,mem_mouse_24g_fast_hop_count_8ms
+	store 1,mem_24g_fast_hop_count
+	fetch 4,mem_mouse_24g_tsniff_8ms
+	store 4,mem_mouse_24g_tsniff
+mouse_report_rate_set_125hz:
+	setarg 0x1c1919
+	store 3,mem_24g_interval
+	rtn
+
+//mouse_report_rate_set_500hz:
+//	setarg 0x080606
+//	store 3,mem_24g_interval
+//	rtn
+//mouse_report_rate_set_1000hz:
+//	setarg 0x040303
+//	store 3,mem_24g_interval
+//	rtn
+
+
+mouse_start_work:
+	bpatch patch0d_6,mem_patch0d
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_24G_FIRST_AUTO_PAIRING, mouse_24g_first_start_auto_pair_mode
+	fetch 1,mem_device_flag
+	beq MODE_24G_DEVICE,mouse_24g_start_mode
+mouse_le_fast_conn_judge:
+	call mouse_bluetooth_fast_conn_disable
+	fetch 1,mem_device_flag
+	beq MODE_BT_DEVICE1,mouse_le_device1_judge
+	beq MODE_BT_DEVICE2,mouse_le_device2_judge
+	rtn
+mouse_le_device1_judge:
+	fetch 6,mem_device1_addr
+	fetcht 6,mem_mouse_compare_addr
+	isub temp,null
+	branch mouse_bluetooth_fast_conn_init,zero
+	branch mouse_start_reconnect_device
+	
+mouse_le_device2_judge:
+	fetch 6,mem_device2_addr
+	fetcht 6,mem_mouse_compare_addr
+	isub temp,null
+	branch mouse_bluetooth_fast_conn_init,zero
+	branch mouse_start_reconnect_device
+	
+mouse_start_reconnect_device:
+	bpatch patch0d_7,mem_patch0d
+	call mouse_device_le_reconn_led_config
+	arg mem_device1_type,rega
+	fetch 1,mem_device_flag
+	increase -1,pdata
+	mul32 pdata,29,pdata
+	iadd rega,rega
+	ifetch 1,rega
+	store 1,mem_xrecord_mode
+mouse_start_reconnect:	
+	fetch 1,mem_xrecord_mode
+	beq REC_4_MODE,mouse4_0_check_reconn_target
+	branch mouse_bluetooth_fast_conn_init
+
+mouse_wakeup_from_power_check:
+	bpatch patch0e_0,mem_patch0e
+	disable user
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_WAKEUP_FROM_POWER,mouse_wakeup_from_poweron
+	fetch 1,core_lpm_isogate
+	bbit1 cold_wake,mouse_wakeup_from_poweron
+	enable user	//wake from hibernate
+mouse_wakeup_from_poweron:
+	fetch 1,mem_reconn_times_init
+	store 1,mem_reconn_times
+	rtn
+
+mouse4_0_check_reconn_target:
+	jam 1,mem_mouse_le_reconnect_flag
+	fetcht 1,mem_mouse_fast_direct_timeout
+	fetch 1,mem_mouse_bluetooth_fast_conn_flag
+	beq 0xff,mouse4_0_check_reconn_target_next
+	fetcht 1,mem_mouse_direct_timeout
+mouse4_0_check_reconn_target_next:	
+	storet 1,mem_mouse_direct_timer
+	call app_lpm_mult_disable
+	fetch 3,mem_le_adv_direct_ind
+	store 3,mem_le_adv_data+4
+	call mouse_le_check_adv_flag
+	setarg ADV_FLAG_BREDR_NOT_SUPPORTED
+	istore 1,contr
+	arg mem_le_scan_data,contr
+	call mouse_le_adv_data_update
+	branch check_51cmd_adv
+
+
+/**********************system clk**********************************/
+mouse_lpm_check_wake_lock:
+	bmark1 mark_24g,app_get_lpm_wake_lock
+	fetch 1,mem_mouse_clear_sensor_data_flag
+	branch app_get_lpm_wake_lock,blank
+	fetch 1,mem_mouse_le_conn_param_reject
+	beq LE_LPM_DISABLE,app_get_lpm_wake_lock
+	fetch 1,mem_mouse_wheel_trigger
+	nbranch app_get_lpm_wake_lock,blank
+	branch app_put_lpm_wake_lock
+
+/**********************system clk end*****************************/
+
+//mouse_delay_enter_hibernata:
+//	fetch 1,mem_mouse_direct_timeout
+//	store 1,mem_mouse_bluetooth_reconnect_timeout
+//	rtn
+ 
+mouse_app_enter_hibernate:
+	bpatch patch0e_1,mem_patch0e
+	setarg PAN_REG_CONFIG
+	call twspi_read
+	bbit1 3,mouse_app_enter_hibernate_next
+	call mouse_sensor_reset
+	call mouse_sensor_powerdown
+mouse_app_enter_hibernate_next:
+	call mouse_setgpio_hibernate
+	branch app_enter_hibernate
+
+mouse_before_hibernate:
+	bpatch patch0e_2,mem_patch0e
+	call disable_authrom 
+	call mouse_before_hibernate_wheel_gpio_set
+	call mouse_setgpio_hibernate
+	call mouse_flash_power_down
+	fetcht 1,mem_sensor_motion_gpio
+	branch gpio_clr_wake
+
+
+mouse_setgpio_hibernate:
+	bpatch patch0e_3,mem_patch0e
+	call mouse_set_sdio_high
+	call clear_wake
+	call mouse_logo_led_off
+	call mouse_lpm_before_common
+	call mouse_gpio_pd_idle
+mouse_setgpio_hibernate_next:
+	fetcht 1,mem_mouse_reuse_2ice_gpio
+	call mouse_gpio_config_input_pu
+	call mouse_gpio_set_high_impedance
+	call mouse_device_multi_led_all_off
+	call mouse_adc_gpio_set_before_hibernate
+	branch mouse_wheel_gpio_set_before_hibernate
+
+mouse_wheel_gpio_set_before_hibernate:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_WHEEL_WAKE_UP_CANCEL
+mouse_wheel_gpio_clr_wakeup:	
+	fetcht 1,mem_whee_a_data_gpio
+	call gpio_clr_wake
+	fetcht 1,mem_whee_b_data_gpio
+	call gpio_clr_wake
+	fetcht 1,mem_whee_a_data_gpio
+	call mouse_gpio_config_input_pd
+	fetcht 1,mem_whee_b_data_gpio
+	branch mouse_gpio_config_input_pd
+	
+mouse_adc_gpio_set_before_hibernate:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_ADC
+	fetch 1,mem_adc_config_flag
+	rtnne ADC_CONFIG_GPIO
+	fetch 1,mem_adc_channel_gpio
+	arg gpcfg_no_ie,temp
+ 	branch gpio_config_function_int
+	
+
+//set all unused gpio to pull down mode to save power	
+mouse_gpio_pd_idle:
+	arg core_gpio_conf,contr
+	arg GPIO_NUMBER,loopcnt
+mouse_gpio_pd_idle_loop:
+	ifetch 1,contr
+	nbranch mouse_gpio_pd_idle_configured,blank
+	setarg gpcfg_pulldown
+	add contr,-1,contw
+	istore 1,contw
+mouse_gpio_pd_idle_configured:
+	loop mouse_gpio_pd_idle_loop
+	arg core_gpio_conf_hi+GPIO_NUMBER_EXT,pdata
+	isub contr,null
+	rtn zero
+mouse_gpio_pd_idle_ext:
+	arg GPIO_NUMBER_EXT,loopcnt
+	arg core_gpio_conf_hi,contr
+	branch mouse_gpio_pd_idle_loop
+	
+mouse_process_lpm_before:
+	rtnmark1 mark_24g
+	call mouse_lpm_before_common
+	fetch 1,mem_lpm_current_mult
+	nrtn blank					// 7.5ms, no gpio wakeup
+	branch gpio_clr_wake
+
+mouse_lpm_before_common:
+	bpatch patch0e_4,mem_patch0e
+	fetcht 1,mem_whee_a_data_gpio		//reinit gpio pu after disable wheel wakeup
+	call gpio_config_input
+	fetcht 1,mem_whee_b_data_gpio
+	call gpio_config_input
+	
+	call mouse_wheel_check
+	fetch 1,mem_mouse_sensor_sclk_gpio		//set sdio high
+ 	call mouse_gpio_config_output_high
+	call twspi_disable
+	
+	fetcht 1,mem_lbutton_gpio
+	call gpio_set_wake
+	fetcht 1,mem_rbutton_gpio
+	call gpio_set_wake
+	fetcht 1,mem_mbutton_gpio
+	call gpio_set_wake
+
+	fetcht 1,mem_bk_button_gpio
+	call gpio_set_wake
+	fetcht 1,mem_fw_button_gpio
+	call gpio_set_wake
+	fetcht 1,mem_dpi_button_gpio
+	call gpio_set_wake
+	fetcht 1,mem_config_select_device_button_gpio
+	call gpio_set_wake
+
+	fetcht 1,mem_customer_key_gpio
+	call gpio_set_wake
+	
+	fetcht 1,mem_whee_a_data_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_whee_b_data_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_whee_ta_data_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_whee_tb_data_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_sensor_motion_gpio
+	branch gpio_set_wake
+
+
+//short mult: no key 
+mouse_set_mult:
+	fetch 2,mem_ui_state_map
+	rtnbit0 UI_STATE_BLE_CONNECTED
+	copy rega,pdata
+	nbranch le_set_config_short_mult,blank
+	branch le_clr_config_short_mult
+	
+	
+/****************************adc**************************************/	
+mouse_adc_gpio_set:
+	bpatch patch0e_5,mem_patch0e
+	fetch 1,mem_adc_config_flag
+	rtnne ADC_CONFIG_GPIO
+	fetcht 1,mem_adc_channel_gpio
+	branch gpio_set_high_impedance
+
+mouse_adc_gpio_mux_init:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_ADC
+	jam MOUSE_ADC_CHECK_MULTIPLE,mem_adc_mux_status
+	rtn
+
+mouse_adc_read:
+	bpatch patch0e_6,mem_patch0e
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_ADC
+	call mouse_adc_gpio_set
+	fetch 1,mem_adc_config_flag
+	beq ADC_CONFIG_GPIO,mouse_adc_read_gpio_mux_start	// gpio + dpi/switch
+	jam MOUSE_ADC_CHECK_HVIN_MULTIPLE,mem_adc_mux_status
+	branch mouse_adc_read_start
+
+mouse_adc_read_gpio_mux_start:
+	jam MOUSE_ADC_CHECK_GPIO_MULTIPLE,mem_adc_mux_status
+	branch mouse_adc_read_start
+	
+mouse_adc_read_start:
+	bpatch patch0e_7,mem_patch0e
+	call enable_adc
+	call vdd_calculate_by_mode
+	store 2,mem_mouse_vdd_now_vol
+	fetch 1,mem_adc_config_flag
+	bne ADC_CONFIG_GPIO, mouse_adc_data_process
+	fetcht 2,mem_mouse_vdd_now_vol	// BAT= 1.5V, R = 200k, a = a*1.8
+	mul32 temp,8,pdata
+	div pdata,10
+	call get_div_result
+	iadd temp,pdata
+	store 2,mem_mouse_vdd_now_vol
+mouse_adc_data_process:	
+	arg mem_mouse_vdd_calculate_set,rega
+	call mouse_adc_bat_percent_lowpower_out
+	fetch 1,mem_adc_power_flag
+	bbit1 1,mouse_app_enter_hibernate
+	bbit0 0,mouse_adc_no_low_voltage
+	jam 1,mem_mouse_adc_last_low_voltage_flag
+	branch mouse_adc_low_voltage
+	
+mouse_adc_low_voltage:
+	arg MOUSE_LOW_VOLTAGE_FLAG,queue
+	branch mouse_enable_function_flag
+mouse_adc_no_low_voltage:
+	arg MOUSE_LOW_VOLTAGE_FLAG,queue
+	call mouse_disable_function_flag
+	jam 1,mem_adc_low_volatage_led_timer_count
+	fetch 1,mem_mouse_adc_last_low_voltage_flag
+	rtn blank
+	jam 0,mem_mouse_adc_last_low_voltage_flag
+	branch mouse_low_voltage_led_off_judge
+	
+
+mouse_adc_bat_percent_lowpower_out:
+	bpatch patch0f_0,mem_patch0f
+	ifetch 8,rega
+	store 8,mem_pdatatemp
+	fetch 1,mem_adc_mux_status
+	beq MOUSE_ADC_CHECK_BATTERY_ONLY,mouse_adc_bat_percent_lowpower_out_battery
+	beq MOUSE_ADC_CHECK_GPIO_MULTIPLE,mouse_adc_bat_percent_lowpower_out_battery
+	beq MOUSE_ADC_CHECK_HVIN_MULTIPLE,mouse_adc_bat_percent_lowpower_out_hvin_multiple
+mouse_adc_bat_percent_lowpower_out_battery:
+	call adc_clear_no_power_flag
+	call adc_clear_low_power_flag
+	fetch 2,mem_pdatatemp+6
+	fetcht 2,mem_pdatatemp+2	        //shutdown voltage
+	isub temp,null
+	ncall adc_set_no_power_flag,positive
+	fetcht 2,mem_pdatatemp+4		//low voltage
+	isub temp,null
+	ncall adc_set_low_power_flag,positive
+mouse_adc_bat_level_set:
+	fetch 2,mem_pdatatemp+6		//now voltage	
+	fetcht 2,mem_pdatatemp		//full voltage
+	isub temp,null
+	branch mouse_adc_bat_level_100_percent,positive		// now >= full
+	fetcht 2,mem_pdatatemp+2	        //shutdown voltage
+	isub temp,pdata
+	nbranch mouse_adc_bat_level_0_percent,positive		// now < shutdown
+	branch mouse_adc_bat_level_0_percent,blank			// now = shutdown
+	mul32 pdata,100,rega								// (now - shutdown)*100 /(full - shutdown)
+	fetch 2,mem_pdatatemp
+	fetcht 2,mem_pdatatemp+2
+	isub temp,temp
+	copy rega,pdata
+	idiv temp
+	call get_div_result
+	store 1,mem_le_battery_level_percentage
+	rtn
+
+mouse_adc_bat_level_100_percent:
+	jam 100,mem_le_battery_level_percentage
+	rtn
+mouse_adc_bat_level_0_percent:	
+	jam 0,mem_le_battery_level_percentage
+	rtn
+
+mouse_adc_bat_percent_lowpower_out_hvin_multiple:
+	branch mouse_adc_bat_percent_lowpower_out_battery
+	
+/****************************adc end********************************/	
+
+
+/****************************gpio******************************************/
+mouse_gpio_init:
+	fetcht 1,mem_eeprom_wp_gpio
+	call gpio_config_output
+//	call usb_offline_check_init
+	fetcht 1,mem_lbutton_gpio
+	call mouse_gpio_config_input_pu
+	fetcht 1,mem_rbutton_gpio
+	call mouse_gpio_config_input_pu
+	fetcht 1,mem_mbutton_gpio
+	call mouse_gpio_config_input_pu
+	fetcht 1,mem_bk_button_gpio
+	call mouse_gpio_config_input_pu
+	fetcht 1,mem_fw_button_gpio
+	call mouse_gpio_config_input_pu
+	fetcht 1,mem_dpi_button_gpio
+	call mouse_gpio_config_input_pu
+
+	fetcht 1,mem_matrix_public_gpio
+	call mouse_gpio_config_input_pu
+
+	fetcht 1,mem_config_select_device_button_gpio
+	call mouse_gpio_config_input_pu
+
+	fetcht 1,mem_customer_key_gpio
+	call mouse_gpio_config_input_pu
+
+	fetcht 1,mem_whee_a_data_gpio
+	call mouse_gpio_config_input_pu
+
+	fetcht 1,mem_whee_b_data_gpio
+	call mouse_gpio_config_input_pu
+
+	fetcht 1,mem_whee_ta_data_gpio
+	call mouse_gpio_config_input_pu
+	fetcht 1,mem_whee_tb_data_gpio
+	call mouse_gpio_config_input_pu
+
+	fetcht 1,mem_sensor_motion_gpio
+	call mouse_gpio_config_input_pu
+
+	fetcht 1,mem_device_switch_gpio
+	call mouse_gpio_config_input_pu
+	
+	fetcht 1,mem_select_sensor_angle_gpio
+	branch mouse_gpio_config_input_pu
+
+
+mouse_gpio_set_pupd_by_input:
+	sub temp,UI_BUTTON_GPIO_DISABLE,null
+	rtn zero
+	and temp,0x7f,queue
+	fetch 4,core_gpio_in
+	qisolate1 pdata
+	branch mouse_gpio_config_input_pu,true
+mouse_gpio_config_input_pd:
+	sub temp,UI_BUTTON_GPIO_DISABLE,null
+	rtn zero
+	set1 GPIO_ACTIVE_BIT,temp
+	branch gpio_config_input
+
+mouse_gpio_config_input_pu:
+	sub temp,UI_BUTTON_GPIO_DISABLE,null
+	rtn zero 
+	set0 GPIO_ACTIVE_BIT,temp
+	branch gpio_config_input
+
+mouse_gpio_set_high_impedance:
+	fetch 3,mem_mouse_set_high_impedance_bit_set
+	store 3,mem_pdatatemp
+	arg 13,loopcnt
+	arg 0,temp
+mouse_gpio_set_high_impedance_bit_loop:	
+	fetch 3,mem_pdatatemp
+	isolate1 0,pdata
+	call gpio_set_high_impedance,true
+	fetch 3,mem_pdatatemp
+	lshift pdata,pdata		//-->rshift
+	store 3,mem_pdatatemp
+	increase 1,temp
+	loop mouse_gpio_set_high_impedance_bit_loop
+	rtn
+
+/****************************gpio end*******************************/
+
+
+/***********************le device info modify*****************************/
+mouse_le_name_modify:
+	bpatch patch0f_1,mem_patch0f
+	fetch 8,mem_le_name_patch
+	rtn blank
+	fetch 1,mem_le_name_patch_len
+	copy pdata,rega
+	sub pdata,11,null
+	nbranch mouse_le_name_patch_len_overflow,positive
+	
+	call mouse_le_name_clear
+	
+	arg mem_le_adv_swift_pair+9,contw
+	call mouse_le_name_modify_next
+	
+	arg mem_le_scan_data+2,contw
+	call mouse_le_name_modify_next
+	
+	arg mem_le_name,contw
+mouse_le_name_modify_next:
+	arg mem_le_name_patch,contr
+	copy rega,loopcnt
+	branch memcpy
+
+mouse_le_name_clear:
+	arg mem_le_adv_swift_pair+9,contw
+	call mouse_le_name_clear_next
+	
+	arg mem_le_scan_data+2,contw
+	call mouse_le_name_clear_next
+
+	arg mem_le_name,contw
+mouse_le_name_clear_next:
+	arg 11,loopcnt
+	branch clear_mem	
+
+mouse_le_name_patch_len_overflow:
+	call mouse_le_swift_pair_disable
+	
+	fetch 1,mem_le_name_patch_len
+	increase 1,pdata
+	store 1,mem_le_adv_swift_pair
+	jam 9,mem_le_adv_swift_pair+1
+	arg mem_le_name_patch,contr
+	arg mem_le_adv_swift_pair+2,contw
+	copy rega,loopcnt
+	call memcpy
+
+	fetch 1,mem_le_name_patch_len
+	increase 1,pdata
+	store 1,mem_le_scan_data
+	jam 9,mem_le_scan_data+1
+	arg mem_le_name_patch,contr
+	arg mem_le_scan_data+2,contw
+	copy rega,loopcnt
+	call memcpy
+mouse_le_name_patch_len_next:
+	arg mem_le_name_patch_len,contr
+	arg mem_le_name_len,contw
+	copy rega,loopcnt
+	increase 1,loopcnt
+	branch memcpy
+
+mouse_le_swift_pair_disable:
+	arg mem_le_adv_swift_pair,contw
+	arg 20,loopcnt
+	branch clear_mem
+
+/***********************le device info modify end*************************/
+
+
+/*******************spi*****************************/
+mouse_sensor_spi_init:
+	call mouse_spid_init_pin
+	jam 0x73,mem_spi_init_clk
+//	jam 0x1e,mem_spi_init_delay_time
+	call mouse_spi_init
+	branch twspi_enable
+	
+mouse_spi_write_flash_cb:
+mouse_spi_init:
+	branch spid_init
+	
+mouse_spid_init_pin:
+	fetch 1,mem_mouse_sensor_sclk_gpio
+ 	arg gpcfg_spid_sck,temp
+ 	call gpio_config_function_int
+ 	fetch 1,mem_mouse_sensor_sdio_gpio
+ 	arg gpcfg_spid_sdio,temp
+ 	branch gpio_config_function_int
+
+
+/*******************spi end**************************/
+
+mouse_motion:
+	bpatch patch0f_2,mem_patch0f
+	disable user
+	setarg 0
+	store 6,mem_mouse_x
+	call mouse_check_sensor_data
+	setarg 0x0089
+	call twspi_write	
+	call mouse_setting_sensor_type
+	call mouse_zwheel
+	call mouse_t_zwheel
+	call mouse_key
+	fetch 1,mem_mouse_key
+	and_into 0x1f,pdata
+	store 1,mem_mouse_key
+	nbranch mouse_drawing_optima_init,user
+	call mouse_drawing_optima
+	branch mouse_no_data_timer_init
+
+
+/*******************wheel*************************/
+mouse_zwheel:
+	fetch 1,mem_mouse_z_data
+	rtn blank	
+	store 1,mem_mouse_z
+	jam 0,mem_mouse_z_data
+	branch enable_user
+	
+mouse_t_zwheel:
+	fetch 1,mem_mouse_tz_data
+	rtn blank	
+	store 1,mem_mouse_tz
+	jam 0,mem_mouse_tz_data
+	branch enable_user
+
+mouse_wheel_check:
+	call mouse_t_wheel_scan
+	call mouse_wheel_scan
+	fetch 1,mem_wheel_tb_new_pinlevel
+	fetcht 1,mem_wheel_tb_old_pinlevel
+	store 1,mem_wheel_tb_old_pinlevel
+	isub temp,null
+	nbranch app_lpm_wake_auto_lock,zero
+	fetch 1,mem_mwheel_b_new_pinlevel
+	fetcht 1,mem_mwheel_b_old_pinlevel
+	store 1,mem_mwheel_b_old_pinlevel
+	isub temp,null
+	nbranch app_lpm_wake_auto_lock,zero
+	rtn
+mouse_t_wheel_scan:
+	fetch 1,mem_whee_ta_data_gpio
+	rtneq GPIO_DISABLE
+	arg 0,rega
+	fetcht 1,mem_whee_ta_data_gpio
+	call gpio_get_bit
+	setflag true,0,rega
+	fetcht 1,mem_whee_tb_data_gpio
+	call gpio_get_bit
+	setflag true,1,rega
+	copy rega,pdata
+	store 1,mem_wheel_tb_new_pinlevel
+	beq 0x01,mouse_t_wheel_scan_judge1
+	beq 0x02,mouse_t_wheel_scan_judge2
+	fetch 1,mem_wheel_tog
+	bbit1 7,mouse_t_wheel_scan_judge3
+	rtn
+
+mouse_t_wheel_scan_judge1:
+	fetch 1,mem_wheel_tb_old_pinlevel
+	beq 0,mouse_t_wheel_scan_judge11
+	beq 3,mouse_t_wheel_scan_judge12
+	rtn
+mouse_t_wheel_scan_judge2:
+	fetch 1,mem_wheel_tb_old_pinlevel
+	beq 0,mouse_t_wheel_scan_judge21
+	beq 3,mouse_t_wheel_scan_judge22
+	rtn
+mouse_t_wheel_scan_judge11:
+	jam 0x82,mem_wheel_tog
+	rtn
+mouse_t_wheel_scan_judge12:
+	jam 0x81,mem_wheel_tog
+	rtn
+mouse_t_wheel_scan_judge21:
+	jam 0x80,mem_wheel_tog
+	rtn
+mouse_t_wheel_scan_judge22:
+	jam 0x83,mem_wheel_tog
+	rtn
+mouse_t_wheel_scan_judge3:
+	fetch 1,mem_wheel_tog
+	set0 7,pdata
+	store 1,mem_wheel_tog
+	beq 0,mouse_t_wheel_scan_judge30
+	beq 1,mouse_t_wheel_scan_judge31
+	beq 2,mouse_t_wheel_scan_judge32
+	beq 3,mouse_t_wheel_scan_judge33
+	rtn
+mouse_t_wheel_scan_judge30:
+	fetch 1,mem_wheel_tb_new_pinlevel
+	beq 3,mouse_wheel_t_forward
+	rtn
+mouse_t_wheel_scan_judge31:
+	fetch 1,mem_wheel_tb_new_pinlevel
+	beq 0,mouse_wheel_t_forward
+	rtn
+mouse_t_wheel_scan_judge32:
+	fetch 1,mem_wheel_tb_new_pinlevel
+	beq 3,mouse_wheel_t_back
+	rtn
+mouse_t_wheel_scan_judge33:
+	fetch 1,mem_wheel_tb_new_pinlevel
+	beq 0,mouse_wheel_t_back
+	rtn
+mouse_wheel_t_forward:
+	fetch 1,mem_mouse_tz_data
+	increase 1,pdata
+	store 1,mem_mouse_tz_data
+	rtn
+mouse_wheel_t_back:
+	fetch 1,mem_mouse_tz_data
+	increase -1,pdata
+	store 1,mem_mouse_tz_data
+	rtn
+
+
+mouse_wheel_scan:
+	fetch 1,mem_whee_a_data_gpio
+	rtneq GPIO_DISABLE
+	arg 0,rega
+	fetcht 1,mem_whee_a_data_gpio
+	call gpio_get_bit
+	setflag true,0,rega
+	fetcht 1,mem_whee_b_data_gpio
+	call gpio_get_bit
+	setflag true,1,rega
+	copy rega,pdata
+	store 1,mem_mwheel_b_new_pinlevel
+	beq 0x01,mouse_wheel_scan_judge1
+	beq 0x02,mouse_wheel_scan_judge2
+	fetch 1,mem_mwheel_tog
+	bbit1 7,mouse_wheel_scan_judge3
+	rtn
+
+mouse_wheel_scan_judge1:
+	fetch 1,mem_mwheel_b_old_pinlevel
+	beq 0,mouse_wheel_scan_judge11
+	beq 3,mouse_wheel_scan_judge12
+	rtn
+mouse_wheel_scan_judge2:
+	fetch 1,mem_mwheel_b_old_pinlevel
+	beq 0,mouse_wheel_scan_judge21
+	beq 3,mouse_wheel_scan_judge22
+	rtn
+mouse_wheel_scan_judge11:
+	jam 0x82,mem_mwheel_tog
+	rtn
+mouse_wheel_scan_judge12:
+	jam 0x81,mem_mwheel_tog
+	rtn
+mouse_wheel_scan_judge21:
+	jam 0x80,mem_mwheel_tog
+	rtn
+mouse_wheel_scan_judge22:
+	jam 0x83,mem_mwheel_tog
+	rtn
+mouse_wheel_scan_judge3:
+	fetch 1,mem_mwheel_tog
+	set0 7,pdata
+	store 1,mem_mwheel_tog
+	beq 0,mouse_wheel_scan_judge30
+	beq 1,mouse_wheel_scan_judge31
+	beq 2,mouse_wheel_scan_judge32
+	beq 3,mouse_wheel_scan_judge33
+	rtn
+mouse_wheel_scan_judge30:
+	fetch 1,mem_mwheel_b_new_pinlevel
+	beq 3,mouse_wheel_forward
+	rtn
+mouse_wheel_scan_judge31:
+	fetch 1,mem_mwheel_b_new_pinlevel
+	beq 0,mouse_wheel_forward
+	rtn
+mouse_wheel_scan_judge32:
+	fetch 1,mem_mwheel_b_new_pinlevel
+	beq 3,mouse_wheel_back
+	rtn
+mouse_wheel_scan_judge33:
+	fetch 1,mem_mwheel_b_new_pinlevel
+	beq 0,mouse_wheel_back
+	rtn
+mouse_wheel_forward:
+	fetch 1,mem_mouse_z_data
+	increase 1,pdata
+	store 1,mem_mouse_z_data
+	rtn
+mouse_wheel_back:
+	fetch 1,mem_mouse_z_data
+	increase -1,pdata
+	store 1,mem_mouse_z_data
+	rtn
+
+
+mouse_wheel_gpio_set_wake:
+	fetcht 1,mem_whee_a_data_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_whee_b_data_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_whee_ta_data_gpio
+	call gpio_set_wake_by_current_state
+	fetcht 1,mem_whee_tb_data_gpio
+	branch gpio_set_wake_by_current_state
+	
+mouse_before_hibernate_wheel_gpio_set:
+	fetcht 1,mem_whee_a_data_gpio
+	call mouse_gpio_set_pupd_by_input
+	fetcht 1,mem_whee_b_data_gpio
+	call mouse_gpio_set_pupd_by_input
+	fetcht 1,mem_whee_ta_data_gpio
+	call mouse_gpio_set_pupd_by_input
+	fetcht 1,mem_whee_tb_data_gpio
+	branch mouse_gpio_set_pupd_by_input
+
+mouse_wheel_trigger:
+	fetch 2,mem_mouse_z
+	rtn blank
+	jam 1,mem_mouse_wheel_trigger
+	jam 10,mem_mouse_wheel_trigger_timer
+	rtn
+
+mouse_wheel_trigger_timer:
+	arg mem_mouse_wheel_trigger_timer,regc
+	arg mouse_wheel_trigger_disable,regb
+	branch timer_single_step
+mouse_wheel_trigger_disable:
+	jam 0,mem_mouse_wheel_trigger
+	rtn
+
+
+/*
+mouse_set_qdecoder_x:
+	arg MOUSE_DEFAULT_XA_GPIO,temp
+	call mouse_gpio_config_input_pu
+	arg MOUSE_DEFAULT_XA_GPIO,temp
+	call gpio_get_bit
+	rtn true
+	fetch 1,core_qdec_cntx
+	set1 4,pdata
+	store 1,core_qdec_cntx
+	rtn
+*/	
+	
+/*******************wheel end**********************/
+
+
+/********************dpi******************************/
+mouse_dpi_check:
+	fetch 1,mem_dpi_button_gpio
+	rtneq GPIO_DISABLE
+	arg 0,rega
+	jam MOUSE_DPI_KEY,mem_mouse_key_temp
+	fetcht 1,mem_dpi_button_gpio
+	call mouse_dpi_key_check
+mouse_dpi_check_next:
+	store 1,mem_mouse_dpikey_press_status
+	fetch 1,mem_matrix_public_gpio
+	beq GPIO_DISABLE,mouse_3io6key_dpi_check_end
+	call mouse_matrix_public_gpio_reset
+mouse_dpi_check_exit:	
+	copy rega,pdata
+	bbit1 MOUSE_DPI_KEY,mouse_dpi_down
+	branch mouse_dpi_up
+	
+mouse_dpi_key_check:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_DPI_KEY_CONNECT_GND,mouse_dpi_key_connect_gnd
+	fetch 1,mem_mouse_dpikey_press_status
+	copy pdata,regc
+	fetch 1,mem_matrix_public_gpio
+	beq GPIO_DISABLE,mouse_3io6key_check
+mouse_dpi_key_check_next:
+	fetch 1,mem_mouse_ghost_flag
+	nbranch mouse_dpi_check_end,blank
+mouse_dpi_key_connect_matrix:
+	call gpio_get_bit
+	fetcht 1,mem_matrix_public_gpio
+	branch mouse_dpi_key_connect_gnd,true
+	fetcht 1,mem_matrix_public_gpio
+	call gpio_out_active
+	fetcht 1,mem_dpi_button_gpio
+	fetch 1,mem_mouse_dpikey_press_status
+	branch mouse_check_key_connect_gnd
+
+mouse_3io6key_dpi_check_end:
+	fetcht 1,mem_dpi_button_gpio
+	call mouse_gpio_config_input_pu
+	branch mouse_dpi_check_exit
+
+mouse_dpi_check_end:
+	jam DPI_BUTTON_STATE_UP,mem_mouse_dpi_button_state
+	jam 0,mem_mouse_dpikey_press_status
+	rtn
+
+mouse_dpi_key_connect_gnd:
+	fetch 1,mem_mouse_dpikey_press_status
+	branch mouse_check_key_connect_gnd
+
+mouse_dpi_down:
+	fetch 1,mem_mouse_dpi_button_state
+	rtneq DPI_BUTTON_STATE_DOWN
+	jam DPI_BUTTON_STATE_DOWN,mem_mouse_dpi_button_state
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit1 MOUSE_ENABLE_SELECT_DEVICE_BY_DPI_BUTTON
+	rtnbit1 MOUSE_ENABLE_DPI_KEY_LONG_PRESS_DISCONVERY
+	branch mouse_dpi_process
+
+mouse_dpi_up:
+	fetch 1,mem_mouse_dpi_button_state
+	rtneq DPI_BUTTON_STATE_UP
+	jam DPI_BUTTON_STATE_UP,mem_mouse_dpi_button_state
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_SELECT_DEVICE_BY_DPI_BUTTON,mouse_dpi_up_next
+	bbit1 MOUSE_ENABLE_DPI_KEY_LONG_PRESS_DISCONVERY,mouse_dpi_up_next
+	rtn
+mouse_dpi_up_next:	
+	fetch 1,mem_mouse_dpi_long_press_flag
+	nbranch mouse_dpi_up_after_long_press,blank
+	fetch 1,mem_select_device_count
+	ncall mouse_dpi_process,blank
+mouse_dpi_up_after_long_press:	
+	jam 0,mem_mouse_dpi_long_press_flag
+	fetch 1,mem_ui_button_timeout
+	store 1,mem_select_device_count	
+	store 1,mem_bt_discovery_count	
+	rtn
+	
+mouse_dpi_process:	
+	bpatch patch0f_3,mem_patch0f
+	call mouse_dpi_ghost_check
+	rtn user
+mouse_dpi_process_next:
+	fetch 1,mem_mouse_dpi
+	
+	copy pdata,temp
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_DOUBLE_DPI_KEY,mouse_double_dpi_check
+	copy temp,pdata
+	
+	increase 1,pdata
+	and pdata,0x03,pdata
+mouse_dpi_level_store:	
+	store 1,mem_mouse_dpi
+	call mouse_setting_dpi
+	branch mouse_store_dpi_info_check
+
+
+/***************************another dpi key dpi**********************/
+
+mouse_double_dpi_check:
+	fetch 1,mem_dpi_another_button_down_enable
+	nbranch mouse_another_dpi_button_down,blank
+mouse_dpi_increase:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_DPI_LEVEL_4,mouse_dpi_increase_level_4
+	copy temp,pdata
+	rtneq MOUSE_DPI_LEVEL2
+mouse_dpi_increase_level:
+	beq MOUSE_DPI_LEVEL1,mouse_dpi_level_3	//1600
+	beq MOUSE_DPI_LEVEL3,mouse_dpi_level_2 	//1200
+	rtn
+
+mouse_dpi_level_1:		//800
+	setarg 2
+	branch mouse_dpi_level_store
+mouse_dpi_level_2:		//1200
+	setarg 0
+	branch mouse_dpi_level_store
+mouse_dpi_level_3:		//1600
+	setarg 1
+	branch mouse_dpi_level_store
+mouse_dpi_level_4:		//1000
+	setarg 3
+	branch mouse_dpi_level_store	
+
+mouse_dpi_increase_level_4:
+	copy temp,pdata			//0->1,2->3,3->0
+	rtneq MOUSE_DPI_LEVEL2
+	beq MOUSE_DPI_LEVEL1,mouse_dpi_level_3
+	beq MOUSE_DPI_LEVEL3,mouse_dpi_level_4
+	beq MOUSE_DPI_LEVEL4,mouse_dpi_level_2
+	rtn
+mouse_dpi_decrease_level_4:
+	copy temp,pdata			//0->3,1->0,3->2
+	rtneq MOUSE_DPI_LEVEL3
+	beq MOUSE_DPI_LEVEL1,mouse_dpi_level_4
+	beq MOUSE_DPI_LEVEL2,mouse_dpi_level_2
+	beq MOUSE_DPI_LEVEL4,mouse_dpi_level_1
+	rtn
+
+mouse_another_dpi_button_down:
+mouse_dpi_decrease:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_DPI_LEVEL_4,mouse_dpi_decrease_level_4
+	copy temp,pdata
+	rtneq MOUSE_DPI_LEVEL3
+mouse_dpi_decrease_level:
+	beq MOUSE_DPI_LEVEL1,mouse_dpi_level_1
+	beq MOUSE_DPI_LEVEL2,mouse_dpi_level_2
+	rtn
+	
+
+/*************************another dpi key dpi end********************/
+
+mouse_dpi_ghost_check:
+	disable user
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit1 MOUSE_ENABLE_DPI_KEY_CONNECT_GND
+	branch mouse_ghost_key_value_check
+	
+mouse_dpi_key_check_long_press:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_SELECT_DEVICE_BY_DPI_BUTTON,mouse_select_device_by_dpi_button
+	bbit1 MOUSE_ENABLE_DPI_KEY_LONG_PRESS_DISCONVERY,mouse_discovery_by_dpi_button
+	rtn
+
+mouse_select_device_by_dpi_button:
+	fetch 1,mem_mouse_dpi_button_state
+	rtnne DPI_BUTTON_STATE_DOWN	
+	arg mem_select_device_count,regc
+	arg mouse_ready_reconnection_by_dpi_button,regb
+	branch timer_single_step
+
+mouse_ready_reconnection_by_dpi_button:
+	jam 1,mem_mouse_dpi_long_press_flag
+	branch mouse_ready_reconnection_by_button
+
+mouse_discovery_by_dpi_button:
+	fetch 1,mem_mouse_dpi_button_state
+	rtnne DPI_BUTTON_STATE_DOWN	
+	arg mem_bt_discovery_count,regc
+	arg mouse_long_dpi_button_bt_discovery,regb
+	branch timer_single_step
+
+mouse_long_dpi_button_bt_discovery:
+	jam 1,mem_mouse_dpi_long_press_flag
+	branch mouse_long_button_bt_discovery
+
+mouse_setting_dpi_4_level:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit1 MOUSE_ENABLE_DPI_LEVEL_4
+	fetch 1,mem_mouse_dpi
+	rtnne MOUSE_DPI_LEVEL4
+mouse_dpi_reinit_set:
+	jam MOUSE_DPI_LEVEL1,mem_mouse_dpi
+	rtn
+	
+mouse_setting_dpi:
+	bpatch patch0f_4,mem_patch0f
+	call mouse_setting_dpi_4_level
+	call mouse_dpi_led_blink_delay
+mouse_setting_sensor_type:
+	bpatch patch0f_5,mem_patch0f
+	fetch 1,mem_config_sensor_type
+	beq S201X,mouse_seting_S201_dpi
+	beq P3212,mouse_seting_3212_dpi
+	beq KA8G2,mouse_seting_ka8g2_dpi
+	fetch 1,mem_mouse_dpi
+	beq MOUSE_DPI_LEVEL1,mouse_set_cpi0		//1200
+	beq MOUSE_DPI_LEVEL2,mouse_set_cpi1		//1600
+	beq MOUSE_DPI_LEVEL3,mouse_set_cpi2		//800
+	beq MOUSE_DPI_LEVEL4,mouse_set_cpi3		//1000
+mouse_set_cpi1:	//320x+8009
+	fetcht 1,mem_320x_dpi_1
+	branch mouse_dpi_store
+mouse_set_cpi0:
+	fetcht 1,mem_320x_dpi_0
+	branch mouse_dpi_store
+mouse_set_cpi2:
+	fetcht 1,mem_320x_dpi_2
+	branch mouse_dpi_store
+mouse_set_cpi3:
+	fetcht 1,mem_320x_dpi_3
+mouse_dpi_store:
+	fetch 1,mem_config_sensor_type
+	beq P3065_XY,mouse_3065xy_set_dpi
+	beq MX8650,mouse_3065xy_set_dpi
+	beq KA8,mouse_ka8_set_dpi
+	beq P6520,mouse_ka8_set_dpi
+	beq P8009,mouse_3065xy_set_dpi
+mouse_dpi_write:		// 3205  1  2  3  4
+	storet 1,mem_mouse_cpi_count
+	setarg MOUSE_DPI_ADDRESS
+	call twspi_read
+	and pdata,0xf8,temp
+	fetch 1,mem_mouse_cpi_count
+	iadd temp,pdata
+	lshift8 pdata,pdata
+	add pdata,MOUSE_DPI_ADDRESS,pdata
+	branch twspi_write
+
+mouse_3065xy_set_dpi:	// 0 1 2 3
+	increase -1,temp
+	branch mouse_dpi_write
+
+mouse_ka8_set_dpi:	// 3 4 5 6
+	increase 2,temp
+	branch mouse_dpi_write
+
+mouse_seting_S201_dpi:
+	fetch 1,mem_mouse_dpi
+	beq MOUSE_DPI_LEVEL1,mouse_set_S201_dpi_0	//1200
+	beq MOUSE_DPI_LEVEL2,mouse_set_S201_dpi_2	//2400
+	beq MOUSE_DPI_LEVEL3,mouse_set_S201_dpi_3	//3200
+mouse_set_S201_dpi_0:	//1200
+	fetch 1,mem_sensor_s201_dpi_0
+	copy pdata,rega
+	branch mouse_dpi_S201_store
+
+mouse_set_S201_dpi_1:	//1600
+	fetch 1,mem_sensor_s201_dpi_1
+	copy pdata,rega
+	branch mouse_dpi_S201_store
+	
+mouse_set_S201_dpi_2:	//2400
+	fetch 1,mem_sensor_s201_dpi_2
+	copy pdata,rega
+	branch mouse_dpi_s201_store
+
+mouse_set_S201_dpi_3:	//3200
+	fetch 1,mem_sensor_s201_dpi_3
+	copy pdata,rega
+	branch mouse_dpi_s201_store
+
+mouse_set_S201_dpi_4:	//800
+	fetch 1,mem_sensor_s201_dpi_4
+	copy pdata,rega
+mouse_dpi_s201_store:
+	setarg 0xc309
+	call twspi_write
+	copy rega,pdata
+	lshift8 pdata,pdata
+	add pdata,0x23,pdata
+	call twspi_write
+	setarg 0x0009
+	branch twspi_write
+
+mouse_seting_3212_dpi:
+	fetch 1,mem_mouse_dpi
+	beq MOUSE_DPI_LEVEL1,mouse_set_p3212_cpi0	//1200
+	beq MOUSE_DPI_LEVEL2,mouse_set_p3212_cpi1	//1600
+	beq MOUSE_DPI_LEVEL3,mouse_set_p3212_cpi2	//2400
+	beq MOUSE_DPI_LEVEL4,mouse_set_p3212_cpi3	//800
+mouse_set_p3212_cpi1:
+	fetch 1,mem_3212_dpi_1
+	branch mouse_p3212_dpi
+mouse_set_p3212_cpi0:
+	fetch 1,mem_3212_dpi_0
+	branch mouse_p3212_dpi
+mouse_set_p3212_cpi2:
+	fetch 1,mem_3212_dpi_2
+	branch mouse_p3212_dpi
+mouse_set_p3212_cpi3:
+	fetch 1,mem_3212_dpi_3
+mouse_p3212_dpi:
+	store 1,mem_mouse_cpi_count
+	lshift8 pdata,pdata
+	copy pdata,rega
+	add pdata,MOUSE_P3212_DPI_XADDRESS,pdata
+  	call twspi_write
+ 	copy rega,pdata
+  	add pdata,MOUSE_P3212_DPI_YADDRESS,pdata
+	branch twspi_write
+
+mouse_seting_ka8g2_dpi:
+	fetch 1,mem_mouse_dpi
+	beq MOUSE_DPI_LEVEL1,mouse_set_pka8g2_cpi0		//1600
+	beq MOUSE_DPI_LEVEL2,mouse_set_pka8g2_cpi1		//2400
+	beq MOUSE_DPI_LEVEL3,mouse_set_pka8g2_cpi2		//3200
+	beq MOUSE_DPI_LEVEL4,mouse_set_pka8g2_cpi3		//800
+mouse_set_pka8g2_cpi1:
+	fetch 1,mem_ka8g2_dpi_1
+	branch mouse_p3212_dpi
+
+mouse_set_pka8g2_cpi0:
+	fetch 1,mem_ka8g2_dpi_0
+	branch mouse_p3212_dpi
+	
+mouse_set_pka8g2_cpi2:
+	fetch 1,mem_ka8g2_dpi_2
+	branch mouse_p3212_dpi
+
+mouse_set_pka8g2_cpi3:
+	fetch 1,mem_ka8g2_dpi_3
+	branch mouse_p3212_dpi
+
+		
+/********************dpi end***************************/		
+
+
+/***********************key******************************/
+
+mouse_key:
+	call mouse_check_firekey_gpio
+	fetch 1,mem_fire_key_flag
+	nbranch fire_key_press,blank
+	fetch 1,mem_fire_key_status
+	nbranch fire_key_process,blank
+	
+	call mouse_check_key_gpio
+	call mouse_ghost_key_check
+	call mouse_set_mult
+	call mouse_24g_key
+	copy rega,pdata
+	fetcht 1,mem_mouse_key_last
+	store 1,mem_mouse_key_last
+	store 1,mem_mouse_key
+	ixor temp,pdata
+	sub pdata,0,null
+	rtn zero
+	branch enable_user
+
+mouse_24g_key:
+	rtnmark0 mark_24g
+	copy rega,pdata
+	rtn blank
+	store 1,mem_mouse_key
+	branch enable_user
+
+	
+/************************************ghost key******************************/
+
+mouse_ghost_key_check:
+	jam 0,mem_mouse_matrix_key_cow_count
+	jam 0,mem_mouse_matrix_key_row_count
+	jam 0,mem_mouse_ghost_flag
+	copy pdata,regb
+	fetcht 1,mem_lbutton_gpio
+	fetch 1,mem_bk_button_gpio
+	isub temp,null
+	branch mouse_matrix_ghost_key_L_BK,zero
+	fetch 1,mem_fw_button_gpio
+	isub temp,null
+	branch mouse_matrix_ghost_key_L_FW,zero
+	fetcht 1,mem_mbutton_gpio
+	fetch 1,mem_bk_button_gpio
+	isub temp,null
+	branch mouse_ghost_key_MBK_RFW,zero
+	branch mouse_ghost_key_MFW_RBK
+
+mouse_matrix_ghost_key_L_BK:
+	fetcht 1,mem_mbutton_gpio
+	fetch 1,mem_fw_button_gpio
+	isub temp,null
+	branch mouse_ghost_key_LBK_MFW,zero
+	branch mouse_ghost_key_LBK_RFW
+
+mouse_matrix_ghost_key_L_FW:
+	fetcht 1,mem_mbutton_gpio
+	fetch 1,mem_bk_button_gpio
+	isub temp,null
+	branch mouse_ghost_key_LFW_MBK,zero
+	branch mouse_ghost_key_LFW_RBK
+
+mouse_ghost_key_LBK_MFW:
+	call mouse_ghost_key_check_L_BK
+	call mouse_ghost_key_check_M_FW
+	branch mouse_ghost_key_check_next
+
+mouse_ghost_key_LBK_RFW:
+	call mouse_ghost_key_check_L_BK
+	branch mouse_ghost_key_RFW
+
+mouse_ghost_key_LFW_MBK:
+	call mouse_ghost_key_check_L_FW
+	call mouse_ghost_key_check_M_BK
+	branch mouse_ghost_key_check_next
+	
+mouse_ghost_key_LFW_RBK:
+	call mouse_ghost_key_check_L_FW
+	branch mouse_ghost_key_RBK
+	
+mouse_ghost_key_MBK_RFW:
+	call mouse_ghost_key_check_M_BK
+mouse_ghost_key_RFW:
+	call mouse_ghost_key_check_R_FW
+	branch mouse_ghost_key_check_next
+	
+mouse_ghost_key_MFW_RBK:
+	call mouse_ghost_key_check_M_FW
+mouse_ghost_key_RBK:
+	call mouse_ghost_key_check_R_BK
+mouse_ghost_key_check_next:
+	call mouse_ghost_key_check_BK_FW
+	call mouse_ghost_key_check_LMR
+	fetch 1,mem_mouse_matrix_key_row_count
+	rtn blank
+	fetch 1,mem_mouse_matrix_key_cow_count
+	rtn blank
+	jam 1,mem_mouse_ghost_flag
+	fetch 1,mem_mouse_key_last		// matrix have ghost key
+	copy pdata,rega
+	rtn
+
+mouse_ghost_key_check_L_BK:
+	and regb,MOUSE_L_BK_BUTTON,pdata
+	beq MOUSE_L_BK_BUTTON,mouse_matrix_cow_more_than_one_key
+	rtn
+mouse_ghost_key_check_M_BK:
+	and regb,MOUSE_L_BK_BUTTON,pdata
+	beq MOUSE_M_BK_BUTTON,mouse_matrix_cow_more_than_one_key
+	rtn
+mouse_ghost_key_check_R_BK:
+	and regb,MOUSE_L_BK_BUTTON,pdata
+	beq MOUSE_R_BK_BUTTON,mouse_matrix_cow_more_than_one_key
+	rtn
+mouse_ghost_key_check_L_FW:
+	and regb,MOUSE_L_BK_BUTTON,pdata
+	beq MOUSE_L_FW_BUTTON,mouse_matrix_cow_more_than_one_key
+	rtn
+mouse_ghost_key_check_M_FW:
+	and regb,MOUSE_M_FW_BUTTON,pdata
+	beq MOUSE_M_FW_BUTTON,mouse_matrix_cow_more_than_one_key
+	rtn
+mouse_ghost_key_check_R_FW:
+	and regb,MOUSE_M_FW_BUTTON,pdata
+	beq MOUSE_R_FW_BUTTON,mouse_matrix_cow_more_than_one_key
+	rtn
+
+mouse_ghost_key_check_BK_FW:
+	and regb,MOUSE_BK_FW_BUTTON,pdata
+	beq MOUSE_BK_FW_BUTTON,mouse_matrix_row_more_than_one_key
+	rtn	
+
+mouse_ghost_key_check_LMR:
+	and temp,MOUSE_LMR_BUTTON,pdata	// key LMR press
+	beq MOUSE_LR_BUTTON,mouse_matrix_row_more_than_one_key
+	beq MOUSE_LM_BUTTON,mouse_matrix_row_more_than_one_key
+	beq MOUSE_RM_BUTTON,mouse_matrix_row_more_than_one_key
+	beq MOUSE_LMR_BUTTON,mouse_matrix_row_more_than_one_key
+	rtn
+
+
+mouse_matrix_row_more_than_one_key:
+	jam 1,mem_mouse_matrix_key_row_count
+	rtn
+
+mouse_matrix_cow_more_than_one_key:
+	jam 1,mem_mouse_matrix_key_cow_count
+	rtn
+
+/************************************ghost key end******************************/
+
+
+
+/************************************double dpi key******************************/
+
+mouse_dpi_another_gpio_check:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_DOUBLE_DPI_KEY
+	bbit0 MOUSE_ENABLE_ANOTHER_DPI_KEY_CONNECT_GND,mouse_dpi_another_gpio_connect_vin_check
+mouse_dpi_another_gpio_connect_gnd_check:	
+	fetch 1,mem_dpi_another_button_gpio
+	call mouse_gpio_config_output_high
+	call mouse_dpi_another_check
+	fetcht 1,mem_dpi_another_button_gpio
+	branch mouse_gpio_config_input_pu	
+
+mouse_dpi_another_gpio_connect_vin_check:
+	fetch 1,mem_dpi_another_button_gpio
+	call mouse_gpio_config_output_low
+	jam MOUSE_DPI_ANOTHER_KEY,mem_mouse_key_temp_patch
+	fetcht 1,mem_dpi_another_button_gpio
+	fetch 1,mem_dpi_another_press_status
+	call mouse_check_key_connect_vin_new
+	call mouse_dpi_another_state_check
+	fetcht 1,mem_dpi_another_button_gpio
+	branch mouse_gpio_config_input_pu	
+
+mouse_dpi_another_down_new:
+	call mouse_gpio_config_input_pu	
+	fetch 1,mem_dpi_another_button_state
+	rtneq DPI_BUTTON_STATE_DOWN
+	jam DPI_BUTTON_STATE_DOWN,mem_dpi_another_button_state
+	branch mouse_dpi_process
+
+mouse_dpi_another_check:
+	jam MOUSE_DPI_ANOTHER_KEY,mem_mouse_key_temp_patch
+	fetcht 1,mem_dpi_another_button_gpio
+	fetch 1,mem_dpi_another_press_status	
+	call mouse_check_key_connect_gnd_new
+mouse_dpi_another_state_check:
+	store 1,mem_dpi_another_press_status
+	fetch 1,mem_dpi_another_button_down_enable
+	branch mouse_dpi_another_up,blank	
+mouse_dpi_another_down:
+	fetch 1,mem_dpi_another_button_state
+	rtneq DPI_BUTTON_STATE_DOWN
+	jam DPI_BUTTON_STATE_DOWN,mem_dpi_another_button_state
+	branch mouse_dpi_process
+
+mouse_dpi_another_up:
+	fetch 1,mem_dpi_another_button_state
+	rtneq DPI_BUTTON_STATE_UP
+	jam DPI_BUTTON_STATE_UP,mem_dpi_another_button_state
+	rtn
+
+mouse_check_key_connect_gnd_new:	
+	lshift pdata,pdata
+	copy pdata,regb
+	call gpio_get_bit
+	setflag true,0,regb
+	and regb,0x07,pdata
+	fetcht 1,mem_mouse_key_temp_patch
+	copy temp,queue
+	beq 0x07,mouse_another_dpi_key_press		//  about 17~22ms three times
+	beq 0x00,mouse_another_dpi_key_release
+	rtn
+
+mouse_check_key_connect_vin_new:	
+	lshift pdata,pdata
+	copy pdata,regb
+	call mouse_gpio_config_input_pd
+	call gpio_get_bit
+	setflag true,0,regb
+	and regb,0x07,pdata
+	fetcht 1,mem_mouse_key_temp_patch
+	copy temp,queue
+	beq 0x07,mouse_another_dpi_key_press		//  about 17~22ms three times
+	beq 0x00,mouse_another_dpi_key_release
+	rtn
+
+mouse_another_dpi_key_press:
+	jam 1,mem_dpi_another_button_down_enable
+	rtn
+mouse_another_dpi_key_release:
+	jam 0,mem_dpi_another_button_down_enable
+	rtn
+
+/************************************double dpi key end******************************/
+
+
+
+/************************************fire key************************************/
+
+mouse_check_firekey_gpio:
+	arg 0,regb
+	fetch 1,mem_firebutton_gpio
+	rtneq GPIO_DISABLE
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_FIRE_KEY_CONNECT_GND,mouse_check_firekey_connect_vin
+mouse_check_firekey_connect_gnd:
+	fetcht 1,mem_firebutton_gpio
+	call mouse_gpio_config_input_pu
+	fetcht 1,mem_firebutton_gpio
+	call gpio_get_bit
+	setflag true,0,regb
+mouse_firekey_state_store:	
+	copy regb,pdata
+	store 1,mem_fire_key_flag
+	rtn
+
+mouse_check_firekey_connect_vin:
+	fetcht 1,mem_firebutton_gpio
+	call mouse_gpio_config_input_pd
+	fetcht 1,mem_firebutton_gpio
+	call gpio_get_bit
+	nsetflag true,0,regb
+	branch mouse_firekey_state_store
+
+fire_key_process: 
+	beq 4,fire_key_process_end
+fire_key_press:
+	call firekey_clkn_bt_timer_check 
+	fetch 4,mem_fire_key_delay
+	arg 0xa0,temp      
+	iadd temp,temp
+	copy clkn_bt,pdata
+	isub temp,null
+	nrtn positive
+	store 4,mem_fire_key_delay 
+	fetch 1,mem_fire_key_status
+	beq 0,fire_key_process_start
+	beq 1,fire_key_process_release1
+	beq 2,fire_key_process_start2
+	beq 3,fire_key_process_release2
+	rtn
+
+fire_key_process_start:
+	jam 1,mem_fire_key_status
+fire_key_down:
+	jam 1,mem_mouse_key
+	branch enable_user
+
+fire_key_process_release1:
+	jam 2,mem_fire_key_status
+fire_key_release:
+	jam 0,mem_mouse_key
+	branch enable_user
+
+fire_key_process_start2:
+	jam 3,mem_fire_key_status
+	branch fire_key_down
+
+fire_key_process_release2:
+	jam 0,mem_fire_key_status
+	branch fire_key_release
+
+fire_key_process_end:
+	jam 0,mem_fire_key_status
+	jam 0,mem_mouse_key
+	rtn
+
+firekey_clkn_bt_timer_check:
+	fetcht 4,mem_fire_key_delay
+	copy clkn_bt,pdata
+	isub temp,null
+	ncall firekey_clkn_bt_timer_timeout,positive
+	rtn
+firekey_clkn_bt_timer_timeout:
+	setarg 0
+	store 4,mem_fire_key_delay
+	rtn
+
+/*********************************fire key end*****************************/
+
+
+
+/*********************************matrix key*****************************/
+
+mouse_key_check_once:
+	call mouse_check_key_gpio_once
+	call mouse_check_key_gpio
+	setarg 0x00
+	store 3,mem_mouse_lkey_press_status
+	rtn
+	
+mouse_check_key_gpio:
+	bpatch patch0f_6,mem_patch0f
+	fetch 1,mem_sensor_shutdown_flag
+	ncall mouse_check_key_gpio_once,blank
+	arg 0,rega
+	call mouse_check_lkey_gpio
+	call mouse_check_rkey_gpio
+	call mouse_check_mkey_gpio
+	call mouse_check_bkkey_gpio
+	call mouse_check_fwkey_gpio
+	call mouse_check_firekey_gpio
+	call mouse_check_customerkey_gpio
+	copy rega,pdata
+	rtn
+
+mouse_check_key_gpio_once:
+	setarg 0x030303
+	store 3,mem_mouse_lkey_press_status
+	rtn
+
+mouse_check_lkey_gpio:
+	fetch 1,mem_lbutton_gpio
+	call mouse_gpio_config_output_high
+	jam MOUSE_L_KEY,mem_mouse_key_temp
+	fetcht 1,mem_lbutton_gpio
+	fetch 1,mem_mouse_lkey_press_status
+	call mouse_check_key_connect_gnd
+	store 1,mem_mouse_lkey_press_status
+	fetcht 1,mem_lbutton_gpio
+	branch mouse_gpio_config_input_pu
+
+mouse_check_rkey_gpio:
+	fetch 1,mem_rbutton_gpio
+	call mouse_gpio_config_output_high
+	jam MOUSE_R_KEY,mem_mouse_key_temp
+	fetcht 1,mem_rbutton_gpio
+	fetch 1,mem_mouse_rkey_press_status
+	call mouse_check_key_connect_gnd
+	store 1,mem_mouse_rkey_press_status
+	fetcht 1,mem_rbutton_gpio
+	branch mouse_gpio_config_input_pu
+	
+mouse_check_mkey_gpio:
+	fetch 1,mem_mbutton_gpio
+	call mouse_gpio_config_output_high
+	jam MOUSE_M_KEY,mem_mouse_key_temp
+	fetcht 1,mem_mbutton_gpio
+	fetch 1,mem_mouse_mkey_press_status
+	call mouse_check_key_connect_gnd
+	store 1,mem_mouse_mkey_press_status
+	fetcht 1,mem_mbutton_gpio
+	branch mouse_gpio_config_input_pu
+
+mouse_check_bkkey_gpio:
+	fetch 1,mem_bk_button_gpio
+	rtneq GPIO_DISABLE
+	jam MOUSE_BK_KEY,mem_mouse_key_temp
+	fetch 1,mem_mouse_bkkey_press_status
+	copy pdata,regc
+	fetcht 1,mem_bk_button_gpio
+	fetch 1,mem_matrix_public_gpio
+	beq GPIO_DISABLE,mouse_3io6key_bk_check
+	call gpio_get_bit
+	branch mouse_check_bk_button_connect_gnd,true
+	fetcht 1,mem_matrix_public_gpio
+	call gpio_out_active
+	fetcht 1,mem_bk_button_gpio
+	fetch 1,mem_mouse_bkkey_press_status
+	call mouse_check_key_connect_gnd
+mouse_check_bkkey_gpio_end:	
+	store 1,mem_mouse_bkkey_press_status
+	branch mouse_matrix_public_gpio_reset
+
+mouse_check_bk_button_connect_gnd:
+	fetcht 1,mem_matrix_public_gpio
+	fetch 1,mem_mouse_bkkey_press_status
+	call mouse_check_key_connect_gnd
+	branch mouse_check_bkkey_gpio_end
+
+mouse_3io6key_bk_check:
+	fetch 1,mem_bk_button_gpio
+	call mouse_gpio_config_output_low
+	fetcht 1,mem_bk_button_gpio
+	call mouse_3io6key_check
+	store 1,mem_mouse_bkkey_press_status
+	fetcht 1,mem_bk_button_gpio
+	branch mouse_gpio_config_input_pu
+
+
+mouse_check_fwkey_gpio:
+	fetch 1,mem_fw_button_gpio
+	rtneq GPIO_DISABLE
+	jam MOUSE_FW_KEY,mem_mouse_key_temp
+	fetch 1,mem_mouse_fwkey_press_status
+	copy pdata,regc
+	fetcht 1,mem_fw_button_gpio
+	fetch 1,mem_matrix_public_gpio
+	beq GPIO_DISABLE,mouse_3io6key_fw_check
+	call gpio_get_bit
+	branch mouse_check_fw_button_connect_gnd,true
+	fetcht 1,mem_matrix_public_gpio
+	call gpio_out_active
+	fetcht 1,mem_fw_button_gpio
+	fetch 1,mem_mouse_fwkey_press_status
+	call mouse_check_key_connect_gnd
+mouse_check_fwkey_gpio_end:	
+	store 1,mem_mouse_fwkey_press_status
+mouse_matrix_public_gpio_reset:	
+	fetcht 1,mem_matrix_public_gpio
+	branch mouse_gpio_config_input_pu
+
+mouse_check_fw_button_connect_gnd:
+	fetcht 1,mem_matrix_public_gpio
+	fetch 1,mem_mouse_fwkey_press_status
+	call mouse_check_key_connect_gnd
+	branch mouse_check_fwkey_gpio_end	
+
+mouse_3io6key_fw_check:
+	fetch 1,mem_fw_button_gpio
+	call mouse_gpio_config_output_low
+	fetcht 1,mem_fw_button_gpio
+	call mouse_3io6key_check
+	store 1,mem_mouse_fwkey_press_status
+	fetcht 1,mem_fw_button_gpio
+	branch mouse_gpio_config_input_pu
+
+mouse_check_customerkey_gpio:
+	jam 0,mem_customer_key
+	fetch 1,mem_customer_key_gpio
+	rtneq GPIO_DISABLE
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_KEYBOARD
+	bbit1 MOUSE_ENABLE_CUSTOMER_KEY_CONNECT_VIN_OR_MATRIX,mouse_customer_key_connect_vin
+mouse_customer_key_connect_gnd:
+	jam MOUSE_CUSTOMER_KEY,mem_mouse_key_temp
+	fetcht 1,mem_customer_key_gpio
+	fetch 1,mem_mouse_customerkey_press_status
+	call mouse_check_key_connect_gnd
+	store 1,mem_mouse_customerkey_press_status
+mouse_check_customerkey_gpio_next:
+	copy rega,pdata
+	bbit1 MOUSE_CUSTOMER_KEY,mouse_customerkey_press
+	call mouse_customerkey_release
+mouse_check_customerkey_gpio_exit:
+	fetch 1,mem_customer_data_trigger
+	store 1,mem_customer_data_trigger_last
+	rtn
+
+mouse_customer_key_connect_vin:
+	jam MOUSE_CUSTOMER_KEY,mem_mouse_key_temp
+	fetch 1,mem_mouse_customerkey_press_status
+	copy pdata,regc
+	fetcht 1,mem_customer_key_gpio
+	fetch 1,mem_matrix_public_gpio
+	beq GPIO_DISABLE,mouse_3io6key_customer_key_check_vin
+	call gpio_get_bit
+	branch mouse_check_customer_button_connect_gnd,true
+	fetcht 1,mem_matrix_public_gpio
+	call gpio_out_active
+	fetcht 1,mem_customer_key_gpio
+	fetch 1,mem_mouse_customerkey_press_status
+	call mouse_check_key_connect_gnd
+	branch mouse_check_customerkey_gpio_over
+
+mouse_check_customer_button_connect_gnd:
+	fetcht 1,mem_matrix_public_gpio
+	fetch 1,mem_mouse_customerkey_press_status
+	call mouse_check_key_connect_gnd
+	branch mouse_check_customerkey_gpio_over
+
+mouse_3io6key_customer_key_check_vin:
+	fetch 1,mem_customer_key_gpio
+	call mouse_gpio_config_output_low
+	fetcht 1,mem_customer_key_gpio
+	call mouse_3io6key_check
+mouse_check_customerkey_gpio_over:	
+	store 1,mem_mouse_customerkey_press_status
+	call mouse_check_customerkey_gpio_next
+	fetcht 1,mem_customer_key_gpio
+	branch mouse_gpio_config_input_pu
+	
+
+mouse_customerkey_press:
+	jam 1,mem_customer_data_trigger
+	call mouse_customer_key_need_send
+	branch mouse_check_customerkey_gpio_exit
+
+mouse_customerkey_release:
+	jam 0,mem_customer_data_trigger
+	fetch 1,mem_customer_data_trigger_last
+	rtn blank
+mouse_customer_key_need_send:	
+	jam 1,mem_customer_key
+	rtn	
+
+/*******************************matrix key end***************************/
+
+mouse_check_matrix_button_connect_gnd:	
+	call gpio_get_bit
+	fetcht 1,mem_mouse_key_temp
+	copy temp,queue	
+	branch  mouse_key_press,true
+mouse_key_release:
+	qset0 rega
+	rtn	
+
+mouse_check_key_connect_gnd:	
+	lshift pdata,pdata
+	copy pdata,regb
+	call gpio_get_bit
+	setflag true,0,regb
+mouse_check_key_connect_gnd_1:
+	and regb,0x07,pdata
+mouse_check_key_connect_gnd_next:
+	fetcht 1,mem_mouse_key_temp
+	copy temp,queue
+	beq 0x07,mouse_key_press		//  about 17~22ms three times
+	beq 0x00,mouse_key_release
+	rtn
+
+mouse_key_press:
+	qset1 rega
+	rtn
+
+mouse_3io6key_check:
+	bpatch patch0f_7,mem_patch0f
+	copy regc,pdata
+	store 1,mem_mouse_key_status
+	lshift pdata,pdata
+	copy pdata,regb
+	copy temp,regc
+	call mouse_gpio_config_input_pd
+	copy regc,temp
+	call gpio_get_bit
+	nsetflag true,0,regb
+	call mouse_check_press
+	branch mouse_check_key_connect_gnd_next
+
+mouse_check_press:
+	fetcht 1,mem_mouse_key_status
+	and_into 0x01,temp
+	and regb,0x01,pdata
+	isub temp,null
+	nbranch mouse_current_mult_update,zero
+	rtn
+	
+	
+//input:pdata gpio number
+mouse_gpio_config_output_high:
+	rtneq GPIO_DISABLE
+	arg gpcfg_output_high,temp
+	branch gpio_config_function_int
+
+//input:pdata gpio number
+mouse_gpio_config_output_low:
+	rtneq GPIO_DISABLE
+	arg gpcfg_output_low,temp
+	branch gpio_config_function_int	
+	
+/*************************key***************************************/
+
+/**********************sensor******************************/	
+mouse_init_sunt:
+	bpatch patch10_0,mem_patch10
+	call mouse_sensor_spi_init
+	rtn wake
+mouse_init_sensor_wakeup:	
+	call mouse_sensor_poweron
+mouse_init_sensor:
+	bpatch patch10_1,mem_patch10
+	call mouse_read_sensor_id
+	beq P32XX_ID1,mouse_init_p32xx_id2_judge
+	beq P3065_ID1,mouse_init_p3065
+	beq PKA8G2_ID1,mouse_ka8g2_id2_judge
+	call mouse_twspi_reset
+	nop 6900
+	branch mouse_init_sensor
+mouse_twspi_reset:
+	fetcht 1,mem_mouse_sensor_sclk_gpio
+	call twspi_reset
+	branch mouse_spid_init_pin
+
+mouse_read_sensor_id:
+	setarg PAN_REG_PID_H
+	call twspi_read
+	store 1,mem_sensor_id2
+	setarg PAN_REG_PID_L
+	call twspi_read
+	store 1,mem_sensor_id1
+	rtn
+
+mouse_init_p32xx_id2_judge:
+	fetch 1,mem_sensor_id2
+	beq P_MX8650,mouse_mx8650_init_param
+	beq P8009_ID2,mouse_8009_init_param
+	beq P3205_TJ3T_ID2,mouse_S210X_3205_3t_judge
+	beq P3204_TJ3L_ID2,mouse_3204_3l_init_param
+	beq P3212_ID2,mouse_3212_init_param
+	beq PKA8_ID2,mouse_ka8_init_param_check
+	beq P6520A_ID2,mouse_p6520_init_param
+	branch mouse_init_sensor
+
+mouse_S210X_3205_3t_judge:
+	setarg 0x49		// id3
+	call twspi_read
+	beq 0xa1,mouse_S201X_init_param
+	branch mouse_3205_3t_init_param
+
+mouse_S201X_init_param:
+	jam S201X,mem_config_sensor_type
+	rtn
+	
+mouse_mx8650_init_param:
+	jam MX8650,mem_config_sensor_type
+	call mouse_sensor_reset
+	call delay_10ms
+	arg mem_sensor_8650_init,regc
+mouse_sensor_init_end:
+	call mouse_sensor_wr_seq
+	branch mouse_setting_sensor_type
+
+mouse_8009_init_param:
+	setarg 0x16
+	call twspi_read
+	sub pdata,0xbd,null 
+	nbranch mouse_init_sunt,zero
+	setarg 0x19
+	call twspi_read
+	sub pdata,0x55,null 
+	nbranch mouse_init_sunt,zero
+	setarg 0x1b
+	call twspi_read
+	sub pdata,0x1d,null 
+	nbranch mouse_init_sunt,zero
+	jam P8009,mem_config_sensor_type
+	arg mem_sensor_8009_init,regc
+	branch mouse_sensor_wr_seq
+
+mouse_3205_3t_init_param:
+	jam P3205,mem_config_sensor_type
+	arg mem_sensor_3205_init,regc
+	call mouse_sensor_wr_seq
+	arg mem_sensor_32xx_init,regc
+	call mouse_sensor_wr_seq
+	setarg 0x0943
+	call twspi_write
+	arg mem_sensor_32xx_init_1,regc
+	branch mouse_sensor_wr_seq	
+
+mouse_3204_3l_init_param:
+	jam P3204,mem_config_sensor_type
+	arg mem_sensor_3204_init,regc
+	call mouse_sensor_wr_seq
+	arg mem_sensor_32xx_init,regc
+	call mouse_sensor_wr_seq
+	arg mem_sensor_32xx_init_1,regc
+	branch mouse_sensor_wr_seq	
+
+mouse_3212_init_param:
+	jam P3212,mem_config_sensor_type
+	arg mem_sensor_3212_init,regc
+mouse_sensor_wr_seq:
+	ifetch 2,regc
+	arg 0xffff,temp
+	isub temp,null
+	rtn zero
+	call twspi_write
+	increase 2,regc
+	branch mouse_sensor_wr_seq
+
+mouse_ka8_init_param_check:	
+	call mouse_sensor_disable_wp
+	setarg 0x9a5b
+	call twspi_write
+	setarg 0x0d
+	call twspi_read
+	sub pdata,0x12,null
+	branch mouse_ka8ul_init_param,zero
+	sub pdata,0x0a,null
+	nbranch mouse_ka8hd_sensor_judge,zero
+	setarg 0x0e
+	call twspi_read
+	sub pdata,0xe5,null
+	nbranch mouse_init_sensor,zero
+	setarg 0x10
+	call twspi_read
+	sub pdata,0xa5,null
+	branch mouse_ka8ul_init_param,zero
+	call mouse_enable_ka8_sensor_wp
+mouse_ka8_init_param:
+	jam KA8,mem_config_sensor_type	
+	rtn
+mouse_ka8ul_init_param:
+	jam KA8_UL,mem_config_sensor_type	
+	arg mem_sensor_ka8ul_init,regc
+	branch mouse_sensor_wr_seq
+mouse_ka8hd_sensor_judge:
+	sub pdata,0x10,null
+	nbranch mouse_init_sensor,zero
+	setarg 0x0e
+	call twspi_read
+	sub pdata,0xc5,null
+	nbranch mouse_init_sensor,zero
+	setarg 0x10
+	call twspi_read
+	sub pdata,0x38,null
+	nbranch mouse_init_sensor,zero
+mouse_ka8hd_init_param:
+	call mouse_enable_ka8_sensor_wp
+	jam KA8_HD,mem_config_sensor_type
+	rtn
+mouse_enable_ka8_sensor_wp:
+	setarg 0x005b
+	call twspi_write
+	branch mouse_sensor_enable_wp
+	
+mouse_p6520_init_param:
+	jam P6520,mem_config_sensor_type
+	arg mem_sensor_p6520_init,regc
+	branch mouse_sensor_wr_seq
+	
+mouse_init_p3065:
+	call mouse_sensor_poweron
+	fetch 1,mem_sensor_id2
+	beq P3065_XY_ID2,mouse_p3065xy_init_param
+	beq P3065_ID2,mouse_p3065_init_param
+	branch mouse_init_sensor
+	
+mouse_p3065_init_param:	
+	jam P3065,mem_config_sensor_type
+	rtn
+
+mouse_p3065xy_init_param:
+	jam P3065_XY,mem_config_sensor_type
+	rtn
+	
+mouse_ka8g2_id2_judge:
+	call mouse_sensor_poweron
+	fetch 1,mem_sensor_id2
+	beq PKA8G2_ID2,mouse_ka8g2_init_param
+	branch mouse_init_p32xx_id2_judge
+mouse_ka8g2_init_param:
+	jam KA8G2,mem_config_sensor_type
+	arg mem_sensor_ka8g2_init,regc
+	branch mouse_sensor_wr_seq
+	
+mouse_sensor_enable_wp:
+	setarg 0x0009
+	branch twspi_write
+mouse_sensor_disable_wp:
+	setarg 0x5a09
+	branch twspi_write
+
+mouse_sensor_reset:	
+	arg 0x8006,temp
+	fetch 1,mem_config_sensor_type
+	bne KA8G2,mouse_sensor_reset_end
+	arg 0x9706,temp
+mouse_sensor_reset_end:
+	copy temp,pdata
+	call twspi_write
+	nop 12000
+	rtn
+
+mouse_sensor_poweron_init:
+	arg mem_sensor_poweron_init,regc
+	fetch 1,mem_config_sensor_type
+	rtnne KA8G2
+	arg mem_sensor_ka8g2_poweron_init,regc
+	rtn
+	
+mouse_sensor_poweron:
+	bpatch patch10_2,mem_patch10
+	call mouse_sensor_spi_init
+	call mouse_sensor_reset
+	call mouse_sensor_poweron_init
+	call mouse_sensor_wr_seq
+	branch mouse_setting_sensor_type
+
+mouse_sensor_powerdown:
+	bpatch patch10_3,mem_patch10
+	call mouse_init_sunt
+	call mouse_sensor_spi_init
+	arg 0x0806,temp
+	fetch 1,mem_config_sensor_type
+	bne KA8G2,mouse_sensor_powerdown_end
+	arg 0x1f06,temp
+mouse_sensor_powerdown_end:
+	copy temp,pdata
+	branch twspi_write
+/*********sensor init*************/	
+
+
+
+/*********sensor motion*************/
+mouse_check_sensor_data:
+	fetch 1,mem_spi_write_flash_sm
+	rtnne FLASH_SM_NO_BUYS
+	fetch 1,mem_config_sensor_type
+	beq P3205,mouse_p32xx_sensor_motion
+	beq P3065,mouse_p32xx_sensor_motion
+	beq KA8,mouse_p32xx_sensor_motion
+	beq P3204,mouse_p32xx_sensor_motion
+	beq P3212,mouse_p3212_sensor_motion
+	beq P3065_xy,mouse_p32xx_sensor_motion
+	beq P8009,mouse_p8009_sensor_motion	
+	beq KA8G2,mouse_pka8g2_sensor_motion
+	branch mouse_p32xx_sensor_motion
+
+
+mouse_p32xx_sensor_motion:
+	call mouse_clear_sensor_data
+	disable user
+	fetch 1,mem_sensor_motion_gpio
+	beq GPIO_DISABLE,mouse_p32xx_sensor_motion_2
+	fetcht 1,mem_sensor_motion_gpio
+	call gpio_get_bit
+	nrtn true
+mouse_p32xx_sensor_motion_2:
+	setarg PAN_REG_PID_L
+	call twspi_read
+	bne P32XX_ID1,mouse_p3065_judge   
+mouse_p32xx_sensor_motion_1:
+	setarg PAN_REG_MOTION_STAUS
+	call twspi_read
+	rtnbit0 7
+	call mouse_read_sensor_common
+	fetch 1,mem_mouse_x
+	call mouse_data_extsign
+	store 2,mem_mouse_x
+	fetch 1,mem_mouse_y
+	call mouse_data_extsign
+	store 2,mem_mouse_y
+	fetch 1,mem_config_sensor_angle
+	beq MOUSE_6CLK_ANGLE,mouse_motion32xx_6clk_direction_selection
+	beq MOUSE_9CLK_ANGLE,mouse_motion32xx_9clk_direction_selection
+	beq MOUSE_12CLK_ANGLE,mouse_motion32xx_12clk_direction_selection
+	beq MOUSE_3CLK_ANGLE,mouse_motion32xx_3clk_direction_selection
+	rtn
+
+mouse_p3065_judge:
+	beq P3065_ID1,mouse_p32xx_sensor_motion_1
+	branch mouse_twspi_reset
+	
+mouse_motion32xx_6clk_direction_selection:
+	call mouse_motion_6clk_direction_dispose
+	branch mouse_sensor_sdio_low
+mouse_motion32xx_9clk_direction_selection:
+	call mouse_motion_9clk_direction_dispose
+	branch mouse_sensor_sdio_low
+mouse_motion32xx_12clk_direction_selection:
+	call mouse_motion_12clk_direction_dispose
+	branch mouse_sensor_sdio_low
+mouse_motion32xx_3clk_direction_selection:
+	call mouse_motion_3clk_direction_dispose
+	branch mouse_sensor_sdio_low
+
+
+	
+mouse_p3212_sensor_motion:
+	call mouse_clear_sensor_data
+	fetch 1,mem_sensor_motion_gpio
+	beq GPIO_DISABLE,mouse_p3212_sensor_motion_1
+	fetcht 1,mem_sensor_motion_gpio
+	call gpio_get_bit
+	nrtn true
+mouse_p3212_sensor_motion_1:	
+	setarg PAN_REG_PID_L
+	call twspi_read
+	bne P32XX_ID1,mouse_twspi_reset
+mouse_p3212_sensor_motion_2:
+	setarg PAN_REG_MOTION_STAUS
+	call twspi_read
+	rtnbit0 7
+	call mouse_read_sensor_common
+	call mouse_read_3212sensor_xy_high
+	store 1,mem_mouse_xy_h
+	rshift4 pdata,pdata
+	call mouse_data_extsign_bit3
+	store 1,mem_mouse_x+1
+	fetch 1,mem_mouse_xy_h
+	and pdata,0x0f,pdata
+	call mouse_data_extsign_bit3
+	store 1,mem_mouse_y+1
+	fetch 1,mem_config_sensor_angle
+	beq MOUSE_6CLK_ANGLE,mouse_motion_6clk_direction_dispose
+	beq MOUSE_9CLK_ANGLE,mouse_motion_9clk_direction_dispose
+	beq MOUSE_12CLK_ANGLE,mouse_motion_12clk_direction_dispose
+	beq MOUSE_3CLK_ANGLE,mouse_motion_3clk_direction_dispose
+	rtn
+
+mouse_read_3212sensor_xy_high:
+	setarg 0x12
+	branch twspi_read
+
+mouse_pka8g2_sensor_motion:
+	call mouse_clear_sensor_data
+	fetch 1,mem_sensor_motion_gpio
+	beq GPIO_DISABLE,mouse_pka8g2_sensor_motion_1
+	fetcht 1,mem_sensor_motion_gpio
+	call gpio_get_bit
+	nrtn true
+mouse_pka8g2_sensor_motion_1:
+	branch mouse_p3212_sensor_motion_2
+
+
+mouse_p8009_sensor_motion:
+	call mouse_clear_sensor_data
+	disable user
+	setarg PAN_REG_MOTION_STAUS
+	call twspi_read
+	rtnbit0 7
+	setarg PAN_REG_OPRATION_STATE
+	call twspi_read
+	branch mouse_p32xx_sensor_motion_1+3,blank
+	setarg 0
+	store 6,mem_mouse_x
+	rtn
+
+mouse_motion_6clk_direction_dispose:
+	fetch 2,mem_mouse_x
+	sub pdata,0,pdata
+	store 2,mem_mouse_x
+	branch enable_user
+mouse_motion_12clk_direction_dispose:
+	fetch 2,mem_mouse_y
+	sub pdata,0,pdata
+	store 2,mem_mouse_y
+	branch enable_user
+mouse_motion_9clk_direction_dispose:
+	fetch 2,mem_mouse_y
+	sub pdata,0,pdata
+	store 2,mem_mouse_y
+	fetch 2,mem_mouse_x
+	sub pdata,0,pdata
+	store 2,mem_mouse_x
+	call mouse_sensor_data_swap_places
+	branch enable_user
+mouse_motion_3clk_direction_dispose:
+	call mouse_sensor_data_swap_places
+	branch enable_user
+
+mouse_sensor_data_swap_places:
+	fetch 2, mem_mouse_y
+	fetcht 2,mem_mouse_x
+	store 2,mem_mouse_x
+	storet 2,mem_mouse_y
+	rtn
+
+	
+mouse_clear_sensor_data:
+	fetch 1,mem_mouse_move_flag
+	call mouse_read_sensor_common,blank
+	jam 1,mem_mouse_move_flag
+	rtn
+
+mouse_clear_sensor_data_by_reset:
+	jam 1,mem_mouse_clear_sensor_data_flag
+	call le_set_config_more_data
+mouse_init_sensor_reset:
+	branch mouse_init_sunt
+
+mouse_data_xy_release:
+	fetch 1,mem_sensor_motion_gpio
+	rtnne GPIO_DISABLE
+	fetch 1,mem_mouse_long_mult_flag
+	rtnne 1
+	setarg 0
+	store 1,mem_mouse_long_mult_flag
+	store 4,mem_mouse_x
+	branch mouse_init_sensor_reset
+
+mouse_data_extsign:
+	rtnbit0 7
+	arg 0xff00,temp
+	ior temp,pdata
+	rtn
+
+mouse_data_extsign_bit3:
+	rtnbit0 3
+	arg 0xf0,temp
+	ior temp,pdata
+	rtn
+
+mouse_read_sensor_common:
+	arg PAN_REG_DELTA_X,pdata
+	call twspi_read
+	store 2,mem_mouse_x
+	arg PAN_REG_DELTA_Y,pdata
+	call twspi_read
+	store 2,mem_mouse_y
+	rtn
+
+	/* sdio high will cost extra 9mA */
+mouse_sensor_sdio_low:
+	fetcht 1,mem_mouse_sensor_sdio_gpio
+	call gpio_get_bit
+	rtn true
+	setarg 0x0a
+	call twspi_read
+	nop 1000
+	branch mouse_sensor_sdio_low
+
+mouse_set_sdio_high:		// make sdio high to make 100uA less
+	setarg 0x8100
+	branch twspi_write
+	
+/****************************sensor*************************/
+
+/*******************mouse fast connect******************/
+mouse_bluetooth_fast_conn_init:
+	jam 0xff,mem_mouse_bluetooth_fast_conn_flag
+mouse_ble_fast_conn_init:	
+	jam 0x34,mem_xrecord_mode
+	setarg 0x0f0f0f
+	store 3,mem_le_lap
+	store 3,mem_le_lap+3
+	branch mouse_start_reconnect
+
+mouse_buletooth_fast_conn_end:
+	bpatch patch10_4,mem_patch10
+	call mouse_select_reconn_device
+	call mouse_bluetooth_fast_conn_disable
+	fetch 1,mem_device_flag
+	beq MODE_BT_DEVICE1,mouse_device1_check_auto_discover
+	beq MODE_BT_DEVICE2,mouse_device2_check_auto_discover
+	rtn
+mouse_device1_check_auto_discover:
+	fetch 6,mem_device1_addr
+	branch mouse_device_check_auto_discover
+mouse_device2_check_auto_discover:
+	fetch 6,mem_device2_addr
+mouse_device_check_auto_discover:	
+	fetcht 6,mem_mouse_compare_addr
+	isub temp,null
+	branch mouse_start_discovery ,zero
+	branch mouse_start_reconnect_device
+
+mouse_bluetooth_fast_conn_disable:
+	jam 0x5a,mem_mouse_bluetooth_fast_conn_flag
+	rtn	
+/*******************mouse fast connect******************/
+
+mouse_stop_bluetooth_mode:
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BLE_CONNECTED,app_ble_disconnect
+	branch mouse_stop_discovery
+mouse_disconnect:
+	setarg 0
+	store 2,mem_mouse_no_data_timer
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BLE_CONNECTED,app_ble_disconnect
+	rtn
+	
+mouse_check_125Hz:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_BT_125Hz
+mouse_bluetooth_125Hz:
+	nbranch mouse_bluetooth_125hz_clear,user
+	fetch 1,mem_bluetooth_125hz_cnt
+	increase 1,pdata
+	and_into 0x0f,pdata
+	store 1,mem_bluetooth_125hz_cnt
+	nrtn blank
+mouse_bluetooth_125hz_clear:
+	jam 0,mem_bluetooth_125hz_cnt
+	branch disable_user
+
+mouse_current_mult_update:
+	fetch 1,mem_sensor_motion_gpio
+	rtnne GPIO_DISABLE
+	jam 0,mem_lpm_mult
+	jam 30,mem_mouse_current_mult_timer
+	rtn
+
+
+mouse_priority_bb_event:	
+	bpatch patch10_5,mem_patch10
+	copy regc,pdata
+	beq BT_EVT_LE_CONNECTED,mouse_le_bb_event_connected
+	beq BT_EVT_LE_DISCONNECTED,mouse_le_bb_disconnected
+	beq BT_EVT_BUTTON_LONG_PRESSED,mouse_bb_event_discovery_btn
+	beq BT_EVT_LE_PAIRING_SUCCESS,mouse_le_pairing_success
+	beq BT_EVT_LE_ENC_INFO,mouse_le_enc_info
+	beq BT_EVT_LE_START_ENC,mouse_le_ll_start_encryt
+	beq BT_EVT_LE_PAIRING_COMPLETE,app_ble_store_reconn_info
+	beq BT_EVT_LE_PARSE_CONN_PAPA_UPDATE_RSP,mouse_le_conn_param_update_rsp_recieved
+	beq BT_EVT_24G_PAIRING_COMPLETE,mouse_24g_pairing_complete
+	beq BT_EVT_24G_ATTEMPT_FAIL,mouse_24g_attempt_fail
+	beq BT_EVT_24G_ATTEMPT_SUCCESS,mouse_24g_attempt_success
+	beq BT_EVT_LE_PARSE_CONN_PARAM_ACCEPTED,mouse_le_parse_conn_param_accepted
+	rtn
+
+/***************************le*************************/
+mouse_le_bb_event_connected:
+	call mouse_device_poweron_led_config
+	jam 0,mem_mouse_long_mult_flag
+	call mouse_init_sensor_reset
+	jam 1,mem_mouse_le_bb_connected_flag
+	call mouse_24g_first_store_reconn_info
+	fetch 1,mem_mouse_le_reconnect_flag
+	nbranch mouse_le_bb_event_connected_next,blank
+	jam 0x14,mem_mouse_send_secutiry_request_timer
+mouse_le_bb_event_connected_next:
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set0 APP_DISC_BY_BUTTON ,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	jam 0,mem_mouse_direct_timer
+	fetch 2,mem_le_battery_level_updata_timer_init
+	store 2,mem_le_battery_level_updata_timer
+	call mouse_no_data_timer_init
+	branch mouse_stop_discovery
+
+mouse_le_bb_disconnected:
+	setarg 0
+	store 2,mem_le_battery_level_updata_timer
+	jam 0,mem_mouse_le_bb_connected_flag
+	arg LE_INTERVAL_7_5MS,temp
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_BT_125Hz,mouse_le_bb_disconnected_next
+	arg LE_INTERVAL_8_75MS,temp
+mouse_le_bb_disconnected_next:	
+	storet 2,mem_le_interval_min
+	storet 2,mem_le_interval_min+2
+	jam LE_LPM_ENABLE,mem_mouse_le_conn_param_reject
+	jam 0,mem_mouse_clear_sensor_data_flag
+	call le_clr_config_more_data
+	branch mouse_bb_disconnected
+
+mouse_le_pairing_success:
+	arg LL_PAIRING_SUCCESS_FLAG,queue
+	branch mouse_le_enable_connect_flag
+
+mouse_le_enc_info:
+mouse_updata_le_param:
+	jam BT_CMD_LE_UPDATE_CONN,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+mouse_le_ll_start_encryt:
+	fetch 1,mem_mouse_le_reconnect_flag
+	beq 1,mouse_le_ll_reconn_start_encryt
+	branch mouse_le_ll_enable_start_enc_flag
+mouse_le_ll_reconn_start_encryt:
+	call mouse_updata_le_param
+	jam 20,mem_le_start_encrypt_timer
+mouse_le_ll_enable_start_enc_flag:
+	arg LL_START_ENC_FLAG,queue
+	branch mouse_le_enable_connect_flag
+
+mouse_le_enable_connect_flag:
+	fetch 1,mem_le_connect_status_flag
+	qset1 pdata
+	store 1,mem_le_connect_status_flag
+	rtn
+
+mouse_le_conn_param_update_rsp_recieved:
+	fetch 2,mem_le_l2cap_signaling_conn_param_update_rsp_result
+	rtneq BLE_SIGNALING_CONNECT_PARAMETER_UPDATE_ACCEPTED
+	fetch 1,mem_le_tsniff
+	rshift2 pdata,pdata
+	sub pdata,LE_INTERVAL_15MS,null
+	rtn positive
+	setarg LE_INTERVAL_11_25MS
+	store 2,mem_le_interval_min
+	store 2,mem_le_interval_min+2
+	call mouse_updata_le_param
+mouse_le_conn_param_lpm_disable:
+	jam LE_LPM_DISABLE,mem_mouse_le_conn_param_reject
+	rtn
+
+mouse_le_bb_event_connect_complete:
+	fetch 1,mem_mouse_le_reconnect_flag
+	nrtn blank
+	fetch 1,mem_le_att_handle
+	sub pdata,34,pdata
+	nrtn zero
+	jam 0,mem_le_start_encrypt_timer
+mouse_le_write_enable:	
+	arg WRITE_REQ_ENABLE_FLAG,queue
+	branch mouse_le_enable_connect_flag
+
+mouse_le_parse_conn_param_accepted:
+	fetch 1,mem_le_new_conninterval
+	sub pdata,LE_INTERVAL_15MS,null
+	nbranch mouse_le_conn_param_lpm_disable,positive
+	store 2,mem_le_interval_min
+	store 2,mem_le_interval_min+2
+	fetch 1,mem_le_new_connslavelatency
+	branch mouse_le_lpm_mult_reinit,blank
+	fetcht 1,mem_lpm_mult_init
+	isub temp,null
+	branch mouse_le_lpm_mult_reinit,positive
+	fetch 1,mem_le_new_connslavelatency
+	store 1,mem_lpm_mult
+	branch mouse_le_conn_param_lpm_enable
+mouse_le_lpm_mult_reinit:
+	fetch 1,mem_lpm_mult_init
+	store 1,mem_lpm_mult
+mouse_le_conn_param_lpm_enable:
+	jam LE_LPM_ENABLE,mem_mouse_le_conn_param_reject
+	rtn
+	
+/*
+mouse_le_disable_connect_flag:
+	fetch 1,mem_le_connect_status_flag
+	qset0 pdata
+	store 1,mem_le_connect_status_flag
+	rtn
+*/
+mouse_le_clean_connect_flag:
+	jam 0,mem_le_connect_status_flag
+	rtn
+
+/*
+mouse_le_reconn_write_enable_timer_reinit:
+	fetch 1,mem_mouse_le_reconnect_flag
+	rtn blank
+	fetch 1,mem_le_connect_status_flag
+	and pdata,0x03,pdata
+	rtneq 0x03
+	jam 2,mem_le_start_encrypt_timer
+	rtn
+*/
+mouse_le:
+	bpatch patch10_6,mem_patch10
+	call le_fifo_check_nearly_full
+	nrtn blank
+	fetch 1,mem_mouse_bluetooth_fast_conn_flag
+	beq 0xff,mouse_le_next
+	fetch 1,mem_le_connect_status_flag
+	and pdata,0x03,pdata
+	rtnne 0x03
+mouse_le_next:	
+	fetch 1,mem_mouse_clear_sensor_data_flag
+	call mouse_clear_sensor_data_by_reset,blank
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_24G_PAIRING_FLAG,mouse_le_send_empty_packet
+	bbit1 MOUSE_SELECT_DEVICE_FLAG,mouse_le_send_empty_packet
+	bbit1 MOUSE_BT_DISCOVERY_BUTTON_DOWN_FLAG,mouse_le_send_empty_packet
+	bbit1 MOUSE_BT_DISCOVERY_BUTTON_LONG_DOWN_FLAG,mouse_le_send_empty_packet
+	call mouse_motion
+	call mouse_check_125Hz
+	nrtn user
+	call mouse_current_mult_update
+	call mouse_data_xy_release
+	call mouse_wheel_trigger
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_KEYBOARD,mouse_le_send_mouse_data
+	fetch 1,mem_customer_key
+	beq 1,mouse_le_send_keyboard_package_data		
+mouse_le_send_mouse_data:
+	branch mouse_fill_mouse_data_le
+
+
+mouse_le_send_keyboard_package_data:
+	fetch 1,mem_customer_data_trigger
+	branch mouse_le_release_keyboard_data,blank
+	fetch 8,mem_customer_key_press+1
+mouse_fill_keyboard_package_data_le:
+	store 8,mem_pdatatemp
+	fetch 1,mem_customer_key_press
+	beq KB_MULTIKEY_REPORT_ID,mouse_fill_multimedia_key_data_le
+	beq KB_SYSTEM_CONCTRL_REPORT_ID,mouse_fill_systemctrl_key_data_le
+	jam 8,mem_le_data_len
+	fetcht 2,mem_le_keyboard_handle
+mouse_fill_data_le:
+	fetch 1,mem_le_data_len
+	copy pdata,rega
+	call le_att_malloc_tx_notify
+	fetcht 1,mem_le_data_len
+	copy temp,loopcnt
+	arg mem_pdatatemp,contr
+	branch memcpy
+	
+mouse_le_release_keyboard_data:
+	fetch 8,mem_customer_key_release+1
+	branch mouse_fill_keyboard_package_data_le
+
+mouse_fill_multimedia_key_data_le:
+	jam 3,mem_le_data_len
+	fetcht 2,mem_le_multimedia_handle
+	branch mouse_fill_data_le
+
+mouse_fill_systemctrl_key_data_le:
+	jam 2,mem_le_data_len
+	fetcht 2,mem_le_systemctrl_handle
+	branch mouse_fill_data_le
+
+mouse_fill_battery_level_le:
+	arg 1,rega
+	fetcht 2,mem_le_battery_level_handle
+	call le_att_malloc_tx_notify
+	fetch 1,mem_le_battery_level_percentage
+	istore 1,contw
+	rtn
+
+mouse_le_send_empty_packet:
+	setarg 0
+	store 7,mem_mouse_key
+mouse_fill_mouse_data_le:
+	jam 7,mem_le_data_len
+	fetch 7,mem_mouse_key
+	store 7,mem_pdatatemp
+	fetcht 2,mem_le_notify_handle
+	branch mouse_fill_data_le
+
+mouse_check_51cmd_adv:
+	jam 0,mem_mouse_le_reconnect_flag
+	fetch 3,mem_le_adv_ind
+	store 3,mem_le_adv_data+4
+	call mouse_le_check_adv_flag
+	setarg ADV_FLAG_BREDR_NOT_SUPPORTED |ADV_FLAG_LIMITED_DISCOVERABLE
+	istore 1,contr
+	arg mem_le_adv_swift_pair,contr
+	call mouse_le_adv_data_update
+	branch check_51cmd_adv
+
+mouse_le_check_adv_flag:
+	arg mem_le_adv_data,rega
+mouse_le_check_adv_flag_loop:
+	ifetch 1,rega	//length
+	rtn blank
+	iadd contr,rega
+	ifetch 1,contr	//type
+	rtneq 0x01
+	branch mouse_le_check_adv_flag_loop
+	
+mouse_le_adv_data_update:
+	arg mem_le_adv_data+11,contw
+	arg 19,loopcnt
+	call memcpy
+	branch le_modified_name_adv
+	
+/***************************le*************************/
+
+
+
+mouse_bb_disconnected:
+	call mouse_bb_discon_clear_stack
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason
+	bbit1 APP_DISC_BLE,mouse4_0_event_bb_disconn
+	bbit1 APP_DISC_BY_BUTTON,app_disconn_reason_clear
+	branch mouse_start_discovery
+	
+mouse_bb_discon_clear_stack:
+	setarg 0
+	store 8,mem_wheel_tb_old_pinlevel
+	istore 4,contw             //clean wheel statue
+	jam 0,mem_mouse_move_flag
+	jam 0,mem_ltk_exists
+	rtn
+
+mouse4_0_event_bb_disconn:
+	call mouse_le_clean_connect_flag
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason
+	bbit1 APP_DISC_BY_BUTTON,app_disconn_reason_clear
+	branch mouse_app_enter_hibernate
+
+
+/********************mouse 100ms timer*****************/
+mouse_bb_event_timer:
+	bpatch patch10_7,mem_patch10
+	//adc
+	call mouse_low_voltage_led_timer
+	call mouse_adc_read
+	//led
+	call mouse_logo_led_on_timer
+	call mouse_led_multi_timer
+	call mouse_dpi_led_blink_delay_timer
+	//24g
+	call g24_pair_timeout_timer
+	call g24_reconn_timeout_timer
+	call mouse_24g_long_sleep_param_update_timer
+	//poll
+	call mouse_dpi_key_check_long_press
+	call mouse_bt_discovery_check
+	call mouse_commbination_key_process
+	call mouse_check_discovery_timeout_timer
+	//ble
+	call mouse_check_direct_timeout_timer
+	call mouse_le_enable_att_list_timer
+	call mouse_le_battery_updata_timer
+	call mouse_le_send_smp_security_request_timer
+	//bt
+	call mouse_check_reconnect_delay_long_sleep		//delete 3.0,reconnect fail
+	call mouse_current_mult_update_timer
+	call mouse_wheel_trigger_timer
+	call mouse_store_information_delay_timer
+	branch mouse_check_no_data_timeout_timer
+
+mouse_bt_discovery_check:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_PB_BUTTON_LONG_PRESS_DISCONVERY,mouse_bt_discovery_by_pb_button
+	rtn
+
+mouse_bt_discovery_by_pb_button:
+	fetch 1,mem_select_device_button_statue
+	rtnne PB_BUTTON_STATE_DOWN
+	arg mem_bt_discovery_count,regc
+	arg mouse_long_button_bt_discovery,regb
+	branch timer_single_step
+		
+mouse_long_button_bt_discovery:
+	fetch 1,mem_device_flag
+	rtneq MODE_24G_DEVICE
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit1 MOUSE_BT_DISCOVERY_BUTTON_LONG_DOWN_FLAG
+	arg MOUSE_BT_DISCOVERY_BUTTON_LONG_DOWN_FLAG,queue
+	call mouse_enable_function_flag
+	call app_evt_button_long_pressed
+	branch mouse_bb_event_discovery_btn
+		
+mouse_commbination_key_process:
+	fetch 1,mem_device_flag
+	beq MODE_24G_DEVICE,mouse_24g_commbination_key_process
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_COMMBINATION_KEY_BY_BT_DISCOVERY
+	fetcht 1,mem_mouse_commbination_key_bt
+	branch mouse_commbination_key_start
+
+mouse_24g_commbination_key_process:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_COMMBINATION_KEY_BY_24G_PAIRING
+	fetcht 1,mem_mouse_commbination_key_24g
+mouse_commbination_key_start:
+	storet 1,mem_mouse_commbination_key
+	call mouse_check_key_gpio
+	and pdata,0x07,pdata
+	fetcht 1,mem_mouse_commbination_key
+	isub temp,null
+	branch mouse_commbination_key_down,zero
+mouse_commbination_key_up:
+	fetch 1,mem_ui_button_timeout
+	store 1,mem_combination_ui_button_count	//combination key timer init 
+	fetch 1,mem_commbination_key_statue
+	rtneq COMMBINATION_KEY_STATE_UP
+	jam COMMBINATION_KEY_STATE_UP,mem_commbination_key_statue	
+	rtn
+		
+mouse_commbination_key_down:
+	call mouse_combination_ui_timer
+	fetch 1,mem_commbination_key_statue
+	rtneq COMMBINATION_KEY_STATE_DOWN
+	jam COMMBINATION_KEY_STATE_DOWN,mem_commbination_key_statue
+	rtn
+
+mouse_combination_ui_timer:
+	arg mouse_24g_start_pair_mode,regb
+	arg mem_combination_ui_button_count,regc
+	fetch 1,mem_device_flag
+	beq MODE_24G_DEVICE,timer_single_step
+	arg mouse_long_button_bt_discovery,regb
+	call timer_single_step
+	fetch 1,mem_combination_ui_button_count
+	beq 1,mouse_bt_discovery_button_down_enable	// ble release key press
+	rtn
+
+mouse_check_discovery_timeout_timer:	
+	arg mem_mouse_discovery_timer,regc
+	arg mouse_check_discovery_timeout,regb
+	branch timer_single_step_2B
+
+mouse_check_discovery_timeout:
+	call mouse_stop_discovery
+	branch mouse_app_enter_hibernate
+
+mouse_check_direct_timeout_timer:	
+	arg mem_mouse_direct_timer,regc
+	arg mouse_check_direct_timeout,regb
+	call timer_single_step
+	fetch 1,mem_mouse_direct_timer
+	beq 1,app_ble_stop_direct_adv
+	rtn
+
+mouse_check_direct_timeout:
+	fetch 1,mem_mouse_bluetooth_fast_conn_flag
+	beq 0xff,mouse_buletooth_fast_conn_end
+	fetch 1,mem_reconn_times
+	nbranch mouse_polling_device,blank
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_BT_RECONNECT_TIMEOUT_ENTER_DISCOVERY,mouse_start_discovery
+	bbit1 MOUSE_ENABLE_24G_FIRST_AUTO_PAIRING,mouse_24g_first_bb_event_reconn_timeout
+	branch mouse_app_enter_hibernate
+	
+mouse_le_enable_att_list_timer:
+	arg mem_le_start_encrypt_timer,regc
+	arg mouse_le_write_enable,regb
+	branch timer_single_step
+
+mouse_le_send_smp_security_request_timer:
+	fetch 1,mem_mouse_le_bb_connected_flag
+	rtn blank
+	arg mem_mouse_send_secutiry_request_timer,regc
+	arg mouse_le_pairing_sm_start_check,regb
+	branch timer_single_step
+mouse_le_pairing_sm_start_check:
+	fetch 1,mem_mouse_le_reconnect_flag
+	nrtn blank
+	fetch 1,mem_le_pairing_state
+	rtnne FLAG_LE_PAIRING_NULL
+	branch le_pairing_sm_start
+
+mouse_le_battery_updata_timer:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit1 MOUSE_ENABLE_LE_BATTERY_SERVICE_CANCEL
+	arg mem_le_battery_level_updata_timer,regc
+	arg mouse_le_battery_level_updata,regb
+	branch timer_single_step
+
+mouse_le_battery_level_updata:
+	fetch 2,mem_le_battery_level_updata_timer_init
+	store 2,mem_le_battery_level_updata_timer
+	branch mouse_fill_battery_level_le
+	
+mouse_le_enable_att_list:	
+	fetch 1,mem_le_connect_status_flag
+	rtnbit1 LL_PAIRING_SUCCESS_FLAG
+	call mouse_updata_le_param
+	arg WRITE_REQ_ENABLE_FLAG,queue
+	branch mouse_le_enable_connect_flag
+
+mouse_check_reconnect_delay_long_sleep:
+	arg mem_mouse_bluetooth_reconnect_timeout,regc
+	arg mouse_app_enter_hibernate,regb
+	branch timer_single_step
+
+mouse_current_mult_update_timer:
+	arg mem_mouse_current_mult_timer,regc
+	arg mouse_current_mult_reinit,regb
+	branch timer_single_step
+mouse_current_mult_reinit:
+	fetch 1,mem_lpm_mult_init
+	store 1,mem_lpm_mult
+	jam 1,mem_mouse_long_mult_flag
+	rtn
+
+
+mouse_check_no_data_timeout_timer:	
+	arg mem_mouse_no_data_timer,regc
+	arg mouse_check_no_data_timeout,regb
+	branch timer_single_step_2B
+
+mouse_check_no_data_timeout:
+	fetch 1,mem_device_flag
+	beq MODE_24G_DEVICE,mouse_24g_hibernate_set
+	branch mouse_disconnect
+	
+mouse_no_data_timer_init:
+	fetch 2,mem_mouse_no_data_timeout
+	store 2,mem_mouse_no_data_timer
+	rtn
+
+mouse_store_information_delay_timer:
+	arg mem_store_information_delay_timer,regc
+	arg mouse_store_device_info_check,regb
+	branch timer_single_step
+
+mouse_store_device_info_check:
+	call mouse_store_device_info
+	fetch 1,mem_mouse_need_soft_reset
+	nbranch mouse_soft_reset,blank
+	rtn
+
+mouse_bb_event_discovery_btn:
+	isolate1 mark_24g,mark
+	call mouse_24g_stop,true
+	call mouse_disconnect
+	call mouse_le_clean_connect_flag
+	branch mouse_start_discovery
+	
+mouse_start_discovery:
+	bpatch patch11_0,mem_patch11
+	call mouse_device_discovery_led_config
+	fetch 2,mem_ui_state_map
+	isolate1 UI_STATE_BLE_ADV,pdata
+	call mouse_stop_le_adv,true		//reconnect adv
+	call mouse_bluetooth_fast_conn_disable
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BLE_ADV,mouse_start_discovery_norandom
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_BLE_RANDOM_ADDRE,mouse_start_discovery_norandom
+	fetcht 2,mem_random_addr_increase_count
+	increase 1,temp
+	storet 2,mem_random_addr_increase_count
+	storet 2,mem_le_lap+1
+	random pdata					//random ble addr
+	store 1,mem_le_lap
+mouse_start_discovery_norandom:
+	fetch 3,mem_mouse_le_lap_temp
+	store 3,mem_le_lap+3
+	call app_lpm_mult_disable
+	fetch 2,mem_mouse_discovery_timeout
+	store 2,mem_mouse_discovery_timer
+	setarg 0
+	store 2,mem_mouse_no_data_timer
+	store 2,mem_le_battery_level_updata_timer
+	store 1,mem_mouse_direct_timer
+	store 1,mem_mouse_bluetooth_reconnect_timeout
+	store 1,mem_mouse_clear_sensor_data_flag
+	arg MOUSE_STORE_EEPROM_FLAG,queue
+	call mouse_enable_function_flag
+	call mouse_bt_discovery_button_down_disable
+	branch mouse_check_51cmd_adv
+
+mouse_stop_discovery:
+	bpatch patch11_1,mem_patch11
+	arg MOUSE_BT_DISCOVERY_BUTTON_LONG_DOWN_FLAG,queue
+	call mouse_disable_function_flag
+	jam 0,mem_mouse_bluetooth_reconnect_timeout
+	branch mouse_stop_le_adv
+mouse_stop_le_adv:
+	setarg 0
+	store 1,mem_mouse_direct_timer
+	store 2,mem_mouse_discovery_timer
+	branch check_51cmd_stop_adv
+
+mouse_store_remote_bdaddr:
+	bpatch patch11_2,mem_patch11
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_STORE_EEPROM_FLAG
+	arg MOUSE_STORE_EEPROM_FLAG,queue
+	call mouse_disable_function_flag
+	call mouse_check_device_addr
+mouse_unplug_clean_bdaddr:
+	call mouse_before_store_reconn_info
+	branch mouse_store_device_info_delay
+
+mouse_check_device_addr:
+	fetch 1,mem_record_bt_mode
+	beq REC_4_MODE,mouse_check_le_device_addr
+	rtn
+mouse_check_le_device_addr:
+	store 1,mem_device_addr_temp
+	fetch 6,mem_le_plap
+mouse_check_bt_device_addr_common:
+	store 6,mem_device_addr_temp+1
+	fetch 7,mem_device_addr_temp
+	arg mem_device1_type,contr
+	arg 3,loopcnt
+mouse_check_device_addr_end:
+	ifetcht 7,contr
+	isub temp,null
+	branch mouse_clean_addr,zero
+	increase 22,contr
+	loop mouse_check_device_addr_end
+	rtn
+mouse_before_store_reconn_info:
+	arg mem_device1_type,rega
+	fetch 1,mem_device_flag
+	increase -1,pdata
+	mul32 pdata,29,pdata
+	iadd rega,rega
+	fetch 1,mem_record_bt_mode
+	istore 1,rega
+	beq REC_4_MODE,mouse_store_le_device
+	rtn
+	
+mouse_store_le_device:
+	fetch 6,mem_le_plap
+	istore 6,contw
+	arg mem_le_ltk,contr
+	call memcpy16
+	fetch 6,mem_le_lap
+	istore 6,contw
+	rtn
+
+mouse_clean_addr:
+	increase -6,contr
+	copy contr,contw
+	fetcht 6,mem_device_addr_temp+1
+	increase 3,temp
+	istoret 6,contw
+	rtn
+	
+mouse_select_reconn_device:
+	arg mem_device1_type,rega
+	fetch 1,mem_device_flag
+	rtneq MODE_24G_DEVICE
+	increase -1,pdata
+	mul32 pdata,29,pdata
+	iadd rega,rega
+	ifetch 1,rega
+	store 1,mem_xrecord_mode
+	beq REC_4_MODE,mouse_load_le_device
+	rtn
+
+mouse_load_le_device:
+	ifetch 6,contr
+mouse_load_le_device_end:
+	store 6,mem_hci_plap
+	arg mem_le_ltk,contw
+	call memcpy16
+	ifetch 6,contr
+	store 6,mem_le_lap
+	rtn
+
+mouse_app_initflag_check:
+	bpatch patch11_3,mem_patch11
+	fetch 2,mem_store_flag
+	arg EEPROM_INIT_FLAG,temp
+	isub temp,null
+	branch mouse_load_device_info,zero
+mouse_app_initflag_check_next:
+	storet 2,mem_store_flag
+	call mouse_ble_init_address
+	fetch 1,mem_device_flag_temp
+	store 1,mem_device_flag
+	fetch 4,mem_24g_fast_conn_addr
+	store 4,mem_24g_receiver_addr
+	store 4,mem_24g_addr
+mouse_load_default_dpi:
+	fetch 1,mem_config_sensor_dpi
+	store 1,mem_mouse_dpi
+	rtn
+
+mouse_load_device_info:
+	call mouse_otp_load_dpi
+//	call mouse_select_reconn_device
+	fetch 4,mem_mouse_24g_addr
+	store 4,mem_24g_receiver_addr
+	store 4,mem_24g_addr
+	rtn	
+
+mouse_otp_load_dpi:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_LOAD_AND_STORE_DPI
+	fetch 2,mem_otp_offset_dpi
+	copy pdata,regb
+	call mouse_read_otp_dpi_common			
+	fetch 1,mem_mouse_dpi_temp
+	call mouse_load_default_dpi,blank
+	rtn
+	
+mouse_ble_init_address:
+	fetch 6,mem_le_lap
+	store 6,mem_device1_locall_addr
+	add pdata,0x0100,pdata
+	store 6,mem_device2_locall_addr
+	add pdata,0x0100,pdata
+	store 6,mem_device3_locall_addr
+	rtn
+
+/******************************store info start**************************************/
+	
+mouse_store_device_info_delay:	
+	fetch 1,mem_store_information_delay_timer_init
+	store 1,mem_store_information_delay_timer
+	rtn
+
+mouse_store_device_info:
+	bpatch patch11_4,mem_patch11
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_EEPROM,mouse_store_eeprom_device_info
+	bbit1 MOUSE_ENABLE_FLASH,mouse_store_flash_device_info
+	bbit1 MOUSE_ENABLE_OTP,mouse_store_otp_device_info
+	rtn
+
+mouse_store_dpi_info_check:
+	bpatch patch11_5,mem_patch11
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_EEPROM,mouse_store_eerpom_dpi
+	bbit1 MOUSE_ENABLE_OTP,mouse_store_otp_dpi
+	rtn
+
+
+/******************eeprom data store****************/
+mouse_store_eeprom_device_info:
+	arg 128,temp
+	arg mem_device_flag,rega
+	arg MOUSE_INFO_EEPROM_OFFECT,regb
+	branch iicd_write_protect_eep_data
+
+mouse_store_eerpom_dpi:
+	arg 1,temp
+	arg mem_mouse_dpi,rega
+	arg MOUSE_DPI_EEPROM_OFFECT,regb
+	branch iicd_write_protect_eep_data
+	
+
+/******************flash data store****************/
+mouse_store_flash_device_info:
+	call spid_init_flash
+	call mouse_spid_flash_release_form_powerdown
+	call mouse_flash_erase_sector
+
+	call mouse_information_flash_parameters
+	call mouse_spid_write_flash
+	call mouse_spid_flash_powerdown
+	branch mouse_sensor_spi_init
+
+
+
+/******************otp data store****************/
+mouse_store_otp_device_info:
+	call mouse_write_otp_device_flag
+	call mouse_write_otp_device_info
+	branch mouse_write_otp_le_addr_increase_count_info
+
+
+/**********otp device flag store********/
+mouse_write_otp_device_flag:
+	fetchr regb,2,mem_otp_offset_device_flag
+	copy regb,regc
+mouse_write_otp_device_flag_loop:
+	call mouse_read_otp_device_flag_common
+	fetch 1,mem_device_flag_temp
+	branch mouse_device_flag_store,blank
+	store 1,mem_device_flag_last
+	increase 1,regc
+	fetch 2,mem_otp_offset_device_flag_end
+	isub regc,null
+	nrtn positive
+	copy regc,regb
+	branch mouse_write_otp_device_flag_loop
+
+mouse_device_flag_store:
+	fetch 1,mem_device_flag_last
+	and pdata,0xf0,pdata
+	branch mouse_device_flag_store_check,blank
+	fetch 1,mem_device_flag
+	store 1,mem_device_flag_value
+mouse_devoce_flag_store_end:	
+	arg 1,loopcnt
+	copy regc,regb
+	arg mem_device_flag_value,rega
+	branch otp_write			/* regb = otp address, rega pointers data, loopcnt is count */
+
+mouse_device_flag_store_check:
+	fetch 1,mem_device_flag_last
+	fetcht 1,mem_device_flag
+	isub temp,null
+	rtn zero
+	lshift4 temp,temp
+	iadd temp,pdata
+	store 1,mem_device_flag_value
+	
+	copy regc,pdata
+	fetcht 2,mem_otp_offset_device_flag
+	isub temp,null
+	branch mouse_devoce_flag_store_end,zero
+	
+	increase -1,regc
+	branch mouse_devoce_flag_store_end
+
+
+/**********otp addr store********/
+mouse_write_otp_device_info:
+	fetch 1,mem_device_flag
+	beq MODE_24G_DEVICE,mouse_write_otp_24g_addr
+	beq MODE_BT_DEVICE1,mouse_write_otp_le_device1
+	beq MODE_BT_DEVICE2,mouse_write_otp_le_device2
+	rtn
+
+mouse_write_otp_24g_addr:
+	fetchr regb,2,mem_otp_offset_24g_addr
+	copy regb,regc
+mouse_otp_store_24g_addr_loop:
+	call mouse_read_otp_24g_addr_common
+	fetch 4,mem_mouse_24g_addr_temp
+	branch mouse_24g_addr_store,blank	
+	store 4,mem_mouse_24g_addr_last
+	increase 4,regc
+	fetch 2,mem_otp_offset_24g_addr_end
+	isub regc,null
+	nrtn positive	//if read end,retention last value
+	copy regc,regb
+	branch mouse_otp_store_24g_addr_loop
+
+mouse_24g_addr_store:
+	fetch 4,mem_mouse_24g_addr_last
+	fetcht 4,mem_mouse_24g_addr
+	isub temp,null
+	rtn zero
+	arg 4,loopcnt
+	arg mem_mouse_24g_addr,rega
+	copy regc,regb
+	branch otp_write			/* regb = otp address, rega pointers data, loopcnt is count */
+
+mouse_write_otp_le_device1:
+	fetchr regb,2,mem_otp_offset_le_addr1
+	copy regb,regc
+mouse_otp_store_le_addr1_loop:
+	call mouse_read_otp_le_addr1_common
+	fetch 6,mem_mouse_le_addr1_temp
+	branch mouse_le_addr1_store,blank	
+	store 6,mem_mouse_le_addr1_last
+	increase 6,regc
+	fetch 2,mem_otp_offset_le_addr1_end
+	isub regc,null
+	nrtn positive	//if read end,retention last value
+	copy regc,regb
+	branch mouse_otp_store_le_addr1_loop
+
+mouse_le_addr1_store:
+	fetch 6,mem_mouse_le_addr1_last
+	fetcht 6,mem_device1_addr
+	isub temp,null
+	rtn zero
+	arg 6,loopcnt
+	arg mem_device1_addr,rega
+	copy regc,regb
+	branch otp_write			/* regb = otp address, rega pointers data, loopcnt is count */
+
+
+mouse_write_otp_le_device2:
+	fetchr regb,2,mem_otp_offset_le_addr2
+	copy regb,regc
+mouse_otp_store_le_addr2_loop:
+	call mouse_read_otp_le_addr2_common
+	fetch 6,mem_mouse_le_addr2_temp
+	branch mouse_le_addr2_store,blank	
+	store 6,mem_mouse_le_addr2_last
+	increase 6,regc
+	fetch 2,mem_otp_offset_le_addr2_end
+	isub regc,null
+	nrtn positive	//if read end,retention last value
+	copy regc,regb
+	branch mouse_otp_store_le_addr2_loop
+
+mouse_le_addr2_store:
+	fetch 6,mem_mouse_le_addr2_last
+	fetcht 6,mem_device2_addr
+	isub temp,null
+	rtn zero
+	arg 6,loopcnt
+	arg mem_device2_addr,rega
+	copy regc,regb
+	branch otp_write			/* regb = otp address, rega pointers data, loopcnt is count */
+
+
+/**************store le addr increase count**********/
+mouse_write_otp_le_addr_increase_count_info:
+	fetch 1,mem_device_flag
+	rtneq MODE_24G_DEVICE
+	fetchr regb,2,mem_otp_offset_le_addr_increase_count
+	copy regb,regc
+mouse_otp_store_le_addr_increase_count_loop:
+	call mouse_read_otp_le_addr_increase_count_common
+	fetch 2,mem_random_addr_increase_count_temp
+	branch mouse_le_addr_increase_count_store,blank	
+	store 2,mem_random_addr_increase_count_last
+	increase 2,regc
+	fetch 2,mem_otp_offset_le_addr_increase_count_end
+	isub regc,null
+	nrtn positive	//if read end,retention last value
+	copy regc,regb
+	branch mouse_otp_store_le_addr_increase_count_loop
+
+mouse_le_addr_increase_count_store:
+	fetch 2,mem_random_addr_increase_count_last
+	fetcht 2,mem_random_addr_increase_count
+	isub temp,null
+	rtn zero
+	arg 2,loopcnt
+	arg mem_random_addr_increase_count,rega
+	copy regc,regb
+	branch otp_write			/* regb = otp address, rega pointers data, loopcnt is count */
+
+
+/**********otp dpi store********/
+mouse_store_otp_dpi:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_LOAD_AND_STORE_DPI
+	fetchr regb,2,mem_otp_offset_dpi
+	copy regb,regc
+mouse_otp_store_dpi_loop:
+	call mouse_read_otp_dpi_common
+	fetch 1,mem_mouse_dpi_temp
+	branch mouse_otp_dpi_store,blank
+	store 1,mem_mouse_dpi_last
+	increase 1,regc
+	fetch 2,mem_otp_offset_dpi_end
+	isub regc,null
+	nrtn positive
+	copy regc,regb
+	branch mouse_otp_store_dpi_loop
+
+mouse_otp_dpi_store:
+	fetch 1,mem_mouse_dpi_last
+	and pdata,0xf0,pdata
+	branch mouse_dpi_store_last,blank
+	fetch 1,mem_mouse_dpi
+	store 1,mem_mouse_otp_dpi_value
+mouse_dpi_store_end:	
+	arg 1,loopcnt
+	copy regc,regb
+	arg mem_mouse_otp_dpi_value,rega
+	branch otp_write			/* regb = otp address, rega pointers data, loopcnt is count */
+
+mouse_dpi_store_last:
+	fetch 1,mem_mouse_dpi_last
+	fetcht 1,mem_mouse_dpi
+	isub temp,null
+	rtn zero
+	lshift4 temp,temp
+	iadd temp,pdata
+	store 1,mem_mouse_otp_dpi_value
+	
+	copy regc,pdata
+	fetcht 2,mem_otp_offset_dpi
+	isub temp,null
+	branch mouse_dpi_store_end,zero
+	
+	increase -1,regc
+	branch mouse_dpi_store_end
+	
+/******************************store info end**************************************/
+	
+
+
+/******************************load info start**************************************/
+
+/******************eeprom data load****************/
+mouse_load_eeprom_info_check:
+	call iicd_read_init_pin
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	isolate1 MOUSE_ENABLE_2K_EEPROM,pdata
+	ncall clear_eeprom_size_2k,true
+	call mouse_eeprom_load_recon_info
+	branch mouse_app_initflag_check
+
+mouse_eeprom_load_recon_info:
+	arg 128,temp
+	arg mem_device_flag,rega
+	arg MOUSE_INFO_EEPROM_OFFECT,regb
+	branch iicd_read_eep_data
+
+mouse_load_eeprom_dpi:
+	arg 1,temp
+	arg mem_mouse_dpi,rega
+	arg MOUSE_DPI_EEPROM_OFFECT,regb
+	branch iicd_read_eep_data
+
+
+/******************flash data load****************/
+mouse_load_flash_info_check:
+	call spid_init_flash
+	call mouse_spid_flash_release_form_powerdown
+	call mouse_information_flash_parameters
+	call spid_read_flash
+	call mouse_spid_flash_powerdown
+	call mouse_app_initflag_check
+	branch mouse_sensor_spi_init
+	
+mouse_information_flash_parameters:
+	setarg mem_mouse_information_end
+	arg mem_mouse_information_start,temp
+	isub temp,temp
+	fetch 3,mem_flash_base
+	arg mem_mouse_information_start,rega
+	rtn
+	
+mouse_spid_flash_release_form_powerdown:
+	jam FLASH_COMMAND_RELEASE_FROM_POWERDOWN,mem_temp
+mouse_spid_write_flash_cmd:
+	call delay_nop100
+	call spid_unlock_flash
+	arg mem_write_flash_head_temp,rega
+	fetcht 1,mem_temp
+	call mouse_spid_write_flash_cmd_common
+	branch delay_nop100
+
+mouse_spid_flash_powerdown:
+	jam FLASH_COMMAND_POWERDOWN,mem_temp
+	branch mouse_spid_write_flash_cmd
+
+mouse_spid_write_flash_cmd_common:
+	istoret 1,rega
+	rshift16 pdata,temp
+	istoret 1,contw
+	rshift8 pdata,temp
+	istoret 1,contw
+	istore 1,contw
+	deposit rega
+	store 2,core_spid_txaddr
+	setarg 0
+	store 2,core_spid_rxlen
+	jam spid_start,core_misc_ctrl
+	branch wait_spid_done
+		
+mouse_flash_erase_sector:
+	fetch 3,mem_flash_base
+	store 3,mem_spi_write_addr
+	branch spid_flash_erase_sector+2
+
+mouse_spid_write_flash:
+	copy pdata,regc
+	copy rega,pdata
+	increase -4,pdata
+	copy pdata,regb
+	ifetch 4,regb
+	store 4,mem_write_flash_head_temp
+	copy regc,pdata
+	call spid_write_flash
+	fetch 4,mem_write_flash_head_temp
+	istore 4,regb
+	rtn
+
+mouse_flash_power_down:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_FLASH
+	call mouse_spid_flash_powerdown
+	call twspi_enable	// 2 wire mode
+	fetcht 1,mem_spi_cs_gpio		//disable flash
+	call gpio_out_inactive
+	fetcht 1,mem_spi_hold_gpio
+	branch mouse_gpio_config_input_pd
+
+
+/******************otp data load****************/
+mouse_load_otp_info_check:
+	call mouse_read_otp_dpi
+	call mouse_read_otp_device_flag
+	call mouse_read_otp_device_info
+	call mouse_read_otp_le_addr_increase_count_info
+mouse_otp_load_app_initflag:
+	arg 2,loopcnt
+	fetch 2,mem_otp_offset_app_initflag			//fetchr regb,2,mem_otp_offset_app_initflag
+	copy pdata,regb
+	arg mem_store_flag,rega
+	call otp_read_data				/* regb=otp address, rega points to data, loopcnt is count */
+	call mouse_app_initflag_check
+mouse_otp_store_app_initflag:
+	arg 2,loopcnt
+	arg mem_store_flag,rega
+	fetchr regb,2,mem_otp_offset_app_initflag
+	branch otp_write
+
+
+/**************load device flag**********/
+mouse_read_otp_device_flag:
+	fetchr regb,2,mem_otp_offset_device_flag
+	copy regb,regc
+mouse_read_otp_device_flag_loop:
+	call mouse_read_otp_device_flag_common
+	fetch 1,mem_device_flag_temp
+	branch mouse_device_flag_load,blank	
+	store 1,mem_device_flag_last
+	increase 1,regc
+	fetch 2,mem_otp_offset_device_flag_end
+	isub regc,null
+	nbranch mouse_device_flag_load,positive	//if read end,retention last value
+	copy regc,regb
+	branch mouse_read_otp_device_flag_loop
+
+mouse_read_otp_device_flag_common:
+	arg 1,loopcnt
+	arg mem_device_flag_temp,rega
+	branch otp_read_data				/* regb=otp address, rega points to data, loopcnt is count */
+
+mouse_device_flag_load:
+	fetch 1,mem_device_flag_last
+	copy pdata,temp
+	and pdata,0xf0,pdata
+	branch mouse_device_flag_load_last,blank
+	rshift4 pdata,pdata
+	branch mouse_device_flag_load_end
+
+mouse_device_flag_load_last:
+	copy temp,pdata
+mouse_device_flag_load_end:
+	store 1,mem_device_flag
+	rtn
+
+/****************otp load addr*************/
+mouse_read_otp_device_info:
+	fetch 1,mem_device_flag
+	beq MODE_24G_DEVICE,mouse_read_otp_24g_addr
+	beq MODE_BT_DEVICE1,mouse_read_otp_le_device1
+	beq MODE_BT_DEVICE2,mouse_read_otp_le_device2
+	rtn
+	
+mouse_read_otp_le_device1:
+	call mouse_read_otp_le_device1_addr
+	branch mouse_read_otp_le_device1_locall_addr
+
+mouse_read_otp_le_device2:
+	call mouse_read_otp_le_device2_addr
+	branch mouse_read_otp_le_device2_locall_addr
+
+/*************************load le addr1**********************************/
+mouse_read_otp_le_device1_addr:
+	fetchr regb,2,mem_otp_offset_le_addr1
+	copy regb,regc
+mouse_read_otp_le_device1_addr_loop:
+	call mouse_read_otp_le_addr1_common	
+	fetch 6,mem_mouse_le_addr1_temp
+	branch mouse_le_addr1_load,blank	
+	store 6,mem_mouse_le_addr1_last
+	increase 6,regc
+	fetch 2,mem_otp_offset_le_addr1_end
+	isub regc,null
+	nbranch mouse_le_addr1_load,positive	//if read end,retention last value
+	copy regc,regb
+	branch mouse_read_otp_le_device1_addr_loop
+
+mouse_read_otp_le_addr1_common:
+	arg 6,loopcnt
+	arg mem_mouse_le_addr1_temp,rega
+	branch otp_read_data				/* regb=otp address, rega points to data, loopcnt is count */	
+
+mouse_le_addr1_load:
+	fetch 6,mem_mouse_le_addr1_last
+	store 6,mem_device1_addr
+	rtn
+
+
+mouse_read_otp_le_device1_locall_addr:
+	fetchr regb,2,mem_otp_offset_le_locall_addr1
+	copy regb,regc
+mouse_read_otp_le_device1_locall_addr_loop:
+	call mouse_read_otp_le_locall_addr1_common	
+	fetch 6,mem_mouse_le_locall_addr1_temp
+	branch mouse_le_locall_addr1_load,blank	
+	store 6,mem_mouse_le_locall_addr1_last
+	increase 6,regc
+	fetch 2,mem_otp_offset_le_locall_addr1_end
+	isub regc,null
+	nbranch mouse_le_locall_addr1_load,positive	//if read end,retention last value
+	copy regc,regb
+	branch mouse_read_otp_le_device1_locall_addr_loop
+
+mouse_read_otp_le_locall_addr1_common:
+	arg 6,loopcnt
+	arg mem_mouse_le_locall_addr1_temp,rega
+	branch otp_read_data				/* regb=otp address, rega points to data, loopcnt is count */	
+
+mouse_le_locall_addr1_load:
+	fetch 6,mem_mouse_le_locall_addr1_last
+	store 6,mem_device1_locall_addr
+	rtn
+
+
+/*************************load le addr2**********************************/
+mouse_read_otp_le_device2_addr:
+	fetchr regb,2,mem_otp_offset_le_addr2
+	copy regb,regc
+mouse_read_otp_le_device2_addr_loop:
+	call mouse_read_otp_le_addr2_common	
+	fetch 6,mem_mouse_le_addr2_temp
+	branch mouse_le_addr2_load,blank	
+	store 6,mem_mouse_le_addr2_last
+	increase 6,regc
+	fetch 2,mem_otp_offset_le_addr2_end
+	isub regc,null
+	nbranch mouse_le_addr2_load,positive	//if read end,retention last value
+	copy regc,regb
+	branch mouse_read_otp_le_device2_addr_loop
+
+mouse_read_otp_le_addr2_common:
+	arg 6,loopcnt
+	arg mem_mouse_le_addr2_temp,rega
+	branch otp_read_data				/* regb=otp address, rega points to data, loopcnt is count */	
+
+mouse_le_addr2_load:
+	fetch 6,mem_mouse_le_addr2_last
+	store 6,mem_device2_addr
+	rtn
+
+
+mouse_read_otp_le_device2_locall_addr:
+	fetchr regb,2,mem_otp_offset_le_locall_addr2
+	copy regb,regc
+mouse_read_otp_le_device2_locall_addr_loop:
+	call mouse_read_otp_le_locall_addr2_common	
+	fetch 6,mem_mouse_le_locall_addr2_temp
+	branch mouse_le_locall_addr2_load,blank	
+	store 6,mem_mouse_le_locall_addr2_last
+	increase 6,regc
+	fetch 2,mem_otp_offset_le_locall_addr2_end
+	isub regc,null
+	nbranch mouse_le_locall_addr2_load,positive	//if read end,retention last value
+	copy regc,regb
+	branch mouse_read_otp_le_device2_locall_addr_loop
+
+mouse_read_otp_le_locall_addr2_common:
+	arg 6,loopcnt
+	arg mem_mouse_le_locall_addr2_temp,rega
+	branch otp_read_data				/* regb=otp address, rega points to data, loopcnt is count */	
+
+mouse_le_locall_addr2_load:
+	fetch 6,mem_mouse_le_locall_addr2_last
+	store 6,mem_device2_locall_addr
+	rtn
+
+
+/**************load 24g addr**********/
+mouse_read_otp_24g_addr:
+	fetchr regb,2,mem_otp_offset_24g_addr
+	copy regb,regc
+mouse_read_otp_24g_addr_loop:
+	call mouse_read_otp_24g_addr_common
+	fetch 4,mem_mouse_24g_addr_temp
+	branch mouse_24g_addr_load,blank	
+	store 4,mem_mouse_24g_addr_last
+	increase 4,regc
+	fetch 2,mem_otp_offset_24g_addr_end
+	isub regc,null
+	nbranch mouse_24g_addr_load,positive	//if read end,retention last value
+	copy regc,regb
+	branch mouse_read_otp_24g_addr_loop
+
+mouse_read_otp_24g_addr_common:
+	arg 4,loopcnt
+	arg mem_mouse_24g_addr_temp,rega
+	branch otp_read_data				/* regb=otp address, rega points to data, loopcnt is count */
+	
+mouse_24g_addr_load:
+	fetch 4,mem_mouse_24g_addr_last
+	store 4,mem_mouse_24g_addr
+	rtn
+
+/**************load le addr increase count**********/
+mouse_read_otp_le_addr_increase_count_info:
+	fetch 1,mem_device_flag
+	rtneq MODE_24G_DEVICE
+	fetchr regb,2,mem_otp_offset_le_addr_increase_count
+	copy regb,regc
+mouse_read_otp_le_addr_increase_count_loop:
+	call mouse_read_otp_le_addr_increase_count_common
+	fetch 2,mem_random_addr_increase_count_temp
+	branch mouse_le_addr_increase_count_load,blank	
+	store 2,mem_random_addr_increase_count_last
+	increase 2,regc
+	fetch 2,mem_otp_offset_le_addr_increase_count_end
+	isub regc,null
+	nbranch mouse_le_addr_increase_count_load,positive	//if read end,retention last value
+	copy regc,regb
+	branch mouse_read_otp_le_addr_increase_count_loop
+
+mouse_read_otp_le_addr_increase_count_common:
+	arg 2,loopcnt
+	arg mem_random_addr_increase_count_temp,rega
+	branch otp_read_data				/* regb=otp address, rega points to data, loopcnt is count */
+	
+mouse_le_addr_increase_count_load:
+	fetch 2,mem_random_addr_increase_count_temp
+mouse_le_addr_increase_store:
+	store 2,mem_random_addr_increase_count
+	rtn
+
+/*************load dpi**********/
+mouse_read_otp_dpi:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_LOAD_AND_STORE_DPI,mouse_load_default_dpi
+	fetchr regb,2,mem_otp_offset_dpi
+	copy regb,regc
+mouse_read_otp_dpi_loop:
+	call mouse_read_otp_dpi_common	
+	fetch 1,mem_mouse_dpi_temp
+	branch mouse_dpi_load,blank	
+	store 1,mem_mouse_dpi_last
+	increase 1,regc
+	fetch 2,mem_otp_offset_dpi_end
+	isub regc,null
+	nbranch mouse_dpi_load,positive	//if read end,retention last value
+	copy regc,regb
+	branch mouse_read_otp_dpi_loop
+
+mouse_read_otp_dpi_common:
+	arg 1,loopcnt
+	arg mem_mouse_dpi_temp,rega
+	branch otp_read_data				/* regb=otp address, rega points to data, loopcnt is count */
+
+mouse_dpi_load:
+	fetch 1,mem_mouse_dpi_last
+	copy pdata,temp
+	and pdata,0xf0,pdata
+	branch mouse_dpi_load_last,blank
+	rshift4 pdata,pdata
+	branch mouse_dpi_load_end
+
+mouse_dpi_load_last:
+	copy temp,pdata
+mouse_dpi_load_end:
+	store 1,mem_mouse_dpi
+	rtn
+
+/******************************load info end**************************************/
+
+
+mouse_idle:
+	bpatch patch11_6,mem_patch11
+	call mouse_low_voltage_led_no_enter_lpm
+	call ui_check_paring_button
+	call mouse_dpi_check
+	call mouse_dpi_another_gpio_check
+	call mouse_select_device_check
+	call mouse_check_select_device_by_switch
+	call mouse_bt_button_check
+	branch mouse_wheel_check
+	
+mouse_select_device_check:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_SELECT_DEVICE_BY_PB_BUTTON,mouse_select_device_by_pb_button
+	bbit1 MOUSE_ENABLE_PB_BUTTON_LONG_PRESS_DISCONVERY,mouse_select_device_by_pb_button
+	rtn
+
+mouse_select_device_by_pb_button_check_once:
+	jam 0x03,mem_mouse_pbkey_press_status
+mouse_select_device_by_pb_button:	
+	call mouse_select_device_by_pb_button_check
+	branch mouse_select_device_by_pb_button_exit
+	
+mouse_select_device_by_pb_button_check:
+	bpatch patch11_7,mem_patch11
+	fetch 1,mem_config_select_device_button_gpio
+	rtneq GPIO_DISABLE
+	arg 0,rega
+	jam MOUSE_PB_KEY,mem_mouse_key_temp
+	fetcht 1,mem_config_select_device_button_gpio
+	call mouse_pb_button_check
+	store 1,mem_mouse_pbkey_press_status
+	fetch 1,mem_matrix_public_gpio
+	beq GPIO_DISABLE,mouse_3io6key_pb_button_check_end	
+	branch mouse_matrix_public_gpio_reset
+
+mouse_retransmit_select_device_by_pb_button:
+	call mouse_select_device_by_pb_button_check
+	copy rega,pdata
+	bbit1 MOUSE_PB_KEY,mouse_select_device_button_down+2
+	branch mouse_select_device_button_up
+	
+mouse_3io6key_pb_button_check_end:
+	fetcht 1,mem_config_select_device_button_gpio
+	call mouse_gpio_config_input_pu
+mouse_select_device_by_pb_button_exit:	
+	copy rega,pdata
+	bbit1 MOUSE_PB_KEY,mouse_select_device_button_down
+	branch mouse_select_device_button_up
+
+mouse_pb_button_check:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_PB_BUTTON_CONNECT_GND,mouse_pb_button_connect_gnd
+	fetch 1,mem_mouse_pbkey_press_status
+	copy pdata,regc
+	fetch 1,mem_matrix_public_gpio
+	beq GPIO_DISABLE,mouse_3io6key_check
+	fetch 1,mem_mouse_ghost_flag
+	nbranch mouse_select_device_by_pb_button_end,blank
+	branch mouse_pb_button_connect_matrix
+
+mouse_select_device_by_pb_button_end:
+	jam PB_BUTTON_STATE_UP,mem_select_device_button_statue
+	jam 0,mem_mouse_pbkey_press_status
+	rtn
+
+mouse_pb_button_connect_gnd:
+	fetch 1,mem_mouse_pbkey_press_status
+	branch mouse_check_key_connect_gnd
+
+mouse_pb_button_connect_matrix:
+	call gpio_get_bit
+	fetcht 1,mem_matrix_public_gpio
+	branch mouse_pb_button_connect_gnd,true
+	fetcht 1,mem_matrix_public_gpio
+	call gpio_out_active
+	fetcht 1,mem_config_select_device_button_gpio
+	fetch 1,mem_mouse_pbkey_press_status
+	branch mouse_check_key_connect_gnd
+	
+mouse_select_device_button_up:
+	fetch 1,mem_select_device_button_statue
+	rtneq PB_BUTTON_STATE_UP
+	jam PB_BUTTON_STATE_UP,mem_select_device_button_statue	
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit1 MOUSE_ENABLE_PB_BUTTON_SHORT_PRESS_ENTER_DISCOVERY
+	fetch 1,mem_bt_discovery_count
+	sub pdata,20,null
+	ncall mouse_ready_reconnection_by_button,positive		// press button less than 30-20=1000ms
+	fetch 1,mem_ui_button_timeout
+	store 1,mem_bt_discovery_count
+	rtn
+
+mouse_select_device_button_down:
+	call mouse_select_device_ghost_check
+	rtn user
+	fetch 1,mem_select_device_button_statue
+	rtneq PB_BUTTON_STATE_DOWN
+	jam PB_BUTTON_STATE_DOWN,mem_select_device_button_statue
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_PB_BUTTON_SHORT_PRESS_ENTER_DISCOVERY,mouse_long_button_bt_discovery
+	fetch 1,mem_mouse_direct_timer
+	rtn blank
+	fetch 1,mem_mouse_direct_timeout
+	store 1,mem_mouse_direct_timer
+	rtn
+
+mouse_select_device_ghost_check:
+	disable user
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit1 MOUSE_ENABLE_PB_BUTTON_CONNECT_GND
+mouse_ghost_key_value_check:
+	fetch 1,mem_mouse_lkey_press_status
+	rtn blank
+	fetch 1,mem_mouse_rkey_press_status
+	rtn blank
+	branch enable_user
+	
+mouse_check_select_device_by_switch:
+	bpatch patch12_0,mem_patch12
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_SELECT_DEVICE_BY_SWITCH_GPIO
+	fetcht 1,mem_device_switch_gpio
+	call mouse_gpio_config_input_pu
+mouse_switch_gpio_connect_gnd:
+	fetcht 1,mem_device_switch_gpio
+	call gpio_get_bit
+	branch mouse_check_select_24g_device,true
+mouse_select_btdevice:
+	fetch 1,mem_device_flag
+	rtneq MODE_BT_DEVICE1
+	jam MODE_BT_DEVICE1,mem_device_flag
+	branch mouse_stop_bluetooth_mode
+	
+mouse_check_select_24g_device:	
+	fetch 1,mem_device_flag
+	rtneq MODE_24G_DEVICE
+	jam MODE_24G_DEVICE,mem_device_flag
+	branch mouse_24g_stop
+
+mouse_ready_reconnection_by_button:
+	bpatch patch12_1,mem_patch12
+	fetch 1,mem_device_number
+	rtneq 1		// 1channel
+	call mouse_select_device_number
+	storet 1,mem_device_flag
+mouse_store_device_number_before_reset:	
+//	jam 0,mem_link_key_exists
+	call mouse_select_device_enable
+	call mouse_stop_bluetooth_mode
+	call app_evt_button_long_pressed
+	call mouse_select_device_disable
+	jam 1,mem_mouse_need_soft_reset
+	branch mouse_store_device_info_delay
+
+mouse_soft_reset:
+	call mouse_select_device_enable
+	branch soft_reset_chip
+
+mouse_select_device_number:
+	fetcht 1,mem_device_flag
+	increase 1,temp
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_24G,mouse_select_device_number_24g
+	sub temp,2,null
+	ncall mouse_select_device_count_clean_bt,positive
+	rtn
+	
+mouse_select_device_number_24g:	
+	fetch 1,mem_device_number
+	increase -1,pdata
+	isub temp,null
+	ncall mouse_select_device_count_clean_24g,positive
+	rtn
+
+mouse_select_device_count_clean_24g:
+	arg 0,temp
+	rtn
+mouse_select_device_count_clean_bt:
+	arg 1,temp
+	rtn
+
+mouse_store_device_number2eeprom:
+	arg 1,temp
+	arg mem_device_flag,rega
+	arg 0,regb
+	branch iicd_write_protect_eep_data
+		
+mouse_bt_button_check:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_PB_BUTTON_SHORT_PRESS_ENTER_DISCOVERY
+	branch mouse_select_device_by_pb_button
+	
+mouse_select_device_enable:
+	arg MOUSE_SELECT_DEVICE_FLAG,queue
+	branch mouse_enable_function_flag
+mouse_select_device_disable:
+	arg MOUSE_SELECT_DEVICE_FLAG,queue
+	branch mouse_disable_function_flag
+mouse_bt_cannel_reconn_enable:
+	arg MOUSE_BT_CANNEL_RECONN_FLAG,queue
+	branch mouse_enable_function_flag
+mouse_bt_cannel_reconn_disable:
+	arg MOUSE_BT_CANNEL_RECONN_FLAG,queue
+	branch mouse_disable_function_flag
+mouse_bt_discovery_button_down_enable:
+	arg MOUSE_BT_DISCOVERY_BUTTON_DOWN_FLAG,queue
+	branch mouse_enable_function_flag
+mouse_bt_discovery_button_down_disable:
+	arg MOUSE_BT_DISCOVERY_BUTTON_DOWN_FLAG,queue
+	branch mouse_disable_function_flag
+
+mouse_adc_read_enable:
+	arg MOUSE_ENABLE_ADC,queue
+	branch mouse_enable_function_flag
+
+mouse_24g_set_250Hz:
+	arg MOUSE_ENABLE_24G_250Hz,queue
+	branch mouse_enable_function_flag
+
+mouse_24g_search_dongle_enable:
+	arg MOUSE_ENABLE_24G_SEARCH_DONGLE,queue
+	branch mouse_enable_function_flag
+	
+mouse_16M_enable:
+	arg MOUSE_ENABLE_16M,queue
+	branch mouse_enable_function_flag
+	
+mouse_dpi_4level_enable:
+	arg MOUSE_ENABLE_DPI_LEVEL_4,queue
+	branch mouse_enable_function_flag
+
+mouse_enable_function_flag:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	qset1 pdata
+	store MOUSE_FLAG_LEN,mem_mouse_flag
+	rtn
+
+mouse_disable_function_flag:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	qset0 pdata
+	store MOUSE_FLAG_LEN,mem_mouse_flag
+	rtn
+
+mouse_customer_key_enable:
+	setarg 0
+	store 8,mem_customer_key_press
+	store 8,mem_customer_key_release
+	fetch 1,mem_mouse_customer_function	// 01--win+d     02--ctrl+alt+a    03--AC home    04--play
+	beq 2,mouse_customer_key_ctrl_alt_a
+	beq 3,mouse_customer_AC_home
+	beq 4,mouse_customer_key_play
+	setarg 0x070008
+mouse_customer_standrad_key_set:	
+	store 8,mem_customer_key_press+1		// win + d
+	rtn
+
+mouse_customer_key_ctrl_alt_a:
+	setarg 0x040005
+	branch mouse_customer_standrad_key_set
+
+mouse_customer_AC_home:
+	setarg 0x022303
+mouse_customer_media_key_set:	
+	store 8,mem_customer_key_press
+	setarg 0x03
+	store 8,mem_customer_key_release
+	rtn
+	
+mouse_customer_key_play:
+	setarg 0x00cd03
+	branch mouse_customer_media_key_set
+
+	
+mouse_polling_device:
+	bpatch patch12_2,mem_patch12
+	fetch 1,mem_reconn_times
+	increase -1,pdata
+	store 1,mem_reconn_times
+	fetcht 1,mem_device_flag
+	sub temp,1,null
+	ncall mouse_select_device_number,zero
+	storet 1,mem_device_flag
+	call mouse_store_device_number2eeprom
+	call mouse_before_store_reconn_info
+	branch mouse_start_reconnect_device
+
+	
+//notice: need to call p_mouse_drawing_optima_init when waked from mult
+mouse_drawing_optima:
+	bpatch patch12_3,mem_patch12
+	fetch 1,mem_config_sensor_type
+	rtneq P3212
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_SMOOTHER
+	fetch 4,mem_mouse_x
+	rtn blank
+	call mouse_data_abs_check
+	setarg 0x03	//asm_flag enable condition
+	call mouse_pdata_greater_than_check
+	call mouse_disable_asm,blank
+	ncall mouse_enable_asm,blank
+	setarg 0x02	//asm_flag disable condition
+	call mouse_data_less_than_check
+	call mouse_disable_asm,blank
+	fetch 1,mem_mouse_asm_flag
+	beq 1,mouse_drawing_optima_modify
+mouse_drawing_optima_init:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_SMOOTHER
+	arg 5,loopcnt
+	arg mem_mouse_asm_flag,contw
+	branch clear_mem
+
+mouse_drawing_optima_modify:
+	call mouse_drawing_optima_xy_offset_modify
+	fetch 2,mem_mouse_x_pre
+	store 2,mem_data_pre
+	fetch 2,mem_mouse_x
+	store 2,mem_data_current
+	call mouse_drawing_optima_data_x
+	fetch 2,mem_data_pre
+	store 2,mem_mouse_x_pre
+	fetch 2,mem_data_current
+	store 2,mem_mouse_x
+
+	fetch 2,mem_mouse_y_pre
+	store 2,mem_data_pre
+	fetch 2,mem_mouse_y
+	store 2,mem_data_current
+	call mouse_drawing_optima_data_y
+	fetch 2,mem_data_pre
+	store 2,mem_mouse_y_pre
+	fetch 2,mem_data_current
+	store 2,mem_mouse_y
+	rtn
+
+mouse_drawing_optima_xy_offset_modify:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_XY_OFFSET
+	bpatch patch12_4,mem_patch12
+	fetch 2,mem_mouse_x_pre
+	store 2,mem_data_value
+	call mouse_pre_xy_data_judge
+	store 2,mem_mouse_x_pre
+	fetch 2,mem_mouse_x
+	store 2,mem_data_value
+	call mouse_current_xy_data_judge
+	store 2,mem_mouse_x
+	fetch 2,mem_mouse_y_pre
+	store 2,mem_data_value
+	call mouse_pre_xy_data_judge
+	store 2,mem_mouse_y_pre
+	fetch 2,mem_mouse_y
+	store 2,mem_data_value
+	call mouse_current_xy_data_judge
+	store 2,mem_mouse_y
+	rtn
+
+mouse_pre_xy_data_judge:	
+	fetch 1,mem_data_value+1
+	branch mouse_pre_xy_pdata_offset,blank
+	branch mouse_pre_xy_ndata_offset
+
+mouse_pre_xy_pdata_offset:
+	fetch 1,mem_data_value
+	call mouse_pre_xy_get_0_4_times
+	store 1,mem_data_value
+mouse_xy_data_offset_new:
+	fetch 2,mem_data_value
+	rtn
+mouse_pre_xy_ndata_offset:
+	fetch 1,mem_data_value
+	call mouse_pdata_invert
+	call mouse_pre_xy_get_0_4_times
+	call disable_blank,blank
+	call mouse_pdata_get_new_value
+	branch mouse_xy_data_offset_new
+	
+mouse_current_xy_data_judge:
+	fetch 1,mem_data_value+1
+	branch mouse_current_xy_pdata_offset,blank
+	branch mouse_current_xy_ndata_offset
+mouse_current_xy_pdata_offset:
+	fetch 1,mem_data_value
+	call mouse_current_xy_get_0_6_times
+	store 1,mem_data_value
+	branch mouse_xy_data_offset_new
+mouse_current_xy_ndata_offset:	
+	fetch 1,mem_data_value
+	call mouse_pdata_invert
+	call mouse_current_xy_get_0_6_times
+	call disable_blank,blank
+	call mouse_pdata_get_new_value
+	branch mouse_xy_data_offset_new
+	
+mouse_pre_xy_get_0_4_times:
+	mul32 pdata,4,pdata
+	div pdata,5
+	call wait_div_end
+	quotient pdata
+	rtn
+mouse_current_xy_get_0_6_times:	//0.6 times
+	mul32 pdata,12,pdata
+	div pdata,10
+	call wait_div_end
+	quotient pdata
+	rtn	
+	
+mouse_drawing_optima_data_x:
+	fetch 2,mem_data_pre
+	fetcht 2,mem_data_current
+	iadd temp,pdata
+	fetcht 1,mem_mouse_data_xtemp
+	iadd temp,pdata
+	and pdata,0x01,temp
+	storet 1,mem_mouse_data_xtemp
+	branch mouse_drawing_optima_data
+
+mouse_drawing_optima_data_y:
+	fetch 2,mem_data_pre
+	fetcht 2,mem_data_current
+	iadd temp,pdata
+	fetcht 1,mem_mouse_data_ytemp
+	iadd temp,pdata
+	and pdata,0x01,temp
+	storet 1,mem_mouse_data_ytemp
+	branch mouse_drawing_optima_data
+
+/**********
+input:data_pre,data_current
+output:data_pre,data_current after optima
+***********/
+mouse_drawing_optima_data:
+	store 3,mem_data_sum
+	isolate1 16,pdata
+	branch mouse_data_sum_overflow,true
+	fetch 1,mem_data_sum+1
+	beq 0xff,mouse_data_sum_n
+	fetch 1,mem_data_sum
+mouse_data_store_pre:
+	rshift pdata,pdata
+	store 2,mem_data_pre
+	store 2,mem_data_current
+	rtn
+mouse_data_sum_overflow:
+	fetch 1,mem_data_sum+1	//sum positive
+	beq 0,mouse_data_sum_overflow_p
+	fetch 3,mem_data_sum	
+	branch mouse_data_store_pre
+mouse_data_sum_overflow_p:
+	jam 0,mem_data_sum+2
+	fetch 1,mem_data_sum
+	branch mouse_data_store_pre
+
+mouse_data_sum_n:
+	fetch 1,mem_data_sum	//sum negetive
+	call mouse_pdata_get_half
+	store 1,mem_data_pre
+	store 1,mem_data_current
+	branch mouse_data_zero,blank
+	setarg 0xff
+mouse_data_set_direction:	
+	store 1,mem_data_pre+1
+	store 1,mem_data_current+1
+	rtn
+mouse_data_zero:
+	setarg 0
+	branch mouse_data_set_direction
+
+mouse_pdata_get_half:
+	call mouse_pdata_invert
+	rshift pdata,pdata
+mouse_pdata_get_new_value:	
+	call mouse_rega_in_out
+	sub pdata,0,pdata
+	store 1,mem_data_value	
+	rtn
+
+mouse_pdata_invert:
+	sub pdata,0,pdata
+mouse_rega_in_out:	
+	store 1,mem_rega
+	fetch 1,mem_rega
+	rtn
+
+mouse_disable_asm:
+	jam 0,mem_mouse_asm_flag
+	rtn
+mouse_enable_asm:
+	jam 1,mem_mouse_asm_flag
+	rtn
+
+//rega mouse_x, regb mouse_y, pdata refer
+mouse_pdata_greater_than_check:
+	isub rega,null
+	nbranch disable_blank,positive
+	isub regb,null
+	nbranch disable_blank,positive
+	branch enable_blank
+mouse_data_less_than_check:
+	isub rega,null
+	nrtn positive
+	isub regb,null
+	nrtn positive
+	branch enable_blank
+
+mouse_data_abs_check:
+	fetch 2,mem_mouse_x
+	call mouse_data_abs
+	copy pdata,rega
+	fetch 2,mem_mouse_y
+	call mouse_data_abs
+	copy pdata,regb
+	rtn
+
+/***********
+input: data_current
+output:pdata,abs
+************/
+mouse_data_abs:
+	store 2,mem_data_current
+	fetch 1,mem_data_current+1
+	beq 0xff,mouse_data_reversal
+	fetch 1,mem_data_current
+mouse_data_abs_store:
+	and_into 0xff,pdata
+	//output:pdata
+	rtn
+mouse_data_reversal:
+	fetch 2,mem_data_current
+	sub pdata,0,pdata
+	branch mouse_data_abs_store
+
+mouse_24g_long_sleep_param_update_timer:
+	arg mem_24g_long_sleep_param_update_timer,regc
+	arg mouse_24g_long_sleep_normal_param,regb
+	branch timer_single_step
+mouse_24g_long_sleep_normal_param:
+	fetch 4,mem_24g_long_sleep_set1
+	store 4,mem_24g_enter_hibernate
+	jam 1,mem_mouse_long_mult_flag
+	rtn
+
+
+mouse_24g_long_sleep_set:
+	fetch 1,mem_24g_long_sleep_set_level
+	beq 0x00,mouse_24g_long_sleep_set_30ms
+	beq 0x01,mouse_24g_long_sleep_set_50ms
+	beq 0x02,mouse_24g_long_sleep_set_80ms
+	beq 0x03,mouse_24g_long_sleep_set_100ms
+mouse_24g_long_sleep_set_80ms:
+	setarg 0x0ea600
+mouse_24g_long_sleep_set_end:	
+	store 4,mem_24g_long_sleep_set1
+	rtn
+mouse_24g_long_sleep_set_30ms:
+	setarg 0x05e740
+	branch mouse_24g_long_sleep_set_end
+mouse_24g_long_sleep_set_50ms:
+	setarg 0x0927c0
+	branch mouse_24g_long_sleep_set_end
+mouse_24g_long_sleep_set_100ms:
+	setarg 0x124f80
+	branch mouse_24g_long_sleep_set_end
+
+mouse_24g_hibernate_set:
+	bpatch patch12_5,mem_patch12
+	jam 0,mem_24g_attempt_fail_flag
+	call g24_transmit_next_packet
+	setarg -1
+	store 4,mem_24g_enter_hibernate
+	setarg 0
+	store 7,mem_mouse_key
+	jam 1,mem_sensor_shutdown_flag
+	call mouse_sensor_powerdown
+	call mouse_setgpio_hibernate
+	branch mouse_24g_long_sleep
+
+mouse_wakeup_24g:
+	fetch 1,mem_sensor_shutdown_flag
+	ncall mouse_wakeup_24g_from_long_sleep,blank
+	jam 0,mem_sensor_shutdown_flag
+	rtn
+
+mouse_wakeup_24g_from_long_sleep:
+	call mouse_init_sensor_wakeup
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_WHEEL_WAKE_UP_CANCEL
+mouse_wheel_gpio_init:
+	fetch 1,mem_whee_a_data_gpio
+	arg gpcfg_pullup,temp
+ 	call gpio_config_function_int
+	fetch 1,mem_whee_b_data_gpio
+	arg gpcfg_pullup,temp
+ 	branch gpio_config_function_int	
+
+mouse_24g_transmit_start:
+	call mouse_24g_fast_conn_mode_check
+	fetch 1,mem_sensor_shutdown_flag
+	nbranch mouse_24g_short_sleep,blank
+	branch g24_transmit_start_next
+
+mouse_24g_fast_conn_mode_check:
+	fetch 4,mem_24g_receiver_addr
+	fetcht 4,mem_24g_fast_conn_addr
+	isub temp,null
+	branch mouse_soft_agc_enable,zero
+	branch mouse_soft_agc_disable
+
+mouse_soft_agc_enable:
+	jam 0,mem_gain_fix
+	jam TX_POWER_FACTORY,mem_tx_power
+	rtn
+mouse_soft_agc_disable:
+	jam 0xff,mem_gain_fix
+	rtn
+
+mouse_24g_stop:
+	set0 mark_24g,mark
+	jam STATE_24G_STOP,mem_24g_conn_sm
+	arg MOUSE_24G_PAIRING_FLAG,queue
+	branch mouse_disable_function_flag
+
+mouse_24g_start_mode:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_24G,mouse_24g_mode_setup_error
+	call mouse_device_24g_pair_led_config
+	call mouse_wakeup_from_power_check	// wake from hibernate :enble user
+	branch mouse_24g_reconn_dongle_start,user
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_AUTO_24G_PARING,mouse_24g_reconn_general_dongle
+	bbit0 MOUSE_ENABLE_24G_POWER_ON_PAIRING,mouse_24g_reconn_general_dongle
+	call mouse_key_check_once
+	and rega,0x07,pdata
+	fetcht 1,mem_mouse_commbination_key_24g
+	isub temp,null
+	branch mouse_24g_start_pair_mode,zero
+	branch mouse_24g_reconn_general_dongle
+
+mouse_24g_mode_setup_error:
+	fetch 1,mem_reconn_times
+	nbranch mouse_polling_device,blank
+	rtn
+
+mouse_24g_first_start_auto_pair_mode:
+	call mouse_wakeup_from_power_check
+	branch mouse_24g_first_start_reconn,user  	// wake from hibernate :enble user
+mouse_24g_reconn_general_dongle:	
+	jam MODE_24G_DEVICE,mem_device_flag
+	fetch 2,mem_mouse_24g_power_on_fast_conn_timer
+	store 2,mem_24g_reconn_timeout
+	jam FAST_CONN_AND_3_0_ADDR,mem_24g_reconn_type
+	branch g24_reconn_start
+
+mouse_24g_start_auto_pair:
+	fetch 2,mem_24g_pair_timeout_init
+	store 2,mem_24g_reconn_timeout
+	jam PAIR_AND_3_0_ADDR,mem_24g_reconn_type
+	branch g24_reconn_start
+
+mouse_24g_first_start_reconn:
+	fetch 1,mem_device_flag
+	beq MODE_24G_DEVICE,mouse_24g_reconn_dongle_start
+	call mouse_bluetooth_fast_conn_disable
+mouse_24g_first_bluetooth_reconnect:
+	call mouse_24g_stop
+	jam MODE_BT_DEVICE1,mem_device_flag
+	call mouse_select_reconn_device
+	branch mouse_start_reconnect_device
+
+mouse_24g_first_bb_event_reconn_timeout:
+	call mouse_wakeup_from_power_check
+	branch mouse_app_enter_hibernate,user
+	branch mouse_start_discovery
+
+mouse_24g_first_store_reconn_info:
+	call mouse_wakeup_from_power_check
+	rtn user
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_24G_FIRST_AUTO_PAIRING,mouse_store_device_info_delay
+	rtn
+
+mouse_24g_start_pair_mode:
+	call mouse_device_24g_pair_led_config
+	jam 0,mem_24g_reconn_type
+	arg MOUSE_24G_PAIRING_FLAG,queue
+	call mouse_enable_function_flag
+	setarg 0
+	store 2,mem_24g_reconn_timeout	
+	call mouse_stop_discovery
+mouse_24g_pair_mode_check:
+	jam TYPE_MS,mem_24g_data_type
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_KEYBOARD,g24_pair_start
+	jam TYPE_KB,mem_24g_data_type
+	branch g24_pair_start
+
+mouse_24g_attempt_fail:
+	fetch 1,mem_24g_attempt_fail_flag
+	nbranch mouse_24g_hibernate_set,blank
+	fetch 1,mem_24g_reconn_type
+	beq FAST_CONN_AND_3_0_ADDR,mouse_24g_fast_conn_attempt_fail
+	beq PAIR_AND_3_0_ADDR,mouse_24g_auto_pair_attempt_fail
+	beq RECEIVER_AND_3_0_ADDR,mouse_reconn_dongle_attempt_fail
+mouse_24g_attempt_fail_enter_hibernate:
+	call mouse_24g_stop
+	fetch 1,mem_reconn_times
+	nbranch mouse_polling_device,blank
+	fetch 1,mem_device_flag
+	beq MODE_24G_DEVICE,mouse_app_enter_hibernate
+	rtn
+
+mouse_24g_fast_conn_attempt_fail:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag 
+	bbit1 MOUSE_ENABLE_24G_FIRST_AUTO_PAIRING,mouse_24g_start_auto_pair
+	bbit1 MOUSE_ENABLE_AUTO_24G_PARING,mouse_24g_start_auto_pair
+	bbit0 MOUSE_ENABLE_24G_AUTO_PAIR_NERVER_BEEN_PAIRED,mouse_24g_reconn_dongle_start
+	fetch 4,mem_mouse_24g_addr		// auto pair first time
+	fetcht 4,mem_mouse_compare_addr
+	isub temp,null
+	branch mouse_24g_start_pair_mode,zero
+mouse_24g_reconn_dongle_start:
+	fetch 2,mem_24g_reconn_timeout_init
+	store 2,mem_24g_reconn_timeout
+	jam RECEIVER_AND_3_0_ADDR,mem_24g_reconn_type
+	branch g24_reconn_start
+
+mouse_24g_auto_pair_attempt_fail:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag 
+	bbit0 MOUSE_ENABLE_24G_FIRST_AUTO_PAIRING,mouse_24g_attempt_fail_enter_hibernate
+	fetch 1,mem_device_number
+	beq 1,mouse_24g_attempt_fail_enter_hibernate		//24g first mode and only 2.4g device
+	branch mouse_24g_first_bluetooth_reconnect
+
+mouse_reconn_dongle_attempt_fail:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_24G_FIRST_AUTO_PAIRING,mouse_24g_attempt_fail_enter_hibernate
+	bbit1 MOUSE_ENABLE_EEPROM,mouse_24g_attempt_fail_enter_hibernate
+	bbit1 MOUSE_ENABLE_FLASH,mouse_24g_attempt_fail_enter_hibernate
+	branch mouse_24g_start_auto_pair+1
+	
+mouse_24g_attempt_success:
+	fetch 4,mem_24g_addr
+	store 4,mem_24g_receiver_addr
+	store 4,mem_mouse_24g_addr		// if need store 24g address to eeprom/flash,need get mem_24g_addr
+	call g24_ch_syncword_crc8_init
+	call mouse_no_data_timer_init
+	call mouse_device_poweron_led_config
+	call mouse_init_sensor_reset
+	jam 0,mem_mouse_long_mult_flag
+	jam 0,mem_24g_conn_sm
+	jam 0,mem_24g_reconn_type
+	fetch 4,mem_24g_receiver_addr
+	fetch 4,mem_24g_fast_conn_addr
+	isub temp,null
+	rtn zero
+	branch mouse_24g_first_store_reconn_info
+	
+mouse_24g_pairing_complete:
+	call mouse_init_sensor_reset
+	call mouse_read_sensor_common
+mouse_24g_pairing_complete_common:
+	call mouse_device_poweron_led_config
+	call mouse_no_data_timer_init
+	arg MOUSE_24G_PAIRING_FLAG,queue
+	call mouse_disable_function_flag
+	setarg 0
+	store 2,mem_24g_pair_timeout
+	store 2,mem_24g_reconn_timeout
+	store 1,mem_24g_conn_sm
+	store 1,mem_mouse_move_flag
+	store 1,mem_24g_reconn_type
+
+
+	fetch 4,mem_24g_addr
+	store 4,mem_24g_receiver_addr
+	store 4,mem_mouse_24g_addr
+	branch mouse_store_device_info_delay
+
+mouse_24g_short_sleep_clear_wake:
+	call clear_wake
+	branch lpm_write_gpio_wakeup
+
+mouse_24g_package_data:
+	bpatch patch12_6,mem_patch12
+	rtnmark0 mark_24g
+	call mouse_motion
+	nrtn user
+	fetch 1,mem_mouse_24g_long_sleep_flag
+	jam 0,mem_mouse_24g_long_sleep_flag
+	ncall mouse_24g_short_sleep_clear_wake,blank	
+	
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_KEYBOARD,mouse_24g_mouse_package_data
+	fetch 1,mem_customer_key
+	nbranch mouse_24g_keyboard_package_data,blank
+mouse_24g_mouse_package_data:
+	call mouse_data_xy_release
+	fetch 1,mem_24g_data_type
+	bbit1 1,mouse_24g_mouse_package_data_now	// last package is keyboard data
+	fetcht 1,mem_24g_txbuf+1
+	fetch 1,mem_mouse_key
+	ior temp,pdata
+	store 1,mem_mouse_key
+	fetcht 1,mem_24g_txbuf+6
+	fetch 1,mem_mouse_z
+	iadd temp,pdata
+	store 1,mem_mouse_z
+	fetcht 1,mem_24g_txbuf+7
+	fetch 1,mem_mouse_tz
+	iadd temp,pdata
+	store 1,mem_mouse_tz	
+mouse_24g_mouse_package_data_now:	
+	jam TYPE_MS,mem_24g_data_type
+	arg 7,rega	//length
+	arg mem_mouse_key,regb //tx buff
+	fetch 2,mem_mouse_z
+	rtn blank
+	branch g24_transmit_by_interrupt_enable
+
+mouse_24g_keyboard_package_data:
+	jam TYPE_KB,mem_24g_data_type
+	arg 9,rega	//length
+	fetch 1,mem_customer_data_trigger
+	nbranch mouse_customer_key_press,blank
+	arg mem_customer_key_release,regb	//tx buff
+	rtn
+mouse_customer_key_press:
+	arg mem_customer_key_press,regb
+	rtn
+
+
+/**************************************g24 search receiver*****************************************/
+
+mouse_24g_search_dongle_init:
+	setarg 0
+	store 3,mem_mouse_search_dongle_action
+	rtn
+
+mouse_24g_search_dongle:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_24G_SEARCH_DONGLE
+	fetch 1,mem_mouse_long_mult_flag
+	rtn blank
+	fetch 1,mem_24g_abort_pac
+	rtn blank
+	fetch 1,mem_mouse_search_dongle_interval
+	increase 1,pdata
+	and_into 3,pdata
+	store 1,mem_mouse_search_dongle_interval
+	nrtn blank	//400ms
+	jam 0,mem_mouse_search_dongle_ch
+mouse_24g_search_dongle_loop:
+	bpatch patch12_7,mem_patch12
+	fetch 1,mem_mouse_search_dongle_ch
+	increase 1,pdata
+	store 1,mem_mouse_search_dongle_ch
+	sub pdata,G24_CH_NUMBER,null
+	nbranch mouse_24g_search_dongle_loop_end,positive
+	call g24_reconn_data_prep
+	call g24_transmit_receive_ack
+	nbranch mouse_24g_search_dongle_loop_retry,sync
+	nbranch mouse_24g_search_dongle_loop_retry,user3
+	call mouse_g24_ackpayload_parse
+	call mouse_24g_search_dongle_success
+mouse_24g_search_dongle_loop_end:
+	call g24_txbuf_clear
+	fetch 1,mem_mouse_search_dongle_count
+	increase 1,pdata
+	store 1,mem_mouse_search_dongle_count
+	beq G24_CH_POLL_COUNT,mouse_24g_search_dongle_check
+	rtn
+
+mouse_24g_search_dongle_loop_retry:
+	call g24_ch
+	branch mouse_24g_search_dongle_loop
+
+mouse_24g_search_dongle_check:
+	jam 0,mem_mouse_search_dongle_count
+	fetch 1,mem_mouse_search_dongle_action
+	rtnbit1 G24_DISCONN_STATE
+	set1 G24_DISCONN_STATE,pdata
+	store 1,mem_mouse_search_dongle_action
+	fetch 2,mem_mouse_24g_search_dongle_time_init		//3min
+	store 2,mem_mouse_no_data_timer
+	branch mouse_sensor_powerdown
+	
+mouse_24g_search_dongle_success:
+	fetch 1,mem_24g_abort_pac
+	branch mouse_24g_search_dongle_init,blank
+	jam 0,mem_mouse_search_dongle_count
+	fetch 1,mem_mouse_search_dongle_action
+	rtnbit0 G24_DISCONN_STATE
+	set0 G24_DISCONN_STATE,pdata
+	store 1,mem_mouse_search_dongle_action
+	call mouse_no_data_timer_init
+	branch mouse_init_sensor_wakeup
+
+mouse_g24_ackpayload_parse:
+	call g24_ackpayload_parse
+	fetch 1,mem_24g_rxbuf+1
+	compare 0x08,pdata,0xf8
+	nrtn true
+	fetch 1,mem_24g_rxbuf+2		// pc sleep mouse ackpayload: 01 08 ff
+	beq 0xff,mouse_24g_hibernate_set
+	rtn
+
+/**************************************g24 search receiver*****************************************/
+
+
+mouse_g24_retransmit:
+	fetch 1,mem_mouse_need_soft_reset
+	nrtn blank
+	call mouse_retransmit_select_device_by_pb_button
+	call mouse_select_device_by_dpi_button_once
+	branch g24_retransmit0
+
+mouse_select_device_by_dpi_button_once:
+	arg 12,queue
+	call timer_check
+	nrtn blank
+	call mouse_dpi_check_once
+mouse_g24_retransmit_event_set:
+	call mouse_dpi_key_check_long_press
+mouse_g24_retransmit_100ms_timer_init:
+	arg 12,queue
+	setarg 160
+	branch timer_init
+	
+mouse_dpi_check_once:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_SELECT_DEVICE_BY_DPI_BUTTON
+//	jam 0x03,mem_mouse_dpikey_press_status
+	branch mouse_dpi_check
+
+/**************************************g24 new process start********************************************/
+mouse_24g_before_lpm_sleep:
+	fetch 1,mem_device_flag
+	bne MODE_24G_DEVICE,lpm_sleep_skip_cb_function
+	fetch 1,mem_24g_disable_fec1
+	rtn blank
+mouse_peripheral_clock_off:
+	jam 2,core_clksel			//use rc clock
+	jam 0xf8,core_lpm_ctrl
+	rtn
+
+/**************************************g24 new process end********************************************/
+
+/*******************logo led*******************/
+mouse_logo_led_on_timer:
+	fetch 1,mem_mouse_logo_led_gpio
+	rtneq GPIO_DISABLE
+	fetch 2,mem_mouse_no_data_timer
+	rtn blank
+	fetch 2,mem_mouse_no_data_timeout
+	fetcht 2,mem_mouse_no_data_timer
+	isub temp,temp
+	fetch 2,mem_mouse_logo_led_on_time_init
+	isub temp,pdata
+	branch mouse_logo_led_on,positive
+mouse_logo_led_off:
+	fetcht 1,mem_mouse_logo_led_gpio
+	branch mouse_led_off
+mouse_logo_led_on:
+	fetcht 1,mem_mouse_logo_led_gpio
+	branch mouse_led_on
+	
+/*******************logo led end*******************/
+
+
+
+/*******************dpi led*******************/
+mouse_dpi_led_blink_delay_timer:
+	arg mem_mouse_dpi_led_delay_count,regc
+	arg mouse_dpi_led_blink_init,regb
+	branch timer_single_step
+	
+mouse_dpi_led_blink_init:
+	bpatch patch13_0,mem_patch13
+	fetch 1,mem_config_sensor_type
+	beq P3212,mouse_dpi_led_blink_init_another		//result:    level3: 1  2  3     level4: 2  3  4  1
+	beq KA8G2,mouse_dpi_led_blink_init_another	//result:    level3: 1  2  3     level4: 2  3  4  1
+	fetcht 1,mem_mouse_dpi
+	increase 2,temp	// 2 3 4 (5)
+mouse_dpi_led_blink_init_next:
+	sub temp,3,null
+	call mouse_dpi_led_blink_init_level_4,positive
+	ncall mouse_dpi_led_blink_count_clean,positive
+	copy temp,pdata
+	iadd pdata,pdata
+	store 1,mem_mouse_multi_led_blink_count
+mouse_multi_dpi_led_blink_enable:
+	jam 4,mem_mouse_multi_led_blink_type
+	call mouse_multi_dpi_led_blink_timer_init	
+	jam MULTI_LED_BLINK,mem_mouse_multi_led_type
+	branch mouse_multi_led_enable
+
+mouse_dpi_led_blink_init_another:
+	fetcht 1,mem_mouse_dpi
+	increase 1,temp
+	branch mouse_dpi_led_blink_init_next
+
+mouse_dpi_led_blink_init_level_4:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_DPI_LEVEL_4
+	increase 1,temp  	// 2-->3   3-->4
+	rtn
+mouse_dpi_led_blink_count_clean:
+	increase -3,temp		// 4-->1  5-->2
+	rtn
+
+
+mouse_dpi_led_blink_delay:
+	fetch 1,mem_mouse_dpi_gpio
+	rtneq GPIO_DISABLE
+	fetch 2,mem_mouse_discovery_timer
+	nrtn blank
+	fetch 2,mem_24g_pair_timeout
+	nrtn blank
+	fetch 2,mem_24g_reconn_timeout
+	nrtn blank
+	fetch 1,mem_mouse_multi_led_powon_timer
+	nrtn blank
+	fetch 1,mem_mouse_dpi_led_delay_count_init
+	branch mouse_dpi_led_blink_init,blank
+	store 1,mem_mouse_dpi_led_delay_count  //delay 1s led blink
+	rtn
+
+/*******************dpi led end*******************/
+
+
+
+/*******************low voltage led*************************/
+
+mouse_check_dpi_blink:
+	disable user
+	fetch 1,mem_mouse_multi_led_blink_type		//04:dpi blink
+	sub pdata,4,null
+	nrtn zero
+	branch enable_user
+
+mouse_low_voltage_led_timer:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_LOW_LED
+	rtnbit0 MOUSE_LOW_VOLTAGE_FLAG
+	fetch 2,mem_mouse_discovery_timer
+	nrtn blank
+	fetch 2,mem_24g_pair_timeout
+	nrtn blank
+	fetch 2,mem_24g_reconn_timeout
+	nrtn blank
+	fetch 1,mem_mouse_multi_led_powon_timer
+	nrtn blank
+	call mouse_check_dpi_blink		//need judge blink led=dpi? if led=dpi led->rtn
+	rtn user
+
+	fetch 1,mem_mouse_multi_low_led_blink_count
+	branch mouse_low_led_blink_count_init_judge,blank
+mouse_low_led_blink_timer:
+	fetcht 1,mem_adc_low_volatage_led_timer_count
+	increase 1,temp
+	storet 1,mem_adc_low_volatage_led_timer_count
+	fetch 1,mem_mouse_low_led_blink_timer
+	isub temp,null
+	ncall mouse_low_led_timer_count_clean,positive
+	fetch 1,mem_mouse_low_led_blink_half_timer
+	isub temp,null
+	nbranch mouse_low_voltage_led_off_judge,positive
+mouse_low_voltage_led_on_judge:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_LOW_FOR_LED,mouse_device_led_on
+	bbit1 MOUSE_ENABLE_DPI_LOW_FOR_LED,mouse_device_led_on
+mouse_low_voltage_led_on:
+	fetcht 1,mem_mouse_low_voltage_alarm_gpio 
+	branch mouse_led_on
+
+mouse_low_led_timer_count_clean:
+	jam 1,mem_adc_low_volatage_led_timer_count
+	fetch 1,mem_mouse_multi_low_led_blink_count	//blink count decrease
+	increase -1,pdata
+	store 1,mem_mouse_multi_low_led_blink_count
+mouse_low_voltage_led_off_judge:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_LOW_FOR_LED,mouse_device_led_off
+	bbit1 MOUSE_ENABLE_DPI_LOW_FOR_LED,mouse_device_led_off
+mouse_low_voltage_led_off:
+	fetcht 1,mem_mouse_low_voltage_alarm_gpio
+	branch mouse_led_off
+
+mouse_low_led_blink_count_init_judge:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_LOW_LED_BLINK_LIMIT,mouse_low_voltage_led_off_judge
+	call mouse_multi_low_led_blink_count_init
+	branch mouse_low_led_blink_timer
+	
+/*******************low voltage led end*************************/
+
+
+/*******************multi led start*************************/
+/***parm init****/
+
+mouse_device_multi_led_parm_init:
+	jam 0,mem_mouse_multi_led_blink_enable
+	call mouse_device_multi_led_all_off		//can be remove?
+	jam 0,mem_mouse_multi_led_blink_type
+	fetch 1, mem_mouse_low_led_blink_timer
+	rshift pdata,pdata
+	store 1,mem_mouse_low_led_blink_half_timer
+	rtn
+mouse_multi_low_led_blink_count_init:
+	fetch 1,mem_mouse_multi_lowled_blink_count_init
+	store 1,mem_mouse_multi_low_led_blink_count
+	rtn
+
+mouse_multi_led_blink_timer_init:
+	fetch 1,mem_mouse_multi_led_blink_type		//00:rtn	01:24g blink	02:le blink		03:reconn blink 	04:low blink	05:dpi blink
+	beq 1,mouse_device_24g_led_blink_timer_init
+	beq 2,mouse_device_le_discovery_led_blink_timer_init
+	beq 3,mouse_device_le_reconn_led_blink_timer_init
+mouse_multi_dpi_led_blink_timer_init:
+	fetch 1,mem_mouse_dpi_led_blink_timer_init
+mouse_store_multi_led_blink_timer:
+	store 1,mem_mouse_multi_led_blink_timer
+	rtn
+mouse_device_24g_led_blink_timer_init:
+	fetch 1,mem_mouse_multi_24gled_blink_timer_init
+	branch mouse_store_multi_led_blink_timer
+mouse_device_le_discovery_led_blink_timer_init:
+	fetch 1,mem_mouse_multi_le_discovery_blink_timer_init
+	branch mouse_store_multi_led_blink_timer
+mouse_device_le_reconn_led_blink_timer_init:
+	fetch 1,mem_mouse_multi_le_reconn_blink_timer_init
+	branch mouse_store_multi_led_blink_timer
+
+//===led poweron config===//
+mouse_device_poweron_led_config:	//power on
+	bpatch patch13_1,mem_patch13
+	fetch 1,mem_mouse_multi_led_powon_timer_init
+	store 1,mem_mouse_multi_led_powon_timer
+	jam MULTI_LED_ON,mem_mouse_multi_led_type
+mouse_multi_led_enable:
+	jam OFF,mem_mouse_multi_led_state
+	jam ON,mem_mouse_multi_led_blink_enable
+	rtn
+
+//===led blink config===//
+mouse_device_24g_pair_led_config:		//24g pair led config
+	bpatch patch13_2,mem_patch13
+	fetch 1,mem_device_flag
+	rtnne MODE_24G_DEVICE
+	call mouse_multi_led_blink_enable_init
+	jam 1,mem_mouse_multi_led_blink_type
+	call mouse_device_24g_led_blink_timer_init
+	fetch 1,mem_mouse_le_reconn_blink_limit
+	rtn blank
+	fetch 1,mem_mouse_multi_24gled_blink_count_init
+	branch mouse_device_led_blink_count_init
+
+mouse_device_le_reconn_led_config:		//le recon led config
+	fetch 1,mem_device_flag
+	rtneq MODE_24G_DEVICE
+	call mouse_multi_led_blink_enable_init
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_BT_RECONN_LED_EFFECT
+	jam 3,mem_mouse_multi_led_blink_type
+	call mouse_device_le_reconn_led_blink_timer_init
+	fetch 1,mem_mouse_le_reconn_blink_limit
+	rtn blank
+	fetch 1,mem_mouse_multi_le_reconn_blink_count_init
+mouse_device_led_blink_count_init:
+	store 1,mem_mouse_multi_led_blink_count
+	rtn	
+
+mouse_device_discovery_led_config:		//ble discovery led config
+	jam 0,mem_mouse_le_reconn_blink_limit
+	jam 2,mem_mouse_multi_led_blink_type
+	call mouse_device_le_discovery_led_blink_timer_init
+mouse_multi_led_blink_enable_init:
+	jam 1,mem_mouse_multi_led_blink_enable
+	jam MULTI_LED_BLINK,mem_mouse_multi_led_type
+	branch mouse_device_multi_led_on
+
+
+//====multi timer====//
+mouse_led_multi_timer:
+	fetch 1,mem_mouse_multi_led_blink_enable
+	rtn blank
+	fetch 1,mem_mouse_multi_led_type
+	beq MULTI_LED_BLINK,mouse_multi_led_type_blink
+mouse_device_multi_led_type_on:
+	fetch 1,mem_mouse_multi_led_powon_timer
+	branch mouse_device_poweron_led_off,blank
+	increase -1
+	store 1,mem_mouse_multi_led_powon_timer
+	branch mouse_device_led_on
+
+mouse_device_poweron_led_off:
+ 	jam 0,mem_mouse_multi_led_blink_enable
+	call mouse_multi_low_led_blink_count_init
+	branch mouse_device_led_off
+
+mouse_multi_led_type_blink:
+	bpatch patch13_3,mem_patch13
+	fetch 1,mem_mouse_multi_led_blink_type	//00:rtn	01:24g blink	02:le blink		03:reconn blink 	04:low blink	05:dpi blink
+	rtn blank
+	beq 4,mouse_device_led_blink_limit	//dpi blink
+	branch mouse_device_led_blink_judge
+
+mouse_device_led_blink_judge:
+	fetch 1,mem_mouse_le_reconn_blink_limit
+	beq 1,mouse_device_led_blink_limit
+	branch mouse_multi_led_type_blink_next
+
+mouse_device_led_blink_limit:
+	fetch 1,mem_mouse_multi_led_blink_count
+	branch mouse_multi_led_off_judge, blank		//blink count =0
+mouse_multi_led_type_blink_next:	//blink no limit
+	arg mem_mouse_multi_led_blink_timer,regc
+	arg mouse_multi_led_type_blink_start,regb
+	branch timer_single_step
+	
+mouse_multi_led_type_blink_start:
+	fetch 1,mem_mouse_multi_led_blink_type
+	beq 4,mouse_multi_led_blink_count_decrease		//dpi blink
+	fetch 1,mem_mouse_le_reconn_blink_limit
+	beq 1,mouse_multi_led_blink_count_decrease
+mouse_multi_led_blink:
+	call mouse_multi_led_blink_timer_init
+	fetch 1,mem_mouse_multi_led_state
+	beq ON,mouse_multi_led_off_judge_next
+	branch mouse_multi_led_on_judge
+
+mouse_multi_led_blink_count_decrease:
+	fetch 1,mem_mouse_multi_led_blink_count	
+	increase -1
+	store 1,mem_mouse_multi_led_blink_count
+	branch mouse_multi_led_blink
+
+//=====led on/off interface=====//
+mouse_multi_led_on_judge:
+	fetch 1,mem_mouse_multi_led_blink_type
+	beq 4,mouse_multi_dpi_led_on_judge
+mouse_device_multi_led_on:
+	jam ON,mem_mouse_multi_led_state
+mouse_device_led_on:
+	bpatch patch13_4,mem_patch13
+	fetch 1,mem_device_flag
+	beq MODE_24G_DEVICE,mouse_device_24g_led_on
+	beq MODE_BT_DEVICE1,mouse_device_bt1_led_on
+	beq MODE_BT_DEVICE2,mouse_device_bt2_led_on
+	rtn
+mouse_device_24g_led_on:
+	fetcht 1,mem_mouse_1io2led_multi_24gled
+	branch mouse_led_on	//by mouse.dat config
+mouse_device_bt1_led_on:
+	fetcht 1,mem_mouse_1io2led_multi_bt1led
+	branch mouse_led_on	//by mouse.dat config
+mouse_device_bt2_led_on:
+	fetcht 1,mem_mouse_1io2led_multi_bt2led
+mouse_led_on:
+	branch gpio_out_active	//by mouse.dat config
+
+mouse_led_off:
+	branch gpio_out_inactive	//by mouse.dat config
+
+mouse_multi_led_off_judge:
+	jam 0,mem_mouse_multi_led_blink_enable
+	jam 0,mem_mouse_multi_led_blink_type
+mouse_multi_led_off_judge_next:
+	fetch 1,mem_mouse_multi_led_blink_type
+	beq 4,mouse_multi_dpi_led_off_judge
+mouse_device_multi_led_off:
+	jam OFF,mem_mouse_multi_led_state
+mouse_device_led_off:
+	bpatch patch13_5,mem_patch13
+	fetch 1,mem_device_flag
+	beq MODE_24G_DEVICE,mouse_device_24g_led_off
+	beq MODE_BT_DEVICE1,mouse_device_bt1_led_off
+	beq MODE_BT_DEVICE2,mouse_device_bt2_led_off
+	rtn
+mouse_device_24g_led_off:
+	fetcht 1,mem_mouse_1io2led_multi_24gled
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_1IO2LED,mouse_led_off
+	branch gpio_set_high_impedance
+mouse_device_bt1_led_off:
+	fetcht 1,mem_mouse_1io2led_multi_bt1led
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_1IO2LED,mouse_led_off
+	branch gpio_set_high_impedance
+mouse_device_bt2_led_off:
+	fetcht 1,mem_mouse_1io2led_multi_bt2led
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit0 MOUSE_ENABLE_1IO2LED,mouse_led_off
+	branch gpio_set_high_impedance
+
+mouse_device_multi_led_all_off:		//dpi+low no
+	call mouse_device_24g_led_off
+	call mouse_device_bt1_led_off
+	call mouse_device_bt2_led_off
+	call mouse_low_voltage_led_off_judge
+	branch mouse_multi_dpi_led_off_judge
+
+mouse_multi_dpi_led_off_judge:
+	jam OFF,mem_mouse_multi_led_state
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_DPI_FOR_LED,mouse_device_multi_led_off
+	bbit1 MOUSE_ENABLE_DPI_LOW_FOR_LED,mouse_device_multi_led_off
+mouse_multi_dpi_led_off:
+	fetcht 1,mem_mouse_dpi_gpio
+	branch mouse_led_off
+
+mouse_multi_dpi_led_on_judge:
+	jam ON,mem_mouse_multi_led_state
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_ENABLE_DPI_FOR_LED,mouse_device_multi_led_on
+	bbit1 MOUSE_ENABLE_DPI_LOW_FOR_LED,mouse_device_multi_led_on
+mouse_multi_dpi_led_on:
+	fetcht 1,mem_mouse_dpi_gpio
+	branch mouse_led_on	//by mouse.dat config
+
+/*******************multi led end*************************/
+
+mouse_low_voltage_led_no_enter_lpm:	
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_LOW_VOLTAGE_FLAG
+	fetch 1,mem_adc_low_volatage_led_timer_count
+	fetcht 1,mem_mouse_low_led_blink_half_timer
+	sub pdata,temp,null
+	branch mouse_lpm_mode_clear,positive
+mouse_low_voltage_led_no_enter_lpm_next:	
+	fetch 1,mem_device_flag
+	beq MODE_24G_DEVICE,g24_transmit_by_interrupt_exit_check
+	jam 1,mem_lpm_mode
+	rtn
+
+g24_transmit_by_interrupt_exit_check:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag	
+	rtnbit1 MOUSE_ENABLE_24G_250Hz	
+	branch g24_transmit_by_interrupt_exit
+
+mouse_lpm_mode_clear:
+	fetch 1,mem_device_flag
+	beq MODE_24G_DEVICE,g24_transmit_by_interrupt_enable
+	jam 0,mem_lpm_mode
+	rtn
+
+
+mouse_store_signal_rssi:
+//	call rssi_hex2dec
+	fetch 1,mem_rssi
+	branch rssi_signal
+
+mouse_le_transmit:
+	call mouse_store_signal_rssi
+	branch power_ctrl_start
+
+mouse_le_set_lpm_mult:
+	fetch 1,mem_le_connect_status_flag
+	compare 3,pdata,3
+	nbranch disable_blank,true
+	call app_lpm_mult_enable
+	branch enable_blank
+
+mouse_set_lpm_mult:
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BLE_CONNECTED,mouse_le_set_lpm_mult
+	rtn
+
+mouse_24g_long_sleep:
+	call g24_lpm_wait
+	nrtn user
+	jam 1,mem_mouse_24g_long_sleep_flag
+	call g24_setgpio_lpm_before
+	jam 0,mem_mouse_24g_sleep_miss
+	call mouse_24g_send_time_long_wake
+	fetch 1,mem_sensor_shutdown_flag
+	ncall mouse_setgpio_hibernate,blank
+	fetch 4,mem_24g_enter_hibernate
+	branch g24_long_seep2	
+
+mouse_24g_short_sleep:
+	fetch 1,mem_mouse_sleep_deal_type
+	branch g24_short_sleep,blank
+	call g24_lpm_wait
+	nrtn user
+	fetch 1,mem_mouse_24g_sleep_miss
+	jam 0,mem_mouse_24g_sleep_miss
+	sub pdata,0,null
+	nbranch mouse_24g_short_sleep_last_miss,zero
+	fetcht 2,mem_24g_retransmit
+	sub temp,0,null
+	branch mouse_24g_short_sleep_default,zero
+
+	fetch 4,mem_mouse_24g_tx_time_last_delt
+	branch mouse_24g_short_sleep_default,blank
+mouse_24g_short_sleep_notify:
+	fetcht 4,mem_mouse_24g_tsniff
+	isub temp,temp
+	storet 4,mem_mouse_24g_sleep_miss_temp
+	nbranch mouse_24g_short_sleep_long,positive
+	fetch 3,mem_24g_short_sleep_set
+	isub temp,pdata
+	nbranch mouse_24g_short_sleep_2,positive
+	arg 0x600,temp
+	isub temp,null
+	nbranch mouse_24g_short_sleep_2,positive
+mouse_24g_short_sleep2:
+	store 4,mem_mouse_24g_sleep_time_temp
+	call mouse_24g_miss_temp_clear
+	fetch 4,mem_mouse_24g_sleep_time_temp
+mouse_24g_short_sleep3:	
+	call clk2lpo
+	storet 4,mem_sleep_counter
+	branch lpm_sleep
+
+mouse_24g_short_sleep_default:
+	call mouse_24g_miss_temp_clear
+	fetch 3,mem_24g_short_sleep_set
+	branch mouse_24g_short_sleep2
+
+mouse_24g_short_sleep_long:
+	sub temp,0,temp
+	fetch 3,mem_24g_short_sleep_set
+	iadd temp,pdata
+	branch mouse_24g_short_sleep2
+
+mouse_24g_miss_temp_clear:
+	setarg 0
+	store 4,mem_mouse_24g_sleep_miss_temp
+	rtn
+	
+mouse_24g_short_sleep_last_miss:
+	fetch 4,mem_mouse_24g_tx_time_last_delt
+	fetcht 4,mem_mouse_24g_sleep_miss_temp
+	iadd temp,pdata
+	branch mouse_24g_short_sleep_notify
+	
+mouse_24g_short_sleep_2:
+	jam 1,mem_mouse_24g_sleep_miss
+	rtn
+
+
+mouse_24g_transmit_callback:
+	call mouse_24g_send_time_check
+	branch mouse_wakeup_24g
+
+mouse_24g_send_time_check:
+	fetch 1,mem_mouse_sleep_deal_type
+	rtn blank
+	fetch 1,mem_24g_transmit_by_interrupt
+	beq G24_TX_TIMER_INT_ENABLE,mouse_24g_send_timer_first
+	fetch 1,mem_mouse_24g_tx_count
+	branch mouse_24g_send_timer_first,blank
+	copy clkn,pdata
+	fetcht 6,mem_mouse_24g_tx_time_last
+	store 6,mem_mouse_24g_tx_time_last
+	call clk_diff_rt
+	store 4,mem_mouse_24g_tx_time_last_delt
+
+	fetch 1,mem_mouse_24g_sleep_miss
+	nrtn blank
+	fetch 2,mem_24g_retransmit
+	nrtn blank
+	fetch 4,mem_mouse_24g_tx_time_last_delt
+mouse_24g_send_time_check_1:
+	fetcht 5,mem_mouse_24g_tx_time_sum
+	iadd temp,pdata
+	store 5,mem_mouse_24g_tx_time_sum	
+	fetcht 1,mem_mouse_24g_tx_count
+	fetch 1,mem_mouse_24g_tx_time_sum_count
+	isub temp,null
+	branch mouse_24g_send_time_check_average,zero
+	increase 1,temp
+	storet 1,mem_mouse_24g_tx_count
+	rtn
+
+mouse_24g_send_time_check_average:
+	jam 1,mem_mouse_24g_tx_count
+	arg 0,temp
+	fetch 5,mem_mouse_24g_tx_time_sum
+	storet 5,mem_mouse_24g_tx_time_sum
+	fetcht 1,mem_mouse_24g_tx_time_sum_count
+	idiv temp
+	call wait_div_end
+  	quotient rega
+
+	fetch 4,mem_mouse_24g_tsniff
+	fetcht 1,mem_mouse_24g_tx_time_offset
+	isub temp,temp
+	increase -40,temp
+
+	copy rega,pdata
+	isub temp,pdata
+	branch mouse_24g_send_time_check_average_late,positive
+	sub pdata,0,pdata
+	
+	rshift2 pdata,pdata
+	fetcht 3,mem_24g_short_sleep_set
+	iadd temp,temp
+	bpatch patch13_6,mem_patch13
+	fetch 3,mem_mouse_24g_short_sleep_set_init
+	arg 0x1800,rega
+	iadd rega,pdata
+	isub temp,null
+	nbranch mouse_24g_send_time_check_average_min,positive
+	storet 3,mem_24g_short_sleep_set
+	rtn
+
+mouse_24g_send_time_check_average_late:
+	rshift2 pdata,temp
+	fetch 3,mem_24g_short_sleep_set
+	isub temp,temp
+	bpatch patch13_7,mem_patch13
+	fetch 3,mem_mouse_24g_short_sleep_set_init
+	arg 0x1800,rega
+	isub rega,pdata
+	isub temp,null
+	branch mouse_24g_send_time_check_average_min,positive
+	storet 3,mem_24g_short_sleep_set
+	rtn
+
+mouse_24g_send_time_check_average_min:
+	store 3,mem_24g_short_sleep_set
+	rtn
+
+mouse_24g_send_timer_first:
+	jam 1,mem_mouse_24g_tx_count
+	copy clkn,pdata
+	store 6,mem_mouse_24g_tx_time_last
+	rtn
+
+mouse_24g_send_time_long_wake:
+	setarg 0
+	store 1,mem_mouse_24g_tx_count
+	store 5,mem_mouse_24g_tx_time_sum
+	rtn
+	
+
+/*****************close define  COMPILE_MOUSE**********/
+else
+
+endif
+
+
+
Index: program/patch.prog
===================================================================
--- /1121s/branch/mouse/mouse_public_sdk_1M/program/patch.prog	(revision 6478)
+++ /1121s/branch/mouse/mouse_public_sdk_1M/program/patch.prog	(working copy)
@@ -33,12 +33,13 @@
 	beq patch0d_5,p_mouse_sensor_set_angle
 endif
 	beq patch0d_6,p_mouse_start_work
-	beq patch0d_7,mouse4_0_check_reconn_target
+	beq patch0d_7,p_mouse4_0_check_reconn_target
 	beq patch0e_3,p_mouse_setgpio_hibernate
 	beq patch0e_4,p_mouse_lpm_before_common
 ifdef ADC_1121SB	
 	beq patch0e_7,p_mouse_adc_read_start
 endif
+	beq patch0f_1,p_mouse_le_name_modify
 	beq patch0f_2,p_mouse_motion
 	beq patch0f_7,p_mouse_3io6key_check
 	beq patch10_1,p_mouse_init_sensor
@@ -134,6 +135,11 @@
 	store 1,0x8909
 	branch calc_freq+10
 
+p_set_ck2rfpll:
+	until null,lpo_edge
+	jam 0x58,0x813c
+	branch lpm_write_wait
+
 p_initialize_radio_cont:
 	jam 0,mem_le_testtype
 	jam 0,mem_cmd_le_create_conn
@@ -141,6 +147,7 @@
 	
 	jam 0x0d,0x8946
 	jam 0x10,0x896f
+	jam 0x40,core_rx_cfg0
 	jam 0xcd,0x8a13
 	jam 0x10,0x8a06
 	jam 0x4a,0x8a84
@@ -150,6 +157,7 @@
 //	branch initialize_radio_cont+1
 	//fetch 1,mem_wdt_always_work
 	call wdt_set_disable
+	ncall p_set_ck2rfpll,wake
 
 	until null,lpo_edge
 	jam 0x5f,0x813b 
@@ -178,6 +186,11 @@
 	call p_rx_dcoc
 	call p_rfpll_aac_ghpc
 	call p_set_xtal_cap
+	jam 0x06,0x8a30
+	jam 0xdd,0x8a32
+	jam 0xe0,0x8a88
+	jam 0x2d,0x8a8c
+	jam 0x78,0x8a31
 	jam SYSTEM_CLK_12M,mem_system_clk
 p_sadc_calibration:
 	rtn wake
@@ -247,6 +260,12 @@
 	jam 0x04,0x8902	
 	branch p_initialize_radio2
 
+p_set_otp_config_wake:
+	fetch 2,mem_otp_charge_pump_x
+	rtn blank
+	store 2,mem_otp_charge_pump
+	branch p_set_otp_config2
+
 p_set_otp_config:
 	branch p_set_otp_config_wake,wake
 	fetch 4,mem_otp_core_ldo
@@ -267,11 +286,6 @@
 	ior temp,pdata
 	store 1,0x8138 
 	until null,lpo_edge
-
-p_set_otp_config_wake:
-	fetch 2,mem_otp_charge_pump_x
-	rtn blank
-	store 2,mem_otp_charge_pump
 p_set_otp_config2:
 	fetch 1,0x8acb
 	and pdata,0xf0,pdata
@@ -320,6 +334,7 @@
 	nrtn blank
 	call p_mouse_retransmit_select_device_by_pb_button
 	call p_mouse_select_device_by_dpi_button_once
+	call mouse_wheel_check
 	branch g24_retransmit0
 
 p_mouse_retransmit_select_device_by_pb_button:
@@ -785,6 +800,7 @@
 	call gpio_out_active
 	fetcht 1,mem_matrix_public_gpio
 	call gpio_clr_wake
+	call mouse_wheel_check
 	call mouse_lpm_before_common+1
 	call mouse_gpio_pd_idle
 p_mouse_wheel_set_impedance:
@@ -807,7 +823,14 @@
 	store 4,mem_sleep_counter_all
 	call p_lpm_save_context
 	call p_mouse_puchk_set_check
-	branch lpm_sleep_skip_cb_function+4
+	fetch 1,mem_lpm_hv_sel
+	set1 LPM_DOZE_EN_BIT, pdata
+	call lpm_write_sel_hv
+	ncall lpm_preon_counter,wake
+	until null,lpo_edge
+	copy clkn,pdata
+	store 6,mem_sleep_clkn
+	branch lpm_sleep_skip_cb_function+10
 
 p_mouse_puchk_set_check:
 	fetch 1,mem_mouse_qdec_set_flag
@@ -870,7 +893,17 @@
 	fetcht 4,mem_24g_addr
 	isub temp,null
 	branch p_g24_reconn_mode_judge,zero
-	branch g24_reconn_dispatch_next+9
+	fetch 4,mem_24g_device_addr
+	fetcht 4,mem_24g_addr
+	isub temp,null
+	branch p_g24_store_receiver_addr,zero
+	branch g24_reconn_dispatch_end
+p_g24_store_receiver_addr:
+	fetch 4,mem_24g_rxpayload+2
+	rtn blank	//收到空地址跳出当前回连，原先会直接走回连结束流程。
+	store 4,mem_24g_receiver_addr	
+	call g24_ch_syncword_crc8_init
+	branch g24_reconn_dispatch_end
 
 p_g24_reconn_mode_judge:
 	fetch MOUSE_FLAG_LEN,mem_mouse_flag
@@ -1003,13 +1036,15 @@
 	until null,lpo_edge
 	until null,lpo_edge
 	clear_stack
+	jam 0x73,core_spid_ctrl
 	call p_mouse_wheel_init_set,wake
 	branch soft_reset+2
 
 p_mouse_wheel_init_set:
 	call p_mouse_puchk_disable
 	call mouse_matrix_public_gpio_reset
-	branch mouse_wheel_gpio_init
+	call mouse_wheel_gpio_init
+	branch mouse_wheel_check
 //	fetcht 1,mem_whee_a_data_gpio		//reinit gpio pu after disable wheel wakeup
 //	call gpio_config_input
 //	fetcht 1,mem_whee_b_data_gpio
@@ -1100,8 +1135,8 @@
 p_mouse_load_device_info_check:
 	call p_mouse_store_normal_tx_power
 	fetch MOUSE_FLAG_LEN,mem_mouse_flag
-	bbit1 MOUSE_ENABLE_EEPROM,mouse_load_eeprom_info_check
-	bbit1 MOUSE_ENABLE_FLASH,mouse_load_flash_info_check
+	// bbit1 MOUSE_ENABLE_EEPROM,mouse_load_eeprom_info_check
+	// bbit1 MOUSE_ENABLE_FLASH,mouse_load_flash_info_check
 	bbit1 MOUSE_ENABLE_OTP,p_mouse_load_otp_info_check
 	rtn
 
@@ -1186,8 +1221,8 @@
 
 p_mouse_store_device_info:
 	fetch MOUSE_FLAG_LEN,mem_mouse_flag
-	bbit1 MOUSE_ENABLE_EEPROM,mouse_store_eeprom_device_info
-	bbit1 MOUSE_ENABLE_FLASH,mouse_store_flash_device_info
+	// bbit1 MOUSE_ENABLE_EEPROM,mouse_store_eeprom_device_info
+	// bbit1 MOUSE_ENABLE_FLASH,mouse_store_flash_device_info
 	bbit1 MOUSE_ENABLE_OTP,p_mouse_store_otp_device_info
 	rtn
 
@@ -1326,7 +1361,7 @@
 
 p_mouse_store_dpi_info_check:
 	fetch MOUSE_FLAG_LEN,mem_mouse_flag
-	bbit1 MOUSE_ENABLE_EEPROM,mouse_store_eerpom_dpi
+	// bbit1 MOUSE_ENABLE_EEPROM,mouse_store_eerpom_dpi
 	bbit1 MOUSE_ENABLE_OTP,p_mouse_store_otp_dpi
 	rtn
 
@@ -1687,9 +1722,9 @@
 p_mouse_reconn_dongle_attempt_fail:
 	fetch MOUSE_FLAG_LEN,mem_mouse_flag
 	bbit0 MOUSE_ENABLE_24G_FIRST_AUTO_PAIRING,mouse_24g_attempt_fail_enter_hibernate
-	bbit1 MOUSE_ENABLE_EEPROM,mouse_24g_attempt_fail_enter_hibernate
+	// bbit1 MOUSE_ENABLE_EEPROM,mouse_24g_attempt_fail_enter_hibernate
 	bbit1 MOUSE_ENABLE_OTP,mouse_24g_attempt_fail_enter_hibernate
-	bbit1 MOUSE_ENABLE_FLASH,mouse_24g_attempt_fail_enter_hibernate
+	// bbit1 MOUSE_ENABLE_FLASH,mouse_24g_attempt_fail_enter_hibernate
 	branch p_mouse_24g_start_auto_pair
 
 p_mouse_start_work:
@@ -1699,6 +1734,10 @@
 	beq MODE_24G_DEVICE,p_mouse_24g_start_mode
 	branch mouse_le_fast_conn_judge
 
+p_mouse4_0_check_reconn_target:
+	call mouse_device_le_reconn_led_config
+	branch mouse4_0_check_reconn_target
+
 p_mouse_24g_first_start_auto_pair_mode:	
 	call mouse_wakeup_from_power_check
 	branch p_mouse_24g_first_start_reconn,user 
@@ -1769,6 +1808,8 @@
 	lshift pdata,pdata
 	copy pdata,regb
 	copy temp,regc
+	call gpio_out_active
+	copy regc,temp
 	call mouse_gpio_config_input_pd
 	copy regc,temp
 	call gpio_get_bit
@@ -1901,6 +1942,26 @@
 	fetcht 1,mem_device_switch_gpio
 	branch mouse_gpio_config_input_pd
 	
+p_mouse_le_name_modify:
+	fetch 1,mem_le_name_patch_len
+	rtn blank
+	copy pdata,rega
+	sub pdata,11,null
+	nbranch mouse_le_name_patch_len_overflow,positive
+	
+	call mouse_le_name_clear
+	call mouse_le_name_patch_len_next
+
+	copy rega,temp
+	increase 1,temp
+	storet 1,mem_le_adv_swift_pair+7
+	arg mem_le_adv_swift_pair+9,contw
+	call mouse_le_name_modify_next
+	
+	storet 1,mem_le_scan_data
+	arg mem_le_scan_data+2,contw
+	branch mouse_le_name_modify_next
+
 p_mouse_init_sensor:
 	call mouse_read_sensor_id
 	beq P32XX_ID1,mouse_init_p32xx_id2_judge
Index: program/patch_sdk.prog
===================================================================
--- /1121s/branch/mouse/mouse_public_sdk_1M/program/patch_sdk.prog	(revision 6478)
+++ /1121s/branch/mouse/mouse_public_sdk_1M/program/patch_sdk.prog	(working copy)
@@ -15,4 +15,8 @@
 ifdef SDKCODE
 INCLUDE "bt_format"
 org 0x0000  // start from patch ram address start
+include patch.prog
+
+org 0x4d11
+include app_mouse.prog
 endif
Index: sched/mouse.dat
===================================================================
--- /1121s/branch/mouse/mouse_public_sdk_1M/sched/mouse.dat	(revision 6478)
+++ /1121s/branch/mouse/mouse_public_sdk_1M/sched/mouse.dat	(working copy)
@@ -153,7 +153,7 @@
 
 #device parm
 mem_device_option:08
-mem_device_number:01   #01--only 2.4g   02--2.4g+ble
+mem_device_number:03   #01--only 2.4g   02--2.4g+ble
 
 mem_lpm_mode:01
 mem_lpm_mult:20
@@ -174,7 +174,7 @@
 #bit0:mouse_key_l    bit1:mouse_key_r  bit2:mouse_key_m
 mem_mouse_commbination_key_24g:03
 mem_mouse_commbination_key_bt:07
-mem_mouse_commbination_key_dpi:ff
+#mem_mouse_commbination_key_dpi:ff
 
 mem_mouse_compare_addr:00 00 00 00 00 00#ff ff ff ff ff ff 		#otp/flash=0	eeprom=ff
 
@@ -255,9 +255,9 @@
 mem_le_adv_ind:03 12 18
 mem_le_adv_direct_ind:ff 00 00
 
-mem_flash_base:00 50 00
-mem_eeprom_base:80 1f
-mem_eeprom_block_size:80
+# mem_flash_base:00 50 00
+# mem_eeprom_base:80 1f
+# mem_eeprom_block_size:80
 
 #otp write info offset
 mem_otp_offset_dpi:b9 1a										#6841 begin		3level:99count	----------info begin	
@@ -383,51 +383,57 @@
 09 5a
 ff 27
 ab 40
-be d1
-a0 41
-a1 12
+b3 56
+9b e6
+a8 12
+a9 c0
+be e6
+a5 af
+a0 21
+a1 02
+b8 10
+b9 0b
 a7 ff
+b5 d0
 b6 00
-b5 c8
-a5 af
 ff 00
 09 00
 ff ff
 
-mem_sensor_ka8ul_init:
-09 5a
-0d 10
-0e c5
-5b 9a
-10 38
-11 42
-28 28
-41 23
-49 39
-4a b0
-4b a0
-4c 90
-4d 70
-09 00
-ff ff
-
-mem_sensor_8009_init:
-09 5a
-06 02
-09 69
-0d 48
-0e 9f
-0f ba
-09 00
-ff ff
+# mem_sensor_ka8ul_init:
+# 09 5a
+# 0d 10
+# 0e c5
+# 5b 9a
+# 10 38
+# 11 42
+# 28 28
+# 41 23
+# 49 39
+# 4a b0
+# 4b a0
+# 4c 90
+# 4d 70
+# 09 00
+# ff ff
+
+# mem_sensor_8009_init:
+# 09 5a
+# 06 02
+# 09 69
+# 0d 48
+# 0e 9f
+# 0f ba
+# 09 00
+# ff ff
 
 
 #adc config
-mem_adc_config_flag:01
+# mem_adc_config_flag:01
 #01 ADC_CONFIG_HVIN
 #02 ADC_CONFIG_GPIO
 mem_adc_clkdiv:0a
-mem_adc_channel:00
+# mem_adc_channel:00
 #00 ADC_CH_VBAT
 #01 ADC_CH_VDCDC5V
 #06 ADC_CH_GPIO18
Index: set_chip_type_flag.bat
===================================================================
--- /1121s/branch/mouse/mouse_public_sdk_1M/set_chip_type_flag.bat	(nonexistent)
+++ /1121s/branch/mouse/mouse_public_sdk_1M/set_chip_type_flag.bat	(working copy)
@@ -0,0 +1,15 @@
+@echo off  
+setlocal enabledelayedexpansion  
+  
+rem YC1305 鼠标分配的变量范围20-2f
+rem YC1304 鼠标分配的变量范围30-3f
+rem YC1305 dongle分配的变量范围f0-f7
+rem YC1304 dongle分配的变量范围e8-ee
+rem 变量分配的规则例如：鼠标的，1305sa==0x20 1305sb==0x21依次类推到2f结束
+rem 变量分配的规则例如：dongle的，1305sa==0xf0 1305sb==0xf1依次类推到f7结束
+
+rem 定义DAT文件的要插入的字节和路径及名称，如果是eeprom.dat文件,就把otp.dat改成eeprom.dat
+set insertString=20
+echo !insertstring!>>output\otp.dat
+
+echo ok end
\ No newline at end of file
Index: util/deletenote.pl
===================================================================
--- /1121s/branch/mouse/mouse_public_sdk_1M/util/deletenote.pl	(nonexistent)
+++ /1121s/branch/mouse/mouse_public_sdk_1M/util/deletenote.pl	(working copy)
@@ -0,0 +1,27 @@
+
+#print "ע͵ı־:";
+
+#chomp ($text = <STDIN>);
+
+#print $text;
+
+###########################
+#ýűĹΪɾ#Ϊע͵עʹ롣
+
+$Sched_path=$ARGV[0];
+
+open(Sched,$Sched_path)||die("Cannot open files\n");
+@sched=<Sched>;
+close(Sched);
+
+foreach $sched(@sched)
+{
+	$sched_begin = $sched;
+	@Sched = split(/[#]+/, $sched);
+	chomp @Sched[0];
+	$sched = @Sched[0]."\n";
+}
+
+open(Sched,">$Sched_path")||die("Cannot open files\n");
+print Sched @sched;
+close(Sched);
Index: util/geneep.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: util/geneep.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: util/otpcheck.pl
===================================================================
--- /1121s/branch/mouse/mouse_public_sdk_1M/util/otpcheck.pl	(nonexistent)
+++ /1121s/branch/mouse/mouse_public_sdk_1M/util/otpcheck.pl	(working copy)
@@ -0,0 +1,76 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use File::Spec;  
+# 获取当前脚本的目录路径
+my $current_dir = File::Spec->rel2abs('.');
+my $parent_dir = File::Spec->catdir($current_dir, '..');  # 获取上一级目录
+
+# 指定要搜索的文件名
+my $filename = File::Spec->catfile($parent_dir, 'output', 'otp.dat');
+# 打开文件进行读取
+open(my $fh, '<',$filename) or die "无法打开文件 '$filename':$!";
+
+# 读取整个文件到数组中
+my @file_content = <$fh>;
+chomp @file_content;  # 移除每行的换行符
+
+# 关闭文件句柄
+close($fh);
+
+# 初始化变量
+my $found = 0;
+my $otp_end_address = 0;
+# 循环遍历文件内容，每次移动一个字节
+for my $start (0 ..$#file_content - 3) {
+    # 提取从当前起始位置开始的四个字节
+    my $chunk = join('', @file_content[$start .. $start + 3]);
+    
+    # 检查这四个字节是否匹配指定的字符串
+    if ($chunk eq '55aaaa55') {
+        $otp_end_address = $start +9;
+        # print "After adding 9 to the start position: $start\n";
+        $found = 1;
+    }
+}
+
+# 如果找到了 "55aaaa55"，则继续处理 sched.rom 文件
+if ($found) {
+    my $sched_filename = File::Spec->catfile($parent_dir, 'output', 'sched.rom');
+    # 打开文件进行读取
+    open(my $sched_fh, '<',$sched_filename) or die "无法打开文件 '$sched_filename'$!";
+    # 读取整个文件到字符串中
+    my $sched_content = do { local$/; <$sched_fh> };
+    chomp $sched_content;  # 移除字符串末尾的换行符
+    # print "sched_content: $sched_content\n";
+    # 关闭文件句柄
+    close($sched_fh);
+    # 在 sched_content 中查找 "mem_otp_offset_dpi:"
+    my $sched_position = index($sched_content, 'mem_otp_offset_dpi:');
+    # 如果找到了 "mem_otp_offset_dpi:"
+    if ($sched_position != -1) {
+        # 获取 "mem_otp_offset_dpi:" 后面的两个字节
+        my $five_bytes_with_spaces = substr($sched_content, $sched_position + length("mem_otp_offset_dpi:"), 5);
+        $five_bytes_with_spaces =~ s/ //g;  # 移除空格
+        my $five_bytes =$five_bytes_with_spaces;
+        # 字节颠倒
+        my $reversed_bytes = substr($five_bytes, 2, 2) . substr($five_bytes, 0, 2);
+        my $decimal_value = hex($reversed_bytes);
+        # 打印找到的字符串位置信息以及后面跟随的两个字节
+        print "Original otp dpi store start little-endian bytes: $five_bytes\n";
+        print "Reversed (big-endian) bytes:  $decimal_value\n";
+        print "otp end bytes:  $otp_end_address\n";
+        if($decimal_value>$otp_end_address)
+        {
+            print"otp check done";
+        }
+        else
+        {
+            die "系统错误：在文件 '$sched_filename' 中找不到字符串 'mem_otp_offset_dpi:'\n";
+        }
+    } else {
+        print "String 'mem_otp_offset_dpi:' not found in file '$sched_filename'.\n";
+    }
+}
+
+
Index: util/sortsched.pl
===================================================================
--- /1121s/branch/mouse/mouse_public_sdk_1M/util/sortsched.pl	(nonexistent)
+++ /1121s/branch/mouse/mouse_public_sdk_1M/util/sortsched.pl	(working copy)
@@ -0,0 +1,169 @@
+
+
+$Sched_path=$ARGV[0];
+$Sched_test_path=$ARGV[1];
+
+open(Sched,"$Sched_path")||die("Cannot open files1\n");
+@sched=<Sched>;
+@sched[-1] = "";
+close(Sched);
+#open(Sched_test,">ResultsFile.rom")||die("Cannot open files2\n");
+#print Sched_test ("");
+#close (Sched_test);
+#open(Sched_test,">ResultsFile.rom")||die("Cannot open file3s\n");
+open(Sched_test1,">$Sched_test_path")||die("Cannot open files4\n");
+#@Sched_test=<Sched_test>;
+@Data[0]="";
+$Data_num=0;
+@Address_num;
+@OriginalRecord;
+foreach $sched (@sched)
+{
+	if($sched=~/[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]:/)
+	{
+		$lap_flag = 0;
+		$le_lap_flag = 0;
+		if($sched=~/44f1:/)
+		{
+			$lap_data = $sched;
+			$lap_flag = 1;
+		}
+		if($sched =~ /42db:/)
+		{
+			$le_lap_data = $sched;
+			$le_lap_flag = 1;
+		}
+		else
+		{
+			$Data_num++;
+			@OriginalRecord[$Data_num]=$sched;
+			@snap_variable=split(/[#\n]/,$sched);
+			@Data[$Data_num]=@snap_variable[0]."\n";
+		}
+	}
+	else
+	{
+		if($lap_flag == 1)
+		{
+			$lap_data .= $sched;
+		}
+		if($le_lap_flag == 1)
+		{
+			$le_lap_data .= $sched;
+		}
+		else
+		{
+			@OriginalRecord[$Data_num].=$sched;
+			@snap_variable=split(/[#\n]/,$sched);
+			@Data[$Data_num].=@snap_variable[0]."\n";
+		}
+	}
+}
+
+@Data = grep { $_ ne $lap_data } @Data;
+@Data = grep { $_ ne $le_lap_data } @Data;
+@OriginalRecord = grep { $_ ne $lap_data } @OriginalRecord;
+@OriginalRecord = grep { $_ ne $le_lap_data } @OriginalRecord;
+
+@sort_Data = sort(@Data);
+@OriginalRecord=sort(@OriginalRecord);
+$PreviousADDR=0;
+$CurrentADDR=0;
+$PreviousData="";
+$CurrentData="";
+$I=0;
+$len_sort_Data=@sort_Data;
+$NextADDR="";
+for($i=0;$i<$len_sort_Data;$i++)
+{
+	$sort_Data=@sort_Data[$i];
+	@snap_variable=split(/:/,$sort_Data);
+	$WData=@snap_variable[1];
+	
+	if($WData =~ /[1-9a-fA-F]/ && hex(@snap_variable[0]) >= 16384){
+	$WADDR=@snap_variable[0];
+	@sort_Data[$i]=@OriginalRecord[$i];
+	@LLL[$i]=0;
+	if($NextADDR eq $WADDR){
+		@snap_variable=split(/[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]:/,@OriginalRecord[$i]);
+		@sort_Data[$i]=@snap_variable[1];
+		@LLL[$i]=1;
+	}
+	if(@LLL[$i]==0 && hex($PreviousADDR)+6>hex($WADDR)){
+		$LEN=hex($WADDR) - hex($NextADDR);
+		#print $LEN;
+		for($j=0;$j<$LEN;$j++)
+		{
+			@sort_Data[$i-1].="00 "
+		}
+		@sort_Data[$i-1].="\n";
+		@snap_variable=split(/[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]:/,@OriginalRecord[$i]);
+		@sort_Data[$i]=@snap_variable[1];
+		@LLL[$i]=1;
+	}
+	if($PreviousADDR eq $WADDR){
+		@sort_Data[$i-1]="";
+		if(@LLL[$i-1]==1){
+			@snap_variable=split(/[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]:/,@OriginalRecord[$i]);
+			@sort_Data[$i]=@snap_variable[1];
+			@LLL[$i]=1;
+		}
+	}
+	else{
+		@DataNum=split(/[0-9a-fA-F][0-9a-fA-F]/,$WData);
+		$DataNum=@DataNum;
+		$PreviousADDR=$WADDR;
+		#@sort_Data[$i].="      ".$DataNum."\n";
+		$NextADDR = &hex_add($WADDR,$DataNum);
+	}
+	}
+	else{
+		if(hex(@snap_variable[0]) >= 16384)
+		{
+			@sort_Data[$i]="";
+		}
+	}
+	#@sort_Data[$i].="      ".$NextADDR."\n";
+	#$sort_Data =~ s/\n//;
+	#$sort_Data.="\n";
+}
+#print Sched_test @OriginalRecord;
+print Sched_test1 $lap_data;
+print Sched_test1 $le_lap_data;
+print Sched_test1 @sort_Data;
+print  $lap_data;
+print  $le_lap_data;
+#for($i=0;$i<$len_sort_Data;$i++)
+#foreach $sort_Data (@sort_Data)
+#{	
+	#$sort_Data=@sort_Data[$i];
+	#print Sched_test $PreviousData;
+	#@snap_variable=split(/:/,$sort_Data);
+	#$CurrentADDR=@snap_variable[0];
+	#$CurrentData=$sort_Data;
+	#print ($CurrentADDR);
+	#if($CurrentADDR-$PreviousADDR==1)
+	#{
+	#	$CurrentVal=@snap_variable[1];
+	#	@snap_variable=split(/\n/,$PreviousData);
+		
+	#	$PreviousData.=" ".$CurrentVal;
+	#	$CurrentData=$PreviousData;
+	#	@sort_Data[$i]="";
+	#	@sort_Data[$i-1]=$CurrentData;
+		#print ($CurrentData."\n");
+	#}
+	#$PreviousADDR=$CurrentADDR;
+	#$PreviousData=$CurrentData;
+	#print Sched_test $CurrentData;
+#}
+#print Sched_test @sort_Data;
+#close(Sched_test);
+close(Sched_test1);
+
+sub hex_add{
+	my($ADDR,$Len)=@_;
+	$data=hex($ADDR);
+	$data=$data+$Len-1;
+	return(sprintf("%04x",$data));
+}
\ No newline at end of file
Index: util/transform_name2addr.pl
===================================================================
--- /1121s/branch/mouse/mouse_public_sdk_1M/util/transform_name2addr.pl	(nonexistent)
+++ /1121s/branch/mouse/mouse_public_sdk_1M/util/transform_name2addr.pl	(working copy)
@@ -0,0 +1,107 @@
+###########################
+#ýűĹΪļеļĴָĳɼĴַ
+#֮ӳϵΪ$Memmap_pathļеӳ
+
+$Sched_path=$ARGV[0];
+$Sched_test_path=$ARGV[1];
+$Memmap_path=$ARGV[2];
+open(Sched,$Sched_path)||die("Cannot open files\n");
+@sched=<Sched>;
+close(Sched);
+open(Sched_test,">$Sched_test_path");
+print Sched_test ("");
+close(Sched_test);
+open(Sched_test,">$Sched_test_path");
+open(Memmap,$Memmap_path)||die("Cannot open files\n");
+@memmap=<Memmap>;
+close(Memmap);
+$type_add=0;
+$type_exchange=0;
+foreach $sched(@sched)
+{
+	$sched_begin = $sched;
+	@Sched = split(/[#]+/, $sched);
+	$sched = @Sched[0];
+	@Sched[0] = "";
+	if($sched =~ /mem[\w]+/)
+	{
+		@memmap_name = split(/[\W]+/, $sched);
+		foreach $memmap_name(@memmap_name)
+		{
+			if($memmap_name =~ /mem[\w]+/)
+			{
+				$Memmap_name=$memmap_name;
+				$type_add = 0;
+				$type_exchange = 0;
+				if($sched =~ /$Memmap_name[+]/)
+				{
+					$type_add = 1;#޸ĵ͵һ֣
+					@ADD_Num=split(/[^0-9\+xa-fA-F]/,$sched);
+					foreach $ADD_Num(@ADD_Num)
+					{
+						if($ADD_Num =~ /\+/)
+						{
+							if($ADD_Num =~ /0x/)
+							{
+								@add_num = split(/\+0x/,$ADD_Num);
+								$add_num1 =@add_num[1];
+								$add_num_begin = "0x".$add_num1;
+								$add_num = hex($add_num1);
+							}
+							else
+							{
+								@add_num = split(/\+/,$ADD_Num);
+								$add_num1 =@add_num[1];
+								$add_num_begin = $add_num1;
+								$add_num = int($add_num1);
+							}
+						}#$add_numƥҪӵֵַʽ
+					}
+				}
+				if($sched =~ /[:] *\t*$Memmap_name/)
+				{
+					$type_exchange = 1;#޸ĵ͵ڶ֣ߵλ
+				}
+				foreach $memmap(@memmap)
+				{
+					if($memmap =~ /$Memmap_name/ && $memmap !~ /$Memmap_name[\w]+/)
+					{
+						@Memmap=split(/[ \t\n]/,$memmap);
+						$memmap_address=@Memmap[0];
+						$memmap_address =~ s/0x//;
+						if($type_add==1)
+						{
+							$memmap_address_D = hex($memmap_address);
+							$memmap_address_D = $memmap_address_D+$add_num;
+							$memmap_address_H = sprintf("%x", $memmap_address_D);
+							$memmap_address = $memmap_address_H;
+							$memmap_address_add_finish = $memmap_address;
+							$sched_begin =~ s/$Memmap_name\+$add_num_begin/$memmap_address/;
+						}
+						if($type_exchange==1)
+						{
+							$memmap_address_High = substr($memmap_address,0,2);
+							$memmap_address_Low = substr($memmap_address,2,2);
+							$memmap_address = $memmap_address_Low." ".$memmap_address_High;
+							if($type_add==0)
+							{
+								$sched_begin =~ s/$Memmap_name/$memmap_address/;
+							}
+							else
+							{
+								$sched_begin =~ s/$memmap_address_add_finish/$memmap_address/;
+							}
+						}
+					}
+				}
+				$sched_begin =~ s/$Memmap_name/$memmap_address/;
+			}
+		}
+		printf Sched_test ("%s",$sched_begin);
+	}
+	else
+	{
+		printf Sched_test ("%s",$sched_begin);
+	}	
+}
+close(Sched_test);
