Index: d.bat
===================================================================
--- /branch/mouse_project/YJX_24G&BLE/d.bat	(revision 1235)
+++ /branch/mouse_project/YJX_24G&BLE/d.bat	(working copy)
@@ -1,6 +1,10 @@
 call do.bat eep
+e ku
+ping -n 2 127.1 >nul
 e pu
 e 8081 10
 e 8075 0000
+e 8079 0000
+e 807d ffff
 e ep
-e ku
\ No newline at end of file
+e ku
Index: do.bat
===================================================================
--- /branch/mouse_project/YJX_24G&BLE/do.bat	(revision 1235)
+++ /branch/mouse_project/YJX_24G&BLE/do.bat	(working copy)
@@ -101,17 +101,18 @@
 
 rem geneep -n -k key.txt
 
-echo eeprom.dat is filling with 0xff......
+rem echo eeprom.dat is filling with 0xff......
 cd ..\output
-copy eeprom.dat ..\util\eeprom.dat
+rem copy eeprom.dat ..\util\eeprom.dat
 
-cd ..\util
-eeprom2fulleeprom.exe eeprom.dat 64>compare2.dat
-crc16.exe compare2.dat 2 >..\output\eeprom.dat
-del eeprom.dat
-del compare2.dat
+rem cd ..\util
+rem eeprom2fulleeprom.exe eeprom.dat 64>compare2.dat
+rem crc16.exe compare2.dat 2 >..\output\eeprom.dat
+rem del eeprom.dat
+rem del compare2.dat
 
-echo eeprom.dat_with0xff Generated......
+rem echo eeprom.dat_with0xff Generated......
+echo eeprom.dat Generated......
 
 if "%device_option%" equ "module" (
 perl eeprom2hciimage_1021s.pl
Index: format/app_mouse.format
===================================================================
--- /branch/mouse_project/YJX_24G&BLE/format/app_mouse.format	(revision 1235)
+++ /branch/mouse_project/YJX_24G&BLE/format/app_mouse.format	(working copy)
@@ -172,15 +172,6 @@
 1 mem_mouse_24g_enter_lpm_enable
 
 //-------------- patch variable ------------------
-
-0 mem_mouse_3065xy_dpi_seting
-1 mem_3065xy_dpi_1
-1 mem_3065xy_dpi_2
-1 mem_3065xy_dpi_3
-1 mem_3065xy_dpi_4
-
-
-
 2 mem_le_rx_window_inc
 1 mem_empty_count
 13 mem_rf_init_data_new
@@ -201,39 +192,92 @@
 1 mem_mouse_wheel_trigger
 1 mem_mouse_wheel_trigger_timer
 
-1 mem_mouse_long_mult_flag
-1 mem_mouse_le_current_mult_timer
-1 mem_24g_long_sleep_param_update_timer
+1 mem_mouse_enter_sniff_count
+1 mem_mouse_send_switch_req_timer
 
 27 mem_le_tx_buffer0_omemalloc
 27 mem_le_tx_buffer1_omemalloc
 27 mem_le_tx_buffer2_omemalloc
 27 mem_le_tx_buffer3_omemalloc
 
-1 mem_mouse_mode_config
-1 mem_mouse_dpi_blink_count
 
-1 mem_mouse_ble_led_on_enable
-1 mem_mouse_ble_reconn_enable
-1 mem_mouse_device_led_on_timer_init
-1 mem_mouse_device_led_on_timer_count
-1 mem_mouse_g24_led_on_enable
-1 mem_device_state_led_gpio
-1 mem_device_led_blink_flag
+646 mem_mouse_uuid_list
+1 mem_lmi_opcode_temp
 
-1 mem_mouse_fast_conn_flag
+1 mem_mouse_button_select_device_timer_init
+1 mem_mouse_button_select_device_count
+
+1 mem_mouse_multi_led_blink_enable
+1 mem_mouse_multi_led_gpio
+1 mem_mouse_multi_led_state
+1 mem_mouse_multi_led_type
+1 mem_mouse_multi_led_on_timer_init
+1 mem_mouse_multi_led_blink_timer_init
+1 mem_mouse_multi_led_blink_timer
+1 mem_mouse_multi_led_blink_count
+1 mem_mouse_multi_led_on_timer
+1 mem_mouse_multi_led_blink_count_limited
+1 mem_mouse_multi_led_on_poweron2s_flag
+1 mem_mouse_multi_led_blink_poweron3s_flag
+
+
+1 mem_mouse_adc_last_low_voltage_flag
+1 mem_mouse_init_sensor_reset_flag
+
+1 mem_bt_rcvd_switch_req_accept
+1 mem_bt_send_max_slot_req_accept_after_switch
+1 mem_bt_send_lmp_setup_complete
+
+1 mem_l2cap_rcv
+1 mem_mouse_bt_boot_mode
+5 mem_mouse_bt_boot_data
+
+1 mem_mouse_bt_send_first_package_timer
+1 mem_mouse_bt_send_first_package_flag
+
+1 mem_mouse_asm_flag
+2 mem_mouse_x_pre
+2 mem_mouse_y_pre
 
 19 mem_le_adv_swift_pair
 
 //modified pnp id
 1 mem_le_att_pnp_id_len
 7 mem_le_att_pnp_id
+
+//no motion pin
+1 mem_mouse_long_mult_flag
+1 mem_mouse_le_current_mult_timer
+1 mem_24g_long_sleep_param_update_timer
+
+1 mem_mouse_send_secutiry_request_timer
+1 mem_le_send_security_request_flag
+1 mem_mouse_le_bb_connected_flag
+
+1 mem_power_on_flag
+
+//fast le conn
+1 mem_mouse_fast_conn_flag
 6 mem_le_normal_lap
 1 mem_le_switch_adv_flag
 1 mem_le_switch_adv_timer
 1 mem_le_switch_adv_count
 1 mem_mouse_start_discovery_enable
-1 mem_mouse_mode_swtich_step
+1 mem_mouse_le_adv_start
+
+1 mem_mouse_long_button_select_device
+
+1 mem_g24_stop_g24_mode
+2 mem_g24_stop_g24_mode_timeout
+1 mem_24g_pair_current_ch_num
+1 mem_24g_powerful_current_ch_num
+
+1 mem_dpi_ui_button_timeout
+1 mem_mouse_le_updata_not_accepted_flag
+
+1 mem_mouse_latest_mode
+1 mem_mouse_poweron_bt_start_reconn_timer
+1 mem_mouse_le_not_tx_disconn
 )
 
 (
@@ -265,6 +309,7 @@
 0x02 MODE_BT_DEVICE2
 0x03 MODE_BT_DEVICE3
 0x02 MODE_24G_DEVICE
+0xff MODE_DEFAULT_DEVICE
 //mouse  flag
 0X00 WRITE_REQ_ENABLE_FLAG
 0X01 LL_START_ENC_FLAG
@@ -283,6 +328,8 @@
 0X06 MOUSE_LONG_BT_BUTTON_FLAG
 0X07 MOUSE_STORE_EEPROM_FLAG
 0x08 MOUSE_STATUE_UP_FLAG
+0X09 MOUSE_BT_DISCOVERY_BUTTON_LONG_DOWN_FLAG
+
 
 //3byte
 0X10 MOUSE_ENABLE_USB
@@ -329,6 +376,7 @@
 6 ENABLE_SELECT_DEVICE_BY_SWITCH
 7 ENABLE_SENSOR_MOTION_PIN
 
+
 0xFF GPIO_DISABLE
 
 
@@ -345,6 +393,7 @@
 0X61 MOUSE_DEVICE_MODE_EEPROM_OFFSET	//1byte	
 0X62 MOUSE_EEPROM_MODULE_INIT_FLAG		//eeprom_module_init_flag 2bytes
 0X64 MOUSE_FAST_CONN_FLAG_OFFSET	//1byte
+0X65 MOUSE_LATEST_MODE_OFFSET	//1byte
 
 // Sensor id number
 0x30 P32XX_ID1
@@ -355,7 +404,8 @@
 0XD2 P3204_TJ3L_ID2
 0x54 PKA8_ID2
 0x70 P3065_XY_ID2
-
+0xD8 P8009_ID2
+0x5A P8650_ID2
 
 //Sensor type
 0X00 P3205
@@ -365,6 +415,9 @@
 0X04 P3212
 0X05 P3610
 0X06 P3065_XY
+0x07 P8009
+0x08 P8650
+0x07 MX8650
 
 
 //p3610 smart enable flag
@@ -407,7 +460,7 @@
 )
 
 (
-3 TEST_GPIO
+5 TEST_GPIO
 )
 
 (
@@ -419,12 +472,17 @@
 7 LE_INTERVAL_8_75MS//8.75ms
 )
 
+
+(
+0 MULTI_LED_ON
+1 MULTI_LED_BLINK
+)
+
 (
 0x017700 G24_LONG_SLEEP_STEP1	//8ms
 0x36ee80 G24_LONG_SLEEP_STEP2	//300ms
 )
 
-
 (
 0 MOUSE_24G_ONLY
 1 MOUSE_BLE_ONLY
@@ -432,3 +490,16 @@
 3 MOUSE_BLE_24G_ENABLE
 4 MOUSE_BT_BLE_24G_ENABLE
 )
+
+(
+0x0708 BLE_DIRECT_ADV_TIMEOUT
+0x0a BLE_POWERON_RECONN_TIMER
+)
+
+
+(
+0x01 LATEST_MODE_BT
+0x02 LATEST_MODE_24G
+0xff LATEST_MODE_NULL
+)
+
Index: format/bt.format
===================================================================
--- /branch/mouse_project/YJX_24G&BLE/format/bt.format	(revision 1235)
+++ /branch/mouse_project/YJX_24G&BLE/format/bt.format	(working copy)
@@ -759,6 +759,8 @@
 41 mark_ble_tx_md
 42 mark_ble_rx_md
 43 mark_otp_encrypt
+44 mark_first_packet
+45 mark_role_switch_receive_fhs
 )
 
 (
Index: format/g24.format
===================================================================
--- /branch/mouse_project/YJX_24G&BLE/format/g24.format	(revision 1235)
+++ /branch/mouse_project/YJX_24G&BLE/format/g24.format	(working copy)
@@ -124,7 +124,14 @@
 1 mem_24g_auto_paring_switch
 1 mem_24g_paccnt
 1 mem_24g_transmit_by_interrupt
-1 mem_24g_transmit_by_interrupt_exit_count
+2 mem_24g_transmit_by_interrupt_exit_count
+2 mem_24g_transmit_by_interrupt_exit_count_init
+
+1 mem_24g_search_dongle_action
+1 mem_24g_search_dongle_count
+1 mem_24g_search_dongle_ch
+
+1 mem_g24_conn_sm
 )
 
 (
@@ -269,7 +276,6 @@
 0x40 RSSI_SENSITIVITY
 
 0x4e G24_PAIR_CH
-4 G24_MAX_RETRY
 )
 
 (
@@ -298,7 +304,12 @@
 //6-7 channel offset
 )
 
-
+(
+0 STATE_24G_STOP
+0 STATE_24G_START
+1 STATE_24G_PAIR
+2 STATE_24G_RECONN
+)
 
 //mem_24g_pairing_sm
 (
@@ -459,3 +470,14 @@
 0 G24_TX_TIMER_INT_DISABLE
 )
 
+(
+0 G24_DISCONN_STATE
+1 G24_CONN_STATE
+
+4 G24_CH_NUMBER
+4 G24_CH_POLL_COUNT
+0x0708 G24_DISCONN_NODATA_TIMER
+0x3c G24_FIRST_DISCONN_NODATA_TIMER
+)
+
+
Index: format/le.format
===================================================================
--- /branch/mouse_project/YJX_24G&BLE/format/le.format	(revision 1235)
+++ /branch/mouse_project/YJX_24G&BLE/format/le.format	(working copy)
@@ -417,7 +417,7 @@
 	0X2A4C UUID_CHRCTR_HID_CTRL_POINT
 	0X2A4D UUID_CHRCTR_REPORT
 	0X2A4E UUID_CHRCTR_PROTOCOL_MODE
-	0X2A50 UUID_CHRCTR_PNP_ID
+	0X2A50 UUID_CHRCTR_PNP_ID	
 	)
 
 	(// pairing failed reason
Index: format/utility.format
===================================================================
--- /branch/mouse_project/YJX_24G&BLE/format/utility.format	(revision 1235)
+++ /branch/mouse_project/YJX_24G&BLE/format/utility.format	(working copy)
@@ -146,6 +146,10 @@
 256 mem_rssi_noise_kb_buffer
 32 mem_24g_common_temp
 
+2 mem_data_pre
+2 mem_data_current
+3 mem_data_sum
+
 ifdef DEBUGLOG
 1   mem_debuglog_temp
 1   mem_debuglog_type
Index: output/eeprom.dat
===================================================================
--- /branch/mouse_project/YJX_24G&BLE/output/eeprom.dat	(revision 1235)
+++ /branch/mouse_project/YJX_24G&BLE/output/eeprom.dat	(working copy)
@@ -2,132 +2,144 @@
 02
 aa
 55
-82
-1b
+06
+1d
 c2
 84
 00
-10
-c0
-42
-85
-ed
+12
 c0
-44
-85
-bc
+00
+00
+29
 c0
 00
 80
-26
+2c
+c0
+01
+00
+35
+c0
+42
+87
+3f
+c0
+44
+87
+12
 c0
 50
 80
-2c
+3e
 c0
 58
 80
-8e
+43
 c0
 59
 00
-31
+4f
 c0
 62
-00
-bd
+03
+0d
 c0
 64
-81
-5b
+83
+99
 c0
 65
-01
-5f
+03
+9d
 c0
 71
-82
-7f
+85
+5f
 c0
 73
-02
-98
+05
+84
 c0
 75
-02
-eb
+05
+be
 c0
 75
-82
-f0
+85
+c6
 c0
 76
-03
-22
+05
+f9
 20
 20
 2a
 8e
 c0
 1c
-83
-25
+85
+ff
 c0
 21
-83
-2d
+86
+07
 c0
 25
-03
-33
+06
+0d
 c0
 2b
-83
-37
+86
+10
 c0
 2c
-83
-49
+86
+22
 c0
 31
-83
-56
+86
+2f
 c0
 33
-03
-80
+06
+59
 c0
 33
-83
-97
+86
+78
 c0
 35
-03
-e1
+06
+a4
 c0
 3b
-83
-ec
+86
+af
 c0
 7d
-03
-fd
+06
+c0
 c0
 46
-04
 06
+c9
 20
 20
 2a
 8e
+1f
+e2
+22
+00
 68
 08
-c9
-ec
+cc
+98
 58
 00
-49
-f3
+4c
+9f
 98
 40
 8a
@@ -150,16 +162,40 @@
 07
 60
 08
-c9
-ec
+cc
+98
 20
 60
 00
 00
+68
+10
+81
+3b
+60
+00
+cb
+3f
+20
+20
+20
+02
+d8
+a0
+09
+ae
+df
 20
-40
 00
-b4
+0c
+20
+40
+7e
+d4
+20
+40
+03
+e5
 20
 40
 6a
@@ -180,6 +216,42 @@
 20
 20
 0c
+20
+55
+b2
+e3
+20
+40
+75
+6a
+20
+55
+ab
+41
+20
+40
+76
+dc
+68
+00
+c6
+5a
+20
+3a
+20
+12
+68
+00
+c5
+b1
+20
+3a
+00
+38
+20
+20
+20
+12
 58
 00
 0a
@@ -201,108 +273,272 @@
 2a
 a2
 c6
-93
+13
 00
 00
 68
 00
-ca
-71
-c0
-00
-80
-4f
-20
-40
-04
-6a
+cb
+01
 24
-34
-00
-69
-70
-49
-6d
-00
-20
-40
-04
-4f
-20
-40
-00
-89
+3a
+7f
+ef
 68
 00
-c9
-6d
-c1
-00
-80
+cb
+06
+24
+3a
+7f
+ef
+68
 00
+c7
+9c
 20
-40
-04
-95
+3a
+7f
+ef
 68
 00
-c9
-41
-c1
+c7
+c4
+c0
+00
 ff
-80
+ef
+68
+00
+c8
+06
+24
+3a
+7f
+ef
+20
+20
+7f
+f1
+c6
+93
+00
 00
-20
-40
-04
-f4
 68
 00
-c9
-6d
+cd
+25
+c2
+80
+80
+64
+c2
+81
+00
+74
+68
+00
+cd
+1d
 c0
 00
 80
-6b
+8a
 20
 40
+01
+43
+24
+34
 00
-49
+a5
+20
+40
+01
+2a
+20
+40
+01
+66
 68
 00
-ca
-71
+cb
+ed
 c1
-00
+ff
 80
 00
 20
 40
+06
+e6
+20
+40
 00
-71
+86
+68
+00
+cb
+01
+c0
+00
+80
+82
+20
+40
+00
+b7
 24
 74
 00
 00
 20
 40
-00
-9d
+02
+fe
 58
 00
-ec
-54
+ea
+60
 20
 20
 2b
 93
 68
 00
-c6
-f5
-c3
+cb
+4d
+c0
+00
+81
+ac
+20
+40
+01
+f9
+20
+40
+01
+81
+24
+2c
+02
+11
+24
+37
+82
+11
+68
+00
+cd
+25
+79
+3f
+fe
+01
+60
+00
+cd
+25
+20
+40
+01
+ae
+20
+40
+03
+23
+68
+02
+4c
+05
+68
+0a
+4b
+e9
+98
+46
+7c
+00
+20
+22
 83
-80
+37
+20
+20
+00
+7a
+68
+00
+cb
+4d
+c0
+00
+81
+ac
+20
+40
+01
+f9
+20
+40
+01
+81
+24
+2c
+02
+02
+24
+37
+82
+02
+79
+20
+00
+26
+68
+00
+cd
+25
+79
+3f
+fe
+02
+60
+00
+cd
+25
+70
+4b
+39
+00
+70
+0a
+99
+3c
+20
+40
+7d
+86
+20
+40
+01
+7c
+70
+4d
+1d
+01
+58
+00
+00
+00
+60
+01
+4d
+1e
+20
+60
+00
 00
 58
 01
@@ -310,11 +546,11 @@
 00
 60
 01
-c9
-60
+cc
+0c
 70
-48
-0e
+4b
+3b
 14
 20
 60
@@ -322,8 +558,8 @@
 00
 20
 40
-05
-ef
+02
+d7
 24
 74
 00
@@ -331,119 +567,163 @@
 20
 40
 00
-60
+9f
 68
-00
-ca
-72
+01
+4d
+1e
 1f
 e0
 fe
 01
 60
-00
-ca
-72
-1f
-e6
+01
+4d
+1e
+68
+09
+4d
+20
+98
+46
 7c
-19
+00
 20
 42
 80
-58
+94
 20
 20
 00
-34
+55
 70
-4a
-71
-00
-70
-4a
-72
+4d
+1d
+00
+58
+00
+00
+00
+60
+01
+4d
+1e
+58
+00
 00
+64
+60
+01
+4d
+20
 70
-49
-6c
+4c
+18
 00
 68
 00
-c9
-57
+cc
+03
 60
 00
-c9
-56
+cc
+02
 20
 60
 00
 00
 68
 00
-c9
-58
+cc
+04
 20
 20
 00
-5c
+9b
 68
 00
-c9
-6c
+cc
+18
 1f
 e0
 fe
 01
 60
 00
-c9
-6c
+cc
+18
 c0
 02
 00
-5e
+9d
 c0
 02
 80
-5a
+99
 20
 60
 00
 00
-70
-4a
-71
-01
-70
-4a
-72
+68
 00
+cc
+09
 20
-60
+5a
+00
+c0
+68
+00
+cb
+06
+24
+7a
 00
 00
 68
 00
-c9
-5d
+cb
+01
+c1
+00
+80
+00
+68
+00
+cd
+1d
+c1
+00
+80
+00
 20
-5a
+40
+00
+d4
+68
+00
+cd
+24
+c1
+82
+00
+00
+70
+4d
+24
 00
-7a
 20
 40
 00
-71
+b7
 24
 74
 00
 00
 68
 01
-c9
-60
+cc
+0c
 20
 40
 7f
@@ -482,2708 +762,2532 @@
 e9
 68
 00
-c5
-b1
-20
-3a
-7f
+cd
+1d
+c0
+00
+ff
 e9
 20
 20
-00
-a0
+03
+01
 70
-49
-5d
+4c
+09
 01
 70
-4a
-66
+4d
+12
 00
 20
 40
-04
-17
+00
+f6
 60
 00
-c8
-cd
+cb
+79
 58
 00
 00
 00
 60
 03
-c8
-ce
+cb
+7a
 68
 02
-49
-68
+4c
+14
 60
 02
-48
-d5
+4b
+81
 70
-49
-31
+4b
+dd
 0c
 68
 00
-c9
-32
+cb
+de
 79
 20
 7e
 03
 60
 00
-c9
-32
+cb
+de
 20
 40
-06
-2b
+02
+47
 20
 40
-04
-6e
+01
+46
 20
+40
+01
+66
 20
-00
-3b
-68
-00
-c9
-5d
 20
-7a
+06
+e6
+70
+4d
+22
 00
+70
+4d
+23
 00
 70
-49
-6d
-01
-20
-40
-06
-3d
-20
-20
+4d
+24
 00
-7b
-c6
-13
+20
+60
 00
 00
 68
 00
-c7
-a0
+cc
+09
 20
-3a
-7f
-ef
-68
+7a
 00
-c7
-c8
-c0
 00
-ff
-ef
 68
 00
-c8
-0a
+cd
 24
-3a
-7f
-ef
-20
-20
-7f
-f1
-c6
-13
-00
+1f
+e0
+fe
+01
+60
 00
+cd
+24
 20
 40
-00
-aa
+02
+59
 20
 40
 00
-a0
+c1
 68
 00
+cd
+24
 c0
-40
-c3
-00
+82
 00
-9d
+d6
 68
 00
-80
-a0
-24
-7a
+cd
+23
+1f
+e0
+fe
+01
+60
 00
+cd
+23
+c0
+02
 00
-58
+e2
+20
+60
 00
 00
+70
+4d
+23
 00
-60
-04
+68
 00
-a1
+cd
+22
+c3
+80
+00
+00
+79
 20
+7e
+00
 60
 00
+cd
+22
+58
 00
+07
+08
+60
+01
+46
+b0
 20
-40
-02
-80
 20
-40
+03
+59
+68
 00
-9d
-20
-40
-3e
-bf
+cc
+09
 20
-40
-02
-7b
-68
-12
+3a
 00
+d0
 70
-68
-1a
-00
-78
-98
-41
-84
+4d
+23
 00
-18
-44
+70
+4d
+24
 04
+68
 00
-60
-1a
+cd
+22
+c4
 00
-7c
-20
-60
 00
 00
-d8
-c0
-18
+79
+3f
+fe
 00
-d8
-a0
-48
-0f
+60
+00
+cd
+22
 20
 40
+3f
+8d
+20
+20
+03
+4b
+70
+4d
+13
+01
+70
+4d
+15
 00
-b2
-d8
-c0
-19
+68
+00
+cb
+de
+1f
+e1
+7e
+07
+60
 00
+cb
+de
 20
-40
+60
 00
-b2
-d8
-c0
-1a
 00
+68
+00
+cb
+de
+79
 20
-40
+7e
+04
+60
 00
-b2
-d8
-c0
-1b
+cb
+de
+60
 00
-df
+cb
+99
 20
+60
 00
-1b
-20
-20
-7f
-01
-d8
-c0
-48
-0f
-d8
-a0
-18
 00
 20
 40
+06
+dc
+68
 00
-b2
-d8
-a0
-19
+cd
+14
+c0
 00
+81
+04
+c0
+01
+01
+08
 20
-40
+60
 00
-b2
-d8
-a0
-1a
 00
-20
-40
+70
+4d
+15
+02
+70
+4d
+11
 00
-b2
-d8
-a0
-1b
+70
+4d
+13
 00
 20
 20
 00
-b2
-20
-40
-34
-16
+f6
+70
+4d
+12
+00
 20
-35
-80
-c8
 20
-40
-06
-c6
+01
+05
 68
-00
-c1
-de
+01
+4b
+e3
+1f
+e0
+fe
+01
 60
-00
-c9
-e8
-20
-40
-04
+01
+4b
 e3
+c2
+85
+01
+aa
 68
 00
-c6
-85
-60
+cd
+12
+c0
 00
-c6
-da
-20
-40
-43
-ca
+81
+13
+70
+4d
+12
+01
 68
-03
-44
-a0
-60
-03
-48
-a0
-20
-40
 00
-ca
-20
-20
-74
-b9
-24
-55
-81
-1e
-20
-40
-64
-0f
-20
-40
-01
-01
-20
-40
-64
-11
-20
-75
+cd
+12
+c0
+80
 80
+f6
+68
 00
-20
-40
+cd
+10
+1f
+e0
+fe
 01
-79
-20
-40
+60
+00
+cd
+10
+c0
 02
-79
+01
+1a
 20
 40
 02
-a2
-c0
+59
+70
+4c
+22
 02
-80
-f2
 20
 20
 01
-6c
-68
-00
-c9
-e8
-60
-00
-c1
-de
+66
 20
-60
-00
-00
-68
+40
+06
+dc
+70
+4d
+10
 00
-c8
-7f
-60
+20
+20
 00
-c8
-80
+f6
 70
-48
-7e
+4d
+15
+02
+70
+4d
+13
 01
 70
-48
-7d
+4d
+12
 00
 20
 20
 00
-dc
-70
-47
-a3
-01
+f6
 68
+00
+cd
+14
+c0
 01
-46
-a8
-60
-01
-46
-ae
-70
-48
-aa
-03
+81
+1e
 68
 00
-c8
-84
-1f
-e6
-7c
-ff
-20
-22
-83
-16
-d8
-e0
+cb
+de
+2f
+ec
 00
-07
-20
-40
-43
-ce
-70
-48
-aa
 04
 20
-40
-34
-18
-d8
-c0
-43
-90
-20
-40
-03
-12
-70
-43
-8f
-1f
-20
-20
-7d
-f4
-da
-20
-43
-70
-ea
 20
 80
+f4
+68
 00
-20
-7a
-00
-00
-98
+cd
+14
 c0
-a2
 00
-e8
+81
+1d
 c0
-80
+01
+01
+1e
+20
+60
 00
-c1
 00
+68
+00
+cb
+ed
+c1
+ff
 80
 00
 20
+40
+01
+2f
+24
+56
+01
+37
 20
+60
 00
-ec
-68
-02
-46
-d3
-c3
-81
-80
 00
-c6
-13
+78
+56
+7c
 00
+68
 00
-20
-40
-44
-82
-d8
-e0
+cd
+13
+c1
+80
+80
 00
-03
-20
-40
-43
-ce
-58
+68
 00
+cd
+15
+c1
+80
 00
 00
-60
+70
+4d
+14
 01
-46
-ae
-60
+70
+4c
+22
+04
+20
+20
+7f
+eb
+68
 00
-c6
-b4
-60
-01
-49
-5e
-20
-40
-42
-ca
-20
+cd
+15
 20
-05
-1c
-68
+3a
+01
+3e
+1f
+e0
+ff
+ff
+60
 00
-c7
-7a
-c0
-7f
-bd
-66
+cd
+15
+70
+4d
+14
+02
+70
+4c
+22
+04
 20
 20
-3d
-80
+02
+59
 70
-42
+4d
+14
+03
+68
+00
+cd
 12
-76
-20
-40
-3d
-36
+24
+3a
+01
+11
+70
+4c
+22
+02
 20
-75
-80
-00
 20
-40
-40
-c0
+02
+59
 68
 00
-c6
-e0
-c0
-02
-c0
-d5
-20
-40
-40
-d9
-c0
-18
-01
-0d
+cb
+ed
 c0
-18
+ff
 81
-0f
+c7
 20
 40
-40
-d1
-20
-00
-03
-e8
-20
-20
 01
-07
+49
 20
 40
+02
+47
+70
+4b
+e2
 01
-14
 20
+60
+00
+00
+68
+01
+4d
+0e
 20
 40
-e0
+7f
+9c
 20
-40
+34
 01
-14
+4f
 68
+03
+cb
+7a
+20
+7a
 00
-c6
-de
-c0
-38
+00
+20
+20
+7f
+e7
+20
 40
-e8
+04
+02
 70
-46
-e0
-01
+4c
+09
+00
+1a
 20
+fe
+01
 60
 00
+cb
+dd
+20
+40
 00
-58
+f6
+60
 00
+cb
+79
+e8
+a8
 80
-06
-20
-40
-64
-13
-20
 00
-2e
-e0
-20
-20
+ea
+40
+80
 00
+98
+41
 fe
-58
 00
+e0
+a0
+80
 00
-06
-20
+1a
 40
-64
-14
-1f
-e1
-fe
-08
-1f
-ed
-7e
+a4
+01
+ea
+42
+00
 00
-1f
 e0
-fe
-06
-20
-20
-64
-13
-20
+a2
+00
+00
+1a
 40
+a4
 04
-12
-20
-40
-3e
-6e
+d8
+a0
+4b
+7f
+df
 20
+00
+02
+ea
 40
-3e
-1e
-58
+80
 00
+e8
+a8
+80
 00
+98
+40
+fe
 00
-60
-01
-41
-54
-20
+e0
+a0
+80
+00
+1a
 40
+a4
 01
-44
-20
-40
-3e
-54
-20
-40
-58
-10
+c2
+00
+01
+5f
 20
-40
-58
-39
-20
-40
-58
-2c
-20
-40
-58
-18
+60
+00
+00
+70
+4b
+e6
+00
+d9
+60
+0d
+00
+34
+73
+02
+00
 20
 40
-65
-9c
+01
+81
 68
-02
-46
-d3
-2f
-ef
-fe
+00
+cc
 19
+c1
+00
+80
+00
 24
-40
-e5
-c2
+2c
+01
+90
+24
+37
+81
+90
 20
 40
-44
-3f
+00
+ea
 20
 40
 01
-58
+7c
 20
 40
 01
-fa
-20
-40
-65
-df
+ae
 20
 40
-01
-35
-68
-00
-c8
-84
-c0
-7f
-81
-3d
-20
-60
-00
-00
+06
 d8
-40
+68
 00
+cb
+dc
+1f
+e0
+fe
 01
-da
-20
-48
-84
-da
-40
+60
 00
-64
-20
-20
-65
-df
-d8
-40
+cb
+dc
+68
 00
-01
-da
+cb
+ed
+c0
+ff
+81
+7f
 20
-48
-84
-da
 40
-00
-64
-20
-20
-65
-d1
-70
-48
-a7
-01
-70
-48
-a6
 01
-70
-42
-10
-34
+21
 58
 00
 00
 00
-1f
-e4
-7e
-00
 60
-03
-44
-a0
+02
+4b
+e2
+60
+00
+cd
+11
 20
 60
 00
 00
-68
-08
-c6
-f7
+df
 20
-40
-67
-fb
-68
-10
-80
-78
+00
+04
+d8
+a0
+4b
 79
 20
+20
 7e
-05
-60
-10
-80
-78
-68
-08
 c6
-f7
 20
 40
-68
-1d
+06
+d5
 20
-40
-81
-54
-24
-40
-81
-56
-68
-08
-c6
-f7
+20
+01
+e1
+78
+57
+fc
+00
 20
 40
+02
+b6
 68
-0e
+00
+cc
+19
+c0
+00
+81
+8e
+18
+00
+2a
+00
 68
-10
-80
-78
-79
-3f
-fe
+02
+4c
 05
-60
-10
-80
-78
+98
+00
+12
+00
 68
 08
-c6
-f7
+80
+17
 20
+40
+29
+1f
 20
-68
+40
 29
-70
-46
-f6
+24
+20
+40
 02
+73
 20
-60
-00
-00
-70
-46
-f6
-03
+57
+82
+af
 20
 60
 00
 00
 20
 40
-33
-c4
-20
-22
-81
-63
+02
+af
 20
 20
-3d
+01
+72
+68
+00
+cc
+09
+24
+7a
+00
+00
+68
+00
 cb
-d8
+e5
+1f
+e0
+fe
+01
+60
+00
+cb
+e5
+68
+00
+cb
+ed
+c0
+ff
+81
+a6
+68
+08
+cb
+e6
+18
 40
+84
+01
+60
+08
+cb
+e6
+68
 00
-02
-da
-20
+cc
+22
+98
+46
+7e
+00
+24
+3a
+01
+67
+68
+00
+cd
+14
+c0
+01
+81
 0a
-aa
-da
-40
+68
 00
-62
-20
-20
-65
-d1
-d8
-40
+cd
+11
+1f
+e0
+fe
+01
+60
 00
-02
-da
+cd
+11
+c0
+01
+00
+ff
 20
-0a
-9a
-da
 40
 00
-62
+fa
+70
+4c
+22
+01
 20
 20
-33
-c8
-d8
-40
+01
+66
+68
+00
+cb
+e5
+c1
+ff
+80
+00
+70
+4b
+e5
 00
-1e
-da
 20
-47
 20
-da
-40
+01
+ac
+58
+00
 00
 00
+60
+01
+4b
+e3
+70
+0a
+99
+3a
 20
-40
-65
-df
-da
 20
-47
-21
-ea
+7d
+86
 20
-80
+40
+02
+3a
+68
 00
-60
+cb
+db
+20
+7a
 00
-c2
-10
+00
+98
+00
+72
+00
+d8
 c0
-1a
-43
-2c
+4b
+59
+d8
+a0
+4b
+bb
 20
-60
+20
+7f
+01
+70
+41
+de
 00
+70
+4b
+dc
 00
+70
+4b
+e7
+4e
 68
-00
-c7
-1f
+02
+4b
+e9
 60
-00
-c7
-1e
-20
-40
 02
-7b
-20
-20
+4c
 05
-76
+da
+20
+00
+00
 df
 20
 00
-02
+04
 d8
 c0
-49
-59
-20
-40
-7f
-e7
-58
-00
-ff
-ff
+4c
+05
 e8
-c9
-00
+c0
+80
 00
-98
-46
-7c
+9a
+20
+a2
 00
-24
-42
-ff
-e9
 c2
 00
 01
-74
-20
+bd
+1a
+22
+7e
+00
 60
+01
+4c
+8e
+68
 00
+cc
+8e
+68
+08
+cc
+8f
+98
+40
+fe
 00
-58
+60
 00
-01
-8e
+cc
+90
+20
 60
-01
-41
-ef
-58
 00
-03
-f6
-60
-01
-41
-f9
-58
 00
-01
-8a
-60
-01
-4a
-62
-58
+68
 00
+cb
+e2
+c0
 00
-96
-60
-01
-41
-ed
-58
+ff
+e7
+68
 00
-01
-b8
-60
-01
-41
-f5
-58
+cb
+ed
+c0
 00
+81
+ce
+c0
 01
-ac
-60
-01
-41
-f3
-58
-00
-02
-0b
-60
 01
-41
-eb
-58
-00
-02
-17
-60
+d1
+c0
 01
-41
-fd
+81
+d4
 20
-60
-00
-00
 20
-40
-44
-01
-68
-01
-46
-9f
+2a
+8c
+70
+4b
+ed
+11
+70
+11
+9e
+aa
 20
-7a
-00
-00
 20
+01
+d6
+70
+4b
+ed
+12
+70
+11
+9e
+55
 20
-00
-66
 20
-40
-58
-92
-24
-7a
-00
-00
-68
-00
-c8
-84
-c0
-7f
-81
-95
+01
+d6
+70
+4b
+ed
+13
+70
+11
+9e
+22
 68
 00
-c6
-c5
+cb
+de
 1f
 e1
 7e
-03
-c1
-81
-80
-00
-68
+07
+60
 00
-c7
-a0
-20
-5a
-01
-a9
+91
+9f
 68
 02
-46
-d3
-c2
-82
-c1
-79
-20
-40
-3f
-97
-24
-74
-00
+4c
+14
+60
+02
+11
+a0
+70
+11
+a4
 00
+da
 20
+11
+9e
+d8
 40
-01
-9f
+00
+07
 20
 40
-04
-8d
+02
+35
 20
 40
 01
-a4
+46
 20
 20
-06
-cb
+7f
+e7
 68
 00
-c6
-f5
-c3
-83
+cb
+ed
+c1
+7f
 80
 00
-70
-41
-72
-00
-70
-48
-0d
-14
-20
-60
-00
-00
-68
+c0
+08
+81
+e7
+c0
+09
 01
-46
-9f
+e9
+c0
+09
+81
+eb
 20
-7a
+60
 00
 00
 70
-48
-0a
-01
-70
-48
-0b
+4b
+ed
 02
 20
-60
-00
-00
 20
-40
-58
-14
-70
-47
-a0
 01
+78
+70
+4b
+ed
+03
 20
 20
 01
-14
-20
-40
-7e
-34
+78
+70
+4b
+ed
+ff
+70
+0a
+99
+39
 20
 40
-01
-af
-20
-20
-3e
-e0
+7d
+86
 68
-08
-c6
-e7
-20
-40
 02
-cb
-68
-08
-c6
-e7
+4b
+bd
 20
 40
-68
-1d
+01
+b9
 20
 20
-81
-b6
+01
+78
 20
 40
-02
-d4
-20
-20
-3d
-6d
+03
+bd
 20
-40
+34
 02
-d4
+05
+79
 20
+00
+26
+68
+00
+cd
+25
+79
 20
-3d
-62
-1a
-62
 7e
+02
+60
 00
-c0
-1c
-81
-f0
-c0
-1d
-01
-fe
-c0
-1e
-3f
-8d
-c0
-0a
-01
 cd
-c0
-0a
-81
-db
-c0
-14
-81
-e6
-c0
-19
-01
-e8
-c0
+25
 20
-01
-c2
+40
+02
+25
 20
 20
-41
-7d
-68
-01
-45
+02
 09
-c1
-00
+70
+11
+9e
+ff
+68
 00
+cb
+de
+60
 00
+91
+9f
 68
+02
+4c
+14
+60
+02
+11
+a0
+d8
+40
 00
-84
-41
-1f
-eb
-7e
-00
-1f
-e6
-7c
-0c
+06
+da
 20
-61
-00
-00
-58
-00
-00
-09
-60
-01
-44
-96
-60
-01
-44
-98
+11
+9e
 20
 40
-01
-e6
+02
+35
 20
 20
-03
-3d
-58
+02
+47
+20
+40
+02
+59
+20
+60
 00
 00
+20
+20
 00
-60
-01
-c8
-a6
-df
+5f
+79
 20
 00
-03
-d8
-c0
-44
-a0
+26
+68
+00
+cd
+25
+79
 20
-40
+7e
 01
-72
-24
-54
+60
+00
+cd
+25
+68
 01
-d8
+46
+a8
+60
+01
+4b
+4e
 70
-48
-a9
+4b
+4d
 00
-70
-48
-7d
+20
+60
 00
-70
-48
-0c
 00
-20
-40
-06
-c6
-20
-20
-41
-c3
-20
-40
-34
-10
-70
-48
-84
-5a
-20
-20
-01
-39
 58
 00
 00
-07
-60
-01
-44
-96
+00
 60
 01
-44
-98
+4b
+4e
 70
-47
-c8
+4b
+4d
+00
+20
+60
 00
-70
-47
-a0
 00
 20
 40
-06
-c6
+02
+14
 20
-40
-58
-16
+60
+00
+00
 20
-40
-41
-d9
-68
-00
-c8
-a9
 20
-7a
 00
+5f
+68
 00
-20
-20
+cd
+1b
+1f
+e0
+fe
+01
+1f
+e1
+7e
 03
-07
-70
-0a
-99
-12
-20
-20
-7d
-8f
-68
+60
 00
-c7
-a3
+cd
+1b
+c0
+00
+02
+1d
 c0
 00
 81
-ec
-70
-46
-c6
-14
-20
-20
-01
-ee
-20
-40
+b5
+c0
 01
-e6
-70
-46
-c6
-14
-d8
-e0
-00
+02
+27
+c0
 01
+81
+b5
 20
-20
-41
-b9
-70
-47
-8b
-01
-d8
-e0
+60
+00
 00
-03
 20
 40
-43
-d2
-58
-00
-00
+03
+23
+68
+02
+4c
+14
+60
+02
+4c
+05
+68
 00
+cb
+50
 60
-01
-47
-07
-70
-46
-a7
 00
+cb
+e8
 20
 40
-40
-5d
+02
+25
+60
+08
+cb
+50
 20
-40
+60
+00
 00
-d4
 20
 40
 01
-fa
-20
+ba
 20
-65
-d1
-da
 20
-49
+02
 59
-da
-40
-00
-5b
-d8
-40
-00
-04
+70
+41
+de
 20
+58
+00
+0f
+0f
 60
+01
+4c
+05
+e0
+a1
 00
 00
-70
-4a
-71
+68
 00
-20
-40
+cb
+51
+60
 00
-d4
+cb
+e8
 20
 40
-05
-a6
-70
-41
-bd
-00
-68
+02
+25
+60
+08
+cb
+51
+20
+60
 00
-c8
-aa
-c0
 00
-85
-50
-68
+79
+3f
+80
+26
+70
+4d
+25
 00
-c8
-84
-c0
-7f
-82
-07
 20
 40
-01
-63
-20
-20
+53
+ce
+d8
+e0
 00
-d7
-70
-47
-a1
-01
-70
-47
-a2
-28
+03
 20
+20
+43
+d2
 60
+08
+cb
+dd
+18
+42
+72
 00
-00
-78
-34
-7c
-00
-68
-12
-01
-38
+d8
+a0
+4b
 79
-34
-7e
 1a
-60
-12
+22
+0c
 00
-4c
 20
-40
-2c
-21
 20
-40
+7f
 01
-18
-20
-40
-74
-bd
-20
-40
-44
-82
-20
-40
-3e
-9f
-20
-40
-00
-a2
 68
-08
-c6
-f7
-20
-20
-67
-ed
-20
-40
-02
-21
-20
-40
-02
-33
-20
-40
-02
-3a
-20
-40
-02
-2e
-20
-40
-02
-44
-20
-40
-42
-34
-20
-40
-02
-53
-20
-40
-42
-3a
-20
-40
-02
-5f
-20
-20
-02
-41
-68
-00
-c8
-a6
-20
-7a
 00
+cb
+58
+1f
+e9
+7e
 00
-da
 60
-48
-a7
-da
-40
-02
-26
-20
-20
-33
-6d
-70
-48
-a7
-01
-68
 00
-c8
-a8
+cb
+db
 1f
 e0
 fe
 01
-1f
-e1
-7e
-01
-60
-00
-c8
-a8
+d8
 c0
-00
-03
-07
+4b
+58
+98
 c0
+8c
+00
+e8
+c1
+80
 00
-83
-16
-20
 60
+01
+cc
+1a
+68
 00
+cb
+58
+1f
+e3
+7e
 00
-da
+1f
+e1
+7e
+03
 60
-48
-0b
-da
-40
-02
-31
-20
-20
-33
-6d
-70
-48
-0a
 00
+cc
+20
 20
 60
 00
 00
-da
-60
-48
-0e
-da
-40
+68
+00
+cb
+dd
+1f
+e0
+fe
 02
-36
-20
-20
-33
-6d
-58
-36
-ee
-80
-60
-01
-c9
-60
-70
-48
-0c
-01
-20
 60
 00
+cb
+df
+68
 00
-da
+cb
+de
 60
-48
-0d
-da
-40
-02
-3d
-20
-20
-33
-6d
+00
+cb
+99
 68
 00
-c7
-c9
-60
+cb
+dd
+1f
+e9
+fe
 00
-c1
-72
-70
-48
-0c
-01
-20
-60
+68
+08
+cb
+dc
+18
+41
+04
+03
+18
+43
+84
 00
+98
+41
+fe
 00
-da
-60
-46
-c6
-da
-40
-3d
-60
-20
-20
-33
-6d
 68
+08
+cc
+19
+98
+40
+fe
+00
+e0
+a0
+80
 00
-c6
-f5
-c2
-82
-43
-94
 68
 00
-c6
-b6
-20
-3a
-02
-4b
-20
-40
-02
-a2
+cb
+dd
+98
+00
+72
+00
+d8
 c0
-03
-82
 4b
+79
 20
 20
-43
-a9
+7f
+01
 68
-00
-c7
-20
-c1
-01
-00
-00
-70
-47
-a2
-28
+08
+cb
+e8
 20
 40
 02
-50
-20
+5d
+60
+08
+cb
+e8
 20
-43
-b0
-da
 60
-46
-da
-da
+00
+00
+20
 40
 02
-5d
-20
+61
+18
+40
+84
+01
+18
+41
+04
+03
 20
-33
-6d
+60
+00
+00
 68
 00
-c8
+cc
+05
+1f
+e1
 7e
+03
+1f
+ef
+a2
+04
+58
+00
+4b
+ee
+9a
 20
-7a
+fe
 00
+98
+40
+8c
 00
-68
+e8
+c0
+80
 00
-c6
-ae
-20
-3a
-02
-5a
-1f
-e0
-ff
-ff
 60
 00
-c6
-ae
+cb
+e7
 20
 60
 00
 00
-20
-40
-42
-ca
-70
-48
-7e
+78
+44
+fc
 00
-20
-20
-02
-5d
-20
-40
-03
-0b
-20
-20
+78
 43
-b8
-68
+fc
+00
+58
+55
+55
+55
+98
+00
+1e
 00
-c8
-7d
-24
-3a
-02
-6b
 68
 00
-c8
-7e
+cb
+e7
+1f
+ed
+84
+00
+79
 20
-7a
+04
+01
+18
+43
+1c
 00
+20
+60
 00
-68
 00
-c8
-80
 20
-7a
+40
+02
+6a
+78
+57
+fc
 00
+78
+26
+fc
 00
-1f
-e0
-ff
-ff
-60
+78
+30
+fc
 00
-c8
-80
-24
-7a
+78
+50
+7c
 00
+78
+28
+7c
 00
 68
+01
+4b
+e0
+98
 00
-c8
-7f
-60
+36
 00
-c8
-80
-20
-20
+37
+c1
+84
+00
+24
+2c
 02
-71
-68
-01
+af
+78
 46
-ac
-1f
-e6
 fc
-02
-20
-40
-7f
-86
-18
-07
-7e
+00
+78
+25
+fc
+00
+78
+23
+fc
+00
+78
+24
+fc
 00
 20
-3a
+40
 02
-71
-20
+ac
 60
 00
-00
+cc
+91
 68
+08
+cc
+90
+98
+46
+7c
 00
-c8
-83
-c0
-00
+24
+22
 82
-75
-c0
-01
-02
-77
+af
 20
+40
+02
+ac
 60
 00
+cb
+57
+68
 00
-70
-48
-83
+cc
+23
+1f
+e6
+7c
 02
 20
-20
-02
-7d
-70
-48
-83
-01
-20
-20
-02
-7b
-68
-08
-c8
+22
 82
-20
-20
+8f
 68
-0e
+00
+cb
+57
 68
 08
-c8
-82
-20
+cb
+de
+a8
+40
+0e
+00
+24
 20
-68
-29
-68
-08
-c8
 82
-20
-20
-68
-25
+af
 20
 40
-42
-4a
-68
-00
-c6
-e0
-c0
-02
-bd
-aa
-c0
 02
-3d
-96
-c0
-03
-02
-86
-c0
-01
-82
-86
+ac
+e0
+a0
+80
+00
+1f
+e9
+7e
+00
+1f
+e1
+72
+1f
 20
+22
+82
+97
 20
+40
 02
-86
-68
-00
-c7
-7a
-c0
+ac
+e0
+a0
+80
 00
-02
-93
-c0
+c2
 00
-82
-8b
-c0
-01
-02
-95
-c0
-01
-82
-90
-70
-48
-7c
 02
-68
+94
+18
+a2
+22
 00
-c7
-8c
-20
 20
-3d
-be
-70
-47
-7a
+40
 02
-20
+ac
 60
 00
+cd
+18
+1a
+22
+0a
+00
+09
+80
 00
-70
-48
+18
+78
+28
 7c
-01
-68
 00
-c7
-8c
-20
+db
+60
+06
+64
+1f
+ef
+7e
+00
+1f
+f1
+7e
+00
+e0
+a1
+80
+00
+78
+45
+fc
+00
 20
-3d
-be
+23
+02
+af
+78
+37
+fc
+00
 68
 00
-c7
-8d
+80
+17
+1f
+e0
+a2
+00
 20
+40
+29
+81
+78
+46
+fc
+00
 20
-3d
-be
-70
-48
-7c
-03
+40
+29
+18
 68
 00
-c7
-8f
+cd
+18
 20
+40
+00
+1f
 20
-3d
-be
-78
-54
-7c
+60
 00
-58
 00
+09
+80
 00
+08
+19
+89
+7e
 00
-60
-03
-46
-9b
 20
-40
-02
-d9
+60
+00
+00
+78
+4d
+fc
+00
+78
+45
+fc
+00
 20
 40
-40
-79
+26
+4d
 20
-40
-40
-7e
+60
+00
+00
 20
 40
-02
-a0
+29
+18
+68
+08
+cb
+e7
 20
 20
-3f
-9f
+29
+33
 20
 40
+53
+c4
+68
 02
-a2
-20
-20
-40
-9a
-da
-20
+4c
+05
+98
 00
+12
 00
 20
 40
 02
-ad
+6a
 20
 40
 02
 b3
+79
 20
-40
-02
-b9
-20
-40
-02
-a9
-1a
-22
+2a
+00
+78
+2e
+fc
+00
+78
+30
+7c
+00
+78
+50
+fc
+00
+19
+31
 7e
 00
-20
-60
+1f
+ec
+fe
+00
+1f
+f1
+fe
+00
+08
+00
+86
+28
+78
+4e
+fc
+00
+78
+2d
+fc
+00
+78
+23
+fc
 00
+78
+24
+fc
 00
 68
 00
-c6
-e5
-c1
-7f
-80
+cc
+90
+08
 00
-20
-40
-02
-bf
-20
-20
-02
-c5
+86
+08
 68
+00
+cb
+df
+98
+00
+72
+00
+d8
+c0
+4b
+99
+e8
+c0
+80
+00
 08
-c6
-e2
-20
-40
+00
+86
+08
+c2
+00
 02
-d4
-68
+cc
+78
+24
+7c
+00
 08
-c6
-e2
-20
-40
-68
-1d
-79
+00
+86
+18
+78
+44
+7c
+00
+37
+d3
+82
+00
 20
-a2
+00
+00
+64
+78
+4e
+fc
+00
+78
+4d
+fc
 00
 20
 60
 00
 00
-68
-08
-c6
-e3
 20
 40
+7f
+e9
+68
+0a
+4b
+fe
+1c
+42
+7e
+00
+98
+46
+7c
+00
+24
+41
+2d
+18
+1f
+e2
+24
+00
+68
 02
-d4
+4b
+fe
 68
 08
-c6
-e3
-20
+cc
+02
+98
 40
-68
-1d
+84
+00
+1a
+42
+7e
+00
+98
+46
+7c
+00
+24
+61
+00
+00
 79
+3f
+fe
+1c
+60
+02
+4b
+fe
 20
-a2
-01
 20
-60
+7f
+e7
+d8
+40
 00
 00
-68
-08
-c6
-e4
+df
 20
-40
-02
-d4
-68
+00
 08
-c6
-e4
-20
+1a
+22
+0c
+00
+e8
+c0
+80
+00
+98
 40
-68
-1d
-79
-20
-a2
+84
+00
+c2
+00
 02
-20
-60
+e9
+18
+49
+7e
 00
+1f
+e2
+04
 00
-68
-08
 c6
-e5
+93
+00
+00
+1f
+e6
+fc
+0a
 20
 40
-02
-cb
-68
-08
+7f
+86
+18
+07
+fe
+00
+1f
+f2
+7e
+00
+18
+07
+04
+00
+98
+41
+84
+00
+20
+60
+00
+00
+20
+60
+00
+00
 c6
-e5
+13
+00
+00
 20
 40
-68
-1d
-7d
-20
-a2
 03
-20
-20
-02
-d4
-68
-08
-c6
-e6
+db
 20
 40
-02
-cb
+03
+01
 68
-08
-c6
-e6
-20
+00
+c0
 40
+c3
+00
+02
+fe
 68
-1d
-7d
-20
-a2
+00
+80
+a0
+24
+7a
+00
+00
+58
+00
+00
+00
+60
 04
+00
+a1
+20
+60
+00
+00
 20
+40
+03
+0a
 20
+40
 02
-d4
-79
-3f
-84
-07
-d8
-a0
-80
-78
+fe
 20
 40
+3e
+bf
 68
-30
-79
-20
+12
+00
+70
+68
+1a
+00
+78
+98
+41
+84
+00
+18
+44
 04
-07
-d8
-a0
-80
+00
+60
+1a
+00
 7c
 20
-40
+60
+00
+00
 68
-30
-79
-3f
-84
-07
-d8
-a0
-80
-70
+00
+cb
+0c
 20
+7a
+00
+00
 20
-68
-30
-79
 20
-04
-07
-d8
-a0
-80
-78
+05
+5f
 20
 40
-68
-30
-79
-3f
-84
-07
+34
+16
 20
+35
+83
+18
 20
-02
-cf
+40
+04
+08
 68
 00
-c6
-e0
-c0
-02
-02
-e4
-c0
-02
-c0
-10
+c1
+de
+60
+00
+cc
+94
 20
 40
-3f
-c0
-78
-54
-7c
-00
+06
+d5
 68
 00
 c6
-f5
-c3
-03
-bf
-e7
-68
-08
+85
+60
+00
 c6
-f3
+da
 20
 40
+43
+ca
 68
-1d
-24
+03
+44
+a0
 60
-80
-00
+03
+4b
+41
+20
+40
+03
+1a
 20
 20
-3f
-e7
+74
+b9
+24
+55
+83
+5f
 20
 40
-3f
-c0
-68
+03
+41
+20
+75
+80
 00
-c6
-f5
-c3
+20
+40
 03
-bf
-c8
-68
-08
 c6
-f3
+20
+20
+03
+a4
 20
 40
+03
+23
 68
-1d
-24
-60
-80
 00
-20
-20
-3f
-c8
-70
-47
-a1
-00
-70
-47
-a2
-00
-28
-0f
-fe
+c2
+10
+c0
+1a
+03
 26
 20
-40
-85
-a6
-20
-20
-42
-6d
-70
-48
-a9
-01
-70
-47
-a0
-00
 20
-40
 34
-02
+0a
 68
-03
-48
-a0
+00
+cc
+94
 60
-03
-44
-a0
-70
-48
-84
-5a
-20
-40
-01
-39
+00
+c1
+de
 20
-40
-34
-18
-68
-01
-46
-87
 60
-01
-46
-ac
+00
+00
 70
+4b
+3d
 01
-6d
-06
 70
-48
-7d
+47
+9f
 01
-70
-48
-7e
+68
+01
+46
+a8
+68
 00
+cb
+40
+c0
+ff
+83
+2c
 58
 00
-00
-00
-60
-01
-46
-b0
+07
+08
 60
 01
 46
 ae
-d8
-e0
-00
-07
-20
-40
-43
-ce
-20
-40
-43
-ca
 68
 00
+cb
+40
 c0
-92
-2f
-ef
+7f
+85
+eb
+28
+0f
 fe
-01
-20
+26
+24
 40
-83
-07
-20
-20
-42
-c4
-68
-03
-48
-a0
-60
-03
-44
-a0
+85
+54
 20
 40
-03
-0b
-20
-20
-7d
-f4
-70
-43
-6f
-1f
-70
-43
-8f
-1f
-d8
-e0
-00
-07
+05
+e9
 20
 40
-43
-ce
-70
-47
-a3
-00
+34
+18
 d8
 c0
-48
-85
-20
-20
-03
-12
-d8
-a0
-43
-7b
-df
-20
-00
-13
-20
-40
-7f
-01
-20
-20
-57
-b8
-d8
-e0
-00
-07
-20
-40
 43
-d2
+90
 20
 40
-01
-3f
-70
-47
-a3
-00
-70
-43
-6f
-00
+05
+e5
 70
 43
 8f
@@ -3192,4980 +3296,4532 @@
 20
 7d
 f4
-20
-40
-01
-3f
-d8
-a0
-43
-70
-df
+79
 20
 00
-0b
+26
 20
 40
-7f
+01
+b5
+70
+4b
+ed
 01
 20
-20
-57
-b8
-58
+60
 00
 00
+68
 00
-60
-01
-46
-ac
+c7
+7a
+c0
+7f
+83
+3e
 20
 20
-42
-cb
+05
+5f
 68
 00
-c5
-0f
-1f
-e0
-fe
-01
+c6
+e1
 60
 00
-c5
-0f
-c0
-06
-53
-95
+c7
+7a
+20
+20
+05
+5f
+70
+42
+12
+76
+20
+20
+3d
+36
 20
 40
-55
-aa
+03
+41
 20
 40
-56
-1e
+40
+c0
 20
 40
-04
-f4
+40
+d9
+c0
+18
+03
+4d
+c0
+18
+83
+4f
 20
+40
+40
+d1
 20
-53
-8f
-68
-00
-80
-16
-1f
-e0
-fe
-01
-60
-00
-80
-16
-c1
-94
-00
 00
+03
+e8
+20
+20
+03
+45
 70
-00
-16
-25
+4b
+0c
+01
 20
-60
-00
-00
 20
-40
-29
-bb
-1f
-e2
-22
-00
+03
+43
 20
 40
-00
-1d
+03
+54
 20
 20
-54
-a3
+40
+e0
 20
 40
 03
-3f
-20
-20
-55
-7d
+54
 68
 00
-c7
-c9
-60
-00
-c1
-72
-70
-47
-c8
-00
-20
-60
-00
-00
+c6
+de
+c0
+38
+40
+e8
 70
-47
-c8
+46
+e0
 01
 20
 60
 00
 00
-68
-00
-c3
-d6
-1f
-e6
-7c
-0c
-24
-21
-03
-3d
-68
-00
-c3
-d8
-68
-08
-c7
-c9
-98
-46
-7c
-00
-20
-21
-03
-39
-68
-00
-c3
-d8
-60
+58
 00
-c1
-72
+80
+06
 20
+40
+64
+13
 20
-03
-3b
-68
-00
-84
-3f
-c4
-03
-00
 00
+2e
+e0
 20
 40
 03
-4e
-24
-74
+3b
+20
+60
 00
 00
-20
-20
-55
-a0
-78
-34
-7c
+58
 00
-68
 00
-84
-5a
+06
+20
+40
+64
+14
 1f
-f1
+e1
 fe
+08
+1f
+ed
+7e
 00
-c1
-87
-80
-00
-68
-00
-84
-60
 1f
-f1
+e0
 fe
-00
-c1
-80
-00
-00
+06
 20
 20
-7f
-e9
-68
-00
-84
-56
-c2
-82
-83
-6a
+64
+13
 20
 40
-04
-e6
 68
-00
-c7
-92
-24
-3a
-03
-60
+a8
 68
-00
-84
-3f
-c3
 02
-03
-64
-68
-00
-82
-da
-20
-3a
-03
-64
+40
+a0
+60
+02
+4c
+14
 20
+40
+3e
+6e
 20
-56
-64
-68
+40
+05
+47
+20
+40
+3e
+1e
+58
 00
-c7
-92
-1f
-e0
-ff
-ff
-60
 00
-c7
-92
-20
-20
-56
-64
-68
 00
-c4
-c4
-c0
-82
-83
-67
-70
-47
-92
+60
+01
+41
+54
+20
+40
 03
+86
+20
+40
+3e
+54
 20
 40
 58
-92
+10
 20
-5a
-06
-d3
+40
+58
+39
 20
+40
+58
+2c
 20
-56
-22
+40
+58
+18
+20
+40
+65
+9c
+20
+40
+65
+c2
+20
+40
+44
+3f
 20
 40
 03
-6c
+96
+20
+40
+04
+90
 20
+40
+65
+df
 20
+40
 03
-78
+77
 68
 00
-c6
-c5
-1f
-e1
-7e
-03
-c1
-81
-80
+cb
+40
+c0
+7f
+83
+7f
+20
+60
 00
-68
 00
-c7
-c5
+d8
+40
+00
+01
+da
 20
-7a
+4b
+40
+da
+40
 00
+64
+20
+20
+65
+df
+d8
+40
 00
-68
+01
+da
+20
+4b
+40
+da
+40
 00
-c3
-dd
+64
 20
-7a
+20
+65
+d1
+70
+4b
+48
+01
+70
+4b
+47
+01
+70
+42
+10
+34
+58
 00
 00
-68
 00
-c3
-dc
-79
-20
+1f
+e4
 7e
-04
-60
 00
-c3
-dc
-20
-40
-56
-50
+60
+03
+44
+a0
 20
 60
 00
 00
+68
+10
+80
+78
+79
 20
+7e
+05
+60
+10
+80
+78
 20
-04
-ea
+40
+03
+8e
 68
-00
-c7
-a3
+10
+80
+78
+79
+3f
+fe
+05
+60
+10
+80
+78
 20
-7a
+60
 00
 00
 68
-00
+08
 c6
-c5
-1f
-e1
-7e
+f7
+20
+40
+67
+fb
+68
+08
+c6
+f7
+20
+40
+68
+1d
+70
+46
+f6
 03
-c1
-01
+20
+60
 80
 00
 70
 46
-c6
-0a
+f6
+02
 20
 60
 00
 00
-c6
-07
-80
-00
 20
 40
-58
-90
-24
-7a
-00
+33
+c4
+20
+22
+c3
+16
+20
+20
+3d
+cb
+d8
+40
 00
-68
-00
-82
-d9
-1f
-e1
-7e
-03
-60
-00
-c5
-0c
-e8
-c0
-80
-00
-1f
-e1
-7e
-1f
-60
-00
-c5
-0b
-20
-7a
-00
-00
-18
-c2
-7e
-00
-60
-01
-45
-0d
-68
-00
-c5
-0c
-c0
-01
-83
-8f
-20
+02
+da
 20
-56
-8d
-68
-00
-82
-db
-c0
+0a
+aa
+da
+40
 00
-83
-92
+62
 20
 20
-5c
 65
-e8
-c2
-80
+d1
+d8
+40
 00
-60
 02
-c3
-ce
-e8
-c1
+da
+20
+0a
+9a
+da
+40
 00
+62
+20
+20
+33
+c8
+58
 00
+01
+77
 60
 01
-04
-5f
+4d
 20
 20
-5c
-8a
-e8
-c1
+60
 00
 00
-c0
-02
-03
-9b
-c0
-03
-03
-d9
-20
-20
-56
-98
+58
+00
+00
+19
+60
+01
+4d
 20
-40
-7e
-a5
+24
+55
+83
+a1
 20
 40
 03
-79
+43
 20
 40
-7e
-9f
-e8
-c1
-80
-00
-60
-01
-84
-77
-c0
-08
 03
-aa
+59
+68
+00
+c7
 1f
-ec
-84
+60
 00
-18
-46
-7c
-24
+c7
+1e
 20
-21
-03
-b8
-d8
 40
-47
-ca
-60
-09
-44
-bc
+05
+59
+68
+00
+cb
+3f
+c2
+81
+03
+b7
+70
+4b
+54
+ff
 20
 40
-58
-ad
+04
+5c
+70
+4b
+55
+0a
 58
 00
-8e
-7a
+ff
+ff
 60
 01
-44
-bc
-20
-60
+4c
+05
+e0
+a1
 00
 00
 20
 40
-59
-fa
+04
+90
 20
 40
-58
-79
-18
+65
+d1
+20
+20
+02
+05
+20
+40
+04
+5e
+68
+00
+cb
+54
 c0
-8c
-07
-e8
+00
+84
+9b
 c0
-80
+01
+01
+f1
+70
+4b
+55
+0a
+20
+60
 00
-c1
-88
-80
 00
-18
+df
+20
+00
+02
+d8
 c0
-8c
+4c
 05
+20
+40
+7f
+e7
+58
+00
+ff
+ff
 e8
-c1
+c9
 00
 00
-d8
-40
-18
-12
 98
 46
 7c
 00
 24
-62
-80
-00
-18
-c0
-8d
-fc
-58
-00
+42
+ff
+e9
+c2
 00
-2b
-e0
+03
 c1
-00
-00
 20
 60
 00
 00
-c0
-05
-03
-ba
-20
-20
 58
-ad
-68
-09
-04
-78
-68
 00
-c4
-e9
-c2
-81
-83
-d2
-20
-40
-57
-6a
-20
-3a
-5a
-76
-18
-c0
-8d
-fe
-e8
-c1
+03
+d7
+60
+01
+4d
+0e
+58
 00
+03
+ee
+60
+01
+41
+ef
+58
 00
-d8
-40
-2a
-50
-98
-46
-7c
+06
+b9
+60
+01
+41
+f9
+58
 00
-20
-22
-83
-c8
-68
+02
+f7
+60
 01
-04
-78
-c0
-09
-da
-76
-68
-09
-04
-78
-20
-20
-59
-bf
-20
-40
-7e
-a5
-68
+41
+ed
+58
 00
-c8
-98
-1f
-e0
-a2
+04
+36
+60
 01
-20
-40
-5a
-82
+41
+f5
 58
 00
+04
+2a
+60
+01
+41
+f3
+58
 00
-0b
-e0
-a0
-80
+04
+aa
+60
+01
+41
+eb
+58
 00
-68
+04
+c1
+60
+01
+41
+fd
+20
+60
 00
-c8
-98
-1f
-e2
-72
 00
-d8
-c0
-48
-99
 20
-20
-7f
+40
+44
 01
 68
 01
-44
-fa
-98
 46
-7c
-00
-24
-22
-83
-bd
+9f
 20
-40
-5a
-42
-24
-34
-03
-bd
-70
-04
 7a
-05
+00
+00
 20
 20
-5a
-77
-e8
-c0
-80
 00
+82
+d8
 c0
-02
-83
-dc
-20
-20
-5a
-f5
+18
+00
+d8
+a0
+48
+0a
 20
 40
-5b
-5a
-68
-00
-84
-3f
-79
-3f
-fe
-05
-60
+03
+e3
+d8
+c0
+19
 00
-84
-3f
 20
-20
-5c
-8e
-68
-00
-80
-16
+40
+03
+e3
+d8
 c0
-93
-d6
-f2
+1a
+00
 20
 40
 03
-e7
+e3
 d8
-e0
+c0
+1b
 00
+df
+20
 00
-68
-01
-44
-82
+1b
 20
 20
 7f
-08
-18
+01
+d8
+c0
+48
 0a
-7e
-00
 d8
-40
-01
-ff
-98
-41
-7e
+a0
+18
 00
-1f
-e0
-fe
-fa
 20
-20
-3c
-be
-78
-55
-fc
+40
+03
+e3
+d8
+a0
+19
 00
 20
-37
+40
 03
-ef
-24
-36
+e3
 d8
-06
+a0
+1a
+00
 20
 40
-2b
-cb
-68
-01
-40
-c1
-60
-01
-04
-4d
-68
-00
-c6
-c5
-2f
-e0
-06
 03
-24
+e3
+d8
+a0
+1b
+00
 20
-ab
-de
 20
+03
+e3
 20
-57
-fb
-68
-00
-c7
-a3
+40
+58
+92
 24
 7a
 00
 00
 68
 00
-84
-78
-1f
-e6
-7e
-1a
-24
-62
-80
-00
-70
-46
-c6
-00
-20
-20
-3d
-60
-20
+cb
 40
-62
-bc
-24
-3a
-7d
-db
+c0
+7f
+83
+f5
 68
 00
-8a
-99
+c6
 c5
-84
-fd
-d6
-c0
-09
-04
+1f
+e1
+7e
 03
-20
-20
-7d
-ca
-20
-40
-58
-90
-24
-7a
+c1
+81
+80
 00
+68
 00
-20
+c7
+9c
 20
 5a
-bf
-68
-10
-80
-77
-1f
-e1
-7e
-fd
-60
-10
-80
-77
+04
+27
 68
-18
-80
-73
-18
-41
-84
 02
-60
-18
-80
-73
+46
+d3
+c2
+82
+c1
+79
 20
 40
-63
-ee
-18
-41
-04
-fd
-20
+3f
+97
+24
+74
 00
 00
-0d
 20
 40
-63
-f2
-60
-18
-80
-73
+03
+ff
 20
-60
-00
-00
-68
-02
 40
-a0
-60
+04
 02
-49
-68
 20
-60
-00
-00
-70
-4a
-67
-01
+40
+04
+22
+20
+20
+04
+0d
 70
-4a
-69
-00
-68
-00
-c9
-32
-1f
-e1
-7e
-07
-60
+41
+72
 00
-c9
-32
+70
+4b
+3a
+1e
 20
 60
 00
 00
 68
 00
-c9
-32
-79
-20
-7e
-04
-60
-00
-c9
-32
-60
+cb
+39
+c1
+80
+80
 00
-c8
-ed
-20
-60
+58
 00
 00
-68
 00
-c9
-32
-79
-3f
-fe
-04
 60
 00
-c9
-32
-20
+cb
+39
 60
-00
-00
+02
+46
+9b
 20
-40
-04
-ea
-68
-00
-ca
-68
-c0
-00
-84
-29
-c0
-01
-04
-2d
 20
-60
-00
-00
-70
-4a
-69
-02
+03
+54
 70
-4a
-65
-00
+47
+a0
+07
 70
-4a
-67
+47
+a1
+04
+58
 00
+47
+a0
+60
+01
+42
+18
 20
 20
-04
-17
-70
-4a
-66
-00
+7e
+38
+da
+20
+46
+9a
 20
+40
+7e
+3d
 20
+54
 04
-2a
-68
-01
-49
-37
-1f
-e0
-fe
-01
+11
+20
 60
-01
-49
-37
-c2
-85
-04
-d8
-68
-00
-ca
-66
-c0
 00
-84
-38
-70
-4a
-66
-01
-68
 00
-ca
-66
-c0
-80
-84
-17
 68
 00
-ca
-64
+c7
+c1
 1f
 e0
 fe
 01
 60
 00
-ca
-64
-c0
-02
-04
-3f
-20
-40
-06
-3d
-70
-49
-76
-02
-20
-20
-04
-95
+c7
+c1
 20
-40
-04
-ea
-70
-4a
-64
+60
 00
-20
-20
-04
-17
-70
-4a
-69
-02
-70
-4a
-67
-01
-70
-4a
-66
 00
+da
 20
+46
+9a
 20
-04
-17
-68
-00
-ca
-68
-c0
-01
-84
-43
-68
-00
-c9
-32
-2f
-ec
-00
-04
-20
+40
+7e
+54
 20
-84
-15
-68
-00
-ca
-68
-c0
-00
-84
-42
-c0
-01
+34
 04
-43
+19
 20
 60
 00
 00
-68
-00
-c9
-41
-c1
-ff
-80
-00
 20
 40
-04
-54
-24
-56
-04
-5c
-20
-60
-00
-00
-78
 56
-7c
-00
+52
 68
 00
-ca
-67
+c7
 c1
-80
-80
-00
+1f
+e6
+7c
+01
+24
+41
+56
+50
 68
 00
-ca
-69
+c7
 c1
-80
-00
-00
-70
-4a
-68
-01
-70
-49
-76
-04
 20
-20
-7f
-eb
-68
+7a
+00
 00
-ca
-69
-20
-3a
-04
-64
 1f
 e0
 ff
 ff
 60
 00
-ca
-69
-70
-4a
+c7
+c1
+20
+20
+3f
+90
 68
-02
+01
+46
+9f
 20
-40
-06
-3d
-70
-49
-76
-04
-20
-60
+7a
 00
 00
 70
-4a
-68
-03
-68
-00
-ca
-66
-24
-3a
-04
-36
-20
-40
+48
 06
-3d
+01
 70
-49
-76
+48
+07
 02
 20
 60
 00
 00
-68
-00
-c9
-41
-c0
-ff
-85
-25
-20
-40
-04
-70
 20
 40
-06
-2b
+58
+14
 70
-49
-36
+47
+9c
 01
 20
-60
-00
-00
-68
-01
-4a
-62
 20
-40
-7f
-9c
+03
+54
 20
+40
+7e
 34
+20
+40
 04
-76
-68
-03
-c8
-ce
+2d
 20
-7a
-00
-00
 20
+3e
+e0
+68
+08
+c6
+e7
 20
-7f
+40
+05
+b8
+68
+08
+c6
 e7
 20
 40
-04
-8d
-70
-49
-5d
-00
-1a
+68
+1d
 20
-fe
-01
-60
-00
-c9
-31
+20
+84
+34
 20
 40
-04
-17
-60
-00
-c8
-cd
-e8
-a8
-80
-00
-ea
+05
+b3
+20
+20
+3d
+6d
+20
 40
-80
-00
-98
-41
-fe
-00
-e0
-a0
-80
-00
+05
+b3
+20
+20
+3d
+62
 1a
-40
-a4
-01
-ea
-42
-00
-00
-e0
-a2
-00
+62
+7e
 00
-1a
+c0
+0a
+04
 40
-a4
+c0
+0a
+84
+64
+c0
+14
+84
+71
+c0
+19
+04
+73
+c0
+20
+04
+7b
+c0
+1c
+84
+88
+c0
+1d
+04
+94
+c0
+1e
 04
-d8
 a0
-48
-d3
-df
 20
+20
+41
+7d
+58
 00
-02
-ea
-40
-80
 00
-e8
-a8
-80
 00
-98
-40
-fe
+60
+01
+cb
+47
+df
+20
 00
-e0
+03
+d8
+c0
+44
 a0
-80
-00
-1a
+20
 40
-a4
-01
-c2
-00
+03
+bf
+24
+54
 04
-86
-20
-60
-00
+52
+70
+4b
+4b
 00
+70
+4b
+3e
+01
 68
 00
-c6
-f5
-c3
-83
-80
-00
-68
+c7
+9f
+24
+3a
+04
+4b
+70
+4b
+3c
+14
+70
+4b
+56
 00
-c8
-0c
-c1
-80
-80
+70
+4b
+4a
 00
+20
+40
+02
+30
+20
+40
+04
+57
+20
+40
+03
+4b
+20
+40
+04
+08
+20
+20
+41
+c3
 58
 00
 00
-00
-60
-00
-c8
-0c
+50
 60
-02
+01
 46
-9b
-20
+ae
 20
-01
-14
-70
-49
-3a
-00
-d9
-60
-0d
-00
+40
 34
-73
-02
+10
+70
+4b
+40
+5a
+20
+20
+03
+7b
+df
+20
 00
+03
+d8
+c0
+44
+a0
 20
 40
-04
-b1
-68
-00
-c9
-6d
-c1
+03
+bf
+20
+74
 00
-80
 00
-24
-2c
-04
-c0
-24
-37
-84
-c0
+70
+4b
+54
+01
 20
 40
 04
-ac
+60
+20
+20
+65
+d1
 20
 40
 04
-dc
+60
+20
+20
+65
+df
+da
 20
+4b
+54
+da
+40
+00
+65
+d8
 40
-04
-e6
-68
 00
-c9
-30
-1f
-e0
-fe
 01
+20
 60
 00
-c9
-30
-68
 00
-c9
-41
-c0
-ff
-84
-af
+70
+4b
+3e
+00
 20
 40
 04
-46
+bd
 58
 00
 00
-00
+07
 60
 01
-49
-37
-60
-00
-c9
-39
+44
+96
 60
-00
-ca
-65
+01
+44
+98
 70
-49
-36
-00
-20
-60
-00
+47
+c4
 00
-df
-20
+70
+47
+9c
 00
-04
-d8
-a0
-48
-cd
-20
-20
-7e
-c6
 20
 40
 04
-e3
-20
+08
 20
-05
 40
-78
-57
-fc
-00
+58
+16
 20
 40
-06
-a5
+41
+d9
 68
 00
-c9
-6d
-c0
-00
-84
-be
-18
-00
-2a
-00
-68
-02
-49
-59
-98
+cb
+4a
+20
+7a
 00
-12
 00
-68
-08
-80
-17
-20
-40
-29
-1f
 20
-40
-29
-24
 20
-40
-06
-60
+05
+dc
+70
+0a
+99
+12
 20
-57
-86
-9d
 20
-60
+7d
+8f
+68
 00
+c7
+9f
+c0
 00
+84
+77
+70
+46
+c6
+14
 20
-40
-06
-9d
 20
+04
+79
 20
+40
 04
-a0
-68
-00
-c9
-39
-1f
+71
+70
+46
+c6
+14
+d8
 e0
-fe
-01
-60
-00
-c9
-39
-68
 00
-c9
+01
+20
+20
 41
-c0
-ff
-84
-d4
+b9
 68
-08
-c9
-3a
-18
-40
-84
 01
-60
-08
-c9
-3a
-68
+45
+09
+c1
 00
-c9
-76
-98
-46
-7e
 00
-24
-3a
-04
-96
-68
 00
-ca
 68
-c0
-01
+00
 84
-2f
-68
+41
+1f
+eb
+7e
 00
-ca
-65
 1f
-e0
-fe
+e6
+7c
+0c
+20
+21
+04
+86
+58
+00
+00
+09
+60
 01
+44
+96
 60
-00
-ca
-65
-c0
 01
-04
-24
+44
+98
 20
 40
 04
-1b
+71
+20
+20
+06
+16
 70
-49
-76
+4b
+53
 01
 20
 20
+06
+6f
+20
+40
+03
+23
+20
+40
 04
-95
-68
-00
-c9
-39
-c1
-ff
-80
+a0
+d8
+e0
 00
+03
+20
+40
+43
+d2
 70
-49
-39
+46
+a7
 00
 20
+40
+40
+5d
 20
+40
 04
+90
+20
+20
+65
+d1
 da
-58
-00
+20
+4c
+05
+da
+40
 00
+5b
+d8
+40
 00
+04
+20
 60
-01
-49
-37
-70
-0a
-99
-3a
+00
+00
 20
+40
+04
+bd
+70
+4d
+1d
+00
 20
-7d
-86
+40
+03
+23
 20
 40
-05
-af
+02
+30
 68
 00
-c9
-2f
-20
-7a
-00
-00
-98
+cb
+54
+c1
+81
 00
-72
 00
-d8
-c0
-48
-ad
-d8
-a0
-49
-0f
 20
 20
-7f
-01
-70
-4a
-6d
-01
+34
+0a
 70
-4a
-6a
-00
-20
-60
-00
+41
+bd
 00
 68
 00
-ca
-6a
+cb
+40
+c0
+7f
+83
 1f
-e0
-fe
-01
-60
-00
-ca
-6a
 20
-60
-00
-00
-68
-00
-ca
-6a
+40
+43
+16
+20
+20
+03
 1f
-e6
-7c
-02
-24
-41
-04
-f2
-68
+70
+4b
+55
 00
-ca
-6a
-c1
+58
 00
 00
 00
-1f
-e0
-ff
-ff
 60
-00
-ca
-6a
+01
+cb
+47
 20
-60
-00
-00
-70
-4a
-6a
-03
+40
+41
+c6
 20
-60
-00
-00
-da
+40
+05
+3e
 20
-49
-f3
+40
+02
+0d
 20
 40
-06
-0c
-60
-08
-ca
-6b
-58
-00
-00
-82
-c5
-13
+03
+4b
+20
+40
+3f
+8d
+70
+4b
+54
+02
+20
+20
 04
-fa
-58
-00
-00
-80
-98
-46
-7c
-00
-24
-21
-05
-12
+5c
 68
+12
+01
+38
+79
+20
+7e
+1a
+60
+12
 00
-ca
-6a
-1f
-e6
-7c
-02
-24
+4c
+20
+40
+2c
 21
+20
+40
+04
+bd
+20
+40
+74
+bd
+20
+40
 05
-02
-68
-00
-ca
-6a
-c0
-00
-05
-13
+47
 20
-60
-00
-00
+40
+3e
+9f
+20
+40
+03
+03
 68
+04
 00
-ca
-6a
-c1
-90
-00
-00
-70
-4a
-6a
+a1
+79
+3f
+fe
+08
+60
+04
 00
+a1
 68
 08
-ca
-6b
-58
-00
-00
-77
-c5
-13
+c6
+e7
+20
+40
 05
-09
-58
-00
-00
-75
-98
-46
-7c
-00
-24
-61
-00
-00
+b8
 68
+04
 00
-ca
-6d
-c0
-00
-05
-1a
-1f
-e0
-ff
-ff
-60
-00
-ca
-6d
-c0
-00
-05
-1a
-70
-41
-de
-00
+a1
+79
 20
+7e
+28
 60
+04
 00
-00
-70
-4a
-6a
-00
+a1
+68
+08
+c6
+f7
+20
+20
+67
+ed
 68
 00
-ca
-6d
-c0
-01
-05
-18
-1f
-e0
-fe
-01
-60
-00
-ca
-6d
-c0
-00
-85
-10
-70
-41
-de
-02
+cb
+0c
 20
-60
+7a
 00
 00
 70
-41
-de
-04
-20
-60
-00
+4b
+0c
 00
-79
 20
-00
-26
+20
+03
+59
+20
+40
+04
+d8
 20
 40
 05
+25
 20
-70
-49
-41
-01
+40
+05
+05
 20
-60
-00
-00
-70
-41
-de
+40
+05
+0a
 20
-70
-49
-30
-00
-70
-49
-3b
-4e
-68
-02
-49
-3d
+40
+42
+34
 20
+40
+04
+e5
 20
-06
-1d
-68
-00
-c9
-36
-c0
-00
-ff
-e7
-68
-00
-c9
-41
-c0
-00
-85
-2c
-c0
-01
-05
-2f
-c0
-01
-85
-32
+40
+04
+ec
 20
+40
+04
+d1
 20
-2a
-8c
-70
-49
-41
-11
-70
-11
-9e
-aa
+40
+04
+f4
 20
+40
+04
+f7
 20
-05
-34
-70
-49
-41
-12
-70
-11
-9e
+40
+04
+fd
+20
+40
+04
+ce
+20
+20
+42
+3a
+da
+60
+4b
 55
+da
+40
+04
+9b
 20
 20
-05
+33
+6d
+da
+60
+46
+ae
+da
+40
+04
+d4
+20
+20
+33
+74
+68
+00
+cb
+47
+24
+3a
 34
+0a
 70
-49
-41
-13
+4b
+56
+01
+20
+20
+05
+19
+68
+00
+cb
+47
+20
+7a
+00
+00
+da
+60
+4b
+48
+da
+40
+04
+dd
+20
+20
+33
+6d
 70
-11
-9e
-22
+4b
+48
+01
 68
 00
-c9
-32
+cb
+49
+1f
+e0
+fe
+01
 1f
 e1
 7e
-07
+01
 60
 00
-91
-9f
-68
-02
+cb
 49
-68
+c0
+00
+05
+dc
+c0
+00
+85
+ed
+20
 60
-02
-11
-a0
-70
-11
-a4
+00
 00
 da
-20
-11
-9e
-d8
+60
+4b
+3b
+da
 40
-00
-07
+04
+e8
 20
-40
-05
-aa
 20
-40
-06
-2b
+33
+6d
+58
+36
+ee
+80
+60
+01
+cc
+0c
+70
+4b
+39
+01
 20
+60
+00
+00
+da
+60
+4b
+4e
+da
 40
 04
-6e
+ef
 20
 20
-7f
-e7
+33
+74
+70
+4b
+4d
+01
 68
-00
-c9
-41
-c1
-7f
-80
-00
-c0
-08
-85
+01
 46
-c0
-09
-05
-48
-c0
-09
-85
-4a
+ae
 20
-60
+7a
 00
 00
 70
-49
-41
+46
+ae
 02
 20
-20
-04
-a6
-70
-49
-41
-03
-20
-20
-04
-a6
-70
-49
-41
-ff
-70
-0a
-99
-39
-20
+60
+00
+00
+da
+60
+46
+c6
+da
 40
-7d
-86
-68
-02
-49
-11
+3d
+60
+20
 20
+33
+6d
+da
+60
+4b
+3a
+da
 40
-06
-1d
+04
+fa
 20
 20
-04
-a6
-79
-3f
-80
-26
-70
-49
+33
 6d
-00
-20
-40
-05
-99
-70
-48
-aa
-02
 68
 00
-c9
-41
-c1
-ff
-80
+c7
+c5
+60
 00
+c1
+72
 20
-40
-05
+20
+04
+ea
 68
-58
-00
 00
-00
-60
-01
-49
-5e
-20
-40
-2a
-fa
+cb
+3e
 20
+7a
 00
-07
-d0
-68
 00
-c9
-5e
-c0
-7f
-84
 da
-20
+60
+4b
+3c
+da
 40
-04
-b1
-24
-2c
 05
-71
-24
-37
-85
-71
-79
+02
 20
+20
+33
+6d
+68
 00
-26
-58
-00
-00
+cb
+3d
+24
+7a
 00
-60
-01
-49
-5e
-70
-48
-0c
 00
-70
-0a
-99
-3c
 20
-40
-7d
-86
 20
+5b
+f5
+da
+60
+48
+07
+da
 40
-04
-ac
+05
+08
 20
 20
-00
-66
+33
+6d
 70
-11
-9e
-ff
-68
+48
+06
 00
-c9
-32
+20
 60
 00
-91
-9f
+00
 68
-02
-49
+00
+c6
+b6
+20
+3a
+05
+12
 68
+00
+c6
+85
 60
-02
-11
-a0
-d8
-40
 00
-06
+c6
 da
+68
+00
+c6
+db
+c1
+00
+80
+00
+70
+46
+db
+01
 20
-11
-9e
+20
+43
+ca
 20
 40
 05
-aa
+14
 20
 20
-06
-2b
-68
-01
-49
-5e
-1f
-e0
-fe
-01
+43
+b0
+da
 60
-01
-49
-5e
-20
+46
+da
+da
 40
-06
-3d
+05
+17
 20
 20
-05
-59
-79
-3f
-80
-26
-70
-49
+33
 6d
+68
 00
-70
-48
-aa
-01
-20
-40
-05
-96
-20
-40
+cb
+47
+24
+3a
 05
+22
+28
+0f
+fe
+26
+20
+40
+85
+20
 68
-70
-49
-5e
 00
+cb
+54
+1f
+e6
+7c
+ff
+20
+42
+85
+20
 20
 40
-2a
-fa
+05
+e0
+20
+20
+43
+b8
+70
+4b
+4b
+01
 20
+60
+00
+00
+58
 00
 07
-d0
+08
+60
+01
+46
+ae
+20
+60
+00
+00
 68
 00
-c9
-5e
+ca
+ff
+20
+7a
+00
+00
+68
+00
+cb
+02
 c0
-7f
-84
-da
+00
+85
+2a
 20
+60
+00
+00
+da
+60
+4b
+05
+da
 40
-04
-b1
-24
-2c
 05
-8a
-24
-37
-85
-8a
+2d
 20
-40
-04
-dc
 20
-40
-00
-d4
+33
+6d
 68
-02
-49
-59
+00
+cb
+04
+60
+00
+cb
+05
 68
-0a
-49
-3d
-98
-46
-7c
 00
+cb
+08
 20
-22
-85
-1c
-20
-20
+3a
 05
-60
+35
 68
 00
-c9
-5e
+cb
+06
+20
+3a
+05
+3e
 1f
 e0
-fe
-01
+ff
+ff
 60
 00
-c9
-5e
+cb
+06
 68
 00
-ca
-6f
-1f
-e0
-fe
+cb
 01
-1f
-e1
-7e
-03
-60
-00
-ca
-6f
-c0
-00
-05
-a0
 c0
 00
 85
-a2
+40
 c0
-01
+00
 05
-a4
-c0
-01
-85
-a2
+39
 20
 60
 00
 00
+70
+4b
+01
+01
+68
+08
+cb
+00
 20
 40
-00
-d4
 68
-02
-49
+0e
 68
-60
-02
-49
-59
-20
-40
-06
-1e
-20
+08
+cb
+00
 20
-06
-3d
-70
-41
-de
 20
+68
+25
 58
 00
-0f
-0f
-60
-01
-49
-59
-e0
-a1
 00
 00
-20
-20
+60
+01
+cb
 05
-99
-20
-40
+68
+00
+cb
+06
+24
+3a
 05
-96
-20
+45
+70
+4b
+0a
+00
+70
+4a
+ff
+00
+70
+4b
+02
+00
+70
+4b
+07
+00
+70
+4b
+01
+00
+68
+08
+cb
+00
+79
 20
-05
-7c
+04
+07
 20
 40
-05
+68
+0e
+68
+08
+cb
+00
 20
 20
-20
-05
-7c
-20
-40
-05
-9b
-20
-20
-05
-7c
-79
-3f
-80
-26
-20
-40
-53
-ce
-d8
-e0
-00
-03
-20
-20
-43
-d2
-60
-08
-c9
-31
-18
-42
-72
-00
-d8
-a0
-48
-cd
-1a
-22
-0c
-00
-20
-20
-7f
-01
 68
+29
+70
+4b
+0a
 00
-c8
-ac
-1f
-e9
-7e
-00
-60
-00
-c9
-2f
-1f
-e0
-fe
-01
-d8
-c0
-48
-ac
-98
-c0
-8c
-00
-e8
-c1
-80
-00
-60
+70
+4b
+04
 01
-c9
-6e
-68
-00
-c8
-ac
-1f
-e3
-7e
-00
-1f
-e1
-7e
-03
-60
-00
-c9
-74
-20
-60
-00
-00
-60
+70
+4b
 08
-80
-17
-18
-40
-a2
-00
-20
-40
-29
-81
-58
-00
-05
 00
-20
-40
-2a
-8f
 70
-89
+4b
 06
 01
 70
-89
-00
-3c
+4b
+05
+05
 70
-89
+4a
+ff
 01
-e0
-20
-00
-00
-0a
 70
-89
+4b
 02
 01
-70
-89
-02
-3d
 20
+60
 00
 00
-0a
 70
-89
+4b
+04
 03
-b7
 20
+20
+05
+4e
+68
 00
-00
+cb
 0a
-70
-89
-02
-7d
-68
+24
+7a
 00
-c1
-de
-c0
 00
-05
-d1
-c0
-01
-05
-d6
-c0
-02
-05
-db
-c0
-10
-05
-ea
-20
 20
-05
-d1
 20
-40
 05
-e0
-70
-89
-55
-d0
+3e
 70
-89
-56
-e0
+4b
+06
+05
 70
-89
-58
-6c
-20
-20
-29
 4b
+04
+0a
+20
 20
-40
 05
-e5
-70
-89
-55
-d0
+5d
 70
-89
-56
-e0
+4b
+04
+05
 70
-89
-58
-3c
-20
+4b
+08
+01
 20
-29
-53
 20
-40
 05
+50
+68
+00
+c6
 e0
-70
-89
-55
-d0
-70
-89
-56
 c0
-70
-89
-58
+03
+05
 6c
+c0
+03
+85
+6c
+c0
+01
+05
+7c
+68
+00
+c7
+7a
+1f
+e6
+7c
+01
 20
-20
-29
-5b
-70
-89
-4c
-5b
-70
-89
-4d
-96
-70
-89
-4e
-2c
-70
-89
-4f
-46
-20
-60
+42
+85
+6a
+68
 00
+c7
+7a
+c0
 00
+3d
+8a
+c0
+01
+bd
+8e
+20
+20
+3d
+8c
 70
-89
-4c
-fb
-70
-89
-4d
-ef
-70
-89
-4e
-ec
-70
-89
-4f
-5e
+47
+7a
+02
 20
 60
 00
 00
-70
-89
-56
-c2
-70
-89
-55
-d0
+68
+00
+c7
+7a
+1f
+e6
+7c
+01
 20
-60
+42
+85
+6a
+68
 00
+c7
+7a
+c0
 00
-18
+05
+76
+c0
+01
+85
+79
+68
 00
-2a
-08
-20
+c7
+81
+1f
+e0
+ff
+ff
+60
+00
+c6
+b5
 20
-28
-fa
 20
-40
-7f
-e9
+3d
+c1
 68
-0a
-49
-52
-1c
-42
-7e
-00
-98
-46
-7c
 00
-24
-41
-2d
-18
+c7
+7f
 1f
-e2
-24
+e0
+ff
+ff
+20
+20
+05
+74
+68
 00
+c7
+82
+1f
+e0
+ff
+ff
+20
+20
+05
+74
 68
-02
-49
-52
+00
+c7
+7a
+20
+5a
+05
+6a
 68
-08
-c9
-56
-98
-40
-84
 00
-1a
-42
-7e
+c7
+7a
+c0
 00
-98
-46
+bd
+88
+c0
+01
+85
+82
+20
+20
+3d
+8e
+58
+00
+00
+05
+20
+20
+3d
+be
+78
+54
 7c
 00
-24
-61
+58
+00
 00
 00
-79
-3f
-fe
-1c
 60
-02
-49
-52
+03
+46
+9b
 20
+40
+05
+8d
 20
-7f
-e7
+40
+40
+79
 20
 40
-29
-bb
+40
+7e
 20
-7a
+40
+05
+90
+24
+74
 00
 00
-68
-08
-c9
-eb
-da
 20
-0d
-9e
 20
-40
-06
-05
-60
-08
-c9
-eb
+3f
+a0
 20
-60
-00
-00
-1a
-22
-7e
-00
-98
 40
-8a
-00
-68
+3f
+c0
+78
+54
+7c
 00
-80
-18
-e0
-a0
-80
-00
-18
-40
-84
-01
-18
-41
-04
-07
 20
-60
-00
-00
-d8
+20
+3f
+e7
+20
 40
-00
-00
-df
+05
+92
+20
 20
-00
-08
-1a
-22
-0c
-00
-e8
-c0
-80
-00
-98
 40
-84
-00
-c2
-00
-06
-0f
-18
-49
-7e
-00
-1f
-e2
-04
-00
-c6
-93
+9a
+da
+20
 00
 00
-1f
-e6
-fc
-0a
 20
 40
-7f
-86
-18
-07
-fe
-00
-1f
-f2
-7e
-00
-18
-07
-04
-00
+05
 98
-41
-84
-00
 20
-60
-00
-00
+40
+05
+96
 20
-60
-00
-00
-60
-02
-49
-59
-da
 20
-00
-00
-df
+40
+8e
 20
-00
-04
-d8
-c0
-49
-59
-e8
-c0
-80
-00
-9a
+40
+05
+a8
 20
-a2
-00
-c2
-00
-06
-21
-1a
-22
-7e
-00
-60
-01
-49
-e2
+20
+05
+ae
 68
-00
-c9
+08
+c6
 e2
+20
+40
+05
+b3
 68
 08
-c9
-e3
-98
-40
-fe
-00
-60
-00
-c9
-e4
+c6
+e2
 20
-60
-00
-00
-68
-00
-c9
-31
-1f
-e0
-fe
-02
-60
-00
-c9
-33
-68
-00
-c9
-32
-60
-00
-c8
-ed
+40
 68
-00
-c9
-31
-1f
-e9
-fe
+1d
+79
+20
+a2
 00
 68
 08
-c9
-30
-18
-41
-04
-03
-18
-43
-84
-00
-98
-41
-fe
-00
+c6
+e3
+20
+40
+05
+b3
 68
 08
-c9
-6d
-98
+c6
+e3
+20
 40
-fe
-00
-e0
-a0
-80
-00
 68
-00
-c9
-31
-98
-00
-72
-00
-d8
-c0
-48
-cd
-20
+1d
+79
 20
-7f
+a2
 01
 68
 08
-c9
-3c
+c6
+e4
 20
 40
-06
-41
-60
+05
+b3
+68
 08
-c9
-3c
+c6
+e4
+20
+40
+68
+1d
+79
+20
+a2
+02
 20
 60
 00
 00
-20
-40
-06
-45
-18
+68
+08
+c6
+e5
+20
 40
-84
-01
-18
-41
-04
-03
+05
+b8
+68
+08
+c6
+e5
 20
-60
-00
-00
+40
 68
-00
-c9
-59
-1f
-e1
-7e
+1d
+7d
+20
+a2
 03
-1f
-ef
+20
+20
+05
+b3
+68
+08
+c6
+e6
+20
+40
+05
+b8
+68
+08
+c6
+e6
+20
+40
+68
+1d
+7d
+20
 a2
 04
-58
-00
-49
-42
-9a
+79
+20
+04
+07
+d8
+a0
+80
+78
 20
-fe
-00
-98
 40
-8c
-00
-e8
-c0
+68
+30
+79
+3f
+84
+07
+20
+20
+05
+bc
+79
+3f
+84
+07
+d8
+a0
 80
-00
-60
-00
-c9
-3b
+78
 20
-60
-00
+40
+68
+30
+79
+20
+04
+07
+d8
+a0
+80
+7c
+20
+20
+68
+0a
+28
+0f
+fe
+26
+20
+40
+82
+30
+70
+46
+b4
 00
-78
-44
-fc
+68
 00
-78
+cb
+56
+20
+5a
 43
-fc
-00
+86
 58
-55
-55
-55
-98
 00
-1e
 00
-68
 00
-c9
-3b
-1f
-ed
-84
+60
+01
+46
+b0
+20
+20
+42
+6f
+20
+40
+03
+23
+70
+4b
+3d
 00
-79
+70
+4b
+4a
+01
+70
+47
 20
-04
 01
-18
-43
-1c
+70
+47
+9c
 00
-20
+68
+03
+4b
+41
 60
-00
-00
+03
+44
+a0
+70
+4b
+40
+5a
 20
 40
-53
-c4
-68
-02
-49
-59
-98
-00
-12
-00
+03
+7b
 20
 40
-29
+34
 18
 68
-08
-c9
-3b
-20
-40
-29
-1f
+01
+46
+87
+60
+01
+46
+ac
+70
+01
+6d
+06
 58
 00
-05
 00
+00
+60
+01
+46
+b0
+60
+01
+46
+ae
 20
 40
-2a
-8f
+05
+e9
 20
 40
-29
+43
+ca
+68
+00
+cb
+4b
 24
+5a
+05
+dc
 20
 40
-06
-4e
-78
-57
-fc
-00
-78
-26
-fc
-00
-78
-30
-fc
-00
-78
-50
-7c
-00
-78
-28
-7c
-00
+42
+c4
+20
+20
+05
+4c
 68
-01
-49
-34
-98
-00
-36
-00
-37
-c1
-84
-00
-24
-2c
-06
-a1
-78
-46
-fc
+03
+4b
+41
+60
+03
+44
+a0
+20
+40
+05
+e0
+20
+20
+7d
+f4
+70
+43
+6f
+1f
+70
+43
+8f
+1f
+20
+40
+05
+e9
+70
+47
+9f
 00
-78
-25
-fc
+d8
+c0
+4b
+1e
+d8
+a0
+43
+7b
+df
+20
 00
-78
-23
-fc
+13
+20
+40
+7f
+01
+20
+20
+57
+b8
+d8
+e0
 00
-78
+07
+20
+20
+43
+ce
+28
+0f
+fe
+26
 24
-fc
+40
+85
+4c
+d8
+e0
 00
+07
 20
 40
-06
-9a
-60
-00
-c9
-e5
-68
-08
-c9
-e4
-98
-46
-7c
-00
-24
-22
-86
-9d
+43
+d2
 20
 40
-06
-9a
-60
+03
+81
+70
+47
+9f
 00
-c8
-ab
-68
+70
+43
+6f
 00
-c9
-77
+70
+43
+8f
 1f
-e6
-7c
-02
 20
-22
-86
-7c
-68
-00
-c8
-ab
-68
-08
-c9
-32
-a8
-40
-0e
-00
-24
 20
-86
-9d
+7d
+f4
 20
 40
-06
-9a
-e0
+03
+81
+d8
 a0
-80
-00
-1f
-e9
-7e
+43
+70
+df
+20
 00
-1f
-e1
-72
-1f
+0b
 20
-22
-86
-84
+40
+7f
+01
+20
+20
+57
+b8
 20
 40
-06
-9a
-e0
-a0
-80
+05
+56
+58
 00
-c2
 00
-06
-81
-18
-a2
-22
 00
+60
+01
+46
+ac
+70
+4b
+0c
+01
 20
 40
-06
-9a
-60
-00
-ca
-6c
-1a
-22
-0a
+03
+54
+20
+20
+42
+cb
+68
 00
-09
-80
+c5
+0f
+1f
+e0
+fe
+01
+60
 00
-18
-78
-28
-7c
-00
-db
-60
+c5
+0f
+c0
 06
-64
-1f
-ef
-7e
+53
+95
+20
+40
+55
+aa
+20
+40
+56
+1e
+20
+40
+06
+e6
+20
+20
+53
+8f
+68
 00
+80
+16
 1f
-f1
-7e
-00
 e0
-a1
+fe
+01
+60
+00
 80
+16
+c1
+94
 00
-78
-45
-fc
 00
-20
-23
-06
-9d
-78
-37
-fc
+70
 00
-68
+16
+25
+20
+60
 00
-80
-17
-1f
-e0
-a2
 00
 20
 40
 29
-81
-78
-46
-fc
-00
+bb
 20
 40
-29
-18
-68
 00
-ca
-6c
 1f
-e2
-22
-00
+20
+20
+54
+a3
 20
 40
-00
-1d
+06
+18
 20
+20
+55
+7d
+68
+00
+c7
+c5
 60
 00
+c1
+72
+70
+47
+c4
 00
-09
-80
+20
+60
 00
-08
-19
-89
-7e
 00
+70
+47
+c4
+01
 20
 60
 00
 00
-78
-4d
-fc
+68
 00
-78
-45
-fc
+c3
+d6
+1f
+e6
+7c
+0c
+24
+21
+06
+16
+68
+00
+c3
+d8
+68
+08
+c7
+c5
+98
+46
+7c
 00
 20
-40
-26
-4d
-20
-60
+21
+06
+12
+68
 00
+c3
+d8
+60
 00
+c1
+72
 20
 20
 06
-9d
-20
-40
-29
-18
+14
 68
-08
-c9
-3b
-20
-20
-29
-33
-20
-40
-53
+00
+84
+3f
 c4
-68
-02
-49
-59
-98
+03
 00
-12
 00
 20
 40
 06
-4e
-20
-40
-06
-a2
-79
-20
-2a
+27
+24
+74
 00
-78
-2e
-fc
 00
+20
+20
+55
+a0
 78
-30
+34
 7c
 00
-78
-50
-fc
-00
-19
-31
-7e
-00
-1f
-ec
-fe
+68
 00
+84
+5a
 1f
 f1
 fe
 00
-08
+c1
+87
+80
 00
-86
-28
-78
-4e
-fc
+68
 00
-78
-2d
-fc
+84
+60
+1f
+f1
+fe
 00
-78
-23
-fc
+c1
+80
 00
-78
-24
-fc
 00
+20
+20
+7f
+e9
 68
 00
-c9
-e4
-08
-00
+84
+56
+c2
+82
 86
-08
+43
+20
+40
+06
+d8
 68
 00
-c9
-33
-98
-00
-72
-00
-d8
-c0
-48
-ed
-e8
-c0
-80
-00
-08
-00
-86
-08
-c2
-00
-06
-bb
-78
+c7
+8e
 24
-7c
-00
-08
+3a
+06
+39
+68
 00
-86
-18
-78
-44
-7c
+84
+3f
+c3
+02
+06
+3d
+68
 00
-37
-d3
 82
-00
+da
 20
-00
-00
+3a
+06
+3d
+20
+20
+56
 64
-78
-4e
-fc
-00
-78
-4d
-fc
+68
 00
-20
+c7
+8e
+1f
+e0
+ff
+ff
 60
 00
+c7
+8e
+20
+20
+56
+64
+68
 00
+c4
+c4
+c0
+82
+86
+40
 70
 47
-a4
-07
-70
-47
-a5
-04
+8e
+03
+20
+40
 58
-00
-47
-a4
-60
-01
-42
-18
+92
 20
+5a
+04
+15
 20
-7e
-38
-da
 20
-46
-9a
+56
+22
 20
 40
-7e
-3d
-20
-54
 06
-cf
+45
 20
-60
-00
-00
+20
+06
+51
 68
 00
-c7
+c6
 c5
 1f
-e0
-fe
-01
-60
+e1
+7e
+03
+c1
+81
+80
+00
+68
 00
 c7
-c5
+c1
 20
-60
+7a
 00
 00
-da
+68
+00
+c3
+dd
 20
-46
-9a
+7a
+00
+00
+68
+00
+c3
+dc
+79
 20
-40
 7e
-54
+04
+60
+00
+c3
+dc
 20
-34
-06
-d7
+40
+56
+50
 20
 60
 00
 00
 20
-40
-56
-52
+20
+06
+dc
 68
 00
 c7
+9f
+20
+7a
+00
+00
+68
+00
+c6
 c5
 1f
-e6
-7c
+e1
+7e
+03
+c1
 01
-24
-41
-56
-50
-68
+80
 00
-c7
-c5
+70
+46
+c6
+0a
 20
-7a
+60
 00
 00
-1f
-e0
-ff
-ff
-60
+c6
+07
+80
 00
-c7
-c5
-20
 20
-3f
+40
+58
 90
-50
-67
-aa
-55
-08
-00
-a1
+24
+7a
 00
 00
+68
 00
+82
+d9
+1f
+e1
+7e
+03
+60
 00
+c5
+0c
+e8
+c0
+80
 00
+1f
+e1
+7e
+1f
+60
 00
+c5
+0b
+20
+7a
 00
 00
+18
+c2
+7e
 00
-aa
-55
+60
 01
+45
+0d
+68
 00
-6c
-0c
-ff
-aa
-55
-0a
-00
-9e
-11
+c5
+0c
+c0
+01
+86
+68
+20
+20
+56
+8d
+68
 00
+82
+db
+c0
 00
+06
+6c
+c0
 00
+86
+73
+20
+20
+5c
+65
+20
+40
+5c
+7b
+68
 00
+cb
+53
+20
+7a
 00
 00
+68
 00
+c3
+d8
+60
 00
+c1
+72
+60
 00
+c7
+c5
+20
+60
 00
-aa
-55
-01
 00
+e8
+c2
+80
 00
-40
+60
 02
-aa
-55
-0e
+c3
+ce
+e8
+c1
 00
-10
-40
+00
+60
+01
+04
+5f
 20
-02
+20
+5c
+8a
+e8
+c1
 00
 00
+c0
 02
-00
 06
-00
-10
+7c
+c0
+03
 06
-00
-00
-48
-1c
-aa
-55
-0b
-00
-27
+99
+20
+20
+56
+98
+20
 40
-02
-08
-04
-80
-02
-c8
-04
+7e
+a5
+20
+40
+06
+52
+20
+40
+7e
+9f
+e8
+c1
 80
 00
-00
-10
-aa
-55
+60
 01
+84
+77
+c0
+08
+06
+8b
+1f
+ec
+84
 00
-3f
+18
+46
+7c
+24
+20
+21
+58
+ad
+d8
 40
-04
-aa
-55
-02
-00
-91
+47
+c6
+60
+09
+44
+bc
+20
 40
+58
+ad
+58
+00
+8e
+7a
+60
 01
-42
-aa
-55
-06
+44
+bc
+20
+60
 00
-a0
+00
+20
 40
-45
-ab
-86
-12
-22
-51
-aa
-55
+59
+fa
+20
+40
+58
+79
 18
+c0
+8c
+07
+e8
+c0
+80
 00
-ad
-40
-12
+c1
+88
+80
+00
+18
+c0
+8c
+05
+e8
+c1
 00
 00
-02
+d8
+40
+18
 12
+98
+46
+7c
 00
+24
+62
+80
 00
-02
-00
+18
+c0
+8d
+fc
+58
 00
-20
 00
+2b
+e0
+c1
 00
 00
 20
+60
 00
 00
-00
+e8
+c0
 80
-04
-00
-08
-93
-47
-aa
-55
-01
-00
-d1
-40
-01
-aa
-55
-0b
-00
-72
-41
-20
 00
+c0
 00
-8f
-1f
-ca
-00
-0a
-0b
-ef
-07
-aa
-55
-0a
-00
-de
-41
-01
-00
-00
-00
-00
-0e
-00
+86
+9d
+c0
+02
+86
+9f
+20
+20
+5a
+f5
+70
+4b
+3d
 01
+20
+20
+5b
+09
+20
+40
+5b
+5a
+68
 00
-02
-aa
-55
+84
+3f
+79
+3f
+fe
 05
+60
 00
-03
-42
-90
-1f
-00
+84
+3f
+20
+20
+5c
+8e
+68
 00
+80
+16
+c0
+93
+d6
+f2
+20
+40
 06
 aa
-55
-04
-00
-11
-42
-80
-00
+d8
+e0
 00
-ff
-aa
-55
-03
 00
-1a
-42
+68
 01
-13
-47
-aa
-55
-02
+44
+82
+20
+20
+7f
+08
+18
+0a
+7e
 00
-2d
-42
-02
-32
-aa
-55
+d8
+40
 01
-00
-3a
-42
-14
-aa
-55
-02
-00
+ff
+98
 41
-42
-00
-84
-aa
-55
-0c
+7e
 00
-6f
-43
 1f
-02
-01
-05
-03
-03
-12
-18
-03
-19
-c2
-03
-aa
+e0
+fe
+fa
+20
+20
+3c
+be
+78
 55
-0e
+fc
 00
-8f
-43
-1f
-0c
-09
-42
-54
-35
-2e
-31
 20
+37
+06
+b2
+24
+36
+d8
+06
+20
+40
+2b
+cb
+68
+01
+40
+c1
+60
+01
+04
 4d
-6f
-75
-73
-65
-aa
-55
-0c
+68
 00
-af
-43
-0b
-42
-54
-35
-2e
-31
+c6
+c5
+2f
+e0
+06
+03
+24
 20
-4d
-6f
-75
-73
-65
-aa
-55
-02
+ab
+de
+20
+20
+57
+fb
+68
 00
-6f
-44
-19
+c7
+9f
+24
+7a
 00
-aa
-55
-01
 00
-8d
-44
-07
-aa
-55
-08
+68
 00
-96
-44
-07
+84
+78
+1f
+e6
+7e
+1a
+24
+62
+80
 00
-07
+70
+46
+c6
 00
 20
-00
-2c
-01
-aa
-55
-06
-00
-a0
-44
-8e
-b1
+20
+3d
+60
+20
+40
+62
+bc
+24
 3a
-0e
-8e
-ed
-aa
-55
-01
-00
-e5
-44
-50
-aa
-55
-02
+7d
+db
+68
 00
-fa
-44
-22
+8a
+99
+c5
+84
+fd
+d6
+c0
+09
+06
+c6
+20
+20
+7d
+ca
+20
+40
+58
+90
+24
+7a
 00
-aa
-55
-0c
 00
-15
-45
-0b
-42
-54
-33
-2e
-30
 20
-4d
-6f
-75
-73
-65
-aa
-55
-01
-00
+20
 5a
-45
-0a
-aa
-55
+bf
+68
+10
+80
+77
+1f
+e1
+7e
+fd
+60
+10
+80
+77
+68
+18
+80
+73
+18
+41
+84
+02
+60
+18
+80
+73
+20
+40
+63
+ee
+18
+41
 04
+fd
+20
 00
-5a
-46
-01
-03
 00
-04
-aa
-55
-01
+0d
+20
+40
+63
+f2
+60
+18
+80
+73
+20
+60
 00
-62
-46
-03
-aa
-55
-05
 00
-84
-46
+70
+4d
+19
 01
-1e
-ff
-08
-07
-aa
-55
-07
-00
-a5
-46
-07
-00
-00
-20
-00
 70
-17
-aa
-55
-05
+4d
+16
 00
-d2
-46
-02
+20
+60
 00
 00
-92
-80
-aa
-55
-1e
+68
 00
-db
-46
+cd
+16
+1f
+e0
+fe
 01
-ff
+60
 00
+cd
+16
+20
+60
 00
 00
+68
 00
+cd
+16
+1f
+e6
+7c
 02
+24
+41
 06
-08
-04
-06
-04
-08
-1b
-1c
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
+e4
+68
+00
+cd
+16
+c1
+00
+00
+00
+1f
+e0
 ff
 ff
+60
 00
+cd
+16
+20
+60
 00
-05
-ff
-aa
-55
-01
 00
+70
+4d
+16
 03
-47
-02
-aa
-55
-06
+20
+60
 00
-09
-47
-96
 00
-5a
+68
+01
+46
+82
+c3
+85
+80
 00
-64
+c3
+83
+80
 00
-aa
-55
-08
+c3
+83
 00
-20
-47
-01
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-aa
-55
-0c
 00
-7f
-47
-01
+da
+20
+4c
+9f
+20
+40
 02
-03
-04
-15
-1a
-2a
-3f
-04
-05
-07
+e6
+60
 08
-aa
-55
-04
+cd
+17
+58
 00
-8c
-47
-01
-02
-03
-04
-aa
-55
-0e
 00
-92
-47
-03
-4b
-ba
-55
-d0
-56
-e0
-57
-88
+82
+c5
+13
+06
+f0
 58
-3c
-59
-10
-ff
-aa
-55
-41
 00
-c9
-47
-20
-25
 00
-02
-03
-28
-01
-12
-26
+80
+98
+46
+7c
 00
-02
-4d
-2a
+24
+21
 07
+08
+68
+00
+cd
+16
+1f
+e6
+7c
+02
+24
+21
+06
+f8
+68
 00
+cd
+16
+c0
 00
+07
+09
+20
+60
 00
 00
+68
 00
+cd
+16
+c1
+90
 00
 00
-27
+70
+4d
+16
 00
-02
-02
-29
-02
+68
+08
+cd
+17
+58
 00
 00
-28
+77
+c5
+13
+06
+ff
+58
 00
-02
-08
-29
-02
-11
-01
-29
 00
-02
-03
-28
-01
-0e
-2a
+75
+98
+46
+7c
 00
-02
-4d
-2a
-07
+24
+61
 00
 00
+68
 00
+cd
+19
+c0
 00
+07
+10
+1f
+e0
+ff
+ff
+60
 00
+cd
+19
+c0
 00
+07
+10
+70
+41
+de
 00
-2b
+20
+60
 00
-02
-08
-29
-02
-11
-02
-aa
-55
-1a
 00
-7f
-48
-05
+70
+4d
+16
 00
+68
 00
-03
+cd
+19
+c0
+01
+07
+0e
+1f
+e0
+fe
 01
+60
 00
+cd
+19
+c0
+00
+87
 06
-ff
-06
+70
+41
+de
+02
+20
+60
 00
-03
 00
-80
-0c
-09
-42
-54
-35
-2e
-31
+70
+41
+de
+04
 20
-4d
-6f
-75
-73
-65
-aa
-55
-08
+60
 00
-98
-48
-07
-02
-35
-12
-22
-aa
-01
 00
-aa
-55
-04
+60
+08
+80
+17
+18
+40
+a2
 00
-32
-49
+20
+40
+29
+81
+58
+00
+05
+00
+20
+40
+2a
+8f
+70
+89
+06
 01
+70
+89
 00
-c0
-12
-aa
-55
-15
+3c
+70
+89
+01
+e0
+20
 00
+00
+0a
+70
+89
+02
+01
+70
+89
+02
 3d
-49
 20
-15
-10
-05
-ff
 00
-13
-2c
-42
-06
-15
-36
-48
-0f
-1a
-3a
+00
+0a
+70
+89
+03
+b7
+20
+00
+00
+0a
+70
+89
+02
+7d
+68
+00
+c1
+de
+c0
+01
+07
+2a
+c0
+02
+07
+32
+c0
+10
+07
+3c
+20
+40
+07
+37
+70
+89
+55
+d0
+70
+89
+56
+e0
+70
+89
+58
+6c
+20
+20
+29
+4b
+70
+89
 4c
-11
-23
-31
+fb
+70
+89
 4d
-aa
+ef
+70
+89
+4e
+ec
+70
+89
+4f
+5e
+70
+89
 55
-03
-00
+d0
+70
+89
 56
-49
-19
-19
-1c
-aa
+e0
+70
+89
+58
+3c
+20
+20
+29
+53
+20
+40
+07
+37
+70
+89
 55
-03
+d0
+70
+89
+56
+c0
+70
+89
+58
+6c
+20
+20
+29
+5b
+70
+89
+4c
+5b
+70
+89
+4d
+96
+70
+89
+4e
+2c
+70
+89
+4f
+46
+20
+60
+00
 00
+70
+89
+56
+c2
+70
+89
+55
+d0
+20
 60
-49
-80
-ee
-36
+00
+00
+18
+00
+2a
+08
+20
+20
+28
+fa
+0a
+a8
 aa
 55
-02
+08
 00
-76
-49
-04
+a1
+00
+00
+00
+00
+00
+00
+00
+00
+00
+aa
+55
 01
-e1
-53
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
-ff
+00
+6c
+0c
 ff
+aa
+55
+0a
+00
+9e
+11
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+aa
+55
+01
+00
+00
+40
+07
+aa
+55
+0e
+00
+10
+40
+20
+02
+00
+00
+02
+00
+06
+00
+10
+06
+00
+00
+48
+1c
+aa
+55
+0b
+00
+27
+40
+02
+08
+04
+80
+02
+c8
+04
+80
+00
+00
+10
+aa
+55
+01
+00
+3f
+40
+04
+aa
+55
+02
+00
+91
+40
+01
+42
+aa
+55
+06
+00
+a0
+40
+34
+78
+22
+56
+18
+10
+aa
+55
+06
+00
+bf
+40
+80
+04
+00
+08
+8f
+47
+aa
+55
+01
+00
+d1
+40
+01
+aa
+55
+0b
+00
+72
+41
+20
+00
+00
+8f
+1f
+ce
+00
+0a
+0b
+ef
+07
+aa
+55
+05
+00
+03
+42
+90
+1f
+00
+00
+06
+aa
+55
+04
+00
+11
+42
+80
+00
+00
 ff
+aa
+55
+03
+00
+1a
+42
+01
+13
+47
+aa
+55
+01
+00
+3a
+42
+14
+aa
+55
+02
+00
+41
+42
+00
+84
+aa
+55
+0c
+00
+6f
+43
+1f
+02
+01
+05
+03
+03
+12
+18
+03
+19
+c2
+03
+aa
+55
+0e
+00
+8f
+43
+1f
+0c
+09
+42
+54
+35
+2e
+32
+20
+4d
+6f
+75
+73
+65
+aa
+55
+0c
+00
+af
+43
+0b
+42
+54
+35
+2e
+32
+20
+4d
+6f
+75
+73
+65
+aa
+55
+02
+00
+6f
+44
+19
+00
+aa
+55
+01
+00
+8d
+44
+07
+aa
+55
+08
+00
+96
+44
+07
+00
+07
+00
+20
+00
+2c
+01
+aa
+55
+06
+00
+a0
+44
+12
+67
+a2
+89
+34
+cb
+aa
+55
+01
+00
+e5
+44
+50
+aa
+55
+02
+00
+fa
+44
+22
+00
+aa
+55
+01
+00
+5a
+45
+0a
+aa
+55
+04
+00
+5a
+46
+01
+03
+00
+04
+aa
+55
+01
+00
+62
+46
+03
+aa
+55
+05
+00
+84
+46
+01
+1e
 ff
+08
+07
+aa
+55
+07
+00
+a5
+46
+07
+00
+00
+28
+00
+70
+17
+aa
+55
+01
+00
+b6
+46
+01
+aa
+55
+05
+00
+d2
+46
+02
+00
+00
+12
+80
+aa
+55
+1e
+00
+db
+46
+01
 ff
+00
+00
+00
+00
+02
+06
+08
+04
+06
+04
+08
+1b
+1c
 ff
 ff
 ff
@@ -8177,7 +7833,24 @@
 ff
 ff
 ff
+00
+00
+05
 ff
+aa
+55
+01
+00
+03
+47
+02
+aa
+55
+08
+00
+20
+47
+01
 ff
 ff
 ff
@@ -8185,8 +7858,206 @@
 ff
 ff
 ff
+aa
+55
+04
+00
+7f
+47
+01
+02
+03
+04
+aa
+55
+0e
+00
+8e
+47
+03
+4b
+ba
+55
+d0
+56
+e0
+57
+88
+58
+6c
+59
+10
 ff
+aa
+55
+41
+00
+c5
+47
+20
+25
+00
+02
+03
+28
+01
+12
+26
+00
+02
+4d
+2a
+07
+00
+00
+00
+00
+00
+00
+00
+27
+00
+02
+02
+29
+02
+00
+00
+28
+00
+02
+08
+29
+02
+11
+01
+29
+00
+02
+03
+28
+01
+0e
+2a
+00
+02
+4d
+2a
+07
+00
+00
+00
+00
+00
+00
+00
+2b
+00
+02
+08
+29
+02
+11
+02
+aa
+55
+05
+00
+00
+4b
+03
+00
+00
+00
+05
+aa
+55
+14
+00
+1e
+4b
+06
 ff
+06
+00
+03
+00
+80
+0c
+09
+42
+54
+35
+2e
+32
+20
+4d
+6f
+75
+73
+65
+aa
+55
+04
+00
+de
+4b
+01
+00
+c0
+12
+aa
+55
+15
+00
+e9
+4b
+20
+15
+10
+05
 ff
-fb
-da
+00
+13
+2c
+42
+06
+15
+36
+48
+0f
+1a
+3a
+4c
+11
+23
+31
+4d
+aa
+55
+03
+00
+02
+4c
+19
+19
+1c
+aa
+55
+03
+00
+0c
+4c
+80
+ee
+36
+aa
+55
+02
+00
+22
+4c
+04
+01
+34
+3a
Index: output/memmap.format
===================================================================
--- /branch/mouse_project/YJX_24G&BLE/output/memmap.format	(revision 1235)
+++ /branch/mouse_project/YJX_24G&BLE/output/memmap.format	(working copy)
@@ -599,6 +599,9 @@
 0x0f9e mem_rssi_noise_ms_buffer
 0x109e mem_rssi_noise_kb_buffer
 0x119e mem_24g_common_temp
+0x11be mem_data_pre
+0x11c0 mem_data_current
+0x11c2 mem_data_sum
 0x4000 mem_patch00
 0x4001 mem_patch01
 0x4002 mem_patch02
@@ -1727,165 +1730,201 @@
 0x4789 mem_3610_dpi_3
 0x478a mem_3610_dpi_4
 0x478b mem_mouse_24g_enter_lpm_enable
-0x478c mem_mouse_3065xy_dpi_seting
-0x478c mem_3065xy_dpi_1
-0x478d mem_3065xy_dpi_2
-0x478e mem_3065xy_dpi_3
-0x478f mem_3065xy_dpi_4
-0x4790 mem_le_rx_window_inc
-0x4792 mem_empty_count
-0x4793 mem_rf_init_data_new
-0x47a0 mem_mouse_clear_sensor_data_flag
-0x47a1 mem_mouse_null_enter_hibernate_flag
-0x47a2 mem_mouse_null_enter_hibernate_timer
-0x47a3 mem_mouse_le_reconnect_flag
-0x47a4 mem_mouse_data_queue
-0x47c5 mem_mouse_data_queue_num
-0x47c6 mem_random_addr_increase_count
-0x47c8 mem_mouse_le_conn_param_reject
-0x47c9 mem_lpm_mult_init
-0x47ca mem_mouse_le_uuid_sup
-0x480a mem_mouse_wheel_trigger
-0x480b mem_mouse_wheel_trigger_timer
-0x480c mem_mouse_long_mult_flag
-0x480d mem_mouse_le_current_mult_timer
-0x480e mem_24g_long_sleep_param_update_timer
-0x480f mem_le_tx_buffer0_omemalloc
-0x482a mem_le_tx_buffer1_omemalloc
-0x4845 mem_le_tx_buffer2_omemalloc
-0x4860 mem_le_tx_buffer3_omemalloc
-0x487b mem_mouse_mode_config
-0x487c mem_mouse_dpi_blink_count
-0x487d mem_mouse_ble_led_on_enable
-0x487e mem_mouse_ble_reconn_enable
-0x487f mem_mouse_device_led_on_timer_init
-0x4880 mem_mouse_device_led_on_timer_count
-0x4881 mem_mouse_g24_led_on_enable
-0x4882 mem_device_state_led_gpio
-0x4883 mem_device_led_blink_flag
-0x4884 mem_mouse_fast_conn_flag
-0x4885 mem_le_adv_swift_pair
-0x4898 mem_le_att_pnp_id_len
-0x4899 mem_le_att_pnp_id
-0x48a0 mem_le_normal_lap
-0x48a6 mem_le_switch_adv_flag
-0x48a7 mem_le_switch_adv_timer
-0x48a8 mem_le_switch_adv_count
-0x48a9 mem_mouse_start_discovery_enable
-0x48aa mem_mouse_mode_swtich_step
-0x48ab mem_24g_rxbuf
-0x48cd mem_24g_txbuf
-0x48ed mem_24g_txpayload
-0x490f mem_24g_rxpayload
-0x492f mem_24g_rxdata_length
-0x4930 mem_24g_pid
-0x4931 mem_24g_datalen
-0x4932 mem_24g_data_type
-0x4933 mem_24g_txlen
-0x4934 mem_24g_rx_window
-0x4936 mem_24g_ensure
-0x4937 mem_24g_txfail_cnt
-0x4939 mem_24g_get_ack_fail
-0x493a mem_24g_retry
-0x493b mem_24g_ch
-0x493c mem_24g_current_ch_number
-0x493d mem_24g_paring_addr
-0x4941 mem_24g_pairing_sm
-0x4942 mem_24g_ch_map1
-0x4946 mem_24g_ch_map2
-0x494a mem_24g_ch_map3
-0x494e mem_24g_ch_map4
-0x4952 mem_24g_tx_btclk
-0x4956 mem_24g_interval
-0x4957 mem_24g_interval_min
-0x4958 mem_24g_interval_max
-0x4959 mem_24g_addr
-0x495d mem_24g_abort_pac
-0x495e mem_24g_check_dongle_times
-0x4960 mem_24g_enter_hibernate
-0x4968 mem_24g_device_addr
-0x496c mem_24g_pac_index
-0x496d mem_24g_no_ack
-0x496e mem_24g_sta_crc
-0x4971 mem_24g_last_crc
-0x4974 mem_24g_sta_pid
-0x4975 mem_24g_last_pid
-0x4976 mem_24g_max_retry
-0x4977 mem_24g_mode
-0x4978 mem_24g_rxdata_temp
-0x499a mem_24g_rx_addr
-0x499e mem_dongle_mode_init
-0x499f mem_dongle_work_mode
-0x49a0 mem_dongle_ms_bind_step
-0x49a1 mem_dongle_kb_bind_step
-0x49a2 mem_dongle_bind_device_status
-0x49a3 mem_24g_bind_payload
-0x49ab mem_24g_abort_packet
-0x49ac mem_24g_rf_laststa
-0x49ad mem_24g_hop_btclk
-0x49b1 mem_24g_hop_interval
-0x49b2 mem_24g_mode_switch
-0x49b3 mem_24g_ackpayload_enable
-0x49b4 mem_24g_hop_packet
-0x49b5 mem_24g_pair_mode
-0x49b6 mem_24g_nodata_timer_enable
-0x49b7 mem_24g_time_slice
-0x49b8 mem_24g_kb_data_sta_data
-0x49c0 mem_24g_kb_data_last_data
-0x49c8 mem_24g_kb_multikey_sta_data
-0x49cb mem_24g_kb_multikey_last_data
-0x49ce mem_24g_kb_blank_data_enable
-0x49cf mem_24g_kb_mul_blank_data_enable
-0x49d0 mem_24g_ms_blank_data_enable
-0x49d1 mem_24g_kb_addr
-0x49d5 mem_24g_ms_addr
-0x49d9 mem_24g_dg_last_ch
-0x49da mem_24g_dg_ch_number
-0x49db mem_24g_dg_config_ch_once
-0x49dc mem_24g_kb_last_ch
-0x49dd mem_24g_kb_ch_number
-0x49de mem_24g_kb_config_ch_once
-0x49df mem_24g_ms_last_ch
-0x49e0 mem_24g_ms_ch_number
-0x49e1 mem_24g_ms_config_ch_once
-0x49e2 mem_24g_syncword
-0x49e4 mem_24g_syncword_crc8
-0x49e5 mem_24g_get_syncword_crc8
-0x49e6 mem_24g_ota_sta_pid
-0x49e8 mem_tx_power_temp
-0x49e9 mem_rssi_hex
-0x49ea mem_rssi_noise_avg
-0x49eb mem_rssi_noise_index
-0x49ec mem_rssi_signal_index
-0x49ed mem_rssi_noise_dg_avg
-0x49ee mem_rssi_noise_kb_avg
-0x49ef mem_rssi_noise_ms_avg
-0x49f0 mem_rssi_noise_dg_index
-0x49f1 mem_rssi_noise_kb_index
-0x49f2 mem_rssi_noise_ms_index
-0x49f3 mem_rssi_signal_buf
-0x49fb mem_queue_ele_num
-0x49fc mem_queue_read
-0x49fe mem_queue_write
-0x4a00 mem_queue_start
-0x4a00 mem_data_ele0
-0x4a20 mem_data_ele1
-0x4a40 mem_data_ele2
-0x4a60 mem_queue_end
-0x4a60 mem_queue_temp
-0x4a62 mem_cb_24g_data
-0x4a64 mem_24g_hop_fastly_cnt
-0x4a65 mem_24g_hop_pac_retry
-0x4a66 mem_24g_rf_hop_ch
-0x4a67 mem_24g_rf_last_sta
-0x4a68 mem_24g_rf_work_stage
-0x4a69 mem_24g_sync_cnt
-0x4a6a mem_power_ctrl_pac_succ_cnt
-0x4a6b mem_rssi_avg_received
-0x4a6c mem_rssi_hex_received
-0x4a6d mem_power_ctrl_level
-0x4a6e mem_seqi
-0x4a6f mem_24g_auto_paring_switch
-0x4a70 mem_24g_paccnt
-0x4a71 mem_24g_transmit_by_interrupt
-0x4a72 mem_24g_transmit_by_interrupt_exit_count
+0x478c mem_le_rx_window_inc
+0x478e mem_empty_count
+0x478f mem_rf_init_data_new
+0x479c mem_mouse_clear_sensor_data_flag
+0x479d mem_mouse_null_enter_hibernate_flag
+0x479e mem_mouse_null_enter_hibernate_timer
+0x479f mem_mouse_le_reconnect_flag
+0x47a0 mem_mouse_data_queue
+0x47c1 mem_mouse_data_queue_num
+0x47c2 mem_random_addr_increase_count
+0x47c4 mem_mouse_le_conn_param_reject
+0x47c5 mem_lpm_mult_init
+0x47c6 mem_mouse_le_uuid_sup
+0x4806 mem_mouse_wheel_trigger
+0x4807 mem_mouse_wheel_trigger_timer
+0x4808 mem_mouse_enter_sniff_count
+0x4809 mem_mouse_send_switch_req_timer
+0x480a mem_le_tx_buffer0_omemalloc
+0x4825 mem_le_tx_buffer1_omemalloc
+0x4840 mem_le_tx_buffer2_omemalloc
+0x485b mem_le_tx_buffer3_omemalloc
+0x4876 mem_mouse_uuid_list
+0x4afc mem_lmi_opcode_temp
+0x4afd mem_mouse_button_select_device_timer_init
+0x4afe mem_mouse_button_select_device_count
+0x4aff mem_mouse_multi_led_blink_enable
+0x4b00 mem_mouse_multi_led_gpio
+0x4b01 mem_mouse_multi_led_state
+0x4b02 mem_mouse_multi_led_type
+0x4b03 mem_mouse_multi_led_on_timer_init
+0x4b04 mem_mouse_multi_led_blink_timer_init
+0x4b05 mem_mouse_multi_led_blink_timer
+0x4b06 mem_mouse_multi_led_blink_count
+0x4b07 mem_mouse_multi_led_on_timer
+0x4b08 mem_mouse_multi_led_blink_count_limited
+0x4b09 mem_mouse_multi_led_on_poweron2s_flag
+0x4b0a mem_mouse_multi_led_blink_poweron3s_flag
+0x4b0b mem_mouse_adc_last_low_voltage_flag
+0x4b0c mem_mouse_init_sensor_reset_flag
+0x4b0d mem_bt_rcvd_switch_req_accept
+0x4b0e mem_bt_send_max_slot_req_accept_after_switch
+0x4b0f mem_bt_send_lmp_setup_complete
+0x4b10 mem_l2cap_rcv
+0x4b11 mem_mouse_bt_boot_mode
+0x4b12 mem_mouse_bt_boot_data
+0x4b17 mem_mouse_bt_send_first_package_timer
+0x4b18 mem_mouse_bt_send_first_package_flag
+0x4b19 mem_mouse_asm_flag
+0x4b1a mem_mouse_x_pre
+0x4b1c mem_mouse_y_pre
+0x4b1e mem_le_adv_swift_pair
+0x4b31 mem_le_att_pnp_id_len
+0x4b32 mem_le_att_pnp_id
+0x4b39 mem_mouse_long_mult_flag
+0x4b3a mem_mouse_le_current_mult_timer
+0x4b3b mem_24g_long_sleep_param_update_timer
+0x4b3c mem_mouse_send_secutiry_request_timer
+0x4b3d mem_le_send_security_request_flag
+0x4b3e mem_mouse_le_bb_connected_flag
+0x4b3f mem_power_on_flag
+0x4b40 mem_mouse_fast_conn_flag
+0x4b41 mem_le_normal_lap
+0x4b47 mem_le_switch_adv_flag
+0x4b48 mem_le_switch_adv_timer
+0x4b49 mem_le_switch_adv_count
+0x4b4a mem_mouse_start_discovery_enable
+0x4b4b mem_mouse_le_adv_start
+0x4b4c mem_mouse_long_button_select_device
+0x4b4d mem_g24_stop_g24_mode
+0x4b4e mem_g24_stop_g24_mode_timeout
+0x4b50 mem_24g_pair_current_ch_num
+0x4b51 mem_24g_powerful_current_ch_num
+0x4b52 mem_dpi_ui_button_timeout
+0x4b53 mem_mouse_le_updata_not_accepted_flag
+0x4b54 mem_mouse_latest_mode
+0x4b55 mem_mouse_poweron_bt_start_reconn_timer
+0x4b56 mem_mouse_le_not_tx_disconn
+0x4b57 mem_24g_rxbuf
+0x4b79 mem_24g_txbuf
+0x4b99 mem_24g_txpayload
+0x4bbb mem_24g_rxpayload
+0x4bdb mem_24g_rxdata_length
+0x4bdc mem_24g_pid
+0x4bdd mem_24g_datalen
+0x4bde mem_24g_data_type
+0x4bdf mem_24g_txlen
+0x4be0 mem_24g_rx_window
+0x4be2 mem_24g_ensure
+0x4be3 mem_24g_txfail_cnt
+0x4be5 mem_24g_get_ack_fail
+0x4be6 mem_24g_retry
+0x4be7 mem_24g_ch
+0x4be8 mem_24g_current_ch_number
+0x4be9 mem_24g_paring_addr
+0x4bed mem_24g_pairing_sm
+0x4bee mem_24g_ch_map1
+0x4bf2 mem_24g_ch_map2
+0x4bf6 mem_24g_ch_map3
+0x4bfa mem_24g_ch_map4
+0x4bfe mem_24g_tx_btclk
+0x4c02 mem_24g_interval
+0x4c03 mem_24g_interval_min
+0x4c04 mem_24g_interval_max
+0x4c05 mem_24g_addr
+0x4c09 mem_24g_abort_pac
+0x4c0a mem_24g_check_dongle_times
+0x4c0c mem_24g_enter_hibernate
+0x4c14 mem_24g_device_addr
+0x4c18 mem_24g_pac_index
+0x4c19 mem_24g_no_ack
+0x4c1a mem_24g_sta_crc
+0x4c1d mem_24g_last_crc
+0x4c20 mem_24g_sta_pid
+0x4c21 mem_24g_last_pid
+0x4c22 mem_24g_max_retry
+0x4c23 mem_24g_mode
+0x4c24 mem_24g_rxdata_temp
+0x4c46 mem_24g_rx_addr
+0x4c4a mem_dongle_mode_init
+0x4c4b mem_dongle_work_mode
+0x4c4c mem_dongle_ms_bind_step
+0x4c4d mem_dongle_kb_bind_step
+0x4c4e mem_dongle_bind_device_status
+0x4c4f mem_24g_bind_payload
+0x4c57 mem_24g_abort_packet
+0x4c58 mem_24g_rf_laststa
+0x4c59 mem_24g_hop_btclk
+0x4c5d mem_24g_hop_interval
+0x4c5e mem_24g_mode_switch
+0x4c5f mem_24g_ackpayload_enable
+0x4c60 mem_24g_hop_packet
+0x4c61 mem_24g_pair_mode
+0x4c62 mem_24g_nodata_timer_enable
+0x4c63 mem_24g_time_slice
+0x4c64 mem_24g_kb_data_sta_data
+0x4c6c mem_24g_kb_data_last_data
+0x4c74 mem_24g_kb_multikey_sta_data
+0x4c77 mem_24g_kb_multikey_last_data
+0x4c7a mem_24g_kb_blank_data_enable
+0x4c7b mem_24g_kb_mul_blank_data_enable
+0x4c7c mem_24g_ms_blank_data_enable
+0x4c7d mem_24g_kb_addr
+0x4c81 mem_24g_ms_addr
+0x4c85 mem_24g_dg_last_ch
+0x4c86 mem_24g_dg_ch_number
+0x4c87 mem_24g_dg_config_ch_once
+0x4c88 mem_24g_kb_last_ch
+0x4c89 mem_24g_kb_ch_number
+0x4c8a mem_24g_kb_config_ch_once
+0x4c8b mem_24g_ms_last_ch
+0x4c8c mem_24g_ms_ch_number
+0x4c8d mem_24g_ms_config_ch_once
+0x4c8e mem_24g_syncword
+0x4c90 mem_24g_syncword_crc8
+0x4c91 mem_24g_get_syncword_crc8
+0x4c92 mem_24g_ota_sta_pid
+0x4c94 mem_tx_power_temp
+0x4c95 mem_rssi_hex
+0x4c96 mem_rssi_noise_avg
+0x4c97 mem_rssi_noise_index
+0x4c98 mem_rssi_signal_index
+0x4c99 mem_rssi_noise_dg_avg
+0x4c9a mem_rssi_noise_kb_avg
+0x4c9b mem_rssi_noise_ms_avg
+0x4c9c mem_rssi_noise_dg_index
+0x4c9d mem_rssi_noise_kb_index
+0x4c9e mem_rssi_noise_ms_index
+0x4c9f mem_rssi_signal_buf
+0x4ca7 mem_queue_ele_num
+0x4ca8 mem_queue_read
+0x4caa mem_queue_write
+0x4cac mem_queue_start
+0x4cac mem_data_ele0
+0x4ccc mem_data_ele1
+0x4cec mem_data_ele2
+0x4d0c mem_queue_end
+0x4d0c mem_queue_temp
+0x4d0e mem_cb_24g_data
+0x4d10 mem_24g_hop_fastly_cnt
+0x4d11 mem_24g_hop_pac_retry
+0x4d12 mem_24g_rf_hop_ch
+0x4d13 mem_24g_rf_last_sta
+0x4d14 mem_24g_rf_work_stage
+0x4d15 mem_24g_sync_cnt
+0x4d16 mem_power_ctrl_pac_succ_cnt
+0x4d17 mem_rssi_avg_received
+0x4d18 mem_rssi_hex_received
+0x4d19 mem_power_ctrl_level
+0x4d1a mem_seqi
+0x4d1b mem_24g_auto_paring_switch
+0x4d1c mem_24g_paccnt
+0x4d1d mem_24g_transmit_by_interrupt
+0x4d1e mem_24g_transmit_by_interrupt_exit_count
+0x4d20 mem_24g_transmit_by_interrupt_exit_count_init
+0x4d22 mem_24g_search_dongle_action
+0x4d23 mem_24g_search_dongle_count
+0x4d24 mem_24g_search_dongle_ch
+0x4d25 mem_g24_conn_sm
Index: output/program.lis
===================================================================
--- /branch/mouse_project/YJX_24G&BLE/output/program.lis	(revision 1235)
+++ /branch/mouse_project/YJX_24G&BLE/output/program.lis	(working copy)
@@ -1,2395 +1,2546 @@
 include "bt_format "
 org 0x0000
-0000 c2840010 bbit1 8 ,pf_patch_ext 
-0001 c04285ed beq patch10_5 ,p_shutdown_radio 
-0002 c04485bc beq patch11_1 ,p_set_freq_tx 
-0003 c0008026 beq patch00_1 ,p_soft_reset_1 
-0004 c050802c beq patch14_1 ,p_init_param 
-0005 c058808e beq patch16_1 ,p_lpm_check_wake_lock 
-0006 c0590031 beq patch16_2 ,p_g24_dispatch 
-0007 c06200bd beq patch18_4 ,p_device_init 
-0008 c064815b beq patch19_1 ,p_app_flag_store 
-0009 c065015f beq patch19_2 ,p_app_initflag_check 
-000a c071827f beq patch1c_3 ,p_mouse_seting_dpi 
-000b c0730298 beq patch1c_6 ,p_mouse_motion 
-000c c07502eb beq patch1d_2 ,p_mouse_bb_event_discovery_btn 
-000d c07582f0 beq patch1d_3 ,p_mouse_start_discovery 
-000e c0760322 beq patch1d_4 ,p_mouse_stop_discovery 
-000f 20202a8e branch loop 
+0000 c2840012 bbit1 8 ,pf_patch_ext 
+0001 c0000029 beq patch00_0 ,p_soft_reset 
+0002 c000802c beq patch00_1 ,p_soft_reset_1 
+0003 c0010035 beq patch00_2 ,p_soft_reset_2 
+0004 c042873f beq patch10_5 ,p_shutdown_radio 
+0005 c0448712 beq patch11_1 ,p_set_freq_tx 
+0006 c050803e beq patch14_1 ,p_init_param 
+0007 c0588043 beq patch16_1 ,p_lpm_check_wake_lock 
+0008 c059004f beq patch16_2 ,p_g24_dispatch 
+0009 c062030d beq patch18_4 ,p_device_init 
+000a c0648399 beq patch19_1 ,p_app_flag_store 
+000b c065039d beq patch19_2 ,p_app_initflag_check 
+000c c071855f beq patch1c_3 ,p_mouse_seting_dpi 
+000d c0730584 beq patch1c_6 ,p_mouse_motion 
+000e c07505be beq patch1d_2 ,p_mouse_bb_event_discovery_btn 
+000f c07585c6 beq patch1d_3 ,p_mouse_start_discovery 
+0010 c07605f9 beq patch1d_4 ,p_mouse_stop_discovery 
+0011 20202a8e branch loop 
 
 pf_patch_ext:
-0010 c01c8325 beq patch27_1 ,p_le_slave_match 
-0011 c021832d beq patch28_3 ,p_le_next_adv_channel 
-0012 c0250333 beq patch29_2 ,p_le_receive_skip 
-0013 c02b8337 beq patch2a_7 ,p_le_update_param 
-0014 c02c8349 beq patch2b_1 ,p_le_update_channel_map 
-0015 c0318356 beq patch2c_3 ,p_le_prepare_tx 
-0016 c0330380 beq patch2c_6 ,p_le_parse 
-0017 c0338397 beq patch2c_7 ,p_le_parse_l2cap 
-0018 c03503e1 beq patch2d_2 ,p_le_adv_not_match 
-0019 c03b83ec beq patch2e_7 ,p_le_lpm_setmult 
-001a c07d03fd beq patch3f_2 ,p_check_51cmd_once_continue 
-001b c0460406 beq patch31_4 ,p_twspi_reset 
-001c 20202a8e branch loop 
+0012 c01c85ff beq patch27_1 ,p_le_slave_match 
+0013 c0218607 beq patch28_3 ,p_le_next_adv_channel 
+0014 c025060d beq patch29_2 ,p_le_receive_skip 
+0015 c02b8610 beq patch2a_7 ,p_le_update_param 
+0016 c02c8622 beq patch2b_1 ,p_le_update_channel_map 
+0017 c031862f beq patch2c_3 ,p_le_prepare_tx 
+0018 c0330659 beq patch2c_6 ,p_le_parse 
+0019 c0338678 beq patch2c_7 ,p_le_parse_l2cap 
+001a c03506a4 beq patch2d_2 ,p_le_adv_not_match 
+001b c03b86af beq patch2e_7 ,p_le_lpm_setmult 
+001c c07d06c0 beq patch3f_2 ,p_check_51cmd_once_continue 
+001d c04606c9 beq patch31_4 ,p_twspi_reset 
+001e 20202a8e branch loop 
 
 p_rssi_signal:
-001d 6808c9ec fetcht 1 ,mem_rssi_signal_index 
-001e 580049f3 setarg mem_rssi_signal_buf 
-001f 98408a00 iadd temp ,contw 
-0020 1a227e00 copy rega ,pdata 
-0021 e0a08000 istore 1 ,contw 
-0022 18408401 increase 1 ,temp 
-0023 18410407 and_into rssi_buf_len_signal ,temp 
-0024 6008c9ec storet 1 ,mem_rssi_signal_index 
-0025 20600000 rtn 
+001f 1fe22200 copy pdata ,rega 
+0020 6808cc98 fetcht 1 ,mem_rssi_signal_index 
+0021 58004c9f setarg mem_rssi_signal_buf 
+0022 98408a00 iadd temp ,contw 
+0023 1a227e00 copy rega ,pdata 
+0024 e0a08000 istore 1 ,contw 
+0025 18408401 increase 1 ,temp 
+0026 18410407 and_into rssi_buf_len_signal ,temp 
+0027 6008cc98 storet 1 ,mem_rssi_signal_index 
+0028 20600000 rtn 
+
+p_soft_reset:
+0029 6810813b hfetch 1 ,0x813b 
+002a 6000cb3f store 1 ,mem_power_on_flag 
+002b 20202002 branch soft_reset + 1 
 
 p_soft_reset_1:
-0026 204000b4 call p_mouse_le_txbuff_load 
-0027 20406a03 call rfcomm_init 
-0028 20405cf6 call init_lmp 
-0029 2455ac65 ncall lpm_disable_exen_output ,wake 
-002a 20407ccd call ui_init + 1 
-002b 2020200c branch soft_reset + 11 
+002c d8a009ae arg mem_sp_state ,contw 
+002d df20000c arg 12 ,loopcnt 
+002e 20407ed4 call clear_mem 
+002f 204003e5 call p_mouse_le_txbuff_load 
+0030 20406a03 call rfcomm_init 
+0031 20405cf6 call init_lmp 
+0032 2455ac65 ncall lpm_disable_exen_output ,wake 
+0033 20407ccd call ui_init + 1 
+0034 2020200c branch soft_reset + 11 
+
+p_soft_reset_2:
+0035 2055b2e3 call app_lpm_init ,wake 
+0036 2040756a call publickey_init 
+0037 2055ab41 call lpm_recover_clk ,wake 
+
+p_sp_cal_loop:
+0038 204076dc call sp_calc_sequence 
+0039 6800c65a fetch 1 ,mem_ssp_enable 
+003a 203a2012 branch main_loop ,blank 
+003b 6800c5b1 fetch 1 ,mem_sp_local_key_invalid 
+003c 203a0038 branch p_sp_cal_loop ,blank 
+003d 20202012 branch main_loop 
 
 p_init_param:
-002c 58000a06 setarg param_le_version 
-002d 6001c510 store 3 ,mem_lmp_version 
-002e 58001d87 setarg param_le_subversion 
-002f 60014513 store 2 ,mem_lmp_version + 3 
-0030 20202aa2 branch init_param + 12 
+003e 58000a06 setarg param_le_version 
+003f 6001c510 store 3 ,mem_lmp_version 
+0040 58001d87 setarg param_le_subversion 
+0041 60014513 store 2 ,mem_lmp_version + 3 
+0042 20202aa2 branch init_param + 12 
+
+p_lpm_check_wake_lock:
+0043 c6130000 rtnmark1 mark_24g 
+0044 6800cb01 fetch 1 ,mem_mouse_multi_led_state 
+0045 243a7fef nbranch disable_blank ,blank 
+0046 6800cb06 fetch 1 ,mem_mouse_multi_led_blink_count 
+0047 243a7fef nbranch disable_blank ,blank 
+0048 6800c79c fetch 1 ,mem_mouse_clear_sensor_data_flag 
+0049 203a7fef branch disable_blank ,blank 
+004a 6800c7c4 fetch 1 ,mem_mouse_le_conn_param_reject 
+004b c000ffef beq le_lpm_disable ,disable_blank 
+004c 6800c806 fetch 1 ,mem_mouse_wheel_trigger 
+004d 243a7fef nbranch disable_blank ,blank 
+004e 20207ff1 branch enable_blank 
 
 p_g24_dispatch:
-0031 c6930000 rtnmark0 mark_24g 
-0032 6800ca71 fetch 1 ,mem_24g_transmit_by_interrupt 
-0033 c000804f beq g24_tx_timer_int_enable ,p_g24_transmit_by_interrupt 
+004f c6930000 rtnmark0 mark_24g 
+0050 6800cd25 fetch 1 ,mem_g24_conn_sm 
+0051 c2808064 bbit1 state_24g_pair ,p_g24_pair_dispatch 
+0052 c2810074 bbit1 state_24g_reconn ,p_g24_reconn_dispatch 
+0053 6800cd1d fetch 1 ,mem_24g_transmit_by_interrupt 
+0054 c000808a beq g24_tx_timer_int_enable ,p_g24_transmit_by_interrupt 
 
 p_g24_transmit_process:
-0034 2040046a call p_g24_txdata_prep 
-0035 24340069 nbranch p_g24_nodata_transmit ,user 
-0036 70496d00 jam with_ack_24g ,mem_24g_no_ack 
-0037 2040044f call p_g24_rf_sta_check 
-0038 20400089 call p_g24_search_dongle 
-0039 6800c96d fetch 1 ,mem_24g_no_ack 
-003a c1008000 rtneq no_ack_24g 
+0055 20400143 call p_g24_txdata_prep 
+0056 243400a5 nbranch p_g24_nodata_transmit ,user 
+0057 2040012a call p_g24_rf_sta_check 
 
 p_g24_transmit_start:
-003b 20400495 call p_g24_transmit_packet 
-003c 6800c941 fetch 1 ,mem_24g_pairing_sm 
-003d c1ff8000 rtnne state_24g_pairing_success 
-003e 204004f4 call power_ctrl_start 
-003f 6800c96d fetch 1 ,mem_24g_no_ack 
-0040 c000806b beq no_ack_24g ,p_g24_long_sleep 
-0041 20400049 call g24_long_sleep_shorter_param_update 
-0042 6800ca71 fetch 1 ,mem_24g_transmit_by_interrupt 
-0043 c1008000 rtneq g24_tx_timer_int_enable 
+0058 20400166 call p_g24_transmit_packet 
+0059 6800cbed fetch 1 ,mem_24g_pairing_sm 
+005a c1ff8000 rtnne state_24g_pairing_success 
+005b 204006e6 call power_ctrl_start 
+005c 20400086 call g24_long_sleep_shorter_param_update 
+005d 6800cb01 fetch 1 ,mem_mouse_multi_led_state 
+005e c0008082 beq on ,p_g24_transmit_by_interrupt_enable 
 
 p_g24_short_sleep:
-0044 20400071 call p_g24_lpm_wait 
-0045 24740000 nrtn user 
-0046 2040009d call p_clear_wake 
-0047 5800ec54 setarg 60500 
-0048 20202b93 branch lpm_dispatch_sleep 
+005f 204000b7 call p_g24_lpm_wait 
+0060 24740000 nrtn user 
+0061 204002fe call p_clear_wake 
+0062 5800ea60 setarg 60000 
+0063 20202b93 branch lpm_dispatch_sleep 
+
+p_g24_pair_dispatch:
+0064 6800cb4d fetch 1 ,mem_g24_stop_g24_mode 
+0065 c00081ac beq 1 ,p_g24_stop_g24_mode 
+0066 204001f9 call p_g24_tx_attemp_data_prep 
+0067 20400181 call p_g24_transmit_receive_ack 
+0068 242c0211 nbranch p_g24_pair_txdata_retry ,sync 
+0069 24378211 nbranch p_g24_pair_txdata_retry ,user3 
+006a 6800cd25 fetch 1 ,mem_g24_conn_sm 
+006b 793ffe01 set0 state_24g_pair ,pdata 
+006c 6000cd25 store 1 ,mem_g24_conn_sm 
+006d 204001ae call p_g24_ackpayload_parse 
+006e 20400323 call p_mouse_tx_power_init 
+006f 68024c05 fetch 4 ,mem_24g_addr 
+0070 680a4be9 fetcht 4 ,mem_24g_paring_addr 
+0071 98467c00 isub temp ,null 
+0072 20228337 branch p_g24_start_pairing_sm1 ,zero 
+0073 2020007a branch p_g24_tx_attemp_dongle_succ 
+
+p_g24_reconn_dispatch:
+0074 6800cb4d fetch 1 ,mem_g24_stop_g24_mode 
+0075 c00081ac beq 1 ,p_g24_stop_g24_mode 
+0076 204001f9 call p_g24_tx_attemp_data_prep 
+0077 20400181 call p_g24_transmit_receive_ack 
+0078 242c0202 nbranch p_g24_attemp_txdata_retry ,sync 
+0079 24378202 nbranch p_g24_attemp_txdata_retry ,user3 
+
+p_g24_tx_attemp_dongle_succ:
+007a 79200026 set1 mark_24g ,mark 
+007b 6800cd25 fetch 1 ,mem_g24_conn_sm 
+007c 793ffe02 set0 state_24g_reconn ,pdata 
+007d 6000cd25 store 1 ,mem_g24_conn_sm 
+007e 704b3900 jam 0 ,mem_mouse_long_mult_flag 
+007f 700a993c jam bt_evt_24g_attempt_success ,mem_fifo_temp 
+0080 20407d86 call ui_ipc_send_event 
+0081 2040017c call p_g24_txbuf_clear 
+
+p_g24_transmit_by_interrupt_enable:
+0082 704d1d01 jam g24_tx_timer_int_enable ,mem_24g_transmit_by_interrupt 
+0083 58000000 setarg 0 
+0084 60014d1e store 2 ,mem_24g_transmit_by_interrupt_exit_count 
+0085 20600000 rtn 
 
 g24_long_sleep_shorter_param_update:
-0049 6800c6f5 fetch 1 ,mem_config_function_enable 
-004a c3838000 rtnbit1 enable_sensor_motion_pin 
-004b 58017700 setarg g24_long_sleep_step1 
-004c 6001c960 store 3 ,mem_24g_enter_hibernate 
-004d 70480e14 jam 20 ,mem_24g_long_sleep_param_update_timer 
-004e 20600000 rtn 
+0086 58017700 setarg g24_long_sleep_step1 
+0087 6001cc0c store 3 ,mem_24g_enter_hibernate 
+0088 704b3b14 jam 20 ,mem_24g_long_sleep_param_update_timer 
+0089 20600000 rtn 
 
 p_g24_transmit_by_interrupt:
-004f 204005ef call p_g24_timer_check 
-0050 24740000 nrtn user 
-0051 20400060 call p_g24_interval_calibrate 
-0052 6800ca72 fetch 1 ,mem_24g_transmit_by_interrupt_exit_count 
-0053 1fe0fe01 increase 1 ,pdata 
-0054 6000ca72 store 1 ,mem_24g_transmit_by_interrupt_exit_count 
-0055 1fe67c19 sub pdata ,25 ,null 
-0056 20428058 call p_g24_transmit_by_interrupt_exit ,zero 
-0057 20200034 branch p_g24_transmit_process 
+008a 204002d7 call p_g24_timer_check 
+008b 24740000 nrtn user 
+008c 2040009f call p_g24_interval_calibrate 
+008d 68014d1e fetch 2 ,mem_24g_transmit_by_interrupt_exit_count 
+008e 1fe0fe01 increase 1 ,pdata 
+008f 60014d1e store 2 ,mem_24g_transmit_by_interrupt_exit_count 
+0090 68094d20 fetcht 2 ,mem_24g_transmit_by_interrupt_exit_count_init 
+0091 98467c00 isub temp ,null 
+0092 20428094 call p_g24_transmit_by_interrupt_exit ,zero 
+0093 20200055 branch p_g24_transmit_process 
 
 p_g24_transmit_by_interrupt_exit:
-0058 704a7100 jam g24_tx_timer_int_disable ,mem_24g_transmit_by_interrupt 
-0059 704a7200 jam 0 ,mem_24g_transmit_by_interrupt_exit_count 
+0094 704d1d00 jam g24_tx_timer_int_disable ,mem_24g_transmit_by_interrupt 
+0095 58000000 setarg 0 
+0096 60014d1e store 2 ,mem_24g_transmit_by_interrupt_exit_count 
+0097 58000064 setarg 100 
+0098 60014d20 store 2 ,mem_24g_transmit_by_interrupt_exit_count_init 
 
 p_g24_interval_min:
-005a 70496c00 jam 0 ,mem_24g_pac_index 
-005b 6800c957 fetch 1 ,mem_24g_interval_min 
+0099 704c1800 jam 0 ,mem_24g_pac_index 
+009a 6800cc03 fetch 1 ,mem_24g_interval_min 
 
 p_g24_interval_store:
-005c 6000c956 store 1 ,mem_24g_interval 
-005d 20600000 rtn 
+009b 6000cc02 store 1 ,mem_24g_interval 
+009c 20600000 rtn 
 
 p_g24_interval_max:
-005e 6800c958 fetch 1 ,mem_24g_interval_max 
-005f 2020005c branch p_g24_interval_store 
+009d 6800cc04 fetch 1 ,mem_24g_interval_max 
+009e 2020009b branch p_g24_interval_store 
 
 p_g24_interval_calibrate:
-0060 6800c96c fetch 1 ,mem_24g_pac_index 
-0061 1fe0fe01 increase 1 ,pdata 
-0062 6000c96c store 1 ,mem_24g_pac_index 
-0063 c002005e beq 4 ,p_g24_interval_max 
-0064 c002805a beq 5 ,p_g24_interval_min 
-0065 20600000 rtn 
-
-p_g24_transmit_by_interrupt_enable:
-0066 704a7101 jam g24_tx_timer_int_enable ,mem_24g_transmit_by_interrupt 
-0067 704a7200 jam 0 ,mem_24g_transmit_by_interrupt_exit_count 
-0068 20600000 rtn 
+009f 6800cc18 fetch 1 ,mem_24g_pac_index 
+00a0 1fe0fe01 increase 1 ,pdata 
+00a1 6000cc18 store 1 ,mem_24g_pac_index 
+00a2 c002009d beq 4 ,p_g24_interval_max 
+00a3 c0028099 beq 5 ,p_g24_interval_min 
+00a4 20600000 rtn 
 
 p_g24_nodata_transmit:
-0069 6800c95d fetch 1 ,mem_24g_abort_pac 
-006a 205a007a call p_g24_send_abort_packet ,blank 
+00a5 6800cc09 fetch 1 ,mem_24g_abort_pac 
+00a6 205a00c0 call p_g24_send_abort_packet ,blank 
+00a7 6800cb06 fetch 1 ,mem_mouse_multi_led_blink_count 
+00a8 247a0000 nrtn blank 
+00a9 6800cb01 fetch 1 ,mem_mouse_multi_led_state 
+00aa c1008000 rtneq on 
+00ab 6800cd1d fetch 1 ,mem_24g_transmit_by_interrupt 
+00ac c1008000 rtneq g24_tx_timer_int_enable 
+00ad 204000d4 call p_g24_search_dongle 
+00ae 6800cd24 fetch 1 ,mem_24g_search_dongle_ch 
+00af c1820000 rtnne g24_ch_number 
+00b0 704d2400 jam 0 ,mem_24g_search_dongle_ch 
 
 p_g24_long_sleep:
-006b 20400071 call p_g24_lpm_wait 
-006c 24740000 nrtn user 
-006d 6801c960 fetch 3 ,mem_24g_enter_hibernate 
-006e 20407f49 call clk2lpo 
-006f 600a415b storet 4 ,mem_sleep_counter 
-0070 20202b2a branch lpm_sleep 
+00b1 204000b7 call p_g24_lpm_wait 
+00b2 24740000 nrtn user 
+00b3 6801cc0c fetch 3 ,mem_24g_enter_hibernate 
+00b4 20407f49 call clk2lpo 
+00b5 600a415b storet 4 ,mem_sleep_counter 
+00b6 20202b2a branch lpm_sleep 
 
 p_g24_lpm_wait:
-0071 78347c00 enable user 
-0072 20402afa call lpo_calibration 
-0073 6801c16f fetch 3 ,mem_clks_per_lpo 
-0074 203a7fe9 branch disable_user ,blank 
-0075 6800c091 fetch 1 ,mem_lpm_mode 
-0076 203a7fe9 branch disable_user ,blank 
-0077 6800c5b1 fetch 1 ,mem_sp_local_key_invalid 
-0078 203a7fe9 branch disable_user ,blank 
-0079 202000a0 branch p_mouse_setgpio_lpm 
+00b7 78347c00 enable user 
+00b8 20402afa call lpo_calibration 
+00b9 6801c16f fetch 3 ,mem_clks_per_lpo 
+00ba 203a7fe9 branch disable_user ,blank 
+00bb 6800c091 fetch 1 ,mem_lpm_mode 
+00bc 203a7fe9 branch disable_user ,blank 
+00bd 6800cd1d fetch 1 ,mem_24g_transmit_by_interrupt 
+00be c000ffe9 beq g24_tx_timer_int_enable ,disable_user 
+00bf 20200301 branch p_mouse_setgpio_lpm 
 
 p_g24_send_abort_packet:
-007a 70495d01 jam 1 ,mem_24g_abort_pac 
-007b 704a6600 jam 0 ,mem_24g_rf_hop_ch 
-007c 20400417 call p_g24_transmit_rf_ctrl_clear 
-007d 6000c8cd store 1 ,mem_24g_txbuf 
-007e 58000000 setarg 0 
-007f 6003c8ce store 7 ,mem_24g_txbuf + 1 
-0080 68024968 fetch 4 ,mem_24g_device_addr 
-0081 600248d5 store 4 ,mem_24g_txbuf + 8 
-0082 7049310c jam 12 ,mem_24g_datalen 
-0083 6800c932 fetch 1 ,mem_24g_data_type 
-0084 79207e03 set1 bit_abort ,pdata 
-0085 6000c932 store 1 ,mem_24g_data_type 
-0086 2040062b call p_g24_transmit_prep 
-0087 2040046e call p_g24_txdata_enable_tx 
-0088 2020003b branch p_g24_transmit_start 
+00c0 704c0901 jam 1 ,mem_24g_abort_pac 
+
+p_g24_send_abort_packet1:
+00c1 704d1200 jam 0 ,mem_24g_rf_hop_ch 
+00c2 204000f6 call p_g24_transmit_rf_ctrl_clear 
+00c3 6000cb79 store 1 ,mem_24g_txbuf 
+00c4 58000000 setarg 0 
+00c5 6003cb7a store 7 ,mem_24g_txbuf + 1 
+00c6 68024c14 fetch 4 ,mem_24g_device_addr 
+00c7 60024b81 store 4 ,mem_24g_txbuf + 8 
+00c8 704bdd0c jam 12 ,mem_24g_datalen 
+00c9 6800cbde fetch 1 ,mem_24g_data_type 
+00ca 79207e03 set1 bit_abort ,pdata 
+00cb 6000cbde store 1 ,mem_24g_data_type 
+00cc 20400247 call p_g24_transmit_prep 
+00cd 20400146 call p_g24_txdata_enable_tx 
+00ce 20400166 call p_g24_transmit_packet 
+00cf 202006e6 branch power_ctrl_start 
+
+p_g24_search_dongle_init:
+00d0 704d2200 jam 0 ,mem_24g_search_dongle_action 
+00d1 704d2300 jam 0 ,mem_24g_search_dongle_count 
+00d2 704d2400 jam 0 ,mem_24g_search_dongle_ch 
+00d3 20600000 rtn 
 
 p_g24_search_dongle:
-0089 6800c95d fetch 1 ,mem_24g_abort_pac 
-008a 207a0000 rtn blank 
-008b 70496d01 jam no_ack_24g ,mem_24g_no_ack 
-008c 2040063d call p_g24_ch 
-008d 2020007b branch p_g24_send_abort_packet + 1 
+00d4 6800cc09 fetch 1 ,mem_24g_abort_pac 
+00d5 207a0000 rtn blank 
 
-p_lpm_check_wake_lock:
-008e c6130000 rtnmark1 mark_24g 
-008f 6800c7a0 fetch 1 ,mem_mouse_clear_sensor_data_flag 
-0090 203a7fef branch disable_blank ,blank 
-0091 6800c7c8 fetch 1 ,mem_mouse_le_conn_param_reject 
-0092 c000ffef beq le_lpm_disable ,disable_blank 
-0093 6800c80a fetch 1 ,mem_mouse_wheel_trigger 
-0094 243a7fef nbranch disable_blank ,blank 
-0095 20207ff1 branch enable_blank 
+p_g24_search_dongle_loop:
+00d6 6800cd24 fetch 1 ,mem_24g_search_dongle_ch 
+00d7 1fe0fe01 increase 1 ,pdata 
+00d8 6000cd24 store 1 ,mem_24g_search_dongle_ch 
+00d9 20400259 call p_g24_ch 
+00da 204000c1 call p_g24_send_abort_packet1 
+00db 6800cd24 fetch 1 ,mem_24g_search_dongle_ch 
+00dc c08200d6 bne g24_ch_number ,p_g24_search_dongle_loop 
+00dd 6800cd23 fetch 1 ,mem_24g_search_dongle_count 
+00de 1fe0fe01 increase 1 ,pdata 
+00df 6000cd23 store 1 ,mem_24g_search_dongle_count 
+00e0 c00200e2 beq g24_ch_poll_count ,p_g24_search_dongle_check 
+00e1 20600000 rtn 
+
+p_g24_search_dongle_check:
+00e2 704d2300 jam 0 ,mem_24g_search_dongle_count 
+00e3 6800cd22 fetch 1 ,mem_24g_search_dongle_action 
+00e4 c3800000 rtnbit1 g24_disconn_state 
+00e5 79207e00 set1 g24_disconn_state ,pdata 
+00e6 6000cd22 store 1 ,mem_24g_search_dongle_action 
+00e7 58000708 setarg g24_disconn_nodata_timer 
+00e8 600146b0 store 2 ,mem_mouse_no_data_timer 
+00e9 20200359 branch p_mouse_sensor_powerdown 
+
+p_g24_search_dongle_success:
+00ea 6800cc09 fetch 1 ,mem_24g_abort_pac 
+00eb 203a00d0 branch p_g24_search_dongle_init ,blank 
+00ec 704d2300 jam 0 ,mem_24g_search_dongle_count 
+00ed 704d2404 jam g24_ch_number ,mem_24g_search_dongle_ch 
+00ee 6800cd22 fetch 1 ,mem_24g_search_dongle_action 
+00ef c4000000 rtnbit0 g24_disconn_state 
+00f0 793ffe00 set0 g24_disconn_state ,pdata 
+00f1 6000cd22 store 1 ,mem_24g_search_dongle_action 
+00f2 20403f8d call mouse_no_data_timer_init 
+00f3 2020034b branch p_mouse_init_sensor_reset 
+
+p_g24_transmit_rf_sta_init:
+00f4 704d1301 jam 1 ,mem_24g_rf_last_sta 
+00f5 704d1500 jam 0 ,mem_24g_sync_cnt 
+
+p_g24_transmit_rf_ctrl_clear:
+00f6 6800cbde fetch 1 ,mem_24g_data_type 
+00f7 1fe17e07 and_into bits_data ,pdata 
+00f8 6000cbde store 1 ,mem_24g_data_type 
+00f9 20600000 rtn 
+
+p_g24_hop_ch_enable:
+00fa 6800cbde fetch 1 ,mem_24g_data_type 
+00fb 79207e04 set1 bit_hop ,pdata 
+00fc 6000cbde store 1 ,mem_24g_data_type 
+00fd 6000cb99 store 1 ,mem_24g_txpayload 
+00fe 20600000 rtn 
+
+p_g24_transmit_hop_pac_fail:
+00ff 204006dc call power_ctrl_pac_succ_decrs 
+0100 6800cd14 fetch 1 ,mem_24g_rf_work_stage 
+0101 c0008104 beq 1 ,p_g24_transmit_hop_pac_fail_wo_hop 
+0102 c0010108 beq 2 ,p_g24_transmit_hop_pac_fail_hop_stage2 
+0103 20600000 rtn 
+
+p_g24_transmit_hop_pac_fail_wo_hop:
+0104 704d1502 jam 2 ,mem_24g_sync_cnt 
+
+p_g24_transmit_hop_pac_fail_stage1:
+0105 704d1100 jam 0 ,mem_24g_hop_pac_retry 
+0106 704d1300 jam 0 ,mem_24g_rf_last_sta 
+0107 202000f6 branch p_g24_transmit_rf_ctrl_clear 
+
+p_g24_transmit_hop_pac_fail_hop_stage2:
+0108 704d1200 jam 0 ,mem_24g_rf_hop_ch 
+0109 20200105 branch p_g24_transmit_hop_pac_fail_stage1 
+
+p_g24_transmit_pac_fail_hop_stage3:
+010a 68014be3 fetch 2 ,mem_24g_txfail_cnt 
+010b 1fe0fe01 increase 1 ,pdata 
+010c 60014be3 store 2 ,mem_24g_txfail_cnt 
+010d c28501aa bbit1 10 ,p_g24_tx_attempt_fail 
+010e 6800cd12 fetch 1 ,mem_24g_rf_hop_ch 
+010f c0008113 beq 1 ,p_g24_rf_hop_fastly 
+0110 704d1201 jam 1 ,mem_24g_rf_hop_ch 
+
+p_g24_rf_hop_attemp_again:
+0111 6800cd12 fetch 1 ,mem_24g_rf_hop_ch 
+0112 c08080f6 bne 1 ,p_g24_transmit_rf_ctrl_clear 
+
+p_g24_rf_hop_fastly:
+0113 6800cd10 fetch 1 ,mem_24g_hop_fastly_cnt 
+0114 1fe0fe01 increase 1 ,pdata 
+0115 6000cd10 store 1 ,mem_24g_hop_fastly_cnt 
+0116 c002011a beq 4 ,p_g24_rf_hop_fastly_exit 
+0117 20400259 call p_g24_ch 
+0118 704c2202 jam 2 ,mem_24g_max_retry 
+0119 20200166 branch p_g24_transmit_packet 
+
+p_g24_rf_hop_fastly_exit:
+011a 204006dc call power_ctrl_pac_succ_decrs 
+011b 704d1000 jam 0 ,mem_24g_hop_fastly_cnt 
+011c 202000f6 branch p_g24_transmit_rf_ctrl_clear 
+
+p_g24_transmit_hop_pac_succ_wo_hop:
+011d 704d1502 jam 2 ,mem_24g_sync_cnt 
+
+p_g24_transmit_hop_pac_succ:
+011e 704d1301 jam 1 ,mem_24g_rf_last_sta 
+011f 704d1200 jam 0 ,mem_24g_rf_hop_ch 
+0120 202000f6 branch p_g24_transmit_rf_ctrl_clear 
+
+p_g24_transmit_succ_rf_config:
+0121 6800cd14 fetch 1 ,mem_24g_rf_work_stage 
+0122 c001811e beq 3 ,p_g24_transmit_hop_pac_succ 
+0123 6800cbde fetch 1 ,mem_24g_data_type 
+0124 2fec0004 isolate0 bit_hop ,pdata 
+0125 202080f4 branch p_g24_transmit_rf_sta_init ,true 
+0126 6800cd14 fetch 1 ,mem_24g_rf_work_stage 
+0127 c000811d beq 1 ,p_g24_transmit_hop_pac_succ_wo_hop 
+0128 c001011e beq 2 ,p_g24_transmit_hop_pac_succ 
+0129 20600000 rtn 
+
+p_g24_rf_sta_check:
+012a 6800cbed fetch 1 ,mem_24g_pairing_sm 
+012b c1ff8000 rtnne state_24g_pairing_success 
+012c 2040012f call p_g24_rf_laststa_synccnt_check 
+012d 24560137 ncall p_g24_rf_sync_cnt_check ,user2 
+012e 20600000 rtn 
+
+p_g24_rf_laststa_synccnt_check:
+012f 78567c00 disable user2 
+0130 6800cd13 fetch 1 ,mem_24g_rf_last_sta 
+0131 c1808000 rtnne 1 
+0132 6800cd15 fetch 1 ,mem_24g_sync_cnt 
+0133 c1800000 rtnne 0 
+0134 704d1401 jam 1 ,mem_24g_rf_work_stage 
+0135 704c2204 jam 4 ,mem_24g_max_retry 
+0136 20207feb branch enable_user2 
+
+p_g24_rf_sync_cnt_check:
+0137 6800cd15 fetch 1 ,mem_24g_sync_cnt 
+0138 203a013e branch p_g24_rf_hop_attemp ,blank 
+0139 1fe0ffff increase -1 ,pdata 
+013a 6000cd15 store 1 ,mem_24g_sync_cnt 
+013b 704d1402 jam 2 ,mem_24g_rf_work_stage 
+013c 704c2204 jam 4 ,mem_24g_max_retry 
+013d 20200259 branch p_g24_ch 
+
+p_g24_rf_hop_attemp:
+013e 704d1403 jam 3 ,mem_24g_rf_work_stage 
+013f 6800cd12 fetch 1 ,mem_24g_rf_hop_ch 
+0140 243a0111 nbranch p_g24_rf_hop_attemp_again ,blank 
+0141 704c2202 jam 2 ,mem_24g_max_retry 
+0142 20200259 branch p_g24_ch 
+
+p_g24_txdata_prep:
+0143 6800cbed fetch 1 ,mem_24g_pairing_sm 
+0144 c0ff81c7 bne state_24g_pairing_success ,p_g24_pairing_sm 
+
+p_g24_txdata_prep_packeage_data:
+0145 20400149 call p_g24_package_data 
+
+p_g24_txdata_enable_tx:
+0146 20400247 call p_g24_transmit_prep 
+0147 704be201 jam ensure_on_24g ,mem_24g_ensure 
+0148 20600000 rtn 
+
+p_g24_package_data:
+0149 68014d0e fetch 2 ,mem_cb_24g_data 
+014a 20407f9c call callback_func 
+014b 2034014f branch p_g24_accumulate_mouse_data ,user 
+014c 6803cb7a fetch 7 ,mem_24g_txbuf + 1 
+014d 207a0000 rtn blank 
+014e 20207fe7 branch enable_user 
+
+p_g24_accumulate_mouse_data:
+014f 20400402 call p_mouse_data_xy_release 
+0150 704c0900 jam 0 ,mem_24g_abort_pac 
+0151 1a20fe01 add rega ,1 ,pdata 
+0152 6000cbdd store 1 ,mem_24g_datalen 
+0153 204000f6 call p_g24_transmit_rf_ctrl_clear 
+0154 6000cb79 store 1 ,mem_24g_txbuf 
+0155 e8a88000 ifetcht 1 ,contw 
+0156 ea408000 ifetch 1 ,regb 
+0157 9841fe00 ior temp ,pdata 
+0158 e0a08000 istore 1 ,contw 
+0159 1a40a401 increase 1 ,regb 
+015a ea420000 ifetch 4 ,regb 
+015b e0a20000 istore 4 ,contw 
+015c 1a40a404 increase 4 ,regb 
+015d d8a04b7f arg mem_24g_txbuf + 6 ,contw 
+015e df200002 arg 2 ,loopcnt 
+
+p_g24_accumulation_loop:
+015f ea408000 ifetch 1 ,regb 
+0160 e8a88000 ifetcht 1 ,contw 
+0161 9840fe00 iadd temp ,pdata 
+0162 e0a08000 istore 1 ,contw 
+0163 1a40a401 increase 1 ,regb 
+0164 c200015f loop p_g24_accumulation_loop 
+0165 20600000 rtn 
+
+p_g24_transmit_packet:
+0166 704be600 jam 0 ,mem_24g_retry 
+
+p_g24_transmit_loop:
+0167 d9600d00 arg param_rx_setup ,timeup 
+0168 34730200 until clkn_rt ,meet 
+0169 20400181 call p_g24_transmit_receive_ack 
+016a 6800cc19 fetch 1 ,mem_24g_no_ack 
+016b c1008000 rtneq no_ack_24g 
+016c 242c0190 nbranch p_g24_retransmit ,sync 
+016d 24378190 nbranch p_g24_retransmit ,user3 
+016e 204000ea call p_g24_search_dongle_success 
+016f 2040017c call p_g24_txbuf_clear 
+0170 204001ae call p_g24_ackpayload_parse 
+0171 204006d8 call power_ctrl_pac_succ_incrs 
+
+p_g24_transmit_next_packet:
+0172 6800cbdc fetch 1 ,mem_24g_pid 
+0173 1fe0fe01 increase 1 ,pdata 
+0174 6000cbdc store 1 ,mem_24g_pid 
+0175 6800cbed fetch 1 ,mem_24g_pairing_sm 
+0176 c0ff817f bne state_24g_pairing_success ,p_g24_paring_mode_start 
+0177 20400121 call p_g24_transmit_succ_rf_config 
+
+p_g24_transmit_abandon:
+0178 58000000 setarg 0 
+0179 60024be2 store 4 ,mem_24g_ensure 
+017a 6000cd11 store 1 ,mem_24g_hop_pac_retry 
+017b 20600000 rtn 
+
+p_g24_txbuf_clear:
+017c df200004 arg 4 ,loopcnt 
+017d d8a04b79 arg mem_24g_txbuf ,contw 
+017e 20207ec6 branch memset0 
+
+p_g24_paring_mode_start:
+017f 204006d5 call power_ctrl_pac_succ_cnt_init 
+0180 202001e1 branch p_g24_paring_mode 
+
+p_g24_transmit_receive_ack:
+0181 7857fc00 disable user3 
+0182 204002b6 call p_g24_transmit 
+0183 6800cc19 fetch 1 ,mem_24g_no_ack 
+0184 c000818e beq no_ack_24g ,p_g24_transmit_no_ack 
+0185 18002a00 force 0 ,radio_ctrl 
+0186 68024c05 fetch 4 ,mem_24g_addr 
+0187 98001200 iforce access 
+0188 68088017 fetcht 1 ,mem_last_freq 
+0189 2040291f call set_freq_rx 
+018a 20402924 call rf_rx_enable 
+018b 20400273 call p_g24_receive_rxon 
+018c 205782af call p_g24_end_of_packet ,user3 
+018d 20600000 rtn 
+
+p_g24_transmit_no_ack:
+018e 204002af call p_g24_end_of_packet 
+018f 20200172 branch p_g24_transmit_next_packet 
+
+p_g24_retransmit:
+0190 6800cc09 fetch 1 ,mem_24g_abort_pac 
+0191 247a0000 nrtn blank 
+0192 6800cbe5 fetch 1 ,mem_24g_get_ack_fail 
+0193 1fe0fe01 increase 1 ,pdata 
+0194 6000cbe5 store 1 ,mem_24g_get_ack_fail 
+0195 6800cbed fetch 1 ,mem_24g_pairing_sm 
+0196 c0ff81a6 bne state_24g_pairing_success ,p_g24_tx_paring_retry 
+0197 6808cbe6 fetcht 1 ,mem_24g_retry 
+0198 18408401 increase 1 ,temp 
+0199 6008cbe6 storet 1 ,mem_24g_retry 
+019a 6800cc22 fetch 1 ,mem_24g_max_retry 
+019b 98467e00 isub temp ,pdata 
+019c 243a0167 nbranch p_g24_transmit_loop ,blank 
+019d 6800cd14 fetch 1 ,mem_24g_rf_work_stage 
+019e c001810a beq 3 ,p_g24_transmit_pac_fail_hop_stage3 
+019f 6800cd11 fetch 1 ,mem_24g_hop_pac_retry 
+01a0 1fe0fe01 increase 1 ,pdata 
+01a1 6000cd11 store 1 ,mem_24g_hop_pac_retry 
+01a2 c00100ff beq 2 ,p_g24_transmit_hop_pac_fail 
+01a3 204000fa call p_g24_hop_ch_enable 
+01a4 704c2201 jam 1 ,mem_24g_max_retry 
+01a5 20200166 branch p_g24_transmit_packet 
+
+p_g24_tx_paring_retry:
+01a6 6800cbe5 fetch 1 ,mem_24g_get_ack_fail 
+01a7 c1ff8000 rtnne 0xff 
+01a8 704be500 jam 0 ,mem_24g_get_ack_fail 
+01a9 202001ac branch p_g24_stop_g24_mode 
+
+p_g24_tx_attempt_fail:
+01aa 58000000 setarg 0 
+01ab 60014be3 store 2 ,mem_24g_txfail_cnt 
+
+p_g24_stop_g24_mode:
+01ac 700a993a jam bt_evt_24g_attempt_fail ,mem_fifo_temp 
+01ad 20207d86 branch ui_ipc_send_event 
+
+p_g24_ackpayload_parse:
+01ae 2040023a call p_g24_read_len_pid_crc 
+01af 6800cbdb fetch 1 ,mem_24g_rxdata_length 
+01b0 207a0000 rtn blank 
+01b1 98007200 iforce loopcnt 
+01b2 d8c04b59 arg mem_24g_rxbuf + 2 ,contr 
+01b3 d8a04bbb arg mem_24g_rxpayload ,contw 
+01b4 20207f01 branch memcpy 
+
+p_g24_pair_init:
+01b5 7041de00 jam tx_power_0db ,mem_tx_power 
+01b6 704bdc00 jam 0 ,mem_24g_pid 
+01b7 704be74e jam g24_pair_ch ,mem_24g_ch 
+01b8 68024be9 fetch 4 ,mem_24g_paring_addr 
+
+p_g24_update_addr_and_synccrc8:
+01b9 60024c05 store 4 ,mem_24g_addr 
+
+p_g24_syncword_crc8:
+01ba da200000 arg 0 ,rega 
+01bb df200004 arg 4 ,loopcnt 
+01bc d8c04c05 arg mem_24g_addr ,contr 
+
+p_g24_syncword_crc8_loop:
+01bd e8c08000 ifetch 1 ,contr 
+01be 9a20a200 iadd rega ,rega 
+01bf c20001bd loop p_g24_syncword_crc8_loop 
+01c0 1a227e00 copy rega ,pdata 
+01c1 60014c8e store 2 ,mem_24g_syncword 
+01c2 6800cc8e fetch 1 ,mem_24g_syncword 
+01c3 6808cc8f fetcht 1 ,mem_24g_syncword + 1 
+01c4 9840fe00 iadd temp ,pdata 
+01c5 6000cc90 store 1 ,mem_24g_syncword_crc8 
+01c6 20600000 rtn 
+
+p_g24_pairing_sm:
+01c7 6800cbe2 fetch 1 ,mem_24g_ensure 
+01c8 c000ffe7 beq ensure_on_24g ,enable_user 
+01c9 6800cbed fetch 1 ,mem_24g_pairing_sm 
+01ca c00081ce beq state_24g_pairing_1 ,p_g24_pairing_sm_1 
+01cb c00101d1 beq state_24g_pairing_2 ,p_g24_pairing_sm_2 
+01cc c00181d4 beq state_24g_pairing_3 ,p_g24_pairing_sm_3 
+01cd 20202a8c branch assert 
+
+p_g24_pairing_sm_1:
+01ce 704bed11 jam state_24g_pairing_1_waiting_ack ,mem_24g_pairing_sm 
+01cf 70119eaa jam 0xaa ,mem_24g_common_temp 
+01d0 202001d6 branch p_g24_pairing_sm_common 
+
+p_g24_pairing_sm_2:
+01d1 704bed12 jam state_24g_pairing_2_waiting_ack ,mem_24g_pairing_sm 
+01d2 70119e55 jam 0x55 ,mem_24g_common_temp 
+01d3 202001d6 branch p_g24_pairing_sm_common 
+
+p_g24_pairing_sm_3:
+01d4 704bed13 jam state_24g_pairing_3_waiting_ack ,mem_24g_pairing_sm 
+01d5 70119e22 jam 0x22 ,mem_24g_common_temp 
+
+p_g24_pairing_sm_common:
+01d6 6800cbde fetch 1 ,mem_24g_data_type 
+01d7 1fe17e07 and_into bits_data ,pdata 
+01d8 6000919f store 1 ,mem_24g_common_temp + 1 
+01d9 68024c14 fetch 4 ,mem_24g_device_addr 
+01da 600211a0 store 4 ,mem_24g_common_temp + 2 
+
+p_g24_put_pairing_data_in_buff:
+01db 7011a400 jam 0 ,mem_24g_common_temp + 6 
+01dc da20119e arg mem_24g_common_temp ,rega 
+01dd d8400007 arg 7 ,temp 
+01de 20400235 call p_g24_put_data_in_buff 
+01df 20400146 call p_g24_txdata_enable_tx 
+01e0 20207fe7 branch enable_user 
+
+p_g24_paring_mode:
+01e1 6800cbed fetch 1 ,mem_24g_pairing_sm 
+01e2 c17f8000 rtneq state_24g_pairing_success 
+01e3 c00881e7 beq state_24g_pairing_1_waiting_ack ,p_g24_pairing_sm_1_waiting_ack 
+01e4 c00901e9 beq state_24g_pairing_2_waiting_ack ,p_g24_pairing_sm_2_waiting_ack 
+01e5 c00981eb beq state_24g_pairing_3_waiting_ack ,p_g24_pairing_sm_3_waiting_ack 
+01e6 20600000 rtn 
+
+p_g24_pairing_sm_1_waiting_ack:
+01e7 704bed02 jam state_24g_pairing_2 ,mem_24g_pairing_sm 
+01e8 20200178 branch p_g24_transmit_abandon 
+
+p_g24_pairing_sm_2_waiting_ack:
+01e9 704bed03 jam state_24g_pairing_3 ,mem_24g_pairing_sm 
+01ea 20200178 branch p_g24_transmit_abandon 
+
+p_g24_pairing_sm_3_waiting_ack:
+01eb 704bedff jam state_24g_pairing_success ,mem_24g_pairing_sm 
+01ec 700a9939 jam bt_evt_24g_pairing_complete ,mem_fifo_temp 
+01ed 20407d86 call ui_ipc_send_event 
+01ee 68024bbd fetch 4 ,mem_24g_rxpayload + 2 
+01ef 204001b9 call p_g24_update_addr_and_synccrc8 
+01f0 20200178 branch p_g24_transmit_abandon 
+
+p_g24_start_24g_mode:
+01f1 204003bd call p_g24_factory_check 
+01f2 20340205 branch p_g24_auto_pair_start ,user 
+01f3 79200026 set1 mark_24g ,mark 
+01f4 6800cd25 fetch 1 ,mem_g24_conn_sm 
+01f5 79207e02 set1 state_24g_reconn ,pdata 
+01f6 6000cd25 store 1 ,mem_g24_conn_sm 
+01f7 20400225 call p_g24_ch_syncword_crc8_init 
+01f8 20200209 branch p_g24_auto_pair_timeout_init 
+
+p_g24_tx_attemp_data_prep:
+01f9 70119eff jam 0xff ,mem_24g_common_temp 
+01fa 6800cbde fetch 1 ,mem_24g_data_type 
+01fb 6000919f store 1 ,mem_24g_common_temp + 1 
+01fc 68024c14 fetch 4 ,mem_24g_device_addr 
+01fd 600211a0 store 4 ,mem_24g_common_temp + 2 
+01fe d8400006 arg 6 ,temp 
+01ff da20119e arg mem_24g_common_temp ,rega 
+0200 20400235 call p_g24_put_data_in_buff 
+0201 20200247 branch p_g24_transmit_prep 
+
+p_g24_attemp_txdata_retry:
+0202 20400259 call p_g24_ch 
+0203 20600000 rtn 
+0204 2020005f branch p_g24_short_sleep 
+
+p_g24_auto_pair_start:
+0205 79200026 set1 mark_24g ,mark 
+0206 6800cd25 fetch 1 ,mem_g24_conn_sm 
+0207 79207e01 set1 state_24g_pair ,pdata 
+0208 6000cd25 store 1 ,mem_g24_conn_sm 
+
+p_g24_auto_pair_timeout_init:
+0209 680146a8 fetch 2 ,mem_mouse_direct_timeout 
+020a 60014b4e store 2 ,mem_g24_stop_g24_mode_timeout 
+020b 704b4d00 jam 0 ,mem_g24_stop_g24_mode 
+020c 20600000 rtn 
+
+p_g24_auto_pair_timeout_clear:
+020d 58000000 setarg 0 
+020e 60014b4e store 2 ,mem_g24_stop_g24_mode_timeout 
+020f 704b4d00 jam 0 ,mem_g24_stop_g24_mode 
+0210 20600000 rtn 
+
+p_g24_pair_txdata_retry:
+0211 20400214 call p_g24_pair_txdata_switch 
+0212 20600000 rtn 
+0213 2020005f branch p_g24_short_sleep 
+
+p_g24_pair_txdata_switch:
+0214 6800cd1b fetch 1 ,mem_24g_auto_paring_switch 
+0215 1fe0fe01 increase 1 ,pdata 
+0216 1fe17e03 and_into 3 ,pdata 
+0217 6000cd1b store 1 ,mem_24g_auto_paring_switch 
+0218 c000021d beq 0 ,p_g24_auto_pair_first_attemp 
+0219 c00081b5 beq 1 ,p_g24_pair_init 
+021a c0010227 beq 2 ,p_g24_auto_pair_all_powerful 
+021b c00181b5 beq 3 ,p_g24_pair_init 
+021c 20600000 rtn 
+
+p_g24_auto_pair_first_attemp:
+021d 20400323 call p_mouse_tx_power_init 
+021e 68024c14 fetch 4 ,mem_24g_device_addr 
+021f 60024c05 store 4 ,mem_24g_addr 
+0220 6800cb50 fetch 1 ,mem_24g_pair_current_ch_num 
+0221 6000cbe8 store 1 ,mem_24g_current_ch_number 
+0222 20400225 call p_g24_ch_syncword_crc8_init 
+0223 6008cb50 storet 1 ,mem_24g_pair_current_ch_num 
+0224 20600000 rtn 
+
+p_g24_ch_syncword_crc8_init:
+0225 204001ba call p_g24_syncword_crc8 
+0226 20200259 branch p_g24_ch 
+
+p_g24_auto_pair_all_powerful:
+0227 7041de20 jam tx_power_pair ,mem_tx_power 
+0228 58000f0f setarg 0x0f0f 
+0229 60014c05 store 2 ,mem_24g_addr 
+022a e0a10000 istore 2 ,contw 
+022b 6800cb51 fetch 1 ,mem_24g_powerful_current_ch_num 
+022c 6000cbe8 store 1 ,mem_24g_current_ch_number 
+022d 20400225 call p_g24_ch_syncword_crc8_init 
+022e 6008cb51 storet 1 ,mem_24g_powerful_current_ch_num 
+022f 20600000 rtn 
+
+p_g24_check_51cmd_stop_24g:
+0230 793f8026 set0 mark_24g ,mark 
+0231 704d2500 jam state_24g_stop ,mem_g24_conn_sm 
+0232 204053ce call le_disable 
+
+p_mouse_disable_g24_pairing_flag:
+0233 d8e00003 arg mosue_24g_pairing_flag ,queue 
+0234 202043d2 branch mouse_disable_function_flag 
+
+p_g24_put_data_in_buff:
+0235 6008cbdd storet 1 ,mem_24g_datalen 
+0236 18427200 copy temp ,loopcnt 
+0237 d8a04b79 arg mem_24g_txbuf ,contw 
+0238 1a220c00 copy rega ,contr 
+0239 20207f01 branch memcpy 
+
+p_g24_read_len_pid_crc:
+023a 6800cb58 fetch 1 ,mem_24g_rxbuf + 1 
+023b 1fe97e00 rshift3 pdata ,pdata 
+023c 6000cbdb store 1 ,mem_24g_rxdata_length 
+023d 1fe0fe01 increase 1 ,pdata 
+023e d8c04b58 arg mem_24g_rxbuf + 1 ,contr 
+023f 98c08c00 iadd contr ,contr 
+0240 e8c18000 ifetch 3 ,contr 
+0241 6001cc1a store 3 ,mem_24g_sta_crc 
+0242 6800cb58 fetch 1 ,mem_24g_rxbuf + 1 
+0243 1fe37e00 rshift pdata ,pdata 
+0244 1fe17e03 and pdata ,0x03 ,pdata 
+0245 6000cc20 store 1 ,mem_24g_sta_pid 
+0246 20600000 rtn 
+
+p_g24_transmit_prep:
+0247 6800cbdd fetch 1 ,mem_24g_datalen 
+0248 1fe0fe02 increase 2 ,pdata 
+0249 6000cbdf store 1 ,mem_24g_txlen 
+024a 6800cbde fetch 1 ,mem_24g_data_type 
+024b 6000cb99 store 1 ,mem_24g_txpayload 
+024c 6800cbdd fetch 1 ,mem_24g_datalen 
+024d 1fe9fe00 lshift3 pdata ,pdata 
+024e 6808cbdc fetcht 1 ,mem_24g_pid 
+024f 18410403 and temp ,0x03 ,temp 
+0250 18438400 lshift temp ,temp 
+0251 9841fe00 ior temp ,pdata 
+0252 6808cc19 fetcht 1 ,mem_24g_no_ack 
+0253 9840fe00 iadd temp ,pdata 
+0254 e0a08000 istore 1 ,contw 
+0255 6800cbdd fetch 1 ,mem_24g_datalen 
+0256 98007200 iforce loopcnt 
+0257 d8c04b79 arg mem_24g_txbuf ,contr 
+0258 20207f01 branch memcpy 
+
+p_g24_ch:
+0259 6808cbe8 fetcht 1 ,mem_24g_current_ch_number 
+025a 2040025d call p_g24_ch_map_size 
+025b 6008cbe8 storet 1 ,mem_24g_current_ch_number 
+025c 20600000 rtn 
+
+p_g24_ch_map_size:
+025d 20400261 call p_g24_ch_calc 
+025e 18408401 increase 1 ,temp 
+025f 18410403 and_into 3 ,temp 
+0260 20600000 rtn 
+
+p_g24_ch_calc:
+0261 6800cc05 fetch 1 ,mem_24g_addr 
+0262 1fe17e03 and_into 0x03 ,pdata 
+0263 1fefa204 mul32 pdata ,4 ,rega 
+0264 58004bee setarg mem_24g_ch_map1 
+0265 9a20fe00 iadd rega ,pdata 
+0266 98408c00 iadd temp ,contr 
+0267 e8c08000 ifetch 1 ,contr 
+0268 6000cbe7 store 1 ,mem_24g_ch 
+0269 20600000 rtn 
+
+p_g24_prep:
+026a 7844fc00 disable enable_crc 
+026b 7843fc00 disable enable_white 
+026c 58555555 setarg 0x555555 
+026d 98001e00 iforce crc24_init 
+026e 6800cbe7 fetch 1 ,mem_24g_ch 
+026f 1fed8400 reverse pdata ,temp 
+0270 79200401 set1 1 ,temp 
+0271 18431c00 rshift temp ,white_init 
+0272 20600000 rtn 
+
+p_g24_receive_rxon:
+0273 2040026a call p_g24_prep 
+0274 7857fc00 disable user3 
+0275 7826fc00 enable decode_fec0 
+0276 7830fc00 enable is_rx 
+0277 78507c00 disable is_tx 
+0278 78287c00 enable swfine 
+0279 68014be0 fetch 2 ,mem_24g_rx_window 
+027a 98003600 iforce stop_watch 
+027b 37c18400 correlate null ,timeout 
+027c 242c02af nbranch p_g24_sync_timeout ,sync 
+027d 7846fc00 disable decode_fec0 
+027e 7825fc00 enable decode_fec1 
+027f 7823fc00 enable enable_white 
+0280 7824fc00 enable enable_crc 
+0281 204002ac call p_g24_receive_byte 
+0282 6000cc91 store 1 ,mem_24g_get_syncword_crc8 
+0283 6808cc90 fetcht 1 ,mem_24g_syncword_crc8 
+0284 98467c00 isub temp ,null 
+0285 242282af nbranch p_g24_end_of_packet ,zero 
+0286 204002ac call p_g24_receive_byte 
+0287 6000cb57 store 1 ,mem_24g_rxbuf 
+0288 6800cc23 fetch 1 ,mem_24g_mode 
+0289 1fe67c02 sub pdata ,rx_24g ,null 
+028a 2022828f branch p_g24_receive_skip ,zero 
+028b 6800cb57 fetch 1 ,mem_24g_rxbuf 
+028c 6808cbde fetcht 1 ,mem_24g_data_type 
+028d a8400e00 icompare bits_data ,temp 
+028e 242082af nbranch p_g24_end_of_packet ,true 
+
+p_g24_receive_skip:
+028f 204002ac call p_g24_receive_byte 
+0290 e0a08000 istore 1 ,contw 
+0291 1fe97e00 rshift3 pdata ,pdata 
+0292 1fe1721f and pdata ,0x1f ,loopcnt 
+0293 20228297 branch p_g24rx_nopayload ,zero 
+
+p_g24rx_loop:
+0294 204002ac call p_g24_receive_byte 
+0295 e0a08000 istore 1 ,contw 
+0296 c2000294 loop p_g24rx_loop 
+
+p_g24rx_nopayload:
+0297 18a22200 copy contw ,rega 
+0298 204002ac call p_g24_receive_byte 
+0299 6000cd18 store 1 ,mem_rssi_hex_received 
+029a 1a220a00 copy rega ,contw 
+029b 09800018 parse demod ,bucket ,24 
+029c 78287c00 enable swfine 
+029d db600664 arg param_sifs ,stop_watch 
+029e 1fef7e00 rshift32 pdata ,pdata 
+029f 1ff17e00 rshift16 pdata ,pdata 
+02a0 e0a18000 istore 3 ,contw 
+02a1 7845fc00 disable decode_fec1 
+02a2 202302af branch p_g24_end_of_packet ,crc_failed 
+02a3 7837fc00 enable user3 
+02a4 68008017 fetch 1 ,mem_last_freq 
+02a5 1fe0a200 add pdata ,0 ,rega 
+02a6 20402981 call rf_write_freq 
+02a7 7846fc00 disable decode_fec0 
+02a8 20402918 call set_sync_on 
+02a9 6800cd18 fetch 1 ,mem_rssi_hex_received 
+02aa 2040001f call p_rssi_signal 
+02ab 20600000 rtn 
+
+p_g24_receive_byte:
+02ac 09800008 parse demod ,bucket ,8 
+02ad 19897e00 rshift3 pwindow ,pdata 
+02ae 20600000 rtn 
+
+p_g24_sync_timeout:
+
+p_g24_end_of_packet:
+02af 784dfc00 disable encode_fec1 
+02b0 7845fc00 disable decode_fec1 
+02b1 2040264d call end_of_packet 
+02b2 20600000 rtn 
+
+p_g24_set_freq_tx:
+02b3 20402918 call set_sync_on 
+02b4 6808cbe7 fetcht 1 ,mem_24g_ch 
+02b5 20202933 branch set_freq_tx 
+
+p_g24_transmit:
+02b6 204053c4 call le_enable 
+02b7 68024c05 fetch 4 ,mem_24g_addr 
+02b8 98001200 iforce access 
+02b9 2040026a call p_g24_prep 
+02ba 204002b3 call p_g24_set_freq_tx 
+02bb 79202a00 set1 txgfsk ,radio_ctrl 
+02bc 782efc00 enable encode_fec0 
+02bd 78307c00 enable is_tx 
+02be 7850fc00 disable is_rx 
+02bf 19317e00 rshift16 access ,pdata 
+02c0 1fecfe00 rshift8 pdata ,pdata 
+02c1 1ff1fe00 rshift4 pdata ,pdata 
+02c2 08008628 inject mod ,40 
+02c3 784efc00 disable encode_fec0 
+02c4 782dfc00 enable encode_fec1 
+02c5 7823fc00 enable enable_white 
+02c6 7824fc00 enable enable_crc 
+02c7 6800cc90 fetch 1 ,mem_24g_syncword_crc8 
+02c8 08008608 inject mod ,8 
+02c9 6800cbdf fetch 1 ,mem_24g_txlen 
+02ca 98007200 iforce loopcnt 
+02cb d8c04b99 arg mem_24g_txpayload ,contr 
+
+p_g24tr_loop:
+02cc e8c08000 ifetch 1 ,contr 
+02cd 08008608 inject mod ,8 
+02ce c20002cc loop p_g24tr_loop 
+02cf 78247c00 enable enable_parity 
+02d0 08008618 inject mod ,24 
+02d1 78447c00 disable enable_parity 
+02d2 37d38200 until null ,tx_clear 
+02d3 20000064 nop 100 
+02d4 784efc00 disable encode_fec0 
+02d5 784dfc00 disable encode_fec1 
+02d6 20600000 rtn 
+
+p_g24_timer_check:
+02d7 20407fe9 call disable_user 
+02d8 680a4bfe fetcht 4 ,mem_24g_tx_btclk 
+02d9 1c427e00 copy clkn_bt ,pdata 
+02da 98467c00 isub temp ,null 
+02db 24412d18 ncall g24_timer_timeout ,positive 
+02dc 1fe22400 copy pdata ,regb 
+02dd 68024bfe fetch 4 ,mem_24g_tx_btclk 
+02de 6808cc02 fetcht 1 ,mem_24g_interval 
+02df 98408400 iadd temp ,temp 
+02e0 1a427e00 copy regb ,pdata 
+02e1 98467c00 isub temp ,null 
+02e2 24610000 nrtn positive 
+02e3 793ffe1c set0 28 ,pdata 
+02e4 60024bfe store 4 ,mem_24g_tx_btclk 
+02e5 20207fe7 branch enable_user 
+
+p_rssi_average:
+02e6 d8400000 arg 0 ,temp 
+02e7 df200008 arg rssi_buf_len_signal + 1 ,loopcnt 
+02e8 1a220c00 copy rega ,contr 
+
+p_rssi_average_loop:
+02e9 e8c08000 ifetch 1 ,contr 
+02ea 98408400 iadd temp ,temp 
+02eb c20002e9 loop p_rssi_average_loop 
+02ec 18497e00 rshift3 temp ,pdata 
+02ed 1fe20400 copy pdata ,temp 
+02ee c6930000 rtnmark0 mark_24g 
+02ef 1fe6fc0a div pdata ,10 
+02f0 20407f86 call wait_div_end 
+02f1 1807fe00 quotient pdata 
+02f2 1ff27e00 lshift4 pdata ,pdata 
+02f3 18070400 remainder temp 
+02f4 98418400 ior temp ,temp 
+02f5 20600000 rtn 
+02f6 20600000 rtn 
 
 p_mouse_before_lpm:
-0096 c6130000 rtnmark1 mark_24g 
-0097 204000aa call p_mouse_le_txbuff_save 
-0098 204000a0 call p_mouse_setgpio_lpm 
-0099 6800c040 fetch 1 ,mem_context 
-009a c300009d bbit0 state_inconn ,p_clear_wake 
-009b 680080a0 fetch 1 ,mem_lpm_current_mult 
-009c 247a0000 nrtn blank 
+02f7 c6130000 rtnmark1 mark_24g 
+02f8 204003db call p_mouse_le_txbuff_save 
+02f9 20400301 call p_mouse_setgpio_lpm 
+02fa 6800c040 fetch 1 ,mem_context 
+02fb c30002fe bbit0 state_inconn ,p_clear_wake 
+02fc 680080a0 fetch 1 ,mem_lpm_current_mult 
+02fd 247a0000 nrtn blank 
 
 p_clear_wake:
-009d 58000000 setarg 0 
-009e 600400a1 store 8 ,mem_gpio_wakeup_low 
-009f 20600000 rtn 
+02fe 58000000 setarg 0 
+02ff 600400a1 store 8 ,mem_gpio_wakeup_low 
+0300 20600000 rtn 
 
 p_mouse_setgpio_lpm:
-00a0 20400280 call p_mouse_seting_dpi_sensor_type 
-00a1 2040009d call p_clear_wake 
+0301 2040030a call p_mouse_set_sdio_high 
+0302 204002fe call p_clear_wake 
 
 p_mouse_setgpio_lpm_before:
-00a2 20403ebf call mouse_lpm_before_common 
-00a3 2040027b call p_mouse_led_output_high 
-00a4 68120070 hfetch 4 ,core_gpio_oe0 
-00a5 681a0078 hfetcht 4 ,core_gpio_pu0 
-00a6 98418400 ior temp ,temp 
-00a7 18440400 invert temp ,temp 
-00a8 601a007c hstoret 4 ,core_gpio_pd0 
-00a9 20600000 rtn 
-
-p_mouse_le_txbuff_save:
-00aa d8c01800 arg mem_le_tx_buffer0 ,contr 
-00ab d8a0480f arg mem_le_tx_buffer0_omemalloc ,contw 
-00ac 204000b2 call p_mouse_le_txbuff_copy 
-00ad d8c01900 arg mem_le_tx_buffer1 ,contr 
-00ae 204000b2 call p_mouse_le_txbuff_copy 
-00af d8c01a00 arg mem_le_tx_buffer2 ,contr 
-00b0 204000b2 call p_mouse_le_txbuff_copy 
-00b1 d8c01b00 arg mem_le_tx_buffer3 ,contr 
-
-p_mouse_le_txbuff_copy:
-00b2 df20001b arg 27 ,loopcnt 
-00b3 20207f01 branch memcpy 
-
-p_mouse_le_txbuff_load:
-00b4 d8c0480f arg mem_le_tx_buffer0_omemalloc ,contr 
-00b5 d8a01800 arg mem_le_tx_buffer0 ,contw 
-00b6 204000b2 call p_mouse_le_txbuff_copy 
-00b7 d8a01900 arg mem_le_tx_buffer1 ,contw 
-00b8 204000b2 call p_mouse_le_txbuff_copy 
-00b9 d8a01a00 arg mem_le_tx_buffer2 ,contw 
-00ba 204000b2 call p_mouse_le_txbuff_copy 
-00bb d8a01b00 arg mem_le_tx_buffer3 ,contw 
-00bc 202000b2 branch p_mouse_le_txbuff_copy 
+0303 20403ebf call mouse_lpm_before_common 
+0304 68120070 hfetch 4 ,core_gpio_oe0 
+0305 681a0078 hfetcht 4 ,core_gpio_pu0 
+0306 98418400 ior temp ,temp 
+0307 18440400 invert temp ,temp 
+0308 601a007c hstoret 4 ,core_gpio_pd0 
+0309 20600000 rtn 
+
+p_mouse_set_sdio_high:
+030a 6800cb0c fetch 1 ,mem_mouse_init_sensor_reset_flag 
+030b 207a0000 rtn blank 
+030c 2020055f branch p_mouse_seting_dpi_sensor_type 
 
 p_device_init:
-00bd 20403416 call app_lpm_mult_enable 
-00be 203580c8 branch p_device_init_common ,wake 
-00bf 204006c6 call p_mouse_data_init 
-00c0 6800c1de fetch 1 ,mem_tx_power 
-00c1 6000c9e8 store 1 ,mem_tx_power_temp 
-00c2 204004e3 call power_ctrl_pac_succ_cnt_init 
-00c3 6800c685 fetch 1 ,mem_ui_button_timeout 
-00c4 6000c6da store 1 ,mem_combination_ui_button_count 
-00c5 204043ca call mouse_bt_discovery_button_down_disable 
-00c6 680344a0 fetch 6 ,mem_le_lap 
-00c7 600348a0 store 6 ,mem_le_normal_lap 
+030d 20403416 call app_lpm_mult_enable 
+030e 20358318 branch p_device_init_common ,wake 
+030f 20400408 call p_mouse_data_init 
+0310 6800c1de fetch 1 ,mem_tx_power 
+0311 6000cc94 store 1 ,mem_tx_power_temp 
+0312 204006d5 call power_ctrl_pac_succ_cnt_init 
+0313 6800c685 fetch 1 ,mem_ui_button_timeout 
+0314 6000c6da store 1 ,mem_combination_ui_button_count 
+0315 204043ca call mouse_bt_discovery_button_down_disable 
+0316 680344a0 fetch 6 ,mem_le_lap 
+0317 60034b41 store 6 ,mem_le_normal_lap 
 
 p_device_init_common:
-00c8 204000ca call p_mouse_init 
-00c9 202074b9 branch enable_authrom 
+0318 2040031a call p_mouse_init 
+0319 202074b9 branch enable_authrom 
 
 p_mouse_init:
-00ca 2455811e ncall p_mouse_setting_config ,wake 
-00cb 2040640f call spi_ncs_enable 
-00cc 20400101 call p_mouse_init_sunt 
-00cd 20406411 call spi_ncs_disable 
-00ce 20758000 rtn wake 
-00cf 20400179 call p_mouse_cb_fuction 
-00d0 20400279 call p_mouse_led_output_init 
-00d1 204002a2 call p_mouse_check_key_gpio 
-00d2 c00280f2 beq mouse_lm_button ,p_mouse_24g_pairing_button 
-00d3 2020016c branch p_mouse_wakeup_from_power 
-
-p_mouse_tx_power_init:
-00d4 6800c9e8 fetch 1 ,mem_tx_power_temp 
-00d5 6000c1de store 1 ,mem_tx_power 
-00d6 20600000 rtn 
+031a 2455835f ncall p_mouse_setting_config ,wake 
+031b 20400341 call p_mouse_spi_init 
+031c 20758000 rtn wake 
+031d 204003c6 call p_mouse_cb_fuction 
+031e 202003a4 branch p_mouse_wakeup_from_power 
 
 p_mouse_check_reconn_target:
-00d7 6800c87f fetch 1 ,mem_mouse_device_led_on_timer_init 
-00d8 6000c880 store 1 ,mem_mouse_device_led_on_timer_count 
-00d9 70487e01 jam 1 ,mem_mouse_ble_reconn_enable 
-00da 70487d00 jam 0 ,mem_mouse_ble_led_on_enable 
-00db 202000dc branch p_mouse4_0_check_reconn_target 
+031f 20400323 call p_mouse_tx_power_init 
+0320 6800c210 fetch 1 ,mem_xrecord_mode 
+0321 c01a0326 beq rec_4_mode ,p_mouse4_0_check_reconn_target 
+0322 2020340a branch app_enter_hibernate 
+
+p_mouse_tx_power_init:
+0323 6800cc94 fetch 1 ,mem_tx_power_temp 
+0324 6000c1de store 1 ,mem_tx_power 
+0325 20600000 rtn 
 
 p_mouse4_0_check_reconn_target:
-00dc 7047a301 jam 1 ,mem_mouse_le_reconnect_flag 
-00dd 680146a8 fetch 2 ,mem_mouse_direct_timeout 
+0326 704b3d01 jam 1 ,mem_le_send_security_request_flag 
+0327 70479f01 jam 1 ,mem_mouse_le_reconnect_flag 
+0328 680146a8 fetch 2 ,mem_mouse_direct_timeout 
+0329 6800cb40 fetch 1 ,mem_mouse_fast_conn_flag 
+032a c0ff832c bne 0xff ,p_mouse4_0_check_reconn_target_next 
+032b 58000708 setarg ble_direct_adv_timeout 
 
 p_mouse4_0_check_reconn_target_next:
-00de 600146ae store 2 ,mem_mouse_direct_timer 
-00df 7048aa03 jam 3 ,mem_mouse_mode_swtich_step 
-00e0 6800c884 fetch 1 ,mem_mouse_fast_conn_flag 
-00e1 1fe67cff sub pdata ,0xff ,null 
-00e2 20228316 branch p_mouse_check_fast_conn_adv_start ,zero 
-00e3 d8e00007 arg mouse_store_eeprom_flag ,queue 
-00e4 204043ce call mouse_enable_function_flag 
-00e5 7048aa04 jam 4 ,mem_mouse_mode_swtich_step 
-00e6 20403418 call app_lpm_mult_disable 
-00e7 d8c04390 arg mem_le_scan_data ,contr 
-00e8 20400312 call p_le_adv_data_update 
-00e9 70438f1f jam 0x1f ,mem_le_scan_data_len 
-00ea 20207df4 branch check_51cmd_adv 
-
-p_le_check_adv_flag:
-00eb da204370 arg mem_le_adv_data ,rega 
-
-p_le_check_adv_flag_loop:
-00ec ea208000 ifetch 1 ,rega 
-00ed 207a0000 rtn blank 
-00ee 98c0a200 iadd contr ,rega 
-00ef e8c08000 ifetch 1 ,contr 
-00f0 c1008000 rtneq 0x01 
-00f1 202000ec branch p_le_check_adv_flag_loop 
-
-p_mouse_24g_pairing_button:
-00f2 680246d3 fetch mouse_flag_len ,mem_mouse_flag 
-00f3 c3818000 rtnbit1 mosue_24g_pairing_flag 
-00f4 c6130000 rtnmark1 mark_24g 
-00f5 20404482 call mouse_devce_led_off 
-00f6 d8e00003 arg mosue_24g_pairing_flag ,queue 
-00f7 204043ce call mouse_enable_function_flag 
-00f8 58000000 setarg 0 
-00f9 600146ae store 2 ,mem_mouse_direct_timer 
-00fa 6000c6b4 store 1 ,mem_mouse_send_blank_timer 
-00fb 6001495e store 2 ,mem_24g_check_dongle_times 
-00fc 204042ca call mouse_stop_discovery 
-00fd 2020051c branch p_g24_start_pairing_sm1 
+032c 600146ae store 2 ,mem_mouse_direct_timer 
+032d 6800cb40 fetch 1 ,mem_mouse_fast_conn_flag 
+032e c07f85eb beq 0xff ,p_mouse_check_fast_conn_adv_start 
+032f 280ffe26 isolate1 mark_24g ,mark 
+0330 24408554 ncall p_mouse_bt_reconn_multi_led_blink ,true 
+0331 204005e9 call p_mouse_store_eeprom_enable 
+0332 20403418 call app_lpm_mult_disable 
+0333 d8c04390 arg mem_le_scan_data ,contr 
+0334 204005e5 call p_le_adv_data_update 
+0335 70438f1f jam 0x1f ,mem_le_scan_data_len 
+0336 20207df4 branch check_51cmd_adv 
+
+p_g24_start_pairing_sm1:
+0337 79200026 set1 mark_24g ,mark 
+0338 204001b5 call p_g24_pair_init 
+
+p_g24_set_pairing_sm_1:
+0339 704bed01 jam state_24g_pairing_1 ,mem_24g_pairing_sm 
+033a 20600000 rtn 
 
 p_mouse_dpi_config:
-00fe 6800c77a fetch 1 ,mem_mouse_dpi 
-00ff c07fbd66 beq 0xff ,mouse_dpi_config 
-0100 20203d80 branch mouse_seting_dpi + 2 
+033b 6800c77a fetch 1 ,mem_mouse_dpi 
+033c c07f833e beq 0xff ,p_mouse_dpi_config_default 
+033d 2020055f branch p_mouse_seting_dpi_sensor_type 
+
+p_mouse_dpi_config_default:
+033e 6800c6e1 fetch 1 ,mem_config_sensor_motion 
+033f 6000c77a store 1 ,mem_mouse_dpi 
+0340 2020055f branch p_mouse_seting_dpi_sensor_type 
+
+p_mouse_spi_init:
+0341 70421276 jam 0x76 ,mem_spi_init_clk 
+0342 20203d36 branch mouse_spi_init 
 
 p_mouse_init_sunt:
-0101 70421276 jam 0x76 ,mem_spi_init_clk 
-0102 20403d36 call mouse_spi_init 
-0103 20758000 rtn wake 
-0104 204040c0 call mouse_spi_sdio_gpio_pollup 
-0105 6800c6e0 fetch 1 ,mem_config_sensor_type 
-0106 c002c0d5 beq p3610 ,mouse_init_3610sensor 
+0343 20400341 call p_mouse_spi_init 
+0344 204040c0 call mouse_spi_sdio_gpio_pollup 
 
 p_mouse_init_sensor:
-0107 204040d9 call mouse_read_sensor_id 
-0108 c018010d beq p32xx_id1 ,p_mouse_init_p32xx_id2_judge 
-0109 c018810f beq p3065_id1 ,p_mouse_p3065_init_param 
-010a 204040d1 call mouse_twspi_reset 
-010b 200003e8 nop 1000 
-010c 20200107 branch p_mouse_init_sensor 
+0345 204040d9 call mouse_read_sensor_id 
+0346 c018034d beq p32xx_id1 ,p_mouse_init_p32xx_id2_judge 
+0347 c018834f beq p3065_id1 ,p_mouse_p3065_init_param 
+0348 204040d1 call mouse_twspi_reset 
+0349 200003e8 nop 1000 
+034a 20200345 branch p_mouse_init_sensor 
+
+p_mouse_init_sensor_reset:
+034b 704b0c01 jam 1 ,mem_mouse_init_sensor_reset_flag 
+034c 20200343 branch p_mouse_init_sunt 
 
 p_mouse_init_p32xx_id2_judge:
-010d 20400114 call p_mouse_sensor_poweron 
-010e 202040e0 branch mouse_init_p32xx_id2_judge 
+034d 20400354 call p_mouse_sensor_poweron 
+034e 202040e0 branch mouse_init_p32xx_id2_judge 
 
 p_mouse_p3065_init_param:
-010f 20400114 call p_mouse_sensor_poweron 
-0110 6800c6de fetch 1 ,mem_sensor_id2 
-0111 c03840e8 beq p3065_xy_id2 ,mouse_p3065xy_init_param 
-0112 7046e001 jam p3065 ,mem_config_sensor_type 
-0113 20600000 rtn 
+034f 20400354 call p_mouse_sensor_poweron 
+0350 6800c6de fetch 1 ,mem_sensor_id2 
+0351 c03840e8 beq p3065_xy_id2 ,mouse_p3065xy_init_param 
+0352 7046e001 jam p3065 ,mem_config_sensor_type 
+0353 20600000 rtn 
 
 p_mouse_sensor_poweron:
-0114 58008006 setarg 0x8006 
-0115 20406413 call twspi_write 
-0116 20002ee0 nop 12000 
-0117 202000fe branch p_mouse_dpi_config 
+0354 58008006 setarg 0x8006 
+0355 20406413 call twspi_write 
+0356 20002ee0 nop 12000 
+0357 2040033b call p_mouse_dpi_config 
+0358 20600000 rtn 
 
 p_mouse_sensor_powerdown:
-0118 58000006 setarg 0x06 
-0119 20406414 call twspi_read 
-011a 1fe1fe08 or pdata ,0x08 ,pdata 
-011b 1fed7e00 lshift8 pdata ,pdata 
-011c 1fe0fe06 add pdata ,0x06 ,pdata 
-011d 20206413 branch twspi_write 
+0359 58000006 setarg 0x06 
+035a 20406414 call twspi_read 
+035b 1fe1fe08 or pdata ,0x08 ,pdata 
+035c 1fed7e00 lshift8 pdata ,pdata 
+035d 1fe0fe06 add pdata ,0x06 ,pdata 
+035e 20206413 branch twspi_write 
 
 p_mouse_setting_config:
-011e 20400412 call p_g24_set_device_addr 
-011f 20403e6e call mouse_gpio_init 
-0120 20403e1e call mouse_param_init 
-0121 58000000 setarg 0 
-0122 60014154 store 2 ,mem_lpm_interval 
-0123 20400144 call p_mouse_set_gpio_control_sensor 
-0124 20403e54 call mouse_adc_init 
-0125 20405810 call le_set_config_fixed_ltk 
-0126 20405839 call le_set_justwork 
-0127 2040582c call le_set_fixed_ltk 
-0128 20405818 call le_set_config_read_authentication 
+035f 204068a8 call adc_init_data 
+0360 680240a0 fetch 4 ,mem_lap 
+0361 60024c14 store 4 ,mem_24g_device_addr 
+0362 20403e6e call mouse_gpio_init 
+0363 20400547 call p_mouse_multi_led_off2 
+0364 20403e1e call mouse_param_init 
+0365 58000000 setarg 0 
+0366 60014154 store 2 ,mem_lpm_interval 
+0367 20400386 call p_mouse_set_gpio_control_sensor 
+0368 20403e54 call mouse_adc_init 
+0369 20405810 call le_set_config_fixed_ltk 
+036a 20405839 call le_set_justwork 
+036b 2040582c call le_set_fixed_ltk 
+036c 20405818 call le_set_config_read_authentication 
 
 p_mouse_init_iic:
-0129 2040659c call iic_init_390k 
-012a 680246d3 fetch mouse_flag_len ,mem_mouse_flag 
-012b 2feffe19 isolate1 mouse_enable_2k_eeprom ,pdata 
-012c 2440e5c2 ncall clear_eeprom_size_2k ,true 
-012d 2040443f call mouse_load_eeprom_dpi 
-012e 20400158 call p_mouse_init_environment 
-
-p_mouse_init_iic_read_24g_addr:
-012f 204001fa call p_mouse_set_24g_addr_eeprom 
-0130 204065df call iicd_read_eep_data 
-0131 20400135 call p_mouse_load_fast_conn_flag 
-0132 6800c884 fetch 1 ,mem_mouse_fast_conn_flag 
-0133 c07f813d beq 0xff ,p_mouse_fast_conn_init2 
-0134 20600000 rtn 
+036d 2040659c call iic_init_390k 
+036e 204065c2 call clear_eeprom_size_2k 
+036f 2040443f call mouse_load_eeprom_dpi 
+0370 20400396 call p_mouse_init_environment 
+0371 20400490 call p_mouse_set_24g_addr_eeprom 
+0372 204065df call iicd_read_eep_data 
+0373 20400377 call p_mouse_load_fast_conn_flag 
+0374 6800cb40 fetch 1 ,mem_mouse_fast_conn_flag 
+0375 c07f837f beq 0xff ,p_mouse_fast_conn_init2 
+0376 20600000 rtn 
 
 p_mouse_load_fast_conn_flag:
-0135 d8400001 arg 1 ,temp 
-0136 da204884 arg mem_mouse_fast_conn_flag ,rega 
-0137 da400064 arg mouse_fast_conn_flag_offset ,regb 
-0138 202065df branch iicd_read_eep_data 
+0377 d8400001 arg 1 ,temp 
+0378 da204b40 arg mem_mouse_fast_conn_flag ,rega 
+0379 da400064 arg mouse_fast_conn_flag_offset ,regb 
+037a 202065df branch iicd_read_eep_data 
 
 p_mouse_store_fast_conn_flag:
-0139 d8400001 arg 1 ,temp 
-013a da204884 arg mem_mouse_fast_conn_flag ,rega 
-013b da400064 arg mouse_fast_conn_flag_offset ,regb 
-013c 202065d1 branch iicd_write_protect_eep_data 
+037b d8400001 arg 1 ,temp 
+037c da204b40 arg mem_mouse_fast_conn_flag ,rega 
+037d da400064 arg mouse_fast_conn_flag_offset ,regb 
+037e 202065d1 branch iicd_write_protect_eep_data 
 
 p_mouse_fast_conn_init2:
-013d 7048a701 jam 1 ,mem_le_switch_adv_timer 
-013e 7048a601 jam 1 ,mem_le_switch_adv_flag 
+037f 704b4801 jam 1 ,mem_le_switch_adv_timer 
+0380 704b4701 jam 1 ,mem_le_switch_adv_flag 
 
 p_mouse_fast_conn_init:
-013f 70421034 jam 0x34 ,mem_xrecord_mode 
-0140 58000000 setarg 0 
-0141 1fe47e00 invert pdata ,pdata 
-0142 600344a0 store 6 ,mem_le_lap 
-0143 20600000 rtn 
+0381 70421034 jam 0x34 ,mem_xrecord_mode 
+0382 58000000 setarg 0 
+0383 1fe47e00 invert pdata ,pdata 
+0384 600344a0 store 6 ,mem_le_lap 
+0385 20600000 rtn 
 
 p_mouse_set_gpio_control_sensor:
 
 p_mouse_sensor_set_angle:
-0144 6808c6f7 fetcht 1 ,mem_select_sensor_angle_gpio 
-0145 204067fb call gpio_config_input 
-0146 68108078 hfetch 1 ,core_gpio_pu0 
-0147 79207e05 set1 5 ,pdata 
-0148 60108078 hstore 1 ,core_gpio_pu0 
-0149 6808c6f7 fetcht 1 ,mem_select_sensor_angle_gpio 
-014a 2040681d call gpio_get_bit 
-014b 20408154 call p_mouse_sensor_set_12clk_angle ,true 
-014c 24408156 ncall p_mouse_sensor_set_3clk_angle ,true 
-014d 6808c6f7 fetcht 1 ,mem_select_sensor_angle_gpio 
-014e 2040680e call gpio_config_output 
-014f 68108078 hfetch 1 ,core_gpio_pu0 
-0150 793ffe05 set0 5 ,pdata 
-0151 60108078 hstore 1 ,core_gpio_pu0 
-0152 6808c6f7 fetcht 1 ,mem_select_sensor_angle_gpio 
-0153 20206829 branch gpio_out_active 
-
-p_mouse_sensor_set_12clk_angle:
-0154 7046f602 jam mouse_12clk_angle ,mem_config_sensor_angle 
-0155 20600000 rtn 
-
-p_mouse_sensor_set_3clk_angle:
-0156 7046f603 jam mouse_3clk_angle ,mem_config_sensor_angle 
-0157 20600000 rtn 
+0386 68108078 hfetch 1 ,core_gpio_pu0 
+0387 79207e05 set1 5 ,pdata 
+0388 60108078 hstore 1 ,core_gpio_pu0 
+0389 2040038e call p_mouse_sensor_set_angle_2 
+038a 68108078 hfetch 1 ,core_gpio_pu0 
+038b 793ffe05 set0 5 ,pdata 
+038c 60108078 hstore 1 ,core_gpio_pu0 
+038d 20600000 rtn 
+
+p_mouse_sensor_set_angle_2:
+038e 6808c6f7 fetcht 1 ,mem_select_sensor_angle_gpio 
+038f 204067fb call gpio_config_input 
+0390 6808c6f7 fetcht 1 ,mem_select_sensor_angle_gpio 
+0391 2040681d call gpio_get_bit 
+0392 7046f603 jam mouse_3clk_angle ,mem_config_sensor_angle 
+0393 20608000 rtn true 
+0394 7046f602 jam mouse_12clk_angle ,mem_config_sensor_angle 
+0395 20600000 rtn 
 
 p_mouse_init_environment:
-0158 204033c4 call app_initflag_check 
-0159 20228163 branch p_mouse_eeprom_load_recon_info ,zero 
-015a 20203dcb branch mouse_init_environment + 2 
+0396 204033c4 call app_initflag_check 
+0397 2022c316 branch mouse_eeprom_load_recon_info ,zero 
+0398 20203dcb branch mouse_init_environment + 2 
 
 p_app_flag_store:
-015b d8400002 arg 2 ,temp 
-015c da200aaa arg mem_timeup ,rega 
-015d da400062 arg mouse_eeprom_module_init_flag ,regb 
-015e 202065d1 branch iicd_write_protect_eep_data 
+0399 d8400002 arg 2 ,temp 
+039a da200aaa arg mem_timeup ,rega 
+039b da400062 arg mouse_eeprom_module_init_flag ,regb 
+039c 202065d1 branch iicd_write_protect_eep_data 
 
 p_app_initflag_check:
-015f d8400002 arg 2 ,temp 
-0160 da200a9a arg mem_pdatatemp ,rega 
-0161 da400062 arg mouse_eeprom_module_init_flag ,regb 
-0162 202033c8 branch app_initflag_check + 4 
-
-p_mouse_eeprom_load_recon_info:
-0163 d840001e arg 30 ,temp 
-0164 da204720 arg mem_device_flag ,rega 
-0165 da400000 arg mouse_info_eeprom_offect ,regb 
-0166 204065df call iicd_read_eep_data 
-
-p_mouse_select_reconn_device:
-0167 da204721 arg mem_device1_type ,rega 
-0168 ea208000 ifetch 1 ,rega 
-0169 6000c210 store 1 ,mem_xrecord_mode 
-016a c01a432c beq rec_4_mode ,mouse_load_le_device 
-016b 20600000 rtn 
+039d d8400002 arg 2 ,temp 
+039e da200a9a arg mem_pdatatemp ,rega 
+039f da400062 arg mouse_eeprom_module_init_flag ,regb 
+03a0 202033c8 branch app_initflag_check + 4 
+
+p_mouse_24g_transmit_by_interrupt_exit_count_max:
+03a1 58000177 setarg 375 
+03a2 60014d20 store 2 ,mem_24g_transmit_by_interrupt_exit_count_init 
+03a3 20600000 rtn 
 
 p_mouse_wakeup_from_power:
-016c 6800c71f fetch 1 ,mem_reconn_times_init 
-016d 6000c71e store 1 ,mem_reconn_times 
+03a4 58000019 setarg 25 
+03a5 60014d20 store 2 ,mem_24g_transmit_by_interrupt_exit_count_init 
+03a6 245583a1 ncall p_mouse_24g_transmit_by_interrupt_exit_count_max ,wake 
+03a7 20400343 call p_mouse_init_sunt 
+03a8 20400359 call p_mouse_sensor_powerdown 
+
+p_mouse_wakeup_no_from_power:
+03a9 6800c71f fetch 1 ,mem_reconn_times_init 
+03aa 6000c71e store 1 ,mem_reconn_times 
 
 p_mouse_start_24g_mode:
-016e 2040027b call p_mouse_led_output_high 
-016f 20200576 branch p_g24_auto_pair_start 
+03ab 20400559 call p_mouse_mode_24g_device_multi_led_blink3s 
+03ac 6800cb3f fetch 1 ,mem_power_on_flag 
+03ad c28103b7 bbit1 2 ,p_mouse_wakeup_from_hibernate 
+03ae 704b54ff jam latest_mode_null ,mem_mouse_latest_mode 
+03af 2040045c call p_mouse_store_latest_mode_eeprom 
+03b0 704b550a jam ble_poweron_reconn_timer ,mem_mouse_poweron_bt_start_reconn_timer 
+03b1 5800ffff setarg 0xffff 
+03b2 60014c05 store 2 ,mem_24g_addr 
+03b3 e0a10000 istore 2 ,contw 
+03b4 20400490 call p_mouse_set_24g_addr_eeprom 
+03b5 204065d1 call iicd_write_protect_eep_data 
+03b6 20200205 branch p_g24_auto_pair_start 
+
+p_mouse_wakeup_from_hibernate:
+03b7 2040045e call p_mouse_read_latest_mode_eeprom 
+03b8 6800cb54 fetch 1 ,mem_mouse_latest_mode 
+03b9 c000849b beq latest_mode_bt ,p_mouse_bt_start_reconn 
+03ba c00101f1 beq latest_mode_24g ,p_g24_start_24g_mode 
+03bb 704b550a jam ble_poweron_reconn_timer ,mem_mouse_poweron_bt_start_reconn_timer 
+03bc 20600000 rtn 
 
 p_g24_factory_check:
-0170 df200002 arg 2 ,loopcnt 
-0171 d8c04959 arg mem_24g_addr ,contr 
+03bd df200002 arg 2 ,loopcnt 
+03be d8c04c05 arg mem_24g_addr ,contr 
 
 p_pdata_0xff_check:
-0172 20407fe7 call enable_user 
-0173 5800ffff setarg 0xffff 
+03bf 20407fe7 call enable_user 
+03c0 5800ffff setarg 0xffff 
 
 p_pdata_0xff_check_loop:
-0174 e8c90000 ifetcht 2 ,contr 
-0175 98467c00 isub temp ,null 
-0176 2442ffe9 ncall disable_user ,zero 
-0177 c2000174 loop p_pdata_0xff_check_loop 
-0178 20600000 rtn 
+03c1 e8c90000 ifetcht 2 ,contr 
+03c2 98467c00 isub temp ,null 
+03c3 2442ffe9 ncall disable_user ,zero 
+03c4 c20003c1 loop p_pdata_0xff_check_loop 
+03c5 20600000 rtn 
 
 p_mouse_cb_fuction:
-0179 5800018e setarg p_mouse_le 
-017a 600141ef store 2 ,mem_cb_le_process 
-017b 580003f6 setarg p_le_mouse_bb_event_connect_complete 
-017c 600141f9 store 2 ,mem_cb_att_write 
-017d 5800018a setarg p_mouse_g24_package_data 
-017e 60014a62 store 2 ,mem_cb_24g_data 
-017f 58000096 setarg p_mouse_before_lpm 
-0180 600141ed store 2 ,mem_cb_before_lpm 
-0181 580001b8 setarg p_mouse_priority_bb_event 
-0182 600141f5 store 2 ,mem_cb_bb_event_process 
-0183 580001ac setarg p_mouse_idle 
-0184 600141f3 store 2 ,mem_cb_idle_process 
-0185 5800020b setarg p_mouse_before_hibernate 
-0186 600141eb store 2 ,mem_cb_before_hibernate 
-0187 58000217 setarg p_mouse_bb_event_timer 
-0188 600141fd store 2 ,mem_cb_event_timer 
-0189 20600000 rtn 
+03c6 580003d7 setarg p_mouse_g24_package_data 
+03c7 60014d0e store 2 ,mem_cb_24g_data 
+03c8 580003ee setarg p_mouse_le 
+03c9 600141ef store 2 ,mem_cb_le_process 
+03ca 580006b9 setarg p_le_mouse_bb_event_connect_complete 
+03cb 600141f9 store 2 ,mem_cb_att_write 
+03cc 580002f7 setarg p_mouse_before_lpm 
+03cd 600141ed store 2 ,mem_cb_before_lpm 
+03ce 58000436 setarg p_mouse_priority_bb_event 
+03cf 600141f5 store 2 ,mem_cb_bb_event_process 
+03d0 5800042a setarg p_mouse_idle 
+03d1 600141f3 store 2 ,mem_cb_idle_process 
+03d2 580004aa setarg p_mouse_before_hibernate 
+03d3 600141eb store 2 ,mem_cb_before_hibernate 
+03d4 580004c1 setarg p_mouse_bb_event_timer 
+03d5 600141fd store 2 ,mem_cb_event_timer 
+03d6 20600000 rtn 
 
 p_mouse_g24_package_data:
-018a 20404401 call mouse_g24_package_data 
-018b 6801469f fetch 2 ,mem_mouse_z 
-018c 207a0000 rtn blank 
-018d 20200066 branch p_g24_transmit_by_interrupt_enable 
+03d7 20404401 call mouse_g24_package_data 
+03d8 6801469f fetch 2 ,mem_mouse_z 
+03d9 207a0000 rtn blank 
+03da 20200082 branch p_g24_transmit_by_interrupt_enable 
+
+p_mouse_le_txbuff_save:
+03db d8c01800 arg mem_le_tx_buffer0 ,contr 
+03dc d8a0480a arg mem_le_tx_buffer0_omemalloc ,contw 
+03dd 204003e3 call p_mouse_le_txbuff_copy 
+03de d8c01900 arg mem_le_tx_buffer1 ,contr 
+03df 204003e3 call p_mouse_le_txbuff_copy 
+03e0 d8c01a00 arg mem_le_tx_buffer2 ,contr 
+03e1 204003e3 call p_mouse_le_txbuff_copy 
+03e2 d8c01b00 arg mem_le_tx_buffer3 ,contr 
+
+p_mouse_le_txbuff_copy:
+03e3 df20001b arg 27 ,loopcnt 
+03e4 20207f01 branch memcpy 
+
+p_mouse_le_txbuff_load:
+03e5 d8c0480a arg mem_le_tx_buffer0_omemalloc ,contr 
+03e6 d8a01800 arg mem_le_tx_buffer0 ,contw 
+03e7 204003e3 call p_mouse_le_txbuff_copy 
+03e8 d8a01900 arg mem_le_tx_buffer1 ,contw 
+03e9 204003e3 call p_mouse_le_txbuff_copy 
+03ea d8a01a00 arg mem_le_tx_buffer2 ,contw 
+03eb 204003e3 call p_mouse_le_txbuff_copy 
+03ec d8a01b00 arg mem_le_tx_buffer3 ,contw 
+03ed 202003e3 branch p_mouse_le_txbuff_copy 
 
 p_mouse_le:
-018e 20405892 call le_fifo_check_nearly_full 
-018f 247a0000 nrtn blank 
-0190 6800c884 fetch 1 ,mem_mouse_fast_conn_flag 
-0191 c07f8195 beq 0xff ,p_mouse_le_next 
-0192 6800c6c5 fetch 1 ,mem_le_connect_status_flag 
-0193 1fe17e03 and pdata ,0x03 ,pdata 
-0194 c1818000 rtnne 0x03 
+03ee 20405892 call le_fifo_check_nearly_full 
+03ef 247a0000 nrtn blank 
+03f0 6800cb40 fetch 1 ,mem_mouse_fast_conn_flag 
+03f1 c07f83f5 beq 0xff ,p_mouse_le_next 
+03f2 6800c6c5 fetch 1 ,mem_le_connect_status_flag 
+03f3 1fe17e03 and pdata ,0x03 ,pdata 
+03f4 c1818000 rtnne 0x03 
 
 p_mouse_le_next:
-0195 6800c7a0 fetch 1 ,mem_mouse_clear_sensor_data_flag 
-0196 205a01a9 call p_mouse_clear_sensor_data ,blank 
-0197 680246d3 fetch mouse_flag_len ,mem_mouse_flag 
-0198 c282c179 bbit1 mouse_bt_discovery_button_down_flag ,mouse_le_send_empty_packet 
-0199 20403f97 call mouse_motion 
-019a 24740000 nrtn user 
-019b 2040019f call p_mouse_le_current_mult_update 
-019c 2040048d call p_mouse_data_xy_release 
-019d 204001a4 call p_mouse_wheel_trigger 
-019e 202006cb branch p_mouse_data_push 
+03f5 6800c79c fetch 1 ,mem_mouse_clear_sensor_data_flag 
+03f6 205a0427 call p_mouse_clear_sensor_data ,blank 
+03f7 680246d3 fetch mouse_flag_len ,mem_mouse_flag 
+03f8 c282c179 bbit1 mouse_bt_discovery_button_down_flag ,mouse_le_send_empty_packet 
+03f9 20403f97 call mouse_motion 
+03fa 24740000 nrtn user 
+03fb 204003ff call p_mouse_le_current_mult_update 
+03fc 20400402 call p_mouse_data_xy_release 
+03fd 20400422 call p_mouse_wheel_trigger 
+03fe 2020040d branch p_mouse_data_push 
 
 p_mouse_le_current_mult_update:
-019f 6800c6f5 fetch 1 ,mem_config_function_enable 
-01a0 c3838000 rtnbit1 enable_sensor_motion_pin 
-01a1 70417200 jam 0 ,mem_lpm_mult 
-01a2 70480d14 jam 20 ,mem_mouse_le_current_mult_timer 
-01a3 20600000 rtn 
+03ff 70417200 jam 0 ,mem_lpm_mult 
+0400 704b3a1e jam 30 ,mem_mouse_le_current_mult_timer 
+0401 20600000 rtn 
+
+p_mouse_data_xy_release:
+0402 6800cb39 fetch 1 ,mem_mouse_long_mult_flag 
+0403 c1808000 rtnne 1 
+0404 58000000 setarg 0 
+0405 6000cb39 store 1 ,mem_mouse_long_mult_flag 
+0406 6002469b store 4 ,mem_mouse_x 
+0407 20200354 branch p_mouse_sensor_poweron 
+
+p_mouse_data_init:
+0408 7047a007 jam 7 ,mem_mouse_data_queue 
+0409 7047a104 jam 4 ,mem_mouse_data_queue + 1 
+040a 580047a0 setarg mem_mouse_data_queue 
+040b 60014218 store 2 ,mem_queue_ptr 
+040c 20207e38 branch queue_init 
+
+p_mouse_data_push:
+040d da20469a arg mem_mouse_key ,rega 
+040e 20407e3d call queue_push 
+040f 20540411 call p_mouse_queue_increase ,user 
+0410 20600000 rtn 
+
+p_mouse_queue_increase:
+0411 6800c7c1 fetch 1 ,mem_mouse_data_queue_num 
+0412 1fe0fe01 increase 1 ,pdata 
+0413 6000c7c1 store 1 ,mem_mouse_data_queue_num 
+0414 20600000 rtn 
+
+p_mouse_data_pull:
+0415 da20469a arg mem_mouse_key ,rega 
+0416 20407e54 call queue_pop 
+0417 20340419 branch p_mouse_fill_data_le ,user 
+0418 20600000 rtn 
+
+p_mouse_fill_data_le:
+0419 20405652 call le_clear_md 
+041a 6800c7c1 fetch 1 ,mem_mouse_data_queue_num 
+041b 1fe67c01 sub pdata ,1 ,null 
+041c 24415650 ncall le_set_md ,positive 
+041d 6800c7c1 fetch 1 ,mem_mouse_data_queue_num 
+041e 207a0000 rtn blank 
+041f 1fe0ffff increase -1 ,pdata 
+0420 6000c7c1 store 1 ,mem_mouse_data_queue_num 
+0421 20203f90 branch mouse_fill_data_le 
 
 p_mouse_wheel_trigger:
-01a4 6801469f fetch 2 ,mem_mouse_z 
-01a5 207a0000 rtn blank 
-01a6 70480a01 jam 1 ,mem_mouse_wheel_trigger 
-01a7 70480b02 jam 2 ,mem_mouse_wheel_trigger_timer 
-01a8 20600000 rtn 
+0422 6801469f fetch 2 ,mem_mouse_z 
+0423 207a0000 rtn blank 
+0424 70480601 jam 1 ,mem_mouse_wheel_trigger 
+0425 70480702 jam 2 ,mem_mouse_wheel_trigger_timer 
+0426 20600000 rtn 
 
 p_mouse_clear_sensor_data:
-01a9 20405814 call le_set_config_more_data 
-01aa 7047a001 jam 1 ,mem_mouse_clear_sensor_data_flag 
-01ab 20200114 branch p_mouse_sensor_poweron 
+0427 20405814 call le_set_config_more_data 
+0428 70479c01 jam 1 ,mem_mouse_clear_sensor_data_flag 
+0429 20200354 branch p_mouse_sensor_poweron 
 
 p_mouse_idle:
-01ac 20407e34 call ui_check_paring_button 
-01ad 204001af call p_mouse_dpi_check 
-01ae 20203ee0 branch mouse_wheel_check 
+042a 20407e34 call ui_check_paring_button 
+042b 2040042d call p_mouse_dpi_check 
+042c 20203ee0 branch mouse_wheel_check 
 
 p_mouse_dpi_check:
-01af 6808c6e7 fetcht 1 ,mem_dpi_button_gpio 
-01b0 204002cb call p_gpio_set_input_pd 
-01b1 6808c6e7 fetcht 1 ,mem_dpi_button_gpio 
-01b2 2040681d call gpio_get_bit 
-01b3 202081b6 branch p_mouse_dpi_up ,true 
-01b4 204002d4 call p_gpio_set_input_pu 
-01b5 20203d6d branch mouse_dpi_down 
+042d 6808c6e7 fetcht 1 ,mem_dpi_button_gpio 
+042e 204005b8 call p_gpio_set_input_pd 
+042f 6808c6e7 fetcht 1 ,mem_dpi_button_gpio 
+0430 2040681d call gpio_get_bit 
+0431 20208434 branch p_mouse_dpi_up ,true 
+0432 204005b3 call p_gpio_set_input_pu 
+0433 20203d6d branch mouse_dpi_down 
 
 p_mouse_dpi_up:
-01b6 204002d4 call p_gpio_set_input_pu 
-01b7 20203d62 branch mouse_dpi_up 
+0434 204005b3 call p_gpio_set_input_pu 
+0435 20203d62 branch mouse_dpi_up 
 
 p_mouse_priority_bb_event:
-01b8 1a627e00 copy regc ,pdata 
-01b9 c01c81f0 beq bt_evt_24g_pairing_complete ,p_mouse_24g_pairing_complete 
-01ba c01d01fe beq bt_evt_24g_attempt_fail ,p_mouse_24g_attempt_fail 
-01bb c01e3f8d beq bt_evt_24g_attempt_success ,mouse_no_data_timer_init 
-01bc c00a01cd beq bt_evt_le_connected ,p_mouse_le_bb_event_connected 
-01bd c00a81db beq bt_evt_le_disconnected ,p_mouse_bb_disconnected 
-01be c01481e6 beq bt_evt_le_enc_info ,p_mouse_le_enc_info 
-01bf c01901e8 beq bt_evt_le_start_enc ,p_mouse_le_ll_start_encryt 
-01c0 c02001c2 beq bt_evt_le_parse_conn_papa_update_rsp ,p_mouse_le_conn_param_update_rsp_recieved 
-01c1 2020417d branch mouse_priority_bb_event + 1 
-
-p_mouse_le_conn_param_update_rsp_recieved:
-01c2 68014509 fetch 2 ,mem_le_l2cap_signaling_conn_param_update_rsp_result 
-01c3 c1000000 rtneq ble_signaling_connect_parameter_update_accepted 
-01c4 68008441 fetch 1 ,mem_le_tsniff 
-01c5 1feb7e00 rshift2 pdata ,pdata 
-01c6 1fe67c0c sub pdata ,le_interval_15ms ,null 
-01c7 20610000 rtn positive 
-01c8 58000009 setarg le_interval_11_25ms 
-01c9 60014496 store 2 ,mem_le_interval_min 
-01ca 60014498 store 2 ,mem_le_interval_min + 2 
-01cb 204001e6 call p_app_updata_le_param 
-01cc 2020033d branch p_mouse_le_conn_param_lpm_disable 
+0436 1a627e00 copy regc ,pdata 
+0437 c00a0440 beq bt_evt_le_connected ,p_mouse_le_bb_event_connected 
+0438 c00a8464 beq bt_evt_le_disconnected ,p_mouse_le_bb_disconnected 
+0439 c0148471 beq bt_evt_le_enc_info ,p_mouse_le_enc_info 
+043a c0190473 beq bt_evt_le_start_enc ,p_mouse_le_ll_start_encryt 
+043b c020047b beq bt_evt_le_parse_conn_papa_update_rsp ,p_mouse_le_conn_param_update_rsp_recieved 
+043c c01c8488 beq bt_evt_24g_pairing_complete ,p_mouse_24g_pairing_complete 
+043d c01d0494 beq bt_evt_24g_attempt_fail ,p_mouse_24g_attempt_fail 
+043e c01e04a0 beq bt_evt_24g_attempt_success ,p_mouse_24g_attempt_success 
+043f 2020417d branch mouse_priority_bb_event + 1 
 
 p_mouse_le_bb_event_connected:
-01cd 58000000 setarg 0 
-01ce 6001c8a6 store 3 ,mem_le_switch_adv_flag 
-01cf df200003 arg 3 ,loopcnt 
-01d0 d8c044a0 arg mem_le_lap ,contr 
-01d1 20400172 call p_pdata_0xff_check 
-01d2 245401d8 ncall p_mouse_fast_conn_quit ,user 
-01d3 7048a900 jam 0 ,mem_mouse_start_discovery_enable 
-01d4 70487d00 jam 0 ,mem_mouse_ble_led_on_enable 
-01d5 70480c00 jam 0 ,mem_mouse_long_mult_flag 
-01d6 204006c6 call p_mouse_data_init 
-01d7 202041c3 branch mouse_le_bb_event_connected 
+0440 58000000 setarg 0 
+0441 6001cb47 store 3 ,mem_le_switch_adv_flag 
+0442 df200003 arg 3 ,loopcnt 
+0443 d8c044a0 arg mem_le_lap ,contr 
+0444 204003bf call p_pdata_0xff_check 
+0445 24540452 ncall p_mouse_fast_conn_quit ,user 
+0446 704b4b00 jam 0 ,mem_mouse_le_adv_start 
+0447 704b3e01 jam 1 ,mem_mouse_le_bb_connected_flag 
+0448 6800c79f fetch 1 ,mem_mouse_le_reconnect_flag 
+0449 243a044b nbranch p_mouse_le_bb_event_connected_next ,blank 
+044a 704b3c14 jam 0x14 ,mem_mouse_send_secutiry_request_timer 
+
+p_mouse_le_bb_event_connected_next:
+044b 704b5600 jam 0 ,mem_mouse_le_not_tx_disconn 
+044c 704b4a00 jam 0 ,mem_mouse_start_discovery_enable 
+044d 20400230 call p_g24_check_51cmd_stop_24g 
+044e 20400457 call p_mouse_store_latest_mode_le 
+044f 2040034b call p_mouse_init_sensor_reset 
+0450 20400408 call p_mouse_data_init 
+0451 202041c3 branch mouse_le_bb_event_connected 
 
 p_mouse_fast_conn_quit:
-01d8 20403410 call app_ble_store_reconn_info 
-01d9 7048845a jam 0x5a ,mem_mouse_fast_conn_flag 
-01da 20200139 branch p_mouse_store_fast_conn_flag 
-
-p_mouse_bb_disconnected:
-01db 58000007 setarg le_interval_8_75ms 
-01dc 60014496 store 2 ,mem_le_interval_min 
-01dd 60014498 store 2 ,mem_le_interval_min + 2 
-01de 7047c800 jam le_lpm_enable ,mem_mouse_le_conn_param_reject 
-01df 7047a000 jam 0 ,mem_mouse_clear_sensor_data_flag 
-01e0 204006c6 call p_mouse_data_init 
-01e1 20405816 call le_clr_config_more_data 
-01e2 204041d9 call mouse_bb_disconnected 
-01e3 6800c8a9 fetch 1 ,mem_mouse_start_discovery_enable 
-01e4 207a0000 rtn blank 
-01e5 20200307 branch p_check_51cmd_adv 
+0452 58000050 setarg 0x50 
+0453 600146ae store 2 ,mem_mouse_direct_timer 
+0454 20403410 call app_ble_store_reconn_info 
+0455 704b405a jam 0x5a ,mem_mouse_fast_conn_flag 
+0456 2020037b branch p_mouse_store_fast_conn_flag 
+
+p_mouse_store_latest_mode_le:
+0457 df200003 arg 3 ,loopcnt 
+0458 d8c044a0 arg mem_le_lap ,contr 
+0459 204003bf call p_pdata_0xff_check 
+045a 20740000 rtn user 
+045b 704b5401 jam latest_mode_bt ,mem_mouse_latest_mode 
+
+p_mouse_store_latest_mode_eeprom:
+045c 20400460 call p_mouse_set_latest_mode_eeprom 
+045d 202065d1 branch iicd_write_protect_eep_data 
+
+p_mouse_read_latest_mode_eeprom:
+045e 20400460 call p_mouse_set_latest_mode_eeprom 
+045f 202065df branch iicd_read_eep_data 
+
+p_mouse_set_latest_mode_eeprom:
+0460 da204b54 arg mem_mouse_latest_mode ,rega 
+0461 da400065 arg mouse_latest_mode_offset ,regb 
+0462 d8400001 arg 1 ,temp 
+0463 20600000 rtn 
+
+p_mouse_le_bb_disconnected:
+0464 704b3e00 jam 0 ,mem_mouse_le_bb_connected_flag 
+0465 204004bd call p_mouse_sensor_powerdown_check 
+0466 58000007 setarg le_interval_8_75ms 
+0467 60014496 store 2 ,mem_le_interval_min 
+0468 60014498 store 2 ,mem_le_interval_min + 2 
+0469 7047c400 jam le_lpm_enable ,mem_mouse_le_conn_param_reject 
+046a 70479c00 jam 0 ,mem_mouse_clear_sensor_data_flag 
+046b 20400408 call p_mouse_data_init 
+046c 20405816 call le_clr_config_more_data 
+046d 204041d9 call mouse_bb_disconnected 
+046e 6800cb4a fetch 1 ,mem_mouse_start_discovery_enable 
+046f 207a0000 rtn blank 
+0470 202005dc branch p_check_51cmd_adv 
 
 p_mouse_le_enc_info:
 
 p_app_updata_le_param:
-01e6 700a9912 jam bt_cmd_le_update_conn ,mem_fifo_temp 
-01e7 20207d8f branch ui_ipc_send_cmd 
+0471 700a9912 jam bt_cmd_le_update_conn ,mem_fifo_temp 
+0472 20207d8f branch ui_ipc_send_cmd 
 
 p_mouse_le_ll_start_encryt:
-01e8 6800c7a3 fetch 1 ,mem_mouse_le_reconnect_flag 
-01e9 c00081ec beq 1 ,p_mouse_le_ll_reconn_start_encryt 
-01ea 7046c614 jam 20 ,mem_le_start_encrypt_timer 
-01eb 202001ee branch p_mouse_le_ll_enable_start_enc_flag 
+0473 6800c79f fetch 1 ,mem_mouse_le_reconnect_flag 
+0474 c0008477 beq 1 ,p_mouse_le_ll_reconn_start_encryt 
+0475 7046c614 jam 20 ,mem_le_start_encrypt_timer 
+0476 20200479 branch p_mouse_le_ll_enable_start_enc_flag 
 
 p_mouse_le_ll_reconn_start_encryt:
-01ec 204001e6 call p_app_updata_le_param 
-01ed 7046c614 jam 20 ,mem_le_start_encrypt_timer 
+0477 20400471 call p_app_updata_le_param 
+0478 7046c614 jam 20 ,mem_le_start_encrypt_timer 
 
 p_mouse_le_ll_enable_start_enc_flag:
-01ee d8e00001 arg ll_start_enc_flag ,queue 
-01ef 202041b9 branch mouse_le_enable_connect_flag 
+0479 d8e00001 arg ll_start_enc_flag ,queue 
+047a 202041b9 branch mouse_le_enable_connect_flag 
+
+p_mouse_le_conn_param_update_rsp_recieved:
+047b 68014509 fetch 2 ,mem_le_l2cap_signaling_conn_param_update_rsp_result 
+047c c1000000 rtneq ble_signaling_connect_parameter_update_accepted 
+047d 68008441 fetch 1 ,mem_le_tsniff 
+047e 1feb7e00 rshift2 pdata ,pdata 
+047f 1fe67c0c sub pdata ,le_interval_15ms ,null 
+0480 20210486 branch p_mouse_le_conn_param_update_rsp_not_accepted ,positive 
+0481 58000009 setarg le_interval_11_25ms 
+0482 60014496 store 2 ,mem_le_interval_min 
+0483 60014498 store 2 ,mem_le_interval_min + 2 
+0484 20400471 call p_app_updata_le_param 
+0485 20200616 branch p_mouse_le_conn_param_lpm_disable 
+
+p_mouse_le_conn_param_update_rsp_not_accepted:
+0486 704b5301 jam 1 ,mem_mouse_le_updata_not_accepted_flag 
+0487 2020066f branch p_mouse_le_conn_param_update_rsp_not_accepted_mult_reset 
 
 p_mouse_24g_pairing_complete:
-01f0 70478b01 jam 1 ,mem_mouse_24g_enter_lpm_enable 
-01f1 d8e00003 arg mosue_24g_pairing_flag ,queue 
-01f2 204043d2 call mouse_disable_function_flag 
-01f3 58000000 setarg 0 
-01f4 60014707 store 2 ,mem_24g_pairing_timer_count 
-01f5 7046a700 jam 0 ,mem_mouse_move_flag 
-01f6 2040405d call mouse_read_sensor_common 
-01f7 204000d4 call p_mouse_tx_power_init 
-01f8 204001fa call p_mouse_set_24g_addr_eeprom 
-01f9 202065d1 branch iicd_write_protect_eep_data 
+0488 20400323 call p_mouse_tx_power_init 
+0489 204004a0 call p_mouse_24g_attempt_success 
+048a d8e00003 arg mosue_24g_pairing_flag ,queue 
+048b 204043d2 call mouse_disable_function_flag 
+048c 7046a700 jam 0 ,mem_mouse_move_flag 
+048d 2040405d call mouse_read_sensor_common 
+048e 20400490 call p_mouse_set_24g_addr_eeprom 
+048f 202065d1 branch iicd_write_protect_eep_data 
 
 p_mouse_set_24g_addr_eeprom:
-01fa da204959 arg mem_24g_addr ,rega 
-01fb da40005b arg mouse_g24_addr_eeprom_offect ,regb 
-01fc d8400004 arg 4 ,temp 
-01fd 20600000 rtn 
+0490 da204c05 arg mem_24g_addr ,rega 
+0491 da40005b arg mouse_g24_addr_eeprom_offect ,regb 
+0492 d8400004 arg 4 ,temp 
+0493 20600000 rtn 
 
 p_mouse_24g_attempt_fail:
-01fe 704a7100 jam g24_tx_timer_int_disable ,mem_24g_transmit_by_interrupt 
-01ff 204000d4 call p_mouse_tx_power_init 
-0200 204005a6 call p_g24_check_51cmd_stop_24g 
-0201 7041bd00 jam 0 ,mem_link_key_exists 
-0202 6800c8aa fetch 1 ,mem_mouse_mode_swtich_step 
-0203 c0008550 beq 1 ,p_g24_start_24g_mode 
-0204 6800c884 fetch 1 ,mem_mouse_fast_conn_flag 
-0205 c07f8207 beq 0xff ,p_mouse_24g_attempt_fail_next 
-0206 20400163 call p_mouse_eeprom_load_recon_info 
-
-p_mouse_24g_attempt_fail_next:
-0207 202000d7 branch p_mouse_check_reconn_target 
-
-p_mouse_null_enter_hibernate_count:
-0208 7047a101 jam 1 ,mem_mouse_null_enter_hibernate_flag 
-0209 7047a228 jam 40 ,mem_mouse_null_enter_hibernate_timer 
-020a 20600000 rtn 
+0494 204004bd call p_mouse_sensor_powerdown_check 
+0495 704d1d00 jam g24_tx_timer_int_disable ,mem_24g_transmit_by_interrupt 
+0496 20400323 call p_mouse_tx_power_init 
+0497 20400230 call p_g24_check_51cmd_stop_24g 
+0498 6800cb54 fetch 1 ,mem_mouse_latest_mode 
+0499 c1810000 rtnne latest_mode_24g 
+049a 2020340a branch app_enter_hibernate 
+
+p_mouse_bt_start_reconn:
+049b 7041bd00 jam 0 ,mem_link_key_exists 
+049c 6800cb40 fetch 1 ,mem_mouse_fast_conn_flag 
+049d c07f831f beq 0xff ,p_mouse_check_reconn_target 
+049e 20404316 call mouse_eeprom_load_recon_info 
+049f 2020031f branch p_mouse_check_reconn_target 
+
+p_mouse_24g_attempt_success:
+04a0 704b5500 jam 0 ,mem_mouse_poweron_bt_start_reconn_timer 
+04a1 58000000 setarg 0 
+04a2 6001cb47 store 3 ,mem_le_switch_adv_flag 
+04a3 204041c6 call mouse_le_bb_event_connected + 3 
+04a4 2040053e call p_mouse_multi_led_blink_off 
+04a5 2040020d call p_g24_auto_pair_timeout_clear 
+04a6 2040034b call p_mouse_init_sensor_reset 
+04a7 20403f8d call mouse_no_data_timer_init 
+
+p_mouse_24g_store_latest_mode_eeprom:
+04a8 704b5402 jam latest_mode_24g ,mem_mouse_latest_mode 
+04a9 2020045c branch p_mouse_store_latest_mode_eeprom 
 
 p_mouse_before_hibernate:
-020b 78347c00 enable user 
-020c 68120138 hfetch 4 ,0x8138 
-020d 79347e1a setflag user ,26 ,pdata 
-020e 6012004c hstore 4 ,core_lpm_reg 
-020f 20402c21 call lpm_write_ctrl 
-0210 20400118 call p_mouse_sensor_powerdown 
-0211 204074bd call disable_authrom 
-0212 20404482 call mouse_devce_led_off 
-0213 20403e9f call mouse_before_hibernate_wheel_gpio_set 
-0214 204000a2 call p_mouse_setgpio_lpm_before 
-0215 6808c6f7 fetcht 1 ,mem_select_sensor_angle_gpio 
-0216 202067ed branch gpio_clr_wake 
+04aa 68120138 hfetch 4 ,core_lpm_ctrl 
+04ab 79207e1a set1 ,26 ,pdata 
+04ac 6012004c hstore 4 ,core_lpm_reg 
+04ad 20402c21 call lpm_write_ctrl 
+04ae 204004bd call p_mouse_sensor_powerdown_check 
+04af 204074bd call disable_authrom 
+04b0 20400547 call p_mouse_multi_led_off2 
+04b1 20403e9f call mouse_before_hibernate_wheel_gpio_set 
+04b2 20400303 call p_mouse_setgpio_lpm_before 
+04b3 680400a1 fetch 8 ,mem_gpio_wakeup_low 
+04b4 793ffe08 set0 8 ,pdata 
+04b5 600400a1 store 8 ,mem_gpio_wakeup_low 
+04b6 6808c6e7 fetcht 1 ,mem_dpi_button_gpio 
+04b7 204005b8 call p_gpio_set_input_pd 
+04b8 680400a1 fetch 8 ,mem_gpio_wakeup_low 
+04b9 79207e28 set1 40 ,pdata 
+04ba 600400a1 store 8 ,mem_gpio_wakeup_low 
+04bb 6808c6f7 fetcht 1 ,mem_select_sensor_angle_gpio 
+04bc 202067ed branch gpio_clr_wake 
+
+p_mouse_sensor_powerdown_check:
+04bd 6800cb0c fetch 1 ,mem_mouse_init_sensor_reset_flag 
+04be 207a0000 rtn blank 
+04bf 704b0c00 jam 0 ,mem_mouse_init_sensor_reset_flag 
+04c0 20200359 branch p_mouse_sensor_powerdown 
 
 p_mouse_bb_event_timer:
-0217 20400221 call p_mouse_le_switch_adv_timer 
-0218 20400233 call p_mouse_24g_long_sleep_param_update_timer 
-0219 2040023a call p_mouse_le_current_mult_update_timer 
-021a 2040022e call p_mouse_wheel_trigger_timer 
-021b 20400244 call p_mouse_bt_discovery_check 
-021c 20404234 call mouse_check_discovery_timeout_timer 
-021d 20400253 call p_mouse_check_direct_timeout_timer 
-021e 2040423a call mouse_check_no_data_timeout_timer 
-021f 2040025f call p_mouse_device_ble_led_timer 
-0220 20200241 branch p_mouse_le_enable_att_list_timer 
+04c1 204004d8 call p_mouse_le_switch_adv_timer 
+04c2 20400525 call p_mouse_multi_led_blink_timer 
+04c3 20400505 call p_mouse_wheel_trigger_timer 
+04c4 2040050a call p_mouse_bt_discovery_check 
+04c5 20404234 call mouse_check_discovery_timeout_timer 
+04c6 204004e5 call p_mouse_g24_long_sleep_param_update_timer 
+04c7 204004ec call p_mouse_g24_stop_mode_timeout_timer 
+04c8 204004d1 call p_mouse_check_direct_timeout_timer 
+04c9 204004f4 call p_mouse_le_enable_att_list_timer 
+04ca 204004f7 call p_mouse_le_current_mult_update_timer 
+04cb 204004fd call p_le_send_smp_security_request_timer 
+04cc 204004ce call p_mouse_poweron_bt_start_reconn_timer 
+04cd 2020423a branch mouse_check_no_data_timeout_timer 
+
+p_mouse_poweron_bt_start_reconn_timer:
+04ce da604b55 arg mem_mouse_poweron_bt_start_reconn_timer ,regc 
+04cf da40049b arg p_mouse_bt_start_reconn ,regb 
+04d0 2020336d branch timer_single_step 
 
-p_mouse_le_switch_adv_timer:
-0221 6800c8a6 fetch 1 ,mem_le_switch_adv_flag 
-0222 207a0000 rtn blank 
-0223 da6048a7 arg mem_le_switch_adv_timer ,regc 
-0224 da400226 arg p_mouse_le_switch_adv ,regb 
-0225 2020336d branch timer_single_step 
+p_mouse_check_direct_timeout_timer:
+04d1 da6046ae arg mem_mouse_direct_timer ,regc 
+04d2 da4004d4 arg p_mouse_check_direct_timeout ,regb 
+04d3 20203374 branch timer_single_step_2b 
 
-p_mouse_le_switch_adv:
-0226 7048a701 jam 1 ,mem_le_switch_adv_timer 
-0227 6800c8a8 fetch 1 ,mem_le_switch_adv_count 
-0228 1fe0fe01 increase 1 ,pdata 
-0229 1fe17e01 and_into 1 ,pdata 
-022a 6000c8a8 store 1 ,mem_le_switch_adv_count 
-022b c0000307 beq 0 ,p_check_51cmd_adv 
-022c c0008316 beq 1 ,p_mouse_check_fast_conn_adv_start 
-022d 20600000 rtn 
+p_mouse_check_direct_timeout:
+04d4 6800cb47 fetch 1 ,mem_le_switch_adv_flag 
+04d5 243a340a nbranch app_enter_hibernate ,blank 
+04d6 704b5601 jam 1 ,mem_mouse_le_not_tx_disconn 
+04d7 20200519 branch p_mouse_long_button_bt_normal_discovery 
 
-p_mouse_wheel_trigger_timer:
-022e da60480b arg mem_mouse_wheel_trigger_timer ,regc 
-022f da400231 arg p_mouse_wheel_trigger_disable ,regb 
-0230 2020336d branch timer_single_step 
+p_mouse_le_switch_adv_timer:
+04d8 6800cb47 fetch 1 ,mem_le_switch_adv_flag 
+04d9 207a0000 rtn blank 
+04da da604b48 arg mem_le_switch_adv_timer ,regc 
+04db da4004dd arg p_mouse_le_switch_adv ,regb 
+04dc 2020336d branch timer_single_step 
 
-p_mouse_wheel_trigger_disable:
-0231 70480a00 jam 0 ,mem_mouse_wheel_trigger 
-0232 20600000 rtn 
+p_mouse_le_switch_adv:
+04dd 704b4801 jam 1 ,mem_le_switch_adv_timer 
+04de 6800cb49 fetch 1 ,mem_le_switch_adv_count 
+04df 1fe0fe01 increase 1 ,pdata 
+04e0 1fe17e01 and_into 1 ,pdata 
+04e1 6000cb49 store 1 ,mem_le_switch_adv_count 
+04e2 c00005dc beq 0 ,p_check_51cmd_adv 
+04e3 c00085ed beq 1 ,p_mouse_check_fast_conn_adv_start1 
+04e4 20600000 rtn 
+
+p_mouse_g24_long_sleep_param_update_timer:
+04e5 da604b3b arg mem_24g_long_sleep_param_update_timer ,regc 
+04e6 da4004e8 arg p_mouse_g24_long_sleep_normal_param ,regb 
+04e7 2020336d branch timer_single_step 
+
+p_mouse_g24_long_sleep_normal_param:
+04e8 5836ee80 setarg g24_long_sleep_step2 
+04e9 6001cc0c store 3 ,mem_24g_enter_hibernate 
+
+p_mouse_long_mult_flag_enable:
+04ea 704b3901 jam 1 ,mem_mouse_long_mult_flag 
+04eb 20600000 rtn 
+
+p_mouse_g24_stop_mode_timeout_timer:
+04ec da604b4e arg mem_g24_stop_g24_mode_timeout ,regc 
+04ed da4004ef arg p_mouse_g24_stop_mode_timeout ,regb 
+04ee 20203374 branch timer_single_step_2b 
+
+p_mouse_g24_stop_mode_timeout:
+04ef 704b4d01 jam 1 ,mem_g24_stop_g24_mode 
+04f0 680146ae fetch 2 ,mem_mouse_direct_timer 
+04f1 207a0000 rtn blank 
+04f2 7046ae02 jam 2 ,mem_mouse_direct_timer 
+04f3 20600000 rtn 
 
-p_mouse_24g_long_sleep_param_update_timer:
-0233 da60480e arg mem_24g_long_sleep_param_update_timer ,regc 
-0234 da400236 arg p_mouse_24g_long_sleep_normal_param ,regb 
-0235 2020336d branch timer_single_step 
-
-p_mouse_24g_long_sleep_normal_param:
-0236 5836ee80 setarg g24_long_sleep_step2 
-0237 6001c960 store 3 ,mem_24g_enter_hibernate 
-0238 70480c01 jam 1 ,mem_mouse_long_mult_flag 
-0239 20600000 rtn 
+p_mouse_le_enable_att_list_timer:
+04f4 da6046c6 arg mem_le_start_encrypt_timer ,regc 
+04f5 da403d60 arg mouse_le_write_enable ,regb 
+04f6 2020336d branch timer_single_step 
 
 p_mouse_le_current_mult_update_timer:
-023a da60480d arg mem_mouse_le_current_mult_timer ,regc 
-023b da40023d arg p_mouse_le_current_mult_reinit ,regb 
-023c 2020336d branch timer_single_step 
+04f7 da604b3a arg mem_mouse_le_current_mult_timer ,regc 
+04f8 da4004fa arg p_mouse_le_current_mult_reinit ,regb 
+04f9 2020336d branch timer_single_step 
 
 p_mouse_le_current_mult_reinit:
-023d 6800c7c9 fetch 1 ,mem_lpm_mult_init 
-023e 6000c172 store 1 ,mem_lpm_mult 
-023f 70480c01 jam 1 ,mem_mouse_long_mult_flag 
-0240 20600000 rtn 
+04fa 6800c7c5 fetch 1 ,mem_lpm_mult_init 
+04fb 6000c172 store 1 ,mem_lpm_mult 
+04fc 202004ea branch p_mouse_long_mult_flag_enable 
+
+p_le_send_smp_security_request_timer:
+04fd 6800cb3e fetch 1 ,mem_mouse_le_bb_connected_flag 
+04fe 207a0000 rtn blank 
+04ff da604b3c arg mem_mouse_send_secutiry_request_timer ,regc 
+0500 da400502 arg p_le_pairing_sm_start_check ,regb 
+0501 2020336d branch timer_single_step 
+
+p_le_pairing_sm_start_check:
+0502 6800cb3d fetch 1 ,mem_le_send_security_request_flag 
+0503 247a0000 nrtn blank 
+0504 20205bf5 branch le_pairing_sm_start 
 
-p_mouse_le_enable_att_list_timer:
-0241 da6046c6 arg mem_le_start_encrypt_timer ,regc 
-0242 da403d60 arg mouse_le_write_enable ,regb 
-0243 2020336d branch timer_single_step 
+p_mouse_wheel_trigger_timer:
+0505 da604807 arg mem_mouse_wheel_trigger_timer ,regc 
+0506 da400508 arg p_mouse_wheel_trigger_disable ,regb 
+0507 2020336d branch timer_single_step 
+
+p_mouse_wheel_trigger_disable:
+0508 70480600 jam 0 ,mem_mouse_wheel_trigger 
+0509 20600000 rtn 
 
 p_mouse_bt_discovery_check:
-0244 6800c6f5 fetch 1 ,mem_config_function_enable 
-0245 c2824394 bbit1 enable_bt_button ,mouse_bt_discovery_by_button 
 
 p_mouse_bt_discovery_commbination_key:
-0246 6800c6b6 fetch 1 ,mem_mouse_dpi_button_state 
-0247 203a024b branch p_mouse_bt_discovery_commbination_key_down ,blank 
-0248 204002a2 call p_mouse_check_key_gpio 
-0249 c003824b beq mouse_lmr_button ,p_mouse_bt_discovery_commbination_key_down 
-024a 202043a9 branch mouse_bt_discovery_commbination_key_up 
+050a 6800c6b6 fetch 1 ,mem_mouse_dpi_button_state 
+050b 203a0512 branch p_mouse_bt_discovery_commbination_key_down ,blank 
+
+p_mouse_bt_discovery_commbination_key_up:
+050c 6800c685 fetch 1 ,mem_ui_button_timeout 
+050d 6000c6da store 1 ,mem_combination_ui_button_count 
+050e 6800c6db fetch 1 ,mem_bt_discovey_button_statue 
+050f c1008000 rtneq dpi_button_state_up 
+0510 7046db01 jam dpi_button_state_up ,mem_bt_discovey_button_statue 
+0511 202043ca branch mouse_bt_discovery_button_down_disable 
 
 p_mouse_bt_discovery_commbination_key_down:
-024b 6800c720 fetch 1 ,mem_device_flag 
-024c c1010000 rtneq mode_24g_device 
-024d 7047a228 jam 40 ,mem_mouse_null_enter_hibernate_timer 
-024e 20400250 call p_mouse_bt_discovery_timer 
-024f 202043b0 branch mouse_bt_discovery_commbination_key_down + 1 
+0512 20400514 call p_mouse_bt_discovery_timer 
+0513 202043b0 branch mouse_bt_discovery_commbination_key_down + 1 
 
 p_mouse_bt_discovery_timer:
-0250 da6046da arg mem_combination_ui_button_count ,regc 
-0251 da40025d arg p_mouse_long_button_bt_discovery ,regb 
-0252 2020336d branch timer_single_step 
-
-p_mouse_check_direct_timeout_timer:
-0253 6800c87e fetch 1 ,mem_mouse_ble_reconn_enable 
-0254 207a0000 rtn blank 
-0255 6800c6ae fetch 1 ,mem_mouse_direct_timer 
-0256 203a025a branch p_mouse_check_direct_timeout ,blank 
-0257 1fe0ffff increase -1 ,pdata 
-0258 6000c6ae store 1 ,mem_mouse_direct_timer 
-0259 20600000 rtn 
-
-p_mouse_check_direct_timeout:
-025a 204042ca call mouse_stop_discovery 
-025b 70487e00 jam 0 ,mem_mouse_ble_reconn_enable 
-025c 2020025d branch p_mouse_long_button_bt_discovery 
+0514 da6046da arg mem_combination_ui_button_count ,regc 
+0515 da400517 arg p_mouse_long_button_bt_discovery ,regb 
+0516 2020336d branch timer_single_step 
 
 p_mouse_long_button_bt_discovery:
-025d 2040030b call p_mouse_le_adv_data_update 
-025e 202043b8 branch mouse_long_button_bt_discovry 
+0517 6800cb47 fetch 1 ,mem_le_switch_adv_flag 
+0518 243a0522 nbranch p_mouse_fast_conn_adv_switch_timer_reinit ,blank 
 
-p_mouse_device_ble_led_timer:
-025f 6800c87d fetch 1 ,mem_mouse_ble_led_on_enable 
-0260 243a026b nbranch p_mouse_device_ble_led_blink ,blank 
-0261 6800c87e fetch 1 ,mem_mouse_ble_reconn_enable 
-0262 207a0000 rtn blank 
-0263 6800c880 fetch 1 ,mem_mouse_device_led_on_timer_count 
-0264 207a0000 rtn blank 
-0265 1fe0ffff increase -1 ,pdata 
-0266 6000c880 store 1 ,mem_mouse_device_led_on_timer_count 
-0267 247a0000 nrtn blank 
-0268 6800c87f fetch 1 ,mem_mouse_device_led_on_timer_init 
-0269 6000c880 store 1 ,mem_mouse_device_led_on_timer_count 
-026a 20200271 branch p_mouse_device_ble_led_check 
-
-p_mouse_device_ble_led_blink:
-026b 680146ac fetch 2 ,mem_mouse_discovery_timer 
-026c 1fe6fc02 div pdata ,2 
-026d 20407f86 call wait_div_end 
-026e 18077e00 remainder pdata 
-026f 203a0271 branch p_mouse_device_ble_led_check ,blank 
-0270 20600000 rtn 
-
-p_mouse_device_ble_led_check:
-0271 6800c883 fetch 1 ,mem_device_led_blink_flag 
-0272 c0008275 beq 1 ,p_mouse_led_output_low_before 
-0273 c0010277 beq 2 ,p_mouse_device_state_led_off_before 
-0274 20600000 rtn 
-
-p_mouse_led_output_low_before:
-0275 70488302 jam 2 ,mem_device_led_blink_flag 
-0276 2020027d branch p_mouse_led_output_low 
-
-p_mouse_device_state_led_off_before:
-0277 70488301 jam 1 ,mem_device_led_blink_flag 
-0278 2020027b branch p_mouse_led_output_high 
-
-p_mouse_led_output_init:
-0279 6808c882 fetcht 1 ,mem_device_state_led_gpio 
-027a 2020680e branch gpio_config_output 
-
-p_mouse_led_output_high:
-027b 6808c882 fetcht 1 ,mem_device_state_led_gpio 
-027c 20206829 branch gpio_out_active 
-
-p_mouse_led_output_low:
-027d 6808c882 fetcht 1 ,mem_device_state_led_gpio 
-027e 20206825 branch gpio_out_inactive 
+p_mouse_long_button_bt_normal_discovery:
+0519 280ffe26 isolate1 mark_24g ,mark 
+051a 20408520 call p_mouse_le_adv_start ,true 
+051b 6800cb54 fetch 1 ,mem_mouse_latest_mode 
+051c 1fe67cff sub pdata ,latest_mode_null ,null 
+051d 20428520 call p_mouse_le_adv_start ,zero 
+051e 204005e0 call p_mouse_le_adv_data_update 
+051f 202043b8 branch mouse_long_button_bt_discovry 
+
+p_mouse_le_adv_start:
+0520 704b4b01 jam 1 ,mem_mouse_le_adv_start 
+0521 20600000 rtn 
+
+p_mouse_fast_conn_adv_switch_timer_reinit:
+0522 58000708 setarg ble_direct_adv_timeout 
+0523 600146ae store 2 ,mem_mouse_direct_timer 
+0524 20600000 rtn 
+
+p_mouse_multi_led_blink_timer:
+0525 6800caff fetch 1 ,mem_mouse_multi_led_blink_enable 
+0526 207a0000 rtn blank 
+0527 6800cb02 fetch 1 ,mem_mouse_multi_led_type 
+0528 c000852a beq multi_led_blink ,p_mouse_multi_led_type_blink 
+0529 20600000 rtn 
+
+p_mouse_multi_led_type_blink:
+052a da604b05 arg mem_mouse_multi_led_blink_timer ,regc 
+052b da40052d arg p_mouse_multi_led_type_blink_timeout ,regb 
+052c 2020336d branch timer_single_step 
+
+p_mouse_multi_led_type_blink_timeout:
+052d 6800cb04 fetch 1 ,mem_mouse_multi_led_blink_timer_init 
+052e 6000cb05 store 1 ,mem_mouse_multi_led_blink_timer 
+052f 6800cb08 fetch 1 ,mem_mouse_multi_led_blink_count_limited 
+0530 203a0535 branch p_mouse_multi_led_blink_count_no_limited ,blank 
+0531 6800cb06 fetch 1 ,mem_mouse_multi_led_blink_count 
+0532 203a053e branch p_mouse_multi_led_blink_off ,blank 
+0533 1fe0ffff increase -1 ,pdata 
+0534 6000cb06 store 1 ,mem_mouse_multi_led_blink_count 
+
+p_mouse_multi_led_blink_count_no_limited:
+0535 6800cb01 fetch 1 ,mem_mouse_multi_led_state 
+0536 c0008540 beq on ,p_mouse_multi_led_off 
+0537 c0000539 beq off ,p_mouse_multi_led_on 
+0538 20600000 rtn 
+
+p_mouse_multi_led_on:
+0539 704b0101 jam on ,mem_mouse_multi_led_state 
+053a 6808cb00 fetcht 1 ,mem_mouse_multi_led_gpio 
+053b 2040680e call gpio_config_output 
+053c 6808cb00 fetcht 1 ,mem_mouse_multi_led_gpio 
+053d 20206825 branch gpio_out_inactive 
+
+p_mouse_multi_led_blink_off:
+053e 58000000 setarg 0 
+053f 6001cb05 store 3 ,mem_mouse_multi_led_blink_timer 
+
+p_mouse_multi_led_off:
+0540 6800cb06 fetch 1 ,mem_mouse_multi_led_blink_count 
+0541 243a0545 nbranch p_mouse_multi_led_off_wait_blink_over ,blank 
+0542 704b0a00 jam 0 ,mem_mouse_multi_led_blink_poweron3s_flag 
+0543 704aff00 jam 0 ,mem_mouse_multi_led_blink_enable 
+0544 704b0200 jam 0 ,mem_mouse_multi_led_type 
+
+p_mouse_multi_led_off_wait_blink_over:
+0545 704b0700 jam 0 ,mem_mouse_multi_led_on_timer 
+0546 704b0100 jam off ,mem_mouse_multi_led_state 
+
+p_mouse_multi_led_off2:
+0547 6808cb00 fetcht 1 ,mem_mouse_multi_led_gpio 
+0548 79200407 set1 gpio_active_bit ,temp 
+0549 2040680e call gpio_config_output 
+054a 6808cb00 fetcht 1 ,mem_mouse_multi_led_gpio 
+054b 20206829 branch gpio_out_active 
+
+p_mouse_discovery_multi_led_blink:
+054c 704b0a00 jam 0 ,mem_mouse_multi_led_blink_poweron3s_flag 
+054d 704b0401 jam 1 ,mem_mouse_multi_led_blink_timer_init 
+
+p_mouse_discovery_multi_led_blink1:
+054e 704b0800 jam 0 ,mem_mouse_multi_led_blink_count_limited 
+054f 704b0601 jam 1 ,mem_mouse_multi_led_blink_count 
+
+p_mouse_multi_led_blink_enable:
+0550 704b0505 jam 5 ,mem_mouse_multi_led_blink_timer 
+0551 704aff01 jam on ,mem_mouse_multi_led_blink_enable 
+0552 704b0201 jam multi_led_blink ,mem_mouse_multi_led_type 
+0553 20600000 rtn 
+
+p_mouse_bt_reconn_multi_led_blink:
+0554 704b0403 jam 3 ,mem_mouse_multi_led_blink_timer_init 
+0555 2020054e branch p_mouse_discovery_multi_led_blink1 
+
+p_mouse_discovey_led_blink_off:
+0556 6800cb0a fetch 1 ,mem_mouse_multi_led_blink_poweron3s_flag 
+0557 247a0000 nrtn blank 
+0558 2020053e branch p_mouse_multi_led_blink_off 
+
+p_mouse_mode_24g_device_multi_led_blink3s:
+0559 704b0605 jam 5 ,mem_mouse_multi_led_blink_count 
+055a 704b040a jam 10 ,mem_mouse_multi_led_blink_timer_init 
+055b 2020055d branch p_mouse_dpi_multi_led_blink + 1 
+
+p_mouse_dpi_multi_led_blink:
+055c 704b0405 jam 5 ,mem_mouse_multi_led_blink_timer_init 
+055d 704b0801 jam 1 ,mem_mouse_multi_led_blink_count_limited 
+055e 20200550 branch p_mouse_multi_led_blink_enable 
 
 p_mouse_seting_dpi:
-027f 2040424a call mosue_dpi_led_blink_init 
 
 p_mouse_seting_dpi_sensor_type:
-0280 6800c6e0 fetch 1 ,mem_config_sensor_type 
-0281 c002bdaa beq p3610 ,mouse_seting_3610_dpi 
-0282 c0023d96 beq p3212 ,mouse_seting_3212_dpi 
-0283 c0030286 beq p3065_xy ,p_mouse_seting_3065xy_dpi 
-0284 c0018286 beq p3204 ,p_mouse_seting_3065xy_dpi 
+055f 6800c6e0 fetch 1 ,mem_config_sensor_type 
+0560 c003056c beq p3065_xy ,p_mouse_seting_3065xy_dpi 
+0561 c003856c beq mx8650 ,p_mouse_seting_3065xy_dpi 
+0562 c001057c beq ka8 ,p_mouse_seting_ka8_dpi 
 
 p_mouse_seting_3205_dpi:
-0285 20200286 branch p_mouse_seting_3065xy_dpi 
+0563 6800c77a fetch 1 ,mem_mouse_dpi 
+0564 1fe67c01 sub pdata ,mouse_dpi_level2 ,null 
+0565 2042856a call p_mouse_3205_dpi_recount ,zero 
+0566 6800c77a fetch 1 ,mem_mouse_dpi 
+0567 c0003d8a beq mouse_dpi_level1 ,mouse_set_cpi1 
+0568 c001bd8e beq mouse_dpi_level4 ,mouse_set_cpi4 
+0569 20203d8c branch mouse_set_cpi3 
+
+p_mouse_3205_dpi_recount:
+056a 70477a02 jam mouse_dpi_level3 ,mem_mouse_dpi 
+056b 20600000 rtn 
 
 p_mouse_seting_3065xy_dpi:
-0286 6800c77a fetch 1 ,mem_mouse_dpi 
-0287 c0000293 beq mouse_dpi_level1 ,p_mouse_3065xy_set_cpi2 
-0288 c000828b beq mouse_dpi_level2 ,p_mouse_3065xy_set_cpi3 
-0289 c0010295 beq mouse_dpi_level3 ,p_mouse_3065xy_set_cpi4 
-028a c0018290 beq mouse_dpi_level4 ,p_mouse_3065xy_set_cpi1 
+056c 6800c77a fetch 1 ,mem_mouse_dpi 
+056d 1fe67c01 sub pdata ,mouse_dpi_level2 ,null 
+056e 2042856a call p_mouse_3205_dpi_recount ,zero 
+056f 6800c77a fetch 1 ,mem_mouse_dpi 
+0570 c0000576 beq mouse_dpi_level1 ,p_mouse_3065xy_set_cpi1 
+0571 c0018579 beq mouse_dpi_level4 ,p_mouse_3065xy_set_cpi4 
 
 p_mouse_3065xy_set_cpi3:
-028b 70487c02 jam 2 ,mem_mouse_dpi_blink_count 
-028c 6800c78c fetch 1 ,mem_3065xy_dpi_1 
-028d 20203dbe branch mouse_p3205_dpi 
-
-p_mouse_3065xy_dpi_recount:
-028e 70477a02 jam mouse_dpi_level3 ,mem_mouse_dpi 
-028f 20600000 rtn 
+0572 6800c781 fetch 1 ,mem_320x_dpi_3 
+0573 1fe0ffff increase -1 ,pdata 
+
+p_mouse_dpi_store:
+0574 6000c6b5 store 1 ,mem_mouse_cpi_count 
+0575 20203dc1 branch mouse_p3205_dpi + 3 
 
 p_mouse_3065xy_set_cpi1:
-0290 70487c01 jam 1 ,mem_mouse_dpi_blink_count 
-0291 6800c78c fetch 1 ,mem_3065xy_dpi_1 
-0292 20203dbe branch mouse_p3205_dpi 
-
-p_mouse_3065xy_set_cpi2:
-0293 6800c78d fetch 1 ,mem_3065xy_dpi_2 
-0294 20203dbe branch mouse_p3205_dpi 
+0576 6800c77f fetch 1 ,mem_320x_dpi_1 
+0577 1fe0ffff increase -1 ,pdata 
+0578 20200574 branch p_mouse_dpi_store 
 
 p_mouse_3065xy_set_cpi4:
-0295 70487c03 jam 3 ,mem_mouse_dpi_blink_count 
-0296 6800c78f fetch 1 ,mem_3065xy_dpi_4 
-0297 20203dbe branch mouse_p3205_dpi 
+0579 6800c782 fetch 1 ,mem_320x_dpi_4 
+057a 1fe0ffff increase -1 ,pdata 
+057b 20200574 branch p_mouse_dpi_store 
+
+p_mouse_seting_ka8_dpi:
+057c 6800c77a fetch 1 ,mem_mouse_dpi 
+057d 205a056a call p_mouse_3205_dpi_recount ,blank 
+057e 6800c77a fetch 1 ,mem_mouse_dpi 
+057f c000bd88 beq mouse_dpi_level2 ,mouse_set_cpi2 
+0580 c0018582 beq mouse_dpi_level4 ,p_mouse_ka8_set_cpi3 
+0581 20203d8e branch mouse_set_cpi4 
+
+p_mouse_ka8_set_cpi3:
+0582 58000005 setarg 5 
+0583 20203dbe branch mouse_p3205_dpi 
 
 p_mouse_motion:
-0298 78547c00 disable user 
-0299 58000000 setarg 0 
-029a 6003469b store 6 ,mem_mouse_x 
-029b 204002d9 call p_mouse_cheak_sensor_data 
-029c 20404079 call mouse_zwheel 
-029d 2040407e call mouse_t_zwheel 
-029e 204002a0 call p_mouse_key 
-029f 20203f9f branch mouse_motion + 8 
+0584 78547c00 disable user 
+0585 58000000 setarg 0 
+0586 6003469b store 6 ,mem_mouse_x 
+0587 2040058d call p_mouse_cheak_sensor_data 
+0588 20404079 call mouse_zwheel 
+0589 2040407e call mouse_t_zwheel 
+058a 20400590 call p_mouse_key 
+058b 24740000 nrtn user 
+058c 20203fa0 branch mouse_motion + 9 
+
+p_mouse_cheak_sensor_data:
+
+p_mouse_p32xx_sensor_motion:
+058d 20403fc0 call mouse_clear_sensor_data 
+058e 78547c00 disable user 
+058f 20203fe7 branch mouse_p32xx_sensor_motion_2 
 
 p_mouse_key:
-02a0 204002a2 call p_mouse_check_key_gpio 
-02a1 2020409a branch mouse_key + 1 
+0590 20400592 call p_mouse_check_key_gpio 
+0591 2020409a branch mouse_key + 1 
 
 p_mouse_check_key_gpio:
-02a2 da200000 arg 0 ,rega 
-02a3 204002ad call p_mouse_check_lkey_gpio 
-02a4 204002b3 call p_mouse_check_rkey_gpio 
-02a5 204002b9 call p_mouse_check_mkey_gpio 
-02a6 204002a9 call p_mouse_check_skey_gpio 
-02a7 1a227e00 copy rega ,pdata 
-02a8 20600000 rtn 
+0592 da200000 arg 0 ,rega 
+0593 20400598 call p_mouse_check_lkey_gpio 
+0594 20400596 call p_mouse_check_skey_gpio 
+0595 2020408e branch mouse_check_key_gpio + 11 
 
 p_mouse_check_skey_gpio:
-02a9 6800c6e5 fetch 1 ,mem_bk_button_gpio 
-02aa c17f8000 rtneq gpio_disable 
-02ab 204002bf call p_mouse_check_bk_key_gpio 
-02ac 202002c5 branch p_mouse_check_fw_key_gpio 
+0596 204005a8 call p_mouse_check_bk_key_gpio 
+0597 202005ae branch p_mouse_check_fw_key_gpio 
 
 p_mouse_check_lkey_gpio:
-02ad 6808c6e2 fetcht 1 ,mem_lbutton_gpio 
-02ae 204002d4 call p_gpio_set_input_pu 
-02af 6808c6e2 fetcht 1 ,mem_lbutton_gpio 
-02b0 2040681d call gpio_get_bit 
-02b1 7920a200 setflag true ,0 ,rega 
-02b2 20600000 rtn 
+0598 6808c6e2 fetcht 1 ,mem_lbutton_gpio 
+0599 204005b3 call p_gpio_set_input_pu 
+059a 6808c6e2 fetcht 1 ,mem_lbutton_gpio 
+059b 2040681d call gpio_get_bit 
+059c 7920a200 setflag true ,0 ,rega 
 
 p_mouse_check_rkey_gpio:
-02b3 6808c6e3 fetcht 1 ,mem_rbutton_gpio 
-02b4 204002d4 call p_gpio_set_input_pu 
-02b5 6808c6e3 fetcht 1 ,mem_rbutton_gpio 
-02b6 2040681d call gpio_get_bit 
-02b7 7920a201 setflag true ,1 ,rega 
-02b8 20600000 rtn 
+059d 6808c6e3 fetcht 1 ,mem_rbutton_gpio 
+059e 204005b3 call p_gpio_set_input_pu 
+059f 6808c6e3 fetcht 1 ,mem_rbutton_gpio 
+05a0 2040681d call gpio_get_bit 
+05a1 7920a201 setflag true ,1 ,rega 
 
 p_mouse_check_mkey_gpio:
-02b9 6808c6e4 fetcht 1 ,mem_mbutton_gpio 
-02ba 204002d4 call p_gpio_set_input_pu 
-02bb 6808c6e4 fetcht 1 ,mem_mbutton_gpio 
-02bc 2040681d call gpio_get_bit 
-02bd 7920a202 setflag true ,2 ,rega 
-02be 20600000 rtn 
+05a2 6808c6e4 fetcht 1 ,mem_mbutton_gpio 
+05a3 204005b3 call p_gpio_set_input_pu 
+05a4 6808c6e4 fetcht 1 ,mem_mbutton_gpio 
+05a5 2040681d call gpio_get_bit 
+05a6 7920a202 setflag true ,2 ,rega 
+05a7 20600000 rtn 
 
 p_mouse_check_bk_key_gpio:
-02bf 6808c6e5 fetcht 1 ,mem_bk_button_gpio 
-02c0 204002cb call p_gpio_set_input_pd 
-02c1 6808c6e5 fetcht 1 ,mem_bk_button_gpio 
-02c2 2040681d call gpio_get_bit 
-02c3 7d20a203 nsetflag true ,3 ,rega 
-02c4 202002d4 branch p_gpio_set_input_pu 
+05a8 6808c6e5 fetcht 1 ,mem_bk_button_gpio 
+05a9 204005b8 call p_gpio_set_input_pd 
+05aa 6808c6e5 fetcht 1 ,mem_bk_button_gpio 
+05ab 2040681d call gpio_get_bit 
+05ac 7d20a203 nsetflag true ,3 ,rega 
+05ad 202005b3 branch p_gpio_set_input_pu 
 
 p_mouse_check_fw_key_gpio:
-02c5 6808c6e6 fetcht 1 ,mem_fw_button_gpio 
-02c6 204002cb call p_gpio_set_input_pd 
-02c7 6808c6e6 fetcht 1 ,mem_fw_button_gpio 
-02c8 2040681d call gpio_get_bit 
-02c9 7d20a204 nsetflag true ,4 ,rega 
-02ca 202002d4 branch p_gpio_set_input_pu 
-
-p_gpio_set_input_pd:
-02cb 793f8407 set0 gpio_active_bit ,temp 
-02cc d8a08078 arg core_gpio_pu0 ,contw 
-02cd 20406830 call gpio_set_bit 
-02ce 79200407 set1 gpio_active_bit ,temp 
-02cf d8a0807c arg core_gpio_pd0 ,contw 
-02d0 20406830 call gpio_set_bit 
-02d1 793f8407 set0 gpio_active_bit ,temp 
-02d2 d8a08070 arg core_gpio_oe0 ,contw 
-02d3 20206830 branch gpio_set_bit 
+05ae 6808c6e6 fetcht 1 ,mem_fw_button_gpio 
+05af 204005b8 call p_gpio_set_input_pd 
+05b0 6808c6e6 fetcht 1 ,mem_fw_button_gpio 
+05b1 2040681d call gpio_get_bit 
+05b2 7d20a204 nsetflag true ,4 ,rega 
 
 p_gpio_set_input_pu:
-02d4 79200407 set1 gpio_active_bit ,temp 
-02d5 d8a08078 arg core_gpio_pu0 ,contw 
-02d6 20406830 call gpio_set_bit 
-02d7 793f8407 set0 gpio_active_bit ,temp 
-02d8 202002cf branch p_gpio_set_input_pd + 4 
-
-p_mouse_cheak_sensor_data:
-02d9 6800c6e0 fetch 1 ,mem_config_sensor_type 
-02da c00202e4 beq p3212 ,p_mouse_p3212_sensor_motion 
-02db c002c010 beq p3610 ,mouse_p3610_sensor_motion 
+05b3 79200407 set1 gpio_active_bit ,temp 
+05b4 d8a08078 arg core_gpio_pu0 ,contw 
+05b5 20406830 call gpio_set_bit 
+05b6 793f8407 set0 gpio_active_bit ,temp 
+05b7 202005bc branch p_gpio_set_input_pd + 4 
 
-p_mouse_p32xx_sensor_motion:
-02dc 20403fc0 call mouse_clear_sensor_data 
-02dd 78547c00 disable user 
-02de 6800c6f5 fetch 1 ,mem_config_function_enable 
-02df c303bfe7 bbit0 enable_sensor_motion_pin ,mouse_p32xx_sensor_motion_2 
-02e0 6808c6f3 fetcht 1 ,mem_sensor_data_gpio 
-02e1 2040681d call gpio_get_bit 
-02e2 24608000 nrtn true 
-02e3 20203fe7 branch mouse_p32xx_sensor_motion_2 
-
-p_mouse_p3212_sensor_motion:
-02e4 20403fc0 call mouse_clear_sensor_data 
-02e5 6800c6f5 fetch 1 ,mem_config_function_enable 
-02e6 c303bfc8 bbit0 enable_sensor_motion_pin ,mouse_p3212_sensor_motion_1 
-02e7 6808c6f3 fetcht 1 ,mem_sensor_data_gpio 
-02e8 2040681d call gpio_get_bit 
-02e9 24608000 nrtn true 
-02ea 20203fc8 branch mouse_p3212_sensor_motion_1 
+p_gpio_set_input_pd:
+05b8 793f8407 set0 gpio_active_bit ,temp 
+05b9 d8a08078 arg core_gpio_pu0 ,contw 
+05ba 20406830 call gpio_set_bit 
+05bb 79200407 set1 gpio_active_bit ,temp 
+05bc d8a0807c arg core_gpio_pd0 ,contw 
+05bd 2020680a branch gpio_set_high_impedance + 4 
 
 p_mouse_bb_event_discovery_btn:
-02eb 7047a100 jam 0 ,mem_mouse_null_enter_hibernate_flag 
-02ec 7047a200 jam 0 ,mem_mouse_null_enter_hibernate_timer 
-02ed 280ffe26 isolate1 mark_24g ,mark 
-02ee 204085a6 call p_g24_check_51cmd_stop_24g ,true 
-02ef 2020426d branch mouse_bb_event_discovery_btn + 1 
+05be 280ffe26 isolate1 mark_24g ,mark 
+05bf 20408230 call p_g24_check_51cmd_stop_24g ,true 
+05c0 7046b400 jam 0 ,mem_mouse_send_blank_timer 
+05c1 6800cb56 fetch 1 ,mem_mouse_le_not_tx_disconn 
+05c2 205a4386 call mouse_disconnect ,blank 
+05c3 58000000 setarg 0 
+05c4 600146b0 store 2 ,mem_mouse_no_data_timer 
+05c5 2020426f branch mouse_bb_event_discovery_btn + 3 
 
 p_mouse_start_discovery:
-02f0 7048a901 jam 1 ,mem_mouse_start_discovery_enable 
-02f1 7047a000 jam 0 ,mem_mouse_clear_sensor_data_flag 
+05c6 20400323 call p_mouse_tx_power_init 
+05c7 704b3d00 jam 0 ,mem_le_send_security_request_flag 
+05c8 704b4a01 jam 1 ,mem_mouse_start_discovery_enable 
+05c9 70472001 jam mode_bt_device1 ,mem_device_flag 
+05ca 70479c00 jam 0 ,mem_mouse_clear_sensor_data_flag 
 
 p_mouse_start_discovery_norandom:
-02f2 20403402 call app_ble_disconnect 
-02f3 680348a0 fetch 6 ,mem_le_normal_lap 
-02f4 600344a0 store 6 ,mem_le_lap 
-02f5 7048845a jam 0x5a ,mem_mouse_fast_conn_flag 
-02f6 20400139 call p_mouse_store_fast_conn_flag 
-02f7 20403418 call app_lpm_mult_disable 
-02f8 68014687 fetch 2 ,mem_discovery_timeout 
-02f9 600146ac store 2 ,mem_mouse_discovery_timer 
-02fa 70016d06 jam 6 ,mem_connection_options 
-02fb 70487d01 jam 1 ,mem_mouse_ble_led_on_enable 
-02fc 70487e00 jam 0 ,mem_mouse_ble_reconn_enable 
-02fd 58000000 setarg 0 
-02fe 600146b0 store 2 ,mem_mouse_no_data_timer 
-02ff 600146ae store 2 ,mem_mouse_direct_timer 
-0300 d8e00007 arg mouse_store_eeprom_flag ,queue 
-0301 204043ce call mouse_enable_function_flag 
-0302 204043ca call mouse_bt_discovery_button_down_disable 
-0303 6800c092 fetch 1 ,mem_device_option 
-0304 2feffe01 isolate1 mode_4_mouse ,pdata 
-0305 20408307 call p_check_51cmd_adv ,true 
-0306 202042c4 branch mouse_start_discovery_norandom + 13 
+05cb 68034b41 fetch 6 ,mem_le_normal_lap 
+05cc 600344a0 store 6 ,mem_le_lap 
+05cd 704b405a jam 0x5a ,mem_mouse_fast_conn_flag 
+05ce 2040037b call p_mouse_store_fast_conn_flag 
+05cf 20403418 call app_lpm_mult_disable 
+05d0 68014687 fetch 2 ,mem_discovery_timeout 
+05d1 600146ac store 2 ,mem_mouse_discovery_timer 
+05d2 70016d06 jam 6 ,mem_connection_options 
+05d3 58000000 setarg 0 
+05d4 600146b0 store 2 ,mem_mouse_no_data_timer 
+05d5 600146ae store 2 ,mem_mouse_direct_timer 
+05d6 204005e9 call p_mouse_store_eeprom_enable 
+05d7 204043ca call mouse_bt_discovery_button_down_disable 
+05d8 6800cb4b fetch 1 ,mem_mouse_le_adv_start 
+05d9 245a05dc ncall p_check_51cmd_adv ,blank 
+05da 204042c4 call mouse_start_discovery_norandom + 13 
+05db 2020054c branch p_mouse_discovery_multi_led_blink 
 
 p_check_51cmd_adv:
-0307 680348a0 fetch 6 ,mem_le_normal_lap 
-0308 600344a0 store 6 ,mem_le_lap 
-0309 2040030b call p_mouse_le_adv_data_update 
-030a 20207df4 branch check_51cmd_adv 
+05dc 68034b41 fetch 6 ,mem_le_normal_lap 
+05dd 600344a0 store 6 ,mem_le_lap 
+05de 204005e0 call p_mouse_le_adv_data_update 
+05df 20207df4 branch check_51cmd_adv 
 
 p_mouse_le_adv_data_update:
-030b 70436f1f jam 0x1f ,mem_le_adv_data_len 
-030c 70438f1f jam 0x1f ,mem_le_scan_data_len 
-030d d8e00007 arg mouse_store_eeprom_flag ,queue 
-030e 204043ce call mouse_enable_function_flag 
-030f 7047a300 jam 0 ,mem_mouse_le_reconnect_flag 
-0310 d8c04885 arg mem_le_adv_swift_pair ,contr 
-0311 20200312 branch p_le_adv_data_update 
+05e0 70436f1f jam 0x1f ,mem_le_adv_data_len 
+05e1 70438f1f jam 0x1f ,mem_le_scan_data_len 
+05e2 204005e9 call p_mouse_store_eeprom_enable 
+05e3 70479f00 jam 0 ,mem_mouse_le_reconnect_flag 
+05e4 d8c04b1e arg mem_le_adv_swift_pair ,contr 
 
 p_le_adv_data_update:
-0312 d8a0437b arg mem_le_adv_data + 11 ,contw 
-0313 df200013 arg 19 ,loopcnt 
-0314 20407f01 call memcpy 
-0315 202057b8 branch le_modified_name_adv 
+05e5 d8a0437b arg mem_le_adv_data + 11 ,contw 
+05e6 df200013 arg 19 ,loopcnt 
+05e7 20407f01 call memcpy 
+05e8 202057b8 branch le_modified_name_adv 
+
+p_mouse_store_eeprom_enable:
+05e9 d8e00007 arg mouse_store_eeprom_flag ,queue 
+05ea 202043ce branch mouse_enable_function_flag 
 
 p_mouse_check_fast_conn_adv_start:
-0316 d8e00007 arg mouse_store_eeprom_flag ,queue 
-0317 204043d2 call mouse_disable_function_flag 
-0318 2040013f call p_mouse_fast_conn_init 
-0319 7047a300 jam 0 ,mem_mouse_le_reconnect_flag 
-031a 70436f00 jam 0 ,mem_le_adv_data_len 
-031b 70438f1f jam 0x1f ,mem_le_scan_data_len 
-031c 20207df4 branch check_51cmd_adv 
+05eb 280ffe26 isolate1 mark_24g ,mark 
+05ec 2440854c ncall p_mouse_discovery_multi_led_blink ,true 
+
+p_mouse_check_fast_conn_adv_start1:
+05ed d8e00007 arg mouse_store_eeprom_flag ,queue 
+05ee 204043d2 call mouse_disable_function_flag 
+05ef 20400381 call p_mouse_fast_conn_init 
+05f0 70479f00 jam 0 ,mem_mouse_le_reconnect_flag 
+05f1 70436f00 jam 0 ,mem_le_adv_data_len 
+05f2 70438f1f jam 0x1f ,mem_le_scan_data_len 
+05f3 20207df4 branch check_51cmd_adv 
 
 p_le_fast_conn_adv_data_update:
-031d 2040013f call p_mouse_fast_conn_init 
-031e d8a04370 arg mem_le_adv_data ,contw 
-031f df20000b arg 11 ,loopcnt 
-0320 20407f01 call memcpy 
-0321 202057b8 branch le_modified_name_adv 
+05f4 20400381 call p_mouse_fast_conn_init 
+05f5 d8a04370 arg mem_le_adv_data ,contw 
+05f6 df20000b arg 11 ,loopcnt 
+05f7 20407f01 call memcpy 
+05f8 202057b8 branch le_modified_name_adv 
 
 p_mouse_stop_discovery:
-0322 58000000 setarg 0 
-0323 600146ac store 2 ,mem_mouse_discovery_timer 
-0324 202042cb branch mouse_stop_discovery + 1 
+05f9 20400556 call p_mouse_discovey_led_blink_off 
+05fa 58000000 setarg 0 
+05fb 600146ac store 2 ,mem_mouse_discovery_timer 
+05fc 704b0c01 jam 1 ,mem_mouse_init_sensor_reset_flag 
+05fd 20400354 call p_mouse_sensor_poweron 
+05fe 202042cb branch mouse_stop_discovery + 1 
 
 p_le_slave_match:
-0325 6800c50f fetch 1 ,mem_le_md_count 
-0326 1fe0fe01 pincrease 1 
-0327 6000c50f store 1 ,mem_le_md_count 
-0328 c0065395 beq le_md_max_count ,le_slave_cont 
-0329 204055aa call le_acknowledge 
-032a 2040561e call le_prepare_tx 
-032b 204004f4 call power_ctrl_start 
-032c 2020538f branch le_slave_match + 7 
+05ff 6800c50f fetch 1 ,mem_le_md_count 
+0600 1fe0fe01 pincrease 1 
+0601 6000c50f store 1 ,mem_le_md_count 
+0602 c0065395 beq le_md_max_count ,le_slave_cont 
+0603 204055aa call le_acknowledge 
+0604 2040561e call le_prepare_tx 
+0605 204006e6 call power_ctrl_start 
+0606 2020538f branch le_slave_match + 7 
 
 p_le_next_adv_channel:
-032d 68008016 fetch 1 ,mem_le_ch_mapped 
-032e 1fe0fe01 increase 1 ,pdata 
-032f 60008016 store 1 ,mem_le_ch_mapped 
-0330 c1940000 rtnne 40 
-0331 70001625 jam 37 ,mem_le_ch_mapped 
-0332 20600000 rtn 
+0607 68008016 fetch 1 ,mem_le_ch_mapped 
+0608 1fe0fe01 increase 1 ,pdata 
+0609 60008016 store 1 ,mem_le_ch_mapped 
+060a c1940000 rtnne 40 
+060b 70001625 jam 37 ,mem_le_ch_mapped 
+060c 20600000 rtn 
 
 p_le_receive_skip:
-0333 204029bb call save_rssi 
-0334 1fe22200 copy pdata ,rega 
-0335 2040001d call p_rssi_signal 
-0336 202054a3 branch le_receive_skip + 2 
+060d 204029bb call save_rssi 
+060e 2040001f call p_rssi_signal 
+060f 202054a3 branch le_receive_skip + 2 
 
 p_le_update_param:
-0337 2040033f call p_mouse_le_conn_param_check 
-0338 2020557d branch le_update_param + 8 
+0610 20400618 call p_mouse_le_conn_param_check 
+0611 2020557d branch le_update_param + 8 
 
 p_mouse_le_lpm_mult_reinit:
-0339 6800c7c9 fetch 1 ,mem_lpm_mult_init 
-033a 6000c172 store 1 ,mem_lpm_mult 
+0612 6800c7c5 fetch 1 ,mem_lpm_mult_init 
+0613 6000c172 store 1 ,mem_lpm_mult 
 
 p_mouse_le_conn_param_lpm_enable:
-033b 7047c800 jam le_lpm_enable ,mem_mouse_le_conn_param_reject 
-033c 20600000 rtn 
+0614 7047c400 jam le_lpm_enable ,mem_mouse_le_conn_param_reject 
+0615 20600000 rtn 
 
 p_mouse_le_conn_param_lpm_disable:
-033d 7047c801 jam le_lpm_disable ,mem_mouse_le_conn_param_reject 
-033e 20600000 rtn 
+0616 7047c401 jam le_lpm_disable ,mem_mouse_le_conn_param_reject 
+0617 20600000 rtn 
 
 p_mouse_le_conn_param_check:
-033f 6800c3d6 fetch 1 ,mem_le_new_conninterval 
-0340 1fe67c0c sub pdata ,le_interval_15ms ,null 
-0341 2421033d nbranch p_mouse_le_conn_param_lpm_disable ,positive 
-0342 6800c3d8 fetch 1 ,mem_le_new_connslavelatency 
-0343 6808c7c9 fetcht 1 ,mem_lpm_mult_init 
-0344 98467c00 isub temp ,null 
-0345 20210339 branch p_mouse_le_lpm_mult_reinit ,positive 
-0346 6800c3d8 fetch 1 ,mem_le_new_connslavelatency 
-0347 6000c172 store 1 ,mem_lpm_mult 
-0348 2020033b branch p_mouse_le_conn_param_lpm_enable 
+0618 6800c3d6 fetch 1 ,mem_le_new_conninterval 
+0619 1fe67c0c sub pdata ,le_interval_15ms ,null 
+061a 24210616 nbranch p_mouse_le_conn_param_lpm_disable ,positive 
+061b 6800c3d8 fetch 1 ,mem_le_new_connslavelatency 
+061c 6808c7c5 fetcht 1 ,mem_lpm_mult_init 
+061d 98467c00 isub temp ,null 
+061e 20210612 branch p_mouse_le_lpm_mult_reinit ,positive 
+061f 6800c3d8 fetch 1 ,mem_le_new_connslavelatency 
+0620 6000c172 store 1 ,mem_lpm_mult 
+0621 20200614 branch p_mouse_le_conn_param_lpm_enable 
 
 p_le_update_channel_map:
-0349 6800843f fetch 1 ,mem_le_state 
-034a c4030000 rtnbit0 lestate_update_map 
-034b 2040034e call p_le_channel_map_overflow_check 
-034c 24740000 nrtn user 
-034d 202055a0 branch le_update_channel_map + 3 
+0622 6800843f fetch 1 ,mem_le_state 
+0623 c4030000 rtnbit0 lestate_update_map 
+0624 20400627 call p_le_channel_map_overflow_check 
+0625 24740000 nrtn user 
+0626 202055a0 branch le_update_channel_map + 3 
 
 p_le_channel_map_overflow_check:
-034e 78347c00 enable user 
-034f 6800845a fetch 1 ,mem_le_event_count + 1 
-0350 1ff1fe00 rshift4 pdata ,pdata 
-0351 c1878000 rtnne 0x0f 
-0352 68008460 fetch 1 ,mem_le_instant + 1 
-0353 1ff1fe00 rshift4 pdata ,pdata 
-0354 c1800000 rtnne 0x00 
-0355 20207fe9 branch disable_user 
+0627 78347c00 enable user 
+0628 6800845a fetch 1 ,mem_le_event_count + 1 
+0629 1ff1fe00 rshift4 pdata ,pdata 
+062a c1878000 rtnne 0x0f 
+062b 68008460 fetch 1 ,mem_le_instant + 1 
+062c 1ff1fe00 rshift4 pdata ,pdata 
+062d c1800000 rtnne 0x00 
+062e 20207fe9 branch disable_user 
 
 p_le_prepare_tx:
-0356 68008456 fetch 1 ,mem_le_arq 
-0357 c282836a bbit1 wak ,p_le_prepare_tx_wak 
-0358 204004e6 call power_ctrl_pac_succ_incrs 
-0359 6800c792 fetch 1 ,mem_empty_count 
-035a 243a0360 nbranch p_le_send_empyt ,blank 
-035b 6800843f fetch 1 ,mem_le_state 
-035c c3020364 bbit0 lestate_encryption ,p_le_tx_4 
-035d 680082da fetch 1 ,mem_le_rxbuf + 1 
-035e 203a0364 branch p_le_tx_4 ,blank 
-035f 20205664 branch le_send_empty 
+062f 68008456 fetch 1 ,mem_le_arq 
+0630 c2828643 bbit1 wak ,p_le_prepare_tx_wak 
+0631 204006d8 call power_ctrl_pac_succ_incrs 
+0632 6800c78e fetch 1 ,mem_empty_count 
+0633 243a0639 nbranch p_le_send_empyt ,blank 
+0634 6800843f fetch 1 ,mem_le_state 
+0635 c302063d bbit0 lestate_encryption ,p_le_tx_4 
+0636 680082da fetch 1 ,mem_le_rxbuf + 1 
+0637 203a063d branch p_le_tx_4 ,blank 
+0638 20205664 branch le_send_empty 
 
 p_le_send_empyt:
-0360 6800c792 fetch 1 ,mem_empty_count 
-0361 1fe0ffff increase -1 ,pdata 
-0362 6000c792 store 1 ,mem_empty_count 
-0363 20205664 branch le_send_empty 
+0639 6800c78e fetch 1 ,mem_empty_count 
+063a 1fe0ffff increase -1 ,pdata 
+063b 6000c78e store 1 ,mem_empty_count 
+063c 20205664 branch le_send_empty 
 
 p_le_tx_4:
-0364 6800c4c4 fetch 1 ,mem_le_pairing_state 
-0365 c0828367 bne flag_le_pairing_after_auth ,p_in_le_tx_4 
-0366 70479203 jam 3 ,mem_empty_count 
+063d 6800c4c4 fetch 1 ,mem_le_pairing_state 
+063e c0828640 bne flag_le_pairing_after_auth ,p_in_le_tx_4 
+063f 70478e03 jam 3 ,mem_empty_count 
 
 p_in_le_tx_4:
-0367 20405892 call le_fifo_check_nearly_full 
-0368 205a06d3 call p_mouse_data_pull ,blank 
-0369 20205622 branch le_prepare_tx + 4 
+0640 20405892 call le_fifo_check_nearly_full 
+0641 205a0415 call p_mouse_data_pull ,blank 
+0642 20205622 branch le_prepare_tx + 4 
 
 p_le_prepare_tx_wak:
-036a 2040036c call p_le_check_tx_retransmit_setmd 
-036b 20200378 branch p_le_power_ctrl_pac_succ_decrs 
+0643 20400645 call p_le_check_tx_retransmit_setmd 
+0644 20200651 branch p_le_power_ctrl_pac_succ_decrs 
 
 p_le_check_tx_retransmit_setmd:
-036c 6800c6c5 fetch 1 ,mem_le_connect_status_flag 
-036d 1fe17e03 and pdata ,0x03 ,pdata 
-036e c1818000 rtnne 0x03 
-036f 6800c7c5 fetch 1 ,mem_mouse_data_queue_num 
-0370 207a0000 rtn blank 
-0371 6800c3dd fetch 1 ,mem_le_txlen 
-0372 207a0000 rtn blank 
-0373 6800c3dc fetch 1 ,mem_le_txheader 
-0374 79207e04 set1 md ,pdata 
-0375 6000c3dc store 1 ,mem_le_txheader 
-0376 20405650 call le_set_md 
-0377 20600000 rtn 
+0645 6800c6c5 fetch 1 ,mem_le_connect_status_flag 
+0646 1fe17e03 and pdata ,0x03 ,pdata 
+0647 c1818000 rtnne 0x03 
+0648 6800c7c1 fetch 1 ,mem_mouse_data_queue_num 
+0649 207a0000 rtn blank 
+064a 6800c3dd fetch 1 ,mem_le_txlen 
+064b 207a0000 rtn blank 
+064c 6800c3dc fetch 1 ,mem_le_txheader 
+064d 79207e04 set1 md ,pdata 
+064e 6000c3dc store 1 ,mem_le_txheader 
+064f 20405650 call le_set_md 
+0650 20600000 rtn 
 
 p_le_power_ctrl_pac_succ_decrs:
-0378 202004ea branch power_ctrl_pac_succ_decrs 
+0651 202006dc branch power_ctrl_pac_succ_decrs 
 
 p_mouse_le_reconn_write_enable_timer_reinit:
-0379 6800c7a3 fetch 1 ,mem_mouse_le_reconnect_flag 
-037a 207a0000 rtn blank 
-037b 6800c6c5 fetch 1 ,mem_le_connect_status_flag 
-037c 1fe17e03 and pdata ,0x03 ,pdata 
-037d c1018000 rtneq 0x03 
-037e 7046c60a jam 10 ,mem_le_start_encrypt_timer 
-037f 20600000 rtn 
+0652 6800c79f fetch 1 ,mem_mouse_le_reconnect_flag 
+0653 207a0000 rtn blank 
+0654 6800c6c5 fetch 1 ,mem_le_connect_status_flag 
+0655 1fe17e03 and pdata ,0x03 ,pdata 
+0656 c1018000 rtneq 0x03 
+0657 7046c60a jam 10 ,mem_le_start_encrypt_timer 
+0658 20600000 rtn 
 
 p_le_parse:
-0380 c6078000 rtnmark1 mark_old_packet 
-0381 20405890 call le_fifo_check_full 
-0382 247a0000 nrtn blank 
-0383 680082d9 fetch 1 ,mem_le_rxbuf 
-0384 1fe17e03 and pdata ,0x3 ,pdata 
-0385 6000c50c store 1 ,mem_le_packet_llid 
-0386 e8c08000 ifetch 1 ,contr 
-0387 1fe17e1f and pdata ,0x1f ,pdata 
-0388 6000c50b store 1 ,mem_le_packet_size 
-0389 207a0000 rtn blank 
-038a 18c27e00 copy contr ,pdata 
-038b 6001450d store 2 ,mem_le_payload_ptr 
-038c 6800c50c fetch 1 ,mem_le_packet_llid 
-038d c001838f beq llid_le_ll ,p_le_parse_ll 
-038e 2020568d branch le_parse_l2cap 
+0659 c6078000 rtnmark1 mark_old_packet 
+065a 20405890 call le_fifo_check_full 
+065b 247a0000 nrtn blank 
+065c 680082d9 fetch 1 ,mem_le_rxbuf 
+065d 1fe17e03 and pdata ,0x3 ,pdata 
+065e 6000c50c store 1 ,mem_le_packet_llid 
+065f e8c08000 ifetch 1 ,contr 
+0660 1fe17e1f and pdata ,0x1f ,pdata 
+0661 6000c50b store 1 ,mem_le_packet_size 
+0662 207a0000 rtn blank 
+0663 18c27e00 copy contr ,pdata 
+0664 6001450d store 2 ,mem_le_payload_ptr 
+0665 6800c50c fetch 1 ,mem_le_packet_llid 
+0666 c0018668 beq llid_le_ll ,p_le_parse_ll 
+0667 2020568d branch le_parse_l2cap 
 
 p_le_parse_ll:
-038f 680082db fetch 1 ,mem_le_rxbuf + 2 
-0390 c0008392 beq ll_channel_map_req ,p_le_parse_channel_map_req 
-0391 20205c65 branch le_parse_ll + 1 
+0668 680082db fetch 1 ,mem_le_rxbuf + 2 
+0669 c000066c beq ll_connection_update_req ,p_le_parse_connection_update_req 
+066a c0008673 beq ll_channel_map_req ,p_le_parse_channel_map_req 
+066b 20205c65 branch le_parse_ll + 1 
+
+p_le_parse_connection_update_req:
+066c 20405c7b call le_parse_connection_update_req 
+066d 6800cb53 fetch 1 ,mem_mouse_le_updata_not_accepted_flag 
+066e 207a0000 rtn blank 
+
+p_mouse_le_conn_param_update_rsp_not_accepted_mult_reset:
+066f 6800c3d8 fetch 1 ,mem_le_new_connslavelatency 
+0670 6000c172 store 1 ,mem_lpm_mult 
+0671 6000c7c5 store 1 ,mem_lpm_mult_init 
+0672 20600000 rtn 
 
 p_le_parse_channel_map_req:
-0392 e8c28000 ifetch 5 ,contr 
-0393 6002c3ce store 5 ,mem_le_new_map 
-0394 e8c10000 ifetch 2 ,contr 
-0395 6001045f store 2 ,mem_le_instant 
-0396 20205c8a branch le_parse_channel_map_req + 7 
+0673 e8c28000 ifetch 5 ,contr 
+0674 6002c3ce store 5 ,mem_le_new_map 
+0675 e8c10000 ifetch 2 ,contr 
+0676 6001045f store 2 ,mem_le_instant 
+0677 20205c8a branch le_parse_channel_map_req + 7 
 
 p_le_parse_l2cap:
-0397 e8c10000 ifetch 2 ,contr 
-0398 c002039b beq le_l2cap_cid_att ,p_le_parse_att 
-0399 c00303d9 beq le_l2cap_cid_smp ,p_le_parse_smp 
-039a 20205698 branch le_parse_l2cap + 11 
+0678 e8c10000 ifetch 2 ,contr 
+0679 c002067c beq le_l2cap_cid_att ,p_le_parse_att 
+067a c0030699 beq le_l2cap_cid_smp ,p_le_parse_smp 
+067b 20205698 branch le_parse_l2cap + 11 
 
 p_le_parse_att:
-039b 20407ea5 call store_contr 
-039c 20400379 call p_mouse_le_reconn_write_enable_timer_reinit 
-039d 20407e9f call get_contr 
-039e e8c18000 ifetch 3 ,contr 
-039f 60018477 store 3 ,mem_le_att_opcode 
-03a0 c00803aa beq attop_read_by_group_type_request ,p_le_parse_att_read_by_group_type_request 
-03a1 1fec8400 rshift8 pdata ,temp 
-03a2 18467c24 sub temp ,0x24 ,null 
-03a3 202103b8 branch p_le_parse_att1 ,positive 
-03a4 d84047ca arg mem_mouse_le_uuid_sup ,temp 
-03a5 600944bc storet 2 ,mem_ui_le_uuid_table 
-03a6 204058ad call le_parse_att + 2 
-03a7 58008e7a setarg 0x8e7a 
-03a8 600144bc store 2 ,mem_ui_le_uuid_table 
-03a9 20600000 rtn 
+067c 20407ea5 call store_contr 
+067d 20400652 call p_mouse_le_reconn_write_enable_timer_reinit 
+067e 20407e9f call get_contr 
+067f e8c18000 ifetch 3 ,contr 
+0680 60018477 store 3 ,mem_le_att_opcode 
+0681 c008068b beq attop_read_by_group_type_request ,p_le_parse_att_read_by_group_type_request 
+0682 1fec8400 rshift8 pdata ,temp 
+0683 18467c24 sub temp ,0x24 ,null 
+0684 202158ad branch le_parse_att + 2 ,positive 
+0685 d84047c6 arg mem_mouse_le_uuid_sup ,temp 
+0686 600944bc storet 2 ,mem_ui_le_uuid_table 
+0687 204058ad call le_parse_att + 2 
+0688 58008e7a setarg 0x8e7a 
+0689 600144bc store 2 ,mem_ui_le_uuid_table 
+068a 20600000 rtn 
 
 p_le_parse_att_read_by_group_type_request:
-03aa 204059fa call le_parse_att_read_by_group_type_request 
-03ab 20405879 call le_fifo_get_last_tx_ptr 
-03ac 18c08c07 increase 7 ,contr 
-03ad e8c08000 ifetch 1 ,contr 
-03ae c1888000 rtnne attop_read_by_group_type_response 
-03af 18c08c05 increase 5 ,contr 
-03b0 e8c10000 ifetch 2 ,contr 
-03b1 d8401812 arg uuid_service_hids ,temp 
-03b2 98467c00 isub temp ,null 
-03b3 24628000 nrtn zero 
-03b4 18c08dfc increase -4 ,contr 
-03b5 5800002b setarg 0x2b 
-03b6 e0c10000 istore 2 ,contr 
-03b7 20600000 rtn 
-
-p_le_parse_att1:
-03b8 c00503ba beq attop_read_request ,p_le_parse_att_read_request 
-03b9 202058ad branch le_parse_att + 2 
-
-p_le_parse_att_read_request:
-03ba 68090478 fetcht 2 ,mem_le_att_handle 
-03bb 6800c4e9 fetch 1 ,mem_le_configuration 
-03bc c28183d2 bbit1 bit_ble_read_auth ,p_le_send_att_read_response_check_auth 
-
-p_le_send_att_read_response:
-03bd 2040576a call le_att_get_handle_ptr 
-03be 203a5a76 branch le_send_att_error_response_notfound ,blank 
-03bf 18c08dfe increase -2 ,contr 
-03c0 e8c10000 ifetch 2 ,contr 
-03c1 d8402a50 arg uuid_chrctr_pnp_id ,temp 
-03c2 98467c00 isub temp ,null 
-03c3 202283c8 branch p_le_send_att_pnp_id ,zero 
-03c4 68010478 fetch 2 ,mem_le_att_handle 
-03c5 c009da76 beq 0x13 ,le_send_att_error_response_notfound 
-03c6 68090478 fetcht 2 ,mem_le_att_handle 
-03c7 202059bf branch le_send_att_read_response 
-
-p_le_send_att_pnp_id:
-03c8 20407ea5 call store_contr 
-03c9 6800c898 fetch 1 ,mem_le_att_pnp_id_len 
-03ca 1fe0a201 add pdata ,1 ,rega 
-03cb 20405a82 call le_fifo_malloc_tx_l2cap_gatt 
-03cc 5800000b setarg attop_read_response 
-03cd e0a08000 istore 1 ,contw 
-03ce 6800c898 fetch 1 ,mem_le_att_pnp_id_len 
-03cf 1fe27200 copy pdata ,loopcnt 
-03d0 d8c04899 arg mem_le_att_pnp_id ,contr 
-03d1 20207f01 branch memcpy 
-
-p_le_send_att_read_response_check_auth:
-03d2 680144fa fetch 2 ,mem_le_pairing_handle 
-03d3 98467c00 isub temp ,null 
-03d4 242283bd nbranch p_le_send_att_read_response ,zero 
-03d5 20405a42 call le_check_encrypt_state 
-03d6 243403bd nbranch p_le_send_att_read_response ,user 
-03d7 70047a05 jam att_err_insufficient_authentication ,mem_le_err_code 
-03d8 20205a77 branch le_send_att_error_response 
+068b 204059fa call le_parse_att_read_by_group_type_request 
+068c 20405879 call le_fifo_get_last_tx_ptr 
+068d 18c08c07 increase 7 ,contr 
+068e e8c08000 ifetch 1 ,contr 
+068f c1888000 rtnne attop_read_by_group_type_response 
+0690 18c08c05 increase 5 ,contr 
+0691 e8c10000 ifetch 2 ,contr 
+0692 d8401812 arg uuid_service_hids ,temp 
+0693 98467c00 isub temp ,null 
+0694 24628000 nrtn zero 
+0695 18c08dfc increase -4 ,contr 
+0696 5800002b setarg 0x2b 
+0697 e0c10000 istore 2 ,contr 
+0698 20600000 rtn 
 
 p_le_parse_smp:
-03d9 e8c08000 ifetch 1 ,contr 
-03da c00283dc beq smp_pairing_failed ,p_le_parse_smp_pairing_failed 
-03db 20205af5 branch le_parse_smp + 1 
+0699 e8c08000 ifetch 1 ,contr 
+069a c000869d beq smp_pairing_request ,p_le_parse_smp_pairing_request 
+069b c002869f beq smp_pairing_failed ,p_le_parse_smp_pairing_failed 
+069c 20205af5 branch le_parse_smp + 1 
+
+p_le_parse_smp_pairing_request:
+069d 704b3d01 jam 1 ,mem_le_send_security_request_flag 
+069e 20205b09 branch le_parse_smp_pairing_request 
 
 p_le_parse_smp_pairing_failed:
-03dc 20405b5a call le_parse_smp_pairing_failed 
-03dd 6800843f fetch 1 ,mem_le_state 
-03de 793ffe05 set0 lestate_update_param ,pdata 
-03df 6000843f store 1 ,mem_le_state 
-03e0 20205c8e branch le_parse_terminate_ind 
+069f 20405b5a call le_parse_smp_pairing_failed 
+06a0 6800843f fetch 1 ,mem_le_state 
+06a1 793ffe05 set0 lestate_update_param ,pdata 
+06a2 6000843f store 1 ,mem_le_state 
+06a3 20205c8e branch le_parse_terminate_ind 
 
 p_le_adv_not_match:
-03e1 68008016 fetch 1 ,mem_le_ch_mapped 
-03e2 c093d6f2 bne 39 ,le_adv_loop 
-03e3 204003e7 call p_le_adv_random_delay 
-03e4 d8e00000 arg le_adv_interval_timer ,queue 
-03e5 68014482 fetch 2 ,mem_le_adv_interval 
-03e6 20207f08 branch timer_init 
+06a4 68008016 fetch 1 ,mem_le_ch_mapped 
+06a5 c093d6f2 bne 39 ,le_adv_loop 
+06a6 204006aa call p_le_adv_random_delay 
+06a7 d8e00000 arg le_adv_interval_timer ,queue 
+06a8 68014482 fetch 2 ,mem_le_adv_interval 
+06a9 20207f08 branch timer_init 
 
 p_le_adv_random_delay:
-03e7 180a7e00 random pdata 
-03e8 d84001ff arg 0x1ff ,temp 
-03e9 98417e00 iand temp ,pdata 
-03ea 1fe0fefa add pdata ,250 ,pdata 
-03eb 20203cbe branch delay 
+06aa 180a7e00 random pdata 
+06ab d84001ff arg 0x1ff ,temp 
+06ac 98417e00 iand temp ,pdata 
+06ad 1fe0fefa add pdata ,250 ,pdata 
+06ae 20203cbe branch delay 
 
 p_le_lpm_setmult:
-03ec 7855fc00 disable wake 
-03ed 203703ef branch p_le_lpm_set_mult_attempt ,attempt 
-03ee 2436d806 nbranch le_lpm_lost ,match 
+06af 7855fc00 disable wake 
+06b0 203706b2 branch p_le_lpm_set_mult_attempt ,attempt 
+06b1 2436d806 nbranch le_lpm_lost ,match 
 
 p_le_lpm_set_mult_attempt:
-03ef 20402bcb call lpm_match 
-03f0 680140c1 fetch 2 ,mem_rx_window_sniff 
-03f1 6001044d store 2 ,mem_le_receive_window 
-03f2 6800c6c5 fetch 1 ,mem_le_connect_status_flag 
-03f3 2fe00603 compare 3 ,pdata ,3 
-03f4 2420abde nbranch lpm_mult_short ,true 
-03f5 202057fb branch le_lpm_set_mult_attempt + 3 
+06b2 20402bcb call lpm_match 
+06b3 680140c1 fetch 2 ,mem_rx_window_sniff 
+06b4 6001044d store 2 ,mem_le_receive_window 
+06b5 6800c6c5 fetch 1 ,mem_le_connect_status_flag 
+06b6 2fe00603 compare 3 ,pdata ,3 
+06b7 2420abde nbranch lpm_mult_short ,true 
+06b8 202057fb branch le_lpm_set_mult_attempt + 3 
 
 p_le_mouse_bb_event_connect_complete:
-03f6 6800c7a3 fetch 1 ,mem_mouse_le_reconnect_flag 
-03f7 247a0000 nrtn blank 
-03f8 68008478 fetch 1 ,mem_le_att_handle 
-03f9 1fe67e1a sub pdata ,26 ,pdata 
-03fa 24628000 nrtn zero 
-03fb 7046c600 jam 0 ,mem_le_start_encrypt_timer 
-03fc 20203d60 branch mouse_le_write_enable 
+06b9 6800c79f fetch 1 ,mem_mouse_le_reconnect_flag 
+06ba 247a0000 nrtn blank 
+06bb 68008478 fetch 1 ,mem_le_att_handle 
+06bc 1fe67e1a sub pdata ,26 ,pdata 
+06bd 24628000 nrtn zero 
+06be 7046c600 jam 0 ,mem_le_start_encrypt_timer 
+06bf 20203d60 branch mouse_le_write_enable 
 
 p_check_51cmd_once_continue:
-03fd 204062bc call lmo_fifo_check 
-03fe 243a7ddb nbranch check_51cmd_restore ,blank 
-03ff 68008a99 fetch 1 ,mem_fifo_temp 
-0400 c584fdd6 bmark0 mark_context ,check_51cmd_check_idle 
-0401 c0090403 beq bt_cmd_le_update_conn ,p_check_51cmd_ble_update_connect_param 
-0402 20207dca branch check_51cmd_once_continue + 2 
+06c0 204062bc call lmo_fifo_check 
+06c1 243a7ddb nbranch check_51cmd_restore ,blank 
+06c2 68008a99 fetch 1 ,mem_fifo_temp 
+06c3 c584fdd6 bmark0 mark_context ,check_51cmd_check_idle 
+06c4 c00906c6 beq bt_cmd_le_update_conn ,p_check_51cmd_ble_update_connect_param 
+06c5 20207dca branch check_51cmd_once_continue + 2 
 
 p_check_51cmd_ble_update_connect_param:
-0403 20405890 call le_fifo_check_full 
-0404 247a0000 nrtn blank 
-0405 20205abf branch le_l2cap_tx_update_req 
+06c6 20405890 call le_fifo_check_full 
+06c7 247a0000 nrtn blank 
+06c8 20205abf branch le_l2cap_tx_update_req 
 
 p_twspi_reset:
-0406 68108077 hfetch 1 ,core_gpio_out3 
-0407 1fe17efd and_into 0xfd ,pdata 
-0408 60108077 hstore 1 ,core_gpio_out3 
-0409 68188073 hfetcht 1 ,core_gpio_oe3 
-040a 18418402 or_into 0x2 ,temp 
-040b 60188073 hstoret 1 ,core_gpio_oe3 
-040c 204063ee call twspi_disable 
-040d 184104fd and_into 0xfd ,temp 
-040e 2000000d nop 13 
-040f 204063f2 call twspi_enable 
-0410 60188073 hstoret 1 ,core_gpio_oe3 
-0411 20600000 rtn 
-
-p_g24_set_device_addr:
-0412 680240a0 fetch 4 ,mem_lap 
-0413 60024968 store 4 ,mem_24g_device_addr 
-0414 20600000 rtn 
-
-p_g24_transmit_rf_sta_init:
-0415 704a6701 jam 1 ,mem_24g_rf_last_sta 
-0416 704a6900 jam 0 ,mem_24g_sync_cnt 
-
-p_g24_transmit_rf_ctrl_clear:
-0417 6800c932 fetch 1 ,mem_24g_data_type 
-0418 1fe17e07 and_into bits_data ,pdata 
-0419 6000c932 store 1 ,mem_24g_data_type 
-041a 20600000 rtn 
-
-p_g24_hop_ch_enable:
-041b 6800c932 fetch 1 ,mem_24g_data_type 
-041c 79207e04 set1 bit_hop ,pdata 
-041d 6000c932 store 1 ,mem_24g_data_type 
-041e 6000c8ed store 1 ,mem_24g_txpayload 
-041f 20600000 rtn 
-
-p_g24_hop_ch_disable:
-0420 6800c932 fetch 1 ,mem_24g_data_type 
-0421 793ffe04 set0 bit_hop ,pdata 
-0422 6000c932 store 1 ,mem_24g_data_type 
-0423 20600000 rtn 
-
-p_g24_transmit_hop_pac_fail:
-0424 204004ea call power_ctrl_pac_succ_decrs 
-0425 6800ca68 fetch 1 ,mem_24g_rf_work_stage 
-0426 c0008429 beq 1 ,p_g24_transmit_hop_pac_fail_wo_hop 
-0427 c001042d beq 2 ,p_g24_transmit_hop_pac_fail_hop_stage2 
-0428 20600000 rtn 
-
-p_g24_transmit_hop_pac_fail_wo_hop:
-0429 704a6902 jam 2 ,mem_24g_sync_cnt 
-
-p_g24_transmit_hop_pac_fail_stage1:
-042a 704a6500 jam 0 ,mem_24g_hop_pac_retry 
-042b 704a6700 jam 0 ,mem_24g_rf_last_sta 
-042c 20200417 branch p_g24_transmit_rf_ctrl_clear 
-
-p_g24_transmit_hop_pac_fail_hop_stage2:
-042d 704a6600 jam 0 ,mem_24g_rf_hop_ch 
-042e 2020042a branch p_g24_transmit_hop_pac_fail_stage1 
-
-p_g24_transmit_pac_fail_hop_stage3:
-042f 68014937 fetch 2 ,mem_24g_txfail_cnt 
-0430 1fe0fe01 increase 1 ,pdata 
-0431 60014937 store 2 ,mem_24g_txfail_cnt 
-0432 c28504d8 bbit1 10 ,p_g24_tx_attempt_fail 
-0433 6800ca66 fetch 1 ,mem_24g_rf_hop_ch 
-0434 c0008438 beq 1 ,p_g24_rf_hop_fastly 
-0435 704a6601 jam 1 ,mem_24g_rf_hop_ch 
-
-p_g24_rf_hop_attemp_again:
-0436 6800ca66 fetch 1 ,mem_24g_rf_hop_ch 
-0437 c0808417 bne 1 ,p_g24_transmit_rf_ctrl_clear 
-
-p_g24_rf_hop_fastly:
-0438 6800ca64 fetch 1 ,mem_24g_hop_fastly_cnt 
-0439 1fe0fe01 increase 1 ,pdata 
-043a 6000ca64 store 1 ,mem_24g_hop_fastly_cnt 
-043b c002043f beq 4 ,p_g24_rf_hop_fastly_exit 
-043c 2040063d call p_g24_ch 
-043d 70497602 jam 2 ,mem_24g_max_retry 
-043e 20200495 branch p_g24_transmit_packet 
-
-p_g24_rf_hop_fastly_exit:
-043f 204004ea call power_ctrl_pac_succ_decrs 
-0440 704a6400 jam 0 ,mem_24g_hop_fastly_cnt 
-0441 20200417 branch p_g24_transmit_rf_ctrl_clear 
-
-p_g24_transmit_hop_pac_succ_wo_hop:
-0442 704a6902 jam 2 ,mem_24g_sync_cnt 
-
-p_g24_transmit_hop_pac_succ:
-0443 704a6701 jam 1 ,mem_24g_rf_last_sta 
-0444 704a6600 jam 0 ,mem_24g_rf_hop_ch 
-0445 20200417 branch p_g24_transmit_rf_ctrl_clear 
-
-p_g24_transmit_succ_rf_config:
-0446 6800ca68 fetch 1 ,mem_24g_rf_work_stage 
-0447 c0018443 beq 3 ,p_g24_transmit_hop_pac_succ 
-0448 6800c932 fetch 1 ,mem_24g_data_type 
-0449 2fec0004 isolate0 bit_hop ,pdata 
-044a 20208415 branch p_g24_transmit_rf_sta_init ,true 
-044b 6800ca68 fetch 1 ,mem_24g_rf_work_stage 
-044c c0008442 beq 1 ,p_g24_transmit_hop_pac_succ_wo_hop 
-044d c0010443 beq 2 ,p_g24_transmit_hop_pac_succ 
-044e 20600000 rtn 
-
-p_g24_rf_sta_check:
-044f 6800c941 fetch 1 ,mem_24g_pairing_sm 
-0450 c1ff8000 rtnne state_24g_pairing_success 
-0451 20400454 call p_g24_rf_laststa_synccnt_check 
-0452 2456045c ncall p_g24_rf_sync_cnt_check ,user2 
-0453 20600000 rtn 
-
-p_g24_rf_laststa_synccnt_check:
-0454 78567c00 disable user2 
-0455 6800ca67 fetch 1 ,mem_24g_rf_last_sta 
-0456 c1808000 rtnne 1 
-0457 6800ca69 fetch 1 ,mem_24g_sync_cnt 
-0458 c1800000 rtnne 0 
-0459 704a6801 jam 1 ,mem_24g_rf_work_stage 
-045a 70497604 jam g24_max_retry ,mem_24g_max_retry 
-045b 20207feb branch enable_user2 
-
-p_g24_rf_sync_cnt_check:
-045c 6800ca69 fetch 1 ,mem_24g_sync_cnt 
-045d 203a0464 branch p_g24_rf_hop_attemp ,blank 
-045e 1fe0ffff increase -1 ,pdata 
-045f 6000ca69 store 1 ,mem_24g_sync_cnt 
-0460 704a6802 jam 2 ,mem_24g_rf_work_stage 
-0461 2040063d call p_g24_ch 
-0462 70497604 jam g24_max_retry ,mem_24g_max_retry 
-0463 20600000 rtn 
-
-p_g24_rf_hop_attemp:
-0464 704a6803 jam 3 ,mem_24g_rf_work_stage 
-0465 6800ca66 fetch 1 ,mem_24g_rf_hop_ch 
-0466 243a0436 nbranch p_g24_rf_hop_attemp_again ,blank 
-0467 2040063d call p_g24_ch 
-0468 70497602 jam 2 ,mem_24g_max_retry 
-0469 20600000 rtn 
-
-p_g24_txdata_prep:
-046a 6800c941 fetch 1 ,mem_24g_pairing_sm 
-046b c0ff8525 bne state_24g_pairing_success ,p_g24_pairing_sm 
-
-p_g24_txdata_prep_packeage_data:
-046c 20400470 call p_g24_package_data 
-046d 2040062b call p_g24_transmit_prep 
-
-p_g24_txdata_enable_tx:
-046e 70493601 jam ensure_on_24g ,mem_24g_ensure 
-046f 20600000 rtn 
-
-p_g24_package_data:
-0470 68014a62 fetch 2 ,mem_cb_24g_data 
-0471 20407f9c call callback_func 
-0472 20340476 branch p_g24_accumulate_mouse_data ,user 
-0473 6803c8ce fetch 7 ,mem_24g_txbuf + 1 
-0474 207a0000 rtn blank 
-0475 20207fe7 branch enable_user 
-
-p_g24_accumulate_mouse_data:
-0476 2040048d call p_mouse_data_xy_release 
-0477 70495d00 jam 0 ,mem_24g_abort_pac 
-0478 1a20fe01 add rega ,1 ,pdata 
-0479 6000c931 store 1 ,mem_24g_datalen 
-047a 20400417 call p_g24_transmit_rf_ctrl_clear 
-047b 6000c8cd store 1 ,mem_24g_txbuf 
-047c e8a88000 ifetcht 1 ,contw 
-047d ea408000 ifetch 1 ,regb 
-047e 9841fe00 ior temp ,pdata 
-047f e0a08000 istore 1 ,contw 
-0480 1a40a401 increase 1 ,regb 
-0481 ea420000 ifetch 4 ,regb 
-0482 e0a20000 istore 4 ,contw 
-0483 1a40a404 increase 4 ,regb 
-0484 d8a048d3 arg mem_24g_txbuf + 6 ,contw 
-0485 df200002 arg 2 ,loopcnt 
-
-p_g24_accumulation_loop2:
-0486 ea408000 ifetch 1 ,regb 
-0487 e8a88000 ifetcht 1 ,contw 
-0488 9840fe00 iadd temp ,pdata 
-0489 e0a08000 istore 1 ,contw 
-048a 1a40a401 increase 1 ,regb 
-048b c2000486 loop p_g24_accumulation_loop2 
-048c 20600000 rtn 
-
-p_mouse_data_xy_release:
-048d 6800c6f5 fetch 1 ,mem_config_function_enable 
-048e c3838000 rtnbit1 enable_sensor_motion_pin 
-048f 6800c80c fetch 1 ,mem_mouse_long_mult_flag 
-0490 c1808000 rtnne 1 
-0491 58000000 setarg 0 
-0492 6000c80c store 1 ,mem_mouse_long_mult_flag 
-0493 6002469b store 4 ,mem_mouse_x 
-0494 20200114 branch p_mouse_sensor_poweron 
-
-p_g24_transmit_packet:
-0495 70493a00 jam 0 ,mem_24g_retry 
-
-p_g24_transmit_loop:
-0496 d9600d00 arg param_rx_setup ,timeup 
-0497 34730200 until clkn_rt ,meet 
-0498 204004b1 call p_g24_transmit_receive_ack 
-0499 6800c96d fetch 1 ,mem_24g_no_ack 
-049a c1008000 rtneq no_ack_24g 
-049b 242c04c0 nbranch p_g24_retransmit ,sync 
-049c 243784c0 nbranch p_g24_retransmit ,user3 
-049d 204004ac call p_g24_txbuf_clear 
-049e 204004dc call p_g24_ackpayload_parse 
-049f 204004e6 call power_ctrl_pac_succ_incrs 
-
-p_g24_transmit_next_packet:
-04a0 6800c930 fetch 1 ,mem_24g_pid 
-04a1 1fe0fe01 increase 1 ,pdata 
-04a2 6000c930 store 1 ,mem_24g_pid 
-04a3 6800c941 fetch 1 ,mem_24g_pairing_sm 
-04a4 c0ff84af bne state_24g_pairing_success ,p_g24_paring_mode_start 
-04a5 20400446 call p_g24_transmit_succ_rf_config 
-
-p_g24_transmit_abandon:
-04a6 58000000 setarg 0 
-04a7 60014937 store 2 ,mem_24g_txfail_cnt 
-04a8 6000c939 store 1 ,mem_24g_get_ack_fail 
-04a9 6000ca65 store 1 ,mem_24g_hop_pac_retry 
-04aa 70493600 jam ensure_off_24g ,mem_24g_ensure 
-04ab 20600000 rtn 
-
-p_g24_txbuf_clear:
-04ac df200004 arg 4 ,loopcnt 
-04ad d8a048cd arg mem_24g_txbuf ,contw 
-04ae 20207ec6 branch memset0 
-
-p_g24_paring_mode_start:
-04af 204004e3 call power_ctrl_pac_succ_cnt_init 
-04b0 20200540 branch p_g24_paring_mode 
-
-p_g24_transmit_receive_ack:
-04b1 7857fc00 disable user3 
-04b2 204006a5 call p_g24_transmit 
-04b3 6800c96d fetch 1 ,mem_24g_no_ack 
-04b4 c00084be beq no_ack_24g ,p_g24_transmit_no_ack 
-04b5 18002a00 force 0 ,radio_ctrl 
-04b6 68024959 fetch 4 ,mem_24g_addr 
-04b7 98001200 iforce access 
-04b8 68088017 fetcht 1 ,mem_last_freq 
-04b9 2040291f call set_freq_rx 
-04ba 20402924 call rf_rx_enable 
-04bb 20400660 call p_g24_receive_rxon 
-04bc 2057869d call p_g24_end_of_packet ,user3 
-04bd 20600000 rtn 
-
-p_g24_transmit_no_ack:
-04be 2040069d call p_g24_end_of_packet 
-04bf 202004a0 branch p_g24_transmit_next_packet 
-
-p_g24_retransmit:
-04c0 6800c939 fetch 1 ,mem_24g_get_ack_fail 
-04c1 1fe0fe01 increase 1 ,pdata 
-04c2 6000c939 store 1 ,mem_24g_get_ack_fail 
-04c3 6800c941 fetch 1 ,mem_24g_pairing_sm 
-04c4 c0ff84d4 bne state_24g_pairing_success ,p_g24_tx_paring_retry 
-04c5 6808c93a fetcht 1 ,mem_24g_retry 
-04c6 18408401 increase 1 ,temp 
-04c7 6008c93a storet 1 ,mem_24g_retry 
-04c8 6800c976 fetch 1 ,mem_24g_max_retry 
-04c9 98467e00 isub temp ,pdata 
-04ca 243a0496 nbranch p_g24_transmit_loop ,blank 
-04cb 6800ca68 fetch 1 ,mem_24g_rf_work_stage 
-04cc c001842f beq 3 ,p_g24_transmit_pac_fail_hop_stage3 
-04cd 6800ca65 fetch 1 ,mem_24g_hop_pac_retry 
-04ce 1fe0fe01 increase 1 ,pdata 
-04cf 6000ca65 store 1 ,mem_24g_hop_pac_retry 
-04d0 c0010424 beq 2 ,p_g24_transmit_hop_pac_fail 
-04d1 2040041b call p_g24_hop_ch_enable 
-04d2 70497601 jam 1 ,mem_24g_max_retry 
-04d3 20200495 branch p_g24_transmit_packet 
-
-p_g24_tx_paring_retry:
-04d4 6800c939 fetch 1 ,mem_24g_get_ack_fail 
-04d5 c1ff8000 rtnne 0xff 
-04d6 70493900 jam 0 ,mem_24g_get_ack_fail 
-04d7 202004da branch p_g24_stop_g24_mode 
-
-p_g24_tx_attempt_fail:
-04d8 58000000 setarg 0 
-04d9 60014937 store 2 ,mem_24g_txfail_cnt 
-
-p_g24_stop_g24_mode:
-04da 700a993a jam bt_evt_24g_attempt_fail ,mem_fifo_temp 
-04db 20207d86 branch ui_ipc_send_event 
-
-p_g24_ackpayload_parse:
-04dc 204005af call p_g24_read_len_pid_crc 
-04dd 6800c92f fetch 1 ,mem_24g_rxdata_length 
-04de 207a0000 rtn blank 
-04df 98007200 iforce loopcnt 
-04e0 d8c048ad arg mem_24g_rxbuf + 2 ,contr 
-04e1 d8a0490f arg mem_24g_rxpayload ,contw 
-04e2 20207f01 branch memcpy 
+06c9 68108077 hfetch 1 ,core_gpio_out3 
+06ca 1fe17efd and_into 0xfd ,pdata 
+06cb 60108077 hstore 1 ,core_gpio_out3 
+06cc 68188073 hfetcht 1 ,core_gpio_oe3 
+06cd 18418402 or_into 0x2 ,temp 
+06ce 60188073 hstoret 1 ,core_gpio_oe3 
+06cf 204063ee call twspi_disable 
+06d0 184104fd and_into 0xfd ,temp 
+06d1 2000000d nop 13 
+06d2 204063f2 call twspi_enable 
+06d3 60188073 hstoret 1 ,core_gpio_oe3 
+06d4 20600000 rtn 
 
 power_ctrl_pac_succ_cnt_init:
-04e3 704a6d01 jam 1 ,mem_power_ctrl_level 
-04e4 704a6a00 jam 0 ,mem_power_ctrl_pac_succ_cnt 
-04e5 20600000 rtn 
+06d5 704d1901 jam 1 ,mem_power_ctrl_level 
+06d6 704d1600 jam 0 ,mem_power_ctrl_pac_succ_cnt 
+06d7 20600000 rtn 
 
 power_ctrl_pac_succ_incrs:
-04e6 6800ca6a fetch 1 ,mem_power_ctrl_pac_succ_cnt 
-04e7 1fe0fe01 increase 1 ,pdata 
-04e8 6000ca6a store 1 ,mem_power_ctrl_pac_succ_cnt 
-04e9 20600000 rtn 
+06d8 6800cd16 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+06d9 1fe0fe01 increase 1 ,pdata 
+06da 6000cd16 store 1 ,mem_power_ctrl_pac_succ_cnt 
+06db 20600000 rtn 
 
 power_ctrl_pac_succ_decrs:
-04ea 6800ca6a fetch 1 ,mem_power_ctrl_pac_succ_cnt 
-04eb 1fe67c02 sub pdata ,2 ,null 
-04ec 244104f2 ncall power_ctrl_pac_succ_cnt_reinit ,positive 
-04ed 6800ca6a fetch 1 ,mem_power_ctrl_pac_succ_cnt 
-04ee c1000000 rtneq 0 
-04ef 1fe0ffff increase -1 ,pdata 
-04f0 6000ca6a store 1 ,mem_power_ctrl_pac_succ_cnt 
-04f1 20600000 rtn 
+06dc 6800cd16 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+06dd 1fe67c02 sub pdata ,2 ,null 
+06de 244106e4 ncall power_ctrl_pac_succ_cnt_reinit ,positive 
+06df 6800cd16 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+06e0 c1000000 rtneq 0 
+06e1 1fe0ffff increase -1 ,pdata 
+06e2 6000cd16 store 1 ,mem_power_ctrl_pac_succ_cnt 
+06e3 20600000 rtn 
 
 power_ctrl_pac_succ_cnt_reinit:
-04f2 704a6a03 jam 3 ,mem_power_ctrl_pac_succ_cnt 
-04f3 20600000 rtn 
+06e4 704d1603 jam 3 ,mem_power_ctrl_pac_succ_cnt 
+06e5 20600000 rtn 
 
 power_ctrl_start:
-04f4 da2049f3 arg mem_rssi_signal_buf ,rega 
-04f5 2040060c call p_rssi_average 
-04f6 6008ca6b storet 1 ,mem_rssi_avg_received 
-04f7 58000082 setarg rssi_dis_max_24g 
-04f8 c51304fa bmark1 mark_24g ,power_ctrl_start_next 
-04f9 58000080 setarg rssi_dis_max_ble 
+06e6 68014682 fetch 2 ,mem_ui_state_map 
+06e7 c3858000 rtnbit1 ui_state_ble_adv 
+06e8 c3838000 rtnbit1 ui_state_bt_reconnect 
+06e9 c3830000 rtnbit1 ui_state_bt_discovery 
+06ea da204c9f arg mem_rssi_signal_buf ,rega 
+06eb 204002e6 call p_rssi_average 
+06ec 6008cd17 storet 1 ,mem_rssi_avg_received 
+06ed 58000082 setarg rssi_dis_max_24g 
+06ee c51306f0 bmark1 mark_24g ,power_ctrl_start_next 
+06ef 58000080 setarg rssi_dis_max_ble 
 
 power_ctrl_start_next:
-04fa 98467c00 isub temp ,null 
-04fb 24210512 nbranch power_ctrl_txpower_incrs_force ,positive 
-04fc 6800ca6a fetch 1 ,mem_power_ctrl_pac_succ_cnt 
-04fd 1fe67c02 sub pdata ,2 ,null 
-04fe 24210502 nbranch power_ctrl_txpower_decrs_check ,positive 
-04ff 6800ca6a fetch 1 ,mem_power_ctrl_pac_succ_cnt 
-0500 c0000513 beq 0 ,power_ctrl_txpower_incrs 
-0501 20600000 rtn 
+06f0 98467c00 isub temp ,null 
+06f1 24210708 nbranch power_ctrl_txpower_incrs_force ,positive 
+06f2 6800cd16 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+06f3 1fe67c02 sub pdata ,2 ,null 
+06f4 242106f8 nbranch power_ctrl_txpower_decrs_check ,positive 
+06f5 6800cd16 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+06f6 c0000709 beq 0 ,power_ctrl_txpower_incrs 
+06f7 20600000 rtn 
 
 power_ctrl_txpower_decrs_check:
-0502 6800ca6a fetch 1 ,mem_power_ctrl_pac_succ_cnt 
-0503 c1900000 rtnne 32 
-0504 704a6a00 jam 0 ,mem_power_ctrl_pac_succ_cnt 
+06f8 6800cd16 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+06f9 c1900000 rtnne 32 
+06fa 704d1600 jam 0 ,mem_power_ctrl_pac_succ_cnt 
 
 power_ctrl_txpower_decrs:
-0505 6808ca6b fetcht 1 ,mem_rssi_avg_received 
-0506 58000077 setarg rssi_dis_min_24g 
-0507 c5130509 bmark1 mark_24g ,power_ctrl_txpower_decrs_next 
-0508 58000075 setarg rssi_dis_min_ble 
+06fb 6808cd17 fetcht 1 ,mem_rssi_avg_received 
+06fc 58000077 setarg rssi_dis_min_24g 
+06fd c51306ff bmark1 mark_24g ,power_ctrl_txpower_decrs_next 
+06fe 58000075 setarg rssi_dis_min_ble 
 
 power_ctrl_txpower_decrs_next:
-0509 98467c00 isub temp ,null 
-050a 24610000 nrtn positive 
-050b 6800ca6d fetch 1 ,mem_power_ctrl_level 
-050c c000051a beq 0 ,power_ctrl_decrs_level0 
-050d 1fe0ffff increase -1 ,pdata 
-050e 6000ca6d store 1 ,mem_power_ctrl_level 
-050f c000051a beq 0 ,power_ctrl_decrs_level0 
+06ff 98467c00 isub temp ,null 
+0700 24610000 nrtn positive 
+0701 6800cd19 fetch 1 ,mem_power_ctrl_level 
+0702 c0000710 beq 0 ,power_ctrl_decrs_level0 
+0703 1fe0ffff increase -1 ,pdata 
+0704 6000cd19 store 1 ,mem_power_ctrl_level 
+0705 c0000710 beq 0 ,power_ctrl_decrs_level0 
 
 power_ctrl_decrs_level1:
 
 power_ctrl_incrs_level1:
-0510 7041de00 jam tx_power_0db ,mem_tx_power 
-0511 20600000 rtn 
+0706 7041de00 jam tx_power_0db ,mem_tx_power 
+0707 20600000 rtn 
 
 power_ctrl_txpower_incrs_force:
-0512 704a6a00 jam 0 ,mem_power_ctrl_pac_succ_cnt 
+0708 704d1600 jam 0 ,mem_power_ctrl_pac_succ_cnt 
 
 power_ctrl_txpower_incrs:
-0513 6800ca6d fetch 1 ,mem_power_ctrl_level 
-0514 c0010518 beq 2 ,power_ctrl_incrs_level2 
-0515 1fe0fe01 increase 1 ,pdata 
-0516 6000ca6d store 1 ,mem_power_ctrl_level 
-0517 c0008510 beq 1 ,power_ctrl_incrs_level1 
+0709 6800cd19 fetch 1 ,mem_power_ctrl_level 
+070a c001070e beq 2 ,power_ctrl_incrs_level2 
+070b 1fe0fe01 increase 1 ,pdata 
+070c 6000cd19 store 1 ,mem_power_ctrl_level 
+070d c0008706 beq 1 ,power_ctrl_incrs_level1 
 
 power_ctrl_incrs_level2:
-0518 7041de02 jam tx_power_5db ,mem_tx_power 
-0519 20600000 rtn 
+070e 7041de02 jam tx_power_5db ,mem_tx_power 
+070f 20600000 rtn 
 
 power_ctrl_decrs_level0:
-051a 7041de04 jam tx_power_f5db ,mem_tx_power 
-051b 20600000 rtn 
-
-p_g24_start_pairing_sm1:
-051c 79200026 set1 mark_24g ,mark 
-051d 20400520 call p_g24_pair_init 
-
-p_g24_set_pairing_sm_1:
-051e 70494101 jam state_24g_pairing_1 ,mem_24g_pairing_sm 
-051f 20600000 rtn 
-
-p_g24_pair_init:
-0520 7041de20 jam tx_power_pair ,mem_tx_power 
-0521 70493000 jam 0 ,mem_24g_pid 
-0522 70493b4e jam g24_pair_ch ,mem_24g_ch 
-0523 6802493d fetch 4 ,mem_24g_paring_addr 
-0524 2020061d branch p_g24_update_addr_and_synccrc8 
-
-p_g24_pairing_sm:
-0525 6800c936 fetch 1 ,mem_24g_ensure 
-0526 c000ffe7 beq ensure_on_24g ,enable_user 
-0527 6800c941 fetch 1 ,mem_24g_pairing_sm 
-0528 c000852c beq state_24g_pairing_1 ,p_g24_pairing_sm_1 
-0529 c001052f beq state_24g_pairing_2 ,p_g24_pairing_sm_2 
-052a c0018532 beq state_24g_pairing_3 ,p_g24_pairing_sm_3 
-052b 20202a8c branch assert 
-
-p_g24_pairing_sm_1:
-052c 70494111 jam state_24g_pairing_1_waiting_ack ,mem_24g_pairing_sm 
-052d 70119eaa jam 0xaa ,mem_24g_common_temp 
-052e 20200534 branch p_g24_pairing_sm_common 
-
-p_g24_pairing_sm_2:
-052f 70494112 jam state_24g_pairing_2_waiting_ack ,mem_24g_pairing_sm 
-0530 70119e55 jam 0x55 ,mem_24g_common_temp 
-0531 20200534 branch p_g24_pairing_sm_common 
-
-p_g24_pairing_sm_3:
-0532 70494113 jam state_24g_pairing_3_waiting_ack ,mem_24g_pairing_sm 
-0533 70119e22 jam 0x22 ,mem_24g_common_temp 
-
-p_g24_pairing_sm_common:
-0534 6800c932 fetch 1 ,mem_24g_data_type 
-0535 1fe17e07 and_into bits_data ,pdata 
-0536 6000919f store 1 ,mem_24g_common_temp + 1 
-0537 68024968 fetch 4 ,mem_24g_device_addr 
-0538 600211a0 store 4 ,mem_24g_common_temp + 2 
-
-p_g24_put_pairing_data_in_buff:
-0539 7011a400 jam 0 ,mem_24g_common_temp + 6 
-053a da20119e arg mem_24g_common_temp ,rega 
-053b d8400007 arg 7 ,temp 
-053c 204005aa call p_g24_put_data_in_buff 
-053d 2040062b call p_g24_transmit_prep 
-053e 2040046e call p_g24_txdata_enable_tx 
-053f 20207fe7 branch enable_user 
-
-p_g24_paring_mode:
-0540 6800c941 fetch 1 ,mem_24g_pairing_sm 
-0541 c17f8000 rtneq state_24g_pairing_success 
-0542 c0088546 beq state_24g_pairing_1_waiting_ack ,p_g24_pairing_sm_1_waiting_ack 
-0543 c0090548 beq state_24g_pairing_2_waiting_ack ,p_g24_pairing_sm_2_waiting_ack 
-0544 c009854a beq state_24g_pairing_3_waiting_ack ,p_g24_pairing_sm_3_waiting_ack 
-0545 20600000 rtn 
-
-p_g24_pairing_sm_1_waiting_ack:
-0546 70494102 jam state_24g_pairing_2 ,mem_24g_pairing_sm 
-0547 202004a6 branch p_g24_transmit_abandon 
-
-p_g24_pairing_sm_2_waiting_ack:
-0548 70494103 jam state_24g_pairing_3 ,mem_24g_pairing_sm 
-0549 202004a6 branch p_g24_transmit_abandon 
-
-p_g24_pairing_sm_3_waiting_ack:
-054a 704941ff jam state_24g_pairing_success ,mem_24g_pairing_sm 
-054b 700a9939 jam bt_evt_24g_pairing_complete ,mem_fifo_temp 
-054c 20407d86 call ui_ipc_send_event 
-054d 68024911 fetch 4 ,mem_24g_rxpayload + 2 
-054e 2040061d call p_g24_update_addr_and_synccrc8 
-054f 202004a6 branch p_g24_transmit_abandon 
-
-p_g24_start_24g_mode:
-0550 793f8026 set0 mark_24g ,mark 
-0551 70496d00 jam with_ack_24g ,mem_24g_no_ack 
-0552 20400599 call p_g24_ch_syncword_crc8_init 
-0553 7048aa02 jam 2 ,mem_mouse_mode_swtich_step 
-0554 6800c941 fetch 1 ,mem_24g_pairing_sm 
-0555 c1ff8000 rtnne state_24g_pairing_success 
-0556 20400568 call p_g24_tx_attemp_data_prep 
-
-p_g24_tx_attemp_dongle:
-0557 58000000 setarg 0 
-0558 6001495e store 2 ,mem_24g_check_dongle_times 
-
-p_g24_tx_attemp_dongle_loop:
-0559 20402afa call lpo_calibration 
-055a 200007d0 nop 2000 
-055b 6800c95e fetch 1 ,mem_24g_check_dongle_times 
-055c c07f84da beq 0xff ,p_g24_stop_g24_mode 
-055d 204004b1 call p_g24_transmit_receive_ack 
-055e 242c0571 nbranch p_g24_attemp_txdata_retry ,sync 
-055f 24378571 nbranch p_g24_attemp_txdata_retry ,user3 
-
-p_g24_tx_attemp_dongle_succ:
-0560 79200026 set1 mark_24g ,mark 
-0561 58000000 setarg 0 
-0562 6001495e store 2 ,mem_24g_check_dongle_times 
-0563 70480c00 jam 0 ,mem_mouse_long_mult_flag 
-0564 700a993c jam bt_evt_24g_attempt_success ,mem_fifo_temp 
-0565 20407d86 call ui_ipc_send_event 
-0566 204004ac call p_g24_txbuf_clear 
-0567 20200066 branch p_g24_transmit_by_interrupt_enable 
-
-p_g24_tx_attemp_data_prep:
-0568 70119eff jam 0xff ,mem_24g_common_temp 
-0569 6800c932 fetch 1 ,mem_24g_data_type 
-056a 6000919f store 1 ,mem_24g_common_temp + 1 
-056b 68024968 fetch 4 ,mem_24g_device_addr 
-056c 600211a0 store 4 ,mem_24g_common_temp + 2 
-056d d8400006 arg 6 ,temp 
-056e da20119e arg mem_24g_common_temp ,rega 
-056f 204005aa call p_g24_put_data_in_buff 
-0570 2020062b branch p_g24_transmit_prep 
-
-p_g24_attemp_txdata_retry:
-0571 6801495e fetch 2 ,mem_24g_check_dongle_times 
-0572 1fe0fe01 increase 1 ,pdata 
-0573 6001495e store 2 ,mem_24g_check_dongle_times 
-0574 2040063d call p_g24_ch 
-0575 20200559 branch p_g24_tx_attemp_dongle_loop 
-
-p_g24_auto_pair_start:
-0576 793f8026 set0 mark_24g ,mark 
-0577 70496d00 jam with_ack_24g ,mem_24g_no_ack 
-0578 7048aa01 jam 1 ,mem_mouse_mode_swtich_step 
-0579 20400596 call p_g24_auto_pair_first_attemp 
-057a 20400568 call p_g24_tx_attemp_data_prep 
-
-p_g24_auto_pair_restart:
-057b 70495e00 jam 0 ,mem_24g_check_dongle_times 
-
-p_g24_auto_pair_start_loop:
-057c 20402afa call lpo_calibration 
-057d 200007d0 nop 2000 
-057e 6800c95e fetch 1 ,mem_24g_check_dongle_times 
-057f c07f84da beq 0xff ,p_g24_stop_g24_mode 
-0580 204004b1 call p_g24_transmit_receive_ack 
-0581 242c058a nbranch p_g24_auto_pair_retry ,sync 
-0582 2437858a nbranch p_g24_auto_pair_retry ,user3 
-0583 204004dc call p_g24_ackpayload_parse 
-0584 204000d4 call p_mouse_tx_power_init 
-0585 68024959 fetch 4 ,mem_24g_addr 
-0586 680a493d fetcht 4 ,mem_24g_paring_addr 
-0587 98467c00 isub temp ,null 
-0588 2022851c branch p_g24_start_pairing_sm1 ,zero 
-0589 20200560 branch p_g24_tx_attemp_dongle_succ 
-
-p_g24_auto_pair_retry:
-058a 6800c95e fetch 1 ,mem_24g_check_dongle_times 
-058b 1fe0fe01 increase 1 ,pdata 
-058c 6000c95e store 1 ,mem_24g_check_dongle_times 
-058d 6800ca6f fetch 1 ,mem_24g_auto_paring_switch 
-058e 1fe0fe01 increase 1 ,pdata 
-058f 1fe17e03 and_into 3 ,pdata 
-0590 6000ca6f store 1 ,mem_24g_auto_paring_switch 
-0591 c00005a0 beq 0 ,p_g24_auto_pair_device_attemp 
-0592 c00085a2 beq 1 ,p_g24_auto_pair_pair_attemp 
-0593 c00105a4 beq 2 ,p_g24_auto_pair_all_powerful_attemp 
-0594 c00185a2 beq 3 ,p_g24_auto_pair_pair_attemp 
-0595 20600000 rtn 
-
-p_g24_auto_pair_first_attemp:
-0596 204000d4 call p_mouse_tx_power_init 
-0597 68024968 fetch 4 ,mem_24g_device_addr 
-0598 60024959 store 4 ,mem_24g_addr 
-
-p_g24_ch_syncword_crc8_init:
-0599 2040061e call p_g24_syncword_crc8 
-059a 2020063d branch p_g24_ch 
-
-p_g24_auto_pair_all_powerful:
-059b 7041de20 jam tx_power_pair ,mem_tx_power 
-059c 58000f0f setarg 0x0f0f 
-059d 60014959 store 2 ,mem_24g_addr 
-059e e0a10000 istore 2 ,contw 
-059f 20200599 branch p_g24_ch_syncword_crc8_init 
-
-p_g24_auto_pair_device_attemp:
-05a0 20400596 call p_g24_auto_pair_first_attemp 
-05a1 2020057c branch p_g24_auto_pair_start_loop 
-
-p_g24_auto_pair_pair_attemp:
-05a2 20400520 call p_g24_pair_init 
-05a3 2020057c branch p_g24_auto_pair_start_loop 
-
-p_g24_auto_pair_all_powerful_attemp:
-05a4 2040059b call p_g24_auto_pair_all_powerful 
-05a5 2020057c branch p_g24_auto_pair_start_loop 
-
-p_g24_check_51cmd_stop_24g:
-05a6 793f8026 set0 mark_24g ,mark 
-05a7 204053ce call le_disable 
-
-p_mouse_disable_g24_pairing_flag:
-05a8 d8e00003 arg mosue_24g_pairing_flag ,queue 
-05a9 202043d2 branch mouse_disable_function_flag 
-
-p_g24_put_data_in_buff:
-05aa 6008c931 storet 1 ,mem_24g_datalen 
-05ab 18427200 copy temp ,loopcnt 
-05ac d8a048cd arg mem_24g_txbuf ,contw 
-05ad 1a220c00 copy rega ,contr 
-05ae 20207f01 branch memcpy 
-
-p_g24_read_len_pid_crc:
-05af 6800c8ac fetch 1 ,mem_24g_rxbuf + 1 
-05b0 1fe97e00 rshift3 pdata ,pdata 
-05b1 6000c92f store 1 ,mem_24g_rxdata_length 
-05b2 1fe0fe01 increase 1 ,pdata 
-05b3 d8c048ac arg mem_24g_rxbuf + 1 ,contr 
-05b4 98c08c00 iadd contr ,contr 
-05b5 e8c18000 ifetch 3 ,contr 
-05b6 6001c96e store 3 ,mem_24g_sta_crc 
-05b7 6800c8ac fetch 1 ,mem_24g_rxbuf + 1 
-05b8 1fe37e00 rshift pdata ,pdata 
-05b9 1fe17e03 and pdata ,0x03 ,pdata 
-05ba 6000c974 store 1 ,mem_24g_sta_pid 
-05bb 20600000 rtn 
+0710 7041de04 jam tx_power_f5db ,mem_tx_power 
+0711 20600000 rtn 
 
 p_set_freq_tx:
-05bc 60088017 storet 1 ,mem_last_freq 
-05bd 1840a200 add temp ,0 ,rega 
-05be 20402981 call rf_write_freq 
-05bf 58000500 setarg param_pll_setup 
-05c0 20402a8f call sleep 
+0712 60088017 storet 1 ,mem_last_freq 
+0713 1840a200 add temp ,0 ,rega 
+0714 20402981 call rf_write_freq 
+0715 58000500 setarg param_pll_setup 
+0716 20402a8f call sleep 
 
 p_rf_tx_enable:
-05c1 70890601 jam 0x1 ,rfen_adc 
-05c2 7089003c jam 0x3c ,rfen_rx 
-05c3 708901e0 jam 0xe0 ,rfen_tx 
-05c4 2000000a nop 10 
-05c5 70890201 jam 0x01 ,rfen_mdm 
-05c6 7089023d jam 0x3d ,rfen_mdm 
-05c7 2000000a nop 10 
-05c8 708903b7 jam 0xb7 ,rfen_sn 
-05c9 2000000a nop 10 
-05ca 7089027d jam 0x7d ,rfen_mdm 
-05cb 6800c1de fetch 1 ,mem_tx_power 
-05cc c00005d1 beq tx_power_0db ,p_set_tx_power_0db 
-05cd c00105d6 beq tx_power_5db ,p_set_tx_power_5db 
-05ce c00205db beq tx_power_f5db ,p_set_tx_power_f5db 
-05cf c01005ea beq tx_power_pair ,p_set_tx_power_pair 
-05d0 202005d1 branch p_set_tx_power_0db 
+0717 70890601 jam 0x1 ,rfen_adc 
+0718 7089003c jam 0x3c ,rfen_rx 
+0719 708901e0 jam 0xe0 ,rfen_tx 
+071a 2000000a nop 10 
+071b 70890201 jam 0x01 ,rfen_mdm 
+071c 7089023d jam 0x3d ,rfen_mdm 
+071d 2000000a nop 10 
+071e 708903b7 jam 0xb7 ,rfen_sn 
+071f 2000000a nop 10 
+0720 7089027d jam 0x7d ,rfen_mdm 
+0721 6800c1de fetch 1 ,mem_tx_power 
+0722 c001072a beq tx_power_5db ,p_set_tx_power_5db 
+0723 c0020732 beq tx_power_f5db ,p_set_tx_power_f5db 
+0724 c010073c beq tx_power_pair ,p_set_tx_power_pair 
 
 p_set_tx_power_0db:
-05d1 204005e0 call p_rx_low_sens 
-05d2 708955d0 jam 0xd0 ,0x8955 
-05d3 708956e0 jam 0xe0 ,0x8956 
-05d4 7089586c jam 0x6c ,0x8958 
-05d5 2020294b branch set_tx_power_0db 
+0725 20400737 call p_rx_low_sens 
+0726 708955d0 jam 0xd0 ,0x8955 
+0727 708956e0 jam 0xe0 ,0x8956 
+0728 7089586c jam 0x6c ,0x8958 
+0729 2020294b branch set_tx_power_0db 
 
 p_set_tx_power_5db:
-05d6 204005e5 call p_rx_high_sens 
-05d7 708955d0 jam 0xd0 ,0x8955 
-05d8 708956e0 jam 0xe0 ,0x8956 
-05d9 7089583c jam 0x3c ,0x8958 
-05da 20202953 branch set_tx_power_5db 
+072a 70894cfb jam 0xfb ,0x894c 
+072b 70894def jam 0xef ,0x894d 
+072c 70894eec jam 0xec ,0x894e 
+072d 70894f5e jam 0x5e ,0x894f 
+072e 708955d0 jam 0xd0 ,0x8955 
+072f 708956e0 jam 0xe0 ,0x8956 
+0730 7089583c jam 0x3c ,0x8958 
+0731 20202953 branch set_tx_power_5db 
 
 p_set_tx_power_f5db:
-05db 204005e0 call p_rx_low_sens 
-05dc 708955d0 jam 0xd0 ,0x8955 
-05dd 708956c0 jam 0xc0 ,0x8956 
-05de 7089586c jam 0x6c ,0x8958 
-05df 2020295b branch set_tx_power_f5db 
+0732 20400737 call p_rx_low_sens 
+0733 708955d0 jam 0xd0 ,0x8955 
+0734 708956c0 jam 0xc0 ,0x8956 
+0735 7089586c jam 0x6c ,0x8958 
+0736 2020295b branch set_tx_power_f5db 
 
 p_rx_low_sens:
-05e0 70894c5b jam 0x5b ,0x894c 
-05e1 70894d96 jam 0x96 ,0x894d 
-05e2 70894e2c jam 0x2c ,0x894e 
-05e3 70894f46 jam 0x46 ,0x894f 
-05e4 20600000 rtn 
-
-p_rx_high_sens:
-05e5 70894cfb jam 0xfb ,0x894c 
-05e6 70894def jam 0xef ,0x894d 
-05e7 70894eec jam 0xec ,0x894e 
-05e8 70894f5e jam 0x5e ,0x894f 
-05e9 20600000 rtn 
+0737 70894c5b jam 0x5b ,0x894c 
+0738 70894d96 jam 0x96 ,0x894d 
+0739 70894e2c jam 0x2c ,0x894e 
+073a 70894f46 jam 0x46 ,0x894f 
+073b 20600000 rtn 
 
 p_set_tx_power_pair:
-05ea 708956c2 jam 0xc2 ,0x8956 
-05eb 708955d0 jam 0xd0 ,0x8955 
-05ec 20600000 rtn 
+073c 708956c2 jam 0xc2 ,0x8956 
+073d 708955d0 jam 0xd0 ,0x8955 
+073e 20600000 rtn 
 
 p_shutdown_radio:
-05ed 18002a08 force 8 ,radio_ctrl 
-05ee 202028fa branch shutdown_radio + 1 
-
-p_g24_timer_check:
-05ef 20407fe9 call disable_user 
-05f0 680a4952 fetcht 4 ,mem_24g_tx_btclk 
-05f1 1c427e00 copy clkn_bt ,pdata 
-05f2 98467c00 isub temp ,null 
-05f3 24412d18 ncall g24_timer_timeout ,positive 
-05f4 1fe22400 copy pdata ,regb 
-05f5 68024952 fetch 4 ,mem_24g_tx_btclk 
-05f6 6808c956 fetcht 1 ,mem_24g_interval 
-05f7 98408400 iadd temp ,temp 
-05f8 1a427e00 copy regb ,pdata 
-05f9 98467c00 isub temp ,null 
-05fa 24610000 nrtn positive 
-05fb 793ffe1c set0 28 ,pdata 
-05fc 60024952 store 4 ,mem_24g_tx_btclk 
-05fd 20207fe7 branch enable_user 
-
-p_rssi_noise:
-05fe 204029bb call save_rssi 
-05ff 207a0000 rtn blank 
-0600 6808c9eb fetcht 1 ,mem_rssi_noise_index 
-0601 da200d9e arg mem_rssi_noise_buffer ,rega 
-0602 20400605 call p_rssi_store 
-0603 6008c9eb storet 1 ,mem_rssi_noise_index 
-0604 20600000 rtn 
-
-p_rssi_store:
-0605 1a227e00 copy rega ,pdata 
-0606 98408a00 iadd temp ,contw 
-0607 68008018 fetch 1 ,mem_rssi 
-0608 e0a08000 istore 1 ,contw 
-0609 18408401 increase 1 ,temp 
-060a 18410407 and_into rssi_buf_len_signal ,temp 
-060b 20600000 rtn 
-
-p_rssi_average:
-060c d8400000 arg 0 ,temp 
-060d df200008 arg rssi_buf_len_signal + 1 ,loopcnt 
-060e 1a220c00 copy rega ,contr 
-
-p_rssi_average_loop:
-060f e8c08000 ifetch 1 ,contr 
-0610 98408400 iadd temp ,temp 
-0611 c200060f loop p_rssi_average_loop 
-0612 18497e00 rshift3 temp ,pdata 
-0613 1fe20400 copy pdata ,temp 
-0614 c6930000 rtnmark0 mark_24g 
-0615 1fe6fc0a div pdata ,10 
-0616 20407f86 call wait_div_end 
-0617 1807fe00 quotient pdata 
-0618 1ff27e00 lshift4 pdata ,pdata 
-0619 18070400 remainder temp 
-061a 98418400 ior temp ,temp 
-061b 20600000 rtn 
-061c 20600000 rtn 
-
-p_g24_update_addr_and_synccrc8:
-061d 60024959 store 4 ,mem_24g_addr 
-
-p_g24_syncword_crc8:
-061e da200000 arg 0 ,rega 
-061f df200004 arg 4 ,loopcnt 
-0620 d8c04959 arg mem_24g_addr ,contr 
-
-p_g24_syncword_crc8_loop:
-0621 e8c08000 ifetch 1 ,contr 
-0622 9a20a200 iadd rega ,rega 
-0623 c2000621 loop p_g24_syncword_crc8_loop 
-0624 1a227e00 copy rega ,pdata 
-0625 600149e2 store 2 ,mem_24g_syncword 
-0626 6800c9e2 fetch 1 ,mem_24g_syncword 
-0627 6808c9e3 fetcht 1 ,mem_24g_syncword + 1 
-0628 9840fe00 iadd temp ,pdata 
-0629 6000c9e4 store 1 ,mem_24g_syncword_crc8 
-062a 20600000 rtn 
-
-p_g24_transmit_prep:
-062b 6800c931 fetch 1 ,mem_24g_datalen 
-062c 1fe0fe02 increase 2 ,pdata 
-062d 6000c933 store 1 ,mem_24g_txlen 
-062e 6800c932 fetch 1 ,mem_24g_data_type 
-062f 6000c8ed store 1 ,mem_24g_txpayload 
-0630 6800c931 fetch 1 ,mem_24g_datalen 
-0631 1fe9fe00 lshift3 pdata ,pdata 
-0632 6808c930 fetcht 1 ,mem_24g_pid 
-0633 18410403 and temp ,0x03 ,temp 
-0634 18438400 lshift temp ,temp 
-0635 9841fe00 ior temp ,pdata 
-0636 6808c96d fetcht 1 ,mem_24g_no_ack 
-0637 9840fe00 iadd temp ,pdata 
-0638 e0a08000 istore 1 ,contw 
-0639 6800c931 fetch 1 ,mem_24g_datalen 
-063a 98007200 iforce loopcnt 
-063b d8c048cd arg mem_24g_txbuf ,contr 
-063c 20207f01 branch memcpy 
-
-p_g24_ch:
-063d 6808c93c fetcht 1 ,mem_24g_current_ch_number 
-063e 20400641 call p_g24_ch_map_size 
-063f 6008c93c storet 1 ,mem_24g_current_ch_number 
-0640 20600000 rtn 
-
-p_g24_ch_map_size:
-0641 20400645 call p_g24_ch_calc 
-0642 18408401 increase 1 ,temp 
-0643 18410403 and_into 3 ,temp 
-0644 20600000 rtn 
-
-p_g24_ch_calc:
-0645 6800c959 fetch 1 ,mem_24g_addr 
-0646 1fe17e03 and_into 0x03 ,pdata 
-0647 1fefa204 mul32 pdata ,4 ,rega 
-0648 58004942 setarg mem_24g_ch_map1 
-0649 9a20fe00 iadd rega ,pdata 
-064a 98408c00 iadd temp ,contr 
-064b e8c08000 ifetch 1 ,contr 
-064c 6000c93b store 1 ,mem_24g_ch 
-064d 20600000 rtn 
-
-p_g24_prep:
-064e 7844fc00 disable enable_crc 
-064f 7843fc00 disable enable_white 
-0650 58555555 setarg 0x555555 
-0651 98001e00 iforce crc24_init 
-0652 6800c93b fetch 1 ,mem_24g_ch 
-0653 1fed8400 reverse pdata ,temp 
-0654 79200401 set1 1 ,temp 
-0655 18431c00 rshift temp ,white_init 
-0656 20600000 rtn 
-
-p_g24_receive_packet:
-0657 204053c4 call le_enable 
-0658 68024959 fetch 4 ,mem_24g_addr 
-0659 98001200 iforce access 
-065a 20402918 call set_sync_on 
-065b 6808c93b fetcht 1 ,mem_24g_ch 
-065c 2040291f call set_freq_rx 
-065d 58000500 setarg param_pll_setup 
-065e 20402a8f call sleep 
-065f 20402924 call rf_rx_enable 
-
-p_g24_receive_rxon:
-0660 2040064e call p_g24_prep 
-0661 7857fc00 disable user3 
-0662 7826fc00 enable decode_fec0 
-0663 7830fc00 enable is_rx 
-0664 78507c00 disable is_tx 
-0665 78287c00 enable swfine 
-0666 68014934 fetch 2 ,mem_24g_rx_window 
-0667 98003600 iforce stop_watch 
-0668 37c18400 correlate null ,timeout 
-0669 242c06a1 nbranch p_g24_sync_timeout ,sync 
-066a 7846fc00 disable decode_fec0 
-066b 7825fc00 enable decode_fec1 
-066c 7823fc00 enable enable_white 
-066d 7824fc00 enable enable_crc 
-066e 2040069a call p_g24_receive_byte 
-066f 6000c9e5 store 1 ,mem_24g_get_syncword_crc8 
-0670 6808c9e4 fetcht 1 ,mem_24g_syncword_crc8 
-0671 98467c00 isub temp ,null 
-0672 2422869d nbranch p_g24_end_of_packet ,zero 
-0673 2040069a call p_g24_receive_byte 
-0674 6000c8ab store 1 ,mem_24g_rxbuf 
-0675 6800c977 fetch 1 ,mem_24g_mode 
-0676 1fe67c02 sub pdata ,rx_24g ,null 
-0677 2022867c branch p_g24_receive_skip ,zero 
-0678 6800c8ab fetch 1 ,mem_24g_rxbuf 
-0679 6808c932 fetcht 1 ,mem_24g_data_type 
-067a a8400e00 icompare bits_data ,temp 
-067b 2420869d nbranch p_g24_end_of_packet ,true 
-
-p_g24_receive_skip:
-067c 2040069a call p_g24_receive_byte 
-067d e0a08000 istore 1 ,contw 
-067e 1fe97e00 rshift3 pdata ,pdata 
-067f 1fe1721f and pdata ,0x1f ,loopcnt 
-0680 20228684 branch p_g24rx_nopayload ,zero 
-
-p_g24rx_loop:
-0681 2040069a call p_g24_receive_byte 
-0682 e0a08000 istore 1 ,contw 
-0683 c2000681 loop p_g24rx_loop 
-
-p_g24rx_nopayload:
-0684 18a22200 copy contw ,rega 
-0685 2040069a call p_g24_receive_byte 
-0686 6000ca6c store 1 ,mem_rssi_hex_received 
-0687 1a220a00 copy rega ,contw 
-0688 09800018 parse demod ,bucket ,24 
-0689 78287c00 enable swfine 
-068a db600664 arg param_sifs ,stop_watch 
-068b 1fef7e00 rshift32 pdata ,pdata 
-068c 1ff17e00 rshift16 pdata ,pdata 
-068d e0a18000 istore 3 ,contw 
-068e 7845fc00 disable decode_fec1 
-068f 2023069d branch p_g24_end_of_packet ,crc_failed 
-0690 7837fc00 enable user3 
-0691 68008017 fetch 1 ,mem_last_freq 
-0692 1fe0a200 add pdata ,0 ,rega 
-0693 20402981 call rf_write_freq 
-0694 7846fc00 disable decode_fec0 
-0695 20402918 call set_sync_on 
-0696 6800ca6c fetch 1 ,mem_rssi_hex_received 
-0697 1fe22200 copy pdata ,rega 
-0698 2040001d call p_rssi_signal 
-0699 20600000 rtn 
-
-p_g24_receive_byte:
-069a 09800008 parse demod ,bucket ,8 
-069b 19897e00 rshift3 pwindow ,pdata 
-069c 20600000 rtn 
-
-p_g24_end_of_packet:
-069d 784dfc00 disable encode_fec1 
-069e 7845fc00 disable decode_fec1 
-069f 2040264d call end_of_packet 
-06a0 20600000 rtn 
-
-p_g24_sync_timeout:
-06a1 2020069d branch p_g24_end_of_packet 
-
-p_g24_set_freq_tx:
-06a2 20402918 call set_sync_on 
-06a3 6808c93b fetcht 1 ,mem_24g_ch 
-06a4 20202933 branch set_freq_tx 
-
-p_g24_transmit:
-06a5 204053c4 call le_enable 
-06a6 68024959 fetch 4 ,mem_24g_addr 
-06a7 98001200 iforce access 
-06a8 2040064e call p_g24_prep 
-06a9 204006a2 call p_g24_set_freq_tx 
-06aa 79202a00 set1 txgfsk ,radio_ctrl 
-06ab 782efc00 enable encode_fec0 
-06ac 78307c00 enable is_tx 
-06ad 7850fc00 disable is_rx 
-06ae 19317e00 rshift16 access ,pdata 
-06af 1fecfe00 rshift8 pdata ,pdata 
-06b0 1ff1fe00 rshift4 pdata ,pdata 
-06b1 08008628 inject mod ,40 
-06b2 784efc00 disable encode_fec0 
-06b3 782dfc00 enable encode_fec1 
-06b4 7823fc00 enable enable_white 
-06b5 7824fc00 enable enable_crc 
-06b6 6800c9e4 fetch 1 ,mem_24g_syncword_crc8 
-06b7 08008608 inject mod ,8 
-06b8 6800c933 fetch 1 ,mem_24g_txlen 
-06b9 98007200 iforce loopcnt 
-06ba d8c048ed arg mem_24g_txpayload ,contr 
-
-p_g24tr_loop:
-06bb e8c08000 ifetch 1 ,contr 
-06bc 08008608 inject mod ,8 
-06bd c20006bb loop p_g24tr_loop 
-06be 78247c00 enable enable_parity 
-06bf 08008618 inject mod ,24 
-06c0 78447c00 disable enable_parity 
-06c1 37d38200 until null ,tx_clear 
-06c2 20000064 nop 100 
-06c3 784efc00 disable encode_fec0 
-06c4 784dfc00 disable encode_fec1 
-06c5 20600000 rtn 
-
-p_mouse_data_init:
-06c6 7047a407 jam 7 ,mem_mouse_data_queue 
-06c7 7047a504 jam 4 ,mem_mouse_data_queue + 1 
-06c8 580047a4 setarg mem_mouse_data_queue 
-06c9 60014218 store 2 ,mem_queue_ptr 
-06ca 20207e38 branch queue_init 
-
-p_mouse_data_push:
-06cb da20469a arg mem_mouse_key ,rega 
-06cc 20407e3d call queue_push 
-06cd 205406cf call p_mouse_queue_increase ,user 
-06ce 20600000 rtn 
-
-p_mouse_queue_increase:
-06cf 6800c7c5 fetch 1 ,mem_mouse_data_queue_num 
-06d0 1fe0fe01 increase 1 ,pdata 
-06d1 6000c7c5 store 1 ,mem_mouse_data_queue_num 
-06d2 20600000 rtn 
-
-p_mouse_data_pull:
-06d3 da20469a arg mem_mouse_key ,rega 
-06d4 20407e54 call queue_pop 
-06d5 203406d7 branch p_mouse_fill_data_le ,user 
-06d6 20600000 rtn 
-
-p_mouse_fill_data_le:
-06d7 20405652 call le_clear_md 
-06d8 6800c7c5 fetch 1 ,mem_mouse_data_queue_num 
-06d9 1fe67c01 sub pdata ,1 ,null 
-06da 24415650 ncall le_set_md ,positive 
-06db 6800c7c5 fetch 1 ,mem_mouse_data_queue_num 
-06dc 207a0000 rtn blank 
-06dd 1fe0ffff increase -1 ,pdata 
-06de 6000c7c5 store 1 ,mem_mouse_data_queue_num 
-06df 20203f90 branch mouse_fill_data_le 
+073f 18002a08 force 8 ,radio_ctrl 
+0740 202028fa branch shutdown_radio + 1 
 org 0x2000
 
 start:
@@ -12551,6 +12702,8 @@
 3d6d 6800c6b6 fetch 1 ,mem_mouse_dpi_button_state 
 3d6e c1000000 rtneq dpi_button_state_down 
 3d6f 7046b600 jam dpi_button_state_down ,mem_mouse_dpi_button_state 
+
+mouse_dpi_down_setting:
 3d70 6800c77a fetch 1 ,mem_mouse_dpi 
 3d71 1fe0fe01 increase 1 ,pdata 
 3d72 1fe17e03 and pdata ,0x03 ,pdata 
Index: program/app_mouse.prog
===================================================================
--- /branch/mouse_project/YJX_24G&BLE/program/app_mouse.prog	(revision 1235)
+++ /branch/mouse_project/YJX_24G&BLE/program/app_mouse.prog	(working copy)
@@ -158,6 +158,7 @@
 	fetch 1,mem_mouse_dpi_button_state
 	rtneq DPI_BUTTON_STATE_DOWN
 	jam DPI_BUTTON_STATE_DOWN,mem_mouse_dpi_button_state
+mouse_dpi_down_setting:
 	fetch 1,mem_mouse_dpi
 	increase 1,pdata
 	and pdata,0x03,pdata
Index: program/patch.prog
===================================================================
--- /branch/mouse_project/YJX_24G&BLE/program/patch.prog	(revision 1235)
+++ /branch/mouse_project/YJX_24G&BLE/program/patch.prog	(working copy)
@@ -1,13 +1,15 @@
 //define DONGLE
 define MOUSE
+define G24
 define BLE
+//define CLASSIC_BT
+//define MOUSE_SMOOTHER
 //define ADC_ENABLE
-//define ADC_GPIO
-//define ADC_VINLPM
 //define P24G_LOG
 //define RF_DEBUG
 define BLE_FAST_CONN_ENABLE
 
+
 //define DEBUGLOG
 //define DEBUGLOG_CALLBACK
 //define DEBUGLOG_EVENT
@@ -21,10 +23,22 @@
 
 ifdef PATCH
 	bbit1 8,pf_patch_ext
+	beq patch00_0,p_soft_reset
+	beq patch00_1,p_soft_reset_1
+	beq patch00_2,p_soft_reset_2
 	beq patch10_5,p_shutdown_radio
 	beq patch11_1,p_set_freq_tx
-ifdef MOUSE
-	beq patch00_1,p_soft_reset_1
+ifdef CLASSIC_BT
+	beq patch03_3,p_page_wait_fhs_reply_ok
+	beq patch04_6,p_role_switch_master
+	beq patch09_0,p_quit_connection_cont	
+	beq patch09_2,p_prepare_tx
+	beq patch0a_1,p_slave_conn_recv_packet
+ 	beq patch0b_1,p_process_dmh	
+	beq patch14_7,p_lpm_dispatch
+	beq patch19_3,p_app_bt_start_reconnect
+	beq patch1d_1,p_mouse_bb_disconnected
+endif	
 	beq patch14_1,p_init_param
 	beq patch16_1,p_lpm_check_wake_lock
 	beq patch16_2,p_g24_dispatch
@@ -33,15 +47,11 @@
 	beq patch19_2,p_app_initflag_check
 	beq patch1c_3,p_mouse_seting_dpi
 	beq patch1c_6,p_mouse_motion
-ifdef BLE
 	beq patch1d_2,p_mouse_bb_event_discovery_btn
 	beq patch1d_3,p_mouse_start_discovery
 	beq patch1d_4,p_mouse_stop_discovery
-endif	
-endif
 	branch loop
 pf_patch_ext:
-ifdef MOUSE
 ifdef BLE
 	beq patch27_1,p_le_slave_match
 	beq patch28_3,p_le_next_adv_channel
@@ -54,20 +64,26 @@
 	beq patch2d_2,p_le_adv_not_match
 	beq patch2e_7,p_le_lpm_setmult
 	beq patch3f_2,p_check_51cmd_once_continue
+endif	
+ifdef CLASSIC_BT
+	beq patch20_5,p_hid_rx_process
+	beq patch30_0,p_parse_lmp_accepted
+	beq patch30_2,p_send_lmp
+	beq patch31_0,p_process_conn_sm
 endif
 	beq patch31_4,p_twspi_reset
 ifdef DEBUGLOG
 	beq patch2f_6,p_parse_lmp_opcode
-	beq patch31_0,p_process_conn_sm
 	beq patch37_6,p_process_upper_sm_reconn
 	beq patch3e_6,p_ui_ipc_send_event
 	beq patch3e_7,p_ui_ipc_send_cmd
 endif
-endif
 	branch loop
+	
 
 ifdef MOUSE
 p_rssi_signal:
+	copy pdata,rega
 	fetcht 1,mem_rssi_signal_index
 	setarg mem_rssi_signal_buf
 	iadd temp,contw
@@ -78,14 +94,44 @@
 	storet 1,mem_rssi_signal_index
 	rtn
 
+p_soft_reset:
+	hfetch 1,0x813b
+	store 1,mem_power_on_flag
+	branch soft_reset+1
+
 p_soft_reset_1:
+	arg mem_sp_state,contw
+	arg 12,loopcnt
+	call clear_mem
+ifdef BLE
 	call p_mouse_le_txbuff_load
+endif	
 	call rfcomm_init
 	call init_lmp
 	ncall lpm_disable_exen_output,wake
 	call ui_init+1
 	branch soft_reset+11
 
+p_soft_reset_2:
+	call app_lpm_init,wake
+ifdef SIMPLE_PAIRING
+	call publickey_init
+else
+	call ssp_disable
+ifdef SECURE_CONNECTION
+	call publickey_init
+
+endif
+endif
+	call lpm_recover_clk,wake
+p_sp_cal_loop:
+	call sp_calc_sequence
+	fetch 1,mem_ssp_enable
+	branch main_loop,blank
+	fetch 1,mem_sp_local_key_invalid // simple pairing is not ready
+	branch p_sp_cal_loop,blank
+	branch main_loop
+
 p_init_param:
 	setarg param_le_version
 	store 3,mem_lmp_version
@@ -93,56 +139,117 @@
 	store 2,mem_lmp_version+3
 	branch init_param+12
 
+p_lpm_check_wake_lock:
+	rtnmark1 mark_24g
+	fetch 1,mem_mouse_multi_led_state
+	nbranch disable_blank,blank
+	fetch 1,mem_mouse_multi_led_blink_count
+	nbranch disable_blank,blank
+	fetch 1,mem_mouse_clear_sensor_data_flag
+	branch disable_blank,blank
+	fetch 1,mem_mouse_le_conn_param_reject
+	beq LE_LPM_DISABLE,disable_blank
+ifdef CLASSIC_BT	
+	fetch 2,mem_sdp_remote_cid
+	nbranch disable_blank,blank
+endif
+	fetch 1,mem_mouse_wheel_trigger
+	nbranch disable_blank,blank
+	branch enable_blank
+
+
+ifdef G24
 p_g24_dispatch:
 	rtnmark0 mark_24g
+	fetch 1,mem_g24_conn_sm
+	bbit1 STATE_24G_PAIR,p_g24_pair_dispatch
+	bbit1 STATE_24G_RECONN,p_g24_reconn_dispatch
 	fetch 1,mem_24g_transmit_by_interrupt
 	beq G24_TX_TIMER_INT_ENABLE,p_g24_transmit_by_interrupt
 p_g24_transmit_process:
 	call p_g24_txdata_prep
 	nbranch p_g24_nodata_transmit,user
-	jam with_ack_24g,mem_24g_no_ack	//tx ack
 	call p_g24_rf_sta_check
-	call p_g24_search_dongle
-	fetch 1,mem_24g_no_ack
-	rtneq no_ack_24g
 p_g24_transmit_start:
 	call p_g24_transmit_packet
 	fetch 1,mem_24g_pairing_sm
 	rtnne STATE_24G_PAIRING_SUCCESS
 	call power_ctrl_start
-	fetch 1,mem_24g_no_ack
-	beq no_ack_24g,p_g24_long_sleep
 	call g24_long_sleep_shorter_param_update
-	fetch 1,mem_24g_transmit_by_interrupt
-	rtneq G24_TX_TIMER_INT_ENABLE
-p_g24_short_sleep:
+	fetch 1,mem_mouse_multi_led_state
+	beq ON,p_g24_transmit_by_interrupt_enable
+p_g24_short_sleep:	
 	call p_g24_lpm_wait
 	nrtn user
 	call p_clear_wake
-	setarg 60500
+	setarg 60000
 	branch lpm_dispatch_sleep
 
+p_g24_pair_dispatch:
+	fetch 1,mem_g24_stop_g24_mode
+	beq 1,p_g24_stop_g24_mode
+	call p_g24_tx_attemp_data_prep
+	call p_g24_transmit_receive_ack
+	nbranch p_g24_pair_txdata_retry,sync
+	nbranch p_g24_pair_txdata_retry,user3
+	fetch 1,mem_g24_conn_sm
+	set0 STATE_24G_PAIR,pdata
+	store 1,mem_g24_conn_sm
+	call p_g24_ackpayload_parse
+	call p_mouse_tx_power_init
+	fetch 4,mem_24g_addr
+	fetcht 4,mem_24g_paring_addr
+	isub temp,null
+	branch p_g24_start_pairing_sm1,zero
+	branch p_g24_tx_attemp_dongle_succ
+
+p_g24_reconn_dispatch:
+	fetch 1,mem_g24_stop_g24_mode
+	beq 1,p_g24_stop_g24_mode
+	call p_g24_tx_attemp_data_prep
+	call p_g24_transmit_receive_ack
+	nbranch p_g24_attemp_txdata_retry,sync
+	nbranch p_g24_attemp_txdata_retry,user3
+p_g24_tx_attemp_dongle_succ:
+	set1 mark_24g,mark
+	fetch 1,mem_g24_conn_sm
+	set0 STATE_24G_RECONN,pdata
+	store 1,mem_g24_conn_sm
+	jam 0,mem_mouse_long_mult_flag
+	jam BT_EVT_24G_ATTEMPT_SUCCESS,mem_fifo_temp
+	call ui_ipc_send_event
+	call p_g24_txbuf_clear
+p_g24_transmit_by_interrupt_enable:
+	jam G24_TX_TIMER_INT_ENABLE,mem_24g_transmit_by_interrupt
+	setarg 0
+	store 2,mem_24g_transmit_by_interrupt_exit_count
+	rtn
+
 g24_long_sleep_shorter_param_update:
-	fetch 1,mem_config_function_enable
-	rtnbit1 ENABLE_SENSOR_MOTION_PIN
+//	fetch 1,mem_config_function_enable
+//	rtnbit1 ENABLE_SENSOR_MOTION_PIN
 	setarg G24_LONG_SLEEP_STEP1
 	store 3,mem_24g_enter_hibernate
 	jam 20,mem_24g_long_sleep_param_update_timer
 	rtn
-
+	
 p_g24_transmit_by_interrupt:
 	call p_g24_timer_check
 	nrtn user
-	call p_g24_interval_calibrate	
-	fetch 1,mem_24g_transmit_by_interrupt_exit_count
+	call p_g24_interval_calibrate
+	fetch 2,mem_24g_transmit_by_interrupt_exit_count
 	increase 1,pdata
-	store 1,mem_24g_transmit_by_interrupt_exit_count
-	sub pdata,25,null	//200ms
+	store 2,mem_24g_transmit_by_interrupt_exit_count
+	fetcht 2,mem_24g_transmit_by_interrupt_exit_count_init
+	isub temp,null
 	call p_g24_transmit_by_interrupt_exit,zero
 	branch p_g24_transmit_process
 p_g24_transmit_by_interrupt_exit:
 	jam G24_TX_TIMER_INT_DISABLE,mem_24g_transmit_by_interrupt
-	jam 0,mem_24g_transmit_by_interrupt_exit_count
+	setarg 0
+	store 2,mem_24g_transmit_by_interrupt_exit_count
+	setarg 100
+	store 2,mem_24g_transmit_by_interrupt_exit_count_init
 p_g24_interval_min:
 	jam 0,mem_24g_pac_index
 	fetch 1,mem_24g_interval_min
@@ -159,14 +266,20 @@
 	beq 4,p_g24_interval_max
 	beq 5,p_g24_interval_min
 	rtn
-p_g24_transmit_by_interrupt_enable:
-	jam G24_TX_TIMER_INT_ENABLE,mem_24g_transmit_by_interrupt
-	jam 0,mem_24g_transmit_by_interrupt_exit_count
-	rtn
 
 p_g24_nodata_transmit:
 	fetch 1,mem_24g_abort_pac
 	call p_g24_send_abort_packet,blank
+	fetch 1,mem_mouse_multi_led_blink_count
+	nrtn blank
+	fetch 1,mem_mouse_multi_led_state
+	rtneq ON
+	fetch 1,mem_24g_transmit_by_interrupt
+	rtneq G24_TX_TIMER_INT_ENABLE
+	call p_g24_search_dongle
+	fetch 1,mem_24g_search_dongle_ch
+	rtnne G24_CH_NUMBER
+	jam 0,mem_24g_search_dongle_ch
 p_g24_long_sleep:
 	call p_g24_lpm_wait
 	nrtn user
@@ -176,18 +289,19 @@
   	branch lpm_sleep
 
 p_g24_lpm_wait:
-  	enable user
+	enable user
 	call lpo_calibration
 	fetch 3,mem_clks_per_lpo
 	branch disable_user,blank
 	fetch 1,mem_lpm_mode
 	branch disable_user,blank
-	fetch 1,mem_sp_local_key_invalid	// simple pairing is not ready
-	branch disable_user,blank
+	fetch 1,mem_24g_transmit_by_interrupt
+	beq G24_TX_TIMER_INT_ENABLE,disable_user	
 	branch p_mouse_setgpio_lpm
 
 p_g24_send_abort_packet:
 	jam 1,mem_24g_abort_pac
+p_g24_send_abort_packet1:	
 	jam 0,mem_24g_rf_hop_ch
 	call p_g24_transmit_rf_ctrl_clear
 	store 1,mem_24g_txbuf
@@ -201,2808 +315,3411 @@
 	store 1,mem_24g_data_type
 	call p_g24_transmit_prep
 	call p_g24_txdata_enable_tx
-	branch p_g24_transmit_start
-p_g24_search_dongle:
-	fetch 1,mem_24g_abort_pac
-	rtn blank	
-	jam no_ack_24g,mem_24g_no_ack	//tx noack
-	call p_g24_ch
-	branch p_g24_send_abort_packet+1
-p_lpm_check_wake_lock:
-	rtnmark1 mark_24g
-	fetch 1,mem_mouse_clear_sensor_data_flag
-	branch disable_blank,blank
-	fetch 1,mem_mouse_le_conn_param_reject
-	beq LE_LPM_DISABLE,disable_blank
-	fetch 1,mem_mouse_wheel_trigger
-	nbranch disable_blank,blank
-	branch enable_blank
+	call p_g24_transmit_packet
+	branch power_ctrl_start
 
-p_mouse_before_lpm:
-	rtnmark1 mark_24g
-	call p_mouse_le_txbuff_save
-	call p_mouse_setgpio_lpm
-	fetch 1,mem_context
-	bbit0 state_inconn,p_clear_wake
-	fetch 1,mem_lpm_current_mult
-	nrtn blank
-p_clear_wake:
-	setarg 0
-	store 8,mem_gpio_wakeup_low
+
+p_g24_search_dongle_init:
+	jam 0,mem_24g_search_dongle_action
+	jam 0,mem_24g_search_dongle_count
+	jam 0,mem_24g_search_dongle_ch
 	rtn
 
-p_mouse_setgpio_lpm:
-	call p_mouse_seting_dpi_sensor_type	// make sdio high to make 100uA less
-	call p_clear_wake
-p_mouse_setgpio_lpm_before:	
-	call mouse_lpm_before_common
-	call p_mouse_led_output_high
-	hfetch 4,core_gpio_oe0
-	hfetcht 4,core_gpio_pu0
-	ior temp,temp
-	invert temp,temp
-	hstoret 4,core_gpio_pd0
+p_g24_search_dongle:
+	fetch 1,mem_24g_abort_pac
+	rtn blank
+p_g24_search_dongle_loop:
+	fetch 1,mem_24g_search_dongle_ch
+	increase 1,pdata
+	store 1,mem_24g_search_dongle_ch
+	call p_g24_ch
+	call p_g24_send_abort_packet1
+	fetch 1,mem_24g_search_dongle_ch
+	bne G24_CH_NUMBER,p_g24_search_dongle_loop
+	
+	fetch 1,mem_24g_search_dongle_count
+	increase 1,pdata
+	store 1,mem_24g_search_dongle_count
+	beq G24_CH_POLL_COUNT,p_g24_search_dongle_check
 	rtn
 
-p_mouse_le_txbuff_save:
-	arg mem_le_tx_buffer0,contr
-	arg mem_le_tx_buffer0_omemalloc,contw
-	call p_mouse_le_txbuff_copy
-	arg mem_le_tx_buffer1,contr
-	call p_mouse_le_txbuff_copy
-	arg mem_le_tx_buffer2,contr
-	call p_mouse_le_txbuff_copy
-	arg mem_le_tx_buffer3,contr
-p_mouse_le_txbuff_copy:	
-	arg 27,loopcnt
-	branch memcpy
+p_g24_search_dongle_check:
+	jam 0,mem_24g_search_dongle_count
+	fetch 1,mem_24g_search_dongle_action
+	rtnbit1 G24_DISCONN_STATE
+	set1 G24_DISCONN_STATE,pdata
+	store 1,mem_24g_search_dongle_action
+	setarg G24_DISCONN_NODATA_TIMER	//3min
+	store 2,mem_mouse_no_data_timer
+	branch p_mouse_sensor_powerdown
 
-p_mouse_le_txbuff_load:
-	arg mem_le_tx_buffer0_omemalloc,contr
-	arg mem_le_tx_buffer0,contw
-	call p_mouse_le_txbuff_copy
-	arg mem_le_tx_buffer1,contw
-	call p_mouse_le_txbuff_copy
-	arg mem_le_tx_buffer2,contw
-	call p_mouse_le_txbuff_copy
-	arg mem_le_tx_buffer3,contw
-	branch p_mouse_le_txbuff_copy
+p_g24_search_dongle_success:
+	fetch 1,mem_24g_abort_pac
+	branch p_g24_search_dongle_init,blank
+	jam 0,mem_24g_search_dongle_count
+	jam G24_CH_NUMBER,mem_24g_search_dongle_ch
+	fetch 1,mem_24g_search_dongle_action
+	rtnbit0 G24_DISCONN_STATE
+	set0 G24_DISCONN_STATE,pdata
+	store 1,mem_24g_search_dongle_action
+	call mouse_no_data_timer_init
+	branch p_mouse_init_sensor_reset
 
-p_device_init:
-ifdef DEBUGLOG
-	call debuglog_init
-ifdef DEBUGLOG_STATUS
-	setarg DEBUGLOG_DTYPE_STATUS
-	store 2,mem_debuglog_datatype
-	setarg STATUS_LPM_WAKE
-	store 2,mem_debuglog_dataval
-	call debuglog_push	
-endif
-endif
-	call app_lpm_mult_enable
-	branch p_device_init_common,wake
-ifdef DEBUGLOG
-ifdef DEBUGLOG_STATUS
-	setarg DEBUGLOG_DTYPE_STATUS
-	store 2,mem_debuglog_datatype
-	setarg STATUS_CODE_WAKE
-	store 2,mem_debuglog_dataval
-	call debuglog_push
-endif
-endif
-	call p_mouse_data_init
-	fetch 1,mem_tx_power
-	store 1,mem_tx_power_temp
-	call power_ctrl_pac_succ_cnt_init
-	fetch 1,mem_ui_button_timeout
-	store 1,mem_combination_ui_button_count	//combination key timer init
-	call mouse_bt_discovery_button_down_disable
-	fetch 6,mem_le_lap
-	store 6,mem_le_normal_lap	
-p_device_init_common:
-	call p_mouse_init
-	branch enable_authrom
+//p_g24_set_device_addr:
+//	call adc_init_data
+//	fetch 4,mem_2v_adc_vinlpm_data	//adc data from otp
+//	store 4,mem_24g_device_addr	
+//	nrtn blank
+//	fetch 4,mem_lap
+//	store 4,mem_24g_device_addr
+//	rtn
 
-p_mouse_init:
-	ncall p_mouse_setting_config,wake
-	call spi_ncs_enable
-	call p_mouse_init_sunt
-	call spi_ncs_disable
-	rtn wake
-ifdef RF_DEBUG
-	call test_gpio_init
-endif
-	call p_mouse_cb_fuction
-	call p_mouse_led_output_init
-	call p_mouse_check_key_gpio
-	beq MOUSE_LM_BUTTON,p_mouse_24g_pairing_button
-	branch p_mouse_wakeup_from_power
+p_g24_transmit_rf_sta_init:
+	jam 1,mem_24g_rf_last_sta
+	jam 0,mem_24g_sync_cnt
+p_g24_transmit_rf_ctrl_clear:	
+	fetch 1,mem_24g_data_type
+	and_into bits_data,pdata
+	store 1,mem_24g_data_type
+	rtn
 	
-p_mouse_tx_power_init:
-	fetch 1,mem_tx_power_temp
-	store 1,mem_tx_power
+p_g24_hop_ch_enable:
+	fetch 1,mem_24g_data_type
+	set1 bit_hop,pdata
+	store 1,mem_24g_data_type
+	//update txpayload
+	store 1,mem_24g_txpayload
 	rtn
+//p_g24_hop_ch_disable:
+//	fetch 1,mem_24g_data_type
+//	set0 bit_hop,pdata
+//	store 1,mem_24g_data_type
+//	rtn	
 
-p_mouse_check_reconn_target:
-	fetch 1,mem_mouse_device_led_on_timer_init
-	store 1,mem_mouse_device_led_on_timer_count
-	jam 1,mem_mouse_ble_reconn_enable
-	jam 0,mem_mouse_ble_led_on_enable
-	branch p_mouse4_0_check_reconn_target
-
-/*	
-	fetch 1,mem_xrecord_mode
-//	beq REC_3_MODE,mouse3_0_check_reconn_target
-ifdef BLE	
-	beq REC_4_MODE,p_mouse4_0_check_reconn_target
-endif	
+p_g24_transmit_hop_pac_fail:
+	call power_ctrl_pac_succ_decrs
+	fetch 1,mem_24g_rf_work_stage
+	beq 1,p_g24_transmit_hop_pac_fail_wo_hop
+	beq 2,p_g24_transmit_hop_pac_fail_hop_stage2
 	rtn
-*/
-
-ifdef BLE
-p_mouse4_0_check_reconn_target:
-	jam 1,mem_mouse_le_reconnect_flag
-	fetch 2,mem_mouse_direct_timeout
-ifdef BLE_FAST_CONN_ENABLE
-//	fetcht 1,mem_mouse_fast_conn_flag
-//	sub temp,0xff,null
-//	nbranch p_mouse4_0_check_reconn_target_next,zero
-//	setarg 0x0258								//ble fast conn time 1min
-endif
-p_mouse4_0_check_reconn_target_next:
-	store 2,mem_mouse_direct_timer
-//	setarg mem_mouse_direct_timer
-//	call ice_set_write_bp
-	jam 3,mem_mouse_mode_swtich_step
-	fetch 1,mem_mouse_fast_conn_flag
-	sub pdata,0xff,null
-	branch p_mouse_check_fast_conn_adv_start,zero
-
-	arg MOUSE_STORE_EEPROM_FLAG,queue
-	call mouse_enable_function_flag
-	jam 4,mem_mouse_mode_swtich_step
-	call app_lpm_mult_disable
-	arg mem_le_scan_data,contr
-	call p_le_adv_data_update
-	jam 0x1f,mem_le_scan_data_len
-	branch check_51cmd_adv
+p_g24_transmit_hop_pac_fail_wo_hop:
+	jam 2,mem_24g_sync_cnt
+p_g24_transmit_hop_pac_fail_stage1:	
+	jam 0,mem_24g_hop_pac_retry
+	jam 0,mem_24g_rf_last_sta
+	branch p_g24_transmit_rf_ctrl_clear
 
-p_le_check_adv_flag:
-	arg mem_le_adv_data,rega
-p_le_check_adv_flag_loop:
-	ifetch 1,rega	//length
-	rtn blank
-	iadd contr,rega
-	ifetch 1,contr	//type
-	rtneq 0x01
-	branch p_le_check_adv_flag_loop
-endif
+p_g24_transmit_hop_pac_fail_hop_stage2:
+	jam 0,mem_24g_rf_hop_ch
+	branch p_g24_transmit_hop_pac_fail_stage1
 
-p_mouse_24g_pairing_button:
-	fetch MOUSE_FLAG_LEN,mem_mouse_flag
-//	rtnbit0 MOUSE_ENABLE_24G
-	rtnbit1 MOSUE_24G_PAIRING_FLAG
-	rtnmark1 mark_24g
-	call mouse_devce_led_off
-	arg MOSUE_24G_PAIRING_FLAG,queue
-	call mouse_enable_function_flag
-	setarg 0
-	store 2,mem_mouse_direct_timer
-	store 1,mem_mouse_send_blank_timer
-	store 2,mem_24g_check_dongle_times
-	call mouse_stop_discovery
-	branch p_g24_start_pairing_sm1
-
-p_mouse_dpi_config:
-//	fetch MOUSE_FLAG_LEN,mem_mouse_flag
-//	bbit0 MOUSE_ENABLE_EEPROM,mouse_dpi_config
-	fetch 1,mem_mouse_dpi
-	beq 0xff,mouse_dpi_config
-	branch mouse_seting_dpi+2
+	
+p_g24_transmit_pac_fail_hop_stage3:
+	fetch 2,mem_24g_txfail_cnt
+	increase 1,pdata
+	store 2,mem_24g_txfail_cnt
+	bbit1 10,p_g24_tx_attempt_fail	//1024ms * 8
+	fetch 1,mem_24g_rf_hop_ch
+	beq 1,p_g24_rf_hop_fastly
+	jam 1,mem_24g_rf_hop_ch
+p_g24_rf_hop_attemp_again:
+	fetch 1,mem_24g_rf_hop_ch
+	bne 1,p_g24_transmit_rf_ctrl_clear
+p_g24_rf_hop_fastly:
+	fetch 1,mem_24g_hop_fastly_cnt
+	increase 1,pdata
+	store 1,mem_24g_hop_fastly_cnt
+	beq 4,p_g24_rf_hop_fastly_exit
+	call p_g24_ch
+	jam 2,mem_24g_max_retry
+	branch p_g24_transmit_packet
 
-p_mouse_init_sunt:
-	jam 0x76,mem_spi_init_clk
-	call mouse_spi_init
-	rtn wake
-	call mouse_spi_sdio_gpio_pollup
-	fetch 1,mem_config_sensor_type
-	beq P3610,mouse_init_3610sensor
-p_mouse_init_sensor:
-	call mouse_read_sensor_id
-	beq P32XX_ID1,p_mouse_init_p32xx_id2_judge
-	beq P3065_ID1,p_mouse_p3065_init_param
-	call mouse_twspi_reset
-	nop 1000
-	branch p_mouse_init_sensor
+p_g24_rf_hop_fastly_exit:
+	call power_ctrl_pac_succ_decrs
+	jam 0,mem_24g_hop_fastly_cnt
+	branch p_g24_transmit_rf_ctrl_clear
 
-p_mouse_init_p32xx_id2_judge:
-	call p_mouse_sensor_poweron
-	branch mouse_init_p32xx_id2_judge
+p_g24_transmit_hop_pac_succ_wo_hop:
+	jam 2,mem_24g_sync_cnt
+p_g24_transmit_hop_pac_succ:
+	jam 1,mem_24g_rf_last_sta
+	jam 0,mem_24g_rf_hop_ch
+	branch p_g24_transmit_rf_ctrl_clear
 
-p_mouse_p3065_init_param:
-	call p_mouse_sensor_poweron
-	fetch 1,mem_sensor_id2
-	beq P3065_XY_ID2,mouse_p3065xy_init_param
-	jam P3065,mem_config_sensor_type
+p_g24_transmit_succ_rf_config:
+	fetch 1,mem_24g_rf_work_stage
+	beq 3,p_g24_transmit_hop_pac_succ
+	fetch 1,mem_24g_data_type
+	isolate0 bit_hop,pdata
+	branch p_g24_transmit_rf_sta_init,true
+	fetch 1,mem_24g_rf_work_stage
+	beq 1,p_g24_transmit_hop_pac_succ_wo_hop
+	beq 2,p_g24_transmit_hop_pac_succ
 	rtn
 
-p_mouse_sensor_poweron:
-	setarg 0x8006	// reset to factory settings
-	call twspi_write
-	nop 12000
-	branch p_mouse_dpi_config
-p_mouse_sensor_powerdown:
-	setarg 0x06
-	call twspi_read
-	or pdata,0x08,pdata
-	lshift8 pdata,pdata
-	add pdata,0x06,pdata
-	branch twspi_write	//make sdio high
-
-p_mouse_setting_config:
-	call p_g24_set_device_addr
-	call mouse_gpio_init
-	call mouse_param_init
-	setarg 0
-	store 2,mem_lpm_interval
-	call p_mouse_set_gpio_control_sensor
-	call mouse_adc_init
-	call le_set_config_fixed_ltk
-	call le_set_justwork
-	call le_set_fixed_ltk
-	call le_set_config_read_authentication
-p_mouse_init_iic:
-	call iic_init_390k
-	fetch MOUSE_FLAG_LEN,mem_mouse_flag
-	isolate1 MOUSE_ENABLE_2K_EEPROM,pdata
-	ncall clear_eeprom_size_2k,true
-	call mouse_load_eeprom_dpi
-	call p_mouse_init_environment
-p_mouse_init_iic_read_24g_addr:
-	call p_mouse_set_24g_addr_eeprom
-	call iicd_read_eep_data
-ifdef BLE_FAST_CONN_ENABLE
-	call p_mouse_load_fast_conn_flag
-	fetch 1,mem_mouse_fast_conn_flag
-	beq 0xff,p_mouse_fast_conn_init2
-endif
+p_g24_rf_sta_check:
+	fetch 1,mem_24g_pairing_sm
+	rtnne STATE_24G_PAIRING_SUCCESS
+	call p_g24_rf_laststa_synccnt_check
+	ncall p_g24_rf_sync_cnt_check,user2
 	rtn
 
-ifdef BLE_FAST_CONN_ENABLE
-p_mouse_load_fast_conn_flag:
-	arg 1,temp
-	arg mem_mouse_fast_conn_flag,rega
-	arg MOUSE_FAST_CONN_FLAG_OFFSET,regb
-	branch iicd_read_eep_data
-p_mouse_store_fast_conn_flag:
-	arg 1,temp
-	arg mem_mouse_fast_conn_flag,rega
-	arg MOUSE_FAST_CONN_FLAG_OFFSET,regb
-	branch iicd_write_protect_eep_data
+p_g24_rf_laststa_synccnt_check:
+	disable user2
+	fetch 1,mem_24g_rf_last_sta
+	rtnne 1
+	fetch 1,mem_24g_sync_cnt
+	rtnne 0
+	jam 1,mem_24g_rf_work_stage
+	jam 4,mem_24g_max_retry
+	branch enable_user2
 
-p_mouse_fast_conn_init2:
-//	call p_mouse_le_addr_update
-//	fetch 6,mem_le_lap
-//	store 6,mem_le_normal_lap
-	jam 1,mem_le_switch_adv_timer
-	jam 1,mem_le_switch_adv_flag
-p_mouse_fast_conn_init:
-	jam 0x34,mem_xrecord_mode
-	setarg 0
-	invert pdata,pdata
-	store 6,mem_le_lap
-	rtn	
-endif	
+p_g24_rf_sync_cnt_check:
+	fetch 1,mem_24g_sync_cnt
+	branch p_g24_rf_hop_attemp,blank
+	increase -1,pdata
+	store 1,mem_24g_sync_cnt
+	jam 2,mem_24g_rf_work_stage
+	jam 4,mem_24g_max_retry
+	branch p_g24_ch
 
-p_mouse_set_gpio_control_sensor:
-//	fetch MOUSE_FLAG_LEN,mem_mouse_flag 
-//	rtnbit0 MOUSE_ENABLE_GPIO_CONTROL_ADC_SENSOR
-p_mouse_sensor_set_angle:
-	fetcht 1,mem_select_sensor_angle_gpio
-	call gpio_config_input
-	hfetch 1,core_gpio_pu0	//gpio5 pull up enable
-	set1 5,pdata
-	hstore 1,core_gpio_pu0
-	fetcht 1,mem_select_sensor_angle_gpio
-	call gpio_get_bit
-	call p_mouse_sensor_set_12CLK_angle,true
-	ncall p_mouse_sensor_set_3CLK_angle,true
-//	call p_mouse_sensor_set_12CLK_angle
-	fetcht 1,mem_select_sensor_angle_gpio
-	call gpio_config_output
-	hfetch 1,core_gpio_pu0	//gpio5 pull up disable
-	set0 5,pdata
-	hstore 1,core_gpio_pu0
-	fetcht 1,mem_select_sensor_angle_gpio
-	branch gpio_out_active
+p_g24_rf_hop_attemp:
+	jam 3,mem_24g_rf_work_stage
+	fetch 1,mem_24g_rf_hop_ch
+	nbranch p_g24_rf_hop_attemp_again,blank
+	jam 2,mem_24g_max_retry
+	branch p_g24_ch
 
-p_mouse_sensor_set_12CLK_angle:
-	jam MOUSE_12CLK_ANGLE,mem_config_sensor_angle
+p_g24_txdata_prep:
+	fetch 1,mem_24g_pairing_sm
+	bne STATE_24G_PAIRING_SUCCESS,p_g24_pairing_sm	
+p_g24_txdata_prep_packeage_data:
+	call p_g24_package_data
+p_g24_txdata_enable_tx:	
+	call p_g24_transmit_prep
+	jam ENSURE_ON_24G,mem_24g_ensure
 	rtn
 
-p_mouse_sensor_set_3CLK_angle:
-	jam MOUSE_3CLK_ANGLE,mem_config_sensor_angle
+p_g24_package_data:
+	fetch 2,mem_cb_24g_data
+	call callback_func
+	branch p_g24_accumulate_mouse_data,user
+	fetch 7,mem_24g_txbuf+1	//mouse data
+	rtn blank
+	branch enable_user	// retransmit
+p_g24_accumulate_mouse_data:
+	call p_mouse_data_xy_release
+	jam 0,mem_24g_abort_pac
+	add rega,1,pdata
+	store 1,mem_24g_datalen
+	call p_g24_transmit_rf_ctrl_clear
+	store 1,mem_24g_txbuf
+	ifetcht 1,contw
+	ifetch 1,regb
+	ior temp,pdata
+	istore 1,contw	//key
+	increase 1,regb
+	ifetch 4,regb
+	istore 4,contw	//x,y
+	increase 4,regb
+	arg mem_24g_txbuf+6,contw
+	arg 2,loopcnt
+p_g24_accumulation_loop:
+	ifetch 1,regb
+	ifetcht 1,contw	//wheel,twheel
+	iadd temp,pdata
+	istore 1,contw
+	increase 1,regb
+	loop p_g24_accumulation_loop
 	rtn
-	
-
-
-p_mouse_init_environment:
-	call app_initflag_check
-	branch p_mouse_eeprom_load_recon_info,zero
-//ifdef BLE	
-//	call p_le_addr_random_config
-//endif	
-	branch mouse_init_environment+2
-p_app_flag_store:
-	arg 2,temp
-	arg mem_timeup,rega
-	arg MOUSE_EEPROM_MODULE_INIT_FLAG,regb
-	branch iicd_write_protect_eep_data
 
-p_app_initflag_check:
-	arg 2,temp
-	arg mem_pdatatemp,rega
-	arg MOUSE_EEPROM_MODULE_INIT_FLAG,regb
-	branch app_initflag_check+4
-	
-p_mouse_eeprom_load_recon_info:
-	arg 30,temp
-	arg mem_device_flag,rega
-	arg MOUSE_INFO_EEPROM_OFFECT,regb
-	call iicd_read_eep_data
-p_mouse_select_reconn_device:
-	arg mem_device1_type,rega
-/*	
-	fetch 1,mem_device_flag
-	fetcht 1,mem_24g_device_number
-	isub temp,null
-	rtn zero
-	increase -1,pdata
-	mul32 pdata,29,pdata
-	iadd rega,rega
-*/	
-	ifetch 1,rega
-	store 1,mem_xrecord_mode
-//	beq REC_3_MODE,mouse_load_bt_device
-	beq REC_4_MODE,mouse_load_le_device
+p_g24_transmit_packet:
+	jam 0,mem_24g_retry
+p_g24_transmit_loop:
+	arg param_rx_setup,timeup
+	until clkn_rt,meet
+	call p_g24_transmit_receive_ack
+	fetch 1,mem_24g_no_ack	//tx noack
+	rtneq no_ack_24g
+	nbranch p_g24_retransmit,sync
+	nbranch p_g24_retransmit,user3
+	call p_g24_search_dongle_success
+	call p_g24_txbuf_clear
+	call p_g24_ackpayload_parse
+	call power_ctrl_pac_succ_incrs
+p_g24_transmit_next_packet:
+	fetch 1,mem_24g_pid
+	increase 1,pdata
+	store 1,mem_24g_pid
+	fetch 1,mem_24g_pairing_sm
+	bne STATE_24G_PAIRING_SUCCESS,p_g24_paring_mode_start
+	call p_g24_transmit_succ_rf_config
+p_g24_transmit_abandon:
+	setarg 0
+	store 4,mem_24g_ensure
+//	store 1,mem_24g_get_ack_fail
+	store 1,mem_24g_hop_pac_retry
+//	jam ENSURE_OFF_24G,mem_24g_ensure
 	rtn
 
+p_g24_txbuf_clear:
+	arg 4,loopcnt
+	arg mem_24g_txbuf,contw
+	branch memset0
 
+p_g24_paring_mode_start:
+	call power_ctrl_pac_succ_cnt_init
+	branch p_g24_paring_mode
 
-/*
-p_mouse_load_flash_info_cheak:
-	call mouse_load_flash_flag
-	fetch 2,mem_store_flag
-	arg EEPROM_INIT_FLAG,temp
-	isub temp,null
-	branch p_mouse_load_flash_device_info,zero
-	storet 2,mem_store_flag
-	call mouse_ble_init_address
-	branch mouse_store_flash_device_info
-
-p_mouse_load_flash_device_info:
-	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
-	call spid_read_flash
-	call mouse_select_reconn_device
-	fetch 4,mem_mouse_24g_addr
-	store 4,mem_24g_addr
+p_g24_transmit_receive_ack:
+	disable user3
+	call p_g24_transmit
+	
+ifdef RF_DEBUG
+	call test_gpio_low
+endif
+
+	fetch 1,mem_24g_no_ack
+	beq no_ack_24g,p_g24_transmit_no_ack	//tx no ack
+	force 0,radio_ctrl
+	fetch 4,mem_24g_addr
+	iforce access
+	fetcht 1,mem_last_freq
+	call set_freq_rx
+	call rf_rx_enable
+	call p_g24_receive_rxon
+	call p_g24_end_of_packet,user3
 	rtn
-*/
+p_g24_transmit_no_ack:
+	call p_g24_end_of_packet
+	branch p_g24_transmit_next_packet
 
+p_g24_retransmit:
+	fetch 1,mem_24g_abort_pac
+	nrtn blank
 
-p_mouse_wakeup_from_power:
-	fetch 1,mem_reconn_times_init
-	store 1,mem_reconn_times
-//	fetch 1,mem_config_function_enable
-//	rtnbit1 ENABLE_SELECT_DEVICE_BY_SWITCH
-p_mouse_start_24g_mode:
-//	fetch MOUSE_FLAG_LEN,mem_mouse_flag
-//	rtnbit0 MOUSE_ENABLE_24G
-	//fetch 1,mem_mouse_device_led_on_timer_init
-	//store 1,mem_mouse_device_led_on_timer_count
-	//jam 1,mem_mouse_g24_led_on_enable
-	call p_mouse_led_output_high
-	
-//	fetch 1,mem_wakup_from_power_flag
-//	bbit1 gpio_latch,p_g24_start_24g_mode
-//	fetch MOUSE_FLAG_LEN,mem_mouse_flag
-//	bbit1 MOUSE_ENABLE_AUTO_24G_PARING,p_g24_auto_pair_start
-//	call p_g24_factory_check
-//	branch p_g24_auto_pair_start,user
-	branch p_g24_auto_pair_start
+	fetch 1,mem_24g_get_ack_fail
+	increase 1,pdata
+	store 1,mem_24g_get_ack_fail
+	fetch 1,mem_24g_pairing_sm
+	bne STATE_24G_PAIRING_SUCCESS,p_g24_tx_paring_retry
+	fetcht 1,mem_24g_retry
+	increase 1,temp
+	storet 1,mem_24g_retry
+	fetch 1,mem_24g_max_retry
+	isub temp,pdata
+	nbranch p_g24_transmit_loop,blank
+	fetch 1,mem_24g_rf_work_stage
+	beq 3,p_g24_transmit_pac_fail_hop_stage3
+	fetch 1,mem_24g_hop_pac_retry
+	increase 1,pdata
+	store 1,mem_24g_hop_pac_retry
+	beq 2,p_g24_transmit_hop_pac_fail
+	call p_g24_hop_ch_enable
+	jam 1,mem_24g_max_retry
+	branch p_g24_transmit_packet
 
-p_g24_factory_check:
-	arg 2,loopcnt
+p_g24_tx_paring_retry:
+	fetch 1,mem_24g_get_ack_fail
+	rtnne 0xff
+	jam 0,mem_24g_get_ack_fail
+	branch p_g24_stop_g24_mode
+
+p_g24_tx_attempt_fail:
+	setarg 0
+	store 2,mem_24g_txfail_cnt
+p_g24_stop_g24_mode:
+	jam BT_EVT_24G_ATTEMPT_FAIL,mem_fifo_temp
+	branch ui_ipc_send_event
+
+p_g24_ackpayload_parse:
+	call p_g24_read_len_pid_crc
+	fetch 1,mem_24g_rxdata_length	//ack payload length 
+	rtn blank
+	iforce loopcnt
+	arg mem_24g_rxbuf+2,contr
+	arg mem_24g_rxpayload,contw	//ack payload buffer 
+	branch memcpy
+
+p_g24_pair_init:
+	jam TX_POWER_0DB,mem_tx_power
+	jam 0,mem_24g_pid
+	jam G24_PAIR_CH,mem_24g_ch
+	fetch 4,mem_24g_paring_addr
+//	branch p_g24_update_addr_and_synccrc8
+p_g24_update_addr_and_synccrc8:	
+	store 4,mem_24g_addr
+//output: 1BYTE crc8
+p_g24_syncword_crc8:
+	arg 0,rega
+	arg 4,loopcnt
 	arg mem_24g_addr,contr
-p_pdata_0xff_check:
-	call enable_user
-	setarg 0xffff
-p_pdata_0xff_check_loop:
-	ifetcht 2,contr
-	isub temp,null
-	ncall disable_user,zero
-	loop p_pdata_0xff_check_loop
-	rtn
+p_g24_syncword_crc8_loop:
+	ifetch 1,contr
+	iadd rega,rega
+	loop p_g24_syncword_crc8_loop
+	copy rega,pdata
+	store 2,mem_24g_syncword
+	fetch 1,mem_24g_syncword
+	fetcht 1,mem_24g_syncword+1
+	iadd temp,pdata
+	store 1,mem_24g_syncword_crc8
+	rtn	
 
-p_mouse_cb_fuction:
-ifdef BLE
-	setarg p_mouse_le
-	store 2,mem_cb_le_process
-	setarg p_le_mouse_bb_event_connect_complete
-	store 2,mem_cb_att_write
-endif	
-	setarg p_mouse_g24_package_data
-	store 2,mem_cb_24g_data
-	setarg p_mouse_before_lpm
-	store 2,mem_cb_before_lpm
-	setarg p_mouse_priority_bb_event
-	store 2,mem_cb_bb_event_process
-	setarg p_mouse_idle
-	store 2,mem_cb_idle_process
-	setarg p_mouse_before_hibernate
-	store 2,mem_cb_before_hibernate
-	setarg p_mouse_bb_event_timer
-	store 2,mem_cb_event_timer
+p_g24_pairing_sm:
+	fetch 1,mem_24g_ensure
+	beq ENSURE_ON_24G,enable_user
+	fetch 1,mem_24g_pairing_sm
+	beq STATE_24G_PAIRING_1,p_g24_pairing_sm_1
+	beq STATE_24G_PAIRING_2,p_g24_pairing_sm_2
+	beq STATE_24G_PAIRING_3,p_g24_pairing_sm_3
+	branch assert
+
+p_g24_pairing_sm_1:
+	jam STATE_24G_PAIRING_1_WAITING_ACK,mem_24g_pairing_sm
+	jam 0xaa,mem_24g_common_temp
+	branch p_g24_pairing_sm_common
+p_g24_pairing_sm_2:
+	jam STATE_24G_PAIRING_2_WAITING_ACK,mem_24g_pairing_sm
+	jam 0x55,mem_24g_common_temp
+	branch p_g24_pairing_sm_common
+p_g24_pairing_sm_3:
+	jam STATE_24G_PAIRING_3_WAITING_ACK,mem_24g_pairing_sm
+	jam 0x22,mem_24g_common_temp
+p_g24_pairing_sm_common:
+	fetch 1,mem_24g_data_type
+	and_into bits_data,pdata
+	store 1,mem_24g_common_temp+1
+	fetch 4,mem_24g_device_addr
+	store 4,mem_24g_common_temp+2
+p_g24_put_pairing_data_in_buff:
+	jam 0,mem_24g_common_temp+6
+	arg mem_24g_common_temp,rega
+	arg 7,temp
+	call p_g24_put_data_in_buff
+	call p_g24_txdata_enable_tx
+	branch enable_user
+
+p_g24_paring_mode:
+	fetch 1,mem_24g_pairing_sm
+	rtneq STATE_24G_PAIRING_SUCCESS
+	beq STATE_24G_PAIRING_1_WAITING_ACK,p_g24_pairing_sm_1_waiting_ack
+	beq STATE_24G_PAIRING_2_WAITING_ACK,p_g24_pairing_sm_2_waiting_ack
+	beq STATE_24G_PAIRING_3_WAITING_ACK,p_g24_pairing_sm_3_waiting_ack
 	rtn
 
-p_mouse_g24_package_data:
-	call mouse_g24_package_data
-	fetch 2,mem_mouse_z
-	rtn blank
-	branch p_g24_transmit_by_interrupt_enable
+
+p_g24_pairing_sm_1_waiting_ack:
+	jam STATE_24G_PAIRING_2,mem_24g_pairing_sm
+	branch p_g24_transmit_abandon
+p_g24_pairing_sm_2_waiting_ack:
+	jam STATE_24G_PAIRING_3,mem_24g_pairing_sm
+	branch p_g24_transmit_abandon
+p_g24_pairing_sm_3_waiting_ack:
+	jam STATE_24G_PAIRING_SUCCESS,mem_24g_pairing_sm
+	jam BT_EVT_24G_PAIRING_COMPLETE,mem_fifo_temp
+	call ui_ipc_send_event	
+	fetch 4,mem_24g_rxpayload+2
+	call p_g24_update_addr_and_synccrc8
+	branch p_g24_transmit_abandon
+
+p_g24_start_24g_mode:
+	call p_g24_factory_check
+	branch p_g24_auto_pair_start,user
+	set1 mark_24g,mark
+	fetch 1,mem_g24_conn_sm
+	set1 STATE_24G_RECONN,pdata
+	store 1,mem_g24_conn_sm
+	call p_g24_ch_syncword_crc8_init
+	branch p_g24_auto_pair_timeout_init
+
+p_g24_tx_attemp_data_prep:
+	jam 0xff,mem_24g_common_temp
+	fetch 1,mem_24g_data_type
+	store 1,mem_24g_common_temp+1
+	fetch 4,mem_24g_device_addr
+	store 4,mem_24g_common_temp+2
+	arg 6,temp
+	arg mem_24g_common_temp,rega
+	call p_g24_put_data_in_buff
+	branch p_g24_transmit_prep
 	
-p_mouse_le:
-	call le_fifo_check_nearly_full
-	nrtn blank
-ifdef BLE_FAST_CONN_ENABLE
-	fetch 1,mem_mouse_fast_conn_flag
-	beq 0xff,p_mouse_le_next
-endif
-	fetch 1,mem_le_connect_status_flag
-	and pdata,0x03,pdata
-	rtnne 0x03
-p_mouse_le_next:
-	fetch 1,mem_mouse_clear_sensor_data_flag
-	call p_mouse_clear_sensor_data,blank
-	fetch MOUSE_FLAG_LEN,mem_mouse_flag
-//	bbit1 MOSUE_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
-	call mouse_motion
-	nrtn user
-	call p_mouse_le_current_mult_update
-	call p_mouse_data_xy_release
-	call p_mouse_wheel_trigger
-	branch p_mouse_data_push
+p_g24_attemp_txdata_retry:
+	call p_g24_ch
+	rtn
+	branch p_g24_short_sleep
 
-p_mouse_le_current_mult_update:
-	fetch 1,mem_config_function_enable
-	rtnbit1 ENABLE_SENSOR_MOTION_PIN
-	jam 0,mem_lpm_mult
-	jam 20,mem_mouse_le_current_mult_timer
+p_g24_auto_pair_start:
+	set1 mark_24g,mark
+	fetch 1,mem_g24_conn_sm
+	set1 STATE_24G_PAIR,pdata
+	store 1,mem_g24_conn_sm
+p_g24_auto_pair_timeout_init:
+//	setarg G24_FIRST_DISCONN_NODATA_TIMER
+	fetch 2,mem_mouse_direct_timeout
+	store 2,mem_g24_stop_g24_mode_timeout
+	jam 0,mem_g24_stop_g24_mode
 	rtn
 
-p_mouse_wheel_trigger:
-	fetch 2,mem_mouse_z
-	rtn blank
-	jam 1,mem_mouse_wheel_trigger
-	jam 2,mem_mouse_wheel_trigger_timer
+p_g24_auto_pair_timeout_clear:
+	setarg 0
+	store 2,mem_g24_stop_g24_mode_timeout
+	jam 0,mem_g24_stop_g24_mode
 	rtn
-	
-p_mouse_clear_sensor_data:
-	call le_set_config_more_data
-	jam 1,mem_mouse_clear_sensor_data_flag
-	branch p_mouse_sensor_poweron
 
-p_mouse_idle:
-	call ui_check_paring_button
-	call p_mouse_dpi_check
-	branch mouse_wheel_check
+p_g24_pair_txdata_retry:
+	call p_g24_pair_txdata_switch
+	rtn
+	branch p_g24_short_sleep
 
-p_mouse_dpi_check:
-	fetcht 1,mem_dpi_button_gpio
-	call p_gpio_set_input_pd
-	fetcht 1,mem_dpi_button_gpio
-	call gpio_get_bit
-	branch p_mouse_dpi_up,true
-	call p_gpio_set_input_pu
-	branch mouse_dpi_down
-p_mouse_dpi_up:
-	call p_gpio_set_input_pu
-	branch mouse_dpi_up	
-	
-p_mouse_priority_bb_event:
-	copy regc,pdata
-	beq BT_EVT_24G_PAIRING_COMPLETE,p_mouse_24g_pairing_complete
-	beq BT_EVT_24G_ATTEMPT_FAIL,p_mouse_24g_attempt_fail
-	beq BT_EVT_24G_ATTEMPT_SUCCESS,mouse_no_data_timer_init
-ifdef BLE
-	beq BT_EVT_LE_CONNECTED,p_mouse_le_bb_event_connected
-	beq BT_EVT_LE_DISCONNECTED,p_mouse_bb_disconnected
-	beq BT_EVT_LE_ENC_INFO,p_mouse_le_enc_info
-	beq BT_EVT_LE_START_ENC,p_mouse_le_ll_start_encryt
-	beq BT_EVT_LE_PARSE_CONN_PAPA_UPDATE_RSP,p_mouse_le_conn_param_update_rsp_recieved
-endif
-	branch mouse_priority_bb_event+1
-
-ifdef BLE
-p_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 p_app_updata_le_param
-	branch p_mouse_le_conn_param_lpm_disable
-
-p_mouse_le_bb_event_connected:
-ifdef BLE_FAST_CONN_ENABLE
-	setarg 0
-	store 3,mem_le_switch_adv_flag
-	arg 3,loopcnt
-	arg mem_le_lap,contr
-	call p_pdata_0xff_check
-	ncall p_mouse_fast_conn_quit,user
-endif
-	jam 0,mem_mouse_start_discovery_enable
-	jam 0,mem_mouse_ble_led_on_enable
-	jam 0,mem_mouse_long_mult_flag
-	call p_mouse_data_init
-	branch mouse_le_bb_event_connected
-
-p_mouse_fast_conn_quit:
-//	setarg 0x50
-//	store 2,mem_mouse_direct_timer
-	call app_ble_store_reconn_info
-	jam 0x5a,mem_mouse_fast_conn_flag
-	branch p_mouse_store_fast_conn_flag
+p_g24_pair_txdata_switch:
+	fetch 1,mem_24g_auto_paring_switch
+	increase 1,pdata
+	and_into 3,pdata
+	store 1,mem_24g_auto_paring_switch
+	beq 0,p_g24_auto_pair_first_attemp
+	beq 1,p_g24_pair_init
+	beq 2,p_g24_auto_pair_all_powerful
+	beq 3,p_g24_pair_init
+	rtn
+	
+p_g24_auto_pair_first_attemp:
+	call p_mouse_tx_power_init
+	fetch 4,mem_24g_device_addr
+	store 4,mem_24g_addr
+	fetch 1,mem_24g_pair_current_ch_num
+	store 1,mem_24g_current_ch_number
+	call p_g24_ch_syncword_crc8_init
+	storet 1,mem_24g_pair_current_ch_num
+	rtn
 
-p_mouse_bb_disconnected:
-	setarg LE_INTERVAL_8_75MS
-	store 2,mem_le_interval_min
-	store 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 p_mouse_data_init
-	call le_clr_config_more_data
-	call mouse_bb_disconnected
-	fetch 1,mem_mouse_start_discovery_enable
-	rtn blank
-	branch p_check_51cmd_adv
+p_g24_ch_syncword_crc8_init:	
+	call p_g24_syncword_crc8
+	branch p_g24_ch
 
-p_mouse_le_enc_info:
-p_app_updata_le_param:
-	jam BT_CMD_LE_UPDATE_CONN,mem_fifo_temp
-	branch ui_ipc_send_cmd
+p_g24_auto_pair_all_powerful:
+	jam TX_POWER_PAIR,mem_tx_power
+	setarg 0x0f0f
+	store 2,mem_24g_addr
+	istore 2,contw
+	fetch 1,mem_24g_powerful_current_ch_num
+	store 1,mem_24g_current_ch_number
+	call p_g24_ch_syncword_crc8_init
+	storet 1,mem_24g_powerful_current_ch_num
+	rtn
+//p_g24_auto_pair_device_attemp:
+//	branch p_g24_auto_pair_first_attemp
 
-p_mouse_le_ll_start_encryt:
-	fetch 1,mem_mouse_le_reconnect_flag
-	beq 1,p_mouse_le_ll_reconn_start_encryt
-	jam 20,mem_le_start_encrypt_timer
-	branch p_mouse_le_ll_enable_start_enc_flag
+//p_g24_auto_pair_pair_attemp:
+//	branch p_g24_pair_init
 
-p_mouse_le_ll_reconn_start_encryt:
-	call p_app_updata_le_param
-	jam 20,mem_le_start_encrypt_timer
-p_mouse_le_ll_enable_start_enc_flag:
-	arg LL_START_ENC_FLAG,queue
-	branch mouse_le_enable_connect_flag
-endif
+//p_g24_auto_pair_all_powerful_attemp:
+//	branch p_g24_auto_pair_all_powerful
 
-p_mouse_24g_pairing_complete:
-	jam 1,mem_mouse_24g_enter_lpm_enable
+p_g24_check_51cmd_stop_24g:
+	set0 mark_24g,mark
+	jam STATE_24G_STOP,mem_g24_conn_sm	
+	call le_disable
+p_mouse_disable_g24_pairing_flag:
 	arg MOSUE_24G_PAIRING_FLAG,queue
-	call mouse_disable_function_flag
-	setarg 0
-	store 2,mem_24g_pairing_timer_count
-	jam 0,mem_mouse_move_flag
-	call mouse_read_sensor_common
-	call p_mouse_tx_power_init
-	call p_mouse_set_24g_addr_eeprom	//store rx dongle addr to eeprom
-	branch iicd_write_protect_eep_data
+	branch mouse_disable_function_flag
 
-p_mouse_set_24g_addr_eeprom:
-	arg mem_24g_addr,rega
-	arg MOUSE_G24_ADDR_EEPROM_OFFECT,regb
-	arg 4,temp
+p_g24_put_data_in_buff:
+	storet 1,mem_24g_datalen
+	copy temp,loopcnt
+	arg mem_24g_txbuf,contw
+	copy rega,contr
+	branch memcpy
+
+p_g24_read_len_pid_crc:
+//read control
+	fetch 1,mem_24g_rxbuf+1
+	rshift3 pdata,pdata
+	store 1,mem_24g_rxdata_length
+//get crc
+	increase 1,pdata
+	arg mem_24g_rxbuf+1,contr
+	iadd contr,contr
+	ifetch 3,contr
+	store 3,mem_24g_sta_crc
+//read pid
+	fetch 1,mem_24g_rxbuf+1
+	rshift pdata,pdata
+	and pdata,0x03,pdata
+	store 1,mem_24g_sta_pid
 	rtn
 
-p_mouse_24g_attempt_fail:
-	jam G24_TX_TIMER_INT_DISABLE,mem_24g_transmit_by_interrupt
-	call p_mouse_tx_power_init
-	call p_g24_check_51cmd_stop_24g
-	jam 0,mem_link_key_exists
-	fetch 1,mem_mouse_mode_swtich_step
-	beq 1,p_g24_start_24g_mode
-ifdef BLE_FAST_CONN_ENABLE
-	fetch 1,mem_mouse_fast_conn_flag
-	beq 0xff,p_mouse_24g_attempt_fail_next
+p_g24_transmit_prep:
+ifdef P24G_LOG
+	fetch 1,mem_24g_paccnt
+	increase 1,pdata
+	store 1,mem_24g_paccnt
 endif
-	call p_mouse_eeprom_load_recon_info
-//	arg 3,loopcnt
-//	arg mem_device1_addr,contr
-//	call p_pdata_0xff_check
-//	branch p_mouse_null_enter_hibernate_count,user
-p_mouse_24g_attempt_fail_next:
-//	branch p_mouse_long_button_bt_discovery
-	branch p_mouse_check_reconn_target
 
-p_mouse_null_enter_hibernate_count:	//ble never connected
-	jam 1,mem_mouse_null_enter_hibernate_flag
-	jam 40,mem_mouse_null_enter_hibernate_timer	//lmr 3s
+// total length
+	fetch 1,mem_24g_datalen
+	increase 2,pdata
+	store 1,mem_24g_txlen
+// data type
+	fetch 1,mem_24g_data_type
+	store 1,mem_24g_txpayload
+//prepare 5bit payload length, 2bit PID, 1bit NO_ACK
+	fetch 1,mem_24g_datalen
+	lshift3 pdata,pdata
+	fetcht 1,mem_24g_pid
+	and temp,0x03,temp
+	lshift temp,temp
+	ior temp,pdata
+	fetcht 1,mem_24g_no_ack
+	iadd temp,pdata
+	istore 1,contw
+//prepare payload data
+	fetch 1,mem_24g_datalen
+	iforce loopcnt
+	arg mem_24g_txbuf,contr
+	branch memcpy
+
+p_g24_ch:
+	fetcht 1,mem_24g_current_ch_number
+	call p_g24_ch_map_size
+	storet 1,mem_24g_current_ch_number
 	rtn
 
+p_g24_ch_map_size:
+	call p_g24_ch_calc
+	increase 1,temp
+	and_into 3,temp //map size =4
+	rtn
+	
+p_g24_ch_calc:
+	fetch 1,mem_24g_addr	
+	and_into 0x03,pdata
+	mul32 pdata,4,rega			//24addr low bit0 bit1 ,00-map1,01-map2,10-map3,11-map4
+	setarg mem_24g_ch_map1
+	iadd rega,pdata
+	iadd temp,contr
+	ifetch 1,contr
+	store 1,mem_24g_ch
+	rtn
 
+p_g24_prep:
+	disable enable_crc
+	disable enable_white
+	setarg 0x555555
+	iforce crc24_init
+	fetch 1,mem_24g_ch
+	reverse pdata,temp
+	set1 1,temp
+	rshift temp,white_init
+	rtn
 
-p_mouse_before_hibernate:
-	enable user
-	hfetch 4,0x8138
-	setflag user,26,pdata
-	hstore 4,core_lpm_reg
-	call lpm_write_ctrl
-	call p_mouse_sensor_powerdown
-	call disable_authrom
-	call mouse_devce_led_off
-	call mouse_before_hibernate_wheel_gpio_set
-	call p_mouse_setgpio_lpm_before
-	fetcht 1,mem_select_sensor_angle_gpio
-	branch gpio_clr_wake
+//p_g24_receive_packet:
+//	call le_enable
+//	fetch 4,mem_24g_addr
+//	iforce access
+//	call set_sync_on
+//	fetcht 1,mem_24g_ch
+//	call set_freq_rx
+//	setarg param_pll_setup
+//	call sleep
+//	call rf_rx_enable
+p_g24_receive_rxon:
 
+ifdef RF_DEBUG
+	call test_h_l_h
+endif
 
+	call p_g24_prep
+	disable user3
+	enable decode_fec0
+	enable is_rx
+	disable is_tx
+	enable swfine
+	fetch 2,mem_24g_rx_window
+	iforce stop_watch
+	correlate null,timeout
+	nbranch p_g24_sync_timeout,sync
 
-p_mouse_bb_event_timer:
-ifdef ADC_ENABLE
-	call p_mouse_adc_read
-	call p_mouse_low_voltage_led_timer
-endif
-ifdef BLE_FAST_CONN_ENABLE
-	call p_mouse_le_switch_adv_timer
+ifdef RF_DEBUG
+	call test_gpio_low
+	call test_gpio_high
 endif
-	call p_mouse_24g_long_sleep_param_update_timer
-	call p_mouse_le_current_mult_update_timer
-	call p_mouse_wheel_trigger_timer
-//	call p_mouse_null_enter_hibernate_check
-	call p_mouse_bt_discovery_check
-	call mouse_check_discovery_timeout_timer
-	call p_mouse_check_direct_timeout_timer
-	call mouse_check_no_data_timeout_timer
-	
-	call p_mouse_device_ble_led_timer
-	branch p_mouse_le_enable_att_list_timer
 
-ifdef ADC_ENABLE
-p_mouse_low_voltage_led_timer:
-	fetch 1,mem_adc_power_flag
-	bbit1 0,p_mouse_low_voltage_led_blink
-	jam 1,mem_lpm_mode
-	fetch 1,mem_adc_low_volatage_led_timer_count
-	nbranch p_mouse_clear_low_voltage_led_state,blank
-	rtn	
-p_mouse_clear_low_voltage_led_state:
-	jam 0,mem_adc_low_volatage_led_timer_count
-	fetcht 1,mem_config_low_voltage_alarm_gpio
-	branch gpio_out_inactive
-	
-p_mouse_low_voltage_led_blink:
-	jam 0,mem_lpm_mode
-	fetch 1,mem_config_low_voltage_alarm_gpio
-	store 1,mem_mouse_struct_led_gpio
-	fetch 1,mem_adc_low_volatage_led_timer_count
-	pincrease 1
-	store 1,mem_adc_low_volatage_led_timer_count
-	sub pdata,10,null
-	ncall mouse_adc_low_volatage_led_timer_count_clean,positive
-	div pdata,2
-	call wait_div_end
-	remainder pdata
-	nbranch mouse_low_voltage_led_on,blank
-	branch mouse_low_voltage_led_off 	
-endif
-ifdef BLE_FAST_CONN_ENABLE
-p_mouse_le_switch_adv_timer:
-	fetch 1,mem_le_switch_adv_flag
-	rtn blank
-	arg mem_le_switch_adv_timer,regc
-	arg p_mouse_le_switch_adv,regb
-	branch timer_single_step
-p_mouse_le_switch_adv:
-	jam 1,mem_le_switch_adv_timer
-	fetch 1,mem_le_switch_adv_count
-	increase 1,pdata
-	and_into 1,pdata
-	store 1,mem_le_switch_adv_count
-	beq 0,p_check_51cmd_adv
-	beq 1,p_mouse_check_fast_conn_adv_start
+	disable decode_fec0
+	enable decode_fec1
+	enable enable_white
+	enable enable_crc
+	call p_g24_receive_byte
+	store 1,mem_24g_get_syncword_crc8
+	fetcht 1,mem_24g_syncword_crc8
+	isub temp,null
+	nbranch p_g24_end_of_packet,zero
+	call p_g24_receive_byte
+	store 1,mem_24g_rxbuf	//device id
+	fetch 1,mem_24g_mode
+	sub pdata,rx_24g,null
+	branch p_g24_receive_skip,zero
+	fetch 1,mem_24g_rxbuf
+	fetcht 1,mem_24g_data_type
+	icompare bits_data,temp
+	nbranch p_g24_end_of_packet,true
+p_g24_receive_skip:
+	call p_g24_receive_byte
+	istore 1,contw
+	rshift3 pdata,pdata
+	and pdata,0x1f,loopcnt	//max payload: 32bytes
+	branch p_g24rx_nopayload,zero
+p_g24rx_loop:
+	call p_g24_receive_byte
+	istore 1,contw
+	loop p_g24rx_loop
+p_g24rx_nopayload:
+ifdef MOUSE
+	//receive rssi hex
+	copy contw,rega
+	call p_g24_receive_byte
+	store 1,mem_rssi_hex_received
+	copy rega,contw
+endif
+	parse demod,bucket,24
+	enable swfine
+	arg param_sifs,stop_watch	
+	rshift32 pdata,pdata
+	rshift16 pdata,pdata
+	istore 3,contw
+	disable decode_fec1
+ifdef DONGLE
+	call save_rssi
+endif	
+	branch p_g24_end_of_packet,crc_failed
+
+ifdef RF_DEBUG
+	call test_gpio_low
+	call test_gpio_high
+endif
+
+	enable user3
+	fetch 1,mem_last_freq
+	add pdata,0,rega
+	call rf_write_freq
+	disable decode_fec0
+	call set_sync_on
+ifdef DONGLE
 	rtn
 endif
-p_mouse_wheel_trigger_timer:
-	arg mem_mouse_wheel_trigger_timer,regc
-	arg p_mouse_wheel_trigger_disable,regb
-	branch timer_single_step
-p_mouse_wheel_trigger_disable:
-	jam 0,mem_mouse_wheel_trigger
+ifdef MOUSE
+	fetch 1,mem_rssi_hex_received
+	call p_rssi_signal
+endif
 	rtn
 
-p_mouse_24g_long_sleep_param_update_timer:
-	arg mem_24g_long_sleep_param_update_timer,regc
-	arg p_mouse_24g_long_sleep_normal_param,regb
-	branch timer_single_step
-p_mouse_24g_long_sleep_normal_param:
-	setarg G24_LONG_SLEEP_STEP2
-	store 3,mem_24g_enter_hibernate
-	jam 1,mem_mouse_long_mult_flag
+p_g24_receive_byte:
+	parse demod,bucket,8
+	rshift3 pwindow,pdata
 	rtn
 	
-ifdef BLE
-p_mouse_le_current_mult_update_timer:
-	arg mem_mouse_le_current_mult_timer,regc
-	arg p_mouse_le_current_mult_reinit,regb
-	branch timer_single_step
-p_mouse_le_current_mult_reinit:
-	fetch 1,mem_lpm_mult_init
-	store 1,mem_lpm_mult
-	jam 1,mem_mouse_long_mult_flag
+p_g24_sync_timeout:
+//ifdef DONGLE
+//	call p_rssi_noise
+//endif
+//	branch p_g24_end_of_packet
+p_g24_end_of_packet:
+	disable encode_fec1
+	disable decode_fec1
+	call end_of_packet
+ifdef RF_DEBUG
+	call test_gpio_low
+endif
 	rtn
 
-p_mouse_le_enable_att_list_timer:
-	arg mem_le_start_encrypt_timer,regc
-	arg mouse_le_write_enable,regb
-	branch timer_single_step	
+p_g24_set_freq_tx:
+	call set_sync_on
+	fetcht 1,mem_24g_ch
+	branch set_freq_tx
 
-p_mouse_bt_discovery_check:
-	fetch 1,mem_config_function_enable
-	bbit1 ENABLE_BT_BUTTON,mouse_bt_discovery_by_button
-p_mouse_bt_discovery_commbination_key:
-	fetch 1,mem_mouse_dpi_button_state
-	branch p_mouse_bt_discovery_commbination_key_down,blank
-	call p_mouse_check_key_gpio
-	beq MOUSE_LMR_BUTTON,p_mouse_bt_discovery_commbination_key_down
-	branch mouse_bt_discovery_commbination_key_up
-p_mouse_bt_discovery_commbination_key_down:
-	fetch 1,mem_device_flag
-	rtneq MODE_24G_DEVICE
-	jam 40,mem_mouse_null_enter_hibernate_timer
-	call p_mouse_bt_discovery_timer
-	branch mouse_bt_discovery_commbination_key_down+1
+p_g24_transmit:
+	call le_enable
+	fetch 4,mem_24g_addr
+	iforce access
+	call p_g24_prep
+	call p_g24_set_freq_tx
+	set1 TXGFSK,radio_ctrl
+	enable encode_fec0
+	enable is_tx
+	disable is_rx
 
-p_mouse_bt_discovery_timer:
-	arg mem_combination_ui_button_count,regc
-	arg p_mouse_long_button_bt_discovery,regb
-	branch timer_single_step
+ifdef RF_DEBUG
+	call test_gpio_high
+endif
 	
+	rshift16 access,pdata
+	rshift8 pdata,pdata
+	rshift4 pdata,pdata
+	inject mod,40
+	disable encode_fec0
+	enable encode_fec1
+	enable enable_white
+	enable enable_crc
+	fetch 1,mem_24g_syncword_crc8
+	inject mod,8
+	fetch 1,mem_24g_txlen
+	iforce loopcnt
+	arg mem_24g_txpayload,contr
+p_g24tr_loop:
+	ifetch 1,contr
+	inject mod,8
+	loop p_g24tr_loop
+ifdef DONGLE
+	fetch 1,mem_rssi_hex
+	inject mod,8
+endif
 
+ifdef P24G_LOG	
+	fetch 1,mem_tx_power
+	inject mod,8
+	fetch 1,mem_rssi_avg_received
+	inject mod,8
+	fetch 1,mem_24g_paccnt
+	inject mod,8
+endif
 
-p_mouse_check_direct_timeout_timer:
-	fetch 1,mem_mouse_ble_reconn_enable
-	rtn blank
-	fetch 1,mem_mouse_direct_timer
-	branch p_mouse_check_direct_timeout,blank
-	increase -1,pdata
-	store 1,mem_mouse_direct_timer
+	enable enable_parity
+	inject mod,24	//crc
+	disable enable_parity
+	until null,tx_clear
+	nop 100
+	disable encode_fec0
+	disable encode_fec1
 	rtn
 
-p_mouse_check_direct_timeout:
-//	call app_ble_stop_direct_adv
-	call mouse_stop_discovery
-	jam 0,mem_mouse_ble_reconn_enable
-	branch p_mouse_long_button_bt_discovery
-
-
-/*
-p_mouse_bt_discovery_check:
-	fetch 1,mem_config_function_enable
-	bbit1 ENABLE_BT_BUTTON,mouse_bt_discovery_by_button
-p_mouse_bt_discovery_commbination_key:
-	fetch 1,mem_mouse_dpi_button_state
-	branch p_mouse_bt_discovery_commbination_key_down,blank
-	call p_mouse_check_key_gpio
-	beq MOUSE_LMR_BUTTON,p_mouse_bt_discovery_commbination_key_down
-	branch mouse_bt_discovery_commbination_key_up
-p_mouse_bt_discovery_commbination_key_down:
-	jam 40,mem_mouse_null_enter_hibernate_timer
-	call p_mouse_bt_discovery_timer
-	branch mouse_bt_discovery_commbination_key_down+1
-	
-p_mouse_bt_discovery_timer:
-	arg mem_combination_ui_button_count,regc
-	arg p_mouse_long_button_bt_discovery,regb
-	branch timer_single_step
+p_g24_timer_check:
+	call disable_user
+	fetcht 4,mem_24g_tx_btclk
+	copy clkn_bt,pdata
+	isub temp,null
+	ncall g24_timer_timeout,positive
+	copy pdata,regb
+	fetch 4,mem_24g_tx_btclk
+	fetcht 1,mem_24g_interval
+	iadd temp,temp
+	copy regb,pdata
+	isub temp,null
+	nrtn positive
+	set0 28,pdata
+	store 4,mem_24g_tx_btclk
+	branch enable_user
 
-*/
-	
-p_mouse_long_button_bt_discovery:
-	call p_mouse_le_adv_data_update
-	branch mouse_long_button_bt_discovry
+//p_rssi_noise:
+//	call save_rssi
+//	rtn blank
+//	fetcht 1,mem_rssi_noise_index
+//	arg mem_rssi_noise_buffer,rega
+//	call p_rssi_store
+//	storet 1,mem_rssi_noise_index
+//	rtn
+	
+//p_rssi_store:
+//	copy rega,pdata
+//	iadd temp,contw
+//	fetch 1,mem_rssi
+//	istore 1,contw
+//	increase 1,temp
+//ifdef DONGLE
+//	and_into RSSI_BUF_LEN_NOISE,temp
+//endif
+//ifdef MOUSE
+//	and_into RSSI_BUF_LEN_SIGNAL,temp
+//endif
+//	rtn
+p_rssi_average:
+	arg 0,temp
+ifdef DONGLE
+	arg RSSI_BUF_LEN_NOISE+1,loopcnt
 endif
-
-/*
-p_mouse_null_enter_hibernate_check:
-	fetch 1,mem_mouse_null_enter_hibernate_flag
-	rtn blank
-	fetch 1,mem_mouse_null_enter_hibernate_timer
-	branch p_mouse_null_enter_hibernate,blank
-	increase -1,pdata
-	store 1,mem_mouse_null_enter_hibernate_timer
-	rtn
-p_mouse_null_enter_hibernate:
-	jam 0,mem_mouse_null_enter_hibernate_flag
-	branch app_enter_hibernate
-*/	
-
-p_mouse_device_ble_led_timer:
-	fetch 1,mem_mouse_ble_led_on_enable
-	nbranch p_mouse_device_ble_led_blink,blank
-	fetch 1,mem_mouse_ble_reconn_enable
-	rtn blank
-	fetch 1,mem_mouse_device_led_on_timer_count
-	rtn blank
-	increase -1,pdata
-	store 1,mem_mouse_device_led_on_timer_count
-	nrtn blank
-	fetch 1,mem_mouse_device_led_on_timer_init
-	store 1,mem_mouse_device_led_on_timer_count 
-	branch p_mouse_device_ble_led_check
-
-p_mouse_device_ble_led_blink:
-	fetch 2,mem_mouse_discovery_timer
-	div pdata,2
+ifdef MOUSE
+	arg RSSI_BUF_LEN_SIGNAL+1,loopcnt
+endif
+	copy rega,contr
+ifdef DONGLE
+	branch rssi_average_loop
+endif
+ifdef MOUSE
+p_rssi_average_loop:
+	ifetch 1,contr
+	iadd temp,temp
+	loop p_rssi_average_loop
+	rshift3 temp,pdata
+	copy pdata,temp
+	rtnmark0 mark_24g
+	//2BCD
+	div pdata,10
 	call wait_div_end
-	remainder pdata
-	branch p_mouse_device_ble_led_check,blank
+	quotient pdata
+	lshift4 pdata,pdata
+	remainder temp
+	ior temp,temp
+	rtn
+endif
 	rtn
 
-p_mouse_device_ble_led_check:
-	fetch 1,mem_device_led_blink_flag
-	beq 1,p_mouse_led_output_low_before
-	beq 2,p_mouse_device_state_led_off_before
-	rtn
-p_mouse_led_output_low_before:
-	jam 2,mem_device_led_blink_flag
-	branch p_mouse_led_output_low
-p_mouse_device_state_led_off_before:
-	jam 1,mem_device_led_blink_flag
-	branch p_mouse_led_output_high
+endif
 
-//p_mouse_device_g24_led_timer:
-//	fetch 1,mem_mouse_g24_led_on_enable
-//	rtn blank
-//	jam 0,mem_lpm_mode
-//	call p_mouse_led_output_low
-//	branch p_mouse_device_led_on_comm
-
-p_mouse_led_output_init:
-	fetcht 1,mem_device_state_led_gpio
-	branch gpio_config_output
-p_mouse_led_output_high:
-	fetcht 1,mem_device_state_led_gpio
-	branch gpio_out_active
-p_mouse_led_output_low:
-	fetcht 1,mem_device_state_led_gpio
-	branch gpio_out_inactive
-
-
-ifdef ADC_ENABLE
-p_mouse_adc_read:
-	fetch MOUSE_FLAG_LEN,mem_mouse_flag
-	rtnbit0 MOUSE_ENABLE_ADC
-	fetch 1,mem_adc_read_timer
-	increase 1,pdata
-	store 1,mem_adc_read_timer
-	sub pdata,10,null              //1s read adc
-	rtn positive
-	jam 0,mem_adc_read_timer
-	call p_adc_set_mode
-	call vdd_calculate_by_mode
-	store 2,mem_mouse_vdd_now_vol
-	arg mem_mouse_vdd_calculate_set,rega
-	call p_adc_bat_percent_lowpower_out
-	fetch 1,mem_adc_power_flag
-	bbit1 1,app_enter_hibernate
-	bbit0 0,mouse_adc_no_low_voltage
-	branch mouse_adc_low_voltage
-	
-p_adc_set_mode:
-ifdef ADC_GPIO
-	jam 0x02,mem_adc_config_flag
-endif
-ifdef ADC_VINLPM
-	jam 0,mem_adc_config_flag
-	setarg 0x012c						//3v
-	store 2,mem_mouse_vdd_full_vol
-	setarg 0xb4						//1.8v
-	store 1,mem_mouse_vdd_empty_vol
-	setarg 0xc8						//2v
-	store 1,mem_mouse_vdd_low_vol
-endif
-	fetch 1,mem_adc_config_flag
-	beq ADC_CONFIG_GPIO,p_adc_check_gpio
-	branch adc_set_mode+1
-p_adc_check_gpio:
-	hfetch 1,core_gpio_pu0	//gpio5 pull up disable
-	set0 5,pdata
-	hstore 1,core_gpio_pu0
-	call adc_check_gpio
-	hfetch 1,core_gpio_pu0	//gpio5 pull up enable
-	set1 5,pdata
-	hstore 1,core_gpio_pu0
+p_mouse_before_lpm:
+	rtnmark1 mark_24g
+	call p_mouse_le_txbuff_save
+	call p_mouse_setgpio_lpm
+	fetch 1,mem_context
+	bbit0 state_inconn,p_clear_wake
+	fetch 1,mem_lpm_current_mult
+	nrtn blank
+p_clear_wake:
+	setarg 0
+	store 8,mem_gpio_wakeup_low
 	rtn
 
-p_adc_bat_percent_lowpower_out:
-	ifetch 8,rega
-	store 8,mem_pdatatemp
-	fetcht 2,mem_pdatatemp+2	//shutdown voltage 0.9v
-	fetch 2,mem_pdatatemp+6		//now voltage
-	isub temp,null
-	nbranch adc_set_no_power_flag,positive
-	fetcht 2,mem_pdatatemp+4	//low voltage 1.0v
-	isub temp,null
-	nbranch adc_set_low_power_flag,positive
-p_adc_clear_low_power_flag:
-	fetch 1,mem_adc_power_flag
-	set0 0,pdata
-	store 1,mem_adc_power_flag
-	rtn	
-endif
-/*
-p_mouse_dpi_led_blink_delay_timer:
-	arg mem_mouse_dpi_led_delay_count,regc
-	arg p_mouse_dpi_led_setting,regb
-	branch timer_single_step	
-
-p_mouse_dpi_led_setting:
-	fetch 1,mem_dpi_led_gpio
-	store 1,mem_mouse_struct_led_gpio
-	setarg LED_DPI_BLINK_FIXED
-	store 2,mem_mouse_on_time
-	store 2,mem_mouse_off_time
-	arg 0,rega
-	fetcht 1,mem_mouse_dpi_blink_count
-	//increase 1,temp
-	storet 1,mem_mouse_blink_count
-	jam UI_LED_STATE_BLINK_START,mem_mouse_led_type
+p_mouse_setgpio_lpm:
+	call p_mouse_set_sdio_high
+	call p_clear_wake
+p_mouse_setgpio_lpm_before:
+	call mouse_lpm_before_common
+	hfetch 4,core_gpio_oe0
+	hfetcht 4,core_gpio_pu0
+	ior temp,temp
+	invert temp,temp
+	hstoret 4,core_gpio_pd0
 	rtn
-*/
-p_mouse_seting_dpi:
-	call mosue_dpi_led_blink_init
-p_mouse_seting_dpi_sensor_type:
-	fetch 1,mem_config_sensor_type
-	beq P3610,mouse_seting_3610_dpi
-	beq P3212,mouse_seting_3212_dpi
-	beq P3065_XY,p_mouse_seting_3065XY_dpi
-	beq P3204,p_mouse_seting_3065XY_dpi
-p_mouse_seting_3205_dpi:
-	branch p_mouse_seting_3065XY_dpi
 
-		
-p_mouse_seting_3065XY_dpi:
-	fetch 1,mem_mouse_dpi
-	beq MOUSE_DPI_LEVEL1,p_mouse_3065xy_set_cpi2
-	beq MOUSE_DPI_LEVEL2,p_mouse_3065xy_set_cpi3
-	beq MOUSE_DPI_LEVEL3,p_mouse_3065xy_set_cpi4
-	beq MOUSE_DPI_LEVEL4,p_mouse_3065xy_set_cpi1
-p_mouse_3065xy_set_cpi3:
-	jam 2,mem_mouse_dpi_blink_count
-	fetch 1,mem_3065xy_dpi_1
-	branch mouse_p3205_dpi
-p_mouse_3065xy_dpi_recount:
-	jam MOUSE_DPI_LEVEL3,mem_mouse_dpi
-	rtn
-p_mouse_3065xy_set_cpi1:
-	jam 1,mem_mouse_dpi_blink_count
-	fetch 1,mem_3065xy_dpi_1
-	branch mouse_p3205_dpi
-p_mouse_3065xy_set_cpi2:
-	fetch 1,mem_3065xy_dpi_2
-	branch mouse_p3205_dpi	
-p_mouse_3065xy_set_cpi4:
-	jam 3,mem_mouse_dpi_blink_count
-	fetch 1,mem_3065xy_dpi_4
-	branch mouse_p3205_dpi
+p_mouse_set_sdio_high:
+	fetch 1,mem_mouse_init_sensor_reset_flag
+	rtn blank
+	branch p_mouse_seting_dpi_sensor_type// make sdio high to make 100uA less	
 
-p_mouse_motion:
-	disable user
-	setarg 0
-	store 6,mem_mouse_x
-	call p_mouse_cheak_sensor_data
-	call mouse_zwheel
-	call mouse_t_zwheel
-	call p_mouse_key
-	branch mouse_motion+8
+p_device_init:
+ifdef DEBUGLOG
+	call debuglog_init
+ifdef DEBUGLOG_STATUS
+	setarg DEBUGLOG_DTYPE_STATUS
+	store 2,mem_debuglog_datatype
+	setarg STATUS_LPM_WAKE
+	store 2,mem_debuglog_dataval
+	call debuglog_push
+endif
+endif
+	call app_lpm_mult_enable
+	branch p_device_init_common,wake
+ifdef DEBUGLOG
+ifdef DEBUGLOG_STATUS
+	setarg DEBUGLOG_DTYPE_STATUS
+	store 2,mem_debuglog_datatype
+	setarg STATUS_CODE_WAKE
+	store 2,mem_debuglog_dataval
+	call debuglog_push
+endif
+endif
+ifdef BLE
+	call p_mouse_data_init
+endif
+	fetch 1,mem_tx_power
+	store 1,mem_tx_power_temp
+	call power_ctrl_pac_succ_cnt_init
+	fetch 1,mem_ui_button_timeout
+	store 1,mem_combination_ui_button_count	//combination key timer init
+	call mouse_bt_discovery_button_down_disable
+	fetch 6,mem_le_lap
+	store 6,mem_le_normal_lap
+p_device_init_common:
+	call p_mouse_init
+	branch enable_authrom
 
-p_mouse_key:
-	call p_mouse_check_key_gpio
-	branch mouse_key+1
+p_mouse_init:
+	ncall p_mouse_setting_config,wake
+	call p_mouse_spi_init
+	rtn wake
+ifdef RF_DEBUG
+	call test_gpio_init
+endif
+ifdef MOUSE_SMOOTHER	
+	call p_drawing_optima_init
+endif
+	call p_mouse_cb_fuction
+ifdef G24
+//	fetch 1,mem_power_on_flag
+//	bbit1 2,p_mouse_skip_24g_pair
+//	call p_mouse_check_key_gpio
+//	beq MOUSE_LM_BUTTON,p_mouse_24g_pairing_button
+//p_mouse_skip_24g_pair:
+endif
+	branch p_mouse_wakeup_from_power
 
-p_mouse_check_key_gpio:
-	arg 0,rega
-	call p_mouse_check_lkey_gpio
-	call p_mouse_check_rkey_gpio
-	call p_mouse_check_mkey_gpio
-	call p_mouse_check_skey_gpio
-	copy rega,pdata
-	rtn
-p_mouse_check_skey_gpio:
-	fetch 1,mem_bk_button_gpio
-	rtneq GPIO_DISABLE
-	call p_mouse_check_bk_key_gpio
-	branch p_mouse_check_fw_key_gpio
-	
-p_mouse_check_lkey_gpio:
-	fetcht 1,mem_lbutton_gpio
-	call p_gpio_set_input_pu
-	fetcht 1,mem_lbutton_gpio
-	call gpio_get_bit
-	setflag true,0,rega			//true = 1,input low level
-	rtn
-p_mouse_check_rkey_gpio:
-	fetcht 1,mem_rbutton_gpio
-	call p_gpio_set_input_pu
-	fetcht 1,mem_rbutton_gpio
-	call gpio_get_bit
-	setflag true,1,rega			//true = 1,input low level
-	rtn
-p_mouse_check_mkey_gpio:
-	fetcht 1,mem_mbutton_gpio
-	call p_gpio_set_input_pu
-	fetcht 1,mem_mbutton_gpio
-	call gpio_get_bit
-	setflag true,2,rega			//true = 1,input low level
-	rtn
-p_mouse_check_bk_key_gpio:
-	fetcht 1,mem_bk_button_gpio
-	call p_gpio_set_input_pd
-	fetcht 1,mem_bk_button_gpio
-	call gpio_get_bit
-	nsetflag true,3,rega
-	branch p_gpio_set_input_pu
-p_mouse_check_fw_key_gpio:
-	fetcht 1,mem_fw_button_gpio
-	call p_gpio_set_input_pd
-	fetcht 1,mem_fw_button_gpio
-	call gpio_get_bit
-	nsetflag true,4,rega
-	branch p_gpio_set_input_pu
+p_mouse_check_reconn_target:
+	call p_mouse_tx_power_init
+	fetch 1,mem_xrecord_mode
+ifdef CLASSIC_BT
+	beq REC_3_MODE,p_mouse3_0_check_reconn_target
+endif
+ifdef BLE
+	beq REC_4_MODE,p_mouse4_0_check_reconn_target
+endif
+	//enter hibernate if it is in its factory state
+	branch app_enter_hibernate
 
-p_gpio_set_input_pd:
-	set0 gpio_active_bit,temp
-	arg core_gpio_pu0,contw
-	call gpio_set_bit
-	set1 gpio_active_bit,temp
-	arg core_gpio_pd0,contw
-	call gpio_set_bit
-	set0 gpio_active_bit,temp
-	arg core_gpio_oe0,contw
-	branch gpio_set_bit
+p_mouse_tx_power_init:
+	fetch 1,mem_tx_power_temp
+	store 1,mem_tx_power
+	rtn	
 
-p_gpio_set_input_pu:
-	set1 gpio_active_bit,temp
-	arg core_gpio_pu0,contw
-	call gpio_set_bit
-	set0 gpio_active_bit,temp
-	branch p_gpio_set_input_pd+4
+ifdef CLASSIC_BT
+p_mouse3_0_check_reconn_target:
+	fetch 6,mem_hci_plap
+	branch app_bt_start_discovery_short,blank
+	branch mouse3_0_check_reconn_target+3
+endif	
 
-p_mouse_cheak_sensor_data:
-	fetch 1,mem_config_sensor_type
-	beq P3212,p_mouse_p3212_sensor_motion
-	beq P3610,mouse_p3610_sensor_motion
-p_mouse_p32xx_sensor_motion:
-	call mouse_clear_sensor_data
-	disable user
-	fetch 1,mem_config_function_enable
-	bbit0 ENABLE_SENSOR_MOTION_PIN,mouse_p32xx_sensor_motion_2
-	fetcht 1,mem_sensor_data_gpio
-	call gpio_get_bit
-	nrtn true
-	branch mouse_p32xx_sensor_motion_2
+ifdef BLE
+p_mouse4_0_check_reconn_target:
+	jam 1,mem_le_send_security_request_flag
+	jam 1,mem_mouse_le_reconnect_flag
+	fetch 2,mem_mouse_direct_timeout
+ifdef BLE_FAST_CONN_ENABLE
+	fetch 1,mem_mouse_fast_conn_flag
+	bne 0xff,p_mouse4_0_check_reconn_target_next
+	setarg BLE_DIRECT_ADV_TIMEOUT	//ble fast conn time 3min
+endif
+p_mouse4_0_check_reconn_target_next:
+	store 2,mem_mouse_direct_timer
 
-p_mouse_p3212_sensor_motion:
-	call mouse_clear_sensor_data
-	fetch 1,mem_config_function_enable
-	bbit0 ENABLE_SENSOR_MOTION_PIN,mouse_p3212_sensor_motion_1
-	fetcht 1,mem_sensor_data_gpio
-	call gpio_get_bit
-	nrtn true
-	branch mouse_p3212_sensor_motion_1
+	fetch 1,mem_mouse_fast_conn_flag
+	beq 0xff,p_mouse_check_fast_conn_adv_start
 
-ifdef BLE
-p_mouse_bb_event_discovery_btn:
-	jam 0,mem_mouse_null_enter_hibernate_flag
-	jam 0,mem_mouse_null_enter_hibernate_timer
 	isolate1 mark_24g,mark
-	call p_g24_check_51cmd_stop_24g,true
-	branch mouse_bb_event_discovery_btn+1
-
-/*
-p_le_addr_random_config:
-	call load_adc_init
-	fetch 2,mem_0_5_adc_io_data	//adc data from otp
-	branch p_le_otp_adc_empty,blank
-	store 2,mem_random_addr_increase_count
-p_le_addr_random_store:
-	branch p_mouse_store_eerpom_random_addr_increase_count
-
-p_le_otp_adc_empty:
-	setarg 0x1122
-	store 2,mem_random_addr_increase_count
-	branch p_le_addr_random_store
-*/
+	ncall p_mouse_bt_reconn_multi_led_blink,true
+	
+	call p_mouse_store_eeprom_enable
+	call app_lpm_mult_disable
+	arg mem_le_scan_data,contr
+	call p_le_adv_data_update
+	jam 0x1f,mem_le_scan_data_len
+	branch check_51cmd_adv
+	
 
+//p_le_check_adv_flag:
+//	arg mem_le_adv_data,rega
+//p_le_check_adv_flag_loop:
+//	ifetch 1,rega	//length
+//	rtn blank
+//	iadd contr,rega
+//	ifetch 1,contr	//type
+//	rtneq 0x01
+//	branch p_le_check_adv_flag_loop
+endif
 
-p_mouse_start_discovery:
-	jam 1,mem_mouse_start_discovery_enable
-	jam 0,mem_mouse_clear_sensor_data_flag
-//	fetch 2,mem_ui_state_map
-//	bbit1 UI_STATE_BLE_ADV,p_mouse_start_discovery_norandom
-//	fetch MOUSE_FLAG_LEN,mem_mouse_flag
-//	bbit0 MOUSE_ENABLE_BLE_RANDOM_ADDRE,p_mouse_start_discovery_norandom
+ifdef G24
 /*
-	call p_mouse_load_eeprom_random_addr_increase_count
-	fetcht 2,mem_random_addr_increase_count
-	increase 1,temp
-	storet 2,mem_random_addr_increase_count
-	storet 2,mem_le_lap+1
-	call p_mouse_store_eerpom_random_addr_increase_count
-	random pdata
-	store 1,mem_le_lap
-*/
-p_mouse_start_discovery_norandom:
-ifdef BLE_FAST_CONN_ENABLE
-	call app_ble_disconnect
-//	setarg 0xed8e0e
-//	store 3,mem_le_lap+3
-	fetch 6,mem_le_normal_lap
-	store 6,mem_le_lap
-	jam 0x5a,mem_mouse_fast_conn_flag
-	call p_mouse_store_fast_conn_flag
-endif
-	call app_lpm_mult_disable
-	fetch 2,mem_discovery_timeout
-	store 2,mem_mouse_discovery_timer
-	jam 6,mem_connection_options
-	jam 1,mem_mouse_ble_led_on_enable
-	jam 0,mem_mouse_ble_reconn_enable
+p_mouse_24g_pairing_button:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+//	rtnbit0 MOUSE_ENABLE_24G
+	rtnbit1 MOSUE_24G_PAIRING_FLAG
+	rtnmark1 mark_24g
+//	call mouse_devce_led_off
+	arg MOSUE_24G_PAIRING_FLAG,queue
+	call mouse_enable_function_flag
 	setarg 0
-	store 2,mem_mouse_no_data_timer
 	store 2,mem_mouse_direct_timer
-	arg MOUSE_STORE_EEPROM_FLAG,queue
-	call mouse_enable_function_flag
-	call mouse_bt_discovery_button_down_disable
-	fetch 1,mem_device_option
-	isolate1 MODE_4_MOUSE,pdata
-	call p_check_51cmd_adv,true
-	branch mouse_start_discovery_norandom+13
+	store 1,mem_mouse_send_blank_timer
+	store 2,mem_24g_check_dongle_times
+	call mouse_stop_discovery
+*/	
+//	branch p_g24_start_pairing_sm1
+p_g24_start_pairing_sm1:
+	set1 mark_24g,mark
+	call p_g24_pair_init
+p_g24_set_pairing_sm_1:
+	jam STATE_24G_PAIRING_1,mem_24g_pairing_sm
+	rtn
+endif
 
-/*
-p_mouse_store_eerpom_random_addr_increase_count:
-	arg 2,temp
-	arg mem_random_addr_increase_count,rega
-	arg MOUSE_RANDOM_ADDR_COUNT_EEPROM_OFFSET,regb
-	branch iicd_write_protect_eep_data
+p_mouse_dpi_config:
+	fetch 1,mem_mouse_dpi
+	beq 0xff,p_mouse_dpi_config_default
+	branch p_mouse_seting_dpi_sensor_type
+p_mouse_dpi_config_default:
+	fetch 1,mem_config_sensor_motion
+	store 1,mem_mouse_dpi
+	branch p_mouse_seting_dpi_sensor_type
+
+p_mouse_spi_init:
+	jam 0x76,mem_spi_init_clk
+	branch mouse_spi_init
 	
-p_mouse_load_eeprom_random_addr_increase_count:
-	arg 2,temp
-	arg mem_random_addr_increase_count,rega
-	arg MOUSE_RANDOM_ADDR_COUNT_EEPROM_OFFSET,regb
-	branch iicd_read_eep_data
-*/
-p_check_51cmd_adv:
+p_mouse_init_sunt:
+	call p_mouse_spi_init
+	call mouse_spi_sdio_gpio_pollup
+p_mouse_init_sensor:
+	call mouse_read_sensor_id
+	beq P32XX_ID1,p_mouse_init_p32xx_id2_judge
+	beq P3065_ID1,p_mouse_p3065_init_param
+	call mouse_twspi_reset
+	nop 1000
+	branch p_mouse_init_sensor
+
+p_mouse_init_sensor_reset:
+	jam 1,mem_mouse_init_sensor_reset_flag
+//	call spi_ncs_enable
+	branch p_mouse_init_sunt
+//	branch spi_ncs_disable
+
+p_mouse_init_p32xx_id2_judge:
+	call p_mouse_sensor_poweron
+//	fetch 1,mem_sensor_id2
+//	beq P8009_ID2,p_mouse_8009_init_param
+//	beq P8650_ID2,p_mouse_8650_init_param
+	branch mouse_init_p32xx_id2_judge
+
+p_mouse_p3065_init_param:
+	call p_mouse_sensor_poweron
+	fetch 1,mem_sensor_id2
+	beq P3065_XY_ID2,mouse_p3065xy_init_param
+	jam P3065,mem_config_sensor_type
+	rtn
+
+//p_mouse_8009_init_param:
+//	setarg 0x16
+//	call twspi_read
+//	sub pdata,0xbd,null 
+//	nbranch p_mouse_init_sensor,zero
+//	setarg 0x19
+//	call twspi_read
+//	sub pdata,0x55,null 
+//	nbranch p_mouse_init_sensor,zero
+//	setarg 0x1b
+//	call twspi_read
+//	sub pdata,0x1d,null 
+//	nbranch p_mouse_init_sensor,zero
+//	jam P8009,mem_config_sensor_type
+//	call mouse_sensor_disable_wp
+//	setarg 0x0206
+//	call twspi_write
+//	setarg 0x6909
+//	call twspi_write
+//	setarg 0x280d
+//	call twspi_write
+//	setarg 0x9f0e
+//	call twspi_write
+//	setarg 0xba0f
+//	call twspi_write
+//	branch mouse_sensor_enable_wp
+
+//p_mouse_8650_init_param:
+//	jam P8650,mem_config_sensor_type
+//	rtn
+
+p_mouse_sensor_poweron:
+	setarg 0x8006	// reset to factory settings
+	call twspi_write
+	nop 12000
+	call p_mouse_dpi_config
+//	fetch 1,mem_sensor_id2
+//	beq P8009_ID2,p_mouse_8009_init_param
+	rtn
+	
+p_mouse_sensor_powerdown:
+	setarg 0x06
+	call twspi_read
+	or pdata,0x08,pdata
+	lshift8 pdata,pdata
+	add pdata,0x06,pdata
+	branch twspi_write	//make sdio high
+
+p_mouse_setting_config:
+ifdef G24
+	call adc_init_data				//p_g24_set_device_addr
+	fetch 4,mem_lap
+	store 4,mem_24g_device_addr
+endif
+	//disable usb function
+//	hfetch 1,core_usb_config
+//	set0 4,pdata
+//	hstore 1,core_usb_config
+	call mouse_gpio_init	
+	call p_mouse_multi_led_off2
+	call mouse_param_init
+ifdef CLASSIC_BT	
+	call p_mouse_bt_sdp_update
+endif
+	setarg 0
+	store 2,mem_lpm_interval
+	call p_mouse_set_gpio_control_sensor	
+	call mouse_adc_init
+ifdef BLE	
+	call le_set_config_fixed_ltk
+	call le_set_justwork
+	call le_set_fixed_ltk
+	call le_set_config_read_authentication
+endif	
+p_mouse_init_iic:
+	call iic_init_390k
+	call clear_eeprom_size_2k
+	call mouse_load_eeprom_dpi
+	call p_mouse_init_environment
+	call p_mouse_set_24g_addr_eeprom
+	call iicd_read_eep_data
 ifdef BLE_FAST_CONN_ENABLE
-	fetch 6,mem_le_normal_lap
-	store 6,mem_le_lap
+	call p_mouse_load_fast_conn_flag
+	fetch 1,mem_mouse_fast_conn_flag
+	beq 0xff,p_mouse_fast_conn_init2
 endif
-	call p_mouse_le_adv_data_update
-	branch check_51cmd_adv
+	rtn
 
+ifdef BLE_FAST_CONN_ENABLE
+p_mouse_load_fast_conn_flag:
+	arg 1,temp
+	arg mem_mouse_fast_conn_flag,rega
+	arg MOUSE_FAST_CONN_FLAG_OFFSET,regb
+	branch iicd_read_eep_data
 
-p_mouse_le_adv_data_update:
-	jam 0x1f,mem_le_adv_data_len
-	jam 0x1f,mem_le_scan_data_len
+p_mouse_store_fast_conn_flag:
+	arg 1,temp
+	arg mem_mouse_fast_conn_flag,rega
+	arg MOUSE_FAST_CONN_FLAG_OFFSET,regb
+	branch iicd_write_protect_eep_data
 
-	arg MOUSE_STORE_EEPROM_FLAG,queue
-	call mouse_enable_function_flag
+p_mouse_fast_conn_init2:
+	jam 1,mem_le_switch_adv_timer
+	jam 1,mem_le_switch_adv_flag
+p_mouse_fast_conn_init:
+	jam 0x34,mem_xrecord_mode
+	setarg 0
+	invert pdata,pdata
+	store 6,mem_le_lap
+	rtn	
+endif
 
-	jam 0,mem_mouse_le_reconnect_flag
-	arg mem_le_adv_swift_pair,contr
-	branch p_le_adv_data_update
+p_mouse_set_gpio_control_sensor:
+//	fetch MOUSE_FLAG_LEN,mem_mouse_flag 
+//	rtnbit0 MOUSE_ENABLE_GPIO_CONTROL_ADC_SENSOR
+p_mouse_sensor_set_angle:
+	hfetch 1,core_gpio_pu0
+	set1 5,pdata
+	hstore 1,core_gpio_pu0	
+	call p_mouse_sensor_set_angle_2	
+	hfetch 1,core_gpio_pu0
+	set0 5,pdata
+	hstore 1,core_gpio_pu0
+	rtn
+p_mouse_sensor_set_angle_2:
+	fetcht 1,mem_select_sensor_angle_gpio
+	call gpio_config_input
+	fetcht 1,mem_select_sensor_angle_gpio
+	call gpio_get_bit
+	jam MOUSE_3CLK_ANGLE,mem_config_sensor_angle
+	rtn true
+	jam MOUSE_12CLK_ANGLE,mem_config_sensor_angle
+	rtn	
 
-p_le_adv_data_update:
-	arg mem_le_adv_data+11,contw
-	arg 19,loopcnt
+ifdef CLASSIC_BT
+p_mouse_bt_sdp_update:
+	call enable_authrom
+	arg 0x8c00,contr
+	arg mem_mouse_uuid_list,contw
+	arg 369,loopcnt
 	call memcpy
-	branch le_modified_name_adv
+	//Attribute: HID SSR Host Max Latency
+	setarg 0x0f0209
+	istore 3,contw
+	setarg 0x120009
+	istore 3,contw
+	//Attribute: HID SSR Host Min Timeout
+	setarg 0x100209
+	istore 3,contw
+	setarg 0x000009
+	istore 3,contw
+	arg 0x8d71,contr
+	arg 265,loopcnt
+	call memcpy
+	
+	jam 0,mem_mouse_uuid_list+23	//Service Record Handle: 0x 00 01 00 00
+	jam 0x6d,mem_mouse_uuid_list+15	//total length
+	setarg 0x401f
+	store 2,mem_mouse_uuid_list+357	//timeout
+	setarg 0x6d04
+	store 2,mem_mouse_uuid_list+462	//VID
+	setarg 0x16b0
+	store 2,mem_mouse_uuid_list+468	//PID
 
-p_mouse_check_fast_conn_adv_start:
-	arg MOUSE_STORE_EEPROM_FLAG,queue
-	call mouse_disable_function_flag
-	call p_mouse_fast_conn_init
-	jam 0,mem_mouse_le_reconnect_flag
-	jam 0,mem_le_adv_data_len
-	jam 0x1f,mem_le_scan_data_len
-	branch check_51cmd_adv
+	setarg mem_mouse_uuid_list				//bt sdp start address
+	store 2,mem_ui_uuid_table
+	rtn
+endif	
 
-p_le_fast_conn_adv_data_update:
-	call p_mouse_fast_conn_init
-	arg mem_le_adv_data,contw
-	arg 11,loopcnt
-	call memcpy
-	branch le_modified_name_adv
+p_mouse_init_environment:
+	call app_initflag_check
+	branch mouse_eeprom_load_recon_info,zero
+	branch mouse_init_environment+2
 
-p_mouse_stop_discovery:
-	setarg 0
-	store 2,mem_mouse_discovery_timer
-	branch mouse_stop_discovery+1
+p_app_flag_store:
+	arg 2,temp
+	arg mem_timeup,rega
+	arg MOUSE_EEPROM_MODULE_INIT_FLAG,regb
+	branch iicd_write_protect_eep_data
 
-p_le_slave_match:
-	fetch 1,mem_le_md_count
-	pincrease 1
-	store 1,mem_le_md_count
-	beq LE_MD_MAX_COUNT,le_slave_cont
-	call le_acknowledge
-	call le_prepare_tx
-	call power_ctrl_start
-	branch le_slave_match+7
+p_app_initflag_check:
+	arg 2,temp
+	arg mem_pdatatemp,rega
+	arg MOUSE_EEPROM_MODULE_INIT_FLAG,regb
+	branch app_initflag_check+4
 
-p_le_next_adv_channel:
-	fetch 1,mem_le_ch_mapped
-	increase 1,pdata
-	store 1,mem_le_ch_mapped
-	rtnne 40
-	jam 37,mem_le_ch_mapped
+p_mouse_24g_transmit_by_interrupt_exit_count_max:
+	setarg 375
+	store 2,mem_24g_transmit_by_interrupt_exit_count_init
 	rtn
 
-p_le_receive_skip:
-	call save_rssi
-	copy pdata,rega
-	call p_rssi_signal
-	branch le_receive_skip+2
+p_mouse_wakeup_from_power:
+	setarg 25
+	store 2,mem_24g_transmit_by_interrupt_exit_count_init
+	ncall p_mouse_24g_transmit_by_interrupt_exit_count_max,wake
+	call p_mouse_init_sunt
+	call p_mouse_sensor_powerdown
+p_mouse_wakeup_no_from_power:
+	fetch 1,mem_reconn_times_init
+	store 1,mem_reconn_times
+p_mouse_start_24g_mode:
+	call p_mouse_mode_24g_device_multi_led_blink3s
+	fetch 1,mem_power_on_flag
+	bbit1 2,p_mouse_wakeup_from_hibernate	//hibernate goto reconn
+
+	jam LATEST_MODE_NULL,mem_mouse_latest_mode
+	call p_mouse_store_latest_mode_eeprom
+	jam BLE_POWERON_RECONN_TIMER,mem_mouse_poweron_bt_start_reconn_timer
+	
+	setarg 0xffff	//power on goto pair
+	store 2,mem_24g_addr
+	istore 2,contw
+	call p_mouse_set_24g_addr_eeprom	//store rx dongle addr to eeprom
+	call iicd_write_protect_eep_data
+	branch p_g24_auto_pair_start
 
-p_le_update_param:
-	call p_mouse_le_conn_param_check
-	branch le_update_param+8
-p_mouse_le_lpm_mult_reinit:
-	fetch 1,mem_lpm_mult_init
-	store 1,mem_lpm_mult
-p_mouse_le_conn_param_lpm_enable:
-	jam LE_LPM_ENABLE,mem_mouse_le_conn_param_reject
+p_mouse_wakeup_from_hibernate:
+	call p_mouse_read_latest_mode_eeprom
+	fetch 1,mem_mouse_latest_mode
+	beq LATEST_MODE_BT,p_mouse_bt_start_reconn
+	beq LATEST_MODE_24G,p_g24_start_24g_mode
+	jam BLE_POWERON_RECONN_TIMER,mem_mouse_poweron_bt_start_reconn_timer
 	rtn
-p_mouse_le_conn_param_lpm_disable:
-	jam LE_LPM_DISABLE,mem_mouse_le_conn_param_reject
-	rtn
-p_mouse_le_conn_param_check:
-	fetch 1,mem_le_new_conninterval
-	sub pdata,LE_INTERVAL_15MS,null
-	nbranch p_mouse_le_conn_param_lpm_disable,positive
-	fetch 1,mem_le_new_connslavelatency
-	fetcht 1,mem_lpm_mult_init
-	isub temp,null
-	branch p_mouse_le_lpm_mult_reinit,positive
-	fetch 1,mem_le_new_connslavelatency
-	store 1,mem_lpm_mult
-	branch p_mouse_le_conn_param_lpm_enable
 
-p_le_update_channel_map:
-	fetch 1,mem_le_state
-	rtnbit0 lestate_update_map
-	call p_le_channel_map_overflow_check
-	nrtn user
-	branch le_update_channel_map+3
-p_le_channel_map_overflow_check:
-	enable user
-	fetch 1,mem_le_event_count+1
-	rshift4 pdata,pdata
-	rtnne 0x0f
-	fetch 1,mem_le_instant+1
-	rshift4 pdata,pdata
-	rtnne 0x00
-	branch disable_user
+p_g24_factory_check:
+	arg 2,loopcnt
+	arg mem_24g_addr,contr
+p_pdata_0xff_check:
+	call enable_user
+	setarg 0xffff
+p_pdata_0xff_check_loop:
+	ifetcht 2,contr
+	isub temp,null
+	ncall disable_user,zero
+	loop p_pdata_0xff_check_loop
+	rtn
 
-p_le_prepare_tx:
-	fetch 1,mem_le_arq
-	bbit1 wak,p_le_prepare_tx_wak
-	call power_ctrl_pac_succ_incrs	
-	fetch 1,mem_empty_count
-	nbranch p_le_send_empyt,blank
-	fetch 1,mem_le_state 
-	bbit0 lestate_encryption,p_le_tx_4
-	fetch 1,mem_le_rxbuf+1  
-	branch p_le_tx_4,blank  
-	branch le_send_empty      // send empty data when got non empty packet
-p_le_send_empyt:
-	fetch 1,mem_empty_count
-	increase -1,pdata
-	store 1,mem_empty_count
-	branch le_send_empty
-p_le_tx_4:	
-	fetch 1,mem_le_pairing_state
-	bne FLAG_LE_PAIRING_AFTER_AUTH,p_in_le_tx_4
-	jam 3,mem_empty_count
-p_in_le_tx_4:
-	call le_fifo_check_nearly_full
-	call p_mouse_data_pull,blank
-	branch le_prepare_tx+4
+p_mouse_cb_fuction:
+ifdef G24
+	setarg p_mouse_g24_package_data
+	store 2,mem_cb_24g_data
+endif	
+ifdef BLE
+	setarg p_mouse_le
+	store 2,mem_cb_le_process
+	setarg p_le_mouse_bb_event_connect_complete
+	store 2,mem_cb_att_write
+endif
+ifdef CLASSIC_BT
+	setarg p_mouse_bt
+	store 2,mem_cb_bt_process
+endif	
+	setarg p_mouse_before_lpm
+	store 2,mem_cb_before_lpm
+	setarg p_mouse_priority_bb_event
+	store 2,mem_cb_bb_event_process
+	setarg p_mouse_idle
+	store 2,mem_cb_idle_process
+	setarg p_mouse_before_hibernate
+	store 2,mem_cb_before_hibernate
+	setarg p_mouse_bb_event_timer
+	store 2,mem_cb_event_timer
+	rtn
 
-p_le_prepare_tx_wak:
-	call p_le_check_tx_retransmit_setmd
-	branch p_le_power_ctrl_pac_succ_decrs
+ifdef G24
+p_mouse_g24_package_data:
+	call mouse_g24_package_data
+	fetch 2,mem_mouse_z
+	rtn blank
+	branch p_g24_transmit_by_interrupt_enable
+endif	
+	
+ifdef BLE
+p_mouse_le_txbuff_save:
+	arg mem_le_tx_buffer0,contr
+	arg mem_le_tx_buffer0_omemalloc,contw
+	call p_mouse_le_txbuff_copy
+	arg mem_le_tx_buffer1,contr
+	call p_mouse_le_txbuff_copy
+	arg mem_le_tx_buffer2,contr
+	call p_mouse_le_txbuff_copy
+	arg mem_le_tx_buffer3,contr
+p_mouse_le_txbuff_copy:	
+	arg 27,loopcnt
+	branch memcpy
 
-p_le_check_tx_retransmit_setmd:
+p_mouse_le_txbuff_load:
+	arg mem_le_tx_buffer0_omemalloc,contr
+	arg mem_le_tx_buffer0,contw
+	call p_mouse_le_txbuff_copy
+	arg mem_le_tx_buffer1,contw
+	call p_mouse_le_txbuff_copy
+	arg mem_le_tx_buffer2,contw
+	call p_mouse_le_txbuff_copy
+	arg mem_le_tx_buffer3,contw
+	branch p_mouse_le_txbuff_copy
+
+p_mouse_le:
+	call le_fifo_check_nearly_full
+	nrtn blank
+ifdef BLE_FAST_CONN_ENABLE
+	fetch 1,mem_mouse_fast_conn_flag
+	beq 0xff,p_mouse_le_next
+endif	
 	fetch 1,mem_le_connect_status_flag
 	and pdata,0x03,pdata
 	rtnne 0x03
-	fetch 1,mem_mouse_data_queue_num
-	rtn blank
-	fetch 1,mem_le_txlen
-	rtn blank
-	fetch 1,mem_le_txheader
-	set1 md,pdata
-	store 1,mem_le_txheader
-	call le_set_md
+p_mouse_le_next:
+	fetch 1,mem_mouse_clear_sensor_data_flag
+	call p_mouse_clear_sensor_data,blank
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_BT_DISCOVERY_BUTTON_DOWN_FLAG,mouse_le_send_empty_packet
+	call mouse_motion
+	nrtn user
+	call p_mouse_le_current_mult_update
+	call p_mouse_data_xy_release
+	call p_mouse_wheel_trigger
+	branch p_mouse_data_push
+
+p_mouse_le_current_mult_update:
+	jam 0,mem_lpm_mult
+	jam 30,mem_mouse_le_current_mult_timer
+	rtn	
+
+p_mouse_data_xy_release:
+	fetch 1,mem_mouse_long_mult_flag
+	rtnne 1
+	setarg 0
+	store 1,mem_mouse_long_mult_flag
+	store 4,mem_mouse_x
+	branch p_mouse_sensor_poweron
+
+
+p_mouse_data_init:
+	jam 7,mem_mouse_data_queue	//data length
+	jam 4,mem_mouse_data_queue+1	//fifo depth
+	setarg mem_mouse_data_queue
+	store 2,mem_queue_ptr
+	branch queue_init
+
+p_mouse_data_push:
+	arg mem_mouse_key,rega
+	call queue_push
+	call p_mouse_queue_increase,user
+	
 ifdef DEBUGLOG
 ifdef DEBUGLOG_MISC
 	setarg DEBUGLOG_DTYPE_MISC
 	store 2,mem_debuglog_datatype
-	setarg MISC_LE_RETRANSMIT_MD
+	setarg MISC_LOST_MOUSEDATA
 	store 2,mem_debuglog_dataval
-	call debuglog_push	
+	nbranch debuglog_push,user
+
+	setarg MISC_PUSH_MOUSEDATA
+	store 2,mem_debuglog_dataval
+	call debuglog_push
 endif
 endif
 	rtn
-
-	
+p_mouse_queue_increase:
+	fetch 1,mem_mouse_data_queue_num
+	increase 1,pdata
+	store 1, mem_mouse_data_queue_num
+	rtn
 	
-p_le_power_ctrl_pac_succ_decrs:
+p_mouse_data_pull:
+	arg mem_mouse_key,rega
+	call queue_pop
+	branch p_mouse_fill_data_le,user
+	rtn
+
+p_mouse_fill_data_le:
 ifdef DEBUGLOG
 ifdef DEBUGLOG_MISC
 	setarg DEBUGLOG_DTYPE_MISC
 	store 2,mem_debuglog_datatype
-	setarg MISC_LE_RETRANSMIT
+	setarg MISC_PULL_MOUSEDATA
 	store 2,mem_debuglog_dataval
+	call debuglog_push
+
+	setarg DEBUGLOG_DTYPE_MISC
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_mouse_x
+	store 1,mem_debuglog_dataval
+	fetch 1,mem_mouse_y
+	store 1,mem_debuglog_dataval+1
 	call debuglog_push	
 endif
 endif
-	branch power_ctrl_pac_succ_decrs
+	call le_clear_md
+	fetch 1,mem_mouse_data_queue_num
+	sub pdata,1,null
+	ncall le_set_md,positive
+	fetch 1,mem_mouse_data_queue_num
+	rtn blank
+	increase -1,pdata
+	store 1, mem_mouse_data_queue_num
+	branch mouse_fill_data_le
+	
+endif
 
-p_mouse_le_reconn_write_enable_timer_reinit:
-	fetch 1,mem_mouse_le_reconnect_flag
+p_mouse_wheel_trigger:
+	fetch 2,mem_mouse_z
 	rtn blank
-	fetch 1,mem_le_connect_status_flag
-	and pdata,0x03,pdata
-	rtneq 0x03
-	jam 10,mem_le_start_encrypt_timer
+	jam 1,mem_mouse_wheel_trigger
+	jam 2,mem_mouse_wheel_trigger_timer
 	rtn
 
-p_le_parse:
-	rtnmark1 mark_old_packet
-	call le_fifo_check_full
+ifdef CLASSIC_BT
+p_mouse_bt:
+	rtn attempt
+	fetch 1,mem_app_handshake_flag
+	rtn blank
+	call l2cap_malloc_is_fifo_nearly_full
 	nrtn blank
-	fetch 1,mem_le_rxbuf
-	and pdata,0x3,pdata
-	store 1,mem_le_packet_llid
-	ifetch 1,contr
-	and pdata,0x1f,pdata
-	store 1,mem_le_packet_size
-	rtn blank							//empty rtn
-	copy contr,pdata
-	store 2,mem_le_payload_ptr
-	fetch 1,mem_le_packet_llid
-	beq LLID_LE_LL,p_le_parse_ll
-	branch le_parse_l2cap
-p_le_parse_ll:
-	fetch 1,mem_le_rxbuf+2
-	beq LL_CHANNEL_MAP_REQ,p_le_parse_channel_map_req
-	branch le_parse_ll+1
-p_le_parse_channel_map_req:
-	ifetch 5,contr
-	store 5,mem_le_new_map
-	ifetch 2,contr
-	store 2,mem_le_instant
-	branch le_parse_channel_map_req+7
+	fetch 1,mem_mouse_clear_sensor_data_flag
+	call p_mouse_clear_sensor_data,blank
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	bbit1 MOUSE_BT_DISCOVERY_BUTTON_DOWN_FLAG,mouse_send_empty_data
+	bbit1 MOUSE_BT_DISCOVERY_BUTTON_LONG_DOWN_FLAG,mouse_send_empty_data
+	call mouse_motion
+	nrtn user
+	call p_mouse_wheel_trigger
+	fetch 1,mem_mouse_bt_boot_mode
+	beq 1,p_mouse_send_data_boot_mode	//boot
+	fetch 1,mem_mouse_bt_send_first_package_flag
+	rtn blank
+	branch mouse_send_data	//report
 
-p_le_parse_l2cap:
-	ifetch 2,contr
-	beq LE_L2CAP_CID_ATT,p_le_parse_att
-	beq LE_L2CAP_CID_SMP,p_le_parse_smp
-	branch le_parse_l2cap+11
-p_le_parse_att:
-	call store_contr
-	call p_mouse_le_reconn_write_enable_timer_reinit
-	call get_contr
-	ifetch 3,contr
-	store 3,mem_le_att_opcode
-	beq ATTOP_READ_BY_GROUP_TYPE_REQUEST,p_le_parse_att_read_by_group_type_request
-	rshift8 pdata,temp
-	sub temp,0x24,null
-	branch p_le_parse_att1,positive
-	arg mem_mouse_le_uuid_sup,temp
-	storet 2,mem_ui_le_uuid_table
-	call le_parse_att+2
-	setarg 0x8e7a
-	store 2,mem_ui_le_uuid_table
-	rtn
+p_mouse_send_data_boot_mode:
+	fetch 1,mem_mouse_key
+	store 1,mem_mouse_bt_boot_data
+	fetch 1,mem_mouse_x
+	istore 1,contw
+	fetch 1,mem_mouse_y
+	istore 1,contw
+	fetch 2,mem_mouse_z
+	istore 2,contw
 
-p_le_parse_att_read_by_group_type_request:
-	call le_parse_att_read_by_group_type_request
-	call le_fifo_get_last_tx_ptr
-	increase 7,contr
-	ifetch 1,contr
-	rtnne ATTOP_READ_BY_GROUP_TYPE_RESPONSE
-	increase 5,contr
-	ifetch 2,contr
-	arg UUID_SERVICE_HIDS,temp
-	isub temp,null
-	nrtn zero
-	increase -4,contr
-	setarg 0x2b
-	istore 2,contr
+	arg 7,rega
+	call hid_malloc_tx_buff
+	fetch 2,mem_hid_int_remote_cid
+	istore 2,contw
+	setarg 0x02a1
+	istore 2,contw
+	fetch 5,mem_mouse_bt_boot_data
+	istore 5,contw
 	rtn
+endif
 
-p_le_parse_att1:
-	beq ATTOP_READ_REQUEST,p_le_parse_att_read_request
-	branch le_parse_att+2
-p_le_parse_att_read_request:
-	fetcht 2,mem_le_att_handle
-	fetch 1,mem_le_configuration
-	bbit1 BIT_BLE_READ_AUTH,p_le_send_att_read_response_check_auth
-p_le_send_att_read_response:
-	call le_att_get_handle_ptr
-	branch le_send_att_error_response_notfound,blank
-	increase -2,contr
-	ifetch 2,contr
-	arg UUID_CHRCTR_PNP_ID,temp
-	isub temp,null
-	branch p_le_send_att_pnp_id,zero
-	
-	fetch 2,mem_le_att_handle
-	beq 0x13,le_send_att_error_response_notfound
+p_mouse_clear_sensor_data:
+	call le_set_config_more_data
+	jam 1,mem_mouse_clear_sensor_data_flag
+	branch p_mouse_sensor_poweron
 
-	fetcht 2,mem_le_att_handle
-	branch le_send_att_read_response
-p_le_send_att_pnp_id:
-	call store_contr
-	fetch 1,mem_le_att_pnp_id_len
-	add pdata,1,rega
-	call le_fifo_malloc_tx_l2cap_gatt
-	setarg ATTOP_READ_RESPONSE
-	istore 1,contw
-	fetch 1,mem_le_att_pnp_id_len
-	copy pdata,loopcnt
-	arg mem_le_att_pnp_id,contr
-	branch memcpy
+p_mouse_idle:
+	call ui_check_paring_button
+	call p_mouse_dpi_check
+	branch mouse_wheel_check
 
-p_le_send_att_read_response_check_auth:
-	fetch 2,mem_le_pairing_handle
-	isub temp,null
-	nbranch p_le_send_att_read_response,zero
-//le_send_att_read_response_error_insufficient_auth:
-	call le_check_encrypt_state
-	nbranch p_le_send_att_read_response,user
-	jam ATT_ERR_INSUFFICIENT_AUTHENTICATION,mem_le_err_code
-	branch le_send_att_error_response
+p_mouse_dpi_check:
+	fetcht 1,mem_dpi_button_gpio
+	call p_gpio_set_input_pd
+	fetcht 1,mem_dpi_button_gpio
+	call gpio_get_bit
+	branch p_mouse_dpi_up,true
+	call p_gpio_set_input_pu
+	branch mouse_dpi_down
+p_mouse_dpi_up:
+	call p_gpio_set_input_pu
+	branch mouse_dpi_up
 
-p_le_parse_smp:
-	ifetch 1,contr
-	beq SMP_PAIRING_FAILED,p_le_parse_smp_pairing_failed
-	branch le_parse_smp+1
-p_le_parse_smp_pairing_failed:
-	call le_parse_smp_pairing_failed
-	fetch 1,mem_le_state	//disable update conn param
-	set0 lestate_update_param,pdata
-	store 1,mem_le_state
-	branch le_parse_terminate_ind
+p_mouse_priority_bb_event:
+	copy regc,pdata
+ifdef BLE	
+	beq BT_EVT_LE_CONNECTED,p_mouse_le_bb_event_connected
+	beq BT_EVT_LE_DISCONNECTED,p_mouse_le_bb_disconnected
+	beq BT_EVT_LE_ENC_INFO,p_mouse_le_enc_info
+	beq BT_EVT_LE_START_ENC,p_mouse_le_ll_start_encryt
+	beq BT_EVT_LE_PARSE_CONN_PAPA_UPDATE_RSP,p_mouse_le_conn_param_update_rsp_recieved
+endif
+ifdef CLASSIC_BT
+	beq BT_EVT_RECONN_FAILED,p_mouse_bb_event_reconn_failed
+	beq BT_EVT_RECONN_PAGE_TIMEOUT,p_mouse_bb_event_reconn_timeout
+	beq BT_EVT_VIRTUAL_CABLE_UNPLUG,p_mouse_irtual_cable_unplug
+	beq BT_EVT_SWITCH_NOT_ACCEPT,app_bt_role_switch	
+	beq BT_EVT_SNIFF_NOT_ACCEPT,p_mouse_sniff_not_accept
+	beq BT_EVT_BB_CONNECTED,p_mouse_bb_event_connected
+	beq BT_EVT_BB_DISCONNECTED,p_mouse_bb_event_disconnected
+	beq BT_EVT_SWITCH_SUCCESS_MASTER,p_mouse_enter_sniff_check
+endif
+ifdef G24
+	beq BT_EVT_24G_PAIRING_COMPLETE,p_mouse_24g_pairing_complete
+	beq BT_EVT_24G_ATTEMPT_FAIL,p_mouse_24g_attempt_fail
+	beq BT_EVT_24G_ATTEMPT_SUCCESS,p_mouse_24g_attempt_success
+endif
+	branch mouse_priority_bb_event+1
 
-p_le_adv_not_match:
-	fetch 1,mem_le_ch_mapped
-	bne 39,le_adv_loop
-	call p_le_adv_random_delay
-	arg le_adv_interval_timer,queue
-	fetch 2,mem_le_adv_interval
-	branch timer_init
-p_le_adv_random_delay:
-	random pdata
-	arg 0x1ff,temp
-	iand temp,pdata
-	add pdata,250,pdata
-	branch delay
+ifdef BLE
+p_mouse_le_bb_event_connected:
+ifdef BLE_FAST_CONN_ENABLE
+	setarg 0
+	store 3,mem_le_switch_adv_flag
+	arg 3,loopcnt
+	arg mem_le_lap,contr
+	call p_pdata_0xff_check
+	ncall p_mouse_fast_conn_quit,user
+endif
+	jam 0,mem_mouse_le_adv_start
+	jam 1,mem_mouse_le_bb_connected_flag
+	fetch 1,mem_mouse_le_reconnect_flag
+	nbranch p_mouse_le_bb_event_connected_next,blank
+	jam 0x14,mem_mouse_send_secutiry_request_timer
+p_mouse_le_bb_event_connected_next:
+	jam 0,mem_mouse_le_not_tx_disconn
+	jam 0,mem_mouse_start_discovery_enable
+	call p_g24_check_51cmd_stop_24g
+	call p_mouse_store_latest_mode_le
+	call p_mouse_init_sensor_reset
+	call p_mouse_data_init
+	branch mouse_le_bb_event_connected
 
-p_le_lpm_setmult:
-	disable wake
-	branch p_le_lpm_set_mult_attempt,attempt
-	nbranch le_lpm_lost,match
-p_le_lpm_set_mult_attempt:
-	call lpm_match
-	fetch 2,mem_rx_window_sniff
-	store 2,mem_le_receive_window
-	fetch 1,mem_le_connect_status_flag
-	compare 3,pdata,3
-	nbranch lpm_mult_short,true
-	branch le_lpm_set_mult_attempt+3
+p_mouse_fast_conn_quit:
+	setarg 0x50
+	store 2,mem_mouse_direct_timer
+	call app_ble_store_reconn_info
+	jam 0x5a,mem_mouse_fast_conn_flag
+	branch p_mouse_store_fast_conn_flag
+	
+p_mouse_store_latest_mode_le:
+	arg 3,loopcnt
+	arg mem_le_lap,contr
+	call p_pdata_0xff_check
+	rtn user	//le fast conn will return
+	jam LATEST_MODE_BT,mem_mouse_latest_mode
+p_mouse_store_latest_mode_eeprom:
+	call p_mouse_set_latest_mode_eeprom
+	branch iicd_write_protect_eep_data
 
-p_le_mouse_bb_event_connect_complete:
+p_mouse_read_latest_mode_eeprom:
+	call p_mouse_set_latest_mode_eeprom
+	branch iicd_read_eep_data
+
+p_mouse_set_latest_mode_eeprom:
+	arg mem_mouse_latest_mode,rega
+	arg MOUSE_LATEST_MODE_OFFSET,regb
+	arg 1,temp
+	rtn
+
+p_mouse_le_bb_disconnected:
+	jam 0,mem_mouse_le_bb_connected_flag
+	call p_mouse_sensor_powerdown_check
+	setarg LE_INTERVAL_8_75MS
+	store 2,mem_le_interval_min
+	store 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 p_mouse_data_init
+	call le_clr_config_more_data
+	call mouse_bb_disconnected
+	fetch 1,mem_mouse_start_discovery_enable
+	rtn blank
+	branch p_check_51cmd_adv
+
+p_mouse_le_enc_info:
+p_app_updata_le_param:
+	jam BT_CMD_LE_UPDATE_CONN,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+p_mouse_le_ll_start_encryt:
 	fetch 1,mem_mouse_le_reconnect_flag
-	nrtn blank
-	fetch 1,mem_le_att_handle
-	sub pdata,26,pdata
-	nrtn zero
-	jam 0,mem_le_start_encrypt_timer
-	branch mouse_le_write_enable
+	beq 1,p_mouse_le_ll_reconn_start_encryt
+	jam 20,mem_le_start_encrypt_timer
+	branch p_mouse_le_ll_enable_start_enc_flag
 
-p_check_51cmd_once_continue:
-	call lmo_fifo_check
-	nbranch check_51cmd_restore,blank  //process this cmd next time while lmo fifo is full
-	fetch 1,mem_fifo_temp
-	bmark0 mark_context,check_51cmd_check_idle
-	beq BT_CMD_LE_UPDATE_CONN,p_check_51cmd_ble_update_connect_param
-	branch check_51cmd_once_continue+2
+p_mouse_le_ll_reconn_start_encryt:
+	call p_app_updata_le_param
+	jam 20,mem_le_start_encrypt_timer
+p_mouse_le_ll_enable_start_enc_flag:
+	arg LL_START_ENC_FLAG,queue
+	branch mouse_le_enable_connect_flag
 
-p_check_51cmd_ble_update_connect_param:
-	call le_fifo_check_full
-	nrtn blank
-	branch le_l2cap_tx_update_req
-	
+p_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
+	branch p_mouse_le_conn_param_update_rsp_not_accepted,positive
+	setarg LE_INTERVAL_11_25MS
+	store 2,mem_le_interval_min
+	store 2,mem_le_interval_min+2
+	call p_app_updata_le_param
+	branch p_mouse_le_conn_param_lpm_disable
+
+//ipad not accepted updata, need reinit mem_lpm_mult.   mem_lpm_mult = CONNECT_IND latency = 0
+p_mouse_le_conn_param_update_rsp_not_accepted:
+	jam 1,mem_mouse_le_updata_not_accepted_flag
+	branch p_mouse_le_conn_param_update_rsp_not_accepted_mult_reset	
 endif
 
 
-p_twspi_reset:
-	hfetch 1,core_gpio_out3
-	and_into 0xfd,pdata
-	hstore 1,core_gpio_out3
-	hfetcht 1,core_gpio_oe3
-	or_into 0x2,temp
-	hstoret 1,core_gpio_oe3
-	call twspi_disable
-	and_into 0xfd,temp
-	nop 13
-	call twspi_enable
-	hstoret 1,core_gpio_oe3
+ifdef CLASSIC_BT
+p_mouse_bb_event_reconn_timeout:
+p_mouse_bb_event_reconn_failed:
+	fetch 2,mem_ui_state_map
+	rtnbit1 UI_STATE_BTN_DOWN
+	rtnbit1 UI_STATE_BT_DISCOVERY
+	rtnbit1 UI_STATE_BLE_ADV
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit1 MOUSE_BT_DISCOVERY_BUTTON_DOWN_FLAG
+	branch app_bb_hibernate
+
+p_mouse_irtual_cable_unplug:
+	call mouse_irtual_cable_unplug
+	branch app_bb_hibernate
+
+p_mouse_sniff_not_accept:
+	fetch 1,mem_mouse_enter_sniff_count
+	rtneq 2
+	increase 1,pdata
+	store 1,mem_mouse_enter_sniff_count
+	jam 0x12,mem_sniff_param_interval	//89Hz
+	branch app_bt_enter_sniff
+
+p_mouse_bb_event_connected:
+	call p_mouse_discovey_led_blink_off
+	jam 0,mem_mouse_send_switch_req_timer
+	call p_mouse_init_sensor_reset
+	branch mouse_stop_discovery
+
+p_mouse_bb_event_disconnected:
+	jam 0,mem_bt_rcvd_switch_req_accept
+	jam 0,mem_bt_send_lmp_setup_complete
+	jam 0,mem_mouse_bt_send_first_package_flag
+	call p_mouse_sensor_powerdown_check
+	branch mouse_bb_disconnected
+
+p_mouse_enter_sniff_check:
+	fetch 1,mem_mouse_enter_sniff_count
+	rtnne 2
+	jam 0,mem_mouse_enter_sniff_count
+	jam 0x0e,mem_sniff_param_interval	//89Hz
+	branch app_bt_enter_sniff
+endif
+
+ifdef G24
+p_mouse_24g_pairing_complete:
+	call p_mouse_tx_power_init
+	call p_mouse_24g_attempt_success	
+	arg MOSUE_24G_PAIRING_FLAG,queue
+	call mouse_disable_function_flag
+	jam 0,mem_mouse_move_flag
+	call mouse_read_sensor_common
+	call p_mouse_set_24g_addr_eeprom	//store rx dongle addr to eeprom
+	branch iicd_write_protect_eep_data
+
+p_mouse_set_24g_addr_eeprom:
+	arg mem_24g_addr,rega
+	arg MOUSE_G24_ADDR_EEPROM_OFFECT,regb
+	arg 4,temp
 	rtn
-	
-ifdef DEBUGLOG
-p_parse_lmp_opcode:
-ifdef DEBUGLOG
-ifdef DEBUGLOG_PARSE_LMP
-	setarg DEBUGLOG_DTYPE_PARSE_LMP
-	store 2,mem_debuglog_datatype
-//	fetch 1,mem_rxbuf+1
-//	store 1,mem_debuglog_dataval+1 
-//	fetch 1,mem_lmi_opcode2
-//	store 1,mem_debuglog_dataval
-	fetch 1,mem_lmi_opcode2
-	store 2,mem_debuglog_dataval
-	call debuglog_push 
+
+p_mouse_24g_attempt_fail:
+	call p_mouse_sensor_powerdown_check
+	jam G24_TX_TIMER_INT_DISABLE,mem_24g_transmit_by_interrupt
+	call p_mouse_tx_power_init
+	call p_g24_check_51cmd_stop_24g
+	fetch 1,mem_mouse_latest_mode
+	rtnne LATEST_MODE_24G
+	branch app_enter_hibernate
+
+p_mouse_bt_start_reconn:
+	jam 0,mem_link_key_exists
+ifdef BLE_FAST_CONN_ENABLE
+	fetch 1,mem_mouse_fast_conn_flag
+	beq 0xff,p_mouse_check_reconn_target
 endif
+	call mouse_eeprom_load_recon_info
+	branch p_mouse_check_reconn_target
+
+p_mouse_24g_attempt_success:
+	jam 0,mem_mouse_poweron_bt_start_reconn_timer
+	setarg 0
+	store 3,mem_le_switch_adv_flag
+	call mouse_le_bb_event_connected+3	
+	call p_mouse_multi_led_blink_off
+	call p_g24_auto_pair_timeout_clear
+	call p_mouse_init_sensor_reset
+	call mouse_no_data_timer_init
+p_mouse_24g_store_latest_mode_eeprom:	
+	jam LATEST_MODE_24G,mem_mouse_latest_mode
+	branch p_mouse_store_latest_mode_eeprom
 endif
-	branch parse_lmp+21
 
-p_process_conn_sm:
-	//nrtn master
-	call lmo_fifo_check
-	nrtn blank
-p_process_conn_sm_continue:
-	fetch 1,mem_conn_sm
-	rtn blank
-ifdef DEBUGLOG
-ifdef DEBUGLOG_CONN_SM
-	call pdata_push
-	setarg DEBUGLOG_DTYPE_CONN_SM
-	store 2,mem_debuglog_datatype
-	fetch 1,mem_conn_sm
-	store 2,mem_debuglog_dataval
-	call pdata_pull
-	call debuglog_push	
-endif
-endif
-	branch process_conn_sm_continue+2
-p_process_upper_sm_reconn:
-	fetch 1,mem_upper_sm_reconn
-	rtn blank
-ifdef DEBUGLOG
-ifdef DEBUGLOG_UPPER_SM
-	call pdata_push
-	setarg DEBUGLOG_DTYPE_UPPER_SM
-	store 2,mem_debuglog_datatype
-	fetch 1,mem_upper_sm_reconn
-	store 2,mem_debuglog_dataval
-	call pdata_pull
-	call debuglog_push	
-endif
-endif
-	branch process_upper_sm_reconn+3
-endif	
+
+p_mouse_before_hibernate:
+	hfetch 4,core_lpm_ctrl
+	set1,26,pdata
+	hstore 4,core_lpm_reg
+	call lpm_write_ctrl
+	call p_mouse_sensor_powerdown_check
+	call disable_authrom
+//	call mouse_devce_led_off
+	call p_mouse_multi_led_off2
+	call mouse_before_hibernate_wheel_gpio_set
+	call p_mouse_setgpio_lpm_before
 	
-ifdef DEBUGLOG
-p_ui_ipc_send_event:
-ifdef DEBUGLOG
-ifdef DEBUGLOG_EVENT
-	call pdata_push
-	setarg DEBUGLOG_DTYPE_EVENT
-	store 2,mem_debuglog_datatype
-	fetch 1,mem_fifo_temp
-	store 2,mem_debuglog_dataval
-	call pdata_pull
-	call debuglog_push	
-endif
+	fetch 8,mem_gpio_wakeup_low
+	set0 8,pdata	//disable R Key wake
+	store 8,mem_gpio_wakeup_low
+	fetcht 1,mem_dpi_button_gpio
+	call p_gpio_set_input_pd
+	fetch 8,mem_gpio_wakeup_low
+	set1 40,pdata	//enable dpi wake
+	store 8,mem_gpio_wakeup_low
+
+	fetcht 1,mem_select_sensor_angle_gpio
+	branch gpio_clr_wake
+
+p_mouse_sensor_powerdown_check:
+	fetch 1,mem_mouse_init_sensor_reset_flag
+	rtn blank
+	jam 0,mem_mouse_init_sensor_reset_flag
+	branch p_mouse_sensor_powerdown
+
+
+p_mouse_bb_event_timer:
+ifdef ADC_ENABLE
+	call p_mouse_adc_read
+	call p_mouse_low_voltage_led_timer
 endif
-	branch ui_ipc_send_event+1
-p_ui_ipc_send_cmd:
-ifdef DEBUGLOG
-ifdef DEBUGLOG_CMD
-	call pdata_push
-	setarg DEBUGLOG_DTYPE_CMD
-	store 2,mem_debuglog_datatype
-	fetch 1,mem_fifo_temp
-	store 2,mem_debuglog_dataval
-	call pdata_pull
-	call debuglog_push
+ifdef BLE_FAST_CONN_ENABLE
+	call p_mouse_le_switch_adv_timer
 endif
+	call p_mouse_multi_led_blink_timer
+	call p_mouse_wheel_trigger_timer
+	call p_mouse_bt_discovery_check
+	call mouse_check_discovery_timeout_timer
+ifdef G24
+	call p_mouse_g24_long_sleep_param_update_timer
+	call p_mouse_g24_stop_mode_timeout_timer
 endif
-	branch ui_ipc_send_cmd+1
+ifdef BLE
+	call p_mouse_check_direct_timeout_timer
+	call p_mouse_le_enable_att_list_timer
+	call p_mouse_le_current_mult_update_timer
+	call p_le_send_smp_security_request_timer
+	call p_mouse_poweron_bt_start_reconn_timer
 endif
-p_g24_set_device_addr:
-//	call adc_init_data
-//	fetch 4,mem_0_5_adc_io_data	//adc data from otp
-//	store 4,mem_24g_device_addr	
-//	nrtn blank
-	fetch 4,mem_lap
-	store 4,mem_24g_device_addr
-	rtn
+ifdef CLASSIC_BT
+	call p_mouse_send_switch_req_timer
+	call mouse_check_hid_handshake_timer
+	call p_mouse_bt_check_sniff_req_timeout_timer
+endif
+	branch mouse_check_no_data_timeout_timer
+
+p_mouse_poweron_bt_start_reconn_timer:
+	arg mem_mouse_poweron_bt_start_reconn_timer,regc
+	arg p_mouse_bt_start_reconn,regb
+	branch timer_single_step
 
+p_mouse_check_direct_timeout_timer:
+	arg mem_mouse_direct_timer,regc
+	arg p_mouse_check_direct_timeout,regb
+	branch timer_single_step_2B
+p_mouse_check_direct_timeout:
+	fetch 1,mem_le_switch_adv_flag
+	nbranch app_enter_hibernate,blank
+	jam 1,mem_mouse_le_not_tx_disconn
+	branch p_mouse_long_button_bt_normal_discovery
 
-p_g24_transmit_rf_sta_init:
-	jam 1,mem_24g_rf_last_sta
-	jam 0,mem_24g_sync_cnt
-p_g24_transmit_rf_ctrl_clear:	
-	fetch 1,mem_24g_data_type
-	and_into bits_data,pdata
-	store 1,mem_24g_data_type
+ifdef BLE_FAST_CONN_ENABLE
+p_mouse_le_switch_adv_timer:
+	fetch 1,mem_le_switch_adv_flag
+	rtn blank
+	arg mem_le_switch_adv_timer,regc
+	arg p_mouse_le_switch_adv,regb
+	branch timer_single_step
+p_mouse_le_switch_adv:
+	jam 1,mem_le_switch_adv_timer
+	fetch 1,mem_le_switch_adv_count
+	increase 1,pdata
+	and_into 1,pdata
+	store 1,mem_le_switch_adv_count
+	beq 0,p_check_51cmd_adv
+	beq 1,p_mouse_check_fast_conn_adv_start1
 	rtn
-	
-p_g24_hop_ch_enable:
-	fetch 1,mem_24g_data_type
-	set1 bit_hop,pdata
-	store 1,mem_24g_data_type
-	//update txpayload
-	store 1,mem_24g_txpayload
+endif
+
+ifdef G24
+p_mouse_g24_long_sleep_param_update_timer:
+	arg mem_24g_long_sleep_param_update_timer,regc
+	arg p_mouse_g24_long_sleep_normal_param,regb
+	branch timer_single_step
+p_mouse_g24_long_sleep_normal_param:
+	setarg G24_LONG_SLEEP_STEP2
+	store 3,mem_24g_enter_hibernate
+p_mouse_long_mult_flag_enable:	
+	jam 1,mem_mouse_long_mult_flag
 	rtn
-p_g24_hop_ch_disable:
-	fetch 1,mem_24g_data_type
-	set0 bit_hop,pdata
-	store 1,mem_24g_data_type
-	rtn	
 
-p_g24_transmit_hop_pac_fail:
-	call power_ctrl_pac_succ_decrs
-	fetch 1,mem_24g_rf_work_stage
-	beq 1,p_g24_transmit_hop_pac_fail_wo_hop
-	beq 2,p_g24_transmit_hop_pac_fail_hop_stage2
+p_mouse_g24_stop_mode_timeout_timer:
+	arg mem_g24_stop_g24_mode_timeout,regc
+	arg p_mouse_g24_stop_mode_timeout,regb
+	branch timer_single_step_2B
+p_mouse_g24_stop_mode_timeout:
+	jam 1,mem_g24_stop_g24_mode
+	fetch 2,mem_mouse_direct_timer
+	rtn blank
+	jam 2,mem_mouse_direct_timer
 	rtn
-p_g24_transmit_hop_pac_fail_wo_hop:
-	jam 2,mem_24g_sync_cnt
-p_g24_transmit_hop_pac_fail_stage1:	
-	jam 0,mem_24g_hop_pac_retry
-	jam 0,mem_24g_rf_last_sta
-	branch p_g24_transmit_rf_ctrl_clear
+endif
 
-p_g24_transmit_hop_pac_fail_hop_stage2:
-	jam 0,mem_24g_rf_hop_ch
-	branch p_g24_transmit_hop_pac_fail_stage1
+ifdef CLASSIC_BT
+p_mouse_send_switch_req_timer:
+	arg mem_mouse_send_switch_req_timer,regc
+	arg host_create_conn_resend,regb
+	branch timer_single_step
 
-	
-p_g24_transmit_pac_fail_hop_stage3:
-	fetch 2,mem_24g_txfail_cnt
-	increase 1,pdata
-	store 2,mem_24g_txfail_cnt
-	bbit1 10,p_g24_tx_attempt_fail	//1024ms * 8
-	fetch 1,mem_24g_rf_hop_ch
-	beq 1,p_g24_rf_hop_fastly
-	jam 1,mem_24g_rf_hop_ch
-p_g24_rf_hop_attemp_again:
-	fetch 1,mem_24g_rf_hop_ch
-	bne 1,p_g24_transmit_rf_ctrl_clear
-p_g24_rf_hop_fastly:
-	fetch 1,mem_24g_hop_fastly_cnt
-	increase 1,pdata
-	store 1,mem_24g_hop_fastly_cnt
-	beq 4,p_g24_rf_hop_fastly_exit
-	call p_g24_ch
-	jam 2,mem_24g_max_retry
-	branch p_g24_transmit_packet
+p_mouse_bt_check_sniff_req_timeout_timer:
+	arg mem_mouse_bt_send_first_package_timer,regc
+	arg p_mouse_bt_send_first_package,regb
+	branch timer_single_step
+p_mouse_bt_send_first_package:
+	jam 1,mem_mouse_bt_send_first_package_flag
+	rtn
+endif
 
-p_g24_rf_hop_fastly_exit:
-	call power_ctrl_pac_succ_decrs
-	jam 0,mem_24g_hop_fastly_cnt
-	branch p_g24_transmit_rf_ctrl_clear
+ifdef BLE
+p_mouse_le_enable_att_list_timer:
+	arg mem_le_start_encrypt_timer,regc
+	arg mouse_le_write_enable,regb
+	branch timer_single_step
 
-p_g24_transmit_hop_pac_succ_wo_hop:
-	jam 2,mem_24g_sync_cnt
-p_g24_transmit_hop_pac_succ:
-	jam 1,mem_24g_rf_last_sta
-	jam 0,mem_24g_rf_hop_ch
-	branch p_g24_transmit_rf_ctrl_clear
+p_mouse_le_current_mult_update_timer:
+	arg mem_mouse_le_current_mult_timer,regc
+	arg p_mouse_le_current_mult_reinit,regb
+	branch timer_single_step
+p_mouse_le_current_mult_reinit:
+	fetch 1,mem_lpm_mult_init
+	store 1,mem_lpm_mult
+	branch p_mouse_long_mult_flag_enable
 
-p_g24_transmit_succ_rf_config:
-	fetch 1,mem_24g_rf_work_stage
-	beq 3,p_g24_transmit_hop_pac_succ
-	fetch 1,mem_24g_data_type
-	isolate0 bit_hop,pdata
-	branch p_g24_transmit_rf_sta_init,true
-	fetch 1,mem_24g_rf_work_stage
-	beq 1,p_g24_transmit_hop_pac_succ_wo_hop
-	beq 2,p_g24_transmit_hop_pac_succ
-	rtn
+p_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 p_le_pairing_sm_start_check,regb
+	branch timer_single_step
 
-p_g24_rf_sta_check:
-	fetch 1,mem_24g_pairing_sm
-	rtnne STATE_24G_PAIRING_SUCCESS
-	call p_g24_rf_laststa_synccnt_check
-	ncall p_g24_rf_sync_cnt_check,user2
+p_le_pairing_sm_start_check:
+	fetch 1,mem_le_send_security_request_flag
+	nrtn blank
+	branch le_pairing_sm_start	
+endif
+
+p_mouse_wheel_trigger_timer:
+	arg mem_mouse_wheel_trigger_timer,regc
+	arg p_mouse_wheel_trigger_disable,regb
+	branch timer_single_step
+p_mouse_wheel_trigger_disable:
+	jam 0,mem_mouse_wheel_trigger
 	rtn
 
-p_g24_rf_laststa_synccnt_check:
-	disable user2
-	fetch 1,mem_24g_rf_last_sta
-	rtnne 1
-	fetch 1,mem_24g_sync_cnt
-	rtnne 0
-	jam 1,mem_24g_rf_work_stage
-	jam G24_MAX_RETRY,mem_24g_max_retry
-	branch enable_user2
+p_mouse_bt_discovery_check:
+p_mouse_bt_discovery_commbination_key:
+	fetch 1,mem_mouse_dpi_button_state
+	branch p_mouse_bt_discovery_commbination_key_down,blank
+p_mouse_bt_discovery_commbination_key_up:
+	fetch 1,mem_ui_button_timeout
+	store 1,mem_combination_ui_button_count	//combination key timer init 
+	fetch 1,mem_bt_discovey_button_statue
+	rtneq DPI_BUTTON_STATE_UP
+	jam DPI_BUTTON_STATE_UP,mem_bt_discovey_button_statue
+ifdef CLASSIC_BT	
+	arg MOUSE_BT_DISCOVERY_BUTTON_LONG_DOWN_FLAG,queue
+	call mouse_disable_function_flag
+endif	
+	branch mouse_bt_discovery_button_down_disable
+p_mouse_bt_discovery_commbination_key_down:
+	call p_mouse_bt_discovery_timer
+	branch mouse_bt_discovery_commbination_key_down+1
 
-p_g24_rf_sync_cnt_check:
-	fetch 1,mem_24g_sync_cnt
-	branch p_g24_rf_hop_attemp,blank
-	increase -1,pdata
-	store 1,mem_24g_sync_cnt
-	jam 2,mem_24g_rf_work_stage
-	call p_g24_ch
-	jam G24_MAX_RETRY,mem_24g_max_retry
-	rtn
+p_mouse_bt_discovery_timer:
+	arg mem_combination_ui_button_count,regc
+	arg p_mouse_long_button_bt_discovery,regb
+	branch timer_single_step
 
-p_g24_rf_hop_attemp:
-	jam 3,mem_24g_rf_work_stage
-	fetch 1,mem_24g_rf_hop_ch
-	nbranch p_g24_rf_hop_attemp_again,blank
-	call p_g24_ch
-	jam 2,mem_24g_max_retry
-	rtn
+p_mouse_long_button_bt_discovery:
+	fetch 1,mem_le_switch_adv_flag
+	nbranch p_mouse_fast_conn_adv_switch_timer_reinit,blank
+p_mouse_long_button_bt_normal_discovery:
+	isolate1 mark_24g,mark
+	call p_mouse_le_adv_start,true
+	fetch 1,mem_mouse_latest_mode
+	sub pdata,LATEST_MODE_NULL,null
+	call p_mouse_le_adv_start,zero
 
-p_g24_txdata_prep:
-	fetch 1,mem_24g_pairing_sm
-	bne STATE_24G_PAIRING_SUCCESS,p_g24_pairing_sm	
-p_g24_txdata_prep_packeage_data:
-	call p_g24_package_data
-	call p_g24_transmit_prep
-p_g24_txdata_enable_tx:
-	jam ENSURE_ON_24G,mem_24g_ensure
+	call p_mouse_le_adv_data_update
+ifdef CLASSIC_BT	
+	arg MOUSE_BT_DISCOVERY_BUTTON_LONG_DOWN_FLAG,queue
+	call mouse_enable_function_flag
+endif	
+	branch mouse_long_button_bt_discovry
+
+p_mouse_le_adv_start:
+	jam 1,mem_mouse_le_adv_start
 	rtn
 
-p_g24_package_data:
-	fetch 2,mem_cb_24g_data
-	call callback_func
-	branch p_g24_accumulate_mouse_data,user
-	fetch 7,mem_24g_txbuf+1	//mouse data
+p_mouse_fast_conn_adv_switch_timer_reinit:
+	setarg BLE_DIRECT_ADV_TIMEOUT	//ble fast conn time 3min
+	store 2,mem_mouse_direct_timer
+	rtn
+	
+p_mouse_multi_led_blink_timer:
+	fetch 1,mem_mouse_multi_led_blink_enable
 	rtn blank
-	branch enable_user	// retransmit
-p_g24_accumulate_mouse_data:
-	call p_mouse_data_xy_release
-	jam 0,mem_24g_abort_pac
-	add rega,1,pdata
-	store 1,mem_24g_datalen
-	call p_g24_transmit_rf_ctrl_clear
-	store 1,mem_24g_txbuf
-	ifetcht 1,contw
-	ifetch 1,regb
-	ior temp,pdata
-	istore 1,contw
-	increase 1,regb
-	ifetch 4,regb
-	istore 4,contw
-	increase 4,regb
-	arg mem_24g_txbuf+6,contw
-	arg 2,loopcnt
-p_g24_accumulation_loop2:
-	ifetch 1,regb
-	ifetcht 1,contw
-	iadd temp,pdata
-	istore 1,contw
-	increase 1,regb
-	loop p_g24_accumulation_loop2
+	fetch 1,mem_mouse_multi_led_type
+//	beq MULTI_LED_ON,p_mouse_multi_led_type_on
+	beq MULTI_LED_BLINK,p_mouse_multi_led_type_blink
+	rtn
+
+//p_mouse_multi_led_type_on:
+//	call p_mouse_multi_led_on
+//	fetch 1,mem_mouse_multi_led_on_timer
+//	increase 1,pdata
+//	store 1,mem_mouse_multi_led_on_timer
+//	fetcht 1,mem_mouse_multi_led_on_timer_init
+//	isub temp,null
+//	call p_mouse_multi_led_off_poweron2s,zero
+//	rtn
+//p_mouse_multi_led_off_poweron2s:
+//	jam 0,mem_mouse_multi_led_on_poweron2s_flag
+//	branch p_mouse_multi_led_off
+
+p_mouse_multi_led_type_blink:
+	arg mem_mouse_multi_led_blink_timer,regc
+	arg p_mouse_multi_led_type_blink_timeout,regb
+	branch timer_single_step
+p_mouse_multi_led_type_blink_timeout:
+	fetch 1,mem_mouse_multi_led_blink_timer_init
+	store 1,mem_mouse_multi_led_blink_timer
+	fetch 1,mem_mouse_multi_led_blink_count_limited
+	branch p_mouse_multi_led_blink_count_no_limited,blank
+	fetch 1,mem_mouse_multi_led_blink_count
+	branch p_mouse_multi_led_blink_off,blank
+	increase -1,pdata
+	store 1,mem_mouse_multi_led_blink_count
+p_mouse_multi_led_blink_count_no_limited:
+	fetch 1,mem_mouse_multi_led_state
+	beq ON,p_mouse_multi_led_off
+	beq OFF,p_mouse_multi_led_on
 	rtn
 
-p_mouse_data_xy_release:
-	fetch 1,mem_config_function_enable
-	rtnbit1 ENABLE_SENSOR_MOTION_PIN
-	fetch 1,mem_mouse_long_mult_flag
-	rtnne 1
-	setarg 0
-	store 1,mem_mouse_long_mult_flag
-	store 4,mem_mouse_x
-	branch p_mouse_sensor_poweron
+p_mouse_multi_led_on:
+	jam ON,mem_mouse_multi_led_state
+	fetcht 1,mem_mouse_multi_led_gpio
+	call gpio_config_output
+	fetcht 1,mem_mouse_multi_led_gpio
+	branch gpio_out_inactive
 
-p_g24_transmit_packet:
-	jam 0,mem_24g_retry
-p_g24_transmit_loop:
-	arg param_rx_setup,timeup
-	until clkn_rt,meet
-	call p_g24_transmit_receive_ack
-	fetch 1,mem_24g_no_ack	//tx noack
-	rtneq no_ack_24g
-	nbranch p_g24_retransmit,sync
-	nbranch p_g24_retransmit,user3
-	call p_g24_txbuf_clear
-	call p_g24_ackpayload_parse
-	call power_ctrl_pac_succ_incrs
-p_g24_transmit_next_packet:
-	fetch 1,mem_24g_pid
-	increase 1,pdata
-	store 1,mem_24g_pid
-	fetch 1,mem_24g_pairing_sm
-	bne STATE_24G_PAIRING_SUCCESS,p_g24_paring_mode_start
-	call p_g24_transmit_succ_rf_config
-p_g24_transmit_abandon:
+p_mouse_multi_led_blink_off:
 	setarg 0
-	store 2,mem_24g_txfail_cnt
-	store 1,mem_24g_get_ack_fail
-	store 1,mem_24g_hop_pac_retry
-	jam ENSURE_OFF_24G,mem_24g_ensure
-	rtn
+	store 3,mem_mouse_multi_led_blink_timer
+p_mouse_multi_led_off:
+	fetch 1,mem_mouse_multi_led_blink_count
+	nbranch p_mouse_multi_led_off_wait_blink_over,blank
+	jam 0,mem_mouse_multi_led_blink_poweron3s_flag
+	jam 0,mem_mouse_multi_led_blink_enable
+	jam 0,mem_mouse_multi_led_type
+p_mouse_multi_led_off_wait_blink_over:
+	jam 0,mem_mouse_multi_led_on_timer
+	jam OFF,mem_mouse_multi_led_state
+p_mouse_multi_led_off2:
+	fetcht 1,mem_mouse_multi_led_gpio
+	set1 gpio_active_bit,temp
+	call gpio_config_output
+	fetcht 1,mem_mouse_multi_led_gpio
+	branch gpio_out_active
 
-p_g24_txbuf_clear:
-	arg 4,loopcnt
-	arg mem_24g_txbuf,contw
-	branch memset0
 
-p_g24_paring_mode_start:
-	call power_ctrl_pac_succ_cnt_init
-	branch p_g24_paring_mode
+//p_mouse_mode_bt_device1_multi_led_on:
+//p_mouse_mode_24g_device_multi_led_on:
+//	jam 1,mem_mouse_multi_led_on_poweron2s_flag
+//	jam ON,mem_mouse_multi_led_blink_enable
+//	jam MULTI_LED_ON,mem_mouse_multi_led_type
+//	jam 0,mem_mouse_multi_led_on_timer
+//	rtn
+
+p_mouse_discovery_multi_led_blink:
+	jam 0,mem_mouse_multi_led_blink_poweron3s_flag
+	jam 1,mem_mouse_multi_led_blink_timer_init	//500ms
+p_mouse_discovery_multi_led_blink1:
+	jam 0,mem_mouse_multi_led_blink_count_limited
+	jam 1,mem_mouse_multi_led_blink_count//0 will clear mem_mouse_multi_led_blink_enable/mem_mouse_multi_led_type
+p_mouse_multi_led_blink_enable:
+	jam 5,mem_mouse_multi_led_blink_timer
+	jam ON,mem_mouse_multi_led_blink_enable
+	jam MULTI_LED_BLINK,mem_mouse_multi_led_type
+	rtn
+
+p_mouse_bt_reconn_multi_led_blink:
+	jam 3,mem_mouse_multi_led_blink_timer_init	//100ms
+	branch p_mouse_discovery_multi_led_blink1
 
-p_g24_transmit_receive_ack:
-	disable user3
-	call p_g24_transmit
-	
-ifdef RF_DEBUG
-	call test_gpio_low
-endif
+p_mouse_discovey_led_blink_off:
+//	fetch 1,mem_mouse_multi_led_on_timer
+//	nrtn blank
+//	fetch 1,mem_mouse_multi_led_on_poweron2s_flag
+//	nrtn blank
+	fetch 1,mem_mouse_multi_led_blink_poweron3s_flag
+	nrtn blank
+	branch p_mouse_multi_led_blink_off
 
-	fetch 1,mem_24g_no_ack
-	beq no_ack_24g,p_g24_transmit_no_ack	//tx no ack
-	force 0,radio_ctrl
-	fetch 4,mem_24g_addr
-	iforce access
-	fetcht 1,mem_last_freq
-	call set_freq_rx
-	call rf_rx_enable
-	call p_g24_receive_rxon
-	call p_g24_end_of_packet,user3
-	rtn
-p_g24_transmit_no_ack:
-	call p_g24_end_of_packet
-	branch p_g24_transmit_next_packet
+//p_mouse_mode_bt_device1_multi_led_blink3s:
+//	jam 1,mem_mouse_multi_led_blink_poweron3s_flag
+p_mouse_mode_24g_device_multi_led_blink3s:
+	jam 5,mem_mouse_multi_led_blink_count
+	jam 10,mem_mouse_multi_led_blink_timer_init	//100ms
+	branch p_mouse_dpi_multi_led_blink+1
+p_mouse_dpi_multi_led_blink:
+	jam 5,mem_mouse_multi_led_blink_timer_init	//500ms
+	jam 1,mem_mouse_multi_led_blink_count_limited
+	branch p_mouse_multi_led_blink_enable
 
-p_g24_retransmit:
-	fetch 1,mem_24g_get_ack_fail
-	increase 1,pdata
-	store 1,mem_24g_get_ack_fail
-	fetch 1,mem_24g_pairing_sm
-	bne STATE_24G_PAIRING_SUCCESS,p_g24_tx_paring_retry
-	fetcht 1,mem_24g_retry
-	increase 1,temp
-	storet 1,mem_24g_retry
-	fetch 1,mem_24g_max_retry
-	isub temp,pdata
-	nbranch p_g24_transmit_loop,blank
-	fetch 1,mem_24g_rf_work_stage
-	beq 3,p_g24_transmit_pac_fail_hop_stage3
-	fetch 1,mem_24g_hop_pac_retry
+ifdef ADC_ENABLE
+p_mouse_adc_read:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_ENABLE_ADC
+	fetch 1,mem_adc_read_timer
 	increase 1,pdata
-	store 1,mem_24g_hop_pac_retry
-	beq 2,p_g24_transmit_hop_pac_fail
-	call p_g24_hop_ch_enable
-	jam 1,mem_24g_max_retry
-	branch p_g24_transmit_packet
-
-p_g24_tx_paring_retry:
-	fetch 1,mem_24g_get_ack_fail
-	rtnne 0xff
-	jam 0,mem_24g_get_ack_fail
-	branch p_g24_stop_g24_mode
-
-p_g24_tx_attempt_fail:
-	setarg 0
-	store 2,mem_24g_txfail_cnt
-p_g24_stop_g24_mode:
-	jam BT_EVT_24G_ATTEMPT_FAIL,mem_fifo_temp
-	branch ui_ipc_send_event
-
-p_g24_ackpayload_parse:
-	call p_g24_read_len_pid_crc
-	fetch 1,mem_24g_rxdata_length	//ack payload length 
+	store 1,mem_adc_read_timer
+	sub pdata,10,null              //1s read adc
+	rtn positive
+	jam 0,mem_adc_read_timer
+	call p_adc_set_mode
+	call vdd_calculate_by_mode
+	store 2,mem_mouse_vdd_now_vol
+	arg mem_mouse_vdd_calculate_set,rega
+	call p_adc_bat_percent_lowpower_out
+	fetch 1,mem_adc_power_flag
+	bbit1 1,app_enter_hibernate
+	bbit0 0,p_mouse_adc_no_low_voltage
+	jam 1,mem_mouse_adc_last_low_voltage_flag
+	branch mouse_adc_low_voltage
+p_mouse_adc_no_low_voltage:
+	call mouse_adc_no_low_voltage
+	fetch 1,mem_mouse_adc_last_low_voltage_flag
 	rtn blank
-	iforce loopcnt
-	arg mem_24g_rxbuf+2,contr
-	arg mem_24g_rxpayload,contw	//ack payload buffer 
-	branch memcpy
+	jam 0,mem_mouse_adc_last_low_voltage_flag
+	branch p_mouse_multi_led_off
+	
+p_adc_set_mode:
+	fetch 1,mem_adc_config_flag
+	beq ADC_CONFIG_GPIO,p_adc_check_gpio
+	branch adc_set_mode+1
+p_adc_check_gpio:
+	hfetch 1,core_gpio_pu0	//gpio5 pull up disable
+	set0 5,pdata
+	hstore 1,core_gpio_pu0
+	call adc_check_gpio
+	hfetch 1,core_gpio_pu0	//gpio5 pull up enable
+	set1 5,pdata
+	hstore 1,core_gpio_pu0
+	rtn
 
-power_ctrl_pac_succ_cnt_init:
-	jam 1,mem_power_ctrl_level
-	jam 0,mem_power_ctrl_pac_succ_cnt
+p_adc_bat_percent_lowpower_out:
+	ifetch 8,rega
+	store 8,mem_pdatatemp
+	fetcht 2,mem_pdatatemp+2	//shutdown voltage 0.9v
+	fetch 2,mem_pdatatemp+6		//now voltage
+	isub temp,null
+	nbranch adc_set_no_power_flag,positive
+	fetcht 2,mem_pdatatemp+4	//low voltage 1.0v
+	isub temp,null
+	nbranch adc_set_low_power_flag,positive
+p_adc_clear_low_power_flag:
+	fetch 1,mem_adc_power_flag
+	set0 0,pdata
+	store 1,mem_adc_power_flag
+	rtn	
+	
+p_mouse_low_voltage_led_timer:
+	fetch MOUSE_FLAG_LEN,mem_mouse_flag
+	rtnbit0 MOUSE_LOW_VOLTAGE_FLAG
+	fetch 2,mem_ui_state_map
+	rtnbit1 UI_STATE_BLE_ADV
+	rtnbit1 UI_STATE_BT_DISCOVERY
+	fetch 2,mem_mouse_multi_led_blink_count
+	nrtn blank
+	fetch 1,mem_adc_low_volatage_led_timer_count
+	pincrease 1
+	store 1,mem_adc_low_volatage_led_timer_count
+	beq 5,p_mouse_multi_led_off
+	sub pdata,10,null
+	nbranch p_mouse_adc_low_volatage_led_timer_count_clean,positive
 	rtn
-power_ctrl_pac_succ_incrs:
-	fetch 1,mem_power_ctrl_pac_succ_cnt
-	increase 1,pdata
-	store 1,mem_power_ctrl_pac_succ_cnt
+p_mouse_adc_low_volatage_led_timer_count_clean:
+	jam 1,mem_adc_low_volatage_led_timer_count
+	branch p_mouse_multi_led_on
+endif
+
+p_mouse_seting_dpi:
+p_mouse_seting_dpi_sensor_type:
+	fetch 1,mem_config_sensor_type
+//	beq P3212,p_mouse_seting_3212_dpi
+	beq P3065_XY,p_mouse_seting_3065XY_dpi
+	beq MX8650,p_mouse_seting_3065XY_dpi
+	beq KA8,p_mouse_seting_ka8_dpi
+p_mouse_seting_3205_dpi:
+	fetch 1,mem_mouse_dpi
+	sub pdata,MOUSE_DPI_LEVEL2,null
+	call p_mouse_3205_dpi_recount,zero
+	fetch 1,mem_mouse_dpi
+	beq MOUSE_DPI_LEVEL1,mouse_set_cpi1
+	beq MOUSE_DPI_LEVEL4,mouse_set_cpi4
+	branch mouse_set_cpi3
+p_mouse_3205_dpi_recount:
+	jam MOUSE_DPI_LEVEL3,mem_mouse_dpi
 	rtn
-power_ctrl_pac_succ_decrs:
-	fetch 1,mem_power_ctrl_pac_succ_cnt
-	sub pdata,2,null
-	ncall power_ctrl_pac_succ_cnt_reinit,positive
-	fetch 1,mem_power_ctrl_pac_succ_cnt
-	rtneq 0
+
+p_mouse_seting_3065XY_dpi:
+	fetch 1,mem_mouse_dpi
+	sub pdata,MOUSE_DPI_LEVEL2,null
+	call p_mouse_3205_dpi_recount,zero
+	fetch 1,mem_mouse_dpi
+	beq MOUSE_DPI_LEVEL1,p_mouse_3065xy_set_cpi1
+	beq MOUSE_DPI_LEVEL4,p_mouse_3065xy_set_cpi4
+p_mouse_3065xy_set_cpi3:
+	fetch 1,mem_320x_dpi_3
 	increase -1,pdata
-	store 1,mem_power_ctrl_pac_succ_cnt
-	rtn
-power_ctrl_pac_succ_cnt_reinit:
-	jam 3,mem_power_ctrl_pac_succ_cnt
-	rtn
+p_mouse_dpi_store:
+	store 1,mem_mouse_cpi_count
+	branch mouse_p3205_dpi+3
+p_mouse_3065xy_set_cpi1:
+	fetch 1,mem_320x_dpi_1
+	increase -1,pdata
+	branch p_mouse_dpi_store
+p_mouse_3065xy_set_cpi4:
+	fetch 1,mem_320x_dpi_4
+	increase -1,pdata
+	branch p_mouse_dpi_store
 
-power_ctrl_start:
-	arg mem_rssi_signal_buf,rega
-	call p_rssi_average
-	storet 1,mem_rssi_avg_received
+p_mouse_seting_ka8_dpi:
+	fetch 1,mem_mouse_dpi
+	call p_mouse_3205_dpi_recount,blank
+	fetch 1,mem_mouse_dpi
+	beq MOUSE_DPI_LEVEL2,mouse_set_cpi2			//800
+	beq MOUSE_DPI_LEVEL4,p_mouse_ka8_set_cpi3		//1600
+	branch mouse_set_cpi4							//1200
+p_mouse_ka8_set_cpi3:	
+	setarg 5
+	branch mouse_p3205_dpi
+	
+//p_mouse_seting_3212_dpi:
+//	fetch 1,mem_mouse_dpi
+//	sub pdata,MOUSE_DPI_LEVEL2,null
+//	call p_mouse_3205_dpi_recount,zero
+//	fetch 1,mem_mouse_dpi
+//	beq MOUSE_DPI_LEVEL1,mouse_set_p3212_cpi1
+//	beq MOUSE_DPI_LEVEL4,mouse_set_p3212_cpi4
+//	branch mouse_set_p3212_cpi3
+
+
+//p_mouse_seting_8009_dpi:
+//	fetch 1,mem_mouse_dpi
+//	sub pdata,MOUSE_DPI_LEVEL1,null
+//	call p_mouse_8009_dpi_recount,zero
+//	fetch 1,mem_mouse_dpi
+//	beq MOUSE_DPI_LEVEL2,p_mouse_8650_8009_set_cpi1		//750
+//	beq MOUSE_DPI_LEVEL4,mouse_set_cpi2		//1500
+//	branch mouse_set_cpi1						//1250
+//p_mouse_8009_dpi_recount:
+//	jam MOUSE_DPI_LEVEL2,mem_mouse_dpi
+//	rtn
+
+//p_mouse_seting_8650_dpi:
+//	fetch 1,mem_mouse_dpi
+//	sub pdata,MOUSE_DPI_LEVEL1,null
+//	call p_mouse_8065_dpi_recount,zero
+//	fetch 1,mem_mouse_dpi
+//	beq MOUSE_DPI_LEVEL2,p_mouse_8650_8009_set_cpi1	//800
+//	beq MOUSE_DPI_LEVEL4,mouse_set_cpi2		//1600
+//	branch mouse_set_cpi1						//1200
+//p_mouse_8065_dpi_recount:
+//	jam MOUSE_DPI_LEVEL2,mem_mouse_dpi
+//	rtn
+//p_mouse_8650_8009_set_cpi1:	
+//	jam 0,mem_mouse_cpi_count
+//	branch mouse_p3205_dpi+3
 
-ifdef DEBUGLOG
-ifdef DEBUGLOG_MISC
-	setarg DEBUGLOG_DTYPE_MISC
-	store 2,mem_debuglog_datatype
-	fetch 1,mem_power_ctrl_pac_succ_cnt
-	store 1,mem_debuglog_dataval
-	fetch 1,mem_rssi_avg_received
-	store 1,mem_debuglog_dataval+1
-	call debuglog_push	
-endif
-endif
-	setarg RSSI_DIS_MAX_24G
-	bmark1 mark_24g,power_ctrl_start_next
-	setarg RSSI_DIS_MAX_BLE
-power_ctrl_start_next:	
-	isub temp,null
-	nbranch power_ctrl_txpower_incrs_force,positive
 
-	fetch 1,mem_power_ctrl_pac_succ_cnt
-	sub pdata,2,null
-	nbranch power_ctrl_txpower_decrs_check,positive
-	fetch 1,mem_power_ctrl_pac_succ_cnt
-	beq 0,power_ctrl_txpower_incrs
-	rtn
-	
-power_ctrl_txpower_decrs_check:
-	fetch 1,mem_power_ctrl_pac_succ_cnt
-	rtnne 32
-	jam 0,mem_power_ctrl_pac_succ_cnt
-power_ctrl_txpower_decrs:
-	fetcht 1,mem_rssi_avg_received
-	setarg RSSI_DIS_MIN_24G
-	bmark1 mark_24g,power_ctrl_txpower_decrs_next
-	setarg RSSI_DIS_MIN_BLE	
-power_ctrl_txpower_decrs_next:
-	isub temp,null
-	nrtn positive
-	fetch 1,mem_power_ctrl_level
-	beq 0,power_ctrl_decrs_level0
-	increase -1,pdata
-	store 1,mem_power_ctrl_level
-	beq 0,power_ctrl_decrs_level0
-power_ctrl_decrs_level1:
-power_ctrl_incrs_level1:	//0dBm
-ifdef DEBUGLOG
-ifdef DEBUGLOG_MISC
-	setarg DEBUGLOG_DTYPE_MISC
-	store 2,mem_debuglog_datatype
-	setarg MISC_TXPOWER_1
-	store 2,mem_debuglog_dataval
-	call debuglog_push
-endif
+p_mouse_motion:
+	disable user
+	setarg 0
+	store 6,mem_mouse_x
+	call p_mouse_cheak_sensor_data
+	call mouse_zwheel
+	call mouse_t_zwheel
+	call p_mouse_key
+ifdef MOUSE_SMOOTHER	
+	nbranch p_drawing_optima_init,user
+	call p_drawing_optima
+else
+	nrtn user
 endif
-	jam TX_POWER_0DB,mem_tx_power
-	rtn
+	branch mouse_motion+9
 
-power_ctrl_txpower_incrs_force:
-	jam 0,mem_power_ctrl_pac_succ_cnt
-power_ctrl_txpower_incrs:
-	fetch 1,mem_power_ctrl_level
-	beq 2,power_ctrl_incrs_level2
-	increase 1,pdata
-	store 1,mem_power_ctrl_level
-	beq 1,power_ctrl_incrs_level1
-power_ctrl_incrs_level2:	//+6dBm
-ifdef DEBUGLOG
-ifdef DEBUGLOG_MISC
-	setarg DEBUGLOG_DTYPE_MISC
-	store 2,mem_debuglog_datatype
-	setarg MISC_TXPOWER_2
-	store 2,mem_debuglog_dataval
-	call debuglog_push
-endif
-endif
+p_mouse_cheak_sensor_data:
+//	fetch 1,mem_config_sensor_type
+//	beq P3212,p_mouse_p3212_sensor_motion
+//	beq P3610,mouse_p3610_sensor_motion
+p_mouse_p32xx_sensor_motion:
+	call mouse_clear_sensor_data
+	disable user
+//	fetch 1,mem_config_function_enable
+//	bbit0 ENABLE_SENSOR_MOTION_PIN,mouse_p32xx_sensor_motion_2
+//	fetcht 1,mem_sensor_data_gpio
+//	call gpio_get_bit
+//	nrtn true
+	branch mouse_p32xx_sensor_motion_2
+//p_mouse_p3212_sensor_motion:
+//	call mouse_clear_sensor_data
+//	fetch 1,mem_config_function_enable
+//	bbit0 ENABLE_SENSOR_MOTION_PIN,mouse_p3212_sensor_motion_1
+//	fetcht 1,mem_sensor_data_gpio
+//	call gpio_get_bit
+//	nrtn true
+//	branch mouse_p3212_sensor_motion_1
 
-	jam TX_POWER_5DB,mem_tx_power
+p_mouse_key:
+	call p_mouse_check_key_gpio
+	branch mouse_key+1
+p_mouse_check_key_gpio:
+	arg 0,rega
+	call p_mouse_check_lkey_gpio
+//	call p_mouse_check_rkey_gpio
+//	call p_mouse_check_mkey_gpio
+	call p_mouse_check_skey_gpio
+	branch mouse_check_key_gpio+11
+	
+p_mouse_check_skey_gpio:
+//	fetch 1,mem_bk_button_gpio
+//	rtneq GPIO_DISABLE
+	call p_mouse_check_bk_key_gpio
+	branch p_mouse_check_fw_key_gpio
+	
+p_mouse_check_lkey_gpio:
+	fetcht 1,mem_lbutton_gpio
+	call p_gpio_set_input_pu
+	fetcht 1,mem_lbutton_gpio
+	call gpio_get_bit
+	setflag true,0,rega			//true = 1,input low level
+//	rtn
+p_mouse_check_rkey_gpio:
+	fetcht 1,mem_rbutton_gpio
+	call p_gpio_set_input_pu
+	fetcht 1,mem_rbutton_gpio
+	call gpio_get_bit
+	setflag true,1,rega			//true = 1,input low level
+//	rtn
+p_mouse_check_mkey_gpio:
+	fetcht 1,mem_mbutton_gpio
+	call p_gpio_set_input_pu
+	fetcht 1,mem_mbutton_gpio
+	call gpio_get_bit
+	setflag true,2,rega			//true = 1,input low level
 	rtn
+p_mouse_check_bk_key_gpio:
+	fetcht 1,mem_bk_button_gpio
+	call p_gpio_set_input_pd
+	fetcht 1,mem_bk_button_gpio
+	call gpio_get_bit
+	nsetflag true,3,rega
+	branch p_gpio_set_input_pu
+p_mouse_check_fw_key_gpio:
+	fetcht 1,mem_fw_button_gpio
+	call p_gpio_set_input_pd
+	fetcht 1,mem_fw_button_gpio
+	call gpio_get_bit
+	nsetflag true,4,rega
+//	branch p_gpio_set_input_pu
+p_gpio_set_input_pu:
+	set1 gpio_active_bit,temp
+	arg core_gpio_pu0,contw
+	call gpio_set_bit
+	set0 gpio_active_bit,temp
+	branch p_gpio_set_input_pd+4
 	
-power_ctrl_decrs_level0: //-5dBm
-ifdef DEBUGLOG
-ifdef DEBUGLOG_MISC
-	setarg DEBUGLOG_DTYPE_MISC
-	store 2,mem_debuglog_datatype
-	setarg MISC_TXPOWER_0
-	store 2,mem_debuglog_dataval
-	call debuglog_push
+p_gpio_set_input_pd:
+	set0 gpio_active_bit,temp
+	arg core_gpio_pu0,contw
+	call gpio_set_bit
+	set1 gpio_active_bit,temp
+	arg core_gpio_pd0,contw
+	branch gpio_set_high_impedance+4
+
+p_mouse_bb_event_discovery_btn:
+ifdef G24	
+	isolate1 mark_24g,mark
+	call p_g24_check_51cmd_stop_24g,true
 endif
+	jam 0,mem_mouse_send_blank_timer
+	fetch 1,mem_mouse_le_not_tx_disconn
+	call mouse_disconnect,blank
+	setarg 0
+	store 2,mem_mouse_no_data_timer
+	branch mouse_bb_event_discovery_btn+3
+
+p_mouse_start_discovery:
+	call p_mouse_tx_power_init
+	jam 0,mem_le_send_security_request_flag
+	jam 1,mem_mouse_start_discovery_enable
+	jam MODE_BT_DEVICE1,mem_device_flag
+	jam 0,mem_mouse_clear_sensor_data_flag
+p_mouse_start_discovery_norandom:
+ifdef BLE_FAST_CONN_ENABLE
+	fetch 6,mem_le_normal_lap
+	store 6,mem_le_lap
+	jam 0x5a,mem_mouse_fast_conn_flag
+	call p_mouse_store_fast_conn_flag
 endif
+	call app_lpm_mult_disable
+	fetch 2,mem_discovery_timeout
+	store 2,mem_mouse_discovery_timer
+	jam 6,mem_connection_options
+	setarg 0
+	store 2,mem_mouse_no_data_timer
+	store 2,mem_mouse_direct_timer
+	call p_mouse_store_eeprom_enable
+	call mouse_bt_discovery_button_down_disable
 
-	jam TX_POWER_f5DB,mem_tx_power
-	rtn
-	
-p_g24_start_pairing_sm1:
-	set1 mark_24g,mark
-	call p_g24_pair_init
-p_g24_set_pairing_sm_1:
-	jam STATE_24G_PAIRING_1,mem_24g_pairing_sm
-	rtn
+	fetch 1,mem_mouse_le_adv_start
+	ncall p_check_51cmd_adv,blank
 
-p_g24_pair_init:
-	jam TX_POWER_PAIR,mem_tx_power
-	jam 0,mem_24g_pid
-	jam G24_PAIR_CH,mem_24g_ch
-	fetch 4,mem_24g_paring_addr
-	branch p_g24_update_addr_and_synccrc8
+	call mouse_start_discovery_norandom+13
+	branch p_mouse_discovery_multi_led_blink
 
-p_g24_pairing_sm:
-	fetch 1,mem_24g_ensure
-	beq ENSURE_ON_24G,enable_user
-	fetch 1,mem_24g_pairing_sm
-	beq STATE_24G_PAIRING_1,p_g24_pairing_sm_1
-	beq STATE_24G_PAIRING_2,p_g24_pairing_sm_2
-	beq STATE_24G_PAIRING_3,p_g24_pairing_sm_3
-	branch assert
+p_check_51cmd_adv:
+ifdef BLE_FAST_CONN_ENABLE
+	fetch 6,mem_le_normal_lap
+	store 6,mem_le_lap
+endif
+	call p_mouse_le_adv_data_update
+	branch check_51cmd_adv
 
-p_g24_pairing_sm_1:
-	jam STATE_24G_PAIRING_1_WAITING_ACK,mem_24g_pairing_sm
-	jam 0xaa,mem_24g_common_temp
-	branch p_g24_pairing_sm_common
-p_g24_pairing_sm_2:
-	jam STATE_24G_PAIRING_2_WAITING_ACK,mem_24g_pairing_sm
-	jam 0x55,mem_24g_common_temp
-	branch p_g24_pairing_sm_common
-p_g24_pairing_sm_3:
-	jam STATE_24G_PAIRING_3_WAITING_ACK,mem_24g_pairing_sm
-	jam 0x22,mem_24g_common_temp
-p_g24_pairing_sm_common:
-	fetch 1,mem_24g_data_type
-	and_into bits_data,pdata
-	store 1,mem_24g_common_temp+1
-	fetch 4,mem_24g_device_addr
-	store 4,mem_24g_common_temp+2
-p_g24_put_pairing_data_in_buff:
-	jam 0,mem_24g_common_temp+6
-	arg mem_24g_common_temp,rega
-	arg 7,temp
-	call p_g24_put_data_in_buff
-	call p_g24_transmit_prep
-	call p_g24_txdata_enable_tx
-	branch enable_user
+p_mouse_le_adv_data_update:
+	jam 0x1f,mem_le_adv_data_len
+	jam 0x1f,mem_le_scan_data_len
+	call p_mouse_store_eeprom_enable
+	jam 0,mem_mouse_le_reconnect_flag
+	arg mem_le_adv_swift_pair,contr
+p_le_adv_data_update:
+	arg mem_le_adv_data+11,contw
+	arg 19,loopcnt
+	call memcpy
+	branch le_modified_name_adv
 
-p_g24_paring_mode:
-	fetch 1,mem_24g_pairing_sm
-	rtneq STATE_24G_PAIRING_SUCCESS
-	beq STATE_24G_PAIRING_1_WAITING_ACK,p_g24_pairing_sm_1_waiting_ack
-	beq STATE_24G_PAIRING_2_WAITING_ACK,p_g24_pairing_sm_2_waiting_ack
-	beq STATE_24G_PAIRING_3_WAITING_ACK,p_g24_pairing_sm_3_waiting_ack
-	rtn
+p_mouse_store_eeprom_enable:
+	arg MOUSE_STORE_EEPROM_FLAG,queue
+	branch mouse_enable_function_flag
 
+p_mouse_check_fast_conn_adv_start:
+	isolate1 mark_24g,mark
+	ncall p_mouse_discovery_multi_led_blink,true
+p_mouse_check_fast_conn_adv_start1:
+	arg MOUSE_STORE_EEPROM_FLAG,queue
+	call mouse_disable_function_flag
+	call p_mouse_fast_conn_init
+	jam 0,mem_mouse_le_reconnect_flag
+	jam 0,mem_le_adv_data_len
+	jam 0x1f,mem_le_scan_data_len
+	branch check_51cmd_adv
 
-p_g24_pairing_sm_1_waiting_ack:
-	jam STATE_24G_PAIRING_2,mem_24g_pairing_sm
-	branch p_g24_transmit_abandon
-p_g24_pairing_sm_2_waiting_ack:
-	jam STATE_24G_PAIRING_3,mem_24g_pairing_sm
-	branch p_g24_transmit_abandon
-p_g24_pairing_sm_3_waiting_ack:
-	jam STATE_24G_PAIRING_SUCCESS,mem_24g_pairing_sm
-	jam BT_EVT_24G_PAIRING_COMPLETE,mem_fifo_temp
-	call ui_ipc_send_event	
-	fetch 4,mem_24g_rxpayload+2
-	call p_g24_update_addr_and_synccrc8
-	branch p_g24_transmit_abandon
+p_le_fast_conn_adv_data_update:
+	call p_mouse_fast_conn_init
+	arg mem_le_adv_data,contw
+	arg 11,loopcnt
+	call memcpy
+	branch le_modified_name_adv
 
-p_g24_start_24g_mode:
-	//fetch 1,mem_mouse_device_led_on_timer_init
-	//store 1,mem_mouse_device_led_on_timer_count
-	//jam 1,mem_mouse_g24_led_on_enable
-	set0 mark_24g,mark
-	jam with_ack_24g,mem_24g_no_ack	//tx ack
-	call p_g24_ch_syncword_crc8_init
-	jam 2,mem_mouse_mode_swtich_step
-	fetch 1,mem_24g_pairing_sm
-	rtnne STATE_24G_PAIRING_SUCCESS
-	call p_g24_tx_attemp_data_prep
-p_g24_tx_attemp_dongle:
-	setarg 0
-	store 2,mem_24g_check_dongle_times
-p_g24_tx_attemp_dongle_loop:
-	call lpo_calibration
-	nop 2000
-	fetch 1,mem_24g_check_dongle_times
-	beq 0xff,p_g24_stop_g24_mode
-	call p_g24_transmit_receive_ack
-	nbranch p_g24_attemp_txdata_retry,sync
-	nbranch p_g24_attemp_txdata_retry,user3
-p_g24_tx_attemp_dongle_succ:
-	set1 mark_24g,mark
+p_mouse_stop_discovery:
+	call p_mouse_discovey_led_blink_off
 	setarg 0
-	store 2,mem_24g_check_dongle_times
-	jam 0,mem_mouse_long_mult_flag
-	jam BT_EVT_24G_ATTEMPT_SUCCESS,mem_fifo_temp
-	call ui_ipc_send_event
-	call p_g24_txbuf_clear
-	branch p_g24_transmit_by_interrupt_enable
-
-p_g24_tx_attemp_data_prep:
-	jam 0xff,mem_24g_common_temp
-	fetch 1,mem_24g_data_type
-	store 1,mem_24g_common_temp+1
-	fetch 4,mem_24g_device_addr
-	store 4,mem_24g_common_temp+2
-	arg 6,temp
-	arg mem_24g_common_temp,rega
-	call p_g24_put_data_in_buff
-	branch p_g24_transmit_prep
-	
-p_g24_attemp_txdata_retry:
-	fetch 2,mem_24g_check_dongle_times
-	increase 1,pdata
-	store 2,mem_24g_check_dongle_times
-	call p_g24_ch
-	branch p_g24_tx_attemp_dongle_loop
+	store 2,mem_mouse_discovery_timer
+	jam 1,mem_mouse_init_sensor_reset_flag
+	call p_mouse_sensor_poweron		//clear sensor data,confirm the motion pin high
+	branch mouse_stop_discovery+1
 
-p_g24_auto_pair_start:
-	set0 mark_24g,mark
-	jam with_ack_24g,mem_24g_no_ack	//tx ack
-	jam 1,mem_mouse_mode_swtich_step
-	call p_g24_auto_pair_first_attemp
-	call p_g24_tx_attemp_data_prep
-p_g24_auto_pair_restart:
-	jam 0,mem_24g_check_dongle_times
-p_g24_auto_pair_start_loop:
-	call lpo_calibration
-	nop 2000
-	fetch 1,mem_24g_check_dongle_times
-	beq 0xff,p_g24_stop_g24_mode
-	call p_g24_transmit_receive_ack
-	nbranch p_g24_auto_pair_retry,sync
-	nbranch p_g24_auto_pair_retry,user3
-	call p_g24_ackpayload_parse
-	call p_mouse_tx_power_init
-	fetch 4,mem_24g_addr
-	fetcht 4,mem_24g_paring_addr
-	isub temp,null
-	branch p_g24_start_pairing_sm1,zero
-	branch p_g24_tx_attemp_dongle_succ
+ifdef BLE
+p_le_slave_match:
+	fetch 1,mem_le_md_count
+	pincrease 1
+	store 1,mem_le_md_count
+	beq LE_MD_MAX_COUNT,le_slave_cont
+	call le_acknowledge
+	call le_prepare_tx
+	call power_ctrl_start
+	branch le_slave_match+7
 
-p_g24_auto_pair_retry:
-	fetch 1,mem_24g_check_dongle_times
-	increase 1,pdata
-	store 1,mem_24g_check_dongle_times
-	fetch 1,mem_24g_auto_paring_switch
+p_le_next_adv_channel:
+	fetch 1,mem_le_ch_mapped
 	increase 1,pdata
-	and_into 3,pdata
-	store 1,mem_24g_auto_paring_switch
-	beq 0,p_g24_auto_pair_device_attemp
-	beq 1,p_g24_auto_pair_pair_attemp
-	beq 2,p_g24_auto_pair_all_powerful_attemp
-	beq 3,p_g24_auto_pair_pair_attemp
+	store 1,mem_le_ch_mapped
+	rtnne 40
+	jam 37,mem_le_ch_mapped
 	rtn
-p_g24_auto_pair_first_attemp:
-//	call p_g24_factory_check
-//	branch p_g24_auto_pair_all_powerful,user
-//p_g24_auto_pair_dongle_addr_reconn:
-	call p_mouse_tx_power_init
-//	call p_mouse_init_iic_read_24g_addr
-//	call p_g24_factory_check
-//	branch p_g24_auto_pair_all_powerful,user
-	fetch 4,mem_24g_device_addr
-	store 4,mem_24g_addr
-//p_g24_auto_pair_first_attemp:
-//	call p_g24_factory_check
-//	branch p_g24_auto_pair_all_powerful,user
-//p_g24_auto_pair_dongle_addr_reconn:
-//	call p_mouse_tx_power_init
-//	call p_mouse_init_iic_read_24g_addr
-//	call p_g24_factory_check
-//	branch p_g24_auto_pair_all_powerful,user
-p_g24_ch_syncword_crc8_init:	
-	call p_g24_syncword_crc8
-	branch p_g24_ch
 
-p_g24_auto_pair_all_powerful:
-	jam TX_POWER_PAIR,mem_tx_power
-	setarg 0x0f0f
-	store 2,mem_24g_addr
-	istore 2,contw
-	branch p_g24_ch_syncword_crc8_init
+p_le_receive_skip:
+	call save_rssi
+	call p_rssi_signal
+	branch le_receive_skip+2
 
-p_g24_auto_pair_device_attemp:
-	call p_g24_auto_pair_first_attemp
-	branch p_g24_auto_pair_start_loop
-	
-p_g24_auto_pair_pair_attemp:
-	call p_g24_pair_init
-	branch p_g24_auto_pair_start_loop
+p_le_update_param:
+	call p_mouse_le_conn_param_check
+	branch le_update_param+8
+p_mouse_le_lpm_mult_reinit:
+	fetch 1,mem_lpm_mult_init
+	store 1,mem_lpm_mult
+p_mouse_le_conn_param_lpm_enable:
+	jam LE_LPM_ENABLE,mem_mouse_le_conn_param_reject
+	rtn
+p_mouse_le_conn_param_lpm_disable:
+	jam LE_LPM_DISABLE,mem_mouse_le_conn_param_reject
+	rtn
+p_mouse_le_conn_param_check:
+	fetch 1,mem_le_new_conninterval
+	sub pdata,LE_INTERVAL_15MS,null
+	nbranch p_mouse_le_conn_param_lpm_disable,positive
+	fetch 1,mem_le_new_connslavelatency
+	fetcht 1,mem_lpm_mult_init
+	isub temp,null
+	branch p_mouse_le_lpm_mult_reinit,positive
+	fetch 1,mem_le_new_connslavelatency
+	store 1,mem_lpm_mult
+	branch p_mouse_le_conn_param_lpm_enable
 
-p_g24_auto_pair_all_powerful_attemp:	
-	call p_g24_auto_pair_all_powerful
-	branch p_g24_auto_pair_start_loop
-//p_g24_auto_pair_pair_attemp:
-//	call p_g24_pair_init
-//	branch p_g24_auto_pair_start_loop
+p_le_update_channel_map:
+	fetch 1,mem_le_state
+	rtnbit0 lestate_update_map
+	call p_le_channel_map_overflow_check
+	nrtn user
+	branch le_update_channel_map+3
+p_le_channel_map_overflow_check:
+	enable user
+	fetch 1,mem_le_event_count+1
+	rshift4 pdata,pdata
+	rtnne 0x0f
+	fetch 1,mem_le_instant+1
+	rshift4 pdata,pdata
+	rtnne 0x00
+	branch disable_user
 
-p_g24_check_51cmd_stop_24g:
-	set0 mark_24g,mark
-	call le_disable
-p_mouse_disable_g24_pairing_flag:
-	arg MOSUE_24G_PAIRING_FLAG,queue
-	branch mouse_disable_function_flag
+p_le_prepare_tx:
+	fetch 1,mem_le_arq
+	bbit1 wak,p_le_prepare_tx_wak
+	call power_ctrl_pac_succ_incrs	
+	fetch 1,mem_empty_count
+	nbranch p_le_send_empyt,blank
+	fetch 1,mem_le_state 
+	bbit0 lestate_encryption,p_le_tx_4
+	fetch 1,mem_le_rxbuf+1  
+	branch p_le_tx_4,blank  
+	branch le_send_empty      // send empty data when got non empty packet
+p_le_send_empyt:
+	fetch 1,mem_empty_count
+	increase -1,pdata
+	store 1,mem_empty_count
+	branch le_send_empty
+p_le_tx_4:	
+	fetch 1,mem_le_pairing_state
+	bne FLAG_LE_PAIRING_AFTER_AUTH,p_in_le_tx_4
+	jam 3,mem_empty_count
+p_in_le_tx_4:
+	call le_fifo_check_nearly_full
+	call p_mouse_data_pull,blank
+	branch le_prepare_tx+4
 
-p_g24_put_data_in_buff:
-	storet 1,mem_24g_datalen
-	copy temp,loopcnt
-	arg mem_24g_txbuf,contw
-	copy rega,contr
-	branch memcpy
+p_le_prepare_tx_wak:
+	call p_le_check_tx_retransmit_setmd
+	branch p_le_power_ctrl_pac_succ_decrs
 
-p_g24_read_len_pid_crc:
-//read control
-	fetch 1,mem_24g_rxbuf+1
-	rshift3 pdata,pdata
-	store 1,mem_24g_rxdata_length
-//get crc
-	increase 1,pdata
-	arg mem_24g_rxbuf+1,contr
-	iadd contr,contr
-	ifetch 3,contr
-	store 3,mem_24g_sta_crc
-//read pid
-	fetch 1,mem_24g_rxbuf+1
-	rshift pdata,pdata
+p_le_check_tx_retransmit_setmd:
+	fetch 1,mem_le_connect_status_flag
 	and pdata,0x03,pdata
-	store 1,mem_24g_sta_pid
+	rtnne 0x03
+	fetch 1,mem_mouse_data_queue_num
+	rtn blank
+	fetch 1,mem_le_txlen
+	rtn blank
+	fetch 1,mem_le_txheader
+	set1 md,pdata
+	store 1,mem_le_txheader
+	call le_set_md
+ifdef DEBUGLOG
+ifdef DEBUGLOG_MISC
+	setarg DEBUGLOG_DTYPE_MISC
+	store 2,mem_debuglog_datatype
+	setarg MISC_LE_RETRANSMIT_MD
+	store 2,mem_debuglog_dataval
+	call debuglog_push	
+endif
+endif
 	rtn
 
+	
+	
+p_le_power_ctrl_pac_succ_decrs:
+ifdef DEBUGLOG
+ifdef DEBUGLOG_MISC
+	setarg DEBUGLOG_DTYPE_MISC
+	store 2,mem_debuglog_datatype
+	setarg MISC_LE_RETRANSMIT
+	store 2,mem_debuglog_dataval
+	call debuglog_push	
+endif
 endif
+	branch power_ctrl_pac_succ_decrs
 
-p_set_freq_tx:
-	storet 1,mem_last_freq
-	add temp,0,rega			/* index to frequency */
-	call rf_write_freq
-	setarg param_pll_setup	//128us
-	call sleep
-p_rf_tx_enable:
-	jam 0x1,rfen_adc
-	jam 0x3c,rfen_rx
-	jam 0xe0,rfen_tx
-	nop 10 /* wait LDOs to turn ON*/
-	jam 0x01, rfen_mdm
-	jam 0x3d, rfen_mdm
-	nop 10 /* wait tx blocks to turn ON*/
-	jam 0xb7,rfen_sn
-	nop 10 /* wait tx lo buffer to turn ON*/
-	jam 0x7d, rfen_mdm
-	fetch 1,mem_tx_power
-	beq TX_POWER_0DB,p_set_tx_power_0db
-	//beq TX_POWER_3DB,p_set_tx_power_3db	
-	beq TX_POWER_5DB,p_set_tx_power_5db
-	//beq TX_POWER_f3DB,p_set_tx_power_f3db	
-	beq TX_POWER_f5DB,p_set_tx_power_f5db
-	beq TX_POWER_PAIR,p_set_tx_power_pair
-	branch p_set_tx_power_0db
+p_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 10,mem_le_start_encrypt_timer
+	rtn
 
-p_set_tx_power_0db:
-	call p_rx_low_sens
-	jam 0xd0,0x8955
-	jam 0xe0,0x8956
-	jam 0x6c,0x8958
-	branch set_tx_power_0db	
-/*
-p_set_tx_power_3db:
-	call p_rx_high_sens
-	jam 0xba,0x894b
-	jam 0xd0,0x8955
-	jam 0xe0,0x8956
-	jam 0x88,0x8957
-	jam 0x3c,0x8958
-	jam 0x10,0x8959
-	branch set_tx_power_3db
-*/	
-p_set_tx_power_5db:
-	call p_rx_high_sens
-	jam 0xd0,0x8955
-	jam 0xe0,0x8956
-	jam 0x3c,0x8958
-	branch set_tx_power_5db
-/*
-p_set_tx_power_f3db:
-	call p_rx_low_sens
-	jam 0xba,0x894b
-	jam 0xd0,0x8955
-	jam 0xc0,0x8956
-	jam 0x88,0x8957
-	jam 0x6c,0x8958
-	jam 0x10,0x8959
-	branch set_tx_power_f3db	
-*/	
-p_set_tx_power_f5db:
-	call p_rx_low_sens
-	jam 0xd0,0x8955
-	jam 0xc0,0x8956
-	jam 0x6c,0x8958
-	branch set_tx_power_f5db
+p_le_parse:
+	rtnmark1 mark_old_packet
+	call le_fifo_check_full
+	nrtn blank
+	fetch 1,mem_le_rxbuf
+	and pdata,0x3,pdata
+	store 1,mem_le_packet_llid
+	ifetch 1,contr
+	and pdata,0x1f,pdata
+	store 1,mem_le_packet_size
+	rtn blank							//empty rtn
+	copy contr,pdata
+	store 2,mem_le_payload_ptr
+	fetch 1,mem_le_packet_llid
+	beq LLID_LE_LL,p_le_parse_ll
+	branch le_parse_l2cap
+p_le_parse_ll:
+	fetch 1,mem_le_rxbuf+2
+	beq LL_CONNECTION_UPDATE_REQ,p_le_parse_connection_update_req	
+	beq LL_CHANNEL_MAP_REQ,p_le_parse_channel_map_req
+	branch le_parse_ll+1
 
-p_rx_low_sens:
-	jam 0x5b,0x894c
-	jam 0x96,0x894d
-	jam 0x2c,0x894e 
-	jam 0x46,0x894f
+p_le_parse_connection_update_req:
+	call le_parse_connection_update_req
+	fetch 1,mem_mouse_le_updata_not_accepted_flag
+	rtn blank
+//ipad not accepted updata, need reinit mem_lpm_mult.   mem_lpm_mult = LL_CONNECTION_UPDATE_REQ latency = 04	
+p_mouse_le_conn_param_update_rsp_not_accepted_mult_reset:	
+	fetch 1,mem_le_new_connslavelatency
+	store 1,mem_lpm_mult
+	store 1,mem_lpm_mult_init
+	rtn	
+p_le_parse_channel_map_req:
+	ifetch 5,contr
+	store 5,mem_le_new_map
+	ifetch 2,contr
+	store 2,mem_le_instant
+	branch le_parse_channel_map_req+7	
+	
+p_le_parse_l2cap:
+	ifetch 2,contr
+	beq LE_L2CAP_CID_ATT,p_le_parse_att
+	beq LE_L2CAP_CID_SMP,p_le_parse_smp
+	branch le_parse_l2cap+11
+p_le_parse_att:
+	call store_contr
+	call p_mouse_le_reconn_write_enable_timer_reinit
+	call get_contr
+	ifetch 3,contr
+	store 3,mem_le_att_opcode
+	beq ATTOP_READ_BY_GROUP_TYPE_REQUEST,p_le_parse_att_read_by_group_type_request
+	rshift8 pdata,temp
+	sub temp,0x24,null
+//	branch p_le_parse_att1,positive
+	branch le_parse_att+2,positive
+	arg mem_mouse_le_uuid_sup,temp
+	storet 2,mem_ui_le_uuid_table
+	call le_parse_att+2
+	setarg 0x8e7a
+	store 2,mem_ui_le_uuid_table
 	rtn
 
-p_rx_high_sens:
-	jam 0xfb,0x894c 
-	jam 0xef,0x894d
-	jam 0xec,0x894e 
-	jam 0x5e,0x894f
+p_le_parse_att_read_by_group_type_request:
+	call le_parse_att_read_by_group_type_request
+	call le_fifo_get_last_tx_ptr
+	increase 7,contr
+	ifetch 1,contr
+	rtnne ATTOP_READ_BY_GROUP_TYPE_RESPONSE
+	increase 5,contr
+	ifetch 2,contr
+	arg UUID_SERVICE_HIDS,temp
+	isub temp,null
+	nrtn zero
+	increase -4,contr
+	setarg 0x2b
+	istore 2,contr
 	rtn
-		
-p_set_tx_power_pair:	//50-100cm distance
- 	jam 0xc2,0x8956
- 	jam 0xd0,0x8955
-	rtn	
 
-p_shutdown_radio:
-	force 8,radio_ctrl
-	branch shutdown_radio+1
+//p_le_parse_att1:
+//	beq ATTOP_READ_REQUEST,p_le_parse_att_read_request
+//	branch le_parse_att+2
+//p_le_parse_att_read_request:
+//	fetcht 2,mem_le_att_handle
+//	fetch 1,mem_le_configuration
+//	bbit1 BIT_BLE_READ_AUTH,p_le_send_att_read_response_check_auth
+//p_le_send_att_read_response:
+//	call le_att_get_handle_ptr
+//	branch le_send_att_error_response_notfound,blank
+//	increase -2,contr
+//	ifetch 2,contr
+//	arg UUID_CHRCTR_PNP_ID,temp
+//	isub temp,null
+//	branch p_le_send_att_pnp_id,zero	//modify VID/PID
+//	
+//	fetch 2,mem_le_att_handle
+//	beq 0x13,le_send_att_error_response_notfound	//delete battery
+
+//	fetcht 2,mem_le_att_handle
+//	branch le_send_att_read_response
+//p_le_send_att_pnp_id:
+//	call store_contr
+//	fetch 1,mem_le_att_pnp_id_len
+//	add pdata,1,rega
+//	call le_fifo_malloc_tx_l2cap_gatt
+//	setarg ATTOP_READ_RESPONSE
+//	istore 1,contw
+//	fetch 1,mem_le_att_pnp_id_len
+//	copy pdata,loopcnt
+//	arg mem_le_att_pnp_id,contr
+//	branch memcpy
+
+//p_le_send_att_read_response_check_auth:
+//	fetch 2,mem_le_pairing_handle
+//	isub temp,null
+//	nbranch p_le_send_att_read_response,zero
+//p_le_send_att_read_response_error_insufficient_auth:
+//	call le_check_encrypt_state
+//	nbranch p_le_send_att_read_response,user
+//	jam ATT_ERR_INSUFFICIENT_AUTHENTICATION,mem_le_err_code
+//	branch le_send_att_error_response
+
+p_le_parse_smp:
+	ifetch 1,contr
+	beq SMP_PAIRING_REQUEST,p_le_parse_smp_pairing_request
+	beq SMP_PAIRING_FAILED,p_le_parse_smp_pairing_failed
+	branch le_parse_smp+1
+
+p_le_parse_smp_pairing_request:
+	jam 1,mem_le_send_security_request_flag
+	branch le_parse_smp_pairing_request
+	
+p_le_parse_smp_pairing_failed:
+	call le_parse_smp_pairing_failed
+	fetch 1,mem_le_state	//disable update conn param
+	set0 lestate_update_param,pdata
+	store 1,mem_le_state
+	branch le_parse_terminate_ind
+
+p_le_adv_not_match:
+	fetch 1,mem_le_ch_mapped
+	bne 39,le_adv_loop
+	call p_le_adv_random_delay
+	arg le_adv_interval_timer,queue
+	fetch 2,mem_le_adv_interval
+	branch timer_init
+p_le_adv_random_delay:
+	random pdata
+	arg 0x1ff,temp
+	iand temp,pdata
+	add pdata,250,pdata
+	branch delay
+
+p_le_lpm_setmult:
+	disable wake
+	branch p_le_lpm_set_mult_attempt,attempt
+	nbranch le_lpm_lost,match
+p_le_lpm_set_mult_attempt:
+	call lpm_match
+	fetch 2,mem_rx_window_sniff
+	store 2,mem_le_receive_window
+	fetch 1,mem_le_connect_status_flag
+	compare 3,pdata,3
+	nbranch lpm_mult_short,true
+	branch le_lpm_set_mult_attempt+3
+
+p_le_mouse_bb_event_connect_complete:
+	fetch 1,mem_mouse_le_reconnect_flag
+	nrtn blank
+	fetch 1,mem_le_att_handle
+	sub pdata,26,pdata
+	nrtn zero
+	jam 0,mem_le_start_encrypt_timer	
+	branch mouse_le_write_enable
 
-/* ================================== 24g common functions ============================= */
-p_g24_timer_check:
-	call disable_user
-	fetcht 4,mem_24g_tx_btclk
-	copy clkn_bt,pdata
-	isub temp,null
-	ncall g24_timer_timeout,positive
-	copy pdata,regb
-	fetch 4,mem_24g_tx_btclk
-	fetcht 1,mem_24g_interval
-	iadd temp,temp
-	copy regb,pdata
-	isub temp,null
-	nrtn positive
-	set0 28,pdata
-	store 4,mem_24g_tx_btclk
-	branch enable_user
+p_check_51cmd_once_continue:
+	call lmo_fifo_check
+	nbranch check_51cmd_restore,blank  //process this cmd next time while lmo fifo is full
+	fetch 1,mem_fifo_temp
+	bmark0 mark_context,check_51cmd_check_idle
+	beq BT_CMD_LE_UPDATE_CONN,p_check_51cmd_ble_update_connect_param
+	branch check_51cmd_once_continue+2
 
-p_rssi_noise:
-	call save_rssi
-	rtn blank
-	fetcht 1,mem_rssi_noise_index
-	arg mem_rssi_noise_buffer,rega
-	call p_rssi_store
-	storet 1,mem_rssi_noise_index
-	rtn
+p_check_51cmd_ble_update_connect_param:
+	call le_fifo_check_full
+	nrtn blank
+	branch le_l2cap_tx_update_req
 	
-p_rssi_store:
-	copy rega,pdata
-	iadd temp,contw
-	fetch 1,mem_rssi
-	istore 1,contw
-	increase 1,temp
-ifdef DONGLE
-	and_into RSSI_BUF_LEN_NOISE,temp
-endif
-ifdef MOUSE
-	and_into RSSI_BUF_LEN_SIGNAL,temp
-endif
-	rtn
-p_rssi_average:
-	arg 0,temp
-ifdef DONGLE
-	arg RSSI_BUF_LEN_NOISE+1,loopcnt
-endif
-ifdef MOUSE
-	arg RSSI_BUF_LEN_SIGNAL+1,loopcnt
-endif
-	copy rega,contr
-ifdef DONGLE
-	branch rssi_average_loop
-endif
-ifdef MOUSE
-p_rssi_average_loop:
-	ifetch 1,contr
-	iadd temp,temp
-	loop p_rssi_average_loop
-	rshift3 temp,pdata
-	copy pdata,temp
-	rtnmark0 mark_24g
-	//2BCD
-	div pdata,10
-	call wait_div_end
-	quotient pdata
-	lshift4 pdata,pdata
-	remainder temp
-	ior temp,temp
-	rtn
 endif
-	rtn
-
-p_g24_update_addr_and_synccrc8:
-	store 4,mem_24g_addr
 
-//output: 1BYTE crc8
-p_g24_syncword_crc8:
-	arg 0,rega
-	arg 4,loopcnt
-	arg mem_24g_addr,contr
-p_g24_syncword_crc8_loop:
-	ifetch 1,contr
-	iadd rega,rega
-	loop p_g24_syncword_crc8_loop
-	copy rega,pdata
-	store 2,mem_24g_syncword
-	fetch 1,mem_24g_syncword
-	fetcht 1,mem_24g_syncword+1
-	iadd temp,pdata
-	store 1,mem_24g_syncword_crc8
+p_twspi_reset:
+	hfetch 1,core_gpio_out3
+	and_into 0xfd,pdata
+	hstore 1,core_gpio_out3
+	hfetcht 1,core_gpio_oe3
+	or_into 0x2,temp
+	hstoret 1,core_gpio_oe3
+	call twspi_disable
+	and_into 0xfd,temp
+	nop 13
+	call twspi_enable
+	hstoret 1,core_gpio_oe3
 	rtn
 
 
-p_g24_transmit_prep:
-ifdef P24G_LOG
-	fetch 1,mem_24g_paccnt
+
+ifdef CLASSIC_BT
+p_page_wait_fhs_reply_ok:
+ 	fetch 1, mem_page_rcv_fhs
 	increase 1,pdata
-	store 1,mem_24g_paccnt
-endif
+	store 1, mem_page_rcv_fhs
+	call prepare_newconn
+p_master_newconn_loop:
+ 	set1 mark_first_packet,mark
+	call master_newconn_once
+	branch p_newconn_poll_responded,sync
+	set0 mark_first_packet,mark
+	call new_conn_timeout
+	nbranch p_master_newconn_loop,blank
+	branch page_restart	
+
+p_newconn_poll_responded:
+	set0 mark_first_packet,mark
+	branch newconn_poll_responded
 
-// total length
-	fetch 1,mem_24g_datalen
-	increase 2,pdata
-	store 1,mem_24g_txlen
-// data type
-	fetch 1,mem_24g_data_type
-	store 1,mem_24g_txpayload
-//prepare 5bit payload length, 2bit PID, 1bit NO_ACK
-	fetch 1,mem_24g_datalen
-	lshift3 pdata,pdata
-	fetcht 1,mem_24g_pid
-	and temp,0x03,temp
-	lshift temp,temp
-	ior temp,pdata
-	fetcht 1,mem_24g_no_ack
-	iadd temp,pdata
-	istore 1,contw
-//prepare payload data
-	fetch 1,mem_24g_datalen
-	iforce loopcnt
-	arg mem_24g_txbuf,contr
-	branch memcpy
+p_role_switch_master:
+	call role_switch_check
+	nrtn user
+p_wait_role_switch_anchor:
+	disable user
+	jam param_newconnto,mem_newconnto_counter
+	set0 mark_fhs_already_good,mark
+	set0 mark_role_switch_receive_fhs,mark
+p_roles_waitfhs_loop:
+	call rf_setup_time_master_slot
+	call master_recv_packet
+	bmark1 mark_fhs_already_good,p_roles_replyto_fhs
+	call new_conn_timeout
+	nbranch p_roles_waitfhs_loop,blank
+	bmark1 mark_role_switch_receive_fhs,p_roles_replyto_fhs1
+	branch role_switch_fail_master
+	
+p_roles_replyto_fhs:
+	call rf_setup_time_slave_slot
+	arg type_id,type
+	call master_send_packet
+	set1 mark_role_switch_receive_fhs,mark
+	set0 mark_fhs_already_good,mark
+	force 1,am_addr	/* process_fhs will update am_addr, so slave will not receive fhs succeffully sometimes */
+	jam 2,mem_newconnto_counter
+	branch p_roles_waitfhs_loop
+
+p_roles_replyto_fhs1:
+	fetch 4,mem_clke_bt		//wait for 2 fhs,need 2.5ms
+	pincrease 8
+	store 4,mem_clke_bt
+	branch roles_replyto_fhs+4
+
+p_process_dmh:
+	bmark1 mark_first_packet,end_of_packet
+	branch process_dmh+1
+
+p_quit_connection_cont:
+	call app_disconn_reason_collect_bt
+	call sniff_exit
+	jam BT_EVT_BB_DISCONNECTED,mem_fifo_temp
+	call ui_ipc_send_event
+	call init_lmp_work
+	call l2cap_init_work
+	branch quit_connection_cont+8
+
+p_prepare_tx:
+	fetch 1,mem_state
+	isolate1 state_inconn,pdata
+	call p_bt_power_ctrl,true
+	branch prepare_tx+1
+p_bt_power_ctrl:
+	fetch 1,mem_arq
+	isolate1 wack,pdata
+	call power_ctrl_pac_succ_decrs,true
+	ncall power_ctrl_pac_succ_incrs,true
+	branch power_ctrl_start
+
+p_slave_conn_recv_packet:
+	call slave_receive_master_slot
+	nbranch shutdown_radio,sync
+	call save_rssi
+	call p_rssi_signal
+	branch slave_conn_recv_packet+4
 
-p_g24_ch:
-	fetcht 1,mem_24g_current_ch_number
-	call p_g24_ch_map_size
-	storet 1,mem_24g_current_ch_number
-	rtn
+p_lpm_dispatch:
+	rtnmark1 mark_24g
+	call lpo_calibration
+	fetch 3,mem_clks_per_lpo
+	rtn blank
+	fetch 1,mem_lpm_mode
+	rtn blank
+	fetch 1,mem_ssp_enable
+	branch p_lpm_dispatch_next,blank
+	fetch 1,mem_sp_local_key_invalid	// simple pairing is not ready
+	rtn blank
+p_lpm_dispatch_next:
+	fetch 1,mem_le_sc_calc
+	nrtn blank
+	call lpm_check_wake_lock
+	nrtn blank
+	fetch 1,mem_context
+	compare 3,pdata,0x7							//sco won't sleep 
+	nbranch lpm_dispatch_unconn,true
+	fetch 2,mem_context + coffset_tsniff	//role switch 
+	arg 0xffff,temp
+	isub temp,null
+	rtn zero
+	branch lpm_dispatch_next+9
 
-p_g24_ch_map_size:
-	call p_g24_ch_calc
-	increase 1,temp
-	and_into 3,temp //map size =4
-	rtn
-	
-p_g24_ch_calc:
-	fetch 1,mem_24g_addr	
-	and_into 0x03,pdata
-	mul32 pdata,4,rega			//24addr low bit0 bit1 ,00-map1,01-map2,10-map3,11-map4
-	setarg mem_24g_ch_map1
-	iadd rega,pdata
-	iadd temp,contr
+p_app_bt_start_reconnect:
+	branch app_bt_start_reconnect+3
+
+p_mouse_bb_disconnected:
+	jam 0,mem_mouse_enter_sniff_count
+	jam 0x0e,mem_sniff_param_interval	//115Hz
+	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
+	bbit1 APP_DISC_AFTER_PAIRING,p_mouse_event_light_state_pairing
+	bbit1 APP_DISC_AFTER_RECONN,p_mouse_event_light_state_hibernate
+	bbit1 APP_DISC_AFTER_SNIFF,p_mouse_event_light_state_hibernate
+	branch mouse_start_discovery
+	
+p_mouse_event_light_state_pairing:
+	bbit1 APP_DISC_AFTER_HANDSHAKE,p_mouse_event_light_state_hibernate
+	bbit1 APP_DISC_AFTER_SNIFF,p_mouse_event_light_state_hibernate
+	branch mouse_start_discovery
+p_mouse_event_light_state_hibernate:
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BTN_DOWN,mouse_start_discovery
+	call app_disconn_reason_clear
+	call p_mouse_check_key_gpio
+	beq MOUSE_LMR_BUTTON,p_mouse_null_enter_hibernate_enable
+	branch app_bb_hibernate
+
+p_hid_rx_process:
+	fetch 2,mem_l2cap_payload_ptr
+	copy pdata,contr
 	ifetch 1,contr
-	store 1,mem_24g_ch
+	store 1,mem_l2cap_rcv
+	and pdata,0x0f,temp
+	rshift4 pdata,pdata //hidtype
+	beq hid_type_set_protocol,p_hid_rx_set_protocol
+	branch hid_rx_process+6
+p_hid_rx_set_protocol:
+	call hid_rx_process_handshake
+	jam 0,mem_mouse_bt_boot_mode
+	fetch 1,mem_l2cap_rcv
+	isolate1 0,pdata
+	rtn true
+	jam 1,mem_mouse_bt_boot_mode	//boot mode
+	rtn
+
+p_parse_lmp_accepted:
+	fetch 1,mem_rxbuf+1
+	store 1,mem_lmi_accepted_opcode
+	beq LMP_SWITCH_REQ,p_parse_lmp_accepted_switch
+	branch parse_lmp_accepted+3
+p_parse_lmp_accepted_switch:
+	call parse_lmp_accepted_switch
+	jam 1,mem_bt_rcvd_switch_req_accept
+	fetch 1,mem_bt_send_lmp_setup_complete
+	rtn blank
+	jam 2,mem_bt_send_lmp_setup_complete
 	rtn
 
-p_g24_prep:
-	disable enable_crc
-	disable enable_white
-	setarg 0x555555
-	iforce crc24_init
-	fetch 1,mem_24g_ch
-	reverse pdata,temp
-	set1 1,temp
-	rshift temp,white_init
-	rtn
 
-p_g24_receive_packet:
-	call le_enable
-	fetch 4,mem_24g_addr
-	iforce access
-	call set_sync_on
-	fetcht 1,mem_24g_ch
-	call set_freq_rx
-	setarg param_pll_setup
-	call sleep
-	call rf_rx_enable
-p_g24_receive_rxon:
+p_send_lmp:
+	disable user
+	call lmo_fifo_process
 
-ifdef RF_DEBUG
-	call test_h_l_h
+ifdef DEBUGLOG
+ifdef DEBUGLOG_SEND_LMP
+	setarg DEBUGLOG_DTYPE_SEND_LMP
+	store 2,mem_debuglog_datatype
+//	fetch 1,mem_lmi_opcode
+//	store 1,mem_debuglog_dataval+1
+//	fetch 1,mem_lmp_to_send
+//	store 1,mem_debuglog_dataval
+	fetch 1,mem_lmp_to_send
+	store 2,mem_debuglog_dataval
+	ncall debuglog_push,blank
 endif
-
-	call p_g24_prep
-	disable user3
-	enable decode_fec0
-	enable is_rx
-	disable is_tx
-	enable swfine
-	fetch 2,mem_24g_rx_window
-	iforce stop_watch
-	correlate null,timeout
-	nbranch p_g24_sync_timeout,sync
-
-ifdef RF_DEBUG
-	call test_gpio_low
-	call test_gpio_high
 endif
-
-	disable decode_fec0
-	enable decode_fec1
-	enable enable_white
-	enable enable_crc
-	call p_g24_receive_byte
-	store 1,mem_24g_get_syncword_crc8
-	fetcht 1,mem_24g_syncword_crc8
-	isub temp,null
-	nbranch p_g24_end_of_packet,zero
-	call p_g24_receive_byte
-	store 1,mem_24g_rxbuf	//device id
-	fetch 1,mem_24g_mode
-	sub pdata,rx_24g,null
-	branch p_g24_receive_skip,zero
-	fetch 1,mem_24g_rxbuf
-	fetcht 1,mem_24g_data_type
-	icompare bits_data,temp
-	nbranch p_g24_end_of_packet,true
-p_g24_receive_skip:
-	call p_g24_receive_byte
-	istore 1,contw
-	rshift3 pdata,pdata
-	and pdata,0x1f,loopcnt	//max payload: 32bytes
-	branch p_g24rx_nopayload,zero
-p_g24rx_loop:
-	call p_g24_receive_byte
+	
+	fetch 1,mem_lmp_to_send
+	rtn blank
+	bbit1 7,p_send_lmp_escape
+	beq LMP_ACCEPTED,p_send_lmp_accepted
+	beq LMP_SETUP_COMPLETE,p_send_lmp_setup_complete
+	beq LMP_SNIFF_REQ, p_send_lmp_sniff_req
+	branch send_lmp0
+p_send_lmp_escape:
+	beq LMP_EXT_FEATURES_RES,p_send_lmpext_features_res
+	beq LMP_EXT_FEATURES_REQ,p_send_lmpext_features_req	
+	branch send_lmp_escape
+p_send_lmpext_features_res:
+	call p_check_ssp_enable
+	fetch 1,mem_lmp_to_send
+	branch send_lmpext_features_res
+p_send_lmpext_features_req:
+	call p_check_ssp_enable
+	fetch 1,mem_lmp_to_send
+	branch send_lmpext_features_req
+p_check_ssp_enable:
+	fetch 1,mem_ssp_enable 
+	branch ssp_disable,blank
+	branch ssp_enable
+
+p_send_lmp_setup_complete:
+	jam 1,mem_bt_send_lmp_setup_complete
+	branch send_lmp_setup_complete
+
+p_send_lmp_sniff_req:
+	jam 4,mem_mouse_bt_send_first_package_timer
+	branch send_lmp_sniff_req
+	
+
+p_send_lmp_accepted:
+	force 2,pdata
+	call msg_send_lmp
+	fetch 1,mem_lmi_opcode
 	istore 1,contw
-	loop p_g24rx_loop
-p_g24rx_nopayload:
-ifdef MOUSE
-	//receive rssi hex
-	copy contw,rega
-	call p_g24_receive_byte
-	store 1,mem_rssi_hex_received
-	copy rega,contw
+	store 1,mem_lmi_opcode_temp
+	call send_lmp_follow
+ifdef DEBUGLOG
+ifdef DEBUGLOG_MISC
+	setarg DEBUGLOG_DTYPE_MISC
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_lmi_opcode_temp
+	store 1,mem_debuglog_dataval
+	call debuglog_push	
 endif
-	parse demod,bucket,24
-	enable swfine
-	arg param_sifs,stop_watch	
-	rshift32 pdata,pdata
-	rshift16 pdata,pdata
-	istore 3,contw
-	disable decode_fec1
-ifdef DONGLE
-	call save_rssi
-endif	
-	branch p_g24_end_of_packet,crc_failed
-
-ifdef RF_DEBUG
-	call test_gpio_low
-	call test_gpio_high
 endif
+	fetch 1,mem_lmi_opcode_temp
+	beq LMP_MAX_SLOT_REQ,p_send_lmp_accepted_max_slot_req	//sumsung a5100 patch
+	branch send_lmp_accepted+7
 
-	enable user3
-	fetch 1,mem_last_freq
-	add pdata,0,rega
-	call rf_write_freq
-	disable decode_fec0
-	call set_sync_on
-ifdef DONGLE
+
+p_send_lmp_accepted_max_slot_req:
+	fetch 1,mem_bt_rcvd_switch_req_accept
+	rtn blank
+	jam 0,mem_bt_rcvd_switch_req_accept
+	fetch 1,mem_bt_send_lmp_setup_complete
+	rtnne 2
+	jam 1,mem_bt_send_max_slot_req_accept_after_switch
+	copy clkn_bt,pdata
+	store 4,mem_aurand_send_delay_time
 	rtn
+
+p_process_conn_sm:
+	call lmo_fifo_check
+	nrtn blank
+p_process_conn_sm_continue:
+	fetch 1,mem_conn_sm
+	rtn blank
+ifdef DEBUGLOG
+ifdef DEBUGLOG_CONN_SM
+	call pdata_push
+	setarg DEBUGLOG_DTYPE_CONN_SM
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_conn_sm
+	store 2,mem_debuglog_dataval
+	call pdata_pull
+	call debuglog_push	
 endif
-ifdef MOUSE
-	fetch 1,mem_rssi_hex_received
-	copy pdata,rega
-	call p_rssi_signal
 endif
-	rtn
+	beq CONN_SM_SEND_CONN_REQ, p_host_create_conn_send_conn_req
+	beq CONN_SM_WAIT_SWITCH_AFTER_HOST_CONNECTION,p_host_creat_conn_wait_switch
+	branch process_conn_sm_continue+2
 
-p_g24_receive_byte:
-	parse demod,bucket,8
-	rshift3 pwindow,pdata
+
+p_host_creat_conn_wait_switch:
+	fetch 1,mem_switch_flag
+	rtneq SWITCH_FLAG_INIT
+	beq SWITCH_FLAG_ACCEPT,p_host_create_conn_switch_accept
+	branch host_creat_conn_wait_switch+3
+p_host_create_conn_switch_accept:
+	rtn master
+p_host_create_conn_auth_pair:
+	/* checking whether or not to do m/s switch */
+	fetch 1,mem_connection_options
+	bbit1 CONNECTION_AUTH,p_host_create_conn_auth_pair_true
+	branch host_create_conn_auth_pair+1
+p_host_create_conn_auth_pair_true:
+	fetch 1,mem_bt_send_lmp_setup_complete
+	beq 1,host_create_conn_auth_pair_true
+	//sumsung a5100 patch
+	fetch 1,mem_link_key_exists
+	branch host_create_conn_auth_pair_nokey,blank
+	fetch 1,mem_lmp_conn_state
+	rtnbit0 SENT_SETUP_COMPLETE
+	rtnbit0 RECEIVED_SETUP_COMPLETE
+	fetch 1,mem_bt_send_max_slot_req_accept_after_switch
+	rtn blank
+	jam 0,mem_bt_send_max_slot_req_accept_after_switch	
+	fetch 4,mem_aurand_send_delay_time
+	arg 20,temp
+	iadd temp,temp
+	copy clkn_bt,pdata
+	isub temp,null
+	nbranch p_bt_send_max_slot_req_accept_after_switch_wait,positive
+	branch host_create_conn_auth
+
+p_bt_send_max_slot_req_accept_after_switch_wait:
+	jam 1,mem_bt_send_max_slot_req_accept_after_switch
 	rtn
+
+p_host_create_conn_send_conn_req:
+	jam 20,mem_mouse_send_switch_req_timer
+	branch host_create_conn_send_conn_req
+
 	
-p_g24_end_of_packet:
-	disable encode_fec1
-	disable decode_fec1
-	call end_of_packet
-ifdef RF_DEBUG
-	call test_gpio_low
+ifdef DEBUGLOG
+p_parse_lmp_opcode:
+ifdef DEBUGLOG
+ifdef DEBUGLOG_PARSE_LMP
+	setarg DEBUGLOG_DTYPE_PARSE_LMP
+	store 2,mem_debuglog_datatype
+//	fetch 1,mem_rxbuf+1
+//	store 1,mem_debuglog_dataval+1 
+//	fetch 1,mem_lmi_opcode2
+//	store 1,mem_debuglog_dataval
+	fetch 1,mem_lmi_opcode2
+	store 2,mem_debuglog_dataval
+	call debuglog_push 
 endif
-	rtn
-
-p_g24_sync_timeout:
-ifdef DONGLE
-	call p_rssi_noise
 endif
-	branch p_g24_end_of_packet
+	branch parse_lmp+21
 
-p_g24_set_freq_tx:
-	call set_sync_on
-	fetcht 1,mem_24g_ch
-	branch set_freq_tx
+p_process_upper_sm_reconn:
+	fetch 1,mem_upper_sm_reconn
+	rtn blank
+ifdef DEBUGLOG
+ifdef DEBUGLOG_UPPER_SM
+	call pdata_push
+	setarg DEBUGLOG_DTYPE_UPPER_SM
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_upper_sm_reconn
+	store 2,mem_debuglog_dataval
+	call pdata_pull
+	call debuglog_push	
+endif
+endif
+	branch process_upper_sm_reconn+3
 
-p_g24_transmit:
-	call le_enable
-	fetch 4,mem_24g_addr
-	iforce access
-	call p_g24_prep
-	call p_g24_set_freq_tx
-	set1 TXGFSK,radio_ctrl
-	enable encode_fec0
-	enable is_tx
-	disable is_rx
+endif	
 
-ifdef RF_DEBUG
-	call test_gpio_high
 endif
 	
-	rshift16 access,pdata
-	rshift8 pdata,pdata
-	rshift4 pdata,pdata
-	inject mod,40
-	disable encode_fec0
-	enable encode_fec1
-	enable enable_white
-	enable enable_crc
-	fetch 1,mem_24g_syncword_crc8
-	inject mod,8
-	fetch 1,mem_24g_txlen
-	iforce loopcnt
-	arg mem_24g_txpayload,contr
-p_g24tr_loop:
-	ifetch 1,contr
-	inject mod,8
-	loop p_g24tr_loop
-ifdef DONGLE
-	fetch 1,mem_rssi_hex
-	inject mod,8
+ifdef DEBUGLOG
+p_ui_ipc_send_event:
+ifdef DEBUGLOG
+ifdef DEBUGLOG_EVENT
+	call pdata_push
+	setarg DEBUGLOG_DTYPE_EVENT
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_fifo_temp
+	store 2,mem_debuglog_dataval
+	call pdata_pull
+	call debuglog_push	
 endif
+endif
+	branch ui_ipc_send_event+1
 
-ifdef P24G_LOG	
-	fetch 1,mem_tx_power
-	inject mod,8
-	fetch 1,mem_rssi_avg_received
-	inject mod,8
-	fetch 1,mem_24g_paccnt
-	inject mod,8
+p_ui_ipc_send_cmd:
+ifdef DEBUGLOG
+ifdef DEBUGLOG_CMD
+	call pdata_push
+	setarg DEBUGLOG_DTYPE_CMD
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_fifo_temp
+	store 2,mem_debuglog_dataval
+	call pdata_pull
+	call debuglog_push
+endif
+endif
+	branch ui_ipc_send_cmd+1
 endif
 
-	enable enable_parity
-	inject mod,24	//crc
-	disable enable_parity
-	until null,tx_clear
-	nop 100
-	disable encode_fec0
-	disable encode_fec1
+power_ctrl_pac_succ_cnt_init:
+	jam 1,mem_power_ctrl_level
+	jam 0,mem_power_ctrl_pac_succ_cnt
 	rtn
-
-
-ifdef RF_DEBUG
-test_gpio_init:
-	arg TEST_GPIO,temp
-	call gpio_config_output
-test_gpio_low:
-	arg TEST_GPIO,temp
-	call gpio_out_active
-	nop 10
+power_ctrl_pac_succ_incrs:
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	increase 1,pdata
+	store 1,mem_power_ctrl_pac_succ_cnt
 	rtn
-test_gpio_high:
-	arg TEST_GPIO,temp
-	call gpio_out_inactive
-	nop 10
+power_ctrl_pac_succ_decrs:
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	sub pdata,2,null
+	ncall power_ctrl_pac_succ_cnt_reinit,positive
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	rtneq 0
+	increase -1,pdata
+	store 1,mem_power_ctrl_pac_succ_cnt
+	rtn
+power_ctrl_pac_succ_cnt_reinit:
+	jam 3,mem_power_ctrl_pac_succ_cnt
 	rtn
 
-test_h_l:
-	call test_gpio_high
-	branch test_gpio_low
-test_h_l_h:
-	call test_gpio_high
-	call test_gpio_low	
-	branch test_gpio_high
+power_ctrl_start:
+	fetch 2,mem_ui_state_map
+	rtnbit1 UI_STATE_BLE_ADV
+	rtnbit1 UI_STATE_BT_RECONNECT
+	rtnbit1 UI_STATE_BT_DISCOVERY
+	
+	arg mem_rssi_signal_buf,rega
+	call p_rssi_average
+	storet 1,mem_rssi_avg_received
+
+ifdef DEBUGLOG
+ifdef DEBUGLOG_MISC
+	setarg DEBUGLOG_DTYPE_MISC
+	store 2,mem_debuglog_datatype
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	store 1,mem_debuglog_dataval
+	fetch 1,mem_rssi_avg_received
+	store 1,mem_debuglog_dataval+1
+	call debuglog_push	
+endif
 endif
+	setarg RSSI_DIS_MAX_24G
+	bmark1 mark_24g,power_ctrl_start_next
+	setarg RSSI_DIS_MAX_BLE
+power_ctrl_start_next:	
+	isub temp,null
+	nbranch power_ctrl_txpower_incrs_force,positive
 
-p_mouse_data_init:
-	jam 7,mem_mouse_data_queue	//data length
-	jam 4,mem_mouse_data_queue+1	//fifo depth
-	setarg mem_mouse_data_queue
-	store 2,mem_queue_ptr
-	branch queue_init
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	sub pdata,2,null
+	nbranch power_ctrl_txpower_decrs_check,positive
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	beq 0,power_ctrl_txpower_incrs
+	rtn
 
-p_mouse_data_push:
-	arg mem_mouse_key,rega
-	call queue_push
-	call p_mouse_queue_increase,user
-	
+power_ctrl_txpower_decrs_check:
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	rtnne 32
+	jam 0,mem_power_ctrl_pac_succ_cnt
+power_ctrl_txpower_decrs:
+	fetcht 1,mem_rssi_avg_received
+	setarg RSSI_DIS_MIN_24G
+	bmark1 mark_24g,power_ctrl_txpower_decrs_next
+	setarg RSSI_DIS_MIN_BLE	
+power_ctrl_txpower_decrs_next:	
+	isub temp,null
+	nrtn positive
+	fetch 1,mem_power_ctrl_level
+	beq 0,power_ctrl_decrs_level0
+	increase -1,pdata
+	store 1,mem_power_ctrl_level
+	beq 0,power_ctrl_decrs_level0
+power_ctrl_decrs_level1:
+power_ctrl_incrs_level1:	//0dBm
 ifdef DEBUGLOG
 ifdef DEBUGLOG_MISC
 	setarg DEBUGLOG_DTYPE_MISC
 	store 2,mem_debuglog_datatype
-	setarg MISC_LOST_MOUSEDATA
-	store 2,mem_debuglog_dataval
-	nbranch debuglog_push,user
-
-	setarg MISC_PUSH_MOUSEDATA
+	setarg MISC_TXPOWER_1
 	store 2,mem_debuglog_dataval
 	call debuglog_push
 endif
 endif
-	rtn
-p_mouse_queue_increase:
-	fetch 1,mem_mouse_data_queue_num
-	increase 1,pdata
-	store 1, mem_mouse_data_queue_num
-	rtn
-	
-p_mouse_data_pull:
-	arg mem_mouse_key,rega
-	call queue_pop
-	branch p_mouse_fill_data_le,user
+	jam TX_POWER_0DB,mem_tx_power
 	rtn
 
-p_mouse_fill_data_le:
+power_ctrl_txpower_incrs_force:
+	jam 0,mem_power_ctrl_pac_succ_cnt
+power_ctrl_txpower_incrs:
+	fetch 1,mem_power_ctrl_level
+	beq 2,power_ctrl_incrs_level2
+	increase 1,pdata
+	store 1,mem_power_ctrl_level
+	beq 1,power_ctrl_incrs_level1
+power_ctrl_incrs_level2:	//+6dBm
 ifdef DEBUGLOG
 ifdef DEBUGLOG_MISC
 	setarg DEBUGLOG_DTYPE_MISC
 	store 2,mem_debuglog_datatype
-	setarg MISC_PULL_MOUSEDATA
+	setarg MISC_TXPOWER_2
 	store 2,mem_debuglog_dataval
 	call debuglog_push
+endif
+endif
 
+	jam TX_POWER_5DB,mem_tx_power
+	rtn
+	
+power_ctrl_decrs_level0: //-5dBm
+ifdef DEBUGLOG
+ifdef DEBUGLOG_MISC
 	setarg DEBUGLOG_DTYPE_MISC
 	store 2,mem_debuglog_datatype
-	fetch 1,mem_mouse_x
-	store 1,mem_debuglog_dataval
-	fetch 1,mem_mouse_y
-	store 1,mem_debuglog_dataval+1
-	call debuglog_push	
+	setarg MISC_TXPOWER_0
+	store 2,mem_debuglog_dataval
+	call debuglog_push
 endif
 endif
-	call le_clear_md
-	fetch 1,mem_mouse_data_queue_num
-	sub pdata,1,null
-	ncall le_set_md,positive
-	fetch 1,mem_mouse_data_queue_num
-	rtn blank
-	increase -1,pdata
-	store 1, mem_mouse_data_queue_num
-	branch mouse_fill_data_le
+	jam TX_POWER_f5DB,mem_tx_power
+	rtn
+
+endif
+
+p_set_freq_tx:
+	storet 1,mem_last_freq
+	add temp,0,rega			/* index to frequency */
+	call rf_write_freq
+	setarg param_pll_setup	//128us
+	call sleep
+p_rf_tx_enable:
+	jam 0x1,rfen_adc
+	jam 0x3c,rfen_rx
+	jam 0xe0,rfen_tx
+	nop 10 /* wait LDOs to turn ON*/
+	jam 0x01, rfen_mdm
+	jam 0x3d, rfen_mdm
+	nop 10 /* wait tx blocks to turn ON*/
+	jam 0xb7,rfen_sn
+	nop 10 /* wait tx lo buffer to turn ON*/
+	jam 0x7d, rfen_mdm
+	fetch 1,mem_tx_power
+//	beq TX_POWER_0DB,p_set_tx_power_0db
+//	beq TX_POWER_3DB,p_set_tx_power_3db	
+	beq TX_POWER_5DB,p_set_tx_power_5db
+//	beq TX_POWER_f3DB,p_set_tx_power_f3db	
+	beq TX_POWER_f5DB,p_set_tx_power_f5db
+	beq TX_POWER_PAIR,p_set_tx_power_pair
+//	branch p_set_tx_power_0db
+p_set_tx_power_0db:
+	call p_rx_low_sens
+//	jam 0xba,0x894b
+	jam 0xd0,0x8955
+	jam 0xe0,0x8956
+//	jam 0x88,0x8957
+	jam 0x6c,0x8958
+//	jam 0x10,0x8959
+	branch set_tx_power_0db	
+
+//p_set_tx_power_3db:
+//	call p_rx_high_sens
+//	jam 0xba,0x894b
+//	jam 0xd0,0x8955
+//	jam 0xe0,0x8956
+//	jam 0x88,0x8957
+//	jam 0x3c,0x8958
+//	jam 0x10,0x8959
+//	branch set_tx_power_3db
+	
+p_set_tx_power_5db:
+//	call p_rx_high_sens
+//p_rx_high_sens:
+	jam 0xfb,0x894c 
+	jam 0xef,0x894d
+	jam 0xec,0x894e 
+	jam 0x5e,0x894f
+	
+//	jam 0xba,0x894b
+	jam 0xd0,0x8955
+	jam 0xe0,0x8956
+//	jam 0x88,0x8957
+	jam 0x3c,0x8958
+//	jam 0x10,0x8959
+	branch set_tx_power_5db
+
+//p_set_tx_power_f3db:
+//	call p_rx_low_sens
+//	jam 0xba,0x894b
+//	jam 0xd0,0x8955
+//	jam 0xc0,0x8956
+//	jam 0x88,0x8957
+//	jam 0x6c,0x8958
+//	jam 0x10,0x8959
+//	branch set_tx_power_f3db
+	
+p_set_tx_power_f5db:
+	call p_rx_low_sens
+//	jam 0xba,0x894b
+	jam 0xd0,0x8955
+	jam 0xc0,0x8956
+//	jam 0x88,0x8957
+	jam 0x6c,0x8958
+//	jam 0x10,0x8959
+	branch set_tx_power_f5db
+
+p_rx_low_sens:
+	jam 0x5b,0x894c
+	jam 0x96,0x894d
+	jam 0x2c,0x894e 
+	jam 0x46,0x894f
+	rtn
+		
+p_set_tx_power_pair:	//50-100cm distance
+//	jam 0xba,0x894b
+ 	jam 0xc2,0x8956
+ 	jam 0xd0,0x8955
+	rtn	
+
+p_shutdown_radio:
+	force 8,radio_ctrl
+	branch shutdown_radio+1
+
 
 ifdef DEBUGLOG 
 pdata_push:
@@ -3094,114 +3811,264 @@
 	istore 8,contwu
 	call uartd_send
 	branch pdata_pull 
-endif	
-/*
-p_le_savelist:
-	fetch 1,mem_mouse_key
-	bbit0 0,p_le_savelist1
-	fetch 1,mem_lpm_mode
-	bbit1 1,p_le_savelist1
-	jam 0,mem_seqi
-p_le_savelist1:
-	fetch 4,mem_sync_clke
-	store 4,mem_pdatatemp
-	deposit auxcnt
-	istore 1,contw
-	fetch 1,mem_le_ch_mapped
-	istore 1,contw
-	fetch 2,mem_le_event_count
-	arg 0x0fff,contr
-	iand contr,pdata
-	setflag match,15,pdata
-	setflag wake,14,pdata
-	setflag sync,13,pdata
-	setflag attempt,12,pdata
-	istore 2,contw
+endif
 
+ifdef RF_DEBUG
+test_gpio_init:
+	arg TEST_GPIO,temp
+	call gpio_config_output
+test_gpio_low:
+	arg TEST_GPIO,temp
+	call gpio_out_active
+	nop 10
+	rtn
+test_gpio_high:
+	arg TEST_GPIO,temp
+	call gpio_out_inactive
+	nop 10
+	rtn
 
-p_save1:
-	call p_savelist1
-	fetch 1,mem_context
-	rtnbit0 state_inconn
-	fetch 1,mem_lpm_mode
-	rtnbit1 1
-	fetch 1,mem_mouse_z
+test_h_l:
+	call test_gpio_high
+	branch test_gpio_low
+test_h_l_h:
+	call test_gpio_high
+	call test_gpio_low	
+	branch test_gpio_high
+endif
+
+ifdef MOUSE_SMOOTHER
+//notice: need to call p_mouse_drawing_optima_init when waked from mult
+p_drawing_optima:
+	fetch 4,mem_mouse_x
 	rtn blank
-	jam 3,mem_lpm_mode
-	jam 0,mem_seqi
+	call p_data_abs_check
+	setarg 0x06	//asm_flag enable condition
+	call p_data_greater_than_check
+	setarg 0x03	//asm_flag disable condition
+	call p_data_less_than_check
+	fetch 1,mem_mouse_asm_flag
+	beq 1,p_drawing_optima_modify
+//	branch p_drawing_optima_init
+p_drawing_optima_init:
+	arg 5,loopcnt
+	arg mem_mouse_asm_flag,contw
+	branch clear_mem
+
+p_drawing_optima_modify:
+	fetch 2,mem_mouse_x_pre
+	store 2,mem_data_pre
+	fetch 2,mem_mouse_x
+	store 2,mem_data_current
+	call p_drawing_optima_data
+	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 p_drawing_optima_data
+	fetch 2,mem_data_pre
+	store 2,mem_mouse_y_pre
+	fetch 2,mem_data_current
+	store 2,mem_mouse_y
+	rtn
+
+/**********
+input:data_pre,data_current
+output:data_pre,data_current after optima
+***********/
+p_drawing_optima_data:
+	fetch 2,mem_data_pre
+	fetcht 2,mem_data_current
+	iadd temp,pdata
+	store 3,mem_data_sum
+	isolate1 16,pdata
+	branch p_data_sum_overflow,true
+	fetch 1,mem_data_sum+1
+	beq 0xff,p_data_sum_n
+	fetch 1,mem_data_sum
+p_data_store_pre:
+	rshift pdata,pdata
+	store 2,mem_data_pre
+	store 2,mem_data_current
+	rtn
+p_data_sum_overflow:
+	fetch 1,mem_data_sum+1	//sum positive
+	beq 0,p_data_sum_overflow_p
+	fetch 3,mem_data_sum	//全负相加
+	branch p_data_store_pre
+p_data_sum_overflow_p:
+	jam 0,mem_data_sum+2
+	fetch 1,mem_data_sum
+	branch p_data_store_pre
+
+p_data_sum_n:
+	fetch 1,mem_data_sum	//sum negetive
+	call p_pdata_get_half
+	store 1,mem_data_pre
+	store 1,mem_data_current
+	branch p_data_zero,blank
+	setarg 0xff
+p_data_set_direction:	
+	store 1,mem_data_pre+1
+	store 1,mem_data_current+1
 	rtn
+p_data_zero:
+	setarg 0
+	branch p_data_set_direction
 
+p_pdata_get_half:
+	sub pdata,0,pdata
+	store 1,mem_rega
+	fetch 1,mem_rega
+	rshift pdata,pdata
+	store 1,mem_rega
+	fetch 1,mem_rega
+	sub pdata,0,pdata
+	rtn
+
+//rega mouse_x, regb mouse_y, pdata refer
+p_data_greater_than_check:
+	isub rega,null
+	nbranch p_enable_asm,positive
+	isub regb,null
+	nbranch p_enable_asm,positive
+p_disable_asm:
+	jam 0,mem_mouse_asm_flag
+	rtn
+p_data_less_than_check:
+	isub rega,null
+	nrtn positive
+	isub regb,null
+	nrtn positive
+	branch p_disable_asm
+p_enable_asm:
+	jam 1,mem_mouse_asm_flag
+	rtn
 
-p_savelist:
-	store 8,mem_pdatatemp
-p_savelist1:
-	fetch 1,mem_seqi
-	rtneq 0x7f
-	and_into 0x7f,pdata
-	lshift3 pdata,pdata
-	arg 0x4c00,contw
-	iadd contw,contw
-	fetch 8,mem_pdatatemp
-	istore 8,contw
-	fetch 1,mem_seqi
-	isolate1 7,pdata
-	increase 1,pdata
-	and_into 0x7f,pdata
-	setflag true,7,pdata
-	store 1,mem_seqi
-	fetch 8,mem_pdatatemp
-	rtn	
+p_data_abs_check:
+	fetch 2,mem_mouse_x
+	store 2,mem_data_current
+	call p_data_abs
+	copy pdata,rega
+	fetch 2,mem_mouse_y
+	store 2,mem_data_current
+	call p_data_abs
+	copy pdata,regb
+	rtn
+
+/***********
+input: data_current
+output:pdata,abs
+************/
+p_data_abs:
+	fetch 1,mem_data_current+1
+	beq 0xff,p_data_reversal
+	fetch 1,mem_data_current
+p_data_abs_store:
+	and_into 0xff,pdata
+	//output:pdata
+	rtn
+p_data_reversal:
+	fetch 2,mem_data_current
+	sub pdata,0,pdata
+	branch p_data_abs_store
+
+endif
 
+ifdef TESTDATA
+//1 mem_m_key
+//2 mem_m_x
+//2 mem_m_y
+//1 mem_m_z
+//1 mem_m_tz
+//1 mem_24g_test
+p_g24_test_data:
+	fetch 1,mem_24g_test
+	increase 1,pdata
+	store 1,mem_24g_test
+	sub pdata,50,null
+	branch p_ms_x_right,positive
+	sub pdata,100,null
+	branch p_ms_y_up,positive
+	sub pdata,150,null
+	branch p_ms_x_left,positive
+	sub pdata,200,null
+	branch p_ms_y_down,positive
+	rtn
+p_ms_x_right:
+	setarg 0x05
+	store 2,mem_m_x
+	setarg 0
+	store 2,mem_m_y
+	store 1,mem_m_z
+	store 1,mem_m_key
+	store 1,mem_m_tz
+p_data:	
+	enable user
+	fetch 7,mem_m_key
+	store 7,mem_mouse_key
+	rtn
+p_ms_y_up:
+	setarg 0x05
+	store 2,mem_m_y
+	setarg 0
+	store 2,mem_m_x
+	store 1,mem_m_z
+	store 1,mem_m_key
+	store 1,mem_m_tz
+	branch p_data
+p_ms_x_left:
+	setarg 0xfffb
+	store 2,mem_m_x
+	setarg 0
+	store 2,mem_m_y
+	store 1,mem_m_z
+	store 1,mem_m_key
+	store 1,mem_m_tz
+	branch p_data
+p_ms_y_down:
+	fetch 1,mem_24g_test
+	beq 200,p_mem_usb_data_square_cnt_set0
+	setarg 0xfffb
+	store 2,mem_m_y
+	setarg 0
+	store 2,mem_m_x
+	store 1,mem_m_z
+	store 1,mem_m_key
+	store 1,mem_m_tz
+	branch p_data
+p_mem_usb_data_square_cnt_set0:
+	jam 0,mem_24g_test
+	branch p_ms_y_down+2
+endif
 
+ifdef MEMLOG
 p_hci_log:
-	fetch 1,0x4c00
+	fetch 1,0x4d00
 	increase 1,pdata
 	sub pdata,50,null
 	branch p_hci_log_calc_ptr,positive
 	setarg 0
 p_hci_log_calc_ptr:
-	store 1,0x4c00
+	store 1,0x4d00
 	arg 8,temp
 	imul32 temp,pdata
-	arg 0x4c08,contw
+	arg 0x4d08,contw
 	iadd contw,contw
 p_hci_log_write_content:
-	fetch 1,0x4c00
+	fetch 1,0x4d00
 	istore 1,contw//counter
-	fetch 4,mem_24g_txbuf+2
+	fetch 4,mem_le_supervision_timer
 	istore 4,contw
+	fetch 2,mem_le_superto
+	istore 2,contw	
 	rtn
-
-
-p_send_lmp:
-	disable user
-	call lmo_fifo_process
-	fetch 1,mem_lmp_to_send
-	rtn blank
-	bbit1 7,p_send_lmp_escape
-	branch send_lmp0
-	
-p_send_lmp_escape:
-	beq LMP_EXT_FEATURES_RES,p_send_lmpext_features_res
-	beq LMP_EXT_FEATURES_REQ,p_send_lmpext_features_req	
-	branch send_lmp_escape
-
-p_send_lmpext_features_res:
-	call p_check_ssp_enable
-	fetch 1,mem_lmp_to_send
-	branch send_lmpext_features_res
-p_send_lmpext_features_req:
-	call p_check_ssp_enable
-	fetch 1,mem_lmp_to_send
-	branch send_lmpext_features_req
-
-p_check_ssp_enable:
-	fetch 1,mem_ssp_enable 
-	branch ssp_disable,blank
-	branch ssp_enable
-
-*/
-
+endif	
 
 endif
 
Index: sched/109x.dat
===================================================================
--- /branch/mouse_project/YJX_24G&BLE/sched/109x.dat	(revision 1235)
+++ /branch/mouse_project/YJX_24G&BLE/sched/109x.dat	(working copy)
@@ -1,16 +1,16 @@
 
-mem_lpm_config:8f 1f ca	#11khz
+mem_lpm_config:8f 1f ce	#11khz
 mem_lpm_xtalcnt:00 0a 0b ef 07
 mem_lpm_hibernate_switch:00
 mem_gpio_wakeup_low:00 00 00 00 00 00 00 00
 #mem_fcomp_mul:02
 #mem_fcomp_div:24
-mem_iscan_window:12 00
-mem_iscan_interval:00 02
-mem_pscan_window:12 00
-mem_pscan_interval:00 02
-mem_inq_window:20 00
-mem_page_window:20 00
+#mem_iscan_window:12 00
+#mem_iscan_interval:00 02
+#mem_pscan_window:12 00
+#mem_pscan_interval:00 02
+#mem_inq_window:20 00
+#mem_page_window:20 00
 #mem_page_to:00 40
 mem_rx_window_init:80 04
 mem_rx_window_sniff:00 08
@@ -20,14 +20,15 @@
 #write to null
 mem_24g_head_ptr:00 84
 
-mem_tx_power:01#3dbm
+
+mem_tx_power:00#0dbm
 mem_rf_init_data_new:
 # tx power
 4b ba
 55 d0
 56 e0
 57 88
-58 3c
+58 6c
 59 10
 ff
 mem_rf_init_ptr:mem_rf_init_data_new
Index: sched/mouse.dat
===================================================================
--- /branch/mouse_project/YJX_24G&BLE/sched/mouse.dat	(revision 1235)
+++ /branch/mouse_project/YJX_24G&BLE/sched/mouse.dat	(working copy)
@@ -1,4 +1,4 @@
-mem_patch00:02
+mem_patch00:07
 mem_patch10:20
 mem_patch11:02
 mem_patch14:02
@@ -19,7 +19,6 @@
 mem_patch3f:04
 
 #debug
-#mem_patch31:11
 #mem_patch2f:40
 #mem_patch37:40
 #mem_patch3e:c0
@@ -40,7 +39,7 @@
 #bit5 MOUSE_ENABLE_STATUE_UP_THREE_LED
 #bit6 MOUSE_ENABLE_STATUE_UP
 #bit7 MOUSE_ENABLE_DPI_LED_BLINK
-92
+12
 #bit0 MOUSE_ENABLE_BLE_RANDOM_ADDRE
 #bit1 MOUSE_ENABLE_2K_EEPROM
 #bit2 MOUSE_ENABLE_ADC
@@ -52,13 +51,13 @@
 80
 
 mem_app_connection_options:06
-mem_lap:45 ab 86 12 22 51
-mem_local_name_length:
-'BT3.0 Mouse
-mem_sniff_param_interval:
-0e 00 
-01 00 ##mem_sniff_param_attempt:01 00
-02##mem_sniff_param_timeout:00 00
+mem_lap:34 78 22 56 18 10
+#mem_local_name_length:
+#'BT3.0 Mouse
+#mem_sniff_param_interval:
+#0e 00 
+#01 00 ##mem_sniff_param_attempt:01 00
+#02##mem_sniff_param_timeout:00 00
 
 
 mem_unsniff2sniff_timer:0a
@@ -90,19 +89,18 @@
 mem_le_adv_swift_pair:
 #microsoft swift pair
 06 ff 06 00 03 00 80
-
 #name
-'\09BT5.1 Mouse
+'\09BT5.2 Mouse
 
 mem_le_scan_data_len:1f
 mem_le_scan_data:
 #name
-'\09BT5.1 Mouse
+'\09BT5.2 Mouse
 
 
 #max 20bytes, att list data rom limits
 mem_le_name_len:
-'BT5.1 Mouse
+'BT5.2 Mouse
 
 
 mem_le_interval_min:
@@ -117,7 +115,7 @@
 mem_le_adv_own_addr_type:00
 mem_le_adv_channel_map:07 
 
-mem_le_lap:8e b1 3a 0e 8e ed
+mem_le_lap:12 67 a2 89 34 cb
 
 mem_le_transmit_window:50
 
@@ -126,7 +124,7 @@
 
 
 mem_discovery_timeout:08 07#3min
-mem_mouse_direct_timeout:20 00#8s
+mem_mouse_direct_timeout:28 00#4s
 mem_mouse_no_data_timeout:70 17 #10min
 
 
@@ -136,11 +134,11 @@
 
 mem_device_number:02 #max device number
 mem_24g_device_number:02 #devie 2 :24g mode
-mem_adc_config_flag:02 #0 vinlpm 1 hvin 2 gpio
-mem_adc_channel:32 #gpio5
-mem_mouse_vdd_full_vol:96 00#1.5v
-5a 00#mem_mouse_vdd_empty_vol:5a 00#0.9v
-64 00#mem_mouse_vdd_low_vol:64 00  #1v
+#mem_adc_config_flag:01 #0 vinlpm 1 hvin 2 gpio
+#mem_adc_channel:32 #gpio5
+#mem_mouse_vdd_full_vol:a4 01#4.2v
+#18 01#mem_mouse_vdd_empty_vol:5a 00#2.8v
+#40 01#mem_mouse_vdd_low_vol:64 00  #3.2v
 
 mem_config_sensor_type:00
 02 #mem_config_sensor_motion:01
@@ -168,13 +166,19 @@
 05 #mem_select_sensor_angle_gpio
 ff #mem_select_adc_gpio
 
+#mem_config_sensor_angle
+#0x00 MOUSE_6CLK_ANGLE
+#0X01 MOUSE_9CLK_ANGLE
+#0X02 MOUSE_12CLK_ANGLE
+#0X03 MOUSE_3CLK_ANGLE
+
 mem_eeprom_wp_gpio:14
 mem_sensor_reset_gpio:ff
 mem_sensor_squal_reg:07# 07:3205         	06:3610
 mem_usb_offline_check_gpio:ff
 #mem_wire_usb_interval:19 #128
 
-mem_config_function_enable:
+#mem_config_function_enable:
 #bit0 ENABLE_BT_DISCOVERY_BY_GPIO_LED
 #bit1 ENABLE_MODE_LED
 #bit2 ENABLE_LOW_VOLTAGE_LED
@@ -183,7 +187,7 @@
 #bit5 ENABLE_SELECT_DEVICE_BY_GPIO_BUTTON
 #bit6 ENABLE_SELECT_DEVICE_BY_SWITCH
 #bit7 ENABLE_SENSOR_MOTION_PIN
-00
+#30
 
 mem_mouse_dpi_seting:
 01##mem_320x_dpi_1
@@ -191,23 +195,15 @@
 03##mem_320x_dpi_3
 04##mem_320x_dpi_4
 
-15##mem_3212_dpi_1#800
-1a##mem_3212_dpi_2#1000
-2a##mem_3212_dpi_3#1600
-3f ##mem_3212_dpi_4#2400
-
-04##mem_3610_dpi_1
-05##mem_3610_dpi_2
-07##mem_3610_dpi_3
-08##mem_3610_dpi_4
-
-mem_mouse_3065xy_dpi_seting:
-01##mem_3065xy_dpi_1
-02##mem_3065xy_dpi_2
-03##mem_3065xy_dpi_3
-04##mem_3065xy_dpi_4
-
-mem_mouse_dpi_blink_count:00
+#15##mem_3212_dpi_1#800
+#1a##mem_3212_dpi_2#1000
+#2a##mem_3212_dpi_3#1600
+#3f##mem_3212_dpi_4#2400
+
+#04##mem_3610_dpi_1
+#05##mem_3610_dpi_2
+#07##mem_3610_dpi_3
+#08##mem_3610_dpi_4
 
 mem_ui_led_struct_ptr:mem_mouse_led_type
 mem_ui_led_struct_num:01
@@ -222,12 +218,13 @@
 2a 00 02 4d 2a 07 00 00 00 00 00 00 00
 2b 00 02 08 29 02 11 02
 
-mem_le_att_pnp_id_len:07
-mem_le_att_pnp_id:
-02		#verdor ID source
-35 12	#usb verdor ID
-22 aa 	#product ID
-01 00	#product version
+
+#mem_le_att_pnp_id_len:07
+#mem_le_att_pnp_id:
+#02		#verdor ID source
+#35 12	#usb verdor ID
+#22 aa	#product ID
+#01 00	#product version
 
   
 #24g init
@@ -243,10 +240,10 @@
 mem_24g_ch_map2:06 15 36 48
 mem_24g_ch_map3:0f 1a 3a 4c
 mem_24g_ch_map4:11 23 31 4d
-mem_24g_paring_addr:20 15 10 05
 mem_24g_pairing_sm:ff
+mem_24g_paring_addr:20 15 10 05
 mem_24g_common_temp:00 00 00 00 00 00 00 00 00 00
-mem_24g_enter_hibernate:80 ee 36#10 min
+mem_24g_enter_hibernate:80 ee 36
 
 mem_device_flag:
 01
@@ -267,6 +264,665 @@
 mem_bt_discovey_button_statue:01#default: button up
 mem_empty_count:03
 
-mem_mouse_device_led_on_timer_init:05
-mem_device_state_led_gpio:03
-mem_device_led_blink_flag:01
+mem_mouse_multi_led_gpio:03
+#mem_mouse_multi_led_on_timer_init:1e
+mem_mouse_multi_led_blink_timer_init:05
+
+mem_mouse_dpi_button_state:01
+
+#mem_dpi_ui_button_timeout:1e
+
+#yichip sdp
+#04 0011 0100 1002 1124
+#00 01 00 00
+#36 01 6d
+#09
+#00
+#00
+#0a
+#00
+#01
+#00
+#00
+#09
+#00
+#01
+#35
+#03
+#19
+#11
+#24
+#09
+#00
+#04
+#35
+#0d
+#35
+#06
+#19
+#01
+#00
+#09
+#00
+#11
+#35
+#03
+#19
+#00
+#11
+#09
+#00
+#05
+#35
+#03
+#19
+#10
+#02
+#09
+#00
+#06
+#35
+#09
+#09
+#65
+#6e
+#09
+#00
+#6a
+#09
+#01
+#00
+#09
+#00
+#09
+#35
+#08
+#35
+#06
+#19
+#11
+#24
+#09
+#01
+#00
+#09
+#00
+#0d
+#35
+#0f
+#35
+#0d
+#35
+#06
+#19
+#01
+#00
+#09
+#00
+#13
+#35
+#03
+#19
+#00
+#11
+#09
+#01
+#00
+#25
+#16
+#59
+#69
+#43
+#68
+#69
+#70
+#20
+#42
+#6c
+#75
+#65
+#74
+#6f
+#6f
+#74
+#68
+#20
+#4d
+#6f
+#75
+#73
+#65
+#09
+#01
+#01
+#25
+#05
+#4d
+#6f
+#75
+#73
+#65
+#09
+#01
+#02
+#25
+#06
+#59
+#69
+#43
+#68
+#69
+#70
+#09
+#02
+#00
+#09
+#01
+#00
+#09
+#02
+#01
+#09
+#01
+#11
+#09
+#02
+#02
+#08
+#80
+#09
+#02
+#03
+#08
+#21
+#09
+#02
+#04
+#28
+#01
+#09
+#02
+#05
+#28
+#01
+#09
+#02
+#06
+#35
+#81
+#35
+#7f
+#08
+#22
+#25
+#7b
+#05
+#01
+#09
+#02
+#a1
+#01
+#85
+#02
+#09
+#01
+#a1
+#00
+#05
+#09
+#19
+#01
+#29
+#08
+#15
+#00
+#25
+#01
+#75
+#01
+#95
+#08
+#81
+#02
+#05
+#01
+#09
+#30
+#09
+#31
+#16
+#01
+#f8
+#26
+#ff
+#07
+#75
+#10
+#95
+#02
+#81
+#06
+#09
+#38
+#15
+#81
+#25
+#7f
+#75
+#08
+#95
+#01
+#81
+#06
+#05
+#0c
+#0a
+#38
+#02
+#75
+#08
+#95
+#01
+#81
+#06
+#c0
+#c0
+#05
+#0c
+#09
+#01
+#a1
+#01
+#85
+#03
+#75
+#10
+#95
+#02
+#15
+#01
+#26
+#8c
+#02
+#19
+#01
+#2a
+#8c
+#02
+#81
+#60
+#c0
+#06
+#00
+#ff
+#09
+#01
+#a1
+#01
+#85
+#10
+#75
+#08
+#95
+#06
+#15
+#00
+#26
+#ff
+#00
+#09
+#01
+#81
+#00
+#09
+#01
+#91
+#00
+#c0
+#09
+#02
+#07
+#35
+#08
+#35
+#06
+#09
+#04
+#09
+#09
+#01
+#00
+#09
+#02
+#08
+#28
+#00
+#09
+#02
+#09
+#28
+#01
+#09
+#02
+#0a
+#28
+#01
+#09
+#02
+#0b
+#09
+#01
+#00
+#09
+#02
+#0c
+#09
+#1f
+#40
+#09
+#02
+#0d
+#28
+#00
+#09
+#02
+#0e
+#28
+#01
+#09
+#02
+#0f
+#09
+#00
+#12
+#09
+#02
+#10
+#09
+#00
+#00
+#
+#04 1002 1200 0100 0001
+#00 01 00 01
+#36 00 5a
+#09
+#00
+#00
+#0a
+#00
+#01
+#00
+#01
+#09
+#00
+#01
+#35
+#03
+#19
+#12
+#00
+#09
+#00
+#04
+#35
+#0d
+#35
+#06
+#19
+#01
+#00
+#09
+#00
+#01
+#35
+#03
+#19
+#00
+#01
+#09
+#00
+#05
+#35
+#03
+#19
+#10
+#02
+#09
+#00
+#09
+#35
+#08
+#35
+#06
+#19
+#12
+#00
+#09
+#01
+#00
+#09
+#02
+#00
+#09
+#01
+#03
+#09
+#02
+#01
+#09
+#04
+#6d
+#09
+#02
+#02
+#09
+#b0
+#16
+#09
+#02
+#03
+#09
+#01
+#29
+#09
+#02
+#04
+#28
+#01
+#09
+#02
+#05
+#09
+#00
+#02
+#00
+#00
+#
+#01 0001
+#00 01 00 01
+#36 00 5a
+#09
+#00
+#00
+#0a
+#00
+#01
+#00
+#01
+#09
+#00
+#01
+#35
+#03
+#19
+#12
+#00
+#09
+#00
+#04
+#35
+#0d
+#35
+#06
+#19
+#01
+#00
+#09
+#00
+#01
+#35
+#03
+#19
+#00
+#01
+#09
+#00
+#05
+#35
+#03
+#19
+#10
+#02
+#09
+#00
+#09
+#35
+#08
+#35
+#06
+#19
+#12
+#00
+#09
+#01
+#00
+#09
+#02
+#00
+#09
+#01
+#00
+#09
+#02
+#01
+#09
+#05
+#ac
+#09
+#02
+#02
+#09
+#02
+#39
+#09
+#02
+#03
+#09
+#00
+#44
+#09
+#02
+#04
+#28
+#01
+#09
+#02
+#05
+#09
+#00
+#02
+#
+#03 1101 0003 0100
+#00 01 00 02
+#36 00 2f
+#09
+#00
+#00
+#0a
+#00
+#01
+#00
+#02
+#09
+#00
+#01
+#35
+#03
+#19
+#11
+#01
+#09
+#00
+#04
+#35
+#0c
+#35
+#03
+#19
+#01
+#00
+#35
+#05
+#19
+#00
+#03
+#08
+#01
+#09
+#01
+#00
+#25
+#09
+#53
+#50
+#50
+#20
+#73
+
+
+
+#logi sdp
+#04 1000 0100 0001 1002
+#00 00 00 00
+#36 00 92 
+#09 00 00 0a 00 00 00 00 09 00 01 35 03 19 10 00 09 00 04 35 0d 35 06 
+#19 01 00 09 00 01 35 03 19 00 01 09 00 05 35 03 19 10 02 09 00 06 35 
+#09 09 65 6e 09 00 6a 09 01 00 09 00 09 35 08 35 06 19 01 00 09 01 00 
+#09 01 00 25 2c 4c 6f 67 69 74 65 63 68 20 42 6c 75 65 74 6f 6f 74 68 20 
+#57 69 72 65 6c 65 73 73 20 4d 6f 75 73 65 20 53 44 50 20 53 65 72 76 65 
+#72 09 01 01 25 0f 42 6c 75 65 74 6f 6f 74 68 20 4d 6f 75 73 65 09 02 00 35 03 09 01 00
+
+#04 1124 0100 0011 1002
+#00 01 00 00
+#36 01 ee 
+#09 00 00 0a 00 01 00 00 09 00 01 35 03 19 11 24 09 00 04 35 
+#0d 35 06 19 01 00 09 00 11 35 03 19 00 11 09 00 05 35 03 19 10 02 
+#09 00 06 35 09 09 65 6e 09 00 6a 09 01 00 09 00 09 35 08 35 06 19 11 24 
+#09 01 01 09 00 0d 35 0f 35 0d 35 06 19 01 00 09 00 13 35 03 19 00 11 09 01 
+#00 25 21 4c 6f 67 69 74 65 63 68 20 42 6c 75 65 74 6f 6f 74 68 20 57 69 72 65 6c 
+#65 73 73 20 4d 6f 75 73 65 09 01 01 25 0f 42 6c 75 65 74 6f 6f 74 68 20 4d 6f 75 
+#73 65 09 01 02 25 08 4c 6f 67 69 74 65 63 68 09 02 01 09 01 11 09 02 02 08 80 09 02 
+#03 08 21 09 02 04 28 01 09 02 05 28 01 09 02 06 35 fc 35 fa 08 22 25 f6 05 01 09 02 a1 01 
+#85 02 09 01 a1 00 05 09 19 01 29 08 15 00 25 01 75 01 95 08 81 02 05 01 09 30 09 31 16 01 
+#f8 26 ff 07 75 0c 95 02 81 06 09 38 15 81 25 7f 75 08 95 01 81 06 05 0c 0a 38 02 75 08 95 01 81 
+#06 c0 c0 05 0c 09 01 a1 01 85 03 05 06 09 20 15 00 26 64 00 75 08 95 01 81 02 c0 06 00 ff 09 01 
+#a1 01 85 10 75 08 95 06 15 00 26 ff 00 09 01 81 00 09 01 91 00 c0 06 00 ff 09 02 a1 01 85 11 75 
+#08 95 13 15 00 26 ff 00 09 02 81 00 09 02 91 00 c0 05 01 09 06 a1 01 85 04 75 01 95 08 05 07 
+#19 e0 29 e7 15 00 25 01 81 02 95 01 75 08 81 03 95 05 75 01 05 08 19 01 29 05 91 02 95 01 
+#75 03 91 03 95 06 75 08 15 00 26 ff 00 05 07 19 00 29 ff 81 00 c0 05 0c 09 01 a1 01 85 05 
+#15 00 25 01 75 01 95 02 0a 25 02 0a 24 02 81 02 95 01 75 06 81 03 c0 09 02 07 35 08 35 
+#06 09 04 09 09 01 00 09 02 09 28 01 09 02 0a 28 01 09 02 0c 09 1f 40 09 02 0d 28 00 09 
+#02 0e 28 01 09 02 0f 09 00 12 09 02 10 09 00 00
+
+#04 1200 0100 0001 1002
+#00 01 00 01
+#36 00 ad 
+#09 00 00 0a 00 01 00 01 09 00 01 35 03 19 12 00 09 00 04 35 0d 35 06 19 01 
+#00 09 00 01 35 03 19 00 01 09 00 05 35 03 19 10 02 09 00 06 35 09 09 65 
+#6e 09 00 6a 09 01 00 09 00 09 35 08 35 06 19 12 00 09 01 00 09 01 00 
+#25 2c 4c 6f 67 69 74 65 63 68 20 42 6c 75 65 74 6f 6f 74 68 20 57 69 72 
+#65 6c 65 73 73 20 4d 6f 75 73 65 20 50 6e 50 20 53 65 72 76 65 72 09 01 
+#01 25 0f 42 6c 75 65 74 6f 6f 74 68 20 4d 6f 75 73 65 09 02 00 09 01 03 09 
+#02 01 09 04 6d 09 02 02 09 b0 16 09 02 03 09 12 03 09 02 04 28 01 09 02 05 09 00 02 00
+
+
