Index: Standard_mouse/btms/do.bat
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/do.bat	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/do.bat	(working copy)
@@ -0,0 +1,52 @@
+@set FPGA_PATH=fpgajic\fpga
+@set ROM_PATH=.
+@set MV_PATCH=mv\src\yichip
+@set YC_PATCH_FILE=yc_patch_yc1021.h
+@set enc=1
+@set enckey=0000000000000000
+@echo off
+setlocal enabledelayedexpansion
+
+copy patch\patch.prog output\bt_program23.meta
+copy rom\rom.format  + rom\label.format + patch\patch.format + rom\command.format output\bt_format.meta
+perl util/mergepatch.pl output/bt_program23.meta
+perl util/memalloc.pl output/bt_format.meta
+
+perl util/transform_memmap2btreg.pl output/memmap.format format/memblocks.format ..\c51\btreg.h
+
+cd output
+osiuasm bt_program23 -O-W
+copy  ..\sched\patch.dat +  ..\sched\rf.dat + ..\sched\user.dat ..\output\sched.rom
+
+
+if "%1" equ "eep" (
+	goto genromrevc
+)else (
+  goto downloadram
+)
+
+:genromrevc
+@echo Start to generate EEPROM code
+
+..\util\geneep ramcode.rom fwram.rom sched.rom 0 %enckey% c
+cd ..\output
+
+:gen_eep_end
+cd ..
+echo **********************************
+echo EEPROM Generated.
+echo The Device is %device_option%. 
+echo Use command "e ep" to download EEPROM.
+echo **********************************
+
+@copy .\output\ramcode.rom ..\c51\patch
+
+@copy .\output\sched.rom ..\c51\patch
+
+@copy .\output\memmap.format ..\c51\patch
+
+@copy .\sched\*.*	..\c51\patch
+
+goto end
+
+:end
Index: Standard_mouse/btms/output/bt_format.meta
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/bt_format.meta	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/bt_format.meta	(working copy)
@@ -0,0 +1,11012 @@
+0x4000 mem_patch00
+0x4001 mem_patch01
+0x4002 mem_patch02
+0x4003 mem_patch03
+0x4004 mem_patch04
+0x4005 mem_patch05
+0x4006 mem_patch06
+0x4007 mem_patch07
+0x4008 mem_patch08
+0x4009 mem_patch09
+0x400a mem_patch0a
+0x400b mem_patch0b
+0x400c mem_patch0c
+0x400d mem_patch0d
+0x400e mem_patch0e
+0x400f mem_patch0f
+0x4010 mem_patch10
+0x4011 mem_patch11
+0x4012 mem_patch12
+0x4013 mem_patch13
+0x4014 mem_patch14
+0x4015 mem_patch15
+0x4016 mem_patch16
+0x4017 mem_patch17
+0x4018 mem_patch18
+0x4019 mem_patch19
+0x401a mem_patch1a
+0x401b mem_patch1b
+0x401c mem_patch1c
+0x401d mem_patch1d
+0x401e mem_patch1e
+0x401f mem_patch1f
+0x4020 mem_patch20
+0x4021 mem_patch21
+0x4022 mem_patch22
+0x4023 mem_patch23
+0x4024 mem_patch24
+0x4025 mem_patch25
+0x4026 mem_patch26
+0x4027 mem_patch27
+0x4028 mem_patch28
+0x4029 mem_patch29
+0x402a mem_patch2a
+0x402b mem_patch2b
+0x402c mem_patch2c
+0x402d mem_patch2d
+0x402e mem_patch2e
+0x402f mem_patch2f
+0x4030 mem_patch30
+0x4031 mem_patch31
+0x4032 mem_patch32
+0x4033 mem_patch33
+0x4034 mem_patch34
+0x4035 mem_patch35
+0x4036 mem_patch36
+0x4037 mem_patch37
+0x4038 mem_patch38
+0x4039 mem_patch39
+0x403a mem_patch3a
+0x403b mem_patch3b
+0x403c mem_patch3c
+0x403d mem_patch3d
+0x403e mem_patch3e
+0x403f mem_patch3f
+0x4040 mem_context
+0x4130 mem_current_amaddr
+0x4131 mem_lpm_mode
+0x4132 mem_device_option
+0x4133 mem_scan_mode
+0x4134 mem_last_clkn
+0x4138 mem_features
+0x4140 mem_lap
+0x4143 mem_uap
+0x4144 mem_nap
+0x4146 mem_npage
+0x4147 mem_glap
+0x414a mem_class
+0x414d mem_iscan_window
+0x414f mem_iscan_interval
+0x4151 mem_pscan_window
+0x4153 mem_pscan_interval
+0x4155 mem_page_interval
+0x4157 mem_page_window
+0x4159 mem_page_to
+0x415b mem_inq_window
+0x415d mem_fcomp_mul
+0x415e mem_fcomp_div
+0x415f mem_rx_window_init
+0x4161 mem_rx_window_sniff
+0x4163 mem_rf_init_ptr
+0x4165 mem_last_type
+0x4166 mem_last_type_esco
+0x4167 mem_last_type_saved
+0x4168 mem_retransmission_cnt
+0x416a mem_next_btclk
+0x416e mem_rf_rccal
+0x416f mem_handle_num
+0x4170 mem_max_slot
+0x4171 mem_eir_enable
+0x4172 mem_afh_instant
+0x4176 mem_afh_error_total
+0x4178 mem_afh_cfg
+0x4179 mem_afh_new_mod
+0x417a mem_afh_map_lo
+0x417f mem_afh_map_hi
+0x4184 mem_afh_used
+0x4185 mem_afh_index
+0x4187 mem_afh_map_new
+0x4192 mem_afh_map
+0x41e2 mem_afh_timer
+0x41e6 mem_afh_classify_channel_map
+0x41f0 mem_chip_functions
+0x41f2 mem_lpm_wake_lock
+0x41f4 mem_lpm_interval
+0x41f6 mem_lpm_overhead
+0x41f7 mem_lpm_hibernate_switch
+0x41f8 mem_esco_addr
+0x41f9 mem_sniff_unint_lost
+0x41fa mem_ptt
+0x41fb mem_sleep_counter//should be 0x41fc in REVC
+0x41ff mem_sleep_counter_all
+0x4203 mem_sleep_clkn
+0x4209 mem_sniff_rcv
+0x420c mem_sniff_lost
+0x420f mem_clks_per_lpo
+0x4212 mem_lpm_mult
+0x4213 mem_lpm_mult_timeout
+0x4214 mem_lpm_mult_cnt
+0x4215 mem_lpm_config
+0x4218 mem_lpm_xtalcnt
+0x4219 mem_lpm_buckcnt
+0x421a mem_lpm_ldocnt
+0x421b mem_lpm_isogate
+0x421c mem_lpm_isogate_final
+0x421d mem_saved_gpio// should be 0x421e in REVC
+0x422d mem_saved_gsel
+0x4230 mem_saved_mark
+0x4238 mem_saved_spidctrl
+0x4239 mem_patch_ptr
+0x423b mem_patch_len
+0x423d mem_timers
+0x425d mem_link_key_exists
+0x425e mem_link_key_eeprom_head
+0x4261 mem_link_key
+0x4271 mem_hci_cmd
+0x4272 mem_hci_conn_handle
+0x4273 mem_hci_plap
+0x4276 mem_hci_puap
+0x4277 mem_hci_pnap
+0x4279 mem_uartd_rxitems_got_data
+0x427a mem_uartd_rxitems_threshold
+0x427b mem_uartd_rx_timeout
+0x427d mem_tx_lch
+0x427e mem_tx_len
+0x4280 mem_tx_power
+0x4281 mem_context_number
+0x4282 mem_rf_init_data
+0x4283 mem_app_handshake_flag
+0x4284 mem_sniff_param_interval
+0x4286 mem_sniff_param_attempt
+0x4288 mem_sniff_param_timeout
+0x428a mem_cb_check_wakelock
+0x428c mem_cb_before_hibernate
+0x428e mem_cb_before_lpm
+0x4290 mem_cb_le_process
+0x4292 mem_cb_bt_process
+0x4294 mem_cb_idle_process
+0x4296 mem_cb_bb_event_process
+0x4298 mem_cb_discovry_timeout
+0x429a mem_cb_att_write
+0x429c mem_cb_update_notify_value
+0x429e mem_cb_update_notify_continue
+0x42a0 mem_cb_event_timer
+0x42a2 mem_cb_le_set_mult
+0x42a4 mem_cb_bt_set_mult
+0x42a6 mem_soft_version_num
+0x42a8 mem_eeprom_base
+0x42aa mem_unsniff2sniff_timer_count
+0x42ab mem_wake_up_delay_timer
+0x42ac mem_app_connection_options
+0x42ad mem_app_disconn_reason
+0x42af mem_app_disconn_reason_flag
+0x42b1 mem_lpm_delay_after_sniff
+0x42b5 mem_xrecord_mode
+0x42b6 mem_eeprom_block_size
+0x42b8 mem_wakup_from_power_flag
+0x42b9 mem_spi_init_clk
+0x42ba mem_spi_init_delay_time
+0x42bb mem_spi_ncs_gpio
+0x42bc mem_nv_data_ptr
+0x42be mem_nv_data_number
+0x42bf mem_0_5_adc_io_data
+0x42c1 mem_1v_adc_hvin_data
+0x42c3 mem_2v_adc_vinlpm_data
+0x42c5 mem_1v_adc_io_data
+0x42c7 mem_5v_adc_hvin_data
+0x42c9 mem_3v_adc_vinlpm_data
+0x42cb mem_otp_adc_flag
+0x42cd mem_reference_voltage
+0x42cf mem_adc_config_flag
+0x42d0 mem_adc_channel
+0x42d1 mem_adc_current_value
+0x42d3 mem_baud
+0x42d5 mem_hci_lt_rx_state
+0x42d6 mem_l2cap_xmem_start
+0x42d6 mem_l2cap_tx_multi_offset//0 means single packet
+0x42d8 mem_sdp_remote_cid
+0x42da mem_rfcomm_remote_cid
+0x42dc mem_hid_ctrl_remote_cid
+0x42de mem_hid_int_remote_cid
+0x42e0 mem_sdp_state
+0x42e1 mem_rfcomm_state
+0x42e2 mem_hid_control_state
+0x42e3 mem_hid_interrupt_state
+0x42e4 mem_spp_state
+0x42e5 mem_ML2CAP_comm_id
+0x42e6 mem_used_map
+0x42e7 mem_tx_fifo0
+0x42e7 mem_tx_fifo0_map
+0x42e8 mem_tx_fifo0_ptr
+0x42ea mem_tx_fifo1
+0x42ea mem_tx_fifo1_map
+0x42eb mem_tx_fifo1_ptr
+0x42ed mem_tx_fifo2
+0x42ed mem_tx_fifo2_map
+0x42ee mem_tx_fifo2_ptr
+0x42f0 mem_tx_fifo3
+0x42f0 mem_tx_fifo3_map
+0x42f1 mem_tx_fifo3_ptr
+0x42f3 mem_tx_fifo_end
+0x42f3 mem_l2cap_lpm_txbuf
+0x43f3 mem_l2cap_flow_ctrl_flag
+0x43f4 mem_l2cap_pending_item
+0x43f5 mem_l2cap_xmem_end
+0x43f5 mem_le_dsniff
+0x43f7 mem_le_conn_interval
+0x43f9 mem_le_scan_enable
+0x43fa mem_le_scan_interval
+0x43fc mem_le_scan_window
+0x43fe mem_le_adv_led
+0x43ff mem_le_adv_enable
+0x4400 mem_le_adv_data_len
+0x4401 mem_le_adv_data
+0x4420 mem_le_scan_data_len
+0x4421 mem_le_scan_data
+0x4440 mem_le_name_len
+0x4441 mem_le_name
+0x4455 mem_le_led_on_time
+0x4456 mem_le_new_map
+0x445b mem_le_new_param
+0x445b mem_le_new_transmitwindowsize
+0x445c mem_le_new_transmitwindowoffset
+0x445e mem_le_new_conninterval
+0x4460 mem_le_new_connslavelatency
+0x4462 mem_le_new_connsupervisiontimeout
+0x4464 mem_le_temp
+0x4465 mem_le_txheader
+0x4466 mem_le_txlen
+0x4467 mem_le_txpayload
+0x4469 mem_le_txcid
+0x446b mem_le_l2cap
+0x446c mem_le_l2cap_response
+0x446d mem_le_txbdy
+0x448c mem_le_pcnt_tx
+0x4491 mem_le_pcnt_rx
+0x4496 mem_le_last_mic
+0x449a mem_le_ivm
+0x449e mem_le_ivs
+0x44a2 mem_le_ltk
+0x44b2 mem_ltk_exists
+0x44b3 mem_le_rconfirm
+0x44c3 mem_le_srand
+0x44d3 mem_le_iat
+0x44d4 mem_le_rat
+0x44d5 mem_le_preq
+0x44d6 mem_le_preq_iocap
+0x44d7 mem_le_preq_oob
+0x44d8 mem_le_preq_auth
+0x44d9 mem_le_preq_max_keysize
+0x44da mem_le_preq_init_key_distribution
+0x44db mem_le_preq_resp_key_distribution
+0x44dc mem_le_pres
+0x44dd mem_le_pres_iocap
+0x44de mem_le_pres_oob
+0x44df mem_le_pres_auth
+0x44e0 mem_le_pres_max_keysize
+0x44e1 mem_le_pres_init_key_distribution
+0x44e2 mem_le_pres_resp_key_distribution
+0x44e3 mem_le_search_handle_start
+0x44e5 mem_le_search_handle_end
+0x44e7 mem_le_att_offset
+0x44e7 mem_le_search_att_type_length
+0x44e8 mem_le_search_att_type
+0x44f8 mem_le_notify_handle
+0x44fa mem_le_search_uuid_length
+0x44fb mem_le_search_uuid
+0x450b mem_le_handle_data_len
+0x450c mem_le_handle_data
+0x451c mem_le_adv_param
+0x451c mem_le_adv_interval_min
+0x451e mem_le_adv_interval_max
+0x4520 mem_le_adv_type
+0x4521 mem_le_adv_own_addr_type
+0x4522 mem_le_adv_direct_addr_type
+0x4523 mem_le_adv_direct_addr
+0x4529 mem_le_adv_channel_map
+0x452a mem_le_adv_filter_policy
+0x452b mem_le_conn_param
+0x452b mem_le_conn_peer_addr_type
+0x452c mem_le_conn_peer_addr
+0x4532 mem_le_conn_own_addr_type
+0x4533 mem_le_conn_interval_min
+0x4535 mem_le_conn_interval_max
+0x4537 mem_le_conn_latency
+0x4539 mem_le_conn_superto
+0x453b mem_le_scan_params
+0x453b mem_le_scan_type
+0x453c mem_le_scan_own_addr_type
+0x453d mem_le_scan_filter_policy
+0x453e mem_le_lap
+0x4541 mem_le_uap
+0x4542 mem_le_nap
+0x4544 mem_le_xtype_fifo
+0x454c mem_le_local_mtu
+0x454e mem_le_remote_mtu
+0x4550 mem_le_ll_cur_opcode
+0x4551 mem_le_skdm
+0x4559 mem_le_skds
+0x4561 mem_le_init_superto
+0x4563 mem_le_secure_connect_enable
+0x4564 mem_le_secure_connect_flag
+0x4565 mem_le_sc_calc
+0x4566 mem_le_secure_connect_state
+0x4567 mem_le_sc_confirm_gkey_flag
+0x4568 mem_le_sc_local_key_invalid
+0x4569 mem_le_continue_flag
+0x456a mem_le_pairing_state
+0x456b mem_le_enc_state
+0x456c mem_le_pairing_mode
+0x456d mem_le_tk
+0x4571 mem_le_ediv
+0x4573 mem_le_rand
+0x457b mem_le_irk
+0x458b mem_le_pairing_handle
+0x458d mem_le_interal_min
+0x458f mem_le_interal_max
+0x4591 mem_le_latency
+0x4593 mem_le_timeout
+0x4595 mem_le_switch_send_data
+0x4596 mem_le_transmit_window
+0x459a mem_le_buff_len
+0x459c mem_le_buff_len_all
+0x459e mem_le_buff_data_len_all
+0x45a0 mem_prepare_write_len
+0x45a2 mem_le_prepare_write_req_offset
+0x45a4 mem_prepare_handle
+0x45a6 mem_prepare_write_offest
+0x45a8 mem_le_flag
+0x45a9 mem_lmp_version
+0x45ac mem_lmp_subversion
+0x45ae mem_local_name_length
+0x45af mem_local_name
+0x45b2 mem_local_name2
+0x45f2 mem_local_name_end
+0x45f3 mem_unsniff2sniff_timer
+0x45f4 mem_switch_flag
+0x45f5 mem_pn_dlci
+0x45f6 mem_pn_max_frame_size
+0x45f8 memFCStemp1
+0x45f9 memFCStemp2
+0x45fa memFCStemp3
+0x45fb mem_rfcomm_initiator
+0x45fc mem_remote_spp_channel
+0x45fd mem_HIUfcs_SPP
+0x45fe mem_HIUfcs_SPP_WCredits
+0x45ff mem_rfcomm_send_more_pkt
+0x4600 mem_remote_credits
+0x4601 mem_credit_given
+0x4602 mem_ms_channel
+0x4603 mem_credit_flag
+0x4604 mem_rfcomm_max_frame_size
+0x4606 mem_rfcomm_credit_init_data
+0x4607 mem_cb_receive_spp_data
+0x4609 mem_nl_rx_data_src
+0x460b mem_nl_rx_len_all
+0x460d mem_ui_uuid_table
+0x460f mem_all_uuid_16bits
+0x4625 mem_all_uuid_128bits
+0x4637 mem_ui_le_uuid_table
+0x4639 mem_sp_local_key_invalid
+0x463a mem_le_private_key_256
+0x465a mem_le_pubkey_local_x_256
+0x467a mem_le_pubkey_local_y_256
+0x469a mem_sp_private_key
+0x46b2 mem_sp_pubkey_local
+0x46b2 mem_sp_pubkey_local_x
+0x46ca mem_sp_pubkey_local_x_end
+0x46ca mem_sp_pubkey_local_y
+0x46e2 mem_ssp_enable
+0x46e3 mem_sp_iocap_local
+0x46e6 mem_sp_iocap_remote
+0x46e9 mem_flag_mode_ssp_pin
+0x46ea mem_ssp_mode_flag
+0x46eb mem_authentication_passkey_times
+0x46ec mem_passkey_1bit
+0x46ed mem_flag_pairing_state
+0x46ee mem_ipc_lock_bt
+0x46ef mem_ipc_lock_c51
+0x46f0 mem_ipc_fifo_bt2c51
+0x46f8 mem_ipc_fifo_c512bt
+0x4700 mem_led_switch
+0x4701 mem_ui_button_timer
+0x4702 mem_ui_button_last_state
+0x4703 mem_ui_timer_last_btclk
+0x4707 mem_discovery_timeout_timer_count
+0x4709 mem_hid_handshake_timer_count
+0x470a memui_reconnect_mode
+0x470b mem_ui_state_map
+0x470d mem_ui_profile_supported
+0x470e mem_led_gpio
+0x470f mem_led_dark_time
+0x4711 mem_led_light_time
+0x4713 mem_led_blink_count
+0x4714 mem_ui_button_timeout
+0x4715 mem_ui_button_gpio
+0x4716 mem_discovery_timeout
+0x4718 mem_pin_length
+0x4719 mem_pin
+0x4729 mem_24g_tx_btclk
+0x472d mem_24g_interval
+0x472e mem_24g_txfail_cnt
+0x472f mem_24g_attempt_cnt
+0x4730 mem_24g_attempt_flag
+0x4731 mem_24g_rxfail_cnt
+0x4734 mem_24g_retry
+0x4735 mem_24g_pid
+0x4736 mem_24g_datalen
+0x4737 mem_24g_crc
+0x4739 mem_24g_rxbuf
+0x4779 mem_24g_addr
+0x477d mem_24g_len
+0x477f mem_24g_txpayload
+0x4789 mem_24g_txdata
+0x4793 mem_24g_ch
+0x4794 mem_24g_scremble
+0x47a4 mem_24g_current_ch_number
+0x47a5 mem_24g_ch_map1
+0x47a9 mem_24g_ch_map2
+0x47ad mem_24g_ch_map3
+0x47b1 mem_24g_ch_map4
+0x47b5 mem_24g_interval_min
+0x47b6 mem_24g_interval_max
+0x47b7 mem_24g_ensure
+0x47b8 mem_24g_enter_hibernate
+0x47c0 mem_24g_enter_lpm_timer
+0x47c1 mem_24g_pairing_sm
+0x47c2 mem_24g_addr_copy
+0x47c6 mem_24g_sifs
+0x47c7 mem_24g_rxcnt
+0x47c8 mem_24g_addr_private_dongle
+0x47cc mem_24g_map_buff0_dongle
+0x47cd mem_24g_channel_cnt_dongle
+0x47ce mem_24g_pairing_sm_dongle
+0x47cf mem_24g_tx_btclk_dongle
+0x47d3 mem_24g_interval_dongle
+0x47d4 mem_24g_ch_update_dongle
+0x47d5 mem_24g_rx_sync_dongle
+0x47d6 mem_24g_ch_cnt_dongle
+0x47d7 mem_24g_rxbuf_temp_dongle
+0x47dd mem_24g_rxbuf_dongle
+0x47e3 mem_24g_rxfail_cnt_dongle
+0x47e6 mem_24g_spi_enable_flag
+0x4729 mem_acl_credits
+0x472b mem_allow_switch
+0x472c mem_hci_acl_queue_start/*param_acl_pktcnt+2 byte*/
+0x4730 mem_hci_wake_clk
+0x4729 mem_kb_state
+0x472b mem_kb_report_data
+0x4731 mem_kb_keys
+0x4732 mem_kb_rcv_led_data
+0x4733 mem_kb_fast_wake_last
+0x4737 mem_led_cap_gpio
+0x4738 mem_led_num_gpio
+0x4739 mem_led_scl_gpio
+0x473a mem_kb_current_vdd_value_10times
+0x473c mem_kb_read_adc_cnt_100ms
+0x473d mem_kb_current_vdd_value
+0x473f mem_led_power_blink_count
+0x4740 mem_led_power_500ms_cnt
+0x4741 mem_kb_map2
+0x49fd mem_3v1_adc_default
+0x49ff mem_kb_map
+0x4a9d mem_kb_discovery_timer
+0x4a9f mem_kb_direct_timer
+0x4aa1 mem_kb_no_data_timer
+0x4aa3 mem_kb_direct_timeout
+0x4aa5 mem_kscn_event_last
+0x4aa6 mem_kscan_event_num_last
+0x4aa7 mem_auto_enable_mult_timer
+0x4aa8 mem_auto_enable_mult_timer_init
+0x4aa9 mem_kb_temp_flag
+0x4aaa mem_map2_out_report0
+0x4ab2 mem_map2_out_report1
+0x4aba mem_table_last_repory_data0
+0x4ac2 mem_table_last_repory_data1
+0x4aca mem_kb_down
+0x4ad4 mem_kb_down_last
+0x4ade mem_table_temp
+0x4ae6 mem_pincode_vk_last
+0x4ae7 mem_kb_device_button_last
+0x4ae8 mem_kb_device_button_timer
+0x4ae9 mem_kb_current_status
+0x4aea mem_seq
+0x4aeb mem_dorx_cnt
+0x4aec mem_matched_btclk
+0x4aee mem_master_sniff_interval
+0x4aef mem_led_power_gpio
+0x4af0 mem_kb_check_vdd_count
+0x4af2 mem_0v_adc_data
+0x4af4 mem_2v2_adc_data
+0x4af6 mem_3v_adc_data
+0x4af8 mem_select_system_led_timer
+0x4af9 mem_led_cap_gpio_status
+0x4afa mem_kb_no_data_timeout
+0x4afc mem_kb_gpio_last_val
+0x4b00 mem_store_current_status
+0x4b01 mem_kb_led_on_timer
+0x4b02 mem_kb_debug_sm
+0x4b03 mem_kb_mode
+0x4b05 mem_kb_mode_revese
+0x4b07 mem_master_addr
+0x4b0d mem_led_device_blink_count
+0x4b0e mem_led_device_500ms_cnt
+0x4b0f mem_kb_caps_led_status
+0x4b10 mem_kb_reconnection_ssp
+0x4b11 mem_kb_rcv_hid_control_rsp
+0x4b12 mem_kb_down_regroup
+0x4b17 mem_kb_get_fn_flag
+0x4b18 mem_kb_kscan_cnt
+0x4b19 mem_kb_down_test
+0x4b23 mem_kb_release_fn_data
+0x4b24 mem_led_cap_delay_timer
+0x4b25 mem_led_cap_mult_timer
+0x4b26 mem_led_cap_flag
+0x4b27 mem_hid_rx_data
+0x4b28 mem_kb_fn_c
+0x4b29 mem_kb_c_fn
+0x4b2a mem_keyboard_uuid_list
+0x4db4 mem_keyboard_uuid_list_end
+0x4db4 mem_keyboard_le_att_list
+0x4fa8 mem_keyboard_le_att_list_end
+0x4729 mem_module_wake_up_gpio
+0x472a mem_module_state_gpio
+0x472b mem_module_connect_state_gpio
+0x472c mem_current_packet_length
+0x472e mem_module_state
+0x472f mem_module_task
+0x4730 mem_cmode_addr
+0x4736 mem_module_mcu_wake_pin
+0x4737 mem_module_mcu_wake_delay_us
+0x473b mem_module_spp_lpm_mult
+0x473c mem_module_le_lpm_mult
+0x473d mem_module_bluetooth_stauts_by_command
+0x473e mem_module_uart_rx_buffer
+0x4740 mem_module_uart_rx_buffer_end
+0x4742 mem_module_uart_tx_buffer
+0x4744 mem_module_uart_tx_buffer_end
+0x4746 mem_module_read_vdd_flag
+0x4747 mem_module_read_vdd_count
+0x4748 mem_module_vdd_quotient
+0x4749 mem_module_vdd_remainder
+0x474a mem_module_le_buff_len
+0x474c mem_module_le_buff_len_all
+0x474e mem_module_le_buff_data_len_all
+0x4750 mem_module_le_continue_flag
+0x4751 mem_module_le_rx_data_len
+0x4752 mem_module_le_rx_data_address
+0x4754 mem_module_le_rx_data_handle
+0x4756 mem_module_data_write_handle
+0x4758 mem_module_data_write_handle2
+0x475a mem_module_flag
+0x475b mem_le_notify_type
+0x475c mem_module_hci_notify_start
+0x475e mem_module_hci_notify_offset
+0x4760 mem_module_hci_notify_len
+0x4762 mem_module_hci_notify_att
+0x4764 mem_module_hci_notify_original_len
+0x4766 mem_module_uuid_list
+0x4892 mem_module_uuid_list_end
+0x4892 mem_module_le_att_list
+0x4a86 mem_module_le_att_list_end
+0x4a86 mem_nv_data
+0x4a86 mem_nv_data0
+0x4aa8 mem_nv_data1
+0x4aca mem_nv_data2
+0x4aec mem_nv_data3
+0x4b0e mem_nv_data4
+0x4729 mem_mouse_key
+0x472a mem_mouse_x
+0x472c mem_mouse_y
+0x472e mem_mouse_z
+0x472f mem_mouse_tz
+0x4730 mem_mouse_xy_h
+0x4731 mem_sensor_shutter_hi
+0x4732 mem_sensor_shutter_lo
+0x4733 mem_sensor_smart_flag
+0x4734 mem_sensor_squal_reg
+0x4735 mem_mouse_move_flag
+0x4736 mem_reconnect_timeout
+0x4737 mem_mouse_direct_timeout
+0x4739 mem_mouse_no_data_timeout
+0x473b mem_mouse_blank_data_timeout
+0x473d mem_mouse_discovery_timer
+0x473f mem_mouse_direct_timer
+0x4741 mem_mouse_no_data_timer
+0x4743 mem_mouse_blank_data_timer
+0x4745 mem_mouse_send_blank_timer
+0x4746 mem_mouse_dpi
+0x4747 mem_mouse_dpi_button_state
+0x4748 mem_mouse_test_cnt
+0x4749 mem_le_hibernate_timer
+0x474b mem_mouse_mode_state
+0x474c mem_mouse_le_notify_handle
+0x474d mem_lbutton_gpio
+0x474e mem_rbutton_gpio
+0x474f mem_mbutton_gpio
+0x4750 mem_sbutton1_gpio
+0x4751 mem_sbutton2_gpio
+0x4752 mem_dpi_button_gpio
+0x4753 mem_sensor_data_gpio
+0x4754 mem_whee_a_data_gpio
+0x4755 mem_whee_b_data_gpio
+0x4756 mem_sensor_reset_gpio
+0x4757 mem_device1_led_gpio
+0x4758 mem_device2_led_gpio
+0x4759 mem_device3_led_gpio
+0x475a mem_conn_cnt
+0x475b mem_whee_ta_data_gpio
+0x475c mem_whee_tb_data_gpio
+0x475d mem_wheel_tb_old_pinlevel
+0x475e mem_wheel_tb_new_pinlevel
+0x475f mem_wheel_tog
+0x4760 mem_mouse_tz_data
+0x4761 mem_mouse_tz_data_count
+0x4762 mem_mouse_tz_data_count1
+0x4763 mem_mwhee_a_data_gpio
+0x4764 mem_mwhee_b_data_gpio
+0x4765 mem_mwheel_b_old_pinlevel
+0x4766 mem_mwheel_b_new_pinlevel
+0x4767 mem_mwheel_tog
+0x4768 mem_mouse_z_data
+0x4769 mem_mouse_z_data_count
+0x476a mem_mouse_z_data_count1
+0x476b mem_reconn_mode
+0x476c mem_mouse_statue_led_timer
+0x476d mem_device_flag
+0x476e mem_mouse_uuid_list
+0x4a5c mem_mouse_uuid_list_end
+0x4a5c mem_mouse_le_att_list
+0x4cb4 mem_mouse_le_att_list_end
+0x4729 mem_shutter_send_data
+0x472d mem_shutter_key_temp
+0x472e mem_shutter_send_length
+0x472f mem_shutter_clkn_bt_last
+0x4733 mem_shutter_key
+0x4734 mem_shutter_flag
+0x4735 mem_shutter_cable_unplug_conut
+0x4736 mem_shutter_hid_disconn_count
+0x4737 mem_shutter_1key_send_sm
+0x4738 mem_shutter_iphonekey_gpio
+0x4739 mem_shutter_androidkey_gpio
+0x473a mem_shutter_key_number
+0x473b mem_read_eeprom_temp
+0x473c mem_read_eeprom_mac_addr
+0x473f mem_scale_tx_length
+0x4740 mem_scale_txbuff_inuse
+0x4741 mem_adv_lap_ptr
+0x4743 mem_le_sleep_flag
+0x4744 mem_rx_window_sniff_inc
+0x4746 mem_pair_state
+0x4747 mem_exchange_mtu_req
+0x4748 mem_le_sleep_timeout
+0x474a mem_le_sleep_timeout_timer_count
+0x474c mem_le_fast_adv_timeout
+0x474e mem_le_fast_adv_timeout_timer_count
+0x4750 mem_led_fast_dark_time
+0x4752 mem_led_fast_light_time
+0x4754 mem_power_on_pin
+0x4755 mem_hard_soft_switch_case
+0x4756 mem_shutter_powerup_flag
+0x4757 mem_shutter_button_timeout
+0x4758 mem_shutter_button_timer
+0x4759 mem_power_timeout
+0x475a mem_power_timer
+0x475b mem_enable_key_scan
+0x475c mem_packet_interval_set
+0x475e mem_shutter_led_num
+0x475f mem_led_map
+0x4763 mem_fast_adv_led_style
+0x4763 mem_fa_led_type
+0x4764 mem_fa_led_pin
+0x4765 mem_fa_led_on_time
+0x4767 mem_fa_led_off_time
+0x4769 mem_fa_blink_count
+0x476a mem_slow_adv_led_style
+0x476a mem_sa_led_type
+0x476b mem_sa_led_pin
+0x476c mem_sa_led_on_time
+0x476e mem_sa_led_off_time
+0x4770 mem_sa_blink_count
+0x4771 mem_power_on_led_style
+0x4771 mem_po_led_type
+0x4772 mem_po_led_pin
+0x4773 mem_po_led_on_time
+0x4775 mem_po_led_off_time
+0x4777 mem_po_blink_count
+0x4778 mem_powe_off_led_style
+0x4778 mem_pf_led_type
+0x4779 mem_pf_led_pin
+0x477a mem_pf_led_on_time
+0x477c mem_pf_led_off_time
+0x477e mem_pf_blink_count
+0x477f mem_connected_led_style
+0x477f mem_co_led_type
+0x4780 mem_co_led_pin
+0x4781 mem_co_led_on_time
+0x4783 mem_co_led_off_time
+0x4785 mem_co_blink_count
+0x4786 mem_key_led_style
+0x4786 mem_key_led_style_ind_0
+0x4786 mem_key_led_style_ind_0_data
+0x478d mem_key_led_style_ind_1
+0x478d mem_key_led_style_ind_1_data
+0x4794 mem_key_led_style_ind_2
+0x4794 mem_key_led_style_ind_2_data
+0x479b mem_key_led_style_ind_3
+0x479b mem_key_led_style_ind_key_release
+0x479b mem_key_led_style_ind_3_data
+0x47a2 mem_temp_led_style
+0x47a2 mem_temp_led_type
+0x47a3 mem_temp_led_pin
+0x47a4 mem_temp_led_on_time
+0x47a6 mem_temp_led_off_time
+0x47a8 mem_temp_blink_count
+0x47a9 mem_shutter_key_num
+0x47aa mem_key_conf0
+0x47aa mem_key_conf0_pin
+0x47ab mem_key_conf0_led
+0x47ac mem_key_conf1
+0x47ac mem_key_conf1_pin
+0x47ad mem_key_conf1_led
+0x47ae mem_key_conf2
+0x47ae mem_key_conf2_pin
+0x47af mem_key_conf2_led
+0x47b0 mem_key_conf3
+0x47b0 mem_key_conf3_pin
+0x47b1 mem_key_conf3_led
+0x47b2 mem_key_conf4
+0x47b2 mem_key_conf4_pin
+0x47b3 mem_key_conf4_led
+0x47b4 mem_key_conf5
+0x47b4 mem_key_conf5_pin
+0x47b5 mem_key_conf5_led
+0x47b6 mem_key_value_temp
+0x47b8 mem_key_value
+0x47ba mem_key_packet_count
+0x47bb mem_key_next_addr
+0x47bd mem_key_value_temp1
+0x47be mem_key_value_temp2
+0x47bf mem_key_value_temp3
+0x47c0 mem_key_value_temp4
+0x47c1 mem_key_value_temp5
+0x47c2 mem_key_value_temp6
+0x47c3 mem_key0_press
+0x47d7 mem_key0_release
+0x47eb mem_key1_press
+0x47f9 mem_key1_release
+0x4807 mem_key2_press
+0x4815 mem_key2_release
+0x4823 mem_key3_press
+0x4831 mem_key3_release
+0x483f mem_key4_press
+0x484d mem_key4_release
+0x485b mem_key5_press
+0x4869 mem_key5_release
+0x4877 mem_queue_ele_num
+0x4878 mem_queue_read
+0x487a mem_queue_write
+0x487c mem_queue_start
+0x487c mem_data_ele0
+0x4886 mem_data_ele1
+0x4890 mem_data_ele2
+0x489a mem_data_ele3
+0x48a4 mem_data_ele4
+0x48ae mem_data_ele5
+0x48b8 mem_queue_end
+0x48b8 mem_queue_temp
+0x48ba mem_shutter_key_data_flag
+0x48bb mem_shutter_key_data_flag_1
+0x48bc mem_le_find_type_value_start_handle
+0x48be mem_le_find_type_value_end_handle
+0x48c0 mem_shutter_find_type_value_flag
+0x48c1 mem_le_uuid
+0x48c2 mem_send_updata_le_param_timer
+0x48c3 mem_le_smp_key_dist
+0x48c6 mem_ltk_states
+0x48c7 mem_shutter_conn_update_timer
+0x48c8 mem_empty_count
+0x48c9 mem_shutter_notification_len
+0x48ca mem_shutter_notification_addr
+0x48cc mem_shutter_le_att_list
+0x4729 mem_current_event
+0x472a mem_ipc_lock_rx_data_bt
+0x472b mem_ipc_lock_rx_data_c51
+0x472c mem_ipc_lock_tx_data_bt
+0x472d mem_ipc_lock_tx_data_c51
+0x472e mem_ipc_2bt_fifo_head
+0x47c4 mem_ipc_2bt_fifo_end
+0x47c4 mem_ipc_2bt_read_index
+0x47c6 mem_ipc_2bt_write_index
+0x47c8 mem_ipc_2C51_fifo_head
+0x482c mem_ipc_2C51_fifo_end
+0x482c mem_ipc_2C51_read_index
+0x482e mem_ipc_2C51_write_index
+0x4830 mem_c51_private_area
+0x4894 mem_ipc_tx_evt_buff
+0x4896 mem_ipc_tx_evt
+0x4897 mem_ipc_rx_type
+0x4898 mem_ipc_bt_timer
+0x489a mem_ipc_c51_timer
+0x489c mem_ipc_bt_100ms_timer
+0x489d mem_ipc_c51_100ms_timer
+0x489e mem_ipc_last_check_timer
+0x48a2 mem_new_24g_rxbuf
+0x48c4 mem_new_24g_txbuf
+0x48e4 mem_new_24g_txpayload
+0x4906 mem_new_24g_rxpayload
+0x4926 mem_new_24g_rxdata_length
+0x4927 mem_new_24g_pid
+0x4928 mem_new_24g_datalen
+0x4929 mem_new_24g_data_type
+0x492a mem_new_24g_txlen
+0x492b mem_new_24g_rx_window
+0x492d mem_new_24g_ensure
+0x492e mem_new_24g_txfail_cnt
+0x4930 mem_new_24g_get_ack_fail
+0x4931 mem_new_24g_retry
+0x4932 mem_new_24g_ch
+0x4933 mem_new_24g_current_ch_number
+0x4934 mem_new_24g_paring_addr
+0x4938 mem_new_24g_pairing_sm
+0x4939 mem_new_24g_ch_map1
+0x493d mem_new_24g_ch_map2
+0x4941 mem_new_24g_ch_map3
+0x4945 mem_new_24g_ch_map4
+0x4949 mem_new_24g_tx_btclk
+0x494d mem_new_24g_interval
+0x494e mem_new_24g_interval_min
+0x494f mem_new_24g_interval_max
+0x4950 mem_new_24g_addr
+0x4954 mem_new_24g_abort_pac
+0x4955 mem_new_24g_sync_pac
+0x4956 mem_new_24g_check_dongle_times
+0x4958 mem_new_24g_enter_hibernate
+0x4960 mem_new_24g_device_addr
+0x4964 mem_new_24g_pac_index
+0x4965 mem_new_24g_no_ack
+0x4966 mem_new_24g_sta_crc
+0x4969 mem_new_24g_last_crc
+0x496c mem_new_24g_sta_pid
+0x496d mem_new_24g_last_pid
+0x496e mem_new_24g_max_retry
+0x496f mem_new_24g_mode
+0x4970 mem_new_uart_packet
+0x4990 mem_new_24g_common_temp
+0x49b0 mem_new_24g_rf_last_sta
+0x49b1 mem_new_24g_rf_hop_ch
+0x49b2 mem_new_24g_sync_cnt
+0x49b3 mem_new_24g_hop_pac_retry
+0x49b4 mem_new_24g_rf_work_stage
+0x49b5 mem_new_24g_hop_fastly_cnt
+0x49b6 mem_new_24g_auto_paring_switch
+0x49b7 mem_new_24g_key_wheel_event
+0x49b8 mem_new_24g_delay_long_sleep_cnt
+0x49b9 mem_new_24g_delay_long_sleep_maxcnt
+0x49ba mem_new_24g_enter_lpm_timer
+0x49bb mem_new_24g_syncword
+0x49bd mem_new_24g_syncword_crc8
+0x49be mem_new_24g_get_syncword_crc8
+0x49bf mem_new_24g_paccnt
+0x49c0 mem_new_24g_ota_enable
+0x49c1 mem_bt_wakeup_from_long_mult
+0x49c2 mem_bt_motion_event
+0x49c3 mem_tx_power_temp
+0x49c4 mem_power_ctrl_level
+0x49c5 mem_power_ctrl_pac_succ_cnt
+0x49c6 mem_rssi_signal_buf
+0x49ce mem_rssi_signal_index
+0x49cf mem_rssi_hex_received
+0x49d0 mem_rssi_avg_received
+0x49d1 mem_last_txlch
+0x49d2 mem_last_txlen
+0x49d4 mem_last_txdata
+0x49e8 mem_device_uuid_list
+0x4c40 mem_device_uuid_list_end
+0x4c40 mem_device_le_att_list
+0x4e20 mem_device_le_att_list_end
+0x4e20 mem_empty_count_user
+0x4e21 mem_hid_buff
+0x4e41 mem_adc_0v
+0x4e43 mem_adc_3v
+0x4e45 mem_hibernate_flag
+0x4e46 mem_new_supervision_to
+0x4e48 mem_le_rx_winsows
+0x4e4c mem_le_att_report1
+0x4e4e mem_le_att_report2
+0x4e50 mem_le_slave_update_param_timer
+0x4e51 mem_le_slave_update_mult_timer
+0x4e52 mem_le_reconn_enable_notify_timer
+0x4e53 mem_le_reconn_flag
+0x4e54 mem_le_buff_temp
+0x4e60 mem_le_rx_window_inc
+0x4e62 mem_le_prepare_tx_retransmited_number
+0x4e63 mem_last_check_clk
+0x4e67 mem_hid_send_handshake
+0x4e68 mem_feature_ext_page_number
+0x4e69 mem_rf_init_data_new
+0x4e74 mem_short_lpm_interval_param
+0x4e78 mem_short_lpm_enable
+0x4e79 mem_short_lpm_tx_cnt
+0x4e7a mem_ckln_24g_short_lpm
+0x4e7d mem_send_data_24g_short_lpm
+0x4e7e mem_short_lpm_interval_cnt
+0x4e7f mem_ipc_is_ready
+0x4e80 mem_short_data_wheel
+0x4e81 mem_ble_data_wheel
+0x4e82 mem_ble_data_wheel_lpm_timer
+0x4e83 mem_bt_read_ipc_count
+0x4e84 mem_51_read_sensor_count
+0x4e85 mem_queue_write_prt
+0x4e86 mem_queue_read_ptr
+0x4e87 mem_queue_buffer0
+0x4e8e mem_queue_buffer1
+0x4e95 mem_queue_buffer2
+0x4e9c mem_queue_buffer3
+0x4ea3 mem_ble_read_ipc_fifo_once
+0x4ea4 mem_ble_send_flag
+0x4ea5 mem_mouse_le_pairing_flag
+0x4ea6 mem_le_mouse_fast_conn_flag
+0x4ea7 mem_le_start_adv
+0x4ea8 mem_le_start_fast_conn_count
+0x4ea9 mem_mouse_eeprom_base
+0x4eab mem_mouse_reconn_addr
+0x4ead mem_mouse_le_reconn_addr_data
+0x4eb3 mem_mouse_24g_reconn_addr_data
+0x4eb9 mem_le_fast_conn_finished
+0x4eba mem_le_init_eeprom_base_count
+0x4ebb mem_32asm_data_end
+0x4ebb mem_mult_time_arrive_flag
+
+	width = 32
+	const length = 12000
+
+	/* ========= memory ============== */
+0x0000 mem_le_adv_transmit
+0x0001 mem_le_adv_waitcnt
+0x0002 mem_le_adv_rcv
+0x0003 mem_le_req_rcv
+0x0004 mem_le_scanrsp_rcv
+0x0005 mem_le_conn_rcv
+0x0006 mem_inquiryscan_waitcnt
+0x0007 mem_inquiryscan_rcvcnt
+0x0008 mem_pagescan_waitcnt
+0x0009 mem_pagescan_rcvcnt
+0x000a mem_pagescan_rcvfhscnt
+0x000b mem_slave_rcvcnt
+0x000c mem_page_transmit
+0x000d mem_page_rcv
+0x000e mem_page_rcv_fhs
+0x000f mem_master_rcvcnt
+0x0010 mem_fhs_wait_counter
+0x0011 mem_newconnto_counter
+0x0012 mem_inquiry_transmit
+0x0013 mem_inquiry_rcv
+0x0014 mem_fw_ver
+0x0015 mem_current_context
+0x0016 mem_le_ch_mapped
+0x0017 mem_last_freq
+0x0018 mem_rssi
+0x0019 mem_rx_type
+0x001a mem_rx_hec_err
+0x001c mem_rx_crc_err
+0x001e mem_context_ptr
+0x0020 mem_display
+0x0028 mem_bcd
+0x0030 mem_state
+0x0031 mem_mode
+0x0032 mem_tsniff
+0x0034 mem_sniff_anchor
+0x0038 mem_clk_offset
+0x003e mem_rx_window
+0x0040 mem_plap
+0x0043 mem_puap
+0x0044 mem_pnap
+0x0046 mem_conn_handle
+0x0047 mem_arq
+0x0048 mem_lmp_to_send
+0x0049 mem_lmi_opcode
+0x004a mem_lmo_reason
+0x004b mem_op
+0x004c mem_state_map
+0x004d mem_supervision_timer
+0x0051 mem_supervision_to
+0x0053 mem_name_offset
+0x0054 mem_key_size
+0x0055 mem_conn_sm
+0x0056 mem_aco
+0x0062 mem_kc
+0x0072 mem_conn_timer
+0x0073 mem_sniff_attempt
+0x0074 mem_sniff_timeout
+0x0075 mem_dsniff
+0x0077 mem_amaddr
+0x0078 mem_lmo_opcode1
+0x0079 mem_lmi_opcode1
+0x007a mem_lmo_reason1
+0x007b mem_lmo_tid1
+0x007c mem_lmo_opcode2
+0x007d mem_lmi_opcode2
+0x007e mem_lmo_reason2
+0x007f mem_lmo_tid2
+0x0080 mem_hci_version
+0x0083 mem_acl_pktlen
+0x0085 mem_sco_pktlen
+0x0086 mem_acl_pktcnt
+0x0088 mem_sco_pktcnt
+0x008a mem_current_sniff_attempt
+0x008b mem_current_sniff_timeout
+0x008c mem_nfreq_index_inq
+0x008d mem_nfreq_index_page
+0x008e mem_ninqy_index
+0x008f mem_fhs_misc
+0x0090 mem_subsniff_instant
+0x0094 mem_subsniff_rate
+0x0095 mem_subsniff_tcmax
+0x0097 mem_subsniff_tsniff
+0x0098 mem_lpm_adjust
+0x0099 mem_sync_clke
+0x009f mem_lpm_current_mult
+0x00a0 mem_gpio_wakeup_low
+0x00a4 mem_gpio_wakeup_high
+0x00a8 mem_air_mode
+0x00a9 mem_sco_asso_handle
+0x00aa mem_sco_handle
+0x00ac mem_esco_desco
+0x00ad mem_esco_type
+0x00ae mem_neogotiation_state
+0x00af mem_saved_amaddr
+0x00b0 mem_esco_arq
+0x00b1 mem_esco_saved_arq
+0x00b2 mem_sco_obuf
+0x00d0 mem_sco_ibuf
+0x00ee mem_sco_poll
+0x00ef mem_npage_index
+0x00f0 mem_page_mode
+0x00f1 mem_page_clk
+0x00f5 mem_tst_pktcnt_sync
+0x00f7 mem_tst_pktcnt_hec
+0x00f9 mem_tst_pktcnt_crc
+0x00fb mem_tst_pktcnt_dmh
+0x00fd mem_tmp_buffer_head
+0x0100 mem_tmp_buffer
+0x0150 mem_tester_emulate
+0x0151 mem_temp_payload
+0x0151 test_mode_scenario
+0x0152 test_mode_hopping_mode
+0x0153 test_mode_tx_freq
+0x0154 test_mode_rx_freq
+0x0155 test_mode_power_mode
+0x0156 test_mode_poll_period
+0x0157 test_mode_packet_type
+0x0158 test_mode_data_length
+0x015a mem_test_mode_old_debug_config
+0x015b mem_tester_cnt
+0x015c mem_temp_am_addr
+0x015d mem_temp_arq
+0x015e mem_len
+0x0160 mem_clkn_bt
+0x0164 mem_clke_bt
+0x0168 mem_dpll_clkn
+0x016c mem_connection_options
+0x016d mem_nameres_cnt
+0x016e mem_txptr
+0x0170 mem_slot_offset
+0x0172 extm_fhs_misc
+0x0173 extm_newconn_am_addr
+0x0174 extm_class
+0x0177 extm_lap
+0x017a extm_uap
+0x017b extm_nap
+0x017e mem_debug_config
+0x017f mem_lch_code
+0x0180 mem_fhs_am_addr
+0x0181 mem_dpll_error
+0x0183 mem_bdaddr_list_buff
+0x01a7 mem_select_list_item
+0x01a8 mem_temp_reconn_record
+0x01a8 mem_record_bt_mode
+0x01a9 mem_temp_lap
+0x01af mem_list_item_ptr
+0x01b1 mem_eir
+
+
+
+(//bluetooth tx power
+0 TX_POWER_0DB
+1 TX_POWER_3DB
+2 TX_POWER_5DB
+3 TX_POWER_f3DB
+4 TX_POWER_f5DB
+20 TX_POWER_PAIR
+)
+
+
+0x3b17 rom_lpm_sleep
+0x59e0 rom_save_ucode
+
+0x4219 rom_mem_lpm_xtalcnt
+0x423b rom_mem_patch_ptr
+0x423d rom_mem_patch_len
+
+0x5b1a rom_otpd_read_data
+0x5ada rom_otp_write
+	/* context */
+(
+0x01 coffset_mode
+0x02 coffset_tsniff
+0x04 coffset_sniff_anchor
+0x08 coffset_clk_offset
+0x0e coffset_rx_window
+0x10 coffset_plap
+0x16 coffset_conn_handle
+0x17 coffset_arq
+	/* 3.0 only */
+0x18 coffset_lmp_to_send
+0x1b coffset_op
+0x1c coffset_state_map
+	/* le only */
+0x18 coffset_le_ch
+0x19 coffset_le_hop
+0x1a coffset_le_event_cnt
+
+80 context_size
+3 context_num
+)
+
+(
+0 lpm_flag_wake
+1 lpm_flag_loadcode
+)
+
+/* ========= parameters ============== */
+(
+0x0050 param_newconn_arq
+0x0007 param_esco_addr
+0x0010 param_conn_handle
+0x01f0 param_conn_handle_comp
+0x0020 param_newconnto
+0x0008 param_pagerespto
+0x0a00 param_snooze_setup_orig
+0x5353 param_snooze_ahead_orig
+0x00ff param_ninquiry
+0x2000 param_page_to
+0x0005 param_max_slot
+0x0010 param_sco_poll
+
+/* 6Mhz clock setting */
+/* 12Mhz clock setting */
+0x0e43 param_tx_setup
+0x09d0 param_rx_setup_earlier
+0x0600 param_rf_setup
+0x03bb param_clke_cal
+0x0600 param_conn_access 
+0x0800 param_conn_access_wider
+0x0500 param_pll_setup		// 120 is minimum
+0x0d00 param_rx_setup	// 114us before sync
+2000 param_dpll_start_delay
+
+110 param_lpm_fix
+10 param_lpo_extra
+200 param_lpm_adjmax
+
+-1 param_hibernate_clks
+3000 param_chgpump_delay
+
+3 param_featrue_ssp
+0x0101 param_lmpext_ssp_enable
+339 param_acl_pktlen
+30   param_sco_pktlen
+1     param_acl_pktcnt		/*buffer acl pkt cnt*/
+7     param_sco_pktcnt
+
+
+0x8fffff param_features0
+0x9d83fe param_features1  // not support afh
+0x8359     param_features2
+0x000033 param_unap
+0x001177 param_lap
+0x9e8b33 param_glap
+0x002540 param_class//0x180208 //0x002580//402500//240404
+0x12e904 param_hci_version
+0x000a04 param_lmp_version//0x0a04
+0x000a06 param_lmp_version0
+0x12e9 param_lmp_subversion
+0x0012 param_tisw
+0x0012 param_tpsw
+0x1000 param_tisi
+0x0800 param_tpsi
+0x0020 param_page_window
+0x0020 param_inq_window
+0x1c80 param_supervision_to
+39 param_fcomp_div
+2 param_fcomp_mul
+6     param_name_len
+0x535442 param_name
+0x344950 param_name1
+
+
+)
+
+/* ======= packet types  ========= */
+(
+0x0      type_null    
+0x1      type_poll   
+0x2      type_fhs    
+0x3      type_dm1    
+0x4      type_dh1    
+0x5      type_hv1    
+0x6      type_hv2    
+0x7      type_hv3    
+0x8      type_3dh1     
+0x9      type_aux1   
+0xa      type_dm3    
+0xb      type_dh3    
+0xe      type_dm5    
+0xf      type_dh5    
+0x10     type_id
+0x11     type_shutdown
+0x13     type_lmp
+)
+
+/* ========== flag[6] =============== */
+(
+0        always        /* always 1 */
+1        true          /* set/rstn by verify,compare,icompare (true) */
+2        positive      /* set/rstn by all alu operations (opcode = 0x03,0x13,0x0f,0x1f), if alu output >= 0 */
+3        timeout       /* read only, the timeout from timers */
+5        zero          /* set/rstn by all alu operations (opcode = 0x03,0x13,0x0f,0x1f), if alu output == 0 */
+6        crc_failed    /* level, cleared by hop_start */
+7        enable_white  /* outside mux decide whether to load bt_clk or response_X */
+8        enable_parity /* level */
+9        enable_crc    /* level */
+10       enable_hec    /* level */
+11       decode_fec1   /* level */
+12       decode_fec2   /* level */
+13       decode_fec0   /* level */
+14       encrypt       /* level */
+15       crc16       /* for caculate ccitt crc16 */
+16       swfine	/* =0 stop_watch count based on oneslot =1 on 1 clock */
+20       rqst_freq    /* pulse, to start calculating frequency */
+21       recalc        /* pulse, to recalculate the fhs_parity */
+22       init_encrypt  /* pulse, issued to initialize encrption */
+23       mhalfbnd    /* half slot boundary of clke_rt, or when clke_bt[0] toggles */
+24       sync          /* sync found as a result of correlation,set/rstn by correlate opcode */
+25       user10    /* user10 */
+26       kc_p_activate  /* pulse to recalc the kc_p */
+27       encode_fec1   /* level */
+28       encode_fec2   /* level */
+29       encode_fec0   /* level */
+30       packet_end    /* pulse */
+32       is_tx         /* level */
+33       is_rx         /* level */
+34       halfslot     /* pulse, read only, when clkn_bt[0] toggles */
+35       oneslot      /* pulse, read only, when clkn_bt[1] toggles */
+36       mslotbnd     /* pulse, read only, when clke_bt[1] toggles */
+37       expire       /* level, read only, when selected clock source exceed timeup value */
+38       meet         /* level, read only, when selected clock source meet timeup value */
+39       tx_clear     /* level, read only, indicate tx pipe is cleared */
+40       user         /* user0 */
+41       master        /* user1 */
+42       slave2         /* user2 */
+43       wake           /* user3 */
+44       user2        /* user4 */
+45       match         /* user5 */
+46       attempt        /* user6 */
+47       user3          /* user7 */
+48       clknt         /* user8 */
+49	   user7 	/* user9 */
+50       synchronize   /* synchronize lpo and regular version of the clock */
+51       lpo_edge  /* read only, 3 clocks after risling edge of lpo clock */
+52       blank         /* C0 only, means pdata == 0 */
+53       modone          /* set divide operation is done */
+54       le		/* bluetooth 4.0 LE enable */
+55       aes_ready	/* set when aes is ok */
+63       never         /* read only, always 0 */
+)
+
+default flag = always
+
+/* ========== reg[6] =============== */
+(
+0        mark   /* for keeping strobes, more permanent */
+1        type   /* save and verify during rx */     /* rw */
+2        temp   /* general purpose register, 64 bits */
+3        contru  /* contr uart */
+4        am_addr      /* verify during rx, read and send during tx */ /* ro */
+5        contw        /* last mem_addr during write */
+6        contr        /* last mem_addr during read */
+7        queue    /* the index of qset*,qisolate* commands, ie, if queue = 3, qset/qisolate operate on bit3 */
+8        debug    /* can be wired out for observation */
+9        access   /* the 72 bit access word */
+10       contwu   /* contw uart */
+11       timeup        /* when does certain counter expire */
+12       pwindow       /* bit 71-61 of pdata; because on rx, bits shifts in from 71 down */
+13       fhs_parity    /* re-gernated based on bt_adr( {nap,uap,lap} ) when recalc flag is pulsed */
+14       white_init    /* init value of the whitening */
+15       crc24_init        /* init crc24 lfsr, 24 bits */
+16       interrupts    /* set interrupts, 40 bits */
+17       rega          /* general purpose register, 32 bits */
+18       regb          /* general purpose register, 32 bits */
+19       regc          /* general purpose register, 17 bits */
+20       regab         /* concat of {rega,regb}, thus 64 bits */
+21       radio_ctrl   /* radio i/f direct i/o ctrl, check following "radio_ctrl" section */
+21       ctrl_reg     /* 2023 and after */
+22       jtag_addr    /* load jtag address field, lsb */
+23       freq_index   /* 7 bit read only */
+24       jtag_data    /* wdata to and rdata from jtag */
+25       clkn              /* {clkn_bt, clkn_rt} */
+26       clke              /* {clke_bt, clke_rt} */
+27       stop_watch
+28       fhs_misc   /* SR, SP, pscan mode */
+29       fhs_class  /* class field in fhs */
+30       fhs0   /* read only, bit 0-71 of fhs word */
+31       fhs1   /* read only, bit 72-142 of fhs word */
+32       bt_adr /* r/w, the bt_addr to access gen and freq hopping, contain only lap and uap */
+33       bt_clk /* r/w, the bt_clk for freq hopping */
+34       clkn_bt  /* read only, native bluetooth clock, free running 3.2KHz  or controlled by RTHALFSLOT register */
+35       clkn_rt  /* read only, native realtime clock, free running 12MHz, count from 0-3749, or controlled by RTHALFSLOT register */
+36       freq_mode
+/* wire even_train    = freq_mode[4];    // odd even train                            */
+/* wire conn_mode     = 3;    // connection                                           */
+/* wire iqpgscan_mode = 2;    // slave in inquiry and page (not response)             */
+/* wire iqpgresp_mode = 1;    // slave in inquriy and page (response only)            */
+/* wire inqypage_mode = 0;    // master in inquiry and page(response or not response) */
+37       xin   /* x parameter, read only */
+38       N_tx_slot /* the N factor in equations for Xi,Xp,Xprm,Xprs */
+39 	   auxcnt
+40       clke_bt  /* r/w,  external bluetooth clock , free running 3.2KHz or controlled by RTHALFSLOT register */
+41       clke_rt  /* r/w,  external realtime clock, , free running 12MHz, count from 0-3749, or controlled by RTHALFSLOT register */
+43       host_mode         /* generic stuff for kick starts */
+44       lap
+45       uap
+46       nap         
+47       regext		/* r/w extended 12x32bit registers,  indexed by regext_index */
+48       alarm             /* r/w, lpo wake up time, this is also how lpo and current clock keep sync */
+49       lpo_time          /* read only, this is the value to be copied back to clkn/clke after wakeup */
+50       kc_ls             /* secret key,                71: 0 */
+51       kc_ms             /* secret key,               127:72 */
+52       g1l               /* encryption length                */
+53		mask3ff		/* for mask 0x3ff operation */
+54       aes_ctrl		
+56       regext_index   /* index of regext */
+57	     loopcnt
+58      stack			/* current return address */
+59       stack_ptr		/* stack depth */
+61         pc /* direct goto */
+62       null              /* to nowhere */
+63       pdata /* the shift register */
+)
+default reg = pdata
+
+/* regext_index */
+(
+0 regidx_data
+4 regidx_key
+8 regidx_xor
+12 regidx_result
+)
+/* ========== radio_ctrl========= */
+(
+0 TXGFSK
+1 PSK
+2 PSK3M
+3 RESET
+)
+/* assign BPWR = radio_ctrl[0]; */
+/* assign PARAMP = radio_ctrl[1]; */
+/* assign XTALPU = radio_ctrl[2]; */
+/* assign SYNTHPU = radio_ctrl[3]; */
+/* assign TXPU = radio_ctrl[4]; */
+/* assign RXPU = radio_ctrl[5]; */
+/* assign SLCTRL = radio_ctrl[6]; */
+/* assign XTALSEL_MUX_SEL = radio_ctrl[7] */
+
+
+/* =========== destination[4] ============== */
+(
+0 bucket
+1 rxf
+2 back
+3 mod
+)
+default dest = bucket
+
+/* =========== source[4] ============= */
+(
+1 txf
+3 demod
+)
+default source = 0
+
+
+/* ============== mark ============= *//*0 - 47 */
+(
+
+0  mark_fhs_eir  
+1  mark_rxbuf_inuse
+2  mark_tx_l2cap
+3  mark_switch_initiated
+4  mark_accept_switch
+5  mark_loopback
+7  mark_esco
+8  mark_esco_rxok
+9  mark_context
+10 mark_am_addr_broadcast
+11 mark_fhs_already_good
+12 mark_page_trainb
+13 mark_lpm_mult_enable
+14 mark_usb_flag
+15 mark_old_packet
+16 mark_longpacket
+17 mark_testmode
+18 mark_ar2
+19 mark_h5tx_rp
+20 mark_h5tx_crc	
+21 mark_h5tx_retransmit
+22 mark_h5rx_pstart
+23 mark_h5_sync
+24 mark_h5_reinit
+28 mark_inquiry_on
+29 mark_inquiry_state
+30 mark_inquiry_trainb
+31 mark_periodical_diac
+32 mark_all_diac
+33 mark_slave_in_rand_accepted
+34 mark_reconn_recieve_switch
+35 mark_isstr
+36 mark_loadcode
+37 mark_ext_patch
+38 mark_24g
+39 mark_24g_conext
+40 mark_24g_search_pair
+41 mark_24g_normal_rcv
+42 mark_eeprom_size
+// REVAB:max 35, REVC:max 63
+
+)
+
+(
+1 reload_type_otp
+2 reload_type_spi
+3 reload_type_iic
+)
+
+
+/* ============== soft timers ============== */
+(
+0 h5_reinit_timer
+1 hci_retransmit_timer
+1 le_adv_interval_timer
+2 inquiry_length_timer
+3 le_scan_interval_timer
+4 page_length_timer
+5 iscan_interval_timer
+6 pscan_interval_timer
+7 lpo_delay_timer
+8 ui_hundred_millisecond_timer
+9 ui_led_blink
+10 switch_wait_timer
+11 enpt_delay_timer
+12 temp_timer
+13 page_interval_timer
+14 uart_rx_timer
+)
+(
+0 ui_led_stop
+1 ui_led_start
+2 ui_led_dark_time
+3 ui_led_light_time
+)
+(
+1 hci_cmd_inquiry
+2 hci_cmd_inquiry_cancel
+3 hci_cmd_remote_name_req
+4 hci_cmd_remote_feature_req
+5 hci_cmd_create_conn
+6 hci_cmd_disconn
+7 hci_cmd_accept_conn
+8 hci_cmd_reject_conn
+9 hci_cmd_pair
+10 hci_cmd_nopair
+11 hci_cmd_linkkey
+12 hci_cmd_nokey
+13 hci_cmd_auth
+14 hci_cmd_stopencrypt
+15 hci_cmd_startencrypt
+16 hci_cmd_setup_sco
+17 hci_cmd_disconn_sco
+18 hci_cmd_in_sniff
+19 hci_cmd_exit_sniff
+20 hci_cmd_remote_version_req
+21 hci_cmd_remote_ext_features_req
+22 hci_cmd_io_cap
+23 hci_cmd_role_discovery
+24 hci_cmd_role_switch
+25 hci_cmd_accept_with_switch
+26 hci_cmd_detach
+27 hci_cmd_le_create_conn
+28 hci_cmd_accept_sco_conn
+80 hci_cmd_wait_remote_feature
+81 hci_cmd_wait_remote_ext_feature
+82 hci_cmd_wait_remote_name
+)
+
+
+
+/* ============== debug ============= */
+(
+0 debug_neg_skew
+1 debug_bitbucket
+2 debug_dont_clear_got_tx
+3 debug_scatter_enabled
+4 debug_tx_fixed_freq
+5 debug_rx_fixed_freq
+6 debug_tx_pattern
+)
+
+/* ============== tester_emulator ============= */
+(
+0 tester_fixed_flow
+1 tester_fixed_flow_polarity
+2 tester_change
+3 tester_exit
+4 tester_pattern_test
+5 tester_whitening_change
+6 tester_fixed_freq
+7 tester_no_whitening
+)
+
+/* ============== mode ==========*/
+(
+0 mode_le
+1 mode_master
+2 afh_enable
+3 afh_change
+4 send_sco_when_slave
+5 first_seqnx
+)
+
+/* ============== state_map ==========*/
+(
+0 smap_lmptidinit
+1 smap_lmptid
+2 smap_encryption
+3 smap_name_res
+4 smap_name_req
+5 smap_edr
+6 smap_rxlmp
+7 smap_rxl2cap
+)
+(
+0 state_inconn
+1 state_insniff
+2 state_insco 
+3 state_inpage
+4 state_conn_comp
+5 state_init_seq
+6 state_combkey
+7 state_linkkey
+)
+(
+0 op_send_sres
+1 op_auth_req
+2 op_inrand_req
+3 op_disconn
+4 op_stop_enc
+5 op_start_enc
+6 op_txl2cap
+7 op_pkt_comp
+)
+
+
+/* ============== arq [3] ================ */
+(
+0 flow
+1 arqn
+2 seqn
+3 wack
+4 flowx              /* out */  /* not really in memory */
+5 arqnx              /* out */
+6 seqnx              /* out */
+7 bcast1             /* first broadcast received */
+)
+
+/* arq          {flow,arqn,seqn}, read/write */
+/* [0] flow r/w  acl full status of the other, store during rx, checked during tx */
+/* [1] arqn r/w  ack of the other during rx (ack tx fifo),                        */
+/* [2] seqn r/w  seqn of the other, check during rx                               */ 
+/* arqx         {flowx,arqnx,seqnx} */
+/* [0] flowx r/o flow back to the other, 1 alow send, 0 not to send, read only tx */
+/* [1] arqnx r/w ack to the other, set by rx, send back on tx                     */
+/* [2] seqnx r/w toggled by arqn, to be send during tx                            */ 
+
+(
+0 llid0
+1 llid1
+2 nesn
+3 sn
+4 md
+5 wak
+)
+
+/* AFH flags */
+(
+0 AFH_CFG_ON
+1 AFH_CFG_TIMER
+2 send_lmp_set_afh
+3 AFH_CFG_REPORT_MODE
+4 AFH_CFG_MASTER_SENT_REQ
+)
+
+/* LLID CODE */
+(	
+1 LLID_L2CAP_CONT
+2 LLID_L2CAP_START
+3 LLID_LMP
+)
+
+/* ============== master_state ==========*/
+(
+0  master_in_idle
+1  master_in_inquiry
+2  master_in_page
+10 master_in_becoming_slave
+15 master_in_conn
+)
+(
+0 newrev_feature_bettx
+1 newrev_feature_betplltx
+2 newrev_feature_skip_retransmit
+3 newrev_feature_init_radio_after_sleep
+4 newrev_feature_no_lpolog
+)
+/*************mem_pincode_state****************/
+(
+0 pincode_state_ilde
+1 pincode_state_wait_pincode
+2 pincode_state_pincode_ready
+)
+
+
+// lpm_write
+(
+1 lpmreg_sel_ctrl
+2 lpmreg_sel_ctrl2
+4 lpmreg_sel_gpiolow
+8 lpmreg_sel_gpiohigh
+16 lpmreg_sel_counter
+)
+
+//scan_mode
+(
+0 inq_scan_mode
+1 page_scan_mode
+2 page_inq_enable
+)
+//mem_neogotiation_state
+(
+ 0 default_neogotiation_state
+ 1 prarm_neogotiation
+)
+
+//mem_lpm_wake_lock
+(
+
+2 wake_lock_hci_host
+3 wake_link_key_exists
+4 wake_lock_delay
+5 wake_lock_uart_tx
+6 wake_lock_uart_rx
+7 wake_lock_button
+8 wake_lock_cmd
+9 wake_lock_app
+10 wake_lock_lmp_tx
+11 wake_lock_lmp_rx
+12 wake_lock_l2cap_tx
+13 wake_lock_l2cap_rx
+14 wake_lock_ipc_c512bt
+15 wake_lock_ipc_bt2c51
+
+)
+
+(
+0 bt_disabled
+1 ble_disabled
+2 module_disable
+
+)
+
+(
+0x33  REC_3_MODE
+0x34  REC_4_MODE
+0x35  REC_4_MODE_STATIC_ADDRESS
+0x36  REC_4_MODE_RANDOM_RESOLVABLE_PRIVATE_ADDRESS
+0x37  REC_4_MODE_RANDOM_NON_RESOLVABLE_PRIVATE_ADDRESS
+)
+
+
+//sniff UART_TX UART_RX
+(
+6 UART_WAKEUP_TX
+7 UART_WAKEUP_RX
+)
+
+
+
+
+(
+0 P24G_SM_PAIRING_SUCC
+1 P24G_SM_PAIRING_REQUEST
+2 P24G_SM_PAIRING_WAIT_ADDR
+3 P24G_SM_PAIRING_COMPLETE
+4 P24G_SM_PAIRING_WAIT_SUCC
+)
+
+(
+0 P24G_PAIRING_REQ_HEAD
+1 P24G_PAIRING_COMPLETE_HEAD
+)
+
+(
+0 ENSURE_OFF_24G
+1 ENSURE_ON_24G
+)
+
+/* 24g */
+(
+6 dlen_24g
+14 plen_24g
+90 blen_tx_24g
+106 blen_rx_24g
+42 blen_txack_24g
+58 blen_rxack_24g
+4 retry_24g
+0xaaf08e acc_24g
+0x15c4 crc_data_3byte
+0xbb81 crc_data_6byte
+0x4160 crc_ack
+41390 crc_ack_4byte
+
+1 NO_ACK_24g
+0 with_ack_24g
+
+0x10 ABORT_DATA
+0x40 RSSI_SENSITIVITY
+
+0x4e G24_PAIR_CH
+
+81000 G24_8125_INTERVAL_PARAM
+78000 G24_78125_INTERVAL_PARAM
+
+)
+
+(
+0 disable_24g
+1 tx_24g
+2 rx_24g
+
+0 bit_ack_24g
+)
+
+//mem_24g_interrupt
+(
+0 rx_dr
+1 rx_sync
+4 tx_ds
+5 tx_fail
+)
+
+//mem_24g_data_type
+(
+0x07 bits_data
+//0-2 data type
+3 bit_abort
+4 bit_hop
+5 bit_sync
+//6-7 channel offset
+)
+
+//mem_send_data_24g_short_lpm
+(
+0 SHORT_LPM_STATE_POLLING 	
+1 SHORT_LPM_STATE_DATA
+2 SHORT_LPM_STATE_NODATA
+3 SHORT_LPM_STATE_BUTTON_WHEEL
+)
+
+
+
+0x0215 mem_ucode_status
+0x0216 mem_otp_ucode_flag
+0x0218 mem_spid_tbuf/* spid buf: 03 addr[23:16] addr[15:8] addr[7:0] */
+0x0219 mem_iicd_tbuf/* iicd buf: iic_adr addr[15:8] addr[7:0] iic_adr */
+0x0219 mem_addr_hi
+0x021a mem_addr_mi
+0x021b mem_addr_lo
+0x021c mem_iicd_addr
+0x021d mem_spid_rbuf
+0x0221 mem_ucode_buf
+0x0223 mem_ucode_len
+0x0225 mem_sched_addr
+0x0227 mem_ucode_ptr
+0x0229 mem_ucode_keybuf
+0x0239 mem_check_plap_temp
+0x024b mem_sensor_id
+0x024c mem_reconnect_flag
+0x024d mem_switch_fail_master_count
+0x024e mem_app_evt_timer_count
+
+//adc read
+(
+0 ADC_CONFIG_VINLPM
+1 ADC_CONFIG_HVIN
+2 ADC_CONFIG_GPIO
+)
+
+
+0x0000 otp_ucode_flag
+0x07f0 otp_ucode_aeskey
+
+/* adc data addr and flag */
+(
+0x07e0 OTP_CHIP_FUNCTIONS
+0x07e2 otp_adc_io_0_5V_addr
+0x07e4 otp_adc_hvin_1V_addr
+0x07e6 otp_adc_vinlpm_2V_addr
+0x07e8 otp_adc_io_1V_addr
+0x07ea otp_adc_hvin_5V_addr
+0x07ec otp_adc_vinlpm_3V_addr
+0x07ee otp_adc_flag_addr
+0xaa55 OTP_ADC_FLAG
+)
+
+/* data stored in eeprom */
+(
+0	eeprom_bdaddr_list
+0	eeprom_nv_ram
+28	eeprom_last_record
+29	eeprom_le_reconn_local_addr
+35	eeprom_linkkey_list//64
+
+99	eeprom_module_bt_adss//6
+105	eeprom_module_le_adss//6
+111	eeprom_module_pincode_length//1
+112	eeprom_module_pincode//15
+127	eeprom_module_bt_name_length//1
+128	eeprom_module_bt_name//32
+160	eeprom_module_ble_name_length//1
+161	eeprom_module_ble_name//31
+192	eeprom_module_trans_baud//3
+195	eeprom_module_init_flag//2
+197	eeprom_module_uuid//6
+203 eeprom_module_ssp_enable//1
+204 eeprom_module_end//2
+
+//dpi eeprom addr
+198 eeprom_mouse_dpi
+)
+
+/*mem_app_handshake_flag*/
+(
+0 APP_HANDSHAKE_NULL
+1 APP_HANDSHAKE_DONE
+
+)
+/*mem_device_option*/
+(
+1 dvc_op_hci
+3 dvc_op_kb
+4 dvc_op_dongle
+5 dvc_op_spp
+6 dvc_op_ukey
+7 dvc_op_ir
+
+9 dvc_op_shutter
+10 dvc_op_module
+11 dvc_op_ble_mouse
+12 dvc_op_ble_kb
+13 dvc_op_ble_prcp
+255 dvc_op_test
+//device option hight 4
+6 dvc_op_mouse
+7 dvc_op_keyboard
+//device option low 2
+(
+0 MODE_3_MOUSE
+1 MODE_4_MOUSE
+)
+)
+
+(
+3 twspi_sclk
+4 twspi_sdio
+)
+
+(
+4 pan_clk_bit
+5 pan_dat_bit
+6 pan_mov_bit
+)
+
+(
+7 otp_uflag_aes
+6 otp_uflag_skip_eep
+5 otp_uflag_skip_flash
+4 otp_uflag_hci
+)
+
+/* ir command */
+(
+1 ircmd_record
+2 ircmd_play
+3 ircmd_write_pulse
+4 ircmd_write_seq
+5 ircmd_write_next
+
+8 ircmd_test_play
+9 ircmd_test_rec
+
+10 ircmd_report_pulse
+11 ircmd_report_seq
+12 ircmd_report_raw
+
+20 ircmd_screen_on
+21 ircmd_screen_off
+)
+
+(
+7 gpio_active_bit
+)
+(
+2 HID_HANDSHAKE_TIMEOUT
+
+)
+
+(
+1 APP_FLAG_RECONNECT
+)
+(
+5 LPM_WAKE_UP_DELAY_TIMER
+)
+
+
+//mem_app_disconn_reason
+//mem_app_disconn_reason_flag
+//bit map
+(
+2 APP_DISC_RSN_SIZE
+)
+(
+0 APP_DISC_BY_BUTTON
+1 APP_DISC_AFTER_PAIRING
+2 APP_DISC_AFTER_RECONN
+3 APP_DISC_AFTER_SNIFF
+4 APP_DISC_AFTER_SETUP_DONE
+5 APP_DISC_AFTER_HANDSHAKE
+6 APP_DISC_BT
+7 APP_DISC_BLE
+8 APP_DISC_L2CAP_REFUSED
+9 APP_DISC_SWITCH_FAIL
+)
+//eeprom init flag
+(
+	0xaa55 EEPROM_INIT_FLAG
+)
+
+(
+0x01 IPC_TYPE_CMD
+0x02 IPC_TYPE_EVT
+0x03 IPC_TYPE_HID
+0x04 IPC_TYPE_SPP
+0x05 IPC_TYPE_BLE
+0x06 IPC_TYPE_24G
+)
+
+(
+0x01 SYC_TASK_LPM
+0x02 SYC_TASK_TIMER
+0x03 SYC_TASK_HIBERNATE
+)
+
+
+
+0x024f mem_h5rx_ackcnt
+0x0250 mem_check_err_acl_cont
+0x0251 mem_rp_packets
+0x0252 mem_packet_type
+0x0254 mem_hci_sniff_conn_handle
+0x0256 mem_hci_sniff_max_interval
+0x0258 mem_hci_sniff_min_interval
+0x025a mem_hci_sniff_attempt
+0x025c mem_hci_sniff_timeout
+0x025e mem_voice_setting
+0x0260 mem_retransmission_effort
+0x0261 mem_sco_ptype
+0x0263 mem_extm_uap_restore
+0x0266 mem_h5rx_rptr
+0x0268 mem_h5rx_ack
+0x0269 mem_h5tx_ack
+0x026a mem_h5tx_rptr
+0x026c mem_h5tx_wptr
+0x026e mem_h5tx_free
+0x0270 mem_h5rx_tmp
+0x0271 mem_h5tx_seq
+0x0272 mem_hci_acl_queue_wptr
+0x0274 mem_hci_acl_queue_rptr
+0x0276 mem_hci_acl_queue_end
+0x0278 mem_hci_acl_queue_wcnt
+0x0279 mem_hci_acl_cnt
+0x027a mem_hci_acl_tx_trigger_wptr//tx via uart
+0x027c mem_ucode_id_local
+0x027d mem_ucode_id_remote
+0x027e mem_check_sum
+0x027f mem_ucode_temp
+0x0280 mem_ucode_temp1
+0x0281 mem_lock_in_enc//boolean
+0x0282 mem_hci_disconn_reason
+0x0283 mem_hci_curr_len
+0x0284 mem_hci_curr_target
+
+
+15 hci_flag_rp
+//mem_hci_options bit map
+(
+1 hci_option_h4
+2 hci_option_protocol2
+3 hci_option_protocol3
+4 hci_option_uart
+5 hci_option_usb
+6 hci_option_phy2
+7 hci_option_phy3
+)
+// UART baud rate @6MHz
+(
+0 uart_ctrl_bit_enable
+3 uart_ctrl_bit_slip_protocol
+
+)
+
+//bit map of core_uart_ctrl
+(
+
+)
+//bit map of core_uart_status
+(
+0 uart_status_tx_fifo_full
+1 uart_status_tx_fifo_empty
+2 uart_status_tx_busy
+3 uart_status_rx_fifo_empty
+
+)
+//HCI H4 LOG related
+(
+0x4850 mem_hci_log
+8 hci_log_size
+100 hci_log_cnt
+
+)
+//HCI H4 Packet TYPE
+(
+0x01 HCI_H4_TYPE_CMD
+0x02 HCI_H4_TYPE_ACL
+0x04 HCI_H4_TYPE_EVENT
+
+)
+// HCI command opcode group field values
+(
+0x01 HCI_OGF_LINK_CONTROL
+0x02 HCI_OGF_LINK_POLICY
+0x03 HCI_OGF_BASEBAND
+0x04 HCI_OGF_INFO
+0x05 HCI_OGF_STATUS
+0x06 HCI_OGF_TEST
+0x08 HCI_OGF_LOW_ENERGY
+0x3e HCI_OGF_LOGO_TESTING
+0x3f HCI_OGF_VENDOR_SPECIFIC
+)
+
+// HCI link control opcode command field values, OGF=1
+(
+0x01 HCI_INQUIRY 
+0x02 HCI_INQUIRY_CANCEL 
+0x03 HCI_PERIODIC_INQUIRY_MODE 
+0x04 HCI_EXIT_PERIODIC_INQUIRY_MODE 
+0x05 HCI_CREATE_CONNECTION 
+0x06 HCI_DISCONNECT 
+0x07 HCI_ADD_SCO_CONNECTION 
+0x08 HCI_CREATE_CONNECTION_CANCEL
+0x09 HCI_ACCEPT_CONNECTION 
+0x0A HCI_REJECT_CONNECTION 
+0x0B HCI_LINK_KEY_REQUEST_REPLY 
+0x0C HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY 
+0x0D HCI_PIN_CODE_REQUEST_REPLY 
+0x0E HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY 
+0x0F HCI_CHANGE_CONNECTION_PACKET_TYPE 
+0x11 HCI_AUTHENTICATION_REQUESTED 
+0x13 HCI_SET_CONNECTION_ENCRYPTION 
+0x15 HCI_CHANGE_CONNECTION_LINK_KEY 
+0x17 HCI_MASTER_LINK_KEY 
+0x19 HCI_REMOTE_NAME_REQUEST 
+0x1A HCI_REMOTE_NAME_REQUEST_CANCEL
+0x1B HCI_READ_REMOTE_SUPPORTED_FEATURES 
+0x1C HCI_READ_REMOTE_EXT_FEATURES 
+0x1D HCI_READ_REMOTE_VERSION_INFORMATION 
+0x1F HCI_READ_CLOCK_OFFSET 
+0x20 HCI_READ_LMP_HANDLE
+0x28 HCI_SETUP_SCO_CONNECTION
+0x29 HCI_ACCEPT_SCO_CONNECTION
+0x2A HCI_REJECT_SCO_CONNECTION
+0x2B HCI_IO_CAP_REQUEST_REPLY
+0x2C HCI_USER_CONFIRMATION_REQUEST_REPLY
+0x2D HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY
+0x2E HCI_USER_PASSKEY_REQUEST_REPLY
+0x2F HCI_USER_PASSKEY_REQUEST_NEGATIVE_REPLY
+0x30 HCI_REMOTE_OOB_DATA_REQUEST_REPLY
+0x33 HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY
+0x34 HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY
+0x35 HCI_CREATE_PHYSICAL_LINK
+0x36 HCI_ACCEPT_PHYSICAL_LINK
+0x37 HCI_DISCONNECT_PHYSICAL_LINK
+0x38 HCI_CREATE_LOGICAL_LINK
+0x39 HCI_ACCEPT_LOGICAL_LINK
+0x3A HCI_DISCONNECT_LOGICAL_LINK
+0x3B HCI_LOGICAL_LINK_CANCEL
+0x3C HCI_FLOW_SPEC_MODIFY
+0x3D HCI_ENHANCED_SETUP_SYNCHRONOUS_CONNECTION
+0x3E HCI_ENHANCED_ACCEPT_SYNCHRONOUS_CONNECTION_REQUEST
+0x3F HCI_TRUNCATED_PAGE
+0x40 HCI_TRUNCATED_PAGE_CANCEL
+0x41 HCI_SET_CONNECTIONLESS_SLAVE_BROADCAST
+0x42 HCI_SET_CONNECTIONLESS_SLAVE_BROADCAST_RECEIVE
+0x43 HCI_START_SYNCHRONIZATION_TRAIN
+0x44 HCI_RECEIVE_SYNCHRONIZATION_TRAIN
+0x45 HCI_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY
+)
+
+
+// HCI link policy commands OCF value, OGF=2
+(
+0x01 HCI_HOLD_MODE 
+0x03 HCI_SNIFF_MODE 
+0x04 HCI_EXIT_SNIFF_MODE 
+0x05 HCI_PARK_MODE 
+0x06 HCI_EXIT_PARK_MODE 
+0x07 HCI_QOS_SETUP 
+0x09 HCI_ROLE_DISCOVERY 
+0x0B HCI_SWITCH_ROLE 
+0x0C HCI_READ_LINK_POLICY_SETTINGS 
+0x0D HCI_WRITE_LINK_POLICY_SETTINGS 
+0x0e HCI_READ_DEFAULT_LINK_POLICY_SETTINGS
+0x0f HCI_WRITE_DEFAULT_LINK_POLICY_SETTINGS
+0x10 HCI_FLOW_SPECIFICATION
+0x11 HCI_SNIFF_SUBRATING
+)
+
+// HCI host controller and baseband commands OCF values, OGF=3
+(
+0x01 HCI_SET_EVENT_MASK 
+0x03 HCI_RESET 
+0x05 HCI_SET_EVENT_FILTER 
+0x08 HCI_FLUSH 
+0x09 HCI_READ_PIN_TYPE 
+0x0A HCI_WRITE_PIN_TYPE 
+0x0B HCI_CREATE_NEW_UNIT_KEY 
+0x0D HCI_READ_STORED_LINK_KEY 
+0x11 HCI_WRITE_STORED_LINK_KEY 
+0x12 HCI_DELETE_STORED_LINK_KEY 
+0x13 HCI_WRITE_LOCAL_NAME 
+0x14 HCI_READ_LOCAL_NAME 
+0x15 HCI_READ_CONN_ACCEPT_TIMEOUT 
+0x16 HCI_WRITE_CONN_ACCEPT_TIMEOUT 
+0x17 HCI_READ_PAGE_TIMEOUT 
+0x18 HCI_WRITE_PAGE_TIMEOUT 
+0x19 HCI_READ_SCAN_ENABLE 
+0x1A HCI_WRITE_SCAN_ENABLE 
+0x1B HCI_READ_PAGE_SCAN_ACTIVITY 
+0x1C HCI_WRITE_PAGE_SCAN_ACTIVITY 
+0x1D HCI_READ_INQUIRY_SCAN_ACTIVITY 
+0x1E HCI_WRITE_INQUIRY_SCAN_ACTIVITY 
+0x1F HCI_READ_AUTHENTICATION_ENABLE 
+0x20 HCI_WRITE_AUTHENTICATION_ENABLE 
+0x21 HCI_READ_ENCRYPTION_MODE 
+0x22 HCI_WRITE_ENCRYPTION_MODE 
+0x23 HCI_READ_CLASS_OF_DEVICE 
+0x24 HCI_WRITE_CLASS_OF_DEVICE 
+0x25 HCI_READ_VOICE_SETTING 
+0x26 HCI_WRITE_VOICE_SETTING 
+0x27 HCI_READ_AUTOMATIC_FLUSH_TIMEOUT 
+0x28 HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT 
+0x29 HCI_READ_NUM_BROADCAST_RETRANSMISSIONS 
+0x2A HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS 
+0x2B HCI_READ_HOLD_MODE_ACTIVITY 
+0x2C HCI_WRITE_HOLD_MODE_ACTIVITY 
+0x2D HCI_READ_TRANSMIT_POWER_LEVEL 
+0x2E HCI_READ_SCO_FLOW_CONTROL_ENABLE 
+0x2F HCI_WRITE_SCO_FLOW_CONTROL_ENABLE 
+0x31 HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL 
+0x33 HCI_HOST_BUFFER_SIZE 
+0x35 HCI_HOST_NUM_COMPLETED_PACKETS 
+0x36 HCI_READ_LINK_SUPERVISION_TIMEOUT 
+0x37 HCI_WRITE_LINK_SUPERVISION_TIMEOUT 
+0x38 HCI_READ_NUMBER_OF_SUPPORTED_IAC 
+0x39 HCI_READ_CURRENT_IAC_LAP 
+0x3A HCI_WRITE_CURRENT_IAC_LAP 
+0x3B HCI_READ_PAGE_SCAN_PERIOD_MODE 
+0x3C HCI_WRITE_PAGE_SCAN_PERIOD_MODE 
+0x3D HCI_READ_PAGE_SCAN_MODE 
+0x3E HCI_WRITE_PAGE_SCAN_MODE 
+0x3F HCI_SET_AFH_CHANNEL_CLASSIFICATION 
+
+
+0x42 HCI_READ_INQUIRY_SCAN_TYPE 
+0x43 HCI_WRITE_INQUIRY_SCAN_TYPE 
+0x44 HCI_READ_INQUIRY_MODE 
+0x45 HCI_WRITE_INQUIRY_MODE 
+0x46 HCI_READ_PAGE_SCAN_TYPE 
+0x47 HCI_WRITE_PAGE_SCAN_TYPE 
+
+0x48 HCI_READ_AFH_CHANNEL_ACCESSMENT_MODE 
+0x49 HCI_WRITE_AFH_CHANNEL_ACCESSMENT_MODE 
+0x51 HCI_READ_EXTENDED_INQUIRY_RESPONSE
+0x52 HCI_WRITE_EXTENDED_INQUIRY_RESPONSE
+0x53 HCI_REFRESH_ENCRYPTION_KEY
+0x55 HCI_READ_SIMPLE_PAIRING_MODE
+0x56 HCI_WRITE_SIMPLE_PAIRING_MODE
+0x57 HCI_READ_LOCAL_OOB_DATA
+0x58 HCI_READ_INQUIRY_RESPONSE_TRANSMIT_POWER_LEVEL
+0x59 HCI_WRITE_INQUIRY_TRANSMIT_POWER_LEVEL
+0x60 HCI_SEND_KEYPRESS_NOTIFICATION
+0x5A HCI_READ_DEFAULT_ERRONEOUS_DATA_REPORTING
+0x5B HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING
+0x5F HCI_ENHANCED_FLUSH
+0x61 HCI_READ_LOGICAL_LINK_ACCEPT_TIMEOUT
+0x62 HCI_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT
+0x63 HCI_SET_EVENT_MASK_PAGE_2
+0x64 HCI_READ_LOCATION_DATA
+0x65 HCI_WRITE_LOCATION_DATA
+0x66 HCI_READ_FLOW_CONTROL_MODE
+0x67 HCI_WRITE_FLOW_CONTROL_MODE
+0x68 HCI_READ_ENHANCE_TRANSMIT_POWER_LEVEL
+0x69 HCI_READ_BEST_EFFORT_FLUSH_TIMEOUT
+0x6A HCI_WRITE_BEST_EFFORT_FLUSH_TIMEOUT
+0x6B HCI_SHORT_RANGE_MODE
+0x6C HCI_READ_LE_HOST_SUPPORT
+0x6D HCI_WRITE_LE_HOST_SUPPORT
+0x6E HCI_SET_MWS_CHANNEL_PARAMETERS
+0x6F HCI_SET_EXTERNAL_FRAME_CONFIGURATION
+0x70 HCI_SET_MWS_SIGNALING
+0x71 HCI_SET_MWS_TRANSPORT_LAYER
+0x72 HCI_SET_MWS_SCAN_FREQUENCY_TABLE
+0x73 HCI_SET_MWS_PATTERN_CONFIGURATION
+0x74 HCI_SET_RESERVED_LT_ADDR
+0x75 HCI_DELETE_RESERVED_LT_ADDR
+0x76 HCI_SET_CONNECTIONLESS_SLAVE_BROADCAST_DATA
+0x77 HCI_READ_SYNCHRONIZATION_TRAIN_PARAMETERS
+0x78 HCI_WRITE_SYNCHRONIZATION_TRAIN_PARAMETERS
+0x79 HCI_READ_SECURE_CONNECTIONS_HOST_SUPPORT
+0x7A HCI_WRITE_SECURE_CONNECTIONS_HOST_SUPPORT
+0x7B HCI_READ_AUTHENTICATED_PAYLOAD_TIMEOUT
+0x7C HCI_WRITE_AUTHENTICATED_PAYLOAD_TIMEOUT
+0x7D HCI_READ_LOCAL_OOB_EXTENDED_DATA
+0x7E HCI_READ_EXTENDED_PAGE_TIMEOUT
+0x7F HCI_WRITE_EXTENDED_PAGE_TIMEOUT
+0x80 HCI_READ_EXTENDED_INQUIRY_LENGTH
+0x81 HCI_WRITE_EXTENDED_INQUIRY_LENGTH
+)
+
+
+// HCI informational parameters OCF values, OGF=4
+(
+0x01 HCI_READ_LOCAL_VERSION_INFORMATION 
+0x02 HCI_READ_LOCAL_SUPPORTED_COMMANDS
+0x03 HCI_READ_LOCAL_SUPPORTED_FEATURES 
+0x04 HCI_READ_LOCAL_EXT_FEATURES 
+0x05 HCI_READ_BUFFER_SIZE 
+0x07 HCI_READ_COUNTRY_CODE 
+0x09 HCI_READ_BD_ADDR 
+0x0A HCI_REJECT_CONNECTION_REQUEST
+0x0B HCI_READ_LOCAL_SUPPORTED_CODECS
+)
+
+// HCI status parameters OCF values, OGF=5
+(
+0x01 HCI_READ_FAILED_CONTACT_COUNTER 
+0x02 HCI_RESET_FAILED_CONTACT_COUNTER 
+0x03 HCI_GET_LINK_QUALITY 
+0x05 HCI_READ_RSSI 
+0x06 HCI_READ_AFH_CHANNEL_MAP
+0x07 HCI_READ_BD_CLOCK
+0x08 HCI_READ_ENCRYPTION_KEY_SIZE
+0x09 HCI_READ_LOCAL_AMP_INFO
+0x0A HCI_READ_LOCAL_AMP_ASSOC
+0x0B HCI_WRITE_REMOTE_AMP_ASSOC
+0x0C HCI_GET_MWS_TRANSPORT_LAYER_CONFIGURATION
+0x0D HCI_SET_TRIGGERED_CLOCK_CAPTURE
+)
+
+// HCI testing command OCF values, OGF=6
+(
+0x01 HCI_READ_LOOPBACK_MODE 
+0x02 HCI_WRITE_LOOPBACK_MODE 
+0x03 HCI_ENABLE_DEVICE_UNDER_TEST_MODE 
+0x04 HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE
+0x07 HCI_ENABLE_AMP_RECEIVER_REPORTS
+0x08 HCI_AMP_TEST_END
+0x09 HCI_AMP_TEST
+0x0A HCI_WRITE_SECURE_CONNECTIONS_TEST_MODE
+)
+
+// HCI vendor specific command OCF values -OGF=3F
+(
+0x01 HCI_WRITE_BD_ADDR 
+0x02 HCI_READ_INQUIRY_RESPONSE_TIMEOUT 
+0x03 HCI_WRITE_INQUIRY_RESPONSE_TIMEOUT 
+0x04 HCI_READ_PAGE_SCAN_REPETITION_MODE 
+0x05 HCI_WRITE_PAGE_SCAN_REPETITION_MODE 
+0x06 HCI_READ_PAGE_RESPONSE_TIMEOUT 
+0x07 HCI_WRITE_PAGE_RESPONSE_TIMEOUT 
+0x08 HCI_READ_NEW_CONNECTION_TIMEOUT 
+0x09 HCI_WRITE_NEW_CONNECTION_TIMEOUT 
+0x0a HCI_INITIALIZE_BASEBAND 
+0x0b HCI_WRITE_LOCAL_SUPPORTED_FEATURES 
+0x0c HCI_WRITE_PARK_PARAMETERS 
+0x0d HCI_READ_PARK_PARAMETERS 
+0x0e HCI_WRITE_QUALITY_OF_SERVICE 
+0x0f HCI_NOT_USED 
+0x10 HCI_MODIFY_BEACON_PARAMETERS 
+0x11 HCI_UNPARK_USING_PM_ADDR 
+0x12 HCI_WRITE_HOPPING_CHANNELS 
+0x13 HCI_SLEEP_FOREVER_MODE 
+0x14 HCI_WRITE_AUTO_PAGE_SCAN_ENABLE 
+0x15 HCI_READ_AUTO_PAGE_SCAN_ENABLE 
+0x16 HCI_SET_ENCRYPTION_KEY_SIZE 
+0x17 HCI_INVALIDATE_FLASH_AND_REBOOT 
+0x18 HCI_UPDATE_UART_BAUD_RATE 
+0x19 HCI_WRITE_GPIO_1_4_AS_OUTPUT 
+0x1A HCI_WRITE_GPIO_2_LED 
+0x1B HCI_SET_TESTMODE_TYPE 
+0x1C HCI_WRITE_SCO_PCM_INT_PARAM 
+0x1D HCI_READ_SCO_PCM_INT_PARAM 
+0x1E HCI_WRITE_PCM_DATA_FORMAT_PARAM 
+0x1F HCI_READ_PCM_DATA_FORMAT_PARAM 
+0x20 HCI_WRITE_COMFORT_NOISE_PARAM 
+0x21 HCI_READ_COMFORT_NOISE_PARAM 
+0x22 HCI_WRITE_SCO_TS 
+0x23 HCI_READ_SCO_TS 
+0x24 HCI_WRITE_PCM_LOOPBACK_MODE 
+0x25 HCI_READ_PCM_LOOPBACK_MODE 
+0x26 HCI_SET_TRANSMIT_POWER 
+0x27 HCI_SET_SLEEPMODE_PARAM 
+0x28 HCI_READ_SLEEPMODE_PARAM 
+0x29 HCI_SLEEPMODE_CMD 
+0x2A HCI_DELAY_PERIPHERAL_SCO_STARTUP 
+0x2B HCI_WRITE_RECEIVE_ONLY 
+0x2C HCI_WRITE_RATE_CONTROL 
+0x2D HCI_TX_UNMOD_CARRIER 
+0x2E HCI_DOWNLOAD_MINIDRIVER 
+0x2F HCI_CRYSTAL_PPM 
+0x30 HCI_SET_POWER_AMP_BIAS 
+0x31 HCI_SET_HAM_BEHAVIOR 
+0x32 HCI_SET_AFH_BEHAVIOR 
+0x33 HCI_READ_USER_DEFINED_NVRAM 
+0x34 HCI_ENABLE_RADIO 
+0x35 HCI_READ_DIAGNOSTIC_INFO 
+0x36 HCI_GET_HID_DEVICE_LIST 
+0x37 HCI_ADD_HID_DEVICE 
+0x38 HCI_READ_APP_FW_CONFIG_VERSION 
+0x39 HCI_DELETE_HID_DEVICE 
+0x3B HCI_ENABLE_USB_HID_EMULATION 
+// 0x3A available
+// 0x3B available
+0x3C HCI_SEND_LMPDU 
+0x3D HCI_AUTO_PAIR_REQ 
+0x3E HCI_READ_VS_EXTENSION 
+0x3F HCI_WRITE_VS_EXTENSION 
+
+0x77 HCI_OPCODE_FC77
+0x79 HCI_OPCODE_FC79
+0xC4 HCI_DOWNLOAD_PATCH
+0xCC HCI_OPCODE_FCCC
+
+0x00 HCI_VENDOR_CMD_RESET
+0x01 HCI_VENDOR_CMD_CHIPID
+0x02 HCI_VENDOR_CMD_BAUD
+0x03 HCI_VENDOR_CMD_PATCH
+0x04 HCI_VENDOR_CMD_PATCH_DONE
+0x05 HCI_VENDOR_CMD_ECHO
+0x06 HCI_VENDOR_CMD_BDADDR
+
+0x07 HCI_VENDOR_CMD_ENTER_LPM
+0x08 HCI_VENDOR_CMD_COMMU_READY
+
+0x10 HCI_VENDOR_CMD_MEM
+0x11 HCI_VENDOR_CMD_EEP
+)
+
+//HCI LE controller command OCF values, OGF=8
+(
+0x01 HCI_LE_SET_EVENT_MASK
+0x02 HCI_LE_READ_BUFFER_SIZE
+0x03 HCI_LE_READ_LOCAL_SUPPORTED_FEATURES
+0x05 HCI_LE_SET_RANDOM_ADDRESS
+0x06 HCI_LE_SET_ADVERTISING_PARAMETERS
+0x07 HCI_LE_READ_ADVERTISING_CHANNEL_TX_POWER
+0x08 HCI_LE_SET_ADVERTISING_DATA
+0x09 HCI_LE_SET_SCAN_RESPONSE_DATA
+0x0A HCI_LE_SET_ADVERTISE_ENABLE
+0x0B HCI_LE_SET_SCAN_PARAMETERS
+0x0C HCI_LE_SET_SCAN_ENABLE
+0x0D HCI_LE_CREATE_CONNECTION
+0x0E HCI_LE_CREATE_CONNECTION_CANCEL
+0x0F HCI_LE_READ_WHITE_LIST_SIZE
+0x10 HCI_LE_CLEAR_WHITE_LIST
+0x11 HCI_LE_ADD_DEVICE_TO_WHITE_LIST
+0x12 HCI_LE_REMOVE_DEVICE_FROM_WHITE_LIST
+0x13 HCI_LE_CONNECTION_UPDATE
+0x14 HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION
+0x15 HCI_LE_READ_CHANNEL_MAP
+0x16 HCI_LE_READ_REMOTE_USED_FEATURES
+0x17 HCI_LE_ENCRYPT
+0x18 HCI_LE_RAND
+0x19 HCI_LE_START_ENCRYPTION
+0x1A HCI_LE_LONG_TERM_KEY_REQUEST_REPLY
+0x1B HCI_LE_LONG_TERM_KEY_REQUEST_NEGATIVE_REPLY
+0x1C HCI_LE_READ_SUPPORTED_STATES
+0x1D HCI_LE_RECEIVER_TEST
+0x1E HCI_LE_TRANSMITTER_TEST
+0x1F HCI_LE_TEST_END
+0x20 HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_REPLY
+0x21 HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_NEGATIVE_REPLY
+)
+// HCI event code
+(
+0x01 HCI_EVENT_INQUIRY_COMPLETE
+0x02 HCI_EVENT_INQUIRY_RESULT
+0x03 HCI_EVENT_CONNECTION_COMPLETE
+0x04 HCI_EVENT_CONNECTION_REQUEST
+0x05 HCI_EVENT_DISCONNECTION_COMPLETE
+0x06 HCI_EVENT_AUTHENTICATION_COMPLETE
+0x07 HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE
+0x08 HCI_EVENT_ENCRYPTION_CHANGE_COMPLETE
+0x09 HCI_EVENT_CHANGE_CONNECTION_LINK_KEY_COMPLETE
+0x0A HCI_EVENT_MASTER_LINK_KEY_COMPLETE
+0x0B HCI_EVENT_READ_REMOTE_FEATURES_COMPLETE
+0x0C HCI_EVENT_READ_REMOTE_VERSION_INFORMATION_COMPLETE
+0x0D HCI_EVENT_QOS_SETUP_COMPLETE
+0x0E HCI_EVENT_COMMAND_COMPLETE
+0x0F HCI_EVENT_COMMAND_STATUS
+0x10 HCI_EVENT_HARDWARE_ERROR
+0x11 HCI_EVENT_FLUSH_OCCURRED
+0x12 HCI_EVENT_ROLE_CHANGE
+0x13 HCI_EVENT_NUM_COMPLETED_PACKETS
+0x14 HCI_EVENT_MODE_CHANGE
+0x15 HCI_EVENT_RETURN_LINK_KEYS
+0x16 HCI_EVENT_PIN_CODE_REQUEST
+0x17 HCI_EVENT_LINK_KEY_REQUEST
+0x18 HCI_EVENT_LINK_KEY_NOTIFICATION
+0x19 HCI_EVENT_LOOPBACK_COMMAND
+0x1A HCI_EVENT_DATA_BUFFER_OVERFLOW
+0x1B HCI_EVENT_MAX_SLOTS_CHANGE
+0x1C HCI_EVENT_READ_CLOCK_OFFSET_COMPLETE
+0x1D HCI_EVENT_CONNECTION_PACKET_TYPE_CHANGED
+0x1E HCI_EVENT_QOS_VIOLATION
+0x1F HCI_EVENT_PAGE_SCAN_MODE_CHANGE
+0x20 HCI_EVENT_PAGE_SCAN_REPETITION_MODE_CHANGE
+0x21 HCI_EVENT_FLOW_SPECIFICATION_COMPLETE
+0x22 HCI_EVENT_INQUIRY_RESULT_WITHRSSI
+0x23 HCI_EVENT_READ_REMOTE_EXT_FEATURES_COMPLETE
+0x2C HCI_EVENT_SCO_CONNECTION_COMPLETE
+0x2D HCI_EVENT_SCO_CONNECTION_CHANGED
+0x2E HCI_EVENT_SNIFF_SUBRATING
+0x2F HCI_EVENT_EXT_INQUIRY_RESULT
+0x30 HCI_EVENT_ENCRYPT_KEY_REFRESH_COMPLETE
+0x31 HCI_EVENT_IO_CAP_REQ
+0x32 HCI_EVENT_IO_CAP_RESPONSE
+0x33 HCI_EVENT_USER_CONFIRMATION_REQUEST
+0x34 HCI_EVENT_UESR_PASSKEY_REQUEST
+0x35 HCI_EVENT_REMOTE_OOB_DATA_REQUEST
+0x36 HCI_EVENT_SIMPLE_PAIRING_COMPLETE
+0x38 HCI_EVENT_LINK_SUPERVISION_TIMEOUT_CHANGED
+0x39 HCI_EVENT_ENHANCED_FLUSH_COMPLETE
+0x3B HCI_EVENT_USER_PASSKEY_NOTIFICATION
+0x3C HCI_EVENT_KEYPRESS_NOTIFICATION
+0x3D HCI_EVENT_REMOTE_HOST_SUPPORTED_FEATURES_NOTIFICATION 
+0x3E HCI_EVENT_LE_META_EVENT
+0x40 HCI_EVENT_PHYSICAL_LINK_COMPLETE
+0x41 HCI_EVENT_CHANNEL_SELECTED
+0x42 HCI_EVENT_DISCONNECTION_PHYSICAL_LINK_COMPLETE
+0x43 HCI_EVENT_PHYSICAL_LINK_LOSS_EARLY_WARNING
+0x44 HCI_EVENT_PHYSICAL_LINK_RECOVERY
+0x45 HCI_EVENT_LOGICAL_LINK_COMPLETE
+0x46 HCI_EVENT_DISCONNECTION_LOGICAL_LINK_COMPLETE
+0x47 HCI_EVENT_FLOW_SPEC_MODIFY_COMPLETE
+0x48 HCI_EVENT_NUMBER_OF_COMPLETED_DATA_BLOCKS
+0x49 HCI_EVENT_AMP_START_TEST
+0x4A HCI_EVENT_AMP_TEST_END
+0x4B HCI_EVENT_AMP_RECEIVER_REPORT
+0x4C HCI_EVENT_SHORT_RANGE_MODE_CHANGE_COMPLETE
+0x4D HCI_EVENT_AMP_STATUS_CHANGE
+0x4E HCI_EVENT_TRIGGERED_CLOCK_CAPTURE
+0x4F HCI_EVENT_SYNCHRONIZATION_TRAIN_COMPLETE
+0x50 HCI_EVENT_SYNCHRONIZATION_TRAIN_RECEIVED
+0x51 HCI_EVENT_CONNECTIONLESS_SLAVE_BROADCAST_RECEIVE
+0x52 HCI_EVENT_CONNECTIONLESS_SLAVE_BROADCAST_TIMEOUT
+0x53 HCI_EVENT_TRUNCATED_PAGE_COMPLETE
+0x54 HCI_EVENT_SLAVE_PAGE_RESPONSE_TIMEOUT
+0x55 HCI_EVENT_CONNECTIONLESS_SLAVE_BROADCAST_CHANNEL_MAP_CHANGE
+0x56 HCI_EVENT_INQUIRY_RESPONSE_NOTIFICATION
+0x57 HCI_EVENT_AUTHENTICATED_PAYLOAD_TIMEOUT_EXPIRED
+
+0xFE HCI_EVENT_LOGO_TESTING
+0xFF HCI_EVENT_VENDOR_SPECIFIC
+)
+(
+0x01 HCI_VENDOR_EVENT_COMMU_READY
+)
+//HCI LE SUBEVENT CODE
+(
+0x01 HCI_LE_SUBEVENT_CONN_COMPLETE
+0x02 HCI_LE_SUBEVENT_ADV_REPORT
+0x03 HCI_LE_SUBEVENT_CONN_UPDATE_COMPLETE
+0x04 HCI_LE_SUBEVENT_REMOTE_FEATURE_COMPLETE
+0x05 HCI_LE_SUBEVENT_LTK_REQUEST
+0x06 HCI_LE_SUBEVENT_REMOTE_CONN_PARAM_REQ
+)
+//HCI ErrorCodes
+(    
+0x00 HCI_SUCCESS
+0x01 HCI_ERROR_UNKNOWN_HCI_COMMAND
+0x02 HCI_ERROR_NO_CONNECTION
+0x03 HCI_ERROR_HARDWARE_FAILURE
+0x04 HCI_ERROR_PAGE_TIMEOUT
+0x05 HCI_ERROR_AUTHENTICATION_FAILURE
+0x06 HCI_ERROR_KEY_MISSING
+0x07 HCI_ERROR_MEMORY_FULL
+0x08 HCI_ERROR_CONNECTION_TIMEOUT
+0x09 HCI_ERROR_MAX_CONNECTIONS
+0x0A HCI_ERROR_MAX_SCO_CONNECTIONS
+0x0B HCI_ERROR_MAX_ACL_CONNECTIONS
+0x0C HCI_ERROR_COMMAND_DISALLOWED
+0x0D HCI_ERROR_HOST_REJECT_LIMITED_RESOURCES
+0x0E HCI_ERROR_HOST_REJECT_SECURITY_REASONS
+0x0F HCI_ERROR_HOST_REJECT_REMOTE_IS_ONLY_PERSONAL
+0x10 HCI_ERROR_HOST_TIMEOUT
+0x11 HCI_ERROR_UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE
+0x12 HCI_ERROR_INVALID_HCI_COMMAND_PARAMETERS
+0x13 HCI_ERROR_REMOTE_USER_ENDED_CONNECTION
+0x14 HCI_ERROR_REMOTE_LOW_RESOURCES
+0x15 HCI_ERROR_REMOTE_POWERING_OFF
+0x16 HCI_ERROR_CONNECTION_TERMINATED_BY_LOCAL_HOST
+0x17 HCI_ERROR_REPEATED_ATTEMPTS
+0x18 HCI_ERROR_PAIRING_NOT_ALLOWED
+0x19 HCI_ERROR_UNKNOWN_LMP_PDU
+0x1A HCI_ERROR_UNSUPPORTED_REMOTE_FEATURE
+0x1B HCI_ERROR_SCO_OFFSET_REJECTED
+0x1C HCI_ERROR_SCO_INTERVAL_REJECTED
+0x1D HCI_ERROR_SCO_AIR_MODE_REJECTED
+0x1E HCI_ERROR_INVALID_LMP_PARAMETER
+0x1F HCI_ERROR_UNSPECIFIED_ERROR
+0x20 HCI_ERROR_UNSUPPORTED_LMP_PARAMETER_VALUE
+0x21 HCI_ERROR_ROLE_CHANGE_NOT_ALLOWD
+0x22 HCI_ERROR_LMP_RESPONSE_TIMEOUT
+0x23 HCI_ERROR_ERROR_TRANSACTION_COLLISION
+0x24 HCI_ERROR_LMP_PDU_NOT_ALLOWED
+0x25 HCI_ERROR_ENCRYPTION_MODE_NOT_ACCEPTABLE
+0x26 HCI_ERROR_UNIT_KEY_USED
+0x27 HCI_ERROR_QOS_NOT_SUPPORTED
+0x28 HCI_ERROR_INSTANT_PASSED
+0x29 HCI_ERROR_PAIRING_W_UNIT_KEY_NOT_SUPPORTED
+0x2a HCI_ERROR_DIFFERENT_TRANSACTION_COLLISION
+0x2c HCI_ERROR_QOS_UNACCEPTABLE_PARAMETER
+0x2d HIC_ERROR_QOS_REJECTED
+0x2e HIC_ERROR_CHANNEL_CLASSIFICATION_NOT_SUPPORTED
+0x2f HIC_ERROR_INSUFFICIENT_SECURITY
+0x30 HIC_ERROR_PARAMETER_OUT_OF_MANDATORY_PANGE
+0x32 HIC_ERROR_ROLE_SWITCH_PENDING
+0x34 HIC_ERROR_RESERVED_SLOT_VIOLATION
+0x35 HIC_ERROR_ROLE_SWITCH_FAILED
+0x36 HIC_ERROR_EXTENDED_INQUIRY_RESPONSE_TOO_LARGE
+0x37 HIC_ERROR_SIMPLE_PAIRING_NOT_SUPPORTED_BY_HOST
+0x38 HIC_ERROR_HOST_BUSY_PAIRING
+)
+
+(
+0x00 HCI_LPM_OFF
+0x01 HCI_LPM_ON
+)
+
+
+(
+33 HOST_WAKE_TIME
+)
+
+(
+1 HCI_RX_WAKE
+0 HCI_RX_READY
+)
+
+
+(
+/*HID TYPE*/
+0x01 HID_TYPE_CONTROL
+0x04 HID_TYPE_GET_REPORT
+0x05 HID_TYPE_SET_REPORT
+0x07 HID_TYPE_SET_PROTOCOL
+0x09 HID_TYPE_SET_IDLE
+0x0a HID_TYPE_DATA
+/*HID REPORT ID*/
+0x01 HID_REPORT_ID_KB
+0x41 HID_DISCONNECT
+
+0x00 HID_CONTROL_P_NOOPERATION
+0x01 HID_CONTROL_P_HARDRESET
+0x02 HID_CONTROL_P_SOFTRESET
+0x03 HID_CONTROL_P_SUSPEND
+0x04 HID_CONTROL_P_EXITSUSPEND
+0x05 HID_CONTROL_P_VIRTUALCABLEUNPLUG
+)
+
+
+
+
+
+8 KB_KSCAN_ROW 
+7 KB_KSCAN_ROW_1
+20 KB_KSCAN_COL
+19 KB_KSCAN_COL_1
+
+/* ks_ctrl */
+(
+0x01 KB_KSCAN_CTRL_ENABLE					
+0x02 KB_KSCAN_CTRL_FREEZE					
+0x04 KB_KSCAN_CTRL_GHOST					
+0x08 KB_KSCAN_CTRL_INT						
+0x10 KB_KSCAN_CTRL_CLKON					
+0x20 KB_KSCAN_CTRL_FIFO_CLR				
+                  
+0 KB_KSCAN_STAT_EMPTY
+1 KB_KSCAN_STAT_FULL 					
+2 KB_KSCAN_STAT_OVERFLOW				
+6 KB_KSCAN_STAT_GHOST 
+
+0 KB_KSCAN_KEY_EVENT_STAT
+0 KB_KSCAN_KEY_PRESS	
+1 KB_KSCAN_KEY_RELEASE
+
+)
+(
+0 CACEL_RECONN_FLAG
+1 KEY_EVENT_FLAG
+2 KEY_SEARCH_M_KEY_FLAG
+3 CHECK_VDD_LOW_FLAG
+)
+
+// MACRO for map2
+
+// MACRO for map2
+
+//map2 Functions definition
+ 0x00 KB_MAP2_FUNC_REPORT0
+ 0x01 KB_MAP2_FUNC_REPORT1
+ 0x02 KB_MAP2_FUNC_REPORT2
+ 0x80 KB_MAP2_FUNC_IGNORE
+ 0x81 KB_MAP2_FUNC_DISCOV
+ 0x82 KB_MAP2_FUNC_WIN
+ 0x83 KB_MAP2_FUNC_ANDROID
+ 0x84 KB_MAP2_FUNC_IOS
+ 0x85 KB_MAP2_FUNC_DEV1
+ 0x86 KB_MAP2_FUNC_DEV2
+ 0x87 KB_MAP2_FUNC_DEV3
+ 
+//map2 Status definition (bit map)
+ 0x01 KB_MAP2_STATUS_WIN
+ 0x02 KB_MAP2_STATUS_ANDROID
+ 0x04 KB_MAP2_STATUS_IOS
+ 0x10 KB_MAP2_STATUS_CONN
+ 0x20 KB_MAP2_STATUS_UNCONN
+ 
+ 0x00 KB_MAP2_STATUS_BIT_WIN
+ 0x01 KB_MAP2_STATUS_BIT_ANDROID
+ 0x02 KB_MAP2_STATUS_BIT_IOS
+ 0x04 KB_MAP2_STATUS_BIT_CONN
+ 0x05 KB_MAP2_STATUS_BIT_UNCONN
+
+// map2 report length
+8 KB_MAP2_REPORT_LENGTH
+0x08 KB_VK_MAX_LEN
+
+//map2 device button state
+0 KB_DEVICE_BUTTON_UP
+1 KB_DEVICE_BUTTON_DEVICE1
+2 KB_DEVICE_BUTTON_DEVICE2
+3 KB_DEVICE_BUTTON_DEVICE3
+0xff KB_DEVICE_BUTTON_ALREADY_LONG
+)
+
+//
+(
+0x01 REPORT_ID_1
+0x02 REPORT_ID_2
+0x03 REPORT_ID_3
+)
+
+(
+1 FLAG_VDD_LOW
+0 FLAG_VDD_NOT_LOW
+
+0x1fe9 EEPROM_ADDR_VDD_FLAG
+0x1fea EEPROM_ADDR_VDD_LOW_FLAG
+0x1fec EEPROM_SYSTEM_FALG
+
+)
+
+//Specil Function Key
+(
+0XFF SFK_ANDROID_MAP
+0XFE SFK_IOS_SCREENSHOT
+
+)
+0x39 CAPS_LOCK_DATA
+)
+
+(
+2 KB_TEST_MODE
+)
+/* special key codes */
+(
+0x1d KB_KCODE_1_M1
+0x27 KB_KCODE_0
+0x28 KB_KCODE_ENTER
+0x2a KB_KCODE_BKSP
+)
+
+/*DATA OUTPUT report id = 1*/
+0 KB_NUM_LOCK_SELECTED
+1 KB_CAPS_LOCK_SELECTED
+2 KB_SCROLL_LOCK_SELECTED
+
+
+0x1f  KB_UI_BUTTON_GPIO
+
+
+
+
+0x0286 mem_l2cap_mem_start
+0x0286 mem_l2cap_rxbuff1_len
+0x0288 mem_l2cap_rxbuff2_len
+0x028a mem_l2cap_rxbuff_new
+0x028c mem_l2cap_rxbuff_inuse
+0x028d mem_l2cap_payload_ptr
+0x028f mem_l2cap_rx_pkt_length
+0x0291 mem_l2cap_rx_cid
+0x0293 mem_l2cap_rx_done
+0x0294 mem_l2cap_signal_tx_buff_ptr
+0x0296 mem_l2cap_signal_tx_payload_ptr
+0x0298 mem_l2cap_signal_tx_length
+0x029a mem_sdp_tx_buff_ptr
+0x029c mem_sdp_tx_payload_ptr
+0x029e mem_sdp_tx_pkt_length
+0x02a0 mem_rfcomm_tx_buff_ptr
+0x02a2 mem_rfcomm_tx_payload_ptr
+0x02a4 mem_rfcomm_tx_pkt_length
+0x02a6 memL2CAP_T1
+0x02a8 mem_CONTROL_tasks
+0x02a9 mem_send_config_req
+0x02aa mem_config_identifier
+0x02ab mem_config_req_dest_CID
+0x02ad mem_rfcomm_malloc_fail_flag
+0x02ae mem_message_to_uppersm
+0x02af mem_upper_sm_remote_page
+0x02b0 mem_upper_sm_reconn
+0x02b1 mem_upper_sm_ss
+0x02b2 mem_tx_malloc_log
+0x02f2 mem_l2cap_mem_end
+0x02f2 mem_scid
+0x02f4 mem_cmd_length
+0x02f6 mem_tt2
+0x02f8 mem_tt3
+0x02fa mem_id
+0x02fc mem_psm
+0x02fe mem_l2cap_sdpres_delay_time
+
+
+
+//mem_l2cap_lpm_txbuf
+(
+256 l2cap_lpm_txbuf_len
+)
+
+(
+4 L2CAP_TX_FIFO_SIZE
+8 L2CAP_TX_BUFF_CNT
+
+)
+(
+0x0002 L2CAP_SIG_EXT_FEATRUE
+0x0003 L2CAP_SIG_FIX_FEATRUE
+)
+
+
+(
+0 HS_IDLE
+1 AG_INIT_CALL
+2 HS_INIT_CALL
+)
+(
+0 M_ACL_LINK_ABSENT
+1 M_ACL_LINK_EXIST
+)
+
+(
+0 L2CAP_INUSE_BUFF1
+1 L2CAP_INUSE_BUFF2
+)
+/* upper layer interface w/ lower layer */
+(
+1 MAX_NUM_LINKS_ALLOWED
+1 MAX_NUM_SCO_ALLOWED
+1 ACL_LINK_PRESENT
+0 ACL_LINK_ABSENT
+)
+(
+1 L2CAP_RX_DONE 
+0 L2CAP_RX_CLEAR
+)
+/* Scheduler */
+(
+0 L2CAP_DISCONNECT_INTERRUPT
+1 RFCOMM_wants_service
+2 L2CAP_sig_Tx_buff_full
+3 RFCOMM_Tx_buff_full
+4 SDP_Tx_buff_full
+5 got_complete_L2CAP_pkt	
+6 L2CAP_init_Config_Req
+7 L2CAP_DISCONNECT_CONTROL
+)
+
+/* mem_CONTROL_tasks2 */
+(
+0 UI_NEED_SERVICE
+)
+/* L2CAP logic channel identifiers (2 bytes) p.261 */
+(
+0x0001 L2CAP_signal_channel
+0x0050 L2CAP_SDP_channel
+0x0051 L2CAP_RFCOMM_channel
+0x0052 L2CAP_HID_Control_channel   
+0x0053 L2CAP_HID_Interrupt_channel
+0x0077 L2CAP_AVDTP_signal_channel		//------avdtp
+0x0078 L2CAP_AVDTP_media_channel
+0x0079 L2CAP_AVDTP_report_channel
+0x0080 L2CAP_AVDTP_recovery_channel
+0x00dd L2CAP_AVCTP_Control_channel
+)
+/* L2CAP signalling command codes (1 byte) p.284 */
+(
+0x00 reserved
+0x01 signal_cmd_reject
+0x02 signal_connect_req
+0x03 signal_connect_rsp
+0x04 signal_config_req
+0x05 signal_config_rsp
+0x06 signal_disconnect_req
+0x07 signal_disconnect_rsp
+0x08 signal_echo_req
+0x09 signal_echo_rsp
+0x0a signal_info_req
+0x0b signal_info_rsp
+)
+/* L2CAP signal_command_reject reason code (2 bytes), p.285 */
+(
+0x0000 cmd_not_understood
+0x0001 signalling_MTU_exceeded
+0x0002 invalid_CID_in_req
+)
+/* L2CAP PSM values used in signal_connect_req (2 bytes), p.286 */
+(
+0x0001 PSM_SDP
+0x0003 PSM_RFCOMM
+0x0005 PSM_TCS
+0x0011 PSM_HID_control
+0x0013 PSM_HID_interrupt
+0x0017 PSM_AVCTP
+0x0019 PSM_AVDTP
+)
+/* L2CAP connection response result code (2 bytes), p.288 */
+(
+0x0000 L2CAP_connect_successful
+0x0001 L2CAP_connect_pending
+0x0002 L2CAP_connect_refused_PSM_unsupported
+0x0003 L2CAP_connect_refused_security_block
+0x0004 L2CAP_connect_refused_no_resources
+)
+/* L2CAP connection status values (2 bytes), p.288 */
+(
+0x0000 L2CAP_no_info_available
+0x0001 L2CAP_authentication_pending
+0x0002 L2CAP_authorization_pending
+)
+/* L2CAP configuration response result code (2 bytes), p.292 */
+(
+0x0000 L2CAP_config_success
+0x0001 L2CAP_config_failure_bad_parameters
+0x0002 L2CAP_config_failure_no_reason
+0x0003 L2CAP_config_failure_unknown_options
+)
+/* L2CAP constant definitions */
+(
+128 L2CAP_Rx_buff_size
+48  L2CAP_signal_Tx_buff_size
+128 SDP_Tx_buff_size
+128 RFCOMM_Tx_buff_size
+1 AM_ADDRESS
+3 DM1TYPE
+4 DH1TYPE
+11 DH3TYPE
+8 DVTYPE
+0 channel_state_closed
+1 channel_state_config
+2 channel_state_open
+0x0030 L2CAP_config_MTU_SDP
+0xffff L2CAP_config_ftimeout_SDP
+0x03e3 L2CAP_config_MTU_RFCOMM
+0xffff L2CAP_config_ftimeout_RFCOMM
+260 l2cap_max_pkt_len
+)
+
+(
+0 FAILURE
+1 SUCCESS
+2 IN_PROGRESS
+)
+(
+0x00	IDLE
+0x01	WAIT_4_BB_PAGE
+0x02	WAIT_4_LMP_CONN
+0x03	WAIT_4_SCO_CONN
+0x04	WAIT_4_SCO_KILLED
+)
+
+/*mem_master_mss*/
+(
+0 STOP_ENC
+1 SEND_SWITCH_REQ
+)
+(
+0 HF_HS_READY
+1 HF_AG_READY
+)
+/* mem_hf_state */
+(
+0 HF_STATE_WAITING_RFCOMM_CONN
+1 HF_STATE_HF_SEND_FEATURE
+2 HF_STATE_WAITING_AG_FEATURE_OK
+3 HF_STATE_HF_SEND_INDICATORS
+4 HF_STATE_WAITING_AG_INDICATORS_OK
+5 HF_STATE_HF_SEND_CURR_STATUS
+6 HF_STATE_WAITING_AG_STATUS_OK
+7 HF_STATE_HF_SEND_UPDATE_STATUS
+8 HF_STATE_WAITING_AG_UPDATE_STATUS_OK
+9 HF_STATE_CONNECTED
+0x0a HF_STATE_HF_SEND_RECEIVE_INFO
+0x0b HF_STATE_WAITING_AG_INFO
+0x0c HF_STATE_HF_SEND_AT_CLIP
+0x0d HF_STATE_WAITING_AT_CLIP
+0x0e HF_STATE_HF_SEND_AT_CCWA
+0x0f HF_STATE_WAITING_AT_CCWA
+)
+/*mem_hf_call_state*/
+(
+0 HF_CALL_STATE_INACTIVE
+1 HF_CALL_STATE_SETUP
+2 HF_CALL_STATE_ACTIVE 
+)
+/* mem_pairing_state bit definition */
+(
+0 PAIR_INQUIRY_START
+1 PAIR_INQUIRY_TIME_OUT
+2 PAIR_INQUIRY_FAILED
+3 PAIR_INQUIRY_SUCCESS
+4 PAIR_READY_CONN
+5 PAIR_WAIT_CANCEL_RESPONSE
+6 PAIR_CONN_SUCCESS
+7 PAIR_WAIT_DETACH
+)  
+
+/* mem_pairing_mode bit definition */
+(
+0 FORCE_AUTHENTICATION
+)
+/* mem_hid_protecol_type */
+(
+0 PROTECOL_BOOT /*default*/
+1 PROTECOL_REPORT
+)
+
+/* mem_upper_sm_reconn */
+(
+1 UPPERSM_SEND_SDP_CONN_REQ
+2 UPPERSM_SEND_SDP_CFG_REQ
+3 UPPERSM_SEND_SDP_HF_SS
+4 UPPERSM_SEND_SDP_DISC_REQ
+5 UPPERSM_SEND_RFCOMM_CONN_REQ
+6 UPPERSM_SEND_RFCOMM_CFG_REQ
+7 UPPERSM_SEND_SABM_CMD
+8 UPPERSM_SEND_DISC
+9 UPPERSM_SEND_WAIT
+10 UPPERSM_SEND_HID_CONTROL_CONN_REQ
+11 UPPERSM_SEND_HID_CONTROL_CFG_REQ
+12 UPPERSM_SEND_HID_INTERRUPT_CONN_REQ
+13 UPPERSM_SEND_HID_INTERRUPT_CFG_REQ
+14 UPPERSM_SEND_SDP_HS_SS
+15 UPPERSM_SEND_SDP_PBAP_SS
+16 UPPERSM_SEND_SDP_AVTARG_SS
+)
+/* mem_upper_sm_remote_page */
+(
+1 UPPERSM_RP_SEND_SDP_CONN_REQ
+2 UPPERSM_RP_SEND_SDP_CFG_REQ
+3 UPPERSM_RP_SEND_SDP_HF_SS
+4 UPPERSM_RP_SEND_SDP_HS_SS
+5 UPPERSM_RP_SEND_SDP_PBAP_SS
+6 UPPERSM_RP_SEND_SDP_AVTARG_SS
+7 UPPERSM_RP_SEND_SDP_DISC_REQ
+8 UPPERSM_RP_SEND_AVCTP_CONN_REQ
+9 UPPERSM_RP_SEND_AVCTP_CFG_REQ
+)
+
+/* mem_ML2CAP_flag */
+(
+0 MSCHEDULER_HID_CONTROL_CONN_DONE
+1 MSCHEDULER_HID_INTERRUPT_CONN_DONE
+2 MSCHEDULER_HID_CONTROL_CFG_REQ_DONE
+3 MSCHEDULER_HID_CONTROL_CFG_RSP_DONE
+4 MSCHEDULER_HID_INTERRUPT_CFG_REQ_DONE
+5 MSCHEDULER_HID_INTERRUPT_CFG_RSP_DONE
+6 MSCHEDULER_HID_CONTROL_DISC_DONE
+7 MSCHEDULER_HID_INTERRUPT_DISC_DONE
+)
+/*    ui event    --add by lj*/
+(
+0x00 UI_DATA_EVNET_NONE
+0x01 UI_DATA_EVNET_HID
+0x02 UI_DATA_EVNET_AVDTP_S
+0x03 UI_DATA_EVNET_AVDTP_M
+0x04 UI_DATA_EVNET_AVCTP
+0x05 UI_DATA_EVNET_HS
+0x06 UI_DATA_EVNET_HF
+0x07 UI_DATA_EVNET_SPP
+0x08 UI_DATA_EVNET_OBEX
+)
+/*    ui ack --add by lj*/
+(
+0x00 UI_DATA_TX_NONE
+0x01 UI_DATA_TX_HID
+0x02 UI_DATA_TX_AVDTP_S
+0x03 UI_DATA_TX_AVDTP_M
+0x04 UI_DATA_TX_AVCTP
+0x05 UI_DATA_TX_HS
+0x06 UI_DATA_TX_HF
+0x07 UI_DATA_TX_SPP
+0x08 UI_DATA_TX_OBEX
+0x10 ACL_TX_L2CAP_SIGNAL
+0x11 ACL_TX_SDP
+0x12 ACL_TX_RFCOMM
+
+)
+
+(
+0 L2CAP_SDP_interface_conn
+1 L2CAP_SDP_interface_cfg
+)
+
+(                                   
+0 L2CAP_CHANNEL_STATE_CONN_REQ      
+1 L2CAP_CHANNEL_STATE_CONN_RES      
+2 L2CAP_CHANNEL_STATE_SND_CFG_REQ   
+3 L2CAP_CHANNEL_STATE_SND_CFG_RES   
+4 L2CAP_CHANNEL_STATE_RCV_CFG_REQ   
+5 L2CAP_CHANNEL_STATE_RCV_CFG_RES
+6 L2CAP_CHANNEL_RFCOMM_ONLY_SABM
+7 L2CAP_CHANNEL_RFCOMM_ONLY_UA
+6 L2CAP_CHANNEL_AVDTP_SIGNAL_INIT //set avdtp init complete
+6 L2CAP_CHANNEL_HID_HANDSHAKE_DONE
+0x3f L2CAP_CHANNEL_SETUP_COMPLETE
+0x7f L2CAP_CHANNEL_AVDTP_SIGNAL_COMPLETE
+0xff L2CAP_CHANNEL_RFCOMM_DLCI0_OPENED
+)                                     
+
+/*  AVDTP---lj*/
+(
+0 L2CAP_AVDTP_SIGNAL_CONNECT
+1 L2CAP_AVDTP_SIGNAL_CONFIG
+2 L2CAP_AVDTP_MEDIA_CONNECT
+3 L2CAP_AVDTP_MEDIA_CONFIG
+4 L2CAP_AVDTP_REPORT_CONNECT
+5 L2CAP_AVDTP_REPORT_CONFIG
+6 L2CAP_AVDTP_RECOVERY_CONNECT
+7 L2CAP_AVDTP_RECOVERY_CONFIG
+)
+/*  AVCTP---lj*/
+(
+0 L2CAP_AVCTP_SIGNAL_CONNECT
+1 L2CAP_AVCTP_SIGNAL_CONFIG
+)
+
+127 L2CAP_SIGNAL_MALLOC_SIZE
+
+//1 mem_rfcomm_malloc_fail_flag
+(
+0 RFCOMM_MALLOC_SUCCEED
+1 RFCOMM_MALLOC_FAIL
+)
+
+//mem_l2cap_flow_ctrl_flag
+(
+0 L2CAP_FLOW_CTRL_DISABLE
+1 L2CAP_FLOW_CTRL_ENABLE
+)
+
+
+0x0302 mem_le_rxbuf
+0x033a mem_le_mic
+0x033e mem_le_peer_mic
+0x0342 mem_le_peer_ltk
+0x0352 mem_le_mrand
+0x0362 mem_le_state
+0x0363 mem_le_mode
+0x0364 mem_le_tsniff
+0x0366 mem_le_anchor
+0x036a mem_le_clk_offset
+0x0370 mem_le_receive_window
+0x0372 mem_le_plap
+0x0378 mem_le_conn_handle
+0x0379 mem_le_arq
+0x037a mem_le_ch
+0x037b mem_le_hop
+0x037c mem_le_event_count
+0x037e mem_le_supervision_timer
+0x0382 mem_le_instant
+0x0384 mem_le_channels
+0x0385 mem_le_op
+0x0386 mem_le_access
+0x038a mem_le_crcinit
+0x038d mem_le_window_size
+0x038e mem_le_slave_latency
+0x0390 mem_le_superto
+0x0392 mem_le_channel_map
+0x0397 mem_le_no_using
+0x0399 mem_le_peer_sca
+0x039a mem_le_att_opcode
+0x039b mem_le_att_handle
+0x039d mem_le_err_code
+0x039e mem_le_l2cap_pdu_length
+0x03a0 mem_le_sk
+0x03b0 mem_le_testtype
+0x03b1 mem_le_test_sync
+0x03b3 mem_le_test_pcnt
+0x03b5 mem_le_rxon_ts
+0x03bb mem_le_rx_ll_opcode
+0x03bc mem_le_notify_attr_start
+0x03be mem_le_notify_len
+0x03bf mem_cmd_le_create_conn
+0x03c0 mem_24g_id
+0x03c1 mem_le_cur_attlist_start_ptr
+0x03c3 mem_le_cur_handle_start
+0x03c5 mem_le_cur_handle_end
+0x03c7 mem_le_cur_uuid_lenth
+0x03c8 mem_le_cur_uuid
+0x03d8 mem_le_search_len
+0x03d9 mem_le_search_res
+0x03da mem_le_continue_type
+0x03db mem_le_public_length
+
+
+
+(
+20 notify_handle
+2 param_max_slaves
+1636 param_sifs
+0x000a06 param_le_version
+0x1d87 param_le_subversion
+0x000001 param_le_features
+23 param_le_mtu
+16 param_le_scan_interval
+16 param_le_scan_window
+0x1e0 param_clke_cal_le
+0x1000302 param_smp_paring_response		/* for mouse, noinputnooutput */
+0x010410 param_smp_key_dist	
+0x010010 param_smp_key_dist0
+0xa0 param_le_sca
+)
+
+(
+0 DEFAULT_STATES
+1 IPHONE_LOST_LTK
+2 MODULE_LOST_LTK
+3 LTK_NOT_LOST
+)
+
+(
+0 FLAG_BLE_INSUFFICIENT_AUTHENTICATION
+1 FLAG_BLE_COPY_MASTER_DATA_TO_ATT_LIST
+)
+
+/*LE MOUSE-KB*/
+(
+1 LE_CONTEXT_STATE_KB
+2 LE_CONTEXT_STATE_MOUSE
+
+3 USB_MOUSE_DATA_CMD
+
+1 SEND_MOUSE_DATA_CMD
+2 SEND_KB_DATA_CMD
+)
+
+
+  (
+  	0 LE_M_STATE_SLAVE1_STANDBY
+  	1 LE_M_STATE_SLAVE1_ADVERTISING
+  	2 LE_M_STATE_SLAVE1_SCANNING
+  	3 LE_M_STATE_SLAVE1_INITIATING
+  	4 LE_M_STATE_SLAVE1_CONNECTED
+  	5 LE_M_STATE_SLAVE1_RFU_1
+  	6 LE_M_STATE_SLAVE1_RFU_2
+  	7 LE_M_STATE_SLAVE1_RFU_3
+  )
+
+  (
+  	0 LE_M_STATE_SLAVE2_STANDBY
+  	1 LE_M_STATE_SLAVE2_ADVERTISING
+  	2 LE_M_STATE_SLAVE2_SCANNING
+  	3 LE_M_STATE_SLAVE2_INITIATING
+  	4 LE_M_STATE_SLAVE2_CONNECTED
+  	5 LE_M_STATE_SLAVE2_CONNECT_INIT
+  	6 LE_M_STATE_SLAVE2_RFU_2
+  	7 LE_M_STATE_SLAVE2_RFU_3
+  )
+
+  	(
+	0 LE_SM_IDLE
+	1 LE_SM_FBTV_1800
+	2 LE_SM_FBTV_1800_WAIT
+	3 LE_SM_RBT_DEVICE_NAME
+	4 LE_SM_RBT_DEVICE_NAME_WAIT
+	5 LE_SM_FBTV_1801
+	6 LE_SM_FBTV_1801_WAIT
+	7 LE_SM_RBT_DEVICE_CHARACTER
+	8 LE_SM_RBT_DEVICE_CHARACTER_WAIT
+	
+  	)
+
+/* advertising channel PDU type */
+(
+0 ADV_IND
+1 ADV_DIRECT_IND
+2 ADV_NONCONN_IND
+3 SCAN_REQ
+4 SCAN_RSP
+5 CONNECT_REQ
+6 ADV_SCAN_IND
+)
+
+	/* tx packet type */
+	(
+	0x20 XT_LL_CONNECTION_UPDATE_REQ
+	0x21 XT_LL_CHANNEL_MAP_REQ
+	0x22 XT_LL_TERMINATE_IND
+	0x23 XT_LL_ENC_REQ
+	0x24 XT_LL_ENC_RSP
+	0x25 XT_LL_START_ENC_REQ
+	0x26 XT_LL_START_ENC_RSP
+	0x27 XT_LL_UNKNOWN_RSP
+	0x28 XT_LL_FEATURE_REQ
+	0x29 XT_LL_FEATURE_RSP
+	0x2A XT_LL_PAUSE_ENC_REQ
+	0x2B XT_LL_PAUSE_ENC_RSP
+	0x2C XT_LL_VERSION_IND
+	0x2D XT_LL_REJECT_IND
+	0x2E XT_LL_SLAVE_FEATURE_REQ
+	0x2F XT_LL_CONNECTION_PARAM_REQ
+	0x30 XT_LL_CONNECTION_PARAM_RSP
+	0x31 XT_LL_REJECT_IND_EXT
+	0x32 XT_LL_PING_REQ
+	0x33 XT_LL_PING_RSP
+	0x41 XT_SMP_PAIRING_REQUEST
+	0x42 XT_SMP_PAIRING_RESPONSE
+	0x43 XT_SMP_PAIRING_CONFIRM
+	0x44 XT_SMP_PAIRING_RANDOM
+	0x45 XT_SMP_PAIRING_FAILED
+	0x46 XT_SMP_ENCRYPTION_INFORMATION
+	0x47 XT_SMP_MASTER_IDENTIFICATION
+	0x48 XT_SMP_IDENTITY_INFORMATION
+	0x49 XT_SMP_IDENTITY_ADDRESS_INFORMATION
+	0x4A XT_SMP_SIGNING_INFORMATION
+	0x4B XT_SMP_SECURITY_REQUEST
+	0x4c XT_SMP_PAIRING_PUBLIC_KEY
+	0x4d XT_SMP_PAIRING_DHKEY_CHECK
+	)
+
+
+	/* LE control packet type */
+	(
+	0x00 LL_CONNECTION_UPDATE_REQ
+	0x01 LL_CHANNEL_MAP_REQ
+	0x02 LL_TERMINATE_IND
+	0x03 LL_ENC_REQ
+	0x04 LL_ENC_RSP
+	0x05 LL_START_ENC_REQ
+	0x06 LL_START_ENC_RSP
+	0x07 LL_UNKNOWN_RSP
+	0x08 LL_FEATURE_REQ
+	0x09 LL_FEATURE_RSP
+	0x0A LL_PAUSE_ENC_REQ
+	0x0B LL_PAUSE_ENC_RSP
+	0x0C LL_VERSION_IND
+	0x0D LL_REJECT_IND
+	0x0E LL_SLAVE_FEATURE_REQ
+	0x0F LL_CONNECTION_PARAM_REQ
+	0x10 LL_CONNECTION_PARAM_RSP
+	0x11 LL_REJECT_IND_EXT
+	0x12 LL_PING_REQ
+	0x13 LL_PING_RSP
+	)
+
+	/* Security Manager Protocol Code */
+	(
+	0x01 SMP_PAIRING_REQUEST
+	0x02 SMP_PAIRING_RESPONSE
+	0x03 SMP_PAIRING_CONFIRM
+	0x04 SMP_PAIRING_RANDOM
+	0x05 SMP_PAIRING_FAILED
+	0x06 SMP_ENCRYPTION_INFORMATION
+	0x07 SMP_MASTER_IDENTIFICATION
+	0x08 SMP_IDENTITY_INFORMATION
+	0x09 SMP_IDENTITY_ADDRESS_INFORMATION
+	0x0A SMP_SIGNING_INFORMATION
+	0x0B SMP_SECURITY_REQUEST
+	0x0c SMP_PAIRING_PUBLIC_KEY
+	0x0d SMP_PAIRING_DHKEY_CHECK
+	)
+
+	/* ATT OPCODE */
+	(
+	0x01 ATTOP_ERROR_RESPONSE
+	0x02 ATTOP_EXCHANGE_MTU_REQUEST
+	0x03 ATTOP_EXCHANGE_MTU_RESPONSE
+	0x04 ATTOP_FIND_INFORMATION_REQUEST
+	0x05 ATTOP_FIND_INFORMATION_RESPONSE
+	0x06 ATTOP_FIND_BY_TYPE_VALUE_REQUEST
+	0x07 ATTOP_FIND_BY_TYPE_VALUE_RESPONSE
+	0x08 ATTOP_READ_BY_TYPE_REQUEST
+	0x09 ATTOP_READ_BY_TYPE_RESPONSE
+	0x0A ATTOP_READ_REQUEST
+	0x0B ATTOP_READ_RESPONSE
+	0x0C ATTOP_READ_BLOB_REQUEST
+	0x0D ATTOP_READ_BLOB_RESPONSE
+	0x0E ATTOP_READ_MULTIPLE_REQUEST
+	0x0F ATTOP_READ_MULTIPLE_RESPONSE
+	0x10 ATTOP_READ_BY_GROUP_TYPE_REQUEST
+	0x11 ATTOP_READ_BY_GROUP_TYPE_RESPONSE
+	0x12 ATTOP_WRITE_REQUEST
+	0x13 ATTOP_WRITE_RESPONSE
+	0x16 ATTOP_PREPARE_WRITE_REQUEST
+	0x17 ATTOP_PREPARE_WRITE_RESPONSE
+	0x18 ATTOP_EXECUTE_WRITE_REQUEST
+	0x19 ATTOP_EXECUTE_WRITE_RESPONSE
+	0x1B ATTOP_HANDLE_VALUE_NOTIFICATION
+	0x1D ATTOP_HANDLE_VALUE_INDICATION
+	0x1E ATTOP_HANDLE_VALUE_CONFIRMATION
+	0x52 ATTOP_WRITE_COMMAND
+	0xD2 ATTOP_SIGNED_WRITE_COMMAND
+	0x1f ATTOP_CONTINUE
+	0x9e EMPTY_LE_DATA_PRE
+	0x9f EMPTY_LE_DATA
+	)
+
+	/* ATT error code */
+	(
+	0x01 ATT_ERR_INVALID_HANDLE
+	0x02 ATT_ERR_READ_NOT_PERMITTED
+	0x03 ATT_ERR_WRITE_NOT_PERMITTED
+	0x04 ATT_ERR_INVALID_PDU
+	0x05 ATT_ERR_INSUFFICIENT_AUTHENTICATION
+	0x06 ATT_ERR_REQUEST_NOT_SUPPORTED
+	0x07 ATT_ERR_INVALID_OFFSET
+	0x08 ATT_ERR_INSUFFICIENT_AUTHORIZATION
+	0x09 ATT_ERR_PREPARE_QUEUE_FULL
+	0x0A ATT_ERR_ATTRIBUTE_NOT_FOUND
+	0x0B ATT_ERR_ATTRIBUTE_NOT_LONG
+	0x0C ATT_ERR_INSUFFICIENT_ENCRYPTION_KEY_SIZE
+	0x0D ATT_ERR_INVALID_ATTRIBUTE_VALUE_LENGTH
+	0x0E ATT_ERR_UNLIKELY_ERROR
+	0x0F ATT_ERR_INSUFFICIENT_ENCRYPTION
+	0x10 ATT_ERR_UNSUPPORTED_GROUP_TYPE
+	0x11 ATT_ERR_INSUFFICIENT_RESOURCES
+	)
+	/*	SERVICE UUID	*/
+	(
+	0x1800 UUID_SERVICE_GENERIC_ACC
+	0x1801 UUID_SERVICE_GENERIC_ATT
+	0x180a UUID_SERVICE_DEVICE_INFO
+	0x180f UUID_SERVICE_BATTERY
+	0x1812 UUID_SERVICE_HIDS
+	0x2800 UUID_GATT_PRIMARY_SERVICE
+	0x2801 UUID_GATT_SECONDARY_SERVICE
+	0X2802 UUID_GATT_INCLUDE
+	0X2803 UUID_GATT_CHARACTERISTIC
+	0X2A00 UUID_CHRCTR_DEVICE_NAME
+	0X2A19 UUID_CHRCTR_BATTERY_LEVEL
+	0X2A22 UUID_CHRCTR_KEYBOARD_INPUT
+	0X2A23 UUID_CHRCTR_SYSTEM_ID 
+	0X2A25 UUID_CHRCTR_SERIAL_NUMBER
+	0X2A26 UUID_CHRCTR_FIRMWARE
+	0X2A32 UUID_CHRCTR_KEYBOARD_OUTPUT
+	0X2A33 UUID_CHRCTR_MOUSE_INPUT
+	0X2A4A UUID_CHRCTR_HID_INFO
+	0X2A4B UUID_CHRCTR_REPORT_MAP
+	0X2A4C UUID_CHRCTR_HID_CTRL_POINT
+	0X2A4D UUID_CHRCTR_REPORT
+	0X2A4E UUID_CHRCTR_PROTOCOL_MODE
+	)
+
+	(// pairing failed reason
+	0x00 PAIRING_FAILED_RESERVED
+	0X01 PAIRING_FAILED_PASSKEY_ENTRY_FAILED
+	0X02 PAIRING_FAILED_OOB_NOT_AVAILABLE
+	0X03 PAIRING_FAILED_AUTHENTICATION_REQUIRE
+	0X04 PAIRING_FAILED_CONFIRM_VALUE_FAILED
+	0X05 PAIRING_FAILED_PAIRING_NOT_SUPPORTED
+	0X06 PAIRING_FAILED_ENCRYPTION_KEY_SIZE
+	0X07 PAIRING_FAILED_COMMAND_NOT_SUPPORTED
+	0X08 PAIRING_FAILED_UNSPECIFIED_REASON
+	0X09 PAIRING_FAILED_REPEATED_ATTEMPTS
+	0X0A PAIRING_FAILED_INVALID_PARAMETERS
+	0X0B PAIRING_FAILED_DHKEY_CHECK_FAILED
+	0X0C PAIRING_FAILED_NUMERIC_COMPARISON_FAILED
+	0X0D PAIRING_FAILED_BR_EDR_PAIRING_IN_PROGRESS
+	0X0E PAIRING_FAILED_KEY_DERIVATION_GENERATION_NOT_ALLOWED
+	)
+
+	//modified_name
+	(
+	0x14 MAX_NAME_LEN
+	0x16 ADV_DATA_NAME_LEN
+	0X20 SPACE
+	
+	)
+	/* GATT Specifications*/
+	(
+	0X2900 CHARACTERTIC_EXTENDED_PROPERTIES
+	0X2901 CHARACTERTIC_USER_DESCRIPTION
+	0X2902 CLIENT_CHARACTERTIC_CONFIGURATION
+	0X2903 SERVER_CHARACTERTIC_CONFIGURATION
+	0X2904 CHARACTERTIC_PRESENTATION_FORMAT
+	0X2905 CHARACTERTIC_AGGREGATE
+	0X2906 VALID_RANGE
+	0X2907 EXTERNAL_REPORT_REFERENCE
+	0X2908 REPORT_REFERENCE
+	0X290B ENVIR_SENSING_CONFIGURATION
+	0X290C ENVIR_SENSING_MEASUREMENT
+	0X290D ENVIR_SENSING_TRIGGER_SETTING
+	)
+	/* LE L2CAP CID */
+	(
+	0x04 LE_L2CAP_CID_ATT
+	0x05 LE_L2CAP_CID_SIGNAL
+	0x06 LE_L2CAP_CID_SMP
+	)
+
+	//LE address type
+	(
+	0 LE_ADDR_TYPE_PUBLIC
+	1 LE_ADDR_TYPE_RANDOM
+	)
+	//LE address type bitmap
+	(
+	7 LE_RECEIVER_ADDR_BIT
+	6 LE_SENDER_ADDR_BIT
+	)
+	//LE SCAN TYPE
+	(
+	0x00 LE_SCAN_TYPE_PASSIVE //no SCAN_REQ shall be sent
+	0x01 LE_SCAN_TYPE_ACTIVE
+	)
+
+	//LE SCAN ENABLE
+	(
+	0x00 LE_SCAN_DISABLE
+	0x01 LE_SCAN_ENABLE
+	0x0101 LE_ACTIVE_SCAN_ENABLE
+	)
+
+
+//	le_state_map 0-2 is reserved for state_inconn,state_insniff and state_sco
+(
+3 lestate_got_first_packet
+4 lestate_encryption
+5 lestate_update_param
+6 lestate_update_map
+)
+
+// 	le mode
+(
+0 lemode_idle
+1 lemode_slave
+3 lemode_master
+)
+
+(
+0 LE_CONTINUE_TYPE_NULL
+1 LE_CONTINUE_TYPE_NOTIFICATION
+2 LE_CONTINUE_TYPE_PREPARE_WRITE_RESPONSE 
+)
+
+
+(
+0 LE_INITATOR_LTK_BIT
+1 LE_INITATOR_IRK_BIT
+2 LE_INITATOR_CSRK_BIT
+)
+
+(
+0X00	LE_PAIRING_MODE_NONE
+0X01	LE_PAIRING_MODE_LAGACY_JUSTWORK
+0X02	LE_PAIRING_MODE_LAGACY_PASSKEY
+0x81	LE_PAIRING_MODE_SECURE_CONNECT_JUSTWORK
+0x82	LE_PAIRING_MODE_SECURE_CONNECT_NUMERIC
+0X83	LE_PAIRING_MODE_SECURE_CONNECT_PASSKEY
+
+7 LE_PAIRING_MODE_SECURE_CONNECT_BIT
+)
+
+
+(
+0 FLAG_IOCAP_DISPLAYONLY
+1 FLAG_IOCAP_DISPLAYYESNO
+2 FLAG_IOCAP_KEYBOARDONLY
+3 FLAG_IOCAP_NOINPUTNOOUTPUT
+4 FLAG_IOCAP_KEYBOARDDISPLAY
+
+0x00 FLAG_OOB_DATA_FLAG_NO
+)
+
+(
+0X00 FLAG_LE_NO_BONDING_NO_MITM
+0X01 FLAG_LE_BONDING_NO_MITM
+0X04 FLAG_LE_NO_BONDING_MITM
+0X05 FLAG_LE_BONDING_MITM
+0X09 FLAG_LE_BONDING_NO_MITM_SECURE
+0X0D FLAG_LE_BONDING_MITM_SECURE
+
+2 LE_AUTH_MITM_BIT
+3 LE_AUTH_SECURE_CONNECTION_PAIRING_BIT
+)
+
+(
+0  LE_FIND_BY_TYPE_VAL_RES_NOT_FOUND
+1  LE_FIND_BY_TYPE_VAL_RES_FOUND_STARTING_HANDLE
+2  LE_FIND_BY_TYPE_VAL_RES_FOUND_ENDING_HANDLE
+
+)
+
+(
+0 MASTER_PUBLIC_ADDR
+1 MASTER_RANDOM_ADDR
+)
+
+(
+0x06 LE_ERR_PIN_OR_KEY_MISSING
+)
+
+//mem_le_enc_state
+(
+0 FLAG_LE_ENC_NULL
+1 FLAG_LE_ENC_START
+2 FLAG_LE_ENC_PAUSE
+3 FLAG_LE_ENC_END
+)
+
+//mem_le_pairing_state
+(
+0 FLAG_LE_PAIRING_NULL
+1 FLAG_LE_PAIRING_START
+2 FLAG_LE_PAIRING_AFTER_AUTH
+3 FLAG_LE_PAIRING_END
+)
+
+/*LE secure connect state */
+(
+0x00 LE_SC_STAT_NULL
+0x01 LE_SC_STAT_RECEIVE_PUBLIC_KEY
+0x02 LE_SC_STAT_WAIT_SEND_PUBLIC_KEY
+0x03 LE_SC_STAT_SEND_PUBLIC_KEY
+0x04 LE_SC_STAT_RECEIVE_RANDOM
+0x05 LE_SC_STAT_SEND_RANDOM
+0x06 LE_SC_STAT_RECEIVE_DHKEY
+0x07 LE_SC_STAT_WAIT_CONFIRM_GKEY
+0x08 LE_SC_STAT_PASSKEY_WAIT_CONFIRM
+)
+
+
+(
+0 FLAG_LE_SC_CONFRIM_NULL
+1 FLAG_LE_SC_CONFRIM_GKEY_OK
+)
+
+
+(
+3 LE_CONTINUE_TYPE_PUBLIC_KEY
+)
+
+//mem_le_continue_flag
+(
+0 LE_CONTINUE_FLAG_NULL
+1 LE_CONTINUE_FLAG_RX
+2 LE_CONTINUE_FLAG_TX
+)
+
+(
+0x2902  ATT_Configuration
+)
+
+0x03dc mem_lmo_header_length
+0x03dd mem_lmo_header_opcode
+0x03de mem_lmo_payload
+0x03ef mem_lmi_accepted_opcode
+0x03f0 mem_disconn_reason_send
+0x03f1 mem_tx_fixed_freq
+0x03f2 mem_rx_fixed_freq
+0x03f3 mem_ext_features_page
+0x03f4 mem_lmpext_ssp_enable
+0x03f6 mem_remote_sppcap
+0x03f7 mem_lmp_conn_state
+0x03f8 mem_soft_timer
+0x03fa mem_pincode_state
+0x03fb mem_sres_tid
+0x03fc mem_accptsco_tid
+0x03fd mem_auth_enable
+0x03fe mem_wait_encryption
+0x03ff mem_sniff_payload
+0x040f mem_aurand_send_delay_time
+
+	(
+	//bit map
+	0 pair_state_inrand
+	1 pair_state_inrand_acpt
+	2 pair_state_send_comb
+	3 pair_state_recv_comb
+	4 pair_state_send_aurand
+	5 pair_state_recv_sres
+	6 pair_state_recv_aurand
+	7 pair_state_send_sres	
+	)
+	/* LMP opcodes */
+	(
+	1 LMP_NAME_REQ 
+	2 LMP_NAME_RES 
+	3 LMP_ACCEPTED 
+	4 LMP_NOT_ACCEPTED 
+	5 LMP_CLKOFFSET_REQ 
+	6 LMP_CLKOFFSET_RES 
+	7 LMP_DETACH 
+	8 LMP_IN_RAND 
+	9 LMP_COMB_KEY 
+	10 LMP_UNIT_KEY 
+	11 LMP_AU_RAND 
+	12 LMP_SRES 
+	13 LMP_TEMP_RAND 
+	14 LMP_TEMP_KEY 
+	15 LMP_ENCRYPTION_MODE_REQ 
+	16 LMP_ENCRYPTION_KEY_SIZE_REQ 
+	17 LMP_START_ENCRYPTION_REQ 
+	18 LMP_STOP_ENCRYPTION_REQ 
+	19 LMP_SWITCH_REQ 
+	20 LMP_HOLD
+	21 LMP_HOLD_REQ
+	23 LMP_SNIFF_REQ 
+	24 LMP_UNSNIFF_REQ 
+	26 LMP_PARK_REQ 
+	27 LMP_SET_BROADCAST_SCAN_WINDOW 
+	28 LMP_MODIFY_BEACON 
+	29 LMP_UNPARK_BD_ADDR_REQ 
+	30 LMP_UNPARK_PM_ADDR_REQ 
+	31 LMP_INCR_POWER_REQ 
+	32 LMP_DECR_POWER_REQ 
+	33 LMP_MAX_POWER 
+	34 LMP_MIN_POWER 
+	35 LMP_AUTO_RATE 
+	36 LMP_PREFERRED_RATE 
+	37 LMP_VERSION_REQ 
+	38 LMP_VERSION_RES 
+	39 LMP_FEATURES_REQ 
+	40 LMP_FEATURES_RES 
+	41 LMP_QUALITY_OF_SERVICE 
+	42 LMP_QUALITY_OF_SERVICE_REQ 
+	43 LMP_SCO_LINK_REQ 
+	44 LMP_REMOVE_SCO_LINK_REQ 
+	45 LMP_MAX_SLOT 
+	46 LMP_MAX_SLOT_REQ 
+	47 LMP_TIMING_ACCURACY_REQ 
+	48 LMP_TIMING_ACCURACY_RES 
+	49 LMP_SETUP_COMPLETE 
+	50 LMP_USE_SEMI_PERMANENT_KEY 
+	51 LMP_HOST_CONNECTION_REQ 
+	52 LMP_SLOT_OFFSET 
+	53 LMP_PAGE_MODE_REQ 
+	54 LMP_PAGE_SCAN_MODE_REQ 
+	55 LMP_SUPERVISION_TIMEOUT 
+	56 LMP_TEST_ACTIVATE
+	57 LMP_TEST_CONTROL
+	58 LMP_ENC_KEY_SIZE_MASK_REQ
+	59 LMP_ENC_KEY_SIZE_MASK_RES
+	60 LMP_SET_AFH
+
+	/* simple pairing support */
+	61 LMP_ENCAPSULATED_HEADER
+	62 LMP_ENCAPSULATED_PAYLOAD
+	63 LMP_SIMPLE_PAIRING_CONFIRM
+	64 LMP_SIMPLE_PAIRING_NUMBER
+	65 LMP_DHKEY_CHECK
+	127 LMP_ESCAPE
+	127 LMP_ESCAPE_4   /* add 2bytes LMP header support  */   
+	)
+	/* LMP EXT opcodes, ORed with bit 7 to make difference to nonEXT */
+	(
+	129 LMP_EXT_ACCEPTED
+	130 LMP_NOT_ACCEPTED_EXT
+	131 LMP_EXT_FEATURES_REQ
+	132 LMP_EXT_FEATURES_RES
+	139 LMP_PACKET_TYPE_TABLE_REQ
+	140 LMP_EXT_ESCO_LINK_REQ
+	141 LMP_EXT_REMOVE_ESCO_REQ
+	144 LMP_EXT_CHN_CLASSIFICATION_REQ
+	145 LMP_EXT_CHN_CLASSIFICATION
+	149 LMP_SNIFF_SUBRATING_REQ
+	150 LMP_SNIFF_SUBRATING_RES
+	151 LMP_PAUSE_ENCRYPTION_REQ
+	152 LMP_RESUME_ENCRYPTION_REQ
+	153 LMP_IO_CAP_REQ
+	154 LMP_IO_CAP_RES
+	)
+	/* LMP reason codes */
+	(
+	0x05 AUTHENTICATION_FAILURE_ERROR
+	0x06 KEY_MISSING
+	0x0b ACL_CONNECTION_ALREADY_EXISTS
+	0x13 OTHER_END_TERMINATED
+	0x15 ABOUT_TO_POEWR_OFF
+	0x16 LOCAL_HOST
+	0x18 PAIRING_NOT_ALLOWED
+	0x19 UNKNOWN_LMP_PDU
+	0x1A UNSUPPORTED_LMP_FEATURE 
+	0x1F UNSPECIFIED_ERROR
+	0x20 UNSUPPORTED_PARAMETERS
+	0x21 SWITCH_NOT_ALLOWED
+	0x23 TRANSACTION_COLLISION
+	0x24 PDU_NOT_ALLOWED
+	0x25 ENCRYPTION_MODE_NOT_ACCEPTABLE
+	0x2e NOT_SUPPORT_CHN_CLASSIFICATION
+	0x37 NOT_SUPPORT_SSP
+	)
+
+	/* test mode scenarios */
+	(
+	0 PAUSE_TEST_MODE
+	1 ZERO_PATTERN
+	2 ONE_PATTERN
+	3 ALT_PATTERN
+	4 PSEUDORANDOM
+	5 CLOSED_LOOP_BACK_ACL
+	6 CLOSED_LOOP_BACK_SCO
+	7 ACL_WITHOUT_WHITENING
+	8 SCO_WITHOUT_WHITENING
+	9 ALT2_PATTERN
+	255 EXIT_TEST_MODE
+	)
+	/* test mode hoppig modes */
+	(
+	0 FIXED_FREQ
+	1 NORMAL_HOP
+	)
+
+	/* mem_lmp_tid indicates which type of LMP will be sent */
+	(
+	0 TID_NORM_REPLY
+	1 TID_NORM_SEND
+	2 TID_ONE
+	3 TID_ZERO
+	4 TID_PAIRING
+	5 TID_ENCRYPTION
+	6 TID_VARIABLE
+	7 TID_RX
+	)
+
+	/* ============== lmp status ==========*/
+	(
+	0 lmp_incoming
+	1 lmp_outgoing
+	2 lmp_reject_msg
+	3 lmp_clear_msg
+	4 upper_reject_msg
+	5 upper_clear_msg
+	)
+
+(
+0x2ee00 TIMER_ONE_MINUTE //96000*2
+80 TIMER_SWITCH_WAITE
+12 TIMER_ENPT_WAITE
+)
+
+(
+0 SWITCH_FLAG_INIT
+1 SWITCH_FLAG_ACCEPT
+2 SWITCH_FLAG_NOT_ACCEPT
+)
+(
+0 NULL_ENCRYP
+1 DONE_ENCRYP
+)
+
+//
+//
+//Large memory blocks defined in this file.
+//Blocks Shall be defined with absolute address.
+//Blocks' length Shall be specified in comment following Blocks' names.
+//Different blocks MAY be overlap.
+//Blocks defined in this file Shall NOT be overlap with variable in memmap.format.
+
+// USB C51 exchange area
+(
+0xff0 mem_mcmd
+0xff1 mem_mouse_data
+)
+
+//l2cap RX buffers
+(
+0x1000 mem_l2cap_rxbuff1		//0x400
+0x1400 mem_l2cap_rxbuff2		//0x400
+//end address:0x17ff
+)
+//l2cap TX buffers
+(
+0x1800 mem_tx_buff0		//128
+0x1880 mem_tx_buff1		//128
+0x1900 mem_tx_buff2		//128
+0x1980 mem_tx_buff3		//128
+0x1a00 mem_tx_buff4		//128
+0x1a80 mem_tx_buff5		//128
+0x1b00 mem_tx_buff6		//128
+0x1b80 mem_tx_buff7		//128
+//end address: 0x1bff
+)
+
+//uart buffer
+(
+0x1800 mem_h5rx_buf//0x400
+0x1bff mem_h5rx_buf_end
+0x1c00 mem_h5tx_buf
+0x1fff mem_h5tx_buf_end
+)
+
+(
+0x4c00 mem_module_rx_buf//0x400
+0x4c00 mem_module_rx_buf_little
+0x4fff mem_module_rx_buf_end
+0x1c00 mem_module_tx_buf
+0x1fff mem_module_tx_buf_end
+)
+
+(
+0x1800 mem_ir_record
+0x1c      mem_ir_record_max
+)
+
+
+0x0413 mem_module_temp_len
+0x0415 mem_uart_cmd
+0x0416 mem_uart_opcode
+0x0417 mem_uart_len
+0x0418 mem_module_temp_nl_discard_packet
+0x0419 mem_module_le_md_flag
+
+
+(
+0 MODULE_FLAG_UART_FLOW_CONTROL
+1 MODULE_FLAG_BLE_RECEIVED_DATA
+2 MODULE_FLAG_BLE_SEND_MTU23
+3 MODULE_FLAG_BLE_SEND_DATA
+)
+
+
+
+
+(
+34 NV_DATA_LEN
+-1 DECREASED_ONE
+)
+
+
+
+(
+	10 FLAG_MODULE_READ_VDD_COUNT
+)
+
+	(
+		110  DM_REFCOM_BUFF_LEN
+		230  NL_RFCOMM_BUFF_LEN
+		220  NL_RFCOMM_BUFF_LEN_220
+		20 DM_LE_BUFF_LEN
+	)
+	(
+		0x200 UART_AIR_CONTROL_THRESHOLD
+		0x150 UART_RX_CONTROL_THRESHOLD
+	)
+	(
+		0 MODULE_LED_DISABLE
+		1 MODULE_LED_BLINK
+	)
+
+
+
+
+(
+0x01 HCI_DISCARD_PACKET
+0x00 HCI_NOT_DISCARD_PACKET
+
+
+)
+
+
+
+(//Command
+0x00 HCI_CMD_SET_BT_ADDR_REQ
+0x01 HCI_CMD_SET_LE_ADDR_REQ
+0x02 HCI_CMD_SET_VISIBILITY_REQ
+0x03 HCI_CMD_SET_BT_NAME_REQ
+0x04 HCI_CMD_SET_LE_NAME_REQ
+0x05 HCI_CMD_SPP_DATA_REQ
+0x09 HCI_CMD_LE_DATA_REQ
+0x0b HCI_CMD_STATUS_IRQ
+0x0c HCI_CMD_SET_PAIRING_REQ
+0x0d HCI_CMD_SET_PINCODE_REQ
+0x0e HCI_CMD_SET_UARTCONTROL_REQ
+0x0f HCI_CMD_SET_UART_BAUD_REQ
+0x10 HCI_CMD_VERSION_REQ
+0x11 HCI_CMD_BT_DISCONNECT
+0x12 HCI_CMD_BLE_DISCONNECT
+0x13 HCI_CMD_DELETE_DEVICE
+0x14 HCI_CMD_CREATE_CONNECT
+0x26 HCI_CMD_SET_NVRAM_REQ
+0x27 HCI_CMD_SLEEP
+0x28 HCI_CMD_CONFIRM_GKEY
+0x29 HCI_CMD_SET_CREDIT_GIVEN
+0x2a HCI_CMD_AUTO_ADV_SCAN
+0x2b HCI_CMD_POWER_REQ
+0x2c HCI_CMD_POWER_SET
+0x30 HCI_CMD_PASSKEY_ENTRY
+0x31 HCI_CMD_SET_GPIO
+0x32 HCI_CMD_READ_GPIO
+0x33 HCI_CMD_LE_SET_PAIRING
+0x34 HCI_CMD_LE_SET_ADV_DATA
+0x35 HCI_CMD_LE_SET_SCAN_DATA
+0x36 HCI_CMD_LE_SEND_CONN_UPDATE_REQ
+0x38 HCI_CMD_LE_START_PAIRING
+0x48 HCI_CMD_LE_CONFIRM_GKEY
+
+)
+
+(//event
+0x00 HCI_EVENT_SPP_CONN_REP
+0x01 HCI_EVENT_HID_CONN_REP
+0x02 HCI_EVENT_LE_CONN_REP
+0x03 HCI_EVENT_SPP_DIS_REP
+0x04 HCI_EVENT_HID_DIS_REP
+0x05 HCI_EVENT_LE_DIS_REP
+0x06 HCI_EVENT_CMD_RES
+0x07 HCI_EVENT_SPP_DATA_REP
+0x08 HCI_EVENT_LE_DATA_REP
+0x09 HCI_EVENT_STANDBY_REP
+0x0a HCI_EVENT_STATUS_RES
+0x0b HCI_EVENT_FINISH_PACK_NUM
+0X0C HCI_EVENT_SNIFF_MD_CHANGE
+0x0D HCI_EVENT_NVRAM_REP
+0x0e HCI_EVENT_GKEY
+0x0F HCI_EVENT_INVALID_PACKET
+0x10 HCI_EVENT_GET_PASSKEY
+0x11 HCI_EVENT_LE_TK
+0x12 HCI_EVENT_REMOTE_MTU
+0x14 HCI_EVENT_LE_PAIRING_STATE
+0X15 HCI_EVENT_LE_ENCRYPTION_STATE
+0x17 HCI_EVENT_LE_CONNECTION_UPDATE
+0x1d HCI_EVENT_LE_GKEY
+
+)
+
+
+
+
+(
+0x7e0 OTP_ADDR_RF_PARAM_FIX
+//struct of RF_PARAM_FIX
+// uint8       //length = param_pair_count * 2 
+// uint16     //param-pair-1
+// uint16     //param-pair-2
+// uint16     //param-pair-3
+// uint16     //param-pair-4
+// uint16     //param-pair-5
+// uint16     //param-pair-6
+// uint16     //param-pair-7
+)
+(
+0x0270 FW_VERSION_NUMBER
+)
+
+(
+0	PAIRING_PINCODE
+1	PAIRING_JUSTWORK
+2	PAIRING_PASSKEY
+3	PAIRING_CONFIRM
+)
+
+
+(
+0x0001	FLAG_BT_PAIRING_SUCCESS
+0x0101	FLAG_BT_PAIRING_FAIL
+0x0080	FLAG_BLE_PAIRING_SUCCESS
+0x0180	FLAG_BLE_PAIRING_FAIL
+)
+
+
+(
+1	FLAG_EVENT_START_ENC
+0	FLAG_EVENT_PAUSE_ENC
+)
+
+(
+	0 MOUDLE_STATE_BT_BIT
+	1 MOUDLE_STATE_BLE_BIT
+)
+
+(
+	0 MOUDLE_TASK_UNSINFF
+)
+
+
+
+0x041a mem_init_cnt
+//dpi eeprom addr
+198 mouse_dpi_eeprom_addr
+
+(
+0x00 DPI_BUTTON_STATE_DOWN
+0x01 DPI_BUTTON_STATE_UP
+
+)
+
+(
+1 ONE_TRADITION_MOUSE
+2 ONE_BLE_MOUSE
+)
+
+
+(
+1 SENSOR_TYPE_A7530
+2 SENSOR_TYPE_P3204
+)
+0x30 P3204_ID
+0x31 P3065_ID
+0x3e P3610_ID
+
+0x00 PAN_REG_PID_L
+0x01 PAN_REG_PID_H
+0x02 PAN_REG_MOTION_STAUS
+0x03 PAN_REG_DELTA_X
+0x04 PAN_REG_DELTA_Y
+0x05 PAN_REG_OPRATION_MODE
+0x06 PAN_REG_CONFIG
+0x07 PAN_REG_IMAGE_QUALITY
+0x08 PAN_REG_OPRATION_STATE
+0x09 PAN_REG_WRITE_PROTECT
+0x0A PAN_REG_SLEEP_1
+0x0B PAN_REG_ENTER_TIME
+0x0C PAN_REG_SLEEP_2
+0x0D PAN_REG_IMAGE_THRESHOLD
+0x0E PAN_REG_IMAGE_RECGNITION
+
+7 pan_bit_motion
+
+(
+1000      MOUSE_LPM_CLR_LOCK_TIME
+0x06      MOUSE_DPI_ADDRESS
+       2       MOUSE_DPI_MAX_DECR
+)
+(
+80 MOUSE_SEND_BLANK_TIMER
+)
+
+
+//mem_mouse_mode_state
+(
+0x00 MOUSE_MODE_STATE_IDLE
+0x01 MOUSE_MODE_STATE_BT
+0x02 MOUSE_MODE_STATE_BLE
+)
+
+
+(
+	  0 patch00_0
+	  1 patch00_1
+	  2 patch00_2
+	  3 patch00_3
+	  4 patch00_4
+	  5 patch00_5
+	  6 patch00_6
+	  7 patch00_7
+	  8 patch01_0
+	  9 patch01_1
+	 10 patch01_2
+	 11 patch01_3
+	 12 patch01_4
+	 13 patch01_5
+	 14 patch01_6
+	 15 patch01_7
+	 16 patch02_0
+	 17 patch02_1
+	 18 patch02_2
+	 19 patch02_3
+	 20 patch02_4
+	 21 patch02_5
+	 22 patch02_6
+	 23 patch02_7
+	 24 patch03_0
+	 25 patch03_1
+	 26 patch03_2
+	 27 patch03_3
+	 28 patch03_4
+	 29 patch03_5
+	 30 patch03_6
+	 31 patch03_7
+	 32 patch04_0
+	 33 patch04_1
+	 34 patch04_2
+	 35 patch04_3
+	 36 patch04_4
+	 37 patch04_5
+	 38 patch04_6
+	 39 patch04_7
+	 40 patch05_0
+	 41 patch05_1
+	 42 patch05_2
+	 43 patch05_3
+	 44 patch05_4
+	 45 patch05_5
+	 46 patch05_6
+	 47 patch05_7
+	 48 patch06_0
+	 49 patch06_1
+	 50 patch06_2
+	 51 patch06_3
+	 52 patch06_4
+	 53 patch06_5
+	 54 patch06_6
+	 55 patch06_7
+	 56 patch07_0
+	 57 patch07_1
+	 58 patch07_2
+	 59 patch07_3
+	 60 patch07_4
+	 61 patch07_5
+	 62 patch07_6
+	 63 patch07_7
+	 64 patch08_0
+	 65 patch08_1
+	 66 patch08_2
+	 67 patch08_3
+	 68 patch08_4
+	 69 patch08_5
+	 70 patch08_6
+	 71 patch08_7
+	 72 patch09_0
+	 73 patch09_1
+	 74 patch09_2
+	 75 patch09_3
+	 76 patch09_4
+	 77 patch09_5
+	 78 patch09_6
+	 79 patch09_7
+	 80 patch0a_0
+	 81 patch0a_1
+	 82 patch0a_2
+	 83 patch0a_3
+	 84 patch0a_4
+	 85 patch0a_5
+	 86 patch0a_6
+	 87 patch0a_7
+	 88 patch0b_0
+	 89 patch0b_1
+	 90 patch0b_2
+	 91 patch0b_3
+	 92 patch0b_4
+	 93 patch0b_5
+	 94 patch0b_6
+	 95 patch0b_7
+	 96 patch0c_0
+	 97 patch0c_1
+	 98 patch0c_2
+	 99 patch0c_3
+	100 patch0c_4
+	101 patch0c_5
+	102 patch0c_6
+	103 patch0c_7
+	104 patch0d_0
+	105 patch0d_1
+	106 patch0d_2
+	107 patch0d_3
+	108 patch0d_4
+	109 patch0d_5
+	110 patch0d_6
+	111 patch0d_7
+	112 patch0e_0
+	113 patch0e_1
+	114 patch0e_2
+	115 patch0e_3
+	116 patch0e_4
+	117 patch0e_5
+	118 patch0e_6
+	119 patch0e_7
+	120 patch0f_0
+	121 patch0f_1
+	122 patch0f_2
+	123 patch0f_3
+	124 patch0f_4
+	125 patch0f_5
+	126 patch0f_6
+	127 patch0f_7
+	128 patch10_0
+	129 patch10_1
+	130 patch10_2
+	131 patch10_3
+	132 patch10_4
+	133 patch10_5
+	134 patch10_6
+	135 patch10_7
+	136 patch11_0
+	137 patch11_1
+	138 patch11_2
+	139 patch11_3
+	140 patch11_4
+	141 patch11_5
+	142 patch11_6
+	143 patch11_7
+	144 patch12_0
+	145 patch12_1
+	146 patch12_2
+	147 patch12_3
+	148 patch12_4
+	149 patch12_5
+	150 patch12_6
+	151 patch12_7
+	152 patch13_0
+	153 patch13_1
+	154 patch13_2
+	155 patch13_3
+	156 patch13_4
+	157 patch13_5
+	158 patch13_6
+	159 patch13_7
+	160 patch14_0
+	161 patch14_1
+	162 patch14_2
+	163 patch14_3
+	164 patch14_4
+	165 patch14_5
+	166 patch14_6
+	167 patch14_7
+	168 patch15_0
+	169 patch15_1
+	170 patch15_2
+	171 patch15_3
+	172 patch15_4
+	173 patch15_5
+	174 patch15_6
+	175 patch15_7
+	176 patch16_0
+	177 patch16_1
+	178 patch16_2
+	179 patch16_3
+	180 patch16_4
+	181 patch16_5
+	182 patch16_6
+	183 patch16_7
+	184 patch17_0
+	185 patch17_1
+	186 patch17_2
+	187 patch17_3
+	188 patch17_4
+	189 patch17_5
+	190 patch17_6
+	191 patch17_7
+	192 patch18_0
+	193 patch18_1
+	194 patch18_2
+	195 patch18_3
+	196 patch18_4
+	197 patch18_5
+	198 patch18_6
+	199 patch18_7
+	200 patch19_0
+	201 patch19_1
+	202 patch19_2
+	203 patch19_3
+	204 patch19_4
+	205 patch19_5
+	206 patch19_6
+	207 patch19_7
+	208 patch1a_0
+	209 patch1a_1
+	210 patch1a_2
+	211 patch1a_3
+	212 patch1a_4
+	213 patch1a_5
+	214 patch1a_6
+	215 patch1a_7
+	216 patch1b_0
+	217 patch1b_1
+	218 patch1b_2
+	219 patch1b_3
+	220 patch1b_4
+	221 patch1b_5
+	222 patch1b_6
+	223 patch1b_7
+	224 patch1c_0
+	225 patch1c_1
+	226 patch1c_2
+	227 patch1c_3
+	228 patch1c_4
+	229 patch1c_5
+	230 patch1c_6
+	231 patch1c_7
+	232 patch1d_0
+	233 patch1d_1
+	234 patch1d_2
+	235 patch1d_3
+	236 patch1d_4
+	237 patch1d_5
+	238 patch1d_6
+	239 patch1d_7
+	240 patch1e_0
+	241 patch1e_1
+	242 patch1e_2
+	243 patch1e_3
+	244 patch1e_4
+	245 patch1e_5
+	246 patch1e_6
+	247 patch1e_7
+	248 patch1f_0
+	249 patch1f_1
+	250 patch1f_2
+	251 patch1f_3
+	252 patch1f_4
+	253 patch1f_5
+	254 patch1f_6
+	255 patch1f_7
+	  0 patch20_0
+	  1 patch20_1
+	  2 patch20_2
+	  3 patch20_3
+	  4 patch20_4
+	  5 patch20_5
+	  6 patch20_6
+	  7 patch20_7
+	  8 patch21_0
+	  9 patch21_1
+	 10 patch21_2
+	 11 patch21_3
+	 12 patch21_4
+	 13 patch21_5
+	 14 patch21_6
+	 15 patch21_7
+	 16 patch22_0
+	 17 patch22_1
+	 18 patch22_2
+	 19 patch22_3
+	 20 patch22_4
+	 21 patch22_5
+	 22 patch22_6
+	 23 patch22_7
+	 24 patch23_0
+	 25 patch23_1
+	 26 patch23_2
+	 27 patch23_3
+	 28 patch23_4
+	 29 patch23_5
+	 30 patch23_6
+	 31 patch23_7
+	 32 patch24_0
+	 33 patch24_1
+	 34 patch24_2
+	 35 patch24_3
+	 36 patch24_4
+	 37 patch24_5
+	 38 patch24_6
+	 39 patch24_7
+	 40 patch25_0
+	 41 patch25_1
+	 42 patch25_2
+	 43 patch25_3
+	 44 patch25_4
+	 45 patch25_5
+	 46 patch25_6
+	 47 patch25_7
+	 48 patch26_0
+	 49 patch26_1
+	 50 patch26_2
+	 51 patch26_3
+	 52 patch26_4
+	 53 patch26_5
+	 54 patch26_6
+	 55 patch26_7
+	 56 patch27_0
+	 57 patch27_1
+	 58 patch27_2
+	 59 patch27_3
+	 60 patch27_4
+	 61 patch27_5
+	 62 patch27_6
+	 63 patch27_7
+	 64 patch28_0
+	 65 patch28_1
+	 66 patch28_2
+	 67 patch28_3
+	 68 patch28_4
+	 69 patch28_5
+	 70 patch28_6
+	 71 patch28_7
+	 72 patch29_0
+	 73 patch29_1
+	 74 patch29_2
+	 75 patch29_3
+	 76 patch29_4
+	 77 patch29_5
+	 78 patch29_6
+	 79 patch29_7
+	 80 patch2a_0
+	 81 patch2a_1
+	 82 patch2a_2
+	 83 patch2a_3
+	 84 patch2a_4
+	 85 patch2a_5
+	 86 patch2a_6
+	 87 patch2a_7
+	 88 patch2b_0
+	 89 patch2b_1
+	 90 patch2b_2
+	 91 patch2b_3
+	 92 patch2b_4
+	 93 patch2b_5
+	 94 patch2b_6
+	 95 patch2b_7
+	 96 patch2c_0
+	 97 patch2c_1
+	 98 patch2c_2
+	 99 patch2c_3
+	100 patch2c_4
+	101 patch2c_5
+	102 patch2c_6
+	103 patch2c_7
+	104 patch2d_0
+	105 patch2d_1
+	106 patch2d_2
+	107 patch2d_3
+	108 patch2d_4
+	109 patch2d_5
+	110 patch2d_6
+	111 patch2d_7
+	112 patch2e_0
+	113 patch2e_1
+	114 patch2e_2
+	115 patch2e_3
+	116 patch2e_4
+	117 patch2e_5
+	118 patch2e_6
+	119 patch2e_7
+	120 patch2f_0
+	121 patch2f_1
+	122 patch2f_2
+	123 patch2f_3
+	124 patch2f_4
+	125 patch2f_5
+	126 patch2f_6
+	127 patch2f_7
+	128 patch30_0
+	129 patch30_1
+	130 patch30_2
+	131 patch30_3
+	132 patch30_4
+	133 patch30_5
+	134 patch30_6
+	135 patch30_7
+	136 patch31_0
+	137 patch31_1
+	138 patch31_2
+	139 patch31_3
+	140 patch31_4
+	141 patch31_5
+	142 patch31_6
+	143 patch31_7
+	144 patch32_0
+	145 patch32_1
+	146 patch32_2
+	147 patch32_3
+	148 patch32_4
+	149 patch32_5
+	150 patch32_6
+	151 patch32_7
+	152 patch33_0
+	153 patch33_1
+	154 patch33_2
+	155 patch33_3
+	156 patch33_4
+	157 patch33_5
+	158 patch33_6
+	159 patch33_7
+	160 patch34_0
+	161 patch34_1
+	162 patch34_2
+	163 patch34_3
+	164 patch34_4
+	165 patch34_5
+	166 patch34_6
+	167 patch34_7
+	168 patch35_0
+	169 patch35_1
+	170 patch35_2
+	171 patch35_3
+	172 patch35_4
+	173 patch35_5
+	174 patch35_6
+	175 patch35_7
+	176 patch36_0
+	177 patch36_1
+	178 patch36_2
+	179 patch36_3
+	180 patch36_4
+	181 patch36_5
+	182 patch36_6
+	183 patch36_7
+	184 patch37_0
+	185 patch37_1
+	186 patch37_2
+	187 patch37_3
+	188 patch37_4
+	189 patch37_5
+	190 patch37_6
+	191 patch37_7
+	192 patch38_0
+	193 patch38_1
+	194 patch38_2
+	195 patch38_3
+	196 patch38_4
+	197 patch38_5
+	198 patch38_6
+	199 patch38_7
+	200 patch39_0
+	201 patch39_1
+	202 patch39_2
+	203 patch39_3
+	204 patch39_4
+	205 patch39_5
+	206 patch39_6
+	207 patch39_7
+	208 patch3a_0
+	209 patch3a_1
+	210 patch3a_2
+	211 patch3a_3
+	212 patch3a_4
+	213 patch3a_5
+	214 patch3a_6
+	215 patch3a_7
+	216 patch3b_0
+	217 patch3b_1
+	218 patch3b_2
+	219 patch3b_3
+	220 patch3b_4
+	221 patch3b_5
+	222 patch3b_6
+	223 patch3b_7
+	224 patch3c_0
+	225 patch3c_1
+	226 patch3c_2
+	227 patch3c_3
+	228 patch3c_4
+	229 patch3c_5
+	230 patch3c_6
+	231 patch3c_7
+	232 patch3d_0
+	233 patch3d_1
+	234 patch3d_2
+	235 patch3d_3
+	236 patch3d_4
+	237 patch3d_5
+	238 patch3d_6
+	239 patch3d_7
+	240 patch3e_0
+	241 patch3e_1
+	242 patch3e_2
+	243 patch3e_3
+	244 patch3e_4
+	245 patch3e_5
+	246 patch3e_6
+	247 patch3e_7
+	248 patch3f_0
+	249 patch3f_1
+	250 patch3f_2
+	251 patch3f_3
+	252 patch3f_4
+	253 patch3f_5
+	254 patch3f_6
+	255 patch3f_7
+
+)
+(
+  0x8000 core_chipid
+  0x8003 core_kick
+  0x8005 core_lpm_wr
+  0x8006 core_misc_ctrl
+  0x8007 core_otp_rdata
+  0x8009 core_pcmoutfifo
+  0x8010 core_reset
+  0x8011 core_encrypt
+  0x8015 core_uart_txd
+  0x8022 core_ucode_hi
+  0x8023 core_ucode_ctrl
+  0x8024 core_ucode_low
+  0x8025 core_ucode_data
+  0x8040 core_halfslot
+  0x8042 core_clksel
+  0x8043 core_uart_clksel
+  0x8043 core_config 
+  0x8044 core_xtal_stable_time
+  0x8045 core_otp_addr
+  0x8046 core_otp_din
+  0x8047 core_otp_ctrl
+  0x8048 core_otpd_addr
+  0x804a core_otpd_len
+  0x804b core_otpd_ctrl
+  0x804c core_lpm_reg
+  0x804f core_lpm_isogate
+  0x8050 core_clkoff
+  0x8052 core_uart_baud
+  0x8054 core_uart_rsaddr
+  0x8056 core_uart_readdr
+  0x8058 core_uart_rrptr
+  0x805a core_uart_tsaddr
+  0x805c core_uart_teaddr
+  0x805e core_uart_twptr
+  0x8060 core_uart_trptrp
+  0x8062 core_uart_ctrl
+  0x8063 core_kscn_ksctrl
+  0x8064 core_kscn_rctc
+  0x8065 core_kscn_scancycle_timer_l
+  0x8066 core_kscn_scancycle_timer_h
+  0x8067 core_kscn_m_debounce          
+  0x8068 core_kscn_modkey
+  0x806f core_kscn_rowmask
+  0x8070 core_gpio_oe0
+  0x8071 core_gpio_oe1
+  0x8072 core_gpio_oe2
+  0x8073 core_gpio_oe3
+  0x8074 core_gpio_out0
+  0x8075 core_gpio_out1
+  0x8076 core_gpio_out2
+  0x8077 core_gpio_out3
+  0x8078 core_gpio_pu0
+  0x8079 core_gpio_pu1
+  0x807a core_gpio_pu2
+  0x807b core_gpio_pu3
+  0x807c core_gpio_pd0
+  0x807d core_gpio_pd1
+  0x807e core_gpio_pd2
+  0x807f core_gpio_pd3
+  0x8080 core_gpio_sel
+  0x8081 core_gpio_sel1
+  0x8082 core_gpio_sel2
+  0x8083 core_gpio_key0
+  0x8084 core_gpio_key1
+  0x8085 core_gpio_key2
+  0x8086 core_spid_ctrl
+  0x8087 core_spid_delay
+  0x8088 core_spid_txlen
+  0x808a core_spid_txaddr
+  0x808c core_spid_rxaddr
+  0x808e core_spid_rxlen
+  0x8090 core_iicd_ctrl
+  0x8091 core_iicd_scl_low
+  0x8092 core_iicd_scl_high
+  0x8093 core_iicd_start_setup
+  0x8094 core_iicd_start_hold
+  0x8095 core_iicd_stop_setup
+  0x8096 core_iicd_data_setup
+  0x8097 core_iicd_data_hold
+  0x8098 core_iicd_txlen
+  0x809a core_iicd_txaddr
+  0x809c core_iicd_rxaddr
+  0x809e core_iicd_rxlen
+  0x80a0 core_pwm_pcnt0
+  0x80a2 core_pwm_ncnt0
+  0x80a4 core_pwm_pcnt1
+  0x80a6 core_pwm_ncnt1
+  0x80b0 core_enc_ctrl
+  0x80b1 core_cvsd_ctrl
+  0x80b2 core_codec_ctrl
+  0x80b3 core_dec_ctrl
+  0x80b4 core_bist_ctrl
+
+
+
+  
+  0x8108 core_misc_status
+  0x8109 core_qdec_cntx
+  0x810a core_qdec_cnty
+  0x810b core_qdec_cntz
+  0x810c core_uart_status
+  0x810d core_uart_rbaud
+  0x810e core_uart_txitems
+  0x8110 core_uart_trptr
+  0x8112 core_uart_rxitems
+  0x8114 core_uart_rdptr
+  0x8116 core_uart_rwptr
+  0x8119 core_kscn_kstat
+  0x811a core_kscn_event
+  0x811b core_kscn_event_num
+  0x811c core_gpio_in
+  0x811d core_gpio_in1
+  0x8124 core_current_otp_addr
+  0x8126 core_otpd_remain
+  0x8128 core_spid_remain
+  0x812a core_iicd_remain
+  0x812c core_dma_status
+  0x812d core_perf_status
+  0x812e core_adc_in
+  0x8134 core_pcminfifo
+  0x8135 core_pcminfifo_remain
+  0x8136 core_pcmoutfifo_remain
+  0x8138 core_lpm_ctrl
+  0x813c core_lpm_xtalcnt
+  0x813d core_lpm_buckcnt
+  0x813e core_lpm_ldocnt
+  0x813f core_lpm_latch
+  0x8140 core_gpio_wakeup_low
+  0x8144 core_gpio_wakeup_high
+  0x8149 core_clk_counter
+  0x8150 core_adc_sum
+// dummy regs  
+
+  0x8203 core_ice_ctrl
+  0x8204 core_ice_status
+  0x8205 core_ice_break0
+  0x8207 core_ice_break1
+  
+  0x8280 core_docd_ctrl
+  0x8288 core_docd_paddr
+  0x828a core_docd_pdata
+
+  0x8300 iic_prer_low		
+  0x8301 iic_slave_addr	
+  0x8302 iic_ctr					
+  0x8303 iic_cr					
+  0x8304 iic_rxr					
+  0x8305 iic_txr					
+  0x8306 iic_sr					
+  0x8307 iic_fifo				
+
+  0x8400   mem_b_box          /* entire bank */
+  0x8500   mem_e_box          /* entire bank */
+  0x8600   mem_l_box          /* entire bank */
+
+  0x8700 memk
+
+  0x8900 rfen_rx
+  0x8901 rfen_tx
+  0x8902 rfen_mdm
+  0x8903 rfen_sn
+  0x8904 rfen_msc
+  0x8905 rfen_ck
+  0x8906 rfen_adc
+  0x8912 rf_agc_ctrl
+  0x8914 rfen_ulp
+  0x8973 rfen_chgpump
+  0x894b rf_rx_vctrl_reg1
+  0x894c rf_rx_vctrl_reg2
+  0x894d rf_rx_ib_lna
+  0x894e rf_rx_lna_ctrim
+
+  0x8950 rf_bpf_ctrim
+  0x8951 rf_bpf_ib
+  0x8952 rf_adc_rccal
+  0x8952 rf_rccal_ctrl
+  0x8953 rf_rccal_sel
+  0x8955 rf_tx_pa
+  0x895f rf_pll_rstn
+  0x8964 rf_sdm_en
+  0x8960 rf_pll_intg
+  0x8961 rf_pll_frac
+  0x8963 rf_pll_frachi
+  0x896c rf_afc_cap
+  0x8967 rf_clkpll_bias
+  0x896f rf_clkpll_en
+  0x8968 rf_clkpll_int
+  0x8969 rf_clkpll_frac
+  0x896d rf_balun_ctrim
+  0x8971 rf_adc_mode
+  0x8972 rf_adc_gc
+  0x8973 rf_adc_ch
+  0x8980 rf_rccal_result
+  0x8981 rf_afc_d2a
+  0x8982 rf_rssi
+
+
+0x8c00 core_usb_config		
+0x8c01 core_usb_int_mask	
+0x8c10 core_usb_trig	
+0x8c11 core_usb_stall		
+0x8c12 core_usb_clear		
+0x8c18 core_usb_ep
+0x8c18 core_usb_dfifo0 
+0x8c19 core_usb_dfifo1  
+0x8c1a core_usb_dfifo2 
+0x8c20 core_usb_ep_len
+0x8c26 core_usb_status		
+0x8c27 core_usb_fifo_empty
+0x8c28 core_usb_fifo_full
+
+
+4 rx_freq_offset
+2 tx_freq_offset
+
+/* bit difinitions */
+  4 whiteoff_bit
+  6 clksel_rc
+  5 clksel_dpll
+  4 clksel_xtal
+  5 adc_rccal
+  0 bpf_rccal
+  1 demod_clkoff
+
+(
+  7 cold_wake
+  3 gpio_latch
+  4 enable_retmem
+  0xef isogate_mask
+  0xe0 cs_mask
+)
+
+// misc ctrl
+(
+  0x01 otpd_start
+  0x02 spid_start
+  0x04 iicd_start
+  0x08 lock_otp
+  0x10 x_sethi
+  0x20 y_sethi
+  0x40 z_sethi
+  0x80 ccnt_start
+)
+// dma status bit
+(
+  0 otpd_crcok
+  1 otpd_done
+  2 spid_crcok
+  3 spid_done
+  4 iicd_crcok
+  5 iicd_done
+)
+
+0x8b uart_ctrl_default //BCSP
+0x81 uart_ctrl_h4 //H4
+0x81 uart_ctrl_normal
+0x91 uart_ctrl_5line
+0x81 uart_ctrl_57600
+2 uart_baud_len
+0x00 uartclk_crystal
+0x01 uartclk_dpll
+0x1a0 uart_baud_115200
+0xbb uart_baud_256000
+0x340 uart_baud_57600
+0x34 uart_baud_921600
+0x9c4 uart_baud_9600
+0x2dc6c00 uart_clk
+0x16E3600 uart_clk_24
+
+//core_clkoff
+(
+	0 CLOCK_OFF_AUTH_ROM
+	1 CLOCK_OFF_UC_ROM
+	2 CLOCK_OFF_DEBUG_UART
+	3 CLOCK_OFF_SCHED_RAM
+	4 CLOCK_OFF_TRANCE_FIFO
+	5 CLOCK_OFF_CORDIC
+	6 CLOCK_OFF_OTPD
+	7 CLOCK_OFF_I2C
+	8 CLICK_OFF_8051
+	9 CLOCK_OFF_KEYSCAN
+	0x0a CLOCK_OFF_USB
+	0x0b CLOCK_OFF_QDECODER
+	0x0c CLOCK_OFF_SPI
+	0x0d CLOCK_OFF_PWM
+	0x0e CLOCK_OFF_CODEC
+	0x0f CLOCK_OFF_UART
+)
+
+
+/*****************************************************************************/
+/* RCS HEADER -- DO NOT ERASE                                                */
+/* $Author: Administrator $                                                           */
+/* $Id: bt_rfcomm_format.upper,v 1.1 2009-09-28 04:06:17 Administrator Exp $ */
+/* Orisil Technology                                                      */
+/*****************************************************************************/
+
+/**********/
+/* memory */
+/**********/
+
+0x041c memRemoteRPNBitRate
+0x041d memRemotePRNDataBits
+0x041e memRemotePRNStopBit
+0x041f memRemotePRNParity
+0x0420 memRemotePRNFlowControl
+0x0421 memRemotePRNXon
+0x0422 memRemotePRNXoff
+0x0423 mem_mod2div_temp
+0x0426 mem_contw_temp
+0x0428 mem_attrib_list
+0x042a mem_current_adss
+0x042b mem_current_channel
+0x042c mem_current_frame_type
+0x042d mem_current_fcs
+0x042e mem_current_length
+0x0430 mem_rfcomm_uih_payload_ptr
+0x0432 mem_uih_cmd_type
+0x0433 mem_uih_length
+0x0435 mem_param_payload_ptr
+0x0437 mem_ms_param
+0x0438 mem_pn_credit_flow_type_info
+0x0439 mem_pn_priority
+0x043a mem_pn_acknowledg_timer
+0x043b mem_pn_max_retrans
+0x043c mem_rfcomm_send_adss
+0x043d mem_rfcomm_send_frame_type
+0x043e mem_rfcomm_send_fcs
+0x043f mem_rfcomm_send_offset
+
+
+
+(
+0 CREDIT_DISABLE
+1 CREDIT_ENABLE
+)
+
+
+/************************************************************************/
+  
+
+ 
+/************/
+/* constant */
+/************/
+
+/* RFCOMM state for Headset (memRFCOMM_State) */ 
+  (
+    0 RFCOMM_IDLE           /* before the responsor HS receive SABM            */
+    1 RFCOMM_W4_DLCI0_OPEN
+    2 RFCOMM_W4_DLCI0_CLOSE
+    3 RFCOMM_START_DLCI0    /* After respond SABM frame (DLCI=0)               */
+    4 RFCOMM_W4_DLCI_OPEN
+    5 RFCOMM_W4_DLCI_CLOSE
+    6 RFCOMM_DLCI_OPENED    
+   
+  )
+  
+/* RFCOMM timer constants   */
+  (
+    1000  RFCOMM_T1         /* Used by SABM and DISC frames,100*20ms = 20s     */     
+    1000  RFCOMM_T2         /* Used by commands send in UIH on DLCI0,          */
+    300   RFCOMM_T3_RINGON  /* 6s for ring fade time                           */
+  
+  )
+
+/* Command Type */
+  (
+    0x3F RSP_RX_SABM        /*responsor expect SABM from initiator             */
+    0x3F INI_TX_SABM
+	
+    0x73 RSP_TX_UA          /*responsor send out UA command                    */
+    0x73 UA_WFBIT_SET	    /* UA control field with F bit set                 */
+	
+    0xEF RSP_RX_UIH         /*responsor expect UIH from initiator              */
+
+    0xEF RSP_TX_UIH         /*responsor send UIH to initiator                  */
+     
+    0x1F RSP_TX_DM          /*responsor send DM to initiator                   */
+    0x1F DM_WFBIT_SET       /* DM control field with F bit set                 */
+    0x0F DM_WFBIT_CLEAR     /* DM control field with F bit clear               */
+
+    0x53 RSP_RX_DISC        /*responsor expect DISC from initiator             */
+    0x53 INI_TX_DISC	    /*initiator send DISC control type command         */
+     
+    0xFF RSP_RX_UIH_WDATA   /*UIH data with credit flow control info           */
+    
+    
+  )
+
+/* Multiplexor commands and responses frames */
+  (
+    0x83 PN_COMMAND           /* Bit 0 EA C/R Type = 000001         */
+    0x81 PN_RESPONSOR         /* Bit 0 EA C/R Type = 000001         */
+    
+    0xE3 MSC_COMMAND          /* Bit 0 EA C/R Type = 000111         */
+    0xE1 MSC_RESPONSOR
+ 
+    0x13 NSC_COMMAND          /* Bit 0 EA C/R Type = 001000         */
+    0x11 NSC_RESPONSOR        /* Bit 0 EA C/R Type = 001000         */
+
+    0x23 TEST_COMMAND         /* Bit 0 EA C/R Type = 000111         */
+    0x21 TEST_RESPONSOR 
+    
+    0x93 RPN_COMMAND          /* Bit 0 EA C/R Type = 001001         */
+    0x91 RPN_RESPONSOR 
+    
+    0x53 RLS_COMMAND          /* Bit 0 EA C/R Type = 001010         */
+    0x51 RLS_RESPONSOR 
+
+    0xA3 FCON_COMMAND         /* Bit 0 EA C/R Type = 000101         */
+    0xA1 FCON_RESPONSOR 
+    
+    0x63 FCOFF_COMMAND        /* Bit 0 EA C/R Type = 000110         */
+    0x61 FCOFF_RESPONSOR 
+    	
+    0x03 RLS_OVERRUN
+    0x05 RLS_PARITY_ERROR
+    0x09 RLS_FRAMING_ERROR
+  )
+
+/* memLocalCredit */
+  (
+    0x01 RFCOMM_CREDIT
+  )
+
+  (
+  	0x007f RFCOMM_MAX_FRAME_SIZE
+  )
+
+/* UIH received Data length */
+  (
+    0  LENGTH_ZERO
+    
+    6  LENGTH_OK
+    7  LENGTH_HOT
+    8  LENGTH_RING
+    9  LENGTH_ERROR
+    9  LENGTH_AGVOL_ONEBYTE
+    10 LENGTH_AGVOL_TWOBYTE
+    10 LENGTH_VOL_ONEBYTE
+    11 LENGTH_VOL_TWOBYTE
+    12 LENGTH_BRSF
+    13 LENGTH_PLUS_CIEV
+    15 LENGTH_INBANDRING
+    14 LENGTH_CIEV_CALL
+    17 LENGTH_CRING
+    20 LENGTH_BRSF_OK
+    24 LENGTH_CIND0
+    28 LENGTH_CIEV_TWO
+    32 LENGTH_CIND_OK
+    59 LENGTH_CIND_OK2
+    100 LENGTH_DISCARD
+  )
+  
+/************/
+/* flags    */
+/************/
+  
+/* memRFCOMM_L2CAP_Interface */
+  (
+    0 RFCOMM_TX_W4BUF_FLAG    /* Wait for Tx buffer empty flag */
+    1 RFCOMM_CLOSE_LINK_FLAG
+  )
+  
+
+    
+/* memRemoteMSC		*/
+  (
+    0 MSC_EA_BIT
+    1 MSC_FC_BIT
+    2 MSC_RTC_BIT
+    3 MSC_RTR_BIT
+    6 MSC_IC_BIT
+    7 MSC_DV_BIT
+  )
+
+/* memRemoteRLS         */
+  (
+    0x0C OVERRUN_ERROR
+    0x0A PARITY_ERROR
+    0x09 FRAMING_RERROR
+  )
+  
+/* memRemoteRPNBitRate  */
+  (
+    0x00 BITS2400
+    0x01 BITS4800
+    0x02 BITS7200
+    0x03 BITS9600
+    0x04 BITS19200
+    0x05 BITS38400
+    0x06 BITS57600
+    0x07 BITS115200
+    0x08 BITS230400
+  )
+  
+/* memRemotePRNDataBits	*/
+  (
+    0x00 DATABITS5
+    0x01 DATABITS6
+    0x02 DATABITS7
+    0x03 DATABITS8
+  )
+  
+/* memRemotePRNStopBit	*/
+  (
+    0    ONESTOP
+    1    ONEHALFSTOP
+  )
+  
+/* memRemotePRNParity   */
+  (
+    0    ODDPARITY
+    1    EVENPARITY
+    2    MARKPARITY
+    3    SPACEPARITY
+    
+    7    PARITY_ENABLE_BIT
+  )
+
+/* RPN bit mask(in)     */
+  (
+     0   BIT_RATE_MASK_BIT
+     1   DATA_BITS_MASK_BIT
+     2   STOP_BITS_MASK_BIT
+     3   PARITY_MASK_BIT
+     4   PARITY_TYPE_MASK_BIT
+     5   XON_CHAR_MASK_BIT
+     6   XOFF_CHAR_MASK_BIT
+  )
+  
+/* RPN bit mask(in) 2    */
+  (
+     0   XON_XOFF_INPUT_MASK_BIT
+     1   XON_XOFF_OUTPUT_MASK_BIT
+     2	 RTR_INPUT_MASK_BIT
+     3   RTR_OUTPUT_MASK_BIT
+     4   RTC_INPUT_MASK_BIT
+     5   RTC_OUTPUT_MASK_BIT
+
+  )
+
+/* memRFCOMM_Request	*/
+  (
+    0 SEND_MSC_CMD_REQ_FLAG
+    1 SEND_AT_CKPD_REQ_FLAG
+    2 SEND_RING_REQ_FLAG
+    3 SEND_SABM_CMD
+  )
+  
+/* memRFCOMM_Misc_Flag  */
+  (
+    0 MSC_CDM_ALREADY_SEND_FLAG
+    1 CREDIT_FLOW_USED_FLAG
+    2 DONT_EMBEDDED_CREDIT_FLAG 
+    3 MSC_EXCHANGE_DONE_FLAG
+    4 FLOW_CONTROL_FCOFF_BIT            /* set when receive FCoff, clear when FCon   */
+  )
+  
+/* memRemoteMSC		*/
+  (
+    1 FLOW_CONTROL_FC_BIT		/* received MSC FC bits                      */
+  
+  )
+/* Address filed        */
+  (
+    0 ADDR_EA_BIT
+    1 ADDR_CR_BIT
+    2 ADDR_D_BIT
+  )
+//should be same as descripted in SDP
+(
+    1 SPP_SLAVE_CHANNEL
+    7 OBEX_SERVER_CHANNEL
+    8 HF_SERVER_CHANNEL 
+    9 HS_SERVER_CHANNEL
+)
+/* memRFCOMM_Flag */
+(
+	0 USING_HF_PROFILE
+	1 USING_HS_PROFILE
+	2 USING_SPP_PROFILE
+)
+/*RFCOMM Frame Type*/
+(
+	0x3f RFCOMM_FRAME_TYPE_SABM
+	0x73 RFCOMM_FRAME_TYPE_UA
+	0xEF RFCOMM_FRAME_TYPE_UIH
+	0xFF RFCOMM_FRAME_TYPE_UIH_CREDITS
+	0x53 RFCOMM_FRAME_TYPE_DISCONN
+)
+/*RFCOMM UIH CMD TYPE*/
+(
+	0x41 UIH_PARAM_NEG_CMD
+	0x40 UIH_PARAM_NEG_RES
+	0x49 UIH_PARAM_CMD_REMOVE_PORT
+	0x71 UIH_MODEM_STATUS_CMD
+	0x70 UIH_MODEM_STATUS_RES
+)
+
+/*bits in rfcomm address*/
+(
+	0 RFCOMM_ADDRESS_EXT_LEN
+	1 RFCOMM_ADDRESS_CR
+	2 RFCOMM_ADDRESS_DERECTION
+
+
+)
+
+	(                                   
+	0 RFCOMM_CHANNEL_STATE_PN_CMD
+	1 RFCOMM_CHANNEL_STATE_PN_RES
+	2 RFCOMM_CHANNEL_STATE_SABM
+	3 RFCOMM_CHANNEL_STATE_UA
+	4 RFCOMM_CHANNEL_STATE_SND_MS_CMD
+	5 RFCOMM_CHANNEL_STATE_RCV_MS_CMD
+	6 RFCOMM_CHANNEL_STATE_SND_MS_RES
+	7 RFCOMM_CHANNEL_STATE_RCV_MS_RES
+	0xff RFCOMM_CHANNEL_SETUP_COMPLETE
+	) 
+
+	/*mem_rfcomm_send_more_pkt*/
+	(
+	1 MORE_PKT_MSC_CMD_HF
+	2 MORE_PKT_MSC_CMD_HS
+	3 MORE_PKT_MSC_CMD_SPP
+	4 MORE_PKT_MSC_CMD_OBEX
+	)
+
+	(
+	127 RFCOMM_MALLOC_SIZE
+	)
+0x0440 mem_sdp_mem_start
+0x0440 mem_uuid_search_pat
+0x0444 mem_sdp_continue_byte
+0x0446 mem_sdp_pduid
+0x0447 mem_sdp_transactionid
+0x0449 mem_sdp_attribute_maxbyte
+0x044b mem_sdp_record_maxcnt
+0x044d mem_sdp_error_code
+0x0455 mem_sdp_record_handle
+0x0459 mem_sdp_search_failed
+0x045a mem_sdp_LACAP_found
+0x045b mem_sdp_RFCOMM_found
+0x045c mem_handle_list
+0x0474 mem_handle_humber
+0x0475 mem_sdp_mem_end
+(
+0 AGORHS_SERVICE
+1 GENAUDIO_SERVICE
+2 HANDSFREE_SERVICE
+)
+(
+0 ATTRIBUTEID_0000
+1 ATTRIBUTEID_0001
+2 ATTRIBUTEID_0004
+3 ATTRIBUTEID_0009
+4 ATTRIBUTEID_0100
+5 ATTRIBUTEID_0302
+6 ATTRIBUTEID_0006
+7 ATTRIBUTEID_0311
+)
+/* mem_sdp_search_profile */
+(
+1	SDP_SS_HEADSET
+2  	SDP_SS_HANDSFREE
+)
+(
+0x06 sdp_pduid_serviceSearchAttrib
+)
+0x2600 sdp_max_amount
+767 SDP_MALLOC_SIZE
+0x6e sdp_tid_spp //any number
+
+ 
+
+0x0475 mem_rxbuf
+0x0486 mem_random_number
+0x0496 mem_round_key
+0x04a6 mem_kinit
+0x04b6 mem_input_store
+0x04c6 mem_x
+0x04d6 mem_y
+0x04e5 mem_y15
+0x04e6 mem_key_store
+0x04f7 mem_key_store_end
+0x04f8 memp_ar_key
+0x04fa memp_ar_input
+0x04fc mem_ar_hround
+0x0506 mem_ec_infinite
+0x0507 mem_ec_loopc
+0x0509 mem_aes_cmac_data_length
+0x050a memdat
+0x050a mem_ax
+0x0522 mem_ay
+0x053a mem_az
+0x0552 mem_bx
+0x056a mem_ax_256//32 bytes
+0x056a mem_by
+0x0582 mem_bz
+0x058a mem_ay_256// 32 bytes
+0x059a mem_cx
+0x05aa mem_az_256// 32 bytes
+0x05b2 mem_cy
+0x05c9 mem_cy5
+0x05ca mem_bx_256// 32 bytes
+0x05ca mem_cz
+0x05e2 mem_k
+0x05ea mem_by_256// 31 bytes
+0x05fa mem_align
+0x060a mem_bz_256//32 bytes
+0x060a mem_tmp1
+0x060a memahbak
+0x0622 mem_tmp5
+0x062a mem_cx_256//32 bytes
+0x062a memahsave
+0x063a mem_tmp2
+0x064a mem_cy_256// 32 bytes
+0x064a memahsave_end
+0x064a mem_addr_padding
+0x064b mem_addr_value/* 12 bytes     */ 
+0x0652 mem_tmp3
+0x0652 mem_t1
+0x0657 mem_addr_value_end
+0x065a mem_addr_iocap_end
+0x0669 mem_cy5_256// 1 byte
+0x066a mem_cz_256// 32 bytes
+0x066a mem_tmp0
+0x066a mem_t0
+0x0672 mem_tmp0a
+0x0682 mem_t2
+0x068a mem_k_256//32 bytes
+0x069a mem_t3
+0x06aa mem_tmp1_256//32 bytes
+0x06b2 mem_t7
+0x06ca mem_tmp5_256
+0x06ea mem_tmp2_256
+0x070a mem_tmp3_256
+0x070a mem_t1_256
+0x072a mem_tmp0_256
+0x072a mem_t0_256
+0x074a mem_t2_256
+0x076a mem_t3_256
+0x078a mem_t7_256
+0x07aa mem_p
+0x07c2 mem_a
+0x07da mem_b
+0x07f2 mem_gx
+0x080a mem_gy
+0x0822 memh0
+0x0842 mem_p_256
+0x0862 mem_a_256
+0x0882 mem_gx_256
+0x08a2 mem_gy_256
+0x08c2 mem_le_slat
+
+
+
+
+
+
+(
+6 QUEUE_ELE_COUNT
+10 QUEUE_ELE_LENGTH
+)
+
+(
+0 PAIR_UNKNOWN
+1 PAIR_ING
+2 PAIR_DONE
+)
+
+(
+0x18 ATT_WRITE_REQUEST_HANDLE
+)
+
+(
+0x13	HANDLE_VOLUM_UP_KEY	
+0x17	HANDLE_ENTER_KEY
+)
+	
+(
+0x010210 param_smp_key_dist1
+0x010010 param_smp_key_dist2
+)
+
+(
+0 INITATOR_LTK
+1 INITATOR_IRK
+2 INITATOR_CSRK
+)
+
+(
+//100ms
+0x00a0	FAST_ADV_INTERVAL_VALUE
+//200ms
+0x0140	SLOW_ADV_INTERVAL_VALUE
+)
+
+(
+0x01	GAP_ADTYPE_FLAGS
+0x02	GAP_ADTYPE_16BIT_MORE
+0x03	GAP_ADTYPE_16BIT_COMPLETE
+0x04	GAP_ADTYPE_32BIT_MORE
+0x05	GAP_ADTYPE_32BIT_COMPLETE
+0x06	GAP_ADTYPE_128BIT_MORE
+0x07	GAP_ADTYPE_128BIT_COMPLETE
+0x08	GAP_ADTYPE_LOCAL_NAME_SHORT
+0x09	GAP_ADTYPE_LOCAL_NAME_COMPLETE
+0x0a	GAP_ADTYPE_POWER_LEVEL
+0xff	GAP_ADTYPE_MANUFACTURER_SPECIFIC
+)
+
+(
+0 ATT_BIT_NOTIFICATION
+1 ATT_BIT_INDICATION
+)
+///////////////////////////////////////////////////////////////////////////////////////
+(
+13 MAX_SHUTER_KEY_NUM
+4  MAX_SHUTTER_LED_NUM
+0xFF INVALID_PIN_NUM
+)
+(
+0 KEY_DEFAULT
+1 kEY_1
+2 kEY_2
+3 KEY_3
+4 KEY_4
+)
+(
+0 HARD_SWITCH
+1 SOFT_SWITCH
+)
+(
+0 LED_OFF
+1 LED_ON
+2 LED_BLINK
+0xFF LED_INVALID
+)
+
+/*struct led_style*/
+(
+7 LED_STYLE_STRUCT_LEN
+0 LED_TYPE_OFFSET
+1 LED_PIN_OFFSET
+2 LED_ON_TIME_OFFSET
+4 LED_OFF_TIME_OFFSET
+6 LED_BLINK_COUNT_OFFSET
+)
+
+/*struct key_conf*/
+(
+2 KEY_CONF_STRUCT_LEN
+0 KEY_PIN_OFFSET
+1 KEY_STYLE_IND_OFFSET
+)
+
+(
+0 SHUTTER_POWER_UP
+1 SHUTTER_POWER_ON
+2 SHUTTER_POWER_OFF
+)
+
+(
+0xf00 EEP_LAP_ADDR
+)
+
+(
+0x33 PAIRED_DEVICE_TYPE_BT
+0x44 PAIRED_DEVICE_TYPE_BLE
+5 PAIRED_DEVICE_DEFAULT_LEN
+0x5a5a PAIRED_DEVICE_MAGIC
+)
+
+(
+0 FLAG_SHUTTER_DEFAULT
+1 FLAG_SHUTTER_IPHONEKEY_SEND
+2 FLAG_SHUTTER_ANDROIDKEY_SEND
+)
+
+(
+0 FLAG_SHUTTER_IPHONEKEY_PRESS
+1 FLAG_SHUTTER_ANDROIDKEY_PRESS
+)
+
+(
+1  FLAG_SHUTTER_HID_DISCONN_TIMEOUT
+5 FLAG_SHUTTER_CABLE_UNPLUG_TIMEOUT
+)
+
+(
+1 FLAG_SHUTTER_1KEY
+2 FLAG_SHUTTER_2KEY
+)
+
+(
+0 FLAG_SHUTTER_1KEY_SEND_NULL
+1 FLAG_SHUTTER_1KEY_SEND_STEP1
+2 FLAG_SHUTTER_1KEY_SEND_STEP2
+3 FLAG_SHUTTER_1KEY_SEND_STEP3
+4 FLAG_SHUTTER_1KEY_SEND_STEP4
+)
+
+
+//mem_shutter_find_type_value_flag
+(
+0X00 LE_FIND_TYPE_VALUE_HID_BIT
+0X01 LE_FIND_TYPE_VALUE_BATTERY_BIT
+0X02 LE_FIND_TYPE_VALUE_DEVICE_INFO_BIT
+0x03 LE_FIND_TYPE_VALUE_GATT_BIT
+)
+
+
+/* simple pairing page */
+
+0x08d2 mem_sp_state_start
+0x08d2 mem_sp_state
+0x08d3 mem_master_sp_state
+0x08d4 mem_sp_flag
+0x08d5 mem_master_sp_flag
+0x08d6 mem_sp_calc
+0x08d7 mem_sp_dh_ready
+0x08d8 mem_sp_localsm
+0x08d9 mem_pairing_auth
+0x08da mem_sp_flag_start
+0x08da mem_sp_local_key_send_count
+0x08db mem_sp_remote_key_recv_count
+0x08dc mem_sp_remote_key_invalid
+0x08dd mem_sp_dhkey_invalid
+0x08de mem_gkey
+0x08e2 mem_le_pubkey_remote_x_256
+0x08ea mem_sp_pubkey_remote
+0x08ea mem_sp_pubkey_remote_x
+0x0902 mem_sp_pubkey_remote_x_end
+0x0902 mem_le_pubkey_remote_y_256
+0x090a mem_sp_pubkey_remote_y
+0x0922 mem_le_dhkey_256
+0x092a mem_sp_dhkey
+0x0942 mem_sp_dhkey_end
+0x0942 mem_sp_random_local
+0x0952 mem_sp_random_local_end
+0x0952 mem_sp_random_remote
+0x0962 mem_sp_random_remote_end
+0x0962 memresult
+0x0962 mem_sp_calc_result
+0x0962 memh
+0x0966 memg
+0x096a memf
+0x096e meme
+0x0972 mem_sp_calc_result_high
+0x0972 memd
+0x0976 memc
+0x097a memb
+0x097e mema
+0x0982 mem_sp_check_result
+0x0992 mem_sp_confirm_remote
+0x09a2 mem_sp_prarm_stack
+
+/* simple pairing status flag */
+(
+  0x00   SP_FLAG_STANDBY
+  0x01   SP_FLAG_COMMIT
+  0x02   LE_SP_FLAG_COMMIT_256
+
+)
+
+/* simple pairing calc flag */
+(
+  0x00   SP_CALC_STANDBY
+  0x01   SP_CALC_PUBKEY
+  0x02   SP_CALC_DHKEY
+  0x03   SP_CALC_PUBKEY_256
+  0x04   SP_CALC_DHKEY_256
+)
+
+/* simple pairing state */
+(
+  0x00   SP_STAT_NULL
+  0x01   SP_STAT_KEY_RECV
+  0x02   SP_STAT_KEY_GENERATE
+  0x03   SP_STAT_KEY_SEND
+  0x04   SP_STAT_COMMIT_CALC
+  0x05   SP_STAT_COMMIT_SEND
+  0x06   SP_STAT_RANDOM_RECV
+  0x07   SP_STAT_RANDOM_SEND
+  0x08   SP_STAT_CONFIRM_RECV
+  0x09   SP_STAT_CONFIRM_CHECK
+  0x0A   SP_STAT_CONFIRM_CALC
+  0x0B   SP_STAT_CONFIRM_SEND
+  0x0C   SP_STAT_LINK_KEY_CALC
+  0x0F   SP_STAT_DONE
+  0x10   SP_STAT_FEATURE_EXT_SEND
+  0x11   SP_STAT_GKEY_CALC
+  /*simple pairing master only*/
+  0x12   SP_MASTER_STAT_START_SKIP
+  0x13   SP_MASTER_STAT_START_DONE
+  0x14   SP_STAT_COMMITMENT_COMPARE
+  0x15   SP_STATE_END
+)
+
+
+/* simple paring invalid flag */
+(
+  0x00   SP_KEY_INVALID
+  0x01   SP_KEY_VALID
+  0x03   SP_KEY_VALID_256
+
+)
+
+/* encapsulated defination for P-192 key */
+(
+  0x01  ENCAPSULATED_MAJOR_TYPE_P192
+  0x01  ENCAPSULATED_MINOR_TYPE_P192
+  0x30  ENCAPSULATED_LEN_P192
+)
+
+/* bluetooth 2.1 support flag */
+(
+  0x00  SIMPLE_PAIRING_ENABLE
+  0x01  ENCRYPTION_PAUSE_ENABLE
+  0x02  EXTENDED_INQUIRY_RESPOSE_ENABLE
+  0x03  SNIFF_SUBRATING_ENABLE
+)
+
+/*mem_sp_localsm*/
+(
+  0x00 DEFAULT_STATEMACHINE
+  0x01 LOCAL_STATEMACHINE
+)
+
+(
+ 0x00 DEFALT_PAIRING_AUTH
+ 0x01 PAIRING_AUTH
+)
+
+(
+1 SSP_MODE_SSP_PIN_FLAG
+2 SSP_MODE_PASSKEY_ENTRY_FLAG
+3 SSP_MODE_JUST_WORK_FLAG
+)
+
+(//ssp mode
+0x040003 SSP_MODE_JUST_WORK_IO_CAP_DATA
+0X040001 SSP_MODE_SSP_PIN_IO_CAP_DATA
+0X040002 SSP_MODE_PASSKEY_IO_CAP_DATA
+)
+
+(
+0x00 DISPLAY_ONLY
+0x01 DISPLAY_YESNO
+0x02 KEYBOARD_ONLY
+0x03 NO_INPUT_NO_OUTPUT
+)
+
+(
+7 FLAG_MODE_SSP_PIN_REVICEVE_COMPARISON_BIT
+6 FLAG_MODE_SSP_PIN_RECIEVE_DHKEY_BIT
+0 FLAG_MODE_SSP_PIN_COMPARISON_RESULT_BIT
+)
+(
+1 FLAG_PAIRING_STATE_PAIRING
+0 FLAG_PAIRING_STATE_NOT_PAIRING
+)
+
+  
+/*****************************************************************************/
+/* RCS HEADER -- DO NOT ERASE                                                */
+/* $Author: Administrator $                                                           */
+/* $Id: bt_ui_format.upper,v 1.1 2009-09-28 04:06:17 Administrator Exp $     */
+/************************************************************************/
+
+
+	/* ========= memory ============== */
+0x09b2 mem_UI_data_txbuff_length
+0x09b4 mem_ipc_skip_continue_proc
+0x09b5 mem_ui_timer_temp//length 4
+0x09b5 mem_ipc_rega_temp
+
+/************/
+/* constant */
+/************/
+
+//mem_ui_state_map
+(
+0 UI_STATE_BT_CONNECTED
+1 UI_STATE_BT_SETUP_COMPLETE
+2 UI_STATE_BT_HID_CONN
+3 UI_STATE_BT_HID_HANDSHAKE
+4 UI_STATE_BT_SPP_CONN
+5 UI_STATE_BT_SNIFF
+6 UI_STATE_BT_DISCOVERY
+7 UI_STATE_BT_RECONNECT
+8 UI_STATE_BT_SLAVE_ROLE
+9 UI_STATE_BLE_CONNECTED
+10 UI_STATE_BLE_WRITE_RCV
+11 UI_STATE_BLE_ADV
+12 UI_STATE_BTN_DOWN
+13 UI_STATE_LED_BLINK
+14 UI_STATE_LED_ON
+)
+(
+0xFF LED_FLASH_INFINITE
+)
+
+(
+1 UI_STATE_SPP_NL_AUTO_DISCOVER
+
+)
+
+/* UI state for Headset (memui_HS_State) */ 
+   (
+    0 UI_HEADSET_DISCONNECT
+    1 UI_HEADSET_IDLE                   /* before the responsor HS receive SABM      */
+    2 UI_HEADSET_W4CONNECT
+    3 UI_HEADSET_RINGING
+    4 UI_HEADSET_CONNECTED
+    5 UI_HEADSET_PARING
+  )
+/* memui_BB_State */
+(
+  0 UI_BB_OFF
+  1 UI_BB_IDLE
+  2 UI_BB_DISCOVERY
+  3 UI_BB_CONNECTED_ACTIVE_NO_SCO
+  4 UI_BB_CONNECTED_ACTIVE_WITH_SCO
+  5 UI_BB_CONNECTED_ACTIVE_WAIT_SNIFF
+  6 UI_BB_CONNECTED_SNIFF
+  7 UI_BB_RECONNECT
+  8 UI_BB_CONNECTED_SNIFF_WITH_SCO
+)
+
+/************/
+/* flags    */
+/************/
+  
+/* memui_Misc_Flags */
+  (
+    5 NO_IDLE_TURN_OFF
+    7 ANSWER_RING_FLAG               /* 1 Answer,0 no*/
+  )
+
+/* mem_UI_SCH_Interface */
+  (
+    0  UI_HS_PAIRING 
+    2  UI_REQ_CLOSE_RFCOMM
+    3  UI_LINK_LOST
+    4  UI_REQ_OPEN_SCO
+    6  UI_REQ_CLOSE_SCO
+  )
+  
+/* memui_PassOverKey */
+  (
+    0  ANSWER_RING_BIT
+    0  AG_SEND_RING_BIT
+    1  VOL_UP_BIT
+    2  VOL_DOWN_BIT
+    3  INI_CALL_BIT
+    4  DAIL_LAST_CALL
+    5  END_CALL_BIT
+    6  NOKIA_VOICE_ACTIVE 
+    7  REJECT_CALL_BIT
+  )
+  
+/* memui_reconnect_mode */
+(
+  0 NO_RECONNECTION
+  1 RECONNECT_HID
+  2 RECONNECT_HF
+  3 RECONNECT_HS
+  4 RECONNECT_HID_HF
+  5 RECONNECT_HID_HS
+)
+/* memui_Commands */
+(
+0 BT_CMD_STANDBY
+1 BT_CMD_START_DISCOVERY
+2 BT_CMD_STOP_DISCOVERY
+3 BT_CMD_RECONNECT
+4 BT_CMD_DISCONNECT
+5 BT_CMD_ENTER_SNIFF
+6 BT_CMD_EXIT_SNIFF
+7 BT_CMD_ENTER_SNIFF_SUBRATING
+8 BT_CMD_EXIT_SNIFF_SUBRATING
+9 BT_CMD_SNIFF_TEST
+10 BT_CMD_SET_PIN_CODE
+11 BT_CMD_START_INQUIRY
+12 BT_CMD_STOP_INQUIRY
+13 BT_CMD_START_ADV
+14 BT_CMD_STOP_ADV
+15 BT_CMD_START_DIRECT_ADV
+16 BT_CMD_STOP_DIRECT_ADV
+17 BT_CMD_LE_DISCONNECT
+18 BT_CMD_LE_UPDATE_CONN
+19 BT_CMD_LED_OFF
+20 BT_CMD_LED_ON
+21 BT_CMD_LED_BLINK
+22 BT_CMD_LE_START_CONN
+23 BT_CMD_LE_START_SCAN
+24 BT_CMD_LE_STOP_SCAN
+25 BT_CMD_ENTER_HIBERNATE
+27 BT_CMD_LE_SMP_SECURITY_REQUEST
+28 BT_CMD_LE_START_WRITE
+29 BT_CMD_ROLE_SWITCH
+30 BT_CMD_BB_RECONN_CANCEL
+31 BT_CMD_STORE_RECONN_INFO_LE
+32 BT_CMD_STORE_RECONN_INFO_BT
+33 BT_CMD_DHKEY_NOT_ACCEPT
+34 BT_CMD_UPDATE_SUPERVISION_TO
+35 BT_CMD_START_24G
+36 BT_CMD_STOP_24G
+37 BT_CMD_PAIR_24G
+38 BT_CMD_TEST_MODE
+39 BT_CMD_START_ADV_RECONN
+40 BT_CMD_AUTO_PAIR_24G
+)
+
+(
+0x00 BT_EVT_NULL
+0x01 BT_EVT_BB_CONNECTED
+0x02 BT_EVT_BB_DISCONNECTED
+0x03 BT_EVT_RECONN_STARTED
+0x04 BT_EVT_RECONN_FAILED
+0x05 BT_EVT_SETUP_COMPLETE
+0x06 BT_EVT_HID_CONNECTED
+0x07 BT_EVT_HID_DISCONNECTED
+0x08 BT_EVT_SPP_CONNECTED
+0x09 BT_EVT_SPP_DISCONNECTED
+0x0A BT_EVT_PINCODE_REQ
+0x0B BT_EVT_ENTER_SNIFF
+0x0C BT_EVT_EXIT_SNIFF
+0x0D BT_EVT_ENTER_SNIFF_SUB
+0x0E BT_EVT_EXIT_SNIFF_SUB
+0x0F BT_EVT_DISCOVERY_STOPED
+0x10 BT_EVT_BUTTON_LONG_PRESSED
+0x12 BT_EVT_HID_HANDSHAKE
+0X13 BT_EVT_RECONN_PAGE_TIMEOUT
+0x14 BT_EVT_LE_CONNECTED
+0X15 BT_EVT_LE_DISCONNECTED
+0x16 BT_EVT_ML2CAP_CONN_REFUSED
+0x17 BT_EVT_BUTTON_ENTER_HIBERNATE
+0x18 BT_EVT_LINKKEY_GENERATE
+0x19 BT_EVT_SWITCH_NOT_ACCEPT
+0x20 BT_EVT_SWITCH_ACCEPT
+0x21 BT_EVT_SNIFF_NOT_ACCEPT
+0x22 BT_EVT_SNIFF_ACCEPT
+0x23 BT_EVT_UNSNIFF_ACCEPT
+0x24 BT_EVT_UNSNIFF_NOT_ACCEPT
+0x25 BT_EVT_BUTTON_ADJUST_DPI
+0x26 BT_EVT_SEND_UNSNIFF_ACCEPT
+0x27 BT_EVT_VIRTUAL_CABLE_UNPLUG
+0x28 BT_EVT_LE_WRITE_REQUEST
+0x29 BT_EVT_LE_ENC_INFO
+0x2a BT_EVT_SWITCH_FAIL_MASTER
+0x2b BT_EVT_SWITCH_SUCCESS_MASTER
+0x2c BT_EVT_BUTTON_DOWN
+0x2d BT_EVT_BUTTON_UP
+0x2e BT_EVT_REMOTE_UNSNIFF
+0x2f BT_EVT_RESET
+0x30 BT_EVT_LE_PAIRING_FAIL
+0x31 BT_EVT_LE_PAIRING_SUCCESS
+0x32 BT_EVT_LE_START_ENC
+0x33 BT_EVT_LE_PAUSE_ENC
+0x34 BT_EVT_LE_TK_GENERATE
+0x35 BT_EVT_BT_GKEY_GENERATE
+0x36 BT_EVT_BT_GET_PASSKEY
+0x37 BT_EVT_BT_PAIRING_FAIL
+0x38 BT_EVT_BT_PAIRING_SUCCESS
+0x39 BT_EVT_24G_PAIRING_COMPLETE
+0x3a BT_EVT_24G_ATTEMPT_SUCCESS
+0x3b BT_EVT_24G_ATTEMPT_FAIL
+0x3c BT_EVT_WAKEUP
+0x3d BT_EVT_HIBERNATE_WAKE
+0x3e BT_EVT_CLEAR_LINKKEY
+0x3f BT_EVT_24G_CHEAK_DONGLE_EXIST
+0x40 BT_EVT_LE_NOTIFY_ENABLE
+
+0x50 BT_EVT_TIMER_INIT
+0xF0 BT_EVT_TIMER_MASK
+0x51 BT_EVT_TIMER_100MS
+0x52 BT_EVT_TIMER_200MS
+0x53 BT_EVT_TIMER_300MS
+0x54 BT_EVT_TIMER_400MS
+0x55 BT_EVT_TIMER_500MS
+0x56 BT_EVT_TIMER_600MS
+0x57 BT_EVT_TIMER_700MS
+0x58 BT_EVT_TIMER_800MS
+0x59 BT_EVT_TIMER_900MS
+0x5A BT_EVT_TIMER_1KMS
+0x5B BT_EVT_TIMER_1K1MS
+0x5C BT_EVT_TIMER_1K2MS
+0x5D BT_EVT_TIMER_1K3MS
+0x5E BT_EVT_TIMER_1K4MS
+0x5F BT_EVT_TIMER_1K5MS
+)
+//switch
+(
+0 OFF
+1 ON
+)
+/* memui_mem_lock */
+(
+    0 MEM_UNLOCK
+    1 MEM_LOCK
+)
+/* memui_flag0 */
+(
+    0 UI_USER_DATA_FLAG
+    1 UI_WII_WAITING_SLEEP
+    2 UI_KEYBOARD_SNIFF_SKIP
+)
+/* mem_master_type */
+(
+    0 MTYPE_HID_DEFAULT
+    1 MTYPE_HID_SSP
+    2 MTYPE_SPP
+)
+
+	(	
+	0x01 RECIEVE_SDP_CONN_RES
+	0x02 RECIEVE_SDP_CFG_REQ
+	0x03 RECIEVE_SDP_CFG_RES
+	0x04 RECIEVE_RFCOMM_CONN_RES
+	0x05 RECIEVE_RFCOMM_CFG_REQ
+	0x06 RECIEVE_RFCOMM_CFG_RES
+	0x07 RECIEVE_HID_CTRL_CONN_RES
+	0x08 RECIEVE_HID_CTRL_CFG_REQ
+	0x09 RECIEVE_HID_CTRL_CFG_RES
+	0x0A RECIEVE_HID_INT_CONN_RES
+	0x0B RECIEVE_HID_INT_CFG_REQ
+	0x0C RECIEVE_HID_INT_CFG_RES
+	0x0D RECIEVE_AVCTP_CONN_RES
+	0x0E RECIEVE_AVCTP_CFG_REQ
+	0x0F RECIEVE_AVCTP_CFG_RES
+	0x10 RECIEVE_AVDTP_SIGNAL_CONN_RES
+	0x11 RECIEVE_AVDTP_SIGNAL_CFG_REQ
+	0x12 RECIEVE_AVDTP_SIGNAL_CFG_RES
+	0x13 RECIEVE_AVDTP_MEDIA_CONN_RES
+	0x14 RECIEVE_AVDTP_MEDIA_CFG_REQ
+	0x15 RECIEVE_AVDTP_MEDIA_CFG_RES
+	0x16 RECIEVE_SS_REASULT_HS                  
+	0x17 RECIEVE_SS_REASULT_HF                  
+	0x18 RECIEVE_SS_REASULT_AVTARG		          
+	0x19 RECIEVE_SS_REASULT_OBEX		            
+	0x1A RECIEVE_DLCI0_UA
+	0x1B RECIEVE_HS_PARAM_NEG_RES
+	0x1C RECIEVE_HS_UA
+	0x1D RECIEVE_HS_MODEM_STATUS_RES
+	0x1E RECIEVE_HS_MODEm_STATUS_CMD
+	0x1F RECIEVE_HF_PARAM_NEG_RES   
+	0x20 RECIEVE_HF_UA              
+	0x21 RECIEVE_HF_MODEM_STATUS_RES
+	0x22 RECIEVE_HF_MODEm_STATUS_CMD 
+	0x23 RECIEVE_OBEX_PARAM_NEG_RES     
+	0x24 RECIEVE_OBEX_UA              
+	0x25 RECIEVE_OBEX_MODEM_STATUS_RES
+	0x26 RECIEVE_OBEX_MODEm_STATUS_CMD    
+	0x27 RECIEVE_SPP_PARAM_NEG_RES   
+	0x28 RECIEVE_SPP_UA              
+	0x29 RECIEVE_SPP_MODEM_STATUS_RES
+	0x2A RECIEVE_SPP_MODEm_STATUS_CMD
+	0x2b RECIEVE_SDP_DISCONN_RES
+	)
+
+
+
+	(
+	0 UPPERSM_RP_IDLE
+	1 UPPERSM_RP_SDP_CONN
+	2 UPPERSM_RP_SDP_CONN_WAIT
+	3 UPPERSM_RP_SDP_CFG
+	4 UPPERSM_RP_SDP_CFG_WAIT
+	5 UPPERSM_RP_SS_AVTARG
+	6 UPPERSM_RP_SS_AVTARG_WAIT
+	7 UPPERSM_RP_SS_OBEX
+	8 UPPERSM_RP_SS_OBEX_WAIT
+	9 UPPERSM_RP_SDP_DISCONN
+	10 UPPERSM_RP_SDP_DISCONN_WAIT
+	11 UPPERSM_RP_AVDTP_CONN_WAIT
+	12 UPPERSM_RP_AVCTP_CONN
+	13 UPPERSM_RP_AVCTP_CONN_WAIT
+	14 UPPERSM_RP_AVCTP_CFG
+	15 UPPERSM_RP_AVCTP_CFG_WAIT
+	16 UPPERSM_RP_OBEX_CMD_PN
+	17 UPPERSM_RP_OBEX_CMD_PN_WAIT
+	18 UPPERSM_RP_OBEX_SABM
+	19 UPPERSM_RP_OBEX_SABM_WAIT
+	20 UPPERSM_RP_OBEX_CMD_MS
+	21 UPPERSM_RP_OBEX_CMD_MS_WAIT
+	)
+	(		/*mem_upper_sm_reconn*/
+	0 UPPERSM_RECONN_IDLE		
+	1 UPPERSM_RECONN_SDP_CONN		
+	2 UPPERSM_RECONN_SDP_CONN_WAIT		
+	3 UPPERSM_RECONN_SDP_CFG		
+	4 UPPERSM_RECONN_SDP_CFG_WAIT		
+	5 UPPERSM_RECONN_SS_HS
+	6 UPPERSM_RECONN_SS_HS_WAIT
+	7 UPPERSM_RECONN_SS_HF
+	8 UPPERSM_RECONN_SS_HF_WAIT
+	9 UPPERSM_RECONN_SS_AVTARG		
+	10 UPPERSM_RECONN_SS_AVTARG_WAIT		    
+	11 UPPERSM_RECONN_SS_OBEX		            
+	12 UPPERSM_RECONN_SS_OBEX_WAIT		      
+	13 UPPERSM_RECONN_SDP_DISCONN		        
+	14 UPPERSM_RECONN_SDP_DISCONN_WAIT      
+	15 UPPERSM_RECONN_HID_CTRL_CONN		      
+	16 UPPERSM_RECONN_HID_CTRL_CONN_WAIT		
+	17 UPPERSM_RECONN_HID_CTRL_CFG		      
+	18 UPPERSM_RECONN_HID_CTRL_CFG_WAIT     
+	19 UPPERSM_RECONN_HID_INT_CONN		      
+	20 UPPERSM_RECONN_HID_INT_CONN_WAIT		  
+	21 UPPERSM_RECONN_HID_INT_CFG		        
+	22 UPPERSM_RECONN_HID_INT_CFG_WAIT      
+	23 UPPERSM_RECONN_RFCOMM_CONN		        
+	24 UPPERSM_RECONN_RFCOMM_CONN_WAIT		  
+	25 UPPERSM_RECONN_RFCOMM_CFG		        
+	26 UPPERSM_RECONN_RFCOMM_CFG_WAIT       
+	27 UPPERSM_RECONN_RFCOMM_SABM		        
+	28 UPPERSM_RECONN_RFCOMM_SABM_WAIT		  
+	29 UPPERSM_RECONN_SPP_CMD_PN		        
+	30 UPPERSM_RECONN_SPP_CMD_PN_WAIT		    
+	31 UPPERSM_RECONN_SPP_SABM		          
+	32 UPPERSM_RECONN_SPP_SABM_WAIT		      
+	33 UPPERSM_RECONN_SPP_CMD_MS		        
+	34 UPPERSM_RECONN_SPP_CMD_MS_WAIT       
+	35 UPPERSM_RECONN_HF_CMD_PN		          
+	36 UPPERSM_RECONN_HF_CMD_PN_WAIT		    
+	37 UPPERSM_RECONN_HF_SABM		            
+	38 UPPERSM_RECONN_HF_SABM_WAIT		      
+	39 UPPERSM_RECONN_HF_CMD_MS		          
+	40 UPPERSM_RECONN_HF_CMD_MS_WAIT        
+	41 UPPERSM_RECONN_AVDTPs_CONN		        
+	42 UPPERSM_RECONN_AVDTPs_CONN_WAIT		  
+	43 UPPERSM_RECONN_AVDTPs_CFG		        
+	44 UPPERSM_RECONN_AVDTPs_CFG_WAIT       
+	45 UPPERSM_RECONN_AVDTPm_CONN		        
+	46 UPPERSM_RECONN_AVDTPm_CONN_WAIT		  
+	47 UPPERSM_RECONN_AVDTPm_CFG		        
+	48 UPPERSM_RECONN_AVDTPm_CFG_WAIT       
+	49 UPPERSM_RECONN_AVCTP_CONN		        
+	50 UPPERSM_RECONN_AVCTP_CONN_WAIT		    
+	51 UPPERSM_RECONN_AVCTP_CFG		          
+	52 UPPERSM_RECONN_AVCTP_CFG_WAIT		    
+	53 UPPERSM_RECONN_OBEX_CMD_PN		        
+	54 UPPERSM_RECONN_OBEX_CMD_PN_WAIT		  
+	55 UPPERSM_RECONN_OBEX_SABM		          
+	56 UPPERSM_RECONN_OBEX_SABM_WAIT		    
+	57 UPPERSM_RECONN_OBEX_CMD_MS		        
+	58 UPPERSM_RECONN_OBEX_CMD_MS_WAIT     
+	59 UPPERSM_RECONN_SS_SPP
+	60 UPPERSM_RECONN_SS_SPP_WAIT
+	)
+	(/*mem_UI_profile_supported*/
+	0 support_HID
+	1 support_A2DP
+	2 support_AVRCP
+	3 support_HF
+	4 support_HS
+	5 support_PBAP
+	6 support_SPP
+	)
+	/*mem_upper_sm_ss*/
+	(
+	0 UPPERSM_SS_HS
+	1 UPPERSM_SS_HF
+	2 UPPERSM_SS_AVTARG
+	3 UPPERSM_SS_OBEX
+	)
+
+	(
+	160 UI_HUNDRED_MILLISECOND_TIME
+	0XFF UI_BUTTON_GPIO_DISABLE
+	)
+	(
+	0x01 UI_BB_INCONNECT
+	0x10 UI_BB_DISCONNECT
+	)
+(
+0x00 UI_BUTTON_STATE_DOWN
+0x01 UI_BUTTON_STATE_UP
+)
+
+//mem_ipc_skip_continue_proc
+(
+	0 IPC_CONTINUE_PROCESS
+	1 IPC_SKIP_CONTINUE_PROCESS
+)
+
+
+//C51 synchronous task
+(
+3 START_C51_CORE
+)
+
+
+//bt mode device number
+(
+0X01 MODE_BT_DEVICE1
+0X02 MODE_BT_DEVICE2
+0X03 MODE_BT_DEVICE3
+0X04 MODE_24G_DEVICE
+)
+
+//mem_24g_rx_packet_flag
+(
+0 FLAG_24G_NOT_RX_PACKET
+1 FLAG_24G_RX_PACKET
+)
+
+//mem_24g_pairing_sm
+(
+0 STATE_24G_PAIRING_NULL
+1 STATE_24G_PAIRING_1
+2 STATE_24G_PAIRING_2
+3 STATE_24G_PAIRING_3
+0X11 STATE_24G_PAIRING_1_WAITING_ACK
+0X12 STATE_24G_PAIRING_2_WAITING_ACK
+0X13 STATE_24G_PAIRING_3_WAITING_ACK
+0XFF STATE_24G_PAIRING_SUCCESS
+)
+
+(
+0x01 ADV_FLAG_LIMITED_DISCOVERABLE
+0x04 ADV_FLAG_BREDR_NOT_SUPPORTED
+)
+
+(
+0 POWER_ON
+1 WORK_PAIRED
+2 WORK_SEARCH
+0 INIT_CLEAR
+)
+
+(
+1 NEW_QUEUE_ELE_COUNT
+32 NEW_QUEUE_ELE_LENGTH
+
+0x4f50 p_mem_hci_log
+)
+
+(
+7 RSSI_BUF_LEN
+0x77 RSSI_DIS_MIN_24G
+0x82 RSSI_DIS_MAX_24G
+
+0x75 RSSI_DIS_MIN_BLE
+0x80 RSSI_DIS_MAX_BLE
+)
+
+(
+0x60 BLE_FAST_CONN_CHARACTER_HANDLE
+)
+
+/**
+*  @file:bt_utility_format.upper
+*  @author: lei.zhu
+*  utility header file. inlcude timer
+*  Copyright:  (C)Hanlynn Technology    
+*/
+
+0x09b9 mem_hold_contr
+0x09bb mem_hold_contw
+0x09bd mem_fifo_temp
+0x09be mem_pdatatemp
+0x09c6 mem_temp//8 bytes
+0x09ce mem_timeup// 4 bytes
+0x09d2 mem_rega//4 bytes
+0x09d6 mem_regb//4 bytes
+0x09da mem_regc//3 bytes
+0x09dd mem_contr//2 bytes
+0x09df mem_contw//2 bytes
+0x09e1 mem_le_data_len_temp//1byte
+0x09e1 mem_tx_fifo_map_temp
+0x09e1 mem_rpn_dlci//1byte
+0x09e1 mem_event_cmd_response_content//2byte
+0x09e1 mem_le_prand//16byte
+0x09e1 mem_AES_CMAC_k//16 bytes
+0x09e1 mem_regext_index//1 bytes
+0x09e1 mem_temp_block0
+0x09e2 mem_le_data_temp//15bytes
+0x09e2 mem_temp_block1
+0x09f1 mem_le_aes_128//16byte
+0x09f1 mem_regext//64 bytes
+0x09f1 mem_AES_CMAC_k1//16 bytes
+0x09f1 mem_temp_block2
+0x0a01 mem_AES_CMAC_k2//16 bytes
+0x0a01 mem_temp_block3
+0x0a11 mem_AES_CMAC_temp// 16 bytes
+0x0a11 mem_temp_block4
+0x0a21 mem_AES_CMAC_M_last// 16 bytes
+0x0a21 mem_temp_block5
+0x0a31 mem_le_mackey//16 bytes
+0x0a31 mem_temp_block6
+0x0a41 mem_temp_prepare_write_request
+
+
+(
+/*mem_util_timer_flag0_7*/
+    0   UTIL_TIMER_0_USED
+    1   UTIL_TIMER_1_USED
+    2   UTIL_TIMER_2_USED
+    3   UTIL_TIMER_3_USED
+    4   UTIL_TIMER_4_USED
+    5   UTIL_TIMER_5_USED
+    6   UTIL_TIMER_6_USED
+    7   UTIL_TIMER_7_USED
+/*mem_util_timer_flag8_15*/
+    0   UTIL_TIMER_8_USED
+    1   UTIL_TIMER_9_USED
+    2   UTIL_TIMER_10_USED
+    3   UTIL_TIMER_11_USED
+    4   UTIL_TIMER_12_USED
+    5   UTIL_TIMER_13_USED
+    6   UTIL_TIMER_14_USED
+    7   UTIL_TIMER_15_USED
+)
+
+//util fifo param
+(
+
+8 UTIL_FIFO_LEN
+-1 UTIL_FIFO_OFFSET
+)
+
+0x0b09 mem_kb_map2_temp_start
+0x0b09 mem_kb_map2_vk
+0x0b0c mem_kb_current_vk
+0x0b0f mem_kb_vk_offset
+0x0b10 mem_kb_vk_processed_cnt
+0x0b11 mem_kb_map2_current_cell_ptr
+0x0b13 mem_kb_device_button
+0x0b14 mem_table_temp0
+0x0b1c mem_table_temp1
+0x0b24 mem_kb_map2_temp_end
+0x0b24 mem_check_count
+0x0b25 mem_store_key_count
+0x0b26 mem_kb_gpio_val
+0x0b2a mem_c51_flag
+0x0b2b mem_c51_lmp_lock
+0x0b2c mem_lmp_bb_disconnect_reason
+
+/************************************************************************/
+/* RCS HEADER -- DO NOT ERASE                                           */
+/* $Author: Administrator $                                                     */
+/* $Id: bt_var.osi,v 1.1 2009-09-28 04:06:18 Administrator Exp $   */
+/* Orisil Technology                                                 */
+/************************************************************************/
+
+
+/* packet types */
+(
+  0x02 FHS_PACKET 
+  0x03 DM1_PACKET 
+  0x03 DM1_LMP_PACKET 
+  0x04 DH1_PACKET 
+  0x05 HV1_PACKET 
+  0x06 HV2_PACKET 
+  0x07 HV3_PACKET 
+  0x08 DV_PACKET 
+  0x09 AUX1_PACKET 
+  0x0a DM3_PACKET 
+  0x0b DH3_PACKET 
+  0x0e DM5_PACKET 
+  0x0f DH5_PACKET 
+)
+
+
+/* mem_lmp_respond */
+(
+  0 RESPOND_TO_ALL
+  1 PASS_EVERYTHING
+  2 PASS_ONLY_UNKNOWNS
+  3 RESPOND_TO_LMPS
+)
+/* SCO algorithm defines */
+(
+  0 ULAW
+  1 ALAW
+  2 CVSD
+)
+/* encryption modes */
+(
+  0 NO_ENCRYPTION
+  1 PT_PT_ENCRYPTION
+  2 PT_BROADCAST_ENCRYPTION
+)
+
+/* bits used in mem_lmp_state1 variable */
+(
+  0 LMP_STATE_DETACH
+  1 LMP_STATE_HOLD
+  2 LMP_STATE_SNIFF
+  3 LMP_STATE_PARK
+  4 LMP_STATE_WAIT_SCO_CREATE
+  5 LMP_STATE_WAIT_SCO_KILL
+  6 LMP_STATE_SCO3
+  7 LMP_STATE_WAIT_SCO_START
+)
+/* mem_lmp_state2 */
+(
+  0 LMP_WAIT_FOR_SNIFF_ACCEPT
+  1 LMP_WAIT_FOR_PARK_ACCEPT
+  2 LMP_SEND_UNPARK_ACCEPTED
+  3 LMP_SEND_ENCRYPTION_START
+  4 LMP_SEND_ENCRYPTION_STOP
+  5 MESSAGE_QUEUE
+  7 LMP_STATE_WAIT_BEACON
+)
+/* mem_lmp_state3 */
+(
+ 0 INQUIRY_STATE_CHECK
+ 1 HOST_DELAY_MESSAGE
+ 2 VARIABLE_DELAY
+ 3 TEST_MODE_START_LOOPBACK
+ 4 TEST_MODE_START_PATTERN
+ 5 PARSE_TEST_CONTROL_MESSAGE
+ 6 H_AUTH_SEND_COMB_KEY
+)
+/* mem_rx_status */
+(
+  0 FROM_MASTER
+)
+/* mem_ms_flag */
+(
+  0 MS_RECEIVE_SWITCH_REQ
+  1 MS_SEND_SETUP_COMPLATE
+)
+/* mem_conn_sm */
+(
+  0 CONN_SM_STANDBY
+  1 CONN_SM_WAIT_PAGE
+  2 CONN_SM_SEND_FEATURES
+  3 CONN_SM_WAIT_FEATURES_RES
+  4 CONN_SM_SEND_CONN_REQ
+  5 CONN_SM_WAIT_CONN_ACCEPT
+  6 CONN_SM_AUTH_PAIR
+  7 CONN_SM_AUTH_PAIR_WAIT
+  8 CONN_SM_WAIT_MUTAL_AUTH
+  9 CONN_SM_ENCRYPT
+  0xa CONN_SM_ENCRYPT_WAIT
+  0xb CONN_SM_ENCRYPT_WAIT_CLEAR
+  0xc CONN_SM_SEND_SETUP_COMPLETE
+  0xd CONN_SM_WAIT_SETUP_COMPLETE 
+  0xe CONN_SM_SEND_SWITCH
+  0xf CONN_SM_DETACH_DELAY
+  0x10 CONN_SM_WAIT_SWITCH_AFTER_HOST_CONNECTION
+  0x11 CONN_SM_DELAY_RESTART_CONNECTION
+  0x12 CONN_SM_SEND_VERSION
+  0X13 CONN_SM_WAIT_VERSION
+  0x14 CONN_SM_SEND_FEATURES_EXT
+  0x15 CONN_SM_WAIT_FEATURES_EXT
+  0x16 CONN_SM_PAIRING
+  0x17 CONN_SM_AUTH
+  0x18 CONN_SM_PAIRING_WAIT
+  0x19 CONN_SM_AUTH_WAIT
+  0x1a CONN_SM_DONE
+  0x1b CONN_SM_WAIT_DONE
+)
+
+/* btStateConn1 */
+(
+  0 CONN_STANDBY
+  1 CONN_MASTER_SEND_CONN_REQ
+  2 CONN_MASTER_WAIT_FOR_CONN_ACCEPTED
+  3 CONN_MASTER_AUTH
+  4 CONN_MASTER_WAIT_FOR_FEATURES
+  5 CONN_MASTER_WAIT_FOR_SETUP_COMPLETE
+  6 CONN_MASTER_WAIT_FOR_MAX_SLOT
+  7 CONN_SLAVE_CONN_REQUESTED
+  8 CONN_SLAVE_WAIT_FOR_SETUP_COMPLETE
+  9 CONN_SLAVE_AUTH
+  10 CONN_USING_HOST_OPCODE
+  11 CONN_SLAVE_AUTH_WAIT
+  12 CONN_SLAVE_ENCRYPT_WAIT
+)
+
+/* mem_lmp_conn_state */
+(
+  0 RECEIVED_CONN_REQ
+  1 SENT_CONN_REQ
+  2 RECEIVED_SETUP_COMPLETE
+  3 SENT_SETUP_COMPLETE
+  4 HOST_CONNECTION_MADE
+  6 INIT_COMPLETE
+  7 SNIFF_NEGOTIATE
+)
+/* btStateAuth1 */
+(
+  0 WAIT_FOR_KINIT
+  1 WAIT_FOR_LKA
+  2 WAIT_FOR_LKB
+  3 WAIT_FOR_SRES
+  4 EXAMINE_RECEIVED_SRES
+  5 SEND_AU_RAND
+  6 WAIT_FOR_KC
+  7 DELAYED_ENCRYPT_RESPONSE
+)
+/* btStateAuth2 */
+(
+  0 SENT_SRES
+  1 RECEIVED_IN_RAND
+  2 SENT_AU_RAND
+  3 AUTHENTICATION_FAILED
+  4 AUTHENTICATION_PASSED
+  5 STARTED_AUTH
+  6 SENT_COMB_KEY
+  7 SENT_IN_RAND
+)
+/* btStateAuth3 */
+(
+  0 RECEIVED_AU_RAND
+  1 RECEIVED_SRES
+  2 MUTUALLY_AUTHENTICATE
+)
+/* btStateHost */
+(
+  0 H_AUTH_STARTED
+  2 H_ENCRYPTION_MODE_REQ_PT
+  3 H_ENCRYPTION_KEY_SIZE
+  4 H_ENCRYPTION_START
+  5 H_ENCRYPTION_STOP
+  6 H_AUTH_SECOND_TRY
+)
+/* btStateEncrypt2 */
+(
+  0 RECEIVED_ENCRYPT_MODE_REQ_PT
+  1 RECEIVED_ENCRYPT_KEY_SIZE
+  2 RECEIVED_ENCRYPT_START
+  3 RECEIVED_ENCRYPT_STOP
+  4 STARTED_ENCRYPT_START
+)
+/* mem_ms_state */
+(
+  0x00 MS_STANDBY
+  0x11 M_MINIT_1
+  0x12 M_MINIT_2
+  0x20 M_SINIT_0
+  0x30 S_MINIT_0
+  0x31 S_MINIT_1
+  0x32 S_MINIT_2
+  0x41 S_SINIT_1
+  0x42 S_SINIT_2
+  0x43 S_SINIT_3
+)
+/* mem_test_mode */
+(
+  0 TEST_MODE_ALLOWED
+  1 TEST_MODE_ACTIVE
+)
+/* values for mem_tester_emulate */
+(
+  0x00 NO_TEST_MODE
+  0x00 CONTINUOUS_TRANSMIT
+  0x10 TRANSMIT_TEST
+  0x08 LOOPBACK
+)
+
+/* mem_tx_misc */
+(
+  1 SEND_TX_ADDR
+)
+/* BBHWREG_page_stat */
+(
+  5 PAGE_MODE_END
+)
+/* host_return_parameters_status codes */
+(
+  0x00 HOST_RETURN_SUCCESS
+  0x01 HOST_RETURN_SLAVE_CANT_ISSUE
+  0x02 HOST_RETURN_NO_CONNECTION
+  0x04 HOST_RETURN_PAGE_TIMEOUT
+  0x05 HOST_RETURN_INQUIRY_TIMEOUT
+  0x08 HOST_RETURN_CONNECTION_TIMEOUT
+  0x09 HOST_RETURN_MAX_NUM_CONNECTIONS
+  0x0a HOST_RETURN_MAX_NUM_SCO
+  0x0b HOST_RETURN_MAX_NUM_ACL
+  0x0c HOST_RETURN_SECURITY_REASONS
+  0x10 HOST_RETURN_HOST_TIMEOUT
+  0x11 HOST_RETURN_UNSUPPORTED_FEATURE_PARAMETER
+  0x13 HOST_RETURN_OTHER_END_USER
+  0x14 HOST_RETURN_OTHER_END_LOW_RESOURCE
+  0x15 HOST_RETURN_OTHER_END_POWER_OFF
+  0x16 HOST_RETURN_LOCAL_HOST
+  0x18 HOST_RETURN_PAIRING_NOT_ALLOWED
+  0x19 HOST_RETURN_UNKNOWN_PDU
+  0x1a HOST_RETURN_UNSUPPORTED_REMOTE_FEATURE
+  0x1d HOST_RETURN_SCO_AIR_MODE_REJECTED
+  0x20 HOST_RETURN_UNSUPPORTED_LMP_VALUE
+  0x21 HOST_RETURN_AUTHENTICATION_FAILURE
+  0x22 HOST_RETURN_CHANGED_EXISTING_SCO
+  0x23 HOST_RETURN_HOST_REJECTED
+  0x24 HOST_RETURN_UNSPECIFIED_ERROR
+  0x25 HOST_RESET
+  0x26 HOST_RETURN_BAD_HANDLE
+
+  0x00 HOST_RETURN_ACCEPT_COMMAND
+  0x01 HOST_RETURN_REJECT_COMMAND
+)
+/* host_present */
+(
+  0 HOST_IS_PRESENT
+  1 BCI_IS_PRESENT
+  2 DONT_INIT_RADIO
+)
+/* mem_master_state */
+(
+  0 MASTER_STATE_STANDBY
+  1 MASTER_INQUIRY
+)
+/* misc */
+(
+  92 SECOND_SWITCH_REQ
+  93 SLAVE_DELAY_DETACH
+  94 MASTER_DELAY_DETACH
+  95 UNSNIFF_DELAY_DETACH
+  0 WE_STARTED_AS_MASTER
+  1 WE_STARTED_AS_SLAVE
+)
+/* mem_host_commands */
+(
+  0x01 HOST_INQUIRY
+  0x02 HOST_INQUIRY_CANCEL
+  0x03 HOST_CREATE_CONNECTION
+  0x04 HOST_DISCONNECT_CONNECTION
+  0x05 HOST_ADD_SCO_REQUEST
+  0x06 HOST_REMOTE_NAME_REQUEST
+  0x07 HOST_WRITE_SUPPORTED_FEATURES
+  0x08 HOST_SET_TX_LEVEL
+  0x09 HOST_SET_RX_LEVEL
+  0x0a HOST_SNIFF_REQUEST
+  0x0b HOST_UNSNIFF_REQUEST
+  0x0c HOST_WRITE_LINK_SUPERVISION_TIMEOUT
+  0x0e HOST_WRITE_SCAN_ENABLE
+  0x0f HOST_READ_AUDIO_QUALITY
+  0x10 HOST_ENABLE_DEVICE_UNDER_TEST
+  0x14 HOST_BUTTON_CONFIGURE
+  0x15 HOST_SET_LOW_BATTERY_LEVEL
+  0x16 HOST_WRITE_LOCAL_NAME
+  0x17 HOST_WRITE_LOCAL_PIN
+  0x18 HOST_KILL_SCO_REQUEST
+  0x19 HOST_QOS_REQ
+
+  0x1a HOST_FEATURES_REQUEST
+  0x1b HOST_VERSION_REQUEST
+  0x1c HOST_TIMING_REQUEST
+  0x1d HOST_CLK_OFFSET_REQUEST
+  0x1e HOST_AUTHENTICATE
+  0x1f HOST_START_ENCRYPTION
+  0x20 HOST_STOP_ENCRYPTION
+  0x21 HOST_HOLD_REQUEST
+  0x22 HOST_HOLD_FORCE
+  0x23 HOST_PARK_REQUEST
+  0x24 HOST_MOD_BEACON
+  0x25 HOST_SET_BROADCAST_SCAN_WINDOW
+  0x26 HOST_UNPARK_PM_REQUEST
+  0x27 HOST_UNPARK_BD_REQUEST
+  0x28 HOST_SLAVE_REQUEST_UNPARK
+  0x29 HOST_DECREASE_POWER_REQUEST
+  0x2a HOST_INCREASE_POWER_REQUEST
+  0x2b HOST_SEND_PREFERRED_RATE
+  0x2c HOST_MAX_SLOT_REQ
+  0x2d HOST_MAX_SLOT_FORCE
+  0x2e HOST_PAGE_MODE_REQUEST
+  0x2f HOST_PAGE_SCAN_MODE_REQUEST
+  0x30 HOST_MASTER_SLAVE_SWITCH
+  0x31 HOST_SEND_AUTO_RATE
+  0x32 HOST_PAGE_CANCEL
+  0x33 HOST_CHANGE_LINK_KEY
+  0x34 HOST_RADIO_READ
+  0x35 HOST_RADIO_WRITE
+  0x36 HOST_REMOTE_SLAVE_INIT_UNPARK_REQUESTED
+
+  0x40 HOST_REMOTE_CONNECTION_REQUESTED
+  0x41 HOST_REMOTE_DETACH
+  0x42 HOST_REMOTE_SCO_CREATE_REQUESTED
+  0x43 HOST_REMOTE_SCO_KILL_REQUESTED
+  0x44 HOST_REMOTE_PARK_REQUESTED
+  0x45 HOST_REMOTE_UNPARK_REQUESTED
+  0x46 HOST_REMOTE_SNIFF_REQUESTED
+  0x47 HOST_REMOTE_UNSNIFF_REQUESTED
+  0x48 HOST_REMOTE_HOLD_REQUESTED
+  0x49 HOST_REMOTE_AUTHENTICATION
+  0x4a HOST_REMOTE_START_ENCRYPTION_REQUESTED
+  0x4b HOST_REMOTE_STOP_ENCRYPTION_REQUESTED
+  0x4c HOST_MODE_CHANGE_EVENT
+  0x4d HOST_REMOTE_TEST_ACTIVATE
+  0x4e HOST_REMOTE_TEST_CONTROL
+  0x4f HOST_REMOTE_TIMING_REQUEST
+)
+/* BCI interface (not used if not compiled in ) */
+(
+  0x01 BCI_INQUIRY
+  0x02 BCI_INQUIRY_CANCEL
+  0x03 BCI_CREATE_CONNECTION
+  0x04 BCI_DISCONNECT
+  0x05 BCI_ADD_SCO_CONNECTION
+  0x06 BCI_REMOTE_NAME_REQUEST
+  0x07 BCI_WRITE_SUPPORTED_FEATURES
+  0x08 BCI_SET_TX_POWER_LEVEL
+  0x09 BCI_SET_RX_POWER_LEVEL
+  0x0a BCI_SNIFF_MODE
+  0x0b BCI_EXIT_SNIFF_MODE
+  0x0c BCI_WRITE_LINK_SUPERVISION_TIMEOUT
+  0x0d BCI_WRITE_PAGE_TIMEOUT
+  0x0e BCI_WRITE_SCAN_ENABLE
+  0x0f BCI_GET_AUDIO_QUALITY
+  0x10 BCI_ENABLE_DEVICE_UNDER_TEST
+  0x11 BCI_SEND_DATA
+  0x12 BCI_REGISTER_SERVICE_RECORD
+  0x13 BCI_SERVICE_SEARCH_ATTRIB_REQ
+  0x14 BCI_BUTTON_CONFIGURE
+  0x15 BCI_SET_LOW_BATTERY_LEVEL
+  0x16 BCI_WRITE_LOCAL_NAME
+  0x17 BCI_WRITE_LOCAL_PIN
+  0x18 BCI_REMOVE_SCO_CONNECTION
+  0x19 BCI_QUALITY_OF_SERVICE
+  0x40 BCI_REMOTE_CONNECTION_REQUEST
+  0x41 BCI_REMOTE_DETACH
+  0x42 BCI_REMOTE_ADD_SCO_REQUEST
+  0x43 BCI_REMOTE_REMOVE_SCO_REQUEST
+  0x44 BCI_REMOTE_PARK_REQUEST
+  0x45 BCI_REMOTE_UNPARK_REQUEST
+  0x46 BCI_REMOTE_SNIFF_REQUEST
+  0x47 BCI_REMOTE_UNSNIFF_REQUEST
+  0x48 BCI_REMOTE_HOLD_REQUEST
+  0x49 BCI_REMOTE_AUTHENTICATION_PAIRING_REQUEST
+  0x4a BCI_REMOTE_START_ENCRYPTION_REQUEST
+  0x4b BCI_REMOTE_STOP_ENCRYPTION_REQUEST
+  0x4c BCI_MODE_CHANGE_EVENT
+)
+/* mode changes */
+(
+  0 MODE_CHANGE_ACTIVE
+  1 MODE_CHANGE_SNIFFING
+  2 MODE_CHANGE_PARKED
+  3 MODE_CHANGE_HOLDING
+  4 MODE_CHANGE_SCO_ADDED
+  5 MODE_CHANGE_SCO_REMOVED
+  6 MODE_CHANGE_ACL_CONNECTION
+  7 MODE_CHANGE_DISCONNECT
+  8 MODE_CHANGE_SCO_CHANGED
+  9 MODE_CHANGE_ENCRYPTING
+  10 MODE_CHANGE_NOT_ENCRYPTING
+  11 MODE_CHANGE_BUTTON_UP
+  12 MODE_CHANGE_BUTTON_DOWN
+  13 MODE_CHANGE_BATTERY_LOW
+  14 MODE_CHANGE_RESET
+  15 MODE_CHANGE_INQUIRY_CANCELED_RMTCMD
+  16 MODE_ACTIVE_MSSWITCH_PASSED
+  17 MODE_ACTIVE_MSSWITCH_FAILED
+)
+/* mem_battery - low nibble is level information, upper nibble is status info */
+(
+  6 BATTERY_CHECK_LEVEL
+  7 BATTERY_SENT_STATUS
+)
+/* mem_radio_version */
+(
+  0x02 RADIO_2001
+  0x12 RADIO_2002
+  0x32 RADIO_2002_DDM
+  0x42 RADIO_1008A1
+  0x52 RADIO_1018A0
+)
+/* mem_slave_initiated_conn */
+(
+  0 SLAVE_INIT_AUTHENTICATION
+  1 SLAVE_INIT_ENCRYPTION
+  2 SLAVE_INIT_MASTER_SLAVE_SWITCH
+)
+/* connection_options */
+(
+  0 CONNECTION_AUTH
+  1 CONNECTION_ENCRYPT
+  2 CONNECTION_SWITCH
+  3 CONNECTION_ACL
+  4 CONNECTION_FEATURE_EXT
+)
+/* mem_debug_config */
+(
+  7 AA_INSERTION
+)
+0x3000 start
+0x3001 soft_reset
+0x3019 main_loop
+0x3029 connection_dispatch
+0x302e connection_incontext
+0x3038 connection_nosniff
+0x3043 idle_dispatch
+0x304e idle_exit
+0x3050 idle_le_create_conn
+0x3053 idle_inquiry
+0x3058 idle_inquiry_cancel
+0x305b idle_remote_name_req
+0x3060 idle_create_conn
+0x3062 idle_create_conn_device
+0x3067 idle_create_conn_cont
+0x3068 idle_start_page
+0x306f idle_page_mode_r0
+0x3091 idle_page_fail
+0x3098 idle_name_fail
+0x309e inquiry_dispatch
+0x30a4 inquiry_start
+0x30ac inquiry_restart
+0x30af inquiry_rx_restart
+0x30b4 inquiry_transmit
+0x30c2 inquiry_check_train
+0x30d0 inquiry_receive
+0x30db inquiry_sync
+0x30e2 inquiry_receive_rtn
+0x30e4 inquiry_receive_eir_rtn
+0x30e8 master_page
+0x30f1 master_page_no_interval
+0x30fd master_npage_timeout
+0x3100 master_page_timeout
+0x3108 page_start
+0x3115 page_restart
+0x311b page_rx_restart
+0x312f page_exit
+0x3136 page_check_train
+0x3145 page_receive
+0x314e page_sync
+0x3154 page_send_fhs
+0x3159 page_send_fhs_continue
+0x3165 page_wait_fhs_reply
+0x3175 page_wait_fhs_reply_ok
+0x317b master_newconn_loop
+0x3180 newconn_poll_responded
+0x3188 master_dispatch
+0x319a master_loop
+0x31a4 master_notmatch
+0x31ab master_exit
+0x31ad master_attempt
+0x31b0 check_master_disconnect
+0x31b3 check_master_match
+0x31c1 master_disconnect
+0x31c8 master_name_disconnect
+0x31ca master_name_error
+0x31cd check_disconnect_timeout
+0x31d4 disable_usr
+0x31d6 conn_timer_expired
+0x31da linkkey_ready
+0x31e4 linkkey_set
+0x31ed linkkey_set_continue
+0x31ee generate_linkkey_continue
+0x31ef clear_linkstate
+0x31f3 role_switch_check
+0x31fe role_switch_clkn
+0x31ff role_switch_clke
+0x3206 role_switch_prepare
+0x320a role_switch_prepare0
+0x321a role_switch_master
+0x3221 roles_waitfhs_loop
+0x3226 role_switch_fail_master
+0x322f roles_replyto_fhs
+0x3237 roles_newconns_loop
+0x323e roles_newconns_responded
+0x3246 context_load
+0x3259 context_load_master
+0x3260 context_save
+0x3269 context_get_next
+0x326c context_get_next_loop
+0x3270 context_get_next_cont
+0x3278 context_get_next_sniff
+0x327a context_new
+0x3283 context_check_all_wack
+0x328b context_check_esco_wack
+0x3290 context_esco_wack
+0x3292 context_check_idle
+0x3294 context_traverse_linkkey
+0x3297 context_search_conn_handle
+0x3298 context_search_conn_handle2
+0x329a context_search_plap
+0x329d context_search_plap2
+0x329f context_search_insniff
+0x32a1 context_search_sniff_window
+0x32a2 context_search
+0x32a7 context_search_loop
+0x32a9 context_search_next
+0x32ad context_search_empty
+0x32b1 context_search_lap
+0x32b3 context_search_lap_cont
+0x32b8 context_search_handle
+0x32be context_search_sniff
+0x32bf context_search_sniff_loop
+0x32cc context_search_sniff_sc
+0x32cf context_search_meet1
+0x32d0 context_search_meet
+0x32d4 context_search_sniff_miss
+0x32da sign_pdata_temp
+0x32e4 sign_pdata_temp_p0
+0x32ea context_check_inconn
+0x32ed context_check_a_wack
+0x32f6 context_get_anchor
+0x3302 context_next_anchor
+0x3309 context_search_window
+0x3312 context_traverse_clearkey
+0x331d master_conn_send_packet
+0x3320 master_send_packet
+0x3328 master_conn_recv_packet
+0x332b master_recv_packet
+0x3333 master_rx_conn_finish_packet
+0x3337 master_newconn_once
+0x333e inquiry_scan_dispatch
+0x334e inquiry_scan_start
+0x337a send_eir
+0x339d get_all_uuid
+0x33a1 lshift_loop
+0x33b3 page_scan_dispatch
+0x33c3 page_scan_start
+0x33e6 page_scan_wait_fhs_restart
+0x33f0 page_scan_wait_fhs_again
+0x33f8 page_scan_reply_to_fhs
+0x3406 slave_apply_clke_bt
+0x340a slave_apply_clke_bt_now
+0x340d start_slave_connection
+0x3412 slave_newconn_loop
+0x3417 sconn_successful
+0x341f slave_dispatch
+0x3424 slave_loop
+0x3434 slave_notmatch
+0x343e slave_disconnect
+0x3447 role_switch_slave
+0x3450 roles_sendfhs_loop
+0x3463 roles_got_fhs_reply
+0x3466 roles_newconn_loop
+0x3470 roles_newconn_responded
+0x3476 roles_newconn_nolmp
+0x3481 init_rx_packet_flags
+0x348d prepare_newconn
+0x3499 newconn_init
+0x34a9 clear_linkkey
+0x34b0 new_conn_timeout
+0x34b4 new_conn_handle
+0x34b8 quit_connection
+0x34be quit_connection_name
+0x34c2 quit_connection_cont
+0x34d3 quit_connection_not_clear_mark
+0x34d5 quit_connection_not_clear_tx
+0x34d9 slave_newconn_once
+0x34e7 prepare_tx
+0x34f4 prepare_tx_not_esco
+0x34f5 prepare_tx_not_sco
+0x34fb prepare_tx_retransmit
+0x3505 prepare_tx_nomore_retransmit
+0x3508 prepare_tx_no_retransmit
+0x3511 prepare_tx_pollnull
+0x3515 prepare_tx_loopback
+0x351c prepare_tx_txpat
+0x3520 prepare_tx_sendlmp
+0x3522 prepare_tx_sendl2cap
+0x3523 set_wait_ack
+0x352d tx_l2cap_type
+0x3544 tx_l2cap_type_edr
+0x3554 slave_receive_master_slot
+0x3559 slave_receive_notsniff
+0x355a slave_receive_access
+0x355b slave_receive_sniff
+0x3579 slave_conn_recv_packet
+0x3582 receive_packet
+0x3584 receive_packet_whitened
+0x359a receive_packet_noedr
+0x35a4 receive_packet_amchk
+0x35b4 am_addr_match
+0x35b5 am_addr_ok
+0x35c5 arqn_bypass
+0x35d3 failed_seqn
+0x35d4 rx_type_dispatch
+0x35e4 process_hev
+0x35eb process_hev_loop
+0x35f4 process_poll
+0x35f5 process_dm5
+0x35f6 process_dm1
+0x35f8 process_dh5
+0x35f9 process_3dh1
+0x35fa process_dh1
+0x35fb process_dmh
+0x3608 process_dmh_noedr
+0x3614 process_dmh_long
+0x3617 process_dmh_common
+0x362b process_lmp
+0x3630 process_dmh_data_l2cap_start_pkt
+0x363b process_dmh_data_into_buff1
+0x3640 process_dmh_data_into_buff2
+0x3645 process_dmh_data_l2cap_continue_pkt
+0x3650 process_dmh_data_l2cap_continue_pkt1
+0x3654 process_dmh_data_l2cap_continue_pkt2
+0x3657 process_dmh_data
+0x365b process_dmh_data_end
+0x366e process_l2cap_pass_crc_buff1
+0x3678 process_l2cap_pass_crc_buff2
+0x3682 process_dmh_cont
+0x368c process_dmh_cont_rxbuf_not_use
+0x3696 ack_payload
+0x36a8 error_header
+0x36af error_payload_crc
+0x36b5 error_payload
+0x36b6 discard_pkt
+0x36bb discard_pkt_lmp
+0x36bf discard_pkt_l2cap
+0x36c3 redundant_payload
+0x36c6 end_of_packet
+0x36d3 process_fhs
+0x36e9 fhs_parity_ok
+0x3703 clear_got_tx
+0x3719 clear_got_txlmp
+0x3726 clear_lmp_escape
+0x3729 clear_send_setup_complete
+0x372e sco_link_req_by_slave
+0x3733 clean_mem_mode
+0x3736 start_encryption
+0x373f stop_encryption
+0x3746 sniff_init
+0x374d sniff_init_master
+0x3757 sniff_init_nowrap
+0x376a sniff_exit
+0x3775 check_attempt
+0x3781 check_attempt_nomore
+0x3783 check_attempt_sniff
+0x3789 check_attempt_sniff_restore_sco
+0x378c check_attempt_sco_master
+0x3792 check_attempt_not_sco
+0x379b check_attempt_notimeout
+0x379f sniff_check_window
+0x37a9 check_esco_amaddr
+0x37ac parse_l2cap
+0x37af parse_l2cap_cont
+0x37c1 parse_l2cap_release_buff1
+0x37c7 parse_l2cap_release_buff2
+0x37cd l2cap_buff1_inuse
+0x37d1 l2cap_buff2_inuse
+0x37d5 slave_send_access
+0x37de slave_conn_send_packet
+0x37e9 slave_conn_send_access
+0x37ec transmit_packet
+0x37ee transmit_packet_whitened
+0x3816 transmit_hev
+0x381d transmit_ev_loop
+0x3822 transmit_fhs
+0x3840 transmit_lmp
+0x3849 transmit_lmp_loop
+0x384f transmit_lmp_finish
+0x3852 transmit_dm1
+0x3854 transmit_dm5
+0x3857 transmit_3dh1
+0x3858 transmit_dh1
+0x385a transmit_dh5
+0x385d transmit_dmh
+0x386d transmit_edr3m
+0x3871 transmit_edr_sync_end
+0x3873 transmit_noedr
+0x387d transmit_long
+0x387e transmit_stuff
+0x3882 transmit_stuff_loop
+0x3885 transmit_end
+0x388e transmit_loopback
+0x3891 transmit_loopback_short
+0x3897 transmit_loopback_long
+0x389c transmit_loopback_cont
+0x389d transmit_loopback_loop
+0x38a3 transmit_loopback_end
+0x38a7 apply_switch_clke
+0x38ad apply_switch_nozero
+0x38b0 apply_switch_loop
+0x38b4 apply_switch_bt
+0x38b5 apply_switch_wait_loop
+0x38bc calc_slot_offset
+0x38c7 calc_bt_portion
+0x38c9 calc_slot_offset_loop
+0x38cb calc_skip_bt
+0x38d1 calc_clke_offset
+0x38dd calc_clke_pos
+0x38e1 calc_clke
+0x38e5 calc_clke2
+0x38ed calc_clke_pos2
+0x38ef calc_clke_pos_adj
+0x38f1 calc_radio_freq
+0x38fb freq_not_connection
+0x38fc do_hop_mod_now
+0x3904 odd_half
+0x3906 freq_result
+0x390a afh_process_0
+0x3918 afh_process_con
+0x3925 afh_process_1
+0x3931 afh_process_end
+0x3934 afh_same_channel
+0x3937 afh_clear
+0x393c afh_process_freq_map
+0x3944 process_freq_3
+0x3949 process_freq_1
+0x394d process_freq_0
+0x3956 process_freq_2
+0x3960 rx_radio_freq
+0x3966 rx_radio_freq_now
+0x3967 tx_radio_freq
+0x396d tx_radio_freq_now
+0x396e fetch_giac
+0x3972 fetch_page_bt_adr
+0x3979 fetch_self_bt_adr
+0x3982 fetch_extm_bt_adr
+0x398b fetch_diac
+0x398e fetch_diac_do
+0x3992 shutdown_radio
+0x399c shutdown_radio_select
+0x39a1 shutdown_radio_0db
+0x39a3 shutdown_radio0
+0x39ae shutdown_radio_3db
+0x39ae shutdown_radio_pair
+0x39b1 set_sync_on
+0x39b9 set_freq_rx
+0x39bf rf_rx_enable
+0x39c9 set_freq_tx
+0x39d0 txon
+0x39dc txon_power_select
+0x39e1 set_tx_power_0db
+0x39e5 set_tx_power_3db
+0x39e9 set_tx_power_5db
+0x39ed set_tx_power_f3db
+0x39f1 set_tx_power_f5db
+0x39f5 txon_common
+0x39fc initialize_radio
+0x39fe initialize_radio_wait
+0x3a02 initialize_radio_loop
+0x3a08 initialize_radio_cont
+0x3a13 rf_write_freq
+0x3a2b do_rccal
+0x3a37 do_rccal_loop
+0x3a3a do_rccal_end
+0x3a3f set_rccal
+0x3a50 save_rssi
+0x3a5f switchto_dpllclk
+0x3a7b xtal_fast_wake
+0x3a7d init_lpm_ctrl
+0x3a7f start_receiver
+0x3a86 prep_crypt
+0x3a95 wait_access_end
+0x3a9d wait_access_mhalfbnd
+0x3a9e wait_access_mhalfbnd_correlate
+0x3aa3 wait_access_clkn_rt
+0x3aab wait_access_forever
+0x3ab4 reserve_slot
+0x3abd ahead_window
+0x3acd setup_clk
+0x3ad1 skip_setup_clke
+0x3ad3 setup_clkn
+0x3ad5 skip_setup_clkn
+0x3ad6 setup_clknbt
+0x3ad9 setup_complete
+0x3ae3 setup_clk11
+0x3ae6 rf_setup_time
+0x3aea rf_setup_time_slave_slot
+0x3aec rf_setup_time_master_slot
+0x3aee start_transmitter
+0x3af4 start_tx_native
+0x3afa start_rx_native
+0x3aff start_tx_external
+0x3b05 send_access_word
+0x3b0d scan_mode_whiten
+0x3b11 get_free_amaddr
+0x3b17 get_free_amaddr_cont
+0x3b1a get_clk
+0x3b1e get_clkbt
+0x3b22 supervision_update
+0x3b2c supervision_flush
+0x3b31 assert
+0x3b34 loop
+0x3b35 sleep
+0x3b38 sleep_loop
+0x3b3c init_param
+0x3b64 init_rf_param
+0x3bab lpmstate
+0x3bb6 lpmwake
+0x3bc7 lpm_load_context
+0x3bd7 lpm_save_context
+0x3be2 lpo_calibration
+0x3be8 lpo_cal_inited
+0x3bed lpm_adjust_clk
+0x3bfe lpm_adjust_positive
+0x3c01 lpm_clear_counter
+0x3c04 lpm_hibernate
+0x3c0b lpm_hibernate_normal
+0x3c11 lpm_sleep
+0x3c24 lpm_enter_sleep
+0x3c29 lpm_recover_clk
+0x3c33 lpm_recover_xtal
+0x3c35 lpm_recover_timeout
+0x3c53 lpm_dispatch
+0x3c5e lpm_dispatch_next
+0x3c6a lpm_dispatch_next2
+0x3c7f lpm_dispatch_sleep
+0x3c80 lpm_dispatch_lpo
+0x3c8a lpm_dispatch_unconn
+0x3c93 lpm_unconn_nossp
+0x3c99 lpm_unconn_cont
+0x3c9b lpm_sleep_btclk
+0x3ca0 lpm_set_mult
+0x3cb0 lpm_mult_wait_timeout
+0x3cb7 lpm_match
+0x3cbc lpm_not_match
+0x3cc3 lpm_lost
+0x3ccb lpm_mult_short
+0x3ccf lpm_mult_long
+0x3cd2 lpm_cal_xtal_startup
+0x3ceb lpm_write_config
+0x3cf4 lpm_write_ctrl
+0x3cf6 lpm_write_ctrl2
+0x3cf7 lpm_write
+0x3cfc lpm_write_gpio_wakeup
+0x3d06 lpm_get_wake_lock
+0x3d0a lpm_put_wake_lock
+0x3d0e lpm_check_wake_lock
+0x3d2c lpm_uart_wake_lock
+0x3d31 lpm_check_wake_lock_nothci
+0x3d33 lpm_check_wake_lock_end
+0x3d39 lpm_shut_down
+0x3d3e lpm_disable_exen_output
+0x3d42 check_bt_disabled
+0x3d45 check_ble_disabled
+0x3d48 check_module_disabled
+0x3d4b app_init
+0x3d55 app_lpm_init
+0x3d5f app_lpm_init0
+0x3d60 app_process_idle
+0x3d65 app_process_bt
+0x3d67 app_process_ble
+0x3d69 app_process_bb_event
+0x3d71 app_discard_event
+0x3d73 app_event_normal_process
+0x3d88 app_evt_bt_conn
+0x3d8f app_event_switch_success
+0x3d91 app_event_switch_fail_master
+0x3d9b app_process_bb_event_priority
+0x3d9d app_check_wake_lock
+0x3d9f app_will_enter_lpm
+0x3da1 app_event_linkkey_generate
+0x3da5 app_event_reconn_start
+0x3dac app_evt_setup_complete
+0x3db3 app_evt_hid_handshake
+0x3db7 app_event_enter_sniff
+0x3dbe app_event_exit_sniff
+0x3dc2 app_le_event_bb_connected
+0x3dc6 app_le_event_bb_disconn
+0x3dcb app_bb_event_hid_connected
+0x3dcf app_evt_button_long_pressed
+0x3dd3 app_event_ml2cap_conn_refused
+0x3dd7 app_evt_timer
+0x3dda app_evt_100ms_loop
+0x3de5 app_unsniff_delay_timer
+0x3ded app_discovery_timer
+0x3df6 app_bb_event_reconn_failed
+0x3df7 app_clear_reconnect_flag
+0x3dfb app_bb_event_bb_disconn
+0x3e00 app_bb_event_bb_reconn_disconn
+0x3e0a app_bb_hibernate
+0x3e0c app_disconn_reason_clear
+0x3e0f app_disconn_reason_flag_clear
+0x3e12 app_disconn_reason_collect_bt
+0x3e17 app_disconn_reason_collect_ble
+0x3e1d app_check_sniff
+0x3e20 app_initflag_store
+0x3e21 app_flag_store
+0x3e28 app_initflag_check
+0x3e32 app_start_auto_sniff
+0x3e35 app_get_lpm_wake_lock
+0x3e37 app_put_lpm_wake_lock
+0x3e39 app_lpm_wake_auto_lock
+0x3e3b app_lpm_wake_auto_lock_timer
+0x3e41 app_l2cap_flow_control_enable
+0x3e43 app_l2cap_flow_control_disable
+0x3e45 app_bt_set_pincode
+0x3e47 app_bt_role_switch
+0x3e49 app_bt_start_reconnect
+0x3e50 app_bt_reconnect_cancel
+0x3e52 app_bt_disconnect
+0x3e54 app_bt_start_discovery_short
+0x3e56 app_bt_start_discovery_led_blink
+0x3e57 app_bt_start_discovery
+0x3e59 app_bt_stop_discovery
+0x3e5d app_ble_start_direct_adv
+0x3e5f app_ble_stop_direct_adv
+0x3e61 app_ble_stop_adv
+0x3e63 app_ble_start_adv
+0x3e65 app_ble_start_scan
+0x3e67 app_ble_stop_scan
+0x3e69 app_ble_start_conn
+0x3e6b app_ble_disconnect
+0x3e6d app_ble_start_write
+0x3e6f app_led_start_blink
+0x3e71 app_led_on
+0x3e73 app_led_off
+0x3e75 app_enter_hibernate
+0x3e77 app_bt_sniff_exit
+0x3e79 app_bt_enter_sniff
+0x3e7b app_ble_store_reconn_info
+0x3e7d app_bt_store_reconn_info
+0x3e7f app_lpm_mult_enable
+0x3e81 app_lpm_mult_disable
+0x3e83 hci_rx_h4
+0x3e87 hci_rx_h4_1
+0x3e8a hci_h4_parse_packet
+0x3e95 hci_h4_parse_packet_wait_len
+0x3e9c hci_h4_parse_packet_wait
+0x3ea3 h4_rx_discard_packet
+0x3eac h4_get_rx_payload_len
+0x3eb1 h4_get_rx_payload_len_acl
+0x3eb3 h4_get_tx_ptr
+0x3eb7 h4_send_packet_event
+0x3eb9 h4_send_packet_acl
+0x3eba h4_send_packet
+0x3eca h4_send_acl_trigger_clear
+0x3ecd hci_init
+0x3ed4 hci_lpm_init
+0x3edd hci_reinit
+0x3ee4 hci_init_common
+0x3eed hci_sel_init
+0x3ef4 hci_rx_packet
+0x3efe hci_rx_packet_cont
+0x3f01 uart_send_byte
+0x3f06 process_hci_cmd
+0x3f0c process_hci_cmd_cont
+0x3f15 phci_grp_vendor_specific
+0x3f23 phci_grp_vendor_enter_lpm
+0x3f26 hci_enter_lpm
+0x3f29 hci_exit_lpm
+0x3f2d phci_grp_vendor_chipid
+0x3f32 phci_grp_vendor_baud
+0x3f36 phci_grp_vendor_patch
+0x3f40 phci_grp_vendor_patch_loop
+0x3f49 phci_grp_vendor_done
+0x3f4c phci_grp_vendor_done_loop
+0x3f58 phci_grp_vendor_patch_bad
+0x3f5a phci_grp_vendor_bdaddr
+0x3f5d phci_grp_vendor_mem
+0x3f65 phci_grp_vendor_eep
+0x3f70 hci_normal_reply
+0x3f73 hci_command_complete
+0x3f79 hci_send_event
+0x3f80 hci_send_event_raw
+0x3f82 hci_send_packet
+0x3f83 hci_send_commu_ready_event
+0x3f89 hci_get_cmd_complete_ptr
+0x3f8b hci_get_payload_ptr
+0x3f8d hci_get_packet_ptr
+0x3f8e hci_get_tx_ptr
+0x3f8f calc_tx_crc16
+0x3f91 crcloop
+0x3f9b cmd_exit
+0x3f9d cmd_check_plap
+0x3fa1 cmd_pair
+0x3fa6 cmd_pair_passive
+0x3fae cmd_in_sniff
+0x3fbd cmd_exit_sniff
+0x3fbf hci_idle_dispatch
+0x3fc6 uart_wake_up
+0x3fca hid_rx_process
+0x3fd7 hid_rx_process_hid_control
+0x3fdb hid_rx_process_virtual_cable_unplug
+0x3fe2 hid_rx_process_suspend
+0x3fe3 hid_rx_process_set_report
+0x3feb hid_rx_process_handshake
+0x3ff5 hid_handshake_event
+0x3ff7 hid_rx_process_data
+0x3ffa hid_rx_process_data_hid_kb
+0x4005 hid_malloc_tx_buff
+0x400c kb_init
+0x4021 kb_check_reconn_target
+0x4024 kb_3_check_reconn_target
+0x4027 kb_init_environment
+0x4032 kb_load_eeprom_param
+0x4034 kb_init_common
+0x4055 kb_led_int
+0x4058 kb_led_cap_init
+0x405c kb_led_num_init
+0x4060 kb_led_scl_init
+0x4064 kb_led_cap_delay_timer
+0x4069 kb_led_capslock
+0x4077 kb_enble_mult_timer
+0x407d kb_auto_disable_mult
+0x4080 kb_led_cap_status
+0x4082 kb_send_process
+0x4097 kb_debug_send_keydata
+0x40aa fn_test
+0x40ac bt_send_kb_data_by_report0
+0x40bb fill_kb_send_data
+0x40be store_key
+0x40c3 not_key_status
+0x40c4 store_key_next
+0x40c7 bt_send_kb_data_by_report1
+0x40d6 fill_kb_send_report1_data
+0x40e0 init_kb_no_data_timer
+0x40e3 kb_check_no_data_timer
+0x40ea kb_disconnect
+0x40f1 bt_send_kb_data_by_report0_ptr
+0x40f8 bt_send_kb_data_by_report1_ptr
+0x40ff android_search_m_key_releas
+0x4109 ios_screenshot
+0x410d android_search_m_key
+0x4119 kb_pincode
+0x4128 kb_pincode_rtn
+0x412a kb_pincode_bksp
+0x4134 kb_pincode_data
+0x413d kb_pincode_0
+0x4143 kb_send_pin
+0x414f kb_kscan_check_if_empty
+0x4153 kb_kscan_check_ghost
+0x4159 kb_kscan_process_event
+0x416b kb_kscan_check_report_data
+0x416f kb_kscan_store_a_key_data
+0x4179 kb_kscan_check_nextevent
+0x4180 kb_kscan_prepare_send
+0x4182 kb_kscan_release_a_key_data
+0x4187 kb_kscan_find_same_key_data
+0x418c kb_kscan_check_nextevent2
+0x4191 kb_kscan_read_statekey
+0x4196 kb_clear_keys
+0x419a kb_clean_kscan_fifo
+0x41a1 kb_process_idle
+0x41a3 kb_process
+0x41ac kb_ui_check_paring_button
+0x41bb check_bb_reconn_cancel
+0x41bf kb_read_gpio
+0x41dd kb_pairing_button_check
+0x41e6 kb_process_bb_event
+0x41f4 kb_bb_event_timer
+0x41f7 kb_bb_event_100ms_loop
+0x4201 kb_bb_event_reconn_failed
+0x420c kb_bb_disconnected
+0x4214 kb_event_light_state_pairing
+0x4217 kb_event_light_state_hibernate
+0x421a kb_bb_discon_clear_stack
+0x421d kb_check_hid_handshake_timer
+0x4223 kb_bb_event_discovery_btn
+0x422a led_cap_darking
+0x422d kb_3_0_bb_event_discovery_btn
+0x423a kb_stop_discovery
+0x423e kb_start_discovery
+0x4246 kb_discovery_timeout_sleep
+0x4247 kb_process_pincode
+0x424b kb_before_hibernate
+0x4251 kb_before_hibernate_wait
+0x4254 kb_before_hibernate_cont
+0x425b kb_wake_common
+0x4268 kb_process_lpm_before
+0x426d kb_hid_connected
+0x4271 kb_bt_hid_handshake
+0x427d store_current_status
+0x4284 read_current_status
+0x4291 kb_kscan_release_foundkey
+0x4299 kb_recover_kb_down_data
+0x429c kb_kscan_fn
+0x42a1 kb_kscan_fn_loop
+0x42b0 kb_get_fn
+0x42b3 select_system_led_timer
+0x42b9 kb_current_status_regroup
+0x42bd kb_clear_fn_lock_flag
+0x42c0 kb_kscan_check
+0x42ca kb_kscan_no_data
+0x42cc kb_down_data
+0x42cf kb_clear_data
+0x42d4 kb_kscan_read_event
+0x42ea l2cap_init
+0x42eb l2cap_init_work
+0x42ef l2cap_init_wake
+0x42fa process_rx_l2cap_pkt
+0x4307 l2cap_rx_multiplexing
+0x430d l2cap_rx_multiplexing0
+0x4312 l2cap_check_map
+0x431f set_pdata_0
+0x4321 l2cap_call_proc_signal
+0x4323 l2cap_call_proc_signal0
+0x432d l2cap_call_proc_sigal_pending
+0x433c l2cap_sdp_conn_succ
+0x4348 l2cap_reset_sdp_map
+0x4359 check_l2cap_map
+0x435b check_l2cap_map_loop
+0x4360 check_l2cap_map_used
+0x4364 check_l2cap_map_used2
+0x4366 l2cap_call_proc_sdp
+0x436e ml2cap_call_proc_sdp
+0x4372 l2cap_call_proc_sdp_common
+0x4379 l2cap_call_proc_hid
+0x437b l2cap_call_proc_rfcomm
+0x4382 l2cap_call_proc_no_reply
+0x4383 l2cap_rx_reset_state
+0x4388 l2cap_process_signal_pkt
+0x4390 l2cap_process_signal_pkt_loop
+0x4398 l2cap_process_one_signal
+0x43a7 l2cap_process_one_signal_rtn
+0x43a8 l2cap_proc_signal_info_req
+0x43b3 l2cap_proc_signal_info_req_reply
+0x43b6 l2cap_proc_signal_info_req_ext
+0x43bc l2cap_proc_signal_info_req_fix
+0x43c1 l2cap_proc_signal_info_req_common
+0x43c3 ml2cap_proc_signal_info_req
+0x43d2 l2cap_proc_signal_cmd_reject
+0x43d9 l2cap_proc_signal_cmd_reject_rtn
+0x43da l2cap_proc_signal_connect_req
+0x43ee l2cap_proc_signal_connect_req_sdp
+0x43f8 store_l2cap_req_param
+0x4404 restore_l2cap_req_param
+0x4410 l2cap_proc_signal_connect_req_rfcomm
+0x441c l2cap_proc_signal_connect_req_hid_ctrl
+0x4427 l2cap_proc_signal_connect_req_hid_int
+0x4433 send_connection_pending
+0x4437 send_connection_sdp_res
+0x443b send_connection_res
+0x443d send_connection_res0
+0x444f connect_suc
+0x4454 connect_pending
+0x4459 already_connected
+0x445b connect_req_update_byte_counts
+0x445f l2cap_proc_signal_connect_req_rtn
+0x4460 l2cap_proc_signal_connect_rsp
+0x4479 l2cap_proc_signal_connect_rsp_sdp
+0x447f l2cap_proc_signal_connect_rsp_rfcomm
+0x4485 l2cap_proc_signal_connect_rsp_hid_int
+0x448b l2cap_proc_signal_connect_rsp_hid_ctrl
+0x4491 l2cap_proc_signal_config_req
+0x44a9 l2cap_proc_signal_config_req_sdp
+0x44b3 l2cap_proc_signal_config_req_hid_ctrl
+0x44bd l2cap_proc_signal_config_req_hid_int
+0x44c7 l2cap_proc_signal_config_req_rfcomm
+0x44d0 l2cap_send_config_rsp
+0x44e7 l2cap_send_config_rsp_is_sdp
+0x44e8 l2cap_check_channel_state
+0x44f2 l2cap_send_config_req_sdp
+0x44f9 l2cap_send_config_req_rfcomm
+0x4500 l2cap_send_config_req_hid_ctrl
+0x4507 l2cap_send_config_req_hid_int
+0x450d l2cap_generate_config_req
+0x4526 l2cap_generate_config_req_rfcomm
+0x4528 l2cap_generate_config_req_done
+0x4530 l2cap_proc_signal_config_req_rtn
+0x4531 l2cap_proc_signal_config_rsp
+0x454a l2cap_proc_signal_config_rsp_sdp
+0x454e l2cap_proc_signal_config_rsp_rfcomm
+0x4552 l2cap_proc_signal_config_rsp_hid_ctrl
+0x4556 l2cap_proc_signal_config_rsp_hid_int
+0x455b l2cap_proc_signal_disconnect_req
+0x4577 l2cap_proc_signal_disconnect_req_hid_ctrl
+0x457d l2cap_proc_signal_disconnect_req_hid_int
+0x4583 l2cap_proc_signal_disconnect_req_sdp
+0x4589 l2cap_disconnect_hid_control_now
+0x458b l2cap_disconnect_hid_interrupt_now
+0x458f l2cap_disconnect_sdp_now
+0x4593 l2cap_proc_signal_disconnect_req_rfcomm
+0x4599 l2cap_disconnect_rfcomm_now
+0x459b l2cap_send_disconnect_rsp_pkt
+0x45a8 l2cap_proc_signal_disconnect_req_err_rtn
+0x45aa l2cap_proc_signal_disconnect_req_rtn
+0x45ac l2cap_proc_signal_disconnect_rsp
+0x45c7 l2cap_proc_signal_disconnect_rsp_sdp
+0x45cd l2cap_proc_signal_disconnect_rsp_rfcomm
+0x45d3 l2cap_proc_signal_disconnect_rsp_hid_ctrl
+0x45d9 l2cap_proc_signal_disconnect_rsp_hid_int
+0x45df l2cap_proc_signal_disconnect_rsp_rtn
+0x45e1 l2cap_proc_signal_disconnect_rsp_err_rtn
+0x45e2 l2cap_proc_signal_echo_req
+0x45f2 l2cap_proc_signal_echo_rsp
+0x45f3 l2cap_proc_signal_info_rsp
+0x45f4 l2cap_reject_command
+0x4601 l2cap_reset_rfcomm_channel_state
+0x4606 l2cap_reset_sdp_channel_state
+0x460b l2cap_reset_hid_ctrl_state
+0x4611 l2cap_reset_hid_int_state
+0x4617 l2cap_reset_hid_disconnected
+0x4619 l2cap_disconnect_interrupt_req
+0x4623 l2cap_disconnect_control_req
+0x462c l2cap_generate_disconnect_req
+0x463a ml2cap_send_signal_connect_req
+0x464a ml2cap_send_signal_config_req
+0x4660 ml2cap_send_signal_disconn_req
+0x4673 ml2cap_send_signal
+0x467c msdp_send_req_done
+0x4684 ml2cap_rx_multiplexing
+0x468f ml2cap_call_proc_signal
+0x4699 ml2cap_proc_one_comm_loop
+0x469f ml2cap_proc_one_comm
+0x46aa ml2cap_proc_signal_connect_req
+0x46ad ml2cap_proc_signal_cmd_reject
+0x46b3 mvptr
+0x46b7 ml2cap_proc_signal_connect_rsp
+0x46c5 ml2cap_proc_signal_connect_refused_result
+0x46c7 ml2cap_proc_signal_connect_rsp_mnosucc
+0x46c9 ml2cap_proc_signal_connect_rsp_sucessful
+0x46d9 ml2cap_proc_signal_connect_rsp_sdp
+0x46df ml2cap_proc_signal_connect_rsp_rfcomm
+0x46e5 ml2cap_proc_signal_connect_rsp_hid_ctrl
+0x46eb ml2cap_proc_signal_connect_rsp_hid_int
+0x46f0 mnosucc1
+0x46f1 mnosucc
+0x46f4 ml2cap_proc_signal_config_rsp
+0x470f ml2cap_proc_signal_config_rsp_sdp
+0x4713 ml2cap_proc_signal_config_rsp_rfcomm
+0x4717 ml2cap_proc_signal_config_rsp_hid_ctrl
+0x471b ml2cap_proc_signal_config_rsp_hid_int
+0x4720 mcfrsdone
+0x4721 mcrsdone1
+0x4722 mloop2
+0x4726 mcrsdone
+0x4727 ml2cap_proc_signal_config_req
+0x4747 ml2cap_proc_signal_config_req_sdp
+0x4755 ml2cap_proc_signal_config_req_sdp_nsndreq
+0x4758 ml2cap_proc_signal_config_req_rfcomm
+0x475e ml2cap_proc_signal_config_req_hid_ctrl
+0x4764 ml2cap_proc_signal_config_req_hid_int
+0x4769 mcfgrq_done
+0x4774 mloop1
+0x477a mcrqdone
+0x477b ml2cap_proc_signal_disconn_req
+0x4795 ml2cap_proc_signal_disconn_sdp
+0x479a ml2cap_proc_signal_disconn_hid_ctrl
+0x479c ml2cap_proc_signal_disconn_hid_int
+0x479e mclsrfc
+0x47a0 mclssdp
+0x47ae ml2cap_proc_signal_disconn_rsp
+0x47c3 ml2cap_proc_signal_disconn_rsp_sdp
+0x47c6 mdisdone
+0x47ca ml2cap_proc_send_reject
+0x47d6 l2cap_get_req_id
+0x47da l2cap_get_req_id_ok
+0x47dc l2cap_malloc
+0x47e4 l2cap_malloc_loop
+0x47ec l2cap_malloc_next
+0x47f2 l2cap_malloc_rtn
+0x47f5 l2cap_malloc_fifo_out
+0x47fb l2cap_malloc_free
+0x4803 l2cap_malloc_discard
+0x480e l2cap_malloc_is_fifo_full
+0x4812 l2cap_malloc_is_fifo_nearly_full
+0x4816 l2cap_malloc_is_fifo_empty
+0x481a l2cap_malloc_fifo_get_first_ptr
+0x481d l2cap_malloc_free_loop
+0x4821 l2cap_malloc_get_full_map
+0x4826 l2cap_malloc_get_full_map_loop
+0x482c l2cap_malloc_into_fifo
+0x483a l2cap_malloc_into_fifo_no_push
+0x483d l2cap_malloc_into_fifo_loop
+0x4845 l2cap_malloc_enough
+0x484b l2cap_malloc_enough_loop
+0x4856 l2cap_malloc_enough_end
+0x485c l2cap_malloc_enough_rtn
+0x485e l2cap_malloc_signal_channel
+0x4868 l2cap_get_signal_tx_buff
+0x486a l2cap_get_signal_tx_payload
+0x486c l2cap_malloc_sdp_channel
+0x4876 l2cap_get_sdp_tx_buff
+0x4878 l2cap_get_sdp_tx_payload
+0x487a l2cap_malloc_rfcomm_channel
+0x4889 l2cap_get_rfcomm_tx_buff
+0x488b l2cap_util_pdata_to_contw
+0x488e l2cap_lpm_save_calc_len
+0x4893 l2cap_lpm_save_calc_len_loop
+0x489f l2cap_lpm_save_calc_len_end
+0x48a1 l2cap_lpm_get_wake_lock
+0x48a3 l2cap_lpm_put_wake_lock
+0x48a5 l2cap_lpm_save_txbuf
+0x48b1 l2cap_lpm_save_txbuf_loop
+0x48ba l2cap_lpm_save_txbuf_nempty
+0x48c3 l2cap_lpm_load_txbuf
+0x48cb l2cap_lpm_load_txbuf_loop
+0x48da le_secure_connection_enable
+0x48de le_secure_connection_disable
+0x48e2 le_init_conn
+0x48f5 le_init_master
+0x4902 le_init_slave
+0x4911 le_dispatch
+0x4915 le_conn_dispatch
+0x491c le_master_dispatch
+0x492f le_master_disconn
+0x4932 le_slave_dispatch
+0x4940 le_slave_match
+0x4949 le_slave_transmit_last
+0x494c le_slave_cont
+0x494f le_slave_unsync
+0x4955 le_slave_more_data
+0x495b le_disconnect
+0x495d le_disconnect0
+0x4962 le_clear_connection_info
+0x4968 le_got_first_packet
+0x4976 le_enable
+0x497d le_disable
+0x4985 le_prep
+0x498e lerx_setfreq
+0x4993 letx_setfreq
+0x4994 letx_setfreq0
+0x4996 le_setfreq
+0x49a4 le_ctf_normal
+0x49a7 le_ctf_low
+0x49aa le_ctf_test
+0x49ad le_sca_map
+0x49bd le_adv_access
+0x49c4 le_setup
+0x49ce le_setup_master
+0x49d4 le_next_adv_channel
+0x49dc le_context_nexthop
+0x49ed le_nexthop_nowrap
+0x49ef le_calc_channel_map
+0x49f4 le_count_channels_loop
+0x49f6 le_count_channels_notused
+0x49fb le_map_channel
+0x4a02 le_map_channel_next
+0x4a09 le_map_channel_cont
+0x4a0b le_map_channel_loop
+0x4a0e le_map_channel_skip
+0x4a13 le_map_channel_end
+0x4a16 le_wait_tx
+0x4a19 le_wait_master
+0x4a1c le_receive_adv
+0x4a20 le_receive_slave
+0x4a26 le_receive_packet
+0x4a27 le_receive_rxon
+0x4a33 le_receive_on_attempt
+0x4a3a le_receive_skip
+0x4a47 lerx_loop
+0x4a4b lerx_nopayload
+0x4a5a le_transmit_receive_sifs
+0x4a63 le_transmit_norx
+0x4a65 le_transmit
+0x4a6d le_transmit0
+0x4a80 letr_loop
+0x4a83 letr_nopayload
+0x4a8a le_send_adv_ind
+0x4a9b le_send_adv_direct_ind
+0x4aab le_send_adv_transmit
+0x4ab3 le_send_scan_request
+0x4ac5 le_send_scan_response
+0x4ad4 le_connect_request
+0x4adf le_con_req_hop_retry
+0x4b1e le_init_adv
+0x4b22 le_update_param
+0x4b2d le_update_param_common
+0x4b43 le_update_channel_map
+0x4b51 le_acknowledge
+0x4b61 le_ack_unenc
+0x4b66 le_check_wak
+0x4b79 le_set_enc
+0x4b7d le_clear_enc
+0x4b89 le_wait_adv
+0x4b91 le_scan
+0x4bb4 le_create_conn
+0x4bc9 le_scan_check_sender_addr_type
+0x4bce le_xtype_fifo_count
+0x4bd0 le_xtype_fifo_is_empty
+0x4bd2 le_xtype_fifo_is_full
+0x4bd4 le_xtype_fifo_is_near_full
+0x4bd6 le_xtype_fifo_in
+0x4bd8 le_prepare_tx
+0x4bde le_prepare_tx_1
+0x4be2 le_prepare_tx_shutter
+0x4be9 le_send_empty_shutter
+0x4bed le_tx_4
+0x4bf0 in_le_tx_4
+0x4bf1 le_prepare_tx_cmd
+0x4bfb le_prepare_tx_ll
+0x4c0d le_prepare_l2cap
+0x4c18 le_prepare_smp0
+0x4c26 le_prepare_att
+0x4c4b le_send_empty_le_data_pre
+0x4c4d le_send_empty_le_data
+0x4c54 le_send_connection_update_req
+0x4c56 le_send_channel_map_req
+0x4c58 le_send_terminate_ind
+0x4c5a le_send_enc_req
+0x4c6b le_send_enc_rsp
+0x4c7e le_ltk_lost
+0x4c84 le_send_start_enc_req
+0x4c86 le_send_start_enc_rsp
+0x4c8f le_send_start_enc_rsp_end
+0x4c90 le_send_start_enc_rsp_common
+0x4c92 le_send_start_enc_rsp_shutter
+0x4c97 le_send_start_enc_rsp0
+0x4c9c le_send_unknown_rsp
+0x4ca0 le_send_feature
+0x4ca4 le_send_ping_response
+0x4ca6 le_send_version_ind
+0x4caa le_send_reject_ind
+0x4cae le_send_conn_param_req
+0x4cbb le_send_smp_pairing_request
+0x4cc3 le_send_smp_pairing_response
+0x4ccd le_send_smp_pairing_response_common
+0x4cd1 le_parse_smp_pairing_request_check_irk
+0x4cda le_send_smp_pairing_confirm
+0x4ce1 le_send_smp_pairing_confirm_sc
+0x4ce8 le_send_smp_pairing_random
+0x4ceb le_send_smp_mrandom
+0x4ced le_send_smp_pairing_failed
+0x4cf2 le_send_smp_encryption_information
+0x4d01 le_send_smp_encryption_information_shutter
+0x4d10 le_send_smp_master_identification
+0x4d17 le_send_smp_master_identification_only
+0x4d19 le_send_smp_master_identification_common
+0x4d22 le_send_smp_master_identification_shutter
+0x4d27 le_send_smp_identity_information
+0x4d2d le_send_smp_identity_address_information
+0x4d32 le_send_smp_signing_information
+0x4d35 le_send_smp_security_request
+0x4d39 le_send_smp_pairing_public_key
+0x4d4e le_send_public_key_continue
+0x4d58 le_send_smp_publickey_continue_common
+0x4d5e le_send_public_key_continue2
+0x4d64 le_send_smp_pairing_dhkey_check
+0x4d69 le_send_smp_128
+0x4d6e le_send_att_error_response_notfound
+0x4d6f le_send_att_error_response
+0x4d75 le_send_att_exchange_mtu_req
+0x4d78 le_send_att_find_information_request
+0x4d7d le_send_att_find_information_response
+0x4d81 le_send_att_find_information_res_loop
+0x4d8b le_send_att_find_information_res_cont
+0x4d8e le_send_att_find_information_res_next
+0x4d91 le_send_att_find_information_res_end
+0x4d93 le_send_att_find_by_type_value_request
+0x4d9d le_start_end_handle_check_1
+0x4da4 le_start_end_handle_check_1_fail
+0x4da7 le_send_att_find_by_type_value_response
+0x4db7 le_send_att_find_by_type_value_res_primary
+0x4dbc le_send_att_find_primary_search_loop
+0x4dcc le_send_att_find_primary_search_loop1
+0x4dd0 le_send_att_error_response_notfound2
+0x4dd3 le_send_att_find_primary_search_end_start_handle_found
+0x4ddb le_send_att_find_primary_search_end_ending_handle_found
+0x4de1 le_send_att_find_primary_search_end
+0x4dec le_send_att_read_by_type_request
+0x4df4 le_send_att_read_by_type_response
+0x4e02 le_send_att_read_by_type_response_loop
+0x4e11 le_send_att_read_by_type_response_next_handle
+0x4e13 le_send_att_read_by_type_response_end
+0x4e15 le_send_att_read_by_type_res_found_next
+0x4e28 le_send_att_read_by_type_write_properties
+0x4e2f le_send_att_read_by_type_write_uuid
+0x4e3d le_send_att_read_by_type_res_not_characteristic
+0x4e3f le_send_att_read_by_type_res_not_char_loop
+0x4e45 le_check_if_name_uuid
+0x4e4d le_send_att_read_by_type_res_not_name
+0x4e4e le_send_att_read_by_type_res_not_char_common
+0x4e56 le_send_att_read_by_type_res_not_char_next
+0x4e58 le_send_att_read_request
+0x4e60 le_send_att_read_response
+0x4e66 le_send_att_read_response_common
+0x4e6e le_send_att_read_response_less
+0x4e71 le_send_att_read_response_error_insufficient_authentication
+0x4e77 le_send_att_read_blob_request
+0x4e7c le_send_att_read_blob_response
+0x4e87 le_send_att_read_blob_response_less
+0x4e8b le_send_att_read_multiple_request
+0x4e92 le_send_att_read_multiple_response
+0x4e98 le_send_att_read_multiple_response_loop
+0x4ea3 le_copy_att_value_loop_3
+0x4eab le_send_att_read_multiple_response_end
+0x4eb0 le_send_att_read_multiple_response_end_1
+0x4eb6 le_send_att_read_multiple_response_fail
+0x4eb8 le_send_att_read_by_group_type_request
+0x4ec0 le_send_att_read_by_group_type_response
+0x4ecd le_send_att_read_by_group_type_response_loop
+0x4edd le_send_att_read_by_group_type_store_write_record
+0x4ee8 le_send_att_read_by_group_type_store_record
+0x4eed le_send_att_read_by_group_type_next_handle
+0x4eef le_send_att_read_by_group_type_last_find
+0x4ef1 le_send_att_read_by_group_type_end0
+0x4ef4 le_send_att_read_by_group_type_end1
+0x4ef8 le_send_att_read_by_group_type_end_common
+0x4efb le_att_next_handle
+0x4eff le_att_check_handle_end
+0x4f03 le_att_same_type
+0x4f05 le_att_check_same_common
+0x4f0b le_att_same_uuid
+0x4f0e le_store_att_record
+0x4f13 le_send_auto_len_by_mem
+0x4f15 le_write_att_record
+0x4f1a le_write_att_record_common
+0x4f1e le_send_att_write_request
+0x4f25 le_send_att_write_response
+0x4f27 le_send_att_prepare_write_request
+0x4f29 le_send_att_continue
+0x4f2e le_send_att_notify_continue
+0x4f30 le_send_att_prepare_write_response_continue
+0x4f46 le_send_att_prepare_write_response
+0x4f59 le_send_not_fill_l2cap_len
+0x4f5e le_send_att_insert_continue
+0x4f62 le_send_att_insert_cont_next
+0x4f66 le_send_att_execute_write_request
+0x4f68 le_send_att_execute_write_response
+0x4f6a le_att_check_notification_enable
+0x4f77 le_send_att_handle_value_notification
+0x4f79 le_send_att_handle_value_indication
+0x4f7b le_send_att_handle_value_confirmation
+0x4f7d le_send_att_write_command
+0x4f7f le_send_att_signed_write_command
+0x4f81 le_send_autolen
+0x4f87 le_send_empty
+0x4f89 le_send_packet
+0x4f90 le_send_non_l2cap
+0x4f92 le_send_non_l2cap1
+0x4f93 le_send_non_l2cap2
+0x4fa0 le_send_no_txlen
+0x4fa5 le_parse
+0x4fb3 le_parse0
+0x4fcb le_parse_l2cap
+0x4fd4 le_parse_continue_att
+0x4fdb le_parse_l2cap_continue_common
+0x4fe6 le_parse_l2cap_continue_write_command
+0x4fea le_parse_l2cap_continue_write_request
+0x4fee le_parse_l2cap_continue_prepare_write_request
+0x4ffb le_parse_smp
+0x500d le_parse_att
+0x501f le_parse_connection_update_req
+0x502b le_parse_channel_map_req
+0x5033 le_parse_terminate_ind
+0x5036 le_parse_terminate_ind_common
+0x5039 le_parse_enc_req
+0x504a le_parse_enc_rsp
+0x504f le_parse_start_enc_req
+0x5054 le_parse_start_enc_rsp
+0x5059 le_parse_unknown_rsp
+0x505a le_parse_feature_req
+0x505c le_parse_feature_rsp
+0x505d le_parse_pause_enc_req
+0x5062 le_parse_pause_enc_rsp
+0x5063 le_parse_ping_req
+0x5065 le_parse_version_ind
+0x5068 le_parse_reject_ind
+0x5069 le_parse_smp_pairing_request
+0x5078 le_set_tk_0
+0x507b le_parse_smp_pairing_request_shutter
+0x507d le_genernate_tk
+0x5086 le_check_master_support_secure_connect
+0x508b le_parse_smp_pairing_response
+0x5090 le_parse_smp_pairing_confirm
+0x509a le_parse_smp_pairing_confirm_secure_passkey
+0x50a0 le_parse_smp_pairing_random
+0x50a6 le_pairing_failed
+0x50a8 le_parse_smp_pairing_failed
+0x50ab le_parse_smp_pairing_random_sc
+0x50b6 le_parse_smp_pairing_random_sc_passkey
+0x50c0 le_parse_smp_pairing_random_success
+0x50c9 le_parse_smp_public_key
+0x50d0 le_parse_smp_dhkey_check
+0x50d5 le_parse_smp_encryption_information
+0x50d7 le_parse_smp_master_identification
+0x50d8 le_parse_smp_identity_information
+0x50e0 le_parse_smp_identity_address_information
+0x50e3 le_parse_smp_signing_information
+0x50e4 le_parse_smp_security_request
+0x50e5 le_parse_att_exchange_mtu_response
+0x50e8 le_parse_att_exchange_mtu_request
+0x50eb le_parse_att_find_information_request
+0x50ee le_parse_att_find_by_type_value_request
+0x50f8 le_parse_att_read_by_type_request
+0x50fc le_get_search_handle_start_end_common
+0x5101 le_get_search_att_type
+0x5103 le_get_search_common
+0x5105 le_get_search_common2
+0x5109 le_get_search_att_uuid
+0x510c le_parse_att_read_request
+0x5110 le_parse_att_read_blob_request
+0x5114 le_parse_att_read_multiple_request
+0x511a le_parse_att_read_by_group_type_request
+0x511e le_parse_att_write_command
+0x5120 le_parse_att_write_request
+0x5123 le_parse_att_write_request_end
+0x5125 le_check_long_packet_patch
+0x512f le_parse_att_write_common
+0x513c le_parse_att_write_common0
+0x5140 le_parse_att_write_common1
+0x5142 le_parse_att_prepare_write_request
+0x5157 le_parse_att_prepare_write_request0
+0x515b le_parse_att_prepare_write_request1
+0x5169 le_parse_att_prepare_write_request_end
+0x516b le_parse_att_execute_write_request
+0x516d le_writeatt_cb
+0x5170 le_supervision_update
+0x5179 le_supervision_flush
+0x517c le_adv
+0x517d le_adv_loop
+0x5193 le_adv_not_match
+0x5199 le_receive_window_size
+0x51af le_parse_connect_req
+0x51e0 le_init_attlist_search
+0x51ea le_att_handle_inrange
+0x51f3 le_att_handle_blank
+0x51f5 le_att_get_handle_ptr
+0x51f8 le_att_get_handle_ptr2
+0x51fc le_att_get_handle_loop1
+0x5205 le_att_get_handle_ptr_found
+0x5208 le_att_get_short_uuid_ptr
+0x520c le_att_get_short_uuid_loop
+0x5217 le_att_get_handle_info_from_ptr
+0x521a le_att_get_handle_info
+0x521f le_att_get_handle_loop
+0x5228 le_att_unfind_handle
+0x522a le_att_finded_handle
+0x5234 le_modified_name
+0x5238 le_modified_name_att_list
+0x5247 le_name_length_longer_than_att
+0x524a le_modified_name_adv
+0x5257 le_modified_name_adv_and_scan
+0x526a le_modified_name_adv_and_scan_store_data
+0x5270 le_modified_name_adv_and_scan_name_overflow
+0x5272 le_modified_name_adv_loop
+0x527d le_modified_name_adv_loop2
+0x5281 le_modified_name_adv_found_name
+0x5283 memcpy_empty
+0x5287 le_lpm_set_mult
+0x528c le_lpm_set_mult_attempt
+0x529a le_lpm_lost
+0x52a0 le_clean_att_list_handle_enable
+0x52a9 le_secure_connect_sm
+0x52b8 le_sc_passkey_wait_confirm
+0x52c2 le_sc_wait_confirm_gkey
+0x52c7 le_sc_confirm_gkey_ok
+0x52ca le_sc_receive_dhkey
+0x52ce le_dhkey_ready
+0x52d2 le_dhkey_ready_common
+0x52d8 le_dhkey_check_fail
+0x52d9 le_sc_confirm_gkey_ok_passkey
+0x52da le_dhkey_check_ok
+0x52e1 le_sc_send_public_key
+0x52e4 le_sc_ready_send_pairing_confirm
+0x52e6 le_sc_send_public_key_passkey
+0x52e8 le_sc_receive_public_key
+0x52ec le_public_key_ready
+0x52f0 le_sc_wait_send_public_key
+0x52f4 le_public_key_ready_send
+0x52fa le_pairing_public_key_continue
+0x5307 le_parse_continue
+0x530c init_lmp
+0x530d init_lmp_work
+0x531b init_lmp_reinit
+0x531e parse_rx_done
+0x531f parse_lmp
+0x536b reject_unknown_packet
+0x536c reject_lmp_packet
+0x536e parse_lmp_clkoffset_req
+0x5370 parse_enc_key_size_mask_req
+0x5372 parse_lmp_set_afh
+0x537f parse_lmp_escape
+0x5391 reject_unknown_ext_packet
+0x5394 parse_lmpext_chn_classification_req
+0x5397 parse_lmpext_iocap_req
+0x539a parse_lmpext_iocap_res
+0x539c iocap_lmpext_load
+0x53a0 iocap_lmpext_common
+0x53a2 parse_lmpext_accepted
+0x53a7 parse_lmpext_not_accepted
+0x53ac parse_lmpext_accepted_ptt
+0x53b0 parse_lmpext_not_accepted_ptt
+0x53b8 parse_lmpext_pause_encrypt
+0x53bb parse_lmpext_pause_encrypt_slave
+0x53bd parse_lmpext_resume_encrypt
+0x53bf parse_lmpext_features_req
+0x53c1 parse_lmpext_features_res
+0x53c7 parse_lmpext_features_res_not_hci
+0x53cb parse_lmp_accepted
+0x53dd parse_lmp_not_accepted
+0x53eb parse_lmp_accepted_switch
+0x53ee parse_lmp_not_accepted_switch
+0x53f4 parse_lmp_accepted_hostconn
+0x53fa parse_lmp_accepted_hostconn_ctn
+0x53fe parse_lmp_not_accepted_hostconn
+0x5403 parse_lmp_accepted_inrand
+0x540a parse_lmp_accepted_enc_mode
+0x5410 parse_lmp_accepted_enc_keysize
+0x5411 parse_lmp_accepted_start_enc
+0x5419 parse_lmp_accepted_stop_enc
+0x541a parse_lmp_not_accepted_aurand_send_detach
+0x541d parse_lmp_not_accepted_inrand
+0x5423 parse_lmp_inrand_key_missing
+0x5426 parse_lmp_not_accepted_name_req
+0x5427 parse_lmp_not_accepted_simple_pairing_number
+0x542a parse_lmp_not_accepted_dhkey_check
+0x542d parse_lmp_not_accepted_unsniff_req
+0x542f parse_lmp_accepted_unsniff_req
+0x5432 parse_lmp_accepted_sniff_req
+0x543e parse_lmp_not_acdcept_sniff_req
+0x5440 parse_lmp_crypt_key
+0x5443 parse_lmp_setup_complete
+0x5449 parse_lmp_max_slot
+0x544a parse_lmp_max_slot_req
+0x5452 parse_lmp_detach
+0x5454 accept_lmp_msg
+0x5456 parse_lmp_incr_power
+0x5458 parse_lmp_decr_power
+0x545a parse_lmp_version_res
+0x545e parse_lmp_auto_rate
+0x545f parse_lmp_in_rand
+0x546a parse_lmp_inrand_res
+0x546e pop_tid_follow
+0x5472 push_tid_follow
+0x5476 parse_lmp_au_rand_moudle
+0x547b parse_lmp_au_rand
+0x5486 parse_lmp_sres
+0x548f authentication_ok
+0x5493 authentication_ok_common
+0x549d authentication_ok_conn_sm
+0x54a2 parse_lmp_comb_key
+0x54ac parse_lmp_name_res
+0x54bc parse_lmp_name_res_end
+0x54c1 parse_lmp_name_req
+0x54c5 parse_lmp_conn_req
+0x54c6 parse_lmp_timing_accuracy_req
+0x54c8 parse_lmp_features_req
+0x54ca parse_lmp_version_req
+0x54cc parse_lmp_supervision_timeout
+0x54cd parse_lmp_sniff_subrating_req
+0x54db parse_lmpext_packet_type_table_req
+0x54e6 parse_lmp_min_power
+0x54e7 parse_lmp_page_mode_req
+0x54e8 parse_lmp_page_scan_mode_req
+0x54e9 parse_lmp_slot_offset
+0x54ec parse_lmp_sniff_req_check_sniff_para
+0x54f2 parse_lmp_sniff_req
+0x5504 set_big_value_to_attempt
+0x5507 lmp_reject_sniff
+0x5509 parse_lmp_start_encryption_req
+0x550d parse_lmp_stop_encryption_req
+0x550f parse_lmp_switch_req
+0x5514 parse_lmp_switch_req_not_accept
+0x5518 parse_lmp_switch_req_clear_mark
+0x551b parse_lmp_switch_accept
+0x5521 parse_lmp_use_semi_permanend_key
+0x5522 parse_lmp_unsniff_req
+0x5527 parse_lmp_encapsulated_header
+0x5530 parse_lmp_encapsulated_header_master
+0x5533 parse_lmp_encapsulated_header_reject
+0x5535 parse_lmp_accepted_encapsulated_header
+0x5537 parse_lmp_accepted_simple_pairing_number
+0x553a parse_lmp_accepted_simple_pairing_number_common
+0x553e parse_lmp_accepted_simple_pairing_number_ssp_pin
+0x5542 parse_lmp_accepted_simple_pairing_number_passkey
+0x5548 authentication_passkey
+0x5552 authentication_passkey_end
+0x5554 parse_lmp_accepted_dhkey_check
+0x5555 pairing_success
+0x555a parse_lmp_accepted_dhkey_check_common
+0x5562 parse_simple_pairing_confirm
+0x5568 parse_lmp_encapsulated_payload
+0x556c parse_encapsulated_payload_master
+0x5579 parse_lmp_encapsulated_payload_completed
+0x557f parse_lmp_encapsulated_payload_reject
+0x5581 parse_lmp_accepted_encapsulated_payload
+0x5585 parse_lmp_encapsulated_payload_all_accepted
+0x558c parse_lmp_encapsulated_payload_all_accepted_get_passkey
+0x558e parse_lmp_encapsulated_payload_all_accepted_master
+0x558f parse_lmp_simple_pairing_number
+0x5593 parse_lmp_simple_pairing_number_master
+0x559d parse_lmp_simple_pairing_number_master0
+0x559f parse_lmp_simple_pairing_number_reject
+0x55a1 parse_dhkey_check
+0x55a5 parse_dhkey_check_master
+0x55ac number_comparison_successed
+0x55b1 parse_dhkey_check_master0
+0x55b4 parse_lmp_dhkey_check_reject
+0x55b6 number_comparison_mode
+0x55bb comparison_result
+0x55be parse_lmp_clkoffset_res
+0x55bf parse_lmp_encryption_mode_req
+0x55ca parse_lmp_features_res
+0x55cb parse_lmp_features_res_not_hci
+0x55d1 parse_lmp_send_conn
+0x55d3 parse_lmp_test_activate
+0x55d8 parse_lmp_test_control
+0x55dd parse_lmp_test_xor
+0x55f1 parse_lmp_test_control_exit
+0x55f6 parse_lmp_test_control_pattern
+0x55fd parse_lmp_test_control_loopback_nowhite
+0x55fe parse_lmp_test_control_loopback
+0x560a parse_lmp_test_control_pause
+0x5610 lmp_copy_rand
+0x5613 lmp_generate_key
+0x5615 lmp_start_encryption
+0x5618 lmp_accept_inrand
+0x561d lmp_disconnect
+0x5621 send_lmp
+0x5628 send_lmp0
+0x5655 send_lmp_error
+0x5657 send_lmp_escape
+0x5662 send_lmp_accepted
+0x5672 send_create_conn_start_l2cap_timer_sm
+0x5678 send_lmp_accept_sniff_req
+0x5679 send_lmp_not_accepted
+0x5681 send_not_accept_aurand
+0x5686 send_lmpext_accepted
+0x568f send_lmpext_not_accepted
+0x5699 send_lmp_accepted_inrand
+0x569d send_lmp_accepted_enc_mode
+0x56a4 send_lmp_accepted_enc_start
+0x56a6 send_lmp_accepted_enc_exit
+0x56a8 send_lmp_accepted_enc_key
+0x56ab send_lmp_accepted_connection
+0x56b1 send_lmp_accept_dhkey_check
+0x56b2 send_lmpext_features_res
+0x56bd send_lmpext_io_cap_res
+0x56c8 responder_iocap_keyboard_only
+0x56ce responder_iocap_display_yesno
+0x56d4 responder_iocap_no_input_no_output
+0x56da set_ssp_mode_justwork
+0x56dc set_ssp_mode_numeric_comparison
+0x56de set_ssp_mode_passkey
+0x56e0 send_lmp_io_cap_req
+0x56e5 send_lmpext_sniff_subrating_req
+0x56e6 send_lmpext_sniff_subrating_res
+0x56ef send_lmp_name_res
+0x56f7 send_lmp_name_res_offset_ok
+0x56ff send_lmp_timing_accuracy_res
+0x5704 send_lmp_clkoffset_res
+0x570a send_lmp_clkoffset_res_master
+0x570e send_lmp_version_res
+0x5713 send_lmp_features_res
+0x5718 send_lmpext_features_req
+0x5723 send_lmpext_packet_type_table_req
+0x572f ssp_enable
+0x5737 ssp_disable
+0x573f afh_init
+0x5749 afh_open_all_channels
+0x574d afh_reset_map
+0x5754 afh_clear_error_counter
+0x5757 afh_set_send_flag
+0x575b send_lmpext_pause_encryption_req
+0x575f send_lmp_detach
+0x5764 prepare_disconnect
+0x5769 send_lmp_no_payload
+0x576c send_lmp_nopayload_reply
+0x576f send_lmp_encryption_mode_req
+0x5777 send_lmp_superto
+0x577c send_lmp_name_req
+0x5782 send_lmp_test_control
+0x5786 send_lmp_test_control_loop
+0x578b send_lmp_quality_of_service_req
+0x578c send_lmp_unit_key
+0x578d send_lmp_slot_offset
+0x579e send_lmp_slot_offset_reply
+0x57a2 send_lmp_switch_req
+0x57a6 switch_on_native
+0x57a7 switch_slack
+0x57b1 send_lmp_sniff_req
+0x57b7 send_lmp_timing_accuracy_req
+0x57bc send_lmp_unsniff_req
+0x57bf send_lmp_max_slot
+0x57c4 send_lmp_max_slot_req
+0x57c9 send_lmp_inc_power
+0x57ce send_lmp_setup_complete
+0x57dd send_lmp_setup_complete_has_sent
+0x57df send_lmp_version_req
+0x57e4 send_lmp_features_req
+0x57e9 sp_master_send_io_cap_get
+0x57ee sp_master_send_io_cap_send
+0x57f2 sp_master_send_lmp_encapsulated_header
+0x57f6 sp_master_commitment_compare
+0x5800 sp_master_commitment_compare_success
+0x5804 sp_master_send_lmp_simple_pairing_number
+0x5806 sp_send_lmp_encapsulated_header
+0x5808 send_lmp_encapsulated_header
+0x5814 send_lmp_encapsulated_payload
+0x5823 sp_send_lmp_simple_pairing_comfirm
+0x5826 send_lmp_simple_pairing_comfirm
+0x582e sp_send_lmp_simple_pairing_number
+0x5830 send_lmp_simple_pairing_number
+0x583c master_sp_sm_end
+0x583d sp_aurand_send
+0x5842 master_sp_send_lmp_dhkey_check
+0x5843 sp_send_lmp_dhkey_check
+0x5845 send_lmp_dhkey_check
+0x584f send_lmp_enc_key_size_mask_res
+0x5854 send_lmp_auto_rate
+0x5855 send_lmp_clkoffset_req
+0x5856 send_lmp_quality_of_service
+0x5857 send_lmp_test_activate
+0x5858 send_lmp_comb_key
+0x5862 send_lmp_inrand
+0x5865 send_lmp_rand
+0x586d send_lmp_aurand
+0x5873 send_lmp_aurand_notpairing
+0x5874 send_lmp_aurand_common
+0x5876 send_lmp_sres
+0x5885 send_lmp_sres_master
+0x5887 send_lmp_sres_startenc
+0x588d send_lmp_sres_startenc_slave
+0x5891 send_lmp_start_encryption
+0x5898 send_lmp_stop_encryption_req
+0x589b send_lmp_encryption_key_size_req
+0x58a1 msg_send_lmp
+0x58a9 send_lmpext
+0x58b0 send_lmp_follow
+0x58b6 send_lmp_tid
+0x58b9 send_lmp_reply
+0x58bb send_lmp_request
+0x58bc send_lmp_end
+0x58c0 send_lmp_exit
+0x58c5 lmo_fifo_check
+0x58ca lmo_fifo_process
+0x58d1 lmo_fifo_process_lmo0empty
+0x58db lmo_fifo_process_lmo2to1
+0x58e1 lmo_fifo_process_lmo1_empty
+0x58ec special_tid_store
+0x58f6 tid_reply
+0x58fa tid_initiate
+0x58fe tid_check
+0x5903 tid_set_reply
+0x5907 check_localsm
+0x590a setlocalsm_master
+0x590e setlocalsm_slave
+0x5912 check_localsm_master
+0x5916 generate_random_number
+0x5917 generate_random
+0x5918 generate_random_loop
+0x591c generate_linkkey
+0x5926 process_conn_sm
+0x592a process_conn_sm_continue
+0x5946 host_create_conn_done
+0x594c host_conn_judge_encrypt
+0x5950 host_create_conn_done_wait
+0x5955 host_create_conn_auth
+0x595b host_create_conn_auth_wait
+0x595c host_create_conn_pairing
+0x5961 host_create_conn_pairing_wait
+0x5962 host_creat_conn_send_feat_ext
+0x5965 host_create_conn_send_version
+0x5968 host_creat_conn_wait_switch
+0x5970 host_create_conn_switch_accept
+0x5972 host_create_conn_send_features
+0x5975 host_create_conn_send_switch
+0x597b host_create_conn_send_conn_req
+0x5980 host_create_conn_wait_accept
+0x5986 host_create_conn_resend
+0x5988 host_create_conn_waiting
+0x5989 host_create_conn_switch
+0x5992 host_create_conn_send_setup_complete
+0x5995 host_create_conn_wait_setup_complete
+0x5999 host_create_conn_wait_setup_complete_rtn
+0x599b host_create_conn_master_detach
+0x59a0 host_create_conn_send_detach
+0x59a4 host_create_conn_auth_pair
+0x59a7 host_create_conn_sm_done
+0x59a9 host_create_conn_auth_pair_true
+0x59b5 host_create_conn_auth_pair_nokey
+0x59bc host_create_conn_auth_pair_wait
+0x59bd host_create_conn_encrypt
+0x59c1 host_create_conn_encrypt_start
+0x59c6 host_create_conn_encrypt_wait
+0x59ca host_create_conn_encrypt_wait_clear
+0x59cc host_auth
+0x59d1 remote_auth
+0x59d7 pincode_reinit
+0x59dd module_init
+0x59fa module_lpm_uart_init
+0x5a12 module_lpm_init
+0x5a13 module_gpio_init
+0x5a18 module_lpm_lock
+0x5a1c module_app_dispatch
+0x5a22 module_process_bb_event
+0x5a3e module_process_bb_event_disconned
+0x5a44 module_process_spp_connected
+0x5a4b module_spp_disconnected
+0x5a4f module_sniff_param_check
+0x5a55 module_sniff_param_check_unsniff
+0x5a5a module_process_exit_sniff
+0x5a5b module_process_setup_complete
+0x5a5c module_process_bb_even_le_disconn
+0x5a5e module_process_evt_pincode_req
+0x5a5f module_process_unsniff_accept
+0x5a62 module_process_unsniff_not_accept
+0x5a63 module_process_le_conn
+0x5a67 module_process_bb_conn
+0x5a69 module_disconn_start
+0x5a6b module_set_conn_pin_high
+0x5a6d module_conn_start
+0x5a6f module_stop_adv_discovery
+0x5a76 module_set_conn_pin_low
+0x5a78 module_process_with_credit
+0x5a7b module_process
+0x5a93 module_hci_in_excp
+0x5a96 module_hci_release_except
+0x5aa5 module_hci_dicard_packet
+0x5aa9 module_hci_dicard_bytes
+0x5aaa module_hci_cmd_control
+0x5acc module_hci_cmd_set_bt_addr
+0x5ad1 module_hci_cmd_set_le_addr
+0x5ad6 module_hci_cmd_set_visibility
+0x5adf module_start_adv_discovery_by_command
+0x5ae5 moudle_start_adv_by_command
+0x5aec module_hci_cmd_set_bt_name
+0x5af5 module_hci_cmd_set_le_name
+0x5aff module_hci_cmd_receive_spp_data
+0x5b0d module_hci_cmd_pass_init_ng_rx_len_all
+0x5b0f module_hci_cmd_spp_exut_sniff
+0x5b11 module_hci_cmd_get_current_packet_len_and_remain_len
+0x5b17 module_hci_cmd_get_current_patcket_len
+0x5b20 module_hci_command_tx_spp_tx_complete
+0x5b23 module_hci_cmd_receive_le_data
+0x5b38 module_hci_cmd_gatt_notify_seperate
+0x5b47 module_hci_cmd_gatt_notify_clear_len
+0x5b4a module_hci_cmd_gatt_notify_start_packet
+0x5b55 module_hci_cmd_gatt_notify_start_packet1
+0x5b5e module_hci_cmd_notify_start_packet_mtu23
+0x5b60 module_le_tx_update_data
+0x5b71 module_le_tx_no_continue
+0x5b78 module_le_send_att_notify_common
+0x5b8c module_le_send_non_l2cap_last
+0x5b8e module_set_le_tx_data_flag
+0x5b91 module_clear_le_tx_data_flag
+0x5b94 module_le_check_if_send_once_more
+0x5b9a module_le_send_att_insert_continue
+0x5b9e module_le_send_att_insert_cont_next
+0x5ba2 module_le_tx_update_notify_continue
+0x5bb9 module_le_send_not_fill_l2cap_len
+0x5bbe module_le_send_md_notify
+0x5bd3 module_hci_cmd_inquire_status
+0x5bd4 module_hci_cmd_set_pairing_mode
+0x5bdb module_hci_pairing_pincode_mode
+0x5bde module_hci_pairing_just_work_mode
+0x5bdf module_hci_sspairing_mode
+0x5be4 module_hci_pairing_passkey
+0x5be6 module_hci_pairing_numeric_comparison
+0x5be8 module_hci_cmd_set_pincode
+0x5bf0 module_hci_cmd_set_uart_control_mode
+0x5bf6 module_hci_cmd_set_uart_baud
+0x5bfe module_hci_cmd_set_uart_baud_ok
+0x5c02 module_hci_cmd_version_request
+0x5c06 module_hci_event_set_cmd_send_response
+0x5c0a module_hci_cmd_bt_disconnect
+0x5c0c module_hci_cmd_bt_disconnect_doing
+0x5c0e module_hci_cmd_ble_disconnect
+0x5c10 module_hci_cmd_ble_disconnect_doing
+0x5c12 module_hci_cmd_set_nvram
+0x5c19 module_hci_cmd_confirm_gkey
+0x5c24 dhkey_not_accept
+0x5c27 module_hci_cmd_spp_number_comparison_result_is1
+0x5c29 module_hci_cmd_set_credit_given
+0x5c32 module_hci_cmd_auto_adv
+0x5c38 module_hci_cmd_auto_adv_loop
+0x5c42 module_hci_cmd_auto_adv_store_adv
+0x5c4c module_hci_cmd_auto_adv_store_scan
+0x5c55 module_hci_cmd_auto_adv_store_common
+0x5c62 module_hci_cmd_auto_adv_adv_analys
+0x5c67 module_hci_cmd_power_request
+0x5c6d module_hci_cmd_power_set
+0x5c74 module_hci_cmd_passkey_entry
+0x5c7a module_hci_cmd_set_gpio
+0x5c80 module_set_gpio_input
+0x5c85 module_set_gpio_output
+0x5c8b module_hci_cmd_read_gpio
+0x5c93 module_hci_cmd_le_set_pairing_mode
+0x5ca2 module_le_set_pairing_mode_secure_justwork
+0x5ca4 module_le_set_pairing_mode_secure_numeric
+0x5ca7 module_le_set_pairing_mode_secure_passkey
+0x5ca9 module_le_set_no_pairing
+0x5caa module_le_set_noinputnooutput
+0x5cac module_le_set_pairing_mode_lagacy_just_work
+0x5cae module_le_set_pairing_mode_lagacy_passkey
+0x5caf module_le_set_displayonly
+0x5cb1 module_hci_cmd_le_set_adv_data
+0x5cb9 module_hci_cmd_le_set_scan_data
+0x5cc1 module_hci_cmd_le_send_conn_update_req
+0x5ccb module_hci_cmd_le_start_pairing
+0x5cd3 module_hci_cmd_le_confirm_gkey
+0x5cda module_hci_cmd_le_confirm_gkey_ok
+0x5cdc module_hci_cmd_le_confirm_gkey_fail
+0x5cde module_hci_event_receive_invalid_cmd
+0x5ce1 module_hci_event_receive_valid_cmd
+0x5ce4 module_hci_event_spp_connect
+0x5ce6 module_hci_event_le_connect
+0x5ce8 module_hci_event_spp_disconnect
+0x5cea module_hci_event_le_disconnect
+0x5cec module_hci_event_set_cmd
+0x5cf9 module_hci_event_receive_spp_data
+0x5d03 module_hci_event_receive_le_data
+0x5d0e module_hci_event_enter_standby_mode
+0x5d0f module_hci_event_enter_standby_mode_len0
+0x5d12 module_hci_event_status_res
+0x5d23 module_hci_read_bt_status
+0x5d30 module_hci_event_store_device
+0x5d39 module_hci_event_gkey_generate
+0x5d3f module_hci_event_invalid_packet
+0x5d41 module_hci_event_passkey_entry_mode
+0x5d43 module_hci_event_le_tk
+0x5d49 module_hci_event_le_pairing_fail
+0x5d4b module_hci_event_le_pairing_success
+0x5d4d module_hci_event_bt_pairing_fail
+0x5d4f module_hci_event_bt_pairing_success
+0x5d50 module_hci_event_pairing_completed
+0x5d57 module_hci_event_pause_enc
+0x5d59 module_hci_event_start_enc
+0x5d5a module_hci_event_enc
+0x5d60 module_hci_event_le_gkey
+0x5d66 module_hci_prepare_tx
+0x5d71 module_set_mcu_wake_pin_high_delay
+0x5d73 module_set_mcu_wake_pin_h_delay
+0x5d78 module_set_mcu_wake_pin_high
+0x5d7a module_check_mcu_wake_pin_high
+0x5d7c module_set_mcu_wake_pin_low
+0x5d7e delay
+0x5d81 module_le_receive_data
+0x5d8c module_le_receive_data_ok
+0x5d8e module_le_transmit
+0x5d90 module_le_transmit1
+0x5d94 module_hci_event_send_le_data
+0x5d98 module_set_le_rx_data_flag
+0x5d9a module_store_moule_flag
+0x5d9c module_clear_le_rx_data_flag
+0x5d9f module_exit_sniff
+0x5da3 module_bb_event_timer
+0x5da4 module_bb_event_100ms_loop
+0x5dac module_read_vdd_timer
+0x5dbd module_set_unsniff_task_flag
+0x5dc1 module_clear_unsniff_task_flag
+0x5dc5 module_control_air_flow
+0x5dca mouse_init
+0x5de5 mouse_init_environment
+0x5dea mouse_load_eeprom_param
+0x5ded mouse_dpi_init
+0x5def mouse_idle
+0x5df2 mouse_check_dpi
+0x5df5 mouse_dpi_down
+0x5df9 mouse_dpi_up
+0x5e01 mouse_modified_dpi
+0x5e0a mouse_init_common
+0x5e10 mouse_gpio_init
+0x5e24 mouse_before_hibernate
+0x5e27 mouse_process_lpm_before
+0x5e3e mouse_wheel_check
+0x5e4d mouse_t_wheel_scan
+0x5e5b p_mouse_t_wheel_scan_judge1
+0x5e5f p_mouse_t_wheel_scan_judge2
+0x5e63 p_mouse_t_wheel_scan_judge11
+0x5e65 p_mouse_t_wheel_scan_judge12
+0x5e67 p_mouse_t_wheel_scan_judge21
+0x5e69 p_mouse_t_wheel_scan_judge22
+0x5e6b p_mouse_t_wheel_scan_judge3
+0x5e74 p_mouse_t_wheel_scan_judge30
+0x5e77 p_mouse_t_wheel_scan_judge31
+0x5e7a p_mouse_t_wheel_scan_judge32
+0x5e7d p_mouse_t_wheel_scan_judge33
+0x5e80 p_mouse_wheel_t_forward
+0x5e8a p_mouse_wheel_t_back
+0x5e94 mouse_wheel_scan
+0x5ea2 mouse_wheel_scan_judge1
+0x5ea6 mouse_wheel_scan_judge2
+0x5eaa mouse_wheel_scan_judge11
+0x5eac mouse_wheel_scan_judge12
+0x5eae mouse_wheel_scan_judge21
+0x5eb0 mouse_wheel_scan_judge22
+0x5eb2 mouse_wheel_scan_judge3
+0x5ebb mouse_wheel_scan_judge30
+0x5ebe mouse_wheel_scan_judge31
+0x5ec1 mouse_wheel_scan_judge32
+0x5ec4 mouse_wheel_scan_judge33
+0x5ec7 mouse_wheel_forward
+0x5ed1 mouse_wheel_back
+0x5edb le_mouse_bb_event_write_request
+0x5ede le_mouse_bb_event_enc_info
+0x5edf mouse_hid_connected
+0x5ee2 mouse_send_process
+0x5ee9 mouse_send_data
+0x5ef2 bt_send_empty_data
+0x5ef6 p_le_send_empty_data
+0x5efa mouse_no_data_timer_init
+0x5efd mouse_le_notify_update_data
+0x5f0c mouse_fill_data_le
+0x5f11 mouse_fill_data
+0x5f14 mouse_motion
+0x5f1e sensor_motion
+0x5f36 mouse_read_sensor3610_data
+0x5f42 mouse_3610_smart_enable
+0x5f4e mouse_3610_smart_disable
+0x5f5a mouse_read_sensor_common
+0x5f61 mouse_zwheel
+0x5f67 mouse_t_zwheel
+0x5f6d mouse_check_key_gpio
+0x5f7f mouse_key
+0x5f87 mouse_sensor_sdio_low
+0x5f8e mouse_init_sunt
+0x5f90 mouse_init_p3204
+0x5f98 mouse_init_p3204_cont
+0x5f9c mouse_init_sensor_reset
+0x5fa2 mouse_init_p3610
+0x5fb0 set_sensor_reg
+0x5fbb extsign
+0x5fbf extsign_bit3
+0x5fc3 le_mouse
+0x5fd4 mouse_priority_bb_event
+0x5fe7 le_mouse_bb_event_connected
+0x5fee mouse_bb_event_pincode
+0x5ff0 mouse_bb_event_reconn_failed
+0x5ff3 mouse_bt_hid_connected
+0x5ff5 mouse_bt_event_setup_complete
+0x5ff6 mouse_bb_disconnected
+0x6000 mouse_bb_discon_clear_stack
+0x600a mouse_event_light_state_pairing
+0x600d mouse_event_light_state_hibernate
+0x6010 mouse4_0_event_bb_disconn
+0x6014 mouse_bb_event_timer
+0x6017 mouse_bb_event_100ms_loop
+0x6021 mouse_check_mouse_state_timer
+0x6027 mouse_check_hid_handshake_timer
+0x602d mouse_check_discovery_timeout_timer
+0x6034 mouse_check_direct_timeout_timer
+0x603b mouse_check_blank_data_timeout_timer
+0x6042 mouse_check_no_data_timeout_timer
+0x6048 mouse_bb_event_discovery_btn
+0x6057 mouse3_0_check_reconn_target
+0x605a mouse4_0_check_reconn_target
+0x6060 mouse4_0_no_reconn_target
+0x6062 mouse3_0_bb_event_discovery_btn
+0x6066 mouse4_0_bb_event_discovery_btn
+0x6068 mouse_bt_hid_handshake
+0x6070 mouse_check_reconn_target
+0x6074 mouse_start_discovery
+0x607a mouse_start_discovery_norandom
+0x6084 mouse_stop_discovery
+0x608f mouse_disconnect
+0x6098 eeprom_store_mouse_dpi
+0x609e eeprom_load_mouse_dpi
+0x60a4 mouse_check_mouse_statue
+0x60aa mouse_devce_led_off
+0x60b0 mouse_statue_up
+0x60ba mouse_device1_led_on
+0x60bc mouse_device2_led_on
+0x60be mouse_device3_led_on
+0x60c0 twspi_reset
+0x60d1 sensor_read
+0x60db sensor_write
+0x60e3 spi_ncs_gpio_init
+0x60e7 spi_ncs_enable
+0x60e9 spi_ncs_disable
+0x60eb twspi_write
+0x60ec twspi_read
+0x60ed read_function_aes
+0x60f1 read_function
+0x60f4 read_fuction_zero
+0x60f6 get_block_header
+0x60f7 get_block_header0
+0x6101 read_first_block
+0x6108 get_iv
+0x6114 load_storage
+0x6124 load_storage_loop
+0x612b reload_eeprom
+0x6132 reload_eeprom_loop
+0x613b loadcode
+0x6140 loadcode_lpm
+0x6150 loadcode_otp
+0x615e loadcode_spi
+0x616d loadcode_iic
+0x6178 loadcode_iic_eeprom_2k
+0x6180 loadcode_hci
+0x6186 loadcode_hci_loop
+0x6188 loadcode_iic_by_eeprom
+0x618e set_ucode_status
+0x6195 decrypt_code
+0x6198 decrypt_code_loop
+0x619b decrypt_code_skip
+0x619f load_ucode
+0x61a7 load_ucode_loop
+0x61ac spid_init
+0x61bb spid_reset
+0x61c1 spid_write_reg
+0x61c9 spid_read_reg
+0x61ca spid_read_regs
+0x61d3 wait_spid_done
+0x61d9 spid_init_flash
+0x61e2 spid_unlock_flash
+0x61eb spid_write_flash
+0x61fb spid_read_flash
+0x6208 spi_read_flash_wait
+0x621d iicd_init_12m
+0x6224 wait_iicd_done
+0x6227 iicd_read_data
+0x6233 set_eeprom_size_2k
+0x6236 clear_eeprom_size_2k
+0x6239 iicd_read_eep_data_size_2k
+0x623d iicd_read_eep_size_2k_lcadcode
+0x6240 iicd_read_eep_size_2k
+0x6245 iicd_read_eep_data
+0x624c iicd_read_eep
+0x6254 iicd_read_eep_common
+0x626a iicd_read_eep_load_code_size_2k
+0x626f iicd_write_eep_data
+0x6271 iicd_write_ota_data
+0x6277 iicd_write_eep_loop
+0x6287 iicd_eep_transparency
+0x629a iicd_eep_deal_short_packet
+0x629f iicd_write_eep_size_2k
+0x62a8 iicd_write_eep
+0x62b7 iicd_write_eep_common
+0x62c4 otp_enable_chgpump
+0x62c7 otp_disable_chgpump
+0x62c9 otp_set_addr
+0x62cd otp_write
+0x62cf otp_program
+0x62d2 otp_program_bit
+0x62f1 otp_skip_0
+0x62fa otp_ce
+0x6300 otpd_read_init
+0x630a otpd_wait_end
+0x630d otpd_read_data
+0x6312 otpd_read_code
+0x631c uartd_prepare_tx
+0x631f uartd_send
+0x6322 uartd_rxdone
+0x6325 uart_set_baud_by_mem
+0x6328 uart_copy_tx_bytes_fast
+0x632a uart_copy_tx_bytes_fast_loop
+0x632f uart_copy_tx_bytes_fast_loop_four
+0x6335 uart_tx_8_bytes
+0x6338 uart_tx_4_bytes
+0x633b uart_copy_tx_bytes
+0x633d uart_copy_tx_bytes_loop
+0x6341 uart_copy_rx_bytes_fast
+0x6343 uart_copy_rx_bytes_fast_loop
+0x6348 uart_copy_rx_bytes_fast_loop_four
+0x634e uart_rx_8_bytes
+0x6351 uart_rx_4_bytes
+0x6354 uart_copy_rx_bytes
+0x6356 uart_copy_rx_bytes_loop
+0x635a check_51cmd_update_device_record
+0x6361 write_device_record
+0x6365 write_device_loop_find
+0x6371 write_device_loop_find0
+0x6375 set_index_finded_device
+0x637b set_index_find_device_master_addr
+0x6380 store_rec_data_common
+0x6383 set_index_finded_device_ble_mode
+0x6387 set_index_finded_device_irk
+0x6389 store_ble_rec_data_common
+0x638b set_index_finded_device_ediv
+0x638e nvram_find_addr_from_bd_list
+0x6393 find_addr_from_bd_list_ble_mode
+0x639c find_addr_from_bd_list_static_addr
+0x639f find_addr_from_bd_list_random_non_resolvable_private_address
+0x63a1 find_addr_from_bd_list_random_addr
+0x63a3 find_addr_from_bd_list_spp_mode
+0x63a7 find_addr_from_bd_list_common
+0x63af nvram_find_addr_from_list
+0x63bf nvram_find_addr_from_list_compare
+0x63c1 find_master_addr_from_list_compare
+0x63c6 find_addr_from_list_compare_ble_mode
+0x63c9 find_irk_form_list_compare
+0x63db genernate_master_macaddress
+0x63e4 find_ediv_form_list_compare
+0x63f3 check_nvram
+0x63f9 init_device_list
+0x63fd init_device_list_loop
+0x6402 load_device_list
+0x640a clear_key_exists
+0x640c load_device_list_mode_4
+0x6418 load_device_list_mode_4_shutter
+0x641c load_device_list_mode_4_shutter_label
+0x642b clear_ltk_exists_iphone_lost_ltk
+0x642c clear_ltk_exists
+0x642e eeprom_store_le_reconn_info
+0x6432 eeprom_store_bd_reconn_info
+0x6435 eeprom_store_reconn_info
+0x643f eeprom_store_rec_4_mode
+0x6441 eeprom_load_reconn_info
+0x644d eeprom_load_reconn_bdaddr
+0x6451 eeprom_load_rec_3_mode
+0x6453 eeprom_load_rec_4_mode
+0x6455 eeprom_erase_reconn_info
+0x645b eeprom_load_last_record_index
+0x645f eeprom_store_last_record_index
+0x6463 eeprom_store_remote_bdaddr
+0x6469 eeprom_store_remote_addr_unfind
+0x6472 eeprom_store_le_local_addr
+0x6476 eeprom_load_le_loacal_addr
+0x647a eeprom_load_remote_bdaddr
+0x6483 eeprom_linkkey_addr
+0x6489 eeprom_store_le_ltl
+0x648b eeprom_store_link_key
+0x648c eeprom_store_link_key_common
+0x6490 eeprom_load_ltk_key
+0x6492 eeprom_load_link_key
+0x6493 eeprom_load_link_key_common
+0x6497 eeprom_load_bdaddr_list
+0x649b find_addr_from_bd_list
+0x64a1 find_addr_from_list
+0x64b1 check_link_key_load
+0x64b7 check_ltk_load
+0x64bb find_addr_from_list_compare
+0x64c0 enable_usr
+0x64c2 gpio_set_wake_by_current_state
+0x64c7 gpio_set_wake
+0x64d2 gpio_clr_wake
+0x64dd gpio_config_input_nowake
+0x64df gpio_config_input
+0x64e0 gpio_config_input_without_wake
+0x64e8 gpio_config_output
+0x64ea gpio_config_output0
+0x64ed gpio_common
+0x64f3 gpio_check_active
+0x64f5 gpio_get_bit
+0x64f6 get_bit_common
+0x64fb gpio_get_bit_reverse
+0x64fd gpio_out_inactive
+0x64ff gpio_out_active
+0x6500 gpio_out_flag
+0x6503 gpio_out
+0x6504 gpio_set_bit
+0x6509 gpio_set_before_lpm_common
+0x6549 neglect2_from_6_pin
+0x654b neglect4_from_9_pin
+0x654d neglact4_from_23_pin
+0x654f neglact2_form_25_pin
+0x6551 neglact2_form_27_pin
+0x6553 neglact2_form_2_pin
+0x6555 neglact_1_pin
+0x6557 neglact_4_pin
+0x6559 neglect_2_pin
+0x655a neglect_pin_loop
+0x655e gpio_cfg_uart_tx_output
+0x6561 gpio_pu_uart_tx
+0x6564 gpio_rx_config_input_with_pu
+0x656a gpio_uart2gpio
+0x656e gpio_check_uart_state
+0x6571 load_chip_option
+0x6577 adc_init_data
+0x6584 adc_init_data_vinlpm
+0x658d adc_check_data_vinlpm
+0x6591 adc_check_2v_vinlpm
+0x6595 set_vdd_reference_voltage_1v
+0x6598 adc_init_data_hvin
+0x65a1 adc_check_data_hvin
+0x65a5 adc_check_1v_hvin
+0x65a9 set_vdd_reference_voltage_4v
+0x65ac adc_init_data_io
+0x65b5 adc_check_data_io
+0x65b9 adc_check_0_5v_io
+0x65bd set_vdd_reference_voltage_0_5v
+0x65c0 adc_set_mode
+0x65c5 adc_check_vinlpm
+0x65c7 adc_check_hvin
+0x65c9 adc_check_gpio
+0x65cd read_adc
+0x65de vdd_calculate_by_mode
+0x65e5 vdd_calculate_vinlpm
+0x65e9 vdd_calculate_hvin
+0x65ed vdd_calculate_io
+0x65f1 vdd_calculate
+0x65fa vdd_calculate2
+0x65fe vdd_calculate1
+0x6607 rfcomm_init
+0x6611 rfcomm_init_spp
+0x661b rfcomm_init_spp_with_credit
+0x661d set_cr_bit
+0x661f rfcomm_calculate_fcs_sabm
+0x662b rfcomm_calculate_fcs_ua
+0x6634 rfcomm_calculate_fcs_dlci0
+0x6638 rfcomm_calculate_fcs_dlci0_res
+0x663a rfcomm_save_fcs_uih
+0x6649 caculate_uihdata_fcs
+0x6655 caculate_fcs
+0x6662 mod2div
+0x6666 mod2div_loop
+0x666b mod2div_not_enough_reduction
+0x6675 mod2div_end
+0x6677 get_rfcomm_snd_adss
+0x6678 dlci_to_address_cmd
+0x667e channel_to_dlci
+0x6682 rfcomm_rx_process_dlci0_sabm
+0x668b rfcomm_rx_process_dlci0_ua
+0x668f rfcomm_rx_process
+0x6694 rfcomm_rx_process_remote_page
+0x669a parse_dlci0_rp
+0x66a2 parse_dlci0_rp_uih
+0x66ac parse_dlci0_rp_uih_pn_cmd
+0x66ae parse_dlci0_rp_uih_pn_cmd_spp
+0x66b4 parse_dlci0_rp_uih_pn_res
+0x66b6 parse_dlci0_rp_uih_pn_res_common
+0x66b8 get_rfcomm_param_modem_status
+0x66bf get_rfcomm_head_struct
+0x66c5 get_rfcomm_current_length
+0x66ca get_rfcomm_uih_head_struct
+0x66d2 get_param_payload_ptr
+0x66d5 get_rfcomm_length_common
+0x66de get_rfcomm_prarmer_negotiation
+0x66ed parse_dlci0_rp_uih_ms_cmd
+0x66ef parse_dlci0_rp_uih_ms_cmd_spp
+0x66f9 parse_dlci0_rp_uih_ms_res
+0x6700 parse_dlci0_rp_uih_ms_res_spp
+0x6704 parse_dlci0_rp_uih_cmd_port
+0x6720 parse_uih_rp
+0x6721 parse_uih_rp_spp
+0x672a parse_uih_rp_spp_ua
+0x672e parse_uih_rp_spp_sabm
+0x6740 parse_uih_spp_uih_credits
+0x6748 parse_uih_spp_uih
+0x6749 parse_uih_spp_uih_cont
+0x674d parse_uih_rp_spp_disconn_send_event
+0x674f parse_uih_rp_spp_disconn
+0x6755 rfcomm_rx_process_reconn
+0x675b parse_dlci0_reconn
+0x6762 parse_dlci0_reconn_uih
+0x676b parse_dlci0_reconn_uih_pn_cmd
+0x6772 parse_dlci0_reconn_uih_pn_cmd_spp
+0x6776 parse_dlci0_reconn_uih_ms_cmd
+0x677d parse_dlci0_reconn_uih_ms_cmd_spp
+0x6786 parse_dlci0_reconn_uih_ms_res
+0x678c parse_dlci0_reconn_uih_ms_res_spp
+0x6790 parse_uih_reconn
+0x6796 parse_uih_reconn_spp
+0x679b parse_uih_reconn_spp_ua
+0x679f parse_uih_reconn_spp_sabm
+0x67a0 parse_uih_reconn_spp_disconn
+0x67a1 rfcomm_rx_process_end
+0x67a2 rfcomm_send_more_pkt
+0x67a6 rfcomm_send_more_pkt_msc_cmd_spp
+0x67ab rfcomm_send_more_pkt_msc_cmd_spp0
+0x67b3 rfcomm_send_sabm
+0x67c1 rfcomm_send_ua
+0x67d0 rfcomm_send_param_neg_cmd
+0x67ed rfcomm_send_param_neg_res
+0x680a rfcomm_send_modem_status_cmd
+0x6820 rfcomm_send_modem_status_res
+0x6838 rfcomm_send_uih_without_payload
+0x6853 rfcomm_increase_credit_given
+0x685d spp_process_rx_data
+0x685f spp_tx_rfcomm_packet
+0x686a ssp_tx_rfcomm_from_uart
+0x6872 ssp_tx_rfcomm_from_uart_without_credit
+0x6877 ssp_tx_rfcomm_from_uart_common
+0x687f ssp_tx_rfcomm_from_uart_common0
+0x68aa ssp_tx_write_length
+0x68b3 ssp_tx_write_long_packet
+0x68bc ssp_tx_write_given_credit
+0x68c0 scheduler_process
+0x68d4 scheduler_process0
+0x68d8 scheduler_tx_disconnect_hid
+0x68dc scheduler_tx_l2cap_pkt
+0x68f9 scheduler_tx_l2cap_start_pkt
+0x6907 scheduler_tx_l2cap_last_pkt
+0x6909 scheduler_tx_l2cap_pkt_end
+0x690d scheduler_start_upper_sm
+0x6911 scheduler_start_upper_sm_hid
+0x6913 process_upper_sm
+0x6915 process_upper_sm_remote_page
+0x6918 process_upper_sm_rp_wait
+0x6919 process_upper_sm_reconn
+0x6939 process_upper_sm_reconn_wait
+0x693a process_upper_sm_reconn_sdp_conn
+0x6940 process_upper_sm_reconn_sdp_cfg
+0x694a process_upper_sm_reconn_ss_spp
+0x694f process_upper_sm_reconn_sdp_disconn
+0x6952 process_upper_sm_reconn_hid_ctrl_conn
+0x6958 process_upper_sm_reconn_hid_ctrl_cfg
+0x695e process_upper_sm_reconn_hid_int_conn
+0x6964 process_upper_sm_reconn_hid_int_cfg
+0x696a process_upper_sm_reconn_rfcomm_conn
+0x6970 process_upper_sm_reconn_rfcomm_cfg
+0x6976 process_upper_sm_reconn_rfcomm_sabm
+0x697c process_upper_sm_reconn_spp_cmd_pn
+0x6982 process_upper_sm_reconn_spp_sabm
+0x698d process_upper_sm_reconn_spp_cmd_ms
+0x6993 process_upper_sm_reconn_sdp_conn_wait
+0x6997 process_upper_sm_reconn_sdp_cfg_wait
+0x699a process_upper_sm_reconn_ss_spp_wait
+0x699f process_upper_sm_reconn_sdp_disconn_wait
+0x69a5 process_upper_sm_reconn_hid_ctrl_conn_wait
+0x69a9 process_upper_sm_reconn_hid_ctrl_cfg_wait
+0x69ad process_upper_sm_reconn_hid_int_conn_wait
+0x69b1 process_upper_sm_reconn_hid_int_cfg_wait
+0x69b6 process_upper_sm_reconn_rfcomm_conn_wait
+0x69ba process_upper_sm_reconn_rfcomm_cfg_wait
+0x69be process_upper_sm_reconn_rfcomm_sabm_wait
+0x69c3 process_upper_sm_reconn_spp_cmd_pn_wait
+0x69c7 process_upper_sm_reconn_spp_sabm_wait
+0x69cb process_upper_sm_reconn_spp_cmd_ms_wait
+0x69ce process_upper_sm_reconn_setup_hid
+0x69d0 process_upper_sm_reconn_setup_rfcomm
+0x69d2 process_upper_sm_reconn_setup_spp
+0x69d4 process_upper_sm_reconn_termination
+0x69d6 upper_sm_send_sdp_conn
+0x69de upper_sm_send_sdp_cfg
+0x69e4 upper_sm_send_sdp_disconn
+0x69ef upper_sm_send_ss_spp
+0x69f4 upper_sm_send_rfcomm_conn
+0x69fc upper_sm_send_rfcomm_cfg
+0x6a02 upper_sm_send_hid_ctrl_conn
+0x6a0a upper_sm_send_hid_ctrl_cfg
+0x6a10 upper_sm_send_hid_int_conn
+0x6a18 upper_sm_send_hid_int_cfg
+0x6a1e upper_sm_send_rfcomm_sabm
+0x6a26 upper_sm_send_spp_cmd_pn
+0x6a2d upper_sm_send_spp_sabm
+0x6a38 upper_sm_send_spp_cmd_ms
+0x6a3e sdp_process
+0x6a53 servicesearch_req
+0x6a73 servicesearch_req_loop
+0x6a76 servicesearch_req_blank
+0x6a7c patch_serviceattribute_req
+0x6a89 patch_serviceattribute_isnot_wholerangle
+0x6a8c patch_serviceattribute_judge_wholerangle
+0x6a96 patch_serviceattribute_judge_wholerangle_false3
+0x6a98 patch_serviceattribute_judge_wholerangle_false2
+0x6a9a patch_serviceattribute_judge_wholerangle_false1
+0x6a9c patch_serviceattribute_req_loop
+0x6a9f patch_serviceattribute_req_range_id
+0x6aa5 patch_serviceattribute_req_range_id_increase
+0x6aae patch_serviceattribute_req_range_id_finish
+0x6ab1 patch_serviceattribute_req_one_id
+0x6ab6 patch_serviceattribute_req_check_next_id
+0x6abd patch_answer_handle_attributelist_next
+0x6acf patch_answer_handle_attributelist_notfound
+0x6ad2 answer_handle_attributelist_end
+0x6af2 serviceattribute_req_all
+0x6aff continue_zero
+0x6b02 continue_one_byte
+0x6b06 continue_two_byte
+0x6b0a continue_end
+0x6b2b fisrt_fragment
+0x6b2f parlength_continue_byte
+0x6b32 parlength_continue_byte_end
+0x6b38 fragment_sdp
+0x6b46 answer_attributelist_full_loop
+0x6b51 last_frag_continue
+0x6b53 sdp_frag_end
+0x6b5d patch_servicesearchattribute_req
+0x6b68 patch_servicesearchattribute_req_loop
+0x6b6a patch_servicesearchattribute_req_uuid
+0x6b73 patch_servicesearchattribute_req_search
+0x6b78 patch_answer_attributelist_next
+0x6b83 patch_answer_attributelist_attrib_loop
+0x6b86 patch_answer_attributelist_notfound
+0x6b88 patch_servicesearchattribute_req_all
+0x6b9f patch_servicesearchattribute_req_all_continue
+0x6bae patch_answer_attributelist_end
+0x6bd2 patch_no_attribute_return
+0x6bdf servicesearchattribute_req_attributelist_loop
+0x6be5 servicesearchattribute_req_check_next_ctn
+0x6bed servicesearchattribute_req_check_handle
+0x6bf2 servicesearchattribute_req_attributelist_loop_continue
+0x6bf8 servicesearchattribute_req_check_next_ctn_continue
+0x6c00 servicesearchattribute_req_check_handle_continue
+0x6c05 servicesearchattribute_req_next_handle
+0x6c14 servicesearchattribute_req_next_handle_continue
+0x6c26 answer_attributelist_with_ctn_bytes
+0x6c28 answer_attributelist_calc_attribute_length
+0x6c61 answer_attributelist_with_ctn_bytes_continue
+0x6c63 answer_attributelist_calc_attribute_length_continue
+0x6c85 answer_attributelist_with_ctn_end
+0x6ca4 answer_attributelist_end_long
+0x6ccc answer_attributelist_end_long_continue
+0x6cea patch_sdp_data_len
+0x6cf3 patch_sdp_data_len_6
+0x6cf5 patch_sdp_get_data_6
+0x6cfa patch_sdp_get_data_6_8bit
+0x6cfd patch_sdp_get_data_6_16bit
+0x6d01 sdp_send_spp_request
+0x6d18 servicesearchattribute_res
+0x6d1c servicesearchattribute_res_spp
+0x6d25 srchfail
+0x6d26 find_rfcomm_channel_number
+0x6d29 find_rfcomm_channel_number_loop
+0x6d2f find_rfcomm_channel_number_find_adl
+0x6d30 find_rfcomm_channel_number_loop2
+0x6d36 find_rfcomm_channel_number_find_rfcomm
+0x6d3a sdp_invalid_service_record_handle
+0x6d3d sdp_invalid_pdu_size
+0x6d40 sdp_insufficient_resource
+0x6d43 sdp_invalid_reqest_syntax
+0x6d45 sdp_error_response
+0x6d4f ask_serviceclassid
+0x6d55 classidloop
+0x6d5d skip2bytes
+0x6d66 frstbwrong
+0x6d69 scndbwrong
+0x6d72 cmp032
+0x6d75 cmp016
+0x6d77 cmpuuid
+0x6d7b uuidsize
+0x6d98 wrong12b
+0x6d99 wrong12b1
+0x6d9d chck12dn
+0x6d9f loopornot
+0x6da4 asksrv_error
+0x6da6 dataelementtype6
+0x6db4 dsize32
+0x6db6 dsize16
+0x6db9 dsize
+0x6dbb dsize_error
+0x6dbd empth_sa_rsp
+0x6dc0 empty_ssa_rsp
+0x6dc2 empty_response
+0x6dd2 fullsearch
+0x6dd6 outempty
+0x6dd8 sdp_data_len
+0x6de0 sdp_data_len_rtn
+0x6de2 sdp_data_len_1
+0x6de5 sdp_data_len_5
+0x6de7 sdp_data_len_6
+0x6dea sdp_get_data
+0x6df1 sdp_get_data_1
+0x6df4 sdp_get_data_1_loop
+0x6df9 sdp_get_data_6
+0x6dfe sdp_get_data_6_8bit
+0x6e00 sdp_get_data_6_16bit
+0x6e03 sdp_data_size
+0x6e06 sdp_data_size_loop
+0x6e09 search_uuid
+0x6e10 search_uuid_next
+0x6e14 search_uuid_loop
+0x6e18 search_uuid_not_found
+0x6e1d search_uuid_nomatch
+0x6e20 search_handle
+0x6e24 search_handle_loop
+0x6e2e search_attrib
+0x6e32 search_attrib_next
+0x6e35 search_attrib_loop
+0x6e3d search_attrib_found_uuid
+0x6e43 search_attrib_loop_attribs
+0x6e4f search_attrib_end
+0x6e52 search_handle_attrib
+0x6e56 search_handle_attrib_next
+0x6e60 search_handl_attrib_found_handle
+0x6e62 search_handle_attrib_loop_attribs
+0x6e6c search_handle_attrib_end
+0x6e6e function_g2
+0x6e86 function_f6_eb
+0x6e96 get_r
+0x6e9a function_f6_ea
+0x6eae function_f5
+0x6ec0 function_f5_common
+0x6ed2 store_addr_common_b
+0x6ed7 store_addr_common_a
+0x6edc function_f4_ca
+0x6ee7 function_f4_cb
+0x6ef2 function_aes_cmac
+0x6ef7 function_ceil16
+0x6f05 function_aes_cmac_set_flag_0_balnk
+0x6f08 function_aes_cmac_set_flag_0
+0x6f09 function_aes_cmac_set_flag_0_common
+0x6f13 function_aes_cmac_aes
+0x6f16 function_aes_cmac_aes_loop
+0x6f1c function_aes_cmac_aes_loop_end
+0x6f24 load_inverse_result
+0x6f28 store_inverse_k
+0x6f2a inverse_k
+0x6f2d inverse_memdat
+0x6f31 bn_lshift_0_inverse
+0x6f3b function_aes_cmac_k1_inverse
+0x6f3c function_aes_cmac_inverse_common
+0x6f40 function_aes_cmac_k2_inverse
+0x6f42 function_aes_cmac_generate_subkey
+0x6f4a function_aes_cmac_k1
+0x6f54 function_aes_cmac_k1_0
+0x6f55 function_aes_cmac_k2
+0x6f5e function_aes_cmac_xor_rb
+0x6f5f function_aes_cmac_xor_rb_loop
+0x6f65 function_aes_cmac_xor_loop_common
+0x6f69 function_aes_cmac_padding
+0x6f6d function_aes_cmac_padding_loop
+0x6f72 function_aes_cmac_padding_loop2
+0x6f75 function_aes_cmac_padding_beq_length
+0x6f76 function_aes_cmac_padding_common
+0x6f78 function_aes_cmac_padding_big_length
+0x6f7a generate_kinit
+0x6f7e function_e21
+0x6f8d function_e22
+0x6f93 function_e22_pin_init
+0x6f94 function_e22_genx_pin
+0x6f97 function_e22_genx_loop
+0x6fa1 function_e22_genx_end
+0x6fad function_e1
+0x6fb0 function_e3
+0x6fb7 function_hash
+0x6fcd function_ar
+0x6fd6 function_ar_loop
+0x6fde function_ar_original
+0x6ff4 key_scheduling
+0x6ffa key_rotateloop
+0x7005 key_select_octet_loop
+0x700a key_select_octet_nwrap
+0x7014 bias_round_key_loop
+0x701b key_sched_zero
+0x701d create_byte_16_loop
+0x7025 xor_mod32
+0x7026 xor_mod32_ar2
+0x7029 xor_mod32_loop
+0x702f xor_mod32_invert
+0x7032 xor_even
+0x7038 el_boxes
+0x703b el_box_loop
+0x7041 e_boxes
+0x7047 pht
+0x704a pht_loop
+0x7056 permute
+0x7065 permute_exchange
+0x7066 permute_loop
+0x7075 add16
+0x7077 xor16
+0x7078 xor_add16
+0x7079 xoradd_loop
+0x707e xoradd_add
+0x707f xoradd_store
+0x7084 function_expand
+0x708a expand_12
+0x708b expand_cont
+0x708f key_offset
+0x709e key_addxor
+0x709f key_addxor_loop
+0x70a3 key_add
+0x70a5 key_high
+0x70a6 key_xor
+0x70a7 key_store
+0x70ab copy_aco
+0x70b0 concatenate_temp24
+0x70b1 concatenate_temp16
+0x70b4 loop1
+0x70b5 generate_stk
+0x70ba authenticate_rconfirm
+0x70bd authenticate_mconfirm
+0x70c2 generate_confirm
+0x70c5 generate_mrand
+0x70c8 generate_sk
+0x70d1 first_block_counter
+0x70d3 first_block_data
+0x70d4 first_block
+0x70e7 generate_mic
+0x70f6 generate_mic_loop
+0x70fb generate_mic_end
+0x70ff aes_crypt_data
+0x7109 le_encrypt
+0x7122 le_decrypt
+0x7127 le_dec_cont
+0x7145 wait_aes
+0x7147 do_aes_ocb
+0x714a do_aes_cbc
+0x714d do_aes_ctr
+0x7150 aes_init
+0x7153 function_s1
+0x7168 function_c1
+0x716f function_c1_master
+0x717f function_c1_irat
+0x7184 function_c1_loop1
+0x7197 padding_data
+0x719c padding_loop
+0x71a1 aes_load_data
+0x71a2 load_data_loop
+0x71a6 load_data_padding
+0x71ab aes_load_xor
+0x71ad load_key
+0x71af load_data128
+0x71b0 load_regext
+0x71b1 load_regext_loop
+0x71b6 load_sk
+0x71b8 clear_hidata
+0x71ba aes_clear_data
+0x71bb aes_clear
+0x71bc clear_loop
+0x71bd clear_data_rest
+0x71c0 store_aes_result
+0x71c2 send_aes_result_loop
+0x71c7 store_enc_data
+0x71cd store_enc_loop
+0x71d5 store_enc_byte
+0x71d9 compare_res
+0x71db compare_res_loop
+0x71e2 enable_authrom
+0x71e6 disable_authrom
+0x71ea init_memp
+0x7241 init_memp_256
+0x7293 shutter_init
+0x72b8 shutter_le_hard_switch_power_on_signal
+0x72bd in_poweron_hard_switch_led
+0x72c0 shutter_le_soft_switch_power_on_signal
+0x72cd shutter_le_adv_interval_set
+0x72d2 shutter_updata_mac
+0x72d6 shutter_byteswap
+0x72e5 shutter_le_fast_advertise
+0x72ec in_shutter_skip_set
+0x72ef shutter_le_scale_lpm_lock
+0x72f4 scale_process_bb_event
+0x72fd shutter_le_bb_event_timer
+0x72fe shutter_le_bb_event_100ms_loop
+0x730c shutter_conn_update_timer
+0x7313 shutter_app_updata_le_param_timer
+0x731c shutter_app_updata_le_param
+0x731f shutter_le_shutter_fast_adv_timer
+0x732a in_is_connected
+0x732c shutter_le_sleep_timer
+0x7334 scale_process_le_conn
+0x734c scale_process_le_discon
+0x735f shutter_le_tx_buff_inuse
+0x7361 shutter_le_check_tx_buff
+0x7363 shutter_le_tx_buff_unuse
+0x7365 shutter_le_discovery_timeout_sleep
+0x7366 shutter_le_sleep_req_hibernate
+0x7367 shutter_le_sleep_req_ok
+0x7369 shutter_le_sleep_enter
+0x736d shutter_le_sleep_clr
+0x7371 scale_process
+0x7375 shutter_le_parse_att_exchange_mtu_request
+0x7378 shutter_le_parse_att_exchange_mtu_request_save
+0x737a scale_process_idle
+0x737c shutter_le_before_hibernate
+0x7380 in_enter_hibernate
+0x7382 shutter_ui_led_init
+0x7386 in_lp1
+0x738c in_lp1_end
+0x738d shutter_ui_led_init_end
+0x738e shutter_ui_led_send
+0x73a3 shutter_ui_led_send_end
+0x73a4 shutter_ui_led_off
+0x73a5 shutter_key_init
+0x73aa shutter_key_lp1
+0x73ae shutter_key_init_end
+0x73af shutter_shutter_scan_key
+0x73b2 in_scan_key_lp1
+0x73c5 shutter_le_key_process
+0x73df shutter_le_key_lp1
+0x73f5 in_le_key_process_end
+0x73f9 shutter_le_send_key_data
+0x7404 in_le_send_lable
+0x740d in_le_send_lp1
+0x7419 in_le_key_is_release
+0x7423 in_le_send_key0_press
+0x7427 in_le_send_key1_press
+0x742b in_le_send_key2_press
+0x742f in_le_send_key3_press
+0x7433 in_le_send_key4_press
+0x7437 in_le_send_key5_press
+0x743b in_le_send_key0_rel
+0x743f in_le_send_key1_rel
+0x7443 in_le_send_key2_rel
+0x7447 in_le_send_key3_rel
+0x744b in_le_send_key4_rel
+0x744f in_le_send_key5_rel
+0x7453 shutter_le_disble_key_led
+0x7457 shutter_le_key_led_index
+0x745b in_le_light_led
+0x745c in_le_key_led_0
+0x745e in_le_key_led_1
+0x7460 in_le_key_led_2
+0x7462 in_le_key_led_3
+0x7464 shutter_ui_power_timeout_timer
+0x746c shutter_ui_button_timeout_timer
+0x7472 shutter_shuuter_led_on
+0x7475 shutter_bb_event_button_up
+0x7478 in_power_release
+0x747a shutter_evt_button_long_pressed
+0x747e shutter_shutter_power_on_off
+0x7481 shutter_le_power_off
+0x7487 shutter_shutter_power_off_end
+0x748a shutter_shutter_power_off_signal
+0x748c shutter_le_process_lpm_before
+0x7491 in_shutter_process_lpm_before_lp1
+0x7495 shutter_le_process_lpm_before_end
+0x7496 shutter_le_queue_init
+0x749b shutter_le_queue_clear
+0x749c shutter_le_queue_put
+0x74ab shutter_le_queue_increase
+0x74b2 shutter_le_queue_put_end
+0x74b4 shutter_le_queue_get
+0x74c1 shutter_le_queue_read_point
+0x74c7 shutter_le_packet_interval_set
+0x74ca shutter_le_send_packet
+0x74d0 shutter_le_shutter_send_keydata
+0x74d5 shutter_le_tx_indication
+0x74d7 shutter_le_tx_notification
+0x74dc shutter_le_tx_common
+0x74de shutter_shutter_cancel_key_shake
+0x74e5 shutter_le_send_att_handle_value_notification
+0x74f4 shutter_le_receive_data
+0x74f8 shutter_le_parse_att_write_request
+0x74fb shutter_key_data_send
+0x74fd init_shutter_le_att_list
+0x75c9 shutter_init_param
+0x75e0 publickey_init
+0x75e3 publickey_calc
+0x75f2 stop_publickey_calc_256
+0x75f4 sp_initialize
+0x75fb sp_clear_flags
+0x7600 sp_generate_local_key
+0x7602 sp_master_generate_local_key
+0x7605 sp_generate_local_key0
+0x7608 sp_start_send_pubkey
+0x760d sp_calculate_commitment
+0x7618 master_sp_calculate_commitment
+0x761f sp_calculate_commitment0
+0x7625 master_sp_calculate_commitment0
+0x7628 sp_local_random_key_generator
+0x762b sp_calculate_commitment_wait_dhkey_calc
+0x762d sp_confirm_check
+0x763f sp_confirm_check_success
+0x7645 sp_confirm_check_success_master
+0x7648 sp_confirm_check_failed
+0x764e sp_confirm_check_failed_master
+0x7651 sp_confirm_calc
+0x7655 sp_confirm_calc_ready
+0x7662 sp_confirm_calc_master
+0x7665 sp_master_key_prarm_push
+0x766f sp_link_key_prarm_push
+0x7679 sp_link_key_calc
+0x7684 sp_pubkey_calc
+0x769c sp_pubkey_generated
+0x76a2 sp_dhkey_calc
+0x76b4 sp_dhkey_generated
+0x76bb random_generator
+0x76c0 compare4
+0x76ca compare4_failed
+0x76cc compare4_success
+0x76ce simple_pairing_sequence
+0x76e0 master_simple_paring_sequence
+0x76f3 master_set_mem_master_sp_flag
+0x76f5 master_clear_mem_master_sp_flag
+0x76f7 sp_calc_sequence
+0x7703 sp_calc_sequence_done
+0x7708 bn_testbit
+0x770e ec_copy
+0x7711 bn_eq_zero
+0x7717 bn_eq_0
+0x7720 bn_bigeq
+0x7723 bn_bigeq_0
+0x772d bn_add
+0x772f bn_add_0
+0x773b bn_sub
+0x773d bn_sub_0
+0x7749 bn_rshift6
+0x774b bn_rshift
+0x774c bn_rshift_0
+0x7757 bn_lshift
+0x7759 bn_lshift_0
+0x7764 bn_lshiftmod
+0x7765 bn_lshiftmod_ismod
+0x776d bn_lshiftmod_0
+0x7771 bn_addmod
+0x7774 bn_submod
+0x777b bn_p192mod
+0x779c bn_load
+0x779d bn_load_0
+0x77a2 bn_mulmod
+0x77ac bn_mulmod_1
+0x77ae bn_mulmod_0
+0x77c4 bn_sqrmod
+0x77c6 bn_rshifteven
+0x77c7 bn_rshifteven_1
+0x77d6 bn_rshifteven_0
+0x77da bn_invmod
+0x77e9 bn_invmod_2
+0x7804 bn_invmod_1
+0x7812 bn_invmod_0
+0x781f ecdbl
+0x7870 ecadd
+0x78dc eckp_0
+0x78ea eckp_1
+0x78ef ecunmapz
+0x7901 sha_endian_swap2
+0x7904 sha_endian_loop
+0x790c sha_getw
+0x7910 sha_r
+0x7912 sha_r_loop
+0x7927 sha_init
+0x7929 sha_init_0
+0x792e sha
+0x7933 sha_0
+0x793c sha_loop
+0x7965 sha_1
+0x796b sha_result
+0x796d sha_regext_save
+0x7972 pad_xor
+0x7975 pad_xor_0
+0x797c pad_xor_1
+0x797f g_noninit_number_confirm
+0x7982 g_noninit
+0x7984 g_noninit0
+0x7992 g_init
+0x79a1 g_common
+0x79aa g_common0
+0x79bb function_f1_no_key
+0x79bd function_f1
+0x79bf function_f1_common
+0x79f5 function_f2
+0x7a2b function_f3a
+0x7a2d function_f3a_common
+0x7a3d function_f3a_no_pin
+0x7a40 function_f3b_no_pin
+0x7a43 function_f3b
+0x7a45 function_f3b_common
+0x7a52 function_f3_common
+0x7a7c eckp_calc_init
+0x7a7d eckp_calc_init_1
+0x7a87 eckp_calc
+0x7a8f memcpy_dword_swap4
+0x7a90 memcpy_dword_swap
+0x7a91 memcpy_dword_swap_loop
+0x7a96 sp_initialize_256
+0x7a9d sp_pubkey_calc_256
+0x7ab3 sp_pubkey_generated_256
+0x7ab9 sp_dhkey_calc_256
+0x7ac9 sp_dhkey_generated_256
+0x7acf sp_calc_sequence_256
+0x7ad9 sp_calc_sequence_done_256
+0x7ae0 eckp_calc_256
+0x7ae8 eckp_calc_init_256
+0x7aec eckp_calc_init_256_1
+0x7af6 ecunmapz_256
+0x7b08 ecdbl_256
+0x7b59 ecadd_256
+0x7bc5 bn_invmod_256
+0x7bd3 bn_invmod_256_2
+0x7bee bn_invmod_256_1
+0x7bfc bn_invmod_256_0
+0x7c03 bn_mulmod_256
+0x7c11 bn_mulmod_256_1
+0x7c17 bn_mulmod_256_0
+0x7c2c bn_p256mod
+0x7c96 bn_load_mem
+0x7c9a bn_load_256
+0x7c9c bn_sqrmod_256
+0x7c9e bn_add_256
+0x7ca0 bn_addmod_256
+0x7ca3 bn_lshiftmod_256
+0x7ca4 bn_lshiftmod_ismod_256
+0x7cad bn_lshiftmod_p_256
+0x7cb5 sub_p2_256
+0x7cb9 bn_submod_256
+0x7cc3 bn_submod_256_np
+0x7ccc bn_sub_256
+0x7cce bn_rshift_256
+0x7cd1 bn_lshift_256
+0x7cd4 bn_bigeq_256
+0x7cd8 bn_eq_zero_256
+0x7cdb bn_rshifteven_256
+0x7cdc bn_rshifteven_256_1
+0x7ceb bn_rshifteven_256_0
+0x7cef ui_init
+0x7cf4 ui_dispatch
+0x7cf6 ui_button_init
+0x7d02 ui_button_polling
+0x7d09 ui_button_down
+0x7d15 ui_button_up
+0x7d1f ui_button_check_long_press
+0x7d26 lpm_button_get_wake_lock
+0x7d28 lpm_button_clean_wake_lock
+0x7d2a ui_led_init
+0x7d2f ui_led_blink_stop
+0x7d33 ui_led_off
+0x7d38 ui_led_on
+0x7d3e ui_led_blink_start
+0x7d3f ui_led_blink_start1
+0x7d44 ui_led_blink_polling
+0x7d53 in_ui_led_blink_polling_dark
+0x7d58 in_ui_led_infinite
+0x7d5a in_ui_led_blink_timer_start
+0x7d5c ui_timer_timeout
+0x7d60 ui_timer_check
+0x7d68 ui_timer_check_loop
+0x7d72 ui_timer_init
+0x7d75 ui_timer_check_end
+0x7d7d ui_timer_check_send_evt
+0x7d80 ui_ipc_get_lock
+0x7d81 ui_ipc_get_lock_wait
+0x7d84 ui_ipc_put_lock
+0x7d86 ui_ipc_send_event
+0x7d90 ui_ipc_send_cmd
+0x7d9a ui_ipc_clean_all_fifo
+0x7d9e check_51cmd
+0x7daa check_51cmd_once
+0x7dce check_51cmd_once_continue
+0x7ddb check_51cmd_dhkey_not_accept
+0x7dde check_51cmd_ble_update_connect_param
+0x7de0 check_51cmd_check_idle
+0x7de5 check_51cmd_restore
+0x7de7 check_51cmd_role_switch
+0x7df0 check_51cmd_start_discovery
+0x7df5 check_51cmd_stop_discovery
+0x7dfb check_51cmd_reconnect
+0x7dfd check_51cmd_disconnect
+0x7e00 check_51cmd_enter_sniff_subrating
+0x7e01 check_51cmd_exit_sniff_subrating
+0x7e02 check_51cmd_sniff_test
+0x7e03 check_51cmd_pincode
+0x7e05 check_51cmd_inq
+0x7e06 check_51cmd_stop_inq
+0x7e07 check_51cmd_adv
+0x7e0d check_51cmd_stop_adv
+0x7e12 check_51cmd_direct_adv
+0x7e18 check_51cmd_stop_direct_adv
+0x7e1d check_51cmd_le_disconnect
+0x7e21 check_51cmd_le_start_con
+0x7e24 check_51cmd_start_scan
+0x7e26 check_51cmd_stop_scan
+0x7e29 check_51cmd_le_smp_sec_req
+0x7e2b check_51cmd_hibernate
+0x7e38 check_51cmd_hibernate_btn_disabled
+0x7e3b check_51cmd_le_start_write
+0x7e3d check_51cmd_bb_reconn_cancel
+0x7e3f ui_check_paring_button
+0x7e43 right_shift_n
+0x7e45 right_shift_n_loop
+0x7e48 push_stack
+0x7e56 pop_stack
+0x7e64 get_contw
+0x7e67 get_contr
+0x7e6a store_contw
+0x7e6d store_contr
+0x7e70 save_cont_pointers
+0x7e75 load_cont_pointers
+0x7e7a memcpy96
+0x7e7b memcpy64
+0x7e7d memcpy12
+0x7e7e memcpy4
+0x7e81 memcpy8
+0x7e84 memcpy48
+0x7e85 memcpy32
+0x7e86 memcpy24
+0x7e87 memcpy16
+0x7e89 delay_10ms
+0x7e8c delay_ms_wait
+0x7e90 bn_zero
+0x7e91 memset0
+0x7e92 memset8
+0x7e95 memset0_8
+0x7e98 memset0_4
+0x7e9b clear_mem_256
+0x7e9d clear_mem_512
+0x7e9f clear_mem
+0x7ea2 clear_mem_loop
+0x7ea5 clear_temp_block
+0x7ea8 xor_loop
+0x7eb0 inverse_data
+0x7eb8 inverse_loop
+0x7ec0 memcpy_fast
+0x7ec2 memcpy_fast_loop
+0x7ec7 memcpy_fast_loop_four
+0x7ecd memcpy
+0x7ecf memcpy_loop
+0x7ed3 timer_stop
+0x7ed4 timer_init
+0x7ede timer_check_timeout
+0x7ee2 timer_check
+0x7eee timer_loop
+0x7ef2 timer_counting
+0x7ef9 clk_add
+0x7f04 clk_diff_rt
+0x7f06 clk_diff
+0x7f0b clk_diff_pos
+0x7f10 clk2rt
+0x7f16 clk2lpo
+0x7f1d clk2bt
+0x7f25 string2dec_from_uart
+0x7f26 string2dec_from_uart_done
+0x7f31 uchar2dialog
+0x7f3a uchar2dialog_number
+0x7f3d uchar2dialog_a2f
+0x7f40 pn9
+0x7f43 pn9_loop
+0x7f53 wait_div_end
+0x7f55 string_compare
+0x7f5e ceiling
+0x7f62 swap
+0x7f66 clean_mem
+0x7f69 callback_func
+0x7f6b wait_uarttx
+0x7f6e get_uart_rrptr
+0x7f71 ice_break
+0x7f73 ice_setbp
+0x7f78 ice_setbp2
+0x7f7d ice_set_write_bp
+0x7f80 test_enable_white
+0x7f84 check_uart_tx_buff
+0x7f86 pdata_sub_temp
+0x7f88 fifo_in
+0x7f8f fifo_in_push
+0x7f95 fifo_out
+0x7f9a fifo_out_loop
+0x7f9f fifo_out_end
+0x7fa2 fifo_is_empty
+0x7fa4 fifo_is_full
+0x7fa6 fifo_is_near_full
+0x7fa8 fifo_content_count
+0x7fa9 fifo_content_count_loop
+0x7faf not_greater_than
+
+/* Parse Command:
+TX: take bits from tx fifo, jam it into shift and a destination (rf,bucket)
+RX: take bits from demod,  jam it into shift and a destination (acl,sco,bucket) */
+
+/* Inject Command:
+TX: 0 into shift, send tail of shift into a destination (rf,bucket)
+RX: 0 into shift, send tail of shift into a destination (acl,sco,bucket) */
+
+format
+  ! 15 romdat
+  % d0
+  % d1
+  % d2
+  % d3
+  [8] d0
+  [8] d1
+  [8] d2
+  [8] d3
+end
+
+format
+  ! 15 enable   /* set flag to 1 */
+  % flag
+  [5] opcode
+  [6] 1
+  [6] flag
+  [6] null
+  [9] 0
+end
+ /* High 5 bytes of channel map */
+format
+  ! 15 pulse   /* set flag to 1 */
+  % flag
+  [5] opcode
+  [6] 1
+  [6] flag
+  [6] null
+  [9] 0
+end
+
+format
+  ! 15 disable   /* set flag to 0 */
+  % flag
+  [5] opcode
+  [6] 2
+  [6] flag
+  [6] null
+  [9] 0
+end
+
+format
+  ! 15 set0  /* set selected bit of reg to 0 */
+  % immediate
+  % reg
+  [5] opcode
+  [6] 9
+  [6] never
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 15 set1  /* set selected bit of reg to 1 */
+  % immediate
+  % reg
+  [5] opcode
+  [6] 9          /* alu op demux */
+  [6] always
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 15 setflag  /* set selected bit of the reg to the polarity of the flag */
+  % flag
+  % immediate
+  % reg
+  [5] opcode
+  [6] 9
+  [6] flag
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 15 nsetflag  /* set the selected bit of the reg to the opposite polarity of the flag */
+  % flag
+  % immediate
+  % reg
+  [5] opcode
+  [6] 0x29
+  [6] flag
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 15 setflip    /* invert the selected bit of the reg */
+  % immediate
+  % reg
+  [5] opcode
+  [6] 10            /* this is alu op */
+  [6] always
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 0x1f qset1      /* demux the lowest 4 bit of queue and OR it with regr into regw */
+  % reg             /* in short, set the bit in reg indexed by queue to 1 */
+  [5] opcode
+  [6] 9
+  [6] always
+  [6] reg
+  [9] 0
+end
+  
+format
+  ! 0x1f qset0      /* demux the lowest 4 bit of queue and AND it with regr into regw */
+  % reg             /* in short, set the bit in reg indexed by queue to 0 */
+  [5] opcode
+  [6] 9
+  [6] never
+  [6] reg
+  [9] 0
+end
+
+format 
+  ! 0x1f qsetflag   /* set the bit in reg index by queue to same as flag */
+  % flag
+  % reg
+  [5] opcode
+  [6] 9
+  [6] flag
+  [6] reg
+  [9] 0
+end
+
+format 
+  ! 0x1f nqsetflag   /* set the bit in the reg index by queue to opposite of flag */
+  % flag
+  % reg
+  [5] opcode
+  [6] 0x29
+  [6] flag
+  [6] reg
+  [9] 0
+end
+
+format
+  ! 0x1f qsetflip      /* flip the bit in reg index by queue */
+  % reg
+  [5] opcode
+  [6] 10
+  [6] always
+  [6] reg
+  [9] 0
+end
+
+format
+  ! 1 parse       /* take bits out of source (sco_tx,tx_buffer,rx-elas) into pdata and dest (sco_rx,rx_fifo,tx-elas) */
+  % source
+  % dest
+  % immediate
+  [5] opcode
+  [4] source      /* voice, data, demod */
+  [2] 0
+  [6] 0    
+  [2] 0           /* parse or inject */ 
+  [4] dest        /* acl, sco, mod, bucket */
+  [9] immediate   /* number of bits to parse off */
+end
+
+format
+  ! 1 inject      /* shift data from pdata into destination (tx-elas,rx_fifo,sco_rx) */
+  % destination
+  % immediate
+  [5] opcode
+  [4] 0
+  [2] 0
+  [6] 1
+  [2] 0
+  [4] destination /* acl,sco,mod,bucket */
+  [9] immediate   /* number of bits to be injected */
+end
+
+format
+  ! 1 iinject
+  % destination
+  % regr
+  [5] opcode
+  [6] regr       /* contain the number of bits to inject */
+  [6] 3
+  [2] 0
+  [4] destination /* acl,sco,mod,bucket */
+  [9] 0 
+end
+
+format
+  ! 1 stuff  /* automatic parse, stuff_counter decrement on every bit until hits zero */
+  % source
+  % destination
+  [5] opcode
+  [4] source
+  [2] 0
+  [6] 2
+  [2] 0
+  [4] destination
+  [9] 0
+end
+
+format    /* force immediate value into registers */
+  ! 3 force
+  % immediate
+  % regw
+  [5] opcode
+  [6] 0
+  [6] 0    /* alu operation force */
+  [6] regw  /* destination register */
+  [9] immediate
+end
+
+format    /* force whatever is on shift_reg to regsiters */
+  ! 0x13 iforce
+  % regw
+  [5] opcode
+  [6] 0
+  [6] 0    /* alu operation force */
+  [6] regw  /* destination register */
+  [9] 0
+end
+
+format    /* force immediate value into registers */
+  ! 3 increase
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 1    /* alu operation add */
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 3 pincrease
+  % immediate
+  [5] opcode
+  [6] -1  /* pdata */
+  [6] 1   /* alu add */
+  [6] -1  /* back to pdata */
+  [9] immediate
+end
+
+format    /* force immediate value into registers */
+  ! 3 and_into
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 2    /* alu operation and into */
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 3 and
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 2    /* alu operation and into */
+  [6] regw
+  [9] immediate
+end
+  
+format
+  ! 0x13 iand    /* pdata & regr -> regw */
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 2    /* alu operation and into */
+  [6] regw
+  [9] 0
+end
+  
+
+format    /* and whatever is in shiftreg with reg */
+  ! 0x13 iand_into
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 2    /* alu operation and into */
+  [6] reg
+  [9] 0
+end
+
+format
+  ! 3 or_into
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 3    /* alu operation or into */
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 3 or
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 3    /* alu operation or into */
+  [6] regw
+  [9] immediate
+end
+
+format
+  ! 0x13 ior
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 3    /* alu operation or into */
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 0x13 ior_into
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 3    /* alu operation or into */
+  [6] reg
+  [9] 0
+end
+
+format
+  ! 3 skip_to   /* jump to location stored in reg */
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 4   /* alu operation copy */
+  [6] rom_addr
+  [9] 0
+end
+
+format
+  ! 3 copy
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 4   /* alu operation copy */
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 deposit   /* copy the register content thru alu to shift register, not prealigned like preload */
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 4   /* alu operation copy */
+  [6] -1  /* pdata */
+  [9] 0
+end
+
+format
+  ! 3 icopy     /* copy the shift register lsb content directly to register, not aligned */
+  % regw
+  [5] opcode
+  [6] -1  /* pdata */
+  [6]  4  /* alu copy */
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 add
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 1
+  [6] regw
+  [9] immediate
+end
+
+format
+  ! 0x13 iadd       /* regr + pdata -> regw */
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 1
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 sub          /* immediate - regr -> regw */
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 12
+  [6] regw
+  [9] immediate
+end
+
+format
+  ! 0x13 isub       /* pdata - regr -> regw */
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 12
+  [6] regw
+  [9] 0
+end
+
+
+format
+  ! 3 flip
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 5
+  [6] reg
+  [9] immediate
+end
+  
+format
+  ! 0x13 iflip  /* use shift register as immediate to do xor */
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 5
+  [6] regw
+  [9] 0
+end
+  
+format
+  ! 3 xor
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 5
+  [6] regw
+  [9] immediate
+end
+
+format
+  ! 3 xor_into
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 5
+  [6] reg
+  [9] immediate
+end
+  
+format
+  ! 0x13 ixor  /* pdata xor regr and store result in regw */
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 5
+  [6] regw
+  [9] 0
+end
+  
+format
+  ! 3 invert
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 8
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 pinvert    /* invert pdata into itself */
+  [5] opcode
+  [6] -1
+  [6] 8
+  [6] -1
+  [9] 0
+end
+
+format
+  ! 3 div                 /* regr div immediate div */
+  % reg
+  % immediate
+  [5] opcode
+  [6] reg
+  [6] 13                   /* generate diven pulse to div */
+  [6] null
+  [9] immediate
+end
+
+format
+  ! 0x13 idiv           /* pdata div regr data ready at most after 41 nops */
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 13                   /* generate diven pulse to div */
+  [6] null
+  [9] 0
+end
+
+format
+  ! 3 remainder            /* harvest div remainder */
+  % regw
+  [5] opcode
+  [6] 0
+  [6] 14
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 quotient             /* harvest div quotient */
+  % regw
+  [5] opcode
+  [6] 0
+  [6] 15
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 6
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift2
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 22
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift3
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 18
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift4
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 35
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift8
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 25
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift16
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 34
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift32
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 30
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 lshift
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 7
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 lshift2
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 23
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 lshift8
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 26
+  [6] regw
+  [9] 0
+end
+
+  
+format
+  ! 3 lshift3
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 19
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 lshift4
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 36
+  [6] regw
+  [9] 0
+end
+  
+
+format
+  ! 3 lshift16
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 32
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 random               /* random number into regw */
+  % reg
+  [5] opcode
+  [6] 0
+  [6] 20
+  [6] reg
+  [9] 0
+end
+
+format                     /* bit reverse within a byte */
+  ! 3 reverse
+  % reg
+  % regw
+  [5] opcode
+  [6] reg
+  [6] 27
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 priority    /* priority encode reg into regw, lsb is the top priority, ie, priority(8'b00010000) = 4 */
+  % reg
+  % regw
+  [5] opcode
+  [6] reg
+  [6] 21
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 7 setsect   /* set a section of pdata */
+  % section    /* 0 sets 17:0 of pdata with set_data, 1 sets 35:18, 2 sets 53:36, 3 sets 71:54 */
+  % set_data
+  [5] opcode
+  [7] 0
+  [2] section
+  [18] set_data
+end
+
+format
+  ! 10 preload   /* load stuff into pdata according to fhs format, check us.v */
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 0
+  [6] -1
+  [9] 0
+end
+
+format  /* load register with pdata content, according to fhs format, check us.v */
+  ! 10 ialigned   /* all bits are in position */
+  % regw
+  [5] opcode
+  [6] -1
+  [6] 0
+  [6] regw
+  [9] 0
+end
+
+format  /* load register to another according to fhs format */
+  ! 10 aligned
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 0
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 4 branch
+  % addr
+  % flag
+  [5] opcode
+  [6] 1
+  [6] flag
+  [15] addr
+end
+
+format
+  ! 4 call
+  % addr
+  % flag
+  [5] opcode
+  [6] 2
+  [6] flag
+  [15] addr
+end
+
+format
+  ! 4 rtn
+  % flag
+  [5] opcode
+  [6] 3
+  [6] flag
+  [15] 0
+end
+
+format
+  ! 0x0c store          /* write to memory, data from pdata, address from immediate then mem_ptr */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 0
+  [1] 0
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x0c hstore          /* write to memory, data from pdata, address from immediate then mem_ptr */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 1
+  [1] 0
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x1c istore        /* write to memory, data from pdata, address from regr then mem_ptr */
+  % num_bytes
+  % reg
+  [5] opcode
+  [6] reg            /* hold address */
+  [1] 0
+  [1] 0
+  [4] num_bytes
+  [15] 0
+end
+
+format
+  ! 0x0d fetch          /* read from memory, data into pdata, address from immediate then mem_ptr */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 0
+  [1] 0
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x0d hfetch          /* read from memory, data into pdata, address from immediate then mem_ptr */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 1
+  [1] 0
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x0d crc         /* read from memory, count from loopcnt, put crc result into pdata */
+  % addr
+  [5] opcode
+  [6] 0
+  [1] 0
+  [1] 0
+  [4] 0
+  [15] addr
+end
+
+format
+  ! 0x1d icrc         /* read from memory, address from reg, count from loopcnt, put crc result into pdata */
+  % reg
+  [5] opcode
+  [6] reg             /* hold address */
+  [1] 0
+  [1] 0
+  [4] 0
+  [15] 0
+end
+
+
+format
+  ! 0x1d ifetch         /* read from memory, data into pdata, address from regr then mem_ptr */
+  % num_bytes
+  % reg
+  [5] opcode
+  [6] reg             /* hold address */
+  [1] 0
+  [1] 0
+  [4] num_bytes
+  [15] 0
+end
+
+format
+  ! 0x0c storet          /* write to memory, data from temp, address from immediate won't increment */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 0
+  [1] 1
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x0c hstoret          /* write to corereg, data from temp, address from immediate won't increment */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 1
+  [1] 1
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x1c istoret        /* write to memory, data from temp, address from regr won't increment */
+  % num_bytes
+  % reg
+  [5] opcode
+  [6] reg            /* hold address */
+  [1] 0
+  [1] 1
+  [4] num_bytes
+  [15] 0
+end
+
+format
+  ! 0x0d fetcht          /* read from memory, data into temp, address from immediate won't increment */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 0
+  [1] 1
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x0d hfetcht          /* read from corereg, data into temp, address from immediate won't increment */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 1
+  [1] 1
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x1d ifetcht         /* read from memory, data into temp, address from regr won't increment */
+  % num_bytes
+  % reg
+  [5] opcode
+  [6] reg             /* hold address */
+  [1] 0
+  [1] 1
+  [4] num_bytes
+  [15] 0
+end
+
+format
+  ! 0x0e jam
+  % immediate
+  % addr
+  [5] opcode
+  [3] 0
+  [1] 0   /* msb */
+  [15] addr
+  [8] immediate
+end
+
+format
+  ! 0x0e hjam
+  % immediate
+  % addr
+  [5] opcode
+  [3] 0
+  [1] 1   /* msb */
+  [15] addr
+  [8] immediate
+end
+
+format			/* 0x242... */
+  ! 4 nbranch
+  % addr
+  % flag
+  [5] opcode
+  [1] 1
+  [5] 1
+  [6] flag
+  [15] addr
+end
+
+format
+  ! 4 ncall
+  % addr
+  % flag
+  [5] opcode
+  [1] 1
+  [5] 2
+  [6] flag
+  [15] addr
+end
+
+format
+  ! 4 nrtn
+  % flag
+  [5] opcode
+  [1] 1
+  [5] 3
+  [6] flag
+  [15] 0
+end
+
+format
+  ! 4 nop
+  % addr  /* no-op for addr+2 clocks */
+  [5] opcode
+  [6] 0     
+  [6] 0     /* always */ 
+  [15] addr
+end
+
+format
+  ! 4 clear_stack
+  [5] opcode
+  [6] 4
+  [6] 0    /* always */
+  [15] 0
+end
+
+format
+  ! 6 until
+  % reg
+  % flag
+  [5] opcode
+  [6] reg
+  [6] flag
+  [6] 1
+  [9] 0
+end
+  
+format
+  ! 6 correlate   /* quit if 1. flag is true 2, regr time up 3, found sync,(cond_true) */
+  % reg          /* expire counter to check against */
+  % flag
+  [5] opcode
+  [6] reg
+  [6] flag
+  [6] 2           /* correlate */
+  [9] 0           
+end
+
+format
+  ! 5 compare   /* sets cond flag,  if reg equals immediate */
+  % immediate
+  % reg
+  % mask
+  [5] opcode
+  [6] reg
+  [3] 0
+  [9] mask
+  [9] immediate
+end
+
+format
+  ! 0x15 icompare   /* sets cond flag,  if reg equals pdata */
+  % mask
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 0
+  [9] mask
+  [9] 0
+end
+
+format   /* sets cond. flag, if reg equals LS half of shift reg with MS half of reg being mask */
+  ! 5 iverify
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 2
+  [18] 0
+end
+
+format
+  ! 0x15 qisolate1
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 3
+  [18] -1
+end
+
+format
+  ! 0x15 qisolate0
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 3
+  [18] 0
+end
+
+	/* REVAB bug: cannot access bit above 35 */
+format
+  ! 5 isolate1
+  % addr
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 3
+  [9] -1
+  [9] addr
+end
+
+format
+  ! 5 isolate0
+  % addr
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 3
+  [9] 0
+  [9] addr
+end
+
+format
+  ! 11 setarg
+  % immediate
+  [5] opcode
+  [27] immediate
+end
+
+format
+  ! 0x1b arg
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [21] immediate
+end
+
+  
+format
+  ! 0 sleep
+  [5] opcode
+  [27] 0
+end
+
+format
+  ! 0 snooze
+  [5] opcode
+  [6] -1
+  [21] 0
+end
+
+format
+  ! 0 revision
+  % rev_num
+  [5] opcode
+  [27] rev_num
+end
+
+format
+  ! 0x18 loop   /* branch when loopcnt is NOT zero, and decrease loopcnt */
+  % addr
+  [5] opcode
+  [4] 4
+  [8] 0
+  [15] addr
+end
+
+format
+  ! 0x18 beq   /* branch when pdata is equal to immediate */
+  % imme
+  % addr
+  [5] opcode
+  [4] 0
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 bne   /* branch when pdata is NOT equal to immediate */
+  % imme
+  % addr
+  [5] opcode
+  [4] 1
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 rtneq   /* return when pdata is equal to immediate */
+  % imme
+  [5] opcode
+  [4] 2
+  [8] imme
+  [15] 0
+end
+
+format
+  ! 0x18 rtnne   /* return when pdata is NOT equal to immediate */
+  % imme
+  [5] opcode
+  [4] 3
+  [8] imme
+  [15] 0
+end
+
+format
+  ! 0x18 bbit1   /* branch when pdata's imme bit is 1 */
+  % imme
+  % addr
+  [5] opcode
+  [4] 5
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 bbit0   /* branch when pdata's imme bit is 0 */
+  % imme
+  % addr
+  [5] opcode
+  [4] 6
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 rtnbit1   /* return when pdata's imme bit is 0 */
+  % imme
+  [5] opcode
+  [4] 7
+  [8] imme
+  [15] 0
+end
+
+format
+  ! 0x18 rtnbit0   /* return when pdata's imme bit is 0 */
+  % imme
+  [5] opcode
+  [4] 8
+  [8] imme
+  [15] 0
+end
+
+format
+  ! 8	bpatch
+  % imme
+  % addr
+  [5] opcode
+  [4] 9
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 bmark1   /* branch when mark's imme bit is 1 */
+  % imme
+  % addr
+  [5] opcode
+  [4] 10
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 bmark0   /* branch when mark's imme bit is 0 */
+  % imme
+  % addr
+  [5] opcode
+  [4] 11
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 rtnmark1   /* return when mark's imme bit is 0 */
+  % imme
+  [5] opcode
+  [4] 12
+  [8] imme
+  [15] 0
+end
+
+format
+  ! 0x18 rtnmark0   /* return when mark's imme bit is 0 */
+  % imme
+  [5] opcode
+  [4] 13
+  [8] imme
+  [15] 0
+end
+
+
+format
+  ! 3 mult                  /* immediate mult regr */  /* the product will be ready 17 clks later */
+  % immediate                                   /* use "product" instruction to get the result */
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 16                   /* generate diven pulse to div */
+  [6] null
+  [9] immediate
+end
+
+format
+  ! 0x13 imult           /* pdata mult regr */  /* the product will be ready after 15 nops */
+  % reg                                         /* use product opcode to get the result */
+  [5] opcode
+  [6] reg
+  [6] 16                   /* generate mult pulse to multiplier */
+  [6] null
+  [9] 0
+end
+
+format
+  ! 3 mul32                  /* immediate mult regr */ 
+  % regr
+  % immediate                                  
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 31           
+  [6] regw
+  [9] immediate
+end
+
+format
+  ! 0x13 imul32           /* pdata mult regr 32x32=64bit */  
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 31                   
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 product              /* harvest mult product */
+  % regw
+  [5] opcode
+  [6] 0
+  [6] 17
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 byteswap
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 33
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 shasx          /* SHA256 Sx operation, immediate is Sx */
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 28
+  [6] regw
+  [9] immediate
+end
+
+
+format
+  ! 0x13 regexrot 	/* regext[0] <- regext[7], regext[1] <- regext[0], regext[2] <- regext[1] ... */
+  [5] opcode
+  [6] 0
+  [6] 29
+  [6] null
+  [9] 0
+end
+
Index: Standard_mouse/btms/output/bt_program23.icode
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/bt_program23.icode	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/bt_program23.icode	(working copy)
@@ -0,0 +1,1729 @@
+ 00000000  0x00000018 bmark1  0x00000025 , 0x0000000f 
+ 00000001  0x00000019 beq  0x00000000 , 0x00000024 
+ 00000002  0x0000001a beq  0x00000003 , 0x0000002f 
+ 00000003  0x0000001b beq  0x00000086 , 0x00000035 
+ 00000004  0x0000001c beq  0x0000008a , 0x0000003f 
+ 00000005  0x0000001d beq  0x0000008b , 0x00000061 
+ 00000006  0x0000001e beq  0x000000a7 , 0x0000006d 
+ 00000007  0x0000001f beq  0x000000a8 , 0x00000074 
+ 00000008  0x00000020 beq  0x000000a9 , 0x00000088 
+ 00000009  0x00000021 beq  0x000000ac , 0x0000009b 
+ 00000010  0x00000022 beq  0x000000b4 , 0x00000349 
+ 00000011  0x00000023 beq  0x000000b5 , 0x000000b4 
+ 00000012  0x00000024 beq  0x000000b6 , 0x000000bb 
+ 00000013  0x00000025 beq  0x000000b7 , 0x000000dd 
+ 00000014  0x00000026 branch  0x00003b34 
+ 00000015  0x00000029 beq  0x00000005 , 0x00000117 
+ 00000016  0x0000002a beq  0x00000016 , 0x0000011c 
+ 00000017  0x0000002b beq  0x0000001b , 0x00000120 
+ 00000018  0x0000002c beq  0x00000023 , 0x00000123 
+ 00000019  0x0000002d beq  0x0000002f , 0x00000147 
+ 00000020  0x0000002e beq  0x00000031 , 0x0000015c 
+ 00000021  0x0000002f beq  0x00000032 , 0x0000016e 
+ 00000022  0x00000030 beq  0x00000033 , 0x00000181 
+ 00000023  0x00000031 beq  0x00000039 , 0x00000192 
+ 00000024  0x00000032 beq  0x0000003c , 0x0000019f 
+ 00000025  0x00000033 beq  0x0000003d , 0x000001b2 
+ 00000026  0x00000034 beq  0x0000003e , 0x000001b8 
+ 00000027  0x00000035 beq  0x0000003f , 0x000001d1 
+ 00000028  0x00000036 beq  0x00000042 , 0x000001ef 
+ 00000029  0x00000037 beq  0x0000004d , 0x000001f4 
+ 00000030  0x00000038 beq  0x00000095 , 0x00000225 
+ 00000031  0x00000039 beq  0x000000f3 , 0x0000022c 
+ 00000032  0x0000003a beq  0x000000f7 , 0x00000238 
+ 00000033  0x0000003b beq  0x000000f8 , 0x0000026f 
+ 00000034  0x0000003c beq  0x000000f9 , 0x00000275 
+ 00000035  0x0000003d branch  0x00003b34 
+ 00000036  0x00000040 clear_stack 
+ 00000037  0x00000041 nbranch  0x00003004 , 0x0000002b 
+ 00000038  0x00000042 fetch  0x00000001 , 0x00004595 
+ 00000039  0x00000043 nbranch  0x0000002d , 0x00000034 
+ 00000040  0x00000044 fetch  0x00000001 , 0x00004e78 
+ 00000041  0x00000045 branch  0x00003004 , 0x00000034 
+ 00000042  0x00000046 jam  0x00000000 , 0x00004e7f 
+ 00000043  0x00000047 bmark0  0x00000026 , 0x00003004 
+ 00000044  0x00000048 nbranch  0x00003004 , 0x0000002b 
+ 00000045  0x0000004a hjam  0x00000003 , 0x00008280 
+ 00000046  0x0000004b branch  0x00003004 
+ 00000047  0x0000004e call  0x0000027f 
+ 00000048  0x0000004f call  0x0000043d 
+ 00000049  0x00000050 call  0x000002bd 
+ 00000050  0x00000051 fetch  0x00000001 , 0x00004e78 
+ 00000051  0x00000052 nbranch  0x00000383 , 0x00000034 
+ 00000052  0x00000053 branch  0x0000301b 
+ 00000053  0x00000057 branch  0x000039a3 , 0x00000021 
+ 00000054  0x00000058 hjam  0x000000d4 , 0x00000955 
+ 00000055  0x00000059 nop  0x00000004 
+ 00000056  0x0000005a hjam  0x000000d2 , 0x00000955 
+ 00000057  0x0000005b nop  0x00000004 
+ 00000058  0x0000005c hjam  0x000000d1 , 0x00000955 
+ 00000059  0x0000005d nop  0x00000004 
+ 00000060  0x0000005e fetch  0x00000001 , 0x00004280 
+ 00000061  0x0000005f beq  0x00000014 , 0x000039ae 
+ 00000062  0x00000060 branch  0x0000399c 
+ 00000063  0x00000063 storet  0x00000001 , 0x00000017 
+ 00000064  0x00000064 add  0x00000002 , 0x00000000 , 0x00000011 
+ 00000065  0x00000065 call  0x00003a13 
+ 00000066  0x00000066 setarg  0x00000500 
+ 00000067  0x00000067 call  0x00003b35 
+ 00000068  0x00000069 hjam  0x00000001 , 0x00008906 
+ 00000069  0x0000006a hjam  0x0000003c , 0x00008900 
+ 00000070  0x0000006b hjam  0x000000e0 , 0x00008901 
+ 00000071  0x0000006c hjam  0x00000012 , 0x0000096d 
+ 00000072  0x0000006d nop  0x0000000a 
+ 00000073  0x0000006e hjam  0x00000001 , 0x00008902 
+ 00000074  0x0000006f hjam  0x0000003d , 0x00008902 
+ 00000075  0x00000070 nop  0x0000000a 
+ 00000076  0x00000071 hjam  0x000000b7 , 0x00008903 
+ 00000077  0x00000072 nop  0x0000000a 
+ 00000078  0x00000073 hjam  0x0000007f , 0x00008902 
+ 00000079  0x00000074 fetch  0x00000001 , 0x00004280 
+ 00000080  0x00000075 beq  0x00000014 , 0x0000005e 
+ 00000081  0x00000076 bbit1  0x00000001 , 0x00000058 
+ 00000082  0x00000077 bbit1  0x00000002 , 0x00000058 
+ 00000083  0x00000079 hjam  0x0000005b , 0x0000894c 
+ 00000084  0x0000007a hjam  0x00000096 , 0x0000894d 
+ 00000085  0x0000007b hjam  0x0000002c , 0x0000894e 
+ 00000086  0x0000007c hjam  0x00000046 , 0x0000894f 
+ 00000087  0x0000007d branch  0x0000005c 
+ 00000088  0x0000007f hjam  0x000000fb , 0x0000894c 
+ 00000089  0x00000080 hjam  0x000000ef , 0x0000894d 
+ 00000090  0x00000081 hjam  0x000000ec , 0x0000894e 
+ 00000091  0x00000082 hjam  0x0000005e , 0x0000894f 
+ 00000092  0x00000084 fetch  0x00000001 , 0x00004280 
+ 00000093  0x00000085 branch  0x000039dc 
+ 00000094  0x00000088 hjam  0x000000c2 , 0x00008956 
+ 00000095  0x00000089 hjam  0x000000d0 , 0x00008955 
+ 00000096  0x0000008a rtn 
+ 00000097  0x0000008d call  0x00003cd2 
+ 00000098  0x0000008e call  0x00003a5f 
+ 00000099  0x0000008f hjam  0x00000006 , 0x00008042 
+ 00000100  0x00000090 hfetch  0x00000001 , 0x00008968 
+ 00000101  0x00000091 set1  0x00000007 , 0x0000003f 
+ 00000102  0x00000092 hstore  0x00000001 , 0x00008968 
+ 00000103  0x00000093 set0  0x00000007 , 0x0000003f 
+ 00000104  0x00000094 hstore  0x00000001 , 0x00008968 
+ 00000105  0x00000095 set1  0x00000007 , 0x0000003f 
+ 00000106  0x00000096 hstore  0x00000001 , 0x00008968 
+ 00000107  0x00000097 hjam  0x00000005 , 0x00008042 
+ 00000108  0x00000098 branch  0x00003a0c 
+ 00000109  0x0000009b call  0x00003c2b 
+ 00000110  0x0000009c fetch  0x00000001 , 0x00004e45 
+ 00000111  0x0000009d rtn  0x00000034 
+ 00000112  0x0000009e jam  0x00000000 , 0x00004e45 
+ 00000113  0x0000009f copy  0x00000022 , 0x0000003f 
+ 00000114  0x000000a0 store  0x00000004 , 0x0000489e 
+ 00000115  0x000000a1 rtn 
+ 00000116  0x000000a4 rtnmark1  0x00000026 
+ 00000117  0x000000a5 call  0x00003be2 
+ 00000118  0x000000a6 fetch  0x00000003 , 0x0000420f 
+ 00000119  0x000000a7 rtn  0x00000034 
+ 00000120  0x000000a8 fetch  0x00000002 , 0x00004042 
+ 00000121  0x000000a9 arg  0x0000ffff , 0x00000002 
+ 00000122  0x000000aa isub  0x00000002 , 0x0000003e 
+ 00000123  0x000000ab rtn  0x00000005 
+ 00000124  0x000000ac fetch  0x00000001 , 0x00004131 
+ 00000125  0x000000ad rtn  0x00000034 
+ 00000126  0x000000ae call  0x00004816 
+ 00000127  0x000000af nrtn  0x00000034 
+ 00000128  0x000000b0 call  0x00003d0e 
+ 00000129  0x000000b1 nrtn  0x00000034 
+ 00000130  0x000000b2 call  0x00003a7b 
+ 00000131  0x000000b3 fetch  0x00000001 , 0x000046e2 
+ 00000132  0x000000b4 branch  0x00003c5e , 0x00000034 
+ 00000133  0x000000b5 fetch  0x00000001 , 0x00004639 
+ 00000134  0x000000b6 rtn  0x00000034 
+ 00000135  0x000000b7 branch  0x00003c5e 
+ 00000136  0x000000ba fetch  0x00000001 , 0x00004595 
+ 00000137  0x000000bb branch  0x00000095 , 0x00000034 
+ 00000138  0x000000bc fetch  0x00000001 , 0x0000009f 
+ 00000139  0x000000bd nbranch  0x00000095 , 0x00000034 
+ 00000140  0x000000be fetch  0x00000001 , 0x00004e83 
+ 00000141  0x000000bf fetcht  0x00000001 , 0x00004e84 
+ 00000142  0x000000c0 isub  0x00000002 , 0x0000003e 
+ 00000143  0x000000c1 nrtn  0x00000005 
+ 00000144  0x000000c2 fetch  0x00000001 , 0x00004e81 
+ 00000145  0x000000c3 nrtn  0x00000034 
+ 00000146  0x000000c4 setarg  0x00000000 
+ 00000147  0x000000c5 store  0x00000008 , 0x000000a0 
+ 00000148  0x000000c6 branch  0x00003c6a 
+ 00000149  0x000000c8 call  0x000000a0 
+ 00000150  0x000000c9 nrtn  0x00000028 
+ 00000151  0x000000ca fetch  0x00000001 , 0x00000b2b 
+ 00000152  0x000000cb nrtn  0x00000034 
+ 00000153  0x000000cc jam  0x00000000 , 0x000049c1 
+ 00000154  0x000000cd branch  0x00003c6a 
+ 00000155  0x000000d0 call  0x000000a0 
+ 00000156  0x000000d1 nrtn  0x00000028 
+ 00000157  0x000000d2 fetch  0x00000001 , 0x00000b2b 
+ 00000158  0x000000d3 nrtn  0x00000034 
+ 00000159  0x000000d4 branch  0x00003c8c 
+ 00000160  0x000000d7 call  0x000000ab 
+ 00000161  0x000000d8 nrtn  0x00000028 
+ 00000162  0x000000d9 call  0x000000a8 
+ 00000163  0x000000da nrtn  0x00000028 
+ 00000164  0x000000db jam  0x00000001 , 0x00000b2b 
+ 00000165  0x000000dc jam  0x00000001 , 0x00000b2a 
+ 00000166  0x000000dd call  0x000000b0 
+ 00000167  0x000000de branch  0x000000ab 
+ 00000168  0x000000e3 fetch  0x00000002 , 0x0000482c 
+ 00000169  0x000000e4 fetcht  0x00000002 , 0x0000482e 
+ 00000170  0x000000e5 branch  0x000000ad 
+ 00000171  0x000000e7 fetch  0x00000002 , 0x000047c4 
+ 00000172  0x000000e8 fetcht  0x00000002 , 0x000047c6 
+ 00000173  0x000000ea isub  0x00000002 , 0x0000003e 
+ 00000174  0x000000eb branch  0x000064c0 , 0x00000005 
+ 00000175  0x000000ec branch  0x000031d4 
+ 00000176  0x000000ef fetch  0x00000001 , 0x00000b2a 
+ 00000177  0x000000f0 nop  0x0000000a 
+ 00000178  0x000000f1 bne  0x00000000 , 0x000000b0 
+ 00000179  0x000000f2 rtn 
+ 00000180  0x000000f6 jam  0x00000027 , 0x00000016 
+ 00000181  0x000000f7 jam  0x00000000 , 0x00000150 
+ 00000182  0x000000f8 jam  0x00000000 , 0x0000017e 
+ 00000183  0x000000f9 jam  0x00000000 , 0x0000017f 
+ 00000184  0x000000fa setarg  0x00000000 
+ 00000185  0x000000fb store  0x00000005 , 0x000008d2 
+ 00000186  0x000000fc rtn 
+ 00000187  0x000000ff arg  0x000046f0 , 0x00000011 
+ 00000188  0x00000100 call  0x00007f95 
+ 00000189  0x00000101 rtn  0x00000034 
+ 00000190  0x00000103 copy  0x0000003f , 0x00000013 
+ 00000191  0x00000104 call  0x000000c1 
+ 00000192  0x00000105 branch  0x00003d9b 
+ 00000193  0x00000107 rtneq  0x00000018 
+ 00000194  0x00000108 beq  0x00000014 , 0x000000c6 
+ 00000195  0x00000109 beq  0x00000015 , 0x000000d0 
+ 00000196  0x0000010a beq  0x00000029 , 0x000000db 
+ 00000197  0x0000010b branch  0x00003d73 
+ 00000198  0x0000010f jam  0x00000000 , 0x00004e83 
+ 00000199  0x00000110 jam  0x00000000 , 0x00004212 
+ 00000200  0x00000111 jam  0x00000000 , 0x00004ebb 
+ 00000201  0x00000112 jam  0x00000014 , 0x00004e51 
+ 00000202  0x00000113 call  0x00003e61 
+ 00000203  0x00000114 call  0x00003e59 
+ 00000204  0x00000115 call  0x00003e7f 
+ 00000205  0x00000116 call  0x00003e20 
+ 00000206  0x00000117 jam  0x00000001 , 0x00004eb9 
+ 00000207  0x00000118 branch  0x00003dc2 
+ 00000208  0x0000011b jam  0x00000000 , 0x00004ea4 
+ 00000209  0x0000011c call  0x00000304 
+ 00000210  0x0000011d jam  0x00000000 , 0x000044b2 
+ 00000211  0x0000011e jam  0x00000000 , 0x00004212 
+ 00000212  0x0000011f jam  0x00000000 , 0x00004ebb 
+ 00000213  0x00000120 jam  0x00000000 , 0x00004e51 
+ 00000214  0x00000122 jam  0x00000000 , 0x0000456a 
+ 00000215  0x00000123 fetcht  0x00000002 , 0x00004e4e 
+ 00000216  0x00000124 storet  0x00000002 , 0x000044f8 
+ 00000217  0x00000125 call  0x000052a0 
+ 00000218  0x00000126 branch  0x00003dc6 
+ 00000219  0x00000129 call  0x00000105 
+ 00000220  0x0000012a branch  0x00007e3b 
+ 00000221  0x0000012d storet  0x00000001 , 0x0000024e 
+ 00000222  0x0000012e fetch  0x00000001 , 0x0000489c 
+ 00000223  0x0000012f increase  0x00000001 , 0x0000003f 
+ 00000224  0x00000130 store  0x00000001 , 0x0000489c 
+ 00000225  0x00000132 fetch  0x00000001 , 0x0000024e 
+ 00000226  0x00000133 rtn  0x00000034 
+ 00000227  0x00000134 increase  0xffffffff , 0x0000003f 
+ 00000228  0x00000135 store  0x00000001 , 0x0000024e 
+ 00000229  0x00000137 call  0x00000108 
+ 00000230  0x00000138 call  0x000000eb 
+ 00000231  0x00000139 call  0x00000111 
+ 00000232  0x0000013a call  0x000000f7 
+ 00000233  0x0000013b call  0x000000fe 
+ 00000234  0x0000013c branch  0x000000e1 
+ 00000235  0x0000013f fetch  0x00000001 , 0x00004ebb 
+ 00000236  0x00000140 rtn  0x00000034 
+ 00000237  0x00000141 fetch  0x00000001 , 0x00004212 
+ 00000238  0x00000142 compare  0x00000020 , 0x0000003f , 0x000000ff 
+ 00000239  0x00000143 ncall  0x000000f5 , 0x00000001 
+ 00000240  0x00000144 fetch  0x00000001 , 0x00004131 
+ 00000241  0x00000145 call  0x000000f3 , 0x00000034 
+ 00000242  0x00000146 rtn 
+ 00000243  0x00000148 jam  0x00000001 , 0x00004131 
+ 00000244  0x00000149 rtn 
+ 00000245  0x0000014b jam  0x00000020 , 0x00004212 
+ 00000246  0x0000014c rtn 
+ 00000247  0x0000014e fetch  0x00000001 , 0x000049ba 
+ 00000248  0x0000014f rtn  0x00000034 
+ 00000249  0x00000150 jam  0x00000000 , 0x00004e80 
+ 00000250  0x00000151 increase  0xffffffff , 0x0000003f 
+ 00000251  0x00000152 store  0x00000001 , 0x000049ba 
+ 00000252  0x00000153 nrtn  0x00000034 
+ 00000253  0x00000154 rtn 
+ 00000254  0x00000157 fetch  0x00000001 , 0x00004e82 
+ 00000255  0x00000158 rtn  0x00000034 
+ 00000256  0x00000159 increase  0xffffffff , 0x0000003f 
+ 00000257  0x0000015a store  0x00000001 , 0x00004e82 
+ 00000258  0x0000015b nrtn  0x00000034 
+ 00000259  0x0000015c jam  0x00000000 , 0x00004e81 
+ 00000260  0x0000015d rtn 
+ 00000261  0x00000166 call  0x00003e7f 
+ 00000262  0x00000167 jam  0x00000012 , 0x000009bd 
+ 00000263  0x00000168 branch  0x00007d90 
+ 00000264  0x0000016b fetch  0x00000001 , 0x00004e51 
+ 00000265  0x0000016c rtn  0x00000034 
+ 00000266  0x0000016d increase  0xffffffff , 0x0000003f 
+ 00000267  0x0000016e store  0x00000001 , 0x00004e51 
+ 00000268  0x0000016f nrtn  0x00000034 
+ 00000269  0x00000170 jam  0x00000020 , 0x00004212 
+ 00000270  0x00000171 jam  0x00000001 , 0x00004131 
+ 00000271  0x00000172 jam  0x00000001 , 0x00004ebb 
+ 00000272  0x00000173 rtn 
+ 00000273  0x00000176 fetch  0x00000001 , 0x00004e52 
+ 00000274  0x00000177 rtn  0x00000034 
+ 00000275  0x00000178 increase  0xffffffff , 0x0000003f 
+ 00000276  0x00000179 store  0x00000001 , 0x00004e52 
+ 00000277  0x0000017a nrtn  0x00000034 
+ 00000278  0x0000017b branch  0x00003e6d 
+ 00000279  0x00000180 call  0x00004968 
+ 00000280  0x00000181 call  0x00004b51 
+ 00000281  0x00000182 call  0x00004bd8 
+ 00000282  0x00000183 call  0x00000616 
+ 00000283  0x00000184 branch  0x00004945 
+ 00000284  0x00000187 call  0x00003a50 
+ 00000285  0x00000188 copy  0x0000003f , 0x00000011 
+ 00000286  0x00000189 call  0x00000654 
+ 00000287  0x0000018a branch  0x00004a3d 
+ 00000288  0x0000018d fetch  0x00000004 , 0x00004e48 
+ 00000289  0x0000018e store  0x00000004 , 0x00004596 
+ 00000290  0x0000018f branch  0x00004a8c 
+ 00000291  0x00000192 jam  0x00000001 , 0x00004131 
+ 00000292  0x00000193 fetch  0x00000002 , 0x0000037c 
+ 00000293  0x00000194 fetcht  0x00000002 , 0x00000382 
+ 00000294  0x00000195 isub  0x00000002 , 0x0000003f 
+ 00000295  0x00000196 store  0x00000002 , 0x000009be 
+ 00000296  0x00000197 fetch  0x00000001 , 0x00000362 
+ 00000297  0x00000198 set0  0x00000005 , 0x0000003f 
+ 00000298  0x00000199 set0  0x00000003 , 0x0000003f 
+ 00000299  0x0000019a store  0x00000001 , 0x00000362 
+ 00000300  0x0000019b fetch  0x00000004 , 0x00000366 
+ 00000301  0x0000019c fetcht  0x00000002 , 0x00000364 
+ 00000302  0x0000019d storet  0x00000002 , 0x000009c6 
+ 00000303  0x0000019e isub  0x00000002 , 0x00000011 
+ 00000304  0x0000019f fetch  0x00000001 , 0x0000445b 
+ 00000305  0x000001a0 store  0x00000001 , 0x0000038d 
+ 00000306  0x000001a1 ifetcht  0x00000002 , 0x00000006 
+ 00000307  0x000001a2 ifetch  0x00000002 , 0x00000006 
+ 00000308  0x000001a3 lshift2  0x0000003f , 0x0000003f 
+ 00000309  0x000001a4 store  0x00000002 , 0x00000364 
+ 00000310  0x000001a5 lshift2  0x00000002 , 0x00000002 
+ 00000311  0x000001a6 iadd  0x00000002 , 0x0000003f 
+ 00000312  0x000001a7 ifetcht  0x00000004 , 0x00000006 
+ 00000313  0x000001a8 storet  0x00000004 , 0x0000038e 
+ 00000314  0x000001a9 iadd  0x00000011 , 0x0000003f 
+ 00000315  0x000001aa copy  0x0000003f , 0x00000014 
+ 00000316  0x000001ab fetch  0x00000002 , 0x00000364 
+ 00000317  0x000001ac fetcht  0x00000002 , 0x000009c6 
+ 00000318  0x000001ad isub  0x00000002 , 0x0000003f 
+ 00000319  0x000001ae fetcht  0x00000002 , 0x000009be 
+ 00000320  0x000001af imul32  0x00000002 , 0x0000003f 
+ 00000321  0x000001b0 iadd  0x00000014 , 0x0000003f 
+ 00000322  0x000001b1 store  0x00000004 , 0x00000366 
+ 00000323  0x000001b2 call  0x00005199 
+ 00000324  0x000001b3 fetch  0x00000002 , 0x00000390 
+ 00000325  0x000001b4 store  0x00000002 , 0x00004561 
+ 00000326  0x000001b5 rtn 
+ 00000327  0x000001b8 fetch  0x00000001 , 0x00000379 
+ 00000328  0x000001b9 bbit1  0x00000005 , 0x00000158 
+ 00000329  0x000001ba call  0x00000608 
+ 00000330  0x000001bb jam  0x00000000 , 0x00004e62 
+ 00000331  0x000001bc fetch  0x00000001 , 0x00004e20 
+ 00000332  0x000001bd nbranch  0x00000152 , 0x00000034 
+ 00000333  0x000001be fetch  0x00000001 , 0x00004ea5 
+ 00000334  0x000001bf beq  0x00000001 , 0x00000156 
+ 00000335  0x000001c0 fetch  0x00000001 , 0x00000303 
+ 00000336  0x000001c1 branch  0x00004bde , 0x00000034 
+ 00000337  0x000001c2 branch  0x00004f87 
+ 00000338  0x000001c4 fetch  0x00000001 , 0x00004e20 
+ 00000339  0x000001c5 increase  0xffffffff , 0x0000003f 
+ 00000340  0x000001c6 store  0x00000001 , 0x00004e20 
+ 00000341  0x000001c7 branch  0x00004f87 
+ 00000342  0x000001c9 jam  0x00000003 , 0x00004e20 
+ 00000343  0x000001ca branch  0x00004bde 
+ 00000344  0x000001cd fetch  0x00000001 , 0x00004e62 
+ 00000345  0x000001ce increase  0x00000001 , 0x0000003f 
+ 00000346  0x000001cf store  0x00000001 , 0x00004e62 
+ 00000347  0x000001d0 branch  0x0000060c 
+ 00000348  0x000001d3 fetch  0x00000001 , 0x00004467 
+ 00000349  0x000001d4 beq  0x00000006 , 0x00000160 
+ 00000350  0x000001d5 beq  0x00000002 , 0x00000167 
+ 00000351  0x000001d6 branch  0x00004bfb 
+ 00000352  0x000001d9 fetch  0x00000001 , 0x00004e53 
+ 00000353  0x000001da beq  0x00000001 , 0x00000164 
+ 00000354  0x000001db call  0x00003e6d 
+ 00000355  0x000001e1 branch  0x00004c86 
+ 00000356  0x000001e3 call  0x00000105 
+ 00000357  0x000001e4 jam  0x00000003 , 0x00004e52 
+ 00000358  0x000001e5 branch  0x00004c90 
+ 00000359  0x000001e8 setarg  0x00000013 
+ 00000360  0x000001e9 istore  0x00000001 , 0x00000005 
+ 00000361  0x000001ea call  0x00004c58 
+ 00000362  0x000001eb setarg  0x0000000a 
+ 00000363  0x000001ec store  0x00000002 , 0x00000390 
+ 00000364  0x000001ed store  0x00000002 , 0x00004561 
+ 00000365  0x000001ee rtn 
+ 00000366  0x000001f1 fetch  0x00000001 , 0x0000446b 
+ 00000367  0x000001f2 beq  0x00000002 , 0x00000175 
+ 00000368  0x000001f3 beq  0x00000006 , 0x0000017c 
+ 00000369  0x000001f4 beq  0x00000007 , 0x00000173 
+ 00000370  0x000001f5 branch  0x00004c18 
+ 00000371  0x000001f7 jam  0x00000000 , 0x00004ea5 
+ 00000372  0x000001f8 branch  0x00004d17 
+ 00000373  0x000001fb setarg  0x01000302 
+ 00000374  0x000001fc store  0x00000003 , 0x000044dc 
+ 00000375  0x000001fd setarg  0x00000001 
+ 00000376  0x000001fe istore  0x00000001 , 0x00000005 
+ 00000377  0x000001ff setarg  0x00010010 
+ 00000378  0x00000200 istore  0x00000003 , 0x00000005 
+ 00000379  0x00000201 branch  0x00004ccd 
+ 00000380  0x00000204 jam  0x00000029 , 0x000009bd 
+ 00000381  0x00000205 call  0x00007d86 
+ 00000382  0x00000206 jam  0x00000047 , 0x000009bd 
+ 00000383  0x00000207 call  0x00004bd6 
+ 00000384  0x00000208 branch  0x00004d01 
+ 00000385  0x0000020b fetch  0x00000001 , 0x0000446b 
+ 00000386  0x0000020c beq  0x0000001b , 0x00000185 
+ 00000387  0x0000020d beq  0x0000001d , 0x00000185 
+ 00000388  0x0000020e branch  0x00004c2b 
+ 00000389  0x00000212 fetcht  0x00000002 , 0x00004e4e 
+ 00000390  0x00000213 storet  0x00000002 , 0x0000446c 
+ 00000391  0x00000214 fetch  0x00000001 , 0x00004e86 
+ 00000392  0x00000215 add  0x0000003f , 0x00000001 , 0x00000002 
+ 00000393  0x00000216 and  0x00000002 , 0x00000003 , 0x00000002 
+ 00000394  0x00000217 storet  0x00000001 , 0x00004e86 
+ 00000395  0x00000218 mul32  0x0000003f , 0x00000007 , 0x0000003f 
+ 00000396  0x00000219 arg  0x00004e87 , 0x00000006 
+ 00000397  0x0000021a iadd  0x00000006 , 0x00000006 
+ 00000398  0x0000021b ifetch  0x00000007 , 0x00000006 
+ 00000399  0x0000021c store  0x00000007 , 0x0000446e 
+ 00000400  0x0000021d arg  0x0000000e , 0x00000002 
+ 00000401  0x0000021e branch  0x00004f89 
+ 00000402  0x00000221 storet  0x00000001 , 0x00004466 
+ 00000403  0x00000222 compare  0x00000002 , 0x00000001 , 0x00000003 
+ 00000404  0x00000223 nbranch  0x00000197 , 0x00000001 
+ 00000405  0x00000224 add  0x00000002 , 0xfffffffc , 0x0000003f 
+ 00000406  0x00000225 store  0x00000002 , 0x00004467 
+ 00000407  0x00000227 fetcht  0x00000001 , 0x00000379 
+ 00000408  0x00000228 call  0x0000019a 
+ 00000409  0x00000229 branch  0x00004f92 
+ 00000410  0x0000022b fetch  0x00000001 , 0x00004ea5 
+ 00000411  0x0000022c beq  0x00000001 , 0x0000019d 
+ 00000412  0x0000022d branch  0x00004bd0 
+ 00000413  0x0000022f setarg  0x00000000 
+ 00000414  0x00000230 rtn 
+ 00000415  0x00000233 copy  0x00000013 , 0x0000003f 
+ 00000416  0x00000234 beq  0x00000000 , 0x000001a5 
+ 00000417  0x00000235 beq  0x00000002 , 0x000001a8 
+ 00000418  0x00000236 beq  0x00000003 , 0x000001ac 
+ 00000419  0x00000237 beq  0x0000000a , 0x000001b0 
+ 00000420  0x00000238 branch  0x00004fb9 
+ 00000421  0x0000023b jam  0x00000000 , 0x00004131 
+ 00000422  0x0000023c jam  0x0000003c , 0x00004e51 
+ 00000423  0x0000023d branch  0x0000501f 
+ 00000424  0x00000240 call  0x00005033 
+ 00000425  0x00000242 setarg  0x00000000 
+ 00000426  0x00000243 store  0x00000008 , 0x00004544 
+ 00000427  0x00000244 rtn 
+ 00000428  0x00000247 call  0x00005039 
+ 00000429  0x00000248 fetch  0x00000001 , 0x0000456a 
+ 00000430  0x00000249 rtneq  0x00000002 
+ 00000431  0x0000024a branch  0x00006418 
+ 00000432  0x0000024d jam  0x0000002b , 0x000009bd 
+ 00000433  0x0000024e branch  0x00004bd6 
+ 00000434  0x00000251 ifetch  0x00000001 , 0x00000006 
+ 00000435  0x00000252 beq  0x00000001 , 0x000001b5 
+ 00000436  0x00000253 branch  0x00004ffe 
+ 00000437  0x00000255 jam  0x00000001 , 0x00004ea5 
+ 00000438  0x00000256 jam  0x00000003 , 0x00004e20 
+ 00000439  0x00000257 branch  0x00005069 
+ 00000440  0x0000025a ifetch  0x00000003 , 0x00000006 
+ 00000441  0x0000025b store  0x00000003 , 0x0000039a 
+ 00000442  0x0000025c beq  0x00000012 , 0x000001bc 
+ 00000443  0x0000025d branch  0x00005011 
+ 00000444  0x00000260 jam  0x00000001 , 0x00004131 
+ 00000445  0x00000261 call  0x000001c8 
+ 00000446  0x00000262 fetch  0x00000001 , 0x0000039b 
+ 00000447  0x00000263 sub  0x0000003f , 0x00000060 , 0x0000003e 
+ 00000448  0x00000264 branch  0x000001cd , 0x00000005 
+ 00000449  0x00000265 jam  0x00000000 , 0x00004ea6 
+ 00000450  0x00000267 call  0x00005125 
+ 00000451  0x00000268 nrtn  0x00000005 
+ 00000452  0x0000026a fetch  0x00000001 , 0x00004ea6 
+ 00000453  0x0000026b ncall  0x000001cf , 0x00000034 
+ 00000454  0x0000026c jam  0x00000013 , 0x000009bd 
+ 00000455  0x0000026d branch  0x00004bd6 
+ 00000456  0x0000026f fetch  0x00000001 , 0x00000303 
+ 00000457  0x00000270 increase  0xfffffff9 , 0x0000003f 
+ 00000458  0x00000271 icopy  0x00000039 
+ 00000459  0x00000272 copy  0x00000039 , 0x00000012 
+ 00000460  0x00000273 branch  0x00005135 
+ 00000461  0x00000276 jam  0x00000001 , 0x00004ea6 
+ 00000462  0x00000277 branch  0x000001c2 
+ 00000463  0x0000027a jam  0x00000029 , 0x000009bd 
+ 00000464  0x0000027b branch  0x00007d86 
+ 00000465  0x0000027f fetch  0x00000001 , 0x000043ff 
+ 00000466  0x00000280 rtn  0x00000034 
+ 00000467  0x00000281 arg  0x00000001 , 0x00000007 
+ 00000468  0x00000282 call  0x00007ee2 
+ 00000469  0x00000283 nrtn  0x00000034 
+ 00000470  0x00000284 disable  0x00000029 
+ 00000471  0x00000285 enable  0x00000010 
+ 00000472  0x00000286 call  0x00004b1e 
+ 00000473  0x00000287 call  0x000049d4 
+ 00000474  0x00000288 call  0x00004a8a 
+ 00000475  0x00000289 nbranch  0x000001e3 , 0x0000002d 
+ 00000476  0x0000028a fetch  0x00000001 , 0x00000003 
+ 00000477  0x0000028b increase  0x00000001 , 0x0000003f 
+ 00000478  0x0000028c store  0x00000001 , 0x00000003 
+ 00000479  0x0000028d fetch  0x00000001 , 0x00000302 
+ 00000480  0x0000028e and  0x0000003f , 0x0000000f , 0x0000003f 
+ 00000481  0x0000028f beq  0x00000003 , 0x000001ed 
+ 00000482  0x00000290 beq  0x00000005 , 0x000051af 
+ 00000483  0x00000292 fetch  0x00000001 , 0x00000016 
+ 00000484  0x00000293 bne  0x00000027 , 0x0000517d 
+ 00000485  0x00000294 random  0x0000003f 
+ 00000486  0x00000295 arg  0x000001ff , 0x00000002 
+ 00000487  0x00000296 iand  0x00000002 , 0x0000003f 
+ 00000488  0x00000297 add  0x0000003f , 0x000000fa , 0x0000003f 
+ 00000489  0x00000299 increase  0xffffffff , 0x0000003f 
+ 00000490  0x0000029a nop  0x00000026 
+ 00000491  0x0000029b nbranch  0x000001e9 , 0x00000034 
+ 00000492  0x0000029c branch  0x00005196 
+ 00000493  0x0000029f call  0x00004ac5 
+ 00000494  0x000002a0 branch  0x000001e3 
+ 00000495  0x000002a3 fetch  0x00000004 , 0x00004596 
+ 00000496  0x000002a4 arg  0x0000ea60 , 0x00000002 
+ 00000497  0x000002a5 iadd  0x00000002 , 0x0000003f 
+ 00000498  0x000002a6 store  0x00000004 , 0x00004596 
+ 00000499  0x000002a7 branch  0x000051a9 
+ 00000500  0x000002ab disable  0x0000002b 
+ 00000501  0x000002ac branch  0x000001f7 , 0x0000002e 
+ 00000502  0x000002ad nbranch  0x00000206 , 0x0000002d 
+ 00000503  0x000002af call  0x00003cb7 
+ 00000504  0x000002b0 fetch  0x00000002 , 0x00004161 
+ 00000505  0x000002b1 store  0x00000002 , 0x00000370 
+ 00000506  0x000002b2 fetch  0x00000001 , 0x00000302 
+ 00000507  0x000002b3 compare  0x00000001 , 0x0000003f , 0x00000003 
+ 00000508  0x000002b4 nbranch  0x00003ccb , 0x00000001 
+ 00000509  0x000002b5 fetch  0x00000001 , 0x00004465 
+ 00000510  0x000002b6 compare  0x00000001 , 0x0000003f , 0x00000003 
+ 00000511  0x000002b7 nbranch  0x00003ccb , 0x00000001 
+ 00000512  0x000002b8 call  0x00004bd0 
+ 00000513  0x000002b9 nbranch  0x00003ccb , 0x00000034 
+ 00000514  0x000002ba fetch  0x00000001 , 0x00004e62 
+ 00000515  0x000002bb sub  0x0000003f , 0x00000001 , 0x0000003e 
+ 00000516  0x000002bc nbranch  0x00003ccb , 0x00000002 
+ 00000517  0x000002bd branch  0x00005297 
+ 00000518  0x000002c0 fetcht  0x00000002 , 0x00004161 
+ 00000519  0x000002c1 fetch  0x00000002 , 0x00004e60 
+ 00000520  0x000002c2 iadd  0x00000002 , 0x00000002 
+ 00000521  0x000002c3 rshift  0x00000002 , 0x00000002 
+ 00000522  0x000002c4 fetch  0x00000002 , 0x00000370 
+ 00000523  0x000002c5 iadd  0x00000002 , 0x0000003f 
+ 00000524  0x000002c6 store  0x00000002 , 0x00000370 
+ 00000525  0x000002c7 branch  0x00003cc3 
+ 00000526  0x000002ca call  0x0000021c 
+ 00000527  0x000002cb arg  0x00000006 , 0x00000039 
+ 00000528  0x000002cc arg  0x00004ead , 0x00000006 
+ 00000529  0x000002cd setarg  0x0000ffff 
+ 00000530  0x000002ce call  0x00000220 
+ 00000531  0x000002cf nrtn  0x00000005 
+ 00000532  0x000002d0 fetch  0x00000001 , 0x00004ea8 
+ 00000533  0x000002d1 rtn  0x00000034 
+ 00000534  0x000002d2 increase  0xffffffff , 0x0000003f 
+ 00000535  0x000002d3 store  0x00000001 , 0x00004ea8 
+ 00000536  0x000002d4 call  0x00003e28 
+ 00000537  0x000002d5 rtn  0x00000005 
+ 00000538  0x000002d6 jam  0x00000001 , 0x00004ea7 
+ 00000539  0x000002d7 rtn 
+ 00000540  0x000002da arg  0x0000000c , 0x00000002 
+ 00000541  0x000002db arg  0x00004ead , 0x00000011 
+ 00000542  0x000002dc fetch  0x00000002 , 0x00004eab 
+ 00000543  0x000002dd branch  0x0000624a 
+ 00000544  0x000002df ifetcht  0x00000002 , 0x00000006 
+ 00000545  0x000002e0 isub  0x00000002 , 0x0000003e 
+ 00000546  0x000002e1 nrtn  0x00000005 
+ 00000547  0x000002e2 loop  0x00000220 
+ 00000548  0x000002e3 rtn 
+ 00000549  0x000002e9 hfetch  0x00000004 , 0x00008078 
+ 00000550  0x000002ea hfetcht  0x00000004 , 0x0000807c 
+ 00000551  0x000002eb ior  0x00000002 , 0x0000003f 
+ 00000552  0x000002ec invert  0x0000003f , 0x0000003f 
+ 00000553  0x000002ed iand  0x00000011 , 0x0000003f 
+ 00000554  0x000002ee hstore  0x00000004 , 0x00008070 
+ 00000555  0x000002ef rtn 
+ 00000556  0x000002f2 copy  0x00000011 , 0x0000003f 
+ 00000557  0x000002f3 rtn  0x00000034 
+ 00000558  0x000002f4 increase  0xffffff60 , 0x00000002 
+ 00000559  0x000002f5 increase  0xffffff60 , 0x00000002 
+ 00000560  0x000002f6 set0  0x0000001c , 0x00000002 
+ 00000561  0x000002f7 storet  0x00000004 , 0x00004703 
+ 00000562  0x000002f8 copy  0x0000003f , 0x00000002 
+ 00000563  0x000002f9 arg  0x000046f0 , 0x00000011 
+ 00000564  0x000002fa call  0x00007fa6 
+ 00000565  0x000002fb nrtn  0x00000034 
+ 00000566  0x000002fc copy  0x00000002 , 0x0000003f 
+ 00000567  0x000002fd branch  0x00007d7d 
+ 00000568  0x00000301 call  0x00007d80 
+ 00000569  0x00000302 arg  0x000046f8 , 0x00000011 
+ 00000570  0x00000303 call  0x00007f95 
+ 00000571  0x00000304 copy  0x0000003f , 0x00000002 
+ 00000572  0x00000305 call  0x00007d84 
+ 00000573  0x00000306 copy  0x00000002 , 0x0000003f 
+ 00000574  0x00000307 rtn  0x00000034 
+ 00000575  0x00000308 beq  0x00000023 , 0x00000245 
+ 00000576  0x00000309 beq  0x00000024 , 0x00000249 
+ 00000577  0x0000030a beq  0x00000025 , 0x0000024d 
+ 00000578  0x0000030b beq  0x0000000d , 0x0000024f 
+ 00000579  0x0000030c beq  0x00000027 , 0x0000025e 
+ 00000580  0x0000030d branch  0x00007db3 
+ 00000581  0x00000310 fetch  0x00000001 , 0x000049c3 
+ 00000582  0x00000311 store  0x00000001 , 0x00004280 
+ 00000583  0x00000312 jam  0x000000ff , 0x00004938 
+ 00000584  0x00000313 branch  0x0000069c 
+ 00000585  0x00000315 fetch  0x00000001 , 0x000049c3 
+ 00000586  0x00000316 store  0x00000001 , 0x00004280 
+ 00000587  0x00000317 set0  0x00000026 , 0x00000000 
+ 00000588  0x00000318 branch  0x0000497d 
+ 00000589  0x0000031a jam  0x00000014 , 0x00004280 
+ 00000590  0x0000031b branch  0x0000066d 
+ 00000591  0x0000031f set0  0x00000026 , 0x00000000 
+ 00000592  0x00000320 jam  0x00000000 , 0x00004131 
+ 00000593  0x00000321 random  0x0000003f 
+ 00000594  0x00000322 store  0x00000001 , 0x0000453e 
+ 00000595  0x00000324 setarg  0x0026100e 
+ 00000596  0x00000325 store  0x00000003 , 0x00004541 
+ 00000597  0x00000326 jam  0x00000000 , 0x00004e53 
+ 00000598  0x00000327 fetcht  0x00000002 , 0x00004e4e 
+ 00000599  0x00000328 storet  0x00000002 , 0x000044f8 
+ 00000600  0x00000329 call  0x000052a0 
+ 00000601  0x0000032a arg  0x00000005 , 0x00000012 
+ 00000602  0x0000032c call  0x00000268 
+ 00000603  0x0000032e copy  0x00000012 , 0x0000003f 
+ 00000604  0x0000032f istore  0x00000001 , 0x00000006 
+ 00000605  0x00000330 branch  0x00007e07 
+ 00000606  0x00000333 set0  0x00000026 , 0x00000000 
+ 00000607  0x00000334 jam  0x00000000 , 0x00004131 
+ 00000608  0x00000335 jam  0x00000001 , 0x00004e53 
+ 00000609  0x00000336 fetcht  0x00000002 , 0x00004e4e 
+ 00000610  0x00000337 call  0x00004f6a 
+ 00000611  0x00000338 copy  0x00000011 , 0x00000005 
+ 00000612  0x00000339 setarg  0x00000001 
+ 00000613  0x0000033a istore  0x00000001 , 0x00000005 
+ 00000614  0x0000033b arg  0x00000004 , 0x00000012 
+ 00000615  0x0000033c branch  0x0000025a 
+ 00000616  0x00000343 arg  0x00004401 , 0x00000011 
+ 00000617  0x00000345 ifetch  0x00000001 , 0x00000011 
+ 00000618  0x00000346 rtn  0x00000034 
+ 00000619  0x00000347 iadd  0x00000006 , 0x00000011 
+ 00000620  0x00000348 ifetch  0x00000001 , 0x00000006 
+ 00000621  0x00000349 rtneq  0x00000001 
+ 00000622  0x0000034a branch  0x00000269 
+ 00000623  0x0000034e call  0x000058c5 
+ 00000624  0x0000034f nbranch  0x00007de5 , 0x00000034 
+ 00000625  0x00000351 fetch  0x00000001 , 0x000009bd 
+ 00000626  0x00000352 bmark0  0x00000009 , 0x00007de0 
+ 00000627  0x00000355 beq  0x0000001f , 0x00000295 
+ 00000628  0x00000357 branch  0x00007dd0 
+ 00000629  0x00000369 jam  0x00000003 , 0x00000b2a 
+ 00000630  0x0000036a call  0x000000b0 
+ 00000631  0x0000036d jam  0x0000005a , 0x00004e45 
+ 00000632  0x0000036e call  0x00003cfc 
+ 00000633  0x0000036f hfetch  0x00000004 , 0x00008138 
+ 00000634  0x00000370 set0  0x0000000f , 0x0000003f 
+ 00000635  0x00000371 hstore  0x00000004 , 0x0000804c 
+ 00000636  0x00000372 call  0x00003cf4 
+ 00000637  0x00000373 arg  0xffffffff , 0x00000002 
+ 00000638  0x00000374 branch  0x00003c11 
+ 00000639  0x00000378 fetcht  0x00000004 , 0x0000489e 
+ 00000640  0x00000379 copy  0x00000022 , 0x0000003f 
+ 00000641  0x0000037a isub  0x00000002 , 0x0000003f 
+ 00000642  0x0000037c arg  0x00000640 , 0x00000002 
+ 00000643  0x0000037d idiv  0x00000002 
+ 00000644  0x0000037e call  0x00007f53 
+ 00000645  0x0000037f quotient  0x0000003f 
+ 00000646  0x00000380 rtn  0x00000034 
+ 00000647  0x00000381 copy  0x00000022 , 0x00000002 
+ 00000648  0x00000382 storet  0x00000004 , 0x0000489e 
+ 00000649  0x00000383 fetcht  0x00000002 , 0x00004898 
+ 00000650  0x00000384 byteswap  0x00000002 , 0x00000002 
+ 00000651  0x00000385 iadd  0x00000002 , 0x0000003f 
+ 00000652  0x00000386 byteswap  0x0000003f , 0x0000003f 
+ 00000653  0x00000387 store  0x00000002 , 0x00004898 
+ 00000654  0x00000388 byteswap  0x0000003f , 0x0000003f 
+ 00000655  0x00000389 and  0x0000003f , 0x00000003 , 0x0000003f 
+ 00000656  0x0000038a rtnne  0x00000000 
+ 00000657  0x0000038b call  0x000002b3 
+ 00000658  0x0000038c nrtn  0x0000002c 
+ 00000659  0x0000038e fetch  0x00000001 , 0x000042cf 
+ 00000660  0x0000038f bbit1  0x00000002 , 0x00000296 
+ 00000661  0x00000391 rtn 
+ 00000662  0x00000396 hfetch  0x00000001 , 0x00008078 
+ 00000663  0x00000397 set0  0x00000005 , 0x0000003f 
+ 00000664  0x00000398 hstore  0x00000001 , 0x00008078 
+ 00000665  0x00000399 hjam  0x0000008f , 0x00008971 
+ 00000666  0x0000039a fetch  0x00000001 , 0x000042d0 
+ 00000667  0x0000039b hstore  0x00000001 , 0x00008973 
+ 00000668  0x0000039c call  0x000002a1 
+ 00000669  0x0000039d hfetch  0x00000001 , 0x00008078 
+ 00000670  0x0000039e set1  0x00000005 , 0x0000003f 
+ 00000671  0x0000039f hstore  0x00000001 , 0x00008078 
+ 00000672  0x000003a0 rtn 
+ 00000673  0x000003a3 hfetch  0x00000001 , 0x00008053 
+ 00000674  0x000003a4 set1  0x00000007 , 0x0000003f 
+ 00000675  0x000003a5 hstore  0x00000001 , 0x00008053 
+ 00000676  0x000003a6 hfetch  0x00000001 , 0x00008973 
+ 00000677  0x000003a7 or_into  0x00000030 , 0x0000003f 
+ 00000678  0x000003a8 hstore  0x00000001 , 0x00008973 
+ 00000679  0x000003a9 hjam  0x0000007c , 0x00008906 
+ 00000680  0x000003aa hjam  0x000000aa , 0x00008972 
+ 00000681  0x000003ab nop  0x00001388 
+ 00000682  0x000003ac hfetcht  0x00000002 , 0x00008150 
+ 00000683  0x000003ad hfetch  0x00000001 , 0x00008053 
+ 00000684  0x000003ae set0  0x00000007 , 0x0000003f 
+ 00000685  0x000003af hstore  0x00000001 , 0x00008053 
+ 00000686  0x000003b0 byteswap  0x00000002 , 0x00000002 
+ 00000687  0x000003b1 storet  0x00000002 , 0x000042d1 
+ 00000688  0x000003b2 rtn 
+ 00000689  0x000003b5 enable  0x0000002c 
+ 00000690  0x000003b6 rtn 
+ 00000691  0x000003b8 disable  0x0000002c 
+ 00000692  0x000003b9 call  0x00004bd0 
+ 00000693  0x000003ba call  0x000002b1 , 0x00000034 
+ 00000694  0x000003bb fetch  0x00000001 , 0x00004954 
+ 00000695  0x000003bc ncall  0x000002b1 , 0x00000034 
+ 00000696  0x000003bd rtn 
+ 00000697  0x000003c0 jam  0x00000001 , 0x00004ea3 
+ 00000698  0x000003c1 call  0x000002bd 
+ 00000699  0x000003c2 jam  0x00000000 , 0x00004ea3 
+ 00000700  0x000003c3 rtn 
+ 00000701  0x000003c6 call  0x000000ab 
+ 00000702  0x000003c7 rtn  0x00000028 
+ 00000703  0x000003c8 byteswap  0x0000003f , 0x0000003f 
+ 00000704  0x000003c9 copy  0x0000003f , 0x00000006 
+ 00000705  0x000003ca call  0x000002e3 
+ 00000706  0x000003cb store  0x00000001 , 0x00004897 
+ 00000707  0x000003cc beq  0x00000001 , 0x000002ce 
+ 00000708  0x000003cd beq  0x00000006 , 0x000002ff 
+ 00000709  0x000003ce copy  0x0000003f , 0x00000002 
+ 00000710  0x000003cf copy  0x00000006 , 0x00000011 
+ 00000711  0x000003d0 fetch  0x00000001 , 0x00004040 
+ 00000712  0x000003d1 bbit0  0x00000000 , 0x000002d8 
+ 00000713  0x000003d2 copy  0x00000011 , 0x00000006 
+ 00000714  0x000003d3 rtnmark0  0x00000009 
+ 00000715  0x000003d4 copy  0x00000002 , 0x0000003f 
+ 00000716  0x000003d5 beq  0x00000005 , 0x00000316 
+ 00000717  0x000003d6 branch  0x00003b31 
+ 00000718  0x000003d9 call  0x000002e3 
+ 00000719  0x000003da call  0x000002e3 
+ 00000720  0x000003db store  0x00000001 , 0x000009bd 
+ 00000721  0x000003dc call  0x000002d3 
+ 00000722  0x000003dd branch  0x00007d90 
+ 00000723  0x000003e0 call  0x000002e6 
+ 00000724  0x000003e1 copy  0x00000006 , 0x00000002 
+ 00000725  0x000003e2 byteswap  0x00000002 , 0x00000002 
+ 00000726  0x000003e3 storet  0x00000002 , 0x000047c4 
+ 00000727  0x000003e4 rtn 
+ 00000728  0x000003e7 copy  0x00000011 , 0x00000006 
+ 00000729  0x000003e8 arg  0x000000f5 , 0x00000005 
+ 00000730  0x000003e9 branch  0x000002db 
+ 00000731  0x000003ec call  0x000002e3 
+ 00000732  0x000003ed copy  0x0000003f , 0x00000039 
+ 00000733  0x000003ef call  0x000002df 
+ 00000734  0x000003f0 branch  0x000002d3 
+ 00000735  0x000003f3 call  0x000002e3 
+ 00000736  0x000003f4 istore  0x00000001 , 0x00000005 
+ 00000737  0x000003f5 loop  0x000002df 
+ 00000738  0x000003f6 rtn 
+ 00000739  0x000003f9 call  0x000002e6 
+ 00000740  0x000003fa ifetch  0x00000001 , 0x00000006 
+ 00000741  0x000003fb rtn 
+ 00000742  0x000003fe setarg  0x000047c4 
+ 00000743  0x000003ff isub  0x00000006 , 0x0000003e 
+ 00000744  0x00000400 nrtn  0x00000005 
+ 00000745  0x00000401 arg  0x0000472e , 0x00000006 
+ 00000746  0x00000402 rtn 
+ 00000747  0x00000405 arg  0x00000003 , 0x00000039 
+ 00000748  0x00000406 arg  0x00004894 , 0x00000006 
+ 00000749  0x00000408 copy  0x00000006 , 0x00000011 
+ 00000750  0x00000409 fetch  0x00000002 , 0x0000482e 
+ 00000751  0x0000040a byteswap  0x0000003f , 0x0000003f 
+ 00000752  0x0000040b copy  0x0000003f , 0x00000005 
+ 00000753  0x0000040c copy  0x00000011 , 0x00000006 
+ 00000754  0x0000040e ifetch  0x00000001 , 0x00000006 
+ 00000755  0x0000040f istore  0x00000001 , 0x00000005 
+ 00000756  0x00000410 call  0x000002fa 
+ 00000757  0x00000411 loop  0x000002f2 
+ 00000758  0x00000412 copy  0x00000005 , 0x0000003f 
+ 00000759  0x00000413 byteswap  0x0000003f , 0x0000003f 
+ 00000760  0x00000414 store  0x00000002 , 0x0000482e 
+ 00000761  0x00000415 rtn 
+ 00000762  0x00000417 setarg  0x0000482c 
+ 00000763  0x00000418 isub  0x00000005 , 0x0000003e 
+ 00000764  0x00000419 nrtn  0x00000005 
+ 00000765  0x0000041a arg  0x000047c8 , 0x00000005 
+ 00000766  0x0000041b rtn 
+ 00000767  0x0000041e rtnmark0  0x00000027 
+ 00000768  0x0000041f call  0x000002e3 
+ 00000769  0x00000420 icopy  0x00000039 
+ 00000770  0x00000421 store  0x00000001 , 0x00004970 
+ 00000771  0x00000422 branch  0x000002dd 
+ 00000772  0x00000426 setarg  0x00000000 
+ 00000773  0x00000427 store  0x00000003 , 0x00004e85 
+ 00000774  0x00000428 rtn 
+ 00000775  0x0000042b rtnmark1  0x00000026 
+ 00000776  0x0000042c fetch  0x00000001 , 0x00004595 
+ 00000777  0x0000042d rtn  0x00000034 
+ 00000778  0x0000042e call  0x000000ab 
+ 00000779  0x0000042f rtn  0x00000028 
+ 00000780  0x00000430 byteswap  0x0000003f , 0x0000003f 
+ 00000781  0x00000431 copy  0x0000003f , 0x00000006 
+ 00000782  0x00000432 call  0x000002e3 
+ 00000783  0x00000433 store  0x00000001 , 0x00004897 
+ 00000784  0x00000434 copy  0x00000006 , 0x00000011 
+ 00000785  0x00000435 bne  0x00000005 , 0x000002d8 
+ 00000786  0x00000436 copy  0x00000006 , 0x00000012 
+ 00000787  0x00000437 call  0x00004bd4 
+ 00000788  0x00000438 nrtn  0x00000034 
+ 00000789  0x00000439 branch  0x0000031b 
+ 00000790  0x0000043c copy  0x00000006 , 0x00000012 
+ 00000791  0x0000043d fetch  0x00000001 , 0x00004ea3 
+ 00000792  0x0000043e rtn  0x00000034 
+ 00000793  0x0000043f call  0x00004bd0 
+ 00000794  0x00000440 nrtn  0x00000034 
+ 00000795  0x00000442 fetcht  0x00000002 , 0x00004e4e 
+ 00000796  0x00000443 call  0x00004f6a 
+ 00000797  0x00000444 rtnbit0  0x00000000 
+ 00000798  0x00000445 fetch  0x00000001 , 0x00004595 
+ 00000799  0x00000446 rtneq  0x00000000 
+ 00000800  0x00000447 fetch  0x00000001 , 0x00004e83 
+ 00000801  0x00000448 pincrease  0x00000001 
+ 00000802  0x00000449 store  0x00000001 , 0x00004e83 
+ 00000803  0x0000044a fetch  0x00000001 , 0x00004e85 
+ 00000804  0x0000044b add  0x0000003f , 0x00000001 , 0x00000002 
+ 00000805  0x0000044c and  0x00000002 , 0x00000003 , 0x00000002 
+ 00000806  0x0000044d storet  0x00000001 , 0x00004e85 
+ 00000807  0x0000044e mul32  0x0000003f , 0x00000007 , 0x0000003f 
+ 00000808  0x0000044f arg  0x00004e87 , 0x00000005 
+ 00000809  0x00000450 iadd  0x00000005 , 0x00000005 
+ 00000810  0x00000451 copy  0x00000012 , 0x00000006 
+ 00000811  0x00000452 call  0x000002e3 
+ 00000812  0x00000453 icopy  0x00000039 
+ 00000813  0x00000454 call  0x000002dd 
+ 00000814  0x00000455 call  0x00000332 
+ 00000815  0x00000456 rtn  0x0000002c 
+ 00000816  0x00000457 jam  0x0000001b , 0x000009bd 
+ 00000817  0x00000458 branch  0x00004bd6 
+ 00000818  0x0000045b disable  0x0000002c 
+ 00000819  0x0000045c fetch  0x00000001 , 0x00004ea4 
+ 00000820  0x0000045d rtneq  0x00000005 
+ 00000821  0x0000045e enable  0x0000002c 
+ 00000822  0x0000045f increase  0x00000001 , 0x0000003f 
+ 00000823  0x00000460 store  0x00000001 , 0x00004ea4 
+ 00000824  0x00000461 sub  0x0000003f , 0x00000001 , 0x0000003e 
+ 00000825  0x00000462 nrtn  0x00000002 
+ 00000826  0x00000463 jam  0x00000040 , 0x00004896 
+ 00000827  0x00000464 branch  0x000002eb 
+ 00000828  0x0000046d setarg  0x0000472e 
+ 00000829  0x0000046e byteswap  0x0000003f , 0x0000003f 
+ 00000830  0x0000046f store  0x00000002 , 0x000047c4 
+ 00000831  0x00000470 store  0x00000002 , 0x000047c6 
+ 00000832  0x00000471 setarg  0x000047c8 
+ 00000833  0x00000472 byteswap  0x0000003f , 0x0000003f 
+ 00000834  0x00000473 store  0x00000002 , 0x0000482c 
+ 00000835  0x00000474 store  0x00000002 , 0x0000482e 
+ 00000836  0x00000475 rtn 
+ 00000837  0x00000478 fetch  0x00000002 , 0x00004ea9 
+ 00000838  0x00000479 add  0x0000003f , 0x0000001c , 0x0000003f 
+ 00000839  0x0000047a store  0x00000002 , 0x00004eab 
+ 00000840  0x0000047b rtn 
+ 00000841  0x0000047e call  0x0000524a 
+ 00000842  0x00000481 jam  0x00000000 , 0x00000b2a 
+ 00000843  0x00000482 jam  0x00000006 , 0x0000016c 
+ 00000844  0x00000483 call  0x00003e7f 
+ 00000845  0x00000486 setarg  0x000003c8 
+ 00000846  0x00000487 store  0x00000002 , 0x00004296 
+ 00000847  0x0000048a setarg  0x000002b9 
+ 00000848  0x0000048c store  0x00000002 , 0x00004290 
+ 00000849  0x0000048d setarg  0x000003c1 
+ 00000850  0x0000048e store  0x00000002 , 0x0000428c 
+ 00000851  0x0000048f ncall  0x0000033c , 0x0000002b 
+ 00000852  0x00000490 call  0x00000389 , 0x0000002b 
+ 00000853  0x00000491 call  0x00003d3e 
+ 00000854  0x00000493 fetch  0x00000001 , 0x00004eba 
+ 00000855  0x00000494 branch  0x00000362 , 0x00000034 
+ 00000856  0x00000495 increase  0xffffffff , 0x0000003f 
+ 00000857  0x00000496 store  0x00000001 , 0x00004eba 
+ 00000858  0x00000497 setarg  0x00007f80 
+ 00000859  0x00000498 store  0x00000002 , 0x00004ea9 
+ 00000860  0x00000499 call  0x00000345 
+ 00000861  0x0000049b fetch  0x00000001 , 0x00004e53 
+ 00000862  0x0000049c nbranch  0x00000362 , 0x00000034 
+ 00000863  0x0000049d fetch  0x00000001 , 0x00004eb9 
+ 00000864  0x0000049e nbranch  0x00000362 , 0x00000034 
+ 00000865  0x0000049f call  0x0000020e 
+ 00000866  0x000004a1 fetch  0x00000001 , 0x00004e45 
+ 00000867  0x000004a2 beq  0x0000005a , 0x0000039d 
+ 00000868  0x000004a3 branch  0x0000039b , 0x0000002b 
+ 00000869  0x000004a4 fetch  0x00000001 , 0x00004280 
+ 00000870  0x000004a5 store  0x00000001 , 0x000049c3 
+ 00000871  0x000004a6 call  0x00000605 
+ 00000872  0x000004a7 fetch  0x00000002 , 0x00004e41 
+ 00000873  0x000004a8 byteswap  0x0000003f , 0x0000003f 
+ 00000874  0x000004a9 store  0x00000002 , 0x00004e41 
+ 00000875  0x000004aa fetch  0x00000002 , 0x00004e43 
+ 00000876  0x000004ab byteswap  0x0000003f , 0x0000003f 
+ 00000877  0x000004ac store  0x00000002 , 0x00004e43 
+ 00000878  0x000004ad call  0x000003a8 
+ 00000879  0x000004ae call  0x000003e2 
+ 00000880  0x000004af fetch  0x00000008 , 0x000009c6 
+ 00000881  0x000004b0 nbranch  0x00000376 , 0x00000034 
+ 00000882  0x000004b1 fetch  0x00000002 , 0x00004ad4 
+ 00000883  0x000004b2 byteswap  0x0000003f , 0x0000003f 
+ 00000884  0x000004b3 branch  0x00000376 , 0x00000034 
+ 00000885  0x000004b4 store  0x00000002 , 0x00004e43 
+ 00000886  0x000004b6 jam  0x0000002f , 0x00004896 
+ 00000887  0x000004b8 fetch  0x00000001 , 0x00004e78 
+ 00000888  0x000004b9 nbranch  0x0000037e , 0x00000034 
+ 00000889  0x000004ba call  0x00000293 
+ 00000890  0x000004bb call  0x000002eb 
+ 00000891  0x000004bc call  0x00000307 
+ 00000892  0x000004bd hjam  0x00000003 , 0x00008280 
+ 00000893  0x000004be rtn 
+ 00000894  0x000004c0 call  0x00003c29 , 0x0000002b 
+ 00000895  0x000004c1 arg  0x00000d00 , 0x0000000b 
+ 00000896  0x000004c2 until  0x00000023 , 0x00000026 
+ 00000897  0x000004c3 copy  0x00000022 , 0x0000003f 
+ 00000898  0x000004c4 store  0x00000003 , 0x00004e7a 
+ 00000899  0x000004c6 fetch  0x00000002 , 0x0000470b 
+ 00000900  0x000004c7 rtnbit1  0x0000000b 
+ 00000901  0x000004c8 rtnbit1  0x00000006 
+ 00000902  0x000004c9 call  0x00003d60 
+ 00000903  0x000004ca call  0x000004f6 
+ 00000904  0x000004cb branch  0x00000383 
+ 00000905  0x000004ce copy  0x00000027 , 0x0000003f 
+ 00000906  0x000004cf bmark0  0x00000026 , 0x00000393 
+ 00000907  0x000004d2 branch  0x0000038e , 0x00000034 
+ 00000908  0x000004d4 jam  0x000000bb , 0x000049b9 
+ 00000909  0x000004d5 rtn 
+ 00000910  0x000004d7 jam  0x00000000 , 0x000049b9 
+ 00000911  0x000004d8 fetch  0x00000001 , 0x000049b7 
+ 00000912  0x000004d9 rtn  0x00000034 
+ 00000913  0x000004da jam  0x00000000 , 0x000049b7 
+ 00000914  0x000004db branch  0x0000038c 
+ 00000915  0x000004df branch  0x00000396 , 0x00000034 
+ 00000916  0x000004e0 jam  0x00000002 , 0x000049c1 
+ 00000917  0x000004e1 rtn 
+ 00000918  0x000004e3 fetch  0x00000001 , 0x000049c2 
+ 00000919  0x000004e4 rtn  0x00000034 
+ 00000920  0x000004e5 jam  0x00000000 , 0x000049c2 
+ 00000921  0x000004e6 jam  0x00000001 , 0x000049c1 
+ 00000922  0x000004e7 rtn 
+ 00000923  0x000004ea jam  0x0000003c , 0x00004896 
+ 00000924  0x000004eb branch  0x00000377 
+ 00000925  0x000004ed copy  0x00000027 , 0x0000003f 
+ 00000926  0x000004ee branch  0x00000277 , 0x00000034 
+ 00000927  0x000004ef call  0x0000530d 
+ 00000928  0x000004f0 call  0x000042eb 
+ 00000929  0x000004f1 setarg  0x00000000 
+ 00000930  0x000004f2 store  0x00000008 , 0x00004040 
+ 00000931  0x000004f3 store  0x00000002 , 0x0000470b 
+ 00000932  0x000004f4 store  0x00000002 , 0x00004898 
+ 00000933  0x000004f5 store  0x00000002 , 0x0000489a 
+ 00000934  0x000004f6 jam  0x0000003d , 0x00004896 
+ 00000935  0x000004f7 branch  0x00000377 
+ 00000936  0x000004fa call  0x000062c4 
+ 00000937  0x000004fb setarg  0x000007e2 
+ 00000938  0x000004fc arg  0x000009c6 , 0x00000011 
+ 00000939  0x000004fd arg  0x0000000c , 0x00000002 
+ 00000940  0x000004fe call  0x0000630d 
+ 00000941  0x000004ff call  0x000062c7 
+ 00000942  0x00000500 fetch  0x00000008 , 0x000009c6 
+ 00000943  0x00000501 rtn  0x00000034 
+ 00000944  0x00000502 fetch  0x00000001 , 0x000042cf 
+ 00000945  0x00000503 bbit1  0x00000002 , 0x000003b3 
+ 00000946  0x00000504 rtn 
+ 00000947  0x00000509 fetcht  0x00000002 , 0x000009c6 
+ 00000948  0x0000050a fetch  0x00000002 , 0x000009cc 
+ 00000949  0x0000050b copy  0x00000002 , 0x00000012 
+ 00000950  0x0000050c copy  0x0000003f , 0x00000011 
+ 00000951  0x0000050d isub  0x00000002 , 0x00000013 
+ 00000952  0x0000050e copy  0x00000012 , 0x0000003f 
+ 00000953  0x0000050f isub  0x00000013 , 0x0000003f 
+ 00000954  0x00000510 byteswap  0x0000003f , 0x0000003f 
+ 00000955  0x00000511 store  0x00000002 , 0x00004e41 
+ 00000956  0x00000512 lshift2  0x00000013 , 0x0000003f 
+ 00000957  0x00000513 iadd  0x00000011 , 0x0000003f 
+ 00000958  0x00000514 byteswap  0x0000003f , 0x0000003f 
+ 00000959  0x00000515 store  0x00000002 , 0x00004e43 
+ 00000960  0x00000516 rtn 
+ 00000961  0x0000051a enable  0x00000028 
+ 00000962  0x0000051b hfetch  0x00000004 , 0x00008138 
+ 00000963  0x0000051c setflag  0x00000028 , 0x0000001a , 0x0000003f 
+ 00000964  0x0000051d hstore  0x00000004 , 0x0000804c 
+ 00000965  0x0000051e call  0x00003cf4 
+ 00000966  0x0000051f jam  0x00000001 , 0x0000009f 
+ 00000967  0x00000521 rtn 
+ 00000968  0x00000527 copy  0x00000013 , 0x0000003f 
+ 00000969  0x00000528 and_into  0x000000f0 , 0x0000003f 
+ 00000970  0x00000529 rtneq  0x00000050 
+ 00000971  0x0000052a copy  0x00000013 , 0x0000003f 
+ 00000972  0x0000052b store  0x00000001 , 0x00004896 
+ 00000973  0x0000052c branch  0x000002eb 
+ 00000974  0x00000530 jam  0x00000000 , 0x00004927 
+ 00000975  0x00000531 jam  0x0000004e , 0x00004932 
+ 00000976  0x00000532 fetch  0x00000004 , 0x00004934 
+ 00000977  0x00000534 store  0x00000004 , 0x00004950 
+ 00000978  0x00000535 branch  0x00000491 
+ 00000979  0x00000539 fetcht  0x00000001 , 0x00004933 
+ 00000980  0x0000053a call  0x000003d9 
+ 00000981  0x0000053b increase  0x00000001 , 0x00000002 
+ 00000982  0x0000053c and_into  0x00000003 , 0x00000002 
+ 00000983  0x0000053d storet  0x00000001 , 0x00004933 
+ 00000984  0x0000053e rtn 
+ 00000985  0x00000541 fetch  0x00000001 , 0x00004950 
+ 00000986  0x00000542 and_into  0x00000003 , 0x0000003f 
+ 00000987  0x00000543 mul32  0x0000003f , 0x00000004 , 0x00000011 
+ 00000988  0x00000544 setarg  0x00004939 
+ 00000989  0x00000545 iadd  0x00000011 , 0x0000003f 
+ 00000990  0x00000546 iadd  0x00000002 , 0x00000006 
+ 00000991  0x00000547 ifetch  0x00000001 , 0x00000006 
+ 00000992  0x00000548 store  0x00000001 , 0x00004932 
+ 00000993  0x00000549 rtn 
+ 00000994  0x0000054c fetch  0x00000004 , 0x000009c6 
+ 00000995  0x0000054d store  0x00000004 , 0x00004960 
+ 00000996  0x0000054e nrtn  0x00000034 
+ 00000997  0x0000054f fetch  0x00000004 , 0x00004140 
+ 00000998  0x00000550 store  0x00000004 , 0x00004960 
+ 00000999  0x00000551 rtn 
+ 00001000  0x00000555 jam  0x00000001 , 0x000049b0 
+ 00001001  0x00000556 jam  0x00000000 , 0x000049b2 
+ 00001002  0x00000558 fetch  0x00000001 , 0x00004929 
+ 00001003  0x00000559 and_into  0x00000007 , 0x0000003f 
+ 00001004  0x0000055a store  0x00000001 , 0x00004929 
+ 00001005  0x0000055b rtn 
+ 00001006  0x0000055e fetch  0x00000001 , 0x00004929 
+ 00001007  0x0000055f set1  0x00000004 , 0x0000003f 
+ 00001008  0x00000560 store  0x00000001 , 0x00004929 
+ 00001009  0x00000562 store  0x00000001 , 0x000048e4 
+ 00001010  0x00000563 rtn 
+ 00001011  0x00000565 fetch  0x00000001 , 0x00004929 
+ 00001012  0x00000566 set0  0x00000004 , 0x0000003f 
+ 00001013  0x00000567 store  0x00000001 , 0x00004929 
+ 00001014  0x00000568 rtn 
+ 00001015  0x0000056b call  0x0000060c 
+ 00001016  0x0000056c fetch  0x00000001 , 0x000049b4 
+ 00001017  0x0000056d beq  0x00000001 , 0x000003fc 
+ 00001018  0x0000056e beq  0x00000002 , 0x00000400 
+ 00001019  0x0000056f rtn 
+ 00001020  0x00000571 jam  0x00000002 , 0x000049b2 
+ 00001021  0x00000573 jam  0x00000000 , 0x000049b3 
+ 00001022  0x00000574 jam  0x00000000 , 0x000049b0 
+ 00001023  0x00000575 branch  0x000003ea 
+ 00001024  0x00000578 jam  0x00000000 , 0x000049b1 
+ 00001025  0x00000579 branch  0x000003fd 
+ 00001026  0x0000057c fetch  0x00000002 , 0x0000492e 
+ 00001027  0x0000057d increase  0x00000001 , 0x0000003f 
+ 00001028  0x0000057e store  0x00000002 , 0x0000492e 
+ 00001029  0x0000057f bbit1  0x0000000a , 0x00000571 
+ 00001030  0x00000580 fetch  0x00000001 , 0x000049b1 
+ 00001031  0x00000581 beq  0x00000001 , 0x0000040b 
+ 00001032  0x00000582 jam  0x00000001 , 0x000049b1 
+ 00001033  0x00000584 fetch  0x00000001 , 0x000049b1 
+ 00001034  0x00000585 bne  0x00000001 , 0x000003ea 
+ 00001035  0x00000587 fetch  0x00000001 , 0x000049b5 
+ 00001036  0x00000588 increase  0x00000001 , 0x0000003f 
+ 00001037  0x00000589 store  0x00000001 , 0x000049b5 
+ 00001038  0x0000058a beq  0x00000004 , 0x00000412 
+ 00001039  0x0000058b call  0x000003d3 
+ 00001040  0x0000058c jam  0x00000002 , 0x0000496e 
+ 00001041  0x0000058d branch  0x00000532 
+ 00001042  0x00000590 call  0x0000060c 
+ 00001043  0x00000591 jam  0x00000000 , 0x000049b5 
+ 00001044  0x00000592 branch  0x000003ea 
+ 00001045  0x00000595 jam  0x00000002 , 0x000049b2 
+ 00001046  0x00000597 jam  0x00000001 , 0x000049b0 
+ 00001047  0x00000598 jam  0x00000000 , 0x000049b1 
+ 00001048  0x00000599 branch  0x000003ea 
+ 00001049  0x0000059c fetch  0x00000001 , 0x000049b4 
+ 00001050  0x0000059d beq  0x00000003 , 0x00000416 
+ 00001051  0x0000059e fetch  0x00000001 , 0x00004929 
+ 00001052  0x0000059f isolate0  0x00000004 , 0x0000003f 
+ 00001053  0x000005a0 branch  0x000003e8 , 0x00000001 
+ 00001054  0x000005a1 fetch  0x00000001 , 0x000049b4 
+ 00001055  0x000005a2 beq  0x00000001 , 0x00000415 
+ 00001056  0x000005a3 beq  0x00000002 , 0x00000416 
+ 00001057  0x000005a4 rtn 
+ 00001058  0x000005a7 fetch  0x00000001 , 0x00004938 
+ 00001059  0x000005a8 rtnne  0x000000ff 
+ 00001060  0x000005a9 call  0x00000427 
+ 00001061  0x000005aa ncall  0x0000042f , 0x0000002c 
+ 00001062  0x000005ab rtn 
+ 00001063  0x000005ae disable  0x0000002c 
+ 00001064  0x000005af fetch  0x00000001 , 0x000049b0 
+ 00001065  0x000005b0 rtnne  0x00000001 
+ 00001066  0x000005b1 fetch  0x00000001 , 0x000049b2 
+ 00001067  0x000005b2 rtnne  0x00000000 
+ 00001068  0x000005b3 jam  0x00000001 , 0x000049b4 
+ 00001069  0x000005b4 jam  0x00000004 , 0x0000496e 
+ 00001070  0x000005b5 branch  0x000002b1 
+ 00001071  0x000005b8 fetch  0x00000001 , 0x000049b2 
+ 00001072  0x000005b9 branch  0x00000437 , 0x00000034 
+ 00001073  0x000005ba increase  0xffffffff , 0x0000003f 
+ 00001074  0x000005bb store  0x00000001 , 0x000049b2 
+ 00001075  0x000005bc jam  0x00000002 , 0x000049b4 
+ 00001076  0x000005bd call  0x000003d3 
+ 00001077  0x000005be jam  0x00000004 , 0x0000496e 
+ 00001078  0x000005bf rtn 
+ 00001079  0x000005c2 jam  0x00000003 , 0x000049b4 
+ 00001080  0x000005c3 fetch  0x00000001 , 0x000049b1 
+ 00001081  0x000005c4 nbranch  0x00000409 , 0x00000034 
+ 00001082  0x000005c5 call  0x000003d3 
+ 00001083  0x000005c6 jam  0x00000002 , 0x0000496e 
+ 00001084  0x000005c7 rtn 
+ 00001085  0x000005cb rtnmark0  0x00000026 
+ 00001086  0x000005cc set1  0x00000027 , 0x00000000 
+ 00001087  0x000005cd fetcht  0x00000004 , 0x00004949 
+ 00001088  0x000005ce copy  0x00000022 , 0x0000003f 
+ 00001089  0x000005cf isub  0x00000002 , 0x0000003e 
+ 00001090  0x000005d0 ncall  0x00000456 , 0x00000002 
+ 00001091  0x000005d1 copy  0x0000003f , 0x00000012 
+ 00001092  0x000005d2 fetch  0x00000004 , 0x00004949 
+ 00001093  0x000005d3 fetcht  0x00000001 , 0x0000494d 
+ 00001094  0x000005d4 iadd  0x00000002 , 0x00000002 
+ 00001095  0x000005d5 copy  0x00000012 , 0x0000003f 
+ 00001096  0x000005d6 isub  0x00000002 , 0x0000003e 
+ 00001097  0x000005d7 nbranch  0x00000454 , 0x00000002 
+ 00001098  0x000005d8 set0  0x0000001c , 0x0000003f 
+ 00001099  0x000005d9 store  0x00000004 , 0x00004949 
+ 00001100  0x000005da call  0x00000459 
+ 00001101  0x000005db call  0x00000466 
+ 00001102  0x000005dc branch  0x000004c1 , 0x00000028 
+ 00001103  0x000005dd call  0x00000422 
+ 00001104  0x000005df call  0x00000532 
+ 00001105  0x000005e0 fetch  0x00000001 , 0x00004938 
+ 00001106  0x000005e1 sub  0x0000003f , 0x000000ff , 0x0000003e 
+ 00001107  0x000005e2 call  0x00000616 , 0x00000005 
+ 00001108  0x000005e4 set0  0x00000027 , 0x00000000 
+ 00001109  0x000005e5 rtn 
+ 00001110  0x000005e8 rtn  0x00000005 
+ 00001111  0x000005e9 set1  0x0000001c , 0x0000003f 
+ 00001112  0x000005ea rtn 
+ 00001113  0x000005ed fetch  0x00000001 , 0x00004964 
+ 00001114  0x000005ee increase  0x00000001 , 0x0000003f 
+ 00001115  0x000005ef store  0x00000001 , 0x00004964 
+ 00001116  0x000005f0 beq  0x00000004 , 0x0000045f 
+ 00001117  0x000005f1 beq  0x00000005 , 0x00000462 
+ 00001118  0x000005f2 rtn 
+ 00001119  0x000005f4 fetch  0x00000001 , 0x0000494f 
+ 00001120  0x000005f5 store  0x00000001 , 0x0000494d 
+ 00001121  0x000005f6 rtn 
+ 00001122  0x000005f8 jam  0x00000000 , 0x00004964 
+ 00001123  0x000005f9 fetch  0x00000001 , 0x0000494e 
+ 00001124  0x000005fa store  0x00000001 , 0x0000494d 
+ 00001125  0x000005fb rtn 
+ 00001126  0x000005ff fetch  0x00000001 , 0x00004938 
+ 00001127  0x00000600 bne  0x000000ff , 0x00000671 
+ 00001128  0x00000602 call  0x000002bd 
+ 00001129  0x00000603 branch  0x00000478 , 0x00000028 
+ 00001130  0x00000604 fetch  0x00000001 , 0x00004897 
+ 00001131  0x00000605 bne  0x00000006 , 0x000064c0 
+ 00001132  0x00000607 fetch  0x00000001 , 0x00004e80 
+ 00001133  0x00000608 call  0x000004dc , 0x00000034 
+ 00001134  0x0000060a fetch  0x00000001 , 0x00004e80 
+ 00001135  0x0000060b ncall  0x00000474 , 0x00000034 
+ 00001136  0x0000060c call  0x0000047d 
+ 00001137  0x0000060d call  0x0000049e 
+ 00001138  0x0000060f jam  0x00000001 , 0x0000492d 
+ 00001139  0x00000610 rtn 
+ 00001140  0x00000613 jam  0x00000000 , 0x00004e79 
+ 00001141  0x00000614 jam  0x00000000 , 0x00004e78 
+ 00001142  0x00000615 jam  0x0000000a , 0x000049ba 
+ 00001143  0x00000616 rtn 
+ 00001144  0x00000619 fetch  0x00000001 , 0x00004e78 
+ 00001145  0x0000061a nbranch  0x0000047d , 0x00000034 
+ 00001146  0x0000061c fetch  0x00000001 , 0x0000492d 
+ 00001147  0x0000061d beq  0x00000001 , 0x000031d4 
+ 00001148  0x0000061e rtn 
+ 00001149  0x00000623 fetch  0x00000001 , 0x000049b9 
+ 00001150  0x00000624 store  0x00000001 , 0x000049b8 
+ 00001151  0x00000626 fetch  0x00000001 , 0x00004970 
+ 00001152  0x00000627 copy  0x0000003f , 0x00000011 
+ 00001153  0x00000628 arg  0x00004971 , 0x00000012 
+ 00001154  0x00000629 jam  0x00000000 , 0x00004954 
+ 00001155  0x0000062b call  0x000003ea 
+ 00001156  0x0000062c store  0x00000001 , 0x00004990 
+ 00001157  0x0000062e add  0x00000011 , 0x00000001 , 0x00000002 
+ 00001158  0x0000062f arg  0x00004991 , 0x00000005 
+ 00001159  0x00000632 copy  0x00000011 , 0x00000039 
+ 00001160  0x00000633 copy  0x00000012 , 0x00000006 
+ 00001161  0x00000634 call  0x00007ecd 
+ 00001162  0x00000635 arg  0x00004990 , 0x00000011 
+ 00001163  0x00000637 rtnmark0  0x00000027 
+ 00001164  0x00000638 storet  0x00000001 , 0x00004928 
+ 00001165  0x00000639 copy  0x00000002 , 0x00000039 
+ 00001166  0x0000063a arg  0x000048c4 , 0x00000005 
+ 00001167  0x0000063b copy  0x00000011 , 0x00000006 
+ 00001168  0x0000063c branch  0x00007ecd 
+ 00001169  0x00000641 arg  0x00000000 , 0x00000011 
+ 00001170  0x00000642 arg  0x00000004 , 0x00000039 
+ 00001171  0x00000643 arg  0x00004950 , 0x00000006 
+ 00001172  0x00000645 ifetch  0x00000001 , 0x00000006 
+ 00001173  0x00000646 iadd  0x00000011 , 0x00000011 
+ 00001174  0x00000647 loop  0x00000494 
+ 00001175  0x00000648 copy  0x00000011 , 0x0000003f 
+ 00001176  0x00000649 store  0x00000002 , 0x000049bb 
+ 00001177  0x0000064a fetch  0x00000001 , 0x000049bb 
+ 00001178  0x0000064b fetcht  0x00000001 , 0x000049bc 
+ 00001179  0x0000064c iadd  0x00000002 , 0x0000003f 
+ 00001180  0x0000064d store  0x00000001 , 0x000049bd 
+ 00001181  0x0000064e rtn 
+ 00001182  0x00000652 fetch  0x00000001 , 0x00004928 
+ 00001183  0x00000653 increase  0x00000002 , 0x0000003f 
+ 00001184  0x00000654 store  0x00000001 , 0x0000492a 
+ 00001185  0x00000656 fetch  0x00000001 , 0x00004929 
+ 00001186  0x00000657 store  0x00000001 , 0x000048e4 
+ 00001187  0x00000659 fetch  0x00000001 , 0x00004928 
+ 00001188  0x0000065a lshift3  0x0000003f , 0x0000003f 
+ 00001189  0x0000065b fetcht  0x00000001 , 0x00004927 
+ 00001190  0x0000065c and  0x00000002 , 0x00000003 , 0x00000002 
+ 00001191  0x0000065d lshift  0x00000002 , 0x00000002 
+ 00001192  0x0000065e ior  0x00000002 , 0x0000003f 
+ 00001193  0x0000065f fetcht  0x00000001 , 0x00004965 
+ 00001194  0x00000660 iadd  0x00000002 , 0x0000003f 
+ 00001195  0x00000661 istore  0x00000001 , 0x00000005 
+ 00001196  0x00000663 fetch  0x00000001 , 0x00004928 
+ 00001197  0x00000664 iforce  0x00000039 
+ 00001198  0x00000665 arg  0x000048c4 , 0x00000006 
+ 00001199  0x00000666 branch  0x00007ecd 
+ 00001200  0x00000669 jam  0x00000001 , 0x00004954 
+ 00001201  0x0000066a jam  0x00000000 , 0x000049b1 
+ 00001202  0x0000066b call  0x000003ea 
+ 00001203  0x0000066c store  0x00000001 , 0x00004990 
+ 00001204  0x0000066d setarg  0x00000000 
+ 00001205  0x0000066e store  0x00000007 , 0x00004991 
+ 00001206  0x0000066f fetch  0x00000004 , 0x00004960 
+ 00001207  0x00000670 store  0x00000004 , 0x00004998 
+ 00001208  0x00000671 arg  0x0000000c , 0x00000002 
+ 00001209  0x00000672 arg  0x00004990 , 0x00000011 
+ 00001210  0x00000673 call  0x0000048b 
+ 00001211  0x00000674 fetch  0x00000001 , 0x00004929 
+ 00001212  0x00000675 set1  0x00000003 , 0x0000003f 
+ 00001213  0x00000676 store  0x00000001 , 0x00004929 
+ 00001214  0x00000677 call  0x0000049e 
+ 00001215  0x00000678 call  0x00000472 
+ 00001216  0x00000679 branch  0x00000450 
+ 00001217  0x0000067c fetch  0x00000001 , 0x00004e78 
+ 00001218  0x0000067d branch  0x000004c5 , 0x00000034 
+ 00001219  0x0000067e call  0x000004ef 
+ 00001220  0x0000067f branch  0x0000050e 
+ 00001221  0x00000682 fetch  0x00000001 , 0x00004954 
+ 00001222  0x00000683 branch  0x000004b0 , 0x00000034 
+ 00001223  0x00000684 fetcht  0x00000001 , 0x000049b8 
+ 00001224  0x00000685 increase  0x00000001 , 0x00000002 
+ 00001225  0x00000686 storet  0x00000001 , 0x000049b8 
+ 00001226  0x00000687 fetch  0x00000001 , 0x000049b9 
+ 00001227  0x00000688 isub  0x00000002 , 0x0000003e 
+ 00001228  0x00000689 rtn  0x00000002 
+ 00001229  0x0000068a jam  0x00000000 , 0x000049b8 
+ 00001230  0x0000068c call  0x000000a0 
+ 00001231  0x0000068d nrtn  0x00000028 
+ 00001232  0x0000068e fetch  0x00000001 , 0x00000b2b 
+ 00001233  0x0000068f nrtn  0x00000034 
+ 00001234  0x00000690 fetch  0x00000001 , 0x000049ba 
+ 00001235  0x00000691 nrtn  0x00000034 
+ 00001236  0x00000692 jam  0x00000000 , 0x00004e80 
+ 00001237  0x00000693 call  0x00003be2 
+ 00001238  0x00000694 fetch  0x00000003 , 0x0000420f 
+ 00001239  0x00000695 rtn  0x00000034 
+ 00001240  0x00000696 fetch  0x00000008 , 0x00004958 
+ 00001241  0x00000697 call  0x00007f16 
+ 00001242  0x00000698 storet  0x00000004 , 0x000041fb 
+ 00001243  0x00000699 branch  0x00003c11 
+ 00001244  0x0000069c fetch  0x00000001 , 0x000042b8 
+ 00001245  0x0000069d isolate0  0x00000002 , 0x0000003f 
+ 00001246  0x0000069e branch  0x000004e6 , 0x00000001 
+ 00001247  0x0000069f fetch  0x00000001 , 0x00004e79 
+ 00001248  0x000006a0 rtneq  0x00000005 
+ 00001249  0x000006a1 increase  0x00000001 , 0x0000003f 
+ 00001250  0x000006a2 store  0x00000001 , 0x00004e79 
+ 00001251  0x000006a3 rtnne  0x00000005 
+ 00001252  0x000006a5 jam  0x00000001 , 0x00004e78 
+ 00001253  0x000006a6 rtn 
+ 00001254  0x000006a9 fetch  0x00000001 , 0x00004e79 
+ 00001255  0x000006aa rtneq  0x00000014 
+ 00001256  0x000006ab increase  0x00000001 , 0x0000003f 
+ 00001257  0x000006ac store  0x00000001 , 0x00004e79 
+ 00001258  0x000006ad rtnne  0x00000014 
+ 00001259  0x000006ae fetch  0x00000001 , 0x000042b8 
+ 00001260  0x000006af set1  0x00000002 , 0x0000003f 
+ 00001261  0x000006b0 store  0x00000001 , 0x000042b8 
+ 00001262  0x000006b1 branch  0x000004e4 
+ 00001263  0x000006b4 fetch  0x00000001 , 0x00004e79 
+ 00001264  0x000006b5 rtn  0x00000034 
+ 00001265  0x000006b6 increase  0xffffffff , 0x0000003f 
+ 00001266  0x000006b7 store  0x00000001 , 0x00004e79 
+ 00001267  0x000006b8 nrtn  0x00000034 
+ 00001268  0x000006b9 jam  0x00000000 , 0x00004e78 
+ 00001269  0x000006ba rtn 
+ 00001270  0x000006bd set1  0x00000027 , 0x00000000 
+ 00001271  0x000006be call  0x000002bd 
+ 00001272  0x000006bf branch  0x000004fb , 0x00000028 
+ 00001273  0x000006c0 fetch  0x00000001 , 0x00004897 
+ 00001274  0x000006c1 beq  0x00000006 , 0x0000050a 
+ 00001275  0x000006c3 fetch  0x00000001 , 0x00004e7d 
+ 00001276  0x000006c4 beq  0x00000001 , 0x00000502 
+ 00001277  0x000006c5 beq  0x00000002 , 0x000004c1 
+ 00001278  0x000006c6 beq  0x00000003 , 0x00000500 
+ 00001279  0x000006c7 rtn 
+ 00001280  0x000006ca jam  0x00000000 , 0x00004e79 
+ 00001281  0x000006cb jam  0x00000000 , 0x00004e78 
+ 00001282  0x000006cd call  0x000004dc 
+ 00001283  0x000006ce jam  0x00000000 , 0x00004e7d 
+ 00001284  0x000006cf arg  0x00000007 , 0x00000039 
+ 00001285  0x000006d0 copy  0x00000039 , 0x0000003f 
+ 00001286  0x000006d1 store  0x00000001 , 0x00004970 
+ 00001287  0x000006d2 arg  0x00004e21 , 0x00000006 
+ 00001288  0x000006d3 call  0x00007ecd 
+ 00001289  0x000006d4 disable  0x00000028 
+ 00001290  0x000006d6 call  0x0000046c 
+ 00001291  0x000006d7 call  0x00000422 
+ 00001292  0x000006d8 call  0x00000532 
+ 00001293  0x000006d9 call  0x00000616 
+ 00001294  0x000006db call  0x00003be2 
+ 00001295  0x000006dc fetch  0x00000003 , 0x0000420f 
+ 00001296  0x000006dd rtn  0x00000034 
+ 00001297  0x000006de fetch  0x00000001 , 0x00004131 
+ 00001298  0x000006df rtn  0x00000034 
+ 00001299  0x000006e0 fetch  0x00000001 , 0x00004e80 
+ 00001300  0x000006e1 beq  0x00000001 , 0x00000517 
+ 00001301  0x000006e2 setarg  0x00000000 
+ 00001302  0x000006e3 store  0x00000008 , 0x000000a0 
+ 00001303  0x000006e5 call  0x00000527 
+ 00001304  0x000006e6 arg  0x00000d00 , 0x0000000b 
+ 00001305  0x000006e7 until  0x00000023 , 0x00000026 
+ 00001306  0x000006e8 fetcht  0x00000003 , 0x00004e7a 
+ 00001307  0x000006e9 copy  0x00000022 , 0x0000003f 
+ 00001308  0x000006ea isub  0x00000002 , 0x0000003f 
+ 00001309  0x000006eb and_into  0x000000ff , 0x0000003f 
+ 00001310  0x000006ec arg  0x00000ea6 , 0x00000002 
+ 00001311  0x000006ed imul32  0x00000002 , 0x00000002 
+ 00001312  0x000006ee fetch  0x00000004 , 0x00004e74 
+ 00001313  0x000006ef isub  0x00000002 , 0x0000003f 
+ 00001314  0x000006f0 branch  0x00003c7f , 0x00000002 
+ 00001315  0x000006f1 fetch  0x00000001 , 0x00004218 
+ 00001316  0x000006f2 increase  0x00000001 , 0x0000003f 
+ 00001317  0x000006f3 store  0x00000004 , 0x000041fb 
+ 00001318  0x000006f4 branch  0x00003c86 
+ 00001319  0x000006f6 setarg  0x00013c68 
+ 00001320  0x000006f7 store  0x00000004 , 0x00004e74 
+ 00001321  0x000006f8 fetch  0x00000001 , 0x00004e7e 
+ 00001322  0x000006f9 increase  0x00000001 , 0x0000003f 
+ 00001323  0x000006fa bne  0x00000005 , 0x0000052d 
+ 00001324  0x000006fb setarg  0x00000000 
+ 00001325  0x000006fd store  0x00000001 , 0x00004e7e 
+ 00001326  0x000006fe rtnbit0  0x00000000 
+ 00001327  0x000006ff setarg  0x000130b0 
+ 00001328  0x00000700 store  0x00000004 , 0x00004e74 
+ 00001329  0x00000701 rtn 
+ 00001330  0x00000705 jam  0x00000000 , 0x00004931 
+ 00001331  0x00000707 arg  0x00000d00 , 0x0000000b 
+ 00001332  0x00000708 until  0x00000023 , 0x00000026 
+ 00001333  0x00000709 call  0x0000054a 
+ 00001334  0x0000070a fetch  0x00000001 , 0x00004965 
+ 00001335  0x0000070b rtneq  0x00000001 
+ 00001336  0x0000070c nbranch  0x00000559 , 0x00000018 
+ 00001337  0x0000070d nbranch  0x00000559 , 0x0000002f 
+ 00001338  0x0000070e call  0x00000578 
+ 00001339  0x0000070f call  0x00000608 
+ 00001340  0x00000711 fetch  0x00000001 , 0x00004927 
+ 00001341  0x00000712 increase  0x00000001 , 0x0000003f 
+ 00001342  0x00000713 store  0x00000001 , 0x00004927 
+ 00001343  0x00000714 fetch  0x00000001 , 0x00004938 
+ 00001344  0x00000715 bne  0x000000ff , 0x00000548 
+ 00001345  0x00000716 call  0x00000419 
+ 00001346  0x00000718 setarg  0x00000000 
+ 00001347  0x00000719 store  0x00000002 , 0x0000492e 
+ 00001348  0x0000071a store  0x00000001 , 0x00004930 
+ 00001349  0x0000071b store  0x00000001 , 0x000049b3 
+ 00001350  0x0000071c jam  0x00000000 , 0x0000492d 
+ 00001351  0x0000071d rtn 
+ 00001352  0x0000071f call  0x00000605 
+ 00001353  0x00000720 branch  0x0000068c 
+ 00001354  0x00000723 disable  0x0000002f 
+ 00001355  0x00000724 call  0x00000598 
+ 00001356  0x00000725 fetch  0x00000001 , 0x00004965 
+ 00001357  0x00000726 beq  0x00000001 , 0x00000557 
+ 00001358  0x00000727 force  0x00000000 , 0x00000015 
+ 00001359  0x00000728 fetch  0x00000004 , 0x00004950 
+ 00001360  0x00000729 iforce  0x00000009 
+ 00001361  0x0000072a fetcht  0x00000001 , 0x00000017 
+ 00001362  0x0000072b call  0x000039b9 
+ 00001363  0x0000072c call  0x000039bf 
+ 00001364  0x0000072d call  0x000005c2 
+ 00001365  0x0000072e call  0x00000601 , 0x0000002f 
+ 00001366  0x0000072f rtn 
+ 00001367  0x00000731 call  0x00000601 
+ 00001368  0x00000732 branch  0x0000053c 
+ 00001369  0x00000735 fetch  0x00000001 , 0x00004930 
+ 00001370  0x00000736 increase  0x00000001 , 0x0000003f 
+ 00001371  0x00000737 store  0x00000001 , 0x00004930 
+ 00001372  0x00000738 fetch  0x00000001 , 0x00004938 
+ 00001373  0x00000739 bne  0x000000ff , 0x0000056d 
+ 00001374  0x0000073a fetcht  0x00000001 , 0x00004931 
+ 00001375  0x0000073b increase  0x00000001 , 0x00000002 
+ 00001376  0x0000073c storet  0x00000001 , 0x00004931 
+ 00001377  0x0000073d fetch  0x00000001 , 0x0000496e 
+ 00001378  0x0000073e isub  0x00000002 , 0x0000003f 
+ 00001379  0x0000073f nbranch  0x00000533 , 0x00000034 
+ 00001380  0x00000740 fetch  0x00000001 , 0x000049b4 
+ 00001381  0x00000741 beq  0x00000003 , 0x00000402 
+ 00001382  0x00000742 fetch  0x00000001 , 0x000049b3 
+ 00001383  0x00000743 increase  0x00000001 , 0x0000003f 
+ 00001384  0x00000744 store  0x00000001 , 0x000049b3 
+ 00001385  0x00000745 beq  0x00000002 , 0x000003f7 
+ 00001386  0x00000746 call  0x000003ee 
+ 00001387  0x00000747 jam  0x00000001 , 0x0000496e 
+ 00001388  0x00000748 branch  0x00000532 
+ 00001389  0x0000074b fetch  0x00000001 , 0x00004930 
+ 00001390  0x0000074c rtnne  0x000000ff 
+ 00001391  0x0000074d jam  0x00000000 , 0x00004930 
+ 00001392  0x0000074e branch  0x00000576 
+ 00001393  0x00000751 setarg  0x00000000 
+ 00001394  0x00000752 store  0x00000002 , 0x0000492e 
+ 00001395  0x00000753 jam  0x00000000 , 0x00004131 
+ 00001396  0x00000754 jam  0x00000000 , 0x00004e79 
+ 00001397  0x00000755 jam  0x00000000 , 0x00004e78 
+ 00001398  0x00000757 jam  0x0000003b , 0x00004896 
+ 00001399  0x00000758 branch  0x000002eb 
+ 00001400  0x0000075b call  0x0000057f 
+ 00001401  0x0000075c fetch  0x00000001 , 0x00004926 
+ 00001402  0x0000075d rtn  0x00000034 
+ 00001403  0x0000075e iforce  0x00000039 
+ 00001404  0x0000075f arg  0x000048a4 , 0x00000006 
+ 00001405  0x00000760 arg  0x00004906 , 0x00000005 
+ 00001406  0x00000761 branch  0x00007ecd 
+ 00001407  0x00000765 fetch  0x00000001 , 0x000048a3 
+ 00001408  0x00000766 rshift3  0x0000003f , 0x0000003f 
+ 00001409  0x00000767 store  0x00000001 , 0x00004926 
+ 00001410  0x00000769 increase  0x00000001 , 0x0000003f 
+ 00001411  0x0000076a arg  0x000048a3 , 0x00000006 
+ 00001412  0x0000076b iadd  0x00000006 , 0x00000006 
+ 00001413  0x0000076c ifetch  0x00000003 , 0x00000006 
+ 00001414  0x0000076d store  0x00000003 , 0x00004966 
+ 00001415  0x0000076f fetch  0x00000001 , 0x000048a3 
+ 00001416  0x00000770 rshift  0x0000003f , 0x0000003f 
+ 00001417  0x00000771 and  0x0000003f , 0x00000003 , 0x0000003f 
+ 00001418  0x00000772 store  0x00000001 , 0x0000496c 
+ 00001419  0x00000773 rtn 
+ 00001420  0x00000777 disable  0x00000009 
+ 00001421  0x00000778 disable  0x00000007 
+ 00001422  0x00000779 setarg  0x00555555 
+ 00001423  0x0000077a iforce  0x0000000f 
+ 00001424  0x0000077b fetch  0x00000001 , 0x00004932 
+ 00001425  0x0000077c reverse  0x0000003f , 0x00000002 
+ 00001426  0x0000077d set1  0x00000001 , 0x00000002 
+ 00001427  0x0000077e rshift  0x00000002 , 0x0000000e 
+ 00001428  0x0000077f rtn 
+ 00001429  0x00000782 call  0x000039b1 
+ 00001430  0x00000783 fetcht  0x00000001 , 0x00004932 
+ 00001431  0x00000784 branch  0x000039c9 
+ 00001432  0x00000787 call  0x00004976 
+ 00001433  0x00000788 fetch  0x00000004 , 0x00004950 
+ 00001434  0x00000789 iforce  0x00000009 
+ 00001435  0x0000078a call  0x0000058c 
+ 00001436  0x0000078b call  0x00000595 
+ 00001437  0x0000078c set1  0x00000000 , 0x00000015 
+ 00001438  0x0000078d enable  0x0000001d 
+ 00001439  0x0000078e enable  0x00000020 
+ 00001440  0x0000078f disable  0x00000021 
+ 00001441  0x00000790 rshift16  0x00000009 , 0x0000003f 
+ 00001442  0x00000791 rshift8  0x0000003f , 0x0000003f 
+ 00001443  0x00000792 rshift4  0x0000003f , 0x0000003f 
+ 00001444  0x00000793 inject  0x00000003 , 0x00000028 
+ 00001445  0x00000794 disable  0x0000001d 
+ 00001446  0x00000795 enable  0x0000001b 
+ 00001447  0x00000796 enable  0x00000007 
+ 00001448  0x00000797 enable  0x00000009 
+ 00001449  0x00000799 fetch  0x00000001 , 0x000049bd 
+ 00001450  0x0000079a inject  0x00000003 , 0x00000008 
+ 00001451  0x0000079c fetch  0x00000001 , 0x0000492a 
+ 00001452  0x0000079d iforce  0x00000039 
+ 00001453  0x0000079e arg  0x000048e4 , 0x00000006 
+ 00001454  0x000007a0 ifetch  0x00000001 , 0x00000006 
+ 00001455  0x000007a1 inject  0x00000003 , 0x00000008 
+ 00001456  0x000007a2 loop  0x000005ae 
+ 00001457  0x000007a3 enable  0x00000008 
+ 00001458  0x000007a4 inject  0x00000003 , 0x00000018 
+ 00001459  0x000007a5 disable  0x00000008 
+ 00001460  0x000007a6 until  0x0000003e , 0x00000027 
+ 00001461  0x000007a7 nop  0x00000064 
+ 00001462  0x000007a8 disable  0x0000001d 
+ 00001463  0x000007a9 disable  0x0000001b 
+ 00001464  0x000007aa rtn 
+ 00001465  0x000007ad call  0x00004976 
+ 00001466  0x000007ae fetch  0x00000004 , 0x00004950 
+ 00001467  0x000007af iforce  0x00000009 
+ 00001468  0x000007b0 call  0x000039b1 
+ 00001469  0x000007b1 fetcht  0x00000001 , 0x00004932 
+ 00001470  0x000007b2 call  0x000039b9 
+ 00001471  0x000007b3 setarg  0x00000500 
+ 00001472  0x000007b4 call  0x00003b35 
+ 00001473  0x000007b5 call  0x000039bf 
+ 00001474  0x000007b7 call  0x0000058c 
+ 00001475  0x000007b8 disable  0x0000002f 
+ 00001476  0x000007b9 enable  0x0000000d 
+ 00001477  0x000007ba enable  0x00000021 
+ 00001478  0x000007bb disable  0x00000020 
+ 00001479  0x000007bc enable  0x00000010 
+ 00001480  0x000007bd fetch  0x00000002 , 0x0000492b 
+ 00001481  0x000007be iforce  0x0000001b 
+ 00001482  0x000007bf correlate  0x0000003e , 0x00000003 
+ 00001483  0x000007c0 nbranch  0x00000604 , 0x00000018 
+ 00001484  0x000007c1 disable  0x0000000d 
+ 00001485  0x000007c2 enable  0x0000000b 
+ 00001486  0x000007c3 enable  0x00000007 
+ 00001487  0x000007c4 enable  0x00000009 
+ 00001488  0x000007c6 parse  0x00000003 , 0x00000000 , 0x00000008 
+ 00001489  0x000007c7 rshift3  0x0000000c , 0x0000003f 
+ 00001490  0x000007c8 store  0x00000001 , 0x000049be 
+ 00001491  0x000007c9 call  0x00000491 
+ 00001492  0x000007ca fetcht  0x00000001 , 0x000049be 
+ 00001493  0x000007cb isub  0x00000002 , 0x0000003e 
+ 00001494  0x000007cc nbranch  0x00000601 , 0x00000005 
+ 00001495  0x000007ce parse  0x00000003 , 0x00000000 , 0x00000008 
+ 00001496  0x000007cf rshift3  0x0000000c , 0x0000003f 
+ 00001497  0x000007d0 store  0x00000001 , 0x000048a2 
+ 00001498  0x000007d1 fetch  0x00000001 , 0x0000496f 
+ 00001499  0x000007d2 sub  0x0000003f , 0x00000002 , 0x0000003e 
+ 00001500  0x000007d3 branch  0x000005e1 , 0x00000005 
+ 00001501  0x000007d4 fetch  0x00000001 , 0x000048a2 
+ 00001502  0x000007d5 fetcht  0x00000001 , 0x00004929 
+ 00001503  0x000007d6 icompare  0x00000007 , 0x00000002 
+ 00001504  0x000007d7 nbranch  0x00000601 , 0x00000001 
+ 00001505  0x000007d9 parse  0x00000003 , 0x00000000 , 0x00000008 
+ 00001506  0x000007da rshift3  0x0000000c , 0x0000003f 
+ 00001507  0x000007db istore  0x00000001 , 0x00000005 
+ 00001508  0x000007dc rshift3  0x0000003f , 0x0000003f 
+ 00001509  0x000007dd and  0x0000003f , 0x0000001f , 0x00000039 
+ 00001510  0x000007de branch  0x000005eb , 0x00000005 
+ 00001511  0x000007e0 parse  0x00000003 , 0x00000000 , 0x00000008 
+ 00001512  0x000007e1 rshift3  0x0000000c , 0x0000003f 
+ 00001513  0x000007e2 istore  0x00000001 , 0x00000005 
+ 00001514  0x000007e3 loop  0x000005e7 
+ 00001515  0x000007e6 copy  0x00000005 , 0x00000011 
+ 00001516  0x000007e7 parse  0x00000003 , 0x00000000 , 0x00000008 
+ 00001517  0x000007e8 rshift3  0x0000000c , 0x0000003f 
+ 00001518  0x000007e9 store  0x00000001 , 0x000049cf 
+ 00001519  0x000007ea copy  0x00000011 , 0x00000005 
+ 00001520  0x000007ec parse  0x00000003 , 0x00000000 , 0x00000018 
+ 00001521  0x000007ed enable  0x00000010 
+ 00001522  0x000007ee arg  0x00000664 , 0x0000001b 
+ 00001523  0x000007ef rshift32  0x0000003f , 0x0000003f 
+ 00001524  0x000007f0 rshift16  0x0000003f , 0x0000003f 
+ 00001525  0x000007f1 istore  0x00000003 , 0x00000005 
+ 00001526  0x000007f2 disable  0x0000000b 
+ 00001527  0x000007f3 branch  0x00000601 , 0x00000006 
+ 00001528  0x000007f4 enable  0x0000002f 
+ 00001529  0x000007f5 fetch  0x00000001 , 0x00000017 
+ 00001530  0x000007f6 add  0x0000003f , 0x00000000 , 0x00000011 
+ 00001531  0x000007f7 call  0x00003a13 
+ 00001532  0x000007f8 disable  0x0000000d 
+ 00001533  0x000007f9 call  0x000039b1 
+ 00001534  0x000007fa fetch  0x00000001 , 0x000049cf 
+ 00001535  0x000007fb copy  0x0000003f , 0x00000011 
+ 00001536  0x000007fc branch  0x00000654 
+ 00001537  0x000007ff disable  0x0000001b 
+ 00001538  0x00000800 disable  0x0000000b 
+ 00001539  0x00000801 branch  0x000036c6 
+ 00001540  0x00000804 branch  0x00000601 
+ 00001541  0x00000807 jam  0x00000001 , 0x000049c4 
+ 00001542  0x00000808 jam  0x00000000 , 0x000049c5 
+ 00001543  0x00000809 rtn 
+ 00001544  0x0000080b fetch  0x00000001 , 0x000049c5 
+ 00001545  0x0000080c increase  0x00000001 , 0x0000003f 
+ 00001546  0x0000080d store  0x00000001 , 0x000049c5 
+ 00001547  0x0000080e rtn 
+ 00001548  0x00000810 fetch  0x00000001 , 0x000049c5 
+ 00001549  0x00000811 sub  0x0000003f , 0x00000001 , 0x0000003e 
+ 00001550  0x00000812 ncall  0x00000614 , 0x00000002 
+ 00001551  0x00000813 fetch  0x00000001 , 0x000049c5 
+ 00001552  0x00000814 rtneq  0x00000000 
+ 00001553  0x00000815 increase  0xffffffff , 0x0000003f 
+ 00001554  0x00000816 store  0x00000001 , 0x000049c5 
+ 00001555  0x00000817 rtn 
+ 00001556  0x00000819 jam  0x00000002 , 0x000049c5 
+ 00001557  0x0000081a rtn 
+ 00001558  0x0000081d arg  0x000049c6 , 0x00000011 
+ 00001559  0x0000081e call  0x0000065d 
+ 00001560  0x0000081f storet  0x00000001 , 0x000049d0 
+ 00001561  0x00000820 isolate1  0x00000026 , 0x00000000 
+ 00001562  0x00000821 call  0x00000624 , 0x00000001 
+ 00001563  0x00000822 ncall  0x00000628 , 0x00000001 
+ 00001564  0x00000823 isub  0x00000002 , 0x0000003e 
+ 00001565  0x00000824 nbranch  0x00000641 , 0x00000002 
+ 00001566  0x00000826 fetch  0x00000001 , 0x000049c5 
+ 00001567  0x00000827 sub  0x0000003f , 0x00000001 , 0x0000003e 
+ 00001568  0x00000828 nbranch  0x0000062c , 0x00000002 
+ 00001569  0x00000829 fetch  0x00000001 , 0x000049c5 
+ 00001570  0x0000082a beq  0x00000000 , 0x00000641 
+ 00001571  0x0000082b rtn 
+ 00001572  0x0000082e setarg  0x00000082 
+ 00001573  0x0000082f rtn 
+ 00001574  0x00000831 setarg  0x00000077 
+ 00001575  0x00000832 rtn 
+ 00001576  0x00000834 setarg  0x00000080 
+ 00001577  0x00000835 rtn 
+ 00001578  0x00000837 setarg  0x00000075 
+ 00001579  0x00000838 rtn 
+ 00001580  0x0000083b fetch  0x00000001 , 0x000049c5 
+ 00001581  0x0000083c rtnne  0x00000046 
+ 00001582  0x0000083d jam  0x00000000 , 0x000049c5 
+ 00001583  0x0000083f fetcht  0x00000001 , 0x000049d0 
+ 00001584  0x00000840 isolate1  0x00000026 , 0x00000000 
+ 00001585  0x00000841 call  0x00000626 , 0x00000001 
+ 00001586  0x00000842 ncall  0x0000062a , 0x00000001 
+ 00001587  0x00000843 isub  0x00000002 , 0x0000003e 
+ 00001588  0x00000844 nrtn  0x00000002 
+ 00001589  0x00000845 fetch  0x00000001 , 0x000049c4 
+ 00001590  0x00000846 beq  0x00000000 , 0x0000064d 
+ 00001591  0x00000847 increase  0xffffffff , 0x0000003f 
+ 00001592  0x00000848 store  0x00000001 , 0x000049c4 
+ 00001593  0x00000849 beq  0x00000000 , 0x0000064d 
+ 00001594  0x0000084c hjam  0x000000d0 , 0x00008955 
+ 00001595  0x0000084d hjam  0x000000e0 , 0x00008956 
+ 00001596  0x0000084e hjam  0x0000004c , 0x00008957 
+ 00001597  0x0000084f hjam  0x0000006c , 0x00008958 
+ 00001598  0x00000850 hjam  0x00000050 , 0x00008959 
+ 00001599  0x00000851 jam  0x00000001 , 0x00004280 
+ 00001600  0x00000852 rtn 
+ 00001601  0x00000855 fetch  0x00000001 , 0x000049c4 
+ 00001602  0x00000856 beq  0x00000002 , 0x00000646 
+ 00001603  0x00000857 increase  0x00000001 , 0x0000003f 
+ 00001604  0x00000858 store  0x00000001 , 0x000049c4 
+ 00001605  0x00000859 beq  0x00000001 , 0x0000063a 
+ 00001606  0x0000085b hjam  0x000000d0 , 0x00008955 
+ 00001607  0x0000085c hjam  0x000000e0 , 0x00008956 
+ 00001608  0x0000085d hjam  0x0000004c , 0x00008957 
+ 00001609  0x0000085e hjam  0x0000003c , 0x00008958 
+ 00001610  0x0000085f hjam  0x00000010 , 0x00008959 
+ 00001611  0x00000860 jam  0x00000004 , 0x00004280 
+ 00001612  0x00000861 rtn 
+ 00001613  0x00000864 hjam  0x000000d0 , 0x00008955 
+ 00001614  0x00000865 hjam  0x000000c0 , 0x00008956 
+ 00001615  0x00000866 hjam  0x0000004c , 0x00008957 
+ 00001616  0x00000867 hjam  0x0000006c , 0x00008958 
+ 00001617  0x00000868 hjam  0x00000050 , 0x00008959 
+ 00001618  0x00000869 jam  0x00000010 , 0x00004280 
+ 00001619  0x0000086a rtn 
+ 00001620  0x0000086d fetcht  0x00000001 , 0x000049ce 
+ 00001621  0x0000086e setarg  0x000049c6 
+ 00001622  0x0000086f iadd  0x00000002 , 0x00000005 
+ 00001623  0x00000870 copy  0x00000011 , 0x0000003f 
+ 00001624  0x00000871 istore  0x00000001 , 0x00000005 
+ 00001625  0x00000872 increase  0x00000001 , 0x00000002 
+ 00001626  0x00000873 and_into  0x00000007 , 0x00000002 
+ 00001627  0x00000874 storet  0x00000001 , 0x000049ce 
+ 00001628  0x00000875 rtn 
+ 00001629  0x00000877 arg  0x00000000 , 0x00000002 
+ 00001630  0x00000878 arg  0x00000008 , 0x00000039 
+ 00001631  0x00000879 copy  0x00000011 , 0x00000006 
+ 00001632  0x0000087b ifetch  0x00000001 , 0x00000006 
+ 00001633  0x0000087c iadd  0x00000002 , 0x00000002 
+ 00001634  0x0000087d loop  0x00000660 
+ 00001635  0x0000087e rshift3  0x00000002 , 0x0000003f 
+ 00001636  0x0000087f copy  0x0000003f , 0x00000002 
+ 00001637  0x00000880 rtnmark0  0x00000026 
+ 00001638  0x00000882 div  0x0000003f , 0x0000000a 
+ 00001639  0x00000883 call  0x00007f53 
+ 00001640  0x00000884 quotient  0x0000003f 
+ 00001641  0x00000885 lshift4  0x0000003f , 0x0000003f 
+ 00001642  0x00000886 remainder  0x00000002 
+ 00001643  0x00000887 ior  0x00000002 , 0x00000002 
+ 00001644  0x00000888 rtn 
+ 00001645  0x0000088c set1  0x00000026 , 0x00000000 
+ 00001646  0x0000088d call  0x000003ce 
+ 00001647  0x0000088f jam  0x00000001 , 0x00004938 
+ 00001648  0x00000890 rtn 
+ 00001649  0x00000893 fetch  0x00000001 , 0x0000492d 
+ 00001650  0x00000894 beq  0x00000001 , 0x000031d4 
+ 00001651  0x00000895 fetch  0x00000001 , 0x00004938 
+ 00001652  0x00000896 beq  0x00000001 , 0x00000678 
+ 00001653  0x00000897 beq  0x00000002 , 0x0000067b 
+ 00001654  0x00000898 beq  0x00000003 , 0x0000067e 
+ 00001655  0x00000899 branch  0x00003b31 
+ 00001656  0x0000089c jam  0x00000011 , 0x00004938 
+ 00001657  0x0000089d jam  0x000000aa , 0x00004990 
+ 00001658  0x0000089e branch  0x00000680 
+ 00001659  0x000008a0 jam  0x00000012 , 0x00004938 
+ 00001660  0x000008a1 jam  0x00000055 , 0x00004990 
+ 00001661  0x000008a2 branch  0x00000680 
+ 00001662  0x000008a4 jam  0x00000013 , 0x00004938 
+ 00001663  0x000008a5 jam  0x00000022 , 0x00004990 
+ 00001664  0x000008a7 fetch  0x00000001 , 0x00004929 
+ 00001665  0x000008a8 and_into  0x00000007 , 0x0000003f 
+ 00001666  0x000008a9 store  0x00000001 , 0x00004991 
+ 00001667  0x000008aa fetch  0x00000004 , 0x00004960 
+ 00001668  0x000008ab store  0x00000004 , 0x00004992 
+ 00001669  0x000008ad jam  0x00000000 , 0x00004996 
+ 00001670  0x000008ae arg  0x00004990 , 0x00000011 
+ 00001671  0x000008af arg  0x00000007 , 0x00000002 
+ 00001672  0x000008b0 call  0x0000048b 
+ 00001673  0x000008b1 call  0x0000049e 
+ 00001674  0x000008b2 call  0x00000472 
+ 00001675  0x000008b3 branch  0x000031d4 
+ 00001676  0x000008b6 fetch  0x00000001 , 0x00004938 
+ 00001677  0x000008b7 rtneq  0x000000ff 
+ 00001678  0x000008b8 beq  0x00000011 , 0x00000692 
+ 00001679  0x000008b9 beq  0x00000012 , 0x00000694 
+ 00001680  0x000008ba beq  0x00000013 , 0x00000696 
+ 00001681  0x000008bb rtn 
+ 00001682  0x000008be jam  0x00000002 , 0x00004938 
+ 00001683  0x000008bf branch  0x00000542 
+ 00001684  0x000008c1 jam  0x00000003 , 0x00004938 
+ 00001685  0x000008c2 branch  0x00000542 
+ 00001686  0x000008c4 jam  0x000000ff , 0x00004938 
+ 00001687  0x000008c5 jam  0x00000039 , 0x00004896 
+ 00001688  0x000008c6 call  0x000002eb 
+ 00001689  0x000008c7 fetch  0x00000004 , 0x00004908 
+ 00001690  0x000008c8 call  0x000003d1 
+ 00001691  0x000008c9 branch  0x00000542 
+ 00001692  0x000008cc set0  0x00000026 , 0x00000000 
+ 00001693  0x000008cd call  0x000003d3 
+ 00001694  0x000008ce fetch  0x00000004 , 0x00004950 
+ 00001695  0x000008cf call  0x00000491 
+ 00001696  0x000008d0 fetch  0x00000001 , 0x00004938 
+ 00001697  0x000008d1 rtnne  0x000000ff 
+ 00001698  0x000008d2 call  0x000006b2 
+ 00001699  0x000008d4 setarg  0x00000000 
+ 00001700  0x000008d5 store  0x00000002 , 0x00004956 
+ 00001701  0x000008d7 nop  0x000007d0 
+ 00001702  0x000008d8 fetch  0x00000001 , 0x00004956 
+ 00001703  0x000008d9 beq  0x000000ff , 0x00000576 
+ 00001704  0x000008da call  0x0000054a 
+ 00001705  0x000008db nbranch  0x000006bc , 0x00000018 
+ 00001706  0x000008dc nbranch  0x000006bc , 0x0000002f 
+ 00001707  0x000008de jam  0x00000001 , 0x00004131 
+ 00001708  0x000008df set1  0x00000026 , 0x00000000 
+ 00001709  0x000008e0 setarg  0x00000000 
+ 00001710  0x000008e1 store  0x00000002 , 0x00004956 
+ 00001711  0x000008e2 jam  0x0000003a , 0x000009bd 
+ 00001712  0x000008e3 call  0x00007d86 
+ 00001713  0x000008e4 branch  0x00007e0d 
+ 00001714  0x000008e7 set1  0x00000027 , 0x00000000 
+ 00001715  0x000008e8 jam  0x000000ff , 0x00004990 
+ 00001716  0x000008e9 fetch  0x00000001 , 0x00004929 
+ 00001717  0x000008ea store  0x00000001 , 0x00004991 
+ 00001718  0x000008eb fetch  0x00000004 , 0x00004960 
+ 00001719  0x000008ec store  0x00000004 , 0x00004992 
+ 00001720  0x000008ed arg  0x00000006 , 0x00000002 
+ 00001721  0x000008ee arg  0x00004990 , 0x00000011 
+ 00001722  0x000008ef call  0x0000048b 
+ 00001723  0x000008f0 branch  0x0000049e 
+ 00001724  0x000008f3 fetch  0x00000002 , 0x00004956 
+ 00001725  0x000008f4 increase  0x00000001 , 0x0000003f 
+ 00001726  0x000008f5 store  0x00000002 , 0x00004956 
+ 00001727  0x000008f6 call  0x000003d3 
+ 00001728  0x000008f7 branch  0x000006a5 
Index: Standard_mouse/btms/output/bt_program23.list
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/bt_program23.list	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/bt_program23.list	(working copy)
@@ -0,0 +1,2005 @@
+              include "bt_format "
+              org 0x0000
+0x0000 000024 bmark1 mark_ext_patch ,patch_ext 
+0x0001 000025 beq patch00_0 ,p_soft_reset 
+0x0002 000026 beq patch00_3 ,p_main_loop 
+0x0003 000027 beq patch10_6 ,p_shutdown_radio 
+0x0004 000028 beq patch11_2 ,p_set_freq_tx 
+0x0005 000029 beq patch11_3 ,p_initialize_radio_cont 
+0x0006 000030 beq patch14_7 ,p_lpm_recover_clk 
+0x0007 000031 beq patch15_0 ,p_lpm_dispatch 
+0x0008 000032 beq patch15_1 ,p_lpm_dispatch_next2 
+0x0009 000033 beq patch15_4 ,p_lpm_dispatch_unconn 
+0x000a 000034 beq patch16_4 ,p_device_init 
+0x000b 000035 beq patch16_5 ,p_app_lpm_init 
+0x000c 000036 beq patch16_6 ,p_app_process_bb_event 
+0x000d 000037 beq patch16_7 ,p_app_evt_timer 
+0x000e 000038 branch loop 
+:      000040 patch_ext:
+0x000f 000041 beq patch20_5 ,p_le_slave_match 
+0x0010 000042 beq patch22_6 ,p_le_receive_skip 
+0x0011 000043 beq patch23_3 ,p_le_send_adv_ind 
+0x0012 000044 beq patch24_3 ,p_le_update_param 
+0x0013 000045 beq patch25_7 ,p_le_prepare_tx 
+0x0014 000046 beq patch26_1 ,p_le_prepare_tx_ll 
+0x0015 000047 beq patch26_2 ,p_le_prepare_smp0 
+0x0016 000048 beq patch26_3 ,p_le_prepare_att 
+0x0017 000049 beq patch27_1 ,p_le_send_packet 
+0x0018 000050 beq patch27_4 ,p_le_parse0 
+0x0019 000051 beq patch27_5 ,p_le_parse_smp 
+0x001a 000052 beq patch27_6 ,p_le_parse_att 
+0x001b 000053 beq patch27_7 ,p_le_adv 
+0x001c 000054 beq patch28_2 ,p_le_receive_window_size 
+0x001d 000055 beq patch29_5 ,p_le_lpm_set_mult 
+0x001e 000056 beq patch32_5 ,p_gpio_set_before_lpm_common 
+0x001f 000057 beq patch3e_3 ,p_ui_timer_check_end 
+0x0020 000058 beq patch3e_7 ,p_check_51cmd_once 
+0x0021 000059 beq patch3f_0 ,p_check_51cmd_once_continue0 
+0x0022 000060 beq patch3f_1 ,p_check_enter_hibernate 
+0x0023 000061 branch loop 
+:      000063 p_soft_reset:
+0x0024 000064 clear_stack 
+0x0025 000065 nbranch soft_reset + 3 ,wake 
+0x0026 000066 fetch 1 ,mem_le_switch_send_data 
+0x0027 000067 nbranch p_soft_reset_start_51 ,blank 
+0x0028 000068 fetch 1 ,mem_short_lpm_enable 
+0x0029 000069 branch soft_reset + 3 ,blank 
+0x002a 000070 jam 0 ,mem_ipc_is_ready 
+0x002b 000071 bmark0 mark_24g ,soft_reset + 3 
+0x002c 000072 nbranch soft_reset + 3 ,wake 
+:      000073 p_soft_reset_start_51:
+0x002d 000074 hjam start_c51_core ,core_docd_ctrl 
+0x002e 000075 branch soft_reset + 3 
+:      000077 p_main_loop:
+0x002f 000078 call p_ipc_timer_check 
+0x0030 000079 call g24_transmit_process 
+0x0031 000080 call p_ipc_rx 
+0x0032 000081 fetch 1 ,mem_short_lpm_enable 
+0x0033 000082 nbranch p_24g_short_lpm_process_loop ,blank 
+0x0034 000083 branch main_loop + 2 
+:      000086 p_shutdown_radio:
+0x0035 000087 branch shutdown_radio0 ,is_rx 
+0x0036 000088 hjam 0xd4 ,0x955 
+0x0037 000089 nop 4 
+0x0038 000090 hjam 0xd2 ,0x955 
+0x0039 000091 nop 4 
+0x003a 000092 hjam 0xd1 ,0x955 
+0x003b 000093 nop 4 
+0x003c 000094 fetch 1 ,mem_tx_power 
+0x003d 000095 beq tx_power_pair ,shutdown_radio_pair 
+0x003e 000096 branch shutdown_radio_select 
+:      000098 p_set_freq_tx:
+0x003f 000099 storet 1 ,mem_last_freq 
+0x0040 000100 add temp ,0 ,rega 
+0x0041 000101 call rf_write_freq 
+0x0042 000102 setarg param_pll_setup 
+0x0043 000103 call sleep 
+:      000104 p_txon:
+0x0044 000105 hjam 0x1 ,rfen_adc 
+0x0045 000106 hjam 0x3c ,rfen_rx 
+0x0046 000107 hjam 0xe0 ,rfen_tx 
+0x0047 000108 hjam 0x12 ,0x96d 
+0x0048 000109 nop 10 
+0x0049 000110 hjam 0x01 ,rfen_mdm 
+0x004a 000111 hjam 0x3d ,rfen_mdm 
+0x004b 000112 nop 10 
+0x004c 000113 hjam 0xb7 ,rfen_sn 
+0x004d 000114 nop 10 
+0x004e 000115 hjam 0x7f ,rfen_mdm 
+0x004f 000116 fetch 1 ,mem_tx_power 
+0x0050 000117 beq tx_power_pair ,p_set_tx_power_pair 
+0x0051 000118 bbit1 tx_power_3db ,p_rx_high_sens 
+0x0052 000119 bbit1 tx_power_5db ,p_rx_high_sens 
+:      000120 p_rx_low_sens:
+0x0053 000121 hjam 0x5b ,0x894c 
+0x0054 000122 hjam 0x96 ,0x894d 
+0x0055 000123 hjam 0x2c ,0x894e 
+0x0056 000124 hjam 0x46 ,0x894f 
+0x0057 000125 branch p_txon_select_power_level 
+:      000126 p_rx_high_sens:
+0x0058 000127 hjam 0xfb ,0x894c 
+0x0059 000128 hjam 0xef ,0x894d 
+0x005a 000129 hjam 0xec ,0x894e 
+0x005b 000130 hjam 0x5e ,0x894f 
+:      000131 p_txon_select_power_level:
+0x005c 000132 fetch 1 ,mem_tx_power 
+0x005d 000133 branch txon_power_select 
+:      000135 p_set_tx_power_pair:
+0x005e 000136 hjam 0xc2 ,0x8956 
+0x005f 000137 hjam 0xd0 ,0x8955 
+0x0060 000138 rtn 
+:      000140 p_initialize_radio_cont:
+0x0061 000141 call lpm_cal_xtal_startup 
+0x0062 000142 call switchto_dpllclk 
+0x0063 000143 hjam clksel_rc ,core_clksel 
+0x0064 000144 hfetch 1 ,rf_clkpll_int 
+0x0065 000145 set1 7 ,pdata 
+0x0066 000146 hstore 1 ,rf_clkpll_int 
+0x0067 000147 set0 7 ,pdata 
+0x0068 000148 hstore 1 ,rf_clkpll_int 
+0x0069 000149 set1 7 ,pdata 
+0x006a 000150 hstore 1 ,rf_clkpll_int 
+0x006b 000151 hjam clksel_dpll ,core_clksel 
+0x006c 000152 branch initialize_radio_cont + 4 
+:      000154 p_lpm_recover_clk:
+0x006d 000155 call lpm_recover_clk + 2 
+0x006e 000156 fetch 1 ,mem_hibernate_flag 
+0x006f 000157 rtn blank 
+0x0070 000158 jam 0 ,mem_hibernate_flag 
+0x0071 000159 copy clkn_bt ,pdata 
+0x0072 000160 store 4 ,mem_ipc_last_check_timer 
+0x0073 000161 rtn 
+:      000163 p_lpm_dispatch:
+0x0074 000164 rtnmark1 mark_24g 
+0x0075 000165 call lpo_calibration 
+0x0076 000166 fetch 3 ,mem_clks_per_lpo 
+0x0077 000167 rtn blank 
+0x0078 000168 fetch 2 ,mem_context + coffset_tsniff 
+0x0079 000169 arg 0xffff ,temp 
+0x007a 000170 isub temp ,null 
+0x007b 000171 rtn zero 
+0x007c 000172 fetch 1 ,mem_lpm_mode 
+0x007d 000173 rtn blank 
+0x007e 000174 call l2cap_malloc_is_fifo_empty 
+0x007f 000175 nrtn blank 
+0x0080 000176 call lpm_check_wake_lock 
+0x0081 000177 nrtn blank 
+0x0082 000178 call xtal_fast_wake 
+0x0083 000179 fetch 1 ,mem_ssp_enable 
+0x0084 000180 branch lpm_dispatch_next ,blank 
+0x0085 000181 fetch 1 ,mem_sp_local_key_invalid 
+0x0086 000182 rtn blank 
+0x0087 000183 branch lpm_dispatch_next 
+:      000185 p_lpm_dispatch_next2:
+0x0088 000186 fetch 1 ,mem_le_switch_send_data 
+0x0089 000187 branch p_lpm_dispatch_long_mult ,blank 
+0x008a 000188 fetch 1 ,mem_lpm_current_mult 
+0x008b 000189 nbranch p_lpm_dispatch_long_mult ,blank 
+0x008c 000190 fetch 1 ,mem_bt_read_ipc_count 
+0x008d 000191 fetcht 1 ,mem_51_read_sensor_count 
+0x008e 000192 isub temp ,null 
+0x008f 000193 nrtn zero 
+0x0090 000194 fetch 1 ,mem_ble_data_wheel 
+0x0091 000195 nrtn blank 
+0x0092 000196 setarg 0 
+0x0093 000197 store 8 ,mem_gpio_wakeup_low 
+0x0094 000198 branch lpm_dispatch_next2 
+:      000199 p_lpm_dispatch_long_mult:
+0x0095 000200 call p_check_ipc_for_lpm 
+0x0096 000201 nrtn user 
+0x0097 000202 fetch 1 ,mem_c51_lmp_lock 
+0x0098 000203 nrtn blank 
+0x0099 000204 jam 0 ,mem_bt_wakeup_from_long_mult 
+0x009a 000205 branch lpm_dispatch_next2 
+:      000207 p_lpm_dispatch_unconn:
+0x009b 000208 call p_check_ipc_for_lpm 
+0x009c 000209 nrtn user 
+0x009d 000210 fetch 1 ,mem_c51_lmp_lock 
+0x009e 000211 nrtn blank 
+0x009f 000212 branch lpm_dispatch_unconn + 2 
+:      000214 p_check_ipc_for_lpm:
+0x00a0 000215 call p_check_ipc_2bt 
+0x00a1 000216 nrtn user 
+0x00a2 000217 call p_check_ipc_2c51 
+0x00a3 000218 nrtn user 
+0x00a4 000219 jam 1 ,mem_c51_lmp_lock 
+0x00a5 000220 jam syc_task_lpm ,mem_c51_flag 
+0x00a6 000221 call p_c51_wait 
+0x00a7 000222 branch p_check_ipc_2bt 
+:      000226 p_check_ipc_2c51:
+0x00a8 000227 fetch 2 ,mem_ipc_2c51_read_index 
+0x00a9 000228 fetcht 2 ,mem_ipc_2c51_write_index 
+0x00aa 000229 branch p_check_ipc_common 
+:      000230 p_check_ipc_2bt:
+0x00ab 000231 fetch 2 ,mem_ipc_2bt_read_index 
+0x00ac 000232 fetcht 2 ,mem_ipc_2bt_write_index 
+:      000233 p_check_ipc_common:
+0x00ad 000234 isub temp ,null 
+0x00ae 000235 branch enable_usr ,zero 
+0x00af 000236 branch disable_usr 
+:      000238 p_c51_wait:
+0x00b0 000239 fetch 1 ,mem_c51_flag 
+0x00b1 000240 nop 10 
+0x00b2 000241 bne 0 ,p_c51_wait 
+0x00b3 000242 rtn 
+:      000245 p_app_lpm_init:
+0x00b4 000246 jam 39 ,mem_le_ch_mapped 
+0x00b5 000247 jam 0 ,mem_tester_emulate 
+0x00b6 000248 jam 0 ,mem_debug_config 
+0x00b7 000249 jam 0 ,mem_lch_code 
+0x00b8 000250 setarg 0 
+0x00b9 000251 store 5 ,mem_sp_state_start 
+0x00ba 000252 rtn 
+:      000254 p_app_process_bb_event:
+0x00bb 000255 arg mem_ipc_fifo_bt2c51 ,rega 
+0x00bc 000256 call fifo_out 
+0x00bd 000257 rtn blank 
+0x00be 000259 copy pdata ,regc 
+0x00bf 000260 call p_app_event_normal_process 
+0x00c0 000261 branch app_process_bb_event_priority 
+:      000262 p_app_event_normal_process:
+0x00c1 000263 rtneq bt_evt_linkkey_generate 
+0x00c2 000264 beq bt_evt_le_connected ,p_device_le_conn 
+0x00c3 000265 beq bt_evt_le_disconnected ,p_device_le_discon 
+0x00c4 000266 beq bt_evt_le_enc_info ,p_device_le_enc_info 
+0x00c5 000267 branch app_event_normal_process 
+:      000270 p_device_le_conn:
+0x00c6 000271 jam 0 ,mem_bt_read_ipc_count 
+0x00c7 000272 jam 0 ,mem_lpm_mult 
+0x00c8 000273 jam 0 ,mem_mult_time_arrive_flag 
+0x00c9 000274 jam 20 ,mem_le_slave_update_mult_timer 
+0x00ca 000275 call app_ble_stop_adv 
+0x00cb 000276 call app_bt_stop_discovery 
+0x00cc 000277 call app_lpm_mult_enable 
+0x00cd 000278 call app_initflag_store 
+0x00ce 000279 jam 1 ,mem_le_fast_conn_finished 
+0x00cf 000280 branch app_le_event_bb_connected 
+:      000282 p_device_le_discon:
+0x00d0 000283 jam 0 ,mem_ble_send_flag 
+0x00d1 000284 call queue_init 
+0x00d2 000285 jam 0 ,mem_ltk_exists 
+0x00d3 000286 jam 0 ,mem_lpm_mult 
+0x00d4 000287 jam 0 ,mem_mult_time_arrive_flag 
+0x00d5 000288 jam 0 ,mem_le_slave_update_mult_timer 
+0x00d6 000290 jam flag_le_pairing_null ,mem_le_pairing_state 
+0x00d7 000291 fetcht 2 ,mem_le_att_report2 
+0x00d8 000292 storet 2 ,mem_le_notify_handle 
+0x00d9 000293 call le_clean_att_list_handle_enable 
+0x00da 000294 branch app_le_event_bb_disconn 
+:      000296 p_device_le_enc_info:
+0x00db 000297 call p_app_updata_le_param 
+0x00dc 000298 branch check_51cmd_le_start_write 
+:      000300 p_app_evt_timer:
+0x00dd 000301 storet 1 ,mem_app_evt_timer_count 
+0x00de 000302 fetch 1 ,mem_ipc_bt_100ms_timer 
+0x00df 000303 increase 1 ,pdata 
+0x00e0 000304 store 1 ,mem_ipc_bt_100ms_timer 
+:      000305 p_app_evt_100ms_loop:
+0x00e1 000306 fetch 1 ,mem_app_evt_timer_count 
+0x00e2 000307 rtn blank 
+0x00e3 000308 increase -1 ,pdata 
+0x00e4 000309 store 1 ,mem_app_evt_timer_count 
+0x00e5 000311 call p_le_slave_update_mult_timer 
+0x00e6 000312 call p_check_mult_parameter 
+0x00e7 000313 call p_le_reconn_enable_notify_timer 
+0x00e8 000314 call p_24g_enter_lpm_timer 
+0x00e9 000315 call p_ble_data_wheel_lpm_timer 
+0x00ea 000316 branch p_app_evt_100ms_loop 
+:      000318 p_check_mult_parameter:
+0x00eb 000319 fetch 1 ,mem_mult_time_arrive_flag 
+0x00ec 000320 rtn blank 
+0x00ed 000321 fetch 1 ,mem_lpm_mult 
+0x00ee 000322 compare 0x20 ,pdata ,0xff 
+0x00ef 000323 ncall p_set_mult_para ,true 
+0x00f0 000324 fetch 1 ,mem_lpm_mode 
+0x00f1 000325 call p_set_multmode ,blank 
+0x00f2 000326 rtn 
+:      000327 p_set_multmode:
+0x00f3 000328 jam 1 ,mem_lpm_mode 
+0x00f4 000329 rtn 
+:      000330 p_set_mult_para:
+0x00f5 000331 jam 0x20 ,mem_lpm_mult 
+0x00f6 000332 rtn 
+:      000333 p_24g_enter_lpm_timer:
+0x00f7 000334 fetch 1 ,mem_new_24g_enter_lpm_timer 
+0x00f8 000335 rtn blank 
+0x00f9 000336 jam 0 ,mem_short_data_wheel 
+0x00fa 000337 increase -1 ,pdata 
+0x00fb 000338 store 1 ,mem_new_24g_enter_lpm_timer 
+0x00fc 000339 nrtn blank 
+0x00fd 000340 rtn 
+:      000342 p_ble_data_wheel_lpm_timer:
+0x00fe 000343 fetch 1 ,mem_ble_data_wheel_lpm_timer 
+0x00ff 000344 rtn blank 
+0x0100 000345 increase -1 ,pdata 
+0x0101 000346 store 1 ,mem_ble_data_wheel_lpm_timer 
+0x0102 000347 nrtn blank 
+0x0103 000348 jam 0 ,mem_ble_data_wheel 
+0x0104 000349 rtn 
+:      000357 p_app_updata_le_param:
+0x0105 000358 call app_lpm_mult_enable 
+0x0106 000359 jam bt_cmd_le_update_conn ,mem_fifo_temp 
+0x0107 000360 branch ui_ipc_send_cmd 
+:      000362 p_le_slave_update_mult_timer:
+0x0108 000363 fetch 1 ,mem_le_slave_update_mult_timer 
+0x0109 000364 rtn blank 
+0x010a 000365 increase -1 ,pdata 
+0x010b 000366 store 1 ,mem_le_slave_update_mult_timer 
+0x010c 000367 nrtn blank 
+0x010d 000368 jam 0x20 ,mem_lpm_mult 
+0x010e 000369 jam 1 ,mem_lpm_mode 
+0x010f 000370 jam 1 ,mem_mult_time_arrive_flag 
+0x0110 000371 rtn 
+:      000373 p_le_reconn_enable_notify_timer:
+0x0111 000374 fetch 1 ,mem_le_reconn_enable_notify_timer 
+0x0112 000375 rtn blank 
+0x0113 000376 increase -1 ,pdata 
+0x0114 000377 store 1 ,mem_le_reconn_enable_notify_timer 
+0x0115 000378 nrtn blank 
+0x0116 000379 branch app_ble_start_write 
+:      000383 p_le_slave_match:
+0x0117 000384 call le_got_first_packet 
+0x0118 000385 call le_acknowledge 
+0x0119 000386 call le_prepare_tx 
+0x011a 000387 call power_ctrl_start 
+0x011b 000388 branch le_slave_match + 5 
+:      000390 p_le_receive_skip:
+0x011c 000391 call save_rssi 
+0x011d 000392 copy pdata ,rega 
+0x011e 000393 call rssi_signal 
+0x011f 000394 branch le_receive_skip + 3 
+:      000396 p_le_send_adv_ind:
+0x0120 000397 fetch 4 ,mem_le_rx_winsows 
+0x0121 000398 store 4 ,mem_le_transmit_window 
+0x0122 000399 branch le_send_adv_ind + 2 
+:      000401 p_le_update_param:
+0x0123 000402 jam 1 ,mem_lpm_mode 
+0x0124 000403 fetch 2 ,mem_le_event_count 
+0x0125 000404 fetcht 2 ,mem_le_instant 
+0x0126 000405 isub temp ,pdata 
+0x0127 000406 store 2 ,mem_pdatatemp 
+0x0128 000407 fetch 1 ,mem_le_state 
+0x0129 000408 set0 lestate_update_param ,pdata 
+0x012a 000409 set0 lestate_got_first_packet ,pdata 
+0x012b 000410 store 1 ,mem_le_state 
+0x012c 000411 fetch 4 ,mem_le_anchor 
+0x012d 000412 fetcht 2 ,mem_le_tsniff 
+0x012e 000413 storet 2 ,mem_temp 
+0x012f 000414 isub temp ,rega 
+0x0130 000415 fetch 1 ,mem_le_new_param 
+0x0131 000416 store 1 ,mem_le_window_size 
+0x0132 000417 ifetcht 2 ,contr 
+0x0133 000418 ifetch 2 ,contr 
+0x0134 000419 lshift2 pdata ,pdata 
+0x0135 000420 store 2 ,mem_le_tsniff 
+0x0136 000421 lshift2 temp ,temp 
+0x0137 000422 iadd temp ,pdata 
+0x0138 000423 ifetcht 4 ,contr 
+0x0139 000424 storet 4 ,mem_le_slave_latency 
+0x013a 000425 iadd rega ,pdata 
+0x013b 000426 copy pdata ,regab 
+0x013c 000427 fetch 2 ,mem_le_tsniff 
+0x013d 000428 fetcht 2 ,mem_temp 
+0x013e 000429 isub temp ,pdata 
+0x013f 000430 fetcht 2 ,mem_pdatatemp 
+0x0140 000431 imul32 temp ,pdata 
+0x0141 000432 iadd regab ,pdata 
+0x0142 000433 store 4 ,mem_le_anchor 
+0x0143 000434 call le_receive_window_size 
+0x0144 000435 fetch 2 ,mem_le_superto 
+0x0145 000436 store 2 ,mem_le_init_superto 
+0x0146 000437 rtn 
+:      000439 p_le_prepare_tx:
+0x0147 000440 fetch 1 ,mem_le_arq 
+0x0148 000441 bbit1 wak ,p_le_prepare_tx_retansmited 
+0x0149 000442 call power_ctrl_pac_succ_incrs 
+0x014a 000443 jam 0 ,mem_le_prepare_tx_retransmited_number 
+0x014b 000444 fetch 1 ,mem_empty_count_user 
+0x014c 000445 nbranch p_le_send_empyt ,blank 
+0x014d 000446 fetch 1 ,mem_mouse_le_pairing_flag 
+0x014e 000447 beq 1 ,p_le_smp_empty 
+0x014f 000448 fetch 1 ,mem_le_rxbuf + 1 
+0x0150 000449 branch le_prepare_tx_1 ,blank 
+0x0151 000450 branch le_send_empty 
+:      000451 p_le_send_empyt:
+0x0152 000452 fetch 1 ,mem_empty_count_user 
+0x0153 000453 increase -1 ,pdata 
+0x0154 000454 store 1 ,mem_empty_count_user 
+0x0155 000455 branch le_send_empty 
+:      000456 p_le_smp_empty:
+0x0156 000457 jam 3 ,mem_empty_count_user 
+0x0157 000458 branch le_prepare_tx_1 
+:      000460 p_le_prepare_tx_retansmited:
+0x0158 000461 fetch 1 ,mem_le_prepare_tx_retransmited_number 
+0x0159 000462 increase 1 ,pdata 
+0x015a 000463 store 1 ,mem_le_prepare_tx_retransmited_number 
+0x015b 000464 branch power_ctrl_pac_succ_decrs 
+:      000466 p_le_prepare_tx_ll:
+0x015c 000467 fetch 1 ,mem_le_txpayload 
+0x015d 000468 beq ll_start_enc_rsp ,p_le_send_start_enc_rsp 
+0x015e 000469 beq ll_terminate_ind ,p_le_send_terminate_ind 
+0x015f 000470 branch le_prepare_tx_ll 
+:      000472 p_le_send_start_enc_rsp:
+0x0160 000473 fetch 1 ,mem_le_reconn_flag 
+0x0161 000474 beq 1 ,p_le_send_reconn_start_enc_rsp 
+0x0162 000475 call app_ble_start_write 
+0x0163 000481 branch le_send_start_enc_rsp 
+:      000482 p_le_send_reconn_start_enc_rsp:
+0x0164 000483 call p_app_updata_le_param 
+0x0165 000484 jam 3 ,mem_le_reconn_enable_notify_timer 
+0x0166 000485 branch le_send_start_enc_rsp_common 
+:      000487 p_le_send_terminate_ind:
+0x0167 000488 setarg 0x13 
+0x0168 000489 istore 1 ,contw 
+0x0169 000490 call le_send_terminate_ind 
+0x016a 000491 setarg 10 
+0x016b 000492 store 2 ,mem_le_superto 
+0x016c 000493 store 2 ,mem_le_init_superto 
+0x016d 000494 rtn 
+:      000496 p_le_prepare_smp0:
+0x016e 000497 fetch 1 ,mem_le_l2cap 
+0x016f 000498 beq smp_pairing_response ,p_le_send_smp_pairing_response 
+0x0170 000499 beq smp_encryption_information ,p_le_send_smp_encryption_information 
+0x0171 000500 beq smp_master_identification ,p_le_send_smp_master_identification_only 
+0x0172 000501 branch le_prepare_smp0 
+:      000502 p_le_send_smp_master_identification_only:
+0x0173 000503 jam 0 ,mem_mouse_le_pairing_flag 
+0x0174 000504 branch le_send_smp_master_identification_only 
+:      000506 p_le_send_smp_pairing_response:
+0x0175 000507 setarg param_smp_paring_response 
+0x0176 000508 store 3 ,mem_le_pres 
+0x0177 000509 setarg 0x01 
+0x0178 000510 istore 1 ,contw 
+0x0179 000511 setarg param_smp_key_dist0 
+0x017a 000512 istore 3 ,contw 
+0x017b 000513 branch le_send_smp_pairing_response_common 
+:      000515 p_le_send_smp_encryption_information:
+0x017c 000516 jam bt_evt_le_enc_info ,mem_fifo_temp 
+0x017d 000517 call ui_ipc_send_event 
+0x017e 000518 jam xt_smp_master_identification ,mem_fifo_temp 
+0x017f 000519 call le_xtype_fifo_in 
+0x0180 000520 branch le_send_smp_encryption_information_shutter 
+:      000522 p_le_prepare_att:
+0x0181 000523 fetch 1 ,mem_le_l2cap 
+0x0182 000524 beq attop_handle_value_notification ,p_le_send_att_handle_value_notification 
+0x0183 000525 beq attop_handle_value_indication ,p_le_send_att_handle_value_indication 
+0x0184 000526 branch le_prepare_att + 5 
+:      000528 p_le_send_att_handle_value_indication:
+:      000529 p_le_send_att_handle_value_notification:
+0x0185 000530 fetcht 2 ,mem_le_att_report2 
+0x0186 000531 storet 2 ,mem_le_l2cap + 1 
+0x0187 000532 fetch 1 ,mem_queue_read_ptr 
+0x0188 000533 add pdata ,1 ,temp 
+0x0189 000534 and temp ,0x03 ,temp 
+0x018a 000535 storet 1 ,mem_queue_read_ptr 
+0x018b 000536 mul32 pdata ,7 ,pdata 
+0x018c 000537 arg mem_queue_buffer0 ,contr 
+0x018d 000538 iadd contr ,contr 
+0x018e 000539 ifetch 7 ,contr 
+0x018f 000540 store 7 ,mem_le_l2cap + 3 
+0x0190 000541 arg 14 ,temp 
+0x0191 000542 branch le_send_packet 
+:      000544 p_le_send_packet:
+0x0192 000545 storet 1 ,mem_le_txlen 
+0x0193 000546 compare 2 ,type ,3 
+0x0194 000547 nbranch p_le_send_non_l2cap ,true 
+0x0195 000548 add temp ,-4 ,pdata 
+0x0196 000549 store 2 ,mem_le_txpayload 
+:      000550 p_le_send_non_l2cap:
+0x0197 000551 fetcht 1 ,mem_le_arq 
+0x0198 000552 call p_le_send_check_md 
+0x0199 000553 branch le_send_non_l2cap1 
+:      000554 p_le_send_check_md:
+0x019a 000555 fetch 1 ,mem_mouse_le_pairing_flag 
+0x019b 000556 beq 1 ,enable_blank 
+0x019c 000557 branch le_xtype_fifo_is_empty 
+:      000558 enable_blank:
+0x019d 000559 setarg 0 
+0x019e 000560 rtn 
+:      000562 p_le_parse0:
+0x019f 000563 copy regc ,pdata 
+0x01a0 000564 beq ll_connection_update_req ,p_le_parse_connection_update_req 
+0x01a1 000565 beq ll_terminate_ind ,p_le_parse_terminate_ind 
+0x01a2 000566 beq ll_enc_req ,p_le_parse_enc_req 
+0x01a3 000567 beq ll_pause_enc_req ,p_le_parse_pause_enc_rsq 
+0x01a4 000568 branch le_parse0 + 6 
+:      000570 p_le_parse_connection_update_req:
+0x01a5 000571 jam 0 ,mem_lpm_mode 
+0x01a6 000572 jam 60 ,mem_le_slave_update_mult_timer 
+0x01a7 000573 branch le_parse_connection_update_req 
+:      000575 p_le_parse_terminate_ind:
+0x01a8 000576 call le_parse_terminate_ind 
+:      000577 le_clear_xtype_fifo:
+0x01a9 000578 setarg 0 
+0x01aa 000579 store 8 ,mem_le_xtype_fifo 
+0x01ab 000580 rtn 
+:      000582 p_le_parse_enc_req:
+0x01ac 000583 call le_parse_enc_req 
+0x01ad 000584 fetch 1 ,mem_le_pairing_state 
+0x01ae 000585 rtneq flag_le_pairing_after_auth 
+0x01af 000586 branch load_device_list_mode_4_shutter 
+:      000588 p_le_parse_pause_enc_rsq:
+0x01b0 000589 jam xt_ll_pause_enc_rsp ,mem_fifo_temp 
+0x01b1 000590 branch le_xtype_fifo_in 
+:      000592 p_le_parse_smp:
+0x01b2 000593 ifetch 1 ,contr 
+0x01b3 000594 beq smp_pairing_request ,p_le_parse_smp_pairing_request 
+0x01b4 000595 branch le_parse_smp + 3 
+:      000596 p_le_parse_smp_pairing_request:
+0x01b5 000597 jam 1 ,mem_mouse_le_pairing_flag 
+0x01b6 000598 jam 3 ,mem_empty_count_user 
+0x01b7 000599 branch le_parse_smp_pairing_request 
+:      000601 p_le_parse_att:
+0x01b8 000602 ifetch 3 ,contr 
+0x01b9 000603 store 3 ,mem_le_att_opcode 
+0x01ba 000604 beq attop_write_request ,p_le_parse_att_write_request 
+0x01bb 000605 branch le_parse_att + 4 
+:      000607 p_le_parse_att_write_request:
+0x01bc 000608 jam 1 ,mem_lpm_mode 
+0x01bd 000609 call p_le_parse_att_write_common 
+0x01be 000610 fetch 1 ,mem_le_att_handle 
+0x01bf 000611 sub pdata ,ble_fast_conn_character_handle ,null 
+0x01c0 000612 branch p_le_mouse_fast_conn_character_set ,zero 
+0x01c1 000613 jam 0 ,mem_le_mouse_fast_conn_flag 
+:      000614 p_le_parse_att_write_request_next:
+0x01c2 000615 call le_check_long_packet_patch 
+0x01c3 000616 nrtn zero 
+:      000617 p_le_parse_att_write_request_end:
+0x01c4 000618 fetch 1 ,mem_le_mouse_fast_conn_flag 
+0x01c5 000619 ncall p_le_set_enc_info_flag ,blank 
+0x01c6 000620 jam attop_write_response ,mem_fifo_temp 
+0x01c7 000621 branch le_xtype_fifo_in 
+:      000622 p_le_parse_att_write_common:
+0x01c8 000623 fetch 1 ,mem_le_rxbuf + 1 
+0x01c9 000624 increase -7 ,pdata 
+0x01ca 000625 icopy loopcnt 
+0x01cb 000626 copy loopcnt ,regb 
+0x01cc 000627 branch le_parse_att_write_common + 6 
+:      000629 p_le_mouse_fast_conn_character_set:
+0x01cd 000630 jam 1 ,mem_le_mouse_fast_conn_flag 
+0x01ce 000631 branch p_le_parse_att_write_request_next 
+:      000633 p_le_set_enc_info_flag:
+0x01cf 000634 jam bt_evt_le_enc_info ,mem_fifo_temp 
+0x01d0 000635 branch ui_ipc_send_event 
+:      000638 p_le_adv:
+0x01d1 000639 fetch 1 ,mem_le_adv_enable 
+0x01d2 000640 rtn blank 
+0x01d3 000641 arg le_adv_interval_timer ,queue 
+0x01d4 000642 call timer_check 
+0x01d5 000643 nrtn blank 
+0x01d6 000644 disable master 
+0x01d7 000645 enable swfine 
+0x01d8 000646 call le_init_adv 
+0x01d9 000647 call le_next_adv_channel 
+0x01da 000648 call le_send_adv_ind 
+0x01db 000649 nbranch p_le_adv_not_match ,match 
+0x01dc 000650 fetch 1 ,mem_le_req_rcv 
+0x01dd 000651 increase 1 ,pdata 
+0x01de 000652 store 1 ,mem_le_req_rcv 
+0x01df 000653 fetch 1 ,mem_le_rxbuf 
+0x01e0 000654 and pdata ,0x0f ,pdata 
+0x01e1 000655 beq scan_req ,p_le_send_scan_response 
+0x01e2 000656 beq connect_req ,le_parse_connect_req 
+:      000657 p_le_adv_not_match:
+0x01e3 000658 fetch 1 ,mem_le_ch_mapped 
+0x01e4 000659 bne 39 ,le_adv_loop 
+0x01e5 000660 random pdata 
+0x01e6 000661 arg 0x1ff ,temp 
+0x01e7 000662 iand temp ,pdata 
+0x01e8 000663 add pdata ,250 ,pdata 
+:      000664 p_adv_delay:
+0x01e9 000665 increase -1 ,pdata 
+0x01ea 000666 nop 38 
+0x01eb 000667 nbranch p_adv_delay ,blank 
+0x01ec 000668 branch le_adv_not_match + 3 
+:      000670 p_le_send_scan_response:
+0x01ed 000671 call le_send_scan_response 
+0x01ee 000672 branch p_le_adv_not_match 
+:      000674 p_le_receive_window_size:
+0x01ef 000675 fetch 4 ,mem_le_transmit_window 
+0x01f0 000676 arg 60000 ,temp 
+0x01f1 000677 iadd temp ,pdata 
+0x01f2 000678 store 4 ,mem_le_transmit_window 
+0x01f3 000679 branch le_receive_window_size + 16 
+:      000682 p_le_lpm_set_mult:
+0x01f4 000683 disable wake 
+0x01f5 000684 branch p_le_lpm_set_mult_attempt ,attempt 
+0x01f6 000685 nbranch p_le_lpm_lost ,match 
+:      000686 p_le_lpm_set_mult_attempt:
+0x01f7 000687 call lpm_match 
+0x01f8 000688 fetch 2 ,mem_rx_window_sniff 
+0x01f9 000689 store 2 ,mem_le_receive_window 
+0x01fa 000690 fetch 1 ,mem_le_rxbuf 
+0x01fb 000691 compare 1 ,pdata ,3 
+0x01fc 000692 nbranch lpm_mult_short ,true 
+0x01fd 000693 fetch 1 ,mem_le_txheader 
+0x01fe 000694 compare 1 ,pdata ,3 
+0x01ff 000695 nbranch lpm_mult_short ,true 
+0x0200 000696 call le_xtype_fifo_is_empty 
+0x0201 000697 nbranch lpm_mult_short ,blank 
+0x0202 000698 fetch 1 ,mem_le_prepare_tx_retransmited_number 
+0x0203 000699 sub pdata ,1 ,null 
+0x0204 000700 nbranch lpm_mult_short ,positive 
+0x0205 000701 branch le_lpm_set_mult_attempt + 11 
+:      000703 p_le_lpm_lost:
+0x0206 000704 fetcht 2 ,mem_rx_window_sniff 
+0x0207 000705 fetch 2 ,mem_le_rx_window_inc 
+0x0208 000706 iadd temp ,temp 
+0x0209 000707 rshift temp ,temp 
+0x020a 000708 fetch 2 ,mem_le_receive_window 
+0x020b 000709 iadd temp ,pdata 
+0x020c 000710 store 2 ,mem_le_receive_window 
+0x020d 000711 branch lpm_lost 
+:      000713 p_mouse_init_environment:
+0x020e 000714 call p_mouse_iicd_read_eep_data 
+0x020f 000715 arg 0x06 ,loopcnt 
+0x0210 000716 arg mem_mouse_le_reconn_addr_data ,contr 
+0x0211 000717 setarg 0xffff 
+0x0212 000718 call p_mouse_reconn_addr_empty_check 
+0x0213 000719 nrtn zero 
+0x0214 000720 fetch 1 ,mem_le_start_fast_conn_count 
+0x0215 000721 rtn blank 
+0x0216 000722 increase -1 ,pdata 
+0x0217 000723 store 1 ,mem_le_start_fast_conn_count 
+0x0218 000724 call app_initflag_check 
+0x0219 000725 rtn zero 
+0x021a 000726 jam 1 ,mem_le_start_adv 
+0x021b 000727 rtn 
+:      000729 p_mouse_iicd_read_eep_data:
+0x021c 000730 arg 0x0c ,temp 
+0x021d 000731 arg mem_mouse_le_reconn_addr_data ,rega 
+0x021e 000732 fetch 2 ,mem_mouse_reconn_addr 
+0x021f 000733 branch iicd_read_eep_data + 5 
+:      000734 p_mouse_reconn_addr_empty_check:
+0x0220 000735 ifetcht 2 ,contr 
+0x0221 000736 isub temp ,null 
+0x0222 000737 nrtn zero 
+0x0223 000738 loop p_mouse_reconn_addr_empty_check 
+0x0224 000739 rtn 
+:      000744 p_gpio_set_before_lpm_common:
+0x0225 000745 hfetch 4 ,core_gpio_pu0 
+0x0226 000746 hfetcht 4 ,core_gpio_pd0 
+0x0227 000747 ior temp ,pdata 
+0x0228 000748 invert pdata ,pdata 
+0x0229 000749 iand rega ,pdata 
+0x022a 000750 hstore 4 ,core_gpio_oe0 
+0x022b 000751 rtn 
+:      000753 p_ui_timer_check_end:
+0x022c 000754 copy rega ,pdata 
+0x022d 000755 rtn blank 
+0x022e 000756 increase -160 ,temp 
+0x022f 000757 increase -160 ,temp 
+0x0230 000758 set0 28 ,temp 
+0x0231 000759 storet 4 ,mem_ui_timer_last_btclk 
+0x0232 000760 copy pdata ,temp 
+0x0233 000761 arg mem_ipc_fifo_bt2c51 ,rega 
+0x0234 000762 call fifo_is_near_full 
+0x0235 000763 nrtn blank 
+0x0236 000764 copy temp ,pdata 
+0x0237 000765 branch ui_timer_check_send_evt 
+:      000768 p_check_51cmd_once:
+0x0238 000769 call ui_ipc_get_lock 
+0x0239 000770 arg mem_ipc_fifo_c512bt ,rega 
+0x023a 000771 call fifo_out 
+0x023b 000772 copy pdata ,temp 
+0x023c 000773 call ui_ipc_put_lock 
+0x023d 000774 copy temp ,pdata 
+0x023e 000775 rtn blank 
+0x023f 000776 beq bt_cmd_start_24g ,g24_check_51cmd_start_24g 
+0x0240 000777 beq bt_cmd_stop_24g ,g24_check_51cmd_stop_24g 
+0x0241 000778 beq bt_cmd_pair_24g ,g24_check_51cmd_pair_24g 
+0x0242 000779 beq bt_cmd_start_adv ,p_check_51cmd_adv 
+0x0243 000780 beq bt_cmd_start_adv_reconn ,p_check_51cmd_adv_reconn 
+0x0244 000781 branch check_51cmd_once + 9 
+:      000783 g24_check_51cmd_start_24g:
+0x0245 000784 fetch 1 ,mem_tx_power_temp 
+0x0246 000785 store 1 ,mem_tx_power 
+0x0247 000786 jam state_24g_pairing_success ,mem_new_24g_pairing_sm 
+0x0248 000787 branch g24_start_24g_mode 
+:      000788 g24_check_51cmd_stop_24g:
+0x0249 000789 fetch 1 ,mem_tx_power_temp 
+0x024a 000790 store 1 ,mem_tx_power 
+0x024b 000791 set0 mark_24g ,mark 
+0x024c 000792 branch le_disable 
+:      000793 g24_check_51cmd_pair_24g:
+0x024d 000794 jam tx_power_pair ,mem_tx_power 
+0x024e 000795 branch g24_start_pairing_sm1 
+:      000798 p_check_51cmd_adv:
+0x024f 000799 set0 mark_24g ,mark 
+0x0250 000800 jam 0 ,mem_lpm_mode 
+0x0251 000801 random pdata 
+0x0252 000802 store 1 ,mem_le_lap 
+0x0253 000804 setarg 0x26100e 
+0x0254 000805 store 3 ,mem_le_lap + 3 
+0x0255 000806 jam 0 ,mem_le_reconn_flag 
+0x0256 000807 fetcht 2 ,mem_le_att_report2 
+0x0257 000808 storet 2 ,mem_le_notify_handle 
+0x0258 000809 call le_clean_att_list_handle_enable 
+0x0259 000810 arg adv_flag_bredr_not_supported | adv_flag_limited_discoverable ,regb 
+:      000811 p_le_start_adv:
+0x025a 000812 call p_le_check_adv_flag 
+0x025b 000814 copy regb ,pdata 
+0x025c 000815 istore 1 ,contr 
+0x025d 000816 branch check_51cmd_adv 
+:      000818 p_check_51cmd_adv_reconn:
+0x025e 000819 set0 mark_24g ,mark 
+0x025f 000820 jam 0 ,mem_lpm_mode 
+0x0260 000821 jam 1 ,mem_le_reconn_flag 
+0x0261 000822 fetcht 2 ,mem_le_att_report2 
+0x0262 000823 call le_att_check_notification_enable 
+0x0263 000824 copy rega ,contw 
+0x0264 000825 setarg 1 
+0x0265 000826 istore 1 ,contw 
+0x0266 000827 arg adv_flag_bredr_not_supported ,regb 
+0x0267 000828 branch p_le_start_adv 
+:      000834 p_le_check_adv_flag:
+0x0268 000835 arg mem_le_adv_data ,rega 
+:      000836 p_le_check_adv_flag_loop:
+0x0269 000837 ifetch 1 ,rega 
+0x026a 000838 rtn blank 
+0x026b 000839 iadd contr ,rega 
+0x026c 000840 ifetch 1 ,contr 
+0x026d 000841 rtneq 0x01 
+0x026e 000842 branch p_le_check_adv_flag_loop 
+:      000845 p_check_51cmd_once_continue0:
+0x026f 000846 call lmo_fifo_check 
+0x0270 000847 nbranch check_51cmd_restore ,blank 
+:      000848 p_check_51cmd_once_continue:
+0x0271 000849 fetch 1 ,mem_fifo_temp 
+0x0272 000850 bmark0 mark_context ,check_51cmd_check_idle 
+0x0273 000853 beq bt_cmd_store_reconn_info_le ,p_rtn 
+0x0274 000855 branch check_51cmd_once_continue + 2 
+:      000872 p_check_enter_hibernate:
+0x0275 000873 jam syc_task_hibernate ,mem_c51_flag 
+0x0276 000874 call p_c51_wait 
+:      000875 p_enter_hibernate_continue:
+0x0277 000877 jam 0x5a ,mem_hibernate_flag 
+0x0278 000878 call lpm_write_gpio_wakeup 
+0x0279 000879 hfetch 4 ,core_lpm_ctrl 
+0x027a 000880 set0 15 ,pdata 
+0x027b 000881 hstore 4 ,core_lpm_reg 
+0x027c 000882 call lpm_write_ctrl 
+0x027d 000883 arg param_hibernate_clks ,temp 
+0x027e 000884 branch lpm_sleep 
+:      000887 p_ipc_timer_check:
+0x027f 000888 fetcht 4 ,mem_ipc_last_check_timer 
+0x0280 000889 copy clkn_bt ,pdata 
+0x0281 000890 isub temp ,pdata 
+0x0282 000892 arg 1600 ,temp 
+0x0283 000893 idiv temp 
+0x0284 000894 call wait_div_end 
+0x0285 000895 quotient pdata 
+0x0286 000896 rtn blank 
+0x0287 000897 copy clkn_bt ,temp 
+0x0288 000898 storet 4 ,mem_ipc_last_check_timer 
+0x0289 000899 fetcht 2 ,mem_ipc_bt_timer 
+0x028a 000900 byteswap temp ,temp 
+0x028b 000901 iadd temp ,pdata 
+0x028c 000902 byteswap pdata ,pdata 
+0x028d 000903 store 2 ,mem_ipc_bt_timer 
+0x028e 000904 byteswap pdata ,pdata 
+0x028f 000905 and pdata ,0x3 ,pdata 
+0x0290 000906 rtnne 0 
+0x0291 000907 call p_read_adc_enable 
+0x0292 000908 nrtn user2 
+:      000909 p_adc_check_process:
+0x0293 000910 fetch 1 ,mem_adc_config_flag 
+0x0294 000911 bbit1 adc_config_gpio ,p_adc_check_gpio 
+:      000912 p_rtn:
+0x0295 000913 rtn 
+:      000917 p_adc_check_gpio:
+0x0296 000918 hfetch 1 ,core_gpio_pu0 
+0x0297 000919 set0 5 ,pdata 
+0x0298 000920 hstore 1 ,core_gpio_pu0 
+0x0299 000921 hjam 0x8f ,rf_adc_mode 
+0x029a 000922 fetch 1 ,mem_adc_channel 
+0x029b 000923 hstore 1 ,rf_adc_ch 
+0x029c 000924 call p_read_adc 
+0x029d 000925 hfetch 1 ,core_gpio_pu0 
+0x029e 000926 set1 5 ,pdata 
+0x029f 000927 hstore 1 ,core_gpio_pu0 
+0x02a0 000928 rtn 
+:      000930 p_read_adc:
+0x02a1 000931 hfetch 1 ,core_uart_baud + 1 
+0x02a2 000932 set1 7 ,pdata 
+0x02a3 000933 hstore 1 ,core_uart_baud + 1 
+0x02a4 000934 hfetch 1 ,rf_adc_ch 
+0x02a5 000935 or_into 0x30 ,pdata 
+0x02a6 000936 hstore 1 ,rf_adc_ch 
+0x02a7 000937 hjam 0x7c ,rfen_adc 
+0x02a8 000938 hjam 0xaa ,rf_adc_gc 
+0x02a9 000939 nop 5000 
+0x02aa 000940 hfetcht 2 ,core_adc_sum 
+0x02ab 000941 hfetch 1 ,core_uart_baud + 1 
+0x02ac 000942 set0 7 ,pdata 
+0x02ad 000943 hstore 1 ,core_uart_baud + 1 
+0x02ae 000944 byteswap temp ,temp 
+0x02af 000945 storet 2 ,mem_adc_current_value 
+0x02b0 000946 rtn 
+:      000948 enable_usr2:
+0x02b1 000949 enable user2 
+0x02b2 000950 rtn 
+:      000951 p_read_adc_enable:
+0x02b3 000952 disable user2 
+0x02b4 000953 call le_xtype_fifo_is_empty 
+0x02b5 000954 call enable_usr2 ,blank 
+0x02b6 000955 fetch 1 ,mem_new_24g_abort_pac 
+0x02b7 000956 ncall enable_usr2 ,blank 
+0x02b8 000957 rtn 
+:      000959 p_user_le_connect_process:
+0x02b9 000960 jam 1 ,mem_ble_read_ipc_fifo_once 
+0x02ba 000961 call p_ipc_rx 
+0x02bb 000962 jam 0 ,mem_ble_read_ipc_fifo_once 
+0x02bc 000963 rtn 
+:      000965 p_ipc_rx:
+0x02bd 000966 call p_check_ipc_2bt 
+0x02be 000967 rtn user 
+0x02bf 000968 byteswap pdata ,pdata 
+0x02c0 000969 copy pdata ,contr 
+0x02c1 000970 call p_ipc_rx_byte 
+0x02c2 000971 store 1 ,mem_ipc_rx_type 
+0x02c3 000972 beq ipc_type_cmd ,p_ipc_rx_cmd 
+0x02c4 000973 beq ipc_type_24g ,g24_ipc_rx_24g 
+0x02c5 000974 copy pdata ,temp 
+0x02c6 000975 copy contr ,rega 
+0x02c7 000976 fetch 1 ,mem_context 
+0x02c8 000977 bbit0 state_inconn ,p_ipc_abondon_rx_data 
+0x02c9 000978 copy rega ,contr 
+0x02ca 000979 rtnmark0 mark_context 
+0x02cb 000980 copy temp ,pdata 
+0x02cc 000981 beq ipc_type_ble ,p_ipc_rx_ble 
+0x02cd 000982 branch assert 
+:      000984 p_ipc_rx_cmd:
+0x02ce 000985 call p_ipc_rx_byte 
+0x02cf 000986 call p_ipc_rx_byte 
+0x02d0 000987 store 1 ,mem_fifo_temp 
+0x02d1 000988 call p_ipc_next_rx 
+0x02d2 000989 branch ui_ipc_send_cmd 
+:      000991 p_ipc_next_rx:
+0x02d3 000992 call p_ipc_rx_updata_contr 
+0x02d4 000993 copy contr ,temp 
+0x02d5 000994 byteswap temp ,temp 
+0x02d6 000995 storet 2 ,mem_ipc_2bt_read_index 
+0x02d7 000996 rtn 
+:      000998 p_ipc_abondon_rx_data:
+0x02d8 000999 copy rega ,contr 
+0x02d9 001000 arg mem_tst_pktcnt_sync ,contw 
+0x02da 001001 branch p_ipc_rx_cpy 
+:      001003 p_ipc_rx_cpy:
+0x02db 001004 call p_ipc_rx_byte 
+0x02dc 001005 copy pdata ,loopcnt 
+:      001006 p_ipc_copy:
+0x02dd 001007 call p_ipc_cpy_loop 
+0x02de 001008 branch p_ipc_next_rx 
+:      001010 p_ipc_cpy_loop:
+0x02df 001011 call p_ipc_rx_byte 
+0x02e0 001012 istore 1 ,contw 
+0x02e1 001013 loop p_ipc_cpy_loop 
+0x02e2 001014 rtn 
+:      001016 p_ipc_rx_byte:
+0x02e3 001017 call p_ipc_rx_updata_contr 
+0x02e4 001018 ifetch 1 ,contr 
+0x02e5 001019 rtn 
+:      001021 p_ipc_rx_updata_contr:
+0x02e6 001022 setarg mem_ipc_2bt_fifo_end 
+0x02e7 001023 isub contr ,null 
+0x02e8 001024 nrtn zero 
+0x02e9 001025 arg mem_ipc_2bt_fifo_head ,contr 
+0x02ea 001026 rtn 
+:      001028 p_ipc_tx_evt:
+0x02eb 001029 arg 3 ,loopcnt 
+0x02ec 001030 arg mem_ipc_tx_evt_buff ,contr 
+:      001031 p_ipc_tx_cpy:
+0x02ed 001032 copy contr ,rega 
+0x02ee 001033 fetch 2 ,mem_ipc_2c51_write_index 
+0x02ef 001034 byteswap pdata ,pdata 
+0x02f0 001035 copy pdata ,contw 
+0x02f1 001036 copy rega ,contr 
+:      001037 p_ipc_tx_loop:
+0x02f2 001038 ifetch 1 ,contr 
+0x02f3 001039 istore 1 ,contw 
+0x02f4 001040 call p_ipc_tx_updata_contw 
+0x02f5 001041 loop p_ipc_tx_loop 
+0x02f6 001042 copy contw ,pdata 
+0x02f7 001043 byteswap pdata ,pdata 
+0x02f8 001044 store 2 ,mem_ipc_2c51_write_index 
+0x02f9 001045 rtn 
+:      001046 p_ipc_tx_updata_contw:
+0x02fa 001047 setarg mem_ipc_2c51_fifo_end 
+0x02fb 001048 isub contw ,null 
+0x02fc 001049 nrtn zero 
+0x02fd 001050 arg mem_ipc_2c51_fifo_head ,contw 
+0x02fe 001051 rtn 
+:      001053 g24_ipc_rx_24g:
+0x02ff 001054 rtnmark0 mark_24g_conext 
+0x0300 001055 call p_ipc_rx_byte 
+0x0301 001056 icopy loopcnt 
+0x0302 001057 store 1 ,mem_new_uart_packet 
+0x0303 001058 branch p_ipc_copy 
+:      001061 queue_init:
+0x0304 001062 setarg 0 
+0x0305 001063 store 3 ,mem_queue_write_prt 
+0x0306 001064 rtn 
+:      001066 p_ipc_rx_ble_data:
+0x0307 001067 rtnmark1 mark_24g 
+0x0308 001068 fetch 1 ,mem_le_switch_send_data 
+0x0309 001069 rtn blank 
+0x030a 001070 call p_check_ipc_2bt 
+0x030b 001071 rtn user 
+0x030c 001072 byteswap pdata ,pdata 
+0x030d 001073 copy pdata ,contr 
+0x030e 001074 call p_ipc_rx_byte 
+0x030f 001075 store 1 ,mem_ipc_rx_type 
+0x0310 001076 copy contr ,rega 
+0x0311 001077 bne ipc_type_ble ,p_ipc_abondon_rx_data 
+0x0312 001078 copy contr ,regb 
+0x0313 001079 call le_xtype_fifo_is_near_full 
+0x0314 001080 nrtn blank 
+0x0315 001081 branch p_ipc_rx_ble_read_fifo 
+:      001083 p_ipc_rx_ble:
+0x0316 001084 copy contr ,regb 
+0x0317 001085 fetch 1 ,mem_ble_read_ipc_fifo_once 
+0x0318 001086 rtn blank 
+0x0319 001087 call le_xtype_fifo_is_empty 
+0x031a 001088 nrtn blank 
+:      001089 p_ipc_rx_ble_read_fifo:
+0x031b 001090 fetcht 2 ,mem_le_att_report2 
+0x031c 001091 call le_att_check_notification_enable 
+0x031d 001092 rtnbit0 0 
+0x031e 001093 fetch 1 ,mem_le_switch_send_data 
+0x031f 001094 rtneq 0 
+0x0320 001095 fetch 1 ,mem_bt_read_ipc_count 
+0x0321 001096 pincrease 1 
+0x0322 001097 store 1 ,mem_bt_read_ipc_count 
+0x0323 001098 fetch 1 ,mem_queue_write_prt 
+0x0324 001099 add pdata ,1 ,temp 
+0x0325 001100 and temp ,0x03 ,temp 
+0x0326 001101 storet 1 ,mem_queue_write_prt 
+0x0327 001102 mul32 pdata ,7 ,pdata 
+0x0328 001103 arg mem_queue_buffer0 ,contw 
+0x0329 001104 iadd contw ,contw 
+0x032a 001105 copy regb ,contr 
+0x032b 001106 call p_ipc_rx_byte 
+0x032c 001107 icopy loopcnt 
+0x032d 001108 call p_ipc_copy 
+0x032e 001109 call p_ipc_rx_ble_read_fifo_first_time 
+0x032f 001110 rtn user2 
+0x0330 001111 jam attop_handle_value_notification ,mem_fifo_temp 
+0x0331 001112 branch le_xtype_fifo_in 
+:      001114 p_ipc_rx_ble_read_fifo_first_time:
+0x0332 001115 disable user2 
+0x0333 001116 fetch 1 ,mem_ble_send_flag 
+0x0334 001117 rtneq 5 
+0x0335 001118 enable user2 
+0x0336 001119 increase 1 ,pdata 
+0x0337 001120 store 1 ,mem_ble_send_flag 
+0x0338 001121 sub pdata ,1 ,null 
+0x0339 001122 nrtn positive 
+0x033a 001123 jam bt_evt_le_notify_enable ,mem_ipc_tx_evt 
+0x033b 001124 branch p_ipc_tx_evt 
+:      001132 p_ipc_init:
+0x033c 001133 setarg mem_ipc_2bt_fifo_head 
+0x033d 001134 byteswap pdata ,pdata 
+0x033e 001135 store 2 ,mem_ipc_2bt_read_index 
+0x033f 001136 store 2 ,mem_ipc_2bt_write_index 
+0x0340 001137 setarg mem_ipc_2c51_fifo_head 
+0x0341 001138 byteswap pdata ,pdata 
+0x0342 001139 store 2 ,mem_ipc_2c51_read_index 
+0x0343 001140 store 2 ,mem_ipc_2c51_write_index 
+0x0344 001141 rtn 
+:      001143 p_mouse_reconn_addr_calculate:
+0x0345 001144 fetch 2 ,mem_mouse_eeprom_base 
+0x0346 001145 add pdata ,0x1c ,pdata 
+0x0347 001146 store 2 ,mem_mouse_reconn_addr 
+0x0348 001147 rtn 
+:      001149 p_device_init:
+0x0349 001150 call le_modified_name_adv 
+0x034a 001153 jam 0 ,mem_c51_flag 
+0x034b 001154 jam 6 ,mem_connection_options 
+0x034c 001155 call app_lpm_mult_enable 
+0x034d 001158 setarg p_c51_user_event 
+0x034e 001159 store 2 ,mem_cb_bb_event_process 
+0x034f 001162 setarg p_user_le_connect_process 
+0x0350 001164 store 2 ,mem_cb_le_process 
+0x0351 001165 setarg p_device_before_hibernate 
+0x0352 001166 store 2 ,mem_cb_before_hibernate 
+0x0353 001167 ncall p_ipc_init ,wake 
+0x0354 001168 call p_device_wakeup ,wake 
+0x0355 001169 call lpm_disable_exen_output 
+0x0356 001171 fetch 1 ,mem_le_init_eeprom_base_count 
+0x0357 001172 branch p_device_init_next ,blank 
+0x0358 001173 increase -1 ,pdata 
+0x0359 001174 store 1 ,mem_le_init_eeprom_base_count 
+0x035a 001175 setarg 0x7f80 
+0x035b 001176 store 2 ,mem_mouse_eeprom_base 
+0x035c 001177 call p_mouse_reconn_addr_calculate 
+0x035d 001179 fetch 1 ,mem_le_reconn_flag 
+0x035e 001180 nbranch p_device_init_next ,blank 
+0x035f 001181 fetch 1 ,mem_le_fast_conn_finished 
+0x0360 001182 nbranch p_device_init_next ,blank 
+0x0361 001183 call p_mouse_init_environment 
+:      001184 p_device_init_next:
+0x0362 001185 fetch 1 ,mem_hibernate_flag 
+0x0363 001186 beq 0x5a ,p_device_init_init_hibwake 
+0x0364 001187 branch p_deveice_init_wake ,wake 
+0x0365 001188 fetch 1 ,mem_tx_power 
+0x0366 001189 store 1 ,mem_tx_power_temp 
+0x0367 001190 call power_ctrl_pac_succ_cnt_init 
+0x0368 001191 fetch 2 ,mem_adc_0v 
+0x0369 001192 byteswap pdata ,pdata 
+0x036a 001193 store 2 ,mem_adc_0v 
+0x036b 001194 fetch 2 ,mem_adc_3v 
+0x036c 001195 byteswap pdata ,pdata 
+0x036d 001196 store 2 ,mem_adc_3v 
+0x036e 001197 call p_init_adc_from_otp 
+0x036f 001198 call g24_set_device_addr 
+0x0370 001199 fetch 8 ,mem_temp 
+0x0371 001200 nbranch p_deveice_init_reset ,blank 
+0x0372 001201 fetch 2 ,0x4ad4 
+0x0373 001202 byteswap pdata ,pdata 
+0x0374 001203 branch p_deveice_init_reset ,blank 
+0x0375 001204 store 2 ,mem_adc_3v 
+:      001205 p_deveice_init_reset:
+0x0376 001206 jam bt_evt_reset ,mem_ipc_tx_evt 
+:      001207 p_device_init_common:
+0x0377 001208 fetch 1 ,mem_short_lpm_enable 
+0x0378 001209 nbranch p_24g_short_lpm_process ,blank 
+0x0379 001210 call p_adc_check_process 
+0x037a 001211 call p_ipc_tx_evt 
+0x037b 001212 call p_ipc_rx_ble_data 
+0x037c 001213 hjam start_c51_core ,core_docd_ctrl 
+0x037d 001214 rtn 
+:      001215 p_24g_short_lpm_process:
+0x037e 001216 call lpm_recover_clk ,wake 
+0x037f 001217 arg param_rx_setup ,timeup 
+0x0380 001218 until clkn_rt ,meet 
+0x0381 001219 copy clkn_bt ,pdata 
+0x0382 001220 store 3 ,mem_ckln_24g_short_lpm 
+:      001221 p_24g_short_lpm_process_loop:
+0x0383 001222 fetch 2 ,mem_ui_state_map 
+0x0384 001223 rtnbit1 ui_state_ble_adv 
+0x0385 001224 rtnbit1 ui_state_bt_discovery 
+0x0386 001225 call app_process_idle 
+0x0387 001226 call g24_short_lpm_transmit_process 
+0x0388 001227 branch p_24g_short_lpm_process_loop 
+:      001229 p_device_wakeup:
+0x0389 001230 copy auxcnt ,pdata 
+0x038a 001231 bmark0 mark_24g ,p_device_bt_wakeup 
+:      001232 g24_delay_long_sleep:
+0x038b 001234 branch g24_direct_long_sleep ,blank 
+:      001235 g24_delay_long_sleep2:
+0x038c 001236 jam 0xbb ,mem_new_24g_delay_long_sleep_maxcnt 
+0x038d 001237 rtn 
+:      001238 g24_direct_long_sleep:
+0x038e 001239 jam 0x00 ,mem_new_24g_delay_long_sleep_maxcnt 
+0x038f 001240 fetch 1 ,mem_new_24g_key_wheel_event 
+0x0390 001241 rtn blank 
+0x0391 001242 jam 0 ,mem_new_24g_key_wheel_event 
+0x0392 001243 branch g24_delay_long_sleep2 
+:      001245 p_device_bt_wakeup:
+0x0393 001247 branch p_device_bt_wakeup_check ,blank 
+0x0394 001248 jam 2 ,mem_bt_wakeup_from_long_mult 
+0x0395 001249 rtn 
+:      001250 p_device_bt_wakeup_check:
+0x0396 001251 fetch 1 ,mem_bt_motion_event 
+0x0397 001252 rtn blank 
+0x0398 001253 jam 0 ,mem_bt_motion_event 
+0x0399 001254 jam 1 ,mem_bt_wakeup_from_long_mult 
+0x039a 001255 rtn 
+:      001257 p_deveice_init_wake:
+0x039b 001258 jam bt_evt_wakeup ,mem_ipc_tx_evt 
+0x039c 001259 branch p_device_init_common 
+:      001260 p_device_init_init_hibwake:
+0x039d 001261 copy auxcnt ,pdata 
+0x039e 001262 branch p_enter_hibernate_continue ,blank 
+0x039f 001263 call init_lmp_work 
+0x03a0 001264 call l2cap_init_work 
+0x03a1 001265 setarg 0 
+0x03a2 001266 store 8 ,mem_context 
+0x03a3 001267 store 2 ,mem_ui_state_map 
+0x03a4 001268 store 2 ,mem_ipc_bt_timer 
+0x03a5 001269 store 2 ,mem_ipc_c51_timer 
+0x03a6 001270 jam bt_evt_hibernate_wake ,mem_ipc_tx_evt 
+0x03a7 001271 branch p_device_init_common 
+:      001273 p_init_adc_from_otp:
+0x03a8 001274 call otp_enable_chgpump 
+0x03a9 001275 setarg 0x7e2 
+0x03aa 001276 arg mem_temp ,rega 
+0x03ab 001277 arg 12 ,temp 
+0x03ac 001278 call otpd_read_data 
+0x03ad 001279 call otp_disable_chgpump 
+0x03ae 001280 fetch 8 ,mem_temp 
+0x03af 001281 rtn blank 
+0x03b0 001282 fetch 1 ,mem_adc_config_flag 
+0x03b1 001283 bbit1 adc_config_gpio ,p_calc_adc_check_gpio 
+0x03b2 001284 rtn 
+:      001288 p_calc_adc_check_gpio:
+0x03b3 001289 fetcht 2 ,mem_temp 
+0x03b4 001290 fetch 2 ,mem_temp + 6 
+0x03b5 001291 copy temp ,regb 
+0x03b6 001292 copy pdata ,rega 
+0x03b7 001293 isub temp ,regc 
+0x03b8 001294 copy regb ,pdata 
+0x03b9 001295 isub regc ,pdata 
+0x03ba 001296 byteswap pdata ,pdata 
+0x03bb 001297 store 2 ,mem_adc_0v 
+0x03bc 001298 lshift2 regc ,pdata 
+0x03bd 001299 iadd rega ,pdata 
+0x03be 001300 byteswap pdata ,pdata 
+0x03bf 001301 store 2 ,mem_adc_3v 
+0x03c0 001302 rtn 
+:      001305 p_device_before_hibernate:
+0x03c1 001306 enable user 
+0x03c2 001307 hfetch 4 ,0x8138 
+0x03c3 001308 setflag user ,26 ,pdata 
+0x03c4 001309 hstore 4 ,core_lpm_reg 
+0x03c5 001310 call lpm_write_ctrl 
+0x03c6 001311 jam 1 ,mem_lpm_current_mult 
+:      001312 p_device_bt_lpm_before:
+0x03c7 001313 rtn 
+:      001318 p_c51_user_event:
+0x03c8 001319 copy regc ,pdata 
+0x03c9 001320 and_into bt_evt_timer_mask ,pdata 
+0x03ca 001321 rtneq bt_evt_timer_init 
+0x03cb 001322 copy regc ,pdata 
+0x03cc 001323 store 1 ,mem_ipc_tx_evt 
+0x03cd 001324 branch p_ipc_tx_evt 
+:      001327 g24_pair_init:
+0x03ce 001328 jam 0 ,mem_new_24g_pid 
+0x03cf 001329 jam g24_pair_ch ,mem_new_24g_ch 
+0x03d0 001330 fetch 4 ,mem_new_24g_paring_addr 
+:      001331 g24_update_addr_and_synccrc8:
+0x03d1 001332 store 4 ,mem_new_24g_addr 
+0x03d2 001333 branch g24_syncword_crc8 
+:      001336 g24_ch:
+0x03d3 001337 fetcht 1 ,mem_new_24g_current_ch_number 
+0x03d4 001338 call g24_ch_calc 
+0x03d5 001339 increase 1 ,temp 
+0x03d6 001340 and_into 3 ,temp 
+0x03d7 001341 storet 1 ,mem_new_24g_current_ch_number 
+0x03d8 001342 rtn 
+:      001344 g24_ch_calc:
+0x03d9 001345 fetch 1 ,mem_new_24g_addr 
+0x03da 001346 and_into 0x03 ,pdata 
+0x03db 001347 mul32 pdata ,4 ,rega 
+0x03dc 001348 setarg mem_new_24g_ch_map1 
+0x03dd 001349 iadd rega ,pdata 
+0x03de 001350 iadd temp ,contr 
+0x03df 001351 ifetch 1 ,contr 
+0x03e0 001352 store 1 ,mem_new_24g_ch 
+0x03e1 001353 rtn 
+:      001355 g24_set_device_addr:
+0x03e2 001356 fetch 4 ,mem_temp 
+0x03e3 001357 store 4 ,mem_new_24g_device_addr 
+0x03e4 001358 nrtn blank 
+0x03e5 001359 fetch 4 ,mem_lap 
+0x03e6 001360 store 4 ,mem_new_24g_device_addr 
+0x03e7 001361 rtn 
+:      001364 g24_transmit_rf_sta_init:
+0x03e8 001365 jam 1 ,mem_new_24g_rf_last_sta 
+0x03e9 001366 jam 0 ,mem_new_24g_sync_cnt 
+:      001367 g24_transmit_rf_ctrl_clear:
+0x03ea 001368 fetch 1 ,mem_new_24g_data_type 
+0x03eb 001369 and_into bits_data ,pdata 
+0x03ec 001370 store 1 ,mem_new_24g_data_type 
+0x03ed 001371 rtn 
+:      001373 g24_hop_ch_enable:
+0x03ee 001374 fetch 1 ,mem_new_24g_data_type 
+0x03ef 001375 set1 bit_hop ,pdata 
+0x03f0 001376 store 1 ,mem_new_24g_data_type 
+0x03f1 001378 store 1 ,mem_new_24g_txpayload 
+0x03f2 001379 rtn 
+:      001380 g24_hop_ch_disable:
+0x03f3 001381 fetch 1 ,mem_new_24g_data_type 
+0x03f4 001382 set0 bit_hop ,pdata 
+0x03f5 001383 store 1 ,mem_new_24g_data_type 
+0x03f6 001384 rtn 
+:      001386 g24_transmit_hop_pac_fail:
+0x03f7 001387 call power_ctrl_pac_succ_decrs 
+0x03f8 001388 fetch 1 ,mem_new_24g_rf_work_stage 
+0x03f9 001389 beq 1 ,g24_transmit_hop_pac_fail_wo_hop 
+0x03fa 001390 beq 2 ,g24_transmit_hop_pac_fail_hop_stage2 
+0x03fb 001391 rtn 
+:      001392 g24_transmit_hop_pac_fail_wo_hop:
+0x03fc 001393 jam 2 ,mem_new_24g_sync_cnt 
+:      001394 g24_transmit_hop_pac_fail_stage1:
+0x03fd 001395 jam 0 ,mem_new_24g_hop_pac_retry 
+0x03fe 001396 jam 0 ,mem_new_24g_rf_last_sta 
+0x03ff 001397 branch g24_transmit_rf_ctrl_clear 
+:      001399 g24_transmit_hop_pac_fail_hop_stage2:
+0x0400 001400 jam 0 ,mem_new_24g_rf_hop_ch 
+0x0401 001401 branch g24_transmit_hop_pac_fail_stage1 
+:      001403 g24_transmit_pac_fail_hop_stage3:
+0x0402 001404 fetch 2 ,mem_new_24g_txfail_cnt 
+0x0403 001405 increase 1 ,pdata 
+0x0404 001406 store 2 ,mem_new_24g_txfail_cnt 
+0x0405 001407 bbit1 10 ,g24_tx_attempt_fail 
+0x0406 001408 fetch 1 ,mem_new_24g_rf_hop_ch 
+0x0407 001409 beq 1 ,g24_rf_hop_fastly 
+0x0408 001410 jam 1 ,mem_new_24g_rf_hop_ch 
+:      001411 g24_rf_hop_attemp_again:
+0x0409 001412 fetch 1 ,mem_new_24g_rf_hop_ch 
+0x040a 001413 bne 1 ,g24_transmit_rf_ctrl_clear 
+:      001414 g24_rf_hop_fastly:
+0x040b 001415 fetch 1 ,mem_new_24g_hop_fastly_cnt 
+0x040c 001416 increase 1 ,pdata 
+0x040d 001417 store 1 ,mem_new_24g_hop_fastly_cnt 
+0x040e 001418 beq 4 ,g24_rf_hop_fastly_exit 
+0x040f 001419 call g24_ch 
+0x0410 001420 jam 2 ,mem_new_24g_max_retry 
+0x0411 001421 branch g24_transmit_packet 
+:      001423 g24_rf_hop_fastly_exit:
+0x0412 001424 call power_ctrl_pac_succ_decrs 
+0x0413 001425 jam 0 ,mem_new_24g_hop_fastly_cnt 
+0x0414 001426 branch g24_transmit_rf_ctrl_clear 
+:      001428 g24_transmit_hop_pac_succ_wo_hop:
+0x0415 001429 jam 2 ,mem_new_24g_sync_cnt 
+:      001430 g24_transmit_hop_pac_succ:
+0x0416 001431 jam 1 ,mem_new_24g_rf_last_sta 
+0x0417 001432 jam 0 ,mem_new_24g_rf_hop_ch 
+0x0418 001433 branch g24_transmit_rf_ctrl_clear 
+:      001435 g24_transmit_succ_rf_config:
+0x0419 001436 fetch 1 ,mem_new_24g_rf_work_stage 
+0x041a 001437 beq 3 ,g24_transmit_hop_pac_succ 
+0x041b 001438 fetch 1 ,mem_new_24g_data_type 
+0x041c 001439 isolate0 bit_hop ,pdata 
+0x041d 001440 branch g24_transmit_rf_sta_init ,true 
+0x041e 001441 fetch 1 ,mem_new_24g_rf_work_stage 
+0x041f 001442 beq 1 ,g24_transmit_hop_pac_succ_wo_hop 
+0x0420 001443 beq 2 ,g24_transmit_hop_pac_succ 
+0x0421 001444 rtn 
+:      001446 g24_rf_sta_check:
+0x0422 001447 fetch 1 ,mem_new_24g_pairing_sm 
+0x0423 001448 rtnne state_24g_pairing_success 
+0x0424 001449 call g24_rf_laststa_synccnt_check 
+0x0425 001450 ncall g24_rf_sync_cnt_check ,user2 
+0x0426 001451 rtn 
+:      001453 g24_rf_laststa_synccnt_check:
+0x0427 001454 disable user2 
+0x0428 001455 fetch 1 ,mem_new_24g_rf_last_sta 
+0x0429 001456 rtnne 1 
+0x042a 001457 fetch 1 ,mem_new_24g_sync_cnt 
+0x042b 001458 rtnne 0 
+0x042c 001459 jam 1 ,mem_new_24g_rf_work_stage 
+0x042d 001460 jam 4 ,mem_new_24g_max_retry 
+0x042e 001461 branch enable_usr2 
+:      001463 g24_rf_sync_cnt_check:
+0x042f 001464 fetch 1 ,mem_new_24g_sync_cnt 
+0x0430 001465 branch g24_rf_hop_attemp ,blank 
+0x0431 001466 increase -1 ,pdata 
+0x0432 001467 store 1 ,mem_new_24g_sync_cnt 
+0x0433 001468 jam 2 ,mem_new_24g_rf_work_stage 
+0x0434 001469 call g24_ch 
+0x0435 001470 jam 4 ,mem_new_24g_max_retry 
+0x0436 001471 rtn 
+:      001473 g24_rf_hop_attemp:
+0x0437 001474 jam 3 ,mem_new_24g_rf_work_stage 
+0x0438 001475 fetch 1 ,mem_new_24g_rf_hop_ch 
+0x0439 001476 nbranch g24_rf_hop_attemp_again ,blank 
+0x043a 001477 call g24_ch 
+0x043b 001478 jam 2 ,mem_new_24g_max_retry 
+0x043c 001479 rtn 
+:      001482 g24_transmit_process:
+0x043d 001483 rtnmark0 mark_24g 
+0x043e 001484 set1 mark_24g_conext ,mark 
+0x043f 001485 fetcht 4 ,mem_new_24g_tx_btclk 
+0x0440 001486 copy clkn_bt ,pdata 
+0x0441 001487 isub temp ,null 
+0x0442 001488 ncall g24_timer_timeout ,positive 
+0x0443 001489 copy pdata ,regb 
+0x0444 001490 fetch 4 ,mem_new_24g_tx_btclk 
+0x0445 001491 fetcht 1 ,mem_new_24g_interval 
+0x0446 001492 iadd temp ,temp 
+0x0447 001493 copy regb ,pdata 
+0x0448 001494 isub temp ,null 
+0x0449 001495 nbranch g24_transmit_exit ,positive 
+0x044a 001496 set0 28 ,pdata 
+0x044b 001497 store 4 ,mem_new_24g_tx_btclk 
+0x044c 001498 call g24_interval_calibrate 
+0x044d 001499 call g24_txdata_prep 
+0x044e 001500 branch g24_no_data_to_tx ,user 
+0x044f 001501 call g24_rf_sta_check 
+:      001502 g24_transmit_start:
+0x0450 001503 call g24_transmit_packet 
+0x0451 001504 fetch 1 ,mem_new_24g_pairing_sm 
+0x0452 001505 sub pdata ,state_24g_pairing_success ,null 
+0x0453 001506 call power_ctrl_start ,zero 
+:      001507 g24_transmit_exit:
+0x0454 001508 set0 mark_24g_conext ,mark 
+0x0455 001509 rtn 
+:      001511 g24_timer_timeout:
+0x0456 001512 rtn zero 
+0x0457 001513 set1 28 ,pdata 
+0x0458 001514 rtn 
+:      001516 g24_interval_calibrate:
+0x0459 001517 fetch 1 ,mem_new_24g_pac_index 
+0x045a 001518 increase 1 ,pdata 
+0x045b 001519 store 1 ,mem_new_24g_pac_index 
+0x045c 001520 beq 4 ,g24_interval_max 
+0x045d 001521 beq 5 ,g24_interval_min 
+0x045e 001522 rtn 
+:      001523 g24_interval_max:
+0x045f 001524 fetch 1 ,mem_new_24g_interval_max 
+0x0460 001525 store 1 ,mem_new_24g_interval 
+0x0461 001526 rtn 
+:      001527 g24_interval_min:
+0x0462 001528 jam 0 ,mem_new_24g_pac_index 
+0x0463 001529 fetch 1 ,mem_new_24g_interval_min 
+0x0464 001530 store 1 ,mem_new_24g_interval 
+0x0465 001531 rtn 
+:      001534 g24_txdata_prep:
+0x0466 001535 fetch 1 ,mem_new_24g_pairing_sm 
+0x0467 001536 bne state_24g_pairing_success ,g24_pairing_sm 
+0x0468 001538 call p_ipc_rx 
+0x0469 001539 branch g24_txdata_prep_ipc_nodata ,user 
+0x046a 001540 fetch 1 ,mem_ipc_rx_type 
+0x046b 001541 bne ipc_type_24g ,enable_usr 
+:      001542 g24_txdata_prep_packeage_data:
+0x046c 001543 fetch 1 ,mem_short_data_wheel 
+0x046d 001544 call g24_lpm_short_increase ,blank 
+:      001545 g24_txdata_skip_short_lpm:
+0x046e 001546 fetch 1 ,mem_short_data_wheel 
+0x046f 001547 ncall g24_enter_long_sleep ,blank 
+0x0470 001548 call g24_package_data 
+0x0471 001549 call g24_transmit_prep 
+:      001550 g24_txdata_enable_tx:
+0x0472 001551 jam ensure_on_24g ,mem_new_24g_ensure 
+0x0473 001552 rtn 
+:      001554 g24_enter_long_sleep:
+0x0474 001555 jam 0 ,mem_short_lpm_tx_cnt 
+0x0475 001556 jam 0 ,mem_short_lpm_enable 
+0x0476 001557 jam 10 ,mem_new_24g_enter_lpm_timer 
+0x0477 001558 rtn 
+:      001560 g24_txdata_prep_ipc_nodata:
+0x0478 001561 fetch 1 ,mem_short_lpm_enable 
+0x0479 001562 nbranch g24_short_lpm_txdata_prep ,blank 
+:      001563 g24_txdata_last_pac:
+0x047a 001564 fetch 1 ,mem_new_24g_ensure 
+0x047b 001565 beq ensure_on_24g ,disable_usr 
+0x047c 001566 rtn 
+:      001569 g24_short_lpm_txdata_prep:
+:      001570 g24_package_data:
+0x047d 001571 fetch 1 ,mem_new_24g_delay_long_sleep_maxcnt 
+0x047e 001572 store 1 ,mem_new_24g_delay_long_sleep_cnt 
+0x047f 001574 fetch 1 ,mem_new_uart_packet 
+0x0480 001575 copy pdata ,rega 
+0x0481 001576 arg mem_new_uart_packet + 1 ,regb 
+0x0482 001577 jam 0 ,mem_new_24g_abort_pac 
+:      001578 g24_package_data_pc_bind:
+0x0483 001579 call g24_transmit_rf_ctrl_clear 
+0x0484 001580 store 1 ,mem_new_24g_common_temp 
+0x0485 001582 add rega ,1 ,temp 
+0x0486 001583 arg mem_new_24g_common_temp + 1 ,contw 
+:      001584 g24_package_user_data:
+0x0487 001586 copy rega ,loopcnt 
+0x0488 001587 copy regb ,contr 
+0x0489 001588 call memcpy 
+0x048a 001589 arg mem_new_24g_common_temp ,rega 
+:      001590 g24_put_data_in_buff:
+0x048b 001591 rtnmark0 mark_24g_conext 
+0x048c 001592 storet 1 ,mem_new_24g_datalen 
+0x048d 001593 copy temp ,loopcnt 
+0x048e 001594 arg mem_new_24g_txbuf ,contw 
+0x048f 001595 copy rega ,contr 
+0x0490 001596 branch memcpy 
+:      001600 g24_syncword_crc8:
+0x0491 001601 arg 0 ,rega 
+0x0492 001602 arg 4 ,loopcnt 
+0x0493 001603 arg mem_new_24g_addr ,contr 
+:      001604 g24_syncword_crc8_loop:
+0x0494 001605 ifetch 1 ,contr 
+0x0495 001606 iadd rega ,rega 
+0x0496 001607 loop g24_syncword_crc8_loop 
+0x0497 001608 copy rega ,pdata 
+0x0498 001609 store 2 ,mem_new_24g_syncword 
+0x0499 001610 fetch 1 ,mem_new_24g_syncword 
+0x049a 001611 fetcht 1 ,mem_new_24g_syncword + 1 
+0x049b 001612 iadd temp ,pdata 
+0x049c 001613 store 1 ,mem_new_24g_syncword_crc8 
+0x049d 001614 rtn 
+:      001616 g24_transmit_prep:
+0x049e 001618 fetch 1 ,mem_new_24g_datalen 
+0x049f 001619 increase 2 ,pdata 
+0x04a0 001620 store 1 ,mem_new_24g_txlen 
+0x04a1 001622 fetch 1 ,mem_new_24g_data_type 
+0x04a2 001623 store 1 ,mem_new_24g_txpayload 
+0x04a3 001625 fetch 1 ,mem_new_24g_datalen 
+0x04a4 001626 lshift3 pdata ,pdata 
+0x04a5 001627 fetcht 1 ,mem_new_24g_pid 
+0x04a6 001628 and temp ,0x03 ,temp 
+0x04a7 001629 lshift temp ,temp 
+0x04a8 001630 ior temp ,pdata 
+0x04a9 001631 fetcht 1 ,mem_new_24g_no_ack 
+0x04aa 001632 iadd temp ,pdata 
+0x04ab 001633 istore 1 ,contw 
+0x04ac 001635 fetch 1 ,mem_new_24g_datalen 
+0x04ad 001636 iforce loopcnt 
+0x04ae 001637 arg mem_new_24g_txbuf ,contr 
+0x04af 001638 branch memcpy 
+:      001640 g24_send_abort_packet:
+0x04b0 001641 jam 1 ,mem_new_24g_abort_pac 
+0x04b1 001642 jam 0 ,mem_new_24g_rf_hop_ch 
+0x04b2 001643 call g24_transmit_rf_ctrl_clear 
+0x04b3 001644 store 1 ,mem_new_24g_common_temp 
+0x04b4 001645 setarg 0 
+0x04b5 001646 store 7 ,mem_new_24g_common_temp + 1 
+0x04b6 001647 fetch 4 ,mem_new_24g_device_addr 
+0x04b7 001648 store 4 ,mem_new_24g_common_temp + 8 
+0x04b8 001649 arg 12 ,temp 
+0x04b9 001650 arg mem_new_24g_common_temp ,rega 
+0x04ba 001651 call g24_put_data_in_buff 
+0x04bb 001652 fetch 1 ,mem_new_24g_data_type 
+0x04bc 001653 set1 bit_abort ,pdata 
+0x04bd 001654 store 1 ,mem_new_24g_data_type 
+0x04be 001655 call g24_transmit_prep 
+0x04bf 001656 call g24_txdata_enable_tx 
+0x04c0 001657 branch g24_transmit_start 
+:      001659 g24_no_data_to_tx:
+0x04c1 001660 fetch 1 ,mem_short_lpm_enable 
+0x04c2 001661 branch g24_no_data_to_tx_short_lpm_disable ,blank 
+0x04c3 001662 call g24_lpm_short_decrease 
+0x04c4 001663 branch g24_short_lpm_sleep 
+:      001665 g24_no_data_to_tx_short_lpm_disable:
+0x04c5 001666 fetch 1 ,mem_new_24g_abort_pac 
+0x04c6 001667 branch g24_send_abort_packet ,blank 
+0x04c7 001668 fetcht 1 ,mem_new_24g_delay_long_sleep_cnt 
+0x04c8 001669 increase 1 ,temp 
+0x04c9 001670 storet 1 ,mem_new_24g_delay_long_sleep_cnt 
+0x04ca 001671 fetch 1 ,mem_new_24g_delay_long_sleep_maxcnt 
+0x04cb 001672 isub temp ,null 
+0x04cc 001673 rtn positive 
+0x04cd 001674 jam 0 ,mem_new_24g_delay_long_sleep_cnt 
+:      001675 g24_lpm_long_sleep:
+0x04ce 001676 call p_check_ipc_for_lpm 
+0x04cf 001677 nrtn user 
+0x04d0 001678 fetch 1 ,mem_c51_lmp_lock 
+0x04d1 001679 nrtn blank 
+0x04d2 001680 fetch 1 ,mem_new_24g_enter_lpm_timer 
+0x04d3 001681 nrtn blank 
+0x04d4 001682 jam 0 ,mem_short_data_wheel 
+0x04d5 001683 call lpo_calibration 
+0x04d6 001684 fetch 3 ,mem_clks_per_lpo 
+0x04d7 001685 rtn blank 
+0x04d8 001686 fetch 8 ,mem_new_24g_enter_hibernate 
+0x04d9 001687 call clk2lpo 
+0x04da 001688 storet 4 ,mem_sleep_counter 
+0x04db 001689 branch lpm_sleep 
+:      001691 g24_lpm_short_increase:
+0x04dc 001692 fetch 1 ,mem_wakup_from_power_flag 
+0x04dd 001693 isolate0 2 ,pdata 
+0x04de 001694 branch g24_lpm_short_increase_poweron ,true 
+0x04df 001695 fetch 1 ,mem_short_lpm_tx_cnt 
+0x04e0 001696 rtneq 5 
+0x04e1 001697 increase 1 ,pdata 
+0x04e2 001698 store 1 ,mem_short_lpm_tx_cnt 
+0x04e3 001699 rtnne 5 
+:      001700 g24_lpm_short_enable:
+0x04e4 001701 jam 1 ,mem_short_lpm_enable 
+0x04e5 001702 rtn 
+:      001704 g24_lpm_short_increase_poweron:
+0x04e6 001705 fetch 1 ,mem_short_lpm_tx_cnt 
+0x04e7 001706 rtneq 20 
+0x04e8 001707 increase 1 ,pdata 
+0x04e9 001708 store 1 ,mem_short_lpm_tx_cnt 
+0x04ea 001709 rtnne 20 
+0x04eb 001710 fetch 1 ,mem_wakup_from_power_flag 
+0x04ec 001711 set1 2 ,pdata 
+0x04ed 001712 store 1 ,mem_wakup_from_power_flag 
+0x04ee 001713 branch g24_lpm_short_enable 
+:      001715 g24_lpm_short_decrease:
+0x04ef 001716 fetch 1 ,mem_short_lpm_tx_cnt 
+0x04f0 001717 rtn blank 
+0x04f1 001718 increase -1 ,pdata 
+0x04f2 001719 store 1 ,mem_short_lpm_tx_cnt 
+0x04f3 001720 nrtn blank 
+0x04f4 001721 jam 0 ,mem_short_lpm_enable 
+0x04f5 001722 rtn 
+:      001724 g24_short_lpm_transmit_process:
+0x04f6 001725 set1 mark_24g_conext ,mark 
+0x04f7 001726 call p_ipc_rx 
+0x04f8 001727 branch g24_short_lpm_transmit_process_ipc_nodata ,user 
+0x04f9 001728 fetch 1 ,mem_ipc_rx_type 
+0x04fa 001729 beq ipc_type_24g ,g24_short_lpm_txdata_data_ready 
+:      001730 g24_short_lpm_transmit_process_ipc_nodata:
+0x04fb 001731 fetch 1 ,mem_send_data_24g_short_lpm 
+0x04fc 001732 beq short_lpm_state_data ,g24_short_lpm_txdata_prep_buff_data 
+0x04fd 001733 beq short_lpm_state_nodata ,g24_no_data_to_tx 
+0x04fe 001734 beq short_lpm_state_button_wheel ,g24_short_lpm_transmit_process_button_wheel 
+0x04ff 001735 rtn 
+:      001737 g24_short_lpm_transmit_process_button_wheel:
+0x0500 001738 jam 0 ,mem_short_lpm_tx_cnt 
+0x0501 001739 jam 0 ,mem_short_lpm_enable 
+:      001740 g24_short_lpm_txdata_prep_buff_data:
+0x0502 001741 call g24_lpm_short_increase 
+0x0503 001742 jam 0 ,mem_send_data_24g_short_lpm 
+0x0504 001743 arg 7 ,loopcnt 
+0x0505 001744 copy loopcnt ,pdata 
+0x0506 001745 store 1 ,mem_new_uart_packet 
+0x0507 001746 arg mem_hid_buff ,contr 
+0x0508 001747 call memcpy 
+0x0509 001748 disable user 
+:      001749 g24_short_lpm_txdata_data_ready:
+0x050a 001750 call g24_txdata_prep_packeage_data 
+0x050b 001751 call g24_rf_sta_check 
+0x050c 001752 call g24_transmit_packet 
+0x050d 001753 call power_ctrl_start 
+:      001754 g24_short_lpm_sleep:
+0x050e 001755 call lpo_calibration 
+0x050f 001756 fetch 3 ,mem_clks_per_lpo 
+0x0510 001757 rtn blank 
+0x0511 001758 fetch 1 ,mem_lpm_mode 
+0x0512 001759 rtn blank 
+0x0513 001760 fetch 1 ,mem_short_data_wheel 
+0x0514 001761 beq 1 ,g24_short_lpm_sleep2 
+0x0515 001762 setarg 0 
+0x0516 001763 store 8 ,mem_gpio_wakeup_low 
+:      001764 g24_short_lpm_sleep2:
+0x0517 001765 call g24_short_lpm_select_param 
+0x0518 001766 arg param_rx_setup ,timeup 
+0x0519 001767 until clkn_rt ,meet 
+0x051a 001768 fetcht 3 ,mem_ckln_24g_short_lpm 
+0x051b 001769 copy clkn_bt ,pdata 
+0x051c 001770 isub temp ,pdata 
+0x051d 001771 and_into 0xff ,pdata 
+0x051e 001772 arg 3750 ,temp 
+0x051f 001773 imul32 temp ,temp 
+0x0520 001774 fetch 4 ,mem_short_lpm_interval_param 
+0x0521 001775 isub temp ,pdata 
+0x0522 001776 branch lpm_dispatch_sleep ,positive 
+0x0523 001777 fetch 1 ,mem_lpm_xtalcnt 
+0x0524 001778 increase 1 ,pdata 
+0x0525 001779 store 4 ,mem_sleep_counter 
+0x0526 001780 branch lpm_dispatch_sleep + 7 
+:      001781 g24_short_lpm_select_param:
+0x0527 001782 setarg g24_8125_interval_param 
+0x0528 001783 store 4 ,mem_short_lpm_interval_param 
+0x0529 001784 fetch 1 ,mem_short_lpm_interval_cnt 
+0x052a 001785 increase 1 ,pdata 
+0x052b 001786 bne 5 ,g24_short_lpm_select_param_cont 
+0x052c 001787 setarg 0 
+:      001788 g24_short_lpm_select_param_cont:
+0x052d 001789 store 1 ,mem_short_lpm_interval_cnt 
+0x052e 001790 rtnbit0 0 
+0x052f 001791 setarg g24_78125_interval_param 
+0x0530 001792 store 4 ,mem_short_lpm_interval_param 
+0x0531 001793 rtn 
+:      001796 g24_transmit_packet:
+0x0532 001797 jam 0 ,mem_new_24g_retry 
+:      001798 g24_transmit_loop:
+0x0533 001799 arg param_rx_setup ,timeup 
+0x0534 001800 until clkn_rt ,meet 
+0x0535 001801 call g24_transmit_receive_ack 
+0x0536 001802 fetch 1 ,mem_new_24g_no_ack 
+0x0537 001803 rtneq no_ack_24g 
+0x0538 001804 nbranch g24_retransmit ,sync 
+0x0539 001805 nbranch g24_retransmit ,user3 
+0x053a 001806 call g24_ackpayload_parse 
+0x053b 001807 call power_ctrl_pac_succ_incrs 
+:      001808 g24_transmit_next_packet:
+0x053c 001809 fetch 1 ,mem_new_24g_pid 
+0x053d 001810 increase 1 ,pdata 
+0x053e 001811 store 1 ,mem_new_24g_pid 
+0x053f 001812 fetch 1 ,mem_new_24g_pairing_sm 
+0x0540 001813 bne state_24g_pairing_success ,g24_paring_mode_start 
+0x0541 001814 call g24_transmit_succ_rf_config 
+:      001815 g24_transmit_abandon:
+0x0542 001816 setarg 0 
+0x0543 001817 store 2 ,mem_new_24g_txfail_cnt 
+0x0544 001818 store 1 ,mem_new_24g_get_ack_fail 
+0x0545 001819 store 1 ,mem_new_24g_hop_pac_retry 
+0x0546 001820 jam ensure_off_24g ,mem_new_24g_ensure 
+0x0547 001821 rtn 
+:      001822 g24_paring_mode_start:
+0x0548 001823 call power_ctrl_pac_succ_cnt_init 
+0x0549 001824 branch g24_paring_mode 
+:      001826 g24_transmit_receive_ack:
+0x054a 001827 disable user3 
+0x054b 001828 call g24_transmit 
+0x054c 001829 fetch 1 ,mem_new_24g_no_ack 
+0x054d 001830 beq no_ack_24g ,g24_transmit_no_ack 
+0x054e 001831 force 0 ,radio_ctrl 
+0x054f 001832 fetch 4 ,mem_new_24g_addr 
+0x0550 001833 iforce access 
+0x0551 001834 fetcht 1 ,mem_last_freq 
+0x0552 001835 call set_freq_rx 
+0x0553 001836 call rf_rx_enable 
+0x0554 001837 call g24_receive_rxon 
+0x0555 001838 call g24_end_of_packet ,user3 
+0x0556 001839 rtn 
+:      001840 g24_transmit_no_ack:
+0x0557 001841 call g24_end_of_packet 
+0x0558 001842 branch g24_transmit_next_packet 
+:      001844 g24_retransmit:
+0x0559 001845 fetch 1 ,mem_new_24g_get_ack_fail 
+0x055a 001846 increase 1 ,pdata 
+0x055b 001847 store 1 ,mem_new_24g_get_ack_fail 
+0x055c 001848 fetch 1 ,mem_new_24g_pairing_sm 
+0x055d 001849 bne state_24g_pairing_success ,g24_tx_paring_retry 
+0x055e 001850 fetcht 1 ,mem_new_24g_retry 
+0x055f 001851 increase 1 ,temp 
+0x0560 001852 storet 1 ,mem_new_24g_retry 
+0x0561 001853 fetch 1 ,mem_new_24g_max_retry 
+0x0562 001854 isub temp ,pdata 
+0x0563 001855 nbranch g24_transmit_loop ,blank 
+0x0564 001856 fetch 1 ,mem_new_24g_rf_work_stage 
+0x0565 001857 beq 3 ,g24_transmit_pac_fail_hop_stage3 
+0x0566 001858 fetch 1 ,mem_new_24g_hop_pac_retry 
+0x0567 001859 increase 1 ,pdata 
+0x0568 001860 store 1 ,mem_new_24g_hop_pac_retry 
+0x0569 001861 beq 2 ,g24_transmit_hop_pac_fail 
+0x056a 001862 call g24_hop_ch_enable 
+0x056b 001863 jam 1 ,mem_new_24g_max_retry 
+0x056c 001864 branch g24_transmit_packet 
+:      001866 g24_tx_paring_retry:
+0x056d 001867 fetch 1 ,mem_new_24g_get_ack_fail 
+0x056e 001868 rtnne 0xff 
+0x056f 001869 jam 0 ,mem_new_24g_get_ack_fail 
+0x0570 001870 branch g24_stop_24g_mode 
+:      001872 g24_tx_attempt_fail:
+0x0571 001873 setarg 0 
+0x0572 001874 store 2 ,mem_new_24g_txfail_cnt 
+0x0573 001875 jam 0 ,mem_lpm_mode 
+0x0574 001876 jam 0 ,mem_short_lpm_tx_cnt 
+0x0575 001877 jam 0 ,mem_short_lpm_enable 
+:      001878 g24_stop_24g_mode:
+0x0576 001879 jam bt_evt_24g_attempt_fail ,mem_ipc_tx_evt 
+0x0577 001880 branch p_ipc_tx_evt 
+:      001882 g24_ackpayload_parse:
+0x0578 001883 call g24_read_len_pid_crc 
+0x0579 001884 fetch 1 ,mem_new_24g_rxdata_length 
+0x057a 001885 rtn blank 
+0x057b 001886 iforce loopcnt 
+0x057c 001887 arg mem_new_24g_rxbuf + 2 ,contr 
+0x057d 001888 arg mem_new_24g_rxpayload ,contw 
+0x057e 001889 branch memcpy 
+:      001891 g24_read_len_pid_crc:
+0x057f 001893 fetch 1 ,mem_new_24g_rxbuf + 1 
+0x0580 001894 rshift3 pdata ,pdata 
+0x0581 001895 store 1 ,mem_new_24g_rxdata_length 
+0x0582 001897 increase 1 ,pdata 
+0x0583 001898 arg mem_new_24g_rxbuf + 1 ,contr 
+0x0584 001899 iadd contr ,contr 
+0x0585 001900 ifetch 3 ,contr 
+0x0586 001901 store 3 ,mem_new_24g_sta_crc 
+0x0587 001903 fetch 1 ,mem_new_24g_rxbuf + 1 
+0x0588 001904 rshift pdata ,pdata 
+0x0589 001905 and pdata ,0x03 ,pdata 
+0x058a 001906 store 1 ,mem_new_24g_sta_pid 
+0x058b 001907 rtn 
+:      001910 g24_prep:
+0x058c 001911 disable enable_crc 
+0x058d 001912 disable enable_white 
+0x058e 001913 setarg 0x555555 
+0x058f 001914 iforce crc24_init 
+0x0590 001915 fetch 1 ,mem_new_24g_ch 
+0x0591 001916 reverse pdata ,temp 
+0x0592 001917 set1 1 ,temp 
+0x0593 001918 rshift temp ,white_init 
+0x0594 001919 rtn 
+:      001921 g24_set_freq_tx:
+0x0595 001922 call set_sync_on 
+0x0596 001923 fetcht 1 ,mem_new_24g_ch 
+0x0597 001924 branch set_freq_tx 
+:      001926 g24_transmit:
+0x0598 001927 call le_enable 
+0x0599 001928 fetch 4 ,mem_new_24g_addr 
+0x059a 001929 iforce access 
+0x059b 001930 call g24_prep 
+0x059c 001931 call g24_set_freq_tx 
+0x059d 001932 set1 txgfsk ,radio_ctrl 
+0x059e 001933 enable encode_fec0 
+0x059f 001934 enable is_tx 
+0x05a0 001935 disable is_rx 
+0x05a1 001936 rshift16 access ,pdata 
+0x05a2 001937 rshift8 pdata ,pdata 
+0x05a3 001938 rshift4 pdata ,pdata 
+0x05a4 001939 inject mod ,40 
+0x05a5 001940 disable encode_fec0 
+0x05a6 001941 enable encode_fec1 
+0x05a7 001942 enable enable_white 
+0x05a8 001943 enable enable_crc 
+0x05a9 001945 fetch 1 ,mem_new_24g_syncword_crc8 
+0x05aa 001946 inject mod ,8 
+0x05ab 001948 fetch 1 ,mem_new_24g_txlen 
+0x05ac 001949 iforce loopcnt 
+0x05ad 001950 arg mem_new_24g_txpayload ,contr 
+:      001951 g24tr_loop:
+0x05ae 001952 ifetch 1 ,contr 
+0x05af 001953 inject mod ,8 
+0x05b0 001954 loop g24tr_loop 
+0x05b1 001955 enable enable_parity 
+0x05b2 001956 inject mod ,24 
+0x05b3 001957 disable enable_parity 
+0x05b4 001958 until null ,tx_clear 
+0x05b5 001959 nop 100 
+0x05b6 001960 disable encode_fec0 
+0x05b7 001961 disable encode_fec1 
+0x05b8 001962 rtn 
+:      001964 g24_receive_packet:
+0x05b9 001965 call le_enable 
+0x05ba 001966 fetch 4 ,mem_new_24g_addr 
+0x05bb 001967 iforce access 
+0x05bc 001968 call set_sync_on 
+0x05bd 001969 fetcht 1 ,mem_new_24g_ch 
+0x05be 001970 call set_freq_rx 
+0x05bf 001971 setarg param_pll_setup 
+0x05c0 001972 call sleep 
+0x05c1 001973 call rf_rx_enable 
+:      001974 g24_receive_rxon:
+0x05c2 001975 call g24_prep 
+0x05c3 001976 disable user3 
+0x05c4 001977 enable decode_fec0 
+0x05c5 001978 enable is_rx 
+0x05c6 001979 disable is_tx 
+0x05c7 001980 enable swfine 
+0x05c8 001981 fetch 2 ,mem_new_24g_rx_window 
+0x05c9 001982 iforce stop_watch 
+0x05ca 001983 correlate null ,timeout 
+0x05cb 001984 nbranch g24_sync_timeout ,sync 
+0x05cc 001985 disable decode_fec0 
+0x05cd 001986 enable decode_fec1 
+0x05ce 001987 enable enable_white 
+0x05cf 001988 enable enable_crc 
+0x05d0 001990 parse demod ,bucket ,8 
+0x05d1 001991 rshift3 pwindow ,pdata 
+0x05d2 001992 store 1 ,mem_new_24g_get_syncword_crc8 
+0x05d3 001993 call g24_syncword_crc8 
+0x05d4 001994 fetcht 1 ,mem_new_24g_get_syncword_crc8 
+0x05d5 001995 isub temp ,null 
+0x05d6 001996 nbranch g24_end_of_packet ,zero 
+0x05d7 001998 parse demod ,bucket ,8 
+0x05d8 001999 rshift3 pwindow ,pdata 
+0x05d9 002000 store 1 ,mem_new_24g_rxbuf 
+0x05da 002001 fetch 1 ,mem_new_24g_mode 
+0x05db 002002 sub pdata ,rx_24g ,null 
+0x05dc 002003 branch g24_receive_skip ,zero 
+0x05dd 002004 fetch 1 ,mem_new_24g_rxbuf 
+0x05de 002005 fetcht 1 ,mem_new_24g_data_type 
+0x05df 002006 icompare bits_data ,temp 
+0x05e0 002007 nbranch g24_end_of_packet ,true 
+:      002008 g24_receive_skip:
+0x05e1 002009 parse demod ,bucket ,8 
+0x05e2 002010 rshift3 pwindow ,pdata 
+0x05e3 002011 istore 1 ,contw 
+0x05e4 002012 rshift3 pdata ,pdata 
+0x05e5 002013 and pdata ,0x1f ,loopcnt 
+0x05e6 002014 branch g24rx_nopayload ,zero 
+:      002015 g24rx_loop:
+0x05e7 002016 parse demod ,bucket ,8 
+0x05e8 002017 rshift3 pwindow ,pdata 
+0x05e9 002018 istore 1 ,contw 
+0x05ea 002019 loop g24rx_loop 
+:      002020 g24rx_nopayload:
+0x05eb 002022 copy contw ,rega 
+0x05ec 002023 parse demod ,bucket ,8 
+0x05ed 002024 rshift3 pwindow ,pdata 
+0x05ee 002025 store 1 ,mem_rssi_hex_received 
+0x05ef 002026 copy rega ,contw 
+0x05f0 002028 parse demod ,bucket ,24 
+0x05f1 002029 enable swfine 
+0x05f2 002030 arg param_sifs ,stop_watch 
+0x05f3 002031 rshift32 pdata ,pdata 
+0x05f4 002032 rshift16 pdata ,pdata 
+0x05f5 002033 istore 3 ,contw 
+0x05f6 002034 disable decode_fec1 
+0x05f7 002035 branch g24_end_of_packet ,crc_failed 
+0x05f8 002036 enable user3 
+0x05f9 002037 fetch 1 ,mem_last_freq 
+0x05fa 002038 add pdata ,0 ,rega 
+0x05fb 002039 call rf_write_freq 
+0x05fc 002040 disable decode_fec0 
+0x05fd 002041 call set_sync_on 
+0x05fe 002042 fetch 1 ,mem_rssi_hex_received 
+0x05ff 002043 copy pdata ,rega 
+0x0600 002044 branch rssi_signal 
+:      002046 g24_end_of_packet:
+0x0601 002047 disable encode_fec1 
+0x0602 002048 disable decode_fec1 
+0x0603 002049 branch end_of_packet 
+:      002051 g24_sync_timeout:
+0x0604 002052 branch g24_end_of_packet 
+:      002054 power_ctrl_pac_succ_cnt_init:
+0x0605 002055 jam 1 ,mem_power_ctrl_level 
+0x0606 002056 jam 0 ,mem_power_ctrl_pac_succ_cnt 
+0x0607 002057 rtn 
+:      002058 power_ctrl_pac_succ_incrs:
+0x0608 002059 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+0x0609 002060 increase 1 ,pdata 
+0x060a 002061 store 1 ,mem_power_ctrl_pac_succ_cnt 
+0x060b 002062 rtn 
+:      002063 power_ctrl_pac_succ_decrs:
+0x060c 002064 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+0x060d 002065 sub pdata ,1 ,null 
+0x060e 002066 ncall power_ctrl_pac_succ_cnt_reinit ,positive 
+0x060f 002067 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+0x0610 002068 rtneq 0 
+0x0611 002069 increase -1 ,pdata 
+0x0612 002070 store 1 ,mem_power_ctrl_pac_succ_cnt 
+0x0613 002071 rtn 
+:      002072 power_ctrl_pac_succ_cnt_reinit:
+0x0614 002073 jam 2 ,mem_power_ctrl_pac_succ_cnt 
+0x0615 002074 rtn 
+:      002076 power_ctrl_start:
+0x0616 002077 arg mem_rssi_signal_buf ,rega 
+0x0617 002078 call rssi_average 
+0x0618 002079 storet 1 ,mem_rssi_avg_received 
+0x0619 002080 isolate1 mark_24g ,mark 
+0x061a 002081 call power_ctrl_24g_dis_max ,true 
+0x061b 002082 ncall power_ctrl_le_dis_max ,true 
+0x061c 002083 isub temp ,null 
+0x061d 002084 nbranch power_ctrl_txpower_incrs ,positive 
+0x061e 002086 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+0x061f 002087 sub pdata ,1 ,null 
+0x0620 002088 nbranch power_ctrl_txpower_decrs_check ,positive 
+0x0621 002089 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+0x0622 002090 beq 0 ,power_ctrl_txpower_incrs 
+0x0623 002091 rtn 
+:      002093 power_ctrl_24g_dis_max:
+0x0624 002094 setarg rssi_dis_max_24g 
+0x0625 002095 rtn 
+:      002096 power_ctrl_24g_dis_min:
+0x0626 002097 setarg rssi_dis_min_24g 
+0x0627 002098 rtn 
+:      002099 power_ctrl_le_dis_max:
+0x0628 002100 setarg rssi_dis_max_ble 
+0x0629 002101 rtn 
+:      002102 power_ctrl_le_dis_min:
+0x062a 002103 setarg rssi_dis_min_ble 
+0x062b 002104 rtn 
+:      002106 power_ctrl_txpower_decrs_check:
+0x062c 002107 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+0x062d 002108 rtnne 70 
+0x062e 002109 jam 0 ,mem_power_ctrl_pac_succ_cnt 
+:      002110 power_ctrl_txpower_decrs:
+0x062f 002111 fetcht 1 ,mem_rssi_avg_received 
+0x0630 002112 isolate1 mark_24g ,mark 
+0x0631 002113 call power_ctrl_24g_dis_min ,true 
+0x0632 002114 ncall power_ctrl_le_dis_min ,true 
+0x0633 002115 isub temp ,null 
+0x0634 002116 nrtn positive 
+0x0635 002117 fetch 1 ,mem_power_ctrl_level 
+0x0636 002118 beq 0 ,power_ctrl_decrs_level0 
+0x0637 002119 increase -1 ,pdata 
+0x0638 002120 store 1 ,mem_power_ctrl_level 
+0x0639 002121 beq 0 ,power_ctrl_decrs_level0 
+:      002122 power_ctrl_decrs_level1:
+:      002123 power_ctrl_incrs_level1:
+0x063a 002124 hjam 0xd0 ,0x8955 
+0x063b 002125 hjam 0xe0 ,0x8956 
+0x063c 002126 hjam 0x4c ,0x8957 
+0x063d 002127 hjam 0x6c ,0x8958 
+0x063e 002128 hjam 0x50 ,0x8959 
+0x063f 002129 jam 0x01 ,mem_tx_power 
+0x0640 002130 rtn 
+:      002132 power_ctrl_txpower_incrs:
+0x0641 002133 fetch 1 ,mem_power_ctrl_level 
+0x0642 002134 beq 2 ,power_ctrl_incrs_level2 
+0x0643 002135 increase 1 ,pdata 
+0x0644 002136 store 1 ,mem_power_ctrl_level 
+0x0645 002137 beq 1 ,power_ctrl_incrs_level1 
+:      002138 power_ctrl_incrs_level2:
+0x0646 002139 hjam 0xd0 ,0x8955 
+0x0647 002140 hjam 0xe0 ,0x8956 
+0x0648 002141 hjam 0x4c ,0x8957 
+0x0649 002142 hjam 0x3c ,0x8958 
+0x064a 002143 hjam 0x10 ,0x8959 
+0x064b 002144 jam 0x04 ,mem_tx_power 
+0x064c 002145 rtn 
+:      002147 power_ctrl_decrs_level0:
+0x064d 002148 hjam 0xd0 ,0x8955 
+0x064e 002149 hjam 0xc0 ,0x8956 
+0x064f 002150 hjam 0x4c ,0x8957 
+0x0650 002151 hjam 0x6c ,0x8958 
+0x0651 002152 hjam 0x50 ,0x8959 
+0x0652 002153 jam 0x10 ,mem_tx_power 
+0x0653 002154 rtn 
+:      002156 rssi_signal:
+0x0654 002157 fetcht 1 ,mem_rssi_signal_index 
+0x0655 002158 setarg mem_rssi_signal_buf 
+0x0656 002159 iadd temp ,contw 
+0x0657 002160 copy rega ,pdata 
+0x0658 002161 istore 1 ,contw 
+0x0659 002162 increase 1 ,temp 
+0x065a 002163 and_into rssi_buf_len ,temp 
+0x065b 002164 storet 1 ,mem_rssi_signal_index 
+0x065c 002165 rtn 
+:      002166 rssi_average:
+0x065d 002167 arg 0 ,temp 
+0x065e 002168 arg rssi_buf_len + 1 ,loopcnt 
+0x065f 002169 copy rega ,contr 
+:      002170 rssi_average_loop:
+0x0660 002171 ifetch 1 ,contr 
+0x0661 002172 iadd temp ,temp 
+0x0662 002173 loop rssi_average_loop 
+0x0663 002174 rshift3 temp ,pdata 
+0x0664 002175 copy pdata ,temp 
+0x0665 002176 rtnmark0 mark_24g 
+0x0666 002178 div pdata ,10 
+0x0667 002179 call wait_div_end 
+0x0668 002180 quotient pdata 
+0x0669 002181 lshift4 pdata ,pdata 
+0x066a 002182 remainder temp 
+0x066b 002183 ior temp ,temp 
+0x066c 002184 rtn 
+:      002187 g24_start_pairing_sm1:
+0x066d 002188 set1 mark_24g ,mark 
+0x066e 002189 call g24_pair_init 
+:      002190 g24_set_pairing_sm_1:
+0x066f 002191 jam state_24g_pairing_1 ,mem_new_24g_pairing_sm 
+0x0670 002192 rtn 
+:      002194 g24_pairing_sm:
+0x0671 002195 fetch 1 ,mem_new_24g_ensure 
+0x0672 002196 beq ensure_on_24g ,disable_usr 
+0x0673 002197 fetch 1 ,mem_new_24g_pairing_sm 
+0x0674 002198 beq state_24g_pairing_1 ,g24_pairing_sm_1 
+0x0675 002199 beq state_24g_pairing_2 ,g24_pairing_sm_2 
+0x0676 002200 beq state_24g_pairing_3 ,g24_pairing_sm_3 
+0x0677 002201 branch assert 
+:      002203 g24_pairing_sm_1:
+0x0678 002204 jam state_24g_pairing_1_waiting_ack ,mem_new_24g_pairing_sm 
+0x0679 002205 jam 0xaa ,mem_new_24g_common_temp 
+0x067a 002206 branch g24_pairing_sm_common 
+:      002207 g24_pairing_sm_2:
+0x067b 002208 jam state_24g_pairing_2_waiting_ack ,mem_new_24g_pairing_sm 
+0x067c 002209 jam 0x55 ,mem_new_24g_common_temp 
+0x067d 002210 branch g24_pairing_sm_common 
+:      002211 g24_pairing_sm_3:
+0x067e 002212 jam state_24g_pairing_3_waiting_ack ,mem_new_24g_pairing_sm 
+0x067f 002213 jam 0x22 ,mem_new_24g_common_temp 
+:      002214 g24_pairing_sm_common:
+0x0680 002215 fetch 1 ,mem_new_24g_data_type 
+0x0681 002216 and_into bits_data ,pdata 
+0x0682 002217 store 1 ,mem_new_24g_common_temp + 1 
+0x0683 002218 fetch 4 ,mem_new_24g_device_addr 
+0x0684 002219 store 4 ,mem_new_24g_common_temp + 2 
+:      002220 g24_put_pairing_data_in_buff:
+0x0685 002221 jam 0 ,mem_new_24g_common_temp + 6 
+0x0686 002222 arg mem_new_24g_common_temp ,rega 
+0x0687 002223 arg 7 ,temp 
+0x0688 002224 call g24_put_data_in_buff 
+0x0689 002225 call g24_transmit_prep 
+0x068a 002226 call g24_txdata_enable_tx 
+0x068b 002227 branch disable_usr 
+:      002229 g24_paring_mode:
+0x068c 002230 fetch 1 ,mem_new_24g_pairing_sm 
+0x068d 002231 rtneq state_24g_pairing_success 
+0x068e 002232 beq state_24g_pairing_1_waiting_ack ,g24_pairing_sm_1_waiting_ack 
+0x068f 002233 beq state_24g_pairing_2_waiting_ack ,g24_pairing_sm_2_waiting_ack 
+0x0690 002234 beq state_24g_pairing_3_waiting_ack ,g24_pairing_sm_3_waiting_ack 
+0x0691 002235 rtn 
+:      002237 g24_pairing_sm_1_waiting_ack:
+0x0692 002238 jam state_24g_pairing_2 ,mem_new_24g_pairing_sm 
+0x0693 002239 branch g24_transmit_abandon 
+:      002240 g24_pairing_sm_2_waiting_ack:
+0x0694 002241 jam state_24g_pairing_3 ,mem_new_24g_pairing_sm 
+0x0695 002242 branch g24_transmit_abandon 
+:      002243 g24_pairing_sm_3_waiting_ack:
+0x0696 002244 jam state_24g_pairing_success ,mem_new_24g_pairing_sm 
+0x0697 002245 jam bt_evt_24g_pairing_complete ,mem_ipc_tx_evt 
+0x0698 002246 call p_ipc_tx_evt 
+0x0699 002247 fetch 4 ,mem_new_24g_rxpayload + 2 
+0x069a 002248 call g24_update_addr_and_synccrc8 
+0x069b 002249 branch g24_transmit_abandon 
+:      002251 g24_start_24g_mode:
+0x069c 002252 set0 mark_24g ,mark 
+0x069d 002253 call g24_ch 
+0x069e 002254 fetch 4 ,mem_new_24g_addr 
+0x069f 002255 call g24_syncword_crc8 
+0x06a0 002256 fetch 1 ,mem_new_24g_pairing_sm 
+0x06a1 002257 rtnne state_24g_pairing_success 
+0x06a2 002258 call g24_tx_attemp_data_prep 
+:      002259 g24_tx_attemp_dongle:
+0x06a3 002260 setarg 0 
+0x06a4 002261 store 2 ,mem_new_24g_check_dongle_times 
+:      002262 g24_tx_attemp_dongle_loop:
+0x06a5 002263 nop 2000 
+0x06a6 002264 fetch 1 ,mem_new_24g_check_dongle_times 
+0x06a7 002265 beq 0xff ,g24_stop_24g_mode 
+0x06a8 002266 call g24_transmit_receive_ack 
+0x06a9 002267 nbranch g24_attemp_txdata_retry ,sync 
+0x06aa 002268 nbranch g24_attemp_txdata_retry ,user3 
+:      002269 g24_tx_attemp_dongle_succ:
+0x06ab 002270 jam 1 ,mem_lpm_mode 
+0x06ac 002271 set1 mark_24g ,mark 
+0x06ad 002272 setarg 0 
+0x06ae 002273 store 2 ,mem_new_24g_check_dongle_times 
+0x06af 002274 jam bt_evt_24g_attempt_success ,mem_fifo_temp 
+0x06b0 002275 call ui_ipc_send_event 
+0x06b1 002276 branch check_51cmd_stop_adv 
+:      002278 g24_tx_attemp_data_prep:
+0x06b2 002279 set1 mark_24g_conext ,mark 
+0x06b3 002280 jam 0xff ,mem_new_24g_common_temp 
+0x06b4 002281 fetch 1 ,mem_new_24g_data_type 
+0x06b5 002282 store 1 ,mem_new_24g_common_temp + 1 
+0x06b6 002283 fetch 4 ,mem_new_24g_device_addr 
+0x06b7 002284 store 4 ,mem_new_24g_common_temp + 2 
+0x06b8 002285 arg 6 ,temp 
+0x06b9 002286 arg mem_new_24g_common_temp ,rega 
+0x06ba 002287 call g24_put_data_in_buff 
+0x06bb 002288 branch g24_transmit_prep 
+:      002290 g24_attemp_txdata_retry:
+0x06bc 002291 fetch 2 ,mem_new_24g_check_dongle_times 
+0x06bd 002292 increase 1 ,pdata 
+0x06be 002293 store 2 ,mem_new_24g_check_dongle_times 
+0x06bf 002294 call g24_ch 
+0x06c0 002295 branch g24_tx_attemp_dongle_loop 
Index: Standard_mouse/btms/output/bt_program23.meta
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/bt_program23.meta	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/bt_program23.meta	(working copy)
@@ -0,0 +1,2310 @@
+define REVD
+define ROMCODE
+define PATCH
+INCLUDE "bt_format"
+org 0x0000		// start from patch ram address start
+
+
+//define HID
+define BLE
+define P24G_YC
+//define P24G_LOG
+//define P24G_AUTO
+define ADC_GPIO
+//define ADC_VINLPM
+//define ADC_HVIN
+//define TEST_MODE
+//define MS_TEST
+//define HCILOG
+//define KEYBORD_DATA
+//define TP_MAX
+//define OTA_ENABLE
+define BLE_FAST_CONN_ENABLE
+
+	bmark1 mark_ext_patch,patch_ext
+	beq patch00_0,p_soft_reset
+	beq patch00_3,p_main_loop
+	beq patch10_6,p_shutdown_radio
+	beq patch11_2,p_set_freq_tx
+	beq patch11_3,p_initialize_radio_cont
+	beq patch14_7,p_lpm_recover_clk
+	beq patch15_0,p_lpm_dispatch
+	beq patch15_1,p_lpm_dispatch_next2
+	beq patch15_4,p_lpm_dispatch_unconn
+	beq patch16_4,p_device_init
+	beq patch16_5,p_app_lpm_init
+	beq patch16_6,p_app_process_bb_event
+	beq patch16_7,p_app_evt_timer
+	branch loop
+
+patch_ext:
+	beq patch20_5,p_le_slave_match
+	beq patch22_6,p_le_receive_skip
+	beq patch23_3,p_le_send_adv_ind
+	beq patch24_3,p_le_update_param
+	beq patch25_7,p_le_prepare_tx
+	beq patch26_1,p_le_prepare_tx_ll
+	beq patch26_2,p_le_prepare_smp0
+	beq patch26_3,p_le_prepare_att
+	beq patch27_1,p_le_send_packet
+	beq patch27_4,p_le_parse0
+	beq patch27_5,p_le_parse_smp
+	beq patch27_6,p_le_parse_att
+	beq patch27_7,p_le_adv
+	beq patch28_2,p_le_receive_window_size
+	beq patch29_5,p_le_lpm_set_mult
+	beq patch32_5,p_gpio_set_before_lpm_common
+	beq patch3e_3,p_ui_timer_check_end
+	beq patch3e_7,p_check_51cmd_once
+	beq patch3f_0,p_check_51cmd_once_continue0
+	beq patch3f_1,p_check_enter_hibernate
+	branch loop
+
+p_soft_reset:
+	clear_stack
+	nbranch soft_reset+3,wake
+	fetch 1,mem_le_switch_send_data
+	nbranch p_soft_reset_start_51,blank
+	fetch 1,mem_short_lpm_enable
+	branch soft_reset+3,blank
+	jam 0,mem_ipc_is_ready
+	bmark0 mark_24g,soft_reset+3
+	nbranch soft_reset+3,wake
+p_soft_reset_start_51:
+	hjam START_C51_CORE,core_docd_ctrl	
+	branch soft_reset+3
+	
+p_main_loop:
+	call p_ipc_timer_check
+	call g24_transmit_process
+	call p_ipc_rx
+	fetch 1,mem_short_lpm_enable
+	nbranch p_24g_short_lpm_process_loop,blank
+	branch main_loop+2
+
+
+p_shutdown_radio:
+	branch shutdown_radio0,is_rx
+	hjam 0xd4, 0x955
+	nop 4
+	hjam 0xd2, 0x955
+	nop 4
+	hjam 0xd1, 0x955
+	nop 4
+	fetch 1,mem_tx_power
+	beq TX_POWER_PAIR,shutdown_radio_pair
+	branch shutdown_radio_select
+
+p_set_freq_tx:
+	storet 1,mem_last_freq
+	add temp,0,rega			// bt 2M Medium Frequency
+	call rf_write_freq
+	setarg param_pll_setup
+	call sleep
+p_txon:	
+	hjam 0x1,rfen_adc
+	hjam 0x3c,rfen_rx
+	hjam 0xe0,rfen_tx
+	hjam 0x12,0x96d
+	nop 10
+	hjam 0x01,rfen_mdm
+	hjam 0x3d,rfen_mdm
+	nop 10
+	hjam 0xb7,rfen_sn
+	nop 10
+	hjam 0x7f, rfen_mdm
+	fetch 1,mem_tx_power
+	beq TX_POWER_PAIR,p_set_tx_power_pair
+	bbit1 TX_POWER_3DB,p_rx_high_sens
+	bbit1 TX_POWER_5DB,p_rx_high_sens
+p_rx_low_sens:
+	hjam 0x5b,0x894c 
+	hjam 0x96,0x894d
+	hjam 0x2c,0x894e 
+	hjam 0x46,0x894f 
+	branch p_txon_select_power_level
+p_rx_high_sens:
+	hjam 0xfb,0x894c 
+	hjam 0xef,0x894d
+	hjam 0xec,0x894e 
+	hjam 0x5e,0x894f 
+p_txon_select_power_level::
+	fetch 1,mem_tx_power
+	branch txon_power_select
+
+p_set_tx_power_pair:	//50-100cm distance
+ 	hjam 0xc2,0x8956
+ 	hjam 0xd0,0x8955
+	rtn
+
+p_initialize_radio_cont:
+	call lpm_cal_xtal_startup
+	call switchto_dpllclk
+	hjam clksel_rc,core_clksel
+	hfetch 1,rf_clkpll_int
+	set1 7,pdata
+	hstore 1,rf_clkpll_int
+	set0 7,pdata
+	hstore 1,rf_clkpll_int
+	set1 7,pdata
+	hstore 1,rf_clkpll_int
+	hjam clksel_dpll,core_clksel
+	branch initialize_radio_cont+4
+
+p_lpm_recover_clk:
+	call lpm_recover_clk+2
+	fetch 1,mem_hibernate_flag
+	rtn blank
+	jam 0,mem_hibernate_flag
+	copy clkn_bt,pdata
+	store 4,mem_ipc_last_check_timer
+	rtn
+
+p_lpm_dispatch:
+	rtnmark1 mark_24g
+	call lpo_calibration
+	fetch 3,mem_clks_per_lpo
+	rtn blank
+	fetch 2,mem_context + coffset_tsniff
+	arg 0xffff,temp
+	isub temp,null
+	rtn zero									/* role switch */
+	fetch 1,mem_lpm_mode
+	rtn blank
+	call l2cap_malloc_is_fifo_empty
+	nrtn blank
+	call lpm_check_wake_lock
+	nrtn blank
+	call xtal_fast_wake
+	fetch 1,mem_ssp_enable
+	branch lpm_dispatch_next,blank
+	fetch 1,mem_sp_local_key_invalid	// simple pairing is not ready
+	rtn blank
+	branch lpm_dispatch_next
+
+p_lpm_dispatch_next2:
+	fetch 1,mem_le_switch_send_data
+	branch p_lpm_dispatch_long_mult,blank
+	fetch 1,mem_lpm_current_mult
+	nbranch p_lpm_dispatch_long_mult,blank // short lpm, no gpio to wakeup
+	fetch 1,mem_bt_read_ipc_count
+	fetcht 1,mem_51_read_sensor_count
+	isub temp,null
+	nrtn zero
+	fetch 1,mem_ble_data_wheel
+	nrtn blank
+	setarg 0
+	store 8,mem_gpio_wakeup_low
+	branch lpm_dispatch_next2
+p_lpm_dispatch_long_mult:
+	call p_check_ipc_for_lpm
+	nrtn user
+	fetch 1,mem_c51_lmp_lock
+	nrtn blank
+	jam 0,mem_bt_wakeup_from_long_mult	//bt enter long mult,then 8051 execute  EVENT_WAKEUP
+	branch lpm_dispatch_next2
+
+p_lpm_dispatch_unconn:
+	call p_check_ipc_for_lpm
+	nrtn user
+	fetch 1,mem_c51_lmp_lock
+	nrtn blank
+	branch lpm_dispatch_unconn+2
+
+p_check_ipc_for_lpm:
+	call p_check_ipc_2bt
+	nrtn user
+	call p_check_ipc_2c51
+	nrtn user
+	jam 1,mem_c51_lmp_lock
+	jam SYC_TASK_LPM,mem_c51_flag
+	call p_c51_wait
+	branch p_check_ipc_2bt
+
+
+//user: no data
+p_check_ipc_2c51:
+	fetch 2,mem_ipc_2C51_read_index
+	fetcht 2,mem_ipc_2C51_write_index
+	branch p_check_ipc_common
+p_check_ipc_2bt:
+	fetch 2,mem_ipc_2bt_read_index
+	fetcht 2,mem_ipc_2bt_write_index
+p_check_ipc_common:
+	isub temp,null
+	branch enable_usr,zero
+	branch disable_usr
+	
+p_c51_wait:
+	fetch 1,mem_c51_flag
+	nop 10
+	bne 0,p_c51_wait
+	rtn	
+
+
+p_app_lpm_init:
+	jam 39,mem_le_ch_mapped
+	jam 0,mem_tester_emulate
+	jam 0,mem_debug_config
+	jam 0, mem_lch_code
+	setarg 0
+	store 5,mem_sp_state_start
+	rtn
+
+p_app_process_bb_event:
+	arg mem_ipc_fifo_bt2c51,rega
+	call fifo_out
+	rtn blank
+	//reaching here mains c51 cannot get bb event.
+	copy pdata,regc
+	call p_app_event_normal_process
+	branch app_process_bb_event_priority
+p_app_event_normal_process:
+	rtneq BT_EVT_LINKKEY_GENERATE
+	beq BT_EVT_LE_CONNECTED,p_device_le_conn
+	beq BT_EVT_LE_DISCONNECTED,p_device_le_discon
+	beq BT_EVT_LE_ENC_INFO,p_device_le_enc_info
+	branch app_event_normal_process
+
+
+p_device_le_conn:
+	jam 0,mem_bt_read_ipc_count
+	jam 0,mem_lpm_mult
+	jam 0,mem_mult_time_arrive_flag
+	jam 20,mem_le_slave_update_mult_timer
+	call app_ble_stop_adv
+	call app_bt_stop_discovery
+	call app_lpm_mult_enable
+	call app_initflag_store
+	jam 1,mem_le_fast_conn_finished
+	branch app_le_event_bb_connected
+
+p_device_le_discon:
+	jam 0,mem_ble_send_flag
+	call queue_init
+	jam 0,mem_ltk_exists
+	jam 0,mem_lpm_mult
+	jam 0,mem_mult_time_arrive_flag
+	jam 0,mem_le_slave_update_mult_timer
+//	jam 0,mem_le_slave_update_param_timer
+	jam FLAG_LE_PAIRING_NULL,mem_le_pairing_state
+	fetcht 2,mem_le_att_report2
+	storet 2,mem_le_notify_handle
+	call le_clean_att_list_handle_enable
+	branch app_le_event_bb_disconn
+
+p_device_le_enc_info:
+	call p_app_updata_le_param
+	branch check_51cmd_le_start_write
+
+p_app_evt_timer:
+	storet 1,mem_app_evt_timer_count
+	fetch 1,mem_ipc_bt_100ms_timer
+	increase 1,pdata
+	store 1,mem_ipc_bt_100ms_timer
+p_app_evt_100ms_loop:
+	fetch 1,mem_app_evt_timer_count
+	rtn blank
+	increase -1,pdata
+	store 1,mem_app_evt_timer_count	
+//	call p_le_slave_update_param_timer
+	call p_le_slave_update_mult_timer
+	call p_check_mult_parameter
+	call p_le_reconn_enable_notify_timer
+	call p_24g_enter_lpm_timer
+	call p_ble_data_wheel_lpm_timer
+	branch p_app_evt_100ms_loop
+
+p_check_mult_parameter:
+	fetch 1,mem_mult_time_arrive_flag
+	rtn blank
+	fetch 1,mem_lpm_mult
+	compare 0x20,pdata,0xff
+	ncall p_set_mult_para,true
+	fetch 1,mem_lpm_mode
+	call p_set_multmode,blank
+	rtn
+p_set_multmode:
+	jam 1,mem_lpm_mode
+	rtn
+p_set_mult_para:
+	jam 0x20,mem_lpm_mult
+	rtn
+p_24g_enter_lpm_timer:
+	fetch 1,mem_new_24g_enter_lpm_timer
+	rtn blank
+	jam 0,mem_short_data_wheel
+	increase -1,pdata
+	store 1,mem_new_24g_enter_lpm_timer
+	nrtn blank
+	rtn
+
+p_ble_data_wheel_lpm_timer:
+	fetch 1,mem_ble_data_wheel_lpm_timer
+	rtn blank
+	increase -1,pdata
+	store 1,mem_ble_data_wheel_lpm_timer
+	nrtn blank
+	jam 0,mem_ble_data_wheel
+	rtn
+	
+//p_le_slave_update_param_timer:
+//	fetch 1,mem_le_slave_update_param_timer
+//	rtn blank
+//	increase -1,pdata
+//	store 1,mem_le_slave_update_param_timer
+//	nrtn blank
+p_app_updata_le_param:
+	call app_lpm_mult_enable
+	jam BT_CMD_LE_UPDATE_CONN,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+p_le_slave_update_mult_timer:
+	fetch 1,mem_le_slave_update_mult_timer
+	rtn blank
+	increase -1,pdata
+	store 1,mem_le_slave_update_mult_timer
+	nrtn blank
+	jam 0x20,mem_lpm_mult
+	jam 1,mem_lpm_mode
+	jam 1,mem_mult_time_arrive_flag
+	rtn
+
+p_le_reconn_enable_notify_timer:
+	fetch 1,mem_le_reconn_enable_notify_timer
+	rtn blank
+	increase -1,pdata
+	store 1,mem_le_reconn_enable_notify_timer
+	nrtn blank
+	branch app_ble_start_write	
+
+
+
+p_le_slave_match:
+	call le_got_first_packet
+	call le_acknowledge
+	call le_prepare_tx
+	call power_ctrl_start
+	branch le_slave_match+5
+
+p_le_receive_skip:
+	call save_rssi
+	copy pdata,rega
+	call rssi_signal
+	branch le_receive_skip+3
+
+p_le_send_adv_ind:
+	fetch 4,mem_le_rx_winsows
+	store 4,mem_le_transmit_window// init first packate rx window
+	branch le_send_adv_ind+2
+
+p_le_update_param:
+	jam 1,mem_lpm_mode	
+	fetch 2,mem_le_event_count
+	fetcht 2,mem_le_instant
+	isub temp,pdata
+	store 2,mem_pdatatemp
+	fetch 1,mem_le_state
+	set0 lestate_update_param,pdata
+	set0 lestate_got_first_packet,pdata
+	store 1,mem_le_state
+	fetch 4,mem_le_anchor
+	fetcht 2,mem_le_tsniff
+	storet 2,mem_temp
+	isub temp,rega
+	fetch 1,mem_le_new_param
+	store 1,mem_le_window_size
+	ifetcht 2,contr
+	ifetch 2,contr
+	lshift2 pdata,pdata
+	store 2,mem_le_tsniff
+	lshift2 temp,temp
+	iadd temp,pdata
+	ifetcht 4,contr
+	storet 4,mem_le_slave_latency	// and superTO
+	iadd rega,pdata
+	copy pdata,regab
+	fetch 2,mem_le_tsniff
+	fetcht 2,mem_temp	//last sniff
+	isub temp,pdata		//last sniff - new sniff
+	fetcht 2,mem_pdatatemp
+	imul32 temp,pdata
+	iadd regab,pdata
+	store 4,mem_le_anchor
+	call le_receive_window_size
+	fetch 2,mem_le_superto
+	store 2,mem_le_init_superto
+	rtn
+
+p_le_prepare_tx: 
+	fetch 1,mem_le_arq
+	bbit1 wak,p_le_prepare_tx_retansmited
+	call power_ctrl_pac_succ_incrs
+	jam 0,mem_le_prepare_tx_retransmited_number
+	fetch 1,mem_empty_count_user
+	nbranch p_le_send_empyt,blank
+	fetch 1,mem_mouse_le_pairing_flag
+	beq 1,p_le_smp_empty
+	fetch 1,mem_le_rxbuf+1  
+	branch le_prepare_tx_1,blank
+	branch le_send_empty      // send empty data when got non empty packet
+p_le_send_empyt:
+	fetch 1,mem_empty_count_user
+	increase -1,pdata
+	store 1,mem_empty_count_user
+	branch le_send_empty
+p_le_smp_empty:
+	jam 3,mem_empty_count_user
+	branch le_prepare_tx_1
+
+p_le_prepare_tx_retansmited:
+	fetch 1,mem_le_prepare_tx_retransmited_number
+	increase 1,pdata
+	store 1,mem_le_prepare_tx_retransmited_number
+	branch power_ctrl_pac_succ_decrs
+
+p_le_prepare_tx_ll:
+	fetch 1,mem_le_txpayload
+	beq LL_START_ENC_RSP,p_le_send_start_enc_rsp
+	beq LL_TERMINATE_IND,p_le_send_terminate_ind
+	branch le_prepare_tx_ll
+
+p_le_send_start_enc_rsp:
+	fetch 1,mem_le_reconn_flag
+	beq 1,p_le_send_reconn_start_enc_rsp
+	call app_ble_start_write
+//	force 1,temp
+//	branch le_send_packet,master
+//	fetch 1,mem_le_pairing_state
+//	bne FLAG_LE_PAIRING_AFTER_AUTH,le_send_start_enc_rsp_end
+//	branch le_send_start_enc_rsp+4
+	branch le_send_start_enc_rsp
+p_le_send_reconn_start_enc_rsp:
+	call p_app_updata_le_param
+	jam 3,mem_le_reconn_enable_notify_timer
+	branch le_send_start_enc_rsp_common
+
+p_le_send_terminate_ind:
+	setarg 0x13
+	istore 1,contw
+	call le_send_terminate_ind
+	setarg 10 // 100ms
+	store 2,mem_le_superto
+	store 2,mem_le_init_superto
+	rtn
+
+p_le_prepare_smp0:
+	fetch 1,mem_le_l2cap
+	beq SMP_PAIRING_RESPONSE,p_le_send_smp_pairing_response 
+	beq SMP_ENCRYPTION_INFORMATION,p_le_send_smp_encryption_information      
+	beq SMP_MASTER_IDENTIFICATION,p_le_send_smp_master_identification_only
+	branch le_prepare_smp0
+p_le_send_smp_master_identification_only:
+	jam 0,mem_mouse_le_pairing_flag
+	branch le_send_smp_master_identification_only
+	
+p_le_send_smp_pairing_response:
+	setarg param_smp_paring_response
+	store 3,mem_le_pres
+	setarg 0x01
+	istore 1,contw
+	setarg param_smp_key_dist0
+	istore 3,contw
+	branch le_send_smp_pairing_response_common
+
+p_le_send_smp_encryption_information:
+	jam BT_EVT_LE_ENC_INFO,mem_fifo_temp
+	call ui_ipc_send_event
+	jam XT_SMP_MASTER_IDENTIFICATION,mem_fifo_temp
+	call le_xtype_fifo_in
+	branch le_send_smp_encryption_information_shutter
+
+p_le_prepare_att:
+	fetch 1,mem_le_l2cap
+	beq ATTOP_HANDLE_VALUE_NOTIFICATION,p_le_send_att_handle_value_notification
+	beq ATTOP_HANDLE_VALUE_INDICATION,p_le_send_att_handle_value_indication
+	branch le_prepare_att+5
+	
+p_le_send_att_handle_value_indication:
+p_le_send_att_handle_value_notification:
+	fetcht 2,mem_le_att_report2
+	storet 2,mem_le_l2cap+1
+	fetch 1,mem_queue_read_ptr
+	add pdata,1,temp
+	and temp,0x03,temp
+	storet 1,mem_queue_read_ptr
+	mul32 pdata,7,pdata
+	arg mem_queue_buffer0,contr
+	iadd contr,contr
+	ifetch 7,contr
+	store 7,mem_le_l2cap+3
+	arg 14,temp
+	branch le_send_packet
+
+p_le_send_packet:
+	storet 1,mem_le_txlen
+	compare 2,type,3
+	nbranch p_le_send_non_l2cap,true
+	add temp,-4,pdata
+	store 2,mem_le_txpayload
+p_le_send_non_l2cap:
+	fetcht 1,mem_le_arq
+	call p_le_send_check_md
+	branch le_send_non_l2cap1
+p_le_send_check_md:
+	fetch 1,mem_mouse_le_pairing_flag
+	beq 1,enable_blank
+	branch le_xtype_fifo_is_empty
+enable_blank:
+	setarg 0
+	rtn
+	
+p_le_parse0:
+	copy regc,pdata
+	beq LL_CONNECTION_UPDATE_REQ,p_le_parse_connection_update_req
+	beq LL_TERMINATE_IND,p_le_parse_terminate_ind
+	beq LL_ENC_REQ,p_le_parse_enc_req
+	beq LL_PAUSE_ENC_REQ,p_le_parse_pause_enc_rsq
+	branch le_parse0+6
+
+p_le_parse_connection_update_req:
+	jam 0,mem_lpm_mode
+	jam 60,mem_le_slave_update_mult_timer
+	branch le_parse_connection_update_req	
+
+p_le_parse_terminate_ind:
+	call le_parse_terminate_ind
+le_clear_xtype_fifo:
+	setarg 0
+	store 8,mem_le_xtype_fifo
+	rtn
+
+p_le_parse_enc_req:
+	call le_parse_enc_req
+	fetch 1,mem_le_pairing_state
+	rtneq FLAG_LE_PAIRING_AFTER_AUTH
+	branch load_device_list_mode_4_shutter
+
+p_le_parse_pause_enc_rsq:
+	jam XT_LL_PAUSE_ENC_RSP,mem_fifo_temp
+	branch le_xtype_fifo_in
+
+p_le_parse_smp:
+	ifetch 1,contr
+	beq SMP_PAIRING_REQUEST,p_le_parse_smp_pairing_request
+	branch le_parse_smp+3
+p_le_parse_smp_pairing_request:
+	jam 1,mem_mouse_le_pairing_flag
+	jam 3,mem_empty_count_user
+	branch le_parse_smp_pairing_request
+
+p_le_parse_att:
+	ifetch 3,contr
+	store 3,mem_le_att_opcode
+	beq ATTOP_WRITE_REQUEST,p_le_parse_att_write_request
+	branch le_parse_att+4
+
+p_le_parse_att_write_request:
+	jam 1,mem_lpm_mode
+	call p_le_parse_att_write_common
+	fetch 1,mem_le_att_handle
+	sub pdata,BLE_FAST_CONN_CHARACTER_HANDLE,null
+	branch p_le_mouse_fast_conn_character_set,zero
+	jam 0,mem_le_mouse_fast_conn_flag
+p_le_parse_att_write_request_next:	
+	call le_check_long_packet_patch
+	nrtn zero
+p_le_parse_att_write_request_end:
+	fetch 1,mem_le_mouse_fast_conn_flag
+	ncall p_le_set_enc_info_flag,blank
+	jam ATTOP_WRITE_RESPONSE,mem_fifo_temp
+	branch le_xtype_fifo_in
+p_le_parse_att_write_common:
+	fetch 1,mem_le_rxbuf+1
+	increase -7,pdata
+	icopy loopcnt
+	copy loopcnt,regb
+	branch le_parse_att_write_common+6
+
+p_le_mouse_fast_conn_character_set:
+	jam 1,mem_le_mouse_fast_conn_flag
+	branch p_le_parse_att_write_request_next
+
+p_le_set_enc_info_flag:
+	jam BT_EVT_LE_ENC_INFO,mem_fifo_temp
+	branch ui_ipc_send_event
+
+
+p_le_adv:
+	fetch 1,mem_le_adv_enable
+	rtn blank
+	arg le_adv_interval_timer,queue
+	call timer_check
+	nrtn blank
+	disable master
+	enable swfine
+	call le_init_adv
+	call le_next_adv_channel
+	call le_send_adv_ind
+	nbranch p_le_adv_not_match,match
+	fetch 1,mem_le_req_rcv
+	increase 1,pdata
+	store 1,mem_le_req_rcv
+	fetch 1,mem_le_rxbuf
+	and pdata,0x0f,pdata
+	beq SCAN_REQ,p_le_send_scan_response
+	beq CONNECT_REQ,le_parse_connect_req
+p_le_adv_not_match:	
+	fetch 1,mem_le_ch_mapped
+	bne 39,le_adv_loop
+	random pdata
+	arg 0x1ff,temp
+	iand temp,pdata
+	add pdata,250,pdata	
+p_adv_delay:	
+	increase -1,pdata
+	nop 38
+	nbranch p_adv_delay,blank
+	branch le_adv_not_match+3
+
+p_le_send_scan_response:
+	call le_send_scan_response
+	branch p_le_adv_not_match
+
+p_le_receive_window_size:
+	fetch 4,mem_le_transmit_window
+	arg 60000,temp
+	iadd temp,pdata
+	store 4,mem_le_transmit_window
+	branch le_receive_window_size+16	
+
+
+p_le_lpm_set_mult:
+	disable wake
+	branch p_le_lpm_set_mult_attempt,attempt
+	nbranch p_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_rxbuf
+	compare 1,pdata,3
+	nbranch lpm_mult_short,true		// rx not empty, short interval
+	fetch 1,mem_le_txheader
+	compare 1,pdata,3
+	nbranch lpm_mult_short,true		// tx not empty, short interval
+	call le_xtype_fifo_is_empty
+	nbranch lpm_mult_short,blank
+	fetch 1,mem_le_prepare_tx_retransmited_number
+	sub pdata,1,null
+	nbranch lpm_mult_short,positive
+	branch le_lpm_set_mult_attempt+11
+	
+p_le_lpm_lost:
+	fetcht 2,mem_rx_window_sniff  
+	fetch 2,mem_le_rx_window_inc
+	iadd temp,temp 
+	rshift temp,temp
+	fetch 2,mem_le_receive_window 
+	iadd temp,pdata  
+	store 2,mem_le_receive_window  
+	branch lpm_lost
+
+p_mouse_init_environment:
+	call p_mouse_iicd_read_eep_data			//get the address of reconn info
+	arg 0x06,loopcnt
+	arg mem_mouse_le_reconn_addr_data,contr
+	setarg 0xffff								//check reconn info
+	call p_mouse_reconn_addr_empty_check		
+	nrtn zero
+	fetch 1,mem_le_start_fast_conn_count
+	rtn blank
+	increase -1,pdata
+	store 1,mem_le_start_fast_conn_count
+	call app_initflag_check
+	rtn zero
+	jam 1,mem_le_start_adv
+	rtn
+
+p_mouse_iicd_read_eep_data:	
+	arg 0x0c,temp
+	arg mem_mouse_le_reconn_addr_data,rega
+	fetch 2,mem_mouse_reconn_addr
+	branch iicd_read_eep_data+5
+p_mouse_reconn_addr_empty_check:
+	ifetcht 2,contr
+	isub temp,null
+	nrtn zero
+	loop p_mouse_reconn_addr_empty_check
+	rtn
+	
+	
+
+
+p_gpio_set_before_lpm_common:
+	hfetch 4,core_gpio_pu0
+	hfetcht 4,core_gpio_pd0
+	ior temp,pdata
+	invert pdata,pdata
+	iand rega,pdata
+	hstore 4,core_gpio_oe0
+	rtn
+
+p_ui_timer_check_end:
+	copy rega,pdata
+	rtn blank
+	increase -160,temp 	//320btclk = 100ms
+	increase -160,temp
+	set0 28,temp
+	storet 4,mem_ui_timer_last_btclk
+	copy pdata,temp
+	arg mem_ipc_fifo_bt2c51,rega
+	call fifo_is_near_full
+	nrtn blank
+	copy temp,pdata
+	branch ui_timer_check_send_evt
+
+
+p_check_51cmd_once:
+	call ui_ipc_get_lock
+	arg mem_ipc_fifo_c512bt,rega
+	call fifo_out
+	copy pdata,temp
+	call ui_ipc_put_lock
+	copy temp,pdata
+	rtn blank
+	beq BT_CMD_START_24G,g24_check_51cmd_start_24g
+	beq BT_CMD_STOP_24G,g24_check_51cmd_stop_24g
+	beq BT_CMD_PAIR_24G,g24_check_51cmd_pair_24g
+	beq BT_CMD_START_ADV,p_check_51cmd_adv
+	beq BT_CMD_START_ADV_RECONN,p_check_51cmd_adv_reconn
+	branch check_51cmd_once+9
+
+g24_check_51cmd_start_24g:
+	fetch 1,mem_tx_power_temp
+	store 1,mem_tx_power
+	jam STATE_24G_PAIRING_SUCCESS,mem_new_24g_pairing_sm
+	branch g24_start_24g_mode
+g24_check_51cmd_stop_24g:
+	fetch 1,mem_tx_power_temp
+	store 1,mem_tx_power
+	set0 mark_24g,mark
+	branch le_disable
+g24_check_51cmd_pair_24g:
+	jam TX_POWER_PAIR,mem_tx_power
+	branch g24_start_pairing_sm1
+
+
+p_check_51cmd_adv:
+	set0 mark_24g,mark
+	jam 0,mem_lpm_mode
+	random pdata	//random ble addr
+	store 1,mem_le_lap
+
+	setarg 0x26100e
+	store 3,mem_le_lap+3
+	jam 0,mem_le_reconn_flag
+	fetcht 2,mem_le_att_report2
+	storet 2,mem_le_notify_handle
+	call le_clean_att_list_handle_enable
+	arg ADV_FLAG_BREDR_NOT_SUPPORTED |ADV_FLAG_LIMITED_DISCOVERABLE,regb
+p_le_start_adv:	
+	call p_le_check_adv_flag
+//	setarg ADV_FLAG_BREDR_NOT_SUPPORTED |ADV_FLAG_LIMITED_DISCOVERABLE
+	copy regb,pdata
+	istore 1,contr
+	branch check_51cmd_adv
+	
+p_check_51cmd_adv_reconn:
+	set0 mark_24g,mark
+	jam 0,mem_lpm_mode
+	jam 1,mem_le_reconn_flag
+	fetcht 2,mem_le_att_report2
+	call le_att_check_notification_enable
+	copy rega,contw
+	setarg 1
+	istore 1,contw
+	arg ADV_FLAG_BREDR_NOT_SUPPORTED,regb
+	branch p_le_start_adv
+//	call p_le_check_adv_flag
+//	setarg ADV_FLAG_BREDR_NOT_SUPPORTED
+//	istore 1,contr
+//	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
+
+
+p_check_51cmd_once_continue0:
+	call lmo_fifo_check
+	nbranch check_51cmd_restore,blank  //process this cmd next time while lmo fifo is full
+p_check_51cmd_once_continue:
+	fetch 1,mem_fifo_temp
+	bmark0 mark_context,check_51cmd_check_idle
+//	beq BT_CMD_DISCONNECT,p_check_51cmd_disconnect	
+//	beq BT_CMD_UPDATE_SUPERVISION_TO,p_check_51cmd_update_supervision_to
+	beq BT_CMD_STORE_RECONN_INFO_LE,p_rtn
+//	beq BT_CMD_STORE_RECONN_INFO_BT,p_check_51cmd_once_continue_rtn
+	branch check_51cmd_once_continue+2
+/*
+p_check_51cmd_disconnect:
+	fetch 2,mem_ui_state_map
+	bbit0 UI_STATE_BT_HID_HANDSHAKE,p_check_51cmd_quick_disconnect
+	branch check_51cmd_disconnect
+p_check_51cmd_quick_disconnect:
+	setarg 0
+	store 4,mem_supervision_to
+	rtn	
+p_check_51cmd_update_supervision_to:
+	jam LMP_SUPERVISION_TIMEOUT,mem_lmo_opcode2
+	fetch 2,mem_new_supervision_to
+	store 2,mem_supervision_to
+p_check_51cmd_once_continue_rtn:	
+	rtn
+*/
+p_check_enter_hibernate:
+	jam SYC_TASK_HIBERNATE,mem_c51_flag
+	call p_c51_wait
+p_enter_hibernate_continue:
+//	call pp_gpio_set_before_lpm_common
+	jam 0x5a,mem_hibernate_flag
+	call lpm_write_gpio_wakeup
+	hfetch 4,core_lpm_ctrl
+	set0 15,pdata					
+	hstore 4,core_lpm_reg
+	call lpm_write_ctrl
+	arg param_hibernate_clks,temp
+	branch lpm_sleep
+
+
+p_ipc_timer_check:
+	fetcht 4,mem_ipc_last_check_timer
+	copy clkn_bt,pdata
+	isub temp,pdata
+//	arg 3200,temp	//1s timer
+	arg 1600,temp	//500ms timer
+	idiv temp
+	call wait_div_end
+	quotient pdata
+	rtn blank
+	copy clkn_bt,temp
+	storet 4,mem_ipc_last_check_timer
+	fetcht 2,mem_ipc_bt_timer
+	byteswap temp,temp
+	iadd temp,pdata
+	byteswap pdata,pdata
+	store 2,mem_ipc_bt_timer
+	byteswap pdata,pdata
+	and pdata,0x3,pdata
+	rtnne 0
+	call p_read_adc_enable
+	nrtn user2
+p_adc_check_process:
+	fetch 1,mem_adc_config_flag
+	bbit1 ADC_CONFIG_GPIO,p_adc_check_gpio
+p_rtn:
+	rtn
+
+
+
+p_adc_check_gpio:
+	hfetch 1,core_gpio_pu0
+	set0 5,pdata
+	hstore 1,core_gpio_pu0
+	hjam 0x8f,rf_adc_mode
+	fetch 1,mem_adc_channel
+	hstore 1,rf_adc_ch
+	call p_read_adc
+	hfetch 1,core_gpio_pu0
+	set1 5,pdata
+	hstore 1,core_gpio_pu0
+	rtn
+
+p_read_adc:
+	hfetch 1,core_uart_baud + 1
+	set1 7,pdata
+	hstore 1,core_uart_baud + 1 
+	hfetch 1,rf_adc_ch
+	or_into 0x30,pdata
+	hstore 1,rf_adc_ch
+	hjam 0x7c,rfen_adc
+	hjam 0xaa,rf_adc_gc
+	nop 5000
+	hfetcht 2,core_adc_sum
+	hfetch 1,core_uart_baud + 1
+	set0 7,pdata
+	hstore 1,core_uart_baud + 1
+	byteswap temp,temp
+	storet 2,mem_adc_current_value
+	rtn
+
+enable_usr2:
+	enable user2
+	rtn
+p_read_adc_enable:
+	disable user2
+	call le_xtype_fifo_is_empty
+	call enable_usr2,blank
+	fetch 1,mem_new_24g_abort_pac
+	ncall enable_usr2,blank
+	rtn
+	
+p_user_le_connect_process:
+	jam 1,mem_ble_read_ipc_fifo_once
+	call p_ipc_rx
+	jam 0,mem_ble_read_ipc_fifo_once
+	rtn
+
+p_ipc_rx:
+	call p_check_ipc_2bt
+	rtn user
+	byteswap pdata,pdata
+	copy pdata,contr
+	call p_ipc_rx_byte
+	store 1,mem_ipc_rx_type
+	beq IPC_TYPE_CMD,p_ipc_rx_cmd
+	beq IPC_TYPE_24G,g24_ipc_rx_24g
+	copy pdata,temp
+	copy contr,rega
+	fetch 1,mem_context
+	bbit0 state_inconn,p_ipc_abondon_rx_data
+	copy rega,contr
+	rtnmark0 mark_context
+	copy temp,pdata
+	beq IPC_TYPE_BLE,p_ipc_rx_ble
+	branch assert
+
+p_ipc_rx_cmd:
+	call p_ipc_rx_byte
+	call p_ipc_rx_byte
+	store 1,mem_fifo_temp
+	call p_ipc_next_rx
+	branch ui_ipc_send_cmd
+
+p_ipc_next_rx:
+	call p_ipc_rx_updata_contr
+	copy contr,temp
+	byteswap temp,temp
+	storet 2,mem_ipc_2bt_read_index
+	rtn
+
+p_ipc_abondon_rx_data:
+	copy rega,contr
+	arg mem_tst_pktcnt_sync,contw
+	branch p_ipc_rx_cpy
+
+p_ipc_rx_cpy:
+	call p_ipc_rx_byte
+	copy pdata,loopcnt
+p_ipc_copy:
+	call p_ipc_cpy_loop
+	branch p_ipc_next_rx
+	
+p_ipc_cpy_loop:
+	call p_ipc_rx_byte
+	istore 1,contw
+	loop p_ipc_cpy_loop
+	rtn
+
+p_ipc_rx_byte:
+	call p_ipc_rx_updata_contr
+	ifetch 1,contr
+	rtn
+
+p_ipc_rx_updata_contr:
+	setarg mem_ipc_2bt_fifo_end
+	isub contr,null
+	nrtn zero
+	arg mem_ipc_2bt_fifo_head,contr
+	rtn
+	
+p_ipc_tx_evt:
+	arg 3,loopcnt
+	arg mem_ipc_tx_evt_buff,contr
+p_ipc_tx_cpy:
+	copy contr,rega
+	fetch 2,mem_ipc_2C51_write_index
+	byteswap pdata,pdata
+	copy pdata,contw
+	copy rega,contr
+p_ipc_tx_loop:
+	ifetch 1,contr
+	istore 1,contw
+	call p_ipc_tx_updata_contw
+	loop p_ipc_tx_loop
+	copy contw,pdata
+	byteswap pdata,pdata
+	store 2,mem_ipc_2C51_write_index
+	rtn
+p_ipc_tx_updata_contw:
+	setarg mem_ipc_2C51_fifo_end
+	isub contw,null
+	nrtn zero
+	arg mem_ipc_2C51_fifo_head,contw
+	rtn
+
+g24_ipc_rx_24g:
+	rtnmark0 mark_24g_conext
+	call p_ipc_rx_byte
+	icopy loopcnt
+	store 1,mem_new_uart_packet
+	branch p_ipc_copy
+
+
+queue_init:
+	setarg 0
+	store 3,mem_queue_write_prt
+	rtn
+
+p_ipc_rx_ble_data:
+	rtnmark1 mark_24g
+	fetch 1,mem_le_switch_send_data
+	rtn blank
+	call p_check_ipc_2bt
+	rtn user
+	byteswap pdata,pdata
+	copy pdata,contr
+	call p_ipc_rx_byte
+	store 1,mem_ipc_rx_type
+	copy contr,rega
+	bne IPC_TYPE_BLE,p_ipc_abondon_rx_data
+	copy contr,regb
+	call le_xtype_fifo_is_near_full
+	nrtn blank
+	branch p_ipc_rx_ble_read_fifo
+	
+p_ipc_rx_ble:
+	copy contr,regb
+	fetch 1,mem_ble_read_ipc_fifo_once
+	rtn blank
+	call le_xtype_fifo_is_empty
+	nrtn blank
+p_ipc_rx_ble_read_fifo:
+	fetcht 2,mem_le_att_report2
+	call le_att_check_notification_enable
+	rtnbit0 0
+	fetch 1,mem_le_switch_send_data
+	rtneq 0
+	fetch 1,mem_bt_read_ipc_count
+	pincrease 1
+	store 1,mem_bt_read_ipc_count
+	fetch 1,mem_queue_write_prt
+	add pdata,1,temp
+	and temp,0x03,temp
+	storet 1,mem_queue_write_prt
+	mul32 pdata,7,pdata
+	arg mem_queue_buffer0,contw
+	iadd contw,contw
+	copy regb,contr
+	call p_ipc_rx_byte
+	icopy loopcnt
+	call p_ipc_copy
+	call p_ipc_rx_ble_read_fifo_first_time
+	rtn user2
+	jam ATTOP_HANDLE_VALUE_NOTIFICATION,mem_fifo_temp
+	branch le_xtype_fifo_in
+
+p_ipc_rx_ble_read_fifo_first_time:
+	disable user2
+	fetch 1,mem_ble_send_flag
+	rtneq 5
+	enable user2
+	increase 1,pdata
+	store 1,mem_ble_send_flag
+	sub pdata,1,null
+	nrtn positive
+	jam BT_EVT_LE_NOTIFY_ENABLE,mem_ipc_tx_evt
+	branch p_ipc_tx_evt
+
+//p_device_check_lock:
+//	fetch 2,mem_sdp_remote_cid
+//	branch app_put_lpm_wake_lock,blank
+//	branch app_get_lpm_wake_lock
+
+
+p_ipc_init:
+	setarg mem_ipc_2bt_fifo_head
+	byteswap pdata,pdata
+	store 2,mem_ipc_2bt_read_index
+	store 2,mem_ipc_2bt_write_index
+	setarg mem_ipc_2C51_fifo_head
+	byteswap pdata,pdata
+	store 2,mem_ipc_2C51_read_index
+	store 2,mem_ipc_2C51_write_index
+	rtn
+
+p_mouse_reconn_addr_calculate:
+	fetch 2,mem_mouse_eeprom_base
+	add pdata,0x1c,pdata
+	store 2,mem_mouse_reconn_addr
+	rtn
+
+p_device_init:
+	call le_modified_name_adv
+//	setarg p_device_check_lock
+//	store 2,mem_cb_check_wakelock
+	jam 0,mem_c51_flag
+	jam 6,mem_connection_options
+	call app_lpm_mult_enable
+//	setarg p_device_bt_lpm_before
+//	store 2,mem_cb_before_lpm
+	setarg p_c51_user_event
+	store 2,mem_cb_bb_event_process
+//	setarg p_device_idle
+//	store 2,mem_cb_idle_process
+	setarg p_user_le_connect_process
+//	setarg p_ipc_rx
+	store 2,mem_cb_le_process
+	setarg p_device_before_hibernate
+	store 2,mem_cb_before_hibernate
+	ncall p_ipc_init,wake
+	call p_device_wakeup,wake
+	call lpm_disable_exen_output
+
+	fetch 1,mem_le_init_eeprom_base_count
+	branch p_device_init_next,blank
+	increase -1,pdata
+	store 1,mem_le_init_eeprom_base_count
+	setarg 0x7f80
+	store 2,mem_mouse_eeprom_base
+	call p_mouse_reconn_addr_calculate
+
+	fetch 1,mem_le_reconn_flag
+	nbranch p_device_init_next,blank
+	fetch 1,mem_le_fast_conn_finished
+	nbranch p_device_init_next,blank
+	call p_mouse_init_environment
+p_device_init_next:
+	fetch 1,mem_hibernate_flag
+	beq 0x5a,p_device_init_init_hibwake
+	branch p_deveice_init_wake,wake
+	fetch 1,mem_tx_power
+	store 1,mem_tx_power_temp
+	call power_ctrl_pac_succ_cnt_init
+	fetch 2,mem_adc_0v
+	byteswap pdata,pdata
+	store 2,mem_adc_0v
+	fetch 2,mem_adc_3v
+	byteswap pdata,pdata
+	store 2,mem_adc_3v
+	call p_init_adc_from_otp
+	call g24_set_device_addr
+	fetch 8,mem_temp
+	nbranch p_deveice_init_reset,blank
+	fetch 2,0x4ad4
+	byteswap pdata,pdata
+	branch p_deveice_init_reset,blank
+	store 2,mem_adc_3v
+p_deveice_init_reset:
+	jam BT_EVT_RESET,mem_ipc_tx_evt
+p_device_init_common:
+	fetch 1,mem_short_lpm_enable
+	nbranch p_24g_short_lpm_process,blank
+	call p_adc_check_process
+	call p_ipc_tx_evt
+	call p_ipc_rx_ble_data
+	hjam START_C51_CORE,core_docd_ctrl	
+	rtn
+p_24g_short_lpm_process:
+	call lpm_recover_clk,wake
+	arg param_rx_setup,timeup
+	until clkn_rt,meet
+	copy clkn_bt,pdata
+	store 3,mem_ckln_24g_short_lpm
+p_24g_short_lpm_process_loop:
+	fetch 2,mem_ui_state_map
+	rtnbit1 UI_STATE_BLE_ADV
+	rtnbit1 UI_STATE_BT_DISCOVERY
+	call app_process_idle
+	call g24_short_lpm_transmit_process
+	branch p_24g_short_lpm_process_loop
+
+p_device_wakeup:
+	copy auxcnt,pdata
+	bmark0 mark_24g,p_device_bt_wakeup
+g24_delay_long_sleep:
+//	copy auxcnt,pdata
+	branch g24_direct_long_sleep,blank	//sleep timer wake
+g24_delay_long_sleep2:	
+	jam 0xbb,mem_new_24g_delay_long_sleep_maxcnt		//io int wake,abort 150ms
+	rtn
+g24_direct_long_sleep:
+	jam 0x00,mem_new_24g_delay_long_sleep_maxcnt
+	fetch 1,mem_new_24g_key_wheel_event
+	rtn blank
+	jam 0,mem_new_24g_key_wheel_event
+	branch g24_delay_long_sleep2
+
+p_device_bt_wakeup:
+//	copy auxcnt,pdata
+	branch p_device_bt_wakeup_check,blank	//sleep timer wake
+	jam 2,mem_bt_wakeup_from_long_mult
+	rtn
+p_device_bt_wakeup_check:
+	fetch 1,mem_bt_motion_event
+	rtn blank
+	jam 0,mem_bt_motion_event
+	jam 1,mem_bt_wakeup_from_long_mult
+	rtn
+	
+p_deveice_init_wake:
+	jam BT_EVT_WAKEUP,mem_ipc_tx_evt
+	branch p_device_init_common
+p_device_init_init_hibwake:
+	copy auxcnt,pdata
+	branch p_enter_hibernate_continue,blank
+	call init_lmp_work
+	call l2cap_init_work
+	setarg 0
+	store 8,mem_context
+	store 2,mem_ui_state_map
+	store 2,mem_ipc_bt_timer
+	store 2,mem_ipc_c51_timer
+	jam BT_EVT_HIBERNATE_WAKE,mem_ipc_tx_evt
+	branch p_device_init_common
+
+p_init_adc_from_otp:
+	call otp_enable_chgpump
+	setarg 0x7e2
+	arg mem_temp,rega
+	arg 12,temp
+	call otpd_read_data
+	call otp_disable_chgpump
+	fetch 8,mem_temp
+	rtn blank
+	fetch 1,mem_adc_config_flag
+	bbit1 ADC_CONFIG_GPIO,p_calc_adc_check_gpio
+	rtn
+
+
+
+p_calc_adc_check_gpio:
+	fetcht 2,mem_temp
+	fetch 2,mem_temp + 6
+	copy temp,regb
+	copy pdata,rega
+	isub temp,regc
+	copy regb, pdata
+	isub regc,pdata
+	byteswap pdata,pdata
+	store 2,mem_adc_0v
+	lshift2 regc,pdata
+	iadd rega,pdata
+	byteswap pdata,pdata
+	store 2,mem_adc_3v
+	rtn
+	
+
+p_device_before_hibernate: 
+	enable user
+	hfetch 4,0x8138
+	setflag user,26,pdata
+	hstore 4,core_lpm_reg
+	call lpm_write_ctrl
+	jam 1,mem_lpm_current_mult
+p_device_bt_lpm_before:
+	rtn
+
+//p_device_idle:
+//	rtn
+
+p_c51_user_event:
+	copy regc,pdata
+	and_into BT_EVT_TIMER_MASK,pdata
+	rtneq BT_EVT_TIMER_INIT
+	copy regc,pdata
+	store 1,mem_ipc_tx_evt
+	branch p_ipc_tx_evt
+
+
+g24_pair_init:
+	jam 0,mem_new_24g_pid
+	jam G24_PAIR_CH,mem_new_24g_ch
+	fetch 4,mem_new_24g_paring_addr
+g24_update_addr_and_synccrc8:	
+	store 4,mem_new_24g_addr
+	branch g24_syncword_crc8
+		
+//2.4g freq hop related.
+g24_ch:
+	fetcht 1,mem_new_24g_current_ch_number
+	call g24_ch_calc
+	increase 1,temp
+	and_into 3,temp //map size =4
+	storet 1,mem_new_24g_current_ch_number
+	rtn
+	
+g24_ch_calc:
+	fetch 1,mem_new_24g_addr	
+	and_into 0x03,pdata
+	mul32 pdata,4,rega			//24addr low bit0 bit1 ,00-map1,01-map2,10-map3,11-map4
+	setarg mem_new_24g_ch_map1
+	iadd rega,pdata
+	iadd temp,contr
+	ifetch 1,contr
+	store 1,mem_new_24g_ch
+	rtn
+
+g24_set_device_addr:
+	fetch 4,mem_temp	//adc data from otp
+	store 4,mem_new_24g_device_addr	
+	nrtn blank
+	fetch 4,mem_lap
+	store 4,mem_new_24g_device_addr
+	rtn
+
+
+g24_transmit_rf_sta_init:
+	jam 1,mem_new_24g_rf_last_sta
+	jam 0,mem_new_24g_sync_cnt
+g24_transmit_rf_ctrl_clear:	
+	fetch 1,mem_new_24g_data_type
+	and_into bits_data,pdata
+	store 1,mem_new_24g_data_type
+	rtn
+	
+g24_hop_ch_enable:
+	fetch 1,mem_new_24g_data_type
+	set1 bit_hop,pdata
+	store 1,mem_new_24g_data_type
+	//update txpayload
+	store 1,mem_new_24g_txpayload
+	rtn
+g24_hop_ch_disable:
+	fetch 1,mem_new_24g_data_type
+	set0 bit_hop,pdata
+	store 1,mem_new_24g_data_type
+	rtn	
+
+g24_transmit_hop_pac_fail:
+	call power_ctrl_pac_succ_decrs
+	fetch 1,mem_new_24g_rf_work_stage
+	beq 1,g24_transmit_hop_pac_fail_wo_hop
+	beq 2,g24_transmit_hop_pac_fail_hop_stage2
+	rtn
+g24_transmit_hop_pac_fail_wo_hop:
+	jam 2,mem_new_24g_sync_cnt
+g24_transmit_hop_pac_fail_stage1:	
+	jam 0,mem_new_24g_hop_pac_retry
+	jam 0,mem_new_24g_rf_last_sta
+	branch g24_transmit_rf_ctrl_clear
+
+g24_transmit_hop_pac_fail_hop_stage2:
+	jam 0,mem_new_24g_rf_hop_ch
+	branch g24_transmit_hop_pac_fail_stage1
+
+g24_transmit_pac_fail_hop_stage3:
+	fetch 2,mem_new_24g_txfail_cnt
+	increase 1,pdata
+	store 2,mem_new_24g_txfail_cnt
+	bbit1 10,g24_tx_attempt_fail	//1024ms * 8
+	fetch 1,mem_new_24g_rf_hop_ch
+	beq 1,g24_rf_hop_fastly
+	jam 1,mem_new_24g_rf_hop_ch
+g24_rf_hop_attemp_again:
+	fetch 1,mem_new_24g_rf_hop_ch
+	bne 1,g24_transmit_rf_ctrl_clear
+g24_rf_hop_fastly:
+	fetch 1,mem_new_24g_hop_fastly_cnt
+	increase 1,pdata
+	store 1,mem_new_24g_hop_fastly_cnt
+	beq 4,g24_rf_hop_fastly_exit
+	call g24_ch
+	jam 2,mem_new_24g_max_retry
+	branch g24_transmit_packet
+
+g24_rf_hop_fastly_exit:
+	call power_ctrl_pac_succ_decrs
+	jam 0,mem_new_24g_hop_fastly_cnt
+	branch g24_transmit_rf_ctrl_clear
+
+g24_transmit_hop_pac_succ_wo_hop:
+	jam 2,mem_new_24g_sync_cnt
+g24_transmit_hop_pac_succ:
+	jam 1,mem_new_24g_rf_last_sta
+	jam 0,mem_new_24g_rf_hop_ch
+	branch g24_transmit_rf_ctrl_clear
+
+g24_transmit_succ_rf_config:
+	fetch 1,mem_new_24g_rf_work_stage
+	beq 3,g24_transmit_hop_pac_succ
+	fetch 1,mem_new_24g_data_type
+	isolate0 bit_hop,pdata
+	branch g24_transmit_rf_sta_init,true
+	fetch 1,mem_new_24g_rf_work_stage
+	beq 1,g24_transmit_hop_pac_succ_wo_hop
+	beq 2,g24_transmit_hop_pac_succ
+	rtn
+
+g24_rf_sta_check:
+	fetch 1,mem_new_24g_pairing_sm
+	rtnne STATE_24G_PAIRING_SUCCESS
+	call g24_rf_laststa_synccnt_check
+	ncall g24_rf_sync_cnt_check,user2
+	rtn
+
+g24_rf_laststa_synccnt_check:
+	disable user2
+	fetch 1,mem_new_24g_rf_last_sta
+	rtnne 1
+	fetch 1,mem_new_24g_sync_cnt
+	rtnne 0
+	jam 1,mem_new_24g_rf_work_stage
+	jam 4,mem_new_24g_max_retry
+	branch enable_usr2
+
+g24_rf_sync_cnt_check:
+	fetch 1,mem_new_24g_sync_cnt
+	branch g24_rf_hop_attemp,blank
+	increase -1,pdata
+	store 1,mem_new_24g_sync_cnt
+	jam 2,mem_new_24g_rf_work_stage
+	call g24_ch
+	jam 4,mem_new_24g_max_retry
+	rtn
+
+g24_rf_hop_attemp:
+	jam 3,mem_new_24g_rf_work_stage
+	fetch 1,mem_new_24g_rf_hop_ch
+	nbranch g24_rf_hop_attemp_again,blank
+	call g24_ch
+	jam 2,mem_new_24g_max_retry
+	rtn
+	
+
+g24_transmit_process:
+	rtnmark0 mark_24g
+	set1 mark_24g_conext,mark
+	fetcht 4,mem_new_24g_tx_btclk
+	copy clkn_bt,pdata
+	isub temp,null
+	ncall g24_timer_timeout,positive
+	copy pdata,regb
+	fetch 4,mem_new_24g_tx_btclk
+	fetcht 1,mem_new_24g_interval
+	iadd temp,temp
+	copy regb,pdata
+	isub temp,null
+	nbranch g24_transmit_exit,positive
+	set0 28,pdata
+	store 4,mem_new_24g_tx_btclk
+	call g24_interval_calibrate
+	call g24_txdata_prep
+	branch g24_no_data_to_tx,user
+	call g24_rf_sta_check
+g24_transmit_start:
+	call g24_transmit_packet
+	fetch 1,mem_new_24g_pairing_sm
+	sub pdata,STATE_24G_PAIRING_SUCCESS,null
+	call power_ctrl_start,zero
+g24_transmit_exit:
+	set0 mark_24g_conext,mark
+	rtn
+
+g24_timer_timeout:
+	rtn zero
+	set1 28,pdata
+	rtn
+
+g24_interval_calibrate:
+	fetch 1,mem_new_24g_pac_index
+	increase 1,pdata
+	store 1,mem_new_24g_pac_index
+	beq 4,g24_interval_max
+	beq 5,g24_interval_min
+	rtn
+g24_interval_max:
+	fetch 1,mem_new_24g_interval_max
+	store 1,mem_new_24g_interval
+	rtn
+g24_interval_min:
+	jam 0,mem_new_24g_pac_index
+	fetch 1,mem_new_24g_interval_min
+	store 1,mem_new_24g_interval
+	rtn
+
+	
+g24_txdata_prep:
+	fetch 1,mem_new_24g_pairing_sm
+	bne STATE_24G_PAIRING_SUCCESS,g24_pairing_sm	
+	//nop 1200 // wait for 8051 preparing data
+	call p_ipc_rx
+	branch g24_txdata_prep_ipc_nodata,user
+	fetch 1,mem_ipc_rx_type
+	bne IPC_TYPE_24G,enable_usr
+g24_txdata_prep_packeage_data:
+	fetch 1,mem_short_data_wheel
+	call g24_lpm_short_increase,blank
+g24_txdata_skip_short_lpm:
+	fetch 1,mem_short_data_wheel
+	ncall g24_enter_long_sleep,blank
+	call g24_package_data
+	call g24_transmit_prep
+g24_txdata_enable_tx:
+	jam ENSURE_ON_24G,mem_new_24g_ensure
+	rtn
+
+g24_enter_long_sleep:
+	jam 0,mem_short_lpm_tx_cnt
+	jam 0,mem_short_lpm_enable
+	jam 10,mem_new_24g_enter_lpm_timer
+	rtn
+	
+g24_txdata_prep_ipc_nodata:
+	fetch 1,mem_short_lpm_enable
+	nbranch g24_short_lpm_txdata_prep,blank
+g24_txdata_last_pac:
+	fetch 1,mem_new_24g_ensure
+	beq ENSURE_ON_24G,disable_usr
+	rtn
+
+
+g24_short_lpm_txdata_prep:
+g24_package_data:
+	fetch 1,mem_new_24g_delay_long_sleep_maxcnt
+	store 1,mem_new_24g_delay_long_sleep_cnt
+
+	fetch 1,mem_new_uart_packet
+	copy pdata,rega
+	arg mem_new_uart_packet+1,regb
+	jam 0,mem_new_24g_abort_pac
+g24_package_data_pc_bind:
+	call g24_transmit_rf_ctrl_clear
+	store 1,mem_new_24g_common_temp
+	//total length
+	add rega,1,temp
+	arg mem_new_24g_common_temp+1,contw
+g24_package_user_data:
+	//user data: max 30 bytes
+	copy rega,loopcnt
+	copy regb,contr
+	call memcpy
+	arg mem_new_24g_common_temp,rega
+g24_put_data_in_buff:
+	rtnmark0 mark_24g_conext
+	storet 1,mem_new_24g_datalen
+	copy temp,loopcnt
+	arg mem_new_24g_txbuf,contw
+	copy rega,contr
+	branch memcpy
+
+
+//output: 1BYTE crc8
+g24_syncword_crc8:
+	arg 0,rega
+	arg 4,loopcnt
+	arg mem_new_24g_addr,contr
+g24_syncword_crc8_loop:
+	ifetch 1,contr
+	iadd rega,rega
+	loop g24_syncword_crc8_loop
+	copy rega,pdata
+	store 2,mem_new_24g_syncword
+	fetch 1,mem_new_24g_syncword
+	fetcht 1,mem_new_24g_syncword+1
+	iadd temp,pdata
+	store 1,mem_new_24g_syncword_crc8
+	rtn
+
+g24_transmit_prep:
+// total length
+	fetch 1,mem_new_24g_datalen
+	increase 2,pdata
+	store 1,mem_new_24g_txlen
+// data type
+	fetch 1,mem_new_24g_data_type
+	store 1,mem_new_24g_txpayload
+//prepare 5bit payload length, 2bit PID, 1bit NO_ACK
+	fetch 1,mem_new_24g_datalen
+	lshift3 pdata,pdata
+	fetcht 1,mem_new_24g_pid
+	and temp,0x03,temp
+	lshift temp,temp
+	ior temp,pdata
+	fetcht 1,mem_new_24g_no_ack
+	iadd temp,pdata
+	istore 1,contw
+//prepare payload data
+	fetch 1,mem_new_24g_datalen
+	iforce loopcnt
+	arg mem_new_24g_txbuf,contr
+	branch memcpy
+
+g24_send_abort_packet:
+	jam 1,mem_new_24g_abort_pac
+	jam 0,mem_new_24g_rf_hop_ch
+	call g24_transmit_rf_ctrl_clear
+	store 1,mem_new_24g_common_temp
+	setarg 0
+	store 7,mem_new_24g_common_temp+1
+	fetch 4,mem_new_24g_device_addr
+	store 4,mem_new_24g_common_temp+8
+	arg 12,temp
+	arg mem_new_24g_common_temp,rega
+	call g24_put_data_in_buff
+	fetch 1,mem_new_24g_data_type
+	set1 bit_abort,pdata
+	store 1,mem_new_24g_data_type
+	call g24_transmit_prep
+	call g24_txdata_enable_tx
+	branch g24_transmit_start
+
+g24_no_data_to_tx:
+	fetch 1,mem_short_lpm_enable
+	branch g24_no_data_to_tx_short_lpm_disable,blank
+	call g24_lpm_short_decrease
+	branch g24_short_lpm_sleep
+	
+g24_no_data_to_tx_short_lpm_disable:
+	fetch 1,mem_new_24g_abort_pac
+	branch g24_send_abort_packet,blank
+	fetcht 1,mem_new_24g_delay_long_sleep_cnt
+	increase 1,temp
+	storet 1,mem_new_24g_delay_long_sleep_cnt
+	fetch 1,mem_new_24g_delay_long_sleep_maxcnt
+	isub temp,null
+	rtn positive
+	jam 0,mem_new_24g_delay_long_sleep_cnt
+g24_lpm_long_sleep:
+	call p_check_ipc_for_lpm
+	nrtn user
+	fetch 1,mem_c51_lmp_lock
+	nrtn blank
+	fetch 1,mem_new_24g_enter_lpm_timer
+	nrtn blank
+	jam 0,mem_short_data_wheel
+	call lpo_calibration
+	fetch 3,mem_clks_per_lpo
+	rtn blank
+	fetch 8,mem_new_24g_enter_hibernate
+	call clk2lpo
+	storet 4,mem_sleep_counter
+  	branch lpm_sleep
+
+g24_lpm_short_increase:
+	fetch 1,mem_wakup_from_power_flag
+	isolate0 2,pdata
+	branch g24_lpm_short_increase_poweron,true
+	fetch 1,mem_short_lpm_tx_cnt
+	rtneq 5
+	increase 1,pdata
+	store 1,mem_short_lpm_tx_cnt
+	rtnne 5
+g24_lpm_short_enable:	
+	jam 1,mem_short_lpm_enable
+	rtn
+
+g24_lpm_short_increase_poweron:		//wait for lpo_calibration completely
+	fetch 1,mem_short_lpm_tx_cnt
+	rtneq 20
+	increase 1,pdata
+	store 1,mem_short_lpm_tx_cnt
+	rtnne 20
+	fetch 1,mem_wakup_from_power_flag
+	set1 2,pdata
+	store 1,mem_wakup_from_power_flag
+	branch g24_lpm_short_enable
+
+g24_lpm_short_decrease:
+	fetch 1,mem_short_lpm_tx_cnt
+	rtn blank
+	increase -1,pdata
+	store 1,mem_short_lpm_tx_cnt
+	nrtn blank
+	jam 0,mem_short_lpm_enable
+	rtn
+	
+g24_short_lpm_transmit_process:
+	set1 mark_24g_conext,mark
+	call p_ipc_rx
+	branch g24_short_lpm_transmit_process_ipc_nodata,user
+	fetch 1,mem_ipc_rx_type
+	beq IPC_TYPE_24G,g24_short_lpm_txdata_data_ready
+g24_short_lpm_transmit_process_ipc_nodata:
+	fetch 1,mem_send_data_24g_short_lpm
+	beq SHORT_LPM_STATE_DATA,g24_short_lpm_txdata_prep_buff_data
+	beq SHORT_LPM_STATE_NODATA,g24_no_data_to_tx
+	beq SHORT_LPM_STATE_BUTTON_WHEEL,g24_short_lpm_transmit_process_button_wheel
+	rtn
+
+g24_short_lpm_transmit_process_button_wheel:
+	jam 0,mem_short_lpm_tx_cnt
+	jam 0,mem_short_lpm_enable
+g24_short_lpm_txdata_prep_buff_data:
+	call g24_lpm_short_increase
+	jam 0,mem_send_data_24g_short_lpm
+	arg 7,loopcnt
+	copy loopcnt,pdata
+	store 1,mem_new_uart_packet
+	arg mem_hid_buff,contr
+	call memcpy
+	disable user
+g24_short_lpm_txdata_data_ready:
+	call g24_txdata_prep_packeage_data
+	call g24_rf_sta_check
+	call g24_transmit_packet
+	call power_ctrl_start
+g24_short_lpm_sleep:
+	call lpo_calibration
+	fetch 3,mem_clks_per_lpo
+	rtn blank
+	fetch 1,mem_lpm_mode
+	rtn blank
+	fetch 1,mem_short_data_wheel
+	beq 1,g24_short_lpm_sleep2
+	setarg 0
+	store 8,mem_gpio_wakeup_low
+g24_short_lpm_sleep2:
+	call g24_short_lpm_select_param
+	arg param_rx_setup,timeup
+	until clkn_rt,meet
+	fetcht 3,mem_ckln_24g_short_lpm
+	copy clkn_bt,pdata
+	isub temp,pdata
+	and_into 0xff,pdata
+	arg 3750,temp		//312.5 x 12  = 1875
+	imul32 temp,temp  // btclk to system clk @ 12MHz
+	fetch 4,mem_short_lpm_interval_param
+	isub temp,pdata	//8ms - PassedTime
+	branch lpm_dispatch_sleep,positive
+	fetch 1,mem_lpm_xtalcnt // sleep the shortest time
+	increase 1,pdata
+	store 4,mem_sleep_counter
+	branch lpm_dispatch_sleep+7
+g24_short_lpm_select_param:
+	setarg G24_8125_INTERVAL_PARAM
+	store 4,mem_short_lpm_interval_param
+	fetch 1,mem_short_lpm_interval_cnt
+	increase 1,pdata
+	bne 5,g24_short_lpm_select_param_cont
+	setarg 0
+g24_short_lpm_select_param_cont:
+	store 1,mem_short_lpm_interval_cnt
+	rtnbit0 0
+	setarg G24_78125_INTERVAL_PARAM
+	store 4,mem_short_lpm_interval_param
+	rtn
+
+
+g24_transmit_packet:
+	jam 0,mem_new_24g_retry
+g24_transmit_loop:
+	arg param_rx_setup,timeup
+	until clkn_rt,meet
+	call g24_transmit_receive_ack
+	fetch 1,mem_new_24g_no_ack	//tx noack
+	rtneq no_ack_24g
+	nbranch g24_retransmit,sync
+	nbranch g24_retransmit,user3
+	call g24_ackpayload_parse
+	call power_ctrl_pac_succ_incrs
+g24_transmit_next_packet:
+	fetch 1,mem_new_24g_pid
+	increase 1,pdata
+	store 1,mem_new_24g_pid
+	fetch 1,mem_new_24g_pairing_sm
+	bne STATE_24G_PAIRING_SUCCESS,g24_paring_mode_start
+	call g24_transmit_succ_rf_config
+g24_transmit_abandon:
+	setarg 0
+	store 2,mem_new_24g_txfail_cnt
+	store 1,mem_new_24g_get_ack_fail
+	store 1,mem_new_24g_hop_pac_retry
+	jam ENSURE_OFF_24G,mem_new_24g_ensure
+	rtn
+g24_paring_mode_start:
+	call power_ctrl_pac_succ_cnt_init
+	branch g24_paring_mode
+
+g24_transmit_receive_ack:
+	disable user3
+	call g24_transmit
+	fetch 1,mem_new_24g_no_ack
+	beq no_ack_24g,g24_transmit_no_ack	//tx no ack
+	force 0,radio_ctrl
+	fetch 4,mem_new_24g_addr
+	iforce access
+	fetcht 1,mem_last_freq
+	call set_freq_rx
+	call rf_rx_enable
+	call g24_receive_rxon
+	call g24_end_of_packet,user3
+	rtn
+g24_transmit_no_ack:
+	call g24_end_of_packet
+	branch g24_transmit_next_packet
+
+g24_retransmit:
+	fetch 1,mem_new_24g_get_ack_fail
+	increase 1,pdata
+	store 1,mem_new_24g_get_ack_fail
+	fetch 1,mem_new_24g_pairing_sm
+	bne STATE_24G_PAIRING_SUCCESS,g24_tx_paring_retry
+	fetcht 1,mem_new_24g_retry
+	increase 1,temp
+	storet 1,mem_new_24g_retry
+	fetch 1,mem_new_24g_max_retry
+	isub temp,pdata
+	nbranch g24_transmit_loop,blank
+	fetch 1,mem_new_24g_rf_work_stage
+	beq 3,g24_transmit_pac_fail_hop_stage3
+	fetch 1,mem_new_24g_hop_pac_retry
+	increase 1,pdata
+	store 1,mem_new_24g_hop_pac_retry
+	beq 2,g24_transmit_hop_pac_fail
+	call g24_hop_ch_enable
+	jam 1,mem_new_24g_max_retry
+	branch g24_transmit_packet
+
+g24_tx_paring_retry:
+	fetch 1,mem_new_24g_get_ack_fail
+	rtnne 0xff
+	jam 0,mem_new_24g_get_ack_fail
+	branch g24_stop_24g_mode
+
+g24_tx_attempt_fail:
+	setarg 0
+	store 2,mem_new_24g_txfail_cnt
+	jam 0,mem_lpm_mode
+	jam 0,mem_short_lpm_tx_cnt
+	jam 0,mem_short_lpm_enable
+g24_stop_24g_mode:
+	jam BT_EVT_24G_ATTEMPT_FAIL,mem_ipc_tx_evt
+	branch p_ipc_tx_evt
+
+g24_ackpayload_parse:
+	call g24_read_len_pid_crc
+	fetch 1,mem_new_24g_rxdata_length	//ack payload length 
+	rtn blank
+	iforce loopcnt
+	arg mem_new_24g_rxbuf+2,contr
+	arg mem_new_24g_rxpayload,contw	//ack payload buffer 
+	branch memcpy
+
+g24_read_len_pid_crc:
+//read control
+	fetch 1,mem_new_24g_rxbuf+1
+	rshift3 pdata,pdata
+	store 1,mem_new_24g_rxdata_length
+//get crc
+	increase 1,pdata
+	arg mem_new_24g_rxbuf+1,contr
+	iadd contr,contr
+	ifetch 3,contr
+	store 3,mem_new_24g_sta_crc
+//read pid
+	fetch 1,mem_new_24g_rxbuf+1
+	rshift pdata,pdata
+	and pdata,0x03,pdata
+	store 1,mem_new_24g_sta_pid
+	rtn
+
+
+g24_prep:
+	disable enable_crc
+	disable enable_white
+	setarg 0x555555
+	iforce crc24_init
+	fetch 1,mem_new_24g_ch
+	reverse pdata,temp
+	set1 1,temp
+	rshift temp,white_init	
+	rtn
+
+g24_set_freq_tx:
+	call set_sync_on
+	fetcht 1,mem_new_24g_ch
+	branch set_freq_tx
+
+g24_transmit:
+	call le_enable
+	fetch 4,mem_new_24g_addr
+	iforce access
+	call g24_prep
+	call g24_set_freq_tx
+	set1 TXGFSK,radio_ctrl
+	enable encode_fec0
+	enable is_tx
+	disable is_rx
+	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_new_24g_syncword_crc8
+	inject mod,8
+	
+	fetch 1,mem_new_24g_txlen
+	iforce loopcnt
+	arg mem_new_24g_txpayload,contr
+g24tr_loop:
+	ifetch 1,contr
+	inject mod,8
+	loop g24tr_loop
+	enable enable_parity
+	inject mod,24	//crc
+	disable enable_parity
+	until null,tx_clear
+	nop 100
+	disable encode_fec0
+	disable encode_fec1
+	rtn
+
+g24_receive_packet:
+	call le_enable
+	fetch 4,mem_new_24g_addr
+	iforce access
+	call set_sync_on
+	fetcht 1,mem_new_24g_ch
+	call set_freq_rx
+	setarg param_pll_setup
+	call sleep
+	call rf_rx_enable
+g24_receive_rxon:
+	call g24_prep
+	disable user3
+	enable decode_fec0	
+	enable is_rx
+	disable is_tx
+	enable swfine
+	fetch 2,mem_new_24g_rx_window
+	iforce stop_watch
+	correlate null,timeout
+	nbranch g24_sync_timeout,sync
+	disable decode_fec0
+	enable decode_fec1
+	enable enable_white
+	enable enable_crc
+
+	parse demod,bucket,8
+	rshift3 pwindow,pdata
+	store 1,mem_new_24g_get_syncword_crc8
+	call g24_syncword_crc8
+	fetcht 1,mem_new_24g_get_syncword_crc8
+	isub temp,null
+	nbranch g24_end_of_packet,zero
+
+	parse demod,bucket,8
+	rshift3 pwindow,pdata
+	store 1,mem_new_24g_rxbuf	//device id
+	fetch 1,mem_new_24g_mode
+	sub pdata,rx_24g,null
+	branch g24_receive_skip,zero
+	fetch 1,mem_new_24g_rxbuf
+	fetcht 1,mem_new_24g_data_type
+	icompare bits_data,temp
+	nbranch g24_end_of_packet,true
+g24_receive_skip:
+	parse demod,bucket,8
+	rshift3 pwindow,pdata
+	istore 1,contw
+	rshift3 pdata,pdata
+	and pdata,0x1f,loopcnt	//max payload: 32bytes
+	branch g24rx_nopayload,zero
+g24rx_loop:
+	parse demod,bucket,8
+	rshift3 pwindow,pdata
+	istore 1,contw
+	loop g24rx_loop
+g24rx_nopayload:
+	//receive rssi hex
+	copy contw,rega
+	parse demod,bucket,8
+	rshift3 pwindow,pdata
+	store 1,mem_rssi_hex_received
+	copy rega,contw
+	
+	parse demod,bucket,24
+	enable swfine
+	arg param_sifs,stop_watch
+	rshift32 pdata,pdata
+	rshift16 pdata,pdata
+	istore 3,contw
+	disable decode_fec1
+	branch g24_end_of_packet,crc_failed
+	enable user3
+	fetch 1,mem_last_freq
+	add pdata,0,rega
+	call rf_write_freq
+	disable decode_fec0
+	call set_sync_on
+	fetch 1,mem_rssi_hex_received
+	copy pdata,rega
+	branch rssi_signal
+
+g24_end_of_packet:
+	disable encode_fec1
+	disable decode_fec1
+	branch end_of_packet
+
+g24_sync_timeout:
+	branch g24_end_of_packet
+
+power_ctrl_pac_succ_cnt_init:
+	jam 1,mem_power_ctrl_level
+	jam 0,mem_power_ctrl_pac_succ_cnt
+	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
+	rtn
+power_ctrl_pac_succ_decrs:
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	sub pdata,1,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 2,mem_power_ctrl_pac_succ_cnt
+	rtn
+
+power_ctrl_start:
+	arg mem_rssi_signal_buf,rega
+	call rssi_average
+	storet 1,mem_rssi_avg_received
+	isolate1 mark_24g,mark
+	call power_ctrl_24g_dis_max,true
+	ncall power_ctrl_le_dis_max,true
+	isub temp,null
+	nbranch power_ctrl_txpower_incrs,positive
+
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	sub pdata,1,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_24g_dis_max:
+	setarg RSSI_DIS_MAX_24G
+	rtn
+power_ctrl_24g_dis_min:
+	setarg RSSI_DIS_MIN_24G
+	rtn	
+power_ctrl_le_dis_max:
+	setarg RSSI_DIS_MAX_BLE
+	rtn
+power_ctrl_le_dis_min:
+	setarg RSSI_DIS_MIN_BLE
+	rtn
+	
+power_ctrl_txpower_decrs_check:
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	rtnne 70
+	jam 0,mem_power_ctrl_pac_succ_cnt
+power_ctrl_txpower_decrs:
+	fetcht 1,mem_rssi_avg_received
+	isolate1 mark_24g,mark
+	call power_ctrl_24g_dis_min,true
+	ncall power_ctrl_le_dis_min,true
+	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
+	hjam 0xd0,0x8955
+	hjam 0xe0,0x8956
+	hjam 0x4c,0x8957
+	hjam 0x6c,0x8958
+	hjam 0x50,0x8959
+	jam 0x01,mem_tx_power
+	rtn
+	
+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
+	hjam 0xd0,0x8955
+	hjam 0xe0,0x8956
+	hjam 0x4c,0x8957
+	hjam 0x3c,0x8958
+	hjam 0x10,0x8959
+	jam 0x04,mem_tx_power
+	rtn
+	
+power_ctrl_decrs_level0: //-5dBm
+	hjam 0xd0,0x8955
+	hjam 0xc0,0x8956
+	hjam 0x4c,0x8957
+	hjam 0x6c,0x8958
+	hjam 0x50,0x8959	
+	jam 0x10,mem_tx_power
+	rtn
+	
+rssi_signal:
+	fetcht 1,mem_rssi_signal_index
+	setarg mem_rssi_signal_buf
+	iadd temp,contw
+	copy rega,pdata
+	istore 1,contw
+	increase 1,temp
+	and_into RSSI_BUF_LEN,temp
+	storet 1,mem_rssi_signal_index
+	rtn
+rssi_average:
+	arg 0,temp
+	arg RSSI_BUF_LEN+1,loopcnt
+	copy rega,contr
+rssi_average_loop:	
+	ifetch 1,contr
+	iadd temp,temp
+	loop 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
+
+
+g24_start_pairing_sm1:
+	set1 mark_24g,mark
+	call g24_pair_init
+g24_set_pairing_sm_1:
+	jam STATE_24G_PAIRING_1,mem_new_24g_pairing_sm
+	rtn
+
+g24_pairing_sm:
+	fetch 1,mem_new_24g_ensure
+	beq ENSURE_ON_24G,disable_usr
+	fetch 1,mem_new_24g_pairing_sm
+	beq STATE_24G_PAIRING_1,g24_pairing_sm_1
+	beq STATE_24G_PAIRING_2,g24_pairing_sm_2
+	beq STATE_24G_PAIRING_3,g24_pairing_sm_3
+	branch assert
+
+g24_pairing_sm_1:
+	jam STATE_24G_PAIRING_1_WAITING_ACK,mem_new_24g_pairing_sm
+	jam 0xaa,mem_new_24g_common_temp
+	branch g24_pairing_sm_common
+g24_pairing_sm_2:
+	jam STATE_24G_PAIRING_2_WAITING_ACK,mem_new_24g_pairing_sm
+	jam 0x55,mem_new_24g_common_temp
+	branch g24_pairing_sm_common
+g24_pairing_sm_3:
+	jam STATE_24G_PAIRING_3_WAITING_ACK,mem_new_24g_pairing_sm
+	jam 0x22,mem_new_24g_common_temp
+g24_pairing_sm_common:
+	fetch 1,mem_new_24g_data_type
+	and_into bits_data,pdata
+	store 1,mem_new_24g_common_temp+1
+	fetch 4,mem_new_24g_device_addr
+	store 4,mem_new_24g_common_temp+2
+g24_put_pairing_data_in_buff:
+	jam 0,mem_new_24g_common_temp+6
+	arg mem_new_24g_common_temp,rega
+	arg 7,temp
+	call g24_put_data_in_buff	
+	call g24_transmit_prep
+	call g24_txdata_enable_tx
+	branch disable_usr
+
+g24_paring_mode:
+	fetch 1,mem_new_24g_pairing_sm
+	rtneq STATE_24G_PAIRING_SUCCESS
+	beq STATE_24G_PAIRING_1_WAITING_ACK,g24_pairing_sm_1_waiting_ack
+	beq STATE_24G_PAIRING_2_WAITING_ACK,g24_pairing_sm_2_waiting_ack
+	beq STATE_24G_PAIRING_3_WAITING_ACK,g24_pairing_sm_3_waiting_ack
+	rtn
+
+g24_pairing_sm_1_waiting_ack:
+	jam STATE_24G_PAIRING_2,mem_new_24g_pairing_sm
+	branch g24_transmit_abandon
+g24_pairing_sm_2_waiting_ack:
+	jam STATE_24G_PAIRING_3,mem_new_24g_pairing_sm
+	branch g24_transmit_abandon
+g24_pairing_sm_3_waiting_ack:
+	jam STATE_24G_PAIRING_SUCCESS,mem_new_24g_pairing_sm
+	jam BT_EVT_24G_PAIRING_COMPLETE,mem_ipc_tx_evt
+	call p_ipc_tx_evt
+	fetch 4,mem_new_24g_rxpayload+2
+	call g24_update_addr_and_synccrc8
+	branch g24_transmit_abandon
+
+g24_start_24g_mode:
+	set0 mark_24g,mark
+	call g24_ch
+	fetch 4,mem_new_24g_addr
+	call g24_syncword_crc8
+	fetch 1,mem_new_24g_pairing_sm
+	rtnne STATE_24G_PAIRING_SUCCESS
+	call g24_tx_attemp_data_prep
+g24_tx_attemp_dongle:
+	setarg 0
+	store 2,mem_new_24g_check_dongle_times
+g24_tx_attemp_dongle_loop:
+	nop 2000
+	fetch 1,mem_new_24g_check_dongle_times
+	beq 0xff,g24_stop_24g_mode	//
+	call g24_transmit_receive_ack
+	nbranch g24_attemp_txdata_retry,sync
+	nbranch g24_attemp_txdata_retry,user3
+g24_tx_attemp_dongle_succ:
+	jam 1,mem_lpm_mode
+	set1 mark_24g,mark
+	setarg 0
+	store 2,mem_new_24g_check_dongle_times
+	jam BT_EVT_24G_ATTEMPT_SUCCESS,mem_fifo_temp
+	call ui_ipc_send_event
+	branch check_51cmd_stop_adv
+
+g24_tx_attemp_data_prep:
+	set1 mark_24g_conext,mark
+	jam 0xff,mem_new_24g_common_temp
+	fetch 1,mem_new_24g_data_type
+	store 1,mem_new_24g_common_temp+1
+	fetch 4,mem_new_24g_device_addr
+	store 4,mem_new_24g_common_temp+2
+	arg 6,temp
+	arg mem_new_24g_common_temp,rega
+	call g24_put_data_in_buff
+	branch g24_transmit_prep
+	
+g24_attemp_txdata_retry:
+	fetch 2,mem_new_24g_check_dongle_times
+	increase 1,pdata
+	store 2,mem_new_24g_check_dongle_times
+	call g24_ch
+	branch g24_tx_attemp_dongle_loop
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: Standard_mouse/btms/output/bt_program23.rom
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/bt_program23.rom	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/bt_program23.rom	(working copy)
@@ -0,0 +1,1729 @@
+11000101000100101000000000001111
+11000000000000000000000000100100
+11000000000000011000000000101111
+11000000010000110000000000110101
+11000000010001010000000000111111
+11000000010001011000000001100001
+11000000010100111000000001101101
+11000000010101000000000001110100
+11000000010101001000000010001000
+11000000010101100000000010011011
+11000000010110100000001101001001
+11000000010110101000000010110100
+11000000010110110000000010111011
+11000000010110111000000011011101
+00100000001000000011101100110100
+11000000000000101000000100010111
+11000000000010110000000100011100
+11000000000011011000000100100000
+11000000000100011000000100100011
+11000000000101111000000101000111
+11000000000110001000000101011100
+11000000000110010000000101101110
+11000000000110011000000110000001
+11000000000111001000000110010010
+11000000000111100000000110011111
+11000000000111101000000110110010
+11000000000111110000000110111000
+11000000000111111000000111010001
+11000000001000010000000111101111
+11000000001001101000000111110100
+11000000010010101000001000100101
+11000000011110011000001000101100
+11000000011110111000001000111000
+11000000011111000000001001101111
+11000000011111001000001001110101
+00100000001000000011101100110100
+00100000100000000000000000000000
+00100100001101011011000000000100
+01101000000000001100010110010101
+00100100001110100000000000101101
+01101000000000001100111001111000
+00100000001110100011000000000100
+01110000010011100111111100000000
+11000101100100110011000000000100
+00100100001101011011000000000100
+01110000100000101000000000000011
+00100000001000000011000000000100
+00100000010000000000001001111111
+00100000010000000000010000111101
+00100000010000000000001010111101
+01101000000000001100111001111000
+00100100001110100000001110000011
+00100000001000000011000000011011
+00100000001100001011100110100011
+01110000100010010101010111010100
+00100000000000000000000000000100
+01110000100010010101010111010010
+00100000000000000000000000000100
+01110000100010010101010111010001
+00100000000000000000000000000100
+01101000000000001100001010000000
+11000000000010100011100110101110
+00100000001000000011100110011100
+01100000000010001000000000010111
+00011000010000001010001000000000
+00100000010000000011101000010011
+01011000000000000000010100000000
+00100000010000000011101100110101
+01110000100010010000011000000001
+01110000100010010000000000111100
+01110000100010010000000111100000
+01110000100010010110110100010010
+00100000000000000000000000001010
+01110000100010010000001000000001
+01110000100010010000001000111101
+00100000000000000000000000001010
+01110000100010010000001110110111
+00100000000000000000000000001010
+01110000100010010000001001111111
+01101000000000001100001010000000
+11000000000010100000000001011110
+11000010100000001000000001011000
+11000010100000010000000001011000
+01110000100010010100110001011011
+01110000100010010100110110010110
+01110000100010010100111000101100
+01110000100010010100111101000110
+00100000001000000000000001011100
+01110000100010010100110011111011
+01110000100010010100110111101111
+01110000100010010100111011101100
+01110000100010010100111101011110
+01101000000000001100001010000000
+00100000001000000011100111011100
+01110000100010010101011011000010
+01110000100010010101010111010000
+00100000011000000000000000000000
+00100000010000000011110011010010
+00100000010000000011101001011111
+01110000100000000100001000000110
+01101000000100001000100101101000
+01111001001000000111111000000111
+01100000000100001000100101101000
+01111001001111111111111000000111
+01100000000100001000100101101000
+01111001001000000111111000000111
+01100000000100001000100101101000
+01110000100000000100001000000101
+00100000001000000011101000001100
+00100000010000000011110000101011
+01101000000000001100111001000101
+00100000011110100000000000000000
+01110000010011100100010100000000
+00011100010000100111111000000000
+01100000000000100100100010011110
+00100000011000000000000000000000
+11000110000100110000000000000000
+00100000010000000011101111100010
+01101000000000011100001000001111
+00100000011110100000000000000000
+01101000000000010100000001000010
+11011000010000001111111111111111
+10011000010001100111110000000000
+00100000011000101000000000000000
+01101000000000001100000100110001
+00100000011110100000000000000000
+00100000010000000100100000010110
+00100100011110100000000000000000
+00100000010000000011110100001110
+00100100011110100000000000000000
+00100000010000000011101001111011
+01101000000000001100011011100010
+00100000001110100011110001011110
+01101000000000001100011000111001
+00100000011110100000000000000000
+00100000001000000011110001011110
+01101000000000001100010110010101
+00100000001110100000000010010101
+01101000000000001000000010011111
+00100100001110100000000010010101
+01101000000000001100111010000011
+01101000000010001100111010000100
+10011000010001100111110000000000
+00100100011000101000000000000000
+01101000000000001100111010000001
+00100100011110100000000000000000
+01011000000000000000000000000000
+01100000000001000000000010100000
+00100000001000000011110001101010
+00100000010000000000000010100000
+00100100011101000000000000000000
+01101000000000001000101100101011
+00100100011110100000000000000000
+01110000010010011100000100000000
+00100000001000000011110001101010
+00100000010000000000000010100000
+00100100011101000000000000000000
+01101000000000001000101100101011
+00100100011110100000000000000000
+00100000001000000011110010001100
+00100000010000000000000010101011
+00100100011101000000000000000000
+00100000010000000000000010101000
+00100100011101000000000000000000
+01110000000010110010101100000001
+01110000000010110010101000000001
+00100000010000000000000010110000
+00100000001000000000000010101011
+01101000000000010100100000101100
+01101000000010010100100000101110
+00100000001000000000000010101101
+01101000000000010100011111000100
+01101000000010010100011111000110
+10011000010001100111110000000000
+00100000001000101110010011000000
+00100000001000000011000111010100
+01101000000000001000101100101010
+00100000000000000000000000001010
+11000000100000000000000010110000
+00100000011000000000000000000000
+01110000000000000001011000100111
+01110000000000010101000000000000
+01110000000000010111111000000000
+01110000000000010111111100000000
+01011000000000000000000000000000
+01100000000000101000100011010010
+00100000011000000000000000000000
+11011010001000000100011011110000
+00100000010000000111111110010101
+00100000011110100000000000000000
+00011111111000100010011000000000
+00100000010000000000000011000001
+00100000001000000011110110011011
+11000001000011000000000000000000
+11000000000010100000000011000110
+11000000000010101000000011010000
+11000000000101001000000011011011
+00100000001000000011110101110011
+01110000010011101000001100000000
+01110000010000100001001000000000
+01110000010011101011101100000000
+01110000010011100101000100010100
+00100000010000000011111001100001
+00100000010000000011111001011001
+00100000010000000011111001111111
+00100000010000000011111000100000
+01110000010011101011100100000001
+00100000001000000011110111000010
+01110000010011101010010000000000
+00100000010000000000001100000100
+01110000010001001011001000000000
+01110000010000100001001000000000
+01110000010011101011101100000000
+01110000010011100101000100000000
+01110000010001010110101000000000
+01101000000010010100111001001110
+01100000000010010100010011111000
+00100000010000000101001010100000
+00100000001000000011110111000110
+00100000010000000000000100000101
+00100000001000000111111000111011
+01100000000010001000001001001110
+01101000000000001100100010011100
+00011111111000001111111000000001
+01100000000000001100100010011100
+01101000000000001000001001001110
+00100000011110100000000000000000
+00011111111000001111111111111111
+01100000000000001000001001001110
+00100000010000000000000100001000
+00100000010000000000000011101011
+00100000010000000000000100010001
+00100000010000000000000011110111
+00100000010000000000000011111110
+00100000001000000000000011100001
+01101000000000001100111010111011
+00100000011110100000000000000000
+01101000000000001100001000010010
+00101111111000011111111000100000
+00100100010000001000000011110101
+01101000000000001100000100110001
+00100000010110100000000011110011
+00100000011000000000000000000000
+01110000010000010011000100000001
+00100000011000000000000000000000
+01110000010000100001001000100000
+00100000011000000000000000000000
+01101000000000001100100110111010
+00100000011110100000000000000000
+01110000010011101000000000000000
+00011111111000001111111111111111
+01100000000000001100100110111010
+00100100011110100000000000000000
+00100000011000000000000000000000
+01101000000000001100111010000010
+00100000011110100000000000000000
+00011111111000001111111111111111
+01100000000000001100111010000010
+00100100011110100000000000000000
+01110000010011101000000100000000
+00100000011000000000000000000000
+00100000010000000011111001111111
+01110000000010011011110100010010
+00100000001000000111110110010000
+01101000000000001100111001010001
+00100000011110100000000000000000
+00011111111000001111111111111111
+01100000000000001100111001010001
+00100100011110100000000000000000
+01110000010000100001001000100000
+01110000010000010011000100000001
+01110000010011101011101100000001
+00100000011000000000000000000000
+01101000000000001100111001010010
+00100000011110100000000000000000
+00011111111000001111111111111111
+01100000000000001100111001010010
+00100100011110100000000000000000
+00100000001000000011111001101101
+00100000010000000100100101101000
+00100000010000000100101101010001
+00100000010000000100101111011000
+00100000010000000000011000010110
+00100000001000000100100101000101
+00100000010000000011101001010000
+00011111111000100010001000000000
+00100000010000000000011001010100
+00100000001000000100101000111101
+01101000000000100100111001001000
+01100000000000100100010110010110
+00100000001000000100101010001100
+01110000010000010011000100000001
+01101000000000010000001101111100
+01101000000010010000001110000010
+10011000010001100111111000000000
+01100000000000010000100110111110
+01101000000000001000001101100010
+01111001001111111111111000000101
+01111001001111111111111000000011
+01100000000000001000001101100010
+01101000000000100000001101100110
+01101000000010010000001101100100
+01100000000010010000100111000110
+10011000010001100010001000000000
+01101000000000001100010001011011
+01100000000000001000001110001101
+11101000110010010000000000000000
+11101000110000010000000000000000
+00011111111010111111111000000000
+01100000000000010000001101100100
+00011000010010111000010000000000
+10011000010000001111111000000000
+11101000110010100000000000000000
+01100000000010100000001110001110
+10011010001000001111111000000000
+00011111111000100010100000000000
+01101000000000010000001101100100
+01101000000010010000100111000110
+10011000010001100111111000000000
+01101000000010010000100110111110
+10011000010011111111111000000000
+10011010100000001111111000000000
+01100000000000100000001101100110
+00100000010000000101000110011001
+01101000000000010000001110010000
+01100000000000010100010101100001
+00100000011000000000000000000000
+01101000000000001000001101111001
+11000010100000101000000101011000
+00100000010000000000011000001000
+01110000010011100110001000000000
+01101000000000001100111000100000
+00100100001110100000000101010010
+01101000000000001100111010100101
+11000000000000001000000101010110
+01101000000000001000001100000011
+00100000001110100100101111011110
+00100000001000000100111110000111
+01101000000000001100111000100000
+00011111111000001111111111111111
+01100000000000001100111000100000
+00100000001000000100111110000111
+01110000010011100010000000000011
+00100000001000000100101111011110
+01101000000000001100111001100010
+00011111111000001111111000000001
+01100000000000001100111001100010
+00100000001000000000011000001100
+01101000000000001100010001100111
+11000000000000110000000101100000
+11000000000000010000000101100111
+00100000001000000100101111111011
+01101000000000001100111001010011
+11000000000000001000000101100100
+00100000010000000011111001101101
+00100000001000000100110010000110
+00100000010000000000000100000101
+01110000010011100101001000000011
+00100000001000000100110010010000
+01011000000000000000000000010011
+11100000101000001000000000000000
+00100000010000000100110001011000
+01011000000000000000000000001010
+01100000000000010000001110010000
+01100000000000010100010101100001
+00100000011000000000000000000000
+01101000000000001100010001101011
+11000000000000010000000101110101
+11000000000000110000000101111100
+11000000000000111000000101110011
+00100000001000000100110000011000
+01110000010011101010010100000000
+00100000001000000100110100010111
+01011001000000000000001100000010
+01100000000000011100010011011100
+01011000000000000000000000000001
+11100000101000001000000000000000
+01011000000000010000000000010000
+11100000101000011000000000000000
+00100000001000000100110011001101
+01110000000010011011110100101001
+00100000010000000111110110000110
+01110000000010011011110101000111
+00100000010000000100101111010110
+00100000001000000100110100000001
+01101000000000001100010001101011
+11000000000011011000000110000101
+11000000000011101000000110000101
+00100000001000000100110000101011
+01101000000010010100111001001110
+01100000000010010100010001101100
+01101000000000001100111010000110
+00011111111000001000010000000001
+00011000010000010000010000000011
+01100000000010001100111010000110
+00011111111011111111111000000111
+11011000110000000100111010000111
+10011000110000001000110000000000
+11101000110000111000000000000000
+01100000000000111100010001101110
+11011000010000000000000000001110
+00100000001000000100111110001001
+01100000000010001100010001100110
+00101000001000000000011000000010
+00100100001000001000000110010111
+00011000010000001111111111111100
+01100000000000010100010001100111
+01101000000010001000001101111001
+00100000010000000000000110011010
+00100000001000000100111110010010
+01101000000000001100111010100101
+11000000000000001000000110011101
+00100000001000000100101111010000
+01011000000000000000000000000000
+00100000011000000000000000000000
+00011010011000100111111000000000
+11000000000000000000000110100101
+11000000000000010000000110101000
+11000000000000011000000110101100
+11000000000001010000000110110000
+00100000001000000100111110111001
+01110000010000010011000100000000
+01110000010011100101000100111100
+00100000001000000101000000011111
+00100000010000000101000000110011
+01011000000000000000000000000000
+01100000000001000100010101000100
+00100000011000000000000000000000
+00100000010000000101000000111001
+01101000000000001100010101101010
+11000001000000010000000000000000
+00100000001000000110010000011000
+01110000000010011011110100101011
+00100000001000000100101111010110
+11101000110000001000000000000000
+11000000000000001000000110110101
+00100000001000000100111111111110
+01110000010011101010010100000001
+01110000010011100010000000000011
+00100000001000000101000001101001
+11101000110000011000000000000000
+01100000000000011000001110011010
+11000000000010010000000110111100
+00100000001000000101000000010001
+01110000010000010011000100000001
+00100000010000000000000111001000
+01101000000000001000001110011011
+00011111111001100111110001100000
+00100000001000101000000111001101
+01110000010011101010011000000000
+00100000010000000101000100100101
+00100100011000101000000000000000
+01101000000000001100111010100110
+00100100010110100000000111001111
+01110000000010011011110100010011
+00100000001000000100101111010110
+01101000000000001000001100000011
+00011111111000001111111111111001
+00011111111000100111001000000000
+00011111001000100010010000000000
+00100000001000000101000100110101
+01110000010011101010011000000001
+00100000001000000000000111000010
+01110000000010011011110100101001
+00100000001000000111110110000110
+01101000000000001100001111111111
+00100000011110100000000000000000
+11011000111000000000000000000001
+00100000010000000111111011100010
+00100100011110100000000000000000
+01111000010101001111110000000000
+01111000001010000111110000000000
+00100000010000000100101100011110
+00100000010000000100100111010100
+00100000010000000100101010001010
+00100100001101101000000111100011
+01101000000000001000000000000011
+00011111111000001111111000000001
+01100000000000001000000000000011
+01101000000000001000001100000010
+00011111111000010111111000001111
+11000000000000011000000111101101
+11000000000000101101000110101111
+01101000000000001000000000010110
+11000000100100111101000101111101
+00011000000010100111111000000000
+11011000010000000000000111111111
+10011000010000010111111000000000
+00011111111000001111111011111010
+00011111111000001111111111111111
+00100000000000000000000000100110
+00100100001110100000000111101001
+00100000001000000101000110010110
+00100000010000000100101011000101
+00100000001000000000000111100011
+01101000000000100100010110010110
+11011000010000001110101001100000
+10011000010000001111111000000000
+01100000000000100100010110010110
+00100000001000000101000110101001
+01111000010101011111110000000000
+00100000001101110000000111110111
+00100100001101101000001000000110
+00100000010000000011110010110111
+01101000000000010100000101100001
+01100000000000010000001101110000
+01101000000000001000001100000010
+00101111111000000000011000000001
+00100100001000001011110011001011
+01101000000000001100010001100101
+00101111111000000000011000000001
+00100100001000001011110011001011
+00100000010000000100101111010000
+00100100001110100011110011001011
+01101000000000001100111001100010
+00011111111001100111110000000001
+00100100001000010011110011001011
+00100000001000000101001010010111
+01101000000010010100000101100001
+01101000000000010100111001100000
+10011000010000001000010000000000
+00011000010000110000010000000000
+01101000000000010000001101110000
+10011000010000001111111000000000
+01100000000000010000001101110000
+00100000001000000011110011000011
+00100000010000000000001000011100
+11011111001000000000000000000110
+11011000110000000100111010101101
+01011000000000001111111111111111
+00100000010000000000001000100000
+00100100011000101000000000000000
+01101000000000001100111010101000
+00100000011110100000000000000000
+00011111111000001111111111111111
+01100000000000001100111010101000
+00100000010000000011111000101000
+00100000011000101000000000000000
+01110000010011101010011100000001
+00100000011000000000000000000000
+11011000010000000000000000001100
+11011010001000000100111010101101
+01101000000000010100111010101011
+00100000001000000110001001001010
+11101000110010010000000000000000
+10011000010001100111110000000000
+00100100011000101000000000000000
+11000010000000000000001000100000
+00100000011000000000000000000000
+01101000000100100000000001111000
+01101000000110100000000001111100
+10011000010000011111111000000000
+00011111111001000111111000000000
+10011010001000010111111000000000
+01100000000100100000000001110000
+00100000011000000000000000000000
+00011010001000100111111000000000
+00100000011110100000000000000000
+00011000010000001000010101100000
+00011000010000001000010101100000
+01111001001111111000010000011100
+01100000000010100100011100000011
+00011111111000100000010000000000
+11011010001000000100011011110000
+00100000010000000111111110100110
+00100100011110100000000000000000
+00011000010000100111111000000000
+00100000001000000111110101111101
+00100000010000000111110110000000
+11011010001000000100011011111000
+00100000010000000111111110010101
+00011111111000100000010000000000
+00100000010000000111110110000100
+00011000010000100111111000000000
+00100000011110100000000000000000
+11000000000100011000001001000101
+11000000000100100000001001001001
+11000000000100101000001001001101
+11000000000001101000001001001111
+11000000000100111000001001011110
+00100000001000000111110110110011
+01101000000000001100100111000011
+01100000000000001100001010000000
+01110000010010010011100011111111
+00100000001000000000011010011100
+01101000000000001100100111000011
+01100000000000001100001010000000
+01111001001111111000000000100110
+00100000001000000100100101111101
+01110000010000101000000000010100
+00100000001000000000011001101101
+01111001001111111000000000100110
+01110000010000010011000100000000
+00011000000010100111111000000000
+01100000000000001100010100111110
+01011000001001100001000000001110
+01100000000000011100010101000001
+01110000010011100101001100000000
+01101000000010010100111001001110
+01100000000010010100010011111000
+00100000010000000101001010100000
+11011010010000000000000000000101
+00100000010000000000001001101000
+00011010010000100111111000000000
+11100000110000001000000000000000
+00100000001000000111111000000111
+01111001001111111000000000100110
+01110000010000010011000100000000
+01110000010011100101001100000001
+01101000000010010100111001001110
+00100000010000000100111101101010
+00011010001000100000101000000000
+01011000000000000000000000000001
+11100000101000001000000000000000
+11011010010000000000000000000100
+00100000001000000000001001011010
+11011010001000000100010000000001
+11101010001000001000000000000000
+00100000011110100000000000000000
+10011000110000001010001000000000
+11101000110000001000000000000000
+11000001000000001000000000000000
+00100000001000000000001001101001
+00100000010000000101100011000101
+00100100001110100111110111100101
+01101000000000001000100110111101
+11000101100001001111110111100000
+11000000000011111000001010010101
+00100000001000000111110111010000
+01110000000010110010101000000011
+00100000010000000000000010110000
+01110000010011100100010101011010
+00100000010000000011110011111100
+01101000000100100000000100111000
+01111001001111111111111000001111
+01100000000100100000000001001100
+00100000010000000011110011110100
+11011000010111111111111111111111
+00100000001000000011110000010001
+01101000000010100100100010011110
+00011100010000100111111000000000
+10011000010001100111111000000000
+11011000010000000000011001000000
+10011000010001101111110000000000
+00100000010000000111111101010011
+00011000000001111111111000000000
+00100000011110100000000000000000
+00011100010000100000010000000000
+01100000000010100100100010011110
+01101000000010010100100010011000
+00011000010100001000010000000000
+10011000010000001111111000000000
+00011111111100001111111000000000
+01100000000000010100100010011000
+00011111111100001111111000000000
+00011111111000010111111000000011
+11000001100000000000000000000000
+00100000010000000000001010110011
+00100100011101100000000000000000
+01101000000000001100001011001111
+11000010100000010000001010010110
+00100000011000000000000000000000
+01101000000100001000000001111000
+01111001001111111111111000000101
+01100000000100001000000001111000
+01110000100010010111000110001111
+01101000000000001100001011010000
+01100000000100001000100101110011
+00100000010000000000001010100001
+01101000000100001000000001111000
+01111001001000000111111000000101
+01100000000100001000000001111000
+00100000011000000000000000000000
+01101000000100001000000001010011
+01111001001000000111111000000111
+01100000000100001000000001010011
+01101000000100001000100101110011
+00011111111000011111111000110000
+01100000000100001000100101110011
+01110000100010010000011001111100
+01110000100010010111001010101010
+00100000000000000001001110001000
+01101000000110010000000101010000
+01101000000100001000000001010011
+01111001001111111111111000000111
+01100000000100001000000001010011
+00011000010100001000010000000000
+01100000000010010100001011010001
+00100000011000000000000000000000
+01111000001101100111110000000000
+00100000011000000000000000000000
+01111000010101100111110000000000
+00100000010000000100101111010000
+00100000010110100000001010110001
+01101000000000001100100101010100
+00100100010110100000001010110001
+00100000011000000000000000000000
+01110000010011101010001100000001
+00100000010000000000001010111101
+01110000010011101010001100000000
+00100000011000000000000000000000
+00100000010000000000000010101011
+00100000011101000000000000000000
+00011111111100001111111000000000
+00011111111000100000110000000000
+00100000010000000000001011100011
+01100000000000001100100010010111
+11000000000000001000001011001110
+11000000000000110000001011111111
+00011111111000100000010000000000
+00011000110000100010001000000000
+01101000000000001100000001000000
+11000011000000000000001011011000
+00011010001000100000110000000000
+11000110100001001000000000000000
+00011000010000100111111000000000
+11000000000000101000001100010110
+00100000001000000011101100110001
+00100000010000000000001011100011
+00100000010000000000001011100011
+01100000000000001000100110111101
+00100000010000000000001011010011
+00100000001000000111110110010000
+00100000010000000000001011100110
+00011000110000100000010000000000
+00011000010100001000010000000000
+01100000000010010100011111000100
+00100000011000000000000000000000
+00011010001000100000110000000000
+11011000101000000000000011110101
+00100000001000000000001011011011
+00100000010000000000001011100011
+00011111111000100111001000000000
+00100000010000000000001011011111
+00100000001000000000001011010011
+00100000010000000000001011100011
+11100000101000001000000000000000
+11000010000000000000001011011111
+00100000011000000000000000000000
+00100000010000000000001011100110
+11101000110000001000000000000000
+00100000011000000000000000000000
+01011000000000000100011111000100
+10011000110001100111110000000000
+00100100011000101000000000000000
+11011000110000000100011100101110
+00100000011000000000000000000000
+11011111001000000000000000000011
+11011000110000000100100010010100
+00011000110000100010001000000000
+01101000000000010100100000101110
+00011111111100001111111000000000
+00011111111000100000101000000000
+00011010001000100000110000000000
+11101000110000001000000000000000
+11100000101000001000000000000000
+00100000010000000000001011111010
+11000010000000000000001011110010
+00011000101000100111111000000000
+00011111111100001111111000000000
+01100000000000010100100000101110
+00100000011000000000000000000000
+01011000000000000100100000101100
+10011000101001100111110000000000
+00100100011000101000000000000000
+11011000101000000100011111001000
+00100000011000000000000000000000
+11000110100100111000000000000000
+00100000010000000000001011100011
+00011111111000100111001000000000
+01100000000000001100100101110000
+00100000001000000000001011011101
+01011000000000000000000000000000
+01100000000000011100111010000101
+00100000011000000000000000000000
+11000110000100110000000000000000
+01101000000000001100010110010101
+00100000011110100000000000000000
+00100000010000000000000010101011
+00100000011101000000000000000000
+00011111111100001111111000000000
+00011111111000100000110000000000
+00100000010000000000001011100011
+01100000000000001100100010010111
+00011000110000100010001000000000
+11000000100000101000001011011000
+00011000110000100010010000000000
+00100000010000000100101111010100
+00100100011110100000000000000000
+00100000001000000000001100011011
+00011000110000100010010000000000
+01101000000000001100111010100011
+00100000011110100000000000000000
+00100000010000000100101111010000
+00100100011110100000000000000000
+01101000000010010100111001001110
+00100000010000000100111101101010
+11000100000000000000000000000000
+01101000000000001100010110010101
+11000001000000000000000000000000
+01101000000000001100111010000011
+00011111111000001111111000000001
+01100000000000001100111010000011
+01101000000000001100111010000101
+00011111111000001000010000000001
+00011000010000010000010000000011
+01100000000010001100111010000101
+00011111111011111111111000000111
+11011000101000000100111010000111
+10011000101000001000101000000000
+00011010010000100000110000000000
+00100000010000000000001011100011
+00011111111000100111001000000000
+00100000010000000000001011011101
+00100000010000000000001100110010
+00100000011101100000000000000000
+01110000000010011011110100011011
+00100000001000000100101111010110
+01111000010101100111110000000000
+01101000000000001100111010100100
+11000001000000101000000000000000
+01111000001101100111110000000000
+00011111111000001111111000000001
+01100000000000001100111010100100
+00011111111001100111110000000001
+00100100011000010000000000000000
+01110000010010001001011001000000
+00100000001000000000001011101011
+01011000000000000100011100101110
+00011111111100001111111000000000
+01100000000000010100011111000100
+01100000000000010100011111000110
+01011000000000000100011111001000
+00011111111100001111111000000000
+01100000000000010100100000101100
+01100000000000010100100000101110
+00100000011000000000000000000000
+01101000000000010100111010101001
+00011111111000001111111000011100
+01100000000000010100111010101011
+00100000011000000000000000000000
+00100000010000000101001001001010
+01110000000010110010101000000000
+01110000000000010110110000000110
+00100000010000000011111001111111
+01011000000000000000001111001000
+01100000000000010100001010010110
+01011000000000000000001010111001
+01100000000000010100001010010000
+01011000000000000000001111000001
+01100000000000010100001010001100
+00100100010101011000001100111100
+00100000010101011000001110001001
+00100000010000000011110100111110
+01101000000000001100111010111010
+00100000001110100000001101100010
+00011111111000001111111111111111
+01100000000000001100111010111010
+01011000000000000111111110000000
+01100000000000010100111010101001
+00100000010000000000001101000101
+01101000000000001100111001010011
+00100100001110100000001101100010
+01101000000000001100111010111001
+00100100001110100000001101100010
+00100000010000000000001000001110
+01101000000000001100111001000101
+11000000001011010000001110011101
+00100000001101011000001110011011
+01101000000000001100001010000000
+01100000000000001100100111000011
+00100000010000000000011000000101
+01101000000000010100111001000001
+00011111111100001111111000000000
+01100000000000010100111001000001
+01101000000000010100111001000011
+00011111111100001111111000000000
+01100000000000010100111001000011
+00100000010000000000001110101000
+00100000010000000000001111100010
+01101000000001000000100111000110
+00100100001110100000001101110110
+01101000000000010100101011010100
+00011111111100001111111000000000
+00100000001110100000001101110110
+01100000000000010100111001000011
+01110000010010001001011000101111
+01101000000000001100111001111000
+00100100001110100000001101111110
+00100000010000000000001010010011
+00100000010000000000001011101011
+00100000010000000000001100000111
+01110000100000101000000000000011
+00100000011000000000000000000000
+00100000010101011011110000101001
+11011001011000000000110100000000
+00110100011100110000001000000000
+00011100010000100111111000000000
+01100000000000011100111001111010
+01101000000000010100011100001011
+11000011100001011000000000000000
+11000011100000110000000000000000
+00100000010000000011110101100000
+00100000010000000000010011110110
+00100000001000000000001110000011
+00011100111000100111111000000000
+11000101100100110000001110010011
+00100000001110100000001110001110
+01110000010010011011100110111011
+00100000011000000000000000000000
+01110000010010011011100100000000
+01101000000000001100100110110111
+00100000011110100000000000000000
+01110000010010011011011100000000
+00100000001000000000001110001100
+00100000001110100000001110010110
+01110000010010011100000100000010
+00100000011000000000000000000000
+01101000000000001100100111000010
+00100000011110100000000000000000
+01110000010010011100001000000000
+01110000010010011100000100000001
+00100000011000000000000000000000
+01110000010010001001011000111100
+00100000001000000000001101110111
+00011100111000100111111000000000
+00100000001110100000001001110111
+00100000010000000101001100001101
+00100000010000000100001011101011
+01011000000000000000000000000000
+01100000000001000100000001000000
+01100000000000010100011100001011
+01100000000000010100100010011000
+01100000000000010100100010011010
+01110000010010001001011000111101
+00100000001000000000001101110111
+00100000010000000110001011000100
+01011000000000000000011111100010
+11011010001000000000100111000110
+11011000010000000000000000001100
+00100000010000000110001100001101
+00100000010000000110001011000111
+01101000000001000000100111000110
+00100000011110100000000000000000
+01101000000000001100001011001111
+11000010100000010000001110110011
+00100000011000000000000000000000
+01101000000010010000100111000110
+01101000000000010000100111001100
+00011000010000100010010000000000
+00011111111000100010001000000000
+10011000010001100010011000000000
+00011010010000100111111000000000
+10011010011001100111111000000000
+00011111111100001111111000000000
+01100000000000010100111001000001
+00011010011010111111111000000000
+10011010001000001111111000000000
+00011111111100001111111000000000
+01100000000000010100111001000011
+00100000011000000000000000000000
+01111000001101000111110000000000
+01101000000100100000000100111000
+01111001001101000111111000011010
+01100000000100100000000001001100
+00100000010000000011110011110100
+01110000000000001001111100000001
+00100000011000000000000000000000
+00011010011000100111111000000000
+00011111111000010111111011110000
+11000001001010000000000000000000
+00011010011000100111111000000000
+01100000000000001100100010010110
+00100000001000000000001011101011
+01110000010010010010011100000000
+01110000010010010011001001001110
+01101000000000100100100100110100
+01100000000000100100100101010000
+00100000001000000000010010010001
+01101000000010001100100100110011
+00100000010000000000001111011001
+00011000010000001000010000000001
+00011000010000010000010000000011
+01100000000010001100100100110011
+00100000011000000000000000000000
+01101000000000001100100101010000
+00011111111000010111111000000011
+00011111111011111010001000000100
+01011000000000000100100100111001
+10011010001000001111111000000000
+10011000010000001000110000000000
+11101000110000001000000000000000
+01100000000000001100100100110010
+00100000011000000000000000000000
+01101000000000100000100111000110
+01100000000000100100100101100000
+00100100011110100000000000000000
+01101000000000100100000101000000
+01100000000000100100100101100000
+00100000011000000000000000000000
+01110000010010011011000000000001
+01110000010010011011001000000000
+01101000000000001100100100101001
+00011111111000010111111000000111
+01100000000000001100100100101001
+00100000011000000000000000000000
+01101000000000001100100100101001
+01111001001000000111111000000100
+01100000000000001100100100101001
+01100000000000001100100011100100
+00100000011000000000000000000000
+01101000000000001100100100101001
+01111001001111111111111000000100
+01100000000000001100100100101001
+00100000011000000000000000000000
+00100000010000000000011000001100
+01101000000000001100100110110100
+11000000000000001000001111111100
+11000000000000010000010000000000
+00100000011000000000000000000000
+01110000010010011011001000000010
+01110000010010011011001100000000
+01110000010010011011000000000000
+00100000001000000000001111101010
+01110000010010011011000100000000
+00100000001000000000001111111101
+01101000000000010100100100101110
+00011111111000001111111000000001
+01100000000000010100100100101110
+11000010100001010000010101110001
+01101000000000001100100110110001
+11000000000000001000010000001011
+01110000010010011011000100000001
+01101000000000001100100110110001
+11000000100000001000001111101010
+01101000000000001100100110110101
+00011111111000001111111000000001
+01100000000000001100100110110101
+11000000000000100000010000010010
+00100000010000000000001111010011
+01110000010010010110111000000010
+00100000001000000000010100110010
+00100000010000000000011000001100
+01110000010010011011010100000000
+00100000001000000000001111101010
+01110000010010011011001000000010
+01110000010010011011000000000001
+01110000010010011011000100000000
+00100000001000000000001111101010
+01101000000000001100100110110100
+11000000000000011000010000010110
+01101000000000001100100100101001
+00101111111011000000000000000100
+00100000001000001000001111101000
+01101000000000001100100110110100
+11000000000000001000010000010101
+11000000000000010000010000010110
+00100000011000000000000000000000
+01101000000000001100100100111000
+11000001111111111000000000000000
+00100000010000000000010000100111
+00100100010101100000010000101111
+00100000011000000000000000000000
+01111000010101100111110000000000
+01101000000000001100100110110000
+11000001100000001000000000000000
+01101000000000001100100110110010
+11000001100000000000000000000000
+01110000010010011011010000000001
+01110000010010010110111000000100
+00100000001000000000001010110001
+01101000000000001100100110110010
+00100000001110100000010000110111
+00011111111000001111111111111111
+01100000000000001100100110110010
+01110000010010011011010000000010
+00100000010000000000001111010011
+01110000010010010110111000000100
+00100000011000000000000000000000
+01110000010010011011010000000011
+01101000000000001100100110110001
+00100100001110100000010000001001
+00100000010000000000001111010011
+01110000010010010110111000000010
+00100000011000000000000000000000
+11000110100100110000000000000000
+01111001001000000000000000100111
+01101000000010100100100101001001
+00011100010000100111111000000000
+10011000010001100111110000000000
+00100100010000010000010001010110
+00011111111000100010010000000000
+01101000000000100100100101001001
+01101000000010001100100101001101
+10011000010000001000010000000000
+00011010010000100111111000000000
+10011000010001100111110000000000
+00100100001000010000010001010100
+01111001001111111111111000011100
+01100000000000100100100101001001
+00100000010000000000010001011001
+00100000010000000000010001100110
+00100000001101000000010011000001
+00100000010000000000010000100010
+00100000010000000000010100110010
+01101000000000001100100100111000
+00011111111001100111110011111111
+00100000010000101000011000010110
+01111001001111111000000000100111
+00100000011000000000000000000000
+00100000011000101000000000000000
+01111001001000000111111000011100
+00100000011000000000000000000000
+01101000000000001100100101100100
+00011111111000001111111000000001
+01100000000000001100100101100100
+11000000000000100000010001011111
+11000000000000101000010001100010
+00100000011000000000000000000000
+01101000000000001100100101001111
+01100000000000001100100101001101
+00100000011000000000000000000000
+01110000010010010110010000000000
+01101000000000001100100101001110
+01100000000000001100100101001101
+00100000011000000000000000000000
+01101000000000001100100100111000
+11000000111111111000011001110001
+00100000010000000000001010111101
+00100000001101000000010001111000
+01101000000000001100100010010111
+11000000100000110110010011000000
+01101000000000001100111010000000
+00100000010110100000010011011100
+01101000000000001100111010000000
+00100100010110100000010001110100
+00100000010000000000010001111101
+00100000010000000000010010011110
+01110000010010010010110100000001
+00100000011000000000000000000000
+01110000010011100111100100000000
+01110000010011100111100000000000
+01110000010010011011101000001010
+00100000011000000000000000000000
+01101000000000001100111001111000
+00100100001110100000010001111101
+01101000000000001100100100101101
+11000000000000001011000111010100
+00100000011000000000000000000000
+01101000000000001100100110111001
+01100000000000001100100110111000
+01101000000000001100100101110000
+00011111111000100010001000000000
+11011010010000000100100101110001
+01110000010010010101010000000000
+00100000010000000000001111101010
+01100000000000001100100110010000
+00011010001000001000010000000001
+11011000101000000100100110010001
+00011010001000100111001000000000
+00011010010000100000110000000000
+00100000010000000111111011001101
+11011010001000000100100110010000
+11000110100100111000000000000000
+01100000000010001100100100101000
+00011000010000100111001000000000
+11011000101000000100100011000100
+00011010001000100000110000000000
+00100000001000000111111011001101
+11011010001000000000000000000000
+11011111001000000000000000000100
+11011000110000000100100101010000
+11101000110000001000000000000000
+10011010001000001010001000000000
+11000010000000000000010010010100
+00011010001000100111111000000000
+01100000000000010100100110111011
+01101000000000001100100110111011
+01101000000010001100100110111100
+10011000010000001111111000000000
+01100000000000001100100110111101
+00100000011000000000000000000000
+01101000000000001100100100101000
+00011111111000001111111000000010
+01100000000000001100100100101010
+01101000000000001100100100101001
+01100000000000001100100011100100
+01101000000000001100100100101000
+00011111111010011111111000000000
+01101000000010001100100100100111
+00011000010000010000010000000011
+00011000010000111000010000000000
+10011000010000011111111000000000
+01101000000010001100100101100101
+10011000010000001111111000000000
+11100000101000001000000000000000
+01101000000000001100100100101000
+10011000000000000111001000000000
+11011000110000000100100011000100
+00100000001000000111111011001101
+01110000010010010101010000000001
+01110000010010011011000100000000
+00100000010000000000001111101010
+01100000000000001100100110010000
+01011000000000000000000000000000
+01100000000000111100100110010001
+01101000000000100100100101100000
+01100000000000100100100110011000
+11011000010000000000000000001100
+11011010001000000100100110010000
+00100000010000000000010010001011
+01101000000000001100100100101001
+01111001001000000111111000000011
+01100000000000001100100100101001
+00100000010000000000010010011110
+00100000010000000000010001110010
+00100000001000000000010001010000
+01101000000000001100111001111000
+00100000001110100000010011000101
+00100000010000000000010011101111
+00100000001000000000010100001110
+01101000000000001100100101010100
+00100000001110100000010010110000
+01101000000010001100100110111000
+00011000010000001000010000000001
+01100000000010001100100110111000
+01101000000000001100100110111001
+10011000010001100111110000000000
+00100000011000010000000000000000
+01110000010010011011100000000000
+00100000010000000000000010100000
+00100100011101000000000000000000
+01101000000000001000101100101011
+00100100011110100000000000000000
+01101000000000001100100110111010
+00100100011110100000000000000000
+01110000010011101000000000000000
+00100000010000000011101111100010
+01101000000000011100001000001111
+00100000011110100000000000000000
+01101000000001000100100101011000
+00100000010000000111111100010110
+01100000000010100100000111111011
+00100000001000000011110000010001
+01101000000000001100001010111000
+00101111111011000000000000000010
+00100000001000001000010011100110
+01101000000000001100111001111001
+11000001000000101000000000000000
+00011111111000001111111000000001
+01100000000000001100111001111001
+11000001100000101000000000000000
+01110000010011100111100000000001
+00100000011000000000000000000000
+01101000000000001100111001111001
+11000001000010100000000000000000
+00011111111000001111111000000001
+01100000000000001100111001111001
+11000001100010100000000000000000
+01101000000000001100001010111000
+01111001001000000111111000000010
+01100000000000001100001010111000
+00100000001000000000010011100100
+01101000000000001100111001111001
+00100000011110100000000000000000
+00011111111000001111111111111111
+01100000000000001100111001111001
+00100100011110100000000000000000
+01110000010011100111100000000000
+00100000011000000000000000000000
+01111001001000000000000000100111
+00100000010000000000001010111101
+00100000001101000000010011111011
+01101000000000001100100010010111
+11000000000000110000010100001010
+01101000000000001100111001111101
+11000000000000001000010100000010
+11000000000000010000010011000001
+11000000000000011000010100000000
+00100000011000000000000000000000
+01110000010011100111100100000000
+01110000010011100111100000000000
+00100000010000000000010011011100
+01110000010011100111110100000000
+11011111001000000000000000000111
+00011111001000100111111000000000
+01100000000000001100100101110000
+11011000110000000100111000100001
+00100000010000000111111011001101
+01111000010101000111110000000000
+00100000010000000000010001101100
+00100000010000000000010000100010
+00100000010000000000010100110010
+00100000010000000000011000010110
+00100000010000000011101111100010
+01101000000000011100001000001111
+00100000011110100000000000000000
+01101000000000001100000100110001
+00100000011110100000000000000000
+01101000000000001100111010000000
+11000000000000001000010100010111
+01011000000000000000000000000000
+01100000000001000000000010100000
+00100000010000000000010100100111
+11011001011000000000110100000000
+00110100011100110000001000000000
+01101000000010011100111001111010
+00011100010000100111111000000000
+10011000010001100111111000000000
+00011111111000010111111011111111
+11011000010000000000111010100110
+10011000010011111000010000000000
+01101000000000100100111001110100
+10011000010001100111111000000000
+00100000001000010011110001111111
+01101000000000001100001000011000
+00011111111000001111111000000001
+01100000000000100100000111111011
+00100000001000000011110010000110
+01011000000000010011110001101000
+01100000000000100100111001110100
+01101000000000001100111001111110
+00011111111000001111111000000001
+11000000100000101000010100101101
+01011000000000000000000000000000
+01100000000000001100111001111110
+11000100000000000000000000000000
+01011000000000010011000010110000
+01100000000000100100111001110100
+00100000011000000000000000000000
+01110000010010010011000100000000
+11011001011000000000110100000000
+00110100011100110000001000000000
+00100000010000000000010101001010
+01101000000000001100100101100101
+11000001000000001000000000000000
+00100100001011000000010101011001
+00100100001101111000010101011001
+00100000010000000000010101111000
+00100000010000000000011000001000
+01101000000000001100100100100111
+00011111111000001111111000000001
+01100000000000001100100100100111
+01101000000000001100100100111000
+11000000111111111000010101001000
+00100000010000000000010000011001
+01011000000000000000000000000000
+01100000000000010100100100101110
+01100000000000001100100100110000
+01100000000000001100100110110011
+01110000010010010010110100000000
+00100000011000000000000000000000
+00100000010000000000011000000101
+00100000001000000000011010001100
+01111000010101111111110000000000
+00100000010000000000010110011000
+01101000000000001100100101100101
+11000000000000001000010101010111
+00011000000000000010101000000000
+01101000000000100100100101010000
+10011000000000000001001000000000
+01101000000010001000000000010111
+00100000010000000011100110111001
+00100000010000000011100110111111
+00100000010000000000010111000010
+00100000010101111000011000000001
+00100000011000000000000000000000
+00100000010000000000011000000001
+00100000001000000000010100111100
+01101000000000001100100100110000
+00011111111000001111111000000001
+01100000000000001100100100110000
+01101000000000001100100100111000
+11000000111111111000010101101101
+01101000000010001100100100110001
+00011000010000001000010000000001
+01100000000010001100100100110001
+01101000000000001100100101101110
+10011000010001100111111000000000
+00100100001110100000010100110011
+01101000000000001100100110110100
+11000000000000011000010000000010
+01101000000000001100100110110011
+00011111111000001111111000000001
+01100000000000001100100110110011
+11000000000000010000001111110111
+00100000010000000000001111101110
+01110000010010010110111000000001
+00100000001000000000010100110010
+01101000000000001100100100110000
+11000001111111111000000000000000
+01110000010010010011000000000000
+00100000001000000000010101110110
+01011000000000000000000000000000
+01100000000000010100100100101110
+01110000010000010011000100000000
+01110000010011100111100100000000
+01110000010011100111100000000000
+01110000010010001001011000111011
+00100000001000000000001011101011
+00100000010000000000010101111111
+01101000000000001100100100100110
+00100000011110100000000000000000
+10011000000000000111001000000000
+11011000110000000100100010100100
+11011000101000000100100100000110
+00100000001000000111111011001101
+01101000000000001100100010100011
+00011111111010010111111000000000
+01100000000000001100100100100110
+00011111111000001111111000000001
+11011000110000000100100010100011
+10011000110000001000110000000000
+11101000110000011000000000000000
+01100000000000011100100101100110
+01101000000000001100100010100011
+00011111111000110111111000000000
+00011111111000010111111000000011
+01100000000000001100100101101100
+00100000011000000000000000000000
+01111000010001001111110000000000
+01111000010000111111110000000000
+01011000010101010101010101010101
+10011000000000000001111000000000
+01101000000000001100100100110010
+00011111111011011000010000000000
+01111001001000000000010000000001
+00011000010000110001110000000000
+00100000011000000000000000000000
+00100000010000000011100110110001
+01101000000010001100100100110010
+00100000001000000011100111001001
+00100000010000000100100101110110
+01101000000000100100100101010000
+10011000000000000001001000000000
+00100000010000000000010110001100
+00100000010000000000010110010101
+01111001001000000010101000000000
+01111000001011101111110000000000
+01111000001100000111110000000000
+01111000010100001111110000000000
+00011001001100010111111000000000
+00011111111011001111111000000000
+00011111111100011111111000000000
+00001000000000001000011000101000
+01111000010011101111110000000000
+01111000001011011111110000000000
+01111000001000111111110000000000
+01111000001001001111110000000000
+01101000000000001100100110111101
+00001000000000001000011000001000
+01101000000000001100100100101010
+10011000000000000111001000000000
+11011000110000000100100011100100
+11101000110000001000000000000000
+00001000000000001000011000001000
+11000010000000000000010110101110
+01111000001001000111110000000000
+00001000000000001000011000011000
+01111000010001000111110000000000
+00110111110100111000001000000000
+00100000000000000000000001100100
+01111000010011101111110000000000
+01111000010011011111110000000000
+00100000011000000000000000000000
+00100000010000000100100101110110
+01101000000000100100100101010000
+10011000000000000001001000000000
+00100000010000000011100110110001
+01101000000010001100100100110010
+00100000010000000011100110111001
+01011000000000000000010100000000
+00100000010000000011101100110101
+00100000010000000011100110111111
+00100000010000000000010110001100
+01111000010101111111110000000000
+01111000001001101111110000000000
+01111000001100001111110000000000
+01111000010100000111110000000000
+01111000001010000111110000000000
+01101000000000010100100100101011
+10011000000000000011011000000000
+00110111110000011000010000000000
+00100100001011000000011000000100
+01111000010001101111110000000000
+01111000001001011111110000000000
+01111000001000111111110000000000
+01111000001001001111110000000000
+00001001100000000000000000001000
+00011001100010010111111000000000
+01100000000000001100100110111110
+00100000010000000000010010010001
+01101000000010001100100110111110
+10011000010001100111110000000000
+00100100001000101000011000000001
+00001001100000000000000000001000
+00011001100010010111111000000000
+01100000000000001100100010100010
+01101000000000001100100101101111
+00011111111001100111110000000010
+00100000001000101000010111100001
+01101000000000001100100010100010
+01101000000010001100100100101001
+10101000010000000000111000000000
+00100100001000001000011000000001
+00001001100000000000000000001000
+00011001100010010111111000000000
+11100000101000001000000000000000
+00011111111010010111111000000000
+00011111111000010111001000011111
+00100000001000101000010111101011
+00001001100000000000000000001000
+00011001100010010111111000000000
+11100000101000001000000000000000
+11000010000000000000010111100111
+00011000101000100010001000000000
+00001001100000000000000000001000
+00011001100010010111111000000000
+01100000000000001100100111001111
+00011010001000100000101000000000
+00001001100000000000000000011000
+01111000001010000111110000000000
+11011011011000000000011001100100
+00011111111011110111111000000000
+00011111111100010111111000000000
+11100000101000011000000000000000
+01111000010001011111110000000000
+00100000001000110000011000000001
+01111000001101111111110000000000
+01101000000000001000000000010111
+00011111111000001010001000000000
+00100000010000000011101000010011
+01111000010001101111110000000000
+00100000010000000011100110110001
+01101000000000001100100111001111
+00011111111000100010001000000000
+00100000001000000000011001010100
+01111000010011011111110000000000
+01111000010001011111110000000000
+00100000001000000011011011000110
+00100000001000000000011000000001
+01110000010010011100010000000001
+01110000010010011100010100000000
+00100000011000000000000000000000
+01101000000000001100100111000101
+00011111111000001111111000000001
+01100000000000001100100111000101
+00100000011000000000000000000000
+01101000000000001100100111000101
+00011111111001100111110000000001
+00100100010000010000011000010100
+01101000000000001100100111000101
+11000001000000000000000000000000
+00011111111000001111111111111111
+01100000000000001100100111000101
+00100000011000000000000000000000
+01110000010010011100010100000010
+00100000011000000000000000000000
+11011010001000000100100111000110
+00100000010000000000011001011101
+01100000000010001100100111010000
+00101000000011111111111000100110
+00100000010000001000011000100100
+00100100010000001000011000101000
+10011000010001100111110000000000
+00100100001000010000011001000001
+01101000000000001100100111000101
+00011111111001100111110000000001
+00100100001000010000011000101100
+01101000000000001100100111000101
+11000000000000000000011001000001
+00100000011000000000000000000000
+01011000000000000000000010000010
+00100000011000000000000000000000
+01011000000000000000000001110111
+00100000011000000000000000000000
+01011000000000000000000010000000
+00100000011000000000000000000000
+01011000000000000000000001110101
+00100000011000000000000000000000
+01101000000000001100100111000101
+11000001101000110000000000000000
+01110000010010011100010100000000
+01101000000010001100100111010000
+00101000000011111111111000100110
+00100000010000001000011000100110
+00100100010000001000011000101010
+10011000010001100111110000000000
+00100100011000010000000000000000
+01101000000000001100100111000100
+11000000000000000000011001001101
+00011111111000001111111111111111
+01100000000000001100100111000100
+11000000000000000000011001001101
+01110000100010010101010111010000
+01110000100010010101011011100000
+01110000100010010101011101001100
+01110000100010010101100001101100
+01110000100010010101100101010000
+01110000010000101000000000000001
+00100000011000000000000000000000
+01101000000000001100100111000100
+11000000000000010000011001000110
+00011111111000001111111000000001
+01100000000000001100100111000100
+11000000000000001000011000111010
+01110000100010010101010111010000
+01110000100010010101011011100000
+01110000100010010101011101001100
+01110000100010010101100000111100
+01110000100010010101100100010000
+01110000010000101000000000000100
+00100000011000000000000000000000
+01110000100010010101010111010000
+01110000100010010101011011000000
+01110000100010010101011101001100
+01110000100010010101100001101100
+01110000100010010101100101010000
+01110000010000101000000000010000
+00100000011000000000000000000000
+01101000000010001100100111001110
+01011000000000000100100111000110
+10011000010000001000101000000000
+00011010001000100111111000000000
+11100000101000001000000000000000
+00011000010000001000010000000001
+00011000010000010000010000000111
+01100000000010001100100111001110
+00100000011000000000000000000000
+11011000010000000000000000000000
+11011111001000000000000000001000
+00011010001000100000110000000000
+11101000110000001000000000000000
+10011000010000001000010000000000
+11000010000000000000011001100000
+00011000010010010111111000000000
+00011111111000100000010000000000
+11000110100100110000000000000000
+00011111111001101111110000001010
+00100000010000000111111101010011
+00011000000001111111111000000000
+00011111111100100111111000000000
+00011000000001110000010000000000
+10011000010000011000010000000000
+00100000011000000000000000000000
+01111001001000000000000000100110
+00100000010000000000001111001110
+01110000010010010011100000000001
+00100000011000000000000000000000
+01101000000000001100100100101101
+11000000000000001011000111010100
+01101000000000001100100100111000
+11000000000000001000011001111000
+11000000000000010000011001111011
+11000000000000011000011001111110
+00100000001000000011101100110001
+01110000010010010011100000010001
+01110000010010011001000010101010
+00100000001000000000011010000000
+01110000010010010011100000010010
+01110000010010011001000001010101
+00100000001000000000011010000000
+01110000010010010011100000010011
+01110000010010011001000000100010
+01101000000000001100100100101001
+00011111111000010111111000000111
+01100000000000001100100110010001
+01101000000000100100100101100000
+01100000000000100100100110010010
+01110000010010011001011000000000
+11011010001000000100100110010000
+11011000010000000000000000000111
+00100000010000000000010010001011
+00100000010000000000010010011110
+00100000010000000000010001110010
+00100000001000000011000111010100
+01101000000000001100100100111000
+11000001011111111000000000000000
+11000000000010001000011010010010
+11000000000010010000011010010100
+11000000000010011000011010010110
+00100000011000000000000000000000
+01110000010010010011100000000010
+00100000001000000000010101000010
+01110000010010010011100000000011
+00100000001000000000010101000010
+01110000010010010011100011111111
+01110000010010001001011000111001
+00100000010000000000001011101011
+01101000000000100100100100001000
+00100000010000000000001111010001
+00100000001000000000010101000010
+01111001001111111000000000100110
+00100000010000000000001111010011
+01101000000000100100100101010000
+00100000010000000000010010010001
+01101000000000001100100100111000
+11000001111111111000000000000000
+00100000010000000000011010110010
+01011000000000000000000000000000
+01100000000000010100100101010110
+00100000000000000000011111010000
+01101000000000001100100101010110
+11000000011111111000010101110110
+00100000010000000000010101001010
+00100100001011000000011010111100
+00100100001101111000011010111100
+01110000010000010011000100000001
+01111001001000000000000000100110
+01011000000000000000000000000000
+01100000000000010100100101010110
+01110000000010011011110100111010
+00100000010000000111110110000110
+00100000001000000111111000001101
+01111001001000000000000000100111
+01110000010010011001000011111111
+01101000000000001100100100101001
+01100000000000001100100110010001
+01101000000000100100100101100000
+01100000000000100100100110010010
+11011000010000000000000000000110
+11011010001000000100100110010000
+00100000010000000000010010001011
+00100000001000000000010010011110
+01101000000000010100100101010110
+00011111111000001111111000000001
+01100000000000010100100101010110
+00100000010000000000001111010011
+00100000001000000000011010100101
Index: Standard_mouse/btms/output/eeprom.dat
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/eeprom.dat	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/eeprom.dat	(working copy)
@@ -0,0 +1,8055 @@
+00
+02
+aa
+55
+06
+1b
+c5
+12
+80
+0f
+c0
+00
+00
+24
+c0
+01
+80
+2f
+c0
+43
+00
+35
+c0
+45
+00
+3f
+c0
+45
+80
+61
+c0
+53
+80
+6d
+c0
+54
+00
+74
+c0
+54
+80
+88
+c0
+56
+00
+9b
+c0
+5a
+03
+49
+c0
+5a
+80
+b4
+c0
+5b
+00
+bb
+c0
+5b
+80
+dd
+20
+20
+3b
+34
+c0
+02
+81
+17
+c0
+0b
+01
+1c
+c0
+0d
+81
+20
+c0
+11
+81
+23
+c0
+17
+81
+47
+c0
+18
+81
+5c
+c0
+19
+01
+6e
+c0
+19
+81
+81
+c0
+1c
+81
+92
+c0
+1e
+01
+9f
+c0
+1e
+81
+b2
+c0
+1f
+01
+b8
+c0
+1f
+81
+d1
+c0
+21
+01
+ef
+c0
+26
+81
+f4
+c0
+4a
+82
+25
+c0
+79
+82
+2c
+c0
+7b
+82
+38
+c0
+7c
+02
+6f
+c0
+7c
+82
+75
+20
+20
+3b
+34
+20
+80
+00
+00
+24
+35
+b0
+04
+68
+00
+c5
+95
+24
+3a
+00
+2d
+68
+00
+ce
+78
+20
+3a
+30
+04
+70
+4e
+7f
+00
+c5
+93
+30
+04
+24
+35
+b0
+04
+70
+82
+80
+03
+20
+20
+30
+04
+20
+40
+02
+7f
+20
+40
+04
+3d
+20
+40
+02
+bd
+68
+00
+ce
+78
+24
+3a
+03
+83
+20
+20
+30
+1b
+20
+30
+b9
+a3
+70
+89
+55
+d4
+20
+00
+00
+04
+70
+89
+55
+d2
+20
+00
+00
+04
+70
+89
+55
+d1
+20
+00
+00
+04
+68
+00
+c2
+80
+c0
+0a
+39
+ae
+20
+20
+39
+9c
+60
+08
+80
+17
+18
+40
+a2
+00
+20
+40
+3a
+13
+58
+00
+05
+00
+20
+40
+3b
+35
+70
+89
+06
+01
+70
+89
+00
+3c
+70
+89
+01
+e0
+70
+89
+6d
+12
+20
+00
+00
+0a
+70
+89
+02
+01
+70
+89
+02
+3d
+20
+00
+00
+0a
+70
+89
+03
+b7
+20
+00
+00
+0a
+70
+89
+02
+7f
+68
+00
+c2
+80
+c0
+0a
+00
+5e
+c2
+80
+80
+58
+c2
+81
+00
+58
+70
+89
+4c
+5b
+70
+89
+4d
+96
+70
+89
+4e
+2c
+70
+89
+4f
+46
+20
+20
+00
+5c
+70
+89
+4c
+fb
+70
+89
+4d
+ef
+70
+89
+4e
+ec
+70
+89
+4f
+5e
+68
+00
+c2
+80
+20
+20
+39
+dc
+70
+89
+56
+c2
+70
+89
+55
+d0
+20
+60
+00
+00
+20
+40
+3c
+d2
+20
+40
+3a
+5f
+70
+80
+42
+06
+68
+10
+89
+68
+79
+20
+7e
+07
+60
+10
+89
+68
+79
+3f
+fe
+07
+60
+10
+89
+68
+79
+20
+7e
+07
+60
+10
+89
+68
+70
+80
+42
+05
+20
+20
+3a
+0c
+20
+40
+3c
+2b
+68
+00
+ce
+45
+20
+7a
+00
+00
+70
+4e
+45
+00
+1c
+42
+7e
+00
+60
+02
+48
+9e
+20
+60
+00
+00
+c6
+13
+00
+00
+20
+40
+3b
+e2
+68
+01
+c2
+0f
+20
+7a
+00
+00
+68
+01
+40
+42
+d8
+40
+ff
+ff
+98
+46
+7c
+00
+20
+62
+80
+00
+68
+00
+c1
+31
+20
+7a
+00
+00
+20
+40
+48
+16
+24
+7a
+00
+00
+20
+40
+3d
+0e
+24
+7a
+00
+00
+20
+40
+3a
+7b
+68
+00
+c6
+e2
+20
+3a
+3c
+5e
+68
+00
+c6
+39
+20
+7a
+00
+00
+20
+20
+3c
+5e
+68
+00
+c5
+95
+20
+3a
+00
+95
+68
+00
+80
+9f
+24
+3a
+00
+95
+68
+00
+ce
+83
+68
+08
+ce
+84
+98
+46
+7c
+00
+24
+62
+80
+00
+68
+00
+ce
+81
+24
+7a
+00
+00
+58
+00
+00
+00
+60
+04
+00
+a0
+20
+20
+3c
+6a
+20
+40
+00
+a0
+24
+74
+00
+00
+68
+00
+8b
+2b
+24
+7a
+00
+00
+70
+49
+c1
+00
+20
+20
+3c
+6a
+20
+40
+00
+a0
+24
+74
+00
+00
+68
+00
+8b
+2b
+24
+7a
+00
+00
+20
+20
+3c
+8c
+20
+40
+00
+ab
+24
+74
+00
+00
+20
+40
+00
+a8
+24
+74
+00
+00
+70
+0b
+2b
+01
+70
+0b
+2a
+01
+20
+40
+00
+b0
+20
+20
+00
+ab
+68
+01
+48
+2c
+68
+09
+48
+2e
+20
+20
+00
+ad
+68
+01
+47
+c4
+68
+09
+47
+c6
+98
+46
+7c
+00
+20
+22
+e4
+c0
+20
+20
+31
+d4
+68
+00
+8b
+2a
+20
+00
+00
+0a
+c0
+80
+00
+b0
+20
+60
+00
+00
+70
+00
+16
+27
+70
+01
+50
+00
+70
+01
+7e
+00
+70
+01
+7f
+00
+58
+00
+00
+00
+60
+02
+88
+d2
+20
+60
+00
+00
+da
+20
+46
+f0
+20
+40
+7f
+95
+20
+7a
+00
+00
+1f
+e2
+26
+00
+20
+40
+00
+c1
+20
+20
+3d
+9b
+c1
+0c
+00
+00
+c0
+0a
+00
+c6
+c0
+0a
+80
+d0
+c0
+14
+80
+db
+20
+20
+3d
+73
+70
+4e
+83
+00
+70
+42
+12
+00
+70
+4e
+bb
+00
+70
+4e
+51
+14
+20
+40
+3e
+61
+20
+40
+3e
+59
+20
+40
+3e
+7f
+20
+40
+3e
+20
+70
+4e
+b9
+01
+20
+20
+3d
+c2
+70
+4e
+a4
+00
+20
+40
+03
+04
+70
+44
+b2
+00
+70
+42
+12
+00
+70
+4e
+bb
+00
+70
+4e
+51
+00
+70
+45
+6a
+00
+68
+09
+4e
+4e
+60
+09
+44
+f8
+20
+40
+52
+a0
+20
+20
+3d
+c6
+20
+40
+01
+05
+20
+20
+7e
+3b
+60
+08
+82
+4e
+68
+00
+c8
+9c
+1f
+e0
+fe
+01
+60
+00
+c8
+9c
+68
+00
+82
+4e
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+82
+4e
+20
+40
+01
+08
+20
+40
+00
+eb
+20
+40
+01
+11
+20
+40
+00
+f7
+20
+40
+00
+fe
+20
+20
+00
+e1
+68
+00
+ce
+bb
+20
+7a
+00
+00
+68
+00
+c2
+12
+2f
+e1
+fe
+20
+24
+40
+80
+f5
+68
+00
+c1
+31
+20
+5a
+00
+f3
+20
+60
+00
+00
+70
+41
+31
+01
+20
+60
+00
+00
+70
+42
+12
+20
+20
+60
+00
+00
+68
+00
+c9
+ba
+20
+7a
+00
+00
+70
+4e
+80
+00
+1f
+e0
+ff
+ff
+60
+00
+c9
+ba
+24
+7a
+00
+00
+20
+60
+00
+00
+68
+00
+ce
+82
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+ce
+82
+24
+7a
+00
+00
+70
+4e
+81
+00
+20
+60
+00
+00
+20
+40
+3e
+7f
+70
+09
+bd
+12
+20
+20
+7d
+90
+68
+00
+ce
+51
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+ce
+51
+24
+7a
+00
+00
+70
+42
+12
+20
+70
+41
+31
+01
+70
+4e
+bb
+01
+20
+60
+00
+00
+68
+00
+ce
+52
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+ce
+52
+24
+7a
+00
+00
+20
+20
+3e
+6d
+20
+40
+49
+68
+20
+40
+4b
+51
+20
+40
+4b
+d8
+20
+40
+06
+16
+20
+20
+49
+45
+20
+40
+3a
+50
+1f
+e2
+22
+00
+20
+40
+06
+54
+20
+20
+4a
+3d
+68
+02
+4e
+48
+60
+02
+45
+96
+20
+20
+4a
+8c
+70
+41
+31
+01
+68
+01
+03
+7c
+68
+09
+03
+82
+98
+46
+7e
+00
+60
+01
+09
+be
+68
+00
+83
+62
+79
+3f
+fe
+05
+79
+3f
+fe
+03
+60
+00
+83
+62
+68
+02
+03
+66
+68
+09
+03
+64
+60
+09
+09
+c6
+98
+46
+22
+00
+68
+00
+c4
+5b
+60
+00
+83
+8d
+e8
+c9
+00
+00
+e8
+c1
+00
+00
+1f
+eb
+fe
+00
+60
+01
+03
+64
+18
+4b
+84
+00
+98
+40
+fe
+00
+e8
+ca
+00
+00
+60
+0a
+03
+8e
+9a
+20
+fe
+00
+1f
+e2
+28
+00
+68
+01
+03
+64
+68
+09
+09
+c6
+98
+46
+7e
+00
+68
+09
+09
+be
+98
+4f
+fe
+00
+9a
+80
+fe
+00
+60
+02
+03
+66
+20
+40
+51
+99
+68
+01
+03
+90
+60
+01
+45
+61
+20
+60
+00
+00
+68
+00
+83
+79
+c2
+82
+81
+58
+20
+40
+06
+08
+70
+4e
+62
+00
+68
+00
+ce
+20
+24
+3a
+01
+52
+68
+00
+ce
+a5
+c0
+00
+81
+56
+68
+00
+83
+03
+20
+3a
+4b
+de
+20
+20
+4f
+87
+68
+00
+ce
+20
+1f
+e0
+ff
+ff
+60
+00
+ce
+20
+20
+20
+4f
+87
+70
+4e
+20
+03
+20
+20
+4b
+de
+68
+00
+ce
+62
+1f
+e0
+fe
+01
+60
+00
+ce
+62
+20
+20
+06
+0c
+68
+00
+c4
+67
+c0
+03
+01
+60
+c0
+01
+01
+67
+20
+20
+4b
+fb
+68
+00
+ce
+53
+c0
+00
+81
+64
+20
+40
+3e
+6d
+20
+20
+4c
+86
+20
+40
+01
+05
+70
+4e
+52
+03
+20
+20
+4c
+90
+58
+00
+00
+13
+e0
+a0
+80
+00
+20
+40
+4c
+58
+58
+00
+00
+0a
+60
+01
+03
+90
+60
+01
+45
+61
+20
+60
+00
+00
+68
+00
+c4
+6b
+c0
+01
+01
+75
+c0
+03
+01
+7c
+c0
+03
+81
+73
+20
+20
+4c
+18
+70
+4e
+a5
+00
+20
+20
+4d
+17
+59
+00
+03
+02
+60
+01
+c4
+dc
+58
+00
+00
+01
+e0
+a0
+80
+00
+58
+01
+00
+10
+e0
+a1
+80
+00
+20
+20
+4c
+cd
+70
+09
+bd
+29
+20
+40
+7d
+86
+70
+09
+bd
+47
+20
+40
+4b
+d6
+20
+20
+4d
+01
+68
+00
+c4
+6b
+c0
+0d
+81
+85
+c0
+0e
+81
+85
+20
+20
+4c
+2b
+68
+09
+4e
+4e
+60
+09
+44
+6c
+68
+00
+ce
+86
+1f
+e0
+84
+01
+18
+41
+04
+03
+60
+08
+ce
+86
+1f
+ef
+fe
+07
+d8
+c0
+4e
+87
+98
+c0
+8c
+00
+e8
+c3
+80
+00
+60
+03
+c4
+6e
+d8
+40
+00
+0e
+20
+20
+4f
+89
+60
+08
+c4
+66
+28
+20
+06
+02
+24
+20
+81
+97
+18
+40
+ff
+fc
+60
+01
+44
+67
+68
+08
+83
+79
+20
+40
+01
+9a
+20
+20
+4f
+92
+68
+00
+ce
+a5
+c0
+00
+81
+9d
+20
+20
+4b
+d0
+58
+00
+00
+00
+20
+60
+00
+00
+1a
+62
+7e
+00
+c0
+00
+01
+a5
+c0
+01
+01
+a8
+c0
+01
+81
+ac
+c0
+05
+01
+b0
+20
+20
+4f
+b9
+70
+41
+31
+00
+70
+4e
+51
+3c
+20
+20
+50
+1f
+20
+40
+50
+33
+58
+00
+00
+00
+60
+04
+45
+44
+20
+60
+00
+00
+20
+40
+50
+39
+68
+00
+c5
+6a
+c1
+01
+00
+00
+20
+20
+64
+18
+70
+09
+bd
+2b
+20
+20
+4b
+d6
+e8
+c0
+80
+00
+c0
+00
+81
+b5
+20
+20
+4f
+fe
+70
+4e
+a5
+01
+70
+4e
+20
+03
+20
+20
+50
+69
+e8
+c1
+80
+00
+60
+01
+83
+9a
+c0
+09
+01
+bc
+20
+20
+50
+11
+70
+41
+31
+01
+20
+40
+01
+c8
+68
+00
+83
+9b
+1f
+e6
+7c
+60
+20
+22
+81
+cd
+70
+4e
+a6
+00
+20
+40
+51
+25
+24
+62
+80
+00
+68
+00
+ce
+a6
+24
+5a
+01
+cf
+70
+09
+bd
+13
+20
+20
+4b
+d6
+68
+00
+83
+03
+1f
+e0
+ff
+f9
+1f
+e2
+72
+00
+1f
+22
+24
+00
+20
+20
+51
+35
+70
+4e
+a6
+01
+20
+20
+01
+c2
+70
+09
+bd
+29
+20
+20
+7d
+86
+68
+00
+c3
+ff
+20
+7a
+00
+00
+d8
+e0
+00
+01
+20
+40
+7e
+e2
+24
+7a
+00
+00
+78
+54
+fc
+00
+78
+28
+7c
+00
+20
+40
+4b
+1e
+20
+40
+49
+d4
+20
+40
+4a
+8a
+24
+36
+81
+e3
+68
+00
+80
+03
+1f
+e0
+fe
+01
+60
+00
+80
+03
+68
+00
+83
+02
+1f
+e1
+7e
+0f
+c0
+01
+81
+ed
+c0
+02
+d1
+af
+68
+00
+80
+16
+c0
+93
+d1
+7d
+18
+0a
+7e
+00
+d8
+40
+01
+ff
+98
+41
+7e
+00
+1f
+e0
+fe
+fa
+1f
+e0
+ff
+ff
+20
+00
+00
+26
+24
+3a
+01
+e9
+20
+20
+51
+96
+20
+40
+4a
+c5
+20
+20
+01
+e3
+68
+02
+45
+96
+d8
+40
+ea
+60
+98
+40
+fe
+00
+60
+02
+45
+96
+20
+20
+51
+a9
+78
+55
+fc
+00
+20
+37
+01
+f7
+24
+36
+82
+06
+20
+40
+3c
+b7
+68
+01
+41
+61
+60
+01
+03
+70
+68
+00
+83
+02
+2f
+e0
+06
+01
+24
+20
+bc
+cb
+68
+00
+c4
+65
+2f
+e0
+06
+01
+24
+20
+bc
+cb
+20
+40
+4b
+d0
+24
+3a
+3c
+cb
+68
+00
+ce
+62
+1f
+e6
+7c
+01
+24
+21
+3c
+cb
+20
+20
+52
+97
+68
+09
+41
+61
+68
+01
+4e
+60
+98
+40
+84
+00
+18
+43
+04
+00
+68
+01
+03
+70
+98
+40
+fe
+00
+60
+01
+03
+70
+20
+20
+3c
+c3
+20
+40
+02
+1c
+df
+20
+00
+06
+d8
+c0
+4e
+ad
+58
+00
+ff
+ff
+20
+40
+02
+20
+24
+62
+80
+00
+68
+00
+ce
+a8
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+ce
+a8
+20
+40
+3e
+28
+20
+62
+80
+00
+70
+4e
+a7
+01
+20
+60
+00
+00
+d8
+40
+00
+0c
+da
+20
+4e
+ad
+68
+01
+4e
+ab
+20
+20
+62
+4a
+e8
+c9
+00
+00
+98
+46
+7c
+00
+24
+62
+80
+00
+c2
+00
+02
+20
+20
+60
+00
+00
+68
+12
+00
+78
+68
+1a
+00
+7c
+98
+41
+fe
+00
+1f
+e4
+7e
+00
+9a
+21
+7e
+00
+60
+12
+00
+70
+20
+60
+00
+00
+1a
+22
+7e
+00
+20
+7a
+00
+00
+18
+40
+85
+60
+18
+40
+85
+60
+79
+3f
+84
+1c
+60
+0a
+47
+03
+1f
+e2
+04
+00
+da
+20
+46
+f0
+20
+40
+7f
+a6
+24
+7a
+00
+00
+18
+42
+7e
+00
+20
+20
+7d
+7d
+20
+40
+7d
+80
+da
+20
+46
+f8
+20
+40
+7f
+95
+1f
+e2
+04
+00
+20
+40
+7d
+84
+18
+42
+7e
+00
+20
+7a
+00
+00
+c0
+11
+82
+45
+c0
+12
+02
+49
+c0
+12
+82
+4d
+c0
+06
+82
+4f
+c0
+13
+82
+5e
+20
+20
+7d
+b3
+68
+00
+c9
+c3
+60
+00
+c2
+80
+70
+49
+38
+ff
+20
+20
+06
+9c
+68
+00
+c9
+c3
+60
+00
+c2
+80
+79
+3f
+80
+26
+20
+20
+49
+7d
+70
+42
+80
+14
+20
+20
+06
+6d
+79
+3f
+80
+26
+70
+41
+31
+00
+18
+0a
+7e
+00
+60
+00
+c5
+3e
+58
+26
+10
+0e
+60
+01
+c5
+41
+70
+4e
+53
+00
+68
+09
+4e
+4e
+60
+09
+44
+f8
+20
+40
+52
+a0
+da
+40
+00
+05
+20
+40
+02
+68
+1a
+42
+7e
+00
+e0
+c0
+80
+00
+20
+20
+7e
+07
+79
+3f
+80
+26
+70
+41
+31
+00
+70
+4e
+53
+01
+68
+09
+4e
+4e
+20
+40
+4f
+6a
+1a
+22
+0a
+00
+58
+00
+00
+01
+e0
+a0
+80
+00
+da
+40
+00
+04
+20
+20
+02
+5a
+da
+20
+44
+01
+ea
+20
+80
+00
+20
+7a
+00
+00
+98
+c0
+a2
+00
+e8
+c0
+80
+00
+c1
+00
+80
+00
+20
+20
+02
+69
+20
+40
+58
+c5
+24
+3a
+7d
+e5
+68
+00
+89
+bd
+c5
+84
+fd
+e0
+c0
+0f
+82
+95
+20
+20
+7d
+d0
+70
+0b
+2a
+03
+20
+40
+00
+b0
+70
+4e
+45
+5a
+20
+40
+3c
+fc
+68
+12
+01
+38
+79
+3f
+fe
+0f
+60
+12
+00
+4c
+20
+40
+3c
+f4
+d8
+5f
+ff
+ff
+20
+20
+3c
+11
+68
+0a
+48
+9e
+1c
+42
+7e
+00
+98
+46
+7e
+00
+d8
+40
+06
+40
+98
+46
+fc
+00
+20
+40
+7f
+53
+18
+07
+fe
+00
+20
+7a
+00
+00
+1c
+42
+04
+00
+60
+0a
+48
+9e
+68
+09
+48
+98
+18
+50
+84
+00
+98
+40
+fe
+00
+1f
+f0
+fe
+00
+60
+01
+48
+98
+1f
+f0
+fe
+00
+1f
+e1
+7e
+03
+c1
+80
+00
+00
+20
+40
+02
+b3
+24
+76
+00
+00
+68
+00
+c2
+cf
+c2
+81
+02
+96
+20
+60
+00
+00
+68
+10
+80
+78
+79
+3f
+fe
+05
+60
+10
+80
+78
+70
+89
+71
+8f
+68
+00
+c2
+d0
+60
+10
+89
+73
+20
+40
+02
+a1
+68
+10
+80
+78
+79
+20
+7e
+05
+60
+10
+80
+78
+20
+60
+00
+00
+68
+10
+80
+53
+79
+20
+7e
+07
+60
+10
+80
+53
+68
+10
+89
+73
+1f
+e1
+fe
+30
+60
+10
+89
+73
+70
+89
+06
+7c
+70
+89
+72
+aa
+20
+00
+13
+88
+68
+19
+01
+50
+68
+10
+80
+53
+79
+3f
+fe
+07
+60
+10
+80
+53
+18
+50
+84
+00
+60
+09
+42
+d1
+20
+60
+00
+00
+78
+36
+7c
+00
+20
+60
+00
+00
+78
+56
+7c
+00
+20
+40
+4b
+d0
+20
+5a
+02
+b1
+68
+00
+c9
+54
+24
+5a
+02
+b1
+20
+60
+00
+00
+70
+4e
+a3
+01
+20
+40
+02
+bd
+70
+4e
+a3
+00
+20
+60
+00
+00
+20
+40
+00
+ab
+20
+74
+00
+00
+1f
+f0
+fe
+00
+1f
+e2
+0c
+00
+20
+40
+02
+e3
+60
+00
+c8
+97
+c0
+00
+82
+ce
+c0
+03
+02
+ff
+1f
+e2
+04
+00
+18
+c2
+22
+00
+68
+00
+c0
+40
+c3
+00
+02
+d8
+1a
+22
+0c
+00
+c6
+84
+80
+00
+18
+42
+7e
+00
+c0
+02
+83
+16
+20
+20
+3b
+31
+20
+40
+02
+e3
+20
+40
+02
+e3
+60
+00
+89
+bd
+20
+40
+02
+d3
+20
+20
+7d
+90
+20
+40
+02
+e6
+18
+c2
+04
+00
+18
+50
+84
+00
+60
+09
+47
+c4
+20
+60
+00
+00
+1a
+22
+0c
+00
+d8
+a0
+00
+f5
+20
+20
+02
+db
+20
+40
+02
+e3
+1f
+e2
+72
+00
+20
+40
+02
+df
+20
+20
+02
+d3
+20
+40
+02
+e3
+e0
+a0
+80
+00
+c2
+00
+02
+df
+20
+60
+00
+00
+20
+40
+02
+e6
+e8
+c0
+80
+00
+20
+60
+00
+00
+58
+00
+47
+c4
+98
+c6
+7c
+00
+24
+62
+80
+00
+d8
+c0
+47
+2e
+20
+60
+00
+00
+df
+20
+00
+03
+d8
+c0
+48
+94
+18
+c2
+22
+00
+68
+01
+48
+2e
+1f
+f0
+fe
+00
+1f
+e2
+0a
+00
+1a
+22
+0c
+00
+e8
+c0
+80
+00
+e0
+a0
+80
+00
+20
+40
+02
+fa
+c2
+00
+02
+f2
+18
+a2
+7e
+00
+1f
+f0
+fe
+00
+60
+01
+48
+2e
+20
+60
+00
+00
+58
+00
+48
+2c
+98
+a6
+7c
+00
+24
+62
+80
+00
+d8
+a0
+47
+c8
+20
+60
+00
+00
+c6
+93
+80
+00
+20
+40
+02
+e3
+1f
+e2
+72
+00
+60
+00
+c9
+70
+20
+20
+02
+dd
+58
+00
+00
+00
+60
+01
+ce
+85
+20
+60
+00
+00
+c6
+13
+00
+00
+68
+00
+c5
+95
+20
+7a
+00
+00
+20
+40
+00
+ab
+20
+74
+00
+00
+1f
+f0
+fe
+00
+1f
+e2
+0c
+00
+20
+40
+02
+e3
+60
+00
+c8
+97
+18
+c2
+22
+00
+c0
+82
+82
+d8
+18
+c2
+24
+00
+20
+40
+4b
+d4
+24
+7a
+00
+00
+20
+20
+03
+1b
+18
+c2
+24
+00
+68
+00
+ce
+a3
+20
+7a
+00
+00
+20
+40
+4b
+d0
+24
+7a
+00
+00
+68
+09
+4e
+4e
+20
+40
+4f
+6a
+c4
+00
+00
+00
+68
+00
+c5
+95
+c1
+00
+00
+00
+68
+00
+ce
+83
+1f
+e0
+fe
+01
+60
+00
+ce
+83
+68
+00
+ce
+85
+1f
+e0
+84
+01
+18
+41
+04
+03
+60
+08
+ce
+85
+1f
+ef
+fe
+07
+d8
+a0
+4e
+87
+98
+a0
+8a
+00
+1a
+42
+0c
+00
+20
+40
+02
+e3
+1f
+e2
+72
+00
+20
+40
+02
+dd
+20
+40
+03
+32
+20
+76
+00
+00
+70
+09
+bd
+1b
+20
+20
+4b
+d6
+78
+56
+7c
+00
+68
+00
+ce
+a4
+c1
+02
+80
+00
+78
+36
+7c
+00
+1f
+e0
+fe
+01
+60
+00
+ce
+a4
+1f
+e6
+7c
+01
+24
+61
+00
+00
+70
+48
+96
+40
+20
+20
+02
+eb
+58
+00
+47
+2e
+1f
+f0
+fe
+00
+60
+01
+47
+c4
+60
+01
+47
+c6
+58
+00
+47
+c8
+1f
+f0
+fe
+00
+60
+01
+48
+2c
+60
+01
+48
+2e
+20
+60
+00
+00
+68
+01
+4e
+a9
+1f
+e0
+fe
+1c
+60
+01
+4e
+ab
+20
+60
+00
+00
+20
+40
+52
+4a
+70
+0b
+2a
+00
+70
+01
+6c
+06
+20
+40
+3e
+7f
+58
+00
+03
+c8
+60
+01
+42
+96
+58
+00
+02
+b9
+60
+01
+42
+90
+58
+00
+03
+c1
+60
+01
+42
+8c
+24
+55
+83
+3c
+20
+55
+83
+89
+20
+40
+3d
+3e
+68
+00
+ce
+ba
+20
+3a
+03
+62
+1f
+e0
+ff
+ff
+60
+00
+ce
+ba
+58
+00
+7f
+80
+60
+01
+4e
+a9
+20
+40
+03
+45
+68
+00
+ce
+53
+24
+3a
+03
+62
+68
+00
+ce
+b9
+24
+3a
+03
+62
+20
+40
+02
+0e
+68
+00
+ce
+45
+c0
+2d
+03
+9d
+20
+35
+83
+9b
+68
+00
+c2
+80
+60
+00
+c9
+c3
+20
+40
+06
+05
+68
+01
+4e
+41
+1f
+f0
+fe
+00
+60
+01
+4e
+41
+68
+01
+4e
+43
+1f
+f0
+fe
+00
+60
+01
+4e
+43
+20
+40
+03
+a8
+20
+40
+03
+e2
+68
+04
+09
+c6
+24
+3a
+03
+76
+68
+01
+4a
+d4
+1f
+f0
+fe
+00
+20
+3a
+03
+76
+60
+01
+4e
+43
+70
+48
+96
+2f
+68
+00
+ce
+78
+24
+3a
+03
+7e
+20
+40
+02
+93
+20
+40
+02
+eb
+20
+40
+03
+07
+70
+82
+80
+03
+20
+60
+00
+00
+20
+55
+bc
+29
+d9
+60
+0d
+00
+34
+73
+02
+00
+1c
+42
+7e
+00
+60
+01
+ce
+7a
+68
+01
+47
+0b
+c3
+85
+80
+00
+c3
+83
+00
+00
+20
+40
+3d
+60
+20
+40
+04
+f6
+20
+20
+03
+83
+1c
+e2
+7e
+00
+c5
+93
+03
+93
+20
+3a
+03
+8e
+70
+49
+b9
+bb
+20
+60
+00
+00
+70
+49
+b9
+00
+68
+00
+c9
+b7
+20
+7a
+00
+00
+70
+49
+b7
+00
+20
+20
+03
+8c
+20
+3a
+03
+96
+70
+49
+c1
+02
+20
+60
+00
+00
+68
+00
+c9
+c2
+20
+7a
+00
+00
+70
+49
+c2
+00
+70
+49
+c1
+01
+20
+60
+00
+00
+70
+48
+96
+3c
+20
+20
+03
+77
+1c
+e2
+7e
+00
+20
+3a
+02
+77
+20
+40
+53
+0d
+20
+40
+42
+eb
+58
+00
+00
+00
+60
+04
+40
+40
+60
+01
+47
+0b
+60
+01
+48
+98
+60
+01
+48
+9a
+70
+48
+96
+3d
+20
+20
+03
+77
+20
+40
+62
+c4
+58
+00
+07
+e2
+da
+20
+09
+c6
+d8
+40
+00
+0c
+20
+40
+63
+0d
+20
+40
+62
+c7
+68
+04
+09
+c6
+20
+7a
+00
+00
+68
+00
+c2
+cf
+c2
+81
+03
+b3
+20
+60
+00
+00
+68
+09
+09
+c6
+68
+01
+09
+cc
+18
+42
+24
+00
+1f
+e2
+22
+00
+98
+46
+26
+00
+1a
+42
+7e
+00
+9a
+66
+7e
+00
+1f
+f0
+fe
+00
+60
+01
+4e
+41
+1a
+6b
+fe
+00
+9a
+20
+fe
+00
+1f
+f0
+fe
+00
+60
+01
+4e
+43
+20
+60
+00
+00
+78
+34
+7c
+00
+68
+12
+01
+38
+79
+34
+7e
+1a
+60
+12
+00
+4c
+20
+40
+3c
+f4
+70
+00
+9f
+01
+20
+60
+00
+00
+1a
+62
+7e
+00
+1f
+e1
+7e
+f0
+c1
+28
+00
+00
+1a
+62
+7e
+00
+60
+00
+c8
+96
+20
+20
+02
+eb
+70
+49
+27
+00
+70
+49
+32
+4e
+68
+02
+49
+34
+60
+02
+49
+50
+20
+20
+04
+91
+68
+08
+c9
+33
+20
+40
+03
+d9
+18
+40
+84
+01
+18
+41
+04
+03
+60
+08
+c9
+33
+20
+60
+00
+00
+68
+00
+c9
+50
+1f
+e1
+7e
+03
+1f
+ef
+a2
+04
+58
+00
+49
+39
+9a
+20
+fe
+00
+98
+40
+8c
+00
+e8
+c0
+80
+00
+60
+00
+c9
+32
+20
+60
+00
+00
+68
+02
+09
+c6
+60
+02
+49
+60
+24
+7a
+00
+00
+68
+02
+41
+40
+60
+02
+49
+60
+20
+60
+00
+00
+70
+49
+b0
+01
+70
+49
+b2
+00
+68
+00
+c9
+29
+1f
+e1
+7e
+07
+60
+00
+c9
+29
+20
+60
+00
+00
+68
+00
+c9
+29
+79
+20
+7e
+04
+60
+00
+c9
+29
+60
+00
+c8
+e4
+20
+60
+00
+00
+68
+00
+c9
+29
+79
+3f
+fe
+04
+60
+00
+c9
+29
+20
+60
+00
+00
+20
+40
+06
+0c
+68
+00
+c9
+b4
+c0
+00
+83
+fc
+c0
+01
+04
+00
+20
+60
+00
+00
+70
+49
+b2
+02
+70
+49
+b3
+00
+70
+49
+b0
+00
+20
+20
+03
+ea
+70
+49
+b1
+00
+20
+20
+03
+fd
+68
+01
+49
+2e
+1f
+e0
+fe
+01
+60
+01
+49
+2e
+c2
+85
+05
+71
+68
+00
+c9
+b1
+c0
+00
+84
+0b
+70
+49
+b1
+01
+68
+00
+c9
+b1
+c0
+80
+83
+ea
+68
+00
+c9
+b5
+1f
+e0
+fe
+01
+60
+00
+c9
+b5
+c0
+02
+04
+12
+20
+40
+03
+d3
+70
+49
+6e
+02
+20
+20
+05
+32
+20
+40
+06
+0c
+70
+49
+b5
+00
+20
+20
+03
+ea
+70
+49
+b2
+02
+70
+49
+b0
+01
+70
+49
+b1
+00
+20
+20
+03
+ea
+68
+00
+c9
+b4
+c0
+01
+84
+16
+68
+00
+c9
+29
+2f
+ec
+00
+04
+20
+20
+83
+e8
+68
+00
+c9
+b4
+c0
+00
+84
+15
+c0
+01
+04
+16
+20
+60
+00
+00
+68
+00
+c9
+38
+c1
+ff
+80
+00
+20
+40
+04
+27
+24
+56
+04
+2f
+20
+60
+00
+00
+78
+56
+7c
+00
+68
+00
+c9
+b0
+c1
+80
+80
+00
+68
+00
+c9
+b2
+c1
+80
+00
+00
+70
+49
+b4
+01
+70
+49
+6e
+04
+20
+20
+02
+b1
+68
+00
+c9
+b2
+20
+3a
+04
+37
+1f
+e0
+ff
+ff
+60
+00
+c9
+b2
+70
+49
+b4
+02
+20
+40
+03
+d3
+70
+49
+6e
+04
+20
+60
+00
+00
+70
+49
+b4
+03
+68
+00
+c9
+b1
+24
+3a
+04
+09
+20
+40
+03
+d3
+70
+49
+6e
+02
+20
+60
+00
+00
+c6
+93
+00
+00
+79
+20
+00
+27
+68
+0a
+49
+49
+1c
+42
+7e
+00
+98
+46
+7c
+00
+24
+41
+04
+56
+1f
+e2
+24
+00
+68
+02
+49
+49
+68
+08
+c9
+4d
+98
+40
+84
+00
+1a
+42
+7e
+00
+98
+46
+7c
+00
+24
+21
+04
+54
+79
+3f
+fe
+1c
+60
+02
+49
+49
+20
+40
+04
+59
+20
+40
+04
+66
+20
+34
+04
+c1
+20
+40
+04
+22
+20
+40
+05
+32
+68
+00
+c9
+38
+1f
+e6
+7c
+ff
+20
+42
+86
+16
+79
+3f
+80
+27
+20
+60
+00
+00
+20
+62
+80
+00
+79
+20
+7e
+1c
+20
+60
+00
+00
+68
+00
+c9
+64
+1f
+e0
+fe
+01
+60
+00
+c9
+64
+c0
+02
+04
+5f
+c0
+02
+84
+62
+20
+60
+00
+00
+68
+00
+c9
+4f
+60
+00
+c9
+4d
+20
+60
+00
+00
+70
+49
+64
+00
+68
+00
+c9
+4e
+60
+00
+c9
+4d
+20
+60
+00
+00
+68
+00
+c9
+38
+c0
+ff
+86
+71
+20
+40
+02
+bd
+20
+34
+04
+78
+68
+00
+c8
+97
+c0
+83
+64
+c0
+68
+00
+ce
+80
+20
+5a
+04
+dc
+68
+00
+ce
+80
+24
+5a
+04
+74
+20
+40
+04
+7d
+20
+40
+04
+9e
+70
+49
+2d
+01
+20
+60
+00
+00
+70
+4e
+79
+00
+70
+4e
+78
+00
+70
+49
+ba
+0a
+20
+60
+00
+00
+68
+00
+ce
+78
+24
+3a
+04
+7d
+68
+00
+c9
+2d
+c0
+00
+b1
+d4
+20
+60
+00
+00
+68
+00
+c9
+b9
+60
+00
+c9
+b8
+68
+00
+c9
+70
+1f
+e2
+22
+00
+da
+40
+49
+71
+70
+49
+54
+00
+20
+40
+03
+ea
+60
+00
+c9
+90
+1a
+20
+84
+01
+d8
+a0
+49
+91
+1a
+22
+72
+00
+1a
+42
+0c
+00
+20
+40
+7e
+cd
+da
+20
+49
+90
+c6
+93
+80
+00
+60
+08
+c9
+28
+18
+42
+72
+00
+d8
+a0
+48
+c4
+1a
+22
+0c
+00
+20
+20
+7e
+cd
+da
+20
+00
+00
+df
+20
+00
+04
+d8
+c0
+49
+50
+e8
+c0
+80
+00
+9a
+20
+a2
+00
+c2
+00
+04
+94
+1a
+22
+7e
+00
+60
+01
+49
+bb
+68
+00
+c9
+bb
+68
+08
+c9
+bc
+98
+40
+fe
+00
+60
+00
+c9
+bd
+20
+60
+00
+00
+68
+00
+c9
+28
+1f
+e0
+fe
+02
+60
+00
+c9
+2a
+68
+00
+c9
+29
+60
+00
+c8
+e4
+68
+00
+c9
+28
+1f
+e9
+fe
+00
+68
+08
+c9
+27
+18
+41
+04
+03
+18
+43
+84
+00
+98
+41
+fe
+00
+68
+08
+c9
+65
+98
+40
+fe
+00
+e0
+a0
+80
+00
+68
+00
+c9
+28
+98
+00
+72
+00
+d8
+c0
+48
+c4
+20
+20
+7e
+cd
+70
+49
+54
+01
+70
+49
+b1
+00
+20
+40
+03
+ea
+60
+00
+c9
+90
+58
+00
+00
+00
+60
+03
+c9
+91
+68
+02
+49
+60
+60
+02
+49
+98
+d8
+40
+00
+0c
+da
+20
+49
+90
+20
+40
+04
+8b
+68
+00
+c9
+29
+79
+20
+7e
+03
+60
+00
+c9
+29
+20
+40
+04
+9e
+20
+40
+04
+72
+20
+20
+04
+50
+68
+00
+ce
+78
+20
+3a
+04
+c5
+20
+40
+04
+ef
+20
+20
+05
+0e
+68
+00
+c9
+54
+20
+3a
+04
+b0
+68
+08
+c9
+b8
+18
+40
+84
+01
+60
+08
+c9
+b8
+68
+00
+c9
+b9
+98
+46
+7c
+00
+20
+61
+00
+00
+70
+49
+b8
+00
+20
+40
+00
+a0
+24
+74
+00
+00
+68
+00
+8b
+2b
+24
+7a
+00
+00
+68
+00
+c9
+ba
+24
+7a
+00
+00
+70
+4e
+80
+00
+20
+40
+3b
+e2
+68
+01
+c2
+0f
+20
+7a
+00
+00
+68
+04
+49
+58
+20
+40
+7f
+16
+60
+0a
+41
+fb
+20
+20
+3c
+11
+68
+00
+c2
+b8
+2f
+ec
+00
+02
+20
+20
+84
+e6
+68
+00
+ce
+79
+c1
+02
+80
+00
+1f
+e0
+fe
+01
+60
+00
+ce
+79
+c1
+82
+80
+00
+70
+4e
+78
+01
+20
+60
+00
+00
+68
+00
+ce
+79
+c1
+0a
+00
+00
+1f
+e0
+fe
+01
+60
+00
+ce
+79
+c1
+8a
+00
+00
+68
+00
+c2
+b8
+79
+20
+7e
+02
+60
+00
+c2
+b8
+20
+20
+04
+e4
+68
+00
+ce
+79
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+ce
+79
+24
+7a
+00
+00
+70
+4e
+78
+00
+20
+60
+00
+00
+79
+20
+00
+27
+20
+40
+02
+bd
+20
+34
+04
+fb
+68
+00
+c8
+97
+c0
+03
+05
+0a
+68
+00
+ce
+7d
+c0
+00
+85
+02
+c0
+01
+04
+c1
+c0
+01
+85
+00
+20
+60
+00
+00
+70
+4e
+79
+00
+70
+4e
+78
+00
+20
+40
+04
+dc
+70
+4e
+7d
+00
+df
+20
+00
+07
+1f
+22
+7e
+00
+60
+00
+c9
+70
+d8
+c0
+4e
+21
+20
+40
+7e
+cd
+78
+54
+7c
+00
+20
+40
+04
+6c
+20
+40
+04
+22
+20
+40
+05
+32
+20
+40
+06
+16
+20
+40
+3b
+e2
+68
+01
+c2
+0f
+20
+7a
+00
+00
+68
+00
+c1
+31
+20
+7a
+00
+00
+68
+00
+ce
+80
+c0
+00
+85
+17
+58
+00
+00
+00
+60
+04
+00
+a0
+20
+40
+05
+27
+d9
+60
+0d
+00
+34
+73
+02
+00
+68
+09
+ce
+7a
+1c
+42
+7e
+00
+98
+46
+7e
+00
+1f
+e1
+7e
+ff
+d8
+40
+0e
+a6
+98
+4f
+84
+00
+68
+02
+4e
+74
+98
+46
+7e
+00
+20
+21
+3c
+7f
+68
+00
+c2
+18
+1f
+e0
+fe
+01
+60
+02
+41
+fb
+20
+20
+3c
+86
+58
+01
+3c
+68
+60
+02
+4e
+74
+68
+00
+ce
+7e
+1f
+e0
+fe
+01
+c0
+82
+85
+2d
+58
+00
+00
+00
+60
+00
+ce
+7e
+c4
+00
+00
+00
+58
+01
+30
+b0
+60
+02
+4e
+74
+20
+60
+00
+00
+70
+49
+31
+00
+d9
+60
+0d
+00
+34
+73
+02
+00
+20
+40
+05
+4a
+68
+00
+c9
+65
+c1
+00
+80
+00
+24
+2c
+05
+59
+24
+37
+85
+59
+20
+40
+05
+78
+20
+40
+06
+08
+68
+00
+c9
+27
+1f
+e0
+fe
+01
+60
+00
+c9
+27
+68
+00
+c9
+38
+c0
+ff
+85
+48
+20
+40
+04
+19
+58
+00
+00
+00
+60
+01
+49
+2e
+60
+00
+c9
+30
+60
+00
+c9
+b3
+70
+49
+2d
+00
+20
+60
+00
+00
+20
+40
+06
+05
+20
+20
+06
+8c
+78
+57
+fc
+00
+20
+40
+05
+98
+68
+00
+c9
+65
+c0
+00
+85
+57
+18
+00
+2a
+00
+68
+02
+49
+50
+98
+00
+12
+00
+68
+08
+80
+17
+20
+40
+39
+b9
+20
+40
+39
+bf
+20
+40
+05
+c2
+20
+57
+86
+01
+20
+60
+00
+00
+20
+40
+06
+01
+20
+20
+05
+3c
+68
+00
+c9
+30
+1f
+e0
+fe
+01
+60
+00
+c9
+30
+68
+00
+c9
+38
+c0
+ff
+85
+6d
+68
+08
+c9
+31
+18
+40
+84
+01
+60
+08
+c9
+31
+68
+00
+c9
+6e
+98
+46
+7e
+00
+24
+3a
+05
+33
+68
+00
+c9
+b4
+c0
+01
+84
+02
+68
+00
+c9
+b3
+1f
+e0
+fe
+01
+60
+00
+c9
+b3
+c0
+01
+03
+f7
+20
+40
+03
+ee
+70
+49
+6e
+01
+20
+20
+05
+32
+68
+00
+c9
+30
+c1
+ff
+80
+00
+70
+49
+30
+00
+20
+20
+05
+76
+58
+00
+00
+00
+60
+01
+49
+2e
+70
+41
+31
+00
+70
+4e
+79
+00
+70
+4e
+78
+00
+70
+48
+96
+3b
+20
+20
+02
+eb
+20
+40
+05
+7f
+68
+00
+c9
+26
+20
+7a
+00
+00
+98
+00
+72
+00
+d8
+c0
+48
+a4
+d8
+a0
+49
+06
+20
+20
+7e
+cd
+68
+00
+c8
+a3
+1f
+e9
+7e
+00
+60
+00
+c9
+26
+1f
+e0
+fe
+01
+d8
+c0
+48
+a3
+98
+c0
+8c
+00
+e8
+c1
+80
+00
+60
+01
+c9
+66
+68
+00
+c8
+a3
+1f
+e3
+7e
+00
+1f
+e1
+7e
+03
+60
+00
+c9
+6c
+20
+60
+00
+00
+78
+44
+fc
+00
+78
+43
+fc
+00
+58
+55
+55
+55
+98
+00
+1e
+00
+68
+00
+c9
+32
+1f
+ed
+84
+00
+79
+20
+04
+01
+18
+43
+1c
+00
+20
+60
+00
+00
+20
+40
+39
+b1
+68
+08
+c9
+32
+20
+20
+39
+c9
+20
+40
+49
+76
+68
+02
+49
+50
+98
+00
+12
+00
+20
+40
+05
+8c
+20
+40
+05
+95
+79
+20
+2a
+00
+78
+2e
+fc
+00
+78
+30
+7c
+00
+78
+50
+fc
+00
+19
+31
+7e
+00
+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
+c9
+bd
+08
+00
+86
+08
+68
+00
+c9
+2a
+98
+00
+72
+00
+d8
+c0
+48
+e4
+e8
+c0
+80
+00
+08
+00
+86
+08
+c2
+00
+05
+ae
+78
+24
+7c
+00
+08
+00
+86
+18
+78
+44
+7c
+00
+37
+d3
+82
+00
+20
+00
+00
+64
+78
+4e
+fc
+00
+78
+4d
+fc
+00
+20
+60
+00
+00
+20
+40
+49
+76
+68
+02
+49
+50
+98
+00
+12
+00
+20
+40
+39
+b1
+68
+08
+c9
+32
+20
+40
+39
+b9
+58
+00
+05
+00
+20
+40
+3b
+35
+20
+40
+39
+bf
+20
+40
+05
+8c
+78
+57
+fc
+00
+78
+26
+fc
+00
+78
+30
+fc
+00
+78
+50
+7c
+00
+78
+28
+7c
+00
+68
+01
+49
+2b
+98
+00
+36
+00
+37
+c1
+84
+00
+24
+2c
+06
+04
+78
+46
+fc
+00
+78
+25
+fc
+00
+78
+23
+fc
+00
+78
+24
+fc
+00
+09
+80
+00
+08
+19
+89
+7e
+00
+60
+00
+c9
+be
+20
+40
+04
+91
+68
+08
+c9
+be
+98
+46
+7c
+00
+24
+22
+86
+01
+09
+80
+00
+08
+19
+89
+7e
+00
+60
+00
+c8
+a2
+68
+00
+c9
+6f
+1f
+e6
+7c
+02
+20
+22
+85
+e1
+68
+00
+c8
+a2
+68
+08
+c9
+29
+a8
+40
+0e
+00
+24
+20
+86
+01
+09
+80
+00
+08
+19
+89
+7e
+00
+e0
+a0
+80
+00
+1f
+e9
+7e
+00
+1f
+e1
+72
+1f
+20
+22
+85
+eb
+09
+80
+00
+08
+19
+89
+7e
+00
+e0
+a0
+80
+00
+c2
+00
+05
+e7
+18
+a2
+22
+00
+09
+80
+00
+08
+19
+89
+7e
+00
+60
+00
+c9
+cf
+1a
+22
+0a
+00
+09
+80
+00
+18
+78
+28
+7c
+00
+db
+60
+06
+64
+1f
+ef
+7e
+00
+1f
+f1
+7e
+00
+e0
+a1
+80
+00
+78
+45
+fc
+00
+20
+23
+06
+01
+78
+37
+fc
+00
+68
+00
+80
+17
+1f
+e0
+a2
+00
+20
+40
+3a
+13
+78
+46
+fc
+00
+20
+40
+39
+b1
+68
+00
+c9
+cf
+1f
+e2
+22
+00
+20
+20
+06
+54
+78
+4d
+fc
+00
+78
+45
+fc
+00
+20
+20
+36
+c6
+20
+20
+06
+01
+70
+49
+c4
+01
+70
+49
+c5
+00
+20
+60
+00
+00
+68
+00
+c9
+c5
+1f
+e0
+fe
+01
+60
+00
+c9
+c5
+20
+60
+00
+00
+68
+00
+c9
+c5
+1f
+e6
+7c
+01
+24
+41
+06
+14
+68
+00
+c9
+c5
+c1
+00
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+c9
+c5
+20
+60
+00
+00
+70
+49
+c5
+02
+20
+60
+00
+00
+da
+20
+49
+c6
+20
+40
+06
+5d
+60
+08
+c9
+d0
+28
+0f
+fe
+26
+20
+40
+86
+24
+24
+40
+86
+28
+98
+46
+7c
+00
+24
+21
+06
+41
+68
+00
+c9
+c5
+1f
+e6
+7c
+01
+24
+21
+06
+2c
+68
+00
+c9
+c5
+c0
+00
+06
+41
+20
+60
+00
+00
+58
+00
+00
+82
+20
+60
+00
+00
+58
+00
+00
+77
+20
+60
+00
+00
+58
+00
+00
+80
+20
+60
+00
+00
+58
+00
+00
+75
+20
+60
+00
+00
+68
+00
+c9
+c5
+c1
+a3
+00
+00
+70
+49
+c5
+00
+68
+08
+c9
+d0
+28
+0f
+fe
+26
+20
+40
+86
+26
+24
+40
+86
+2a
+98
+46
+7c
+00
+24
+61
+00
+00
+68
+00
+c9
+c4
+c0
+00
+06
+4d
+1f
+e0
+ff
+ff
+60
+00
+c9
+c4
+c0
+00
+06
+4d
+70
+89
+55
+d0
+70
+89
+56
+e0
+70
+89
+57
+4c
+70
+89
+58
+6c
+70
+89
+59
+50
+70
+42
+80
+01
+20
+60
+00
+00
+68
+00
+c9
+c4
+c0
+01
+06
+46
+1f
+e0
+fe
+01
+60
+00
+c9
+c4
+c0
+00
+86
+3a
+70
+89
+55
+d0
+70
+89
+56
+e0
+70
+89
+57
+4c
+70
+89
+58
+3c
+70
+89
+59
+10
+70
+42
+80
+04
+20
+60
+00
+00
+70
+89
+55
+d0
+70
+89
+56
+c0
+70
+89
+57
+4c
+70
+89
+58
+6c
+70
+89
+59
+50
+70
+42
+80
+10
+20
+60
+00
+00
+68
+08
+c9
+ce
+58
+00
+49
+c6
+98
+40
+8a
+00
+1a
+22
+7e
+00
+e0
+a0
+80
+00
+18
+40
+84
+01
+18
+41
+04
+07
+60
+08
+c9
+ce
+20
+60
+00
+00
+d8
+40
+00
+00
+df
+20
+00
+08
+1a
+22
+0c
+00
+e8
+c0
+80
+00
+98
+40
+84
+00
+c2
+00
+06
+60
+18
+49
+7e
+00
+1f
+e2
+04
+00
+c6
+93
+00
+00
+1f
+e6
+fc
+0a
+20
+40
+7f
+53
+18
+07
+fe
+00
+1f
+f2
+7e
+00
+18
+07
+04
+00
+98
+41
+84
+00
+20
+60
+00
+00
+79
+20
+00
+26
+20
+40
+03
+ce
+70
+49
+38
+01
+20
+60
+00
+00
+68
+00
+c9
+2d
+c0
+00
+b1
+d4
+68
+00
+c9
+38
+c0
+00
+86
+78
+c0
+01
+06
+7b
+c0
+01
+86
+7e
+20
+20
+3b
+31
+70
+49
+38
+11
+70
+49
+90
+aa
+20
+20
+06
+80
+70
+49
+38
+12
+70
+49
+90
+55
+20
+20
+06
+80
+70
+49
+38
+13
+70
+49
+90
+22
+68
+00
+c9
+29
+1f
+e1
+7e
+07
+60
+00
+c9
+91
+68
+02
+49
+60
+60
+02
+49
+92
+70
+49
+96
+00
+da
+20
+49
+90
+d8
+40
+00
+07
+20
+40
+04
+8b
+20
+40
+04
+9e
+20
+40
+04
+72
+20
+20
+31
+d4
+68
+00
+c9
+38
+c1
+7f
+80
+00
+c0
+08
+86
+92
+c0
+09
+06
+94
+c0
+09
+86
+96
+20
+60
+00
+00
+70
+49
+38
+02
+20
+20
+05
+42
+70
+49
+38
+03
+20
+20
+05
+42
+70
+49
+38
+ff
+70
+48
+96
+39
+20
+40
+02
+eb
+68
+02
+49
+08
+20
+40
+03
+d1
+20
+20
+05
+42
+79
+3f
+80
+26
+20
+40
+03
+d3
+68
+02
+49
+50
+20
+40
+04
+91
+68
+00
+c9
+38
+c1
+ff
+80
+00
+20
+40
+06
+b2
+58
+00
+00
+00
+60
+01
+49
+56
+20
+00
+07
+d0
+68
+00
+c9
+56
+c0
+7f
+85
+76
+20
+40
+05
+4a
+24
+2c
+06
+bc
+24
+37
+86
+bc
+70
+41
+31
+01
+79
+20
+00
+26
+58
+00
+00
+00
+60
+01
+49
+56
+70
+09
+bd
+3a
+20
+40
+7d
+86
+20
+20
+7e
+0d
+79
+20
+00
+27
+70
+49
+90
+ff
+68
+00
+c9
+29
+60
+00
+c9
+91
+68
+02
+49
+60
+60
+02
+49
+92
+d8
+40
+00
+06
+da
+20
+49
+90
+20
+40
+04
+8b
+20
+20
+04
+9e
+68
+01
+49
+56
+1f
+e0
+fe
+01
+60
+01
+49
+56
+20
+40
+03
+d3
+20
+20
+06
+a5
+a0
+11
+aa
+55
+00
+00
+aa
+55
+01
+00
+00
+40
+09
+aa
+55
+02
+00
+10
+40
+40
+0c
+aa
+55
+03
+00
+14
+40
+80
+13
+f0
+aa
+55
+01
+00
+20
+40
+20
+aa
+55
+08
+00
+22
+40
+40
+08
+08
+80
+0e
+f2
+04
+20
+aa
+55
+01
+00
+32
+40
+20
+aa
+55
+02
+00
+3e
+40
+88
+03
+aa
+55
+03
+00
+15
+42
+8f
+1b
+ce
+aa
+55
+04
+00
+19
+42
+0a
+0b
+ef
+0f
+aa
+55
+01
+00
+f7
+41
+00
+aa
+55
+08
+00
+a0
+00
+00
+00
+00
+00
+00
+00
+00
+00
+aa
+55
+02
+00
+5d
+41
+02
+24
+aa
+55
+08
+00
+4d
+41
+12
+00
+00
+02
+12
+00
+00
+02
+aa
+55
+02
+00
+5b
+41
+20
+00
+aa
+55
+04
+00
+57
+41
+20
+00
+00
+20
+aa
+55
+04
+00
+5f
+41
+80
+04
+00
+08
+aa
+55
+02
+00
+60
+4e
+00
+40
+aa
+55
+05
+00
+a9
+45
+09
+59
+00
+b0
+00
+aa
+55
+02
+00
+a8
+42
+30
+6f
+aa
+55
+01
+00
+b6
+42
+20
+aa
+55
+01
+00
+81
+42
+01
+aa
+55
+0b
+00
+69
+4e
+55
+d0
+56
+c0
+57
+4c
+58
+3c
+59
+50
+ff
+aa
+55
+02
+00
+63
+41
+69
+4e
+aa
+55
+01
+00
+e2
+46
+00
+aa
+55
+01
+00
+0d
+47
+01
+aa
+55
+01
+00
+25
+46
+00
+aa
+55
+01
+00
+32
+41
+42
+aa
+55
+01
+00
+d4
+08
+00
+aa
+55
+01
+00
+9f
+00
+00
+aa
+55
+01
+00
+d5
+08
+00
+aa
+55
+01
+00
+16
+00
+27
+aa
+55
+01
+00
+15
+47
+ff
+aa
+55
+01
+00
+0e
+47
+ff
+aa
+55
+01
+00
+31
+41
+01
+aa
+55
+02
+00
+12
+42
+20
+03
+aa
+55
+01
+00
+f6
+41
+08
+aa
+55
+02
+00
+f4
+41
+00
+00
+aa
+55
+01
+00
+33
+41
+00
+aa
+55
+02
+00
+94
+48
+02
+01
+aa
+55
+02
+00
+cf
+42
+04
+30
+aa
+55
+04
+00
+41
+4e
+9f
+3e
+cd
+4d
+aa
+55
+01
+00
+21
+45
+00
+aa
+55
+02
+00
+29
+45
+07
+00
+aa
+55
+01
+00
+96
+45
+50
+aa
+55
+01
+00
+f8
+44
+1a
+aa
+55
+06
+00
+3e
+45
+ab
+b9
+12
+0e
+10
+26
+aa
+55
+0a
+00
+40
+44
+09
+42
+4c
+45
+20
+4d
+6f
+75
+73
+65
+aa
+55
+01
+00
+4c
+45
+17
+aa
+55
+01
+00
+20
+45
+00
+aa
+55
+07
+00
+22
+45
+01
+00
+00
+00
+00
+00
+00
+aa
+55
+18
+00
+ff
+43
+00
+1f
+03
+19
+c2
+03
+03
+03
+12
+18
+02
+01
+05
+0a
+09
+42
+4c
+45
+20
+4d
+6f
+75
+73
+65
+aa
+55
+0c
+00
+20
+44
+1f
+0a
+09
+42
+4c
+45
+20
+4d
+6f
+75
+73
+65
+aa
+55
+b5
+01
+40
+4c
+01
+00
+02
+00
+28
+02
+00
+18
+02
+00
+02
+03
+28
+01
+0a
+03
+00
+02
+00
+2a
+09
+42
+4c
+45
+20
+4d
+6f
+75
+73
+65
+04
+00
+02
+03
+28
+01
+02
+05
+00
+02
+01
+2a
+02
+c2
+03
+06
+00
+02
+03
+28
+01
+02
+07
+00
+02
+04
+2a
+08
+06
+00
+06
+00
+64
+00
+2c
+01
+08
+00
+02
+00
+28
+02
+01
+18
+09
+00
+02
+03
+28
+01
+20
+0a
+00
+02
+05
+2a
+00
+0b
+00
+02
+02
+29
+02
+00
+00
+0c
+00
+02
+00
+28
+02
+0a
+18
+0d
+00
+02
+03
+28
+01
+02
+0e
+00
+02
+29
+2a
+06
+59
+69
+43
+68
+69
+70
+0f
+00
+02
+03
+28
+01
+02
+10
+00
+02
+50
+2a
+07
+02
+35
+12
+22
+aa
+01
+00
+11
+00
+02
+00
+28
+02
+0f
+18
+12
+00
+02
+03
+28
+01
+02
+13
+00
+02
+19
+2a
+01
+33
+14
+00
+02
+02
+29
+02
+00
+00
+15
+00
+02
+00
+28
+02
+12
+18
+16
+00
+02
+03
+28
+01
+06
+17
+00
+02
+4e
+2a
+01
+01
+18
+00
+02
+03
+28
+01
+1a
+19
+00
+02
+4d
+2a
+07
+00
+00
+00
+00
+00
+00
+00
+1a
+00
+02
+02
+29
+02
+00
+00
+1b
+00
+02
+08
+29
+02
+01
+01
+1c
+00
+02
+03
+28
+01
+0a
+1d
+00
+02
+4b
+2a
+45
+05
+01
+09
+02
+a1
+01
+85
+01
+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
+95
+01
+81
+06
+c0
+c0
+1e
+00
+02
+03
+28
+01
+1a
+1f
+00
+02
+33
+2a
+08
+00
+00
+00
+00
+00
+00
+00
+00
+20
+00
+02
+02
+29
+02
+01
+00
+21
+00
+02
+03
+28
+01
+02
+22
+00
+02
+4a
+2a
+04
+01
+01
+00
+03
+23
+00
+02
+03
+28
+01
+04
+24
+00
+02
+4c
+2a
+00
+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
+00
+00
+aa
+55
+02
+00
+37
+46
+40
+4c
+aa
+55
+01
+00
+48
+4e
+50
+aa
+55
+08
+00
+8d
+45
+07
+00
+07
+00
+05
+00
+2c
+01
+aa
+55
+01
+00
+20
+4e
+00
+aa
+55
+02
+00
+4e
+4e
+19
+00
+aa
+55
+02
+00
+8b
+45
+22
+00
+aa
+55
+01
+00
+6c
+45
+01
+aa
+55
+01
+00
+a8
+45
+01
+aa
+55
+01
+00
+80
+42
+02
+aa
+55
+01
+00
+a8
+4e
+01
+aa
+55
+01
+00
+ba
+4e
+01
+aa
+55
+01
+00
+6f
+49
+01
+aa
+55
+01
+00
+29
+49
+01
+aa
+55
+01
+00
+6e
+49
+04
+aa
+55
+01
+00
+65
+49
+00
+aa
+55
+02
+00
+2b
+49
+c0
+12
+aa
+55
+03
+00
+4d
+49
+19
+19
+1c
+aa
+55
+10
+00
+39
+49
+00
+13
+2c
+42
+06
+15
+36
+48
+0f
+1a
+3a
+4c
+11
+23
+31
+4d
+aa
+55
+01
+00
+38
+49
+ff
+aa
+55
+04
+00
+34
+49
+20
+15
+10
+05
+aa
+55
+0a
+00
+90
+49
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+aa
+55
+08
+00
+58
+49
+00
+48
+60
+00
+00
+00
+00
+00
+7e
+07
Index: Standard_mouse/btms/output/memmap.format
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/memmap.format	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/memmap.format	(working copy)
@@ -0,0 +1,1494 @@
+0x0000 mem_le_adv_transmit
+0x0001 mem_le_adv_waitcnt
+0x0002 mem_le_adv_rcv
+0x0003 mem_le_req_rcv
+0x0004 mem_le_scanrsp_rcv
+0x0005 mem_le_conn_rcv
+0x0006 mem_inquiryscan_waitcnt
+0x0007 mem_inquiryscan_rcvcnt
+0x0008 mem_pagescan_waitcnt
+0x0009 mem_pagescan_rcvcnt
+0x000a mem_pagescan_rcvfhscnt
+0x000b mem_slave_rcvcnt
+0x000c mem_page_transmit
+0x000d mem_page_rcv
+0x000e mem_page_rcv_fhs
+0x000f mem_master_rcvcnt
+0x0010 mem_fhs_wait_counter
+0x0011 mem_newconnto_counter
+0x0012 mem_inquiry_transmit
+0x0013 mem_inquiry_rcv
+0x0014 mem_fw_ver
+0x0015 mem_current_context
+0x0016 mem_le_ch_mapped
+0x0017 mem_last_freq
+0x0018 mem_rssi
+0x0019 mem_rx_type
+0x001a mem_rx_hec_err
+0x001c mem_rx_crc_err
+0x001e mem_context_ptr
+0x0020 mem_display
+0x0028 mem_bcd
+0x0030 mem_state
+0x0031 mem_mode
+0x0032 mem_tsniff
+0x0034 mem_sniff_anchor
+0x0038 mem_clk_offset
+0x003e mem_rx_window
+0x0040 mem_plap
+0x0043 mem_puap
+0x0044 mem_pnap
+0x0046 mem_conn_handle
+0x0047 mem_arq
+0x0048 mem_lmp_to_send
+0x0049 mem_lmi_opcode
+0x004a mem_lmo_reason
+0x004b mem_op
+0x004c mem_state_map
+0x004d mem_supervision_timer
+0x0051 mem_supervision_to
+0x0053 mem_name_offset
+0x0054 mem_key_size
+0x0055 mem_conn_sm
+0x0056 mem_aco
+0x0062 mem_kc
+0x0072 mem_conn_timer
+0x0073 mem_sniff_attempt
+0x0074 mem_sniff_timeout
+0x0075 mem_dsniff
+0x0077 mem_amaddr
+0x0078 mem_lmo_opcode1
+0x0079 mem_lmi_opcode1
+0x007a mem_lmo_reason1
+0x007b mem_lmo_tid1
+0x007c mem_lmo_opcode2
+0x007d mem_lmi_opcode2
+0x007e mem_lmo_reason2
+0x007f mem_lmo_tid2
+0x0080 mem_hci_version
+0x0083 mem_acl_pktlen
+0x0085 mem_sco_pktlen
+0x0086 mem_acl_pktcnt
+0x0088 mem_sco_pktcnt
+0x008a mem_current_sniff_attempt
+0x008b mem_current_sniff_timeout
+0x008c mem_nfreq_index_inq
+0x008d mem_nfreq_index_page
+0x008e mem_ninqy_index
+0x008f mem_fhs_misc
+0x0090 mem_subsniff_instant
+0x0094 mem_subsniff_rate
+0x0095 mem_subsniff_tcmax
+0x0097 mem_subsniff_tsniff
+0x0098 mem_lpm_adjust
+0x0099 mem_sync_clke
+0x009f mem_lpm_current_mult
+0x00a0 mem_gpio_wakeup_low
+0x00a4 mem_gpio_wakeup_high
+0x00a8 mem_air_mode
+0x00a9 mem_sco_asso_handle
+0x00aa mem_sco_handle
+0x00ac mem_esco_desco
+0x00ad mem_esco_type
+0x00ae mem_neogotiation_state
+0x00af mem_saved_amaddr
+0x00b0 mem_esco_arq
+0x00b1 mem_esco_saved_arq
+0x00b2 mem_sco_obuf
+0x00d0 mem_sco_ibuf
+0x00ee mem_sco_poll
+0x00ef mem_npage_index
+0x00f0 mem_page_mode
+0x00f1 mem_page_clk
+0x00f5 mem_tst_pktcnt_sync
+0x00f7 mem_tst_pktcnt_hec
+0x00f9 mem_tst_pktcnt_crc
+0x00fb mem_tst_pktcnt_dmh
+0x00fd mem_tmp_buffer_head
+0x0100 mem_tmp_buffer
+0x0150 mem_tester_emulate
+0x0151 mem_temp_payload
+0x0151 test_mode_scenario
+0x0152 test_mode_hopping_mode
+0x0153 test_mode_tx_freq
+0x0154 test_mode_rx_freq
+0x0155 test_mode_power_mode
+0x0156 test_mode_poll_period
+0x0157 test_mode_packet_type
+0x0158 test_mode_data_length
+0x015a mem_test_mode_old_debug_config
+0x015b mem_tester_cnt
+0x015c mem_temp_am_addr
+0x015d mem_temp_arq
+0x015e mem_len
+0x0160 mem_clkn_bt
+0x0164 mem_clke_bt
+0x0168 mem_dpll_clkn
+0x016c mem_connection_options
+0x016d mem_nameres_cnt
+0x016e mem_txptr
+0x0170 mem_slot_offset
+0x0172 extm_fhs_misc
+0x0173 extm_newconn_am_addr
+0x0174 extm_class
+0x0177 extm_lap
+0x017a extm_uap
+0x017b extm_nap
+0x017e mem_debug_config
+0x017f mem_lch_code
+0x0180 mem_fhs_am_addr
+0x0181 mem_dpll_error
+0x0183 mem_bdaddr_list_buff
+0x01a7 mem_select_list_item
+0x01a8 mem_temp_reconn_record
+0x01a8 mem_record_bt_mode
+0x01a9 mem_temp_lap
+0x01af mem_list_item_ptr
+0x01b1 mem_eir
+0x0215 mem_ucode_status
+0x0216 mem_otp_ucode_flag
+0x0218 mem_spid_tbuf/* spid buf: 03 addr[23:16] addr[15:8] addr[7:0] */
+0x0219 mem_iicd_tbuf/* iicd buf: iic_adr addr[15:8] addr[7:0] iic_adr */
+0x0219 mem_addr_hi
+0x021a mem_addr_mi
+0x021b mem_addr_lo
+0x021c mem_iicd_addr
+0x021d mem_spid_rbuf
+0x0221 mem_ucode_buf
+0x0223 mem_ucode_len
+0x0225 mem_sched_addr
+0x0227 mem_ucode_ptr
+0x0229 mem_ucode_keybuf
+0x0239 mem_check_plap_temp
+0x024b mem_sensor_id
+0x024c mem_reconnect_flag
+0x024d mem_switch_fail_master_count
+0x024e mem_app_evt_timer_count
+0x024f mem_h5rx_ackcnt
+0x0250 mem_check_err_acl_cont
+0x0251 mem_rp_packets
+0x0252 mem_packet_type
+0x0254 mem_hci_sniff_conn_handle
+0x0256 mem_hci_sniff_max_interval
+0x0258 mem_hci_sniff_min_interval
+0x025a mem_hci_sniff_attempt
+0x025c mem_hci_sniff_timeout
+0x025e mem_voice_setting
+0x0260 mem_retransmission_effort
+0x0261 mem_sco_ptype
+0x0263 mem_extm_uap_restore
+0x0266 mem_h5rx_rptr
+0x0268 mem_h5rx_ack
+0x0269 mem_h5tx_ack
+0x026a mem_h5tx_rptr
+0x026c mem_h5tx_wptr
+0x026e mem_h5tx_free
+0x0270 mem_h5rx_tmp
+0x0271 mem_h5tx_seq
+0x0272 mem_hci_acl_queue_wptr
+0x0274 mem_hci_acl_queue_rptr
+0x0276 mem_hci_acl_queue_end
+0x0278 mem_hci_acl_queue_wcnt
+0x0279 mem_hci_acl_cnt
+0x027a mem_hci_acl_tx_trigger_wptr//tx via uart
+0x027c mem_ucode_id_local
+0x027d mem_ucode_id_remote
+0x027e mem_check_sum
+0x027f mem_ucode_temp
+0x0280 mem_ucode_temp1
+0x0281 mem_lock_in_enc//boolean
+0x0282 mem_hci_disconn_reason
+0x0283 mem_hci_curr_len
+0x0284 mem_hci_curr_target
+0x0286 mem_l2cap_mem_start
+0x0286 mem_l2cap_rxbuff1_len
+0x0288 mem_l2cap_rxbuff2_len
+0x028a mem_l2cap_rxbuff_new
+0x028c mem_l2cap_rxbuff_inuse
+0x028d mem_l2cap_payload_ptr
+0x028f mem_l2cap_rx_pkt_length
+0x0291 mem_l2cap_rx_cid
+0x0293 mem_l2cap_rx_done
+0x0294 mem_l2cap_signal_tx_buff_ptr
+0x0296 mem_l2cap_signal_tx_payload_ptr
+0x0298 mem_l2cap_signal_tx_length
+0x029a mem_sdp_tx_buff_ptr
+0x029c mem_sdp_tx_payload_ptr
+0x029e mem_sdp_tx_pkt_length
+0x02a0 mem_rfcomm_tx_buff_ptr
+0x02a2 mem_rfcomm_tx_payload_ptr
+0x02a4 mem_rfcomm_tx_pkt_length
+0x02a6 memL2CAP_T1
+0x02a8 mem_CONTROL_tasks
+0x02a9 mem_send_config_req
+0x02aa mem_config_identifier
+0x02ab mem_config_req_dest_CID
+0x02ad mem_rfcomm_malloc_fail_flag
+0x02ae mem_message_to_uppersm
+0x02af mem_upper_sm_remote_page
+0x02b0 mem_upper_sm_reconn
+0x02b1 mem_upper_sm_ss
+0x02b2 mem_tx_malloc_log
+0x02f2 mem_l2cap_mem_end
+0x02f2 mem_scid
+0x02f4 mem_cmd_length
+0x02f6 mem_tt2
+0x02f8 mem_tt3
+0x02fa mem_id
+0x02fc mem_psm
+0x02fe mem_l2cap_sdpres_delay_time
+0x0302 mem_le_rxbuf
+0x033a mem_le_mic
+0x033e mem_le_peer_mic
+0x0342 mem_le_peer_ltk
+0x0352 mem_le_mrand
+0x0362 mem_le_state
+0x0363 mem_le_mode
+0x0364 mem_le_tsniff
+0x0366 mem_le_anchor
+0x036a mem_le_clk_offset
+0x0370 mem_le_receive_window
+0x0372 mem_le_plap
+0x0378 mem_le_conn_handle
+0x0379 mem_le_arq
+0x037a mem_le_ch
+0x037b mem_le_hop
+0x037c mem_le_event_count
+0x037e mem_le_supervision_timer
+0x0382 mem_le_instant
+0x0384 mem_le_channels
+0x0385 mem_le_op
+0x0386 mem_le_access
+0x038a mem_le_crcinit
+0x038d mem_le_window_size
+0x038e mem_le_slave_latency
+0x0390 mem_le_superto
+0x0392 mem_le_channel_map
+0x0397 mem_le_no_using
+0x0399 mem_le_peer_sca
+0x039a mem_le_att_opcode
+0x039b mem_le_att_handle
+0x039d mem_le_err_code
+0x039e mem_le_l2cap_pdu_length
+0x03a0 mem_le_sk
+0x03b0 mem_le_testtype
+0x03b1 mem_le_test_sync
+0x03b3 mem_le_test_pcnt
+0x03b5 mem_le_rxon_ts
+0x03bb mem_le_rx_ll_opcode
+0x03bc mem_le_notify_attr_start
+0x03be mem_le_notify_len
+0x03bf mem_cmd_le_create_conn
+0x03c0 mem_24g_id
+0x03c1 mem_le_cur_attlist_start_ptr
+0x03c3 mem_le_cur_handle_start
+0x03c5 mem_le_cur_handle_end
+0x03c7 mem_le_cur_uuid_lenth
+0x03c8 mem_le_cur_uuid
+0x03d8 mem_le_search_len
+0x03d9 mem_le_search_res
+0x03da mem_le_continue_type
+0x03db mem_le_public_length
+0x03dc mem_lmo_header_length
+0x03dd mem_lmo_header_opcode
+0x03de mem_lmo_payload
+0x03ef mem_lmi_accepted_opcode
+0x03f0 mem_disconn_reason_send
+0x03f1 mem_tx_fixed_freq
+0x03f2 mem_rx_fixed_freq
+0x03f3 mem_ext_features_page
+0x03f4 mem_lmpext_ssp_enable
+0x03f6 mem_remote_sppcap
+0x03f7 mem_lmp_conn_state
+0x03f8 mem_soft_timer
+0x03fa mem_pincode_state
+0x03fb mem_sres_tid
+0x03fc mem_accptsco_tid
+0x03fd mem_auth_enable
+0x03fe mem_wait_encryption
+0x03ff mem_sniff_payload
+0x040f mem_aurand_send_delay_time
+0x0413 mem_module_temp_len
+0x0415 mem_uart_cmd
+0x0416 mem_uart_opcode
+0x0417 mem_uart_len
+0x0418 mem_module_temp_nl_discard_packet
+0x0419 mem_module_le_md_flag
+0x041a mem_init_cnt
+0x041c memRemoteRPNBitRate
+0x041d memRemotePRNDataBits
+0x041e memRemotePRNStopBit
+0x041f memRemotePRNParity
+0x0420 memRemotePRNFlowControl
+0x0421 memRemotePRNXon
+0x0422 memRemotePRNXoff
+0x0423 mem_mod2div_temp
+0x0426 mem_contw_temp
+0x0428 mem_attrib_list
+0x042a mem_current_adss
+0x042b mem_current_channel
+0x042c mem_current_frame_type
+0x042d mem_current_fcs
+0x042e mem_current_length
+0x0430 mem_rfcomm_uih_payload_ptr
+0x0432 mem_uih_cmd_type
+0x0433 mem_uih_length
+0x0435 mem_param_payload_ptr
+0x0437 mem_ms_param
+0x0438 mem_pn_credit_flow_type_info
+0x0439 mem_pn_priority
+0x043a mem_pn_acknowledg_timer
+0x043b mem_pn_max_retrans
+0x043c mem_rfcomm_send_adss
+0x043d mem_rfcomm_send_frame_type
+0x043e mem_rfcomm_send_fcs
+0x043f mem_rfcomm_send_offset
+0x0440 mem_sdp_mem_start
+0x0440 mem_uuid_search_pat
+0x0444 mem_sdp_continue_byte
+0x0446 mem_sdp_pduid
+0x0447 mem_sdp_transactionid
+0x0449 mem_sdp_attribute_maxbyte
+0x044b mem_sdp_record_maxcnt
+0x044d mem_sdp_error_code
+0x0455 mem_sdp_record_handle
+0x0459 mem_sdp_search_failed
+0x045a mem_sdp_LACAP_found
+0x045b mem_sdp_RFCOMM_found
+0x045c mem_handle_list
+0x0474 mem_handle_humber
+0x0475 mem_sdp_mem_end
+0x0475 mem_rxbuf
+0x0486 mem_random_number
+0x0496 mem_round_key
+0x04a6 mem_kinit
+0x04b6 mem_input_store
+0x04c6 mem_x
+0x04d6 mem_y
+0x04e5 mem_y15
+0x04e6 mem_key_store
+0x04f7 mem_key_store_end
+0x04f8 memp_ar_key
+0x04fa memp_ar_input
+0x04fc mem_ar_hround
+0x0506 mem_ec_infinite
+0x0507 mem_ec_loopc
+0x0509 mem_aes_cmac_data_length
+0x050a memdat
+0x050a mem_ax
+0x0522 mem_ay
+0x053a mem_az
+0x0552 mem_bx
+0x056a mem_ax_256//32 bytes
+0x056a mem_by
+0x0582 mem_bz
+0x058a mem_ay_256// 32 bytes
+0x059a mem_cx
+0x05aa mem_az_256// 32 bytes
+0x05b2 mem_cy
+0x05c9 mem_cy5
+0x05ca mem_bx_256// 32 bytes
+0x05ca mem_cz
+0x05e2 mem_k
+0x05ea mem_by_256// 31 bytes
+0x05fa mem_align
+0x060a mem_bz_256//32 bytes
+0x060a mem_tmp1
+0x060a memahbak
+0x0622 mem_tmp5
+0x062a mem_cx_256//32 bytes
+0x062a memahsave
+0x063a mem_tmp2
+0x064a mem_cy_256// 32 bytes
+0x064a memahsave_end
+0x064a mem_addr_padding
+0x064b mem_addr_value/* 12 bytes     */ 
+0x0652 mem_tmp3
+0x0652 mem_t1
+0x0657 mem_addr_value_end
+0x065a mem_addr_iocap_end
+0x0669 mem_cy5_256// 1 byte
+0x066a mem_cz_256// 32 bytes
+0x066a mem_tmp0
+0x066a mem_t0
+0x0672 mem_tmp0a
+0x0682 mem_t2
+0x068a mem_k_256//32 bytes
+0x069a mem_t3
+0x06aa mem_tmp1_256//32 bytes
+0x06b2 mem_t7
+0x06ca mem_tmp5_256
+0x06ea mem_tmp2_256
+0x070a mem_tmp3_256
+0x070a mem_t1_256
+0x072a mem_tmp0_256
+0x072a mem_t0_256
+0x074a mem_t2_256
+0x076a mem_t3_256
+0x078a mem_t7_256
+0x07aa mem_p
+0x07c2 mem_a
+0x07da mem_b
+0x07f2 mem_gx
+0x080a mem_gy
+0x0822 memh0
+0x0842 mem_p_256
+0x0862 mem_a_256
+0x0882 mem_gx_256
+0x08a2 mem_gy_256
+0x08c2 mem_le_slat
+0x08d2 mem_sp_state_start
+0x08d2 mem_sp_state
+0x08d3 mem_master_sp_state
+0x08d4 mem_sp_flag
+0x08d5 mem_master_sp_flag
+0x08d6 mem_sp_calc
+0x08d7 mem_sp_dh_ready
+0x08d8 mem_sp_localsm
+0x08d9 mem_pairing_auth
+0x08da mem_sp_flag_start
+0x08da mem_sp_local_key_send_count
+0x08db mem_sp_remote_key_recv_count
+0x08dc mem_sp_remote_key_invalid
+0x08dd mem_sp_dhkey_invalid
+0x08de mem_gkey
+0x08e2 mem_le_pubkey_remote_x_256
+0x08ea mem_sp_pubkey_remote
+0x08ea mem_sp_pubkey_remote_x
+0x0902 mem_sp_pubkey_remote_x_end
+0x0902 mem_le_pubkey_remote_y_256
+0x090a mem_sp_pubkey_remote_y
+0x0922 mem_le_dhkey_256
+0x092a mem_sp_dhkey
+0x0942 mem_sp_dhkey_end
+0x0942 mem_sp_random_local
+0x0952 mem_sp_random_local_end
+0x0952 mem_sp_random_remote
+0x0962 mem_sp_random_remote_end
+0x0962 memresult
+0x0962 mem_sp_calc_result
+0x0962 memh
+0x0966 memg
+0x096a memf
+0x096e meme
+0x0972 mem_sp_calc_result_high
+0x0972 memd
+0x0976 memc
+0x097a memb
+0x097e mema
+0x0982 mem_sp_check_result
+0x0992 mem_sp_confirm_remote
+0x09a2 mem_sp_prarm_stack
+0x09b2 mem_UI_data_txbuff_length
+0x09b4 mem_ipc_skip_continue_proc
+0x09b5 mem_ui_timer_temp//length 4
+0x09b5 mem_ipc_rega_temp
+0x09b9 mem_hold_contr
+0x09bb mem_hold_contw
+0x09bd mem_fifo_temp
+0x09be mem_pdatatemp
+0x09c6 mem_temp//8 bytes
+0x09ce mem_timeup// 4 bytes
+0x09d2 mem_rega//4 bytes
+0x09d6 mem_regb//4 bytes
+0x09da mem_regc//3 bytes
+0x09dd mem_contr//2 bytes
+0x09df mem_contw//2 bytes
+0x09e1 mem_le_data_len_temp//1byte
+0x09e1 mem_tx_fifo_map_temp
+0x09e1 mem_rpn_dlci//1byte
+0x09e1 mem_event_cmd_response_content//2byte
+0x09e1 mem_le_prand//16byte
+0x09e1 mem_AES_CMAC_k//16 bytes
+0x09e1 mem_regext_index//1 bytes
+0x09e1 mem_temp_block0
+0x09e2 mem_le_data_temp//15bytes
+0x09e2 mem_temp_block1
+0x09f1 mem_le_aes_128//16byte
+0x09f1 mem_regext//64 bytes
+0x09f1 mem_AES_CMAC_k1//16 bytes
+0x09f1 mem_temp_block2
+0x0a01 mem_AES_CMAC_k2//16 bytes
+0x0a01 mem_temp_block3
+0x0a11 mem_AES_CMAC_temp// 16 bytes
+0x0a11 mem_temp_block4
+0x0a21 mem_AES_CMAC_M_last// 16 bytes
+0x0a21 mem_temp_block5
+0x0a31 mem_le_mackey//16 bytes
+0x0a31 mem_temp_block6
+0x0a41 mem_temp_prepare_write_request
+0x0b09 mem_kb_map2_temp_start
+0x0b09 mem_kb_map2_vk
+0x0b0c mem_kb_current_vk
+0x0b0f mem_kb_vk_offset
+0x0b10 mem_kb_vk_processed_cnt
+0x0b11 mem_kb_map2_current_cell_ptr
+0x0b13 mem_kb_device_button
+0x0b14 mem_table_temp0
+0x0b1c mem_table_temp1
+0x0b24 mem_kb_map2_temp_end
+0x0b24 mem_check_count
+0x0b25 mem_store_key_count
+0x0b26 mem_kb_gpio_val
+0x0b2a mem_c51_flag
+0x0b2b mem_c51_lmp_lock
+0x0b2c mem_lmp_bb_disconnect_reason
+0x4000 mem_patch00
+0x4001 mem_patch01
+0x4002 mem_patch02
+0x4003 mem_patch03
+0x4004 mem_patch04
+0x4005 mem_patch05
+0x4006 mem_patch06
+0x4007 mem_patch07
+0x4008 mem_patch08
+0x4009 mem_patch09
+0x400a mem_patch0a
+0x400b mem_patch0b
+0x400c mem_patch0c
+0x400d mem_patch0d
+0x400e mem_patch0e
+0x400f mem_patch0f
+0x4010 mem_patch10
+0x4011 mem_patch11
+0x4012 mem_patch12
+0x4013 mem_patch13
+0x4014 mem_patch14
+0x4015 mem_patch15
+0x4016 mem_patch16
+0x4017 mem_patch17
+0x4018 mem_patch18
+0x4019 mem_patch19
+0x401a mem_patch1a
+0x401b mem_patch1b
+0x401c mem_patch1c
+0x401d mem_patch1d
+0x401e mem_patch1e
+0x401f mem_patch1f
+0x4020 mem_patch20
+0x4021 mem_patch21
+0x4022 mem_patch22
+0x4023 mem_patch23
+0x4024 mem_patch24
+0x4025 mem_patch25
+0x4026 mem_patch26
+0x4027 mem_patch27
+0x4028 mem_patch28
+0x4029 mem_patch29
+0x402a mem_patch2a
+0x402b mem_patch2b
+0x402c mem_patch2c
+0x402d mem_patch2d
+0x402e mem_patch2e
+0x402f mem_patch2f
+0x4030 mem_patch30
+0x4031 mem_patch31
+0x4032 mem_patch32
+0x4033 mem_patch33
+0x4034 mem_patch34
+0x4035 mem_patch35
+0x4036 mem_patch36
+0x4037 mem_patch37
+0x4038 mem_patch38
+0x4039 mem_patch39
+0x403a mem_patch3a
+0x403b mem_patch3b
+0x403c mem_patch3c
+0x403d mem_patch3d
+0x403e mem_patch3e
+0x403f mem_patch3f
+0x4040 mem_context
+0x4130 mem_current_amaddr
+0x4131 mem_lpm_mode
+0x4132 mem_device_option
+0x4133 mem_scan_mode
+0x4134 mem_last_clkn
+0x4138 mem_features
+0x4140 mem_lap
+0x4143 mem_uap
+0x4144 mem_nap
+0x4146 mem_npage
+0x4147 mem_glap
+0x414a mem_class
+0x414d mem_iscan_window
+0x414f mem_iscan_interval
+0x4151 mem_pscan_window
+0x4153 mem_pscan_interval
+0x4155 mem_page_interval
+0x4157 mem_page_window
+0x4159 mem_page_to
+0x415b mem_inq_window
+0x415d mem_fcomp_mul
+0x415e mem_fcomp_div
+0x415f mem_rx_window_init
+0x4161 mem_rx_window_sniff
+0x4163 mem_rf_init_ptr
+0x4165 mem_last_type
+0x4166 mem_last_type_esco
+0x4167 mem_last_type_saved
+0x4168 mem_retransmission_cnt
+0x416a mem_next_btclk
+0x416e mem_rf_rccal
+0x416f mem_handle_num
+0x4170 mem_max_slot
+0x4171 mem_eir_enable
+0x4172 mem_afh_instant
+0x4176 mem_afh_error_total
+0x4178 mem_afh_cfg
+0x4179 mem_afh_new_mod
+0x417a mem_afh_map_lo
+0x417f mem_afh_map_hi
+0x4184 mem_afh_used
+0x4185 mem_afh_index
+0x4187 mem_afh_map_new
+0x4192 mem_afh_map
+0x41e2 mem_afh_timer
+0x41e6 mem_afh_classify_channel_map
+0x41f0 mem_chip_functions
+0x41f2 mem_lpm_wake_lock
+0x41f4 mem_lpm_interval
+0x41f6 mem_lpm_overhead
+0x41f7 mem_lpm_hibernate_switch
+0x41f8 mem_esco_addr
+0x41f9 mem_sniff_unint_lost
+0x41fa mem_ptt
+0x41fb mem_sleep_counter//should be 0x41fc in REVC
+0x41ff mem_sleep_counter_all
+0x4203 mem_sleep_clkn
+0x4209 mem_sniff_rcv
+0x420c mem_sniff_lost
+0x420f mem_clks_per_lpo
+0x4212 mem_lpm_mult
+0x4213 mem_lpm_mult_timeout
+0x4214 mem_lpm_mult_cnt
+0x4215 mem_lpm_config
+0x4218 mem_lpm_xtalcnt
+0x4219 mem_lpm_buckcnt
+0x421a mem_lpm_ldocnt
+0x421b mem_lpm_isogate
+0x421c mem_lpm_isogate_final
+0x421d mem_saved_gpio// should be 0x421e in REVC
+0x422d mem_saved_gsel
+0x4230 mem_saved_mark
+0x4238 mem_saved_spidctrl
+0x4239 mem_patch_ptr
+0x423b mem_patch_len
+0x423d mem_timers
+0x425d mem_link_key_exists
+0x425e mem_link_key_eeprom_head
+0x4261 mem_link_key
+0x4271 mem_hci_cmd
+0x4272 mem_hci_conn_handle
+0x4273 mem_hci_plap
+0x4276 mem_hci_puap
+0x4277 mem_hci_pnap
+0x4279 mem_uartd_rxitems_got_data
+0x427a mem_uartd_rxitems_threshold
+0x427b mem_uartd_rx_timeout
+0x427d mem_tx_lch
+0x427e mem_tx_len
+0x4280 mem_tx_power
+0x4281 mem_context_number
+0x4282 mem_rf_init_data
+0x4283 mem_app_handshake_flag
+0x4284 mem_sniff_param_interval
+0x4286 mem_sniff_param_attempt
+0x4288 mem_sniff_param_timeout
+0x428a mem_cb_check_wakelock
+0x428c mem_cb_before_hibernate
+0x428e mem_cb_before_lpm
+0x4290 mem_cb_le_process
+0x4292 mem_cb_bt_process
+0x4294 mem_cb_idle_process
+0x4296 mem_cb_bb_event_process
+0x4298 mem_cb_discovry_timeout
+0x429a mem_cb_att_write
+0x429c mem_cb_update_notify_value
+0x429e mem_cb_update_notify_continue
+0x42a0 mem_cb_event_timer
+0x42a2 mem_cb_le_set_mult
+0x42a4 mem_cb_bt_set_mult
+0x42a6 mem_soft_version_num
+0x42a8 mem_eeprom_base
+0x42aa mem_unsniff2sniff_timer_count
+0x42ab mem_wake_up_delay_timer
+0x42ac mem_app_connection_options
+0x42ad mem_app_disconn_reason
+0x42af mem_app_disconn_reason_flag
+0x42b1 mem_lpm_delay_after_sniff
+0x42b5 mem_xrecord_mode
+0x42b6 mem_eeprom_block_size
+0x42b8 mem_wakup_from_power_flag
+0x42b9 mem_spi_init_clk
+0x42ba mem_spi_init_delay_time
+0x42bb mem_spi_ncs_gpio
+0x42bc mem_nv_data_ptr
+0x42be mem_nv_data_number
+0x42bf mem_0_5_adc_io_data
+0x42c1 mem_1v_adc_hvin_data
+0x42c3 mem_2v_adc_vinlpm_data
+0x42c5 mem_1v_adc_io_data
+0x42c7 mem_5v_adc_hvin_data
+0x42c9 mem_3v_adc_vinlpm_data
+0x42cb mem_otp_adc_flag
+0x42cd mem_reference_voltage
+0x42cf mem_adc_config_flag
+0x42d0 mem_adc_channel
+0x42d1 mem_adc_current_value
+0x42d3 mem_baud
+0x42d5 mem_hci_lt_rx_state
+0x42d6 mem_l2cap_xmem_start
+0x42d6 mem_l2cap_tx_multi_offset//0 means single packet
+0x42d8 mem_sdp_remote_cid
+0x42da mem_rfcomm_remote_cid
+0x42dc mem_hid_ctrl_remote_cid
+0x42de mem_hid_int_remote_cid
+0x42e0 mem_sdp_state
+0x42e1 mem_rfcomm_state
+0x42e2 mem_hid_control_state
+0x42e3 mem_hid_interrupt_state
+0x42e4 mem_spp_state
+0x42e5 mem_ML2CAP_comm_id
+0x42e6 mem_used_map
+0x42e7 mem_tx_fifo0
+0x42e7 mem_tx_fifo0_map
+0x42e8 mem_tx_fifo0_ptr
+0x42ea mem_tx_fifo1
+0x42ea mem_tx_fifo1_map
+0x42eb mem_tx_fifo1_ptr
+0x42ed mem_tx_fifo2
+0x42ed mem_tx_fifo2_map
+0x42ee mem_tx_fifo2_ptr
+0x42f0 mem_tx_fifo3
+0x42f0 mem_tx_fifo3_map
+0x42f1 mem_tx_fifo3_ptr
+0x42f3 mem_tx_fifo_end
+0x42f3 mem_l2cap_lpm_txbuf
+0x43f3 mem_l2cap_flow_ctrl_flag
+0x43f4 mem_l2cap_pending_item
+0x43f5 mem_l2cap_xmem_end
+0x43f5 mem_le_dsniff
+0x43f7 mem_le_conn_interval
+0x43f9 mem_le_scan_enable
+0x43fa mem_le_scan_interval
+0x43fc mem_le_scan_window
+0x43fe mem_le_adv_led
+0x43ff mem_le_adv_enable
+0x4400 mem_le_adv_data_len
+0x4401 mem_le_adv_data
+0x4420 mem_le_scan_data_len
+0x4421 mem_le_scan_data
+0x4440 mem_le_name_len
+0x4441 mem_le_name
+0x4455 mem_le_led_on_time
+0x4456 mem_le_new_map
+0x445b mem_le_new_param
+0x445b mem_le_new_transmitwindowsize
+0x445c mem_le_new_transmitwindowoffset
+0x445e mem_le_new_conninterval
+0x4460 mem_le_new_connslavelatency
+0x4462 mem_le_new_connsupervisiontimeout
+0x4464 mem_le_temp
+0x4465 mem_le_txheader
+0x4466 mem_le_txlen
+0x4467 mem_le_txpayload
+0x4469 mem_le_txcid
+0x446b mem_le_l2cap
+0x446c mem_le_l2cap_response
+0x446d mem_le_txbdy
+0x448c mem_le_pcnt_tx
+0x4491 mem_le_pcnt_rx
+0x4496 mem_le_last_mic
+0x449a mem_le_ivm
+0x449e mem_le_ivs
+0x44a2 mem_le_ltk
+0x44b2 mem_ltk_exists
+0x44b3 mem_le_rconfirm
+0x44c3 mem_le_srand
+0x44d3 mem_le_iat
+0x44d4 mem_le_rat
+0x44d5 mem_le_preq
+0x44d6 mem_le_preq_iocap
+0x44d7 mem_le_preq_oob
+0x44d8 mem_le_preq_auth
+0x44d9 mem_le_preq_max_keysize
+0x44da mem_le_preq_init_key_distribution
+0x44db mem_le_preq_resp_key_distribution
+0x44dc mem_le_pres
+0x44dd mem_le_pres_iocap
+0x44de mem_le_pres_oob
+0x44df mem_le_pres_auth
+0x44e0 mem_le_pres_max_keysize
+0x44e1 mem_le_pres_init_key_distribution
+0x44e2 mem_le_pres_resp_key_distribution
+0x44e3 mem_le_search_handle_start
+0x44e5 mem_le_search_handle_end
+0x44e7 mem_le_att_offset
+0x44e7 mem_le_search_att_type_length
+0x44e8 mem_le_search_att_type
+0x44f8 mem_le_notify_handle
+0x44fa mem_le_search_uuid_length
+0x44fb mem_le_search_uuid
+0x450b mem_le_handle_data_len
+0x450c mem_le_handle_data
+0x451c mem_le_adv_param
+0x451c mem_le_adv_interval_min
+0x451e mem_le_adv_interval_max
+0x4520 mem_le_adv_type
+0x4521 mem_le_adv_own_addr_type
+0x4522 mem_le_adv_direct_addr_type
+0x4523 mem_le_adv_direct_addr
+0x4529 mem_le_adv_channel_map
+0x452a mem_le_adv_filter_policy
+0x452b mem_le_conn_param
+0x452b mem_le_conn_peer_addr_type
+0x452c mem_le_conn_peer_addr
+0x4532 mem_le_conn_own_addr_type
+0x4533 mem_le_conn_interval_min
+0x4535 mem_le_conn_interval_max
+0x4537 mem_le_conn_latency
+0x4539 mem_le_conn_superto
+0x453b mem_le_scan_params
+0x453b mem_le_scan_type
+0x453c mem_le_scan_own_addr_type
+0x453d mem_le_scan_filter_policy
+0x453e mem_le_lap
+0x4541 mem_le_uap
+0x4542 mem_le_nap
+0x4544 mem_le_xtype_fifo
+0x454c mem_le_local_mtu
+0x454e mem_le_remote_mtu
+0x4550 mem_le_ll_cur_opcode
+0x4551 mem_le_skdm
+0x4559 mem_le_skds
+0x4561 mem_le_init_superto
+0x4563 mem_le_secure_connect_enable
+0x4564 mem_le_secure_connect_flag
+0x4565 mem_le_sc_calc
+0x4566 mem_le_secure_connect_state
+0x4567 mem_le_sc_confirm_gkey_flag
+0x4568 mem_le_sc_local_key_invalid
+0x4569 mem_le_continue_flag
+0x456a mem_le_pairing_state
+0x456b mem_le_enc_state
+0x456c mem_le_pairing_mode
+0x456d mem_le_tk
+0x4571 mem_le_ediv
+0x4573 mem_le_rand
+0x457b mem_le_irk
+0x458b mem_le_pairing_handle
+0x458d mem_le_interal_min
+0x458f mem_le_interal_max
+0x4591 mem_le_latency
+0x4593 mem_le_timeout
+0x4595 mem_le_switch_send_data
+0x4596 mem_le_transmit_window
+0x459a mem_le_buff_len
+0x459c mem_le_buff_len_all
+0x459e mem_le_buff_data_len_all
+0x45a0 mem_prepare_write_len
+0x45a2 mem_le_prepare_write_req_offset
+0x45a4 mem_prepare_handle
+0x45a6 mem_prepare_write_offest
+0x45a8 mem_le_flag
+0x45a9 mem_lmp_version
+0x45ac mem_lmp_subversion
+0x45ae mem_local_name_length
+0x45af mem_local_name
+0x45b2 mem_local_name2
+0x45f2 mem_local_name_end
+0x45f3 mem_unsniff2sniff_timer
+0x45f4 mem_switch_flag
+0x45f5 mem_pn_dlci
+0x45f6 mem_pn_max_frame_size
+0x45f8 memFCStemp1
+0x45f9 memFCStemp2
+0x45fa memFCStemp3
+0x45fb mem_rfcomm_initiator
+0x45fc mem_remote_spp_channel
+0x45fd mem_HIUfcs_SPP
+0x45fe mem_HIUfcs_SPP_WCredits
+0x45ff mem_rfcomm_send_more_pkt
+0x4600 mem_remote_credits
+0x4601 mem_credit_given
+0x4602 mem_ms_channel
+0x4603 mem_credit_flag
+0x4604 mem_rfcomm_max_frame_size
+0x4606 mem_rfcomm_credit_init_data
+0x4607 mem_cb_receive_spp_data
+0x4609 mem_nl_rx_data_src
+0x460b mem_nl_rx_len_all
+0x460d mem_ui_uuid_table
+0x460f mem_all_uuid_16bits
+0x4625 mem_all_uuid_128bits
+0x4637 mem_ui_le_uuid_table
+0x4639 mem_sp_local_key_invalid
+0x463a mem_le_private_key_256
+0x465a mem_le_pubkey_local_x_256
+0x467a mem_le_pubkey_local_y_256
+0x469a mem_sp_private_key
+0x46b2 mem_sp_pubkey_local
+0x46b2 mem_sp_pubkey_local_x
+0x46ca mem_sp_pubkey_local_x_end
+0x46ca mem_sp_pubkey_local_y
+0x46e2 mem_ssp_enable
+0x46e3 mem_sp_iocap_local
+0x46e6 mem_sp_iocap_remote
+0x46e9 mem_flag_mode_ssp_pin
+0x46ea mem_ssp_mode_flag
+0x46eb mem_authentication_passkey_times
+0x46ec mem_passkey_1bit
+0x46ed mem_flag_pairing_state
+0x46ee mem_ipc_lock_bt
+0x46ef mem_ipc_lock_c51
+0x46f0 mem_ipc_fifo_bt2c51
+0x46f8 mem_ipc_fifo_c512bt
+0x4700 mem_led_switch
+0x4701 mem_ui_button_timer
+0x4702 mem_ui_button_last_state
+0x4703 mem_ui_timer_last_btclk
+0x4707 mem_discovery_timeout_timer_count
+0x4709 mem_hid_handshake_timer_count
+0x470a memui_reconnect_mode
+0x470b mem_ui_state_map
+0x470d mem_ui_profile_supported
+0x470e mem_led_gpio
+0x470f mem_led_dark_time
+0x4711 mem_led_light_time
+0x4713 mem_led_blink_count
+0x4714 mem_ui_button_timeout
+0x4715 mem_ui_button_gpio
+0x4716 mem_discovery_timeout
+0x4718 mem_pin_length
+0x4719 mem_pin
+0x4729 mem_24g_tx_btclk
+0x472d mem_24g_interval
+0x472e mem_24g_txfail_cnt
+0x472f mem_24g_attempt_cnt
+0x4730 mem_24g_attempt_flag
+0x4731 mem_24g_rxfail_cnt
+0x4734 mem_24g_retry
+0x4735 mem_24g_pid
+0x4736 mem_24g_datalen
+0x4737 mem_24g_crc
+0x4739 mem_24g_rxbuf
+0x4779 mem_24g_addr
+0x477d mem_24g_len
+0x477f mem_24g_txpayload
+0x4789 mem_24g_txdata
+0x4793 mem_24g_ch
+0x4794 mem_24g_scremble
+0x47a4 mem_24g_current_ch_number
+0x47a5 mem_24g_ch_map1
+0x47a9 mem_24g_ch_map2
+0x47ad mem_24g_ch_map3
+0x47b1 mem_24g_ch_map4
+0x47b5 mem_24g_interval_min
+0x47b6 mem_24g_interval_max
+0x47b7 mem_24g_ensure
+0x47b8 mem_24g_enter_hibernate
+0x47c0 mem_24g_enter_lpm_timer
+0x47c1 mem_24g_pairing_sm
+0x47c2 mem_24g_addr_copy
+0x47c6 mem_24g_sifs
+0x47c7 mem_24g_rxcnt
+0x47c8 mem_24g_addr_private_dongle
+0x47cc mem_24g_map_buff0_dongle
+0x47cd mem_24g_channel_cnt_dongle
+0x47ce mem_24g_pairing_sm_dongle
+0x47cf mem_24g_tx_btclk_dongle
+0x47d3 mem_24g_interval_dongle
+0x47d4 mem_24g_ch_update_dongle
+0x47d5 mem_24g_rx_sync_dongle
+0x47d6 mem_24g_ch_cnt_dongle
+0x47d7 mem_24g_rxbuf_temp_dongle
+0x47dd mem_24g_rxbuf_dongle
+0x47e3 mem_24g_rxfail_cnt_dongle
+0x47e6 mem_24g_spi_enable_flag
+0x4729 mem_acl_credits
+0x472b mem_allow_switch
+0x472c mem_hci_acl_queue_start/*param_acl_pktcnt+2 byte*/
+0x4730 mem_hci_wake_clk
+0x4729 mem_kb_state
+0x472b mem_kb_report_data
+0x4731 mem_kb_keys
+0x4732 mem_kb_rcv_led_data
+0x4733 mem_kb_fast_wake_last
+0x4737 mem_led_cap_gpio
+0x4738 mem_led_num_gpio
+0x4739 mem_led_scl_gpio
+0x473a mem_kb_current_vdd_value_10times
+0x473c mem_kb_read_adc_cnt_100ms
+0x473d mem_kb_current_vdd_value
+0x473f mem_led_power_blink_count
+0x4740 mem_led_power_500ms_cnt
+0x4741 mem_kb_map2
+0x49fd mem_3v1_adc_default
+0x49ff mem_kb_map
+0x4a9d mem_kb_discovery_timer
+0x4a9f mem_kb_direct_timer
+0x4aa1 mem_kb_no_data_timer
+0x4aa3 mem_kb_direct_timeout
+0x4aa5 mem_kscn_event_last
+0x4aa6 mem_kscan_event_num_last
+0x4aa7 mem_auto_enable_mult_timer
+0x4aa8 mem_auto_enable_mult_timer_init
+0x4aa9 mem_kb_temp_flag
+0x4aaa mem_map2_out_report0
+0x4ab2 mem_map2_out_report1
+0x4aba mem_table_last_repory_data0
+0x4ac2 mem_table_last_repory_data1
+0x4aca mem_kb_down
+0x4ad4 mem_kb_down_last
+0x4ade mem_table_temp
+0x4ae6 mem_pincode_vk_last
+0x4ae7 mem_kb_device_button_last
+0x4ae8 mem_kb_device_button_timer
+0x4ae9 mem_kb_current_status
+0x4aea mem_seq
+0x4aeb mem_dorx_cnt
+0x4aec mem_matched_btclk
+0x4aee mem_master_sniff_interval
+0x4aef mem_led_power_gpio
+0x4af0 mem_kb_check_vdd_count
+0x4af2 mem_0v_adc_data
+0x4af4 mem_2v2_adc_data
+0x4af6 mem_3v_adc_data
+0x4af8 mem_select_system_led_timer
+0x4af9 mem_led_cap_gpio_status
+0x4afa mem_kb_no_data_timeout
+0x4afc mem_kb_gpio_last_val
+0x4b00 mem_store_current_status
+0x4b01 mem_kb_led_on_timer
+0x4b02 mem_kb_debug_sm
+0x4b03 mem_kb_mode
+0x4b05 mem_kb_mode_revese
+0x4b07 mem_master_addr
+0x4b0d mem_led_device_blink_count
+0x4b0e mem_led_device_500ms_cnt
+0x4b0f mem_kb_caps_led_status
+0x4b10 mem_kb_reconnection_ssp
+0x4b11 mem_kb_rcv_hid_control_rsp
+0x4b12 mem_kb_down_regroup
+0x4b17 mem_kb_get_fn_flag
+0x4b18 mem_kb_kscan_cnt
+0x4b19 mem_kb_down_test
+0x4b23 mem_kb_release_fn_data
+0x4b24 mem_led_cap_delay_timer
+0x4b25 mem_led_cap_mult_timer
+0x4b26 mem_led_cap_flag
+0x4b27 mem_hid_rx_data
+0x4b28 mem_kb_fn_c
+0x4b29 mem_kb_c_fn
+0x4b2a mem_keyboard_uuid_list
+0x4db4 mem_keyboard_uuid_list_end
+0x4db4 mem_keyboard_le_att_list
+0x4fa8 mem_keyboard_le_att_list_end
+0x4729 mem_module_wake_up_gpio
+0x472a mem_module_state_gpio
+0x472b mem_module_connect_state_gpio
+0x472c mem_current_packet_length
+0x472e mem_module_state
+0x472f mem_module_task
+0x4730 mem_cmode_addr
+0x4736 mem_module_mcu_wake_pin
+0x4737 mem_module_mcu_wake_delay_us
+0x473b mem_module_spp_lpm_mult
+0x473c mem_module_le_lpm_mult
+0x473d mem_module_bluetooth_stauts_by_command
+0x473e mem_module_uart_rx_buffer
+0x4740 mem_module_uart_rx_buffer_end
+0x4742 mem_module_uart_tx_buffer
+0x4744 mem_module_uart_tx_buffer_end
+0x4746 mem_module_read_vdd_flag
+0x4747 mem_module_read_vdd_count
+0x4748 mem_module_vdd_quotient
+0x4749 mem_module_vdd_remainder
+0x474a mem_module_le_buff_len
+0x474c mem_module_le_buff_len_all
+0x474e mem_module_le_buff_data_len_all
+0x4750 mem_module_le_continue_flag
+0x4751 mem_module_le_rx_data_len
+0x4752 mem_module_le_rx_data_address
+0x4754 mem_module_le_rx_data_handle
+0x4756 mem_module_data_write_handle
+0x4758 mem_module_data_write_handle2
+0x475a mem_module_flag
+0x475b mem_le_notify_type
+0x475c mem_module_hci_notify_start
+0x475e mem_module_hci_notify_offset
+0x4760 mem_module_hci_notify_len
+0x4762 mem_module_hci_notify_att
+0x4764 mem_module_hci_notify_original_len
+0x4766 mem_module_uuid_list
+0x4892 mem_module_uuid_list_end
+0x4892 mem_module_le_att_list
+0x4a86 mem_module_le_att_list_end
+0x4a86 mem_nv_data
+0x4a86 mem_nv_data0
+0x4aa8 mem_nv_data1
+0x4aca mem_nv_data2
+0x4aec mem_nv_data3
+0x4b0e mem_nv_data4
+0x4729 mem_mouse_key
+0x472a mem_mouse_x
+0x472c mem_mouse_y
+0x472e mem_mouse_z
+0x472f mem_mouse_tz
+0x4730 mem_mouse_xy_h
+0x4731 mem_sensor_shutter_hi
+0x4732 mem_sensor_shutter_lo
+0x4733 mem_sensor_smart_flag
+0x4734 mem_sensor_squal_reg
+0x4735 mem_mouse_move_flag
+0x4736 mem_reconnect_timeout
+0x4737 mem_mouse_direct_timeout
+0x4739 mem_mouse_no_data_timeout
+0x473b mem_mouse_blank_data_timeout
+0x473d mem_mouse_discovery_timer
+0x473f mem_mouse_direct_timer
+0x4741 mem_mouse_no_data_timer
+0x4743 mem_mouse_blank_data_timer
+0x4745 mem_mouse_send_blank_timer
+0x4746 mem_mouse_dpi
+0x4747 mem_mouse_dpi_button_state
+0x4748 mem_mouse_test_cnt
+0x4749 mem_le_hibernate_timer
+0x474b mem_mouse_mode_state
+0x474c mem_mouse_le_notify_handle
+0x474d mem_lbutton_gpio
+0x474e mem_rbutton_gpio
+0x474f mem_mbutton_gpio
+0x4750 mem_sbutton1_gpio
+0x4751 mem_sbutton2_gpio
+0x4752 mem_dpi_button_gpio
+0x4753 mem_sensor_data_gpio
+0x4754 mem_whee_a_data_gpio
+0x4755 mem_whee_b_data_gpio
+0x4756 mem_sensor_reset_gpio
+0x4757 mem_device1_led_gpio
+0x4758 mem_device2_led_gpio
+0x4759 mem_device3_led_gpio
+0x475a mem_conn_cnt
+0x475b mem_whee_ta_data_gpio
+0x475c mem_whee_tb_data_gpio
+0x475d mem_wheel_tb_old_pinlevel
+0x475e mem_wheel_tb_new_pinlevel
+0x475f mem_wheel_tog
+0x4760 mem_mouse_tz_data
+0x4761 mem_mouse_tz_data_count
+0x4762 mem_mouse_tz_data_count1
+0x4763 mem_mwhee_a_data_gpio
+0x4764 mem_mwhee_b_data_gpio
+0x4765 mem_mwheel_b_old_pinlevel
+0x4766 mem_mwheel_b_new_pinlevel
+0x4767 mem_mwheel_tog
+0x4768 mem_mouse_z_data
+0x4769 mem_mouse_z_data_count
+0x476a mem_mouse_z_data_count1
+0x476b mem_reconn_mode
+0x476c mem_mouse_statue_led_timer
+0x476d mem_device_flag
+0x476e mem_mouse_uuid_list
+0x4a5c mem_mouse_uuid_list_end
+0x4a5c mem_mouse_le_att_list
+0x4cb4 mem_mouse_le_att_list_end
+0x4729 mem_shutter_send_data
+0x472d mem_shutter_key_temp
+0x472e mem_shutter_send_length
+0x472f mem_shutter_clkn_bt_last
+0x4733 mem_shutter_key
+0x4734 mem_shutter_flag
+0x4735 mem_shutter_cable_unplug_conut
+0x4736 mem_shutter_hid_disconn_count
+0x4737 mem_shutter_1key_send_sm
+0x4738 mem_shutter_iphonekey_gpio
+0x4739 mem_shutter_androidkey_gpio
+0x473a mem_shutter_key_number
+0x473b mem_read_eeprom_temp
+0x473c mem_read_eeprom_mac_addr
+0x473f mem_scale_tx_length
+0x4740 mem_scale_txbuff_inuse
+0x4741 mem_adv_lap_ptr
+0x4743 mem_le_sleep_flag
+0x4744 mem_rx_window_sniff_inc
+0x4746 mem_pair_state
+0x4747 mem_exchange_mtu_req
+0x4748 mem_le_sleep_timeout
+0x474a mem_le_sleep_timeout_timer_count
+0x474c mem_le_fast_adv_timeout
+0x474e mem_le_fast_adv_timeout_timer_count
+0x4750 mem_led_fast_dark_time
+0x4752 mem_led_fast_light_time
+0x4754 mem_power_on_pin
+0x4755 mem_hard_soft_switch_case
+0x4756 mem_shutter_powerup_flag
+0x4757 mem_shutter_button_timeout
+0x4758 mem_shutter_button_timer
+0x4759 mem_power_timeout
+0x475a mem_power_timer
+0x475b mem_enable_key_scan
+0x475c mem_packet_interval_set
+0x475e mem_shutter_led_num
+0x475f mem_led_map
+0x4763 mem_fast_adv_led_style
+0x4763 mem_fa_led_type
+0x4764 mem_fa_led_pin
+0x4765 mem_fa_led_on_time
+0x4767 mem_fa_led_off_time
+0x4769 mem_fa_blink_count
+0x476a mem_slow_adv_led_style
+0x476a mem_sa_led_type
+0x476b mem_sa_led_pin
+0x476c mem_sa_led_on_time
+0x476e mem_sa_led_off_time
+0x4770 mem_sa_blink_count
+0x4771 mem_power_on_led_style
+0x4771 mem_po_led_type
+0x4772 mem_po_led_pin
+0x4773 mem_po_led_on_time
+0x4775 mem_po_led_off_time
+0x4777 mem_po_blink_count
+0x4778 mem_powe_off_led_style
+0x4778 mem_pf_led_type
+0x4779 mem_pf_led_pin
+0x477a mem_pf_led_on_time
+0x477c mem_pf_led_off_time
+0x477e mem_pf_blink_count
+0x477f mem_connected_led_style
+0x477f mem_co_led_type
+0x4780 mem_co_led_pin
+0x4781 mem_co_led_on_time
+0x4783 mem_co_led_off_time
+0x4785 mem_co_blink_count
+0x4786 mem_key_led_style
+0x4786 mem_key_led_style_ind_0
+0x4786 mem_key_led_style_ind_0_data
+0x478d mem_key_led_style_ind_1
+0x478d mem_key_led_style_ind_1_data
+0x4794 mem_key_led_style_ind_2
+0x4794 mem_key_led_style_ind_2_data
+0x479b mem_key_led_style_ind_3
+0x479b mem_key_led_style_ind_key_release
+0x479b mem_key_led_style_ind_3_data
+0x47a2 mem_temp_led_style
+0x47a2 mem_temp_led_type
+0x47a3 mem_temp_led_pin
+0x47a4 mem_temp_led_on_time
+0x47a6 mem_temp_led_off_time
+0x47a8 mem_temp_blink_count
+0x47a9 mem_shutter_key_num
+0x47aa mem_key_conf0
+0x47aa mem_key_conf0_pin
+0x47ab mem_key_conf0_led
+0x47ac mem_key_conf1
+0x47ac mem_key_conf1_pin
+0x47ad mem_key_conf1_led
+0x47ae mem_key_conf2
+0x47ae mem_key_conf2_pin
+0x47af mem_key_conf2_led
+0x47b0 mem_key_conf3
+0x47b0 mem_key_conf3_pin
+0x47b1 mem_key_conf3_led
+0x47b2 mem_key_conf4
+0x47b2 mem_key_conf4_pin
+0x47b3 mem_key_conf4_led
+0x47b4 mem_key_conf5
+0x47b4 mem_key_conf5_pin
+0x47b5 mem_key_conf5_led
+0x47b6 mem_key_value_temp
+0x47b8 mem_key_value
+0x47ba mem_key_packet_count
+0x47bb mem_key_next_addr
+0x47bd mem_key_value_temp1
+0x47be mem_key_value_temp2
+0x47bf mem_key_value_temp3
+0x47c0 mem_key_value_temp4
+0x47c1 mem_key_value_temp5
+0x47c2 mem_key_value_temp6
+0x47c3 mem_key0_press
+0x47d7 mem_key0_release
+0x47eb mem_key1_press
+0x47f9 mem_key1_release
+0x4807 mem_key2_press
+0x4815 mem_key2_release
+0x4823 mem_key3_press
+0x4831 mem_key3_release
+0x483f mem_key4_press
+0x484d mem_key4_release
+0x485b mem_key5_press
+0x4869 mem_key5_release
+0x4877 mem_queue_ele_num
+0x4878 mem_queue_read
+0x487a mem_queue_write
+0x487c mem_queue_start
+0x487c mem_data_ele0
+0x4886 mem_data_ele1
+0x4890 mem_data_ele2
+0x489a mem_data_ele3
+0x48a4 mem_data_ele4
+0x48ae mem_data_ele5
+0x48b8 mem_queue_end
+0x48b8 mem_queue_temp
+0x48ba mem_shutter_key_data_flag
+0x48bb mem_shutter_key_data_flag_1
+0x48bc mem_le_find_type_value_start_handle
+0x48be mem_le_find_type_value_end_handle
+0x48c0 mem_shutter_find_type_value_flag
+0x48c1 mem_le_uuid
+0x48c2 mem_send_updata_le_param_timer
+0x48c3 mem_le_smp_key_dist
+0x48c6 mem_ltk_states
+0x48c7 mem_shutter_conn_update_timer
+0x48c8 mem_empty_count
+0x48c9 mem_shutter_notification_len
+0x48ca mem_shutter_notification_addr
+0x48cc mem_shutter_le_att_list
+0x4729 mem_current_event
+0x472a mem_ipc_lock_rx_data_bt
+0x472b mem_ipc_lock_rx_data_c51
+0x472c mem_ipc_lock_tx_data_bt
+0x472d mem_ipc_lock_tx_data_c51
+0x472e mem_ipc_2bt_fifo_head
+0x47c4 mem_ipc_2bt_fifo_end
+0x47c4 mem_ipc_2bt_read_index
+0x47c6 mem_ipc_2bt_write_index
+0x47c8 mem_ipc_2C51_fifo_head
+0x482c mem_ipc_2C51_fifo_end
+0x482c mem_ipc_2C51_read_index
+0x482e mem_ipc_2C51_write_index
+0x4830 mem_c51_private_area
+0x4894 mem_ipc_tx_evt_buff
+0x4896 mem_ipc_tx_evt
+0x4897 mem_ipc_rx_type
+0x4898 mem_ipc_bt_timer
+0x489a mem_ipc_c51_timer
+0x489c mem_ipc_bt_100ms_timer
+0x489d mem_ipc_c51_100ms_timer
+0x489e mem_ipc_last_check_timer
+0x48a2 mem_new_24g_rxbuf
+0x48c4 mem_new_24g_txbuf
+0x48e4 mem_new_24g_txpayload
+0x4906 mem_new_24g_rxpayload
+0x4926 mem_new_24g_rxdata_length
+0x4927 mem_new_24g_pid
+0x4928 mem_new_24g_datalen
+0x4929 mem_new_24g_data_type
+0x492a mem_new_24g_txlen
+0x492b mem_new_24g_rx_window
+0x492d mem_new_24g_ensure
+0x492e mem_new_24g_txfail_cnt
+0x4930 mem_new_24g_get_ack_fail
+0x4931 mem_new_24g_retry
+0x4932 mem_new_24g_ch
+0x4933 mem_new_24g_current_ch_number
+0x4934 mem_new_24g_paring_addr
+0x4938 mem_new_24g_pairing_sm
+0x4939 mem_new_24g_ch_map1
+0x493d mem_new_24g_ch_map2
+0x4941 mem_new_24g_ch_map3
+0x4945 mem_new_24g_ch_map4
+0x4949 mem_new_24g_tx_btclk
+0x494d mem_new_24g_interval
+0x494e mem_new_24g_interval_min
+0x494f mem_new_24g_interval_max
+0x4950 mem_new_24g_addr
+0x4954 mem_new_24g_abort_pac
+0x4955 mem_new_24g_sync_pac
+0x4956 mem_new_24g_check_dongle_times
+0x4958 mem_new_24g_enter_hibernate
+0x4960 mem_new_24g_device_addr
+0x4964 mem_new_24g_pac_index
+0x4965 mem_new_24g_no_ack
+0x4966 mem_new_24g_sta_crc
+0x4969 mem_new_24g_last_crc
+0x496c mem_new_24g_sta_pid
+0x496d mem_new_24g_last_pid
+0x496e mem_new_24g_max_retry
+0x496f mem_new_24g_mode
+0x4970 mem_new_uart_packet
+0x4990 mem_new_24g_common_temp
+0x49b0 mem_new_24g_rf_last_sta
+0x49b1 mem_new_24g_rf_hop_ch
+0x49b2 mem_new_24g_sync_cnt
+0x49b3 mem_new_24g_hop_pac_retry
+0x49b4 mem_new_24g_rf_work_stage
+0x49b5 mem_new_24g_hop_fastly_cnt
+0x49b6 mem_new_24g_auto_paring_switch
+0x49b7 mem_new_24g_key_wheel_event
+0x49b8 mem_new_24g_delay_long_sleep_cnt
+0x49b9 mem_new_24g_delay_long_sleep_maxcnt
+0x49ba mem_new_24g_enter_lpm_timer
+0x49bb mem_new_24g_syncword
+0x49bd mem_new_24g_syncword_crc8
+0x49be mem_new_24g_get_syncword_crc8
+0x49bf mem_new_24g_paccnt
+0x49c0 mem_new_24g_ota_enable
+0x49c1 mem_bt_wakeup_from_long_mult
+0x49c2 mem_bt_motion_event
+0x49c3 mem_tx_power_temp
+0x49c4 mem_power_ctrl_level
+0x49c5 mem_power_ctrl_pac_succ_cnt
+0x49c6 mem_rssi_signal_buf
+0x49ce mem_rssi_signal_index
+0x49cf mem_rssi_hex_received
+0x49d0 mem_rssi_avg_received
+0x49d1 mem_last_txlch
+0x49d2 mem_last_txlen
+0x49d4 mem_last_txdata
+0x49e8 mem_device_uuid_list
+0x4c40 mem_device_uuid_list_end
+0x4c40 mem_device_le_att_list
+0x4e20 mem_device_le_att_list_end
+0x4e20 mem_empty_count_user
+0x4e21 mem_hid_buff
+0x4e41 mem_adc_0v
+0x4e43 mem_adc_3v
+0x4e45 mem_hibernate_flag
+0x4e46 mem_new_supervision_to
+0x4e48 mem_le_rx_winsows
+0x4e4c mem_le_att_report1
+0x4e4e mem_le_att_report2
+0x4e50 mem_le_slave_update_param_timer
+0x4e51 mem_le_slave_update_mult_timer
+0x4e52 mem_le_reconn_enable_notify_timer
+0x4e53 mem_le_reconn_flag
+0x4e54 mem_le_buff_temp
+0x4e60 mem_le_rx_window_inc
+0x4e62 mem_le_prepare_tx_retransmited_number
+0x4e63 mem_last_check_clk
+0x4e67 mem_hid_send_handshake
+0x4e68 mem_feature_ext_page_number
+0x4e69 mem_rf_init_data_new
+0x4e74 mem_short_lpm_interval_param
+0x4e78 mem_short_lpm_enable
+0x4e79 mem_short_lpm_tx_cnt
+0x4e7a mem_ckln_24g_short_lpm
+0x4e7d mem_send_data_24g_short_lpm
+0x4e7e mem_short_lpm_interval_cnt
+0x4e7f mem_ipc_is_ready
+0x4e80 mem_short_data_wheel
+0x4e81 mem_ble_data_wheel
+0x4e82 mem_ble_data_wheel_lpm_timer
+0x4e83 mem_bt_read_ipc_count
+0x4e84 mem_51_read_sensor_count
+0x4e85 mem_queue_write_prt
+0x4e86 mem_queue_read_ptr
+0x4e87 mem_queue_buffer0
+0x4e8e mem_queue_buffer1
+0x4e95 mem_queue_buffer2
+0x4e9c mem_queue_buffer3
+0x4ea3 mem_ble_read_ipc_fifo_once
+0x4ea4 mem_ble_send_flag
+0x4ea5 mem_mouse_le_pairing_flag
+0x4ea6 mem_le_mouse_fast_conn_flag
+0x4ea7 mem_le_start_adv
+0x4ea8 mem_le_start_fast_conn_count
+0x4ea9 mem_mouse_eeprom_base
+0x4eab mem_mouse_reconn_addr
+0x4ead mem_mouse_le_reconn_addr_data
+0x4eb3 mem_mouse_24g_reconn_addr_data
+0x4eb9 mem_le_fast_conn_finished
+0x4eba mem_le_init_eeprom_base_count
+0x4ebb mem_32asm_data_end
+0x4ebb mem_mult_time_arrive_flag
Index: Standard_mouse/btms/output/otp.dat
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/otp.dat	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/otp.dat	(working copy)
@@ -0,0 +1,12 @@
+00
+02
+aa
+55
+00
+00
+aa
+55
+00
+00
+82
+78
Index: Standard_mouse/btms/output/otp.rom
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/otp.rom	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/otp.rom	(working copy)
@@ -0,0 +1,16384 @@
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
Index: Standard_mouse/btms/output/program.lis
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/program.lis	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/program.lis	(working copy)
@@ -0,0 +1,2280 @@
+include "bt_format "
+org 0x0000
+0000 c512800f bmark1 mark_ext_patch ,patch_ext 
+0001 c0000024 beq patch00_0 ,p_soft_reset 
+0002 c001802f beq patch00_3 ,p_main_loop 
+0003 c0430035 beq patch10_6 ,p_shutdown_radio 
+0004 c045003f beq patch11_2 ,p_set_freq_tx 
+0005 c0458061 beq patch11_3 ,p_initialize_radio_cont 
+0006 c053806d beq patch14_7 ,p_lpm_recover_clk 
+0007 c0540074 beq patch15_0 ,p_lpm_dispatch 
+0008 c0548088 beq patch15_1 ,p_lpm_dispatch_next2 
+0009 c056009b beq patch15_4 ,p_lpm_dispatch_unconn 
+000a c05a0349 beq patch16_4 ,p_device_init 
+000b c05a80b4 beq patch16_5 ,p_app_lpm_init 
+000c c05b00bb beq patch16_6 ,p_app_process_bb_event 
+000d c05b80dd beq patch16_7 ,p_app_evt_timer 
+000e 20203b34 branch loop 
+
+patch_ext:
+000f c0028117 beq patch20_5 ,p_le_slave_match 
+0010 c00b011c beq patch22_6 ,p_le_receive_skip 
+0011 c00d8120 beq patch23_3 ,p_le_send_adv_ind 
+0012 c0118123 beq patch24_3 ,p_le_update_param 
+0013 c0178147 beq patch25_7 ,p_le_prepare_tx 
+0014 c018815c beq patch26_1 ,p_le_prepare_tx_ll 
+0015 c019016e beq patch26_2 ,p_le_prepare_smp0 
+0016 c0198181 beq patch26_3 ,p_le_prepare_att 
+0017 c01c8192 beq patch27_1 ,p_le_send_packet 
+0018 c01e019f beq patch27_4 ,p_le_parse0 
+0019 c01e81b2 beq patch27_5 ,p_le_parse_smp 
+001a c01f01b8 beq patch27_6 ,p_le_parse_att 
+001b c01f81d1 beq patch27_7 ,p_le_adv 
+001c c02101ef beq patch28_2 ,p_le_receive_window_size 
+001d c02681f4 beq patch29_5 ,p_le_lpm_set_mult 
+001e c04a8225 beq patch32_5 ,p_gpio_set_before_lpm_common 
+001f c079822c beq patch3e_3 ,p_ui_timer_check_end 
+0020 c07b8238 beq patch3e_7 ,p_check_51cmd_once 
+0021 c07c026f beq patch3f_0 ,p_check_51cmd_once_continue0 
+0022 c07c8275 beq patch3f_1 ,p_check_enter_hibernate 
+0023 20203b34 branch loop 
+
+p_soft_reset:
+0024 20800000 clear_stack 
+0025 2435b004 nbranch soft_reset + 3 ,wake 
+0026 6800c595 fetch 1 ,mem_le_switch_send_data 
+0027 243a002d nbranch p_soft_reset_start_51 ,blank 
+0028 6800ce78 fetch 1 ,mem_short_lpm_enable 
+0029 203a3004 branch soft_reset + 3 ,blank 
+002a 704e7f00 jam 0 ,mem_ipc_is_ready 
+002b c5933004 bmark0 mark_24g ,soft_reset + 3 
+002c 2435b004 nbranch soft_reset + 3 ,wake 
+
+p_soft_reset_start_51:
+002d 70828003 hjam start_c51_core ,core_docd_ctrl 
+002e 20203004 branch soft_reset + 3 
+
+p_main_loop:
+002f 2040027f call p_ipc_timer_check 
+0030 2040043d call g24_transmit_process 
+0031 204002bd call p_ipc_rx 
+0032 6800ce78 fetch 1 ,mem_short_lpm_enable 
+0033 243a0383 nbranch p_24g_short_lpm_process_loop ,blank 
+0034 2020301b branch main_loop + 2 
+
+p_shutdown_radio:
+0035 2030b9a3 branch shutdown_radio0 ,is_rx 
+0036 708955d4 hjam 0xd4 ,0x955 
+0037 20000004 nop 4 
+0038 708955d2 hjam 0xd2 ,0x955 
+0039 20000004 nop 4 
+003a 708955d1 hjam 0xd1 ,0x955 
+003b 20000004 nop 4 
+003c 6800c280 fetch 1 ,mem_tx_power 
+003d c00a39ae beq tx_power_pair ,shutdown_radio_pair 
+003e 2020399c branch shutdown_radio_select 
+
+p_set_freq_tx:
+003f 60088017 storet 1 ,mem_last_freq 
+0040 1840a200 add temp ,0 ,rega 
+0041 20403a13 call rf_write_freq 
+0042 58000500 setarg param_pll_setup 
+0043 20403b35 call sleep 
+
+p_txon:
+0044 70890601 hjam 0x1 ,rfen_adc 
+0045 7089003c hjam 0x3c ,rfen_rx 
+0046 708901e0 hjam 0xe0 ,rfen_tx 
+0047 70896d12 hjam 0x12 ,0x96d 
+0048 2000000a nop 10 
+0049 70890201 hjam 0x01 ,rfen_mdm 
+004a 7089023d hjam 0x3d ,rfen_mdm 
+004b 2000000a nop 10 
+004c 708903b7 hjam 0xb7 ,rfen_sn 
+004d 2000000a nop 10 
+004e 7089027f hjam 0x7f ,rfen_mdm 
+004f 6800c280 fetch 1 ,mem_tx_power 
+0050 c00a005e beq tx_power_pair ,p_set_tx_power_pair 
+0051 c2808058 bbit1 tx_power_3db ,p_rx_high_sens 
+0052 c2810058 bbit1 tx_power_5db ,p_rx_high_sens 
+
+p_rx_low_sens:
+0053 70894c5b hjam 0x5b ,0x894c 
+0054 70894d96 hjam 0x96 ,0x894d 
+0055 70894e2c hjam 0x2c ,0x894e 
+0056 70894f46 hjam 0x46 ,0x894f 
+0057 2020005c branch p_txon_select_power_level 
+
+p_rx_high_sens:
+0058 70894cfb hjam 0xfb ,0x894c 
+0059 70894def hjam 0xef ,0x894d 
+005a 70894eec hjam 0xec ,0x894e 
+005b 70894f5e hjam 0x5e ,0x894f 
+
+p_txon_select_power_level:
+005c 6800c280 fetch 1 ,mem_tx_power 
+005d 202039dc branch txon_power_select 
+
+p_set_tx_power_pair:
+005e 708956c2 hjam 0xc2 ,0x8956 
+005f 708955d0 hjam 0xd0 ,0x8955 
+0060 20600000 rtn 
+
+p_initialize_radio_cont:
+0061 20403cd2 call lpm_cal_xtal_startup 
+0062 20403a5f call switchto_dpllclk 
+0063 70804206 hjam clksel_rc ,core_clksel 
+0064 68108968 hfetch 1 ,rf_clkpll_int 
+0065 79207e07 set1 7 ,pdata 
+0066 60108968 hstore 1 ,rf_clkpll_int 
+0067 793ffe07 set0 7 ,pdata 
+0068 60108968 hstore 1 ,rf_clkpll_int 
+0069 79207e07 set1 7 ,pdata 
+006a 60108968 hstore 1 ,rf_clkpll_int 
+006b 70804205 hjam clksel_dpll ,core_clksel 
+006c 20203a0c branch initialize_radio_cont + 4 
+
+p_lpm_recover_clk:
+006d 20403c2b call lpm_recover_clk + 2 
+006e 6800ce45 fetch 1 ,mem_hibernate_flag 
+006f 207a0000 rtn blank 
+0070 704e4500 jam 0 ,mem_hibernate_flag 
+0071 1c427e00 copy clkn_bt ,pdata 
+0072 6002489e store 4 ,mem_ipc_last_check_timer 
+0073 20600000 rtn 
+
+p_lpm_dispatch:
+0074 c6130000 rtnmark1 mark_24g 
+0075 20403be2 call lpo_calibration 
+0076 6801c20f fetch 3 ,mem_clks_per_lpo 
+0077 207a0000 rtn blank 
+0078 68014042 fetch 2 ,mem_context + coffset_tsniff 
+0079 d840ffff arg 0xffff ,temp 
+007a 98467c00 isub temp ,null 
+007b 20628000 rtn zero 
+007c 6800c131 fetch 1 ,mem_lpm_mode 
+007d 207a0000 rtn blank 
+007e 20404816 call l2cap_malloc_is_fifo_empty 
+007f 247a0000 nrtn blank 
+0080 20403d0e call lpm_check_wake_lock 
+0081 247a0000 nrtn blank 
+0082 20403a7b call xtal_fast_wake 
+0083 6800c6e2 fetch 1 ,mem_ssp_enable 
+0084 203a3c5e branch lpm_dispatch_next ,blank 
+0085 6800c639 fetch 1 ,mem_sp_local_key_invalid 
+0086 207a0000 rtn blank 
+0087 20203c5e branch lpm_dispatch_next 
+
+p_lpm_dispatch_next2:
+0088 6800c595 fetch 1 ,mem_le_switch_send_data 
+0089 203a0095 branch p_lpm_dispatch_long_mult ,blank 
+008a 6800809f fetch 1 ,mem_lpm_current_mult 
+008b 243a0095 nbranch p_lpm_dispatch_long_mult ,blank 
+008c 6800ce83 fetch 1 ,mem_bt_read_ipc_count 
+008d 6808ce84 fetcht 1 ,mem_51_read_sensor_count 
+008e 98467c00 isub temp ,null 
+008f 24628000 nrtn zero 
+0090 6800ce81 fetch 1 ,mem_ble_data_wheel 
+0091 247a0000 nrtn blank 
+0092 58000000 setarg 0 
+0093 600400a0 store 8 ,mem_gpio_wakeup_low 
+0094 20203c6a branch lpm_dispatch_next2 
+
+p_lpm_dispatch_long_mult:
+0095 204000a0 call p_check_ipc_for_lpm 
+0096 24740000 nrtn user 
+0097 68008b2b fetch 1 ,mem_c51_lmp_lock 
+0098 247a0000 nrtn blank 
+0099 7049c100 jam 0 ,mem_bt_wakeup_from_long_mult 
+009a 20203c6a branch lpm_dispatch_next2 
+
+p_lpm_dispatch_unconn:
+009b 204000a0 call p_check_ipc_for_lpm 
+009c 24740000 nrtn user 
+009d 68008b2b fetch 1 ,mem_c51_lmp_lock 
+009e 247a0000 nrtn blank 
+009f 20203c8c branch lpm_dispatch_unconn + 2 
+
+p_check_ipc_for_lpm:
+00a0 204000ab call p_check_ipc_2bt 
+00a1 24740000 nrtn user 
+00a2 204000a8 call p_check_ipc_2c51 
+00a3 24740000 nrtn user 
+00a4 700b2b01 jam 1 ,mem_c51_lmp_lock 
+00a5 700b2a01 jam syc_task_lpm ,mem_c51_flag 
+00a6 204000b0 call p_c51_wait 
+00a7 202000ab branch p_check_ipc_2bt 
+
+p_check_ipc_2c51:
+00a8 6801482c fetch 2 ,mem_ipc_2c51_read_index 
+00a9 6809482e fetcht 2 ,mem_ipc_2c51_write_index 
+00aa 202000ad branch p_check_ipc_common 
+
+p_check_ipc_2bt:
+00ab 680147c4 fetch 2 ,mem_ipc_2bt_read_index 
+00ac 680947c6 fetcht 2 ,mem_ipc_2bt_write_index 
+
+p_check_ipc_common:
+00ad 98467c00 isub temp ,null 
+00ae 2022e4c0 branch enable_usr ,zero 
+00af 202031d4 branch disable_usr 
+
+p_c51_wait:
+00b0 68008b2a fetch 1 ,mem_c51_flag 
+00b1 2000000a nop 10 
+00b2 c08000b0 bne 0 ,p_c51_wait 
+00b3 20600000 rtn 
+
+p_app_lpm_init:
+00b4 70001627 jam 39 ,mem_le_ch_mapped 
+00b5 70015000 jam 0 ,mem_tester_emulate 
+00b6 70017e00 jam 0 ,mem_debug_config 
+00b7 70017f00 jam 0 ,mem_lch_code 
+00b8 58000000 setarg 0 
+00b9 600288d2 store 5 ,mem_sp_state_start 
+00ba 20600000 rtn 
+
+p_app_process_bb_event:
+00bb da2046f0 arg mem_ipc_fifo_bt2c51 ,rega 
+00bc 20407f95 call fifo_out 
+00bd 207a0000 rtn blank 
+00be 1fe22600 copy pdata ,regc 
+00bf 204000c1 call p_app_event_normal_process 
+00c0 20203d9b branch app_process_bb_event_priority 
+
+p_app_event_normal_process:
+00c1 c10c0000 rtneq bt_evt_linkkey_generate 
+00c2 c00a00c6 beq bt_evt_le_connected ,p_device_le_conn 
+00c3 c00a80d0 beq bt_evt_le_disconnected ,p_device_le_discon 
+00c4 c01480db beq bt_evt_le_enc_info ,p_device_le_enc_info 
+00c5 20203d73 branch app_event_normal_process 
+
+p_device_le_conn:
+00c6 704e8300 jam 0 ,mem_bt_read_ipc_count 
+00c7 70421200 jam 0 ,mem_lpm_mult 
+00c8 704ebb00 jam 0 ,mem_mult_time_arrive_flag 
+00c9 704e5114 jam 20 ,mem_le_slave_update_mult_timer 
+00ca 20403e61 call app_ble_stop_adv 
+00cb 20403e59 call app_bt_stop_discovery 
+00cc 20403e7f call app_lpm_mult_enable 
+00cd 20403e20 call app_initflag_store 
+00ce 704eb901 jam 1 ,mem_le_fast_conn_finished 
+00cf 20203dc2 branch app_le_event_bb_connected 
+
+p_device_le_discon:
+00d0 704ea400 jam 0 ,mem_ble_send_flag 
+00d1 20400304 call queue_init 
+00d2 7044b200 jam 0 ,mem_ltk_exists 
+00d3 70421200 jam 0 ,mem_lpm_mult 
+00d4 704ebb00 jam 0 ,mem_mult_time_arrive_flag 
+00d5 704e5100 jam 0 ,mem_le_slave_update_mult_timer 
+00d6 70456a00 jam flag_le_pairing_null ,mem_le_pairing_state 
+00d7 68094e4e fetcht 2 ,mem_le_att_report2 
+00d8 600944f8 storet 2 ,mem_le_notify_handle 
+00d9 204052a0 call le_clean_att_list_handle_enable 
+00da 20203dc6 branch app_le_event_bb_disconn 
+
+p_device_le_enc_info:
+00db 20400105 call p_app_updata_le_param 
+00dc 20207e3b branch check_51cmd_le_start_write 
+
+p_app_evt_timer:
+00dd 6008824e storet 1 ,mem_app_evt_timer_count 
+00de 6800c89c fetch 1 ,mem_ipc_bt_100ms_timer 
+00df 1fe0fe01 increase 1 ,pdata 
+00e0 6000c89c store 1 ,mem_ipc_bt_100ms_timer 
+
+p_app_evt_100ms_loop:
+00e1 6800824e fetch 1 ,mem_app_evt_timer_count 
+00e2 207a0000 rtn blank 
+00e3 1fe0ffff increase -1 ,pdata 
+00e4 6000824e store 1 ,mem_app_evt_timer_count 
+00e5 20400108 call p_le_slave_update_mult_timer 
+00e6 204000eb call p_check_mult_parameter 
+00e7 20400111 call p_le_reconn_enable_notify_timer 
+00e8 204000f7 call p_24g_enter_lpm_timer 
+00e9 204000fe call p_ble_data_wheel_lpm_timer 
+00ea 202000e1 branch p_app_evt_100ms_loop 
+
+p_check_mult_parameter:
+00eb 6800cebb fetch 1 ,mem_mult_time_arrive_flag 
+00ec 207a0000 rtn blank 
+00ed 6800c212 fetch 1 ,mem_lpm_mult 
+00ee 2fe1fe20 compare 0x20 ,pdata ,0xff 
+00ef 244080f5 ncall p_set_mult_para ,true 
+00f0 6800c131 fetch 1 ,mem_lpm_mode 
+00f1 205a00f3 call p_set_multmode ,blank 
+00f2 20600000 rtn 
+
+p_set_multmode:
+00f3 70413101 jam 1 ,mem_lpm_mode 
+00f4 20600000 rtn 
+
+p_set_mult_para:
+00f5 70421220 jam 0x20 ,mem_lpm_mult 
+00f6 20600000 rtn 
+
+p_24g_enter_lpm_timer:
+00f7 6800c9ba fetch 1 ,mem_new_24g_enter_lpm_timer 
+00f8 207a0000 rtn blank 
+00f9 704e8000 jam 0 ,mem_short_data_wheel 
+00fa 1fe0ffff increase -1 ,pdata 
+00fb 6000c9ba store 1 ,mem_new_24g_enter_lpm_timer 
+00fc 247a0000 nrtn blank 
+00fd 20600000 rtn 
+
+p_ble_data_wheel_lpm_timer:
+00fe 6800ce82 fetch 1 ,mem_ble_data_wheel_lpm_timer 
+00ff 207a0000 rtn blank 
+0100 1fe0ffff increase -1 ,pdata 
+0101 6000ce82 store 1 ,mem_ble_data_wheel_lpm_timer 
+0102 247a0000 nrtn blank 
+0103 704e8100 jam 0 ,mem_ble_data_wheel 
+0104 20600000 rtn 
+
+p_app_updata_le_param:
+0105 20403e7f call app_lpm_mult_enable 
+0106 7009bd12 jam bt_cmd_le_update_conn ,mem_fifo_temp 
+0107 20207d90 branch ui_ipc_send_cmd 
+
+p_le_slave_update_mult_timer:
+0108 6800ce51 fetch 1 ,mem_le_slave_update_mult_timer 
+0109 207a0000 rtn blank 
+010a 1fe0ffff increase -1 ,pdata 
+010b 6000ce51 store 1 ,mem_le_slave_update_mult_timer 
+010c 247a0000 nrtn blank 
+010d 70421220 jam 0x20 ,mem_lpm_mult 
+010e 70413101 jam 1 ,mem_lpm_mode 
+010f 704ebb01 jam 1 ,mem_mult_time_arrive_flag 
+0110 20600000 rtn 
+
+p_le_reconn_enable_notify_timer:
+0111 6800ce52 fetch 1 ,mem_le_reconn_enable_notify_timer 
+0112 207a0000 rtn blank 
+0113 1fe0ffff increase -1 ,pdata 
+0114 6000ce52 store 1 ,mem_le_reconn_enable_notify_timer 
+0115 247a0000 nrtn blank 
+0116 20203e6d branch app_ble_start_write 
+
+p_le_slave_match:
+0117 20404968 call le_got_first_packet 
+0118 20404b51 call le_acknowledge 
+0119 20404bd8 call le_prepare_tx 
+011a 20400616 call power_ctrl_start 
+011b 20204945 branch le_slave_match + 5 
+
+p_le_receive_skip:
+011c 20403a50 call save_rssi 
+011d 1fe22200 copy pdata ,rega 
+011e 20400654 call rssi_signal 
+011f 20204a3d branch le_receive_skip + 3 
+
+p_le_send_adv_ind:
+0120 68024e48 fetch 4 ,mem_le_rx_winsows 
+0121 60024596 store 4 ,mem_le_transmit_window 
+0122 20204a8c branch le_send_adv_ind + 2 
+
+p_le_update_param:
+0123 70413101 jam 1 ,mem_lpm_mode 
+0124 6801037c fetch 2 ,mem_le_event_count 
+0125 68090382 fetcht 2 ,mem_le_instant 
+0126 98467e00 isub temp ,pdata 
+0127 600109be store 2 ,mem_pdatatemp 
+0128 68008362 fetch 1 ,mem_le_state 
+0129 793ffe05 set0 lestate_update_param ,pdata 
+012a 793ffe03 set0 lestate_got_first_packet ,pdata 
+012b 60008362 store 1 ,mem_le_state 
+012c 68020366 fetch 4 ,mem_le_anchor 
+012d 68090364 fetcht 2 ,mem_le_tsniff 
+012e 600909c6 storet 2 ,mem_temp 
+012f 98462200 isub temp ,rega 
+0130 6800c45b fetch 1 ,mem_le_new_param 
+0131 6000838d store 1 ,mem_le_window_size 
+0132 e8c90000 ifetcht 2 ,contr 
+0133 e8c10000 ifetch 2 ,contr 
+0134 1febfe00 lshift2 pdata ,pdata 
+0135 60010364 store 2 ,mem_le_tsniff 
+0136 184b8400 lshift2 temp ,temp 
+0137 9840fe00 iadd temp ,pdata 
+0138 e8ca0000 ifetcht 4 ,contr 
+0139 600a038e storet 4 ,mem_le_slave_latency 
+013a 9a20fe00 iadd rega ,pdata 
+013b 1fe22800 copy pdata ,regab 
+013c 68010364 fetch 2 ,mem_le_tsniff 
+013d 680909c6 fetcht 2 ,mem_temp 
+013e 98467e00 isub temp ,pdata 
+013f 680909be fetcht 2 ,mem_pdatatemp 
+0140 984ffe00 imul32 temp ,pdata 
+0141 9a80fe00 iadd regab ,pdata 
+0142 60020366 store 4 ,mem_le_anchor 
+0143 20405199 call le_receive_window_size 
+0144 68010390 fetch 2 ,mem_le_superto 
+0145 60014561 store 2 ,mem_le_init_superto 
+0146 20600000 rtn 
+
+p_le_prepare_tx:
+0147 68008379 fetch 1 ,mem_le_arq 
+0148 c2828158 bbit1 wak ,p_le_prepare_tx_retansmited 
+0149 20400608 call power_ctrl_pac_succ_incrs 
+014a 704e6200 jam 0 ,mem_le_prepare_tx_retransmited_number 
+014b 6800ce20 fetch 1 ,mem_empty_count_user 
+014c 243a0152 nbranch p_le_send_empyt ,blank 
+014d 6800cea5 fetch 1 ,mem_mouse_le_pairing_flag 
+014e c0008156 beq 1 ,p_le_smp_empty 
+014f 68008303 fetch 1 ,mem_le_rxbuf + 1 
+0150 203a4bde branch le_prepare_tx_1 ,blank 
+0151 20204f87 branch le_send_empty 
+
+p_le_send_empyt:
+0152 6800ce20 fetch 1 ,mem_empty_count_user 
+0153 1fe0ffff increase -1 ,pdata 
+0154 6000ce20 store 1 ,mem_empty_count_user 
+0155 20204f87 branch le_send_empty 
+
+p_le_smp_empty:
+0156 704e2003 jam 3 ,mem_empty_count_user 
+0157 20204bde branch le_prepare_tx_1 
+
+p_le_prepare_tx_retansmited:
+0158 6800ce62 fetch 1 ,mem_le_prepare_tx_retransmited_number 
+0159 1fe0fe01 increase 1 ,pdata 
+015a 6000ce62 store 1 ,mem_le_prepare_tx_retransmited_number 
+015b 2020060c branch power_ctrl_pac_succ_decrs 
+
+p_le_prepare_tx_ll:
+015c 6800c467 fetch 1 ,mem_le_txpayload 
+015d c0030160 beq ll_start_enc_rsp ,p_le_send_start_enc_rsp 
+015e c0010167 beq ll_terminate_ind ,p_le_send_terminate_ind 
+015f 20204bfb branch le_prepare_tx_ll 
+
+p_le_send_start_enc_rsp:
+0160 6800ce53 fetch 1 ,mem_le_reconn_flag 
+0161 c0008164 beq 1 ,p_le_send_reconn_start_enc_rsp 
+0162 20403e6d call app_ble_start_write 
+0163 20204c86 branch le_send_start_enc_rsp 
+
+p_le_send_reconn_start_enc_rsp:
+0164 20400105 call p_app_updata_le_param 
+0165 704e5203 jam 3 ,mem_le_reconn_enable_notify_timer 
+0166 20204c90 branch le_send_start_enc_rsp_common 
+
+p_le_send_terminate_ind:
+0167 58000013 setarg 0x13 
+0168 e0a08000 istore 1 ,contw 
+0169 20404c58 call le_send_terminate_ind 
+016a 5800000a setarg 10 
+016b 60010390 store 2 ,mem_le_superto 
+016c 60014561 store 2 ,mem_le_init_superto 
+016d 20600000 rtn 
+
+p_le_prepare_smp0:
+016e 6800c46b fetch 1 ,mem_le_l2cap 
+016f c0010175 beq smp_pairing_response ,p_le_send_smp_pairing_response 
+0170 c003017c beq smp_encryption_information ,p_le_send_smp_encryption_information 
+0171 c0038173 beq smp_master_identification ,p_le_send_smp_master_identification_only 
+0172 20204c18 branch le_prepare_smp0 
+
+p_le_send_smp_master_identification_only:
+0173 704ea500 jam 0 ,mem_mouse_le_pairing_flag 
+0174 20204d17 branch le_send_smp_master_identification_only 
+
+p_le_send_smp_pairing_response:
+0175 59000302 setarg param_smp_paring_response 
+0176 6001c4dc store 3 ,mem_le_pres 
+0177 58000001 setarg 0x01 
+0178 e0a08000 istore 1 ,contw 
+0179 58010010 setarg param_smp_key_dist0 
+017a e0a18000 istore 3 ,contw 
+017b 20204ccd branch le_send_smp_pairing_response_common 
+
+p_le_send_smp_encryption_information:
+017c 7009bd29 jam bt_evt_le_enc_info ,mem_fifo_temp 
+017d 20407d86 call ui_ipc_send_event 
+017e 7009bd47 jam xt_smp_master_identification ,mem_fifo_temp 
+017f 20404bd6 call le_xtype_fifo_in 
+0180 20204d01 branch le_send_smp_encryption_information_shutter 
+
+p_le_prepare_att:
+0181 6800c46b fetch 1 ,mem_le_l2cap 
+0182 c00d8185 beq attop_handle_value_notification ,p_le_send_att_handle_value_notification 
+0183 c00e8185 beq attop_handle_value_indication ,p_le_send_att_handle_value_indication 
+0184 20204c2b branch le_prepare_att + 5 
+
+p_le_send_att_handle_value_indication:
+
+p_le_send_att_handle_value_notification:
+0185 68094e4e fetcht 2 ,mem_le_att_report2 
+0186 6009446c storet 2 ,mem_le_l2cap + 1 
+0187 6800ce86 fetch 1 ,mem_queue_read_ptr 
+0188 1fe08401 add pdata ,1 ,temp 
+0189 18410403 and temp ,0x03 ,temp 
+018a 6008ce86 storet 1 ,mem_queue_read_ptr 
+018b 1feffe07 mul32 pdata ,7 ,pdata 
+018c d8c04e87 arg mem_queue_buffer0 ,contr 
+018d 98c08c00 iadd contr ,contr 
+018e e8c38000 ifetch 7 ,contr 
+018f 6003c46e store 7 ,mem_le_l2cap + 3 
+0190 d840000e arg 14 ,temp 
+0191 20204f89 branch le_send_packet 
+
+p_le_send_packet:
+0192 6008c466 storet 1 ,mem_le_txlen 
+0193 28200602 compare 2 ,type ,3 
+0194 24208197 nbranch p_le_send_non_l2cap ,true 
+0195 1840fffc add temp ,-4 ,pdata 
+0196 60014467 store 2 ,mem_le_txpayload 
+
+p_le_send_non_l2cap:
+0197 68088379 fetcht 1 ,mem_le_arq 
+0198 2040019a call p_le_send_check_md 
+0199 20204f92 branch le_send_non_l2cap1 
+
+p_le_send_check_md:
+019a 6800cea5 fetch 1 ,mem_mouse_le_pairing_flag 
+019b c000819d beq 1 ,enable_blank 
+019c 20204bd0 branch le_xtype_fifo_is_empty 
+
+enable_blank:
+019d 58000000 setarg 0 
+019e 20600000 rtn 
+
+p_le_parse0:
+019f 1a627e00 copy regc ,pdata 
+01a0 c00001a5 beq ll_connection_update_req ,p_le_parse_connection_update_req 
+01a1 c00101a8 beq ll_terminate_ind ,p_le_parse_terminate_ind 
+01a2 c00181ac beq ll_enc_req ,p_le_parse_enc_req 
+01a3 c00501b0 beq ll_pause_enc_req ,p_le_parse_pause_enc_rsq 
+01a4 20204fb9 branch le_parse0 + 6 
+
+p_le_parse_connection_update_req:
+01a5 70413100 jam 0 ,mem_lpm_mode 
+01a6 704e513c jam 60 ,mem_le_slave_update_mult_timer 
+01a7 2020501f branch le_parse_connection_update_req 
+
+p_le_parse_terminate_ind:
+01a8 20405033 call le_parse_terminate_ind 
+
+le_clear_xtype_fifo:
+01a9 58000000 setarg 0 
+01aa 60044544 store 8 ,mem_le_xtype_fifo 
+01ab 20600000 rtn 
+
+p_le_parse_enc_req:
+01ac 20405039 call le_parse_enc_req 
+01ad 6800c56a fetch 1 ,mem_le_pairing_state 
+01ae c1010000 rtneq flag_le_pairing_after_auth 
+01af 20206418 branch load_device_list_mode_4_shutter 
+
+p_le_parse_pause_enc_rsq:
+01b0 7009bd2b jam xt_ll_pause_enc_rsp ,mem_fifo_temp 
+01b1 20204bd6 branch le_xtype_fifo_in 
+
+p_le_parse_smp:
+01b2 e8c08000 ifetch 1 ,contr 
+01b3 c00081b5 beq smp_pairing_request ,p_le_parse_smp_pairing_request 
+01b4 20204ffe branch le_parse_smp + 3 
+
+p_le_parse_smp_pairing_request:
+01b5 704ea501 jam 1 ,mem_mouse_le_pairing_flag 
+01b6 704e2003 jam 3 ,mem_empty_count_user 
+01b7 20205069 branch le_parse_smp_pairing_request 
+
+p_le_parse_att:
+01b8 e8c18000 ifetch 3 ,contr 
+01b9 6001839a store 3 ,mem_le_att_opcode 
+01ba c00901bc beq attop_write_request ,p_le_parse_att_write_request 
+01bb 20205011 branch le_parse_att + 4 
+
+p_le_parse_att_write_request:
+01bc 70413101 jam 1 ,mem_lpm_mode 
+01bd 204001c8 call p_le_parse_att_write_common 
+01be 6800839b fetch 1 ,mem_le_att_handle 
+01bf 1fe67c60 sub pdata ,ble_fast_conn_character_handle ,null 
+01c0 202281cd branch p_le_mouse_fast_conn_character_set ,zero 
+01c1 704ea600 jam 0 ,mem_le_mouse_fast_conn_flag 
+
+p_le_parse_att_write_request_next:
+01c2 20405125 call le_check_long_packet_patch 
+01c3 24628000 nrtn zero 
+
+p_le_parse_att_write_request_end:
+01c4 6800cea6 fetch 1 ,mem_le_mouse_fast_conn_flag 
+01c5 245a01cf ncall p_le_set_enc_info_flag ,blank 
+01c6 7009bd13 jam attop_write_response ,mem_fifo_temp 
+01c7 20204bd6 branch le_xtype_fifo_in 
+
+p_le_parse_att_write_common:
+01c8 68008303 fetch 1 ,mem_le_rxbuf + 1 
+01c9 1fe0fff9 increase -7 ,pdata 
+01ca 1fe27200 icopy loopcnt 
+01cb 1f222400 copy loopcnt ,regb 
+01cc 20205135 branch le_parse_att_write_common + 6 
+
+p_le_mouse_fast_conn_character_set:
+01cd 704ea601 jam 1 ,mem_le_mouse_fast_conn_flag 
+01ce 202001c2 branch p_le_parse_att_write_request_next 
+
+p_le_set_enc_info_flag:
+01cf 7009bd29 jam bt_evt_le_enc_info ,mem_fifo_temp 
+01d0 20207d86 branch ui_ipc_send_event 
+
+p_le_adv:
+01d1 6800c3ff fetch 1 ,mem_le_adv_enable 
+01d2 207a0000 rtn blank 
+01d3 d8e00001 arg le_adv_interval_timer ,queue 
+01d4 20407ee2 call timer_check 
+01d5 247a0000 nrtn blank 
+01d6 7854fc00 disable master 
+01d7 78287c00 enable swfine 
+01d8 20404b1e call le_init_adv 
+01d9 204049d4 call le_next_adv_channel 
+01da 20404a8a call le_send_adv_ind 
+01db 243681e3 nbranch p_le_adv_not_match ,match 
+01dc 68008003 fetch 1 ,mem_le_req_rcv 
+01dd 1fe0fe01 increase 1 ,pdata 
+01de 60008003 store 1 ,mem_le_req_rcv 
+01df 68008302 fetch 1 ,mem_le_rxbuf 
+01e0 1fe17e0f and pdata ,0x0f ,pdata 
+01e1 c00181ed beq scan_req ,p_le_send_scan_response 
+01e2 c002d1af beq connect_req ,le_parse_connect_req 
+
+p_le_adv_not_match:
+01e3 68008016 fetch 1 ,mem_le_ch_mapped 
+01e4 c093d17d bne 39 ,le_adv_loop 
+01e5 180a7e00 random pdata 
+01e6 d84001ff arg 0x1ff ,temp 
+01e7 98417e00 iand temp ,pdata 
+01e8 1fe0fefa add pdata ,250 ,pdata 
+
+p_adv_delay:
+01e9 1fe0ffff increase -1 ,pdata 
+01ea 20000026 nop 38 
+01eb 243a01e9 nbranch p_adv_delay ,blank 
+01ec 20205196 branch le_adv_not_match + 3 
+
+p_le_send_scan_response:
+01ed 20404ac5 call le_send_scan_response 
+01ee 202001e3 branch p_le_adv_not_match 
+
+p_le_receive_window_size:
+01ef 68024596 fetch 4 ,mem_le_transmit_window 
+01f0 d840ea60 arg 60000 ,temp 
+01f1 9840fe00 iadd temp ,pdata 
+01f2 60024596 store 4 ,mem_le_transmit_window 
+01f3 202051a9 branch le_receive_window_size + 16 
+
+p_le_lpm_set_mult:
+01f4 7855fc00 disable wake 
+01f5 203701f7 branch p_le_lpm_set_mult_attempt ,attempt 
+01f6 24368206 nbranch p_le_lpm_lost ,match 
+
+p_le_lpm_set_mult_attempt:
+01f7 20403cb7 call lpm_match 
+01f8 68014161 fetch 2 ,mem_rx_window_sniff 
+01f9 60010370 store 2 ,mem_le_receive_window 
+01fa 68008302 fetch 1 ,mem_le_rxbuf 
+01fb 2fe00601 compare 1 ,pdata ,3 
+01fc 2420bccb nbranch lpm_mult_short ,true 
+01fd 6800c465 fetch 1 ,mem_le_txheader 
+01fe 2fe00601 compare 1 ,pdata ,3 
+01ff 2420bccb nbranch lpm_mult_short ,true 
+0200 20404bd0 call le_xtype_fifo_is_empty 
+0201 243a3ccb nbranch lpm_mult_short ,blank 
+0202 6800ce62 fetch 1 ,mem_le_prepare_tx_retransmited_number 
+0203 1fe67c01 sub pdata ,1 ,null 
+0204 24213ccb nbranch lpm_mult_short ,positive 
+0205 20205297 branch le_lpm_set_mult_attempt + 11 
+
+p_le_lpm_lost:
+0206 68094161 fetcht 2 ,mem_rx_window_sniff 
+0207 68014e60 fetch 2 ,mem_le_rx_window_inc 
+0208 98408400 iadd temp ,temp 
+0209 18430400 rshift temp ,temp 
+020a 68010370 fetch 2 ,mem_le_receive_window 
+020b 9840fe00 iadd temp ,pdata 
+020c 60010370 store 2 ,mem_le_receive_window 
+020d 20203cc3 branch lpm_lost 
+
+p_mouse_init_environment:
+020e 2040021c call p_mouse_iicd_read_eep_data 
+020f df200006 arg 0x06 ,loopcnt 
+0210 d8c04ead arg mem_mouse_le_reconn_addr_data ,contr 
+0211 5800ffff setarg 0xffff 
+0212 20400220 call p_mouse_reconn_addr_empty_check 
+0213 24628000 nrtn zero 
+0214 6800cea8 fetch 1 ,mem_le_start_fast_conn_count 
+0215 207a0000 rtn blank 
+0216 1fe0ffff increase -1 ,pdata 
+0217 6000cea8 store 1 ,mem_le_start_fast_conn_count 
+0218 20403e28 call app_initflag_check 
+0219 20628000 rtn zero 
+021a 704ea701 jam 1 ,mem_le_start_adv 
+021b 20600000 rtn 
+
+p_mouse_iicd_read_eep_data:
+021c d840000c arg 0x0c ,temp 
+021d da204ead arg mem_mouse_le_reconn_addr_data ,rega 
+021e 68014eab fetch 2 ,mem_mouse_reconn_addr 
+021f 2020624a branch iicd_read_eep_data + 5 
+
+p_mouse_reconn_addr_empty_check:
+0220 e8c90000 ifetcht 2 ,contr 
+0221 98467c00 isub temp ,null 
+0222 24628000 nrtn zero 
+0223 c2000220 loop p_mouse_reconn_addr_empty_check 
+0224 20600000 rtn 
+
+p_gpio_set_before_lpm_common:
+0225 68120078 hfetch 4 ,core_gpio_pu0 
+0226 681a007c hfetcht 4 ,core_gpio_pd0 
+0227 9841fe00 ior temp ,pdata 
+0228 1fe47e00 invert pdata ,pdata 
+0229 9a217e00 iand rega ,pdata 
+022a 60120070 hstore 4 ,core_gpio_oe0 
+022b 20600000 rtn 
+
+p_ui_timer_check_end:
+022c 1a227e00 copy rega ,pdata 
+022d 207a0000 rtn blank 
+022e 18408560 increase -160 ,temp 
+022f 18408560 increase -160 ,temp 
+0230 793f841c set0 28 ,temp 
+0231 600a4703 storet 4 ,mem_ui_timer_last_btclk 
+0232 1fe20400 copy pdata ,temp 
+0233 da2046f0 arg mem_ipc_fifo_bt2c51 ,rega 
+0234 20407fa6 call fifo_is_near_full 
+0235 247a0000 nrtn blank 
+0236 18427e00 copy temp ,pdata 
+0237 20207d7d branch ui_timer_check_send_evt 
+
+p_check_51cmd_once:
+0238 20407d80 call ui_ipc_get_lock 
+0239 da2046f8 arg mem_ipc_fifo_c512bt ,rega 
+023a 20407f95 call fifo_out 
+023b 1fe20400 copy pdata ,temp 
+023c 20407d84 call ui_ipc_put_lock 
+023d 18427e00 copy temp ,pdata 
+023e 207a0000 rtn blank 
+023f c0118245 beq bt_cmd_start_24g ,g24_check_51cmd_start_24g 
+0240 c0120249 beq bt_cmd_stop_24g ,g24_check_51cmd_stop_24g 
+0241 c012824d beq bt_cmd_pair_24g ,g24_check_51cmd_pair_24g 
+0242 c006824f beq bt_cmd_start_adv ,p_check_51cmd_adv 
+0243 c013825e beq bt_cmd_start_adv_reconn ,p_check_51cmd_adv_reconn 
+0244 20207db3 branch check_51cmd_once + 9 
+
+g24_check_51cmd_start_24g:
+0245 6800c9c3 fetch 1 ,mem_tx_power_temp 
+0246 6000c280 store 1 ,mem_tx_power 
+0247 704938ff jam state_24g_pairing_success ,mem_new_24g_pairing_sm 
+0248 2020069c branch g24_start_24g_mode 
+
+g24_check_51cmd_stop_24g:
+0249 6800c9c3 fetch 1 ,mem_tx_power_temp 
+024a 6000c280 store 1 ,mem_tx_power 
+024b 793f8026 set0 mark_24g ,mark 
+024c 2020497d branch le_disable 
+
+g24_check_51cmd_pair_24g:
+024d 70428014 jam tx_power_pair ,mem_tx_power 
+024e 2020066d branch g24_start_pairing_sm1 
+
+p_check_51cmd_adv:
+024f 793f8026 set0 mark_24g ,mark 
+0250 70413100 jam 0 ,mem_lpm_mode 
+0251 180a7e00 random pdata 
+0252 6000c53e store 1 ,mem_le_lap 
+0253 5826100e setarg 0x26100e 
+0254 6001c541 store 3 ,mem_le_lap + 3 
+0255 704e5300 jam 0 ,mem_le_reconn_flag 
+0256 68094e4e fetcht 2 ,mem_le_att_report2 
+0257 600944f8 storet 2 ,mem_le_notify_handle 
+0258 204052a0 call le_clean_att_list_handle_enable 
+0259 da400005 arg adv_flag_bredr_not_supported | adv_flag_limited_discoverable ,regb 
+
+p_le_start_adv:
+025a 20400268 call p_le_check_adv_flag 
+025b 1a427e00 copy regb ,pdata 
+025c e0c08000 istore 1 ,contr 
+025d 20207e07 branch check_51cmd_adv 
+
+p_check_51cmd_adv_reconn:
+025e 793f8026 set0 mark_24g ,mark 
+025f 70413100 jam 0 ,mem_lpm_mode 
+0260 704e5301 jam 1 ,mem_le_reconn_flag 
+0261 68094e4e fetcht 2 ,mem_le_att_report2 
+0262 20404f6a call le_att_check_notification_enable 
+0263 1a220a00 copy rega ,contw 
+0264 58000001 setarg 1 
+0265 e0a08000 istore 1 ,contw 
+0266 da400004 arg adv_flag_bredr_not_supported ,regb 
+0267 2020025a branch p_le_start_adv 
+
+p_le_check_adv_flag:
+0268 da204401 arg mem_le_adv_data ,rega 
+
+p_le_check_adv_flag_loop:
+0269 ea208000 ifetch 1 ,rega 
+026a 207a0000 rtn blank 
+026b 98c0a200 iadd contr ,rega 
+026c e8c08000 ifetch 1 ,contr 
+026d c1008000 rtneq 0x01 
+026e 20200269 branch p_le_check_adv_flag_loop 
+
+p_check_51cmd_once_continue0:
+026f 204058c5 call lmo_fifo_check 
+0270 243a7de5 nbranch check_51cmd_restore ,blank 
+
+p_check_51cmd_once_continue:
+0271 680089bd fetch 1 ,mem_fifo_temp 
+0272 c584fde0 bmark0 mark_context ,check_51cmd_check_idle 
+0273 c00f8295 beq bt_cmd_store_reconn_info_le ,p_rtn 
+0274 20207dd0 branch check_51cmd_once_continue + 2 
+
+p_check_enter_hibernate:
+0275 700b2a03 jam syc_task_hibernate ,mem_c51_flag 
+0276 204000b0 call p_c51_wait 
+
+p_enter_hibernate_continue:
+0277 704e455a jam 0x5a ,mem_hibernate_flag 
+0278 20403cfc call lpm_write_gpio_wakeup 
+0279 68120138 hfetch 4 ,core_lpm_ctrl 
+027a 793ffe0f set0 15 ,pdata 
+027b 6012004c hstore 4 ,core_lpm_reg 
+027c 20403cf4 call lpm_write_ctrl 
+027d d85fffff arg param_hibernate_clks ,temp 
+027e 20203c11 branch lpm_sleep 
+
+p_ipc_timer_check:
+027f 680a489e fetcht 4 ,mem_ipc_last_check_timer 
+0280 1c427e00 copy clkn_bt ,pdata 
+0281 98467e00 isub temp ,pdata 
+0282 d8400640 arg 1600 ,temp 
+0283 9846fc00 idiv temp 
+0284 20407f53 call wait_div_end 
+0285 1807fe00 quotient pdata 
+0286 207a0000 rtn blank 
+0287 1c420400 copy clkn_bt ,temp 
+0288 600a489e storet 4 ,mem_ipc_last_check_timer 
+0289 68094898 fetcht 2 ,mem_ipc_bt_timer 
+028a 18508400 byteswap temp ,temp 
+028b 9840fe00 iadd temp ,pdata 
+028c 1ff0fe00 byteswap pdata ,pdata 
+028d 60014898 store 2 ,mem_ipc_bt_timer 
+028e 1ff0fe00 byteswap pdata ,pdata 
+028f 1fe17e03 and pdata ,0x3 ,pdata 
+0290 c1800000 rtnne 0 
+0291 204002b3 call p_read_adc_enable 
+0292 24760000 nrtn user2 
+
+p_adc_check_process:
+0293 6800c2cf fetch 1 ,mem_adc_config_flag 
+0294 c2810296 bbit1 adc_config_gpio ,p_adc_check_gpio 
+
+p_rtn:
+0295 20600000 rtn 
+
+p_adc_check_gpio:
+0296 68108078 hfetch 1 ,core_gpio_pu0 
+0297 793ffe05 set0 5 ,pdata 
+0298 60108078 hstore 1 ,core_gpio_pu0 
+0299 7089718f hjam 0x8f ,rf_adc_mode 
+029a 6800c2d0 fetch 1 ,mem_adc_channel 
+029b 60108973 hstore 1 ,rf_adc_ch 
+029c 204002a1 call p_read_adc 
+029d 68108078 hfetch 1 ,core_gpio_pu0 
+029e 79207e05 set1 5 ,pdata 
+029f 60108078 hstore 1 ,core_gpio_pu0 
+02a0 20600000 rtn 
+
+p_read_adc:
+02a1 68108053 hfetch 1 ,core_uart_baud + 1 
+02a2 79207e07 set1 7 ,pdata 
+02a3 60108053 hstore 1 ,core_uart_baud + 1 
+02a4 68108973 hfetch 1 ,rf_adc_ch 
+02a5 1fe1fe30 or_into 0x30 ,pdata 
+02a6 60108973 hstore 1 ,rf_adc_ch 
+02a7 7089067c hjam 0x7c ,rfen_adc 
+02a8 708972aa hjam 0xaa ,rf_adc_gc 
+02a9 20001388 nop 5000 
+02aa 68190150 hfetcht 2 ,core_adc_sum 
+02ab 68108053 hfetch 1 ,core_uart_baud + 1 
+02ac 793ffe07 set0 7 ,pdata 
+02ad 60108053 hstore 1 ,core_uart_baud + 1 
+02ae 18508400 byteswap temp ,temp 
+02af 600942d1 storet 2 ,mem_adc_current_value 
+02b0 20600000 rtn 
+
+enable_usr2:
+02b1 78367c00 enable user2 
+02b2 20600000 rtn 
+
+p_read_adc_enable:
+02b3 78567c00 disable user2 
+02b4 20404bd0 call le_xtype_fifo_is_empty 
+02b5 205a02b1 call enable_usr2 ,blank 
+02b6 6800c954 fetch 1 ,mem_new_24g_abort_pac 
+02b7 245a02b1 ncall enable_usr2 ,blank 
+02b8 20600000 rtn 
+
+p_user_le_connect_process:
+02b9 704ea301 jam 1 ,mem_ble_read_ipc_fifo_once 
+02ba 204002bd call p_ipc_rx 
+02bb 704ea300 jam 0 ,mem_ble_read_ipc_fifo_once 
+02bc 20600000 rtn 
+
+p_ipc_rx:
+02bd 204000ab call p_check_ipc_2bt 
+02be 20740000 rtn user 
+02bf 1ff0fe00 byteswap pdata ,pdata 
+02c0 1fe20c00 copy pdata ,contr 
+02c1 204002e3 call p_ipc_rx_byte 
+02c2 6000c897 store 1 ,mem_ipc_rx_type 
+02c3 c00082ce beq ipc_type_cmd ,p_ipc_rx_cmd 
+02c4 c00302ff beq ipc_type_24g ,g24_ipc_rx_24g 
+02c5 1fe20400 copy pdata ,temp 
+02c6 18c22200 copy contr ,rega 
+02c7 6800c040 fetch 1 ,mem_context 
+02c8 c30002d8 bbit0 state_inconn ,p_ipc_abondon_rx_data 
+02c9 1a220c00 copy rega ,contr 
+02ca c6848000 rtnmark0 mark_context 
+02cb 18427e00 copy temp ,pdata 
+02cc c0028316 beq ipc_type_ble ,p_ipc_rx_ble 
+02cd 20203b31 branch assert 
+
+p_ipc_rx_cmd:
+02ce 204002e3 call p_ipc_rx_byte 
+02cf 204002e3 call p_ipc_rx_byte 
+02d0 600089bd store 1 ,mem_fifo_temp 
+02d1 204002d3 call p_ipc_next_rx 
+02d2 20207d90 branch ui_ipc_send_cmd 
+
+p_ipc_next_rx:
+02d3 204002e6 call p_ipc_rx_updata_contr 
+02d4 18c20400 copy contr ,temp 
+02d5 18508400 byteswap temp ,temp 
+02d6 600947c4 storet 2 ,mem_ipc_2bt_read_index 
+02d7 20600000 rtn 
+
+p_ipc_abondon_rx_data:
+02d8 1a220c00 copy rega ,contr 
+02d9 d8a000f5 arg mem_tst_pktcnt_sync ,contw 
+02da 202002db branch p_ipc_rx_cpy 
+
+p_ipc_rx_cpy:
+02db 204002e3 call p_ipc_rx_byte 
+02dc 1fe27200 copy pdata ,loopcnt 
+
+p_ipc_copy:
+02dd 204002df call p_ipc_cpy_loop 
+02de 202002d3 branch p_ipc_next_rx 
+
+p_ipc_cpy_loop:
+02df 204002e3 call p_ipc_rx_byte 
+02e0 e0a08000 istore 1 ,contw 
+02e1 c20002df loop p_ipc_cpy_loop 
+02e2 20600000 rtn 
+
+p_ipc_rx_byte:
+02e3 204002e6 call p_ipc_rx_updata_contr 
+02e4 e8c08000 ifetch 1 ,contr 
+02e5 20600000 rtn 
+
+p_ipc_rx_updata_contr:
+02e6 580047c4 setarg mem_ipc_2bt_fifo_end 
+02e7 98c67c00 isub contr ,null 
+02e8 24628000 nrtn zero 
+02e9 d8c0472e arg mem_ipc_2bt_fifo_head ,contr 
+02ea 20600000 rtn 
+
+p_ipc_tx_evt:
+02eb df200003 arg 3 ,loopcnt 
+02ec d8c04894 arg mem_ipc_tx_evt_buff ,contr 
+
+p_ipc_tx_cpy:
+02ed 18c22200 copy contr ,rega 
+02ee 6801482e fetch 2 ,mem_ipc_2c51_write_index 
+02ef 1ff0fe00 byteswap pdata ,pdata 
+02f0 1fe20a00 copy pdata ,contw 
+02f1 1a220c00 copy rega ,contr 
+
+p_ipc_tx_loop:
+02f2 e8c08000 ifetch 1 ,contr 
+02f3 e0a08000 istore 1 ,contw 
+02f4 204002fa call p_ipc_tx_updata_contw 
+02f5 c20002f2 loop p_ipc_tx_loop 
+02f6 18a27e00 copy contw ,pdata 
+02f7 1ff0fe00 byteswap pdata ,pdata 
+02f8 6001482e store 2 ,mem_ipc_2c51_write_index 
+02f9 20600000 rtn 
+
+p_ipc_tx_updata_contw:
+02fa 5800482c setarg mem_ipc_2c51_fifo_end 
+02fb 98a67c00 isub contw ,null 
+02fc 24628000 nrtn zero 
+02fd d8a047c8 arg mem_ipc_2c51_fifo_head ,contw 
+02fe 20600000 rtn 
+
+g24_ipc_rx_24g:
+02ff c6938000 rtnmark0 mark_24g_conext 
+0300 204002e3 call p_ipc_rx_byte 
+0301 1fe27200 icopy loopcnt 
+0302 6000c970 store 1 ,mem_new_uart_packet 
+0303 202002dd branch p_ipc_copy 
+
+queue_init:
+0304 58000000 setarg 0 
+0305 6001ce85 store 3 ,mem_queue_write_prt 
+0306 20600000 rtn 
+
+p_ipc_rx_ble_data:
+0307 c6130000 rtnmark1 mark_24g 
+0308 6800c595 fetch 1 ,mem_le_switch_send_data 
+0309 207a0000 rtn blank 
+030a 204000ab call p_check_ipc_2bt 
+030b 20740000 rtn user 
+030c 1ff0fe00 byteswap pdata ,pdata 
+030d 1fe20c00 copy pdata ,contr 
+030e 204002e3 call p_ipc_rx_byte 
+030f 6000c897 store 1 ,mem_ipc_rx_type 
+0310 18c22200 copy contr ,rega 
+0311 c08282d8 bne ipc_type_ble ,p_ipc_abondon_rx_data 
+0312 18c22400 copy contr ,regb 
+0313 20404bd4 call le_xtype_fifo_is_near_full 
+0314 247a0000 nrtn blank 
+0315 2020031b branch p_ipc_rx_ble_read_fifo 
+
+p_ipc_rx_ble:
+0316 18c22400 copy contr ,regb 
+0317 6800cea3 fetch 1 ,mem_ble_read_ipc_fifo_once 
+0318 207a0000 rtn blank 
+0319 20404bd0 call le_xtype_fifo_is_empty 
+031a 247a0000 nrtn blank 
+
+p_ipc_rx_ble_read_fifo:
+031b 68094e4e fetcht 2 ,mem_le_att_report2 
+031c 20404f6a call le_att_check_notification_enable 
+031d c4000000 rtnbit0 0 
+031e 6800c595 fetch 1 ,mem_le_switch_send_data 
+031f c1000000 rtneq 0 
+0320 6800ce83 fetch 1 ,mem_bt_read_ipc_count 
+0321 1fe0fe01 pincrease 1 
+0322 6000ce83 store 1 ,mem_bt_read_ipc_count 
+0323 6800ce85 fetch 1 ,mem_queue_write_prt 
+0324 1fe08401 add pdata ,1 ,temp 
+0325 18410403 and temp ,0x03 ,temp 
+0326 6008ce85 storet 1 ,mem_queue_write_prt 
+0327 1feffe07 mul32 pdata ,7 ,pdata 
+0328 d8a04e87 arg mem_queue_buffer0 ,contw 
+0329 98a08a00 iadd contw ,contw 
+032a 1a420c00 copy regb ,contr 
+032b 204002e3 call p_ipc_rx_byte 
+032c 1fe27200 icopy loopcnt 
+032d 204002dd call p_ipc_copy 
+032e 20400332 call p_ipc_rx_ble_read_fifo_first_time 
+032f 20760000 rtn user2 
+0330 7009bd1b jam attop_handle_value_notification ,mem_fifo_temp 
+0331 20204bd6 branch le_xtype_fifo_in 
+
+p_ipc_rx_ble_read_fifo_first_time:
+0332 78567c00 disable user2 
+0333 6800cea4 fetch 1 ,mem_ble_send_flag 
+0334 c1028000 rtneq 5 
+0335 78367c00 enable user2 
+0336 1fe0fe01 increase 1 ,pdata 
+0337 6000cea4 store 1 ,mem_ble_send_flag 
+0338 1fe67c01 sub pdata ,1 ,null 
+0339 24610000 nrtn positive 
+033a 70489640 jam bt_evt_le_notify_enable ,mem_ipc_tx_evt 
+033b 202002eb branch p_ipc_tx_evt 
+
+p_ipc_init:
+033c 5800472e setarg mem_ipc_2bt_fifo_head 
+033d 1ff0fe00 byteswap pdata ,pdata 
+033e 600147c4 store 2 ,mem_ipc_2bt_read_index 
+033f 600147c6 store 2 ,mem_ipc_2bt_write_index 
+0340 580047c8 setarg mem_ipc_2c51_fifo_head 
+0341 1ff0fe00 byteswap pdata ,pdata 
+0342 6001482c store 2 ,mem_ipc_2c51_read_index 
+0343 6001482e store 2 ,mem_ipc_2c51_write_index 
+0344 20600000 rtn 
+
+p_mouse_reconn_addr_calculate:
+0345 68014ea9 fetch 2 ,mem_mouse_eeprom_base 
+0346 1fe0fe1c add pdata ,0x1c ,pdata 
+0347 60014eab store 2 ,mem_mouse_reconn_addr 
+0348 20600000 rtn 
+
+p_device_init:
+0349 2040524a call le_modified_name_adv 
+034a 700b2a00 jam 0 ,mem_c51_flag 
+034b 70016c06 jam 6 ,mem_connection_options 
+034c 20403e7f call app_lpm_mult_enable 
+034d 580003c8 setarg p_c51_user_event 
+034e 60014296 store 2 ,mem_cb_bb_event_process 
+034f 580002b9 setarg p_user_le_connect_process 
+0350 60014290 store 2 ,mem_cb_le_process 
+0351 580003c1 setarg p_device_before_hibernate 
+0352 6001428c store 2 ,mem_cb_before_hibernate 
+0353 2455833c ncall p_ipc_init ,wake 
+0354 20558389 call p_device_wakeup ,wake 
+0355 20403d3e call lpm_disable_exen_output 
+0356 6800ceba fetch 1 ,mem_le_init_eeprom_base_count 
+0357 203a0362 branch p_device_init_next ,blank 
+0358 1fe0ffff increase -1 ,pdata 
+0359 6000ceba store 1 ,mem_le_init_eeprom_base_count 
+035a 58007f80 setarg 0x7f80 
+035b 60014ea9 store 2 ,mem_mouse_eeprom_base 
+035c 20400345 call p_mouse_reconn_addr_calculate 
+035d 6800ce53 fetch 1 ,mem_le_reconn_flag 
+035e 243a0362 nbranch p_device_init_next ,blank 
+035f 6800ceb9 fetch 1 ,mem_le_fast_conn_finished 
+0360 243a0362 nbranch p_device_init_next ,blank 
+0361 2040020e call p_mouse_init_environment 
+
+p_device_init_next:
+0362 6800ce45 fetch 1 ,mem_hibernate_flag 
+0363 c02d039d beq 0x5a ,p_device_init_init_hibwake 
+0364 2035839b branch p_deveice_init_wake ,wake 
+0365 6800c280 fetch 1 ,mem_tx_power 
+0366 6000c9c3 store 1 ,mem_tx_power_temp 
+0367 20400605 call power_ctrl_pac_succ_cnt_init 
+0368 68014e41 fetch 2 ,mem_adc_0v 
+0369 1ff0fe00 byteswap pdata ,pdata 
+036a 60014e41 store 2 ,mem_adc_0v 
+036b 68014e43 fetch 2 ,mem_adc_3v 
+036c 1ff0fe00 byteswap pdata ,pdata 
+036d 60014e43 store 2 ,mem_adc_3v 
+036e 204003a8 call p_init_adc_from_otp 
+036f 204003e2 call g24_set_device_addr 
+0370 680409c6 fetch 8 ,mem_temp 
+0371 243a0376 nbranch p_deveice_init_reset ,blank 
+0372 68014ad4 fetch 2 ,0x4ad4 
+0373 1ff0fe00 byteswap pdata ,pdata 
+0374 203a0376 branch p_deveice_init_reset ,blank 
+0375 60014e43 store 2 ,mem_adc_3v 
+
+p_deveice_init_reset:
+0376 7048962f jam bt_evt_reset ,mem_ipc_tx_evt 
+
+p_device_init_common:
+0377 6800ce78 fetch 1 ,mem_short_lpm_enable 
+0378 243a037e nbranch p_24g_short_lpm_process ,blank 
+0379 20400293 call p_adc_check_process 
+037a 204002eb call p_ipc_tx_evt 
+037b 20400307 call p_ipc_rx_ble_data 
+037c 70828003 hjam start_c51_core ,core_docd_ctrl 
+037d 20600000 rtn 
+
+p_24g_short_lpm_process:
+037e 2055bc29 call lpm_recover_clk ,wake 
+037f d9600d00 arg param_rx_setup ,timeup 
+0380 34730200 until clkn_rt ,meet 
+0381 1c427e00 copy clkn_bt ,pdata 
+0382 6001ce7a store 3 ,mem_ckln_24g_short_lpm 
+
+p_24g_short_lpm_process_loop:
+0383 6801470b fetch 2 ,mem_ui_state_map 
+0384 c3858000 rtnbit1 ui_state_ble_adv 
+0385 c3830000 rtnbit1 ui_state_bt_discovery 
+0386 20403d60 call app_process_idle 
+0387 204004f6 call g24_short_lpm_transmit_process 
+0388 20200383 branch p_24g_short_lpm_process_loop 
+
+p_device_wakeup:
+0389 1ce27e00 copy auxcnt ,pdata 
+038a c5930393 bmark0 mark_24g ,p_device_bt_wakeup 
+
+g24_delay_long_sleep:
+038b 203a038e branch g24_direct_long_sleep ,blank 
+
+g24_delay_long_sleep2:
+038c 7049b9bb jam 0xbb ,mem_new_24g_delay_long_sleep_maxcnt 
+038d 20600000 rtn 
+
+g24_direct_long_sleep:
+038e 7049b900 jam 0x00 ,mem_new_24g_delay_long_sleep_maxcnt 
+038f 6800c9b7 fetch 1 ,mem_new_24g_key_wheel_event 
+0390 207a0000 rtn blank 
+0391 7049b700 jam 0 ,mem_new_24g_key_wheel_event 
+0392 2020038c branch g24_delay_long_sleep2 
+
+p_device_bt_wakeup:
+0393 203a0396 branch p_device_bt_wakeup_check ,blank 
+0394 7049c102 jam 2 ,mem_bt_wakeup_from_long_mult 
+0395 20600000 rtn 
+
+p_device_bt_wakeup_check:
+0396 6800c9c2 fetch 1 ,mem_bt_motion_event 
+0397 207a0000 rtn blank 
+0398 7049c200 jam 0 ,mem_bt_motion_event 
+0399 7049c101 jam 1 ,mem_bt_wakeup_from_long_mult 
+039a 20600000 rtn 
+
+p_deveice_init_wake:
+039b 7048963c jam bt_evt_wakeup ,mem_ipc_tx_evt 
+039c 20200377 branch p_device_init_common 
+
+p_device_init_init_hibwake:
+039d 1ce27e00 copy auxcnt ,pdata 
+039e 203a0277 branch p_enter_hibernate_continue ,blank 
+039f 2040530d call init_lmp_work 
+03a0 204042eb call l2cap_init_work 
+03a1 58000000 setarg 0 
+03a2 60044040 store 8 ,mem_context 
+03a3 6001470b store 2 ,mem_ui_state_map 
+03a4 60014898 store 2 ,mem_ipc_bt_timer 
+03a5 6001489a store 2 ,mem_ipc_c51_timer 
+03a6 7048963d jam bt_evt_hibernate_wake ,mem_ipc_tx_evt 
+03a7 20200377 branch p_device_init_common 
+
+p_init_adc_from_otp:
+03a8 204062c4 call otp_enable_chgpump 
+03a9 580007e2 setarg 0x7e2 
+03aa da2009c6 arg mem_temp ,rega 
+03ab d840000c arg 12 ,temp 
+03ac 2040630d call otpd_read_data 
+03ad 204062c7 call otp_disable_chgpump 
+03ae 680409c6 fetch 8 ,mem_temp 
+03af 207a0000 rtn blank 
+03b0 6800c2cf fetch 1 ,mem_adc_config_flag 
+03b1 c28103b3 bbit1 adc_config_gpio ,p_calc_adc_check_gpio 
+03b2 20600000 rtn 
+
+p_calc_adc_check_gpio:
+03b3 680909c6 fetcht 2 ,mem_temp 
+03b4 680109cc fetch 2 ,mem_temp + 6 
+03b5 18422400 copy temp ,regb 
+03b6 1fe22200 copy pdata ,rega 
+03b7 98462600 isub temp ,regc 
+03b8 1a427e00 copy regb ,pdata 
+03b9 9a667e00 isub regc ,pdata 
+03ba 1ff0fe00 byteswap pdata ,pdata 
+03bb 60014e41 store 2 ,mem_adc_0v 
+03bc 1a6bfe00 lshift2 regc ,pdata 
+03bd 9a20fe00 iadd rega ,pdata 
+03be 1ff0fe00 byteswap pdata ,pdata 
+03bf 60014e43 store 2 ,mem_adc_3v 
+03c0 20600000 rtn 
+
+p_device_before_hibernate:
+03c1 78347c00 enable user 
+03c2 68120138 hfetch 4 ,0x8138 
+03c3 79347e1a setflag user ,26 ,pdata 
+03c4 6012004c hstore 4 ,core_lpm_reg 
+03c5 20403cf4 call lpm_write_ctrl 
+03c6 70009f01 jam 1 ,mem_lpm_current_mult 
+
+p_device_bt_lpm_before:
+03c7 20600000 rtn 
+
+p_c51_user_event:
+03c8 1a627e00 copy regc ,pdata 
+03c9 1fe17ef0 and_into bt_evt_timer_mask ,pdata 
+03ca c1280000 rtneq bt_evt_timer_init 
+03cb 1a627e00 copy regc ,pdata 
+03cc 6000c896 store 1 ,mem_ipc_tx_evt 
+03cd 202002eb branch p_ipc_tx_evt 
+
+g24_pair_init:
+03ce 70492700 jam 0 ,mem_new_24g_pid 
+03cf 7049324e jam g24_pair_ch ,mem_new_24g_ch 
+03d0 68024934 fetch 4 ,mem_new_24g_paring_addr 
+
+g24_update_addr_and_synccrc8:
+03d1 60024950 store 4 ,mem_new_24g_addr 
+03d2 20200491 branch g24_syncword_crc8 
+
+g24_ch:
+03d3 6808c933 fetcht 1 ,mem_new_24g_current_ch_number 
+03d4 204003d9 call g24_ch_calc 
+03d5 18408401 increase 1 ,temp 
+03d6 18410403 and_into 3 ,temp 
+03d7 6008c933 storet 1 ,mem_new_24g_current_ch_number 
+03d8 20600000 rtn 
+
+g24_ch_calc:
+03d9 6800c950 fetch 1 ,mem_new_24g_addr 
+03da 1fe17e03 and_into 0x03 ,pdata 
+03db 1fefa204 mul32 pdata ,4 ,rega 
+03dc 58004939 setarg mem_new_24g_ch_map1 
+03dd 9a20fe00 iadd rega ,pdata 
+03de 98408c00 iadd temp ,contr 
+03df e8c08000 ifetch 1 ,contr 
+03e0 6000c932 store 1 ,mem_new_24g_ch 
+03e1 20600000 rtn 
+
+g24_set_device_addr:
+03e2 680209c6 fetch 4 ,mem_temp 
+03e3 60024960 store 4 ,mem_new_24g_device_addr 
+03e4 247a0000 nrtn blank 
+03e5 68024140 fetch 4 ,mem_lap 
+03e6 60024960 store 4 ,mem_new_24g_device_addr 
+03e7 20600000 rtn 
+
+g24_transmit_rf_sta_init:
+03e8 7049b001 jam 1 ,mem_new_24g_rf_last_sta 
+03e9 7049b200 jam 0 ,mem_new_24g_sync_cnt 
+
+g24_transmit_rf_ctrl_clear:
+03ea 6800c929 fetch 1 ,mem_new_24g_data_type 
+03eb 1fe17e07 and_into bits_data ,pdata 
+03ec 6000c929 store 1 ,mem_new_24g_data_type 
+03ed 20600000 rtn 
+
+g24_hop_ch_enable:
+03ee 6800c929 fetch 1 ,mem_new_24g_data_type 
+03ef 79207e04 set1 bit_hop ,pdata 
+03f0 6000c929 store 1 ,mem_new_24g_data_type 
+03f1 6000c8e4 store 1 ,mem_new_24g_txpayload 
+03f2 20600000 rtn 
+
+g24_hop_ch_disable:
+03f3 6800c929 fetch 1 ,mem_new_24g_data_type 
+03f4 793ffe04 set0 bit_hop ,pdata 
+03f5 6000c929 store 1 ,mem_new_24g_data_type 
+03f6 20600000 rtn 
+
+g24_transmit_hop_pac_fail:
+03f7 2040060c call power_ctrl_pac_succ_decrs 
+03f8 6800c9b4 fetch 1 ,mem_new_24g_rf_work_stage 
+03f9 c00083fc beq 1 ,g24_transmit_hop_pac_fail_wo_hop 
+03fa c0010400 beq 2 ,g24_transmit_hop_pac_fail_hop_stage2 
+03fb 20600000 rtn 
+
+g24_transmit_hop_pac_fail_wo_hop:
+03fc 7049b202 jam 2 ,mem_new_24g_sync_cnt 
+
+g24_transmit_hop_pac_fail_stage1:
+03fd 7049b300 jam 0 ,mem_new_24g_hop_pac_retry 
+03fe 7049b000 jam 0 ,mem_new_24g_rf_last_sta 
+03ff 202003ea branch g24_transmit_rf_ctrl_clear 
+
+g24_transmit_hop_pac_fail_hop_stage2:
+0400 7049b100 jam 0 ,mem_new_24g_rf_hop_ch 
+0401 202003fd branch g24_transmit_hop_pac_fail_stage1 
+
+g24_transmit_pac_fail_hop_stage3:
+0402 6801492e fetch 2 ,mem_new_24g_txfail_cnt 
+0403 1fe0fe01 increase 1 ,pdata 
+0404 6001492e store 2 ,mem_new_24g_txfail_cnt 
+0405 c2850571 bbit1 10 ,g24_tx_attempt_fail 
+0406 6800c9b1 fetch 1 ,mem_new_24g_rf_hop_ch 
+0407 c000840b beq 1 ,g24_rf_hop_fastly 
+0408 7049b101 jam 1 ,mem_new_24g_rf_hop_ch 
+
+g24_rf_hop_attemp_again:
+0409 6800c9b1 fetch 1 ,mem_new_24g_rf_hop_ch 
+040a c08083ea bne 1 ,g24_transmit_rf_ctrl_clear 
+
+g24_rf_hop_fastly:
+040b 6800c9b5 fetch 1 ,mem_new_24g_hop_fastly_cnt 
+040c 1fe0fe01 increase 1 ,pdata 
+040d 6000c9b5 store 1 ,mem_new_24g_hop_fastly_cnt 
+040e c0020412 beq 4 ,g24_rf_hop_fastly_exit 
+040f 204003d3 call g24_ch 
+0410 70496e02 jam 2 ,mem_new_24g_max_retry 
+0411 20200532 branch g24_transmit_packet 
+
+g24_rf_hop_fastly_exit:
+0412 2040060c call power_ctrl_pac_succ_decrs 
+0413 7049b500 jam 0 ,mem_new_24g_hop_fastly_cnt 
+0414 202003ea branch g24_transmit_rf_ctrl_clear 
+
+g24_transmit_hop_pac_succ_wo_hop:
+0415 7049b202 jam 2 ,mem_new_24g_sync_cnt 
+
+g24_transmit_hop_pac_succ:
+0416 7049b001 jam 1 ,mem_new_24g_rf_last_sta 
+0417 7049b100 jam 0 ,mem_new_24g_rf_hop_ch 
+0418 202003ea branch g24_transmit_rf_ctrl_clear 
+
+g24_transmit_succ_rf_config:
+0419 6800c9b4 fetch 1 ,mem_new_24g_rf_work_stage 
+041a c0018416 beq 3 ,g24_transmit_hop_pac_succ 
+041b 6800c929 fetch 1 ,mem_new_24g_data_type 
+041c 2fec0004 isolate0 bit_hop ,pdata 
+041d 202083e8 branch g24_transmit_rf_sta_init ,true 
+041e 6800c9b4 fetch 1 ,mem_new_24g_rf_work_stage 
+041f c0008415 beq 1 ,g24_transmit_hop_pac_succ_wo_hop 
+0420 c0010416 beq 2 ,g24_transmit_hop_pac_succ 
+0421 20600000 rtn 
+
+g24_rf_sta_check:
+0422 6800c938 fetch 1 ,mem_new_24g_pairing_sm 
+0423 c1ff8000 rtnne state_24g_pairing_success 
+0424 20400427 call g24_rf_laststa_synccnt_check 
+0425 2456042f ncall g24_rf_sync_cnt_check ,user2 
+0426 20600000 rtn 
+
+g24_rf_laststa_synccnt_check:
+0427 78567c00 disable user2 
+0428 6800c9b0 fetch 1 ,mem_new_24g_rf_last_sta 
+0429 c1808000 rtnne 1 
+042a 6800c9b2 fetch 1 ,mem_new_24g_sync_cnt 
+042b c1800000 rtnne 0 
+042c 7049b401 jam 1 ,mem_new_24g_rf_work_stage 
+042d 70496e04 jam 4 ,mem_new_24g_max_retry 
+042e 202002b1 branch enable_usr2 
+
+g24_rf_sync_cnt_check:
+042f 6800c9b2 fetch 1 ,mem_new_24g_sync_cnt 
+0430 203a0437 branch g24_rf_hop_attemp ,blank 
+0431 1fe0ffff increase -1 ,pdata 
+0432 6000c9b2 store 1 ,mem_new_24g_sync_cnt 
+0433 7049b402 jam 2 ,mem_new_24g_rf_work_stage 
+0434 204003d3 call g24_ch 
+0435 70496e04 jam 4 ,mem_new_24g_max_retry 
+0436 20600000 rtn 
+
+g24_rf_hop_attemp:
+0437 7049b403 jam 3 ,mem_new_24g_rf_work_stage 
+0438 6800c9b1 fetch 1 ,mem_new_24g_rf_hop_ch 
+0439 243a0409 nbranch g24_rf_hop_attemp_again ,blank 
+043a 204003d3 call g24_ch 
+043b 70496e02 jam 2 ,mem_new_24g_max_retry 
+043c 20600000 rtn 
+
+g24_transmit_process:
+043d c6930000 rtnmark0 mark_24g 
+043e 79200027 set1 mark_24g_conext ,mark 
+043f 680a4949 fetcht 4 ,mem_new_24g_tx_btclk 
+0440 1c427e00 copy clkn_bt ,pdata 
+0441 98467c00 isub temp ,null 
+0442 24410456 ncall g24_timer_timeout ,positive 
+0443 1fe22400 copy pdata ,regb 
+0444 68024949 fetch 4 ,mem_new_24g_tx_btclk 
+0445 6808c94d fetcht 1 ,mem_new_24g_interval 
+0446 98408400 iadd temp ,temp 
+0447 1a427e00 copy regb ,pdata 
+0448 98467c00 isub temp ,null 
+0449 24210454 nbranch g24_transmit_exit ,positive 
+044a 793ffe1c set0 28 ,pdata 
+044b 60024949 store 4 ,mem_new_24g_tx_btclk 
+044c 20400459 call g24_interval_calibrate 
+044d 20400466 call g24_txdata_prep 
+044e 203404c1 branch g24_no_data_to_tx ,user 
+044f 20400422 call g24_rf_sta_check 
+
+g24_transmit_start:
+0450 20400532 call g24_transmit_packet 
+0451 6800c938 fetch 1 ,mem_new_24g_pairing_sm 
+0452 1fe67cff sub pdata ,state_24g_pairing_success ,null 
+0453 20428616 call power_ctrl_start ,zero 
+
+g24_transmit_exit:
+0454 793f8027 set0 mark_24g_conext ,mark 
+0455 20600000 rtn 
+
+g24_timer_timeout:
+0456 20628000 rtn zero 
+0457 79207e1c set1 28 ,pdata 
+0458 20600000 rtn 
+
+g24_interval_calibrate:
+0459 6800c964 fetch 1 ,mem_new_24g_pac_index 
+045a 1fe0fe01 increase 1 ,pdata 
+045b 6000c964 store 1 ,mem_new_24g_pac_index 
+045c c002045f beq 4 ,g24_interval_max 
+045d c0028462 beq 5 ,g24_interval_min 
+045e 20600000 rtn 
+
+g24_interval_max:
+045f 6800c94f fetch 1 ,mem_new_24g_interval_max 
+0460 6000c94d store 1 ,mem_new_24g_interval 
+0461 20600000 rtn 
+
+g24_interval_min:
+0462 70496400 jam 0 ,mem_new_24g_pac_index 
+0463 6800c94e fetch 1 ,mem_new_24g_interval_min 
+0464 6000c94d store 1 ,mem_new_24g_interval 
+0465 20600000 rtn 
+
+g24_txdata_prep:
+0466 6800c938 fetch 1 ,mem_new_24g_pairing_sm 
+0467 c0ff8671 bne state_24g_pairing_success ,g24_pairing_sm 
+0468 204002bd call p_ipc_rx 
+0469 20340478 branch g24_txdata_prep_ipc_nodata ,user 
+046a 6800c897 fetch 1 ,mem_ipc_rx_type 
+046b c08364c0 bne ipc_type_24g ,enable_usr 
+
+g24_txdata_prep_packeage_data:
+046c 6800ce80 fetch 1 ,mem_short_data_wheel 
+046d 205a04dc call g24_lpm_short_increase ,blank 
+
+g24_txdata_skip_short_lpm:
+046e 6800ce80 fetch 1 ,mem_short_data_wheel 
+046f 245a0474 ncall g24_enter_long_sleep ,blank 
+0470 2040047d call g24_package_data 
+0471 2040049e call g24_transmit_prep 
+
+g24_txdata_enable_tx:
+0472 70492d01 jam ensure_on_24g ,mem_new_24g_ensure 
+0473 20600000 rtn 
+
+g24_enter_long_sleep:
+0474 704e7900 jam 0 ,mem_short_lpm_tx_cnt 
+0475 704e7800 jam 0 ,mem_short_lpm_enable 
+0476 7049ba0a jam 10 ,mem_new_24g_enter_lpm_timer 
+0477 20600000 rtn 
+
+g24_txdata_prep_ipc_nodata:
+0478 6800ce78 fetch 1 ,mem_short_lpm_enable 
+0479 243a047d nbranch g24_short_lpm_txdata_prep ,blank 
+
+g24_txdata_last_pac:
+047a 6800c92d fetch 1 ,mem_new_24g_ensure 
+047b c000b1d4 beq ensure_on_24g ,disable_usr 
+047c 20600000 rtn 
+
+g24_short_lpm_txdata_prep:
+
+g24_package_data:
+047d 6800c9b9 fetch 1 ,mem_new_24g_delay_long_sleep_maxcnt 
+047e 6000c9b8 store 1 ,mem_new_24g_delay_long_sleep_cnt 
+047f 6800c970 fetch 1 ,mem_new_uart_packet 
+0480 1fe22200 copy pdata ,rega 
+0481 da404971 arg mem_new_uart_packet + 1 ,regb 
+0482 70495400 jam 0 ,mem_new_24g_abort_pac 
+
+g24_package_data_pc_bind:
+0483 204003ea call g24_transmit_rf_ctrl_clear 
+0484 6000c990 store 1 ,mem_new_24g_common_temp 
+0485 1a208401 add rega ,1 ,temp 
+0486 d8a04991 arg mem_new_24g_common_temp + 1 ,contw 
+
+g24_package_user_data:
+0487 1a227200 copy rega ,loopcnt 
+0488 1a420c00 copy regb ,contr 
+0489 20407ecd call memcpy 
+048a da204990 arg mem_new_24g_common_temp ,rega 
+
+g24_put_data_in_buff:
+048b c6938000 rtnmark0 mark_24g_conext 
+048c 6008c928 storet 1 ,mem_new_24g_datalen 
+048d 18427200 copy temp ,loopcnt 
+048e d8a048c4 arg mem_new_24g_txbuf ,contw 
+048f 1a220c00 copy rega ,contr 
+0490 20207ecd branch memcpy 
+
+g24_syncword_crc8:
+0491 da200000 arg 0 ,rega 
+0492 df200004 arg 4 ,loopcnt 
+0493 d8c04950 arg mem_new_24g_addr ,contr 
+
+g24_syncword_crc8_loop:
+0494 e8c08000 ifetch 1 ,contr 
+0495 9a20a200 iadd rega ,rega 
+0496 c2000494 loop g24_syncword_crc8_loop 
+0497 1a227e00 copy rega ,pdata 
+0498 600149bb store 2 ,mem_new_24g_syncword 
+0499 6800c9bb fetch 1 ,mem_new_24g_syncword 
+049a 6808c9bc fetcht 1 ,mem_new_24g_syncword + 1 
+049b 9840fe00 iadd temp ,pdata 
+049c 6000c9bd store 1 ,mem_new_24g_syncword_crc8 
+049d 20600000 rtn 
+
+g24_transmit_prep:
+049e 6800c928 fetch 1 ,mem_new_24g_datalen 
+049f 1fe0fe02 increase 2 ,pdata 
+04a0 6000c92a store 1 ,mem_new_24g_txlen 
+04a1 6800c929 fetch 1 ,mem_new_24g_data_type 
+04a2 6000c8e4 store 1 ,mem_new_24g_txpayload 
+04a3 6800c928 fetch 1 ,mem_new_24g_datalen 
+04a4 1fe9fe00 lshift3 pdata ,pdata 
+04a5 6808c927 fetcht 1 ,mem_new_24g_pid 
+04a6 18410403 and temp ,0x03 ,temp 
+04a7 18438400 lshift temp ,temp 
+04a8 9841fe00 ior temp ,pdata 
+04a9 6808c965 fetcht 1 ,mem_new_24g_no_ack 
+04aa 9840fe00 iadd temp ,pdata 
+04ab e0a08000 istore 1 ,contw 
+04ac 6800c928 fetch 1 ,mem_new_24g_datalen 
+04ad 98007200 iforce loopcnt 
+04ae d8c048c4 arg mem_new_24g_txbuf ,contr 
+04af 20207ecd branch memcpy 
+
+g24_send_abort_packet:
+04b0 70495401 jam 1 ,mem_new_24g_abort_pac 
+04b1 7049b100 jam 0 ,mem_new_24g_rf_hop_ch 
+04b2 204003ea call g24_transmit_rf_ctrl_clear 
+04b3 6000c990 store 1 ,mem_new_24g_common_temp 
+04b4 58000000 setarg 0 
+04b5 6003c991 store 7 ,mem_new_24g_common_temp + 1 
+04b6 68024960 fetch 4 ,mem_new_24g_device_addr 
+04b7 60024998 store 4 ,mem_new_24g_common_temp + 8 
+04b8 d840000c arg 12 ,temp 
+04b9 da204990 arg mem_new_24g_common_temp ,rega 
+04ba 2040048b call g24_put_data_in_buff 
+04bb 6800c929 fetch 1 ,mem_new_24g_data_type 
+04bc 79207e03 set1 bit_abort ,pdata 
+04bd 6000c929 store 1 ,mem_new_24g_data_type 
+04be 2040049e call g24_transmit_prep 
+04bf 20400472 call g24_txdata_enable_tx 
+04c0 20200450 branch g24_transmit_start 
+
+g24_no_data_to_tx:
+04c1 6800ce78 fetch 1 ,mem_short_lpm_enable 
+04c2 203a04c5 branch g24_no_data_to_tx_short_lpm_disable ,blank 
+04c3 204004ef call g24_lpm_short_decrease 
+04c4 2020050e branch g24_short_lpm_sleep 
+
+g24_no_data_to_tx_short_lpm_disable:
+04c5 6800c954 fetch 1 ,mem_new_24g_abort_pac 
+04c6 203a04b0 branch g24_send_abort_packet ,blank 
+04c7 6808c9b8 fetcht 1 ,mem_new_24g_delay_long_sleep_cnt 
+04c8 18408401 increase 1 ,temp 
+04c9 6008c9b8 storet 1 ,mem_new_24g_delay_long_sleep_cnt 
+04ca 6800c9b9 fetch 1 ,mem_new_24g_delay_long_sleep_maxcnt 
+04cb 98467c00 isub temp ,null 
+04cc 20610000 rtn positive 
+04cd 7049b800 jam 0 ,mem_new_24g_delay_long_sleep_cnt 
+
+g24_lpm_long_sleep:
+04ce 204000a0 call p_check_ipc_for_lpm 
+04cf 24740000 nrtn user 
+04d0 68008b2b fetch 1 ,mem_c51_lmp_lock 
+04d1 247a0000 nrtn blank 
+04d2 6800c9ba fetch 1 ,mem_new_24g_enter_lpm_timer 
+04d3 247a0000 nrtn blank 
+04d4 704e8000 jam 0 ,mem_short_data_wheel 
+04d5 20403be2 call lpo_calibration 
+04d6 6801c20f fetch 3 ,mem_clks_per_lpo 
+04d7 207a0000 rtn blank 
+04d8 68044958 fetch 8 ,mem_new_24g_enter_hibernate 
+04d9 20407f16 call clk2lpo 
+04da 600a41fb storet 4 ,mem_sleep_counter 
+04db 20203c11 branch lpm_sleep 
+
+g24_lpm_short_increase:
+04dc 6800c2b8 fetch 1 ,mem_wakup_from_power_flag 
+04dd 2fec0002 isolate0 2 ,pdata 
+04de 202084e6 branch g24_lpm_short_increase_poweron ,true 
+04df 6800ce79 fetch 1 ,mem_short_lpm_tx_cnt 
+04e0 c1028000 rtneq 5 
+04e1 1fe0fe01 increase 1 ,pdata 
+04e2 6000ce79 store 1 ,mem_short_lpm_tx_cnt 
+04e3 c1828000 rtnne 5 
+
+g24_lpm_short_enable:
+04e4 704e7801 jam 1 ,mem_short_lpm_enable 
+04e5 20600000 rtn 
+
+g24_lpm_short_increase_poweron:
+04e6 6800ce79 fetch 1 ,mem_short_lpm_tx_cnt 
+04e7 c10a0000 rtneq 20 
+04e8 1fe0fe01 increase 1 ,pdata 
+04e9 6000ce79 store 1 ,mem_short_lpm_tx_cnt 
+04ea c18a0000 rtnne 20 
+04eb 6800c2b8 fetch 1 ,mem_wakup_from_power_flag 
+04ec 79207e02 set1 2 ,pdata 
+04ed 6000c2b8 store 1 ,mem_wakup_from_power_flag 
+04ee 202004e4 branch g24_lpm_short_enable 
+
+g24_lpm_short_decrease:
+04ef 6800ce79 fetch 1 ,mem_short_lpm_tx_cnt 
+04f0 207a0000 rtn blank 
+04f1 1fe0ffff increase -1 ,pdata 
+04f2 6000ce79 store 1 ,mem_short_lpm_tx_cnt 
+04f3 247a0000 nrtn blank 
+04f4 704e7800 jam 0 ,mem_short_lpm_enable 
+04f5 20600000 rtn 
+
+g24_short_lpm_transmit_process:
+04f6 79200027 set1 mark_24g_conext ,mark 
+04f7 204002bd call p_ipc_rx 
+04f8 203404fb branch g24_short_lpm_transmit_process_ipc_nodata ,user 
+04f9 6800c897 fetch 1 ,mem_ipc_rx_type 
+04fa c003050a beq ipc_type_24g ,g24_short_lpm_txdata_data_ready 
+
+g24_short_lpm_transmit_process_ipc_nodata:
+04fb 6800ce7d fetch 1 ,mem_send_data_24g_short_lpm 
+04fc c0008502 beq short_lpm_state_data ,g24_short_lpm_txdata_prep_buff_data 
+04fd c00104c1 beq short_lpm_state_nodata ,g24_no_data_to_tx 
+04fe c0018500 beq short_lpm_state_button_wheel ,g24_short_lpm_transmit_process_button_wheel 
+04ff 20600000 rtn 
+
+g24_short_lpm_transmit_process_button_wheel:
+0500 704e7900 jam 0 ,mem_short_lpm_tx_cnt 
+0501 704e7800 jam 0 ,mem_short_lpm_enable 
+
+g24_short_lpm_txdata_prep_buff_data:
+0502 204004dc call g24_lpm_short_increase 
+0503 704e7d00 jam 0 ,mem_send_data_24g_short_lpm 
+0504 df200007 arg 7 ,loopcnt 
+0505 1f227e00 copy loopcnt ,pdata 
+0506 6000c970 store 1 ,mem_new_uart_packet 
+0507 d8c04e21 arg mem_hid_buff ,contr 
+0508 20407ecd call memcpy 
+0509 78547c00 disable user 
+
+g24_short_lpm_txdata_data_ready:
+050a 2040046c call g24_txdata_prep_packeage_data 
+050b 20400422 call g24_rf_sta_check 
+050c 20400532 call g24_transmit_packet 
+050d 20400616 call power_ctrl_start 
+
+g24_short_lpm_sleep:
+050e 20403be2 call lpo_calibration 
+050f 6801c20f fetch 3 ,mem_clks_per_lpo 
+0510 207a0000 rtn blank 
+0511 6800c131 fetch 1 ,mem_lpm_mode 
+0512 207a0000 rtn blank 
+0513 6800ce80 fetch 1 ,mem_short_data_wheel 
+0514 c0008517 beq 1 ,g24_short_lpm_sleep2 
+0515 58000000 setarg 0 
+0516 600400a0 store 8 ,mem_gpio_wakeup_low 
+
+g24_short_lpm_sleep2:
+0517 20400527 call g24_short_lpm_select_param 
+0518 d9600d00 arg param_rx_setup ,timeup 
+0519 34730200 until clkn_rt ,meet 
+051a 6809ce7a fetcht 3 ,mem_ckln_24g_short_lpm 
+051b 1c427e00 copy clkn_bt ,pdata 
+051c 98467e00 isub temp ,pdata 
+051d 1fe17eff and_into 0xff ,pdata 
+051e d8400ea6 arg 3750 ,temp 
+051f 984f8400 imul32 temp ,temp 
+0520 68024e74 fetch 4 ,mem_short_lpm_interval_param 
+0521 98467e00 isub temp ,pdata 
+0522 20213c7f branch lpm_dispatch_sleep ,positive 
+0523 6800c218 fetch 1 ,mem_lpm_xtalcnt 
+0524 1fe0fe01 increase 1 ,pdata 
+0525 600241fb store 4 ,mem_sleep_counter 
+0526 20203c86 branch lpm_dispatch_sleep + 7 
+
+g24_short_lpm_select_param:
+0527 58013c68 setarg g24_8125_interval_param 
+0528 60024e74 store 4 ,mem_short_lpm_interval_param 
+0529 6800ce7e fetch 1 ,mem_short_lpm_interval_cnt 
+052a 1fe0fe01 increase 1 ,pdata 
+052b c082852d bne 5 ,g24_short_lpm_select_param_cont 
+052c 58000000 setarg 0 
+
+g24_short_lpm_select_param_cont:
+052d 6000ce7e store 1 ,mem_short_lpm_interval_cnt 
+052e c4000000 rtnbit0 0 
+052f 580130b0 setarg g24_78125_interval_param 
+0530 60024e74 store 4 ,mem_short_lpm_interval_param 
+0531 20600000 rtn 
+
+g24_transmit_packet:
+0532 70493100 jam 0 ,mem_new_24g_retry 
+
+g24_transmit_loop:
+0533 d9600d00 arg param_rx_setup ,timeup 
+0534 34730200 until clkn_rt ,meet 
+0535 2040054a call g24_transmit_receive_ack 
+0536 6800c965 fetch 1 ,mem_new_24g_no_ack 
+0537 c1008000 rtneq no_ack_24g 
+0538 242c0559 nbranch g24_retransmit ,sync 
+0539 24378559 nbranch g24_retransmit ,user3 
+053a 20400578 call g24_ackpayload_parse 
+053b 20400608 call power_ctrl_pac_succ_incrs 
+
+g24_transmit_next_packet:
+053c 6800c927 fetch 1 ,mem_new_24g_pid 
+053d 1fe0fe01 increase 1 ,pdata 
+053e 6000c927 store 1 ,mem_new_24g_pid 
+053f 6800c938 fetch 1 ,mem_new_24g_pairing_sm 
+0540 c0ff8548 bne state_24g_pairing_success ,g24_paring_mode_start 
+0541 20400419 call g24_transmit_succ_rf_config 
+
+g24_transmit_abandon:
+0542 58000000 setarg 0 
+0543 6001492e store 2 ,mem_new_24g_txfail_cnt 
+0544 6000c930 store 1 ,mem_new_24g_get_ack_fail 
+0545 6000c9b3 store 1 ,mem_new_24g_hop_pac_retry 
+0546 70492d00 jam ensure_off_24g ,mem_new_24g_ensure 
+0547 20600000 rtn 
+
+g24_paring_mode_start:
+0548 20400605 call power_ctrl_pac_succ_cnt_init 
+0549 2020068c branch g24_paring_mode 
+
+g24_transmit_receive_ack:
+054a 7857fc00 disable user3 
+054b 20400598 call g24_transmit 
+054c 6800c965 fetch 1 ,mem_new_24g_no_ack 
+054d c0008557 beq no_ack_24g ,g24_transmit_no_ack 
+054e 18002a00 force 0 ,radio_ctrl 
+054f 68024950 fetch 4 ,mem_new_24g_addr 
+0550 98001200 iforce access 
+0551 68088017 fetcht 1 ,mem_last_freq 
+0552 204039b9 call set_freq_rx 
+0553 204039bf call rf_rx_enable 
+0554 204005c2 call g24_receive_rxon 
+0555 20578601 call g24_end_of_packet ,user3 
+0556 20600000 rtn 
+
+g24_transmit_no_ack:
+0557 20400601 call g24_end_of_packet 
+0558 2020053c branch g24_transmit_next_packet 
+
+g24_retransmit:
+0559 6800c930 fetch 1 ,mem_new_24g_get_ack_fail 
+055a 1fe0fe01 increase 1 ,pdata 
+055b 6000c930 store 1 ,mem_new_24g_get_ack_fail 
+055c 6800c938 fetch 1 ,mem_new_24g_pairing_sm 
+055d c0ff856d bne state_24g_pairing_success ,g24_tx_paring_retry 
+055e 6808c931 fetcht 1 ,mem_new_24g_retry 
+055f 18408401 increase 1 ,temp 
+0560 6008c931 storet 1 ,mem_new_24g_retry 
+0561 6800c96e fetch 1 ,mem_new_24g_max_retry 
+0562 98467e00 isub temp ,pdata 
+0563 243a0533 nbranch g24_transmit_loop ,blank 
+0564 6800c9b4 fetch 1 ,mem_new_24g_rf_work_stage 
+0565 c0018402 beq 3 ,g24_transmit_pac_fail_hop_stage3 
+0566 6800c9b3 fetch 1 ,mem_new_24g_hop_pac_retry 
+0567 1fe0fe01 increase 1 ,pdata 
+0568 6000c9b3 store 1 ,mem_new_24g_hop_pac_retry 
+0569 c00103f7 beq 2 ,g24_transmit_hop_pac_fail 
+056a 204003ee call g24_hop_ch_enable 
+056b 70496e01 jam 1 ,mem_new_24g_max_retry 
+056c 20200532 branch g24_transmit_packet 
+
+g24_tx_paring_retry:
+056d 6800c930 fetch 1 ,mem_new_24g_get_ack_fail 
+056e c1ff8000 rtnne 0xff 
+056f 70493000 jam 0 ,mem_new_24g_get_ack_fail 
+0570 20200576 branch g24_stop_24g_mode 
+
+g24_tx_attempt_fail:
+0571 58000000 setarg 0 
+0572 6001492e store 2 ,mem_new_24g_txfail_cnt 
+0573 70413100 jam 0 ,mem_lpm_mode 
+0574 704e7900 jam 0 ,mem_short_lpm_tx_cnt 
+0575 704e7800 jam 0 ,mem_short_lpm_enable 
+
+g24_stop_24g_mode:
+0576 7048963b jam bt_evt_24g_attempt_fail ,mem_ipc_tx_evt 
+0577 202002eb branch p_ipc_tx_evt 
+
+g24_ackpayload_parse:
+0578 2040057f call g24_read_len_pid_crc 
+0579 6800c926 fetch 1 ,mem_new_24g_rxdata_length 
+057a 207a0000 rtn blank 
+057b 98007200 iforce loopcnt 
+057c d8c048a4 arg mem_new_24g_rxbuf + 2 ,contr 
+057d d8a04906 arg mem_new_24g_rxpayload ,contw 
+057e 20207ecd branch memcpy 
+
+g24_read_len_pid_crc:
+057f 6800c8a3 fetch 1 ,mem_new_24g_rxbuf + 1 
+0580 1fe97e00 rshift3 pdata ,pdata 
+0581 6000c926 store 1 ,mem_new_24g_rxdata_length 
+0582 1fe0fe01 increase 1 ,pdata 
+0583 d8c048a3 arg mem_new_24g_rxbuf + 1 ,contr 
+0584 98c08c00 iadd contr ,contr 
+0585 e8c18000 ifetch 3 ,contr 
+0586 6001c966 store 3 ,mem_new_24g_sta_crc 
+0587 6800c8a3 fetch 1 ,mem_new_24g_rxbuf + 1 
+0588 1fe37e00 rshift pdata ,pdata 
+0589 1fe17e03 and pdata ,0x03 ,pdata 
+058a 6000c96c store 1 ,mem_new_24g_sta_pid 
+058b 20600000 rtn 
+
+g24_prep:
+058c 7844fc00 disable enable_crc 
+058d 7843fc00 disable enable_white 
+058e 58555555 setarg 0x555555 
+058f 98001e00 iforce crc24_init 
+0590 6800c932 fetch 1 ,mem_new_24g_ch 
+0591 1fed8400 reverse pdata ,temp 
+0592 79200401 set1 1 ,temp 
+0593 18431c00 rshift temp ,white_init 
+0594 20600000 rtn 
+
+g24_set_freq_tx:
+0595 204039b1 call set_sync_on 
+0596 6808c932 fetcht 1 ,mem_new_24g_ch 
+0597 202039c9 branch set_freq_tx 
+
+g24_transmit:
+0598 20404976 call le_enable 
+0599 68024950 fetch 4 ,mem_new_24g_addr 
+059a 98001200 iforce access 
+059b 2040058c call g24_prep 
+059c 20400595 call g24_set_freq_tx 
+059d 79202a00 set1 txgfsk ,radio_ctrl 
+059e 782efc00 enable encode_fec0 
+059f 78307c00 enable is_tx 
+05a0 7850fc00 disable is_rx 
+05a1 19317e00 rshift16 access ,pdata 
+05a2 1fecfe00 rshift8 pdata ,pdata 
+05a3 1ff1fe00 rshift4 pdata ,pdata 
+05a4 08008628 inject mod ,40 
+05a5 784efc00 disable encode_fec0 
+05a6 782dfc00 enable encode_fec1 
+05a7 7823fc00 enable enable_white 
+05a8 7824fc00 enable enable_crc 
+05a9 6800c9bd fetch 1 ,mem_new_24g_syncword_crc8 
+05aa 08008608 inject mod ,8 
+05ab 6800c92a fetch 1 ,mem_new_24g_txlen 
+05ac 98007200 iforce loopcnt 
+05ad d8c048e4 arg mem_new_24g_txpayload ,contr 
+
+g24tr_loop:
+05ae e8c08000 ifetch 1 ,contr 
+05af 08008608 inject mod ,8 
+05b0 c20005ae loop g24tr_loop 
+05b1 78247c00 enable enable_parity 
+05b2 08008618 inject mod ,24 
+05b3 78447c00 disable enable_parity 
+05b4 37d38200 until null ,tx_clear 
+05b5 20000064 nop 100 
+05b6 784efc00 disable encode_fec0 
+05b7 784dfc00 disable encode_fec1 
+05b8 20600000 rtn 
+
+g24_receive_packet:
+05b9 20404976 call le_enable 
+05ba 68024950 fetch 4 ,mem_new_24g_addr 
+05bb 98001200 iforce access 
+05bc 204039b1 call set_sync_on 
+05bd 6808c932 fetcht 1 ,mem_new_24g_ch 
+05be 204039b9 call set_freq_rx 
+05bf 58000500 setarg param_pll_setup 
+05c0 20403b35 call sleep 
+05c1 204039bf call rf_rx_enable 
+
+g24_receive_rxon:
+05c2 2040058c call g24_prep 
+05c3 7857fc00 disable user3 
+05c4 7826fc00 enable decode_fec0 
+05c5 7830fc00 enable is_rx 
+05c6 78507c00 disable is_tx 
+05c7 78287c00 enable swfine 
+05c8 6801492b fetch 2 ,mem_new_24g_rx_window 
+05c9 98003600 iforce stop_watch 
+05ca 37c18400 correlate null ,timeout 
+05cb 242c0604 nbranch g24_sync_timeout ,sync 
+05cc 7846fc00 disable decode_fec0 
+05cd 7825fc00 enable decode_fec1 
+05ce 7823fc00 enable enable_white 
+05cf 7824fc00 enable enable_crc 
+05d0 09800008 parse demod ,bucket ,8 
+05d1 19897e00 rshift3 pwindow ,pdata 
+05d2 6000c9be store 1 ,mem_new_24g_get_syncword_crc8 
+05d3 20400491 call g24_syncword_crc8 
+05d4 6808c9be fetcht 1 ,mem_new_24g_get_syncword_crc8 
+05d5 98467c00 isub temp ,null 
+05d6 24228601 nbranch g24_end_of_packet ,zero 
+05d7 09800008 parse demod ,bucket ,8 
+05d8 19897e00 rshift3 pwindow ,pdata 
+05d9 6000c8a2 store 1 ,mem_new_24g_rxbuf 
+05da 6800c96f fetch 1 ,mem_new_24g_mode 
+05db 1fe67c02 sub pdata ,rx_24g ,null 
+05dc 202285e1 branch g24_receive_skip ,zero 
+05dd 6800c8a2 fetch 1 ,mem_new_24g_rxbuf 
+05de 6808c929 fetcht 1 ,mem_new_24g_data_type 
+05df a8400e00 icompare bits_data ,temp 
+05e0 24208601 nbranch g24_end_of_packet ,true 
+
+g24_receive_skip:
+05e1 09800008 parse demod ,bucket ,8 
+05e2 19897e00 rshift3 pwindow ,pdata 
+05e3 e0a08000 istore 1 ,contw 
+05e4 1fe97e00 rshift3 pdata ,pdata 
+05e5 1fe1721f and pdata ,0x1f ,loopcnt 
+05e6 202285eb branch g24rx_nopayload ,zero 
+
+g24rx_loop:
+05e7 09800008 parse demod ,bucket ,8 
+05e8 19897e00 rshift3 pwindow ,pdata 
+05e9 e0a08000 istore 1 ,contw 
+05ea c20005e7 loop g24rx_loop 
+
+g24rx_nopayload:
+05eb 18a22200 copy contw ,rega 
+05ec 09800008 parse demod ,bucket ,8 
+05ed 19897e00 rshift3 pwindow ,pdata 
+05ee 6000c9cf store 1 ,mem_rssi_hex_received 
+05ef 1a220a00 copy rega ,contw 
+05f0 09800018 parse demod ,bucket ,24 
+05f1 78287c00 enable swfine 
+05f2 db600664 arg param_sifs ,stop_watch 
+05f3 1fef7e00 rshift32 pdata ,pdata 
+05f4 1ff17e00 rshift16 pdata ,pdata 
+05f5 e0a18000 istore 3 ,contw 
+05f6 7845fc00 disable decode_fec1 
+05f7 20230601 branch g24_end_of_packet ,crc_failed 
+05f8 7837fc00 enable user3 
+05f9 68008017 fetch 1 ,mem_last_freq 
+05fa 1fe0a200 add pdata ,0 ,rega 
+05fb 20403a13 call rf_write_freq 
+05fc 7846fc00 disable decode_fec0 
+05fd 204039b1 call set_sync_on 
+05fe 6800c9cf fetch 1 ,mem_rssi_hex_received 
+05ff 1fe22200 copy pdata ,rega 
+0600 20200654 branch rssi_signal 
+
+g24_end_of_packet:
+0601 784dfc00 disable encode_fec1 
+0602 7845fc00 disable decode_fec1 
+0603 202036c6 branch end_of_packet 
+
+g24_sync_timeout:
+0604 20200601 branch g24_end_of_packet 
+
+power_ctrl_pac_succ_cnt_init:
+0605 7049c401 jam 1 ,mem_power_ctrl_level 
+0606 7049c500 jam 0 ,mem_power_ctrl_pac_succ_cnt 
+0607 20600000 rtn 
+
+power_ctrl_pac_succ_incrs:
+0608 6800c9c5 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+0609 1fe0fe01 increase 1 ,pdata 
+060a 6000c9c5 store 1 ,mem_power_ctrl_pac_succ_cnt 
+060b 20600000 rtn 
+
+power_ctrl_pac_succ_decrs:
+060c 6800c9c5 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+060d 1fe67c01 sub pdata ,1 ,null 
+060e 24410614 ncall power_ctrl_pac_succ_cnt_reinit ,positive 
+060f 6800c9c5 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+0610 c1000000 rtneq 0 
+0611 1fe0ffff increase -1 ,pdata 
+0612 6000c9c5 store 1 ,mem_power_ctrl_pac_succ_cnt 
+0613 20600000 rtn 
+
+power_ctrl_pac_succ_cnt_reinit:
+0614 7049c502 jam 2 ,mem_power_ctrl_pac_succ_cnt 
+0615 20600000 rtn 
+
+power_ctrl_start:
+0616 da2049c6 arg mem_rssi_signal_buf ,rega 
+0617 2040065d call rssi_average 
+0618 6008c9d0 storet 1 ,mem_rssi_avg_received 
+0619 280ffe26 isolate1 mark_24g ,mark 
+061a 20408624 call power_ctrl_24g_dis_max ,true 
+061b 24408628 ncall power_ctrl_le_dis_max ,true 
+061c 98467c00 isub temp ,null 
+061d 24210641 nbranch power_ctrl_txpower_incrs ,positive 
+061e 6800c9c5 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+061f 1fe67c01 sub pdata ,1 ,null 
+0620 2421062c nbranch power_ctrl_txpower_decrs_check ,positive 
+0621 6800c9c5 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+0622 c0000641 beq 0 ,power_ctrl_txpower_incrs 
+0623 20600000 rtn 
+
+power_ctrl_24g_dis_max:
+0624 58000082 setarg rssi_dis_max_24g 
+0625 20600000 rtn 
+
+power_ctrl_24g_dis_min:
+0626 58000077 setarg rssi_dis_min_24g 
+0627 20600000 rtn 
+
+power_ctrl_le_dis_max:
+0628 58000080 setarg rssi_dis_max_ble 
+0629 20600000 rtn 
+
+power_ctrl_le_dis_min:
+062a 58000075 setarg rssi_dis_min_ble 
+062b 20600000 rtn 
+
+power_ctrl_txpower_decrs_check:
+062c 6800c9c5 fetch 1 ,mem_power_ctrl_pac_succ_cnt 
+062d c1a30000 rtnne 70 
+062e 7049c500 jam 0 ,mem_power_ctrl_pac_succ_cnt 
+
+power_ctrl_txpower_decrs:
+062f 6808c9d0 fetcht 1 ,mem_rssi_avg_received 
+0630 280ffe26 isolate1 mark_24g ,mark 
+0631 20408626 call power_ctrl_24g_dis_min ,true 
+0632 2440862a ncall power_ctrl_le_dis_min ,true 
+0633 98467c00 isub temp ,null 
+0634 24610000 nrtn positive 
+0635 6800c9c4 fetch 1 ,mem_power_ctrl_level 
+0636 c000064d beq 0 ,power_ctrl_decrs_level0 
+0637 1fe0ffff increase -1 ,pdata 
+0638 6000c9c4 store 1 ,mem_power_ctrl_level 
+0639 c000064d beq 0 ,power_ctrl_decrs_level0 
+
+power_ctrl_decrs_level1:
+
+power_ctrl_incrs_level1:
+063a 708955d0 hjam 0xd0 ,0x8955 
+063b 708956e0 hjam 0xe0 ,0x8956 
+063c 7089574c hjam 0x4c ,0x8957 
+063d 7089586c hjam 0x6c ,0x8958 
+063e 70895950 hjam 0x50 ,0x8959 
+063f 70428001 jam 0x01 ,mem_tx_power 
+0640 20600000 rtn 
+
+power_ctrl_txpower_incrs:
+0641 6800c9c4 fetch 1 ,mem_power_ctrl_level 
+0642 c0010646 beq 2 ,power_ctrl_incrs_level2 
+0643 1fe0fe01 increase 1 ,pdata 
+0644 6000c9c4 store 1 ,mem_power_ctrl_level 
+0645 c000863a beq 1 ,power_ctrl_incrs_level1 
+
+power_ctrl_incrs_level2:
+0646 708955d0 hjam 0xd0 ,0x8955 
+0647 708956e0 hjam 0xe0 ,0x8956 
+0648 7089574c hjam 0x4c ,0x8957 
+0649 7089583c hjam 0x3c ,0x8958 
+064a 70895910 hjam 0x10 ,0x8959 
+064b 70428004 jam 0x04 ,mem_tx_power 
+064c 20600000 rtn 
+
+power_ctrl_decrs_level0:
+064d 708955d0 hjam 0xd0 ,0x8955 
+064e 708956c0 hjam 0xc0 ,0x8956 
+064f 7089574c hjam 0x4c ,0x8957 
+0650 7089586c hjam 0x6c ,0x8958 
+0651 70895950 hjam 0x50 ,0x8959 
+0652 70428010 jam 0x10 ,mem_tx_power 
+0653 20600000 rtn 
+
+rssi_signal:
+0654 6808c9ce fetcht 1 ,mem_rssi_signal_index 
+0655 580049c6 setarg mem_rssi_signal_buf 
+0656 98408a00 iadd temp ,contw 
+0657 1a227e00 copy rega ,pdata 
+0658 e0a08000 istore 1 ,contw 
+0659 18408401 increase 1 ,temp 
+065a 18410407 and_into rssi_buf_len ,temp 
+065b 6008c9ce storet 1 ,mem_rssi_signal_index 
+065c 20600000 rtn 
+
+rssi_average:
+065d d8400000 arg 0 ,temp 
+065e df200008 arg rssi_buf_len + 1 ,loopcnt 
+065f 1a220c00 copy rega ,contr 
+
+rssi_average_loop:
+0660 e8c08000 ifetch 1 ,contr 
+0661 98408400 iadd temp ,temp 
+0662 c2000660 loop rssi_average_loop 
+0663 18497e00 rshift3 temp ,pdata 
+0664 1fe20400 copy pdata ,temp 
+0665 c6930000 rtnmark0 mark_24g 
+0666 1fe6fc0a div pdata ,10 
+0667 20407f53 call wait_div_end 
+0668 1807fe00 quotient pdata 
+0669 1ff27e00 lshift4 pdata ,pdata 
+066a 18070400 remainder temp 
+066b 98418400 ior temp ,temp 
+066c 20600000 rtn 
+
+g24_start_pairing_sm1:
+066d 79200026 set1 mark_24g ,mark 
+066e 204003ce call g24_pair_init 
+
+g24_set_pairing_sm_1:
+066f 70493801 jam state_24g_pairing_1 ,mem_new_24g_pairing_sm 
+0670 20600000 rtn 
+
+g24_pairing_sm:
+0671 6800c92d fetch 1 ,mem_new_24g_ensure 
+0672 c000b1d4 beq ensure_on_24g ,disable_usr 
+0673 6800c938 fetch 1 ,mem_new_24g_pairing_sm 
+0674 c0008678 beq state_24g_pairing_1 ,g24_pairing_sm_1 
+0675 c001067b beq state_24g_pairing_2 ,g24_pairing_sm_2 
+0676 c001867e beq state_24g_pairing_3 ,g24_pairing_sm_3 
+0677 20203b31 branch assert 
+
+g24_pairing_sm_1:
+0678 70493811 jam state_24g_pairing_1_waiting_ack ,mem_new_24g_pairing_sm 
+0679 704990aa jam 0xaa ,mem_new_24g_common_temp 
+067a 20200680 branch g24_pairing_sm_common 
+
+g24_pairing_sm_2:
+067b 70493812 jam state_24g_pairing_2_waiting_ack ,mem_new_24g_pairing_sm 
+067c 70499055 jam 0x55 ,mem_new_24g_common_temp 
+067d 20200680 branch g24_pairing_sm_common 
+
+g24_pairing_sm_3:
+067e 70493813 jam state_24g_pairing_3_waiting_ack ,mem_new_24g_pairing_sm 
+067f 70499022 jam 0x22 ,mem_new_24g_common_temp 
+
+g24_pairing_sm_common:
+0680 6800c929 fetch 1 ,mem_new_24g_data_type 
+0681 1fe17e07 and_into bits_data ,pdata 
+0682 6000c991 store 1 ,mem_new_24g_common_temp + 1 
+0683 68024960 fetch 4 ,mem_new_24g_device_addr 
+0684 60024992 store 4 ,mem_new_24g_common_temp + 2 
+
+g24_put_pairing_data_in_buff:
+0685 70499600 jam 0 ,mem_new_24g_common_temp + 6 
+0686 da204990 arg mem_new_24g_common_temp ,rega 
+0687 d8400007 arg 7 ,temp 
+0688 2040048b call g24_put_data_in_buff 
+0689 2040049e call g24_transmit_prep 
+068a 20400472 call g24_txdata_enable_tx 
+068b 202031d4 branch disable_usr 
+
+g24_paring_mode:
+068c 6800c938 fetch 1 ,mem_new_24g_pairing_sm 
+068d c17f8000 rtneq state_24g_pairing_success 
+068e c0088692 beq state_24g_pairing_1_waiting_ack ,g24_pairing_sm_1_waiting_ack 
+068f c0090694 beq state_24g_pairing_2_waiting_ack ,g24_pairing_sm_2_waiting_ack 
+0690 c0098696 beq state_24g_pairing_3_waiting_ack ,g24_pairing_sm_3_waiting_ack 
+0691 20600000 rtn 
+
+g24_pairing_sm_1_waiting_ack:
+0692 70493802 jam state_24g_pairing_2 ,mem_new_24g_pairing_sm 
+0693 20200542 branch g24_transmit_abandon 
+
+g24_pairing_sm_2_waiting_ack:
+0694 70493803 jam state_24g_pairing_3 ,mem_new_24g_pairing_sm 
+0695 20200542 branch g24_transmit_abandon 
+
+g24_pairing_sm_3_waiting_ack:
+0696 704938ff jam state_24g_pairing_success ,mem_new_24g_pairing_sm 
+0697 70489639 jam bt_evt_24g_pairing_complete ,mem_ipc_tx_evt 
+0698 204002eb call p_ipc_tx_evt 
+0699 68024908 fetch 4 ,mem_new_24g_rxpayload + 2 
+069a 204003d1 call g24_update_addr_and_synccrc8 
+069b 20200542 branch g24_transmit_abandon 
+
+g24_start_24g_mode:
+069c 793f8026 set0 mark_24g ,mark 
+069d 204003d3 call g24_ch 
+069e 68024950 fetch 4 ,mem_new_24g_addr 
+069f 20400491 call g24_syncword_crc8 
+06a0 6800c938 fetch 1 ,mem_new_24g_pairing_sm 
+06a1 c1ff8000 rtnne state_24g_pairing_success 
+06a2 204006b2 call g24_tx_attemp_data_prep 
+
+g24_tx_attemp_dongle:
+06a3 58000000 setarg 0 
+06a4 60014956 store 2 ,mem_new_24g_check_dongle_times 
+
+g24_tx_attemp_dongle_loop:
+06a5 200007d0 nop 2000 
+06a6 6800c956 fetch 1 ,mem_new_24g_check_dongle_times 
+06a7 c07f8576 beq 0xff ,g24_stop_24g_mode 
+06a8 2040054a call g24_transmit_receive_ack 
+06a9 242c06bc nbranch g24_attemp_txdata_retry ,sync 
+06aa 243786bc nbranch g24_attemp_txdata_retry ,user3 
+
+g24_tx_attemp_dongle_succ:
+06ab 70413101 jam 1 ,mem_lpm_mode 
+06ac 79200026 set1 mark_24g ,mark 
+06ad 58000000 setarg 0 
+06ae 60014956 store 2 ,mem_new_24g_check_dongle_times 
+06af 7009bd3a jam bt_evt_24g_attempt_success ,mem_fifo_temp 
+06b0 20407d86 call ui_ipc_send_event 
+06b1 20207e0d branch check_51cmd_stop_adv 
+
+g24_tx_attemp_data_prep:
+06b2 79200027 set1 mark_24g_conext ,mark 
+06b3 704990ff jam 0xff ,mem_new_24g_common_temp 
+06b4 6800c929 fetch 1 ,mem_new_24g_data_type 
+06b5 6000c991 store 1 ,mem_new_24g_common_temp + 1 
+06b6 68024960 fetch 4 ,mem_new_24g_device_addr 
+06b7 60024992 store 4 ,mem_new_24g_common_temp + 2 
+06b8 d8400006 arg 6 ,temp 
+06b9 da204990 arg mem_new_24g_common_temp ,rega 
+06ba 2040048b call g24_put_data_in_buff 
+06bb 2020049e branch g24_transmit_prep 
+
+g24_attemp_txdata_retry:
+06bc 68014956 fetch 2 ,mem_new_24g_check_dongle_times 
+06bd 1fe0fe01 increase 1 ,pdata 
+06be 60014956 store 2 ,mem_new_24g_check_dongle_times 
+06bf 204003d3 call g24_ch 
+06c0 202006a5 branch g24_tx_attemp_dongle_loop 
+branch g24_tx_attemp_dongle_loop 
Index: Standard_mouse/btms/output/ramcode.rom
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/ramcode.rom	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/ramcode.rom	(working copy)
@@ -0,0 +1,1729 @@
+c512800f
+c0000024
+c001802f
+c0430035
+c045003f
+c0458061
+c053806d
+c0540074
+c0548088
+c056009b
+c05a0349
+c05a80b4
+c05b00bb
+c05b80dd
+20203b34
+c0028117
+c00b011c
+c00d8120
+c0118123
+c0178147
+c018815c
+c019016e
+c0198181
+c01c8192
+c01e019f
+c01e81b2
+c01f01b8
+c01f81d1
+c02101ef
+c02681f4
+c04a8225
+c079822c
+c07b8238
+c07c026f
+c07c8275
+20203b34
+20800000
+2435b004
+6800c595
+243a002d
+6800ce78
+203a3004
+704e7f00
+c5933004
+2435b004
+70828003
+20203004
+2040027f
+2040043d
+204002bd
+6800ce78
+243a0383
+2020301b
+2030b9a3
+708955d4
+20000004
+708955d2
+20000004
+708955d1
+20000004
+6800c280
+c00a39ae
+2020399c
+60088017
+1840a200
+20403a13
+58000500
+20403b35
+70890601
+7089003c
+708901e0
+70896d12
+2000000a
+70890201
+7089023d
+2000000a
+708903b7
+2000000a
+7089027f
+6800c280
+c00a005e
+c2808058
+c2810058
+70894c5b
+70894d96
+70894e2c
+70894f46
+2020005c
+70894cfb
+70894def
+70894eec
+70894f5e
+6800c280
+202039dc
+708956c2
+708955d0
+20600000
+20403cd2
+20403a5f
+70804206
+68108968
+79207e07
+60108968
+793ffe07
+60108968
+79207e07
+60108968
+70804205
+20203a0c
+20403c2b
+6800ce45
+207a0000
+704e4500
+1c427e00
+6002489e
+20600000
+c6130000
+20403be2
+6801c20f
+207a0000
+68014042
+d840ffff
+98467c00
+20628000
+6800c131
+207a0000
+20404816
+247a0000
+20403d0e
+247a0000
+20403a7b
+6800c6e2
+203a3c5e
+6800c639
+207a0000
+20203c5e
+6800c595
+203a0095
+6800809f
+243a0095
+6800ce83
+6808ce84
+98467c00
+24628000
+6800ce81
+247a0000
+58000000
+600400a0
+20203c6a
+204000a0
+24740000
+68008b2b
+247a0000
+7049c100
+20203c6a
+204000a0
+24740000
+68008b2b
+247a0000
+20203c8c
+204000ab
+24740000
+204000a8
+24740000
+700b2b01
+700b2a01
+204000b0
+202000ab
+6801482c
+6809482e
+202000ad
+680147c4
+680947c6
+98467c00
+2022e4c0
+202031d4
+68008b2a
+2000000a
+c08000b0
+20600000
+70001627
+70015000
+70017e00
+70017f00
+58000000
+600288d2
+20600000
+da2046f0
+20407f95
+207a0000
+1fe22600
+204000c1
+20203d9b
+c10c0000
+c00a00c6
+c00a80d0
+c01480db
+20203d73
+704e8300
+70421200
+704ebb00
+704e5114
+20403e61
+20403e59
+20403e7f
+20403e20
+704eb901
+20203dc2
+704ea400
+20400304
+7044b200
+70421200
+704ebb00
+704e5100
+70456a00
+68094e4e
+600944f8
+204052a0
+20203dc6
+20400105
+20207e3b
+6008824e
+6800c89c
+1fe0fe01
+6000c89c
+6800824e
+207a0000
+1fe0ffff
+6000824e
+20400108
+204000eb
+20400111
+204000f7
+204000fe
+202000e1
+6800cebb
+207a0000
+6800c212
+2fe1fe20
+244080f5
+6800c131
+205a00f3
+20600000
+70413101
+20600000
+70421220
+20600000
+6800c9ba
+207a0000
+704e8000
+1fe0ffff
+6000c9ba
+247a0000
+20600000
+6800ce82
+207a0000
+1fe0ffff
+6000ce82
+247a0000
+704e8100
+20600000
+20403e7f
+7009bd12
+20207d90
+6800ce51
+207a0000
+1fe0ffff
+6000ce51
+247a0000
+70421220
+70413101
+704ebb01
+20600000
+6800ce52
+207a0000
+1fe0ffff
+6000ce52
+247a0000
+20203e6d
+20404968
+20404b51
+20404bd8
+20400616
+20204945
+20403a50
+1fe22200
+20400654
+20204a3d
+68024e48
+60024596
+20204a8c
+70413101
+6801037c
+68090382
+98467e00
+600109be
+68008362
+793ffe05
+793ffe03
+60008362
+68020366
+68090364
+600909c6
+98462200
+6800c45b
+6000838d
+e8c90000
+e8c10000
+1febfe00
+60010364
+184b8400
+9840fe00
+e8ca0000
+600a038e
+9a20fe00
+1fe22800
+68010364
+680909c6
+98467e00
+680909be
+984ffe00
+9a80fe00
+60020366
+20405199
+68010390
+60014561
+20600000
+68008379
+c2828158
+20400608
+704e6200
+6800ce20
+243a0152
+6800cea5
+c0008156
+68008303
+203a4bde
+20204f87
+6800ce20
+1fe0ffff
+6000ce20
+20204f87
+704e2003
+20204bde
+6800ce62
+1fe0fe01
+6000ce62
+2020060c
+6800c467
+c0030160
+c0010167
+20204bfb
+6800ce53
+c0008164
+20403e6d
+20204c86
+20400105
+704e5203
+20204c90
+58000013
+e0a08000
+20404c58
+5800000a
+60010390
+60014561
+20600000
+6800c46b
+c0010175
+c003017c
+c0038173
+20204c18
+704ea500
+20204d17
+59000302
+6001c4dc
+58000001
+e0a08000
+58010010
+e0a18000
+20204ccd
+7009bd29
+20407d86
+7009bd47
+20404bd6
+20204d01
+6800c46b
+c00d8185
+c00e8185
+20204c2b
+68094e4e
+6009446c
+6800ce86
+1fe08401
+18410403
+6008ce86
+1feffe07
+d8c04e87
+98c08c00
+e8c38000
+6003c46e
+d840000e
+20204f89
+6008c466
+28200602
+24208197
+1840fffc
+60014467
+68088379
+2040019a
+20204f92
+6800cea5
+c000819d
+20204bd0
+58000000
+20600000
+1a627e00
+c00001a5
+c00101a8
+c00181ac
+c00501b0
+20204fb9
+70413100
+704e513c
+2020501f
+20405033
+58000000
+60044544
+20600000
+20405039
+6800c56a
+c1010000
+20206418
+7009bd2b
+20204bd6
+e8c08000
+c00081b5
+20204ffe
+704ea501
+704e2003
+20205069
+e8c18000
+6001839a
+c00901bc
+20205011
+70413101
+204001c8
+6800839b
+1fe67c60
+202281cd
+704ea600
+20405125
+24628000
+6800cea6
+245a01cf
+7009bd13
+20204bd6
+68008303
+1fe0fff9
+1fe27200
+1f222400
+20205135
+704ea601
+202001c2
+7009bd29
+20207d86
+6800c3ff
+207a0000
+d8e00001
+20407ee2
+247a0000
+7854fc00
+78287c00
+20404b1e
+204049d4
+20404a8a
+243681e3
+68008003
+1fe0fe01
+60008003
+68008302
+1fe17e0f
+c00181ed
+c002d1af
+68008016
+c093d17d
+180a7e00
+d84001ff
+98417e00
+1fe0fefa
+1fe0ffff
+20000026
+243a01e9
+20205196
+20404ac5
+202001e3
+68024596
+d840ea60
+9840fe00
+60024596
+202051a9
+7855fc00
+203701f7
+24368206
+20403cb7
+68014161
+60010370
+68008302
+2fe00601
+2420bccb
+6800c465
+2fe00601
+2420bccb
+20404bd0
+243a3ccb
+6800ce62
+1fe67c01
+24213ccb
+20205297
+68094161
+68014e60
+98408400
+18430400
+68010370
+9840fe00
+60010370
+20203cc3
+2040021c
+df200006
+d8c04ead
+5800ffff
+20400220
+24628000
+6800cea8
+207a0000
+1fe0ffff
+6000cea8
+20403e28
+20628000
+704ea701
+20600000
+d840000c
+da204ead
+68014eab
+2020624a
+e8c90000
+98467c00
+24628000
+c2000220
+20600000
+68120078
+681a007c
+9841fe00
+1fe47e00
+9a217e00
+60120070
+20600000
+1a227e00
+207a0000
+18408560
+18408560
+793f841c
+600a4703
+1fe20400
+da2046f0
+20407fa6
+247a0000
+18427e00
+20207d7d
+20407d80
+da2046f8
+20407f95
+1fe20400
+20407d84
+18427e00
+207a0000
+c0118245
+c0120249
+c012824d
+c006824f
+c013825e
+20207db3
+6800c9c3
+6000c280
+704938ff
+2020069c
+6800c9c3
+6000c280
+793f8026
+2020497d
+70428014
+2020066d
+793f8026
+70413100
+180a7e00
+6000c53e
+5826100e
+6001c541
+704e5300
+68094e4e
+600944f8
+204052a0
+da400005
+20400268
+1a427e00
+e0c08000
+20207e07
+793f8026
+70413100
+704e5301
+68094e4e
+20404f6a
+1a220a00
+58000001
+e0a08000
+da400004
+2020025a
+da204401
+ea208000
+207a0000
+98c0a200
+e8c08000
+c1008000
+20200269
+204058c5
+243a7de5
+680089bd
+c584fde0
+c00f8295
+20207dd0
+700b2a03
+204000b0
+704e455a
+20403cfc
+68120138
+793ffe0f
+6012004c
+20403cf4
+d85fffff
+20203c11
+680a489e
+1c427e00
+98467e00
+d8400640
+9846fc00
+20407f53
+1807fe00
+207a0000
+1c420400
+600a489e
+68094898
+18508400
+9840fe00
+1ff0fe00
+60014898
+1ff0fe00
+1fe17e03
+c1800000
+204002b3
+24760000
+6800c2cf
+c2810296
+20600000
+68108078
+793ffe05
+60108078
+7089718f
+6800c2d0
+60108973
+204002a1
+68108078
+79207e05
+60108078
+20600000
+68108053
+79207e07
+60108053
+68108973
+1fe1fe30
+60108973
+7089067c
+708972aa
+20001388
+68190150
+68108053
+793ffe07
+60108053
+18508400
+600942d1
+20600000
+78367c00
+20600000
+78567c00
+20404bd0
+205a02b1
+6800c954
+245a02b1
+20600000
+704ea301
+204002bd
+704ea300
+20600000
+204000ab
+20740000
+1ff0fe00
+1fe20c00
+204002e3
+6000c897
+c00082ce
+c00302ff
+1fe20400
+18c22200
+6800c040
+c30002d8
+1a220c00
+c6848000
+18427e00
+c0028316
+20203b31
+204002e3
+204002e3
+600089bd
+204002d3
+20207d90
+204002e6
+18c20400
+18508400
+600947c4
+20600000
+1a220c00
+d8a000f5
+202002db
+204002e3
+1fe27200
+204002df
+202002d3
+204002e3
+e0a08000
+c20002df
+20600000
+204002e6
+e8c08000
+20600000
+580047c4
+98c67c00
+24628000
+d8c0472e
+20600000
+df200003
+d8c04894
+18c22200
+6801482e
+1ff0fe00
+1fe20a00
+1a220c00
+e8c08000
+e0a08000
+204002fa
+c20002f2
+18a27e00
+1ff0fe00
+6001482e
+20600000
+5800482c
+98a67c00
+24628000
+d8a047c8
+20600000
+c6938000
+204002e3
+1fe27200
+6000c970
+202002dd
+58000000
+6001ce85
+20600000
+c6130000
+6800c595
+207a0000
+204000ab
+20740000
+1ff0fe00
+1fe20c00
+204002e3
+6000c897
+18c22200
+c08282d8
+18c22400
+20404bd4
+247a0000
+2020031b
+18c22400
+6800cea3
+207a0000
+20404bd0
+247a0000
+68094e4e
+20404f6a
+c4000000
+6800c595
+c1000000
+6800ce83
+1fe0fe01
+6000ce83
+6800ce85
+1fe08401
+18410403
+6008ce85
+1feffe07
+d8a04e87
+98a08a00
+1a420c00
+204002e3
+1fe27200
+204002dd
+20400332
+20760000
+7009bd1b
+20204bd6
+78567c00
+6800cea4
+c1028000
+78367c00
+1fe0fe01
+6000cea4
+1fe67c01
+24610000
+70489640
+202002eb
+5800472e
+1ff0fe00
+600147c4
+600147c6
+580047c8
+1ff0fe00
+6001482c
+6001482e
+20600000
+68014ea9
+1fe0fe1c
+60014eab
+20600000
+2040524a
+700b2a00
+70016c06
+20403e7f
+580003c8
+60014296
+580002b9
+60014290
+580003c1
+6001428c
+2455833c
+20558389
+20403d3e
+6800ceba
+203a0362
+1fe0ffff
+6000ceba
+58007f80
+60014ea9
+20400345
+6800ce53
+243a0362
+6800ceb9
+243a0362
+2040020e
+6800ce45
+c02d039d
+2035839b
+6800c280
+6000c9c3
+20400605
+68014e41
+1ff0fe00
+60014e41
+68014e43
+1ff0fe00
+60014e43
+204003a8
+204003e2
+680409c6
+243a0376
+68014ad4
+1ff0fe00
+203a0376
+60014e43
+7048962f
+6800ce78
+243a037e
+20400293
+204002eb
+20400307
+70828003
+20600000
+2055bc29
+d9600d00
+34730200
+1c427e00
+6001ce7a
+6801470b
+c3858000
+c3830000
+20403d60
+204004f6
+20200383
+1ce27e00
+c5930393
+203a038e
+7049b9bb
+20600000
+7049b900
+6800c9b7
+207a0000
+7049b700
+2020038c
+203a0396
+7049c102
+20600000
+6800c9c2
+207a0000
+7049c200
+7049c101
+20600000
+7048963c
+20200377
+1ce27e00
+203a0277
+2040530d
+204042eb
+58000000
+60044040
+6001470b
+60014898
+6001489a
+7048963d
+20200377
+204062c4
+580007e2
+da2009c6
+d840000c
+2040630d
+204062c7
+680409c6
+207a0000
+6800c2cf
+c28103b3
+20600000
+680909c6
+680109cc
+18422400
+1fe22200
+98462600
+1a427e00
+9a667e00
+1ff0fe00
+60014e41
+1a6bfe00
+9a20fe00
+1ff0fe00
+60014e43
+20600000
+78347c00
+68120138
+79347e1a
+6012004c
+20403cf4
+70009f01
+20600000
+1a627e00
+1fe17ef0
+c1280000
+1a627e00
+6000c896
+202002eb
+70492700
+7049324e
+68024934
+60024950
+20200491
+6808c933
+204003d9
+18408401
+18410403
+6008c933
+20600000
+6800c950
+1fe17e03
+1fefa204
+58004939
+9a20fe00
+98408c00
+e8c08000
+6000c932
+20600000
+680209c6
+60024960
+247a0000
+68024140
+60024960
+20600000
+7049b001
+7049b200
+6800c929
+1fe17e07
+6000c929
+20600000
+6800c929
+79207e04
+6000c929
+6000c8e4
+20600000
+6800c929
+793ffe04
+6000c929
+20600000
+2040060c
+6800c9b4
+c00083fc
+c0010400
+20600000
+7049b202
+7049b300
+7049b000
+202003ea
+7049b100
+202003fd
+6801492e
+1fe0fe01
+6001492e
+c2850571
+6800c9b1
+c000840b
+7049b101
+6800c9b1
+c08083ea
+6800c9b5
+1fe0fe01
+6000c9b5
+c0020412
+204003d3
+70496e02
+20200532
+2040060c
+7049b500
+202003ea
+7049b202
+7049b001
+7049b100
+202003ea
+6800c9b4
+c0018416
+6800c929
+2fec0004
+202083e8
+6800c9b4
+c0008415
+c0010416
+20600000
+6800c938
+c1ff8000
+20400427
+2456042f
+20600000
+78567c00
+6800c9b0
+c1808000
+6800c9b2
+c1800000
+7049b401
+70496e04
+202002b1
+6800c9b2
+203a0437
+1fe0ffff
+6000c9b2
+7049b402
+204003d3
+70496e04
+20600000
+7049b403
+6800c9b1
+243a0409
+204003d3
+70496e02
+20600000
+c6930000
+79200027
+680a4949
+1c427e00
+98467c00
+24410456
+1fe22400
+68024949
+6808c94d
+98408400
+1a427e00
+98467c00
+24210454
+793ffe1c
+60024949
+20400459
+20400466
+203404c1
+20400422
+20400532
+6800c938
+1fe67cff
+20428616
+793f8027
+20600000
+20628000
+79207e1c
+20600000
+6800c964
+1fe0fe01
+6000c964
+c002045f
+c0028462
+20600000
+6800c94f
+6000c94d
+20600000
+70496400
+6800c94e
+6000c94d
+20600000
+6800c938
+c0ff8671
+204002bd
+20340478
+6800c897
+c08364c0
+6800ce80
+205a04dc
+6800ce80
+245a0474
+2040047d
+2040049e
+70492d01
+20600000
+704e7900
+704e7800
+7049ba0a
+20600000
+6800ce78
+243a047d
+6800c92d
+c000b1d4
+20600000
+6800c9b9
+6000c9b8
+6800c970
+1fe22200
+da404971
+70495400
+204003ea
+6000c990
+1a208401
+d8a04991
+1a227200
+1a420c00
+20407ecd
+da204990
+c6938000
+6008c928
+18427200
+d8a048c4
+1a220c00
+20207ecd
+da200000
+df200004
+d8c04950
+e8c08000
+9a20a200
+c2000494
+1a227e00
+600149bb
+6800c9bb
+6808c9bc
+9840fe00
+6000c9bd
+20600000
+6800c928
+1fe0fe02
+6000c92a
+6800c929
+6000c8e4
+6800c928
+1fe9fe00
+6808c927
+18410403
+18438400
+9841fe00
+6808c965
+9840fe00
+e0a08000
+6800c928
+98007200
+d8c048c4
+20207ecd
+70495401
+7049b100
+204003ea
+6000c990
+58000000
+6003c991
+68024960
+60024998
+d840000c
+da204990
+2040048b
+6800c929
+79207e03
+6000c929
+2040049e
+20400472
+20200450
+6800ce78
+203a04c5
+204004ef
+2020050e
+6800c954
+203a04b0
+6808c9b8
+18408401
+6008c9b8
+6800c9b9
+98467c00
+20610000
+7049b800
+204000a0
+24740000
+68008b2b
+247a0000
+6800c9ba
+247a0000
+704e8000
+20403be2
+6801c20f
+207a0000
+68044958
+20407f16
+600a41fb
+20203c11
+6800c2b8
+2fec0002
+202084e6
+6800ce79
+c1028000
+1fe0fe01
+6000ce79
+c1828000
+704e7801
+20600000
+6800ce79
+c10a0000
+1fe0fe01
+6000ce79
+c18a0000
+6800c2b8
+79207e02
+6000c2b8
+202004e4
+6800ce79
+207a0000
+1fe0ffff
+6000ce79
+247a0000
+704e7800
+20600000
+79200027
+204002bd
+203404fb
+6800c897
+c003050a
+6800ce7d
+c0008502
+c00104c1
+c0018500
+20600000
+704e7900
+704e7800
+204004dc
+704e7d00
+df200007
+1f227e00
+6000c970
+d8c04e21
+20407ecd
+78547c00
+2040046c
+20400422
+20400532
+20400616
+20403be2
+6801c20f
+207a0000
+6800c131
+207a0000
+6800ce80
+c0008517
+58000000
+600400a0
+20400527
+d9600d00
+34730200
+6809ce7a
+1c427e00
+98467e00
+1fe17eff
+d8400ea6
+984f8400
+68024e74
+98467e00
+20213c7f
+6800c218
+1fe0fe01
+600241fb
+20203c86
+58013c68
+60024e74
+6800ce7e
+1fe0fe01
+c082852d
+58000000
+6000ce7e
+c4000000
+580130b0
+60024e74
+20600000
+70493100
+d9600d00
+34730200
+2040054a
+6800c965
+c1008000
+242c0559
+24378559
+20400578
+20400608
+6800c927
+1fe0fe01
+6000c927
+6800c938
+c0ff8548
+20400419
+58000000
+6001492e
+6000c930
+6000c9b3
+70492d00
+20600000
+20400605
+2020068c
+7857fc00
+20400598
+6800c965
+c0008557
+18002a00
+68024950
+98001200
+68088017
+204039b9
+204039bf
+204005c2
+20578601
+20600000
+20400601
+2020053c
+6800c930
+1fe0fe01
+6000c930
+6800c938
+c0ff856d
+6808c931
+18408401
+6008c931
+6800c96e
+98467e00
+243a0533
+6800c9b4
+c0018402
+6800c9b3
+1fe0fe01
+6000c9b3
+c00103f7
+204003ee
+70496e01
+20200532
+6800c930
+c1ff8000
+70493000
+20200576
+58000000
+6001492e
+70413100
+704e7900
+704e7800
+7048963b
+202002eb
+2040057f
+6800c926
+207a0000
+98007200
+d8c048a4
+d8a04906
+20207ecd
+6800c8a3
+1fe97e00
+6000c926
+1fe0fe01
+d8c048a3
+98c08c00
+e8c18000
+6001c966
+6800c8a3
+1fe37e00
+1fe17e03
+6000c96c
+20600000
+7844fc00
+7843fc00
+58555555
+98001e00
+6800c932
+1fed8400
+79200401
+18431c00
+20600000
+204039b1
+6808c932
+202039c9
+20404976
+68024950
+98001200
+2040058c
+20400595
+79202a00
+782efc00
+78307c00
+7850fc00
+19317e00
+1fecfe00
+1ff1fe00
+08008628
+784efc00
+782dfc00
+7823fc00
+7824fc00
+6800c9bd
+08008608
+6800c92a
+98007200
+d8c048e4
+e8c08000
+08008608
+c20005ae
+78247c00
+08008618
+78447c00
+37d38200
+20000064
+784efc00
+784dfc00
+20600000
+20404976
+68024950
+98001200
+204039b1
+6808c932
+204039b9
+58000500
+20403b35
+204039bf
+2040058c
+7857fc00
+7826fc00
+7830fc00
+78507c00
+78287c00
+6801492b
+98003600
+37c18400
+242c0604
+7846fc00
+7825fc00
+7823fc00
+7824fc00
+09800008
+19897e00
+6000c9be
+20400491
+6808c9be
+98467c00
+24228601
+09800008
+19897e00
+6000c8a2
+6800c96f
+1fe67c02
+202285e1
+6800c8a2
+6808c929
+a8400e00
+24208601
+09800008
+19897e00
+e0a08000
+1fe97e00
+1fe1721f
+202285eb
+09800008
+19897e00
+e0a08000
+c20005e7
+18a22200
+09800008
+19897e00
+6000c9cf
+1a220a00
+09800018
+78287c00
+db600664
+1fef7e00
+1ff17e00
+e0a18000
+7845fc00
+20230601
+7837fc00
+68008017
+1fe0a200
+20403a13
+7846fc00
+204039b1
+6800c9cf
+1fe22200
+20200654
+784dfc00
+7845fc00
+202036c6
+20200601
+7049c401
+7049c500
+20600000
+6800c9c5
+1fe0fe01
+6000c9c5
+20600000
+6800c9c5
+1fe67c01
+24410614
+6800c9c5
+c1000000
+1fe0ffff
+6000c9c5
+20600000
+7049c502
+20600000
+da2049c6
+2040065d
+6008c9d0
+280ffe26
+20408624
+24408628
+98467c00
+24210641
+6800c9c5
+1fe67c01
+2421062c
+6800c9c5
+c0000641
+20600000
+58000082
+20600000
+58000077
+20600000
+58000080
+20600000
+58000075
+20600000
+6800c9c5
+c1a30000
+7049c500
+6808c9d0
+280ffe26
+20408626
+2440862a
+98467c00
+24610000
+6800c9c4
+c000064d
+1fe0ffff
+6000c9c4
+c000064d
+708955d0
+708956e0
+7089574c
+7089586c
+70895950
+70428001
+20600000
+6800c9c4
+c0010646
+1fe0fe01
+6000c9c4
+c000863a
+708955d0
+708956e0
+7089574c
+7089583c
+70895910
+70428004
+20600000
+708955d0
+708956c0
+7089574c
+7089586c
+70895950
+70428010
+20600000
+6808c9ce
+580049c6
+98408a00
+1a227e00
+e0a08000
+18408401
+18410407
+6008c9ce
+20600000
+d8400000
+df200008
+1a220c00
+e8c08000
+98408400
+c2000660
+18497e00
+1fe20400
+c6930000
+1fe6fc0a
+20407f53
+1807fe00
+1ff27e00
+18070400
+98418400
+20600000
+79200026
+204003ce
+70493801
+20600000
+6800c92d
+c000b1d4
+6800c938
+c0008678
+c001067b
+c001867e
+20203b31
+70493811
+704990aa
+20200680
+70493812
+70499055
+20200680
+70493813
+70499022
+6800c929
+1fe17e07
+6000c991
+68024960
+60024992
+70499600
+da204990
+d8400007
+2040048b
+2040049e
+20400472
+202031d4
+6800c938
+c17f8000
+c0088692
+c0090694
+c0098696
+20600000
+70493802
+20200542
+70493803
+20200542
+704938ff
+70489639
+204002eb
+68024908
+204003d1
+20200542
+793f8026
+204003d3
+68024950
+20400491
+6800c938
+c1ff8000
+204006b2
+58000000
+60014956
+200007d0
+6800c956
+c07f8576
+2040054a
+242c06bc
+243786bc
+70413101
+79200026
+58000000
+60014956
+7009bd3a
+20407d86
+20207e0d
+79200027
+704990ff
+6800c929
+6000c991
+68024960
+60024992
+d8400006
+da204990
+2040048b
+2020049e
+68014956
+1fe0fe01
+60014956
+204003d3
+202006a5
Index: Standard_mouse/btms/output/romcode.rom
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/romcode.rom	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/romcode.rom	(working copy)
@@ -0,0 +1,31039 @@
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00000000
+00004a46
Index: Standard_mouse/btms/output/sched.rom
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/sched.rom	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/output/sched.rom	(working copy)
@@ -0,0 +1,939 @@
+mem_patch00:09
+mem_patch10:40
+mem_patch11:0c
+mem_patch14:80
+mem_patch15:13
+mem_patch16:f0
+mem_patch20:20
+mem_patch22:40
+mem_patch23:08
+mem_patch24:08
+mem_patch25:80
+mem_patch26:0e
+mem_patch27:f2
+mem_patch28:04
+mem_patch29:20
+mem_patch32:20
+mem_patch3e:88
+mem_patch3f:03
+
+##49   #mem_patch00	#49 enable HID
+##02   #mem_patch01	#02 enable HID
+##00   #mem_patch02
+##00   #mem_patch03
+##60   #mem_patch04	#60 enable HID
+##02   #mem_patch05	#02 enable HID
+##00   #mem_patch06
+##80   #mem_patch07	#80 enable HID
+##00   #mem_patch08
+##10   #mem_patch09	#10 enable HID
+##01   #mem_patch0A	#01 enable HID
+##00   #mem_patch0B
+##00   #mem_patch0C
+##00   #mem_patch0D
+##00   #mem_patch0E
+##00   #mem_patch0F
+##40   #mem_patch10
+##0c   #mem_patch11
+##00   #mem_patch12
+##00   #mem_patch13
+##80   #mem_patch14
+##13   #mem_patch15
+##f0   #mem_patch16
+##00   #mem_patch17
+##00   #mem_patch18
+##01   #mem_patch19	#01 enable HID
+##00   #mem_patch1A
+##00   #mem_patch1B
+##00   #mem_patch1C
+##00   #mem_patch1D
+##00   #mem_patch1E
+##00   #mem_patch1F
+##20   #mem_patch20
+##00   #mem_patch21
+##40   #mem_patch22
+##08   #mem_patch23
+##08   #mem_patch24
+##80   #mem_patch25
+##0e   #mem_patch26
+##d0   #mem_patch27
+##04   #mem_patch28
+##20   #mem_patch29
+##60   #mem_patch2A	#60 enable HID
+##41   #mem_patch2B	#41 enable HID
+##00   #mem_patch2C
+##00   #mem_patch2D
+##00   #mem_patch2E
+##00   #mem_patch2F
+##00   #mem_patch30
+##00   #mem_patch31
+##20   #mem_patch32
+##00   #mem_patch33
+##00   #mem_patch34
+##40   #mem_patch35	#40 enable HID
+##00   #mem_patch36
+##00   #mem_patch37
+##00   #mem_patch38
+##01   #mem_patch39	#01 enable HID
+##00   #mem_patch3A
+##00   #mem_patch3B
+##00   #mem_patch3C
+##00   #mem_patch3D
+##88   #mem_patch3E
+##03   #mem_patch3F
+
+mem_lpm_config:8f 1b ce
+mem_lpm_buckcnt:0a 0b ef 0f
+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_page_to:00 20
+mem_rx_window_init:80 04
+mem_rx_window_sniff:00 08
+mem_le_rx_window_inc:00 40
+
+mem_lmp_version: 09 59 00 B0 00    #04 0a 00 e9 12
+
+mem_eeprom_base:30 6f
+mem_eeprom_block_size:20
+
+mem_context_number:01
+
+mem_rf_init_data_new:
+# tx power
+55 d0
+56 c0
+57 4c
+58 3c
+59 50
+ff
+mem_rf_init_ptr:mem_rf_init_data_new
+
+#mem_class: 80 25 00
+#mem_lap:ab ab 66 63 5d 6c
+#mem_local_name_length:
+#'bt mouse
+#mem_sniff_param_interval:0c 00
+#mem_sniff_param_attempt:01
+#mem_sniff_param_timeout:01
+#mem_unsniff2sniff_timer:0a
+mem_ssp_enable:00
+#mem_sp_iocap_local:03 00 04
+mem_ui_profile_supported:01
+
+#mem_eir_enable:01
+
+#mem_all_uuid_16bits:
+#06
+#03#Type: Complete list of 16-bit UUIDs
+#1100 0001 0210 2411  0012  0100
+
+mem_all_uuid_128bits:00
+
+#mouse uuid
+#mem_device_uuid_list:
+#04 0011 0100 1002 1124
+#00 01 00 00
+#36 01 61
+#09
+#00
+#00
+#0a
+#00
+#01
+#00
+#09
+#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#YiChip
+#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#YiChip
+#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
+#0c
+#80
+#09
+#02
+#0d
+#28
+#00
+#09
+#02
+#0e
+#28
+#01
+#
+#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#SpecificationID
+#09 01 03#DeviceID Spec Version:1.3
+#
+#09 02 01# VendorID
+#09 0a 5c#Unknown See http://www.bluetooth.org/assigned-number.htm
+#
+#09 02 02#ProductID
+#09 00 01#0x0001
+#
+#09 02 03#Version
+#09 01 29#Product Version:1.2.9
+#09
+#02
+#04
+#28
+#01
+#09
+#02
+#05
+#09
+#00
+#02
+#00
+#00
+#
+#01 00 01
+#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
+
+#mem_ui_uuid_table:mem_device_uuid_list
+#Auto reconnection after power on
+mem_device_option:42
+#mem_ptt:0
+#mem_features:
+#ff
+#ff
+#8f
+#f8	#fe--EDR  F8--BR
+#9b	#AFHclose 83
+#9d
+#51
+#82
+
+#bluetootch param init
+mem_sp_flag:00
+mem_lpm_current_mult:00
+mem_master_sp_flag:00
+mem_le_ch_mapped:27
+mem_ui_button_gpio:ff
+mem_led_gpio:ff
+
+#2=mouse 4=dongle 6=ukey 7=ir
+mem_lpm_mode:01
+mem_lpm_mult:20
+mem_lpm_mult_timeout:03
+mem_lpm_overhead:08
+mem_lpm_interval:00 00
+mem_scan_mode:00
+mem_ipc_tx_evt_buff:02 01
+
+mem_adc_config_flag:04
+mem_adc_channel:30
+mem_adc_0v:9f 3e
+mem_adc_3v:cd 4d
+
+
+mem_le_adv_own_addr_type:00
+mem_le_adv_channel_map:07 
+mem_le_adv_filter_policy:00
+mem_le_transmit_window:50
+mem_le_notify_handle:1a
+mem_le_lap:ab b9 12 0e 10 26			#bluetooth MAC address
+mem_le_name_len:			#bluetooth name
+'BLE Mouse
+
+mem_le_local_mtu:17
+mem_le_adv_type:00
+mem_le_adv_direct_addr_type:01
+mem_le_adv_direct_addr:00 00 00 00 00 00
+mem_le_adv_enable:00
+
+mem_le_adv_data_len:1f
+mem_le_adv_data:
+#appearance
+03 19 c2 03
+
+#uuid
+03 03 12 18
+
+#flag 
+02 01 05
+
+#name
+'\09BLE Mouse
+
+
+mem_le_scan_data_len:1f
+mem_le_scan_data:
+#name
+'\09BLE Mouse
+
+
+#attribute list: handle 2bytes, uuid 2bytes, length 1bytes, attribute Nbytes
+mem_device_le_att_list:
+
+#Primary service GAP ------
+01 00 02 00 28 02 00 18 
+
+#Device name
+02 00 02 03 28 01 0a
+03 00 02 00 2a
+'BLE Mouse
+
+#Appearance
+04 00 02 03 28 01 02
+05 00 02 01 2a 02 c2 03 #3c2=hid mouse
+
+#Peripheral Preferred Connection Parameters
+06 00 02 03 28 01 02
+07 00 02 04 2a 08 06 00 06 00 64 00 2c 01 # interval 6ms, latency 100, timeout 300
+
+#Primary service GATT ------
+08 00 02 00 28 02 01 18
+#Service changed
+09 00 02 03 28 01 20
+0a 00 02 05 2a 00
+#Client Characteristic Configuration
+0b 00 02 02 29 02 00 00
+#Primary service device information ------
+0c 00 02 00 28 02 0a 18
+#Manufacturer Name
+0d 00 02 03 28 01 02
+0e 00 02 29 2a 06 59 69 43 68 69 70
+#PNP id
+0f 00 02 03 28 01 02
+10 00 02 50 2a 07 02 35 12 22 aa 01 00
+#Primary service battery ------
+11 00 02 00 28 02 0f 18
+#Battery level
+12 00 02 03 28 01 02
+13 00 02 19 2a 01 33
+#Client Characteristic
+14 00 02 02 29 02 00 00
+
+#Primary service hid ------
+15 00 02 00 28 02 12 18
+
+#Protocol mode
+16 00 02 03 28 01 06
+17 00 02 4e 2a 01 01
+
+#Hid report
+18 00 02 03 28 01 1a
+19 00 02 4d 2a 07 00 00 00 00 00 00 00
+
+#Client Characteristic
+1a 00 02 02 29 02 00 00
+
+#Report reference
+1b 00 02 08 29 02 01 01 # report id=1, type=1 input
+
+#Report map
+1c 00 02 03 28 01 0a
+1d 00 02 4b 2a 45 # length 72 bytes
+
+05 01 # Usage Page(Generic Desktop)
+09 02 # Usage(Mouse)
+a1 01 # Collection(Application)
+85 01 # Report ID(1)
+09 01 # Usage(Pointer)
+a1 00 # Collection(Physical)
+05 09 # Usage Page(Buttons)
+19 01 # Usage Minimum(1)
+29 08 # Usage Maximum(8)
+15 00 # Logical Minimum(0).
+25 01 # Logical Maximum(1)
+75 01 # Report Size(1)
+95 08 # Report Count(8)
+81 02 # Input(Data Variable Absolute)
+
+05 01 # Usage Page(Generic Desktop)
+09 30 # Usage(X)
+09 31 # Usage(Y)
+16 01 f8 # Logical Minimum(-2047)
+26 ff 07 # Logical Maximum(2047)
+75 10 # Report Size(16)
+95 02 # Report Count(2)
+81 06 # Input(Data Variable Relative)
+
+09 38 # Usage(Wheel)
+15 81 # Logical Minimum(-127)
+25 7f # Logical Maximum(127)
+75 08 # Report Size(8)
+95 01 # Report Count(1)
+81 06 # Input(Data Variable Relative)
+05 0c # Usage Page(Consumer)
+0a 38 02 # Usage(AC Pan)
+95 01 # Report Count(1)
+81 06 # Input(Data Variable Relative)
+c0 # End Collection
+c0 # End Collection
+
+#Boot mouse input report
+1e 00 02 03 28 01 1a
+1f 00 02 33 2a 08 00 00 00 00 00 00 00 00
+
+#Client Characteristic
+20 00 02 02 29 02 01 00
+
+#Hid information
+21 00 02 03 28 01 02
+22 00 02 4a 2a 04 01 01 00 03
+
+#Hid control point
+23 00 02 03 28 01 04
+24 00 02 4c 2a 00
+
+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
+
+#End of Attribute list
+00 00
+
+mem_ui_le_uuid_table:mem_device_le_att_list
+
+mem_le_rx_winsows:50
+
+mem_le_interal_min:
+07 00 #min interval
+07 00 #max interval
+05 00 #latency
+2c 01 #timeout
+
+mem_empty_count_user:00
+#mem_le_att_report1:13 00
+mem_le_att_report2:19 00
+mem_le_pairing_handle:22 00
+mem_le_pairing_mode:01
+mem_le_flag:01
+
+mem_tx_power:02#3dbm
+
+mem_le_start_fast_conn_count:01
+mem_le_init_eeprom_base_count:01
+
+#24g init
+mem_new_24g_mode:01#tx
+mem_new_24g_data_type:01	#mouse 1,kb 2
+mem_new_24g_max_retry:04#max tx retry
+mem_new_24g_no_ack:00#with ack
+mem_new_24g_rx_window:c0 12	#400us
+mem_new_24g_interval:19
+mem_new_24g_interval_min:19
+mem_new_24g_interval_max:1c
+mem_new_24g_ch_map1:00 13 2c 42
+mem_new_24g_ch_map2:06 15 36 48
+mem_new_24g_ch_map3:0f 1a 3a 4c
+mem_new_24g_ch_map4:11 23 31 4d
+mem_new_24g_pairing_sm:ff
+mem_new_24g_paring_addr:20 15 10 05
+mem_new_24g_common_temp:00 00 00 00 00 00 00 00 00 00
+mem_new_24g_enter_hibernate:00 48 60 00 00 00 00 00#10 min
+
+
Index: /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/patch/patch.format	(added)
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/patch/patch.format	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/patch/patch.format	(revision 0)
Index: Standard_mouse/btms/patch/patch.prog
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/patch/patch.prog	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/patch/patch.prog	(working copy)
@@ -0,0 +1,3069 @@
+define REVD
+define ROMCODE
+define PATCH
+INCLUDE "bt_format"
+org 0x0000		// start from patch ram address start
+
+
+//define HID
+define BLE
+define P24G_YC
+//define P24G_LOG
+//define P24G_AUTO
+define ADC_GPIO
+//define ADC_VINLPM
+//define ADC_HVIN
+//define TEST_MODE
+//define MS_TEST
+//define HCILOG
+//define KEYBORD_DATA
+//define TP_MAX
+//define OTA_ENABLE
+define BLE_FAST_CONN_ENABLE
+
+ifdef PATCH
+	bmark1 mark_ext_patch,patch_ext
+	beq patch00_0,p_soft_reset
+	beq patch00_3,p_main_loop
+ifdef HID	
+	beq patch00_6,p_connection_nosniff
+	beq patch01_1,p_idle_page_mode_r0
+	beq patch04_5,p_role_switch_check
+	beq patch04_6,p_role_switch_prepare
+	beq patch05_1,p_roles_replyto_fhs
+	beq patch07_7,p_slave_notmatch
+	beq patch09_4,p_prepare_tx_not_sco
+	beq patch0a_0,p_tx_l2cap_type
+	beq patch19_0,p_hid_rx_process
+endif	
+	beq patch10_6,p_shutdown_radio
+	beq patch11_2,p_set_freq_tx
+	beq patch11_3,p_initialize_radio_cont
+	beq patch14_7,p_lpm_recover_clk
+	beq patch15_0,p_lpm_dispatch
+	beq patch15_1,p_lpm_dispatch_next2
+	beq patch15_4,p_lpm_dispatch_unconn
+	beq patch16_4,p_device_init
+	beq patch16_5,p_app_lpm_init
+	beq patch16_6,p_app_process_bb_event
+	beq patch16_7,p_app_evt_timer
+	branch loop
+
+patch_ext:
+ifdef BLE
+	beq patch20_5,p_le_slave_match
+	beq patch22_6,p_le_receive_skip
+	beq patch23_3,p_le_send_adv_ind
+	beq patch24_3,p_le_update_param
+	beq patch25_7,p_le_prepare_tx
+	beq patch26_1,p_le_prepare_tx_ll
+	beq patch26_2,p_le_prepare_smp0
+	beq patch26_3,p_le_prepare_att
+	beq patch27_1,p_le_send_packet
+	beq patch27_4,p_le_parse0
+	beq patch27_5,p_le_parse_smp
+	beq patch27_6,p_le_parse_att
+	beq patch27_7,p_le_adv
+	beq patch28_2,p_le_receive_window_size
+	beq patch29_5,p_le_lpm_set_mult
+endif
+ifdef HID
+	beq patch2a_5,p_parse_lmp_escape
+	beq patch2a_6,p_parse_lmp_accepted
+	beq patch2b_0,p_send_lmp
+	beq patch2b_6,p_process_conn_sm
+	beq patch35_6,p_scheduler_process0
+	beq patch39_0,p_ask_serviceclassid
+endif	
+	beq patch32_5,p_gpio_set_before_lpm_common
+	beq patch3e_3,p_ui_timer_check_end
+	beq patch3e_7,p_check_51cmd_once
+	beq patch3f_0,p_check_51cmd_once_continue0
+	beq patch3f_1,p_check_enter_hibernate
+	branch loop
+
+p_soft_reset:
+	clear_stack
+	nbranch soft_reset+3,wake
+	fetch 1,mem_le_switch_send_data
+	nbranch p_soft_reset_start_51,blank
+	fetch 1,mem_short_lpm_enable
+	branch soft_reset+3,blank
+	jam 0,mem_ipc_is_ready
+	bmark0 mark_24g,soft_reset+3
+	nbranch soft_reset+3,wake
+p_soft_reset_start_51:
+	hjam START_C51_CORE,core_docd_ctrl	
+	branch soft_reset+3
+	
+p_main_loop:
+	call p_ipc_timer_check
+ifdef P24G_YC
+	call g24_transmit_process
+endif
+	call p_ipc_rx
+	fetch 1,mem_short_lpm_enable
+	nbranch p_24g_short_lpm_process_loop,blank
+	branch main_loop+2
+
+ifdef HID
+p_connection_nosniff:
+	call p_context_get_next
+	branch connection_nosniff+3
+p_context_get_next:
+	fetcht 1,mem_current_context
+	arg context_num,loopcnt
+	arg mem_context,rega
+	increase 1,temp
+	compare context_num,temp,0xff
+	nbranch p_context_get_next_cont,true
+	arg 0,temp
+p_context_get_next_cont:
+	storet 1,mem_current_context
+	mul32 temp,context_size,pdata
+	iadd rega,contr
+	ifetch 1,contr
+	bbit0 state_insniff,context_get_next_cont+6
+	increase 1,contr
+	ifetch 2,contr
+	branch context_get_next_cont+6,blank		// switch, not sniff, do connection 
+	branch context_get_next_sniff
+	
+p_idle_page_mode_r0:
+	storet 8,mem_temp
+	call timer_check
+	fetcht 8,mem_temp
+	branch idle_page_mode_r0+13		//warning!!!timer_check
+
+p_role_switch_check:
+	disable user
+	fetch 2,mem_tsniff
+	arg 0xffff,temp
+	isub temp,null
+	nrtn zero
+	fetch 4,mem_sniff_anchor
+	branch p_role_switch_clkn,clknt
+	isub clke_bt,pdata
+	branch p_role_switch_clke
+p_role_switch_clkn:
+	isub clkn_bt,pdata
+p_role_switch_clke:
+	sub pdata,4,null
+	nrtn positive
+	force 0,pdata
+	store 2,mem_tsniff
+	enable user
+	rtn
+
+p_role_switch_prepare:
+	storet 4,mem_sniff_anchor
+p_role_switch_prepare0:
+	jam SWITCH_FLAG_ACCEPT,mem_switch_flag
+	setarg 0xffff
+	store 2,mem_tsniff	
+	jam 1,mem_sniff_attempt
+	rtn
+
+p_roles_replyto_fhs:
+	call rf_setup_time_slave_slot
+	call p_master_send_packet
+	branch roles_replyto_fhs+4
+p_master_send_packet:
+	add clkn_bt,1,bt_clk          /* master start to use native clock */
+	call fetch_self_bt_adr
+	force 0x03,freq_mode          /* we are in connection!! */
+	call tx_radio_freq
+	call start_transmitter	/* get ready for that id packet */
+	call start_tx_native
+	call send_access_word
+	branch end_of_packet
+
+p_slave_notmatch:
+	call lpm_set_mult
+	call supervision_update
+	branch slave_disconnect,positive
+	call check_disconnect_timeout
+	nbranch slave_disconnect,user
+	call check_attempt
+	nbranch slave_loop+3,blank
+	rtn
+
+p_prepare_tx_not_sco:
+	call context_check_all_wack			 //abandon mark_retransmit, use context_check_all_wack instead.
+	nbranch prepare_tx_no_retransmit,zero
+	fetch 1,mem_arq
+	bbit0 wack,prepare_tx_pollnull
+	fetch 1,mem_last_type
+	beq type_lmp,prepare_tx_retransmit+7
+	fetch 2,mem_last_txlen
+	sub pdata,20,null
+	nbranch prepare_tx_retransmit+7,positive 
+	store 2,mem_tx_len
+	fetch 1,mem_last_txlch
+	store 1,mem_tx_lch
+	setarg mem_last_txdata
+	store 2,mem_txptr
+	branch prepare_tx_retransmit+7	
+
+p_tx_l2cap_type:
+	fetch 2,mem_tx_len
+	store 2,mem_last_txlen
+	sub pdata,20,null
+	nbranch tx_l2cap_type+2,positive
+	iforce loopcnt
+	fetch 1,mem_tx_lch
+	store 1,mem_last_txlch
+	fetch 2,mem_txptr
+	iforce contr
+	arg mem_last_txdata,contw
+	call memcpy
+	branch tx_l2cap_type+2
+endif
+
+p_shutdown_radio:
+	branch shutdown_radio0,is_rx
+	hjam 0xd4, 0x955
+	nop 4
+	hjam 0xd2, 0x955
+	nop 4
+	hjam 0xd1, 0x955
+	nop 4
+	fetch 1,mem_tx_power
+	beq TX_POWER_PAIR,shutdown_radio_pair
+	branch shutdown_radio_select
+
+p_set_freq_tx:
+	storet 1,mem_last_freq
+	add temp,0,rega			// bt 2M Medium Frequency
+	call rf_write_freq
+	setarg param_pll_setup
+	call sleep
+p_txon:	
+ifdef FPGA
+ifndef ROMCODE
+	setarg 0x000f
+	call fpga_write_radio
+	setarg 0x01e1
+	call fpga_write_radio
+	hjam 0x0, 0x901
+endif
+endif
+	hjam 0x1,rfen_adc
+	hjam 0x3c,rfen_rx
+	hjam 0xe0,rfen_tx
+	hjam 0x12,0x96d
+	nop 10
+	hjam 0x01,rfen_mdm
+	hjam 0x3d,rfen_mdm
+	nop 10
+	hjam 0xb7,rfen_sn
+	nop 10
+	hjam 0x7f, rfen_mdm
+	fetch 1,mem_tx_power
+	beq TX_POWER_PAIR,p_set_tx_power_pair
+	bbit1 TX_POWER_3DB,p_rx_high_sens
+	bbit1 TX_POWER_5DB,p_rx_high_sens
+p_rx_low_sens:
+	hjam 0x5b,0x894c 
+	hjam 0x96,0x894d
+	hjam 0x2c,0x894e 
+	hjam 0x46,0x894f 
+	branch p_txon_select_power_level
+p_rx_high_sens:
+	hjam 0xfb,0x894c 
+	hjam 0xef,0x894d
+	hjam 0xec,0x894e 
+	hjam 0x5e,0x894f 
+p_txon_select_power_level::
+	fetch 1,mem_tx_power
+	branch txon_power_select
+
+p_set_tx_power_pair:	//50-100cm distance
+ 	hjam 0xc2,0x8956
+ 	hjam 0xd0,0x8955
+	rtn
+
+p_initialize_radio_cont:
+	call lpm_cal_xtal_startup
+	call switchto_dpllclk
+	hjam clksel_rc,core_clksel
+	hfetch 1,rf_clkpll_int
+	set1 7,pdata
+	hstore 1,rf_clkpll_int
+	set0 7,pdata
+	hstore 1,rf_clkpll_int
+	set1 7,pdata
+	hstore 1,rf_clkpll_int
+	hjam clksel_dpll,core_clksel
+	branch initialize_radio_cont+4
+
+p_lpm_recover_clk:
+	call lpm_recover_clk+2
+	fetch 1,mem_hibernate_flag
+	rtn blank
+	jam 0,mem_hibernate_flag
+	copy clkn_bt,pdata
+	store 4,mem_ipc_last_check_timer
+	rtn
+
+p_lpm_dispatch:
+	rtnmark1 mark_24g
+	call lpo_calibration
+	fetch 3,mem_clks_per_lpo
+	rtn blank
+	fetch 2,mem_context + coffset_tsniff
+	arg 0xffff,temp
+	isub temp,null
+	rtn zero									/* role switch */
+	fetch 1,mem_lpm_mode
+	rtn blank
+	call l2cap_malloc_is_fifo_empty
+	nrtn blank
+	call lpm_check_wake_lock
+	nrtn blank
+	call xtal_fast_wake
+	fetch 1,mem_ssp_enable
+	branch lpm_dispatch_next,blank
+	fetch 1,mem_sp_local_key_invalid	// simple pairing is not ready
+	rtn blank
+	branch lpm_dispatch_next
+
+p_lpm_dispatch_next2:
+	fetch 1,mem_le_switch_send_data
+	branch p_lpm_dispatch_long_mult,blank
+	fetch 1,mem_lpm_current_mult
+	nbranch p_lpm_dispatch_long_mult,blank // short lpm, no gpio to wakeup
+	fetch 1,mem_bt_read_ipc_count
+	fetcht 1,mem_51_read_sensor_count
+	isub temp,null
+	nrtn zero
+	fetch 1,mem_ble_data_wheel
+	nrtn blank
+	setarg 0
+	store 8,mem_gpio_wakeup_low
+	branch lpm_dispatch_next2
+p_lpm_dispatch_long_mult:
+	call p_check_ipc_for_lpm
+	nrtn user
+	fetch 1,mem_c51_lmp_lock
+	nrtn blank
+	jam 0,mem_bt_wakeup_from_long_mult	//bt enter long mult,then 8051 execute  EVENT_WAKEUP
+	branch lpm_dispatch_next2
+
+p_lpm_dispatch_unconn:
+	call p_check_ipc_for_lpm
+	nrtn user
+	fetch 1,mem_c51_lmp_lock
+	nrtn blank
+	branch lpm_dispatch_unconn+2
+
+p_check_ipc_for_lpm:
+	call p_check_ipc_2bt
+	nrtn user
+	call p_check_ipc_2c51
+	nrtn user
+	jam 1,mem_c51_lmp_lock
+	jam SYC_TASK_LPM,mem_c51_flag
+	call p_c51_wait
+	branch p_check_ipc_2bt
+
+
+//user: no data
+p_check_ipc_2c51:
+	fetch 2,mem_ipc_2C51_read_index
+	fetcht 2,mem_ipc_2C51_write_index
+	branch p_check_ipc_common
+p_check_ipc_2bt:
+	fetch 2,mem_ipc_2bt_read_index
+	fetcht 2,mem_ipc_2bt_write_index
+p_check_ipc_common:
+	isub temp,null
+	branch enable_usr,zero
+	branch disable_usr
+	
+p_c51_wait:
+	fetch 1,mem_c51_flag
+	nop 10
+	bne 0,p_c51_wait
+	rtn	
+
+
+p_app_lpm_init:
+	jam 39,mem_le_ch_mapped
+	jam 0,mem_tester_emulate
+	jam 0,mem_debug_config
+	jam 0, mem_lch_code
+	setarg 0
+	store 5,mem_sp_state_start
+	rtn
+
+p_app_process_bb_event:
+	arg mem_ipc_fifo_bt2c51,rega
+	call fifo_out
+	rtn blank
+	//reaching here mains c51 cannot get bb event.
+	copy pdata,regc
+	call p_app_event_normal_process
+	branch app_process_bb_event_priority
+p_app_event_normal_process:
+	rtneq BT_EVT_LINKKEY_GENERATE
+ifdef HID
+	beq BT_EVT_HID_CONNECTED,p_device_bt_hid_connected
+	beq BT_EVT_BB_DISCONNECTED,p_app_bb_event_bb_disconn
+endif
+ifdef BLE	
+	beq BT_EVT_LE_CONNECTED,p_device_le_conn
+	beq BT_EVT_LE_DISCONNECTED,p_device_le_discon
+	beq BT_EVT_LE_ENC_INFO,p_device_le_enc_info
+endif
+	branch app_event_normal_process
+
+ifdef HID
+p_device_bt_hid_connected:
+	branch mouse_hid_connected
+p_app_bb_event_bb_disconn:
+	jam 0,mem_unsniff2sniff_timer_count
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BT_RECONNECT,app_bb_event_bb_reconn_disconn
+	branch app_bb_event_bb_reconn_disconn
+endif
+
+ifdef BLE
+p_device_le_conn:
+	jam 0,mem_bt_read_ipc_count
+	jam 0,mem_lpm_mult
+	jam 0,mem_mult_time_arrive_flag
+	jam 20,mem_le_slave_update_mult_timer
+	call app_ble_stop_adv
+	call app_bt_stop_discovery
+	call app_lpm_mult_enable
+	call app_initflag_store
+	jam 1,mem_le_fast_conn_finished
+	branch app_le_event_bb_connected
+
+p_device_le_discon:
+	jam 0,mem_ble_send_flag
+	call queue_init
+	jam 0,mem_ltk_exists
+	jam 0,mem_lpm_mult
+	jam 0,mem_mult_time_arrive_flag
+	jam 0,mem_le_slave_update_mult_timer
+//	jam 0,mem_le_slave_update_param_timer
+	jam FLAG_LE_PAIRING_NULL,mem_le_pairing_state
+	fetcht 2,mem_le_att_report2
+	storet 2,mem_le_notify_handle
+	call le_clean_att_list_handle_enable
+	branch app_le_event_bb_disconn
+
+p_device_le_enc_info:
+	call p_app_updata_le_param
+	branch check_51cmd_le_start_write
+endif
+
+p_app_evt_timer:
+	storet 1,mem_app_evt_timer_count
+	fetch 1,mem_ipc_bt_100ms_timer
+	increase 1,pdata
+	store 1,mem_ipc_bt_100ms_timer
+p_app_evt_100ms_loop:
+	fetch 1,mem_app_evt_timer_count
+	rtn blank
+	increase -1,pdata
+	store 1,mem_app_evt_timer_count	
+ifdef HID	
+	call p_device_check_hid_handshake_timer
+endif	
+ifdef BLE	
+//	call p_le_slave_update_param_timer
+	call p_le_slave_update_mult_timer
+	call p_check_mult_parameter
+	call p_le_reconn_enable_notify_timer
+endif
+	call p_24g_enter_lpm_timer
+	call p_ble_data_wheel_lpm_timer
+	branch p_app_evt_100ms_loop
+
+p_check_mult_parameter:
+	fetch 1,mem_mult_time_arrive_flag
+	rtn blank
+	fetch 1,mem_lpm_mult
+	compare 0x20,pdata,0xff
+	ncall p_set_mult_para,true
+	fetch 1,mem_lpm_mode
+	call p_set_multmode,blank
+	rtn
+p_set_multmode:
+	jam 1,mem_lpm_mode
+	rtn
+p_set_mult_para:
+	jam 0x20,mem_lpm_mult
+	rtn
+p_24g_enter_lpm_timer:
+	fetch 1,mem_new_24g_enter_lpm_timer
+	rtn blank
+	jam 0,mem_short_data_wheel
+	increase -1,pdata
+	store 1,mem_new_24g_enter_lpm_timer
+	nrtn blank
+	rtn
+
+p_ble_data_wheel_lpm_timer:
+	fetch 1,mem_ble_data_wheel_lpm_timer
+	rtn blank
+	increase -1,pdata
+	store 1,mem_ble_data_wheel_lpm_timer
+	nrtn blank
+	jam 0,mem_ble_data_wheel
+	rtn
+	
+ifdef BLE	
+//p_le_slave_update_param_timer:
+//	fetch 1,mem_le_slave_update_param_timer
+//	rtn blank
+//	increase -1,pdata
+//	store 1,mem_le_slave_update_param_timer
+//	nrtn blank
+p_app_updata_le_param:
+	call app_lpm_mult_enable
+	jam BT_CMD_LE_UPDATE_CONN,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+p_le_slave_update_mult_timer:
+	fetch 1,mem_le_slave_update_mult_timer
+	rtn blank
+	increase -1,pdata
+	store 1,mem_le_slave_update_mult_timer
+	nrtn blank
+	jam 0x20,mem_lpm_mult
+	jam 1,mem_lpm_mode
+	jam 1,mem_mult_time_arrive_flag
+	rtn
+
+p_le_reconn_enable_notify_timer:
+	fetch 1,mem_le_reconn_enable_notify_timer
+	rtn blank
+	increase -1,pdata
+	store 1,mem_le_reconn_enable_notify_timer
+	nrtn blank
+	branch app_ble_start_write	
+endif
+
+ifdef HID
+p_device_check_hid_handshake_timer:
+	fetch 1,mem_hid_handshake_timer_count
+	rtn blank
+	increase -1,pdata
+	store 1,mem_hid_handshake_timer_count
+	nrtn blank
+	fetch 1,mem_hid_send_handshake
+	nbranch p_mem_hid_send_handshake_set0,blank
+	branch hid_handshake_event
+p_mem_hid_send_handshake_set0:
+	jam 0,mem_hid_send_handshake
+	rtn
+endif
+
+ifdef HID
+p_hid_rx_process:
+	fetch 2,mem_l2cap_payload_ptr
+	copy pdata,contr
+	ifetch 1,contr
+	and pdata,0x0f,temp
+	rshift4 pdata,pdata //hidtype
+	beq hid_type_set_idle,p_hid_rx_process_handshake
+	beq hid_type_set_protocol,hid_rx_process_handshake
+	beq hid_type_data,p_hid_rx_process_data
+	beq HID_TYPE_SET_REPORT,p_hid_rx_process_set_report
+	beq HID_TYPE_CONTROL,p_hid_rx_process_hid_control
+	beq HID_TYPE_GET_REPORT,hid_rx_process_handshake
+	rtn
+p_hid_rx_process_handshake:
+	call hid_rx_process_handshake
+	jam 1,mem_hid_send_handshake
+	rtn
+p_hid_rx_process_set_report:
+	call p_hid_rx_process_data
+	branch hid_rx_process_set_report+1
+p_hid_rx_process_data:
+	ifetch 1,contr	
+	beq HID_REPORT_ID_KB,hid_rx_process_data_hid_kb	
+	beq HID_DISCONNECT,p_hid_disconnect
+	rtn
+p_hid_disconnect:
+	jam BT_EVT_CLEAR_LINKKEY,mem_ipc_tx_evt
+	call p_ipc_tx_evt
+	branch app_bt_disconnect
+p_hid_rx_process_hid_control:
+	copy temp,pdata
+	beq HID_CONTROL_P_VIRTUALCABLEUNPLUG,p_hid_rx_process_virtual_cable_unplug
+	beq HID_CONTROL_P_SUSPEND,hid_rx_process_suspend
+	rtn
+p_hid_rx_process_virtual_cable_unplug:
+	jam BT_EVT_VIRTUAL_CABLE_UNPLUG,mem_ipc_tx_evt
+	call p_ipc_tx_evt
+	branch app_bt_disconnect
+endif
+
+ifdef BLE
+p_le_slave_match:
+	call le_got_first_packet
+	call le_acknowledge
+	call le_prepare_tx
+	call power_ctrl_start
+	branch le_slave_match+5
+
+p_le_receive_skip:
+	call save_rssi
+	copy pdata,rega
+	call rssi_signal
+	branch le_receive_skip+3
+
+p_le_send_adv_ind:
+	fetch 4,mem_le_rx_winsows
+	store 4,mem_le_transmit_window// init first packate rx window
+	branch le_send_adv_ind+2
+
+p_le_update_param:
+	jam 1,mem_lpm_mode	
+	fetch 2,mem_le_event_count
+	fetcht 2,mem_le_instant
+	isub temp,pdata
+	store 2,mem_pdatatemp
+	fetch 1,mem_le_state
+	set0 lestate_update_param,pdata
+	set0 lestate_got_first_packet,pdata
+	store 1,mem_le_state
+	fetch 4,mem_le_anchor
+	fetcht 2,mem_le_tsniff
+	storet 2,mem_temp
+	isub temp,rega
+	fetch 1,mem_le_new_param
+	store 1,mem_le_window_size
+	ifetcht 2,contr
+	ifetch 2,contr
+	lshift2 pdata,pdata
+	store 2,mem_le_tsniff
+	lshift2 temp,temp
+	iadd temp,pdata
+	ifetcht 4,contr
+	storet 4,mem_le_slave_latency	// and superTO
+	iadd rega,pdata
+	copy pdata,regab
+	fetch 2,mem_le_tsniff
+	fetcht 2,mem_temp	//last sniff
+	isub temp,pdata		//last sniff - new sniff
+	fetcht 2,mem_pdatatemp
+	imul32 temp,pdata
+	iadd regab,pdata
+	store 4,mem_le_anchor
+	call le_receive_window_size
+	fetch 2,mem_le_superto
+	store 2,mem_le_init_superto
+	rtn
+
+p_le_prepare_tx: 
+	fetch 1,mem_le_arq
+	bbit1 wak,p_le_prepare_tx_retansmited
+	call power_ctrl_pac_succ_incrs
+	jam 0,mem_le_prepare_tx_retransmited_number
+	fetch 1,mem_empty_count_user
+	nbranch p_le_send_empyt,blank
+	fetch 1,mem_mouse_le_pairing_flag
+	beq 1,p_le_smp_empty
+	fetch 1,mem_le_rxbuf+1  
+	branch le_prepare_tx_1,blank
+	branch le_send_empty      // send empty data when got non empty packet
+p_le_send_empyt:
+	fetch 1,mem_empty_count_user
+	increase -1,pdata
+	store 1,mem_empty_count_user
+	branch le_send_empty
+p_le_smp_empty:
+	jam 3,mem_empty_count_user
+	branch le_prepare_tx_1
+
+p_le_prepare_tx_retansmited:
+	fetch 1,mem_le_prepare_tx_retransmited_number
+	increase 1,pdata
+	store 1,mem_le_prepare_tx_retransmited_number
+	branch power_ctrl_pac_succ_decrs
+
+p_le_prepare_tx_ll:
+	fetch 1,mem_le_txpayload
+	beq LL_START_ENC_RSP,p_le_send_start_enc_rsp
+	beq LL_TERMINATE_IND,p_le_send_terminate_ind
+	branch le_prepare_tx_ll
+
+p_le_send_start_enc_rsp:
+	fetch 1,mem_le_reconn_flag
+	beq 1,p_le_send_reconn_start_enc_rsp
+	call app_ble_start_write
+//	force 1,temp
+//	branch le_send_packet,master
+//	fetch 1,mem_le_pairing_state
+//	bne FLAG_LE_PAIRING_AFTER_AUTH,le_send_start_enc_rsp_end
+//	branch le_send_start_enc_rsp+4
+	branch le_send_start_enc_rsp
+p_le_send_reconn_start_enc_rsp:
+	call p_app_updata_le_param
+	jam 3,mem_le_reconn_enable_notify_timer
+	branch le_send_start_enc_rsp_common
+
+p_le_send_terminate_ind:
+	setarg 0x13
+	istore 1,contw
+	call le_send_terminate_ind
+	setarg 10 // 100ms
+	store 2,mem_le_superto
+	store 2,mem_le_init_superto
+	rtn
+
+p_le_prepare_smp0:
+	fetch 1,mem_le_l2cap
+	beq SMP_PAIRING_RESPONSE,p_le_send_smp_pairing_response 
+	beq SMP_ENCRYPTION_INFORMATION,p_le_send_smp_encryption_information      
+	beq SMP_MASTER_IDENTIFICATION,p_le_send_smp_master_identification_only
+	branch le_prepare_smp0
+p_le_send_smp_master_identification_only:
+	jam 0,mem_mouse_le_pairing_flag
+	branch le_send_smp_master_identification_only
+	
+p_le_send_smp_pairing_response:
+	setarg param_smp_paring_response
+	store 3,mem_le_pres
+	setarg 0x01
+	istore 1,contw
+	setarg param_smp_key_dist0
+	istore 3,contw
+	branch le_send_smp_pairing_response_common
+
+p_le_send_smp_encryption_information:
+	jam BT_EVT_LE_ENC_INFO,mem_fifo_temp
+	call ui_ipc_send_event
+	jam XT_SMP_MASTER_IDENTIFICATION,mem_fifo_temp
+	call le_xtype_fifo_in
+	branch le_send_smp_encryption_information_shutter
+
+p_le_prepare_att:
+	fetch 1,mem_le_l2cap
+	beq ATTOP_HANDLE_VALUE_NOTIFICATION,p_le_send_att_handle_value_notification
+	beq ATTOP_HANDLE_VALUE_INDICATION,p_le_send_att_handle_value_indication
+	branch le_prepare_att+5
+	
+p_le_send_att_handle_value_indication:
+p_le_send_att_handle_value_notification:
+	fetcht 2,mem_le_att_report2
+	storet 2,mem_le_l2cap+1
+	fetch 1,mem_queue_read_ptr
+	add pdata,1,temp
+	and temp,0x03,temp
+	storet 1,mem_queue_read_ptr
+	mul32 pdata,7,pdata
+	arg mem_queue_buffer0,contr
+	iadd contr,contr
+	ifetch 7,contr
+	store 7,mem_le_l2cap+3
+	arg 14,temp
+	branch le_send_packet
+
+p_le_send_packet:
+	storet 1,mem_le_txlen
+	compare 2,type,3
+	nbranch p_le_send_non_l2cap,true
+	add temp,-4,pdata
+	store 2,mem_le_txpayload
+p_le_send_non_l2cap:
+	fetcht 1,mem_le_arq
+	call p_le_send_check_md
+	branch le_send_non_l2cap1
+p_le_send_check_md:
+	fetch 1,mem_mouse_le_pairing_flag
+	beq 1,enable_blank
+	branch le_xtype_fifo_is_empty
+enable_blank:
+	setarg 0
+	rtn
+	
+p_le_parse0:
+	copy regc,pdata
+	beq LL_CONNECTION_UPDATE_REQ,p_le_parse_connection_update_req
+	beq LL_TERMINATE_IND,p_le_parse_terminate_ind
+	beq LL_ENC_REQ,p_le_parse_enc_req
+	beq LL_PAUSE_ENC_REQ,p_le_parse_pause_enc_rsq
+	branch le_parse0+6
+
+p_le_parse_connection_update_req:
+	jam 0,mem_lpm_mode
+	jam 60,mem_le_slave_update_mult_timer
+	branch le_parse_connection_update_req	
+
+p_le_parse_terminate_ind:
+	call le_parse_terminate_ind
+le_clear_xtype_fifo:
+	setarg 0
+	store 8,mem_le_xtype_fifo
+	rtn
+
+p_le_parse_enc_req:
+	call le_parse_enc_req
+	fetch 1,mem_le_pairing_state
+	rtneq FLAG_LE_PAIRING_AFTER_AUTH
+	branch load_device_list_mode_4_shutter
+
+p_le_parse_pause_enc_rsq:
+	jam XT_LL_PAUSE_ENC_RSP,mem_fifo_temp
+	branch le_xtype_fifo_in
+
+p_le_parse_smp:
+	ifetch 1,contr
+	beq SMP_PAIRING_REQUEST,p_le_parse_smp_pairing_request
+	branch le_parse_smp+3
+p_le_parse_smp_pairing_request:
+	jam 1,mem_mouse_le_pairing_flag
+	jam 3,mem_empty_count_user
+	branch le_parse_smp_pairing_request
+
+p_le_parse_att:
+	ifetch 3,contr
+	store 3,mem_le_att_opcode
+	beq ATTOP_WRITE_REQUEST,p_le_parse_att_write_request
+	branch le_parse_att+4
+
+p_le_parse_att_write_request:
+	jam 1,mem_lpm_mode
+	call p_le_parse_att_write_common
+	fetch 1,mem_le_att_handle
+	sub pdata,BLE_FAST_CONN_CHARACTER_HANDLE,null
+	branch p_le_mouse_fast_conn_character_set,zero
+	jam 0,mem_le_mouse_fast_conn_flag
+p_le_parse_att_write_request_next:	
+	call le_check_long_packet_patch
+	nrtn zero
+p_le_parse_att_write_request_end:
+	fetch 1,mem_le_mouse_fast_conn_flag
+	ncall p_le_set_enc_info_flag,blank
+	jam ATTOP_WRITE_RESPONSE,mem_fifo_temp
+	branch le_xtype_fifo_in
+p_le_parse_att_write_common:
+	fetch 1,mem_le_rxbuf+1
+	increase -7,pdata
+	icopy loopcnt
+	copy loopcnt,regb
+	branch le_parse_att_write_common+6
+
+p_le_mouse_fast_conn_character_set:
+	jam 1,mem_le_mouse_fast_conn_flag
+	branch p_le_parse_att_write_request_next
+
+p_le_set_enc_info_flag:
+	jam BT_EVT_LE_ENC_INFO,mem_fifo_temp
+	branch ui_ipc_send_event
+
+
+p_le_adv:
+	fetch 1,mem_le_adv_enable
+	rtn blank
+	arg le_adv_interval_timer,queue
+	call timer_check
+	nrtn blank
+	disable master
+	enable swfine
+	call le_init_adv
+	call le_next_adv_channel
+	call le_send_adv_ind
+	nbranch p_le_adv_not_match,match
+	fetch 1,mem_le_req_rcv
+	increase 1,pdata
+	store 1,mem_le_req_rcv
+	fetch 1,mem_le_rxbuf
+	and pdata,0x0f,pdata
+	beq SCAN_REQ,p_le_send_scan_response
+	beq CONNECT_REQ,le_parse_connect_req
+p_le_adv_not_match:	
+	fetch 1,mem_le_ch_mapped
+	bne 39,le_adv_loop
+	random pdata
+	arg 0x1ff,temp
+	iand temp,pdata
+	add pdata,250,pdata	
+p_adv_delay:	
+	increase -1,pdata
+	nop 38
+	nbranch p_adv_delay,blank
+	branch le_adv_not_match+3
+
+p_le_send_scan_response:
+	call le_send_scan_response
+	branch p_le_adv_not_match
+
+p_le_receive_window_size:
+	fetch 4,mem_le_transmit_window
+	arg 60000,temp
+	iadd temp,pdata
+	store 4,mem_le_transmit_window
+	branch le_receive_window_size+16	
+
+
+p_le_lpm_set_mult:
+	disable wake
+	branch p_le_lpm_set_mult_attempt,attempt
+	nbranch p_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_rxbuf
+	compare 1,pdata,3
+	nbranch lpm_mult_short,true		// rx not empty, short interval
+	fetch 1,mem_le_txheader
+	compare 1,pdata,3
+	nbranch lpm_mult_short,true		// tx not empty, short interval
+	call le_xtype_fifo_is_empty
+	nbranch lpm_mult_short,blank
+	fetch 1,mem_le_prepare_tx_retransmited_number
+	sub pdata,1,null
+	nbranch lpm_mult_short,positive
+	branch le_lpm_set_mult_attempt+11
+	
+p_le_lpm_lost:
+	fetcht 2,mem_rx_window_sniff  
+	fetch 2,mem_le_rx_window_inc
+	iadd temp,temp 
+	rshift temp,temp
+	fetch 2,mem_le_receive_window 
+	iadd temp,pdata  
+	store 2,mem_le_receive_window  
+	branch lpm_lost
+
+ifdef BLE_FAST_CONN_ENABLE
+p_mouse_init_environment:
+	call p_mouse_iicd_read_eep_data			//get the address of reconn info
+	arg 0x06,loopcnt
+	arg mem_mouse_le_reconn_addr_data,contr
+	setarg 0xffff								//check reconn info
+	call p_mouse_reconn_addr_empty_check		
+	nrtn zero
+	fetch 1,mem_le_start_fast_conn_count
+	rtn blank
+	increase -1,pdata
+	store 1,mem_le_start_fast_conn_count
+	call app_initflag_check
+	rtn zero
+	jam 1,mem_le_start_adv
+	rtn
+
+p_mouse_iicd_read_eep_data:	
+	arg 0x0c,temp
+	arg mem_mouse_le_reconn_addr_data,rega
+	fetch 2,mem_mouse_reconn_addr
+	branch iicd_read_eep_data+5
+p_mouse_reconn_addr_empty_check:
+	ifetcht 2,contr
+	isub temp,null
+	nrtn zero
+	loop p_mouse_reconn_addr_empty_check
+	rtn
+	
+endif
+	
+endif
+
+ifdef HID
+p_parse_lmp_escape:
+	fetch 1,mem_rxbuf+1
+	set1 7,pdata
+	store 1,mem_lmi_opcode2
+	beq LMP_EXT_FEATURES_REQ,p_parse_lmpext_features_req
+	branch parse_lmp_escape+5
+p_parse_lmpext_features_req:	
+	fetch 1,mem_rxbuf+2
+	store 1,mem_feature_ext_page_number
+	branch parse_lmpext_features_req
+
+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+4
+p_parse_lmp_accepted_switch:
+	jam BT_EVT_SWITCH_ACCEPT,mem_fifo_temp
+	call ui_ipc_send_event
+	branch p_role_switch_prepare0
+
+p_send_lmp:
+	disable user
+	call lmo_fifo_process
+	fetch 1,mem_lmp_to_send
+	rtn blank
+/* lmp message to be processed. this will either be because host??? */
+/* wants to send a lmp message or because one resulted from the LMP */
+/* processing section */
+/********* outgoing lmp lookup table *************/
+	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
+//ssp disable	
+p_send_lmpext_features_res:
+	force 12,queue
+	call send_lmpext
+	fetch 1,mem_feature_ext_page_number
+	istore 1,contw
+	//fetch 2,mem_lmpext_ssp_enable
+	setarg 0
+	istore 2,contw
+	setarg 0
+	istore 3,contw
+	setarg 0x00
+	istore 4,contw
+	branch send_lmp_reply
+//ssp disable	
+p_send_lmpext_features_req:
+	force 12,queue
+	call send_lmpext
+	setarg 0x01
+	istore 1,contw
+	//fetch 2,mem_lmpext_ssp_enable
+	setarg 0
+	istore 2,contw
+	setarg 0
+	istore 3,contw
+	setarg 0x00
+	istore 4,contw
+	branch send_lmp_request
+
+p_process_conn_sm:
+	call lmo_fifo_check
+	nrtn blank
+p_process_conn_sm_continue:
+	fetch 1,mem_conn_sm
+	rtn blank
+	beq CONN_SM_SEND_SWITCH,p_host_create_conn_send_switch
+	branch process_conn_sm_continue+2
+p_host_create_conn_send_switch:
+	nrtn master
+	branch host_create_conn_send_switch
+	
+p_scheduler_process0:
+	call l2cap_malloc_is_fifo_empty
+	nrtn blank 
+	fetcht 4,mem_last_check_clk
+	copy clke_bt,pdata
+	isub temp,temp
+	nbranch p_app_process_bt2,positive
+	sub temp,0x0b,null
+	nbranch p_app_process_bt2,positive
+	rtn
+p_app_process_bt2:
+	store 4,mem_last_check_clk
+	branch app_process_bt
+
+p_ask_serviceclassid:  
+	arg mem_uuid_search_pat,contw
+	call dataelementtype6
+	branch asksrv_error,zero
+p_classidloop:
+	force 0,temp					//use "temp" to mark syntax error or to mark 128 bit uuid //
+	ifetch 1,contr
+	increase -1,regA
+	increase -1,timeup
+	compare 0x18,pdata,0xf8			/// 5 MSB: b00011: uuid  
+	nbranch asksrv_error,true
+	compare 0x04,pdata,0x07			// 3 LSB: b100 128 bits uuid  
+	nbranch p_cmp032,true
+	force 1,temp					// mark it as 128 bit uuid 
+p_skip2bytes:
+	ifetch 1,contr
+	increase -1,regA	
+	increase -1,timeup
+	bne 0x00, p_frstbwrong
+	ifetch 1,contr
+	increase -1,regA	
+	increase -1,timeup
+	beq 0x00, p_cmpuuid
+	branch p_scndbwrong
+p_frstbwrong:  
+	increase 1,contr
+	increase -1,regA	
+	increase -1,timeup
+p_scndbwrong:  
+	increase 2,contr				//skip 2 bytes, first 2 bytes already wrong  
+	increase -2,regA	
+	increase -2,timeup
+	compare 0x00,temp,0xff                        // 128 bits or 32 bits ? 
+	branch p_loopornot,true
+	increase 12,contr				// skip 12 bytes, first 2 bytes already wrong 
+	increase -12,regA	
+	increase -12,timeup
+	branch p_loopornot
+p_cmp032:
+	compare 0x02,pdata,0x07			// 3 LSB: b010 32 bits uuid  
+	nbranch p_cmp016,true
+	branch p_skip2bytes			
+p_cmp016:
+	compare 0x01,pdata,0x07			// 3 LSB: b001 16 bit uuid 
+	nbranch asksrv_error,true
+p_cmpuuid:
+	ifetch 2,contr				// higher order byte  
+	increase -2,regA
+	increase -2,timeup
+	istore 2,contw
+p_uuidsize:
+	compare 0x00,temp,0xff			// is this 128 bits uuid  
+	branch p_loopornot,true
+	copy contr,temp
+	ifetch 1,contr
+	bne 0x00, p_wrong12b
+	ifetch 1,contr
+	bne 0x00, p_wrong12b
+	ifetch 1,contr
+	bne 0x10, p_wrong12b
+	ifetch 1,contr
+	bne 0x00, p_wrong12b
+	ifetch 1,contr
+	bne 0x80, p_wrong12b
+	ifetch 1,contr
+	bne 0x00, p_wrong12b
+	ifetch 1,contr
+	bne 0x00, p_wrong12b
+	ifetch 1,contr
+	bne 0x80, p_wrong12b
+	ifetch 1,contr
+	bne 0x5f, p_wrong12b
+	ifetch 1,contr
+	bne 0x9b, p_wrong12b
+	ifetch 1,contr
+	bne 0x34, p_wrong12b
+	ifetch 1,contr
+	beq 0xfb, p_chck12dn
+p_wrong12b:
+	copy temp,contr  
+p_wrong12b1:
+	increase 12,contr				//skip 12 bytes 
+	force 0x00,queue
+	force 0x00,temp
+p_chck12dn:
+	increase -12,timeup
+	increase -12,regA
+p_loopornot:
+	compare 0x00,regA,0xff
+	nbranch p_classidloop,true
+	branch loopornot+2
+endif
+
+p_gpio_set_before_lpm_common:
+	hfetch 4,core_gpio_pu0
+	hfetcht 4,core_gpio_pd0
+	ior temp,pdata
+	invert pdata,pdata
+	iand rega,pdata
+	hstore 4,core_gpio_oe0
+	rtn
+
+p_ui_timer_check_end:
+	copy rega,pdata
+	rtn blank
+	increase -160,temp 	//320btclk = 100ms
+	increase -160,temp
+	set0 28,temp
+	storet 4,mem_ui_timer_last_btclk
+	copy pdata,temp
+	arg mem_ipc_fifo_bt2c51,rega
+	call fifo_is_near_full
+	nrtn blank
+	copy temp,pdata
+	branch ui_timer_check_send_evt
+
+
+p_check_51cmd_once:
+	call ui_ipc_get_lock
+	arg mem_ipc_fifo_c512bt,rega
+	call fifo_out
+	copy pdata,temp
+	call ui_ipc_put_lock
+	copy temp,pdata
+	rtn blank
+ifdef P24G_YC
+	beq BT_CMD_START_24G,g24_check_51cmd_start_24g
+	beq BT_CMD_STOP_24G,g24_check_51cmd_stop_24g
+	beq BT_CMD_PAIR_24G,g24_check_51cmd_pair_24g
+endif
+ifdef HID
+	beq BT_CMD_START_DISCOVERY,p_check_51cmd_start_discovery
+	beq BT_CMD_RECONNECT,p_check_51cmd_reconnect
+endif
+ifdef BLE
+	beq BT_CMD_START_ADV,p_check_51cmd_adv
+	beq BT_CMD_START_ADV_RECONN,p_check_51cmd_adv_reconn
+endif
+ifdef TEST_MODE
+	beq BT_CMD_TEST_MODE,p_test_tx_mode_init
+endif
+	branch check_51cmd_once+9
+
+ifdef P24G_YC
+g24_check_51cmd_start_24g:
+	fetch 1,mem_tx_power_temp
+	store 1,mem_tx_power
+	jam STATE_24G_PAIRING_SUCCESS,mem_new_24g_pairing_sm
+	branch g24_start_24g_mode
+g24_check_51cmd_stop_24g:
+	fetch 1,mem_tx_power_temp
+	store 1,mem_tx_power
+	set0 mark_24g,mark
+	branch le_disable
+g24_check_51cmd_pair_24g:
+	jam TX_POWER_PAIR,mem_tx_power
+	branch g24_start_pairing_sm1
+endif
+
+ifdef HID
+p_check_51cmd_start_discovery:
+	jam 6,mem_connection_options
+	branch check_51cmd_start_discovery
+p_check_51cmd_reconnect:
+	jam 4,mem_connection_options
+	jam 1,mem_link_key_exists
+	branch check_51cmd_reconnect
+endif	
+
+ifdef BLE
+p_check_51cmd_adv:
+	set0 mark_24g,mark
+	jam 0,mem_lpm_mode
+	random pdata	//random ble addr
+	store 1,mem_le_lap
+
+	setarg 0x26100e
+	store 3,mem_le_lap+3
+	jam 0,mem_le_reconn_flag
+	fetcht 2,mem_le_att_report2
+	storet 2,mem_le_notify_handle
+	call le_clean_att_list_handle_enable
+	arg ADV_FLAG_BREDR_NOT_SUPPORTED |ADV_FLAG_LIMITED_DISCOVERABLE,regb
+p_le_start_adv:	
+	call p_le_check_adv_flag
+//	setarg ADV_FLAG_BREDR_NOT_SUPPORTED |ADV_FLAG_LIMITED_DISCOVERABLE
+	copy regb,pdata
+	istore 1,contr
+	branch check_51cmd_adv
+	
+p_check_51cmd_adv_reconn:
+	set0 mark_24g,mark
+	jam 0,mem_lpm_mode
+	jam 1,mem_le_reconn_flag
+	fetcht 2,mem_le_att_report2
+	call le_att_check_notification_enable
+	copy rega,contw
+	setarg 1
+	istore 1,contw
+	arg ADV_FLAG_BREDR_NOT_SUPPORTED,regb
+	branch p_le_start_adv
+//	call p_le_check_adv_flag
+//	setarg ADV_FLAG_BREDR_NOT_SUPPORTED
+//	istore 1,contr
+//	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_check_51cmd_once_continue0:
+	call lmo_fifo_check
+	nbranch check_51cmd_restore,blank  //process this cmd next time while lmo fifo is full
+p_check_51cmd_once_continue:
+	fetch 1,mem_fifo_temp
+	bmark0 mark_context,check_51cmd_check_idle
+//	beq BT_CMD_DISCONNECT,p_check_51cmd_disconnect	
+//	beq BT_CMD_UPDATE_SUPERVISION_TO,p_check_51cmd_update_supervision_to
+	beq BT_CMD_STORE_RECONN_INFO_LE,p_rtn
+//	beq BT_CMD_STORE_RECONN_INFO_BT,p_check_51cmd_once_continue_rtn
+	branch check_51cmd_once_continue+2
+/*
+p_check_51cmd_disconnect:
+	fetch 2,mem_ui_state_map
+	bbit0 UI_STATE_BT_HID_HANDSHAKE,p_check_51cmd_quick_disconnect
+	branch check_51cmd_disconnect
+p_check_51cmd_quick_disconnect:
+	setarg 0
+	store 4,mem_supervision_to
+	rtn	
+p_check_51cmd_update_supervision_to:
+	jam LMP_SUPERVISION_TIMEOUT,mem_lmo_opcode2
+	fetch 2,mem_new_supervision_to
+	store 2,mem_supervision_to
+p_check_51cmd_once_continue_rtn:	
+	rtn
+*/
+p_check_enter_hibernate:
+	jam SYC_TASK_HIBERNATE,mem_c51_flag
+	call p_c51_wait
+p_enter_hibernate_continue:
+//	call pp_gpio_set_before_lpm_common
+	jam 0x5a,mem_hibernate_flag
+	call lpm_write_gpio_wakeup
+	hfetch 4,core_lpm_ctrl
+	set0 15,pdata					
+	hstore 4,core_lpm_reg
+	call lpm_write_ctrl
+	arg param_hibernate_clks,temp
+	branch lpm_sleep
+
+
+p_ipc_timer_check:
+	fetcht 4,mem_ipc_last_check_timer
+	copy clkn_bt,pdata
+	isub temp,pdata
+//	arg 3200,temp	//1s timer
+	arg 1600,temp	//500ms timer
+	idiv temp
+	call wait_div_end
+	quotient pdata
+	rtn blank
+	copy clkn_bt,temp
+	storet 4,mem_ipc_last_check_timer
+	fetcht 2,mem_ipc_bt_timer
+	byteswap temp,temp
+	iadd temp,pdata
+	byteswap pdata,pdata
+	store 2,mem_ipc_bt_timer
+	byteswap pdata,pdata
+	and pdata,0x3,pdata
+	rtnne 0
+	call p_read_adc_enable
+	nrtn user2
+p_adc_check_process:
+	fetch 1,mem_adc_config_flag
+ifdef ADC_VINLPM
+	bbit1 ADC_CONFIG_VINLPM,p_adc_check_vinlpm
+endif
+ifdef ADC_HVIN
+	bbit1 ADC_CONFIG_HVIN,p_adc_check_hvin
+endif
+ifdef ADC_GPIO
+	bbit1 ADC_CONFIG_GPIO,p_adc_check_gpio
+endif
+p_rtn:
+	rtn
+
+ifdef ADC_VINLPM	
+p_adc_check_vinlpm:
+	hjam 0xbf,rf_adc_mode	//read VINLPM voltage directly	
+	branch p_read_adc
+endif
+
+ifdef ADC_HVIN
+p_adc_check_hvin:
+	hjam 0xaf,rf_adc_mode	//read HVIN voltage directly
+	branch p_read_adc
+endif
+
+ifdef ADC_GPIO	
+p_adc_check_gpio:
+	hfetch 1,core_gpio_pu0
+	set0 5,pdata
+	hstore 1,core_gpio_pu0
+	hjam 0x8f,rf_adc_mode
+	fetch 1,mem_adc_channel
+	hstore 1,rf_adc_ch
+	call p_read_adc
+	hfetch 1,core_gpio_pu0
+	set1 5,pdata
+	hstore 1,core_gpio_pu0
+	rtn
+endif
+
+p_read_adc:
+	hfetch 1,core_uart_baud + 1
+	set1 7,pdata
+	hstore 1,core_uart_baud + 1 
+	hfetch 1,rf_adc_ch
+	or_into 0x30,pdata
+	hstore 1,rf_adc_ch
+	hjam 0x7c,rfen_adc
+	hjam 0xaa,rf_adc_gc
+	nop 5000
+	hfetcht 2,core_adc_sum
+	hfetch 1,core_uart_baud + 1
+	set0 7,pdata
+	hstore 1,core_uart_baud + 1
+	byteswap temp,temp
+	storet 2,mem_adc_current_value
+	rtn
+
+enable_usr2:
+	enable user2
+	rtn
+p_read_adc_enable:
+	disable user2
+ifdef HID	
+	call l2cap_malloc_is_fifo_empty
+	call enable_usr2,blank
+endif	
+ifdef BLE	
+	call le_xtype_fifo_is_empty
+	call enable_usr2,blank
+endif	
+ifdef P24G_YC
+	fetch 1,mem_new_24g_abort_pac
+	ncall enable_usr2,blank
+endif	
+	rtn
+	
+p_user_le_connect_process:
+	jam 1,mem_ble_read_ipc_fifo_once
+	call p_ipc_rx
+	jam 0,mem_ble_read_ipc_fifo_once
+	rtn
+
+p_ipc_rx:
+	call p_check_ipc_2bt
+	rtn user
+	byteswap pdata,pdata
+	copy pdata,contr
+	call p_ipc_rx_byte
+	store 1,mem_ipc_rx_type
+	beq IPC_TYPE_CMD,p_ipc_rx_cmd
+ifdef P24G_YC
+	beq IPC_TYPE_24G,g24_ipc_rx_24g
+endif
+	copy pdata,temp
+	copy contr,rega
+	fetch 1,mem_context
+	bbit0 state_inconn,p_ipc_abondon_rx_data
+	copy rega,contr
+	rtnmark0 mark_context
+	copy temp,pdata
+ifdef HID
+	beq IPC_TYPE_HID,p_ipc_rx_hid
+endif
+ifdef BLE
+	beq IPC_TYPE_BLE,p_ipc_rx_ble
+endif
+	branch assert
+
+p_ipc_rx_cmd:
+	call p_ipc_rx_byte
+	call p_ipc_rx_byte
+	store 1,mem_fifo_temp
+	call p_ipc_next_rx
+	branch ui_ipc_send_cmd
+
+p_ipc_next_rx:
+	call p_ipc_rx_updata_contr
+	copy contr,temp
+	byteswap temp,temp
+	storet 2,mem_ipc_2bt_read_index
+	rtn
+
+p_ipc_abondon_rx_data:
+	copy rega,contr
+	arg mem_tst_pktcnt_sync,contw
+	branch p_ipc_rx_cpy
+
+p_ipc_rx_cpy:
+	call p_ipc_rx_byte
+	copy pdata,loopcnt
+p_ipc_copy:
+	call p_ipc_cpy_loop
+	branch p_ipc_next_rx
+	
+p_ipc_cpy_loop:
+	call p_ipc_rx_byte
+	istore 1,contw
+	loop p_ipc_cpy_loop
+	rtn
+
+p_ipc_rx_byte:
+	call p_ipc_rx_updata_contr
+	ifetch 1,contr
+	rtn
+
+p_ipc_rx_updata_contr:
+	setarg mem_ipc_2bt_fifo_end
+	isub contr,null
+	nrtn zero
+	arg mem_ipc_2bt_fifo_head,contr
+	rtn
+	
+p_ipc_tx_evt:
+	arg 3,loopcnt
+	arg mem_ipc_tx_evt_buff,contr
+p_ipc_tx_cpy:
+	copy contr,rega
+	fetch 2,mem_ipc_2C51_write_index
+	byteswap pdata,pdata
+	copy pdata,contw
+	copy rega,contr
+p_ipc_tx_loop:
+	ifetch 1,contr
+	istore 1,contw
+	call p_ipc_tx_updata_contw
+	loop p_ipc_tx_loop
+	copy contw,pdata
+	byteswap pdata,pdata
+	store 2,mem_ipc_2C51_write_index
+	rtn
+p_ipc_tx_updata_contw:
+	setarg mem_ipc_2C51_fifo_end
+	isub contw,null
+	nrtn zero
+	arg mem_ipc_2C51_fifo_head,contw
+	rtn
+
+ifdef P24G_YC
+g24_ipc_rx_24g:
+	rtnmark0 mark_24g_conext
+	call p_ipc_rx_byte
+	icopy loopcnt
+	store 1,mem_new_uart_packet
+	branch p_ipc_copy
+endif
+
+ifdef HID
+p_ipc_rx_hid:
+ifdef KEYBORD_DATA
+	copy pdata,rega
+	copy contr,pdata
+	store 2,mem_contr
+	call hid_malloc_tx_buff
+	fetch 2,mem_hid_int_remote_cid
+	istore 2,contw
+	setarg 0xa1
+	istore 1,contw
+	add rega,-1,loopcnt
+	fetch 2,mem_contr
+	copy pdata,contr
+else
+	copy contr,pdata
+	store 2,mem_contr
+	arg 9,rega
+	call hid_malloc_tx_buff
+	fetch 2,mem_hid_int_remote_cid
+	istore 2,contw
+	setarg 0x02a1
+	istore 2,contw
+	fetch 2,mem_contr
+	copy pdata,contr
+endif
+	branch p_ipc_rx_cpy
+endif
+
+ifdef BLE
+queue_init:
+	setarg 0
+	store 3,mem_queue_write_prt
+	rtn
+
+p_ipc_rx_ble_data:
+	rtnmark1 mark_24g
+	fetch 1,mem_le_switch_send_data
+	rtn blank
+	call p_check_ipc_2bt
+	rtn user
+	byteswap pdata,pdata
+	copy pdata,contr
+	call p_ipc_rx_byte
+	store 1,mem_ipc_rx_type
+	copy contr,rega
+	bne IPC_TYPE_BLE,p_ipc_abondon_rx_data
+	copy contr,regb
+	call le_xtype_fifo_is_near_full
+	nrtn blank
+	branch p_ipc_rx_ble_read_fifo
+	
+p_ipc_rx_ble:
+	copy contr,regb
+	fetch 1,mem_ble_read_ipc_fifo_once
+	rtn blank
+	call le_xtype_fifo_is_empty
+	nrtn blank
+p_ipc_rx_ble_read_fifo:
+	fetcht 2,mem_le_att_report2
+	call le_att_check_notification_enable
+	rtnbit0 0
+	fetch 1,mem_le_switch_send_data
+	rtneq 0
+	fetch 1,mem_bt_read_ipc_count
+	pincrease 1
+	store 1,mem_bt_read_ipc_count
+	fetch 1,mem_queue_write_prt
+	add pdata,1,temp
+	and temp,0x03,temp
+	storet 1,mem_queue_write_prt
+	mul32 pdata,7,pdata
+	arg mem_queue_buffer0,contw
+	iadd contw,contw
+	copy regb,contr
+	call p_ipc_rx_byte
+	icopy loopcnt
+	call p_ipc_copy
+	call p_ipc_rx_ble_read_fifo_first_time
+	rtn user2
+	jam ATTOP_HANDLE_VALUE_NOTIFICATION,mem_fifo_temp
+	branch le_xtype_fifo_in
+
+p_ipc_rx_ble_read_fifo_first_time:
+	disable user2
+	fetch 1,mem_ble_send_flag
+	rtneq 5
+	enable user2
+	increase 1,pdata
+	store 1,mem_ble_send_flag
+	sub pdata,1,null
+	nrtn positive
+	jam BT_EVT_LE_NOTIFY_ENABLE,mem_ipc_tx_evt
+	branch p_ipc_tx_evt
+endif
+
+//p_device_check_lock:
+//	fetch 2,mem_sdp_remote_cid
+//	branch app_put_lpm_wake_lock,blank
+//	branch app_get_lpm_wake_lock
+
+
+p_ipc_init:
+	setarg mem_ipc_2bt_fifo_head
+	byteswap pdata,pdata
+	store 2,mem_ipc_2bt_read_index
+	store 2,mem_ipc_2bt_write_index
+	setarg mem_ipc_2C51_fifo_head
+	byteswap pdata,pdata
+	store 2,mem_ipc_2C51_read_index
+	store 2,mem_ipc_2C51_write_index
+	rtn
+
+p_mouse_reconn_addr_calculate:
+	fetch 2,mem_mouse_eeprom_base
+	add pdata,0x1c,pdata
+	store 2,mem_mouse_reconn_addr
+	rtn
+
+p_device_init:
+	call le_modified_name_adv
+//	setarg p_device_check_lock
+//	store 2,mem_cb_check_wakelock
+	jam 0,mem_c51_flag
+	jam 6,mem_connection_options
+	call app_lpm_mult_enable
+ifdef HID	
+	setarg p_device_send_process
+	store 2,mem_cb_bt_process
+endif	
+//	setarg p_device_bt_lpm_before
+//	store 2,mem_cb_before_lpm
+	setarg p_c51_user_event
+	store 2,mem_cb_bb_event_process
+//	setarg p_device_idle
+//	store 2,mem_cb_idle_process
+	setarg p_user_le_connect_process
+//	setarg p_ipc_rx
+	store 2,mem_cb_le_process
+	setarg p_device_before_hibernate
+	store 2,mem_cb_before_hibernate
+	ncall p_ipc_init,wake
+	call p_device_wakeup,wake
+	call lpm_disable_exen_output
+
+ifdef P24G_YC
+	fetch 1,mem_le_init_eeprom_base_count
+	branch p_device_init_next,blank
+	increase -1,pdata
+	store 1,mem_le_init_eeprom_base_count
+	setarg 0x7f80
+	store 2,mem_mouse_eeprom_base
+	call p_mouse_reconn_addr_calculate
+else
+	fetch 1,mem_le_init_eeprom_base_count
+	branch p_device_init_next,blank
+	increase -1,pdata
+	store 1,mem_le_init_eeprom_base_count
+	setarg 0x3f80
+	store 2,mem_mouse_eeprom_base
+	call p_mouse_reconn_addr_calculate
+endif
+
+ifdef BLE_FAST_CONN_ENABLE
+	fetch 1,mem_le_reconn_flag
+	nbranch p_device_init_next,blank
+	fetch 1,mem_le_fast_conn_finished
+	nbranch p_device_init_next,blank
+	call p_mouse_init_environment
+endif
+p_device_init_next:
+	fetch 1,mem_hibernate_flag
+	beq 0x5a,p_device_init_init_hibwake
+	branch p_deveice_init_wake,wake
+ifdef TP_MAX
+	call power_ctrl_incrs_level2
+endif
+	fetch 1,mem_tx_power
+	store 1,mem_tx_power_temp
+	call power_ctrl_pac_succ_cnt_init
+	fetch 2,mem_adc_0v
+	byteswap pdata,pdata
+	store 2,mem_adc_0v
+	fetch 2,mem_adc_3v
+	byteswap pdata,pdata
+	store 2,mem_adc_3v
+	call p_init_adc_from_otp
+ifdef P24G_YC
+	call g24_set_device_addr
+endif	
+	fetch 8,mem_temp
+	nbranch p_deveice_init_reset,blank
+	fetch 2,0x4ad4
+	byteswap pdata,pdata
+	branch p_deveice_init_reset,blank
+	store 2,mem_adc_3v
+p_deveice_init_reset:
+	jam BT_EVT_RESET,mem_ipc_tx_evt
+p_device_init_common:
+	fetch 1,mem_short_lpm_enable
+	nbranch p_24g_short_lpm_process,blank
+	call p_adc_check_process
+	call p_ipc_tx_evt
+	call p_ipc_rx_ble_data
+	hjam START_C51_CORE,core_docd_ctrl	
+	rtn
+p_24g_short_lpm_process:
+	call lpm_recover_clk,wake
+	arg param_rx_setup,timeup
+	until clkn_rt,meet
+	copy clkn_bt,pdata
+	store 3,mem_ckln_24g_short_lpm
+p_24g_short_lpm_process_loop:
+	fetch 2,mem_ui_state_map
+	rtnbit1 UI_STATE_BLE_ADV
+	rtnbit1 UI_STATE_BT_DISCOVERY
+	call app_process_idle
+	call g24_short_lpm_transmit_process
+	branch p_24g_short_lpm_process_loop
+
+p_device_wakeup:
+	copy auxcnt,pdata
+	bmark0 mark_24g,p_device_bt_wakeup
+g24_delay_long_sleep:
+//	copy auxcnt,pdata
+	branch g24_direct_long_sleep,blank	//sleep timer wake
+g24_delay_long_sleep2:	
+	jam 0xbb,mem_new_24g_delay_long_sleep_maxcnt		//io int wake,abort 150ms
+	rtn
+g24_direct_long_sleep:
+	jam 0x00,mem_new_24g_delay_long_sleep_maxcnt
+	fetch 1,mem_new_24g_key_wheel_event
+	rtn blank
+	jam 0,mem_new_24g_key_wheel_event
+	branch g24_delay_long_sleep2
+
+p_device_bt_wakeup:
+//	copy auxcnt,pdata
+	branch p_device_bt_wakeup_check,blank	//sleep timer wake
+	jam 2,mem_bt_wakeup_from_long_mult
+	rtn
+p_device_bt_wakeup_check:
+	fetch 1,mem_bt_motion_event
+	rtn blank
+	jam 0,mem_bt_motion_event
+	jam 1,mem_bt_wakeup_from_long_mult
+	rtn
+	
+p_deveice_init_wake:
+	jam BT_EVT_WAKEUP,mem_ipc_tx_evt
+	branch p_device_init_common
+p_device_init_init_hibwake:
+	copy auxcnt,pdata
+	branch p_enter_hibernate_continue,blank
+	call init_lmp_work
+	call l2cap_init_work
+	setarg 0
+	store 8,mem_context
+	store 2,mem_ui_state_map
+	store 2,mem_ipc_bt_timer
+	store 2,mem_ipc_c51_timer
+	jam BT_EVT_HIBERNATE_WAKE,mem_ipc_tx_evt
+	branch p_device_init_common
+
+p_init_adc_from_otp:
+	call otp_enable_chgpump
+	setarg 0x7e2
+	arg mem_temp,rega
+	arg 12,temp
+	call otpd_read_data
+	call otp_disable_chgpump
+	fetch 8,mem_temp
+	rtn blank
+	fetch 1,mem_adc_config_flag
+ifdef ADC_VINLPM
+	bbit1 ADC_CONFIG_VINLPM,p_calc_adc_base_vinlpm
+endif
+ifdef ADC_HVIN
+	bbit1 ADC_CONFIG_HVIN,p_calc_adc_base_hvin
+endif
+ifdef ADC_GPIO
+	bbit1 ADC_CONFIG_GPIO,p_calc_adc_check_gpio
+endif
+	rtn
+
+ifdef ADC_VINLPM	
+p_calc_adc_base_vinlpm:
+	fetcht 2,mem_temp+4
+	fetch 2,mem_temp+10
+	copy temp,regb
+	copy pdata,rega
+	byteswap pdata,pdata
+	store 2, mem_adc_3v
+	copy rega,pdata
+	isub temp,regc
+	lshift regc,regc
+	copy regb,pdata
+	isub regc,pdata
+	byteswap pdata,pdata
+	store 2,mem_adc_0v
+	rtn
+endif
+
+ifdef ADC_HVIN
+p_calc_adc_base_hvin:
+	fetcht 2,mem_temp + 2
+	fetch 2,mem_temp + 8
+	copy temp,regb
+	copy pdata,rega
+	isub temp,regc
+	rshift2 regc,regc
+	copy regb,pdata
+	isub regc,pdata
+	byteswap pdata,pdata
+	store 2,mem_adc_0v
+	lshift regc,regc
+	copy rega,pdata
+	isub regc,pdata
+	byteswap pdata,pdata
+	store 2,mem_adc_3v
+	rtn
+endif
+
+ifdef ADC_GPIO
+p_calc_adc_check_gpio:
+	fetcht 2,mem_temp
+	fetch 2,mem_temp + 6
+	copy temp,regb
+	copy pdata,rega
+	isub temp,regc
+	copy regb, pdata
+	isub regc,pdata
+	byteswap pdata,pdata
+	store 2,mem_adc_0v
+	lshift2 regc,pdata
+	iadd rega,pdata
+	byteswap pdata,pdata
+	store 2,mem_adc_3v
+	rtn
+endif	
+	
+ifdef HID
+p_device_send_process:
+	call l2cap_malloc_is_fifo_nearly_full
+	nrtn blank
+p_device_send_data:
+	branch p_ipc_rx
+endif
+
+p_device_before_hibernate: 
+	enable user
+	hfetch 4,0x8138
+	setflag user,26,pdata
+	hstore 4,core_lpm_reg
+	call lpm_write_ctrl
+	jam 1,mem_lpm_current_mult
+p_device_bt_lpm_before:
+	rtn
+
+//p_device_idle:
+//	rtn
+
+p_c51_user_event:
+	copy regc,pdata
+	and_into BT_EVT_TIMER_MASK,pdata
+	rtneq BT_EVT_TIMER_INIT
+	copy regc,pdata
+	store 1,mem_ipc_tx_evt
+	branch p_ipc_tx_evt
+
+
+ifdef P24G_YC
+g24_pair_init:
+	jam 0,mem_new_24g_pid
+	jam G24_PAIR_CH,mem_new_24g_ch
+	fetch 4,mem_new_24g_paring_addr
+g24_update_addr_and_synccrc8:	
+	store 4,mem_new_24g_addr
+	branch g24_syncword_crc8
+		
+//2.4g freq hop related.
+g24_ch:
+	fetcht 1,mem_new_24g_current_ch_number
+	call g24_ch_calc
+	increase 1,temp
+	and_into 3,temp //map size =4
+	storet 1,mem_new_24g_current_ch_number
+	rtn
+	
+g24_ch_calc:
+	fetch 1,mem_new_24g_addr	
+	and_into 0x03,pdata
+	mul32 pdata,4,rega			//24addr low bit0 bit1 ,00-map1,01-map2,10-map3,11-map4
+	setarg mem_new_24g_ch_map1
+	iadd rega,pdata
+	iadd temp,contr
+	ifetch 1,contr
+	store 1,mem_new_24g_ch
+	rtn
+
+g24_set_device_addr:
+	fetch 4,mem_temp	//adc data from otp
+	store 4,mem_new_24g_device_addr	
+	nrtn blank
+	fetch 4,mem_lap
+	store 4,mem_new_24g_device_addr
+	rtn
+
+
+g24_transmit_rf_sta_init:
+	jam 1,mem_new_24g_rf_last_sta
+	jam 0,mem_new_24g_sync_cnt
+g24_transmit_rf_ctrl_clear:	
+	fetch 1,mem_new_24g_data_type
+	and_into bits_data,pdata
+	store 1,mem_new_24g_data_type
+	rtn
+	
+g24_hop_ch_enable:
+	fetch 1,mem_new_24g_data_type
+	set1 bit_hop,pdata
+	store 1,mem_new_24g_data_type
+	//update txpayload
+	store 1,mem_new_24g_txpayload
+	rtn
+g24_hop_ch_disable:
+	fetch 1,mem_new_24g_data_type
+	set0 bit_hop,pdata
+	store 1,mem_new_24g_data_type
+	rtn	
+
+g24_transmit_hop_pac_fail:
+	call power_ctrl_pac_succ_decrs
+	fetch 1,mem_new_24g_rf_work_stage
+	beq 1,g24_transmit_hop_pac_fail_wo_hop
+	beq 2,g24_transmit_hop_pac_fail_hop_stage2
+	rtn
+g24_transmit_hop_pac_fail_wo_hop:
+	jam 2,mem_new_24g_sync_cnt
+g24_transmit_hop_pac_fail_stage1:	
+	jam 0,mem_new_24g_hop_pac_retry
+	jam 0,mem_new_24g_rf_last_sta
+	branch g24_transmit_rf_ctrl_clear
+
+g24_transmit_hop_pac_fail_hop_stage2:
+	jam 0,mem_new_24g_rf_hop_ch
+	branch g24_transmit_hop_pac_fail_stage1
+
+g24_transmit_pac_fail_hop_stage3:
+	fetch 2,mem_new_24g_txfail_cnt
+	increase 1,pdata
+	store 2,mem_new_24g_txfail_cnt
+	bbit1 10,g24_tx_attempt_fail	//1024ms * 8
+	fetch 1,mem_new_24g_rf_hop_ch
+	beq 1,g24_rf_hop_fastly
+	jam 1,mem_new_24g_rf_hop_ch
+g24_rf_hop_attemp_again:
+	fetch 1,mem_new_24g_rf_hop_ch
+	bne 1,g24_transmit_rf_ctrl_clear
+g24_rf_hop_fastly:
+	fetch 1,mem_new_24g_hop_fastly_cnt
+	increase 1,pdata
+	store 1,mem_new_24g_hop_fastly_cnt
+	beq 4,g24_rf_hop_fastly_exit
+	call g24_ch
+	jam 2,mem_new_24g_max_retry
+	branch g24_transmit_packet
+
+g24_rf_hop_fastly_exit:
+	call power_ctrl_pac_succ_decrs
+	jam 0,mem_new_24g_hop_fastly_cnt
+	branch g24_transmit_rf_ctrl_clear
+
+g24_transmit_hop_pac_succ_wo_hop:
+	jam 2,mem_new_24g_sync_cnt
+g24_transmit_hop_pac_succ:
+	jam 1,mem_new_24g_rf_last_sta
+	jam 0,mem_new_24g_rf_hop_ch
+	branch g24_transmit_rf_ctrl_clear
+
+g24_transmit_succ_rf_config:
+	fetch 1,mem_new_24g_rf_work_stage
+	beq 3,g24_transmit_hop_pac_succ
+	fetch 1,mem_new_24g_data_type
+	isolate0 bit_hop,pdata
+	branch g24_transmit_rf_sta_init,true
+	fetch 1,mem_new_24g_rf_work_stage
+	beq 1,g24_transmit_hop_pac_succ_wo_hop
+	beq 2,g24_transmit_hop_pac_succ
+	rtn
+
+g24_rf_sta_check:
+	fetch 1,mem_new_24g_pairing_sm
+	rtnne STATE_24G_PAIRING_SUCCESS
+	call g24_rf_laststa_synccnt_check
+	ncall g24_rf_sync_cnt_check,user2
+	rtn
+
+g24_rf_laststa_synccnt_check:
+	disable user2
+	fetch 1,mem_new_24g_rf_last_sta
+	rtnne 1
+	fetch 1,mem_new_24g_sync_cnt
+	rtnne 0
+	jam 1,mem_new_24g_rf_work_stage
+	jam 4,mem_new_24g_max_retry
+	branch enable_usr2
+
+g24_rf_sync_cnt_check:
+	fetch 1,mem_new_24g_sync_cnt
+	branch g24_rf_hop_attemp,blank
+	increase -1,pdata
+	store 1,mem_new_24g_sync_cnt
+	jam 2,mem_new_24g_rf_work_stage
+	call g24_ch
+	jam 4,mem_new_24g_max_retry
+	rtn
+
+g24_rf_hop_attemp:
+	jam 3,mem_new_24g_rf_work_stage
+	fetch 1,mem_new_24g_rf_hop_ch
+	nbranch g24_rf_hop_attemp_again,blank
+	call g24_ch
+	jam 2,mem_new_24g_max_retry
+	rtn
+	
+
+g24_transmit_process:
+	rtnmark0 mark_24g
+	set1 mark_24g_conext,mark
+	fetcht 4,mem_new_24g_tx_btclk
+	copy clkn_bt,pdata
+	isub temp,null
+	ncall g24_timer_timeout,positive
+	copy pdata,regb
+	fetch 4,mem_new_24g_tx_btclk
+	fetcht 1,mem_new_24g_interval
+	iadd temp,temp
+	copy regb,pdata
+	isub temp,null
+	nbranch g24_transmit_exit,positive
+	set0 28,pdata
+	store 4,mem_new_24g_tx_btclk
+	call g24_interval_calibrate
+	call g24_txdata_prep
+	branch g24_no_data_to_tx,user
+	call g24_rf_sta_check
+g24_transmit_start:
+	call g24_transmit_packet
+	fetch 1,mem_new_24g_pairing_sm
+	sub pdata,STATE_24G_PAIRING_SUCCESS,null
+	call power_ctrl_start,zero
+g24_transmit_exit:
+	set0 mark_24g_conext,mark
+	rtn
+
+g24_timer_timeout:
+	rtn zero
+	set1 28,pdata
+	rtn
+
+g24_interval_calibrate:
+	fetch 1,mem_new_24g_pac_index
+	increase 1,pdata
+	store 1,mem_new_24g_pac_index
+	beq 4,g24_interval_max
+	beq 5,g24_interval_min
+	rtn
+g24_interval_max:
+	fetch 1,mem_new_24g_interval_max
+	store 1,mem_new_24g_interval
+	rtn
+g24_interval_min:
+	jam 0,mem_new_24g_pac_index
+	fetch 1,mem_new_24g_interval_min
+	store 1,mem_new_24g_interval
+	rtn
+
+	
+g24_txdata_prep:
+	fetch 1,mem_new_24g_pairing_sm
+	bne STATE_24G_PAIRING_SUCCESS,g24_pairing_sm	
+	//nop 1200 // wait for 8051 preparing data
+	call p_ipc_rx
+	branch g24_txdata_prep_ipc_nodata,user
+	fetch 1,mem_ipc_rx_type
+	bne IPC_TYPE_24G,enable_usr
+g24_txdata_prep_packeage_data:
+ifdef OTA_ENABLE
+	fetch 1,mem_new_24g_ota_enable
+	beq 1,g24_txdata_skip_short_lpm
+endif	
+	fetch 1,mem_short_data_wheel
+	call g24_lpm_short_increase,blank
+g24_txdata_skip_short_lpm:
+	fetch 1,mem_short_data_wheel
+	ncall g24_enter_long_sleep,blank
+	call g24_package_data
+	call g24_transmit_prep
+g24_txdata_enable_tx:
+	jam ENSURE_ON_24G,mem_new_24g_ensure
+	rtn
+
+g24_enter_long_sleep:
+	jam 0,mem_short_lpm_tx_cnt
+	jam 0,mem_short_lpm_enable
+	jam 10,mem_new_24g_enter_lpm_timer
+	rtn
+	
+g24_txdata_prep_ipc_nodata:
+	fetch 1,mem_short_lpm_enable
+	nbranch g24_short_lpm_txdata_prep,blank
+g24_txdata_last_pac:
+	fetch 1,mem_new_24g_ensure
+	beq ENSURE_ON_24G,disable_usr
+	rtn
+
+
+g24_short_lpm_txdata_prep:
+g24_package_data:
+	fetch 1,mem_new_24g_delay_long_sleep_maxcnt
+	store 1,mem_new_24g_delay_long_sleep_cnt
+
+	fetch 1,mem_new_uart_packet
+	copy pdata,rega
+	arg mem_new_uart_packet+1,regb
+	jam 0,mem_new_24g_abort_pac
+g24_package_data_pc_bind:
+	call g24_transmit_rf_ctrl_clear
+	store 1,mem_new_24g_common_temp
+	//total length
+	add rega,1,temp
+	arg mem_new_24g_common_temp+1,contw
+g24_package_user_data:
+	//user data: max 30 bytes
+	copy rega,loopcnt
+	copy regb,contr
+	call memcpy
+	arg mem_new_24g_common_temp,rega
+g24_put_data_in_buff:
+	rtnmark0 mark_24g_conext
+	storet 1,mem_new_24g_datalen
+	copy temp,loopcnt
+	arg mem_new_24g_txbuf,contw
+	copy rega,contr
+	branch memcpy
+
+
+//output: 1BYTE crc8
+g24_syncword_crc8:
+	arg 0,rega
+	arg 4,loopcnt
+	arg mem_new_24g_addr,contr
+g24_syncword_crc8_loop:
+	ifetch 1,contr
+	iadd rega,rega
+	loop g24_syncword_crc8_loop
+	copy rega,pdata
+	store 2,mem_new_24g_syncword
+	fetch 1,mem_new_24g_syncword
+	fetcht 1,mem_new_24g_syncword+1
+	iadd temp,pdata
+	store 1,mem_new_24g_syncword_crc8
+	rtn
+
+g24_transmit_prep:
+ifdef P24G_LOG
+	fetch 1,mem_new_24g_paccnt
+	increase 1,pdata
+	store 1,mem_new_24g_paccnt
+endif
+// total length
+	fetch 1,mem_new_24g_datalen
+	increase 2,pdata
+	store 1,mem_new_24g_txlen
+// data type
+	fetch 1,mem_new_24g_data_type
+	store 1,mem_new_24g_txpayload
+//prepare 5bit payload length, 2bit PID, 1bit NO_ACK
+	fetch 1,mem_new_24g_datalen
+	lshift3 pdata,pdata
+	fetcht 1,mem_new_24g_pid
+	and temp,0x03,temp
+	lshift temp,temp
+	ior temp,pdata
+	fetcht 1,mem_new_24g_no_ack
+	iadd temp,pdata
+	istore 1,contw
+//prepare payload data
+	fetch 1,mem_new_24g_datalen
+	iforce loopcnt
+	arg mem_new_24g_txbuf,contr
+	branch memcpy
+
+g24_send_abort_packet:
+	jam 1,mem_new_24g_abort_pac
+	jam 0,mem_new_24g_rf_hop_ch
+	call g24_transmit_rf_ctrl_clear
+	store 1,mem_new_24g_common_temp
+	setarg 0
+	store 7,mem_new_24g_common_temp+1
+	fetch 4,mem_new_24g_device_addr
+	store 4,mem_new_24g_common_temp+8
+	arg 12,temp
+	arg mem_new_24g_common_temp,rega
+	call g24_put_data_in_buff
+	fetch 1,mem_new_24g_data_type
+	set1 bit_abort,pdata
+	store 1,mem_new_24g_data_type
+	call g24_transmit_prep
+	call g24_txdata_enable_tx
+	branch g24_transmit_start
+
+g24_no_data_to_tx:
+	fetch 1,mem_short_lpm_enable
+	branch g24_no_data_to_tx_short_lpm_disable,blank
+	call g24_lpm_short_decrease
+	branch g24_short_lpm_sleep
+	
+g24_no_data_to_tx_short_lpm_disable:
+ifdef OTA_ENABLE
+	fetch 1,mem_new_24g_ota_enable
+	rtneq 1
+endif	
+	fetch 1,mem_new_24g_abort_pac
+	branch g24_send_abort_packet,blank
+	fetcht 1,mem_new_24g_delay_long_sleep_cnt
+	increase 1,temp
+	storet 1,mem_new_24g_delay_long_sleep_cnt
+	fetch 1,mem_new_24g_delay_long_sleep_maxcnt
+	isub temp,null
+	rtn positive
+	jam 0,mem_new_24g_delay_long_sleep_cnt
+g24_lpm_long_sleep:
+	call p_check_ipc_for_lpm
+	nrtn user
+	fetch 1,mem_c51_lmp_lock
+	nrtn blank
+	fetch 1,mem_new_24g_enter_lpm_timer
+	nrtn blank
+	jam 0,mem_short_data_wheel
+	call lpo_calibration
+	fetch 3,mem_clks_per_lpo
+	rtn blank
+	fetch 8,mem_new_24g_enter_hibernate
+	call clk2lpo
+	storet 4,mem_sleep_counter
+  	branch lpm_sleep
+
+g24_lpm_short_increase:
+	fetch 1,mem_wakup_from_power_flag
+	isolate0 2,pdata
+	branch g24_lpm_short_increase_poweron,true
+	fetch 1,mem_short_lpm_tx_cnt
+	rtneq 5
+	increase 1,pdata
+	store 1,mem_short_lpm_tx_cnt
+	rtnne 5
+g24_lpm_short_enable:	
+	jam 1,mem_short_lpm_enable
+	rtn
+
+g24_lpm_short_increase_poweron:		//wait for lpo_calibration completely
+	fetch 1,mem_short_lpm_tx_cnt
+	rtneq 20
+	increase 1,pdata
+	store 1,mem_short_lpm_tx_cnt
+	rtnne 20
+	fetch 1,mem_wakup_from_power_flag
+	set1 2,pdata
+	store 1,mem_wakup_from_power_flag
+	branch g24_lpm_short_enable
+
+g24_lpm_short_decrease:
+	fetch 1,mem_short_lpm_tx_cnt
+	rtn blank
+	increase -1,pdata
+	store 1,mem_short_lpm_tx_cnt
+	nrtn blank
+	jam 0,mem_short_lpm_enable
+	rtn
+	
+g24_short_lpm_transmit_process:
+	set1 mark_24g_conext,mark
+	call p_ipc_rx
+	branch g24_short_lpm_transmit_process_ipc_nodata,user
+	fetch 1,mem_ipc_rx_type
+	beq IPC_TYPE_24G,g24_short_lpm_txdata_data_ready
+g24_short_lpm_transmit_process_ipc_nodata:
+	fetch 1,mem_send_data_24g_short_lpm
+	beq SHORT_LPM_STATE_DATA,g24_short_lpm_txdata_prep_buff_data
+	beq SHORT_LPM_STATE_NODATA,g24_no_data_to_tx
+	beq SHORT_LPM_STATE_BUTTON_WHEEL,g24_short_lpm_transmit_process_button_wheel
+	rtn
+
+g24_short_lpm_transmit_process_button_wheel:
+	jam 0,mem_short_lpm_tx_cnt
+	jam 0,mem_short_lpm_enable
+g24_short_lpm_txdata_prep_buff_data:
+ifdef OTA_ENABLE
+	fetch 1,mem_new_24g_ota_enable
+	beq 1,g24_ota_exit_short_lpm_sleep
+endif
+	call g24_lpm_short_increase
+	jam 0,mem_send_data_24g_short_lpm
+	arg 7,loopcnt
+	copy loopcnt,pdata
+	store 1,mem_new_uart_packet
+	arg mem_hid_buff,contr
+	call memcpy
+	disable user
+g24_short_lpm_txdata_data_ready:
+	call g24_txdata_prep_packeage_data
+	call g24_rf_sta_check
+	call g24_transmit_packet
+	call power_ctrl_start
+g24_short_lpm_sleep:
+	call lpo_calibration
+	fetch 3,mem_clks_per_lpo
+	rtn blank
+	fetch 1,mem_lpm_mode
+	rtn blank
+	fetch 1,mem_short_data_wheel
+	beq 1,g24_short_lpm_sleep2
+	setarg 0
+	store 8,mem_gpio_wakeup_low
+g24_short_lpm_sleep2:
+	call g24_short_lpm_select_param
+	arg param_rx_setup,timeup
+	until clkn_rt,meet
+	fetcht 3,mem_ckln_24g_short_lpm
+	copy clkn_bt,pdata
+	isub temp,pdata
+	and_into 0xff,pdata
+	arg 3750,temp		//312.5 x 12  = 1875
+	imul32 temp,temp  // btclk to system clk @ 12MHz
+	fetch 4,mem_short_lpm_interval_param
+	isub temp,pdata	//8ms - PassedTime
+	branch lpm_dispatch_sleep,positive
+	fetch 1,mem_lpm_xtalcnt // sleep the shortest time
+	increase 1,pdata
+	store 4,mem_sleep_counter
+	branch lpm_dispatch_sleep+7
+g24_short_lpm_select_param:
+	setarg G24_8125_INTERVAL_PARAM
+	store 4,mem_short_lpm_interval_param
+	fetch 1,mem_short_lpm_interval_cnt
+	increase 1,pdata
+	bne 5,g24_short_lpm_select_param_cont
+	setarg 0
+g24_short_lpm_select_param_cont:
+	store 1,mem_short_lpm_interval_cnt
+	rtnbit0 0
+	setarg G24_78125_INTERVAL_PARAM
+	store 4,mem_short_lpm_interval_param
+	rtn
+
+ifdef OTA_ENABLE
+g24_ota_exit_short_lpm_sleep:
+	jam 0,mem_short_lpm_tx_cnt
+	jam 0,mem_short_lpm_enable
+	branch g24_short_lpm_sleep
+endif
+
+g24_transmit_packet:
+	jam 0,mem_new_24g_retry
+g24_transmit_loop:
+	arg param_rx_setup,timeup
+	until clkn_rt,meet
+	call g24_transmit_receive_ack
+	fetch 1,mem_new_24g_no_ack	//tx noack
+	rtneq no_ack_24g
+	nbranch g24_retransmit,sync
+	nbranch g24_retransmit,user3
+	call g24_ackpayload_parse
+	call power_ctrl_pac_succ_incrs
+g24_transmit_next_packet:
+	fetch 1,mem_new_24g_pid
+	increase 1,pdata
+	store 1,mem_new_24g_pid
+	fetch 1,mem_new_24g_pairing_sm
+	bne STATE_24G_PAIRING_SUCCESS,g24_paring_mode_start
+	call g24_transmit_succ_rf_config
+g24_transmit_abandon:
+	setarg 0
+	store 2,mem_new_24g_txfail_cnt
+	store 1,mem_new_24g_get_ack_fail
+	store 1,mem_new_24g_hop_pac_retry
+	jam ENSURE_OFF_24G,mem_new_24g_ensure
+	rtn
+g24_paring_mode_start:
+	call power_ctrl_pac_succ_cnt_init
+	branch g24_paring_mode
+
+g24_transmit_receive_ack:
+	disable user3
+	call g24_transmit
+	fetch 1,mem_new_24g_no_ack
+	beq no_ack_24g,g24_transmit_no_ack	//tx no ack
+	force 0,radio_ctrl
+	fetch 4,mem_new_24g_addr
+	iforce access
+	fetcht 1,mem_last_freq
+	call set_freq_rx
+	call rf_rx_enable
+	call g24_receive_rxon
+	call g24_end_of_packet,user3
+	rtn
+g24_transmit_no_ack:
+	call g24_end_of_packet
+	branch g24_transmit_next_packet
+
+g24_retransmit:
+	fetch 1,mem_new_24g_get_ack_fail
+	increase 1,pdata
+	store 1,mem_new_24g_get_ack_fail
+	fetch 1,mem_new_24g_pairing_sm
+	bne STATE_24G_PAIRING_SUCCESS,g24_tx_paring_retry
+	fetcht 1,mem_new_24g_retry
+	increase 1,temp
+	storet 1,mem_new_24g_retry
+	fetch 1,mem_new_24g_max_retry
+	isub temp,pdata
+	nbranch g24_transmit_loop,blank
+	fetch 1,mem_new_24g_rf_work_stage
+	beq 3,g24_transmit_pac_fail_hop_stage3
+	fetch 1,mem_new_24g_hop_pac_retry
+	increase 1,pdata
+	store 1,mem_new_24g_hop_pac_retry
+	beq 2,g24_transmit_hop_pac_fail
+	call g24_hop_ch_enable
+	jam 1,mem_new_24g_max_retry
+	branch g24_transmit_packet
+
+g24_tx_paring_retry:
+	fetch 1,mem_new_24g_get_ack_fail
+	rtnne 0xff
+	jam 0,mem_new_24g_get_ack_fail
+	branch g24_stop_24g_mode
+
+g24_tx_attempt_fail:
+	setarg 0
+	store 2,mem_new_24g_txfail_cnt
+	jam 0,mem_lpm_mode
+	jam 0,mem_short_lpm_tx_cnt
+	jam 0,mem_short_lpm_enable
+g24_stop_24g_mode:
+	jam BT_EVT_24G_ATTEMPT_FAIL,mem_ipc_tx_evt
+	branch p_ipc_tx_evt
+
+g24_ackpayload_parse:
+	call g24_read_len_pid_crc
+	fetch 1,mem_new_24g_rxdata_length	//ack payload length 
+	rtn blank
+	iforce loopcnt
+	arg mem_new_24g_rxbuf+2,contr
+	arg mem_new_24g_rxpayload,contw	//ack payload buffer 
+	branch memcpy
+
+g24_read_len_pid_crc:
+//read control
+	fetch 1,mem_new_24g_rxbuf+1
+	rshift3 pdata,pdata
+	store 1,mem_new_24g_rxdata_length
+//get crc
+	increase 1,pdata
+	arg mem_new_24g_rxbuf+1,contr
+	iadd contr,contr
+	ifetch 3,contr
+	store 3,mem_new_24g_sta_crc
+//read pid
+	fetch 1,mem_new_24g_rxbuf+1
+	rshift pdata,pdata
+	and pdata,0x03,pdata
+	store 1,mem_new_24g_sta_pid
+	rtn
+
+
+g24_prep:
+	disable enable_crc
+	disable enable_white
+	setarg 0x555555
+	iforce crc24_init
+	fetch 1,mem_new_24g_ch
+	reverse pdata,temp
+	set1 1,temp
+	rshift temp,white_init	
+	rtn
+
+g24_set_freq_tx:
+	call set_sync_on
+	fetcht 1,mem_new_24g_ch
+	branch set_freq_tx
+
+g24_transmit:
+	call le_enable
+	fetch 4,mem_new_24g_addr
+	iforce access
+	call g24_prep
+	call g24_set_freq_tx
+	set1 TXGFSK,radio_ctrl
+	enable encode_fec0
+	enable is_tx
+	disable is_rx
+	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_new_24g_syncword_crc8
+	inject mod,8
+	
+	fetch 1,mem_new_24g_txlen
+	iforce loopcnt
+	arg mem_new_24g_txpayload,contr
+g24tr_loop:
+	ifetch 1,contr
+	inject mod,8
+	loop g24tr_loop
+ifdef P24G_LOG	
+	fetch 1,mem_tx_power
+	inject mod,8
+	fetch 1,mem_rssi_avg_received
+	inject mod,8
+	fetch 1,mem_new_24g_paccnt
+	inject mod,8
+endif	
+	enable enable_parity
+	inject mod,24	//crc
+	disable enable_parity
+	until null,tx_clear
+	nop 100
+	disable encode_fec0
+	disable encode_fec1
+	rtn
+
+g24_receive_packet:
+	call le_enable
+	fetch 4,mem_new_24g_addr
+	iforce access
+	call set_sync_on
+	fetcht 1,mem_new_24g_ch
+	call set_freq_rx
+	setarg param_pll_setup
+	call sleep
+	call rf_rx_enable
+g24_receive_rxon:
+	call g24_prep
+	disable user3
+	enable decode_fec0	
+	enable is_rx
+	disable is_tx
+	enable swfine
+	fetch 2,mem_new_24g_rx_window
+	iforce stop_watch
+	correlate null,timeout
+	nbranch g24_sync_timeout,sync
+	disable decode_fec0
+	enable decode_fec1
+	enable enable_white
+	enable enable_crc
+
+	parse demod,bucket,8
+	rshift3 pwindow,pdata
+	store 1,mem_new_24g_get_syncword_crc8
+	call g24_syncword_crc8
+	fetcht 1,mem_new_24g_get_syncword_crc8
+	isub temp,null
+	nbranch g24_end_of_packet,zero
+
+	parse demod,bucket,8
+	rshift3 pwindow,pdata
+	store 1,mem_new_24g_rxbuf	//device id
+	fetch 1,mem_new_24g_mode
+	sub pdata,rx_24g,null
+	branch g24_receive_skip,zero
+	fetch 1,mem_new_24g_rxbuf
+	fetcht 1,mem_new_24g_data_type
+	icompare bits_data,temp
+	nbranch g24_end_of_packet,true
+g24_receive_skip:
+	parse demod,bucket,8
+	rshift3 pwindow,pdata
+	istore 1,contw
+	rshift3 pdata,pdata
+	and pdata,0x1f,loopcnt	//max payload: 32bytes
+	branch g24rx_nopayload,zero
+g24rx_loop:
+	parse demod,bucket,8
+	rshift3 pwindow,pdata
+	istore 1,contw
+	loop g24rx_loop
+g24rx_nopayload:
+	//receive rssi hex
+	copy contw,rega
+	parse demod,bucket,8
+	rshift3 pwindow,pdata
+	store 1,mem_rssi_hex_received
+	copy rega,contw
+	
+	parse demod,bucket,24
+	enable swfine
+	arg param_sifs,stop_watch
+	rshift32 pdata,pdata
+	rshift16 pdata,pdata
+	istore 3,contw
+	disable decode_fec1
+	branch g24_end_of_packet,crc_failed
+	enable user3
+	fetch 1,mem_last_freq
+	add pdata,0,rega
+	call rf_write_freq
+	disable decode_fec0
+	call set_sync_on
+	fetch 1,mem_rssi_hex_received
+	copy pdata,rega
+	branch rssi_signal
+
+g24_end_of_packet:
+	disable encode_fec1
+	disable decode_fec1
+	branch end_of_packet
+
+g24_sync_timeout:
+	branch g24_end_of_packet
+
+power_ctrl_pac_succ_cnt_init:
+	jam 1,mem_power_ctrl_level
+	jam 0,mem_power_ctrl_pac_succ_cnt
+	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
+	rtn
+power_ctrl_pac_succ_decrs:
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	sub pdata,1,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 2,mem_power_ctrl_pac_succ_cnt
+	rtn
+
+power_ctrl_start:
+ifdef TP_MAX
+	rtn
+endif
+	arg mem_rssi_signal_buf,rega
+	call rssi_average
+	storet 1,mem_rssi_avg_received
+	isolate1 mark_24g,mark
+	call power_ctrl_24g_dis_max,true
+	ncall power_ctrl_le_dis_max,true
+	isub temp,null
+	nbranch power_ctrl_txpower_incrs,positive
+
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	sub pdata,1,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_24g_dis_max:
+	setarg RSSI_DIS_MAX_24G
+	rtn
+power_ctrl_24g_dis_min:
+	setarg RSSI_DIS_MIN_24G
+	rtn	
+power_ctrl_le_dis_max:
+	setarg RSSI_DIS_MAX_BLE
+	rtn
+power_ctrl_le_dis_min:
+	setarg RSSI_DIS_MIN_BLE
+	rtn
+	
+power_ctrl_txpower_decrs_check:
+	fetch 1,mem_power_ctrl_pac_succ_cnt
+	rtnne 70
+	jam 0,mem_power_ctrl_pac_succ_cnt
+power_ctrl_txpower_decrs:
+	fetcht 1,mem_rssi_avg_received
+	isolate1 mark_24g,mark
+	call power_ctrl_24g_dis_min,true
+	ncall power_ctrl_le_dis_min,true
+	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
+	hjam 0xd0,0x8955
+	hjam 0xe0,0x8956
+	hjam 0x4c,0x8957
+	hjam 0x6c,0x8958
+	hjam 0x50,0x8959
+	jam 0x01,mem_tx_power
+	rtn
+	
+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
+	hjam 0xd0,0x8955
+	hjam 0xe0,0x8956
+	hjam 0x4c,0x8957
+	hjam 0x3c,0x8958
+	hjam 0x10,0x8959
+	jam 0x04,mem_tx_power
+	rtn
+	
+power_ctrl_decrs_level0: //-5dBm
+	hjam 0xd0,0x8955
+	hjam 0xc0,0x8956
+	hjam 0x4c,0x8957
+	hjam 0x6c,0x8958
+	hjam 0x50,0x8959	
+	jam 0x10,mem_tx_power
+	rtn
+	
+rssi_signal:
+	fetcht 1,mem_rssi_signal_index
+	setarg mem_rssi_signal_buf
+	iadd temp,contw
+	copy rega,pdata
+	istore 1,contw
+	increase 1,temp
+	and_into RSSI_BUF_LEN,temp
+	storet 1,mem_rssi_signal_index
+	rtn
+rssi_average:
+	arg 0,temp
+	arg RSSI_BUF_LEN+1,loopcnt
+	copy rega,contr
+rssi_average_loop:	
+	ifetch 1,contr
+	iadd temp,temp
+	loop 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
+
+
+g24_start_pairing_sm1:
+	set1 mark_24g,mark
+	call g24_pair_init
+g24_set_pairing_sm_1:
+	jam STATE_24G_PAIRING_1,mem_new_24g_pairing_sm
+	rtn
+
+g24_pairing_sm:
+	fetch 1,mem_new_24g_ensure
+	beq ENSURE_ON_24G,disable_usr
+	fetch 1,mem_new_24g_pairing_sm
+	beq STATE_24G_PAIRING_1,g24_pairing_sm_1
+	beq STATE_24G_PAIRING_2,g24_pairing_sm_2
+	beq STATE_24G_PAIRING_3,g24_pairing_sm_3
+	branch assert
+
+g24_pairing_sm_1:
+	jam STATE_24G_PAIRING_1_WAITING_ACK,mem_new_24g_pairing_sm
+	jam 0xaa,mem_new_24g_common_temp
+	branch g24_pairing_sm_common
+g24_pairing_sm_2:
+	jam STATE_24G_PAIRING_2_WAITING_ACK,mem_new_24g_pairing_sm
+	jam 0x55,mem_new_24g_common_temp
+	branch g24_pairing_sm_common
+g24_pairing_sm_3:
+	jam STATE_24G_PAIRING_3_WAITING_ACK,mem_new_24g_pairing_sm
+	jam 0x22,mem_new_24g_common_temp
+g24_pairing_sm_common:
+	fetch 1,mem_new_24g_data_type
+	and_into bits_data,pdata
+	store 1,mem_new_24g_common_temp+1
+	fetch 4,mem_new_24g_device_addr
+	store 4,mem_new_24g_common_temp+2
+g24_put_pairing_data_in_buff:
+	jam 0,mem_new_24g_common_temp+6
+	arg mem_new_24g_common_temp,rega
+	arg 7,temp
+	call g24_put_data_in_buff	
+	call g24_transmit_prep
+	call g24_txdata_enable_tx
+	branch disable_usr
+
+g24_paring_mode:
+	fetch 1,mem_new_24g_pairing_sm
+	rtneq STATE_24G_PAIRING_SUCCESS
+	beq STATE_24G_PAIRING_1_WAITING_ACK,g24_pairing_sm_1_waiting_ack
+	beq STATE_24G_PAIRING_2_WAITING_ACK,g24_pairing_sm_2_waiting_ack
+	beq STATE_24G_PAIRING_3_WAITING_ACK,g24_pairing_sm_3_waiting_ack
+	rtn
+
+g24_pairing_sm_1_waiting_ack:
+	jam STATE_24G_PAIRING_2,mem_new_24g_pairing_sm
+	branch g24_transmit_abandon
+g24_pairing_sm_2_waiting_ack:
+	jam STATE_24G_PAIRING_3,mem_new_24g_pairing_sm
+	branch g24_transmit_abandon
+g24_pairing_sm_3_waiting_ack:
+	jam STATE_24G_PAIRING_SUCCESS,mem_new_24g_pairing_sm
+	jam BT_EVT_24G_PAIRING_COMPLETE,mem_ipc_tx_evt
+	call p_ipc_tx_evt
+	fetch 4,mem_new_24g_rxpayload+2
+	call g24_update_addr_and_synccrc8
+	branch g24_transmit_abandon
+
+g24_start_24g_mode:
+	set0 mark_24g,mark
+	call g24_ch
+	fetch 4,mem_new_24g_addr
+	call g24_syncword_crc8
+	fetch 1,mem_new_24g_pairing_sm
+	rtnne STATE_24G_PAIRING_SUCCESS
+	call g24_tx_attemp_data_prep
+g24_tx_attemp_dongle:
+	setarg 0
+	store 2,mem_new_24g_check_dongle_times
+g24_tx_attemp_dongle_loop:
+	nop 2000
+	fetch 1,mem_new_24g_check_dongle_times
+	beq 0xff,g24_stop_24g_mode	//
+	call g24_transmit_receive_ack
+	nbranch g24_attemp_txdata_retry,sync
+	nbranch g24_attemp_txdata_retry,user3
+g24_tx_attemp_dongle_succ:
+	jam 1,mem_lpm_mode
+	set1 mark_24g,mark
+	setarg 0
+	store 2,mem_new_24g_check_dongle_times
+	jam BT_EVT_24G_ATTEMPT_SUCCESS,mem_fifo_temp
+	call ui_ipc_send_event
+	branch check_51cmd_stop_adv
+
+g24_tx_attemp_data_prep:
+	set1 mark_24g_conext,mark
+	jam 0xff,mem_new_24g_common_temp
+	fetch 1,mem_new_24g_data_type
+	store 1,mem_new_24g_common_temp+1
+	fetch 4,mem_new_24g_device_addr
+	store 4,mem_new_24g_common_temp+2
+	arg 6,temp
+	arg mem_new_24g_common_temp,rega
+	call g24_put_data_in_buff
+	branch g24_transmit_prep
+	
+g24_attemp_txdata_retry:
+	fetch 2,mem_new_24g_check_dongle_times
+	increase 1,pdata
+	store 2,mem_new_24g_check_dongle_times
+	call g24_ch
+	branch g24_tx_attemp_dongle_loop
+
+
+ifdef YC_G24_AUTO
+g24_auto_pair_start:
+	set0 mark_24g,mark
+	call g24_auto_pair_set_device_info
+	call g24_tx_attemp_data_prep
+g24_auto_pair_restart:
+	jam 0,mem_new_24g_check_dongle_times
+g24_auto_pair_start_loop:
+	nop 2000
+	fetch 1,mem_new_24g_check_dongle_times
+	beq 0xff,g24_stop_24g_mode
+	call g24_transmit_receive_ack
+	nbranch g24_auto_pair_retry,sync
+	nbranch g24_auto_pair_retry,user3
+	call g24_ackpayload_parse
+	fetch 4,mem_new_24g_addr
+	fetcht 4,mem_new_24g_paring_addr
+	isub temp,null
+	branch g24_start_pairing_sm1,zero
+	fetch 4,mem_new_24g_rxpayload+2
+	beq 0,g24_auto_pair_restart
+	call g24_update_addr_and_synccrc8
+	branch g24_tx_attemp_dongle_succ
+
+g24_auto_pair_retry:
+	fetch 1,mem_new_24g_check_dongle_times
+	increase 1,pdata
+	store 1,mem_new_24g_check_dongle_times
+	fetch 1,mem_new_24g_auto_paring_switch	
+	increase 1,pdata
+	and_into 1,pdata
+	store 1,mem_new_24g_auto_paring_switch
+	beq 0,g24_auto_pair_device_attemp
+	beq 1,g24_auto_pair_pair_attemp
+	rtn
+
+g24_auto_pair_set_device_info:
+	fetch 1,mem_tx_power_temp
+	store 1,mem_tx_power
+	fetch 4,mem_new_24g_device_addr
+	call g24_update_addr_and_synccrc8
+	branch g24_ch
+
+g24_auto_pair_device_attemp:
+	call g24_auto_pair_set_device_info
+	branch g24_auto_pair_start_loop
+
+g24_auto_pair_pair_attemp:
+	call g24_pair_init
+	branch g24_auto_pair_start_loop
+
+endif
+
+endif
+
+
+ifdef TEST_MODE
+p_test_tx_mode_init:
+
+	
+	rtn
+endif
+
+ifdef HCILOG
+p_hci_log:
+	fetch 1,p_mem_hci_log
+	increase 1,pdata
+	sub pdata,18,null
+	branch p_hci_log_calc_ptr,positive
+	setarg 0
+p_hci_log_calc_ptr:
+	store 1,p_mem_hci_log
+	arg 8,temp
+	imul32 temp,pdata
+	arg p_mem_hci_log+8,contw
+	iadd contw,contw
+p_hci_log_write_content:
+	fetch 1,p_mem_hci_log
+	istore 1,contw//counter
+	fetch 7,mem_new_24g_txbuf
+	istore 7,contw
+	rtn
+endif
+
+ifdef MS_TEST
+//1 mem_m_key
+//2 mem_m_x
+//2 mem_m_y
+//1 mem_m_z
+//1 mem_m_tz
+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
+	arg 7,rega
+	arg mem_m_key,regb
+	call g24_package_data_pc_bind
+	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
+
+
+
+
+
+endif
+
+
+
Index: Standard_mouse/btms/rom/app.prog
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/rom/app.prog	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/rom/app.prog	(working copy)
@@ -0,0 +1,488 @@
+app_init:
+	set0 mark_ext_patch,mark
+	bpatch patch16_4,mem_patch16
+	fetch 1,mem_device_option
+	branch app_init,blank				/* wait ram to be initialized */
+//	beq dvc_op_ukey,le_ukey_init
+//	beq dvc_op_ir,le_ir_init
+//	beq dvc_op_dongle,le_dongle_init
+	beq dvc_op_kb,kb_init
+	beq dvc_op_shutter,shutter_init
+	beq dvc_op_module,module_init
+//	beq dvc_op_test,test_init
+	bbit1 dvc_op_mouse,mouse_init
+	bbit1 dvc_op_keyboard,kb_init
+	rtn
+	
+app_lpm_init:
+	set0 mark_ext_patch,mark
+	bpatch patch16_5,mem_patch16
+	jam 0,mem_tester_emulate
+	jam 0,mem_debug_config
+	jam 0, mem_lch_code
+	setarg 0
+	store 5,mem_sp_state_start
+	fetch 1,mem_device_option
+	branch app_lpm_init,blank				/* wait ram to be initialized */
+	beq dvc_op_module,module_lpm_init
+app_lpm_init0:
+	rtn
+
+	
+app_process_idle:
+	call ui_dispatch
+	call check_51cmd
+	call app_process_bb_event
+	fetch 2,mem_cb_idle_process
+	branch callback_func
+	
+app_process_bt:
+	fetch 2,mem_cb_bt_process
+	branch callback_func
+	
+app_process_ble:
+	fetch 2,mem_cb_le_process
+	branch callback_func
+
+app_process_bb_event:
+	set0 mark_ext_patch,mark
+	bpatch patch16_6,mem_patch16
+	//return if c51 need to process bb event
+	arg mem_ipc_fifo_bt2c51,rega
+	call fifo_out
+	rtn blank
+	//reaching here mains c51 cannot get bb event.
+	copy pdata,regc
+	call app_event_normal_process
+	branch app_process_bb_event_priority
+	
+app_discard_event:
+	arg 0,regc
+	rtn
+
+//************************************************//
+//*APP BB EVENT NORMAL PROCESS**//
+//************************************************//
+app_event_normal_process:
+	beq BT_EVT_BB_CONNECTED,app_evt_bt_conn
+	beq BT_EVT_BUTTON_LONG_PRESSED,app_evt_button_long_pressed
+	beq BT_EVT_SETUP_COMPLETE,app_evt_setup_complete
+	beq BT_EVT_HID_HANDSHAKE,app_evt_hid_handshake
+	beq BT_EVT_HID_CONNECTED,app_bb_event_hid_connected
+	beq BT_EVT_RECONN_FAILED,app_bb_event_reconn_failed
+	beq BT_EVT_BB_DISCONNECTED,app_bb_event_bb_disconn
+	beq BT_EVT_RECONN_PAGE_TIMEOUT,app_bb_event_reconn_failed	
+	beq BT_EVT_LE_CONNECTED,app_le_event_bb_connected
+	beq BT_EVT_LE_DISCONNECTED,app_le_event_bb_disconn
+	beq BT_EVT_RECONN_STARTED,app_event_reconn_start
+	beq BT_EVT_ENTER_SNIFF,app_event_enter_sniff
+	beq BT_EVT_EXIT_SNIFF,app_event_exit_sniff
+	
+	beq BT_EVT_ML2CAP_CONN_REFUSED,app_event_ml2cap_conn_refused
+	beq BT_EVT_LINKKEY_GENERATE,app_event_linkkey_generate
+	beq BT_EVT_SWITCH_FAIL_MASTER,app_event_switch_fail_master
+	beq BT_EVT_SWITCH_SUCCESS_MASTER,app_event_switch_success
+	
+	and pdata,0x0f,temp
+	and_into BT_EVT_TIMER_MASK,pdata
+	beq BT_EVT_TIMER_INIT,app_evt_timer
+	rtn
+
+app_evt_bt_conn:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BT_CONNECTED,pdata
+	store 2,mem_ui_state_map
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set0 APP_DISC_BY_BUTTON ,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	rtn
+
+app_event_switch_success:
+	jam 0,mem_switch_fail_master_count
+	rtn	
+
+app_event_switch_fail_master:
+	fetch 1,mem_switch_fail_master_count
+	increase 1,pdata
+	store 1,mem_switch_fail_master_count
+	sub pdata,1,null
+	branch app_bt_role_switch,positive
+	jam 0,mem_switch_fail_master_count
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set1 APP_DISC_SWITCH_FAIL,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	branch app_bt_disconnect
+	
+app_process_bb_event_priority:
+	fetch 2,mem_cb_bb_event_process
+	branch callback_func
+
+app_check_wake_lock:
+	fetch 2,mem_cb_check_wakelock
+	branch callback_func
+	
+app_will_enter_lpm:
+	fetch 2,mem_cb_before_lpm
+	branch callback_func
+
+app_event_linkkey_generate:
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set1 APP_DISC_AFTER_PAIRING ,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	branch app_bt_store_reconn_info
+	
+app_event_reconn_start:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BT_RECONNECT,pdata
+	store 2,mem_ui_state_map
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set1 APP_DISC_AFTER_RECONN,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	rtn
+
+app_evt_setup_complete:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BT_SETUP_COMPLETE,pdata
+	store 2,mem_ui_state_map
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set1 APP_DISC_AFTER_SETUP_DONE,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	rtn
+
+app_evt_hid_handshake:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BT_HID_HANDSHAKE,pdata
+	store 2,mem_ui_state_map
+	rtn
+	
+app_event_enter_sniff:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BT_SNIFF,pdata
+	store 2,mem_ui_state_map
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set1 APP_DISC_AFTER_SNIFF,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	rtn
+	
+app_event_exit_sniff:
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_BT_SNIFF,pdata
+	store 2,mem_ui_state_map
+	rtn
+
+app_le_event_bb_connected:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BLE_CONNECTED,pdata
+	store 2,mem_ui_state_map
+	rtn
+	
+app_le_event_bb_disconn:
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_BLE_CONNECTED,pdata
+	store 2,mem_ui_state_map
+	jam 0,mem_le_switch_send_data
+	branch app_lpm_mult_disable
+	
+app_bb_event_hid_connected:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BT_HID_CONN,pdata
+	store 2,mem_ui_state_map
+	rtn
+
+app_evt_button_long_pressed:
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set1 APP_DISC_BY_BUTTON,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	rtn
+	
+app_event_ml2cap_conn_refused:
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set1 APP_DISC_L2CAP_REFUSED,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	branch  app_bt_disconnect
+
+
+app_evt_timer:
+	set0 mark_ext_patch,mark
+	bpatch patch16_7,mem_patch16
+	storet 1,mem_app_evt_timer_count
+app_evt_100ms_loop:
+	fetch 1,mem_app_evt_timer_count
+	rtn blank
+	increase -1,pdata
+	store 1,mem_app_evt_timer_count
+	call ui_button_polling
+	call app_lpm_wake_auto_lock_timer
+	call app_unsniff_delay_timer
+	call app_discovery_timer
+	fetch 2,mem_cb_event_timer
+	call callback_func
+	branch app_evt_100ms_loop
+	
+app_unsniff_delay_timer:
+	fetch 1,mem_unsniff2sniff_timer_count
+	rtn blank
+	increase -1,pdata
+	store 1,mem_unsniff2sniff_timer_count
+	nrtn blank
+	call context_check_idle
+	branch app_bt_enter_sniff,zero
+	rtn
+app_discovery_timer:
+	fetch 2,mem_discovery_timeout_timer_count
+	rtn blank
+	increase -1,pdata
+	store 2,mem_discovery_timeout_timer_count
+	nrtn blank
+	call app_bt_stop_discovery
+	call app_led_off
+	fetch 2,mem_cb_discovry_timeout
+	branch callback_func 
+	
+app_bb_event_reconn_failed:
+	call app_disconn_reason_flag_clear
+app_clear_reconnect_flag:
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_BT_RECONNECT,pdata
+	store 2,mem_ui_state_map
+	rtn
+
+app_bb_event_bb_disconn:
+	jam 0,mem_unsniff2sniff_timer_count
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BT_RECONNECT,app_bb_event_bb_reconn_disconn
+	isolate0 UI_STATE_BT_SETUP_COMPLETE,pdata
+ 	call app_discard_event,true
+app_bb_event_bb_reconn_disconn:
+	set0 mark_ext_patch,mark
+	bpatch patch17_0,mem_patch17
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_BT_CONNECTED,pdata
+	set0 UI_STATE_BT_SETUP_COMPLETE,pdata
+	set0 UI_STATE_BT_HID_CONN,pdata
+	set0 UI_STATE_BT_HID_HANDSHAKE,pdata
+	set0 UI_STATE_BT_RECONNECT,pdata
+	store 2,mem_ui_state_map
+	branch app_lpm_mult_disable
+	
+app_bb_hibernate:
+	call app_disconn_reason_clear
+	branch app_enter_hibernate
+
+	
+app_disconn_reason_clear:
+	setarg 0
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason
+	rtn
+app_disconn_reason_flag_clear:
+	setarg 0
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	rtn
+
+	
+app_disconn_reason_collect_bt:
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason
+	setarg 0
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	rtn
+	
+app_disconn_reason_collect_ble:
+	fetch APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	set1 APP_DISC_BLE,pdata
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason
+	setarg 0
+	store APP_DISC_RSN_SIZE,mem_app_disconn_reason_flag
+	rtn
+
+	
+//************************************************//
+//********APP SHARED FUNCSIONS*******//
+//************************************************//
+
+
+app_check_sniff:
+	fetch 1,mem_ui_state_map
+	isolate1 UI_STATE_BT_SNIFF,pdata
+	rtn
+
+//*****************************************//
+//*****************API********************//
+//*****************************************//
+//app_clearflag_store:
+//	setarg 0
+//	branch app_flag_store
+app_initflag_store:
+	setarg EEPROM_INIT_FLAG
+app_flag_store:
+	store 2,mem_timeup
+	set0 mark_ext_patch,mark
+	bpatch patch17_1,mem_patch17
+	arg 2,temp
+	arg mem_timeup,rega
+	arg eeprom_module_init_flag,regb
+	branch iicd_write_eep_data
+
+//initflag is in eeprom to sure is eeprom nead to init
+app_initflag_check:
+	set0 mark_ext_patch,mark
+	bpatch patch17_2,mem_patch17
+	arg 2,temp
+	arg mem_pdatatemp,rega
+	arg eeprom_module_init_flag,regb
+	call iicd_read_eep_data
+	fetch 2,mem_pdatatemp
+	arg EEPROM_INIT_FLAG,temp
+	isub  temp,null
+	rtn
+
+
+app_start_auto_sniff:
+	fetch 1,mem_unsniff2sniff_timer
+	store 1,mem_unsniff2sniff_timer_count
+	rtn	
+	
+app_get_lpm_wake_lock:
+	arg wake_lock_app,queue
+	branch lpm_get_wake_lock
+
+app_put_lpm_wake_lock:
+	arg wake_lock_app,queue
+	branch lpm_put_wake_lock
+	
+app_lpm_wake_auto_lock:
+	jam  LPM_WAKE_UP_DELAY_TIMER,mem_wake_up_delay_timer
+	branch app_get_lpm_wake_lock
+app_lpm_wake_auto_lock_timer:
+	fetch 1,mem_wake_up_delay_timer
+	rtn blank
+	increase -1,pdata
+	store 1,mem_wake_up_delay_timer
+	nrtn blank
+	branch app_put_lpm_wake_lock
+
+app_l2cap_flow_control_enable:
+	jam L2CAP_FLOW_CTRL_ENABLE,mem_l2cap_flow_ctrl_flag
+	rtn
+
+app_l2cap_flow_control_disable:
+	jam L2CAP_FLOW_CTRL_DISABLE,mem_l2cap_flow_ctrl_flag
+	rtn
+	
+app_bt_set_pincode:
+	jam BT_CMD_SET_PIN_CODE,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+app_bt_role_switch:
+	jam BT_CMD_ROLE_SWITCH,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_bt_start_reconnect:
+	set0 mark_ext_patch,mark
+	bpatch patch17_3,mem_patch17
+	fetch 1,mem_app_connection_options
+	store 1,mem_connection_options
+	jam APP_FLAG_RECONNECT,mem_reconnect_flag
+	jam BT_CMD_RECONNECT,mem_fifo_temp
+	branch ui_ipc_send_cmd	
+	
+app_bt_reconnect_cancel:
+	jam BT_CMD_BB_RECONN_CANCEL,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_bt_disconnect:
+	jam BT_CMD_DISCONNECT,mem_fifo_temp
+	branch ui_ipc_send_cmd	
+
+app_bt_start_discovery_short:
+	fetch 2,mem_discovery_timeout
+	store 2,mem_discovery_timeout_timer_count
+app_bt_start_discovery_led_blink:
+	call app_led_start_blink
+app_bt_start_discovery:
+	jam BT_CMD_START_DISCOVERY,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+app_bt_stop_discovery:
+	setarg 0
+	store 2,mem_discovery_timeout_timer_count
+	jam BT_CMD_STOP_DISCOVERY,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_ble_start_direct_adv:
+	jam BT_CMD_START_DIRECT_ADV,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+app_ble_stop_direct_adv:
+	jam BT_CMD_STOP_DIRECT_ADV,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_ble_stop_adv:
+	jam BT_CMD_STOP_ADV,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_ble_start_adv:	
+	jam BT_CMD_START_ADV,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_ble_start_scan:
+	jam BT_CMD_LE_START_SCAN,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_ble_stop_scan:
+	jam BT_CMD_LE_STOP_SCAN,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_ble_start_conn:
+	jam BT_CMD_LE_START_CONN,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_ble_disconnect:
+	jam BT_CMD_LE_DISCONNECT,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+app_ble_start_write:
+	jam BT_CMD_LE_START_WRITE,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_led_start_blink:	
+	jam BT_CMD_LED_BLINK,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+app_led_on:
+	jam BT_CMD_LED_ON,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_led_stop_blink:
+app_led_off:
+	jam BT_CMD_LED_OFF,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_enter_hibernate:
+	jam BT_CMD_ENTER_HIBERNATE,mem_fifo_temp 
+	branch ui_ipc_send_cmd
+	
+app_bt_sniff_exit:
+	jam BT_CMD_EXIT_SNIFF,mem_fifo_temp
+	branch  ui_ipc_send_cmd
+	
+app_bt_enter_sniff:
+	jam BT_CMD_ENTER_SNIFF,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+app_ble_store_reconn_info:
+	jam BT_CMD_STORE_RECONN_INFO_LE,mem_fifo_temp
+	branch ui_ipc_send_cmd
+
+app_bt_store_reconn_info:
+	jam BT_CMD_STORE_RECONN_INFO_BT,mem_fifo_temp
+	branch ui_ipc_send_cmd
+	
+app_lpm_mult_enable:
+	set1 mark_lpm_mult_enable,mark
+	rtn
+
+app_lpm_mult_disable:
+	set0 mark_lpm_mult_enable,mark
+	rtn
+	
Index: Standard_mouse/btms/rom/command.format
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/rom/command.format	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/rom/command.format	(working copy)
@@ -0,0 +1,1386 @@
+
+/* Parse Command:
+TX: take bits from tx fifo, jam it into shift and a destination (rf,bucket)
+RX: take bits from demod,  jam it into shift and a destination (acl,sco,bucket) */
+
+/* Inject Command:
+TX: 0 into shift, send tail of shift into a destination (rf,bucket)
+RX: 0 into shift, send tail of shift into a destination (acl,sco,bucket) */
+
+format
+  ! 15 romdat
+  % d0
+  % d1
+  % d2
+  % d3
+  [8] d0
+  [8] d1
+  [8] d2
+  [8] d3
+end
+
+format
+  ! 15 enable   /* set flag to 1 */
+  % flag
+  [5] opcode
+  [6] 1
+  [6] flag
+  [6] null
+  [9] 0
+end
+ /* High 5 bytes of channel map */
+format
+  ! 15 pulse   /* set flag to 1 */
+  % flag
+  [5] opcode
+  [6] 1
+  [6] flag
+  [6] null
+  [9] 0
+end
+
+format
+  ! 15 disable   /* set flag to 0 */
+  % flag
+  [5] opcode
+  [6] 2
+  [6] flag
+  [6] null
+  [9] 0
+end
+
+format
+  ! 15 set0  /* set selected bit of reg to 0 */
+  % immediate
+  % reg
+  [5] opcode
+  [6] 9
+  [6] never
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 15 set1  /* set selected bit of reg to 1 */
+  % immediate
+  % reg
+  [5] opcode
+  [6] 9          /* alu op demux */
+  [6] always
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 15 setflag  /* set selected bit of the reg to the polarity of the flag */
+  % flag
+  % immediate
+  % reg
+  [5] opcode
+  [6] 9
+  [6] flag
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 15 nsetflag  /* set the selected bit of the reg to the opposite polarity of the flag */
+  % flag
+  % immediate
+  % reg
+  [5] opcode
+  [6] 0x29
+  [6] flag
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 15 setflip    /* invert the selected bit of the reg */
+  % immediate
+  % reg
+  [5] opcode
+  [6] 10            /* this is alu op */
+  [6] always
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 0x1f qset1      /* demux the lowest 4 bit of queue and OR it with regr into regw */
+  % reg             /* in short, set the bit in reg indexed by queue to 1 */
+  [5] opcode
+  [6] 9
+  [6] always
+  [6] reg
+  [9] 0
+end
+  
+format
+  ! 0x1f qset0      /* demux the lowest 4 bit of queue and AND it with regr into regw */
+  % reg             /* in short, set the bit in reg indexed by queue to 0 */
+  [5] opcode
+  [6] 9
+  [6] never
+  [6] reg
+  [9] 0
+end
+
+format 
+  ! 0x1f qsetflag   /* set the bit in reg index by queue to same as flag */
+  % flag
+  % reg
+  [5] opcode
+  [6] 9
+  [6] flag
+  [6] reg
+  [9] 0
+end
+
+format 
+  ! 0x1f nqsetflag   /* set the bit in the reg index by queue to opposite of flag */
+  % flag
+  % reg
+  [5] opcode
+  [6] 0x29
+  [6] flag
+  [6] reg
+  [9] 0
+end
+
+format
+  ! 0x1f qsetflip      /* flip the bit in reg index by queue */
+  % reg
+  [5] opcode
+  [6] 10
+  [6] always
+  [6] reg
+  [9] 0
+end
+
+format
+  ! 1 parse       /* take bits out of source (sco_tx,tx_buffer,rx-elas) into pdata and dest (sco_rx,rx_fifo,tx-elas) */
+  % source
+  % dest
+  % immediate
+  [5] opcode
+  [4] source      /* voice, data, demod */
+  [2] 0
+  [6] 0    
+  [2] 0           /* parse or inject */ 
+  [4] dest        /* acl, sco, mod, bucket */
+  [9] immediate   /* number of bits to parse off */
+end
+
+format
+  ! 1 inject      /* shift data from pdata into destination (tx-elas,rx_fifo,sco_rx) */
+  % destination
+  % immediate
+  [5] opcode
+  [4] 0
+  [2] 0
+  [6] 1
+  [2] 0
+  [4] destination /* acl,sco,mod,bucket */
+  [9] immediate   /* number of bits to be injected */
+end
+
+format
+  ! 1 iinject
+  % destination
+  % regr
+  [5] opcode
+  [6] regr       /* contain the number of bits to inject */
+  [6] 3
+  [2] 0
+  [4] destination /* acl,sco,mod,bucket */
+  [9] 0 
+end
+
+format
+  ! 1 stuff  /* automatic parse, stuff_counter decrement on every bit until hits zero */
+  % source
+  % destination
+  [5] opcode
+  [4] source
+  [2] 0
+  [6] 2
+  [2] 0
+  [4] destination
+  [9] 0
+end
+
+format    /* force immediate value into registers */
+  ! 3 force
+  % immediate
+  % regw
+  [5] opcode
+  [6] 0
+  [6] 0    /* alu operation force */
+  [6] regw  /* destination register */
+  [9] immediate
+end
+
+format    /* force whatever is on shift_reg to regsiters */
+  ! 0x13 iforce
+  % regw
+  [5] opcode
+  [6] 0
+  [6] 0    /* alu operation force */
+  [6] regw  /* destination register */
+  [9] 0
+end
+
+format    /* force immediate value into registers */
+  ! 3 increase
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 1    /* alu operation add */
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 3 pincrease
+  % immediate
+  [5] opcode
+  [6] -1  /* pdata */
+  [6] 1   /* alu add */
+  [6] -1  /* back to pdata */
+  [9] immediate
+end
+
+format    /* force immediate value into registers */
+  ! 3 and_into
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 2    /* alu operation and into */
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 3 and
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 2    /* alu operation and into */
+  [6] regw
+  [9] immediate
+end
+  
+format
+  ! 0x13 iand    /* pdata & regr -> regw */
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 2    /* alu operation and into */
+  [6] regw
+  [9] 0
+end
+  
+
+format    /* and whatever is in shiftreg with reg */
+  ! 0x13 iand_into
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 2    /* alu operation and into */
+  [6] reg
+  [9] 0
+end
+
+format
+  ! 3 or_into
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 3    /* alu operation or into */
+  [6] reg
+  [9] immediate
+end
+
+format
+  ! 3 or
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 3    /* alu operation or into */
+  [6] regw
+  [9] immediate
+end
+
+format
+  ! 0x13 ior
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 3    /* alu operation or into */
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 0x13 ior_into
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 3    /* alu operation or into */
+  [6] reg
+  [9] 0
+end
+
+format
+  ! 3 skip_to   /* jump to location stored in reg */
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 4   /* alu operation copy */
+  [6] rom_addr
+  [9] 0
+end
+
+format
+  ! 3 copy
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 4   /* alu operation copy */
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 deposit   /* copy the register content thru alu to shift register, not prealigned like preload */
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 4   /* alu operation copy */
+  [6] -1  /* pdata */
+  [9] 0
+end
+
+format
+  ! 3 icopy     /* copy the shift register lsb content directly to register, not aligned */
+  % regw
+  [5] opcode
+  [6] -1  /* pdata */
+  [6]  4  /* alu copy */
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 add
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 1
+  [6] regw
+  [9] immediate
+end
+
+format
+  ! 0x13 iadd       /* regr + pdata -> regw */
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 1
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 sub          /* immediate - regr -> regw */
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 12
+  [6] regw
+  [9] immediate
+end
+
+format
+  ! 0x13 isub       /* pdata - regr -> regw */
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 12
+  [6] regw
+  [9] 0
+end
+
+
+format
+  ! 3 flip
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 5
+  [6] reg
+  [9] immediate
+end
+  
+format
+  ! 0x13 iflip  /* use shift register as immediate to do xor */
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 5
+  [6] regw
+  [9] 0
+end
+  
+format
+  ! 3 xor
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 5
+  [6] regw
+  [9] immediate
+end
+
+format
+  ! 3 xor_into
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 5
+  [6] reg
+  [9] immediate
+end
+  
+format
+  ! 0x13 ixor  /* pdata xor regr and store result in regw */
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 5
+  [6] regw
+  [9] 0
+end
+  
+format
+  ! 3 invert
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 8
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 pinvert    /* invert pdata into itself */
+  [5] opcode
+  [6] -1
+  [6] 8
+  [6] -1
+  [9] 0
+end
+
+format
+  ! 3 div                 /* regr div immediate div */
+  % reg
+  % immediate
+  [5] opcode
+  [6] reg
+  [6] 13                   /* generate diven pulse to div */
+  [6] null
+  [9] immediate
+end
+
+format
+  ! 0x13 idiv           /* pdata div regr data ready at most after 41 nops */
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 13                   /* generate diven pulse to div */
+  [6] null
+  [9] 0
+end
+
+format
+  ! 3 remainder            /* harvest div remainder */
+  % regw
+  [5] opcode
+  [6] 0
+  [6] 14
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 quotient             /* harvest div quotient */
+  % regw
+  [5] opcode
+  [6] 0
+  [6] 15
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 6
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift2
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 22
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift3
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 18
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift4
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 35
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift8
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 25
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift16
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 34
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 rshift32
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 30
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 lshift
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 7
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 lshift2
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 23
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 lshift8
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 26
+  [6] regw
+  [9] 0
+end
+
+  
+format
+  ! 3 lshift3
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 19
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 lshift4
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 36
+  [6] regw
+  [9] 0
+end
+  
+
+format
+  ! 3 lshift16
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 32
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 random               /* random number into regw */
+  % reg
+  [5] opcode
+  [6] 0
+  [6] 20
+  [6] reg
+  [9] 0
+end
+
+format                     /* bit reverse within a byte */
+  ! 3 reverse
+  % reg
+  % regw
+  [5] opcode
+  [6] reg
+  [6] 27
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 priority    /* priority encode reg into regw, lsb is the top priority, ie, priority(8'b00010000) = 4 */
+  % reg
+  % regw
+  [5] opcode
+  [6] reg
+  [6] 21
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 7 setsect   /* set a section of pdata */
+  % section    /* 0 sets 17:0 of pdata with set_data, 1 sets 35:18, 2 sets 53:36, 3 sets 71:54 */
+  % set_data
+  [5] opcode
+  [7] 0
+  [2] section
+  [18] set_data
+end
+
+format
+  ! 10 preload   /* load stuff into pdata according to fhs format, check us.v */
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 0
+  [6] -1
+  [9] 0
+end
+
+format  /* load register with pdata content, according to fhs format, check us.v */
+  ! 10 ialigned   /* all bits are in position */
+  % regw
+  [5] opcode
+  [6] -1
+  [6] 0
+  [6] regw
+  [9] 0
+end
+
+format  /* load register to another according to fhs format */
+  ! 10 aligned
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 0
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 4 branch
+  % addr
+  % flag
+  [5] opcode
+  [6] 1
+  [6] flag
+  [15] addr
+end
+
+format
+  ! 4 call
+  % addr
+  % flag
+  [5] opcode
+  [6] 2
+  [6] flag
+  [15] addr
+end
+
+format
+  ! 4 rtn
+  % flag
+  [5] opcode
+  [6] 3
+  [6] flag
+  [15] 0
+end
+
+format
+  ! 0x0c store          /* write to memory, data from pdata, address from immediate then mem_ptr */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 0
+  [1] 0
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x0c hstore          /* write to memory, data from pdata, address from immediate then mem_ptr */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 1
+  [1] 0
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x1c istore        /* write to memory, data from pdata, address from regr then mem_ptr */
+  % num_bytes
+  % reg
+  [5] opcode
+  [6] reg            /* hold address */
+  [1] 0
+  [1] 0
+  [4] num_bytes
+  [15] 0
+end
+
+format
+  ! 0x0d fetch          /* read from memory, data into pdata, address from immediate then mem_ptr */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 0
+  [1] 0
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x0d hfetch          /* read from memory, data into pdata, address from immediate then mem_ptr */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 1
+  [1] 0
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x0d crc         /* read from memory, count from loopcnt, put crc result into pdata */
+  % addr
+  [5] opcode
+  [6] 0
+  [1] 0
+  [1] 0
+  [4] 0
+  [15] addr
+end
+
+format
+  ! 0x1d icrc         /* read from memory, address from reg, count from loopcnt, put crc result into pdata */
+  % reg
+  [5] opcode
+  [6] reg             /* hold address */
+  [1] 0
+  [1] 0
+  [4] 0
+  [15] 0
+end
+
+
+format
+  ! 0x1d ifetch         /* read from memory, data into pdata, address from regr then mem_ptr */
+  % num_bytes
+  % reg
+  [5] opcode
+  [6] reg             /* hold address */
+  [1] 0
+  [1] 0
+  [4] num_bytes
+  [15] 0
+end
+
+format
+  ! 0x0c storet          /* write to memory, data from temp, address from immediate won't increment */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 0
+  [1] 1
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x0c hstoret          /* write to corereg, data from temp, address from immediate won't increment */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 1
+  [1] 1
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x1c istoret        /* write to memory, data from temp, address from regr won't increment */
+  % num_bytes
+  % reg
+  [5] opcode
+  [6] reg            /* hold address */
+  [1] 0
+  [1] 1
+  [4] num_bytes
+  [15] 0
+end
+
+format
+  ! 0x0d fetcht          /* read from memory, data into temp, address from immediate won't increment */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 0
+  [1] 1
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x0d hfetcht          /* read from corereg, data into temp, address from immediate won't increment */
+  % num_bytes
+  % addr
+  [5] opcode
+  [6] 0               /* memory */
+  [1] 1
+  [1] 1
+  [4] num_bytes
+  [15] addr
+end
+
+format
+  ! 0x1d ifetcht         /* read from memory, data into temp, address from regr won't increment */
+  % num_bytes
+  % reg
+  [5] opcode
+  [6] reg             /* hold address */
+  [1] 0
+  [1] 1
+  [4] num_bytes
+  [15] 0
+end
+
+format
+  ! 0x0e jam
+  % immediate
+  % addr
+  [5] opcode
+  [3] 0
+  [1] 0   /* msb */
+  [15] addr
+  [8] immediate
+end
+
+format
+  ! 0x0e hjam
+  % immediate
+  % addr
+  [5] opcode
+  [3] 0
+  [1] 1   /* msb */
+  [15] addr
+  [8] immediate
+end
+
+format			/* 0x242... */
+  ! 4 nbranch
+  % addr
+  % flag
+  [5] opcode
+  [1] 1
+  [5] 1
+  [6] flag
+  [15] addr
+end
+
+format
+  ! 4 ncall
+  % addr
+  % flag
+  [5] opcode
+  [1] 1
+  [5] 2
+  [6] flag
+  [15] addr
+end
+
+format
+  ! 4 nrtn
+  % flag
+  [5] opcode
+  [1] 1
+  [5] 3
+  [6] flag
+  [15] 0
+end
+
+format
+  ! 4 nop
+  % addr  /* no-op for addr+2 clocks */
+  [5] opcode
+  [6] 0     
+  [6] 0     /* always */ 
+  [15] addr
+end
+
+format
+  ! 4 clear_stack
+  [5] opcode
+  [6] 4
+  [6] 0    /* always */
+  [15] 0
+end
+
+format
+  ! 6 until
+  % reg
+  % flag
+  [5] opcode
+  [6] reg
+  [6] flag
+  [6] 1
+  [9] 0
+end
+  
+format
+  ! 6 correlate   /* quit if 1. flag is true 2, regr time up 3, found sync,(cond_true) */
+  % reg          /* expire counter to check against */
+  % flag
+  [5] opcode
+  [6] reg
+  [6] flag
+  [6] 2           /* correlate */
+  [9] 0           
+end
+
+format
+  ! 5 compare   /* sets cond flag,  if reg equals immediate */
+  % immediate
+  % reg
+  % mask
+  [5] opcode
+  [6] reg
+  [3] 0
+  [9] mask
+  [9] immediate
+end
+
+format
+  ! 0x15 icompare   /* sets cond flag,  if reg equals pdata */
+  % mask
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 0
+  [9] mask
+  [9] 0
+end
+
+format   /* sets cond. flag, if reg equals LS half of shift reg with MS half of reg being mask */
+  ! 5 iverify
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 2
+  [18] 0
+end
+
+format
+  ! 0x15 qisolate1
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 3
+  [18] -1
+end
+
+format
+  ! 0x15 qisolate0
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 3
+  [18] 0
+end
+
+	/* REVAB bug: cannot access bit above 35 */
+format
+  ! 5 isolate1
+  % addr
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 3
+  [9] -1
+  [9] addr
+end
+
+format
+  ! 5 isolate0
+  % addr
+  % reg
+  [5] opcode
+  [6] reg
+  [3] 3
+  [9] 0
+  [9] addr
+end
+
+format
+  ! 11 setarg
+  % immediate
+  [5] opcode
+  [27] immediate
+end
+
+format
+  ! 0x1b arg
+  % immediate
+  % reg
+  [5] opcode
+  [6] reg
+  [21] immediate
+end
+
+  
+format
+  ! 0 sleep
+  [5] opcode
+  [27] 0
+end
+
+format
+  ! 0 snooze
+  [5] opcode
+  [6] -1
+  [21] 0
+end
+
+format
+  ! 0 revision
+  % rev_num
+  [5] opcode
+  [27] rev_num
+end
+
+format
+  ! 0x18 loop   /* branch when loopcnt is NOT zero, and decrease loopcnt */
+  % addr
+  [5] opcode
+  [4] 4
+  [8] 0
+  [15] addr
+end
+
+format
+  ! 0x18 beq   /* branch when pdata is equal to immediate */
+  % imme
+  % addr
+  [5] opcode
+  [4] 0
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 bne   /* branch when pdata is NOT equal to immediate */
+  % imme
+  % addr
+  [5] opcode
+  [4] 1
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 rtneq   /* return when pdata is equal to immediate */
+  % imme
+  [5] opcode
+  [4] 2
+  [8] imme
+  [15] 0
+end
+
+format
+  ! 0x18 rtnne   /* return when pdata is NOT equal to immediate */
+  % imme
+  [5] opcode
+  [4] 3
+  [8] imme
+  [15] 0
+end
+
+format
+  ! 0x18 bbit1   /* branch when pdata's imme bit is 1 */
+  % imme
+  % addr
+  [5] opcode
+  [4] 5
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 bbit0   /* branch when pdata's imme bit is 0 */
+  % imme
+  % addr
+  [5] opcode
+  [4] 6
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 rtnbit1   /* return when pdata's imme bit is 0 */
+  % imme
+  [5] opcode
+  [4] 7
+  [8] imme
+  [15] 0
+end
+
+format
+  ! 0x18 rtnbit0   /* return when pdata's imme bit is 0 */
+  % imme
+  [5] opcode
+  [4] 8
+  [8] imme
+  [15] 0
+end
+
+format
+  ! 8	bpatch
+  % imme
+  % addr
+  [5] opcode
+  [4] 9
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 bmark1   /* branch when mark's imme bit is 1 */
+  % imme
+  % addr
+  [5] opcode
+  [4] 10
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 bmark0   /* branch when mark's imme bit is 0 */
+  % imme
+  % addr
+  [5] opcode
+  [4] 11
+  [8] imme
+  [15] addr
+end
+
+format
+  ! 0x18 rtnmark1   /* return when mark's imme bit is 0 */
+  % imme
+  [5] opcode
+  [4] 12
+  [8] imme
+  [15] 0
+end
+
+format
+  ! 0x18 rtnmark0   /* return when mark's imme bit is 0 */
+  % imme
+  [5] opcode
+  [4] 13
+  [8] imme
+  [15] 0
+end
+
+
+format
+  ! 3 mult                  /* immediate mult regr */  /* the product will be ready 17 clks later */
+  % immediate                                   /* use "product" instruction to get the result */
+  % reg
+  [5] opcode
+  [6] reg
+  [6] 16                   /* generate diven pulse to div */
+  [6] null
+  [9] immediate
+end
+
+format
+  ! 0x13 imult           /* pdata mult regr */  /* the product will be ready after 15 nops */
+  % reg                                         /* use product opcode to get the result */
+  [5] opcode
+  [6] reg
+  [6] 16                   /* generate mult pulse to multiplier */
+  [6] null
+  [9] 0
+end
+
+format
+  ! 3 mul32                  /* immediate mult regr */ 
+  % regr
+  % immediate                                  
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 31           
+  [6] regw
+  [9] immediate
+end
+
+format
+  ! 0x13 imul32           /* pdata mult regr 32x32=64bit */  
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 31                   
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 product              /* harvest mult product */
+  % regw
+  [5] opcode
+  [6] 0
+  [6] 17
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 byteswap
+  % regr
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 33
+  [6] regw
+  [9] 0
+end
+
+format
+  ! 3 shasx          /* SHA256 Sx operation, immediate is Sx */
+  % regr
+  % immediate
+  % regw
+  [5] opcode
+  [6] regr
+  [6] 28
+  [6] regw
+  [9] immediate
+end
+
+
+format
+  ! 0x13 regexrot 	/* regext[0] <- regext[7], regext[1] <- regext[0], regext[2] <- regext[1] ... */
+  [5] opcode
+  [6] 0
+  [6] 29
+  [6] null
+  [9] 0
+end
+
Index: Standard_mouse/btms/rom/label.format
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/rom/label.format	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/rom/label.format	(working copy)
@@ -0,0 +1,2889 @@
+0x3000 start
+0x3001 soft_reset
+0x3019 main_loop
+0x3029 connection_dispatch
+0x302e connection_incontext
+0x3038 connection_nosniff
+0x3043 idle_dispatch
+0x304e idle_exit
+0x3050 idle_le_create_conn
+0x3053 idle_inquiry
+0x3058 idle_inquiry_cancel
+0x305b idle_remote_name_req
+0x3060 idle_create_conn
+0x3062 idle_create_conn_device
+0x3067 idle_create_conn_cont
+0x3068 idle_start_page
+0x306f idle_page_mode_r0
+0x3091 idle_page_fail
+0x3098 idle_name_fail
+0x309e inquiry_dispatch
+0x30a4 inquiry_start
+0x30ac inquiry_restart
+0x30af inquiry_rx_restart
+0x30b4 inquiry_transmit
+0x30c2 inquiry_check_train
+0x30d0 inquiry_receive
+0x30db inquiry_sync
+0x30e2 inquiry_receive_rtn
+0x30e4 inquiry_receive_eir_rtn
+0x30e8 master_page
+0x30f1 master_page_no_interval
+0x30fd master_npage_timeout
+0x3100 master_page_timeout
+0x3108 page_start
+0x3115 page_restart
+0x311b page_rx_restart
+0x312f page_exit
+0x3136 page_check_train
+0x3145 page_receive
+0x314e page_sync
+0x3154 page_send_fhs
+0x3159 page_send_fhs_continue
+0x3165 page_wait_fhs_reply
+0x3175 page_wait_fhs_reply_ok
+0x317b master_newconn_loop
+0x3180 newconn_poll_responded
+0x3188 master_dispatch
+0x319a master_loop
+0x31a4 master_notmatch
+0x31ab master_exit
+0x31ad master_attempt
+0x31b0 check_master_disconnect
+0x31b3 check_master_match
+0x31c1 master_disconnect
+0x31c8 master_name_disconnect
+0x31ca master_name_error
+0x31cd check_disconnect_timeout
+0x31d4 disable_usr
+0x31d6 conn_timer_expired
+0x31da linkkey_ready
+0x31e4 linkkey_set
+0x31ed linkkey_set_continue
+0x31ee generate_linkkey_continue
+0x31ef clear_linkstate
+0x31f3 role_switch_check
+0x31fe role_switch_clkn
+0x31ff role_switch_clke
+0x3206 role_switch_prepare
+0x320a role_switch_prepare0
+0x321a role_switch_master
+0x3221 roles_waitfhs_loop
+0x3226 role_switch_fail_master
+0x322f roles_replyto_fhs
+0x3237 roles_newconns_loop
+0x323e roles_newconns_responded
+0x3246 context_load
+0x3259 context_load_master
+0x3260 context_save
+0x3269 context_get_next
+0x326c context_get_next_loop
+0x3270 context_get_next_cont
+0x3278 context_get_next_sniff
+0x327a context_new
+0x3283 context_check_all_wack
+0x328b context_check_esco_wack
+0x3290 context_esco_wack
+0x3292 context_check_idle
+0x3294 context_traverse_linkkey
+0x3297 context_search_conn_handle
+0x3298 context_search_conn_handle2
+0x329a context_search_plap
+0x329d context_search_plap2
+0x329f context_search_insniff
+0x32a1 context_search_sniff_window
+0x32a2 context_search
+0x32a7 context_search_loop
+0x32a9 context_search_next
+0x32ad context_search_empty
+0x32b1 context_search_lap
+0x32b3 context_search_lap_cont
+0x32b8 context_search_handle
+0x32be context_search_sniff
+0x32bf context_search_sniff_loop
+0x32cc context_search_sniff_sc
+0x32cf context_search_meet1
+0x32d0 context_search_meet
+0x32d4 context_search_sniff_miss
+0x32da sign_pdata_temp
+0x32e4 sign_pdata_temp_p0
+0x32ea context_check_inconn
+0x32ed context_check_a_wack
+0x32f6 context_get_anchor
+0x3302 context_next_anchor
+0x3309 context_search_window
+0x3312 context_traverse_clearkey
+0x331d master_conn_send_packet
+0x3320 master_send_packet
+0x3328 master_conn_recv_packet
+0x332b master_recv_packet
+0x3333 master_rx_conn_finish_packet
+0x3337 master_newconn_once
+0x333e inquiry_scan_dispatch
+0x334e inquiry_scan_start
+0x337a send_eir
+0x339d get_all_uuid
+0x33a1 lshift_loop
+0x33b3 page_scan_dispatch
+0x33c3 page_scan_start
+0x33e6 page_scan_wait_fhs_restart
+0x33f0 page_scan_wait_fhs_again
+0x33f8 page_scan_reply_to_fhs
+0x3406 slave_apply_clke_bt
+0x340a slave_apply_clke_bt_now
+0x340d start_slave_connection
+0x3412 slave_newconn_loop
+0x3417 sconn_successful
+0x341f slave_dispatch
+0x3424 slave_loop
+0x3434 slave_notmatch
+0x343e slave_disconnect
+0x3447 role_switch_slave
+0x3450 roles_sendfhs_loop
+0x3463 roles_got_fhs_reply
+0x3466 roles_newconn_loop
+0x3470 roles_newconn_responded
+0x3476 roles_newconn_nolmp
+0x3481 init_rx_packet_flags
+0x348d prepare_newconn
+0x3499 newconn_init
+0x34a9 clear_linkkey
+0x34b0 new_conn_timeout
+0x34b4 new_conn_handle
+0x34b8 quit_connection
+0x34be quit_connection_name
+0x34c2 quit_connection_cont
+0x34d3 quit_connection_not_clear_mark
+0x34d5 quit_connection_not_clear_tx
+0x34d9 slave_newconn_once
+0x34e7 prepare_tx
+0x34f4 prepare_tx_not_esco
+0x34f5 prepare_tx_not_sco
+0x34fb prepare_tx_retransmit
+0x3505 prepare_tx_nomore_retransmit
+0x3508 prepare_tx_no_retransmit
+0x3511 prepare_tx_pollnull
+0x3515 prepare_tx_loopback
+0x351c prepare_tx_txpat
+0x3520 prepare_tx_sendlmp
+0x3522 prepare_tx_sendl2cap
+0x3523 set_wait_ack
+0x352d tx_l2cap_type
+0x3544 tx_l2cap_type_edr
+0x3554 slave_receive_master_slot
+0x3559 slave_receive_notsniff
+0x355a slave_receive_access
+0x355b slave_receive_sniff
+0x3579 slave_conn_recv_packet
+0x3582 receive_packet
+0x3584 receive_packet_whitened
+0x359a receive_packet_noedr
+0x35a4 receive_packet_amchk
+0x35b4 am_addr_match
+0x35b5 am_addr_ok
+0x35c5 arqn_bypass
+0x35d3 failed_seqn
+0x35d4 rx_type_dispatch
+0x35e4 process_hev
+0x35eb process_hev_loop
+0x35f4 process_poll
+0x35f5 process_dm5
+0x35f6 process_dm1
+0x35f8 process_dh5
+0x35f9 process_3dh1
+0x35fa process_dh1
+0x35fb process_dmh
+0x3608 process_dmh_noedr
+0x3614 process_dmh_long
+0x3617 process_dmh_common
+0x362b process_lmp
+0x3630 process_dmh_data_l2cap_start_pkt
+0x363b process_dmh_data_into_buff1
+0x3640 process_dmh_data_into_buff2
+0x3645 process_dmh_data_l2cap_continue_pkt
+0x3650 process_dmh_data_l2cap_continue_pkt1
+0x3654 process_dmh_data_l2cap_continue_pkt2
+0x3657 process_dmh_data
+0x365b process_dmh_data_end
+0x366e process_l2cap_pass_crc_buff1
+0x3678 process_l2cap_pass_crc_buff2
+0x3682 process_dmh_cont
+0x368c process_dmh_cont_rxbuf_not_use
+0x3696 ack_payload
+0x36a8 error_header
+0x36af error_payload_crc
+0x36b5 error_payload
+0x36b6 discard_pkt
+0x36bb discard_pkt_lmp
+0x36bf discard_pkt_l2cap
+0x36c3 redundant_payload
+0x36c6 end_of_packet
+0x36d3 process_fhs
+0x36e9 fhs_parity_ok
+0x3703 clear_got_tx
+0x3719 clear_got_txlmp
+0x3726 clear_lmp_escape
+0x3729 clear_send_setup_complete
+0x372e sco_link_req_by_slave
+0x3733 clean_mem_mode
+0x3736 start_encryption
+0x373f stop_encryption
+0x3746 sniff_init
+0x374d sniff_init_master
+0x3757 sniff_init_nowrap
+0x376a sniff_exit
+0x3775 check_attempt
+0x3781 check_attempt_nomore
+0x3783 check_attempt_sniff
+0x3789 check_attempt_sniff_restore_sco
+0x378c check_attempt_sco_master
+0x3792 check_attempt_not_sco
+0x379b check_attempt_notimeout
+0x379f sniff_check_window
+0x37a9 check_esco_amaddr
+0x37ac parse_l2cap
+0x37af parse_l2cap_cont
+0x37c1 parse_l2cap_release_buff1
+0x37c7 parse_l2cap_release_buff2
+0x37cd l2cap_buff1_inuse
+0x37d1 l2cap_buff2_inuse
+0x37d5 slave_send_access
+0x37de slave_conn_send_packet
+0x37e9 slave_conn_send_access
+0x37ec transmit_packet
+0x37ee transmit_packet_whitened
+0x3816 transmit_hev
+0x381d transmit_ev_loop
+0x3822 transmit_fhs
+0x3840 transmit_lmp
+0x3849 transmit_lmp_loop
+0x384f transmit_lmp_finish
+0x3852 transmit_dm1
+0x3854 transmit_dm5
+0x3857 transmit_3dh1
+0x3858 transmit_dh1
+0x385a transmit_dh5
+0x385d transmit_dmh
+0x386d transmit_edr3m
+0x3871 transmit_edr_sync_end
+0x3873 transmit_noedr
+0x387d transmit_long
+0x387e transmit_stuff
+0x3882 transmit_stuff_loop
+0x3885 transmit_end
+0x388e transmit_loopback
+0x3891 transmit_loopback_short
+0x3897 transmit_loopback_long
+0x389c transmit_loopback_cont
+0x389d transmit_loopback_loop
+0x38a3 transmit_loopback_end
+0x38a7 apply_switch_clke
+0x38ad apply_switch_nozero
+0x38b0 apply_switch_loop
+0x38b4 apply_switch_bt
+0x38b5 apply_switch_wait_loop
+0x38bc calc_slot_offset
+0x38c7 calc_bt_portion
+0x38c9 calc_slot_offset_loop
+0x38cb calc_skip_bt
+0x38d1 calc_clke_offset
+0x38dd calc_clke_pos
+0x38e1 calc_clke
+0x38e5 calc_clke2
+0x38ed calc_clke_pos2
+0x38ef calc_clke_pos_adj
+0x38f1 calc_radio_freq
+0x38fb freq_not_connection
+0x38fc do_hop_mod_now
+0x3904 odd_half
+0x3906 freq_result
+0x390a afh_process_0
+0x3918 afh_process_con
+0x3925 afh_process_1
+0x3931 afh_process_end
+0x3934 afh_same_channel
+0x3937 afh_clear
+0x393c afh_process_freq_map
+0x3944 process_freq_3
+0x3949 process_freq_1
+0x394d process_freq_0
+0x3956 process_freq_2
+0x3960 rx_radio_freq
+0x3966 rx_radio_freq_now
+0x3967 tx_radio_freq
+0x396d tx_radio_freq_now
+0x396e fetch_giac
+0x3972 fetch_page_bt_adr
+0x3979 fetch_self_bt_adr
+0x3982 fetch_extm_bt_adr
+0x398b fetch_diac
+0x398e fetch_diac_do
+0x3992 shutdown_radio
+0x399c shutdown_radio_select
+0x39a1 shutdown_radio_0db
+0x39a3 shutdown_radio0
+0x39ae shutdown_radio_3db
+0x39ae shutdown_radio_pair
+0x39b1 set_sync_on
+0x39b9 set_freq_rx
+0x39bf rf_rx_enable
+0x39c9 set_freq_tx
+0x39d0 txon
+0x39dc txon_power_select
+0x39e1 set_tx_power_0db
+0x39e5 set_tx_power_3db
+0x39e9 set_tx_power_5db
+0x39ed set_tx_power_f3db
+0x39f1 set_tx_power_f5db
+0x39f5 txon_common
+0x39fc initialize_radio
+0x39fe initialize_radio_wait
+0x3a02 initialize_radio_loop
+0x3a08 initialize_radio_cont
+0x3a13 rf_write_freq
+0x3a2b do_rccal
+0x3a37 do_rccal_loop
+0x3a3a do_rccal_end
+0x3a3f set_rccal
+0x3a50 save_rssi
+0x3a5f switchto_dpllclk
+0x3a7b xtal_fast_wake
+0x3a7d init_lpm_ctrl
+0x3a7f start_receiver
+0x3a86 prep_crypt
+0x3a95 wait_access_end
+0x3a9d wait_access_mhalfbnd
+0x3a9e wait_access_mhalfbnd_correlate
+0x3aa3 wait_access_clkn_rt
+0x3aab wait_access_forever
+0x3ab4 reserve_slot
+0x3abd ahead_window
+0x3acd setup_clk
+0x3ad1 skip_setup_clke
+0x3ad3 setup_clkn
+0x3ad5 skip_setup_clkn
+0x3ad6 setup_clknbt
+0x3ad9 setup_complete
+0x3ae3 setup_clk11
+0x3ae6 rf_setup_time
+0x3aea rf_setup_time_slave_slot
+0x3aec rf_setup_time_master_slot
+0x3aee start_transmitter
+0x3af4 start_tx_native
+0x3afa start_rx_native
+0x3aff start_tx_external
+0x3b05 send_access_word
+0x3b0d scan_mode_whiten
+0x3b11 get_free_amaddr
+0x3b17 get_free_amaddr_cont
+0x3b1a get_clk
+0x3b1e get_clkbt
+0x3b22 supervision_update
+0x3b2c supervision_flush
+0x3b31 assert
+0x3b34 loop
+0x3b35 sleep
+0x3b38 sleep_loop
+0x3b3c init_param
+0x3b64 init_rf_param
+0x3bab lpmstate
+0x3bb6 lpmwake
+0x3bc7 lpm_load_context
+0x3bd7 lpm_save_context
+0x3be2 lpo_calibration
+0x3be8 lpo_cal_inited
+0x3bed lpm_adjust_clk
+0x3bfe lpm_adjust_positive
+0x3c01 lpm_clear_counter
+0x3c04 lpm_hibernate
+0x3c0b lpm_hibernate_normal
+0x3c11 lpm_sleep
+0x3c24 lpm_enter_sleep
+0x3c29 lpm_recover_clk
+0x3c33 lpm_recover_xtal
+0x3c35 lpm_recover_timeout
+0x3c53 lpm_dispatch
+0x3c5e lpm_dispatch_next
+0x3c6a lpm_dispatch_next2
+0x3c7f lpm_dispatch_sleep
+0x3c80 lpm_dispatch_lpo
+0x3c8a lpm_dispatch_unconn
+0x3c93 lpm_unconn_nossp
+0x3c99 lpm_unconn_cont
+0x3c9b lpm_sleep_btclk
+0x3ca0 lpm_set_mult
+0x3cb0 lpm_mult_wait_timeout
+0x3cb7 lpm_match
+0x3cbc lpm_not_match
+0x3cc3 lpm_lost
+0x3ccb lpm_mult_short
+0x3ccf lpm_mult_long
+0x3cd2 lpm_cal_xtal_startup
+0x3ceb lpm_write_config
+0x3cf4 lpm_write_ctrl
+0x3cf6 lpm_write_ctrl2
+0x3cf7 lpm_write
+0x3cfc lpm_write_gpio_wakeup
+0x3d06 lpm_get_wake_lock
+0x3d0a lpm_put_wake_lock
+0x3d0e lpm_check_wake_lock
+0x3d2c lpm_uart_wake_lock
+0x3d31 lpm_check_wake_lock_nothci
+0x3d33 lpm_check_wake_lock_end
+0x3d39 lpm_shut_down
+0x3d3e lpm_disable_exen_output
+0x3d42 check_bt_disabled
+0x3d45 check_ble_disabled
+0x3d48 check_module_disabled
+0x3d4b app_init
+0x3d55 app_lpm_init
+0x3d5f app_lpm_init0
+0x3d60 app_process_idle
+0x3d65 app_process_bt
+0x3d67 app_process_ble
+0x3d69 app_process_bb_event
+0x3d71 app_discard_event
+0x3d73 app_event_normal_process
+0x3d88 app_evt_bt_conn
+0x3d8f app_event_switch_success
+0x3d91 app_event_switch_fail_master
+0x3d9b app_process_bb_event_priority
+0x3d9d app_check_wake_lock
+0x3d9f app_will_enter_lpm
+0x3da1 app_event_linkkey_generate
+0x3da5 app_event_reconn_start
+0x3dac app_evt_setup_complete
+0x3db3 app_evt_hid_handshake
+0x3db7 app_event_enter_sniff
+0x3dbe app_event_exit_sniff
+0x3dc2 app_le_event_bb_connected
+0x3dc6 app_le_event_bb_disconn
+0x3dcb app_bb_event_hid_connected
+0x3dcf app_evt_button_long_pressed
+0x3dd3 app_event_ml2cap_conn_refused
+0x3dd7 app_evt_timer
+0x3dda app_evt_100ms_loop
+0x3de5 app_unsniff_delay_timer
+0x3ded app_discovery_timer
+0x3df6 app_bb_event_reconn_failed
+0x3df7 app_clear_reconnect_flag
+0x3dfb app_bb_event_bb_disconn
+0x3e00 app_bb_event_bb_reconn_disconn
+0x3e0a app_bb_hibernate
+0x3e0c app_disconn_reason_clear
+0x3e0f app_disconn_reason_flag_clear
+0x3e12 app_disconn_reason_collect_bt
+0x3e17 app_disconn_reason_collect_ble
+0x3e1d app_check_sniff
+0x3e20 app_initflag_store
+0x3e21 app_flag_store
+0x3e28 app_initflag_check
+0x3e32 app_start_auto_sniff
+0x3e35 app_get_lpm_wake_lock
+0x3e37 app_put_lpm_wake_lock
+0x3e39 app_lpm_wake_auto_lock
+0x3e3b app_lpm_wake_auto_lock_timer
+0x3e41 app_l2cap_flow_control_enable
+0x3e43 app_l2cap_flow_control_disable
+0x3e45 app_bt_set_pincode
+0x3e47 app_bt_role_switch
+0x3e49 app_bt_start_reconnect
+0x3e50 app_bt_reconnect_cancel
+0x3e52 app_bt_disconnect
+0x3e54 app_bt_start_discovery_short
+0x3e56 app_bt_start_discovery_led_blink
+0x3e57 app_bt_start_discovery
+0x3e59 app_bt_stop_discovery
+0x3e5d app_ble_start_direct_adv
+0x3e5f app_ble_stop_direct_adv
+0x3e61 app_ble_stop_adv
+0x3e63 app_ble_start_adv
+0x3e65 app_ble_start_scan
+0x3e67 app_ble_stop_scan
+0x3e69 app_ble_start_conn
+0x3e6b app_ble_disconnect
+0x3e6d app_ble_start_write
+0x3e6f app_led_start_blink
+0x3e71 app_led_on
+0x3e73 app_led_off
+0x3e75 app_enter_hibernate
+0x3e77 app_bt_sniff_exit
+0x3e79 app_bt_enter_sniff
+0x3e7b app_ble_store_reconn_info
+0x3e7d app_bt_store_reconn_info
+0x3e7f app_lpm_mult_enable
+0x3e81 app_lpm_mult_disable
+0x3e83 hci_rx_h4
+0x3e87 hci_rx_h4_1
+0x3e8a hci_h4_parse_packet
+0x3e95 hci_h4_parse_packet_wait_len
+0x3e9c hci_h4_parse_packet_wait
+0x3ea3 h4_rx_discard_packet
+0x3eac h4_get_rx_payload_len
+0x3eb1 h4_get_rx_payload_len_acl
+0x3eb3 h4_get_tx_ptr
+0x3eb7 h4_send_packet_event
+0x3eb9 h4_send_packet_acl
+0x3eba h4_send_packet
+0x3eca h4_send_acl_trigger_clear
+0x3ecd hci_init
+0x3ed4 hci_lpm_init
+0x3edd hci_reinit
+0x3ee4 hci_init_common
+0x3eed hci_sel_init
+0x3ef4 hci_rx_packet
+0x3efe hci_rx_packet_cont
+0x3f01 uart_send_byte
+0x3f06 process_hci_cmd
+0x3f0c process_hci_cmd_cont
+0x3f15 phci_grp_vendor_specific
+0x3f23 phci_grp_vendor_enter_lpm
+0x3f26 hci_enter_lpm
+0x3f29 hci_exit_lpm
+0x3f2d phci_grp_vendor_chipid
+0x3f32 phci_grp_vendor_baud
+0x3f36 phci_grp_vendor_patch
+0x3f40 phci_grp_vendor_patch_loop
+0x3f49 phci_grp_vendor_done
+0x3f4c phci_grp_vendor_done_loop
+0x3f58 phci_grp_vendor_patch_bad
+0x3f5a phci_grp_vendor_bdaddr
+0x3f5d phci_grp_vendor_mem
+0x3f65 phci_grp_vendor_eep
+0x3f70 hci_normal_reply
+0x3f73 hci_command_complete
+0x3f79 hci_send_event
+0x3f80 hci_send_event_raw
+0x3f82 hci_send_packet
+0x3f83 hci_send_commu_ready_event
+0x3f89 hci_get_cmd_complete_ptr
+0x3f8b hci_get_payload_ptr
+0x3f8d hci_get_packet_ptr
+0x3f8e hci_get_tx_ptr
+0x3f8f calc_tx_crc16
+0x3f91 crcloop
+0x3f9b cmd_exit
+0x3f9d cmd_check_plap
+0x3fa1 cmd_pair
+0x3fa6 cmd_pair_passive
+0x3fae cmd_in_sniff
+0x3fbd cmd_exit_sniff
+0x3fbf hci_idle_dispatch
+0x3fc6 uart_wake_up
+0x3fca hid_rx_process
+0x3fd7 hid_rx_process_hid_control
+0x3fdb hid_rx_process_virtual_cable_unplug
+0x3fe2 hid_rx_process_suspend
+0x3fe3 hid_rx_process_set_report
+0x3feb hid_rx_process_handshake
+0x3ff5 hid_handshake_event
+0x3ff7 hid_rx_process_data
+0x3ffa hid_rx_process_data_hid_kb
+0x4005 hid_malloc_tx_buff
+0x400c kb_init
+0x4021 kb_check_reconn_target
+0x4024 kb_3_check_reconn_target
+0x4027 kb_init_environment
+0x4032 kb_load_eeprom_param
+0x4034 kb_init_common
+0x4055 kb_led_int
+0x4058 kb_led_cap_init
+0x405c kb_led_num_init
+0x4060 kb_led_scl_init
+0x4064 kb_led_cap_delay_timer
+0x4069 kb_led_capslock
+0x4077 kb_enble_mult_timer
+0x407d kb_auto_disable_mult
+0x4080 kb_led_cap_status
+0x4082 kb_send_process
+0x4097 kb_debug_send_keydata
+0x40aa fn_test
+0x40ac bt_send_kb_data_by_report0
+0x40bb fill_kb_send_data
+0x40be store_key
+0x40c3 not_key_status
+0x40c4 store_key_next
+0x40c7 bt_send_kb_data_by_report1
+0x40d6 fill_kb_send_report1_data
+0x40e0 init_kb_no_data_timer
+0x40e3 kb_check_no_data_timer
+0x40ea kb_disconnect
+0x40f1 bt_send_kb_data_by_report0_ptr
+0x40f8 bt_send_kb_data_by_report1_ptr
+0x40ff android_search_m_key_releas
+0x4109 ios_screenshot
+0x410d android_search_m_key
+0x4119 kb_pincode
+0x4128 kb_pincode_rtn
+0x412a kb_pincode_bksp
+0x4134 kb_pincode_data
+0x413d kb_pincode_0
+0x4143 kb_send_pin
+0x414f kb_kscan_check_if_empty
+0x4153 kb_kscan_check_ghost
+0x4159 kb_kscan_process_event
+0x416b kb_kscan_check_report_data
+0x416f kb_kscan_store_a_key_data
+0x4179 kb_kscan_check_nextevent
+0x4180 kb_kscan_prepare_send
+0x4182 kb_kscan_release_a_key_data
+0x4187 kb_kscan_find_same_key_data
+0x418c kb_kscan_check_nextevent2
+0x4191 kb_kscan_read_statekey
+0x4196 kb_clear_keys
+0x419a kb_clean_kscan_fifo
+0x41a1 kb_process_idle
+0x41a3 kb_process
+0x41ac kb_ui_check_paring_button
+0x41bb check_bb_reconn_cancel
+0x41bf kb_read_gpio
+0x41dd kb_pairing_button_check
+0x41e6 kb_process_bb_event
+0x41f4 kb_bb_event_timer
+0x41f7 kb_bb_event_100ms_loop
+0x4201 kb_bb_event_reconn_failed
+0x420c kb_bb_disconnected
+0x4214 kb_event_light_state_pairing
+0x4217 kb_event_light_state_hibernate
+0x421a kb_bb_discon_clear_stack
+0x421d kb_check_hid_handshake_timer
+0x4223 kb_bb_event_discovery_btn
+0x422a led_cap_darking
+0x422d kb_3_0_bb_event_discovery_btn
+0x423a kb_stop_discovery
+0x423e kb_start_discovery
+0x4246 kb_discovery_timeout_sleep
+0x4247 kb_process_pincode
+0x424b kb_before_hibernate
+0x4251 kb_before_hibernate_wait
+0x4254 kb_before_hibernate_cont
+0x425b kb_wake_common
+0x4268 kb_process_lpm_before
+0x426d kb_hid_connected
+0x4271 kb_bt_hid_handshake
+0x427d store_current_status
+0x4284 read_current_status
+0x4291 kb_kscan_release_foundkey
+0x4299 kb_recover_kb_down_data
+0x429c kb_kscan_fn
+0x42a1 kb_kscan_fn_loop
+0x42b0 kb_get_fn
+0x42b3 select_system_led_timer
+0x42b9 kb_current_status_regroup
+0x42bd kb_clear_fn_lock_flag
+0x42c0 kb_kscan_check
+0x42ca kb_kscan_no_data
+0x42cc kb_down_data
+0x42cf kb_clear_data
+0x42d4 kb_kscan_read_event
+0x42ea l2cap_init
+0x42eb l2cap_init_work
+0x42ef l2cap_init_wake
+0x42fa process_rx_l2cap_pkt
+0x4307 l2cap_rx_multiplexing
+0x430d l2cap_rx_multiplexing0
+0x4312 l2cap_check_map
+0x431f set_pdata_0
+0x4321 l2cap_call_proc_signal
+0x4323 l2cap_call_proc_signal0
+0x432d l2cap_call_proc_sigal_pending
+0x433c l2cap_sdp_conn_succ
+0x4348 l2cap_reset_sdp_map
+0x4359 check_l2cap_map
+0x435b check_l2cap_map_loop
+0x4360 check_l2cap_map_used
+0x4364 check_l2cap_map_used2
+0x4366 l2cap_call_proc_sdp
+0x436e ml2cap_call_proc_sdp
+0x4372 l2cap_call_proc_sdp_common
+0x4379 l2cap_call_proc_hid
+0x437b l2cap_call_proc_rfcomm
+0x4382 l2cap_call_proc_no_reply
+0x4383 l2cap_rx_reset_state
+0x4388 l2cap_process_signal_pkt
+0x4390 l2cap_process_signal_pkt_loop
+0x4398 l2cap_process_one_signal
+0x43a7 l2cap_process_one_signal_rtn
+0x43a8 l2cap_proc_signal_info_req
+0x43b3 l2cap_proc_signal_info_req_reply
+0x43b6 l2cap_proc_signal_info_req_ext
+0x43bc l2cap_proc_signal_info_req_fix
+0x43c1 l2cap_proc_signal_info_req_common
+0x43c3 ml2cap_proc_signal_info_req
+0x43d2 l2cap_proc_signal_cmd_reject
+0x43d9 l2cap_proc_signal_cmd_reject_rtn
+0x43da l2cap_proc_signal_connect_req
+0x43ee l2cap_proc_signal_connect_req_sdp
+0x43f8 store_l2cap_req_param
+0x4404 restore_l2cap_req_param
+0x4410 l2cap_proc_signal_connect_req_rfcomm
+0x441c l2cap_proc_signal_connect_req_hid_ctrl
+0x4427 l2cap_proc_signal_connect_req_hid_int
+0x4433 send_connection_pending
+0x4437 send_connection_sdp_res
+0x443b send_connection_res
+0x443d send_connection_res0
+0x444f connect_suc
+0x4454 connect_pending
+0x4459 already_connected
+0x445b connect_req_update_byte_counts
+0x445f l2cap_proc_signal_connect_req_rtn
+0x4460 l2cap_proc_signal_connect_rsp
+0x4479 l2cap_proc_signal_connect_rsp_sdp
+0x447f l2cap_proc_signal_connect_rsp_rfcomm
+0x4485 l2cap_proc_signal_connect_rsp_hid_int
+0x448b l2cap_proc_signal_connect_rsp_hid_ctrl
+0x4491 l2cap_proc_signal_config_req
+0x44a9 l2cap_proc_signal_config_req_sdp
+0x44b3 l2cap_proc_signal_config_req_hid_ctrl
+0x44bd l2cap_proc_signal_config_req_hid_int
+0x44c7 l2cap_proc_signal_config_req_rfcomm
+0x44d0 l2cap_send_config_rsp
+0x44e7 l2cap_send_config_rsp_is_sdp
+0x44e8 l2cap_check_channel_state
+0x44f2 l2cap_send_config_req_sdp
+0x44f9 l2cap_send_config_req_rfcomm
+0x4500 l2cap_send_config_req_hid_ctrl
+0x4507 l2cap_send_config_req_hid_int
+0x450d l2cap_generate_config_req
+0x4526 l2cap_generate_config_req_rfcomm
+0x4528 l2cap_generate_config_req_done
+0x4530 l2cap_proc_signal_config_req_rtn
+0x4531 l2cap_proc_signal_config_rsp
+0x454a l2cap_proc_signal_config_rsp_sdp
+0x454e l2cap_proc_signal_config_rsp_rfcomm
+0x4552 l2cap_proc_signal_config_rsp_hid_ctrl
+0x4556 l2cap_proc_signal_config_rsp_hid_int
+0x455b l2cap_proc_signal_disconnect_req
+0x4577 l2cap_proc_signal_disconnect_req_hid_ctrl
+0x457d l2cap_proc_signal_disconnect_req_hid_int
+0x4583 l2cap_proc_signal_disconnect_req_sdp
+0x4589 l2cap_disconnect_hid_control_now
+0x458b l2cap_disconnect_hid_interrupt_now
+0x458f l2cap_disconnect_sdp_now
+0x4593 l2cap_proc_signal_disconnect_req_rfcomm
+0x4599 l2cap_disconnect_rfcomm_now
+0x459b l2cap_send_disconnect_rsp_pkt
+0x45a8 l2cap_proc_signal_disconnect_req_err_rtn
+0x45aa l2cap_proc_signal_disconnect_req_rtn
+0x45ac l2cap_proc_signal_disconnect_rsp
+0x45c7 l2cap_proc_signal_disconnect_rsp_sdp
+0x45cd l2cap_proc_signal_disconnect_rsp_rfcomm
+0x45d3 l2cap_proc_signal_disconnect_rsp_hid_ctrl
+0x45d9 l2cap_proc_signal_disconnect_rsp_hid_int
+0x45df l2cap_proc_signal_disconnect_rsp_rtn
+0x45e1 l2cap_proc_signal_disconnect_rsp_err_rtn
+0x45e2 l2cap_proc_signal_echo_req
+0x45f2 l2cap_proc_signal_echo_rsp
+0x45f3 l2cap_proc_signal_info_rsp
+0x45f4 l2cap_reject_command
+0x4601 l2cap_reset_rfcomm_channel_state
+0x4606 l2cap_reset_sdp_channel_state
+0x460b l2cap_reset_hid_ctrl_state
+0x4611 l2cap_reset_hid_int_state
+0x4617 l2cap_reset_hid_disconnected
+0x4619 l2cap_disconnect_interrupt_req
+0x4623 l2cap_disconnect_control_req
+0x462c l2cap_generate_disconnect_req
+0x463a ml2cap_send_signal_connect_req
+0x464a ml2cap_send_signal_config_req
+0x4660 ml2cap_send_signal_disconn_req
+0x4673 ml2cap_send_signal
+0x467c msdp_send_req_done
+0x4684 ml2cap_rx_multiplexing
+0x468f ml2cap_call_proc_signal
+0x4699 ml2cap_proc_one_comm_loop
+0x469f ml2cap_proc_one_comm
+0x46aa ml2cap_proc_signal_connect_req
+0x46ad ml2cap_proc_signal_cmd_reject
+0x46b3 mvptr
+0x46b7 ml2cap_proc_signal_connect_rsp
+0x46c5 ml2cap_proc_signal_connect_refused_result
+0x46c7 ml2cap_proc_signal_connect_rsp_mnosucc
+0x46c9 ml2cap_proc_signal_connect_rsp_sucessful
+0x46d9 ml2cap_proc_signal_connect_rsp_sdp
+0x46df ml2cap_proc_signal_connect_rsp_rfcomm
+0x46e5 ml2cap_proc_signal_connect_rsp_hid_ctrl
+0x46eb ml2cap_proc_signal_connect_rsp_hid_int
+0x46f0 mnosucc1
+0x46f1 mnosucc
+0x46f4 ml2cap_proc_signal_config_rsp
+0x470f ml2cap_proc_signal_config_rsp_sdp
+0x4713 ml2cap_proc_signal_config_rsp_rfcomm
+0x4717 ml2cap_proc_signal_config_rsp_hid_ctrl
+0x471b ml2cap_proc_signal_config_rsp_hid_int
+0x4720 mcfrsdone
+0x4721 mcrsdone1
+0x4722 mloop2
+0x4726 mcrsdone
+0x4727 ml2cap_proc_signal_config_req
+0x4747 ml2cap_proc_signal_config_req_sdp
+0x4755 ml2cap_proc_signal_config_req_sdp_nsndreq
+0x4758 ml2cap_proc_signal_config_req_rfcomm
+0x475e ml2cap_proc_signal_config_req_hid_ctrl
+0x4764 ml2cap_proc_signal_config_req_hid_int
+0x4769 mcfgrq_done
+0x4774 mloop1
+0x477a mcrqdone
+0x477b ml2cap_proc_signal_disconn_req
+0x4795 ml2cap_proc_signal_disconn_sdp
+0x479a ml2cap_proc_signal_disconn_hid_ctrl
+0x479c ml2cap_proc_signal_disconn_hid_int
+0x479e mclsrfc
+0x47a0 mclssdp
+0x47ae ml2cap_proc_signal_disconn_rsp
+0x47c3 ml2cap_proc_signal_disconn_rsp_sdp
+0x47c6 mdisdone
+0x47ca ml2cap_proc_send_reject
+0x47d6 l2cap_get_req_id
+0x47da l2cap_get_req_id_ok
+0x47dc l2cap_malloc
+0x47e4 l2cap_malloc_loop
+0x47ec l2cap_malloc_next
+0x47f2 l2cap_malloc_rtn
+0x47f5 l2cap_malloc_fifo_out
+0x47fb l2cap_malloc_free
+0x4803 l2cap_malloc_discard
+0x480e l2cap_malloc_is_fifo_full
+0x4812 l2cap_malloc_is_fifo_nearly_full
+0x4816 l2cap_malloc_is_fifo_empty
+0x481a l2cap_malloc_fifo_get_first_ptr
+0x481d l2cap_malloc_free_loop
+0x4821 l2cap_malloc_get_full_map
+0x4826 l2cap_malloc_get_full_map_loop
+0x482c l2cap_malloc_into_fifo
+0x483a l2cap_malloc_into_fifo_no_push
+0x483d l2cap_malloc_into_fifo_loop
+0x4845 l2cap_malloc_enough
+0x484b l2cap_malloc_enough_loop
+0x4856 l2cap_malloc_enough_end
+0x485c l2cap_malloc_enough_rtn
+0x485e l2cap_malloc_signal_channel
+0x4868 l2cap_get_signal_tx_buff
+0x486a l2cap_get_signal_tx_payload
+0x486c l2cap_malloc_sdp_channel
+0x4876 l2cap_get_sdp_tx_buff
+0x4878 l2cap_get_sdp_tx_payload
+0x487a l2cap_malloc_rfcomm_channel
+0x4889 l2cap_get_rfcomm_tx_buff
+0x488b l2cap_util_pdata_to_contw
+0x488e l2cap_lpm_save_calc_len
+0x4893 l2cap_lpm_save_calc_len_loop
+0x489f l2cap_lpm_save_calc_len_end
+0x48a1 l2cap_lpm_get_wake_lock
+0x48a3 l2cap_lpm_put_wake_lock
+0x48a5 l2cap_lpm_save_txbuf
+0x48b1 l2cap_lpm_save_txbuf_loop
+0x48ba l2cap_lpm_save_txbuf_nempty
+0x48c3 l2cap_lpm_load_txbuf
+0x48cb l2cap_lpm_load_txbuf_loop
+0x48da le_secure_connection_enable
+0x48de le_secure_connection_disable
+0x48e2 le_init_conn
+0x48f5 le_init_master
+0x4902 le_init_slave
+0x4911 le_dispatch
+0x4915 le_conn_dispatch
+0x491c le_master_dispatch
+0x492f le_master_disconn
+0x4932 le_slave_dispatch
+0x4940 le_slave_match
+0x4949 le_slave_transmit_last
+0x494c le_slave_cont
+0x494f le_slave_unsync
+0x4955 le_slave_more_data
+0x495b le_disconnect
+0x495d le_disconnect0
+0x4962 le_clear_connection_info
+0x4968 le_got_first_packet
+0x4976 le_enable
+0x497d le_disable
+0x4985 le_prep
+0x498e lerx_setfreq
+0x4993 letx_setfreq
+0x4994 letx_setfreq0
+0x4996 le_setfreq
+0x49a4 le_ctf_normal
+0x49a7 le_ctf_low
+0x49aa le_ctf_test
+0x49ad le_sca_map
+0x49bd le_adv_access
+0x49c4 le_setup
+0x49ce le_setup_master
+0x49d4 le_next_adv_channel
+0x49dc le_context_nexthop
+0x49ed le_nexthop_nowrap
+0x49ef le_calc_channel_map
+0x49f4 le_count_channels_loop
+0x49f6 le_count_channels_notused
+0x49fb le_map_channel
+0x4a02 le_map_channel_next
+0x4a09 le_map_channel_cont
+0x4a0b le_map_channel_loop
+0x4a0e le_map_channel_skip
+0x4a13 le_map_channel_end
+0x4a16 le_wait_tx
+0x4a19 le_wait_master
+0x4a1c le_receive_adv
+0x4a20 le_receive_slave
+0x4a26 le_receive_packet
+0x4a27 le_receive_rxon
+0x4a33 le_receive_on_attempt
+0x4a3a le_receive_skip
+0x4a47 lerx_loop
+0x4a4b lerx_nopayload
+0x4a5a le_transmit_receive_sifs
+0x4a63 le_transmit_norx
+0x4a65 le_transmit
+0x4a6d le_transmit0
+0x4a80 letr_loop
+0x4a83 letr_nopayload
+0x4a8a le_send_adv_ind
+0x4a9b le_send_adv_direct_ind
+0x4aab le_send_adv_transmit
+0x4ab3 le_send_scan_request
+0x4ac5 le_send_scan_response
+0x4ad4 le_connect_request
+0x4adf le_con_req_hop_retry
+0x4b1e le_init_adv
+0x4b22 le_update_param
+0x4b2d le_update_param_common
+0x4b43 le_update_channel_map
+0x4b51 le_acknowledge
+0x4b61 le_ack_unenc
+0x4b66 le_check_wak
+0x4b79 le_set_enc
+0x4b7d le_clear_enc
+0x4b89 le_wait_adv
+0x4b91 le_scan
+0x4bb4 le_create_conn
+0x4bc9 le_scan_check_sender_addr_type
+0x4bce le_xtype_fifo_count
+0x4bd0 le_xtype_fifo_is_empty
+0x4bd2 le_xtype_fifo_is_full
+0x4bd4 le_xtype_fifo_is_near_full
+0x4bd6 le_xtype_fifo_in
+0x4bd8 le_prepare_tx
+0x4bde le_prepare_tx_1
+0x4be2 le_prepare_tx_shutter
+0x4be9 le_send_empty_shutter
+0x4bed le_tx_4
+0x4bf0 in_le_tx_4
+0x4bf1 le_prepare_tx_cmd
+0x4bfb le_prepare_tx_ll
+0x4c0d le_prepare_l2cap
+0x4c18 le_prepare_smp0
+0x4c26 le_prepare_att
+0x4c4b le_send_empty_le_data_pre
+0x4c4d le_send_empty_le_data
+0x4c54 le_send_connection_update_req
+0x4c56 le_send_channel_map_req
+0x4c58 le_send_terminate_ind
+0x4c5a le_send_enc_req
+0x4c6b le_send_enc_rsp
+0x4c7e le_ltk_lost
+0x4c84 le_send_start_enc_req
+0x4c86 le_send_start_enc_rsp
+0x4c8f le_send_start_enc_rsp_end
+0x4c90 le_send_start_enc_rsp_common
+0x4c92 le_send_start_enc_rsp_shutter
+0x4c97 le_send_start_enc_rsp0
+0x4c9c le_send_unknown_rsp
+0x4ca0 le_send_feature
+0x4ca4 le_send_ping_response
+0x4ca6 le_send_version_ind
+0x4caa le_send_reject_ind
+0x4cae le_send_conn_param_req
+0x4cbb le_send_smp_pairing_request
+0x4cc3 le_send_smp_pairing_response
+0x4ccd le_send_smp_pairing_response_common
+0x4cd1 le_parse_smp_pairing_request_check_irk
+0x4cda le_send_smp_pairing_confirm
+0x4ce1 le_send_smp_pairing_confirm_sc
+0x4ce8 le_send_smp_pairing_random
+0x4ceb le_send_smp_mrandom
+0x4ced le_send_smp_pairing_failed
+0x4cf2 le_send_smp_encryption_information
+0x4d01 le_send_smp_encryption_information_shutter
+0x4d10 le_send_smp_master_identification
+0x4d17 le_send_smp_master_identification_only
+0x4d19 le_send_smp_master_identification_common
+0x4d22 le_send_smp_master_identification_shutter
+0x4d27 le_send_smp_identity_information
+0x4d2d le_send_smp_identity_address_information
+0x4d32 le_send_smp_signing_information
+0x4d35 le_send_smp_security_request
+0x4d39 le_send_smp_pairing_public_key
+0x4d4e le_send_public_key_continue
+0x4d58 le_send_smp_publickey_continue_common
+0x4d5e le_send_public_key_continue2
+0x4d64 le_send_smp_pairing_dhkey_check
+0x4d69 le_send_smp_128
+0x4d6e le_send_att_error_response_notfound
+0x4d6f le_send_att_error_response
+0x4d75 le_send_att_exchange_mtu_req
+0x4d78 le_send_att_find_information_request
+0x4d7d le_send_att_find_information_response
+0x4d81 le_send_att_find_information_res_loop
+0x4d8b le_send_att_find_information_res_cont
+0x4d8e le_send_att_find_information_res_next
+0x4d91 le_send_att_find_information_res_end
+0x4d93 le_send_att_find_by_type_value_request
+0x4d9d le_start_end_handle_check_1
+0x4da4 le_start_end_handle_check_1_fail
+0x4da7 le_send_att_find_by_type_value_response
+0x4db7 le_send_att_find_by_type_value_res_primary
+0x4dbc le_send_att_find_primary_search_loop
+0x4dcc le_send_att_find_primary_search_loop1
+0x4dd0 le_send_att_error_response_notfound2
+0x4dd3 le_send_att_find_primary_search_end_start_handle_found
+0x4ddb le_send_att_find_primary_search_end_ending_handle_found
+0x4de1 le_send_att_find_primary_search_end
+0x4dec le_send_att_read_by_type_request
+0x4df4 le_send_att_read_by_type_response
+0x4e02 le_send_att_read_by_type_response_loop
+0x4e11 le_send_att_read_by_type_response_next_handle
+0x4e13 le_send_att_read_by_type_response_end
+0x4e15 le_send_att_read_by_type_res_found_next
+0x4e28 le_send_att_read_by_type_write_properties
+0x4e2f le_send_att_read_by_type_write_uuid
+0x4e3d le_send_att_read_by_type_res_not_characteristic
+0x4e3f le_send_att_read_by_type_res_not_char_loop
+0x4e45 le_check_if_name_uuid
+0x4e4d le_send_att_read_by_type_res_not_name
+0x4e4e le_send_att_read_by_type_res_not_char_common
+0x4e56 le_send_att_read_by_type_res_not_char_next
+0x4e58 le_send_att_read_request
+0x4e60 le_send_att_read_response
+0x4e66 le_send_att_read_response_common
+0x4e6e le_send_att_read_response_less
+0x4e71 le_send_att_read_response_error_insufficient_authentication
+0x4e77 le_send_att_read_blob_request
+0x4e7c le_send_att_read_blob_response
+0x4e87 le_send_att_read_blob_response_less
+0x4e8b le_send_att_read_multiple_request
+0x4e92 le_send_att_read_multiple_response
+0x4e98 le_send_att_read_multiple_response_loop
+0x4ea3 le_copy_att_value_loop_3
+0x4eab le_send_att_read_multiple_response_end
+0x4eb0 le_send_att_read_multiple_response_end_1
+0x4eb6 le_send_att_read_multiple_response_fail
+0x4eb8 le_send_att_read_by_group_type_request
+0x4ec0 le_send_att_read_by_group_type_response
+0x4ecd le_send_att_read_by_group_type_response_loop
+0x4edd le_send_att_read_by_group_type_store_write_record
+0x4ee8 le_send_att_read_by_group_type_store_record
+0x4eed le_send_att_read_by_group_type_next_handle
+0x4eef le_send_att_read_by_group_type_last_find
+0x4ef1 le_send_att_read_by_group_type_end0
+0x4ef4 le_send_att_read_by_group_type_end1
+0x4ef8 le_send_att_read_by_group_type_end_common
+0x4efb le_att_next_handle
+0x4eff le_att_check_handle_end
+0x4f03 le_att_same_type
+0x4f05 le_att_check_same_common
+0x4f0b le_att_same_uuid
+0x4f0e le_store_att_record
+0x4f13 le_send_auto_len_by_mem
+0x4f15 le_write_att_record
+0x4f1a le_write_att_record_common
+0x4f1e le_send_att_write_request
+0x4f25 le_send_att_write_response
+0x4f27 le_send_att_prepare_write_request
+0x4f29 le_send_att_continue
+0x4f2e le_send_att_notify_continue
+0x4f30 le_send_att_prepare_write_response_continue
+0x4f46 le_send_att_prepare_write_response
+0x4f59 le_send_not_fill_l2cap_len
+0x4f5e le_send_att_insert_continue
+0x4f62 le_send_att_insert_cont_next
+0x4f66 le_send_att_execute_write_request
+0x4f68 le_send_att_execute_write_response
+0x4f6a le_att_check_notification_enable
+0x4f77 le_send_att_handle_value_notification
+0x4f79 le_send_att_handle_value_indication
+0x4f7b le_send_att_handle_value_confirmation
+0x4f7d le_send_att_write_command
+0x4f7f le_send_att_signed_write_command
+0x4f81 le_send_autolen
+0x4f87 le_send_empty
+0x4f89 le_send_packet
+0x4f90 le_send_non_l2cap
+0x4f92 le_send_non_l2cap1
+0x4f93 le_send_non_l2cap2
+0x4fa0 le_send_no_txlen
+0x4fa5 le_parse
+0x4fb3 le_parse0
+0x4fcb le_parse_l2cap
+0x4fd4 le_parse_continue_att
+0x4fdb le_parse_l2cap_continue_common
+0x4fe6 le_parse_l2cap_continue_write_command
+0x4fea le_parse_l2cap_continue_write_request
+0x4fee le_parse_l2cap_continue_prepare_write_request
+0x4ffb le_parse_smp
+0x500d le_parse_att
+0x501f le_parse_connection_update_req
+0x502b le_parse_channel_map_req
+0x5033 le_parse_terminate_ind
+0x5036 le_parse_terminate_ind_common
+0x5039 le_parse_enc_req
+0x504a le_parse_enc_rsp
+0x504f le_parse_start_enc_req
+0x5054 le_parse_start_enc_rsp
+0x5059 le_parse_unknown_rsp
+0x505a le_parse_feature_req
+0x505c le_parse_feature_rsp
+0x505d le_parse_pause_enc_req
+0x5062 le_parse_pause_enc_rsp
+0x5063 le_parse_ping_req
+0x5065 le_parse_version_ind
+0x5068 le_parse_reject_ind
+0x5069 le_parse_smp_pairing_request
+0x5078 le_set_tk_0
+0x507b le_parse_smp_pairing_request_shutter
+0x507d le_genernate_tk
+0x5086 le_check_master_support_secure_connect
+0x508b le_parse_smp_pairing_response
+0x5090 le_parse_smp_pairing_confirm
+0x509a le_parse_smp_pairing_confirm_secure_passkey
+0x50a0 le_parse_smp_pairing_random
+0x50a6 le_pairing_failed
+0x50a8 le_parse_smp_pairing_failed
+0x50ab le_parse_smp_pairing_random_sc
+0x50b6 le_parse_smp_pairing_random_sc_passkey
+0x50c0 le_parse_smp_pairing_random_success
+0x50c9 le_parse_smp_public_key
+0x50d0 le_parse_smp_dhkey_check
+0x50d5 le_parse_smp_encryption_information
+0x50d7 le_parse_smp_master_identification
+0x50d8 le_parse_smp_identity_information
+0x50e0 le_parse_smp_identity_address_information
+0x50e3 le_parse_smp_signing_information
+0x50e4 le_parse_smp_security_request
+0x50e5 le_parse_att_exchange_mtu_response
+0x50e8 le_parse_att_exchange_mtu_request
+0x50eb le_parse_att_find_information_request
+0x50ee le_parse_att_find_by_type_value_request
+0x50f8 le_parse_att_read_by_type_request
+0x50fc le_get_search_handle_start_end_common
+0x5101 le_get_search_att_type
+0x5103 le_get_search_common
+0x5105 le_get_search_common2
+0x5109 le_get_search_att_uuid
+0x510c le_parse_att_read_request
+0x5110 le_parse_att_read_blob_request
+0x5114 le_parse_att_read_multiple_request
+0x511a le_parse_att_read_by_group_type_request
+0x511e le_parse_att_write_command
+0x5120 le_parse_att_write_request
+0x5123 le_parse_att_write_request_end
+0x5125 le_check_long_packet_patch
+0x512f le_parse_att_write_common
+0x513c le_parse_att_write_common0
+0x5140 le_parse_att_write_common1
+0x5142 le_parse_att_prepare_write_request
+0x5157 le_parse_att_prepare_write_request0
+0x515b le_parse_att_prepare_write_request1
+0x5169 le_parse_att_prepare_write_request_end
+0x516b le_parse_att_execute_write_request
+0x516d le_writeatt_cb
+0x5170 le_supervision_update
+0x5179 le_supervision_flush
+0x517c le_adv
+0x517d le_adv_loop
+0x5193 le_adv_not_match
+0x5199 le_receive_window_size
+0x51af le_parse_connect_req
+0x51e0 le_init_attlist_search
+0x51ea le_att_handle_inrange
+0x51f3 le_att_handle_blank
+0x51f5 le_att_get_handle_ptr
+0x51f8 le_att_get_handle_ptr2
+0x51fc le_att_get_handle_loop1
+0x5205 le_att_get_handle_ptr_found
+0x5208 le_att_get_short_uuid_ptr
+0x520c le_att_get_short_uuid_loop
+0x5217 le_att_get_handle_info_from_ptr
+0x521a le_att_get_handle_info
+0x521f le_att_get_handle_loop
+0x5228 le_att_unfind_handle
+0x522a le_att_finded_handle
+0x5234 le_modified_name
+0x5238 le_modified_name_att_list
+0x5247 le_name_length_longer_than_att
+0x524a le_modified_name_adv
+0x5257 le_modified_name_adv_and_scan
+0x526a le_modified_name_adv_and_scan_store_data
+0x5270 le_modified_name_adv_and_scan_name_overflow
+0x5272 le_modified_name_adv_loop
+0x527d le_modified_name_adv_loop2
+0x5281 le_modified_name_adv_found_name
+0x5283 memcpy_empty
+0x5287 le_lpm_set_mult
+0x528c le_lpm_set_mult_attempt
+0x529a le_lpm_lost
+0x52a0 le_clean_att_list_handle_enable
+0x52a9 le_secure_connect_sm
+0x52b8 le_sc_passkey_wait_confirm
+0x52c2 le_sc_wait_confirm_gkey
+0x52c7 le_sc_confirm_gkey_ok
+0x52ca le_sc_receive_dhkey
+0x52ce le_dhkey_ready
+0x52d2 le_dhkey_ready_common
+0x52d8 le_dhkey_check_fail
+0x52d9 le_sc_confirm_gkey_ok_passkey
+0x52da le_dhkey_check_ok
+0x52e1 le_sc_send_public_key
+0x52e4 le_sc_ready_send_pairing_confirm
+0x52e6 le_sc_send_public_key_passkey
+0x52e8 le_sc_receive_public_key
+0x52ec le_public_key_ready
+0x52f0 le_sc_wait_send_public_key
+0x52f4 le_public_key_ready_send
+0x52fa le_pairing_public_key_continue
+0x5307 le_parse_continue
+0x530c init_lmp
+0x530d init_lmp_work
+0x531b init_lmp_reinit
+0x531e parse_rx_done
+0x531f parse_lmp
+0x536b reject_unknown_packet
+0x536c reject_lmp_packet
+0x536e parse_lmp_clkoffset_req
+0x5370 parse_enc_key_size_mask_req
+0x5372 parse_lmp_set_afh
+0x537f parse_lmp_escape
+0x5391 reject_unknown_ext_packet
+0x5394 parse_lmpext_chn_classification_req
+0x5397 parse_lmpext_iocap_req
+0x539a parse_lmpext_iocap_res
+0x539c iocap_lmpext_load
+0x53a0 iocap_lmpext_common
+0x53a2 parse_lmpext_accepted
+0x53a7 parse_lmpext_not_accepted
+0x53ac parse_lmpext_accepted_ptt
+0x53b0 parse_lmpext_not_accepted_ptt
+0x53b8 parse_lmpext_pause_encrypt
+0x53bb parse_lmpext_pause_encrypt_slave
+0x53bd parse_lmpext_resume_encrypt
+0x53bf parse_lmpext_features_req
+0x53c1 parse_lmpext_features_res
+0x53c7 parse_lmpext_features_res_not_hci
+0x53cb parse_lmp_accepted
+0x53dd parse_lmp_not_accepted
+0x53eb parse_lmp_accepted_switch
+0x53ee parse_lmp_not_accepted_switch
+0x53f4 parse_lmp_accepted_hostconn
+0x53fa parse_lmp_accepted_hostconn_ctn
+0x53fe parse_lmp_not_accepted_hostconn
+0x5403 parse_lmp_accepted_inrand
+0x540a parse_lmp_accepted_enc_mode
+0x5410 parse_lmp_accepted_enc_keysize
+0x5411 parse_lmp_accepted_start_enc
+0x5419 parse_lmp_accepted_stop_enc
+0x541a parse_lmp_not_accepted_aurand_send_detach
+0x541d parse_lmp_not_accepted_inrand
+0x5423 parse_lmp_inrand_key_missing
+0x5426 parse_lmp_not_accepted_name_req
+0x5427 parse_lmp_not_accepted_simple_pairing_number
+0x542a parse_lmp_not_accepted_dhkey_check
+0x542d parse_lmp_not_accepted_unsniff_req
+0x542f parse_lmp_accepted_unsniff_req
+0x5432 parse_lmp_accepted_sniff_req
+0x543e parse_lmp_not_acdcept_sniff_req
+0x5440 parse_lmp_crypt_key
+0x5443 parse_lmp_setup_complete
+0x5449 parse_lmp_max_slot
+0x544a parse_lmp_max_slot_req
+0x5452 parse_lmp_detach
+0x5454 accept_lmp_msg
+0x5456 parse_lmp_incr_power
+0x5458 parse_lmp_decr_power
+0x545a parse_lmp_version_res
+0x545e parse_lmp_auto_rate
+0x545f parse_lmp_in_rand
+0x546a parse_lmp_inrand_res
+0x546e pop_tid_follow
+0x5472 push_tid_follow
+0x5476 parse_lmp_au_rand_moudle
+0x547b parse_lmp_au_rand
+0x5486 parse_lmp_sres
+0x548f authentication_ok
+0x5493 authentication_ok_common
+0x549d authentication_ok_conn_sm
+0x54a2 parse_lmp_comb_key
+0x54ac parse_lmp_name_res
+0x54bc parse_lmp_name_res_end
+0x54c1 parse_lmp_name_req
+0x54c5 parse_lmp_conn_req
+0x54c6 parse_lmp_timing_accuracy_req
+0x54c8 parse_lmp_features_req
+0x54ca parse_lmp_version_req
+0x54cc parse_lmp_supervision_timeout
+0x54cd parse_lmp_sniff_subrating_req
+0x54db parse_lmpext_packet_type_table_req
+0x54e6 parse_lmp_min_power
+0x54e7 parse_lmp_page_mode_req
+0x54e8 parse_lmp_page_scan_mode_req
+0x54e9 parse_lmp_slot_offset
+0x54ec parse_lmp_sniff_req_check_sniff_para
+0x54f2 parse_lmp_sniff_req
+0x5504 set_big_value_to_attempt
+0x5507 lmp_reject_sniff
+0x5509 parse_lmp_start_encryption_req
+0x550d parse_lmp_stop_encryption_req
+0x550f parse_lmp_switch_req
+0x5514 parse_lmp_switch_req_not_accept
+0x5518 parse_lmp_switch_req_clear_mark
+0x551b parse_lmp_switch_accept
+0x5521 parse_lmp_use_semi_permanend_key
+0x5522 parse_lmp_unsniff_req
+0x5527 parse_lmp_encapsulated_header
+0x5530 parse_lmp_encapsulated_header_master
+0x5533 parse_lmp_encapsulated_header_reject
+0x5535 parse_lmp_accepted_encapsulated_header
+0x5537 parse_lmp_accepted_simple_pairing_number
+0x553a parse_lmp_accepted_simple_pairing_number_common
+0x553e parse_lmp_accepted_simple_pairing_number_ssp_pin
+0x5542 parse_lmp_accepted_simple_pairing_number_passkey
+0x5548 authentication_passkey
+0x5552 authentication_passkey_end
+0x5554 parse_lmp_accepted_dhkey_check
+0x5555 pairing_success
+0x555a parse_lmp_accepted_dhkey_check_common
+0x5562 parse_simple_pairing_confirm
+0x5568 parse_lmp_encapsulated_payload
+0x556c parse_encapsulated_payload_master
+0x5579 parse_lmp_encapsulated_payload_completed
+0x557f parse_lmp_encapsulated_payload_reject
+0x5581 parse_lmp_accepted_encapsulated_payload
+0x5585 parse_lmp_encapsulated_payload_all_accepted
+0x558c parse_lmp_encapsulated_payload_all_accepted_get_passkey
+0x558e parse_lmp_encapsulated_payload_all_accepted_master
+0x558f parse_lmp_simple_pairing_number
+0x5593 parse_lmp_simple_pairing_number_master
+0x559d parse_lmp_simple_pairing_number_master0
+0x559f parse_lmp_simple_pairing_number_reject
+0x55a1 parse_dhkey_check
+0x55a5 parse_dhkey_check_master
+0x55ac number_comparison_successed
+0x55b1 parse_dhkey_check_master0
+0x55b4 parse_lmp_dhkey_check_reject
+0x55b6 number_comparison_mode
+0x55bb comparison_result
+0x55be parse_lmp_clkoffset_res
+0x55bf parse_lmp_encryption_mode_req
+0x55ca parse_lmp_features_res
+0x55cb parse_lmp_features_res_not_hci
+0x55d1 parse_lmp_send_conn
+0x55d3 parse_lmp_test_activate
+0x55d8 parse_lmp_test_control
+0x55dd parse_lmp_test_xor
+0x55f1 parse_lmp_test_control_exit
+0x55f6 parse_lmp_test_control_pattern
+0x55fd parse_lmp_test_control_loopback_nowhite
+0x55fe parse_lmp_test_control_loopback
+0x560a parse_lmp_test_control_pause
+0x5610 lmp_copy_rand
+0x5613 lmp_generate_key
+0x5615 lmp_start_encryption
+0x5618 lmp_accept_inrand
+0x561d lmp_disconnect
+0x5621 send_lmp
+0x5628 send_lmp0
+0x5655 send_lmp_error
+0x5657 send_lmp_escape
+0x5662 send_lmp_accepted
+0x5672 send_create_conn_start_l2cap_timer_sm
+0x5678 send_lmp_accept_sniff_req
+0x5679 send_lmp_not_accepted
+0x5681 send_not_accept_aurand
+0x5686 send_lmpext_accepted
+0x568f send_lmpext_not_accepted
+0x5699 send_lmp_accepted_inrand
+0x569d send_lmp_accepted_enc_mode
+0x56a4 send_lmp_accepted_enc_start
+0x56a6 send_lmp_accepted_enc_exit
+0x56a8 send_lmp_accepted_enc_key
+0x56ab send_lmp_accepted_connection
+0x56b1 send_lmp_accept_dhkey_check
+0x56b2 send_lmpext_features_res
+0x56bd send_lmpext_io_cap_res
+0x56c8 responder_iocap_keyboard_only
+0x56ce responder_iocap_display_yesno
+0x56d4 responder_iocap_no_input_no_output
+0x56da set_ssp_mode_justwork
+0x56dc set_ssp_mode_numeric_comparison
+0x56de set_ssp_mode_passkey
+0x56e0 send_lmp_io_cap_req
+0x56e5 send_lmpext_sniff_subrating_req
+0x56e6 send_lmpext_sniff_subrating_res
+0x56ef send_lmp_name_res
+0x56f7 send_lmp_name_res_offset_ok
+0x56ff send_lmp_timing_accuracy_res
+0x5704 send_lmp_clkoffset_res
+0x570a send_lmp_clkoffset_res_master
+0x570e send_lmp_version_res
+0x5713 send_lmp_features_res
+0x5718 send_lmpext_features_req
+0x5723 send_lmpext_packet_type_table_req
+0x572f ssp_enable
+0x5737 ssp_disable
+0x573f afh_init
+0x5749 afh_open_all_channels
+0x574d afh_reset_map
+0x5754 afh_clear_error_counter
+0x5757 afh_set_send_flag
+0x575b send_lmpext_pause_encryption_req
+0x575f send_lmp_detach
+0x5764 prepare_disconnect
+0x5769 send_lmp_no_payload
+0x576c send_lmp_nopayload_reply
+0x576f send_lmp_encryption_mode_req
+0x5777 send_lmp_superto
+0x577c send_lmp_name_req
+0x5782 send_lmp_test_control
+0x5786 send_lmp_test_control_loop
+0x578b send_lmp_quality_of_service_req
+0x578c send_lmp_unit_key
+0x578d send_lmp_slot_offset
+0x579e send_lmp_slot_offset_reply
+0x57a2 send_lmp_switch_req
+0x57a6 switch_on_native
+0x57a7 switch_slack
+0x57b1 send_lmp_sniff_req
+0x57b7 send_lmp_timing_accuracy_req
+0x57bc send_lmp_unsniff_req
+0x57bf send_lmp_max_slot
+0x57c4 send_lmp_max_slot_req
+0x57c9 send_lmp_inc_power
+0x57ce send_lmp_setup_complete
+0x57dd send_lmp_setup_complete_has_sent
+0x57df send_lmp_version_req
+0x57e4 send_lmp_features_req
+0x57e9 sp_master_send_io_cap_get
+0x57ee sp_master_send_io_cap_send
+0x57f2 sp_master_send_lmp_encapsulated_header
+0x57f6 sp_master_commitment_compare
+0x5800 sp_master_commitment_compare_success
+0x5804 sp_master_send_lmp_simple_pairing_number
+0x5806 sp_send_lmp_encapsulated_header
+0x5808 send_lmp_encapsulated_header
+0x5814 send_lmp_encapsulated_payload
+0x5823 sp_send_lmp_simple_pairing_comfirm
+0x5826 send_lmp_simple_pairing_comfirm
+0x582e sp_send_lmp_simple_pairing_number
+0x5830 send_lmp_simple_pairing_number
+0x583c master_sp_sm_end
+0x583d sp_aurand_send
+0x5842 master_sp_send_lmp_dhkey_check
+0x5843 sp_send_lmp_dhkey_check
+0x5845 send_lmp_dhkey_check
+0x584f send_lmp_enc_key_size_mask_res
+0x5854 send_lmp_auto_rate
+0x5855 send_lmp_clkoffset_req
+0x5856 send_lmp_quality_of_service
+0x5857 send_lmp_test_activate
+0x5858 send_lmp_comb_key
+0x5862 send_lmp_inrand
+0x5865 send_lmp_rand
+0x586d send_lmp_aurand
+0x5873 send_lmp_aurand_notpairing
+0x5874 send_lmp_aurand_common
+0x5876 send_lmp_sres
+0x5885 send_lmp_sres_master
+0x5887 send_lmp_sres_startenc
+0x588d send_lmp_sres_startenc_slave
+0x5891 send_lmp_start_encryption
+0x5898 send_lmp_stop_encryption_req
+0x589b send_lmp_encryption_key_size_req
+0x58a1 msg_send_lmp
+0x58a9 send_lmpext
+0x58b0 send_lmp_follow
+0x58b6 send_lmp_tid
+0x58b9 send_lmp_reply
+0x58bb send_lmp_request
+0x58bc send_lmp_end
+0x58c0 send_lmp_exit
+0x58c5 lmo_fifo_check
+0x58ca lmo_fifo_process
+0x58d1 lmo_fifo_process_lmo0empty
+0x58db lmo_fifo_process_lmo2to1
+0x58e1 lmo_fifo_process_lmo1_empty
+0x58ec special_tid_store
+0x58f6 tid_reply
+0x58fa tid_initiate
+0x58fe tid_check
+0x5903 tid_set_reply
+0x5907 check_localsm
+0x590a setlocalsm_master
+0x590e setlocalsm_slave
+0x5912 check_localsm_master
+0x5916 generate_random_number
+0x5917 generate_random
+0x5918 generate_random_loop
+0x591c generate_linkkey
+0x5926 process_conn_sm
+0x592a process_conn_sm_continue
+0x5946 host_create_conn_done
+0x594c host_conn_judge_encrypt
+0x5950 host_create_conn_done_wait
+0x5955 host_create_conn_auth
+0x595b host_create_conn_auth_wait
+0x595c host_create_conn_pairing
+0x5961 host_create_conn_pairing_wait
+0x5962 host_creat_conn_send_feat_ext
+0x5965 host_create_conn_send_version
+0x5968 host_creat_conn_wait_switch
+0x5970 host_create_conn_switch_accept
+0x5972 host_create_conn_send_features
+0x5975 host_create_conn_send_switch
+0x597b host_create_conn_send_conn_req
+0x5980 host_create_conn_wait_accept
+0x5986 host_create_conn_resend
+0x5988 host_create_conn_waiting
+0x5989 host_create_conn_switch
+0x5992 host_create_conn_send_setup_complete
+0x5995 host_create_conn_wait_setup_complete
+0x5999 host_create_conn_wait_setup_complete_rtn
+0x599b host_create_conn_master_detach
+0x59a0 host_create_conn_send_detach
+0x59a4 host_create_conn_auth_pair
+0x59a7 host_create_conn_sm_done
+0x59a9 host_create_conn_auth_pair_true
+0x59b5 host_create_conn_auth_pair_nokey
+0x59bc host_create_conn_auth_pair_wait
+0x59bd host_create_conn_encrypt
+0x59c1 host_create_conn_encrypt_start
+0x59c6 host_create_conn_encrypt_wait
+0x59ca host_create_conn_encrypt_wait_clear
+0x59cc host_auth
+0x59d1 remote_auth
+0x59d7 pincode_reinit
+0x59dd module_init
+0x59fa module_lpm_uart_init
+0x5a12 module_lpm_init
+0x5a13 module_gpio_init
+0x5a18 module_lpm_lock
+0x5a1c module_app_dispatch
+0x5a22 module_process_bb_event
+0x5a3e module_process_bb_event_disconned
+0x5a44 module_process_spp_connected
+0x5a4b module_spp_disconnected
+0x5a4f module_sniff_param_check
+0x5a55 module_sniff_param_check_unsniff
+0x5a5a module_process_exit_sniff
+0x5a5b module_process_setup_complete
+0x5a5c module_process_bb_even_le_disconn
+0x5a5e module_process_evt_pincode_req
+0x5a5f module_process_unsniff_accept
+0x5a62 module_process_unsniff_not_accept
+0x5a63 module_process_le_conn
+0x5a67 module_process_bb_conn
+0x5a69 module_disconn_start
+0x5a6b module_set_conn_pin_high
+0x5a6d module_conn_start
+0x5a6f module_stop_adv_discovery
+0x5a76 module_set_conn_pin_low
+0x5a78 module_process_with_credit
+0x5a7b module_process
+0x5a93 module_hci_in_excp
+0x5a96 module_hci_release_except
+0x5aa5 module_hci_dicard_packet
+0x5aa9 module_hci_dicard_bytes
+0x5aaa module_hci_cmd_control
+0x5acc module_hci_cmd_set_bt_addr
+0x5ad1 module_hci_cmd_set_le_addr
+0x5ad6 module_hci_cmd_set_visibility
+0x5adf module_start_adv_discovery_by_command
+0x5ae5 moudle_start_adv_by_command
+0x5aec module_hci_cmd_set_bt_name
+0x5af5 module_hci_cmd_set_le_name
+0x5aff module_hci_cmd_receive_spp_data
+0x5b0d module_hci_cmd_pass_init_ng_rx_len_all
+0x5b0f module_hci_cmd_spp_exut_sniff
+0x5b11 module_hci_cmd_get_current_packet_len_and_remain_len
+0x5b17 module_hci_cmd_get_current_patcket_len
+0x5b20 module_hci_command_tx_spp_tx_complete
+0x5b23 module_hci_cmd_receive_le_data
+0x5b38 module_hci_cmd_gatt_notify_seperate
+0x5b47 module_hci_cmd_gatt_notify_clear_len
+0x5b4a module_hci_cmd_gatt_notify_start_packet
+0x5b55 module_hci_cmd_gatt_notify_start_packet1
+0x5b5e module_hci_cmd_notify_start_packet_mtu23
+0x5b60 module_le_tx_update_data
+0x5b71 module_le_tx_no_continue
+0x5b78 module_le_send_att_notify_common
+0x5b8c module_le_send_non_l2cap_last
+0x5b8e module_set_le_tx_data_flag
+0x5b91 module_clear_le_tx_data_flag
+0x5b94 module_le_check_if_send_once_more
+0x5b9a module_le_send_att_insert_continue
+0x5b9e module_le_send_att_insert_cont_next
+0x5ba2 module_le_tx_update_notify_continue
+0x5bb9 module_le_send_not_fill_l2cap_len
+0x5bbe module_le_send_md_notify
+0x5bd3 module_hci_cmd_inquire_status
+0x5bd4 module_hci_cmd_set_pairing_mode
+0x5bdb module_hci_pairing_pincode_mode
+0x5bde module_hci_pairing_just_work_mode
+0x5bdf module_hci_sspairing_mode
+0x5be4 module_hci_pairing_passkey
+0x5be6 module_hci_pairing_numeric_comparison
+0x5be8 module_hci_cmd_set_pincode
+0x5bf0 module_hci_cmd_set_uart_control_mode
+0x5bf6 module_hci_cmd_set_uart_baud
+0x5bfe module_hci_cmd_set_uart_baud_ok
+0x5c02 module_hci_cmd_version_request
+0x5c06 module_hci_event_set_cmd_send_response
+0x5c0a module_hci_cmd_bt_disconnect
+0x5c0c module_hci_cmd_bt_disconnect_doing
+0x5c0e module_hci_cmd_ble_disconnect
+0x5c10 module_hci_cmd_ble_disconnect_doing
+0x5c12 module_hci_cmd_set_nvram
+0x5c19 module_hci_cmd_confirm_gkey
+0x5c24 dhkey_not_accept
+0x5c27 module_hci_cmd_spp_number_comparison_result_is1
+0x5c29 module_hci_cmd_set_credit_given
+0x5c32 module_hci_cmd_auto_adv
+0x5c38 module_hci_cmd_auto_adv_loop
+0x5c42 module_hci_cmd_auto_adv_store_adv
+0x5c4c module_hci_cmd_auto_adv_store_scan
+0x5c55 module_hci_cmd_auto_adv_store_common
+0x5c62 module_hci_cmd_auto_adv_adv_analys
+0x5c67 module_hci_cmd_power_request
+0x5c6d module_hci_cmd_power_set
+0x5c74 module_hci_cmd_passkey_entry
+0x5c7a module_hci_cmd_set_gpio
+0x5c80 module_set_gpio_input
+0x5c85 module_set_gpio_output
+0x5c8b module_hci_cmd_read_gpio
+0x5c93 module_hci_cmd_le_set_pairing_mode
+0x5ca2 module_le_set_pairing_mode_secure_justwork
+0x5ca4 module_le_set_pairing_mode_secure_numeric
+0x5ca7 module_le_set_pairing_mode_secure_passkey
+0x5ca9 module_le_set_no_pairing
+0x5caa module_le_set_noinputnooutput
+0x5cac module_le_set_pairing_mode_lagacy_just_work
+0x5cae module_le_set_pairing_mode_lagacy_passkey
+0x5caf module_le_set_displayonly
+0x5cb1 module_hci_cmd_le_set_adv_data
+0x5cb9 module_hci_cmd_le_set_scan_data
+0x5cc1 module_hci_cmd_le_send_conn_update_req
+0x5ccb module_hci_cmd_le_start_pairing
+0x5cd3 module_hci_cmd_le_confirm_gkey
+0x5cda module_hci_cmd_le_confirm_gkey_ok
+0x5cdc module_hci_cmd_le_confirm_gkey_fail
+0x5cde module_hci_event_receive_invalid_cmd
+0x5ce1 module_hci_event_receive_valid_cmd
+0x5ce4 module_hci_event_spp_connect
+0x5ce6 module_hci_event_le_connect
+0x5ce8 module_hci_event_spp_disconnect
+0x5cea module_hci_event_le_disconnect
+0x5cec module_hci_event_set_cmd
+0x5cf9 module_hci_event_receive_spp_data
+0x5d03 module_hci_event_receive_le_data
+0x5d0e module_hci_event_enter_standby_mode
+0x5d0f module_hci_event_enter_standby_mode_len0
+0x5d12 module_hci_event_status_res
+0x5d23 module_hci_read_bt_status
+0x5d30 module_hci_event_store_device
+0x5d39 module_hci_event_gkey_generate
+0x5d3f module_hci_event_invalid_packet
+0x5d41 module_hci_event_passkey_entry_mode
+0x5d43 module_hci_event_le_tk
+0x5d49 module_hci_event_le_pairing_fail
+0x5d4b module_hci_event_le_pairing_success
+0x5d4d module_hci_event_bt_pairing_fail
+0x5d4f module_hci_event_bt_pairing_success
+0x5d50 module_hci_event_pairing_completed
+0x5d57 module_hci_event_pause_enc
+0x5d59 module_hci_event_start_enc
+0x5d5a module_hci_event_enc
+0x5d60 module_hci_event_le_gkey
+0x5d66 module_hci_prepare_tx
+0x5d71 module_set_mcu_wake_pin_high_delay
+0x5d73 module_set_mcu_wake_pin_h_delay
+0x5d78 module_set_mcu_wake_pin_high
+0x5d7a module_check_mcu_wake_pin_high
+0x5d7c module_set_mcu_wake_pin_low
+0x5d7e delay
+0x5d81 module_le_receive_data
+0x5d8c module_le_receive_data_ok
+0x5d8e module_le_transmit
+0x5d90 module_le_transmit1
+0x5d94 module_hci_event_send_le_data
+0x5d98 module_set_le_rx_data_flag
+0x5d9a module_store_moule_flag
+0x5d9c module_clear_le_rx_data_flag
+0x5d9f module_exit_sniff
+0x5da3 module_bb_event_timer
+0x5da4 module_bb_event_100ms_loop
+0x5dac module_read_vdd_timer
+0x5dbd module_set_unsniff_task_flag
+0x5dc1 module_clear_unsniff_task_flag
+0x5dc5 module_control_air_flow
+0x5dca mouse_init
+0x5de5 mouse_init_environment
+0x5dea mouse_load_eeprom_param
+0x5ded mouse_dpi_init
+0x5def mouse_idle
+0x5df2 mouse_check_dpi
+0x5df5 mouse_dpi_down
+0x5df9 mouse_dpi_up
+0x5e01 mouse_modified_dpi
+0x5e0a mouse_init_common
+0x5e10 mouse_gpio_init
+0x5e24 mouse_before_hibernate
+0x5e27 mouse_process_lpm_before
+0x5e3e mouse_wheel_check
+0x5e4d mouse_t_wheel_scan
+0x5e5b p_mouse_t_wheel_scan_judge1
+0x5e5f p_mouse_t_wheel_scan_judge2
+0x5e63 p_mouse_t_wheel_scan_judge11
+0x5e65 p_mouse_t_wheel_scan_judge12
+0x5e67 p_mouse_t_wheel_scan_judge21
+0x5e69 p_mouse_t_wheel_scan_judge22
+0x5e6b p_mouse_t_wheel_scan_judge3
+0x5e74 p_mouse_t_wheel_scan_judge30
+0x5e77 p_mouse_t_wheel_scan_judge31
+0x5e7a p_mouse_t_wheel_scan_judge32
+0x5e7d p_mouse_t_wheel_scan_judge33
+0x5e80 p_mouse_wheel_t_forward
+0x5e8a p_mouse_wheel_t_back
+0x5e94 mouse_wheel_scan
+0x5ea2 mouse_wheel_scan_judge1
+0x5ea6 mouse_wheel_scan_judge2
+0x5eaa mouse_wheel_scan_judge11
+0x5eac mouse_wheel_scan_judge12
+0x5eae mouse_wheel_scan_judge21
+0x5eb0 mouse_wheel_scan_judge22
+0x5eb2 mouse_wheel_scan_judge3
+0x5ebb mouse_wheel_scan_judge30
+0x5ebe mouse_wheel_scan_judge31
+0x5ec1 mouse_wheel_scan_judge32
+0x5ec4 mouse_wheel_scan_judge33
+0x5ec7 mouse_wheel_forward
+0x5ed1 mouse_wheel_back
+0x5edb le_mouse_bb_event_write_request
+0x5ede le_mouse_bb_event_enc_info
+0x5edf mouse_hid_connected
+0x5ee2 mouse_send_process
+0x5ee9 mouse_send_data
+0x5ef2 bt_send_empty_data
+0x5ef6 p_le_send_empty_data
+0x5efa mouse_no_data_timer_init
+0x5efd mouse_le_notify_update_data
+0x5f0c mouse_fill_data_le
+0x5f11 mouse_fill_data
+0x5f14 mouse_motion
+0x5f1e sensor_motion
+0x5f36 mouse_read_sensor3610_data
+0x5f42 mouse_3610_smart_enable
+0x5f4e mouse_3610_smart_disable
+0x5f5a mouse_read_sensor_common
+0x5f61 mouse_zwheel
+0x5f67 mouse_t_zwheel
+0x5f6d mouse_check_key_gpio
+0x5f7f mouse_key
+0x5f87 mouse_sensor_sdio_low
+0x5f8e mouse_init_sunt
+0x5f90 mouse_init_p3204
+0x5f98 mouse_init_p3204_cont
+0x5f9c mouse_init_sensor_reset
+0x5fa2 mouse_init_p3610
+0x5fb0 set_sensor_reg
+0x5fbb extsign
+0x5fbf extsign_bit3
+0x5fc3 le_mouse
+0x5fd4 mouse_priority_bb_event
+0x5fe7 le_mouse_bb_event_connected
+0x5fee mouse_bb_event_pincode
+0x5ff0 mouse_bb_event_reconn_failed
+0x5ff3 mouse_bt_hid_connected
+0x5ff5 mouse_bt_event_setup_complete
+0x5ff6 mouse_bb_disconnected
+0x6000 mouse_bb_discon_clear_stack
+0x600a mouse_event_light_state_pairing
+0x600d mouse_event_light_state_hibernate
+0x6010 mouse4_0_event_bb_disconn
+0x6014 mouse_bb_event_timer
+0x6017 mouse_bb_event_100ms_loop
+0x6021 mouse_check_mouse_state_timer
+0x6027 mouse_check_hid_handshake_timer
+0x602d mouse_check_discovery_timeout_timer
+0x6034 mouse_check_direct_timeout_timer
+0x603b mouse_check_blank_data_timeout_timer
+0x6042 mouse_check_no_data_timeout_timer
+0x6048 mouse_bb_event_discovery_btn
+0x6057 mouse3_0_check_reconn_target
+0x605a mouse4_0_check_reconn_target
+0x6060 mouse4_0_no_reconn_target
+0x6062 mouse3_0_bb_event_discovery_btn
+0x6066 mouse4_0_bb_event_discovery_btn
+0x6068 mouse_bt_hid_handshake
+0x6070 mouse_check_reconn_target
+0x6074 mouse_start_discovery
+0x607a mouse_start_discovery_norandom
+0x6084 mouse_stop_discovery
+0x608f mouse_disconnect
+0x6098 eeprom_store_mouse_dpi
+0x609e eeprom_load_mouse_dpi
+0x60a4 mouse_check_mouse_statue
+0x60aa mouse_devce_led_off
+0x60b0 mouse_statue_up
+0x60ba mouse_device1_led_on
+0x60bc mouse_device2_led_on
+0x60be mouse_device3_led_on
+0x60c0 twspi_reset
+0x60d1 sensor_read
+0x60db sensor_write
+0x60e3 spi_ncs_gpio_init
+0x60e7 spi_ncs_enable
+0x60e9 spi_ncs_disable
+0x60eb twspi_write
+0x60ec twspi_read
+0x60ed read_function_aes
+0x60f1 read_function
+0x60f4 read_fuction_zero
+0x60f6 get_block_header
+0x60f7 get_block_header0
+0x6101 read_first_block
+0x6108 get_iv
+0x6114 load_storage
+0x6124 load_storage_loop
+0x612b reload_eeprom
+0x6132 reload_eeprom_loop
+0x613b loadcode
+0x6140 loadcode_lpm
+0x6150 loadcode_otp
+0x615e loadcode_spi
+0x616d loadcode_iic
+0x6178 loadcode_iic_eeprom_2k
+0x6180 loadcode_hci
+0x6186 loadcode_hci_loop
+0x6188 loadcode_iic_by_eeprom
+0x618e set_ucode_status
+0x6195 decrypt_code
+0x6198 decrypt_code_loop
+0x619b decrypt_code_skip
+0x619f load_ucode
+0x61a7 load_ucode_loop
+0x61ac spid_init
+0x61bb spid_reset
+0x61c1 spid_write_reg
+0x61c9 spid_read_reg
+0x61ca spid_read_regs
+0x61d3 wait_spid_done
+0x61d9 spid_init_flash
+0x61e2 spid_unlock_flash
+0x61eb spid_write_flash
+0x61fb spid_read_flash
+0x6208 spi_read_flash_wait
+0x621d iicd_init_12m
+0x6224 wait_iicd_done
+0x6227 iicd_read_data
+0x6233 set_eeprom_size_2k
+0x6236 clear_eeprom_size_2k
+0x6239 iicd_read_eep_data_size_2k
+0x623d iicd_read_eep_size_2k_lcadcode
+0x6240 iicd_read_eep_size_2k
+0x6245 iicd_read_eep_data
+0x624c iicd_read_eep
+0x6254 iicd_read_eep_common
+0x626a iicd_read_eep_load_code_size_2k
+0x626f iicd_write_eep_data
+0x6271 iicd_write_ota_data
+0x6277 iicd_write_eep_loop
+0x6287 iicd_eep_transparency
+0x629a iicd_eep_deal_short_packet
+0x629f iicd_write_eep_size_2k
+0x62a8 iicd_write_eep
+0x62b7 iicd_write_eep_common
+0x62c4 otp_enable_chgpump
+0x62c7 otp_disable_chgpump
+0x62c9 otp_set_addr
+0x62cd otp_write
+0x62cf otp_program
+0x62d2 otp_program_bit
+0x62f1 otp_skip_0
+0x62fa otp_ce
+0x6300 otpd_read_init
+0x630a otpd_wait_end
+0x630d otpd_read_data
+0x6312 otpd_read_code
+0x631c uartd_prepare_tx
+0x631f uartd_send
+0x6322 uartd_rxdone
+0x6325 uart_set_baud_by_mem
+0x6328 uart_copy_tx_bytes_fast
+0x632a uart_copy_tx_bytes_fast_loop
+0x632f uart_copy_tx_bytes_fast_loop_four
+0x6335 uart_tx_8_bytes
+0x6338 uart_tx_4_bytes
+0x633b uart_copy_tx_bytes
+0x633d uart_copy_tx_bytes_loop
+0x6341 uart_copy_rx_bytes_fast
+0x6343 uart_copy_rx_bytes_fast_loop
+0x6348 uart_copy_rx_bytes_fast_loop_four
+0x634e uart_rx_8_bytes
+0x6351 uart_rx_4_bytes
+0x6354 uart_copy_rx_bytes
+0x6356 uart_copy_rx_bytes_loop
+0x635a check_51cmd_update_device_record
+0x6361 write_device_record
+0x6365 write_device_loop_find
+0x6371 write_device_loop_find0
+0x6375 set_index_finded_device
+0x637b set_index_find_device_master_addr
+0x6380 store_rec_data_common
+0x6383 set_index_finded_device_ble_mode
+0x6387 set_index_finded_device_irk
+0x6389 store_ble_rec_data_common
+0x638b set_index_finded_device_ediv
+0x638e nvram_find_addr_from_bd_list
+0x6393 find_addr_from_bd_list_ble_mode
+0x639c find_addr_from_bd_list_static_addr
+0x639f find_addr_from_bd_list_random_non_resolvable_private_address
+0x63a1 find_addr_from_bd_list_random_addr
+0x63a3 find_addr_from_bd_list_spp_mode
+0x63a7 find_addr_from_bd_list_common
+0x63af nvram_find_addr_from_list
+0x63bf nvram_find_addr_from_list_compare
+0x63c1 find_master_addr_from_list_compare
+0x63c6 find_addr_from_list_compare_ble_mode
+0x63c9 find_irk_form_list_compare
+0x63db genernate_master_macaddress
+0x63e4 find_ediv_form_list_compare
+0x63f3 check_nvram
+0x63f9 init_device_list
+0x63fd init_device_list_loop
+0x6402 load_device_list
+0x640a clear_key_exists
+0x640c load_device_list_mode_4
+0x6418 load_device_list_mode_4_shutter
+0x641c load_device_list_mode_4_shutter_label
+0x642b clear_ltk_exists_iphone_lost_ltk
+0x642c clear_ltk_exists
+0x642e eeprom_store_le_reconn_info
+0x6432 eeprom_store_bd_reconn_info
+0x6435 eeprom_store_reconn_info
+0x643f eeprom_store_rec_4_mode
+0x6441 eeprom_load_reconn_info
+0x644d eeprom_load_reconn_bdaddr
+0x6451 eeprom_load_rec_3_mode
+0x6453 eeprom_load_rec_4_mode
+0x6455 eeprom_erase_reconn_info
+0x645b eeprom_load_last_record_index
+0x645f eeprom_store_last_record_index
+0x6463 eeprom_store_remote_bdaddr
+0x6469 eeprom_store_remote_addr_unfind
+0x6472 eeprom_store_le_local_addr
+0x6476 eeprom_load_le_loacal_addr
+0x647a eeprom_load_remote_bdaddr
+0x6483 eeprom_linkkey_addr
+0x6489 eeprom_store_le_ltl
+0x648b eeprom_store_link_key
+0x648c eeprom_store_link_key_common
+0x6490 eeprom_load_ltk_key
+0x6492 eeprom_load_link_key
+0x6493 eeprom_load_link_key_common
+0x6497 eeprom_load_bdaddr_list
+0x649b find_addr_from_bd_list
+0x64a1 find_addr_from_list
+0x64b1 check_link_key_load
+0x64b7 check_ltk_load
+0x64bb find_addr_from_list_compare
+0x64c0 enable_usr
+0x64c2 gpio_set_wake_by_current_state
+0x64c7 gpio_set_wake
+0x64d2 gpio_clr_wake
+0x64dd gpio_config_input_nowake
+0x64df gpio_config_input
+0x64e0 gpio_config_input_without_wake
+0x64e8 gpio_config_output
+0x64ea gpio_config_output0
+0x64ed gpio_common
+0x64f3 gpio_check_active
+0x64f5 gpio_get_bit
+0x64f6 get_bit_common
+0x64fb gpio_get_bit_reverse
+0x64fd gpio_out_inactive
+0x64ff gpio_out_active
+0x6500 gpio_out_flag
+0x6503 gpio_out
+0x6504 gpio_set_bit
+0x6509 gpio_set_before_lpm_common
+0x6549 neglect2_from_6_pin
+0x654b neglect4_from_9_pin
+0x654d neglact4_from_23_pin
+0x654f neglact2_form_25_pin
+0x6551 neglact2_form_27_pin
+0x6553 neglact2_form_2_pin
+0x6555 neglact_1_pin
+0x6557 neglact_4_pin
+0x6559 neglect_2_pin
+0x655a neglect_pin_loop
+0x655e gpio_cfg_uart_tx_output
+0x6561 gpio_pu_uart_tx
+0x6564 gpio_rx_config_input_with_pu
+0x656a gpio_uart2gpio
+0x656e gpio_check_uart_state
+0x6571 load_chip_option
+0x6577 adc_init_data
+0x6584 adc_init_data_vinlpm
+0x658d adc_check_data_vinlpm
+0x6591 adc_check_2v_vinlpm
+0x6595 set_vdd_reference_voltage_1v
+0x6598 adc_init_data_hvin
+0x65a1 adc_check_data_hvin
+0x65a5 adc_check_1v_hvin
+0x65a9 set_vdd_reference_voltage_4v
+0x65ac adc_init_data_io
+0x65b5 adc_check_data_io
+0x65b9 adc_check_0_5v_io
+0x65bd set_vdd_reference_voltage_0_5v
+0x65c0 adc_set_mode
+0x65c5 adc_check_vinlpm
+0x65c7 adc_check_hvin
+0x65c9 adc_check_gpio
+0x65cd read_adc
+0x65de vdd_calculate_by_mode
+0x65e5 vdd_calculate_vinlpm
+0x65e9 vdd_calculate_hvin
+0x65ed vdd_calculate_io
+0x65f1 vdd_calculate
+0x65fa vdd_calculate2
+0x65fe vdd_calculate1
+0x6607 rfcomm_init
+0x6611 rfcomm_init_spp
+0x661b rfcomm_init_spp_with_credit
+0x661d set_cr_bit
+0x661f rfcomm_calculate_fcs_sabm
+0x662b rfcomm_calculate_fcs_ua
+0x6634 rfcomm_calculate_fcs_dlci0
+0x6638 rfcomm_calculate_fcs_dlci0_res
+0x663a rfcomm_save_fcs_uih
+0x6649 caculate_uihdata_fcs
+0x6655 caculate_fcs
+0x6662 mod2div
+0x6666 mod2div_loop
+0x666b mod2div_not_enough_reduction
+0x6675 mod2div_end
+0x6677 get_rfcomm_snd_adss
+0x6678 dlci_to_address_cmd
+0x667e channel_to_dlci
+0x6682 rfcomm_rx_process_dlci0_sabm
+0x668b rfcomm_rx_process_dlci0_ua
+0x668f rfcomm_rx_process
+0x6694 rfcomm_rx_process_remote_page
+0x669a parse_dlci0_rp
+0x66a2 parse_dlci0_rp_uih
+0x66ac parse_dlci0_rp_uih_pn_cmd
+0x66ae parse_dlci0_rp_uih_pn_cmd_spp
+0x66b4 parse_dlci0_rp_uih_pn_res
+0x66b6 parse_dlci0_rp_uih_pn_res_common
+0x66b8 get_rfcomm_param_modem_status
+0x66bf get_rfcomm_head_struct
+0x66c5 get_rfcomm_current_length
+0x66ca get_rfcomm_uih_head_struct
+0x66d2 get_param_payload_ptr
+0x66d5 get_rfcomm_length_common
+0x66de get_rfcomm_prarmer_negotiation
+0x66ed parse_dlci0_rp_uih_ms_cmd
+0x66ef parse_dlci0_rp_uih_ms_cmd_spp
+0x66f9 parse_dlci0_rp_uih_ms_res
+0x6700 parse_dlci0_rp_uih_ms_res_spp
+0x6704 parse_dlci0_rp_uih_cmd_port
+0x6720 parse_uih_rp
+0x6721 parse_uih_rp_spp
+0x672a parse_uih_rp_spp_ua
+0x672e parse_uih_rp_spp_sabm
+0x6740 parse_uih_spp_uih_credits
+0x6748 parse_uih_spp_uih
+0x6749 parse_uih_spp_uih_cont
+0x674d parse_uih_rp_spp_disconn_send_event
+0x674f parse_uih_rp_spp_disconn
+0x6755 rfcomm_rx_process_reconn
+0x675b parse_dlci0_reconn
+0x6762 parse_dlci0_reconn_uih
+0x676b parse_dlci0_reconn_uih_pn_cmd
+0x6772 parse_dlci0_reconn_uih_pn_cmd_spp
+0x6776 parse_dlci0_reconn_uih_ms_cmd
+0x677d parse_dlci0_reconn_uih_ms_cmd_spp
+0x6786 parse_dlci0_reconn_uih_ms_res
+0x678c parse_dlci0_reconn_uih_ms_res_spp
+0x6790 parse_uih_reconn
+0x6796 parse_uih_reconn_spp
+0x679b parse_uih_reconn_spp_ua
+0x679f parse_uih_reconn_spp_sabm
+0x67a0 parse_uih_reconn_spp_disconn
+0x67a1 rfcomm_rx_process_end
+0x67a2 rfcomm_send_more_pkt
+0x67a6 rfcomm_send_more_pkt_msc_cmd_spp
+0x67ab rfcomm_send_more_pkt_msc_cmd_spp0
+0x67b3 rfcomm_send_sabm
+0x67c1 rfcomm_send_ua
+0x67d0 rfcomm_send_param_neg_cmd
+0x67ed rfcomm_send_param_neg_res
+0x680a rfcomm_send_modem_status_cmd
+0x6820 rfcomm_send_modem_status_res
+0x6838 rfcomm_send_uih_without_payload
+0x6853 rfcomm_increase_credit_given
+0x685d spp_process_rx_data
+0x685f spp_tx_rfcomm_packet
+0x686a ssp_tx_rfcomm_from_uart
+0x6872 ssp_tx_rfcomm_from_uart_without_credit
+0x6877 ssp_tx_rfcomm_from_uart_common
+0x687f ssp_tx_rfcomm_from_uart_common0
+0x68aa ssp_tx_write_length
+0x68b3 ssp_tx_write_long_packet
+0x68bc ssp_tx_write_given_credit
+0x68c0 scheduler_process
+0x68d4 scheduler_process0
+0x68d8 scheduler_tx_disconnect_hid
+0x68dc scheduler_tx_l2cap_pkt
+0x68f9 scheduler_tx_l2cap_start_pkt
+0x6907 scheduler_tx_l2cap_last_pkt
+0x6909 scheduler_tx_l2cap_pkt_end
+0x690d scheduler_start_upper_sm
+0x6911 scheduler_start_upper_sm_hid
+0x6913 process_upper_sm
+0x6915 process_upper_sm_remote_page
+0x6918 process_upper_sm_rp_wait
+0x6919 process_upper_sm_reconn
+0x6939 process_upper_sm_reconn_wait
+0x693a process_upper_sm_reconn_sdp_conn
+0x6940 process_upper_sm_reconn_sdp_cfg
+0x694a process_upper_sm_reconn_ss_spp
+0x694f process_upper_sm_reconn_sdp_disconn
+0x6952 process_upper_sm_reconn_hid_ctrl_conn
+0x6958 process_upper_sm_reconn_hid_ctrl_cfg
+0x695e process_upper_sm_reconn_hid_int_conn
+0x6964 process_upper_sm_reconn_hid_int_cfg
+0x696a process_upper_sm_reconn_rfcomm_conn
+0x6970 process_upper_sm_reconn_rfcomm_cfg
+0x6976 process_upper_sm_reconn_rfcomm_sabm
+0x697c process_upper_sm_reconn_spp_cmd_pn
+0x6982 process_upper_sm_reconn_spp_sabm
+0x698d process_upper_sm_reconn_spp_cmd_ms
+0x6993 process_upper_sm_reconn_sdp_conn_wait
+0x6997 process_upper_sm_reconn_sdp_cfg_wait
+0x699a process_upper_sm_reconn_ss_spp_wait
+0x699f process_upper_sm_reconn_sdp_disconn_wait
+0x69a5 process_upper_sm_reconn_hid_ctrl_conn_wait
+0x69a9 process_upper_sm_reconn_hid_ctrl_cfg_wait
+0x69ad process_upper_sm_reconn_hid_int_conn_wait
+0x69b1 process_upper_sm_reconn_hid_int_cfg_wait
+0x69b6 process_upper_sm_reconn_rfcomm_conn_wait
+0x69ba process_upper_sm_reconn_rfcomm_cfg_wait
+0x69be process_upper_sm_reconn_rfcomm_sabm_wait
+0x69c3 process_upper_sm_reconn_spp_cmd_pn_wait
+0x69c7 process_upper_sm_reconn_spp_sabm_wait
+0x69cb process_upper_sm_reconn_spp_cmd_ms_wait
+0x69ce process_upper_sm_reconn_setup_hid
+0x69d0 process_upper_sm_reconn_setup_rfcomm
+0x69d2 process_upper_sm_reconn_setup_spp
+0x69d4 process_upper_sm_reconn_termination
+0x69d6 upper_sm_send_sdp_conn
+0x69de upper_sm_send_sdp_cfg
+0x69e4 upper_sm_send_sdp_disconn
+0x69ef upper_sm_send_ss_spp
+0x69f4 upper_sm_send_rfcomm_conn
+0x69fc upper_sm_send_rfcomm_cfg
+0x6a02 upper_sm_send_hid_ctrl_conn
+0x6a0a upper_sm_send_hid_ctrl_cfg
+0x6a10 upper_sm_send_hid_int_conn
+0x6a18 upper_sm_send_hid_int_cfg
+0x6a1e upper_sm_send_rfcomm_sabm
+0x6a26 upper_sm_send_spp_cmd_pn
+0x6a2d upper_sm_send_spp_sabm
+0x6a38 upper_sm_send_spp_cmd_ms
+0x6a3e sdp_process
+0x6a53 servicesearch_req
+0x6a73 servicesearch_req_loop
+0x6a76 servicesearch_req_blank
+0x6a7c patch_serviceattribute_req
+0x6a89 patch_serviceattribute_isnot_wholerangle
+0x6a8c patch_serviceattribute_judge_wholerangle
+0x6a96 patch_serviceattribute_judge_wholerangle_false3
+0x6a98 patch_serviceattribute_judge_wholerangle_false2
+0x6a9a patch_serviceattribute_judge_wholerangle_false1
+0x6a9c patch_serviceattribute_req_loop
+0x6a9f patch_serviceattribute_req_range_id
+0x6aa5 patch_serviceattribute_req_range_id_increase
+0x6aae patch_serviceattribute_req_range_id_finish
+0x6ab1 patch_serviceattribute_req_one_id
+0x6ab6 patch_serviceattribute_req_check_next_id
+0x6abd patch_answer_handle_attributelist_next
+0x6acf patch_answer_handle_attributelist_notfound
+0x6ad2 answer_handle_attributelist_end
+0x6af2 serviceattribute_req_all
+0x6aff continue_zero
+0x6b02 continue_one_byte
+0x6b06 continue_two_byte
+0x6b0a continue_end
+0x6b2b fisrt_fragment
+0x6b2f parlength_continue_byte
+0x6b32 parlength_continue_byte_end
+0x6b38 fragment_sdp
+0x6b46 answer_attributelist_full_loop
+0x6b51 last_frag_continue
+0x6b53 sdp_frag_end
+0x6b5d patch_servicesearchattribute_req
+0x6b68 patch_servicesearchattribute_req_loop
+0x6b6a patch_servicesearchattribute_req_uuid
+0x6b73 patch_servicesearchattribute_req_search
+0x6b78 patch_answer_attributelist_next
+0x6b83 patch_answer_attributelist_attrib_loop
+0x6b86 patch_answer_attributelist_notfound
+0x6b88 patch_servicesearchattribute_req_all
+0x6b9f patch_servicesearchattribute_req_all_continue
+0x6bae patch_answer_attributelist_end
+0x6bd2 patch_no_attribute_return
+0x6bdf servicesearchattribute_req_attributelist_loop
+0x6be5 servicesearchattribute_req_check_next_ctn
+0x6bed servicesearchattribute_req_check_handle
+0x6bf2 servicesearchattribute_req_attributelist_loop_continue
+0x6bf8 servicesearchattribute_req_check_next_ctn_continue
+0x6c00 servicesearchattribute_req_check_handle_continue
+0x6c05 servicesearchattribute_req_next_handle
+0x6c14 servicesearchattribute_req_next_handle_continue
+0x6c26 answer_attributelist_with_ctn_bytes
+0x6c28 answer_attributelist_calc_attribute_length
+0x6c61 answer_attributelist_with_ctn_bytes_continue
+0x6c63 answer_attributelist_calc_attribute_length_continue
+0x6c85 answer_attributelist_with_ctn_end
+0x6ca4 answer_attributelist_end_long
+0x6ccc answer_attributelist_end_long_continue
+0x6cea patch_sdp_data_len
+0x6cf3 patch_sdp_data_len_6
+0x6cf5 patch_sdp_get_data_6
+0x6cfa patch_sdp_get_data_6_8bit
+0x6cfd patch_sdp_get_data_6_16bit
+0x6d01 sdp_send_spp_request
+0x6d18 servicesearchattribute_res
+0x6d1c servicesearchattribute_res_spp
+0x6d25 srchfail
+0x6d26 find_rfcomm_channel_number
+0x6d29 find_rfcomm_channel_number_loop
+0x6d2f find_rfcomm_channel_number_find_adl
+0x6d30 find_rfcomm_channel_number_loop2
+0x6d36 find_rfcomm_channel_number_find_rfcomm
+0x6d3a sdp_invalid_service_record_handle
+0x6d3d sdp_invalid_pdu_size
+0x6d40 sdp_insufficient_resource
+0x6d43 sdp_invalid_reqest_syntax
+0x6d45 sdp_error_response
+0x6d4f ask_serviceclassid
+0x6d55 classidloop
+0x6d5d skip2bytes
+0x6d66 frstbwrong
+0x6d69 scndbwrong
+0x6d72 cmp032
+0x6d75 cmp016
+0x6d77 cmpuuid
+0x6d7b uuidsize
+0x6d98 wrong12b
+0x6d99 wrong12b1
+0x6d9d chck12dn
+0x6d9f loopornot
+0x6da4 asksrv_error
+0x6da6 dataelementtype6
+0x6db4 dsize32
+0x6db6 dsize16
+0x6db9 dsize
+0x6dbb dsize_error
+0x6dbd empth_sa_rsp
+0x6dc0 empty_ssa_rsp
+0x6dc2 empty_response
+0x6dd2 fullsearch
+0x6dd6 outempty
+0x6dd8 sdp_data_len
+0x6de0 sdp_data_len_rtn
+0x6de2 sdp_data_len_1
+0x6de5 sdp_data_len_5
+0x6de7 sdp_data_len_6
+0x6dea sdp_get_data
+0x6df1 sdp_get_data_1
+0x6df4 sdp_get_data_1_loop
+0x6df9 sdp_get_data_6
+0x6dfe sdp_get_data_6_8bit
+0x6e00 sdp_get_data_6_16bit
+0x6e03 sdp_data_size
+0x6e06 sdp_data_size_loop
+0x6e09 search_uuid
+0x6e10 search_uuid_next
+0x6e14 search_uuid_loop
+0x6e18 search_uuid_not_found
+0x6e1d search_uuid_nomatch
+0x6e20 search_handle
+0x6e24 search_handle_loop
+0x6e2e search_attrib
+0x6e32 search_attrib_next
+0x6e35 search_attrib_loop
+0x6e3d search_attrib_found_uuid
+0x6e43 search_attrib_loop_attribs
+0x6e4f search_attrib_end
+0x6e52 search_handle_attrib
+0x6e56 search_handle_attrib_next
+0x6e60 search_handl_attrib_found_handle
+0x6e62 search_handle_attrib_loop_attribs
+0x6e6c search_handle_attrib_end
+0x6e6e function_g2
+0x6e86 function_f6_eb
+0x6e96 get_r
+0x6e9a function_f6_ea
+0x6eae function_f5
+0x6ec0 function_f5_common
+0x6ed2 store_addr_common_b
+0x6ed7 store_addr_common_a
+0x6edc function_f4_ca
+0x6ee7 function_f4_cb
+0x6ef2 function_aes_cmac
+0x6ef7 function_ceil16
+0x6f05 function_aes_cmac_set_flag_0_balnk
+0x6f08 function_aes_cmac_set_flag_0
+0x6f09 function_aes_cmac_set_flag_0_common
+0x6f13 function_aes_cmac_aes
+0x6f16 function_aes_cmac_aes_loop
+0x6f1c function_aes_cmac_aes_loop_end
+0x6f24 load_inverse_result
+0x6f28 store_inverse_k
+0x6f2a inverse_k
+0x6f2d inverse_memdat
+0x6f31 bn_lshift_0_inverse
+0x6f3b function_aes_cmac_k1_inverse
+0x6f3c function_aes_cmac_inverse_common
+0x6f40 function_aes_cmac_k2_inverse
+0x6f42 function_aes_cmac_generate_subkey
+0x6f4a function_aes_cmac_k1
+0x6f54 function_aes_cmac_k1_0
+0x6f55 function_aes_cmac_k2
+0x6f5e function_aes_cmac_xor_rb
+0x6f5f function_aes_cmac_xor_rb_loop
+0x6f65 function_aes_cmac_xor_loop_common
+0x6f69 function_aes_cmac_padding
+0x6f6d function_aes_cmac_padding_loop
+0x6f72 function_aes_cmac_padding_loop2
+0x6f75 function_aes_cmac_padding_beq_length
+0x6f76 function_aes_cmac_padding_common
+0x6f78 function_aes_cmac_padding_big_length
+0x6f7a generate_kinit
+0x6f7e function_e21
+0x6f8d function_e22
+0x6f93 function_e22_pin_init
+0x6f94 function_e22_genx_pin
+0x6f97 function_e22_genx_loop
+0x6fa1 function_e22_genx_end
+0x6fad function_e1
+0x6fb0 function_e3
+0x6fb7 function_hash
+0x6fcd function_ar
+0x6fd6 function_ar_loop
+0x6fde function_ar_original
+0x6ff4 key_scheduling
+0x6ffa key_rotateloop
+0x7005 key_select_octet_loop
+0x700a key_select_octet_nwrap
+0x7014 bias_round_key_loop
+0x701b key_sched_zero
+0x701d create_byte_16_loop
+0x7025 xor_mod32
+0x7026 xor_mod32_ar2
+0x7029 xor_mod32_loop
+0x702f xor_mod32_invert
+0x7032 xor_even
+0x7038 el_boxes
+0x703b el_box_loop
+0x7041 e_boxes
+0x7047 pht
+0x704a pht_loop
+0x7056 permute
+0x7065 permute_exchange
+0x7066 permute_loop
+0x7075 add16
+0x7077 xor16
+0x7078 xor_add16
+0x7079 xoradd_loop
+0x707e xoradd_add
+0x707f xoradd_store
+0x7084 function_expand
+0x708a expand_12
+0x708b expand_cont
+0x708f key_offset
+0x709e key_addxor
+0x709f key_addxor_loop
+0x70a3 key_add
+0x70a5 key_high
+0x70a6 key_xor
+0x70a7 key_store
+0x70ab copy_aco
+0x70b0 concatenate_temp24
+0x70b1 concatenate_temp16
+0x70b4 loop1
+0x70b5 generate_stk
+0x70ba authenticate_rconfirm
+0x70bd authenticate_mconfirm
+0x70c2 generate_confirm
+0x70c5 generate_mrand
+0x70c8 generate_sk
+0x70d1 first_block_counter
+0x70d3 first_block_data
+0x70d4 first_block
+0x70e7 generate_mic
+0x70f6 generate_mic_loop
+0x70fb generate_mic_end
+0x70ff aes_crypt_data
+0x7109 le_encrypt
+0x7122 le_decrypt
+0x7127 le_dec_cont
+0x7145 wait_aes
+0x7147 do_aes_ocb
+0x714a do_aes_cbc
+0x714d do_aes_ctr
+0x7150 aes_init
+0x7153 function_s1
+0x7168 function_c1
+0x716f function_c1_master
+0x717f function_c1_irat
+0x7184 function_c1_loop1
+0x7197 padding_data
+0x719c padding_loop
+0x71a1 aes_load_data
+0x71a2 load_data_loop
+0x71a6 load_data_padding
+0x71ab aes_load_xor
+0x71ad load_key
+0x71af load_data128
+0x71b0 load_regext
+0x71b1 load_regext_loop
+0x71b6 load_sk
+0x71b8 clear_hidata
+0x71ba aes_clear_data
+0x71bb aes_clear
+0x71bc clear_loop
+0x71bd clear_data_rest
+0x71c0 store_aes_result
+0x71c2 send_aes_result_loop
+0x71c7 store_enc_data
+0x71cd store_enc_loop
+0x71d5 store_enc_byte
+0x71d9 compare_res
+0x71db compare_res_loop
+0x71e2 enable_authrom
+0x71e6 disable_authrom
+0x71ea init_memp
+0x7241 init_memp_256
+0x7293 shutter_init
+0x72b8 shutter_le_hard_switch_power_on_signal
+0x72bd in_poweron_hard_switch_led
+0x72c0 shutter_le_soft_switch_power_on_signal
+0x72cd shutter_le_adv_interval_set
+0x72d2 shutter_updata_mac
+0x72d6 shutter_byteswap
+0x72e5 shutter_le_fast_advertise
+0x72ec in_shutter_skip_set
+0x72ef shutter_le_scale_lpm_lock
+0x72f4 scale_process_bb_event
+0x72fd shutter_le_bb_event_timer
+0x72fe shutter_le_bb_event_100ms_loop
+0x730c shutter_conn_update_timer
+0x7313 shutter_app_updata_le_param_timer
+0x731c shutter_app_updata_le_param
+0x731f shutter_le_shutter_fast_adv_timer
+0x732a in_is_connected
+0x732c shutter_le_sleep_timer
+0x7334 scale_process_le_conn
+0x734c scale_process_le_discon
+0x735f shutter_le_tx_buff_inuse
+0x7361 shutter_le_check_tx_buff
+0x7363 shutter_le_tx_buff_unuse
+0x7365 shutter_le_discovery_timeout_sleep
+0x7366 shutter_le_sleep_req_hibernate
+0x7367 shutter_le_sleep_req_ok
+0x7369 shutter_le_sleep_enter
+0x736d shutter_le_sleep_clr
+0x7371 scale_process
+0x7375 shutter_le_parse_att_exchange_mtu_request
+0x7378 shutter_le_parse_att_exchange_mtu_request_save
+0x737a scale_process_idle
+0x737c shutter_le_before_hibernate
+0x7380 in_enter_hibernate
+0x7382 shutter_ui_led_init
+0x7386 in_lp1
+0x738c in_lp1_end
+0x738d shutter_ui_led_init_end
+0x738e shutter_ui_led_send
+0x73a3 shutter_ui_led_send_end
+0x73a4 shutter_ui_led_off
+0x73a5 shutter_key_init
+0x73aa shutter_key_lp1
+0x73ae shutter_key_init_end
+0x73af shutter_shutter_scan_key
+0x73b2 in_scan_key_lp1
+0x73c5 shutter_le_key_process
+0x73df shutter_le_key_lp1
+0x73f5 in_le_key_process_end
+0x73f9 shutter_le_send_key_data
+0x7404 in_le_send_lable
+0x740d in_le_send_lp1
+0x7419 in_le_key_is_release
+0x7423 in_le_send_key0_press
+0x7427 in_le_send_key1_press
+0x742b in_le_send_key2_press
+0x742f in_le_send_key3_press
+0x7433 in_le_send_key4_press
+0x7437 in_le_send_key5_press
+0x743b in_le_send_key0_rel
+0x743f in_le_send_key1_rel
+0x7443 in_le_send_key2_rel
+0x7447 in_le_send_key3_rel
+0x744b in_le_send_key4_rel
+0x744f in_le_send_key5_rel
+0x7453 shutter_le_disble_key_led
+0x7457 shutter_le_key_led_index
+0x745b in_le_light_led
+0x745c in_le_key_led_0
+0x745e in_le_key_led_1
+0x7460 in_le_key_led_2
+0x7462 in_le_key_led_3
+0x7464 shutter_ui_power_timeout_timer
+0x746c shutter_ui_button_timeout_timer
+0x7472 shutter_shuuter_led_on
+0x7475 shutter_bb_event_button_up
+0x7478 in_power_release
+0x747a shutter_evt_button_long_pressed
+0x747e shutter_shutter_power_on_off
+0x7481 shutter_le_power_off
+0x7487 shutter_shutter_power_off_end
+0x748a shutter_shutter_power_off_signal
+0x748c shutter_le_process_lpm_before
+0x7491 in_shutter_process_lpm_before_lp1
+0x7495 shutter_le_process_lpm_before_end
+0x7496 shutter_le_queue_init
+0x749b shutter_le_queue_clear
+0x749c shutter_le_queue_put
+0x74ab shutter_le_queue_increase
+0x74b2 shutter_le_queue_put_end
+0x74b4 shutter_le_queue_get
+0x74c1 shutter_le_queue_read_point
+0x74c7 shutter_le_packet_interval_set
+0x74ca shutter_le_send_packet
+0x74d0 shutter_le_shutter_send_keydata
+0x74d5 shutter_le_tx_indication
+0x74d7 shutter_le_tx_notification
+0x74dc shutter_le_tx_common
+0x74de shutter_shutter_cancel_key_shake
+0x74e5 shutter_le_send_att_handle_value_notification
+0x74f4 shutter_le_receive_data
+0x74f8 shutter_le_parse_att_write_request
+0x74fb shutter_key_data_send
+0x74fd init_shutter_le_att_list
+0x75c9 shutter_init_param
+0x75e0 publickey_init
+0x75e3 publickey_calc
+0x75f2 stop_publickey_calc_256
+0x75f4 sp_initialize
+0x75fb sp_clear_flags
+0x7600 sp_generate_local_key
+0x7602 sp_master_generate_local_key
+0x7605 sp_generate_local_key0
+0x7608 sp_start_send_pubkey
+0x760d sp_calculate_commitment
+0x7618 master_sp_calculate_commitment
+0x761f sp_calculate_commitment0
+0x7625 master_sp_calculate_commitment0
+0x7628 sp_local_random_key_generator
+0x762b sp_calculate_commitment_wait_dhkey_calc
+0x762d sp_confirm_check
+0x763f sp_confirm_check_success
+0x7645 sp_confirm_check_success_master
+0x7648 sp_confirm_check_failed
+0x764e sp_confirm_check_failed_master
+0x7651 sp_confirm_calc
+0x7655 sp_confirm_calc_ready
+0x7662 sp_confirm_calc_master
+0x7665 sp_master_key_prarm_push
+0x766f sp_link_key_prarm_push
+0x7679 sp_link_key_calc
+0x7684 sp_pubkey_calc
+0x769c sp_pubkey_generated
+0x76a2 sp_dhkey_calc
+0x76b4 sp_dhkey_generated
+0x76bb random_generator
+0x76c0 compare4
+0x76ca compare4_failed
+0x76cc compare4_success
+0x76ce simple_pairing_sequence
+0x76e0 master_simple_paring_sequence
+0x76f3 master_set_mem_master_sp_flag
+0x76f5 master_clear_mem_master_sp_flag
+0x76f7 sp_calc_sequence
+0x7703 sp_calc_sequence_done
+0x7708 bn_testbit
+0x770e ec_copy
+0x7711 bn_eq_zero
+0x7717 bn_eq_0
+0x7720 bn_bigeq
+0x7723 bn_bigeq_0
+0x772d bn_add
+0x772f bn_add_0
+0x773b bn_sub
+0x773d bn_sub_0
+0x7749 bn_rshift6
+0x774b bn_rshift
+0x774c bn_rshift_0
+0x7757 bn_lshift
+0x7759 bn_lshift_0
+0x7764 bn_lshiftmod
+0x7765 bn_lshiftmod_ismod
+0x776d bn_lshiftmod_0
+0x7771 bn_addmod
+0x7774 bn_submod
+0x777b bn_p192mod
+0x779c bn_load
+0x779d bn_load_0
+0x77a2 bn_mulmod
+0x77ac bn_mulmod_1
+0x77ae bn_mulmod_0
+0x77c4 bn_sqrmod
+0x77c6 bn_rshifteven
+0x77c7 bn_rshifteven_1
+0x77d6 bn_rshifteven_0
+0x77da bn_invmod
+0x77e9 bn_invmod_2
+0x7804 bn_invmod_1
+0x7812 bn_invmod_0
+0x781f ecdbl
+0x7870 ecadd
+0x78dc eckp_0
+0x78ea eckp_1
+0x78ef ecunmapz
+0x7901 sha_endian_swap2
+0x7904 sha_endian_loop
+0x790c sha_getw
+0x7910 sha_r
+0x7912 sha_r_loop
+0x7927 sha_init
+0x7929 sha_init_0
+0x792e sha
+0x7933 sha_0
+0x793c sha_loop
+0x7965 sha_1
+0x796b sha_result
+0x796d sha_regext_save
+0x7972 pad_xor
+0x7975 pad_xor_0
+0x797c pad_xor_1
+0x797f g_noninit_number_confirm
+0x7982 g_noninit
+0x7984 g_noninit0
+0x7992 g_init
+0x79a1 g_common
+0x79aa g_common0
+0x79bb function_f1_no_key
+0x79bd function_f1
+0x79bf function_f1_common
+0x79f5 function_f2
+0x7a2b function_f3a
+0x7a2d function_f3a_common
+0x7a3d function_f3a_no_pin
+0x7a40 function_f3b_no_pin
+0x7a43 function_f3b
+0x7a45 function_f3b_common
+0x7a52 function_f3_common
+0x7a7c eckp_calc_init
+0x7a7d eckp_calc_init_1
+0x7a87 eckp_calc
+0x7a8f memcpy_dword_swap4
+0x7a90 memcpy_dword_swap
+0x7a91 memcpy_dword_swap_loop
+0x7a96 sp_initialize_256
+0x7a9d sp_pubkey_calc_256
+0x7ab3 sp_pubkey_generated_256
+0x7ab9 sp_dhkey_calc_256
+0x7ac9 sp_dhkey_generated_256
+0x7acf sp_calc_sequence_256
+0x7ad9 sp_calc_sequence_done_256
+0x7ae0 eckp_calc_256
+0x7ae8 eckp_calc_init_256
+0x7aec eckp_calc_init_256_1
+0x7af6 ecunmapz_256
+0x7b08 ecdbl_256
+0x7b59 ecadd_256
+0x7bc5 bn_invmod_256
+0x7bd3 bn_invmod_256_2
+0x7bee bn_invmod_256_1
+0x7bfc bn_invmod_256_0
+0x7c03 bn_mulmod_256
+0x7c11 bn_mulmod_256_1
+0x7c17 bn_mulmod_256_0
+0x7c2c bn_p256mod
+0x7c96 bn_load_mem
+0x7c9a bn_load_256
+0x7c9c bn_sqrmod_256
+0x7c9e bn_add_256
+0x7ca0 bn_addmod_256
+0x7ca3 bn_lshiftmod_256
+0x7ca4 bn_lshiftmod_ismod_256
+0x7cad bn_lshiftmod_p_256
+0x7cb5 sub_p2_256
+0x7cb9 bn_submod_256
+0x7cc3 bn_submod_256_np
+0x7ccc bn_sub_256
+0x7cce bn_rshift_256
+0x7cd1 bn_lshift_256
+0x7cd4 bn_bigeq_256
+0x7cd8 bn_eq_zero_256
+0x7cdb bn_rshifteven_256
+0x7cdc bn_rshifteven_256_1
+0x7ceb bn_rshifteven_256_0
+0x7cef ui_init
+0x7cf4 ui_dispatch
+0x7cf6 ui_button_init
+0x7d02 ui_button_polling
+0x7d09 ui_button_down
+0x7d15 ui_button_up
+0x7d1f ui_button_check_long_press
+0x7d26 lpm_button_get_wake_lock
+0x7d28 lpm_button_clean_wake_lock
+0x7d2a ui_led_init
+0x7d2f ui_led_blink_stop
+0x7d33 ui_led_off
+0x7d38 ui_led_on
+0x7d3e ui_led_blink_start
+0x7d3f ui_led_blink_start1
+0x7d44 ui_led_blink_polling
+0x7d53 in_ui_led_blink_polling_dark
+0x7d58 in_ui_led_infinite
+0x7d5a in_ui_led_blink_timer_start
+0x7d5c ui_timer_timeout
+0x7d60 ui_timer_check
+0x7d68 ui_timer_check_loop
+0x7d72 ui_timer_init
+0x7d75 ui_timer_check_end
+0x7d7d ui_timer_check_send_evt
+0x7d80 ui_ipc_get_lock
+0x7d81 ui_ipc_get_lock_wait
+0x7d84 ui_ipc_put_lock
+0x7d86 ui_ipc_send_event
+0x7d90 ui_ipc_send_cmd
+0x7d9a ui_ipc_clean_all_fifo
+0x7d9e check_51cmd
+0x7daa check_51cmd_once
+0x7dce check_51cmd_once_continue
+0x7ddb check_51cmd_dhkey_not_accept
+0x7dde check_51cmd_ble_update_connect_param
+0x7de0 check_51cmd_check_idle
+0x7de5 check_51cmd_restore
+0x7de7 check_51cmd_role_switch
+0x7df0 check_51cmd_start_discovery
+0x7df5 check_51cmd_stop_discovery
+0x7dfb check_51cmd_reconnect
+0x7dfd check_51cmd_disconnect
+0x7e00 check_51cmd_enter_sniff_subrating
+0x7e01 check_51cmd_exit_sniff_subrating
+0x7e02 check_51cmd_sniff_test
+0x7e03 check_51cmd_pincode
+0x7e05 check_51cmd_inq
+0x7e06 check_51cmd_stop_inq
+0x7e07 check_51cmd_adv
+0x7e0d check_51cmd_stop_adv
+0x7e12 check_51cmd_direct_adv
+0x7e18 check_51cmd_stop_direct_adv
+0x7e1d check_51cmd_le_disconnect
+0x7e21 check_51cmd_le_start_con
+0x7e24 check_51cmd_start_scan
+0x7e26 check_51cmd_stop_scan
+0x7e29 check_51cmd_le_smp_sec_req
+0x7e2b check_51cmd_hibernate
+0x7e38 check_51cmd_hibernate_btn_disabled
+0x7e3b check_51cmd_le_start_write
+0x7e3d check_51cmd_bb_reconn_cancel
+0x7e3f ui_check_paring_button
+0x7e43 right_shift_n
+0x7e45 right_shift_n_loop
+0x7e48 push_stack
+0x7e56 pop_stack
+0x7e64 get_contw
+0x7e67 get_contr
+0x7e6a store_contw
+0x7e6d store_contr
+0x7e70 save_cont_pointers
+0x7e75 load_cont_pointers
+0x7e7a memcpy96
+0x7e7b memcpy64
+0x7e7d memcpy12
+0x7e7e memcpy4
+0x7e81 memcpy8
+0x7e84 memcpy48
+0x7e85 memcpy32
+0x7e86 memcpy24
+0x7e87 memcpy16
+0x7e89 delay_10ms
+0x7e8c delay_ms_wait
+0x7e90 bn_zero
+0x7e91 memset0
+0x7e92 memset8
+0x7e95 memset0_8
+0x7e98 memset0_4
+0x7e9b clear_mem_256
+0x7e9d clear_mem_512
+0x7e9f clear_mem
+0x7ea2 clear_mem_loop
+0x7ea5 clear_temp_block
+0x7ea8 xor_loop
+0x7eb0 inverse_data
+0x7eb8 inverse_loop
+0x7ec0 memcpy_fast
+0x7ec2 memcpy_fast_loop
+0x7ec7 memcpy_fast_loop_four
+0x7ecd memcpy
+0x7ecf memcpy_loop
+0x7ed3 timer_stop
+0x7ed4 timer_init
+0x7ede timer_check_timeout
+0x7ee2 timer_check
+0x7eee timer_loop
+0x7ef2 timer_counting
+0x7ef9 clk_add
+0x7f04 clk_diff_rt
+0x7f06 clk_diff
+0x7f0b clk_diff_pos
+0x7f10 clk2rt
+0x7f16 clk2lpo
+0x7f1d clk2bt
+0x7f25 string2dec_from_uart
+0x7f26 string2dec_from_uart_done
+0x7f31 uchar2dialog
+0x7f3a uchar2dialog_number
+0x7f3d uchar2dialog_a2f
+0x7f40 pn9
+0x7f43 pn9_loop
+0x7f53 wait_div_end
+0x7f55 string_compare
+0x7f5e ceiling
+0x7f62 swap
+0x7f66 clean_mem
+0x7f69 callback_func
+0x7f6b wait_uarttx
+0x7f6e get_uart_rrptr
+0x7f71 ice_break
+0x7f73 ice_setbp
+0x7f78 ice_setbp2
+0x7f7d ice_set_write_bp
+0x7f80 test_enable_white
+0x7f84 check_uart_tx_buff
+0x7f86 pdata_sub_temp
+0x7f88 fifo_in
+0x7f8f fifo_in_push
+0x7f95 fifo_out
+0x7f9a fifo_out_loop
+0x7f9f fifo_out_end
+0x7fa2 fifo_is_empty
+0x7fa4 fifo_is_full
+0x7fa6 fifo_is_near_full
+0x7fa8 fifo_content_count
+0x7fa9 fifo_content_count_loop
+0x7faf not_greater_than
Index: Standard_mouse/btms/rom/peripherals.prog
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/rom/peripherals.prog	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/rom/peripherals.prog	(working copy)
@@ -0,0 +1,2090 @@
+
+/* ===================== two wire SPI gpio ======================= */
+
+twspi_reset:
+	set1 mark_ext_patch,mark
+	bpatch patch2f_0,mem_patch2f
+	hfetch 1,core_gpio_oe3
+	arg 0x06,temp
+	ior temp,pdata
+	hstore 1,core_gpio_oe3
+	hfetch 1,core_gpio_out3
+	ior temp,pdata
+	hstore 1,core_gpio_out3
+	hjam 0,core_gpio_sel1	
+	hfetch 1,core_gpio_out3
+	set0 1,pdata
+	set0 2,pdata
+	hstore 1,core_gpio_out3	
+	nop 30
+	hjam 1,core_gpio_sel1	
+	rtn
+	
+// input read reg number: pdata 
+//output reg data: pdata
+sensor_read:
+	copy pdata,regb
+	call spi_ncs_enable
+	nop 100
+	copy regb,pdata
+	call twspi_read
+	copy pdata,regb
+	call spi_ncs_disable
+	nop 100
+	copy regb,pdata
+	rtn
+// input write reg number: pdata 
+sensor_write:
+	copy pdata,regb
+	call spi_ncs_enable
+	nop 100
+	copy regb,pdata
+	call twspi_write
+	call spi_ncs_disable
+	nop 100
+	rtn
+//spi gpio init .
+//0xff :disable spi ncs gpio init
+spi_ncs_gpio_init:
+	fetch 1,mem_spi_ncs_gpio
+	rtneq 0xff
+	fetcht 1,mem_spi_ncs_gpio
+	branch gpio_config_output
+
+//nsc gpio ouput low
+spi_ncs_enable:
+	fetcht 1,mem_spi_ncs_gpio
+	branch gpio_out_active
+
+//ncs gpio output high
+spi_ncs_disable:
+	fetcht 1,mem_spi_ncs_gpio
+	branch gpio_out_inactive
+
+// input write reg number: regb 
+twspi_write:
+	branch spid_write_reg
+	
+// input read reg number: regb 
+//output reg data: pdata
+twspi_read:
+	branch spid_read_reg
+
+
+
+/* ===================== code loading ======================= */
+
+
+read_function_aes:
+	nbranch read_function,user
+	hfetch 1,core_gpio_key2
+	or_into 0x20,pdata   	// enable aes 
+	hstore 1,core_gpio_key2
+read_function:
+	copy temp,null
+	branch read_fuction_zero,zero
+	copy regc,pc
+read_fuction_zero:
+	isolate0 0,null
+	branch set_ucode_status
+	
+/* return temp = block length */
+get_block_header:
+	force 4,temp
+get_block_header0:
+	arg mem_ucode_buf,rega
+	hfetch 1,core_gpio_key2
+	and_into 0xdf,pdata   	// disable aes for header
+	hstore 1,core_gpio_key2
+	call read_function
+	arg 0x55aa,rega
+	fetch 2,mem_ucode_buf
+	ifetcht 2,contr
+	isub rega,null
+	rtn	
+
+read_first_block:
+	arg 2,temp
+	arg mem_ucode_ptr,rega
+	call read_function
+	fetch 2,mem_ucode_ptr
+	store 2,mem_addr_mi
+	call get_iv,user
+	rtn
+	
+get_iv:
+	arg 16,temp
+	arg mem_ucode_keybuf,rega
+	hfetch 1,core_gpio_key2
+	and_into 0xdf,pdata   // disable aes for iv
+	hstore 1,core_gpio_key2
+	call read_function
+	arg mem_ucode_keybuf,contr
+	arg 16,loopcnt
+	call aes_load_data
+	call aes_init
+	call aes_clear_data
+	branch do_aes_cbc					/* generate first IV */
+
+load_storage:
+	disable match
+	call get_block_header
+	nrtn zero
+	enable match
+	hjam 0x80, core_ucode_ctrl
+	hjam 0,core_ucode_hi
+	hjam 0,core_ucode_low
+	arg core_ucode_data,rega
+	call read_function_aes
+	hjam 0x0, core_ucode_ctrl
+	call get_block_header
+	nrtn zero
+	force 0,pdata
+	hstore 2,core_docd_paddr
+	arg core_docd_pdata,rega
+	call read_function_aes
+load_storage_loop:
+	arg 6,temp
+	call get_block_header0
+	nrtn zero
+	ifetch 2,contr
+	iforce rega
+	call read_function
+	branch load_storage_loop
+
+
+
+	
+	/* only load memory data from eeprom */
+reload_eeprom:
+	set1 mark_ext_patch,mark
+	bpatch patch2f_1,mem_patch2f
+	call clean_mem
+	setarg 0x1000
+	store 2,mem_addr_mi
+	arg iicd_read_eep,regc
+	arg 2,loopcnt
+reload_eeprom_loop:
+	call get_block_header
+	nrtn zero
+	fetch 2,mem_addr_mi
+	byteswap pdata,pdata
+	iadd temp,pdata
+	byteswap pdata,pdata
+	store 2,mem_addr_mi
+	loop reload_eeprom_loop
+	branch load_storage_loop
+	
+loadcode:
+	hjam 0x25,core_clkoff			// disable debug uart
+	hjam 5,core_docd_ctrl
+	call clean_mem
+	set1 mark_ext_patch,mark
+	bpatch patch2f_2,mem_patch2f
+loadcode_lpm:
+	disable user
+	call otp_enable_chgpump
+	setarg otp_ucode_flag
+	arg mem_otp_ucode_flag,rega
+	arg 2,temp
+	call otpd_read_data
+	fetch 2,mem_otp_ucode_flag
+	bbit0 otp_uflag_aes, loadcode_otp
+	setarg otp_ucode_aeskey
+	arg mem_ucode_keybuf,rega
+	arg 16,temp
+	call otpd_read_data
+	hjam lock_otp,core_misc_ctrl	// disable further read/write of key
+	arg mem_ucode_keybuf,contr
+	call load_key
+	enable user					// set user for aes
+loadcode_otp:
+	set1 mark_ext_patch,mark
+	bpatch patch2f_3,mem_patch2f
+	fetch 2,mem_otp_ucode_flag
+	byteswap pdata,pdata
+	arg 0x7ff,temp
+	iand temp,pdata
+	branch loadcode_spi, zero
+	call otp_set_addr
+	arg otpd_read_code,regc
+	call get_iv,user
+	call load_storage
+	fetch 1,mem_ucode_status
+	compare 3,pdata,3
+	nbranch loadcode_otp,true	// crc error, try again
+loadcode_spi:
+	set1 mark_ext_patch,mark
+	bpatch patch2f_4,mem_patch2f
+	call otp_disable_chgpump
+	fetch 1,mem_otp_ucode_flag
+	bbit1 otp_uflag_skip_flash, loadcode_iic
+	setarg 0x0
+	store 3,mem_addr_hi
+	call spid_init_flash
+	arg spid_read_flash,regc
+	call read_first_block
+	call load_storage
+	nbranch loadcode_iic,match
+	fetch 1,mem_ucode_status
+	compare 3,pdata,3
+	nbranch loadcode_spi,true	// crc error, try again
+loadcode_iic:
+	set1 mark_ext_patch,mark
+	bpatch patch2f_5,mem_patch2f
+	call clear_eeprom_size_2k
+	fetch 1,mem_otp_ucode_flag
+	bbit1 otp_uflag_skip_eep,loadcode_hci
+	call loadcode_iic_by_eeprom
+	nbranch loadcode_iic_eeprom_2k,match
+	fetch 1,mem_ucode_status
+	compare 3,pdata,3
+	nbranch loadcode_iic,true	// crc error, try again
+	branch loadcode_hci
+loadcode_iic_eeprom_2k:
+	call set_eeprom_size_2k
+	fetch 1,mem_otp_ucode_flag
+	bbit1 otp_uflag_skip_eep,loadcode_hci
+	call loadcode_iic_by_eeprom
+	nbranch loadcode_hci,match
+	fetch 1,mem_ucode_status
+	compare 3,pdata,3
+	nbranch loadcode_iic_eeprom_2k,true	// crc error, try again
+loadcode_hci:
+	force regidx_key,regext_index
+	call aes_clear
+	hjam 0x21,core_clkoff			// enable debug uart
+	fetch 1,mem_otp_ucode_flag
+	rtnbit0 otp_uflag_hci
+	call hci_init
+loadcode_hci_loop:
+	call hci_rx_packet
+	branch loadcode_hci_loop
+
+
+loadcode_iic_by_eeprom:
+	setarg 0x0
+	store 2,mem_addr_mi
+	arg iicd_read_eep,regc
+	call iicd_init_12m
+	call read_first_block
+	branch load_storage
+
+
+
+/* true flag is set into status */
+set_ucode_status:
+	fetch 1,mem_ucode_status
+	lshift pdata,pdata
+	setflag true,0,pdata
+	isolate0 15,rega
+	rtn true
+	store 1,mem_ucode_status
+	rtn
+
+	/* queue is bit position of hw done status */
+decrypt_code:
+	hfetch 1,core_gpio_key2
+	rtnbit0 5
+	branch decrypt_code_skip	/* skip to key generation at first for speed */
+decrypt_code_loop:
+	hfetch 1,core_dma_status
+	qisolate1 pdata
+	rtn true
+decrypt_code_skip:
+	hfetch 1,core_misc_status
+	bbit0 1,decrypt_code_loop
+	call do_aes_cbc
+	branch decrypt_code_loop
+
+
+
+load_ucode:
+	fetch 2,mem_patch_ptr
+	rtn blank
+	hjam 0x80, core_ucode_ctrl
+	hjam 0,core_ucode_hi
+	hjam 0,core_ucode_low
+	fetcht 2,mem_patch_len
+	lshift2 temp,loopcnt
+	iforce contr
+load_ucode_loop:
+	ifetch 1,contr
+	hstore 1,core_ucode_data
+	loop load_ucode_loop
+	hjam 0x0, core_ucode_ctrl
+	rtn
+
+
+/* ===================== SPI dma ======================= */
+
+spid_init:
+	set1 mark_ext_patch,mark
+	bpatch patch2f_6,mem_patch2f
+	fetch 1,mem_spi_init_clk
+	hstore 1,core_spid_ctrl	// A7530 should at least 34, or write fail
+	fetch 1,mem_spi_init_delay_time
+	hstore 1,core_spid_delay	// 4us delay
+	setarg mem_spid_tbuf
+	hstore 2,core_spid_txaddr
+	setarg mem_spid_rbuf
+	hstore 2,core_spid_rxaddr
+	hfetch 1,core_gpio_sel1
+	set1 0,pdata
+	set0 1,pdata
+	hstore 1,core_gpio_sel1
+	rtn
+
+spid_reset:
+	hfetch 1,core_spid_ctrl
+	set1 7,pdata
+	hstore 1,core_spid_ctrl
+	set0 7,pdata
+	hstore 1,core_spid_ctrl
+	rtn
+
+
+/* pdata 6:0 is reg address, 15:8 is data to write */
+spid_write_reg:
+	set1 7,pdata
+	store 2,mem_spid_tbuf
+	set1 mark_ext_patch,mark
+	bpatch patch2f_7,mem_patch2f
+	hjam 2,core_spid_txlen
+	hjam 0,core_spid_rxlen
+	hjam spid_start,core_misc_ctrl
+	branch wait_spid_done
+
+/* pdata 6:0 is reg address */
+spid_read_reg:
+	force 1,temp
+/* pdata 6:0 is burst reg address, temp is bytes to read */
+spid_read_regs:
+//	nop 100
+	store 1,mem_spid_tbuf
+	set1 mark_ext_patch,mark
+	bpatch patch30_0,mem_patch30
+	hjam 1,core_spid_txlen
+	hstoret 2,core_spid_rxlen
+	hjam spid_start,core_misc_ctrl
+	call wait_spid_done
+	fetch 1,mem_spid_rbuf
+	rtn
+
+wait_spid_done:
+	fetch 2,mem_afh_error_total
+	increase 1,pdata
+	store 2,mem_afh_error_total
+	hfetch 1,core_dma_status
+	bbit0 spid_done,wait_spid_done
+	rtn
+
+spid_init_flash:
+	hjam 0x40,core_spid_ctrl
+	hjam 0x0,core_spid_delay
+	hfetch 1,core_gpio_sel1
+	set0 0,pdata
+	set1 1,pdata
+	hstore 1,core_gpio_sel1
+	setarg 0
+	store 4,mem_spid_tbuf
+	rtn
+
+spid_unlock_flash:
+	setarg 0
+	hstore 2,core_spid_rxlen
+	setarg 1
+	hstore 1,core_spid_txlen
+	setarg mem_spid_tbuf
+	hstore 2,core_spid_txaddr
+	jam 6,mem_spid_tbuf
+	hjam spid_start,core_misc_ctrl
+	branch wait_spid_done
+
+
+	/* pdata is flash address, rega pointers to txdata(4 ahead bytes should be left), temp is length */
+spid_write_flash:
+	increase 4,temp
+	hstoret 2,core_spid_txlen
+	increase -4,rega
+	arg 2,temp
+	istoret 1,rega
+	rshift16 pdata,temp
+	istoret 1,contw
+	rshift8 pdata,temp
+	istoret 1,contw
+	istore 1,contw
+	deposit rega
+	hstore 2,core_spid_txaddr
+	setarg 0
+	hstore 2,core_spid_rxlen
+	hjam spid_start,core_misc_ctrl
+	branch wait_spid_done
+	
+
+/* temp is length, rega pointers to buf */
+spid_read_flash:
+	hstoret 2,core_spid_rxlen
+	setarg 4
+	hstore 2,core_spid_txlen
+	jam 3,mem_spid_tbuf
+	setarg mem_spid_tbuf
+	hstore 2,core_spid_txaddr
+	deposit rega
+	hstore 2,core_spid_rxaddr
+	hfetch 1,core_spid_ctrl
+	isolate0 15,rega
+	setflag true,6,pdata
+	hstore 1,core_spid_ctrl
+	hjam spid_start,core_misc_ctrl
+spi_read_flash_wait:
+	hfetch 1,core_dma_status
+	bbit1 7,spi_read_flash_wait			// waiting for spid write
+	arg spid_done,queue
+	call decrypt_code
+	call wait_spid_done
+	isolate1 spid_crcok,pdata
+	call set_ucode_status
+	fetch 1,mem_addr_hi
+	lshift16 pdata,regb
+	fetch 1,mem_addr_mi
+	lshift8 pdata,pdata
+	ior regb,regb
+	fetch 1,mem_addr_lo
+	ior regb,pdata
+	iadd temp,pdata
+	store 1,mem_addr_lo
+	rshift8 pdata,pdata
+	store 1,mem_addr_mi
+	rshift8 pdata,pdata
+	store 1,mem_addr_hi
+	rtn
+
+
+/* ===================== I2C dma ======================= */
+
+/*iicd_init_5m:
+	hjam 0xa,core_clksel			// use 5M rc clock to load eeprom
+	hjam 2,core_iicd_scl_low
+ 	hjam 3,core_iicd_scl_high
+	hjam 3,core_iicd_start_setup
+	hjam 3,core_iicd_start_hold
+	hjam 3,core_iicd_stop_setup
+	hjam 2,core_iicd_data_setup
+	rtn
+*/
+iicd_init_12m:
+	hjam 5,core_iicd_scl_low
+ 	hjam 7,core_iicd_scl_high
+	hjam 7,core_iicd_start_setup
+	hjam 7,core_iicd_start_hold
+	hjam 7,core_iicd_stop_setup
+	hjam 5,core_iicd_data_setup
+	rtn
+
+
+
+wait_iicd_done:
+	hfetch 1,core_dma_status
+	bbit0 iicd_done,wait_iicd_done
+	rtn
+
+/*
+pdata is tx length
+rega is points to tx buffer
+regb is points to rx buffer
+temp is rx length
+*/
+iicd_read_data:
+	hstore 2,core_iicd_txlen
+	deposit rega
+	hstore 2,core_iicd_txaddr	
+	deposit regb
+	hstore 2,core_iicd_rxaddr
+	deposit temp	
+	hstore 2,core_iicd_rxlen
+	arg 1,temp
+	nsetflag blank,1,temp
+	hstore 1,core_iicd_ctrl
+	hjam iicd_start,core_misc_ctrl
+	branch wait_iicd_done
+
+
+set_eeprom_size_2k:
+	set1 mark_eeprom_size,mark
+	jam 0x08,mem_eeprom_block_size
+	rtn
+
+clear_eeprom_size_2k:
+	set0 mark_eeprom_size,mark
+	jam 0x20,mem_eeprom_block_size
+	rtn
+
+
+iicd_read_eep_data_size_2k:
+ 	fetch 1,mem_eeprom_base
+	iadd regb,pdata
+	store 1,mem_addr_mi
+	branch iicd_read_eep_size_2k
+
+iicd_read_eep_size_2k_lcadcode:
+	fetch 2,mem_addr_mi
+	byteswap pdata,pdata
+	store 1,mem_addr_mi
+	
+//length:temp 
+//mem ptr:rega
+//eeprom addr:pdata
+iicd_read_eep_size_2k:
+ 	setarg 3
+	hstore 2,core_iicd_txlen
+	jam 0xa0,mem_iicd_tbuf
+	jam 0xa1,mem_iicd_tbuf+2
+	branch iicd_read_eep_common
+	
+//length:temp 
+//mem ptr:rega
+//eeprom addr offset:regb
+iicd_read_eep_data:
+	set1 mark_ext_patch,mark
+	bpatch patch30_1,mem_patch30
+	bmark1 mark_eeprom_size,iicd_read_eep_data_size_2k
+	fetch 2,mem_eeprom_base
+	iadd regb,pdata
+	byteswap pdata,pdata
+	store 2,mem_addr_mi
+
+/* rega pointers to buf, temp is length  */
+iicd_read_eep:
+	set1 mark_ext_patch,mark
+	bpatch patch30_2,mem_patch30
+	bmark1 mark_eeprom_size,iicd_read_eep_size_2k_lcadcode
+	nop 30000
+	setarg 4
+	hstore 2,core_iicd_txlen
+	jam 0xa0,mem_iicd_tbuf
+	jam 0xa1,mem_iicd_tbuf+3
+iicd_read_eep_common:	
+	setarg mem_iicd_tbuf
+	hstore 2,core_iicd_txaddr
+	hstoret 2,core_iicd_rxlen
+	deposit rega
+	hstore 2,core_iicd_rxaddr
+	setarg 2
+	isolate0 15,rega
+	setflag true,0,pdata
+	hstore 1,core_iicd_ctrl
+	hjam iicd_start,core_misc_ctrl
+	arg iicd_done,queue
+	call decrypt_code
+	call wait_iicd_done
+	isolate1 iicd_crcok,pdata
+	call set_ucode_status
+	bmark1 mark_eeprom_size,iicd_read_eep_load_code_size_2k
+	fetch 2,mem_addr_mi
+	byteswap pdata,pdata
+	iadd temp,pdata
+	byteswap pdata,pdata
+	store 2,mem_addr_mi
+	rtn
+
+iicd_read_eep_load_code_size_2k:
+	fetch 1,mem_addr_mi
+	iadd temp,pdata
+	byteswap pdata,pdata
+	store 2,mem_addr_mi
+	rtn
+	
+
+	
+//length:temp 
+//mem ptr:rega
+//eeprom addr offset:regb
+iicd_write_eep_data:
+	fetch 2,mem_eeprom_base
+	iadd regb,pdata
+
+//cuur ptr:pdata length:temp buf:rega
+iicd_write_ota_data:
+	store 2,mem_pdatatemp //curr ptr
+	set1 mark_ext_patch,mark
+	bpatch patch30_3,mem_patch30
+	storet 2,mem_temp	//len
+	copy rega,pdata
+	store 2,mem_contr
+iicd_write_eep_loop:
+	call iicd_eep_transparency
+
+	fetcht 2,mem_regb
+	fetch 2,mem_contr
+	copy pdata,rega
+	fetch 2,mem_pdatatemp
+	
+	call iicd_write_eep
+	
+
+	
+	fetch 2,mem_regb
+	fetcht 2,mem_contr
+	iadd temp,temp
+	storet 2,mem_contr
+	fetcht 2,mem_pdatatemp
+	iadd temp,temp
+	storet 2,mem_pdatatemp
+	fetch 2,mem_temp
+	nbranch iicd_write_eep_loop,blank
+	rtn
+	
+//in:
+//1.size 2.len 3.src 4.des
+//mem_regc page's area
+//mem_pdatatemp curr ptr
+//mem_temp all len      
+//mem_regb curr len
+iicd_eep_transparency:
+	set1 mark_ext_patch,mark
+	bpatch patch30_4,mem_patch30
+	fetch 2,mem_eeprom_block_size
+	increase -1,pdata
+	fetcht 2,mem_pdatatemp
+	ior temp,pdata
+	increase 1,pdata
+	store 3,mem_regc
+
+	fetch 2,mem_temp
+	iadd temp,pdata
+
+	fetcht 3,mem_regc
+	isub temp,pdata
+	nbranch iicd_eep_deal_short_packet,positive
+	store 2,mem_temp
+	fetch 3,mem_regc
+	fetcht 2,mem_pdatatemp
+	isub temp,pdata
+	store 2,mem_regb
+	rtn
+iicd_eep_deal_short_packet:
+	fetch 2,mem_temp
+	store 2,mem_regb
+	setarg 0
+	store 2,mem_temp
+	rtn
+
+iicd_write_eep_size_2k:
+	increase 2,temp
+	hstoret 2,core_iicd_txlen
+	increase -2,rega
+	ifetcht 3,rega
+	copy temp,regb
+	arg 0xa0,temp
+	istoret 1,rega
+//	byteswap pdata,pdata
+	istore 1,contw
+	branch iicd_write_eep_common
+
+	/* pdata is eeprom address, rega pointers to txdata(3 ahead bytes should be left), temp is length */
+iicd_write_eep:
+	copy pdata,regb
+	set1 mark_ext_patch,mark
+	bpatch patch30_5,mem_patch30
+	nop 30000
+	bmark1 mark_eeprom_size,iicd_write_eep_size_2k
+	copy regb,pdata
+	increase 3,temp
+	hstoret 2,core_iicd_txlen
+	increase -3,rega
+	ifetcht 3,rega
+	copy temp,regb
+	arg 0xa0,temp
+	istoret 1,rega
+	byteswap pdata,pdata
+	istore 2,contw
+iicd_write_eep_common:	
+	deposit rega
+	hstore 2,core_iicd_txaddr
+	setarg 0
+	hstore 2,core_iicd_rxlen
+	hjam 1,core_iicd_ctrl
+	hjam iicd_start,core_misc_ctrl
+	call wait_iicd_done
+	copy regb,pdata
+	istore 3,rega
+	nop 10000
+	nop 10000
+	nop 10000
+	rtn
+
+/* ===================== OTP ======================= */
+
+otp_enable_chgpump:
+	hjam 0x70,rfen_chgpump
+	nop param_chgpump_delay
+	rtn
+
+otp_disable_chgpump:
+	hjam 0x30,rfen_chgpump
+	rtn
+	
+otp_set_addr:
+	lshift3 pdata,pdata
+	hstore 2,core_otp_addr
+	hjam 0,core_otpd_ctrl
+	rtn	
+
+/* pdata = otp address, rega pointers data, loopcnt is count */
+otp_write:
+	call otp_set_addr
+	call otp_ce
+otp_program:
+	ifetcht 1,rega
+	increase 1,rega
+	force 0,queue
+otp_program_bit:
+	qisolate0 temp
+	branch otp_skip_0,true
+	hfetch 1,core_otp_din
+	set1 6,pdata				/* din */
+	set1 7,pdata				/* dle */
+	hstore 1,core_otp_din
+	hjam 0x02,core_otp_ctrl	/* web */
+	hjam 0x82,core_otp_ctrl
+	set0 7,pdata				/* dle */
+	hstore 1,core_otp_din
+	hjam 0x8a,core_otp_ctrl	/* pgmen */
+	nop 11
+	hjam 0xca,core_otp_ctrl	/* vppen */
+	nop 33
+	hjam 0x4a,core_otp_ctrl	/* web 2nd */
+	nop 44
+	hjam 0xca,core_otp_ctrl	/* release web */
+	nop 22
+	hjam 0x8a,core_otp_ctrl	/* release vppen */
+	nop 33
+	hjam 0x82,core_otp_ctrl	/* release pgmen */
+	nop 1
+	hjam 0x92,core_otp_ctrl	/* pgmvfy */
+	nop 10
+	hjam 0xb2,core_otp_ctrl	/* readen */
+	hfetch 1,core_otp_rdata
+	hjam 0x92,core_otp_ctrl	/* release readen */
+	nop 1
+	hjam 0x82,core_otp_ctrl	/* release pgmvfy */
+	qisolate0 pdata
+	branch otp_program_bit,true	/* program error */
+otp_skip_0:
+	hfetch 2,core_otp_addr
+	increase 1,pdata
+	hstore 2,core_otp_addr
+	increase 1,queue
+	compare 8,queue,0xf
+	nbranch otp_program_bit,true
+	loop otp_program
+	hjam 0x83,core_otp_ctrl
+	rtn
+
+otp_ce:
+	hjam 0x82,core_otp_ctrl	/* ceb */
+	nop 12
+	hjam 0x80,core_otp_ctrl	/* rstn */
+	hjam 0x82,core_otp_ctrl	/* release rstn */
+	nop 150					/* waiting for vdd25 stable */
+	rtn
+
+	/* rega points to data, temp is count */
+otpd_read_init:
+	call otp_ce
+	hjam 0xa2,core_otp_ctrl	/* readen */
+	deposit rega
+	hstore 2,core_otpd_addr
+	set1 11,temp
+	isolate0 15,pdata
+	setflag true,15,temp
+	hstoret 2,core_otpd_len
+	hjam otpd_start,core_misc_ctrl
+	rtn
+
+otpd_wait_end:
+	hfetch 1,core_dma_status
+	bbit0 otpd_done,otpd_wait_end
+	rtn
+	
+	/* pdata=otp address, rega points to data, temp is count */
+otpd_read_data:
+	call otp_set_addr
+	call otpd_read_init
+	call otpd_wait_end
+	hjam 0x83,core_otp_ctrl	/* release ceb */
+	rtn
+
+
+
+/* rega pointers to buf, temp is length */
+otpd_read_code:	
+	hfetch 2,core_current_otp_addr
+	hstore 2,core_otp_addr
+	call otpd_read_init
+	arg otpd_done,queue
+	call decrypt_code
+	call otpd_wait_end
+	isolate1 otpd_crcok,pdata	
+	call set_ucode_status
+	hjam 0x83,core_otp_ctrl	/* release ceb */
+	rtn
+
+/* ===================== uart dma ======================= */
+uartd_prepare_tx:
+	hfetch 2,core_uart_twptr
+	iforce contwu
+	rtn
+
+uartd_send:
+	deposit contwu
+	hstore 2,core_uart_twptr
+	rtn
+
+uartd_rxdone:
+	deposit contru
+	hstore 2,core_uart_rrptr
+	rtn
+
+uart_set_baud_by_mem:
+	fetch uart_baud_len,mem_baud
+	hstore uart_baud_len,core_uart_baud
+	rtn
+
+uart_copy_tx_bytes_fast:
+	deposit loopcnt
+	rtn blank
+uart_copy_tx_bytes_fast_loop:
+	increase -8,loopcnt
+	call uart_tx_8_bytes,positive
+	rtn zero
+	branch uart_copy_tx_bytes_fast_loop,positive
+	increase 8,loopcnt
+uart_copy_tx_bytes_fast_loop_four:
+	increase -4,loopcnt
+	call uart_tx_4_bytes,positive
+	rtn zero
+	branch uart_copy_tx_bytes_fast_loop_four,positive
+	increase 4,loopcnt
+	branch uart_copy_tx_bytes
+
+uart_tx_8_bytes:
+	ifetch 8,contr
+	istore 8,contwu
+	rtn
+
+uart_tx_4_bytes:
+	ifetch 4,contr
+	istore 4,contwu
+	rtn
+
+uart_copy_tx_bytes:
+	deposit loopcnt
+	rtn blank
+uart_copy_tx_bytes_loop:
+	ifetch 1,contr
+	istore 1,contwu
+	loop uart_copy_tx_bytes_loop
+	rtn
+
+uart_copy_rx_bytes_fast:
+	deposit loopcnt
+	rtn blank
+uart_copy_rx_bytes_fast_loop:
+	increase -8,loopcnt
+	call uart_rx_8_bytes,positive
+	rtn zero
+	branch uart_copy_rx_bytes_fast_loop,positive
+	increase 8,loopcnt
+uart_copy_rx_bytes_fast_loop_four:
+	increase -4,loopcnt
+	call uart_rx_4_bytes,positive
+	rtn zero
+	branch uart_copy_rx_bytes_fast_loop_four,positive
+	increase 4,loopcnt
+	branch uart_copy_rx_bytes
+
+uart_rx_8_bytes:
+	ifetch 8,contru
+	istore 8,contw
+	rtn
+
+uart_rx_4_bytes:
+	ifetch 4,contru
+	istore 4,contw
+	rtn
+
+
+uart_copy_rx_bytes:
+	deposit loopcnt
+	rtn blank
+uart_copy_rx_bytes_loop:
+	ifetch 1,contru
+	istore 1,contw
+	loop uart_copy_rx_bytes_loop
+	rtn
+
+
+/* ===================== eeprom data ======================= */
+
+check_51cmd_update_device_record:
+	set1 mark_ext_patch,mark
+	bpatch patch30_6,mem_patch30
+	fetch 1,mem_nv_data_number
+	rtn blank		// not nv data
+	call check_nvram
+	call init_device_list,zero
+	call nvram_find_addr_from_bd_list
+write_device_record:
+	fetch 1,mem_nv_data_number
+	icopy regc
+	fetcht 2,mem_nv_data_ptr
+	storet 2,mem_list_item_ptr
+write_device_loop_find:
+	copy regc,pdata
+	branch module_hci_event_store_device,blank  //EEPROM
+	increase -1,regc
+	copy temp,rega
+	ifetch 1,rega
+	fetcht 1,mem_select_list_item
+	isub temp,null
+	call set_index_finded_device,zero
+	branch write_device_loop_find0,positive
+	ifetch 1,rega
+	increase 1,pdata
+	istore 1,rega
+write_device_loop_find0:
+	fetcht 2,mem_list_item_ptr
+	increase NV_DATA_LEN,temp
+	storet 2,mem_list_item_ptr
+	branch write_device_loop_find
+
+set_index_finded_device:
+	setarg 0
+	istore 1,rega
+	fetch 1,mem_temp_reconn_record
+	istore 1,contw	
+	bne REC_3_MODE,set_index_finded_device_ble_mode
+	arg mem_link_key,regb
+set_index_find_device_MASTER_ADDR:
+	ifetch 6,contr
+	istore 8,contw
+	setarg 0
+	istore 8,contw
+	copy regb,contr
+store_rec_data_common:
+	call memcpy16
+	force 1,null
+	rtn
+
+set_index_finded_device_ble_mode:
+	beq REC_4_MODE_RANDOM_RESOLVABLE_PRIVATE_ADDRESS,set_index_finded_device_IRK
+	beq REC_4_MODE_RANDOM_NON_RESOLVABLE_PRIVATE_ADDRESS,set_index_finded_device_EDIV
+	arg mem_le_ltk,regb
+	branch set_index_find_device_MASTER_ADDR
+
+set_index_finded_device_IRK:
+	arg mem_le_irk,contr
+	call memcpy16
+store_ble_rec_data_common:
+	arg mem_le_ltk,contr
+	branch store_rec_data_common
+
+set_index_finded_device_EDIV:
+	arg mem_le_rand,contr
+	call memcpy16
+	branch store_ble_rec_data_common
+
+
+nvram_find_addr_from_bd_list:
+	call disable_usr
+	fetch 1,mem_nv_data_number
+	rtn blank		// not nv data
+	fetch 2,mem_ui_state_map
+	bbit1 UI_STATE_BT_CONNECTED,find_addr_from_bd_list_SPP_mode
+//	bbit1 UI_STATE_BLE_CONNECTED,find_addr_from_bd_list_ble_mode
+find_addr_from_bd_list_ble_mode:
+	fetch 1,mem_le_conn_peer_addr_type
+	beq MASTER_PUBLIC_ADDR,find_addr_from_bd_list_static_addr
+	fetch 1,mem_le_plap+5
+	compare 0xc0,pdata,0xc0
+	branch find_addr_from_bd_list_static_addr,true
+	compare 0x40,pdata,0xc0
+	branch find_addr_from_bd_list_random_addr,true
+	compare 0x00,pdata,0xc0
+	branch find_addr_from_bd_list_random_non_resolvable_private_address,true
+find_addr_from_bd_list_static_addr:
+	jam REC_4_MODE_STATIC_ADDRESS,mem_temp_reconn_record
+	fetch 6,mem_le_plap
+	branch find_addr_from_bd_list_common
+	
+find_addr_from_bd_list_random_non_resolvable_private_address:	
+	jam REC_4_MODE_RANDOM_NON_RESOLVABLE_PRIVATE_ADDRESS,mem_temp_reconn_record
+	branch find_addr_from_bd_list_common
+
+//input :pdata EDIV and rands
+find_addr_from_bd_list_random_addr:
+	jam REC_4_MODE_RANDOM_RESOLVABLE_PRIVATE_ADDRESS,mem_temp_reconn_record
+	branch find_addr_from_bd_list_common
+	
+//input :pdata EDIV and rands
+find_addr_from_bd_list_SPP_mode:
+	set1 mark_ext_patch,mark
+	bpatch patch30_7,mem_patch30
+	jam REC_3_MODE,mem_temp_reconn_record
+	fetch 6,mem_plap
+find_addr_from_bd_list_common:
+	store 6,mem_temp_reconn_record+1
+	fetch 2,mem_nv_data_ptr
+	ifetcht 1,pdata
+	pincrease 1
+	store 2,mem_list_item_ptr
+	storet 1,mem_select_list_item
+	fetch 1,mem_nv_data_number
+	icopy regc
+nvram_find_addr_from_list:
+	fetch 2,mem_list_item_ptr
+	copy pdata,rega
+	call nvram_find_addr_from_list_compare
+	rtn user
+	fetcht 2,mem_list_item_ptr
+	increase NV_DATA_LEN,temp
+	storet 2,mem_list_item_ptr
+	increase -1,temp
+	ifetch 1,temp
+	store 1,mem_select_list_item
+	increase -1,regc
+	nbranch nvram_find_addr_from_list,zero
+	fetch 1,mem_nv_data_number
+	pincrease DECREASED_ONE
+	store 1,mem_select_list_item
+	rtn
+nvram_find_addr_from_list_compare:
+	fetch 1,mem_temp_reconn_record
+	bne REC_3_MODE,find_addr_from_list_compare_ble_mode
+find_master_addr_from_list_compare:
+	arg mem_temp_reconn_record,regb
+	arg 7,loopcnt
+	call string_compare
+	branch enable_usr,zero
+	rtn
+
+find_addr_from_list_compare_ble_mode:
+	beq REC_4_MODE_RANDOM_RESOLVABLE_PRIVATE_ADDRESS,find_irk_form_list_compare
+	beq REC_4_MODE_RANDOM_NON_RESOLVABLE_PRIVATE_ADDRESS,find_ediv_form_list_compare
+	branch find_master_addr_from_list_compare
+
+find_irk_form_list_compare:
+	ifetcht 1,rega
+	isub temp,null
+	nrtn zero
+	arg mem_le_prand,contw
+	arg 16,loopcnt
+	call clear_mem
+	fetch 3,mem_le_plap+3
+	store 3,mem_le_prand
+	call genernate_master_MacAddress
+	fetch 2,mem_le_aes_128+13
+	byteswap pdata,pdata
+	lshift8 pdata,temp
+	ifetch 1,contr
+	iadd temp,pdata
+	fetcht 3,mem_le_plap
+	isub temp,null
+	branch enable_usr,zero
+	rtn
+
+
+genernate_master_MacAddress:
+	arg mem_le_prand ,contr
+	call load_data128
+//	arg mem_le_irk,contr
+	ifetch 1,rega
+	call load_regext
+	force 0x38,aes_ctrl
+	force 0x0,aes_ctrl
+	call wait_aes
+	arg mem_le_aes_128,contw
+	branch store_aes_result
+
+find_ediv_form_list_compare:
+	ifetcht 1,rega
+	isub temp,null
+	nrtn zero
+	copy contr,rega
+	add contr,8,regc
+	arg mem_le_rand,regb
+	arg 8,loopcnt
+	call string_compare
+	branch enable_usr,zero
+	copy regc,rega
+	arg mem_le_irk,regb
+	arg 8,loopcnt
+	call string_compare
+	branch enable_usr,zero
+	rtn
+
+check_nvram:
+	fetch 2,mem_nv_data_ptr
+	ifetcht 1,pdata
+	pincrease NV_DATA_LEN
+	ifetch 1,pdata
+	isub temp,null
+	rtn
+
+init_device_list:
+	fetch 1,mem_nv_data_number
+	icopy loopcnt
+	fetcht 2,mem_nv_data_ptr
+	setarg 0
+init_device_list_loop:
+	istore 1,temp
+	increase NV_DATA_LEN,temp
+	pincrease 1
+	loop init_device_list_loop
+	rtn
+
+load_device_list:
+	set1 mark_ext_patch,mark
+	bpatch patch31_0,mem_patch31
+	call nvram_find_addr_from_bd_list
+	nbranch clear_key_exists,user
+	add rega,10,contr
+//	copy rega,contr
+	arg mem_link_key,contw
+	call  memcpy16
+	branch check_link_key_load
+clear_key_exists:
+	jam 0,mem_link_key_exists
+	rtn
+
+load_device_list_mode_4:
+	fetch 9,mem_le_ediv
+	branch clear_ltk_exists,blank
+	call nvram_find_addr_from_bd_list
+	nbranch clear_ltk_exists,user
+	fetch 2,mem_list_item_ptr
+	add pdata,1,contr
+	arg mem_le_irk,contw
+	call  memcpy16
+	arg mem_le_ltk,contw
+	call  memcpy16
+	jam 1,mem_ltk_exists
+	rtn
+
+load_device_list_mode_4_shutter:
+	fetch 2,mem_le_ediv
+	nbranch load_device_list_mode_4_shutter_label,blank
+	fetch 6,mem_le_rand
+	branch clear_ltk_exists_iphone_lost_ltk,blank
+load_device_list_mode_4_shutter_label:
+	jam LTK_NOT_LOST,mem_ltk_states
+	setarg 0x112233
+	store 3,mem_le_ltk
+	setarg 0x445566
+	istore 3,contw
+	setarg 0x778899
+	istore 3,contw
+	setarg 0x001122
+	istore 3,contw
+	setarg 0x334455
+	istore 3,contw
+	setarg 0x66
+	istore 1,contw
+	jam 1,mem_ltk_exists
+	rtn
+
+clear_ltk_exists_iphone_lost_ltk:
+	jam IPHONE_LOST_LTK,mem_ltk_states
+clear_ltk_exists:
+	jam 0,mem_ltk_exists
+	rtn
+
+
+eeprom_store_le_reconn_info:
+	fetch 6,mem_le_plap
+	store 6,mem_temp_lap
+	jam REC_4_MODE,mem_record_bt_mode
+	branch eeprom_store_reconn_info
+eeprom_store_bd_reconn_info:
+	fetch 6,mem_plap
+	store 6,mem_temp_lap
+	jam REC_3_MODE,mem_record_bt_mode
+eeprom_store_reconn_info:
+	set1 mark_ext_patch,mark
+	bpatch patch31_1,mem_patch31
+	fetch 1,mem_device_option
+	beq dvc_op_module,check_51cmd_update_device_record
+	call eeprom_store_remote_bdaddr
+	call eeprom_store_last_record_index
+	fetch 1,mem_record_bt_mode
+	beq REC_4_MODE,eeprom_store_rec_4_mode
+	beq REC_3_MODE,eeprom_store_link_key
+	rtn
+eeprom_store_rec_4_mode:
+	call eeprom_store_le_ltl
+	branch eeprom_store_le_local_addr
+	
+//
+eeprom_load_reconn_info:
+	set1 mark_ext_patch,mark
+	bpatch patch31_2,mem_patch31
+	call eeprom_load_reconn_bdaddr
+	fetch 1,mem_select_list_item
+	rtneq 0xff
+	fetch 6,mem_temp_lap
+	store 6,mem_hci_plap
+	fetch 1,mem_record_bt_mode
+	store 1,mem_xrecord_mode
+	beq REC_3_MODE,eeprom_load_rec_3_mode
+	beq REC_4_MODE,eeprom_load_rec_4_mode
+	rtn
+eeprom_load_reconn_bdaddr:
+	call eeprom_load_last_record_index
+	fetch 1,mem_select_list_item
+	rtneq 0xff
+	branch eeprom_load_remote_bdaddr
+eeprom_load_rec_3_mode:
+	call eeprom_load_link_key
+	branch check_link_key_load
+eeprom_load_rec_4_mode:
+	call eeprom_load_ltk_key
+	branch check_ltk_load
+
+
+
+eeprom_erase_reconn_info:
+	set1 mark_ext_patch,mark
+	bpatch patch31_4,mem_patch31
+	setarg 0x0
+	store 3,mem_plap
+	istore 3,contw
+	branch eeprom_store_remote_bdaddr
+	
+eeprom_load_last_record_index:
+	arg 1,temp
+	arg mem_select_list_item,rega
+	arg eeprom_last_record,regb
+	branch iicd_read_eep_data
+
+eeprom_store_last_record_index:
+	arg 1,temp
+	arg mem_select_list_item,rega
+	arg eeprom_last_record,regb
+	branch iicd_write_eep_data
+
+
+eeprom_store_remote_bdaddr:
+	set1 mark_ext_patch,mark
+	bpatch patch31_5,mem_patch31
+	call eeprom_load_bdaddr_list
+	disable user
+	call find_addr_from_bd_list
+	rtn user
+eeprom_store_remote_addr_unfind:
+	jam 0,mem_select_list_item
+	fetch 6,mem_temp_lap
+	store 6,mem_bdaddr_list_buff+1
+	fetch 1,mem_record_bt_mode
+	store 1,mem_bdaddr_list_buff
+	arg 28,temp
+	arg mem_bdaddr_list_buff,rega
+	arg eeprom_bdaddr_list,regb
+	branch iicd_write_eep_data
+
+
+eeprom_store_le_local_addr:
+	arg 6,temp
+	arg mem_le_lap,rega
+	arg eeprom_le_reconn_local_addr,regb
+	branch iicd_write_eep_data
+	
+eeprom_load_le_loacal_addr:
+	arg 6,temp
+	arg mem_le_lap,rega
+	arg eeprom_le_reconn_local_addr,regb
+	branch iicd_read_eep_data
+
+
+eeprom_load_remote_bdaddr:
+	set1 mark_ext_patch,mark
+	bpatch patch31_6,mem_patch31
+	arg 7,temp
+	arg mem_temp_reconn_record,rega
+	arg eeprom_bdaddr_list,regb
+	fetch 1,mem_select_list_item
+	mul32 pdata,7,pdata
+	iadd regb,regb
+	branch iicd_read_eep_data
+
+eeprom_linkkey_addr:
+	arg 0x10,temp
+	arg eeprom_linkkey_list,regb
+	fetch 1,mem_select_list_item
+	lshift4 pdata,pdata
+	iadd regb,regb
+	rtn
+	
+eeprom_store_le_ltl:
+	arg mem_le_ltk,rega
+	branch eeprom_store_link_key_common
+eeprom_store_link_key:
+	arg mem_link_key,rega
+eeprom_store_link_key_common:
+	set1 mark_ext_patch,mark
+	bpatch patch31_7,mem_patch31
+	call eeprom_linkkey_addr
+	branch iicd_write_eep_data
+
+eeprom_load_ltk_key:
+	arg mem_le_ltk,rega
+	branch eeprom_load_link_key_common
+eeprom_load_link_key:
+	arg mem_link_key,rega
+eeprom_load_link_key_common:
+	set1 mark_ext_patch,mark
+	bpatch patch32_0,mem_patch32
+	call eeprom_linkkey_addr
+	branch iicd_read_eep_data
+
+
+	
+eeprom_load_bdaddr_list:
+	arg 28,temp
+	arg mem_bdaddr_list_buff+7,rega
+	arg eeprom_bdaddr_list,regb
+	branch iicd_read_eep_data
+
+
+find_addr_from_bd_list:
+	set1 mark_ext_patch,mark
+	bpatch patch32_1,mem_patch32
+	setarg mem_bdaddr_list_buff+7
+	store 2,mem_list_item_ptr
+	jam 0,mem_select_list_item
+	arg 4,loopcnt
+find_addr_from_list:
+	copy loopcnt,pdata
+	store 1,mem_pdatatemp
+	fetch 2,mem_list_item_ptr
+	copy pdata,rega
+	call find_addr_from_list_compare
+	rtn user
+	fetch 2,mem_list_item_ptr
+	increase 7,pdata
+	store 2,mem_list_item_ptr
+	fetch 1,mem_select_list_item
+	increase 1,pdata
+	store 1,mem_select_list_item
+	fetch 1,mem_pdatatemp
+	copy pdata,loopcnt
+	loop find_addr_from_list
+	rtn
+
+
+check_link_key_load:
+	fetch 8,mem_link_key
+	fetcht 8,mem_link_key+8
+	ior temp,pdata
+	rtn blank
+	jam 1,mem_link_key_exists
+	rtn
+check_ltk_load:
+	fetch 6,mem_hci_plap
+	rtn blank
+	jam 1,mem_ltk_exists
+	rtn
+
+find_addr_from_list_compare:
+	arg mem_temp_reconn_record,regb
+	arg 7,loopcnt
+	call string_compare
+	branch enable_usr,zero
+	rtn
+enable_usr:
+	enable user
+	rtn
+
+
+/* =============== GPIO CONTROL ================= */
+
+
+	//temp [4:0]=GPIO number, 0-31, 
+gpio_set_wake_by_current_state:
+	set1 mark_ext_patch,mark
+	bpatch patch32_2,mem_patch32
+	set1 7,temp
+	call gpio_get_bit
+	nsetflag true,7,temp
+	//branch gpio_set_wake
+	//fall through
+	
+	//temp [4:0]=GPIO number, 0-31, [7]=0, low active
+gpio_set_wake:
+	set1 mark_ext_patch,mark
+	bpatch patch32_3,mem_patch32
+	isolate0 7,temp
+	and temp,0x1f,queue
+	fetch 4,mem_gpio_wakeup_low
+	qsetflag true,pdata
+	store 4,mem_gpio_wakeup_low
+	fetch 4,mem_gpio_wakeup_high
+	nqsetflag true,pdata
+	store 4,mem_gpio_wakeup_high
+	rtn
+	
+	//temp [4:0]=GPIO number, 0-31, [7]=0, low active
+gpio_clr_wake:
+	set1 mark_ext_patch,mark
+	bpatch patch32_4,mem_patch32
+	isolate0 7,temp
+	and temp,0x1f,queue
+	fetch 4,mem_gpio_wakeup_low
+	qset0 pdata
+	store 4,mem_gpio_wakeup_low
+	fetch 4,mem_gpio_wakeup_high
+	qset0 pdata
+	store 4,mem_gpio_wakeup_high
+	rtn
+
+
+gpio_config_input_nowake:
+	call gpio_clr_wake
+	branch gpio_config_input_without_wake
+
+	//temp [4:0]=GPIO number, 0-31, [7]=0, low active
+gpio_config_input:
+	ncall gpio_set_wake,wake
+
+gpio_config_input_without_wake:
+	arg core_gpio_pd0,contw
+	call gpio_set_bit
+	setflip gpio_active_bit,temp
+	arg core_gpio_pu0,contw
+	call gpio_set_bit
+	set0 gpio_active_bit,temp
+	arg core_gpio_oe0,contw
+	branch gpio_set_bit
+	
+	//temp [4:0]=GPIO number, 0-31, [7]=0, low active. set gpio to inactive state
+gpio_config_output:	
+	setflip gpio_active_bit,temp
+	call gpio_out
+gpio_config_output0:
+	set1 gpio_active_bit,temp
+	arg core_gpio_oe0,contw
+	branch gpio_set_bit
+	
+gpio_common:
+	and temp,0x07,queue
+	rshift3 temp,pdata
+	and_into 3,pdata
+	iadd contw,contw
+	ifetch 1,contw
+	rtn
+
+gpio_check_active:
+	arg core_gpio_out0,contw
+	branch get_bit_common
+
+	
+	/* temp is gpio number, return true if gpio active */
+gpio_get_bit:
+	arg core_gpio_in,contw
+get_bit_common:
+	call gpio_common
+	isolate1 gpio_active_bit,temp
+	branch gpio_get_bit_reverse,true
+	qisolate0 pdata
+	rtn
+gpio_get_bit_reverse:
+	qisolate1 pdata
+	rtn
+
+gpio_out_inactive:
+	isolate1 7,null
+	branch gpio_out_flag
+
+gpio_out_active:
+	isolate0 7,null
+
+	/* temp is gpio number,  [7]=1,set out equa true flag if gpio active */
+gpio_out_flag:
+	setarg 0
+	nsetflag true,gpio_active_bit,pdata
+	ixor temp,temp
+	
+	/* temp is gpio number,0-31, [7]=out bit value */
+gpio_out:
+	arg core_gpio_out0,contw
+
+	//temp [4:0]=GPIO number, 0-31, [7]=bit value; contw is gpio reg base
+gpio_set_bit:
+	call gpio_common
+	isolate1 gpio_active_bit,temp
+	qsetflag true,pdata
+	istore 1,contw
+	rtn
+
+gpio_set_before_lpm_common:
+	arg -1,rega
+	hfetch 1,core_gpio_sel1
+	isolate1 1,pdata
+	call neglact4_from_23_pin,true	//spi
+	 
+	and pdata,0x3,regb
+	sub regb,1,null
+	call neglact2_form_25_pin,zero	//two spi
+	 
+	isolate1 2,pdata
+	call neglect2_from_6_pin,true	//uart
+	 
+	isolate1 3,pdata
+	call neglect4_from_9_pin,true	//spi
+
+	isolate1 5,pdata
+	call neglact2_form_27_pin,true	//clock external
+
+	isolate1 6,pdata
+	arg 4,queue
+	call neglact_1_pin,true
+	nsetflag true,4,rega			//pwm0 gpio4
+
+	isolate1 7,pdata
+	arg 5,queue
+	call neglact_1_pin,true			//pwm0 gpio5
+
+	hfetch 1,core_gpio_sel2
+	isolate1 0,pdata
+	arg 3,queue
+	call neglact_1_pin,true			//pwm0 gpio3
+	
+	hfetcht 1,core_gpio_sel
+	isolate1 0,temp
+	arg 5,queue
+	call neglact_1_pin,true			//ADC gpio5
+
+	ior temp,pdata
+
+	isolate1 1,pdata
+	arg 6,queue
+	call neglact_1_pin,true			//pwm0 or ADC gpio6
+	
+	isolate1 2,pdata
+	arg 7,queue
+	call neglact_1_pin,true			//pwm0 or ADC gpio7
+	
+	isolate1 3,pdata
+	arg 18,queue
+	call neglact_1_pin,true			//pwm0 or ADC gpio18
+	
+	isolate1 4,pdata
+	arg 19,queue
+	call neglact_1_pin,true			//pwm0 or ADC gpio19
+	
+	isolate1 5,pdata
+	arg 20,queue
+	call neglact_1_pin,true			//pwm0 or ADC gpio20
+	
+	isolate1 6,pdata
+	arg 21,queue
+	call neglact_1_pin,true			//pwm0 or ADC gpio21
+
+	isolate1 7,pdata
+	arg 22,queue
+	call neglact_1_pin,true			//pwm0 or ADC gpio22
+
+	hfetch 1,core_uart_ctrl
+	isolate1 4,pdata
+	call neglact2_form_2_pin,true
+	set1 mark_ext_patch,mark
+	bpatch patch32_5,mem_patch32
+
+	hfetch 4,core_gpio_pu0
+	hfetcht 4,core_gpio_pd0
+	ior temp,pdata
+	invert pdata,pdata
+	iand rega,pdata
+	//set0 4,pdata //revc
+	hfetcht 4,core_gpio_pd0
+	ior temp,pdata	
+	hstore 4,core_gpio_pd0
+	rtn
+neglect2_from_6_pin: //uart
+	 arg 6,queue
+	 branch neglect_2_pin
+neglect4_from_9_pin:
+	 arg 9,queue
+	 branch neglact_4_pin
+neglact4_from_23_pin:
+	 arg 23,queue
+	 branch neglact_4_pin
+neglact2_form_25_pin:
+	 arg 25,queue
+	 branch neglect_2_pin
+neglact2_form_27_pin:
+	 arg 27,queue
+	 branch neglect_2_pin
+neglact2_form_2_pin:
+	 arg 2,queue
+	 branch neglect_2_pin
+neglact_1_pin:
+	arg 1,loopcnt
+	branch neglect_pin_loop
+neglact_4_pin:
+	 arg 4,loopcnt
+	 branch neglect_pin_loop
+neglect_2_pin:
+	 arg 2,loopcnt
+neglect_pin_loop:
+	 qset0 rega
+	 increase 1,queue
+	 loop neglect_pin_loop
+	 rtn
+
+
+
+
+
+
+/* ===================== sniff GPIO CONTROL ======================= */
+gpio_cfg_uart_tx_output:
+	call gpio_uart2gpio
+	arg UART_WAKEUP_TX,temp
+	branch gpio_config_output
+
+gpio_pu_uart_tx:
+	call gpio_cfg_uart_tx_output
+	arg UART_WAKEUP_TX,temp
+	branch gpio_out_inactive
+
+
+
+gpio_rx_config_input_with_pu:
+	call gpio_uart2gpio
+	hfetch 1, core_gpio_pu0
+	set1 UART_WAKEUP_RX,pdata
+	hstore 1,core_gpio_pu0
+	arg UART_WAKEUP_RX,temp
+	branch gpio_config_input
+	
+gpio_uart2gpio:
+	hfetch 1,core_gpio_sel1
+	and_into 0xfb,pdata
+	hstore 1,core_gpio_sel1
+	rtn
+
+gpio_check_uart_state:
+	hfetch 1,core_gpio_sel1
+	isolate1 2,pdata
+	rtn
+
+load_chip_option:
+	call otp_enable_chgpump
+	setarg OTP_CHIP_FUNCTIONS
+	arg mem_chip_functions,rega
+	arg 0x02,temp
+	call otpd_read_data
+	branch otp_disable_chgpump
+	
+//mem_adc_config_flag 0:vinlpm 1:Hvin 2: GPIO
+
+adc_init_data:
+	set1 mark_ext_patch,mark
+	bpatch patch32_6,mem_patch32
+
+	call otp_enable_chgpump
+	setarg otp_adc_io_0_5V_addr
+	arg mem_0_5_adc_io_data,rega
+	arg 14,temp
+	call otpd_read_data
+	call otp_disable_chgpump
+	
+	fetch 1,mem_adc_config_flag
+	bbit1 ADC_CONFIG_VINLPM,adc_init_data_vinlpm
+	bbit1 ADC_CONFIG_HVIN,adc_init_data_hvin
+	bbit1 ADC_CONFIG_GPIO,adc_init_data_io
+	rtn	
+
+adc_init_data_vinlpm:
+	fetcht 2,mem_otp_adc_flag
+	setarg OTP_ADC_FLAG
+	isub temp,null
+	branch adc_check_data_vinlpm,zero
+	setarg 0x4dfa
+	store 2,mem_3v_adc_vinlpm_data	
+	setarg 0x4894
+	store 2,mem_2v_adc_vinlpm_data
+	branch set_vdd_reference_voltage_1v
+
+adc_check_data_vinlpm:
+	fetch 2,mem_3v_adc_vinlpm_data
+	nbranch adc_check_2v_vinlpm,blank
+	setarg 0x4dfa
+	store 2,mem_3v_adc_vinlpm_data
+adc_check_2v_vinlpm:	
+	fetch 2,mem_2v_adc_vinlpm_data
+	nbranch set_vdd_reference_voltage_1v,blank
+	setarg 0x4894
+	store 2,mem_2v_adc_vinlpm_data
+set_vdd_reference_voltage_1v:
+	setarg 100
+	store 2,mem_reference_voltage //set reference voltage = 1V
+	rtn		
+
+adc_init_data_hvin:
+	fetcht 2,mem_otp_adc_flag
+	setarg OTP_ADC_FLAG
+	isub temp,null
+	branch adc_check_data_hvin,zero
+	setarg 0x5932
+	store 2,mem_5v_adc_hvin_data	
+	setarg 0x4323
+	store 2,mem_1v_adc_hvin_data
+	branch set_vdd_reference_voltage_4v
+
+adc_check_data_hvin:
+	fetch 2,mem_5v_adc_hvin_data
+	nbranch adc_check_1v_hvin,blank
+	setarg 0x5932
+	store 2,mem_5v_adc_hvin_data
+adc_check_1v_hvin:	
+	fetch 2,mem_1v_adc_hvin_data
+	nbranch set_vdd_reference_voltage_4v,blank
+	setarg 0x4323
+	store 2,mem_1v_adc_hvin_data
+set_vdd_reference_voltage_4v:
+	setarg 400
+	store 2,mem_reference_voltage //set reference voltage = 4V
+	rtn 	
+
+adc_init_data_io:
+	fetcht 2,mem_otp_adc_flag
+	setarg OTP_ADC_FLAG
+	isub temp,null
+	branch adc_check_data_io,zero
+	setarg 0x6946
+	store 2,mem_1v_adc_io_data	
+	setarg 0x5377
+	store 2,mem_0_5_adc_io_data
+	branch set_vdd_reference_voltage_0_5v
+
+adc_check_data_io:
+	fetch 2,mem_1v_adc_io_data
+	nbranch adc_check_0_5v_io,blank
+	setarg 0x6946
+	store 2,mem_1v_adc_io_data
+adc_check_0_5v_io:
+	fetch 2,mem_0_5_adc_io_data
+	nbranch set_vdd_reference_voltage_0_5v,blank
+	setarg 0x5377
+	store 2,mem_0_5_adc_io_data
+set_vdd_reference_voltage_0_5v:
+	setarg 50
+	store 2,mem_reference_voltage //set reference voltage = 0.5V
+	rtn	
+
+
+adc_set_mode:
+	fetch 1,mem_adc_config_flag
+	bbit1 ADC_CONFIG_VINLPM,adc_check_vinlpm
+	bbit1 ADC_CONFIG_HVIN,adc_check_hvin
+	bbit1 ADC_CONFIG_GPIO,adc_check_gpio
+	rtn
+adc_check_vinlpm:
+	hjam 0xbf,rf_adc_mode	//read VINLPM voltage directly	
+	branch read_adc
+adc_check_hvin:
+	hjam 0xaf,rf_adc_mode	//read HVIN voltage directly
+	branch read_adc
+adc_check_gpio:
+	hjam 0x8f,rf_adc_mode
+	fetch 1,mem_adc_channel
+	hstore 1,rf_adc_ch
+	branch read_adc
+read_adc:
+	set1 mark_ext_patch,mark
+	bpatch patch32_7,mem_patch32
+	hfetch 1,core_uart_baud + 1
+	set1 7,pdata
+	hstore 1,core_uart_baud + 1 
+	hfetch 1,rf_adc_ch
+	or_into 0x30,pdata
+	hstore 1,rf_adc_ch
+	hjam 0x7c,rfen_adc
+	hjam 0xaa,rf_adc_gc
+	nop 5000
+	hfetcht 2,core_adc_sum
+	hfetch 1,core_uart_baud + 1
+	set0 7,pdata
+	hstore 1,core_uart_baud + 1
+	storet 2,mem_adc_current_value
+	rtn
+
+vdd_calculate_by_mode:
+	set1 mark_ext_patch,mark
+	bpatch patch33_0,mem_patch33
+	fetch 1,mem_adc_config_flag
+	bbit1 ADC_CONFIG_VINLPM,vdd_calculate_vinlpm
+	bbit1 ADC_CONFIG_HVIN,vdd_calculate_hvin
+	bbit1 ADC_CONFIG_GPIO,vdd_calculate_io
+	rtn
+
+vdd_calculate_vinlpm:
+	fetch 2,mem_3v_adc_vinlpm_data
+	fetcht 2,mem_2v_adc_vinlpm_data
+	arg 200,regc
+	branch vdd_calculate
+
+vdd_calculate_hvin:
+	fetch 2,mem_5v_adc_hvin_data
+	fetcht 2,mem_1v_adc_hvin_data
+	arg 100,regc
+	branch vdd_calculate
+
+vdd_calculate_io:
+	fetch 2,mem_1v_adc_io_data
+	fetcht 2,mem_0_5_adc_io_data
+	arg 50,regc
+	branch vdd_calculate
+	
+vdd_calculate:
+	isub temp,rega
+	fetch 2,mem_adc_current_value
+	isub temp,pdata
+	nbranch vdd_calculate1,positive
+	fetcht 2,mem_reference_voltage
+	imul32 temp,regb
+	copy regc,pdata
+	imul32 rega,pdata
+	iadd regb,pdata
+vdd_calculate2:
+	idiv rega
+	call wait_div_end
+	quotient pdata	
+	rtn
+
+vdd_calculate1:
+	copy temp,pdata
+	fetcht 2,mem_adc_current_value
+	isub temp,pdata
+	fetcht 2,mem_reference_voltage
+	imul32 temp,regb
+	copy regc,pdata
+	imul32 rega,pdata
+	isub regb,pdata
+	branch vdd_calculate2
+
+
+ifdef SPI_SIMULATE
+/******************************simulate spi slave start**********************************/
+
+/*
+// Define SPI struct, gpio config
+mem_spi_simulate_struct:
+02	#cs
+03	#sclk
+04	#mosi
+05	#miso
+08	#motion
+*/
+
+/*
+Brief: spi_simulate_init_slave
+Input: None
+Output: None
+Return: None
+Brief: cs_gpio,sclk_gpio,mosi_gpio : input
+	miso_gpio : output
+*/
+spi_simulate_init_slave:
+	call spi_simulate_variable_release_slave
+	branch spi_simulate_gpio_config_slave
+
+spi_simulate_variable_release_slave:
+	arg mem_spi_simulate_read_byte_slave,contw
+	arg 53,loopcnt
+	call buffer_release
+	arg mem_spi_simulate_write_byte_slave,contw
+	arg 54,loopcnt
+	branch buffer_release
+
+buffer_release:
+	setarg 0
+buffer_release_loop:
+	istore 1,contw
+	loop buffer_release_loop
+	rtn
+	
+spi_simulate_gpio_config_slave:
+	fetcht 1,mem_spi_simulate_cs_gpio
+	call gpio_config_input
+	fetcht 1,mem_spi_simulate_sclk_gpio
+	call gpio_config_input
+	fetcht 1,mem_spi_simulate_mosi_gpio
+	call gpio_config_input
+	fetcht 1,mem_spi_simulate_miso_gpio
+	call gpio_config_output
+	fetcht 1,mem_spi_simulate_motion_gpio
+	call gpio_config_output
+	branch spi_simulate_motion_disable
+
+spi_simulate_motion_enable:
+	fetcht 1,mem_spi_simulate_motion_gpio
+	branch gpio_out_inactive
+spi_simulate_motion_disable:
+	fetcht 1,mem_spi_simulate_motion_gpio
+	branch gpio_out_active
+	
+/*
+Brief: spi_simulate_read_byte_slave
+Input: rega: read length
+Output: mem_spi_simulate_read_byte_slave: read buffer
+Return: None
+Brief: when the cs_gpio is low level,slave reads data from master at the rising edge of the sclk gpio
+*/
+spi_simulate_read_byte_slave:
+	copy rega,pdata
+	store 1,mem_spi_simulate_read_length_slave
+	fetcht 1,mem_spi_simulate_cs_gpio
+	call gpio_get_bit
+	nrtn true
+spi_simulate_read_byte_slave1:	
+	jam 0,mem_spi_simulate_read_byte_slave_temp
+	arg 8,loopcnt
+spi_simulate_read_byte_slave_loop:
+	fetcht 1,mem_spi_simulate_cs_gpio
+	call gpio_get_bit
+	nbranch spi_simulate_read_byte_slave_end,true
+	
+	fetcht 1, mem_spi_simulate_sclk_gpio
+	call gpio_get_bit
+	branch spi_simulate_read_byte_slave_loop,true	
+	fetch 1,mem_spi_simulate_read_byte_slave_temp
+	lshift pdata,pdata
+	store 1,mem_spi_simulate_read_byte_slave_temp
+	fetcht 1, mem_spi_simulate_mosi_gpio
+	call gpio_get_bit
+	ncall spi_simulate_read_byte_or_one,true
+spi_simulate_read_byte_slave_loop1:	
+	fetcht 1,mem_spi_simulate_cs_gpio
+	call gpio_get_bit
+	nbranch spi_simulate_read_byte_slave_end,true
+
+	fetcht 1, mem_spi_simulate_sclk_gpio
+	call gpio_get_bit
+	nbranch spi_simulate_read_byte_slave_loop1,true
+	loop spi_simulate_read_byte_slave_loop
+	
+	fetcht 1,mem_spi_simulate_read_length_slave_temp
+	setarg mem_spi_simulate_read_byte_slave
+	iadd temp,contw
+	copy contw,regb
+	increase 1,temp
+	storet 1,mem_spi_simulate_read_length_slave_temp
+	fetch 1,mem_spi_simulate_read_byte_slave_temp
+	copy regb,contw
+	istore 1,contw
+
+	fetch 1,mem_spi_simulate_read_length_slave
+	increase -1,pdata
+	store 1,mem_spi_simulate_read_length_slave
+	nbranch spi_simulate_read_byte_slave1,blank
+	
+spi_simulate_read_byte_slave_loop2:	
+	fetcht 1, mem_spi_simulate_cs_gpio
+	call gpio_get_bit
+	nbranch spi_simulate_read_byte_slave_loop2,true
+spi_simulate_read_byte_slave_end:	
+	jam 0,mem_spi_simulate_read_length_slave
+	jam 0,mem_spi_simulate_read_length_slave_temp
+	jam 0,mem_spi_simulate_read_byte_slave_temp
+	rtn
+
+spi_simulate_read_byte_or_one:
+	fetch 1,mem_spi_simulate_read_byte_slave_temp
+	or_into 1,pdata
+	store 1,mem_spi_simulate_read_byte_slave_temp
+	rtn
+
+
+/*
+Brief: spi_simulate_write_byte_slave
+Input: rega: write length;  write buffer:mem_spi_simulate_write_byte_slave;
+Output: None
+Return: None
+Brief: when the cs_gpio is low level,slave writes data to master at the falling edge of the sclk gpio
+*/
+spi_simulate_write_byte_slave:
+	copy rega,pdata
+	store 1,mem_spi_simulate_write_length_slave
+	jam 0,mem_spi_simulate_write_length_slave_temp
+	jam 0,mem_spi_simulate_write_byte_slave_temp
+	fetcht 1,mem_spi_simulate_cs_gpio
+	call gpio_get_bit
+	nrtn true
+spi_simulate_write_byte_slave1:
+	fetcht 1,mem_spi_simulate_write_length_slave_temp
+	setarg mem_spi_simulate_write_byte_slave
+	iadd temp,contr
+	copy contr,regb
+	increase 1,temp
+	storet 1,mem_spi_simulate_write_length_slave_temp
+	copy regb,contr
+	ifetch 1,contr
+	store 1,mem_spi_simulate_write_byte_slave_temp
+	
+	arg 8,loopcnt
+spi_simulate_write_byte_slave_loop:
+	fetcht 1,mem_spi_simulate_cs_gpio
+	call gpio_get_bit
+	nbranch spi_simulate_write_byte_slave_end,true
+	fetcht 1, mem_spi_simulate_sclk_gpio
+	call gpio_get_bit
+	branch spi_simulate_write_byte_slave_loop,true
+spi_simulate_write_byte_slave_loop1:
+	fetch 1,mem_spi_simulate_write_byte_slave_temp
+	store 1,mem_spi_simulate_write_byte_slave_temp_temp
+	and_into 0x80,pdata
+	beq 0x80,spi_simulate_set_miso_gpio_high
+	call spi_simulate_set_miso_gpio_low
+spi_simulate_write_byte_slave_loop2:
+	fetcht 1,mem_spi_simulate_cs_gpio
+	call gpio_get_bit
+	nbranch spi_simulate_write_byte_slave_end,true
+	fetcht 1, mem_spi_simulate_sclk_gpio
+	call gpio_get_bit
+	nbranch spi_simulate_write_byte_slave_loop2,true	
+	fetch 1,mem_spi_simulate_write_byte_slave_temp_temp
+	lshift pdata,pdata
+	store 1,mem_spi_simulate_write_byte_slave_temp
+	loop spi_simulate_write_byte_slave_loop
+
+	fetch 1,mem_spi_simulate_write_length_slave
+	increase -1,pdata
+	store 1,mem_spi_simulate_write_length_slave
+	nbranch spi_simulate_write_byte_slave1,blank
+	
+spi_simulate_write_byte_slave_loop3:
+	fetcht 1,mem_spi_simulate_cs_gpio
+	call gpio_get_bit
+	branch spi_simulate_write_byte_slave_loop3,true
+spi_simulate_write_byte_slave_end:	
+	jam 0,mem_spi_simulate_write_length_slave_temp
+	jam 0,mem_spi_simulate_write_byte_slave_temp
+	jam 0,mem_spi_simulate_write_byte_slave_temp_temp
+	rtn
+	
+spi_simulate_set_miso_gpio_high:
+	fetcht 1,mem_spi_simulate_miso_gpio
+	call gpio_out_inactive
+	branch spi_simulate_write_byte_slave_loop2
+spi_simulate_set_miso_gpio_low:
+	fetcht 1,mem_spi_simulate_miso_gpio
+	branch gpio_out_active	
+
+/******************************simulate spi slave end**********************************/
+
+endif  //SPI_SIMULATE
+
Index: Standard_mouse/btms/rom/rom.format
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/rom/rom.format	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/rom/rom.format	(working copy)
@@ -0,0 +1,7271 @@
+
+	width = 32
+	const length = 12000
+
+	/* ========= memory ============== */
+memalloc(
+/* 00-0f most frequently used area  */
+1 mem_le_adv_transmit
+1 mem_le_adv_waitcnt
+1 mem_le_adv_rcv
+1 mem_le_req_rcv
+1 mem_le_scanrsp_rcv
+1 mem_le_conn_rcv
+
+1 mem_inquiryscan_waitcnt
+1 mem_inquiryscan_rcvcnt
+1 mem_pagescan_waitcnt
+1 mem_pagescan_rcvcnt
+1 mem_pagescan_rcvfhscnt
+1 mem_slave_rcvcnt
+1 mem_page_transmit
+1 mem_page_rcv
+1 mem_page_rcv_fhs
+1 mem_master_rcvcnt
+
+/* 10-1f debug area */
+1 mem_fhs_wait_counter
+1 mem_newconnto_counter
+1 mem_inquiry_transmit
+1 mem_inquiry_rcv
+1 mem_fw_ver
+1 mem_current_context
+1 mem_le_ch_mapped
+1 mem_last_freq
+1 mem_rssi
+1 mem_rx_type
+2 mem_rx_hec_err
+2 mem_rx_crc_err
+2 mem_context_ptr
+8 mem_display
+8 mem_bcd
+
+		/* context swappable area */
+1 mem_state
+1 mem_mode
+2 mem_tsniff
+4 mem_sniff_anchor
+6 mem_clk_offset
+2 mem_rx_window
+3 mem_plap
+1 mem_puap
+2 mem_pnap
+1 mem_conn_handle
+1 mem_arq
+1 mem_lmp_to_send
+1 mem_lmi_opcode
+1 mem_lmo_reason
+1 mem_op
+1 mem_state_map
+4 mem_supervision_timer
+2 mem_supervision_to
+1 mem_name_offset
+1 mem_key_size
+1 mem_conn_sm
+12 mem_aco
+16 mem_kc
+1 mem_conn_timer
+1 mem_sniff_attempt
+1 mem_sniff_timeout
+2 mem_dsniff
+1 mem_amaddr
+1 mem_lmo_opcode1
+1 mem_lmi_opcode1
+1 mem_lmo_reason1
+1 mem_lmo_tid1
+1 mem_lmo_opcode2
+1 mem_lmi_opcode2
+1 mem_lmo_reason2
+1 mem_lmo_tid2
+
+3 mem_hci_version
+2 mem_acl_pktlen
+1 mem_sco_pktlen
+2 mem_acl_pktcnt
+2 mem_sco_pktcnt
+
+1 mem_current_sniff_attempt
+1 mem_current_sniff_timeout
+1 mem_nfreq_index_inq
+1 mem_nfreq_index_page
+1 mem_ninqy_index
+1 mem_fhs_misc
+
+
+
+/* lpo related */
+4 mem_subsniff_instant
+1 mem_subsniff_rate
+2 mem_subsniff_tcmax
+1 mem_subsniff_tsniff
+1 mem_lpm_adjust
+6 mem_sync_clke
+1 mem_lpm_current_mult
+4 mem_gpio_wakeup_low
+4 mem_gpio_wakeup_high
+	
+
+/* sco & esco */
+1 mem_air_mode
+1 mem_sco_asso_handle
+2 mem_sco_handle
+1 mem_esco_desco
+1 mem_esco_type
+1 mem_neogotiation_state
+1 mem_saved_amaddr
+1 mem_esco_arq
+1 mem_esco_saved_arq
+30 mem_sco_obuf
+30 mem_sco_ibuf
+1 mem_sco_poll
+
+
+
+//page
+1 mem_npage_index
+1 mem_page_mode
+4 mem_page_clk
+
+
+/* test related */
+2 mem_tst_pktcnt_sync
+2 mem_tst_pktcnt_hec
+2 mem_tst_pktcnt_crc
+2 mem_tst_pktcnt_dmh
+3 mem_tmp_buffer_head
+80 mem_tmp_buffer
+
+
+1 mem_tester_emulate
+0 mem_temp_payload
+1 test_mode_scenario
+1 test_mode_hopping_mode
+1 test_mode_tx_freq
+1 test_mode_rx_freq
+1 test_mode_power_mode
+1 test_mode_poll_period
+1 test_mode_packet_type
+2 test_mode_data_length
+1 mem_test_mode_old_debug_config
+1 mem_tester_cnt
+
+
+/*temp mem*/
+1 mem_temp_am_addr
+1 mem_temp_arq
+
+//
+2 mem_len
+4 mem_clkn_bt
+4 mem_clke_bt
+4 mem_dpll_clkn
+1 mem_connection_options
+
+1 mem_nameres_cnt
+2 mem_txptr
+2 mem_slot_offset
+
+//extm
+1 extm_fhs_misc
+1 extm_newconn_am_addr
+3 extm_class
+3 extm_lap
+1 extm_uap
+3 extm_nap
+
+
+//debug
+1 mem_debug_config
+1 mem_lch_code
+1 mem_fhs_am_addr
+2 mem_dpll_error
+36 mem_bdaddr_list_buff
+1 mem_select_list_item
+0 mem_temp_reconn_record
+1 mem_record_bt_mode
+6 mem_temp_lap
+2 mem_list_item_ptr
+
+100 mem_eir
+)
+
+
+xmemalloc(
+/* patch enable 0x4000-0x403f  */
+
+1 mem_patch00
+1 mem_patch01
+1 mem_patch02
+1 mem_patch03
+1 mem_patch04
+1 mem_patch05
+1 mem_patch06
+1 mem_patch07
+1 mem_patch08
+1 mem_patch09
+1 mem_patch0a
+1 mem_patch0b
+1 mem_patch0c
+1 mem_patch0d
+1 mem_patch0e
+1 mem_patch0f
+1 mem_patch10
+1 mem_patch11
+1 mem_patch12
+1 mem_patch13
+1 mem_patch14
+1 mem_patch15
+1 mem_patch16
+1 mem_patch17
+1 mem_patch18
+1 mem_patch19
+1 mem_patch1a
+1 mem_patch1b
+1 mem_patch1c
+1 mem_patch1d
+1 mem_patch1e
+1 mem_patch1f
+1 mem_patch20
+1 mem_patch21
+1 mem_patch22
+1 mem_patch23
+1 mem_patch24
+1 mem_patch25
+1 mem_patch26
+1 mem_patch27
+1 mem_patch28
+1 mem_patch29
+1 mem_patch2a
+1 mem_patch2b
+1 mem_patch2c
+1 mem_patch2d
+1 mem_patch2e
+1 mem_patch2f
+1 mem_patch30
+1 mem_patch31
+1 mem_patch32
+1 mem_patch33
+1 mem_patch34
+1 mem_patch35
+1 mem_patch36
+1 mem_patch37
+1 mem_patch38
+1 mem_patch39
+1 mem_patch3a
+1 mem_patch3b
+1 mem_patch3c
+1 mem_patch3d
+1 mem_patch3e
+1 mem_patch3f
+
+	/* 3 device contexts  */
+240 mem_context
+1 mem_current_amaddr
+1 mem_lpm_mode
+1 mem_device_option
+1 mem_scan_mode
+4 mem_last_clkn
+
+	/* parameters */
+8 mem_features
+3 mem_lap
+1 mem_uap
+2 mem_nap
+1 mem_npage
+3 mem_glap
+3 mem_class
+2 mem_iscan_window
+2 mem_iscan_interval
+2 mem_pscan_window
+2 mem_pscan_interval
+2 mem_page_interval
+2 mem_page_window
+2 mem_page_to
+2 mem_inq_window
+1 mem_fcomp_mul
+1 mem_fcomp_div
+2 mem_rx_window_init
+2 mem_rx_window_sniff
+2 mem_rf_init_ptr
+
+	/* connection related */
+1 mem_last_type
+1 mem_last_type_esco
+1 mem_last_type_saved
+2 mem_retransmission_cnt
+4 mem_next_btclk
+
+1 mem_rf_rccal
+1 mem_handle_num
+1 mem_max_slot
+1 mem_eir_enable
+
+/* AFH related */
+4 mem_afh_instant
+2 mem_afh_error_total
+1 mem_afh_cfg
+1 mem_afh_new_mod
+5 mem_afh_map_lo
+5 mem_afh_map_hi
+1 mem_afh_used
+2 mem_afh_index
+11 mem_afh_map_new
+80 mem_afh_map
+4 mem_afh_timer
+10 mem_afh_classify_channel_map
+
+
+	/* lpm related */
+2 mem_chip_functions
+2 mem_lpm_wake_lock
+2 mem_lpm_interval
+1 mem_lpm_overhead
+1 mem_lpm_hibernate_switch
+1 mem_esco_addr
+1 mem_sniff_unint_lost
+1 mem_ptt
+4 mem_sleep_counter   //should be 0x41fc in REVC
+4 mem_sleep_counter_all
+6 mem_sleep_clkn
+3 mem_sniff_rcv
+3 mem_sniff_lost
+3 mem_clks_per_lpo
+
+1 mem_lpm_mult
+1 mem_lpm_mult_timeout
+1 mem_lpm_mult_cnt
+
+/* 8139-813b lpm_ctrl[31:12] */
+3 mem_lpm_config				
+
+1 mem_lpm_xtalcnt
+1 mem_lpm_buckcnt
+1 mem_lpm_ldocnt
+1 mem_lpm_isogate
+1 mem_lpm_isogate_final
+16 mem_saved_gpio	// should be 0x421e in REVC
+3 mem_saved_gsel
+8 mem_saved_mark
+1 mem_saved_spidctrl
+2 mem_patch_ptr
+2 mem_patch_len
+
+32 mem_timers
+
+/*LINK KEY*/
+1 mem_link_key_exists
+3 mem_link_key_eeprom_head
+16 mem_link_key
+
+
+/* HCI */
+1 mem_hci_cmd
+1 mem_hci_conn_handle
+3 mem_hci_plap
+1 mem_hci_puap
+2 mem_hci_pnap
+
+/*Peripherals*/
+1 mem_uartd_rxitems_got_data
+1 mem_uartd_rxitems_threshold
+2 mem_uartd_rx_timeout
+
+1 mem_tx_lch
+2 mem_tx_len
+
+1 mem_tx_power
+
+1 mem_context_number
+
+1 mem_rf_init_data
+)
+
+(//bluetooth tx power
+0 TX_POWER_0DB
+1 TX_POWER_3DB
+2 TX_POWER_5DB
+3 TX_POWER_f3DB
+4 TX_POWER_f5DB
+20 TX_POWER_PAIR
+)
+
+
+0x3b17 rom_lpm_sleep
+0x59e0 rom_save_ucode
+
+0x4219 rom_mem_lpm_xtalcnt
+0x423b rom_mem_patch_ptr
+0x423d rom_mem_patch_len
+
+0x5b1a rom_otpd_read_data
+0x5ada rom_otp_write
+	/* context */
+(
+0x01 coffset_mode
+0x02 coffset_tsniff
+0x04 coffset_sniff_anchor
+0x08 coffset_clk_offset
+0x0e coffset_rx_window
+0x10 coffset_plap
+0x16 coffset_conn_handle
+0x17 coffset_arq
+	/* 3.0 only */
+0x18 coffset_lmp_to_send
+0x1b coffset_op
+0x1c coffset_state_map
+	/* le only */
+0x18 coffset_le_ch
+0x19 coffset_le_hop
+0x1a coffset_le_event_cnt
+
+80 context_size
+3 context_num
+)
+
+(
+0 lpm_flag_wake
+1 lpm_flag_loadcode
+)
+
+/* ========= parameters ============== */
+(
+0x0050 param_newconn_arq
+0x0007 param_esco_addr
+0x0010 param_conn_handle
+0x01f0 param_conn_handle_comp
+0x0020 param_newconnto
+0x0008 param_pagerespto
+0x0a00 param_snooze_setup_orig
+0x5353 param_snooze_ahead_orig
+0x00ff param_ninquiry
+0x2000 param_page_to
+0x0005 param_max_slot
+0x0010 param_sco_poll
+
+/* 6Mhz clock setting */
+/* 12Mhz clock setting */
+0x0e43 param_tx_setup
+0x09d0 param_rx_setup_earlier
+0x0600 param_rf_setup
+0x03bb param_clke_cal
+0x0600 param_conn_access 
+0x0800 param_conn_access_wider
+0x0500 param_pll_setup		// 120 is minimum
+0x0d00 param_rx_setup	// 114us before sync
+2000 param_dpll_start_delay
+
+110 param_lpm_fix
+10 param_lpo_extra
+200 param_lpm_adjmax
+
+-1 param_hibernate_clks
+3000 param_chgpump_delay
+
+3 param_featrue_ssp
+0x0101 param_lmpext_ssp_enable
+339 param_acl_pktlen
+30   param_sco_pktlen
+1     param_acl_pktcnt		/*buffer acl pkt cnt*/
+7     param_sco_pktcnt
+
+
+0x8fffff param_features0
+0x9d83fe param_features1  // not support afh
+0x8359     param_features2
+0x000033 param_unap
+0x001177 param_lap
+0x9e8b33 param_glap
+0x002540 param_class//0x180208 //0x002580//402500//240404
+0x12e904 param_hci_version
+0x000a04 param_lmp_version//0x0a04
+0x000a06 param_lmp_version0
+0x12e9 param_lmp_subversion
+0x0012 param_tisw
+0x0012 param_tpsw
+0x1000 param_tisi
+0x0800 param_tpsi
+0x0020 param_page_window
+0x0020 param_inq_window
+0x1c80 param_supervision_to
+39 param_fcomp_div
+2 param_fcomp_mul
+6     param_name_len
+0x535442 param_name
+0x344950 param_name1
+
+
+)
+
+/* ======= packet types  ========= */
+(
+0x0      type_null    
+0x1      type_poll   
+0x2      type_fhs    
+0x3      type_dm1    
+0x4      type_dh1    
+0x5      type_hv1    
+0x6      type_hv2    
+0x7      type_hv3    
+0x8      type_3dh1     
+0x9      type_aux1   
+0xa      type_dm3    
+0xb      type_dh3    
+0xe      type_dm5    
+0xf      type_dh5    
+0x10     type_id
+0x11     type_shutdown
+0x13     type_lmp
+)
+
+/* ========== flag[6] =============== */
+(
+0        always        /* always 1 */
+1        true          /* set/rstn by verify,compare,icompare (true) */
+2        positive      /* set/rstn by all alu operations (opcode = 0x03,0x13,0x0f,0x1f), if alu output >= 0 */
+3        timeout       /* read only, the timeout from timers */
+5        zero          /* set/rstn by all alu operations (opcode = 0x03,0x13,0x0f,0x1f), if alu output == 0 */
+6        crc_failed    /* level, cleared by hop_start */
+7        enable_white  /* outside mux decide whether to load bt_clk or response_X */
+8        enable_parity /* level */
+9        enable_crc    /* level */
+10       enable_hec    /* level */
+11       decode_fec1   /* level */
+12       decode_fec2   /* level */
+13       decode_fec0   /* level */
+14       encrypt       /* level */
+15       crc16       /* for caculate ccitt crc16 */
+16       swfine	/* =0 stop_watch count based on oneslot =1 on 1 clock */
+20       rqst_freq    /* pulse, to start calculating frequency */
+21       recalc        /* pulse, to recalculate the fhs_parity */
+22       init_encrypt  /* pulse, issued to initialize encrption */
+23       mhalfbnd    /* half slot boundary of clke_rt, or when clke_bt[0] toggles */
+24       sync          /* sync found as a result of correlation,set/rstn by correlate opcode */
+25       user10    /* user10 */
+26       kc_p_activate  /* pulse to recalc the kc_p */
+27       encode_fec1   /* level */
+28       encode_fec2   /* level */
+29       encode_fec0   /* level */
+30       packet_end    /* pulse */
+32       is_tx         /* level */
+33       is_rx         /* level */
+34       halfslot     /* pulse, read only, when clkn_bt[0] toggles */
+35       oneslot      /* pulse, read only, when clkn_bt[1] toggles */
+36       mslotbnd     /* pulse, read only, when clke_bt[1] toggles */
+37       expire       /* level, read only, when selected clock source exceed timeup value */
+38       meet         /* level, read only, when selected clock source meet timeup value */
+39       tx_clear     /* level, read only, indicate tx pipe is cleared */
+40       user         /* user0 */
+41       master        /* user1 */
+42       slave2         /* user2 */
+43       wake           /* user3 */
+44       user2        /* user4 */
+45       match         /* user5 */
+46       attempt        /* user6 */
+47       user3          /* user7 */
+48       clknt         /* user8 */
+49	   user7 	/* user9 */
+50       synchronize   /* synchronize lpo and regular version of the clock */
+51       lpo_edge  /* read only, 3 clocks after risling edge of lpo clock */
+52       blank         /* C0 only, means pdata == 0 */
+53       modone          /* set divide operation is done */
+54       le		/* bluetooth 4.0 LE enable */
+55       aes_ready	/* set when aes is ok */
+63       never         /* read only, always 0 */
+)
+
+default flag = always
+
+/* ========== reg[6] =============== */
+(
+0        mark   /* for keeping strobes, more permanent */
+1        type   /* save and verify during rx */     /* rw */
+2        temp   /* general purpose register, 64 bits */
+3        contru  /* contr uart */
+4        am_addr      /* verify during rx, read and send during tx */ /* ro */
+5        contw        /* last mem_addr during write */
+6        contr        /* last mem_addr during read */
+7        queue    /* the index of qset*,qisolate* commands, ie, if queue = 3, qset/qisolate operate on bit3 */
+8        debug    /* can be wired out for observation */
+9        access   /* the 72 bit access word */
+10       contwu   /* contw uart */
+11       timeup        /* when does certain counter expire */
+12       pwindow       /* bit 71-61 of pdata; because on rx, bits shifts in from 71 down */
+13       fhs_parity    /* re-gernated based on bt_adr( {nap,uap,lap} ) when recalc flag is pulsed */
+14       white_init    /* init value of the whitening */
+15       crc24_init        /* init crc24 lfsr, 24 bits */
+16       interrupts    /* set interrupts, 40 bits */
+17       rega          /* general purpose register, 32 bits */
+18       regb          /* general purpose register, 32 bits */
+19       regc          /* general purpose register, 17 bits */
+20       regab         /* concat of {rega,regb}, thus 64 bits */
+21       radio_ctrl   /* radio i/f direct i/o ctrl, check following "radio_ctrl" section */
+21       ctrl_reg     /* 2023 and after */
+22       jtag_addr    /* load jtag address field, lsb */
+23       freq_index   /* 7 bit read only */
+24       jtag_data    /* wdata to and rdata from jtag */
+25       clkn              /* {clkn_bt, clkn_rt} */
+26       clke              /* {clke_bt, clke_rt} */
+27       stop_watch
+28       fhs_misc   /* SR, SP, pscan mode */
+29       fhs_class  /* class field in fhs */
+30       fhs0   /* read only, bit 0-71 of fhs word */
+31       fhs1   /* read only, bit 72-142 of fhs word */
+32       bt_adr /* r/w, the bt_addr to access gen and freq hopping, contain only lap and uap */
+33       bt_clk /* r/w, the bt_clk for freq hopping */
+34       clkn_bt  /* read only, native bluetooth clock, free running 3.2KHz  or controlled by RTHALFSLOT register */
+35       clkn_rt  /* read only, native realtime clock, free running 12MHz, count from 0-3749, or controlled by RTHALFSLOT register */
+36       freq_mode
+/* wire even_train    = freq_mode[4];    // odd even train                            */
+/* wire conn_mode     = 3;    // connection                                           */
+/* wire iqpgscan_mode = 2;    // slave in inquiry and page (not response)             */
+/* wire iqpgresp_mode = 1;    // slave in inquriy and page (response only)            */
+/* wire inqypage_mode = 0;    // master in inquiry and page(response or not response) */
+37       xin   /* x parameter, read only */
+38       N_tx_slot /* the N factor in equations for Xi,Xp,Xprm,Xprs */
+39 	   auxcnt
+40       clke_bt  /* r/w,  external bluetooth clock , free running 3.2KHz or controlled by RTHALFSLOT register */
+41       clke_rt  /* r/w,  external realtime clock, , free running 12MHz, count from 0-3749, or controlled by RTHALFSLOT register */
+43       host_mode         /* generic stuff for kick starts */
+44       lap
+45       uap
+46       nap         
+47       regext		/* r/w extended 12x32bit registers,  indexed by regext_index */
+48       alarm             /* r/w, lpo wake up time, this is also how lpo and current clock keep sync */
+49       lpo_time          /* read only, this is the value to be copied back to clkn/clke after wakeup */
+50       kc_ls             /* secret key,                71: 0 */
+51       kc_ms             /* secret key,               127:72 */
+52       g1l               /* encryption length                */
+53		mask3ff		/* for mask 0x3ff operation */
+54       aes_ctrl		
+56       regext_index   /* index of regext */
+57	     loopcnt
+58      stack			/* current return address */
+59       stack_ptr		/* stack depth */
+61         pc /* direct goto */
+62       null              /* to nowhere */
+63       pdata /* the shift register */
+)
+default reg = pdata
+
+/* regext_index */
+(
+0 regidx_data
+4 regidx_key
+8 regidx_xor
+12 regidx_result
+)
+/* ========== radio_ctrl========= */
+(
+0 TXGFSK
+1 PSK
+2 PSK3M
+3 RESET
+)
+/* assign BPWR = radio_ctrl[0]; */
+/* assign PARAMP = radio_ctrl[1]; */
+/* assign XTALPU = radio_ctrl[2]; */
+/* assign SYNTHPU = radio_ctrl[3]; */
+/* assign TXPU = radio_ctrl[4]; */
+/* assign RXPU = radio_ctrl[5]; */
+/* assign SLCTRL = radio_ctrl[6]; */
+/* assign XTALSEL_MUX_SEL = radio_ctrl[7] */
+
+
+/* =========== destination[4] ============== */
+(
+0 bucket
+1 rxf
+2 back
+3 mod
+)
+default dest = bucket
+
+/* =========== source[4] ============= */
+(
+1 txf
+3 demod
+)
+default source = 0
+
+
+/* ============== mark ============= *//*0 - 47 */
+(
+
+0  mark_fhs_eir  
+1  mark_rxbuf_inuse
+2  mark_tx_l2cap
+3  mark_switch_initiated
+4  mark_accept_switch
+5  mark_loopback
+7  mark_esco
+8  mark_esco_rxok
+9  mark_context
+10 mark_am_addr_broadcast
+11 mark_fhs_already_good
+12 mark_page_trainb
+13 mark_lpm_mult_enable
+14 mark_usb_flag
+15 mark_old_packet
+16 mark_longpacket
+17 mark_testmode
+18 mark_ar2
+19 mark_h5tx_rp
+20 mark_h5tx_crc	
+21 mark_h5tx_retransmit
+22 mark_h5rx_pstart
+23 mark_h5_sync
+24 mark_h5_reinit
+28 mark_inquiry_on
+29 mark_inquiry_state
+30 mark_inquiry_trainb
+31 mark_periodical_diac
+32 mark_all_diac
+33 mark_slave_in_rand_accepted
+34 mark_reconn_recieve_switch
+35 mark_isstr
+36 mark_loadcode
+37 mark_ext_patch
+38 mark_24g
+39 mark_24g_conext
+40 mark_24g_search_pair
+41 mark_24g_normal_rcv
+42 mark_eeprom_size
+// REVAB:max 35, REVC:max 63
+
+)
+
+(
+1 reload_type_otp
+2 reload_type_spi
+3 reload_type_iic
+)
+
+
+/* ============== soft timers ============== */
+(
+0 h5_reinit_timer
+1 hci_retransmit_timer
+1 le_adv_interval_timer
+2 inquiry_length_timer
+3 le_scan_interval_timer
+4 page_length_timer
+5 iscan_interval_timer
+6 pscan_interval_timer
+7 lpo_delay_timer
+8 ui_hundred_millisecond_timer
+9 ui_led_blink
+10 switch_wait_timer
+11 enpt_delay_timer
+12 temp_timer
+13 page_interval_timer
+14 uart_rx_timer
+)
+(
+0 ui_led_stop
+1 ui_led_start
+2 ui_led_dark_time
+3 ui_led_light_time
+)
+(
+1 hci_cmd_inquiry
+2 hci_cmd_inquiry_cancel
+3 hci_cmd_remote_name_req
+4 hci_cmd_remote_feature_req
+5 hci_cmd_create_conn
+6 hci_cmd_disconn
+7 hci_cmd_accept_conn
+8 hci_cmd_reject_conn
+9 hci_cmd_pair
+10 hci_cmd_nopair
+11 hci_cmd_linkkey
+12 hci_cmd_nokey
+13 hci_cmd_auth
+14 hci_cmd_stopencrypt
+15 hci_cmd_startencrypt
+16 hci_cmd_setup_sco
+17 hci_cmd_disconn_sco
+18 hci_cmd_in_sniff
+19 hci_cmd_exit_sniff
+20 hci_cmd_remote_version_req
+21 hci_cmd_remote_ext_features_req
+22 hci_cmd_io_cap
+23 hci_cmd_role_discovery
+24 hci_cmd_role_switch
+25 hci_cmd_accept_with_switch
+26 hci_cmd_detach
+27 hci_cmd_le_create_conn
+28 hci_cmd_accept_sco_conn
+80 hci_cmd_wait_remote_feature
+81 hci_cmd_wait_remote_ext_feature
+82 hci_cmd_wait_remote_name
+)
+
+
+
+/* ============== debug ============= */
+(
+0 debug_neg_skew
+1 debug_bitbucket
+2 debug_dont_clear_got_tx
+3 debug_scatter_enabled
+4 debug_tx_fixed_freq
+5 debug_rx_fixed_freq
+6 debug_tx_pattern
+)
+
+/* ============== tester_emulator ============= */
+(
+0 tester_fixed_flow
+1 tester_fixed_flow_polarity
+2 tester_change
+3 tester_exit
+4 tester_pattern_test
+5 tester_whitening_change
+6 tester_fixed_freq
+7 tester_no_whitening
+)
+
+/* ============== mode ==========*/
+(
+0 mode_le
+1 mode_master
+2 afh_enable
+3 afh_change
+4 send_sco_when_slave
+5 first_seqnx
+)
+
+/* ============== state_map ==========*/
+(
+0 smap_lmptidinit
+1 smap_lmptid
+2 smap_encryption
+3 smap_name_res
+4 smap_name_req
+5 smap_edr
+6 smap_rxlmp
+7 smap_rxl2cap
+)
+(
+0 state_inconn
+1 state_insniff
+2 state_insco 
+3 state_inpage
+4 state_conn_comp
+5 state_init_seq
+6 state_combkey
+7 state_linkkey
+)
+(
+0 op_send_sres
+1 op_auth_req
+2 op_inrand_req
+3 op_disconn
+4 op_stop_enc
+5 op_start_enc
+6 op_txl2cap
+7 op_pkt_comp
+)
+
+
+/* ============== arq [3] ================ */
+(
+0 flow
+1 arqn
+2 seqn
+3 wack
+4 flowx              /* out */  /* not really in memory */
+5 arqnx              /* out */
+6 seqnx              /* out */
+7 bcast1             /* first broadcast received */
+)
+
+/* arq          {flow,arqn,seqn}, read/write */
+/* [0] flow r/w  acl full status of the other, store during rx, checked during tx */
+/* [1] arqn r/w  ack of the other during rx (ack tx fifo),                        */
+/* [2] seqn r/w  seqn of the other, check during rx                               */ 
+/* arqx         {flowx,arqnx,seqnx} */
+/* [0] flowx r/o flow back to the other, 1 alow send, 0 not to send, read only tx */
+/* [1] arqnx r/w ack to the other, set by rx, send back on tx                     */
+/* [2] seqnx r/w toggled by arqn, to be send during tx                            */ 
+
+(
+0 llid0
+1 llid1
+2 nesn
+3 sn
+4 md
+5 wak
+)
+
+/* AFH flags */
+(
+0 AFH_CFG_ON
+1 AFH_CFG_TIMER
+2 send_lmp_set_afh
+3 AFH_CFG_REPORT_MODE
+4 AFH_CFG_MASTER_SENT_REQ
+)
+
+/* LLID CODE */
+(	
+1 LLID_L2CAP_CONT
+2 LLID_L2CAP_START
+3 LLID_LMP
+)
+
+/* ============== master_state ==========*/
+(
+0  master_in_idle
+1  master_in_inquiry
+2  master_in_page
+10 master_in_becoming_slave
+15 master_in_conn
+)
+(
+0 newrev_feature_bettx
+1 newrev_feature_betplltx
+2 newrev_feature_skip_retransmit
+3 newrev_feature_init_radio_after_sleep
+4 newrev_feature_no_lpolog
+)
+/*************mem_pincode_state****************/
+(
+0 pincode_state_ilde
+1 pincode_state_wait_pincode
+2 pincode_state_pincode_ready
+)
+
+
+// lpm_write
+(
+1 lpmreg_sel_ctrl
+2 lpmreg_sel_ctrl2
+4 lpmreg_sel_gpiolow
+8 lpmreg_sel_gpiohigh
+16 lpmreg_sel_counter
+)
+
+//scan_mode
+(
+0 inq_scan_mode
+1 page_scan_mode
+2 page_inq_enable
+)
+//mem_neogotiation_state
+(
+ 0 default_neogotiation_state
+ 1 prarm_neogotiation
+)
+
+//mem_lpm_wake_lock
+(
+
+2 wake_lock_hci_host
+3 wake_link_key_exists
+4 wake_lock_delay
+5 wake_lock_uart_tx
+6 wake_lock_uart_rx
+7 wake_lock_button
+8 wake_lock_cmd
+9 wake_lock_app
+10 wake_lock_lmp_tx
+11 wake_lock_lmp_rx
+12 wake_lock_l2cap_tx
+13 wake_lock_l2cap_rx
+14 wake_lock_ipc_c512bt
+15 wake_lock_ipc_bt2c51
+
+)
+
+(
+0 bt_disabled
+1 ble_disabled
+2 module_disable
+
+)
+
+(
+0x33  REC_3_MODE
+0x34  REC_4_MODE
+0x35  REC_4_MODE_STATIC_ADDRESS
+0x36  REC_4_MODE_RANDOM_RESOLVABLE_PRIVATE_ADDRESS
+0x37  REC_4_MODE_RANDOM_NON_RESOLVABLE_PRIVATE_ADDRESS
+)
+
+
+//sniff UART_TX UART_RX
+(
+6 UART_WAKEUP_TX
+7 UART_WAKEUP_RX
+)
+
+
+
+omemalloc(
+// patch allocated
+4 mem_24g_tx_btclk	
+1 mem_24g_interval
+1 mem_24g_txfail_cnt
+1 mem_24g_attempt_cnt
+1 mem_24g_attempt_flag
+3 mem_24g_rxfail_cnt
+1 mem_24g_retry
+1 mem_24g_pid
+1 mem_24g_datalen
+2 mem_24g_crc
+64 mem_24g_rxbuf
+4 mem_24g_addr
+2 mem_24g_len
+10 mem_24g_txpayload
+10 mem_24g_txdata
+1 mem_24g_ch
+16 mem_24g_scremble
+1 mem_24g_current_ch_number
+4 mem_24g_ch_map1
+4 mem_24g_ch_map2
+4 mem_24g_ch_map3
+4 mem_24g_ch_map4
+1 mem_24g_interval_min
+1 mem_24g_interval_max
+1 mem_24g_ensure
+
+8 mem_24g_enter_hibernate
+1 mem_24g_enter_lpm_timer
+1 mem_24g_pairing_sm
+4 mem_24g_addr_copy
+
+//2.4g dongle
+1 mem_24g_sifs
+1 mem_24g_rxcnt
+4 mem_24g_addr_private_dongle
+1 mem_24g_map_buff0_dongle
+1 mem_24g_channel_cnt_dongle
+1 mem_24g_pairing_sm_dongle
+4 mem_24g_tx_btclk_dongle	
+1 mem_24g_interval_dongle
+1 mem_24g_ch_update_dongle
+1 mem_24g_rx_sync_dongle
+1 mem_24g_ch_cnt_dongle
+6 mem_24g_rxbuf_temp_dongle
+6 mem_24g_rxbuf_dongle
+3 mem_24g_rxfail_cnt_dongle
+1 mem_24g_spi_enable_flag
+
+)
+
+(
+0 P24G_SM_PAIRING_SUCC
+1 P24G_SM_PAIRING_REQUEST
+2 P24G_SM_PAIRING_WAIT_ADDR
+3 P24G_SM_PAIRING_COMPLETE
+4 P24G_SM_PAIRING_WAIT_SUCC
+)
+
+(
+0 P24G_PAIRING_REQ_HEAD
+1 P24G_PAIRING_COMPLETE_HEAD
+)
+
+(
+0 ENSURE_OFF_24G
+1 ENSURE_ON_24G
+)
+
+/* 24g */
+(
+6 dlen_24g
+14 plen_24g
+90 blen_tx_24g
+106 blen_rx_24g
+42 blen_txack_24g
+58 blen_rxack_24g
+4 retry_24g
+0xaaf08e acc_24g
+0x15c4 crc_data_3byte
+0xbb81 crc_data_6byte
+0x4160 crc_ack
+41390 crc_ack_4byte
+
+1 NO_ACK_24g
+0 with_ack_24g
+
+0x10 ABORT_DATA
+0x40 RSSI_SENSITIVITY
+
+0x4e G24_PAIR_CH
+
+81000 G24_8125_INTERVAL_PARAM
+78000 G24_78125_INTERVAL_PARAM
+
+)
+
+(
+0 disable_24g
+1 tx_24g
+2 rx_24g
+
+0 bit_ack_24g
+)
+
+//mem_24g_interrupt
+(
+0 rx_dr
+1 rx_sync
+4 tx_ds
+5 tx_fail
+)
+
+//mem_24g_data_type
+(
+0x07 bits_data
+//0-2 data type
+3 bit_abort
+4 bit_hop
+5 bit_sync
+//6-7 channel offset
+)
+
+//mem_send_data_24g_short_lpm
+(
+0 SHORT_LPM_STATE_POLLING 	
+1 SHORT_LPM_STATE_DATA
+2 SHORT_LPM_STATE_NODATA
+3 SHORT_LPM_STATE_BUTTON_WHEEL
+)
+
+
+
+memalloc(
+
+/* load code */
+1 mem_ucode_status
+2 mem_otp_ucode_flag
+1 mem_spid_tbuf				/* spid buf: 03 addr[23:16] addr[15:8] addr[7:0] */
+0 mem_iicd_tbuf				/* iicd buf: iic_adr addr[15:8] addr[7:0] iic_adr */
+1 mem_addr_hi
+1 mem_addr_mi
+1 mem_addr_lo
+1 mem_iicd_addr
+4 mem_spid_rbuf
+2 mem_ucode_buf
+2 mem_ucode_len
+2 mem_sched_addr
+2 mem_ucode_ptr
+16 mem_ucode_keybuf
+18 mem_check_plap_temp
+
+1 mem_sensor_id
+1 mem_reconnect_flag
+1 mem_switch_fail_master_count
+1 mem_app_evt_timer_count
+
+)
+
+xmemalloc(
+1 mem_app_handshake_flag
+2 mem_sniff_param_interval
+2 mem_sniff_param_attempt
+2 mem_sniff_param_timeout
+
+/*App Callback Functons*/
+2 mem_cb_check_wakelock
+2 mem_cb_before_hibernate
+2 mem_cb_before_lpm
+2 mem_cb_le_process
+2 mem_cb_bt_process
+2 mem_cb_idle_process
+2 mem_cb_bb_event_process
+2 mem_cb_discovry_timeout
+2 mem_cb_att_write
+2 mem_cb_update_notify_value
+2 mem_cb_update_notify_continue
+2 mem_cb_event_timer
+2 mem_cb_le_set_mult
+2 mem_cb_bt_set_mult
+2 mem_soft_version_num
+
+
+
+
+2 mem_eeprom_base
+
+1 mem_unsniff2sniff_timer_count
+//lpm mode
+1 mem_wake_up_delay_timer
+
+1 mem_app_connection_options
+
+//
+2 mem_app_disconn_reason
+2 mem_app_disconn_reason_flag
+4 mem_lpm_delay_after_sniff
+1 mem_xrecord_mode
+
+2 mem_eeprom_block_size
+1 mem_wakup_from_power_flag
+1 mem_spi_init_clk
+1 mem_spi_init_delay_time
+1 mem_spi_ncs_gpio
+
+2 mem_nv_data_ptr
+1 mem_nv_data_number
+
+//adc
+2 mem_0_5_adc_io_data
+2 mem_1v_adc_hvin_data
+2 mem_2v_adc_vinlpm_data
+2 mem_1v_adc_io_data
+2 mem_5v_adc_hvin_data
+2 mem_3v_adc_vinlpm_data
+2 mem_otp_adc_flag
+2 mem_reference_voltage
+1 mem_adc_config_flag
+1 mem_adc_channel
+2 mem_adc_current_value
+
+ifdef SPI_SIMULATE
+//spi gpio config
+0 mem_spi_simulate_struct
+1 mem_spi_simulate_cs_gpio
+1 mem_spi_simulate_sclk_gpio
+1 mem_spi_simulate_mosi_gpio
+1 mem_spi_simulate_miso_gpio
+1 mem_spi_simulate_motion_gpio
+//spi slave read byte
+50 mem_spi_simulate_read_byte_slave
+1 mem_spi_simulate_read_byte_slave_temp
+1 mem_spi_simulate_read_length_slave
+1 mem_spi_simulate_read_length_slave_temp
+//spi slave write byte
+50 mem_spi_simulate_write_byte_slave
+1 mem_spi_simulate_write_byte_slave_temp
+1 mem_spi_simulate_write_byte_slave_temp_temp
+1 mem_spi_simulate_write_length_slave
+1 mem_spi_simulate_write_length_slave_temp
+endif
+)
+//adc read
+(
+0 ADC_CONFIG_VINLPM
+1 ADC_CONFIG_HVIN
+2 ADC_CONFIG_GPIO
+)
+
+
+0x0000 otp_ucode_flag
+0x07f0 otp_ucode_aeskey
+
+/* adc data addr and flag */
+(
+0x07e0 OTP_CHIP_FUNCTIONS
+0x07e2 otp_adc_io_0_5V_addr
+0x07e4 otp_adc_hvin_1V_addr
+0x07e6 otp_adc_vinlpm_2V_addr
+0x07e8 otp_adc_io_1V_addr
+0x07ea otp_adc_hvin_5V_addr
+0x07ec otp_adc_vinlpm_3V_addr
+0x07ee otp_adc_flag_addr
+0xaa55 OTP_ADC_FLAG
+)
+
+/* data stored in eeprom */
+(
+0	eeprom_bdaddr_list
+0	eeprom_nv_ram
+28	eeprom_last_record
+29	eeprom_le_reconn_local_addr
+35	eeprom_linkkey_list//64
+
+99	eeprom_module_bt_adss//6
+105	eeprom_module_le_adss//6
+111	eeprom_module_pincode_length//1
+112	eeprom_module_pincode//15
+127	eeprom_module_bt_name_length//1
+128	eeprom_module_bt_name//32
+160	eeprom_module_ble_name_length//1
+161	eeprom_module_ble_name//31
+192	eeprom_module_trans_baud//3
+195	eeprom_module_init_flag//2
+197	eeprom_module_uuid//6
+203 eeprom_module_ssp_enable//1
+204 eeprom_module_end//2
+
+//dpi eeprom addr
+198 eeprom_mouse_dpi
+)
+
+/*mem_app_handshake_flag*/
+(
+0 APP_HANDSHAKE_NULL
+1 APP_HANDSHAKE_DONE
+
+)
+/*mem_device_option*/
+(
+1 dvc_op_hci
+3 dvc_op_kb
+4 dvc_op_dongle
+5 dvc_op_spp
+6 dvc_op_ukey
+7 dvc_op_ir
+
+9 dvc_op_shutter
+10 dvc_op_module
+11 dvc_op_ble_mouse
+12 dvc_op_ble_kb
+13 dvc_op_ble_prcp
+255 dvc_op_test
+//device option hight 4
+6 dvc_op_mouse
+7 dvc_op_keyboard
+//device option low 2
+(
+0 MODE_3_MOUSE
+1 MODE_4_MOUSE
+)
+)
+
+(
+3 twspi_sclk
+4 twspi_sdio
+)
+
+(
+4 pan_clk_bit
+5 pan_dat_bit
+6 pan_mov_bit
+)
+
+(
+7 otp_uflag_aes
+6 otp_uflag_skip_eep
+5 otp_uflag_skip_flash
+4 otp_uflag_hci
+)
+
+/* ir command */
+(
+1 ircmd_record
+2 ircmd_play
+3 ircmd_write_pulse
+4 ircmd_write_seq
+5 ircmd_write_next
+
+8 ircmd_test_play
+9 ircmd_test_rec
+
+10 ircmd_report_pulse
+11 ircmd_report_seq
+12 ircmd_report_raw
+
+20 ircmd_screen_on
+21 ircmd_screen_off
+)
+
+(
+7 gpio_active_bit
+)
+(
+2 HID_HANDSHAKE_TIMEOUT
+
+)
+
+(
+1 APP_FLAG_RECONNECT
+)
+(
+5 LPM_WAKE_UP_DELAY_TIMER
+)
+
+
+//mem_app_disconn_reason
+//mem_app_disconn_reason_flag
+//bit map
+(
+2 APP_DISC_RSN_SIZE
+)
+(
+0 APP_DISC_BY_BUTTON
+1 APP_DISC_AFTER_PAIRING
+2 APP_DISC_AFTER_RECONN
+3 APP_DISC_AFTER_SNIFF
+4 APP_DISC_AFTER_SETUP_DONE
+5 APP_DISC_AFTER_HANDSHAKE
+6 APP_DISC_BT
+7 APP_DISC_BLE
+8 APP_DISC_L2CAP_REFUSED
+9 APP_DISC_SWITCH_FAIL
+)
+//eeprom init flag
+(
+	0xaa55 EEPROM_INIT_FLAG
+)
+
+(
+0x01 IPC_TYPE_CMD
+0x02 IPC_TYPE_EVT
+0x03 IPC_TYPE_HID
+0x04 IPC_TYPE_SPP
+0x05 IPC_TYPE_BLE
+0x06 IPC_TYPE_24G
+)
+
+(
+0x01 SYC_TASK_LPM
+0x02 SYC_TASK_TIMER
+0x03 SYC_TASK_HIBERNATE
+)
+
+
+
+memalloc(
+1 mem_h5rx_ackcnt
+1 mem_check_err_acl_cont
+
+1 mem_rp_packets
+2 mem_packet_type
+
+2 mem_hci_sniff_conn_handle
+2 mem_hci_sniff_max_interval
+2 mem_hci_sniff_min_interval
+2 mem_hci_sniff_attempt
+2 mem_hci_sniff_timeout
+2 mem_voice_setting
+1 mem_retransmission_effort
+2 mem_sco_ptype
+3 mem_extm_uap_restore
+
+2 mem_h5rx_rptr
+1 mem_h5rx_ack
+1 mem_h5tx_ack
+2 mem_h5tx_rptr
+2 mem_h5tx_wptr
+2 mem_h5tx_free
+1 mem_h5rx_tmp
+1 mem_h5tx_seq
+
+2 mem_hci_acl_queue_wptr
+2 mem_hci_acl_queue_rptr
+2 mem_hci_acl_queue_end
+1 mem_hci_acl_queue_wcnt
+1 mem_hci_acl_cnt
+
+2 mem_hci_acl_tx_trigger_wptr //tx via uart
+
+
+1 mem_ucode_id_local
+
+1 mem_ucode_id_remote
+1 mem_check_sum
+1 mem_ucode_temp
+1 mem_ucode_temp1
+1 mem_lock_in_enc//boolean
+
+1 mem_hci_disconn_reason
+
+1 mem_hci_curr_len
+2 mem_hci_curr_target 
+) 
+
+xmemalloc(
+
+2 mem_baud
+1 mem_hci_lt_rx_state
+)
+
+omemalloc(
+
+2 mem_acl_credits
+1 mem_allow_switch
+4 mem_hci_acl_queue_start	/*param_acl_pktcnt+2 byte*/
+4 mem_hci_wake_clk
+
+)
+15 hci_flag_rp
+//mem_hci_options bit map
+(
+1 hci_option_h4
+2 hci_option_protocol2
+3 hci_option_protocol3
+4 hci_option_uart
+5 hci_option_usb
+6 hci_option_phy2
+7 hci_option_phy3
+)
+// UART baud rate @6MHz
+(
+0 uart_ctrl_bit_enable
+3 uart_ctrl_bit_slip_protocol
+
+)
+
+//bit map of core_uart_ctrl
+(
+
+)
+//bit map of core_uart_status
+(
+0 uart_status_tx_fifo_full
+1 uart_status_tx_fifo_empty
+2 uart_status_tx_busy
+3 uart_status_rx_fifo_empty
+
+)
+//HCI H4 LOG related
+(
+0x4850 mem_hci_log
+8 hci_log_size
+100 hci_log_cnt
+
+)
+//HCI H4 Packet TYPE
+(
+0x01 HCI_H4_TYPE_CMD
+0x02 HCI_H4_TYPE_ACL
+0x04 HCI_H4_TYPE_EVENT
+
+)
+// HCI command opcode group field values
+(
+0x01 HCI_OGF_LINK_CONTROL
+0x02 HCI_OGF_LINK_POLICY
+0x03 HCI_OGF_BASEBAND
+0x04 HCI_OGF_INFO
+0x05 HCI_OGF_STATUS
+0x06 HCI_OGF_TEST
+0x08 HCI_OGF_LOW_ENERGY
+0x3e HCI_OGF_LOGO_TESTING
+0x3f HCI_OGF_VENDOR_SPECIFIC
+)
+
+// HCI link control opcode command field values, OGF=1
+(
+0x01 HCI_INQUIRY 
+0x02 HCI_INQUIRY_CANCEL 
+0x03 HCI_PERIODIC_INQUIRY_MODE 
+0x04 HCI_EXIT_PERIODIC_INQUIRY_MODE 
+0x05 HCI_CREATE_CONNECTION 
+0x06 HCI_DISCONNECT 
+0x07 HCI_ADD_SCO_CONNECTION 
+0x08 HCI_CREATE_CONNECTION_CANCEL
+0x09 HCI_ACCEPT_CONNECTION 
+0x0A HCI_REJECT_CONNECTION 
+0x0B HCI_LINK_KEY_REQUEST_REPLY 
+0x0C HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY 
+0x0D HCI_PIN_CODE_REQUEST_REPLY 
+0x0E HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY 
+0x0F HCI_CHANGE_CONNECTION_PACKET_TYPE 
+0x11 HCI_AUTHENTICATION_REQUESTED 
+0x13 HCI_SET_CONNECTION_ENCRYPTION 
+0x15 HCI_CHANGE_CONNECTION_LINK_KEY 
+0x17 HCI_MASTER_LINK_KEY 
+0x19 HCI_REMOTE_NAME_REQUEST 
+0x1A HCI_REMOTE_NAME_REQUEST_CANCEL
+0x1B HCI_READ_REMOTE_SUPPORTED_FEATURES 
+0x1C HCI_READ_REMOTE_EXT_FEATURES 
+0x1D HCI_READ_REMOTE_VERSION_INFORMATION 
+0x1F HCI_READ_CLOCK_OFFSET 
+0x20 HCI_READ_LMP_HANDLE
+0x28 HCI_SETUP_SCO_CONNECTION
+0x29 HCI_ACCEPT_SCO_CONNECTION
+0x2A HCI_REJECT_SCO_CONNECTION
+0x2B HCI_IO_CAP_REQUEST_REPLY
+0x2C HCI_USER_CONFIRMATION_REQUEST_REPLY
+0x2D HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY
+0x2E HCI_USER_PASSKEY_REQUEST_REPLY
+0x2F HCI_USER_PASSKEY_REQUEST_NEGATIVE_REPLY
+0x30 HCI_REMOTE_OOB_DATA_REQUEST_REPLY
+0x33 HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY
+0x34 HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY
+0x35 HCI_CREATE_PHYSICAL_LINK
+0x36 HCI_ACCEPT_PHYSICAL_LINK
+0x37 HCI_DISCONNECT_PHYSICAL_LINK
+0x38 HCI_CREATE_LOGICAL_LINK
+0x39 HCI_ACCEPT_LOGICAL_LINK
+0x3A HCI_DISCONNECT_LOGICAL_LINK
+0x3B HCI_LOGICAL_LINK_CANCEL
+0x3C HCI_FLOW_SPEC_MODIFY
+0x3D HCI_ENHANCED_SETUP_SYNCHRONOUS_CONNECTION
+0x3E HCI_ENHANCED_ACCEPT_SYNCHRONOUS_CONNECTION_REQUEST
+0x3F HCI_TRUNCATED_PAGE
+0x40 HCI_TRUNCATED_PAGE_CANCEL
+0x41 HCI_SET_CONNECTIONLESS_SLAVE_BROADCAST
+0x42 HCI_SET_CONNECTIONLESS_SLAVE_BROADCAST_RECEIVE
+0x43 HCI_START_SYNCHRONIZATION_TRAIN
+0x44 HCI_RECEIVE_SYNCHRONIZATION_TRAIN
+0x45 HCI_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY
+)
+
+
+// HCI link policy commands OCF value, OGF=2
+(
+0x01 HCI_HOLD_MODE 
+0x03 HCI_SNIFF_MODE 
+0x04 HCI_EXIT_SNIFF_MODE 
+0x05 HCI_PARK_MODE 
+0x06 HCI_EXIT_PARK_MODE 
+0x07 HCI_QOS_SETUP 
+0x09 HCI_ROLE_DISCOVERY 
+0x0B HCI_SWITCH_ROLE 
+0x0C HCI_READ_LINK_POLICY_SETTINGS 
+0x0D HCI_WRITE_LINK_POLICY_SETTINGS 
+0x0e HCI_READ_DEFAULT_LINK_POLICY_SETTINGS
+0x0f HCI_WRITE_DEFAULT_LINK_POLICY_SETTINGS
+0x10 HCI_FLOW_SPECIFICATION
+0x11 HCI_SNIFF_SUBRATING
+)
+
+// HCI host controller and baseband commands OCF values, OGF=3
+(
+0x01 HCI_SET_EVENT_MASK 
+0x03 HCI_RESET 
+0x05 HCI_SET_EVENT_FILTER 
+0x08 HCI_FLUSH 
+0x09 HCI_READ_PIN_TYPE 
+0x0A HCI_WRITE_PIN_TYPE 
+0x0B HCI_CREATE_NEW_UNIT_KEY 
+0x0D HCI_READ_STORED_LINK_KEY 
+0x11 HCI_WRITE_STORED_LINK_KEY 
+0x12 HCI_DELETE_STORED_LINK_KEY 
+0x13 HCI_WRITE_LOCAL_NAME 
+0x14 HCI_READ_LOCAL_NAME 
+0x15 HCI_READ_CONN_ACCEPT_TIMEOUT 
+0x16 HCI_WRITE_CONN_ACCEPT_TIMEOUT 
+0x17 HCI_READ_PAGE_TIMEOUT 
+0x18 HCI_WRITE_PAGE_TIMEOUT 
+0x19 HCI_READ_SCAN_ENABLE 
+0x1A HCI_WRITE_SCAN_ENABLE 
+0x1B HCI_READ_PAGE_SCAN_ACTIVITY 
+0x1C HCI_WRITE_PAGE_SCAN_ACTIVITY 
+0x1D HCI_READ_INQUIRY_SCAN_ACTIVITY 
+0x1E HCI_WRITE_INQUIRY_SCAN_ACTIVITY 
+0x1F HCI_READ_AUTHENTICATION_ENABLE 
+0x20 HCI_WRITE_AUTHENTICATION_ENABLE 
+0x21 HCI_READ_ENCRYPTION_MODE 
+0x22 HCI_WRITE_ENCRYPTION_MODE 
+0x23 HCI_READ_CLASS_OF_DEVICE 
+0x24 HCI_WRITE_CLASS_OF_DEVICE 
+0x25 HCI_READ_VOICE_SETTING 
+0x26 HCI_WRITE_VOICE_SETTING 
+0x27 HCI_READ_AUTOMATIC_FLUSH_TIMEOUT 
+0x28 HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT 
+0x29 HCI_READ_NUM_BROADCAST_RETRANSMISSIONS 
+0x2A HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS 
+0x2B HCI_READ_HOLD_MODE_ACTIVITY 
+0x2C HCI_WRITE_HOLD_MODE_ACTIVITY 
+0x2D HCI_READ_TRANSMIT_POWER_LEVEL 
+0x2E HCI_READ_SCO_FLOW_CONTROL_ENABLE 
+0x2F HCI_WRITE_SCO_FLOW_CONTROL_ENABLE 
+0x31 HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL 
+0x33 HCI_HOST_BUFFER_SIZE 
+0x35 HCI_HOST_NUM_COMPLETED_PACKETS 
+0x36 HCI_READ_LINK_SUPERVISION_TIMEOUT 
+0x37 HCI_WRITE_LINK_SUPERVISION_TIMEOUT 
+0x38 HCI_READ_NUMBER_OF_SUPPORTED_IAC 
+0x39 HCI_READ_CURRENT_IAC_LAP 
+0x3A HCI_WRITE_CURRENT_IAC_LAP 
+0x3B HCI_READ_PAGE_SCAN_PERIOD_MODE 
+0x3C HCI_WRITE_PAGE_SCAN_PERIOD_MODE 
+0x3D HCI_READ_PAGE_SCAN_MODE 
+0x3E HCI_WRITE_PAGE_SCAN_MODE 
+0x3F HCI_SET_AFH_CHANNEL_CLASSIFICATION 
+
+
+0x42 HCI_READ_INQUIRY_SCAN_TYPE 
+0x43 HCI_WRITE_INQUIRY_SCAN_TYPE 
+0x44 HCI_READ_INQUIRY_MODE 
+0x45 HCI_WRITE_INQUIRY_MODE 
+0x46 HCI_READ_PAGE_SCAN_TYPE 
+0x47 HCI_WRITE_PAGE_SCAN_TYPE 
+
+0x48 HCI_READ_AFH_CHANNEL_ACCESSMENT_MODE 
+0x49 HCI_WRITE_AFH_CHANNEL_ACCESSMENT_MODE 
+0x51 HCI_READ_EXTENDED_INQUIRY_RESPONSE
+0x52 HCI_WRITE_EXTENDED_INQUIRY_RESPONSE
+0x53 HCI_REFRESH_ENCRYPTION_KEY
+0x55 HCI_READ_SIMPLE_PAIRING_MODE
+0x56 HCI_WRITE_SIMPLE_PAIRING_MODE
+0x57 HCI_READ_LOCAL_OOB_DATA
+0x58 HCI_READ_INQUIRY_RESPONSE_TRANSMIT_POWER_LEVEL
+0x59 HCI_WRITE_INQUIRY_TRANSMIT_POWER_LEVEL
+0x60 HCI_SEND_KEYPRESS_NOTIFICATION
+0x5A HCI_READ_DEFAULT_ERRONEOUS_DATA_REPORTING
+0x5B HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING
+0x5F HCI_ENHANCED_FLUSH
+0x61 HCI_READ_LOGICAL_LINK_ACCEPT_TIMEOUT
+0x62 HCI_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT
+0x63 HCI_SET_EVENT_MASK_PAGE_2
+0x64 HCI_READ_LOCATION_DATA
+0x65 HCI_WRITE_LOCATION_DATA
+0x66 HCI_READ_FLOW_CONTROL_MODE
+0x67 HCI_WRITE_FLOW_CONTROL_MODE
+0x68 HCI_READ_ENHANCE_TRANSMIT_POWER_LEVEL
+0x69 HCI_READ_BEST_EFFORT_FLUSH_TIMEOUT
+0x6A HCI_WRITE_BEST_EFFORT_FLUSH_TIMEOUT
+0x6B HCI_SHORT_RANGE_MODE
+0x6C HCI_READ_LE_HOST_SUPPORT
+0x6D HCI_WRITE_LE_HOST_SUPPORT
+0x6E HCI_SET_MWS_CHANNEL_PARAMETERS
+0x6F HCI_SET_EXTERNAL_FRAME_CONFIGURATION
+0x70 HCI_SET_MWS_SIGNALING
+0x71 HCI_SET_MWS_TRANSPORT_LAYER
+0x72 HCI_SET_MWS_SCAN_FREQUENCY_TABLE
+0x73 HCI_SET_MWS_PATTERN_CONFIGURATION
+0x74 HCI_SET_RESERVED_LT_ADDR
+0x75 HCI_DELETE_RESERVED_LT_ADDR
+0x76 HCI_SET_CONNECTIONLESS_SLAVE_BROADCAST_DATA
+0x77 HCI_READ_SYNCHRONIZATION_TRAIN_PARAMETERS
+0x78 HCI_WRITE_SYNCHRONIZATION_TRAIN_PARAMETERS
+0x79 HCI_READ_SECURE_CONNECTIONS_HOST_SUPPORT
+0x7A HCI_WRITE_SECURE_CONNECTIONS_HOST_SUPPORT
+0x7B HCI_READ_AUTHENTICATED_PAYLOAD_TIMEOUT
+0x7C HCI_WRITE_AUTHENTICATED_PAYLOAD_TIMEOUT
+0x7D HCI_READ_LOCAL_OOB_EXTENDED_DATA
+0x7E HCI_READ_EXTENDED_PAGE_TIMEOUT
+0x7F HCI_WRITE_EXTENDED_PAGE_TIMEOUT
+0x80 HCI_READ_EXTENDED_INQUIRY_LENGTH
+0x81 HCI_WRITE_EXTENDED_INQUIRY_LENGTH
+)
+
+
+// HCI informational parameters OCF values, OGF=4
+(
+0x01 HCI_READ_LOCAL_VERSION_INFORMATION 
+0x02 HCI_READ_LOCAL_SUPPORTED_COMMANDS
+0x03 HCI_READ_LOCAL_SUPPORTED_FEATURES 
+0x04 HCI_READ_LOCAL_EXT_FEATURES 
+0x05 HCI_READ_BUFFER_SIZE 
+0x07 HCI_READ_COUNTRY_CODE 
+0x09 HCI_READ_BD_ADDR 
+0x0A HCI_REJECT_CONNECTION_REQUEST
+0x0B HCI_READ_LOCAL_SUPPORTED_CODECS
+)
+
+// HCI status parameters OCF values, OGF=5
+(
+0x01 HCI_READ_FAILED_CONTACT_COUNTER 
+0x02 HCI_RESET_FAILED_CONTACT_COUNTER 
+0x03 HCI_GET_LINK_QUALITY 
+0x05 HCI_READ_RSSI 
+0x06 HCI_READ_AFH_CHANNEL_MAP
+0x07 HCI_READ_BD_CLOCK
+0x08 HCI_READ_ENCRYPTION_KEY_SIZE
+0x09 HCI_READ_LOCAL_AMP_INFO
+0x0A HCI_READ_LOCAL_AMP_ASSOC
+0x0B HCI_WRITE_REMOTE_AMP_ASSOC
+0x0C HCI_GET_MWS_TRANSPORT_LAYER_CONFIGURATION
+0x0D HCI_SET_TRIGGERED_CLOCK_CAPTURE
+)
+
+// HCI testing command OCF values, OGF=6
+(
+0x01 HCI_READ_LOOPBACK_MODE 
+0x02 HCI_WRITE_LOOPBACK_MODE 
+0x03 HCI_ENABLE_DEVICE_UNDER_TEST_MODE 
+0x04 HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE
+0x07 HCI_ENABLE_AMP_RECEIVER_REPORTS
+0x08 HCI_AMP_TEST_END
+0x09 HCI_AMP_TEST
+0x0A HCI_WRITE_SECURE_CONNECTIONS_TEST_MODE
+)
+
+// HCI vendor specific command OCF values -OGF=3F
+(
+0x01 HCI_WRITE_BD_ADDR 
+0x02 HCI_READ_INQUIRY_RESPONSE_TIMEOUT 
+0x03 HCI_WRITE_INQUIRY_RESPONSE_TIMEOUT 
+0x04 HCI_READ_PAGE_SCAN_REPETITION_MODE 
+0x05 HCI_WRITE_PAGE_SCAN_REPETITION_MODE 
+0x06 HCI_READ_PAGE_RESPONSE_TIMEOUT 
+0x07 HCI_WRITE_PAGE_RESPONSE_TIMEOUT 
+0x08 HCI_READ_NEW_CONNECTION_TIMEOUT 
+0x09 HCI_WRITE_NEW_CONNECTION_TIMEOUT 
+0x0a HCI_INITIALIZE_BASEBAND 
+0x0b HCI_WRITE_LOCAL_SUPPORTED_FEATURES 
+0x0c HCI_WRITE_PARK_PARAMETERS 
+0x0d HCI_READ_PARK_PARAMETERS 
+0x0e HCI_WRITE_QUALITY_OF_SERVICE 
+0x0f HCI_NOT_USED 
+0x10 HCI_MODIFY_BEACON_PARAMETERS 
+0x11 HCI_UNPARK_USING_PM_ADDR 
+0x12 HCI_WRITE_HOPPING_CHANNELS 
+0x13 HCI_SLEEP_FOREVER_MODE 
+0x14 HCI_WRITE_AUTO_PAGE_SCAN_ENABLE 
+0x15 HCI_READ_AUTO_PAGE_SCAN_ENABLE 
+0x16 HCI_SET_ENCRYPTION_KEY_SIZE 
+0x17 HCI_INVALIDATE_FLASH_AND_REBOOT 
+0x18 HCI_UPDATE_UART_BAUD_RATE 
+0x19 HCI_WRITE_GPIO_1_4_AS_OUTPUT 
+0x1A HCI_WRITE_GPIO_2_LED 
+0x1B HCI_SET_TESTMODE_TYPE 
+0x1C HCI_WRITE_SCO_PCM_INT_PARAM 
+0x1D HCI_READ_SCO_PCM_INT_PARAM 
+0x1E HCI_WRITE_PCM_DATA_FORMAT_PARAM 
+0x1F HCI_READ_PCM_DATA_FORMAT_PARAM 
+0x20 HCI_WRITE_COMFORT_NOISE_PARAM 
+0x21 HCI_READ_COMFORT_NOISE_PARAM 
+0x22 HCI_WRITE_SCO_TS 
+0x23 HCI_READ_SCO_TS 
+0x24 HCI_WRITE_PCM_LOOPBACK_MODE 
+0x25 HCI_READ_PCM_LOOPBACK_MODE 
+0x26 HCI_SET_TRANSMIT_POWER 
+0x27 HCI_SET_SLEEPMODE_PARAM 
+0x28 HCI_READ_SLEEPMODE_PARAM 
+0x29 HCI_SLEEPMODE_CMD 
+0x2A HCI_DELAY_PERIPHERAL_SCO_STARTUP 
+0x2B HCI_WRITE_RECEIVE_ONLY 
+0x2C HCI_WRITE_RATE_CONTROL 
+0x2D HCI_TX_UNMOD_CARRIER 
+0x2E HCI_DOWNLOAD_MINIDRIVER 
+0x2F HCI_CRYSTAL_PPM 
+0x30 HCI_SET_POWER_AMP_BIAS 
+0x31 HCI_SET_HAM_BEHAVIOR 
+0x32 HCI_SET_AFH_BEHAVIOR 
+0x33 HCI_READ_USER_DEFINED_NVRAM 
+0x34 HCI_ENABLE_RADIO 
+0x35 HCI_READ_DIAGNOSTIC_INFO 
+0x36 HCI_GET_HID_DEVICE_LIST 
+0x37 HCI_ADD_HID_DEVICE 
+0x38 HCI_READ_APP_FW_CONFIG_VERSION 
+0x39 HCI_DELETE_HID_DEVICE 
+0x3B HCI_ENABLE_USB_HID_EMULATION 
+// 0x3A available
+// 0x3B available
+0x3C HCI_SEND_LMPDU 
+0x3D HCI_AUTO_PAIR_REQ 
+0x3E HCI_READ_VS_EXTENSION 
+0x3F HCI_WRITE_VS_EXTENSION 
+
+0x77 HCI_OPCODE_FC77
+0x79 HCI_OPCODE_FC79
+0xC4 HCI_DOWNLOAD_PATCH
+0xCC HCI_OPCODE_FCCC
+
+0x00 HCI_VENDOR_CMD_RESET
+0x01 HCI_VENDOR_CMD_CHIPID
+0x02 HCI_VENDOR_CMD_BAUD
+0x03 HCI_VENDOR_CMD_PATCH
+0x04 HCI_VENDOR_CMD_PATCH_DONE
+0x05 HCI_VENDOR_CMD_ECHO
+0x06 HCI_VENDOR_CMD_BDADDR
+
+0x07 HCI_VENDOR_CMD_ENTER_LPM
+0x08 HCI_VENDOR_CMD_COMMU_READY
+
+0x10 HCI_VENDOR_CMD_MEM
+0x11 HCI_VENDOR_CMD_EEP
+)
+
+//HCI LE controller command OCF values, OGF=8
+(
+0x01 HCI_LE_SET_EVENT_MASK
+0x02 HCI_LE_READ_BUFFER_SIZE
+0x03 HCI_LE_READ_LOCAL_SUPPORTED_FEATURES
+0x05 HCI_LE_SET_RANDOM_ADDRESS
+0x06 HCI_LE_SET_ADVERTISING_PARAMETERS
+0x07 HCI_LE_READ_ADVERTISING_CHANNEL_TX_POWER
+0x08 HCI_LE_SET_ADVERTISING_DATA
+0x09 HCI_LE_SET_SCAN_RESPONSE_DATA
+0x0A HCI_LE_SET_ADVERTISE_ENABLE
+0x0B HCI_LE_SET_SCAN_PARAMETERS
+0x0C HCI_LE_SET_SCAN_ENABLE
+0x0D HCI_LE_CREATE_CONNECTION
+0x0E HCI_LE_CREATE_CONNECTION_CANCEL
+0x0F HCI_LE_READ_WHITE_LIST_SIZE
+0x10 HCI_LE_CLEAR_WHITE_LIST
+0x11 HCI_LE_ADD_DEVICE_TO_WHITE_LIST
+0x12 HCI_LE_REMOVE_DEVICE_FROM_WHITE_LIST
+0x13 HCI_LE_CONNECTION_UPDATE
+0x14 HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION
+0x15 HCI_LE_READ_CHANNEL_MAP
+0x16 HCI_LE_READ_REMOTE_USED_FEATURES
+0x17 HCI_LE_ENCRYPT
+0x18 HCI_LE_RAND
+0x19 HCI_LE_START_ENCRYPTION
+0x1A HCI_LE_LONG_TERM_KEY_REQUEST_REPLY
+0x1B HCI_LE_LONG_TERM_KEY_REQUEST_NEGATIVE_REPLY
+0x1C HCI_LE_READ_SUPPORTED_STATES
+0x1D HCI_LE_RECEIVER_TEST
+0x1E HCI_LE_TRANSMITTER_TEST
+0x1F HCI_LE_TEST_END
+0x20 HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_REPLY
+0x21 HCI_LE_REMOTE_CONNECTION_PARAMETER_REQUEST_NEGATIVE_REPLY
+)
+// HCI event code
+(
+0x01 HCI_EVENT_INQUIRY_COMPLETE
+0x02 HCI_EVENT_INQUIRY_RESULT
+0x03 HCI_EVENT_CONNECTION_COMPLETE
+0x04 HCI_EVENT_CONNECTION_REQUEST
+0x05 HCI_EVENT_DISCONNECTION_COMPLETE
+0x06 HCI_EVENT_AUTHENTICATION_COMPLETE
+0x07 HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE
+0x08 HCI_EVENT_ENCRYPTION_CHANGE_COMPLETE
+0x09 HCI_EVENT_CHANGE_CONNECTION_LINK_KEY_COMPLETE
+0x0A HCI_EVENT_MASTER_LINK_KEY_COMPLETE
+0x0B HCI_EVENT_READ_REMOTE_FEATURES_COMPLETE
+0x0C HCI_EVENT_READ_REMOTE_VERSION_INFORMATION_COMPLETE
+0x0D HCI_EVENT_QOS_SETUP_COMPLETE
+0x0E HCI_EVENT_COMMAND_COMPLETE
+0x0F HCI_EVENT_COMMAND_STATUS
+0x10 HCI_EVENT_HARDWARE_ERROR
+0x11 HCI_EVENT_FLUSH_OCCURRED
+0x12 HCI_EVENT_ROLE_CHANGE
+0x13 HCI_EVENT_NUM_COMPLETED_PACKETS
+0x14 HCI_EVENT_MODE_CHANGE
+0x15 HCI_EVENT_RETURN_LINK_KEYS
+0x16 HCI_EVENT_PIN_CODE_REQUEST
+0x17 HCI_EVENT_LINK_KEY_REQUEST
+0x18 HCI_EVENT_LINK_KEY_NOTIFICATION
+0x19 HCI_EVENT_LOOPBACK_COMMAND
+0x1A HCI_EVENT_DATA_BUFFER_OVERFLOW
+0x1B HCI_EVENT_MAX_SLOTS_CHANGE
+0x1C HCI_EVENT_READ_CLOCK_OFFSET_COMPLETE
+0x1D HCI_EVENT_CONNECTION_PACKET_TYPE_CHANGED
+0x1E HCI_EVENT_QOS_VIOLATION
+0x1F HCI_EVENT_PAGE_SCAN_MODE_CHANGE
+0x20 HCI_EVENT_PAGE_SCAN_REPETITION_MODE_CHANGE
+0x21 HCI_EVENT_FLOW_SPECIFICATION_COMPLETE
+0x22 HCI_EVENT_INQUIRY_RESULT_WITHRSSI
+0x23 HCI_EVENT_READ_REMOTE_EXT_FEATURES_COMPLETE
+0x2C HCI_EVENT_SCO_CONNECTION_COMPLETE
+0x2D HCI_EVENT_SCO_CONNECTION_CHANGED
+0x2E HCI_EVENT_SNIFF_SUBRATING
+0x2F HCI_EVENT_EXT_INQUIRY_RESULT
+0x30 HCI_EVENT_ENCRYPT_KEY_REFRESH_COMPLETE
+0x31 HCI_EVENT_IO_CAP_REQ
+0x32 HCI_EVENT_IO_CAP_RESPONSE
+0x33 HCI_EVENT_USER_CONFIRMATION_REQUEST
+0x34 HCI_EVENT_UESR_PASSKEY_REQUEST
+0x35 HCI_EVENT_REMOTE_OOB_DATA_REQUEST
+0x36 HCI_EVENT_SIMPLE_PAIRING_COMPLETE
+0x38 HCI_EVENT_LINK_SUPERVISION_TIMEOUT_CHANGED
+0x39 HCI_EVENT_ENHANCED_FLUSH_COMPLETE
+0x3B HCI_EVENT_USER_PASSKEY_NOTIFICATION
+0x3C HCI_EVENT_KEYPRESS_NOTIFICATION
+0x3D HCI_EVENT_REMOTE_HOST_SUPPORTED_FEATURES_NOTIFICATION 
+0x3E HCI_EVENT_LE_META_EVENT
+0x40 HCI_EVENT_PHYSICAL_LINK_COMPLETE
+0x41 HCI_EVENT_CHANNEL_SELECTED
+0x42 HCI_EVENT_DISCONNECTION_PHYSICAL_LINK_COMPLETE
+0x43 HCI_EVENT_PHYSICAL_LINK_LOSS_EARLY_WARNING
+0x44 HCI_EVENT_PHYSICAL_LINK_RECOVERY
+0x45 HCI_EVENT_LOGICAL_LINK_COMPLETE
+0x46 HCI_EVENT_DISCONNECTION_LOGICAL_LINK_COMPLETE
+0x47 HCI_EVENT_FLOW_SPEC_MODIFY_COMPLETE
+0x48 HCI_EVENT_NUMBER_OF_COMPLETED_DATA_BLOCKS
+0x49 HCI_EVENT_AMP_START_TEST
+0x4A HCI_EVENT_AMP_TEST_END
+0x4B HCI_EVENT_AMP_RECEIVER_REPORT
+0x4C HCI_EVENT_SHORT_RANGE_MODE_CHANGE_COMPLETE
+0x4D HCI_EVENT_AMP_STATUS_CHANGE
+0x4E HCI_EVENT_TRIGGERED_CLOCK_CAPTURE
+0x4F HCI_EVENT_SYNCHRONIZATION_TRAIN_COMPLETE
+0x50 HCI_EVENT_SYNCHRONIZATION_TRAIN_RECEIVED
+0x51 HCI_EVENT_CONNECTIONLESS_SLAVE_BROADCAST_RECEIVE
+0x52 HCI_EVENT_CONNECTIONLESS_SLAVE_BROADCAST_TIMEOUT
+0x53 HCI_EVENT_TRUNCATED_PAGE_COMPLETE
+0x54 HCI_EVENT_SLAVE_PAGE_RESPONSE_TIMEOUT
+0x55 HCI_EVENT_CONNECTIONLESS_SLAVE_BROADCAST_CHANNEL_MAP_CHANGE
+0x56 HCI_EVENT_INQUIRY_RESPONSE_NOTIFICATION
+0x57 HCI_EVENT_AUTHENTICATED_PAYLOAD_TIMEOUT_EXPIRED
+
+0xFE HCI_EVENT_LOGO_TESTING
+0xFF HCI_EVENT_VENDOR_SPECIFIC
+)
+(
+0x01 HCI_VENDOR_EVENT_COMMU_READY
+)
+//HCI LE SUBEVENT CODE
+(
+0x01 HCI_LE_SUBEVENT_CONN_COMPLETE
+0x02 HCI_LE_SUBEVENT_ADV_REPORT
+0x03 HCI_LE_SUBEVENT_CONN_UPDATE_COMPLETE
+0x04 HCI_LE_SUBEVENT_REMOTE_FEATURE_COMPLETE
+0x05 HCI_LE_SUBEVENT_LTK_REQUEST
+0x06 HCI_LE_SUBEVENT_REMOTE_CONN_PARAM_REQ
+)
+//HCI ErrorCodes
+(    
+0x00 HCI_SUCCESS
+0x01 HCI_ERROR_UNKNOWN_HCI_COMMAND
+0x02 HCI_ERROR_NO_CONNECTION
+0x03 HCI_ERROR_HARDWARE_FAILURE
+0x04 HCI_ERROR_PAGE_TIMEOUT
+0x05 HCI_ERROR_AUTHENTICATION_FAILURE
+0x06 HCI_ERROR_KEY_MISSING
+0x07 HCI_ERROR_MEMORY_FULL
+0x08 HCI_ERROR_CONNECTION_TIMEOUT
+0x09 HCI_ERROR_MAX_CONNECTIONS
+0x0A HCI_ERROR_MAX_SCO_CONNECTIONS
+0x0B HCI_ERROR_MAX_ACL_CONNECTIONS
+0x0C HCI_ERROR_COMMAND_DISALLOWED
+0x0D HCI_ERROR_HOST_REJECT_LIMITED_RESOURCES
+0x0E HCI_ERROR_HOST_REJECT_SECURITY_REASONS
+0x0F HCI_ERROR_HOST_REJECT_REMOTE_IS_ONLY_PERSONAL
+0x10 HCI_ERROR_HOST_TIMEOUT
+0x11 HCI_ERROR_UNSUPPORTED_FEATURE_OR_PARAMETER_VALUE
+0x12 HCI_ERROR_INVALID_HCI_COMMAND_PARAMETERS
+0x13 HCI_ERROR_REMOTE_USER_ENDED_CONNECTION
+0x14 HCI_ERROR_REMOTE_LOW_RESOURCES
+0x15 HCI_ERROR_REMOTE_POWERING_OFF
+0x16 HCI_ERROR_CONNECTION_TERMINATED_BY_LOCAL_HOST
+0x17 HCI_ERROR_REPEATED_ATTEMPTS
+0x18 HCI_ERROR_PAIRING_NOT_ALLOWED
+0x19 HCI_ERROR_UNKNOWN_LMP_PDU
+0x1A HCI_ERROR_UNSUPPORTED_REMOTE_FEATURE
+0x1B HCI_ERROR_SCO_OFFSET_REJECTED
+0x1C HCI_ERROR_SCO_INTERVAL_REJECTED
+0x1D HCI_ERROR_SCO_AIR_MODE_REJECTED
+0x1E HCI_ERROR_INVALID_LMP_PARAMETER
+0x1F HCI_ERROR_UNSPECIFIED_ERROR
+0x20 HCI_ERROR_UNSUPPORTED_LMP_PARAMETER_VALUE
+0x21 HCI_ERROR_ROLE_CHANGE_NOT_ALLOWD
+0x22 HCI_ERROR_LMP_RESPONSE_TIMEOUT
+0x23 HCI_ERROR_ERROR_TRANSACTION_COLLISION
+0x24 HCI_ERROR_LMP_PDU_NOT_ALLOWED
+0x25 HCI_ERROR_ENCRYPTION_MODE_NOT_ACCEPTABLE
+0x26 HCI_ERROR_UNIT_KEY_USED
+0x27 HCI_ERROR_QOS_NOT_SUPPORTED
+0x28 HCI_ERROR_INSTANT_PASSED
+0x29 HCI_ERROR_PAIRING_W_UNIT_KEY_NOT_SUPPORTED
+0x2a HCI_ERROR_DIFFERENT_TRANSACTION_COLLISION
+0x2c HCI_ERROR_QOS_UNACCEPTABLE_PARAMETER
+0x2d HIC_ERROR_QOS_REJECTED
+0x2e HIC_ERROR_CHANNEL_CLASSIFICATION_NOT_SUPPORTED
+0x2f HIC_ERROR_INSUFFICIENT_SECURITY
+0x30 HIC_ERROR_PARAMETER_OUT_OF_MANDATORY_PANGE
+0x32 HIC_ERROR_ROLE_SWITCH_PENDING
+0x34 HIC_ERROR_RESERVED_SLOT_VIOLATION
+0x35 HIC_ERROR_ROLE_SWITCH_FAILED
+0x36 HIC_ERROR_EXTENDED_INQUIRY_RESPONSE_TOO_LARGE
+0x37 HIC_ERROR_SIMPLE_PAIRING_NOT_SUPPORTED_BY_HOST
+0x38 HIC_ERROR_HOST_BUSY_PAIRING
+)
+
+(
+0x00 HCI_LPM_OFF
+0x01 HCI_LPM_ON
+)
+
+
+(
+33 HOST_WAKE_TIME
+)
+
+(
+1 HCI_RX_WAKE
+0 HCI_RX_READY
+)
+
+
+(
+/*HID TYPE*/
+0x01 HID_TYPE_CONTROL
+0x04 HID_TYPE_GET_REPORT
+0x05 HID_TYPE_SET_REPORT
+0x07 HID_TYPE_SET_PROTOCOL
+0x09 HID_TYPE_SET_IDLE
+0x0a HID_TYPE_DATA
+/*HID REPORT ID*/
+0x01 HID_REPORT_ID_KB
+0x41 HID_DISCONNECT
+
+0x00 HID_CONTROL_P_NOOPERATION
+0x01 HID_CONTROL_P_HARDRESET
+0x02 HID_CONTROL_P_SOFTRESET
+0x03 HID_CONTROL_P_SUSPEND
+0x04 HID_CONTROL_P_EXITSUSPEND
+0x05 HID_CONTROL_P_VIRTUALCABLEUNPLUG
+)
+
+
+
+omemalloc(
+//Keyboard Work Area
+2 mem_kb_state
+6 mem_kb_report_data
+1 mem_kb_keys
+1 mem_kb_rcv_led_data
+4 mem_kb_fast_wake_last
+//Keyboard Config Area
+1 mem_led_cap_gpio
+1 mem_led_num_gpio
+1 mem_led_scl_gpio
+
+2 mem_kb_current_vdd_value_10times
+1 mem_kb_read_adc_cnt_100ms
+2 mem_kb_current_vdd_value
+1 mem_led_power_blink_count
+1 mem_led_power_500ms_cnt
+
+700 mem_kb_map2
+2 mem_3v1_adc_default
+158 mem_kb_map
+2 mem_kb_discovery_timer
+2 mem_kb_direct_timer
+2 mem_kb_no_data_timer
+2 mem_kb_direct_timeout
+1 mem_kscn_event_last
+
+1 mem_kscan_event_num_last
+
+
+//three devices param
+
+1 mem_auto_enable_mult_timer
+1 mem_auto_enable_mult_timer_init
+
+1 mem_kb_temp_flag
+
+8 mem_map2_out_report0
+8 mem_map2_out_report1
+
+8 mem_table_last_repory_data0
+8 mem_table_last_repory_data1
+
+10 mem_kb_down
+10 mem_kb_down_last
+8 mem_table_temp
+1 mem_pincode_vk_last
+1 mem_kb_device_button_last
+1 mem_kb_device_button_timer
+1 mem_kb_current_status
+1 mem_seq
+1 mem_dorx_cnt
+2 mem_matched_btclk
+1 mem_master_sniff_interval
+
+1 mem_led_power_gpio
+2 mem_kb_check_vdd_count
+
+
+2 mem_0v_adc_data
+2 mem_2v2_adc_data
+2 mem_3v_adc_data
+
+1 mem_select_system_led_timer
+1 mem_led_cap_gpio_status
+2 mem_kb_no_data_timeout
+4 mem_kb_gpio_last_val
+1 mem_store_current_status
+//1 mem_kb_check_kscan_flag
+
+1 mem_kb_led_on_timer
+1 mem_kb_debug_sm
+2 mem_kb_mode
+2 mem_kb_mode_revese
+6 mem_master_addr
+1 mem_led_device_blink_count
+1 mem_led_device_500ms_cnt
+
+1 mem_kb_caps_led_status
+1 mem_kb_reconnection_ssp
+1 mem_kb_rcv_hid_control_rsp
+
+5 mem_kb_down_regroup
+1 mem_kb_get_fn_flag
+1 mem_kb_kscan_cnt
+10 mem_kb_down_test
+1 mem_kb_release_fn_data
+
+
+1 mem_led_cap_delay_timer
+1 mem_led_cap_mult_timer
+1 mem_led_cap_flag
+1 mem_hid_rx_data
+1 mem_kb_fn_c
+1 mem_kb_c_fn
+
+650 mem_keyboard_uuid_list
+0 mem_keyboard_uuid_list_end
+500 mem_keyboard_le_att_list
+0 mem_keyboard_le_att_list_end
+)
+
+
+8 KB_KSCAN_ROW 
+7 KB_KSCAN_ROW_1
+20 KB_KSCAN_COL
+19 KB_KSCAN_COL_1
+
+/* ks_ctrl */
+(
+0x01 KB_KSCAN_CTRL_ENABLE					
+0x02 KB_KSCAN_CTRL_FREEZE					
+0x04 KB_KSCAN_CTRL_GHOST					
+0x08 KB_KSCAN_CTRL_INT						
+0x10 KB_KSCAN_CTRL_CLKON					
+0x20 KB_KSCAN_CTRL_FIFO_CLR				
+                  
+0 KB_KSCAN_STAT_EMPTY
+1 KB_KSCAN_STAT_FULL 					
+2 KB_KSCAN_STAT_OVERFLOW				
+6 KB_KSCAN_STAT_GHOST 
+
+0 KB_KSCAN_KEY_EVENT_STAT
+0 KB_KSCAN_KEY_PRESS	
+1 KB_KSCAN_KEY_RELEASE
+
+)
+(
+0 CACEL_RECONN_FLAG
+1 KEY_EVENT_FLAG
+2 KEY_SEARCH_M_KEY_FLAG
+3 CHECK_VDD_LOW_FLAG
+)
+
+// MACRO for map2
+
+// MACRO for map2
+
+//map2 Functions definition
+ 0x00 KB_MAP2_FUNC_REPORT0
+ 0x01 KB_MAP2_FUNC_REPORT1
+ 0x02 KB_MAP2_FUNC_REPORT2
+ 0x80 KB_MAP2_FUNC_IGNORE
+ 0x81 KB_MAP2_FUNC_DISCOV
+ 0x82 KB_MAP2_FUNC_WIN
+ 0x83 KB_MAP2_FUNC_ANDROID
+ 0x84 KB_MAP2_FUNC_IOS
+ 0x85 KB_MAP2_FUNC_DEV1
+ 0x86 KB_MAP2_FUNC_DEV2
+ 0x87 KB_MAP2_FUNC_DEV3
+ 
+//map2 Status definition (bit map)
+ 0x01 KB_MAP2_STATUS_WIN
+ 0x02 KB_MAP2_STATUS_ANDROID
+ 0x04 KB_MAP2_STATUS_IOS
+ 0x10 KB_MAP2_STATUS_CONN
+ 0x20 KB_MAP2_STATUS_UNCONN
+ 
+ 0x00 KB_MAP2_STATUS_BIT_WIN
+ 0x01 KB_MAP2_STATUS_BIT_ANDROID
+ 0x02 KB_MAP2_STATUS_BIT_IOS
+ 0x04 KB_MAP2_STATUS_BIT_CONN
+ 0x05 KB_MAP2_STATUS_BIT_UNCONN
+
+// map2 report length
+8 KB_MAP2_REPORT_LENGTH
+0x08 KB_VK_MAX_LEN
+
+//map2 device button state
+0 KB_DEVICE_BUTTON_UP
+1 KB_DEVICE_BUTTON_DEVICE1
+2 KB_DEVICE_BUTTON_DEVICE2
+3 KB_DEVICE_BUTTON_DEVICE3
+0xff KB_DEVICE_BUTTON_ALREADY_LONG
+)
+
+//
+(
+0x01 REPORT_ID_1
+0x02 REPORT_ID_2
+0x03 REPORT_ID_3
+)
+
+(
+1 FLAG_VDD_LOW
+0 FLAG_VDD_NOT_LOW
+
+0x1fe9 EEPROM_ADDR_VDD_FLAG
+0x1fea EEPROM_ADDR_VDD_LOW_FLAG
+0x1fec EEPROM_SYSTEM_FALG
+
+)
+
+//Specil Function Key
+(
+0XFF SFK_ANDROID_MAP
+0XFE SFK_IOS_SCREENSHOT
+
+)
+0x39 CAPS_LOCK_DATA
+)
+
+(
+2 KB_TEST_MODE
+)
+/* special key codes */
+(
+0x1d KB_KCODE_1_M1
+0x27 KB_KCODE_0
+0x28 KB_KCODE_ENTER
+0x2a KB_KCODE_BKSP
+)
+
+/*DATA OUTPUT report id = 1*/
+0 KB_NUM_LOCK_SELECTED
+1 KB_CAPS_LOCK_SELECTED
+2 KB_SCROLL_LOCK_SELECTED
+
+
+0x1f  KB_UI_BUTTON_GPIO
+
+
+
+
+memalloc(
+0 mem_l2cap_mem_start
+// L2CAP RX 
+2 mem_l2cap_rxbuff1_len
+2 mem_l2cap_rxbuff2_len
+2 mem_l2cap_rxbuff_new
+1 mem_l2cap_rxbuff_inuse
+2 mem_l2cap_payload_ptr
+2 mem_l2cap_rx_pkt_length
+2 mem_l2cap_rx_cid
+1 mem_l2cap_rx_done
+
+
+
+// L2CAP TX Signal channel
+2 mem_l2cap_signal_tx_buff_ptr
+2 mem_l2cap_signal_tx_payload_ptr
+2 mem_l2cap_signal_tx_length
+// L2CAP TX SDP channel
+2 mem_sdp_tx_buff_ptr
+2 mem_sdp_tx_payload_ptr
+2 mem_sdp_tx_pkt_length
+// L2CAP TX RFCOMM channel
+2 mem_rfcomm_tx_buff_ptr
+2 mem_rfcomm_tx_payload_ptr
+2 mem_rfcomm_tx_pkt_length
+
+
+
+//L2CAP Util
+
+2 memL2CAP_T1
+
+1 mem_CONTROL_tasks
+1 mem_send_config_req
+
+
+1 mem_config_identifier
+2 mem_config_req_dest_CID
+1 mem_rfcomm_malloc_fail_flag
+
+//L2CAP STATE MACHINE
+1 mem_message_to_uppersm
+1 mem_upper_sm_remote_page
+1 mem_upper_sm_reconn
+1 mem_upper_sm_ss
+
+
+64 mem_tx_malloc_log
+0 mem_l2cap_mem_end
+
+
+2 mem_scid
+2 mem_cmd_length
+2 mem_tt2
+2 mem_tt3
+2 mem_id
+2 mem_psm
+
+
+4 mem_l2cap_sdpres_delay_time
+)
+
+xmemalloc(
+0 mem_l2cap_xmem_start
+//*******************L2CAP TX MULTI-PACKET*********************//
+2 mem_l2cap_tx_multi_offset //0 means single packet
+
+//*******************CHANNEL ID*********************//
+2 mem_sdp_remote_cid
+2 mem_rfcomm_remote_cid
+2 mem_hid_ctrl_remote_cid
+2 mem_hid_int_remote_cid
+//*******************CHANNEL STATE*********************//
+1 mem_sdp_state
+1 mem_rfcomm_state
+1 mem_hid_control_state
+1 mem_hid_interrupt_state
+1 mem_spp_state
+1 mem_ML2CAP_comm_id
+
+//*******************L2CAP malloc********************//
+1 mem_used_map
+0 mem_tx_fifo0
+1 mem_tx_fifo0_map
+2 mem_tx_fifo0_ptr
+0 mem_tx_fifo1
+1 mem_tx_fifo1_map
+2 mem_tx_fifo1_ptr
+0 mem_tx_fifo2
+1 mem_tx_fifo2_map
+2 mem_tx_fifo2_ptr
+0 mem_tx_fifo3
+1 mem_tx_fifo3_map
+2 mem_tx_fifo3_ptr
+0 mem_tx_fifo_end
+256 mem_l2cap_lpm_txbuf
+//*******************MISC*********************//
+1 mem_l2cap_flow_ctrl_flag
+1 mem_l2cap_pending_item
+0 mem_l2cap_xmem_end
+
+)
+
+
+//mem_l2cap_lpm_txbuf
+(
+256 l2cap_lpm_txbuf_len
+)
+
+(
+4 L2CAP_TX_FIFO_SIZE
+8 L2CAP_TX_BUFF_CNT
+
+)
+(
+0x0002 L2CAP_SIG_EXT_FEATRUE
+0x0003 L2CAP_SIG_FIX_FEATRUE
+)
+
+
+(
+0 HS_IDLE
+1 AG_INIT_CALL
+2 HS_INIT_CALL
+)
+(
+0 M_ACL_LINK_ABSENT
+1 M_ACL_LINK_EXIST
+)
+
+(
+0 L2CAP_INUSE_BUFF1
+1 L2CAP_INUSE_BUFF2
+)
+/* upper layer interface w/ lower layer */
+(
+1 MAX_NUM_LINKS_ALLOWED
+1 MAX_NUM_SCO_ALLOWED
+1 ACL_LINK_PRESENT
+0 ACL_LINK_ABSENT
+)
+(
+1 L2CAP_RX_DONE 
+0 L2CAP_RX_CLEAR
+)
+/* Scheduler */
+(
+0 L2CAP_DISCONNECT_INTERRUPT
+1 RFCOMM_wants_service
+2 L2CAP_sig_Tx_buff_full
+3 RFCOMM_Tx_buff_full
+4 SDP_Tx_buff_full
+5 got_complete_L2CAP_pkt	
+6 L2CAP_init_Config_Req
+7 L2CAP_DISCONNECT_CONTROL
+)
+
+/* mem_CONTROL_tasks2 */
+(
+0 UI_NEED_SERVICE
+)
+/* L2CAP logic channel identifiers (2 bytes) p.261 */
+(
+0x0001 L2CAP_signal_channel
+0x0050 L2CAP_SDP_channel
+0x0051 L2CAP_RFCOMM_channel
+0x0052 L2CAP_HID_Control_channel   
+0x0053 L2CAP_HID_Interrupt_channel
+0x0077 L2CAP_AVDTP_signal_channel		//------avdtp
+0x0078 L2CAP_AVDTP_media_channel
+0x0079 L2CAP_AVDTP_report_channel
+0x0080 L2CAP_AVDTP_recovery_channel
+0x00dd L2CAP_AVCTP_Control_channel
+)
+/* L2CAP signalling command codes (1 byte) p.284 */
+(
+0x00 reserved
+0x01 signal_cmd_reject
+0x02 signal_connect_req
+0x03 signal_connect_rsp
+0x04 signal_config_req
+0x05 signal_config_rsp
+0x06 signal_disconnect_req
+0x07 signal_disconnect_rsp
+0x08 signal_echo_req
+0x09 signal_echo_rsp
+0x0a signal_info_req
+0x0b signal_info_rsp
+)
+/* L2CAP signal_command_reject reason code (2 bytes), p.285 */
+(
+0x0000 cmd_not_understood
+0x0001 signalling_MTU_exceeded
+0x0002 invalid_CID_in_req
+)
+/* L2CAP PSM values used in signal_connect_req (2 bytes), p.286 */
+(
+0x0001 PSM_SDP
+0x0003 PSM_RFCOMM
+0x0005 PSM_TCS
+0x0011 PSM_HID_control
+0x0013 PSM_HID_interrupt
+0x0017 PSM_AVCTP
+0x0019 PSM_AVDTP
+)
+/* L2CAP connection response result code (2 bytes), p.288 */
+(
+0x0000 L2CAP_connect_successful
+0x0001 L2CAP_connect_pending
+0x0002 L2CAP_connect_refused_PSM_unsupported
+0x0003 L2CAP_connect_refused_security_block
+0x0004 L2CAP_connect_refused_no_resources
+)
+/* L2CAP connection status values (2 bytes), p.288 */
+(
+0x0000 L2CAP_no_info_available
+0x0001 L2CAP_authentication_pending
+0x0002 L2CAP_authorization_pending
+)
+/* L2CAP configuration response result code (2 bytes), p.292 */
+(
+0x0000 L2CAP_config_success
+0x0001 L2CAP_config_failure_bad_parameters
+0x0002 L2CAP_config_failure_no_reason
+0x0003 L2CAP_config_failure_unknown_options
+)
+/* L2CAP constant definitions */
+(
+128 L2CAP_Rx_buff_size
+48  L2CAP_signal_Tx_buff_size
+128 SDP_Tx_buff_size
+128 RFCOMM_Tx_buff_size
+1 AM_ADDRESS
+3 DM1TYPE
+4 DH1TYPE
+11 DH3TYPE
+8 DVTYPE
+0 channel_state_closed
+1 channel_state_config
+2 channel_state_open
+0x0030 L2CAP_config_MTU_SDP
+0xffff L2CAP_config_ftimeout_SDP
+0x03e3 L2CAP_config_MTU_RFCOMM
+0xffff L2CAP_config_ftimeout_RFCOMM
+260 l2cap_max_pkt_len
+)
+
+(
+0 FAILURE
+1 SUCCESS
+2 IN_PROGRESS
+)
+(
+0x00	IDLE
+0x01	WAIT_4_BB_PAGE
+0x02	WAIT_4_LMP_CONN
+0x03	WAIT_4_SCO_CONN
+0x04	WAIT_4_SCO_KILLED
+)
+
+/*mem_master_mss*/
+(
+0 STOP_ENC
+1 SEND_SWITCH_REQ
+)
+(
+0 HF_HS_READY
+1 HF_AG_READY
+)
+/* mem_hf_state */
+(
+0 HF_STATE_WAITING_RFCOMM_CONN
+1 HF_STATE_HF_SEND_FEATURE
+2 HF_STATE_WAITING_AG_FEATURE_OK
+3 HF_STATE_HF_SEND_INDICATORS
+4 HF_STATE_WAITING_AG_INDICATORS_OK
+5 HF_STATE_HF_SEND_CURR_STATUS
+6 HF_STATE_WAITING_AG_STATUS_OK
+7 HF_STATE_HF_SEND_UPDATE_STATUS
+8 HF_STATE_WAITING_AG_UPDATE_STATUS_OK
+9 HF_STATE_CONNECTED
+0x0a HF_STATE_HF_SEND_RECEIVE_INFO
+0x0b HF_STATE_WAITING_AG_INFO
+0x0c HF_STATE_HF_SEND_AT_CLIP
+0x0d HF_STATE_WAITING_AT_CLIP
+0x0e HF_STATE_HF_SEND_AT_CCWA
+0x0f HF_STATE_WAITING_AT_CCWA
+)
+/*mem_hf_call_state*/
+(
+0 HF_CALL_STATE_INACTIVE
+1 HF_CALL_STATE_SETUP
+2 HF_CALL_STATE_ACTIVE 
+)
+/* mem_pairing_state bit definition */
+(
+0 PAIR_INQUIRY_START
+1 PAIR_INQUIRY_TIME_OUT
+2 PAIR_INQUIRY_FAILED
+3 PAIR_INQUIRY_SUCCESS
+4 PAIR_READY_CONN
+5 PAIR_WAIT_CANCEL_RESPONSE
+6 PAIR_CONN_SUCCESS
+7 PAIR_WAIT_DETACH
+)  
+
+/* mem_pairing_mode bit definition */
+(
+0 FORCE_AUTHENTICATION
+)
+/* mem_hid_protecol_type */
+(
+0 PROTECOL_BOOT /*default*/
+1 PROTECOL_REPORT
+)
+
+/* mem_upper_sm_reconn */
+(
+1 UPPERSM_SEND_SDP_CONN_REQ
+2 UPPERSM_SEND_SDP_CFG_REQ
+3 UPPERSM_SEND_SDP_HF_SS
+4 UPPERSM_SEND_SDP_DISC_REQ
+5 UPPERSM_SEND_RFCOMM_CONN_REQ
+6 UPPERSM_SEND_RFCOMM_CFG_REQ
+7 UPPERSM_SEND_SABM_CMD
+8 UPPERSM_SEND_DISC
+9 UPPERSM_SEND_WAIT
+10 UPPERSM_SEND_HID_CONTROL_CONN_REQ
+11 UPPERSM_SEND_HID_CONTROL_CFG_REQ
+12 UPPERSM_SEND_HID_INTERRUPT_CONN_REQ
+13 UPPERSM_SEND_HID_INTERRUPT_CFG_REQ
+14 UPPERSM_SEND_SDP_HS_SS
+15 UPPERSM_SEND_SDP_PBAP_SS
+16 UPPERSM_SEND_SDP_AVTARG_SS
+)
+/* mem_upper_sm_remote_page */
+(
+1 UPPERSM_RP_SEND_SDP_CONN_REQ
+2 UPPERSM_RP_SEND_SDP_CFG_REQ
+3 UPPERSM_RP_SEND_SDP_HF_SS
+4 UPPERSM_RP_SEND_SDP_HS_SS
+5 UPPERSM_RP_SEND_SDP_PBAP_SS
+6 UPPERSM_RP_SEND_SDP_AVTARG_SS
+7 UPPERSM_RP_SEND_SDP_DISC_REQ
+8 UPPERSM_RP_SEND_AVCTP_CONN_REQ
+9 UPPERSM_RP_SEND_AVCTP_CFG_REQ
+)
+
+/* mem_ML2CAP_flag */
+(
+0 MSCHEDULER_HID_CONTROL_CONN_DONE
+1 MSCHEDULER_HID_INTERRUPT_CONN_DONE
+2 MSCHEDULER_HID_CONTROL_CFG_REQ_DONE
+3 MSCHEDULER_HID_CONTROL_CFG_RSP_DONE
+4 MSCHEDULER_HID_INTERRUPT_CFG_REQ_DONE
+5 MSCHEDULER_HID_INTERRUPT_CFG_RSP_DONE
+6 MSCHEDULER_HID_CONTROL_DISC_DONE
+7 MSCHEDULER_HID_INTERRUPT_DISC_DONE
+)
+/*    ui event    --add by lj*/
+(
+0x00 UI_DATA_EVNET_NONE
+0x01 UI_DATA_EVNET_HID
+0x02 UI_DATA_EVNET_AVDTP_S
+0x03 UI_DATA_EVNET_AVDTP_M
+0x04 UI_DATA_EVNET_AVCTP
+0x05 UI_DATA_EVNET_HS
+0x06 UI_DATA_EVNET_HF
+0x07 UI_DATA_EVNET_SPP
+0x08 UI_DATA_EVNET_OBEX
+)
+/*    ui ack --add by lj*/
+(
+0x00 UI_DATA_TX_NONE
+0x01 UI_DATA_TX_HID
+0x02 UI_DATA_TX_AVDTP_S
+0x03 UI_DATA_TX_AVDTP_M
+0x04 UI_DATA_TX_AVCTP
+0x05 UI_DATA_TX_HS
+0x06 UI_DATA_TX_HF
+0x07 UI_DATA_TX_SPP
+0x08 UI_DATA_TX_OBEX
+0x10 ACL_TX_L2CAP_SIGNAL
+0x11 ACL_TX_SDP
+0x12 ACL_TX_RFCOMM
+
+)
+
+(
+0 L2CAP_SDP_interface_conn
+1 L2CAP_SDP_interface_cfg
+)
+
+(                                   
+0 L2CAP_CHANNEL_STATE_CONN_REQ      
+1 L2CAP_CHANNEL_STATE_CONN_RES      
+2 L2CAP_CHANNEL_STATE_SND_CFG_REQ   
+3 L2CAP_CHANNEL_STATE_SND_CFG_RES   
+4 L2CAP_CHANNEL_STATE_RCV_CFG_REQ   
+5 L2CAP_CHANNEL_STATE_RCV_CFG_RES
+6 L2CAP_CHANNEL_RFCOMM_ONLY_SABM
+7 L2CAP_CHANNEL_RFCOMM_ONLY_UA
+6 L2CAP_CHANNEL_AVDTP_SIGNAL_INIT //set avdtp init complete
+6 L2CAP_CHANNEL_HID_HANDSHAKE_DONE
+0x3f L2CAP_CHANNEL_SETUP_COMPLETE
+0x7f L2CAP_CHANNEL_AVDTP_SIGNAL_COMPLETE
+0xff L2CAP_CHANNEL_RFCOMM_DLCI0_OPENED
+)                                     
+
+/*  AVDTP---lj*/
+(
+0 L2CAP_AVDTP_SIGNAL_CONNECT
+1 L2CAP_AVDTP_SIGNAL_CONFIG
+2 L2CAP_AVDTP_MEDIA_CONNECT
+3 L2CAP_AVDTP_MEDIA_CONFIG
+4 L2CAP_AVDTP_REPORT_CONNECT
+5 L2CAP_AVDTP_REPORT_CONFIG
+6 L2CAP_AVDTP_RECOVERY_CONNECT
+7 L2CAP_AVDTP_RECOVERY_CONFIG
+)
+/*  AVCTP---lj*/
+(
+0 L2CAP_AVCTP_SIGNAL_CONNECT
+1 L2CAP_AVCTP_SIGNAL_CONFIG
+)
+
+127 L2CAP_SIGNAL_MALLOC_SIZE
+
+//1 mem_rfcomm_malloc_fail_flag
+(
+0 RFCOMM_MALLOC_SUCCEED
+1 RFCOMM_MALLOC_FAIL
+)
+
+//mem_l2cap_flow_ctrl_flag
+(
+0 L2CAP_FLOW_CTRL_DISABLE
+1 L2CAP_FLOW_CTRL_ENABLE
+)
+
+
+memalloc(
+56 mem_le_rxbuf
+
+
+/* security temp */
+4 mem_le_mic
+4 mem_le_peer_mic
+//8 mem_le_skdm
+//8 mem_le_skds
+16 mem_le_peer_ltk
+16 mem_le_mrand
+
+
+/* ========= le context =========== */
+1 mem_le_state
+1 mem_le_mode
+2 mem_le_tsniff
+4 mem_le_anchor
+6 mem_le_clk_offset
+2 mem_le_receive_window
+6 mem_le_plap
+1 mem_le_conn_handle
+1 mem_le_arq
+1 mem_le_ch
+1 mem_le_hop
+2 mem_le_event_count
+4 mem_le_supervision_timer
+2 mem_le_instant
+1 mem_le_channels
+1 mem_le_op
+
+	/* these 3 should NOT be seperated */
+4 mem_le_access
+3 mem_le_crcinit
+1 mem_le_window_size
+
+	/* these 3 should NOT be seperated */
+2 mem_le_slave_latency
+2 mem_le_superto
+5 mem_le_channel_map
+
+2 mem_le_no_using
+1 mem_le_peer_sca
+
+/* should be together */
+1 mem_le_att_opcode
+2 mem_le_att_handle
+
+1 mem_le_err_code
+2 mem_le_l2cap_pdu_length
+
+16 mem_le_sk
+
+/* test */
+1 mem_le_testtype
+2 mem_le_test_sync
+2 mem_le_test_pcnt
+
+6 mem_le_rxon_ts
+
+1 mem_le_rx_ll_opcode
+
+2 mem_le_notify_attr_start
+1 mem_le_notify_len
+
+1 mem_cmd_le_create_conn
+1 mem_24g_id
+
+
+2 mem_le_cur_attlist_start_ptr
+2 mem_le_cur_handle_start
+2 mem_le_cur_handle_end
+1 mem_le_cur_uuid_lenth
+16 mem_le_cur_uuid
+
+1 mem_le_search_len
+1 mem_le_search_res
+
+1 mem_le_continue_type
+1 mem_le_public_length
+
+)
+
+
+xmemalloc(
+2 mem_le_dsniff
+
+// parameters
+2 mem_le_conn_interval
+1 mem_le_scan_enable
+2 mem_le_scan_interval
+2 mem_le_scan_window
+
+1 mem_le_adv_led
+1 mem_le_adv_enable
+1 mem_le_adv_data_len
+31 mem_le_adv_data
+1 mem_le_scan_data_len
+31 mem_le_scan_data
+
+//modified name
+1 mem_le_name_len
+20 mem_le_name
+
+1 mem_le_led_on_time
+//37 mem_le_chmap
+
+
+5 mem_le_new_map
+0 mem_le_new_param
+1 mem_le_new_transmitwindowsize
+2 mem_le_new_transmitwindowoffset
+2 mem_le_new_conninterval
+2 mem_le_new_connslavelatency
+2 mem_le_new_connsupervisiontimeout
+1 mem_le_temp
+
+1 mem_le_txheader
+1 mem_le_txlen
+2 mem_le_txpayload
+2 mem_le_txcid
+1 mem_le_l2cap
+1 mem_le_l2cap_response
+31 mem_le_txbdy
+
+/* smp related */
+5 mem_le_pcnt_tx
+5 mem_le_pcnt_rx
+4 mem_le_last_mic
+4 mem_le_ivm
+4 mem_le_ivs
+16 mem_le_ltk
+1 mem_ltk_exists
+16 mem_le_rconfirm
+16 mem_le_srand
+1 mem_le_iat
+1 mem_le_rat
+1 mem_le_preq
+1 mem_le_preq_iocap
+1 mem_le_preq_oob
+1 mem_le_preq_auth
+1 mem_le_preq_max_keysize
+1 mem_le_preq_init_key_distribution
+1 mem_le_preq_resp_key_distribution
+1 mem_le_pres
+1 mem_le_pres_iocap
+1 mem_le_pres_oob
+1 mem_le_pres_auth
+1 mem_le_pres_max_keysize
+1 mem_le_pres_init_key_distribution
+1 mem_le_pres_resp_key_distribution
+
+/* att related */
+2 mem_le_search_handle_start
+2 mem_le_search_handle_end
+0 mem_le_att_offset
+1 mem_le_search_att_type_length
+16 mem_le_search_att_type
+2 mem_le_notify_handle
+1 mem_le_search_uuid_length
+16 mem_le_search_uuid
+
+
+1 mem_le_handle_data_len
+16 mem_le_handle_data
+
+
+//START of LE adv parameter structure
+0 mem_le_adv_param
+2 mem_le_adv_interval_min
+2 mem_le_adv_interval_max
+1 mem_le_adv_type
+1 mem_le_adv_own_addr_type
+1 mem_le_adv_direct_addr_type
+6 mem_le_adv_direct_addr
+1 mem_le_adv_channel_map
+1 mem_le_adv_filter_policy
+//END of LE adv parameter structure
+
+//START of LE conn parameter structure
+0 mem_le_conn_param
+1 mem_le_conn_peer_addr_type
+6 mem_le_conn_peer_addr
+1 mem_le_conn_own_addr_type
+2 mem_le_conn_interval_min
+2 mem_le_conn_interval_max
+2 mem_le_conn_latency
+2 mem_le_conn_superto
+//START of LE conn parameter structure
+
+//START of LE scan parameter structure
+0 mem_le_scan_params
+1 mem_le_scan_type
+1 mem_le_scan_own_addr_type
+1 mem_le_scan_filter_policy
+//END of LE scan parameter structure
+
+3 mem_le_lap
+1 mem_le_uap
+2 mem_le_nap
+8 mem_le_xtype_fifo
+
+2 mem_le_local_mtu
+2 mem_le_remote_mtu
+1 mem_le_ll_cur_opcode
+
+8 mem_le_skdm
+8 mem_le_skds
+
+2 mem_le_init_superto
+
+
+1 mem_le_secure_connect_enable
+1 mem_le_secure_connect_flag
+1 mem_le_sc_calc
+1 mem_le_secure_connect_state
+1 mem_le_sc_confirm_gkey_flag
+1 mem_le_sc_local_key_invalid
+
+1 mem_le_continue_flag
+
+1 mem_le_pairing_state
+1 mem_le_enc_state
+1 mem_le_pairing_mode
+4 mem_le_tk
+2 mem_le_ediv
+8 mem_le_rand
+16 mem_le_irk
+2 mem_le_pairing_handle
+2 mem_le_interal_min
+2 mem_le_interal_max
+2 mem_le_latency
+2 mem_le_timeout
+//LE attribute list
+1 mem_le_switch_send_data
+4 mem_le_transmit_window
+
+2 mem_le_buff_len
+2 mem_le_buff_len_all
+2 mem_le_buff_data_len_all
+2 mem_prepare_write_len
+2 mem_le_prepare_write_req_offset
+2 mem_prepare_handle
+2 mem_prepare_write_offest
+
+1 mem_le_flag
+
+)
+
+(
+20 notify_handle
+2 param_max_slaves
+1636 param_sifs
+0x000a06 param_le_version
+0x1d87 param_le_subversion
+0x000001 param_le_features
+23 param_le_mtu
+16 param_le_scan_interval
+16 param_le_scan_window
+0x1e0 param_clke_cal_le
+0x1000302 param_smp_paring_response		/* for mouse, noinputnooutput */
+0x010410 param_smp_key_dist	
+0x010010 param_smp_key_dist0
+0xa0 param_le_sca
+)
+
+(
+0 DEFAULT_STATES
+1 IPHONE_LOST_LTK
+2 MODULE_LOST_LTK
+3 LTK_NOT_LOST
+)
+
+(
+0 FLAG_BLE_INSUFFICIENT_AUTHENTICATION
+1 FLAG_BLE_COPY_MASTER_DATA_TO_ATT_LIST
+)
+
+/*LE MOUSE-KB*/
+(
+1 LE_CONTEXT_STATE_KB
+2 LE_CONTEXT_STATE_MOUSE
+
+3 USB_MOUSE_DATA_CMD
+
+1 SEND_MOUSE_DATA_CMD
+2 SEND_KB_DATA_CMD
+)
+
+
+  (
+  	0 LE_M_STATE_SLAVE1_STANDBY
+  	1 LE_M_STATE_SLAVE1_ADVERTISING
+  	2 LE_M_STATE_SLAVE1_SCANNING
+  	3 LE_M_STATE_SLAVE1_INITIATING
+  	4 LE_M_STATE_SLAVE1_CONNECTED
+  	5 LE_M_STATE_SLAVE1_RFU_1
+  	6 LE_M_STATE_SLAVE1_RFU_2
+  	7 LE_M_STATE_SLAVE1_RFU_3
+  )
+
+  (
+  	0 LE_M_STATE_SLAVE2_STANDBY
+  	1 LE_M_STATE_SLAVE2_ADVERTISING
+  	2 LE_M_STATE_SLAVE2_SCANNING
+  	3 LE_M_STATE_SLAVE2_INITIATING
+  	4 LE_M_STATE_SLAVE2_CONNECTED
+  	5 LE_M_STATE_SLAVE2_CONNECT_INIT
+  	6 LE_M_STATE_SLAVE2_RFU_2
+  	7 LE_M_STATE_SLAVE2_RFU_3
+  )
+
+  	(
+	0 LE_SM_IDLE
+	1 LE_SM_FBTV_1800
+	2 LE_SM_FBTV_1800_WAIT
+	3 LE_SM_RBT_DEVICE_NAME
+	4 LE_SM_RBT_DEVICE_NAME_WAIT
+	5 LE_SM_FBTV_1801
+	6 LE_SM_FBTV_1801_WAIT
+	7 LE_SM_RBT_DEVICE_CHARACTER
+	8 LE_SM_RBT_DEVICE_CHARACTER_WAIT
+	
+  	)
+
+/* advertising channel PDU type */
+(
+0 ADV_IND
+1 ADV_DIRECT_IND
+2 ADV_NONCONN_IND
+3 SCAN_REQ
+4 SCAN_RSP
+5 CONNECT_REQ
+6 ADV_SCAN_IND
+)
+
+	/* tx packet type */
+	(
+	0x20 XT_LL_CONNECTION_UPDATE_REQ
+	0x21 XT_LL_CHANNEL_MAP_REQ
+	0x22 XT_LL_TERMINATE_IND
+	0x23 XT_LL_ENC_REQ
+	0x24 XT_LL_ENC_RSP
+	0x25 XT_LL_START_ENC_REQ
+	0x26 XT_LL_START_ENC_RSP
+	0x27 XT_LL_UNKNOWN_RSP
+	0x28 XT_LL_FEATURE_REQ
+	0x29 XT_LL_FEATURE_RSP
+	0x2A XT_LL_PAUSE_ENC_REQ
+	0x2B XT_LL_PAUSE_ENC_RSP
+	0x2C XT_LL_VERSION_IND
+	0x2D XT_LL_REJECT_IND
+	0x2E XT_LL_SLAVE_FEATURE_REQ
+	0x2F XT_LL_CONNECTION_PARAM_REQ
+	0x30 XT_LL_CONNECTION_PARAM_RSP
+	0x31 XT_LL_REJECT_IND_EXT
+	0x32 XT_LL_PING_REQ
+	0x33 XT_LL_PING_RSP
+	0x41 XT_SMP_PAIRING_REQUEST
+	0x42 XT_SMP_PAIRING_RESPONSE
+	0x43 XT_SMP_PAIRING_CONFIRM
+	0x44 XT_SMP_PAIRING_RANDOM
+	0x45 XT_SMP_PAIRING_FAILED
+	0x46 XT_SMP_ENCRYPTION_INFORMATION
+	0x47 XT_SMP_MASTER_IDENTIFICATION
+	0x48 XT_SMP_IDENTITY_INFORMATION
+	0x49 XT_SMP_IDENTITY_ADDRESS_INFORMATION
+	0x4A XT_SMP_SIGNING_INFORMATION
+	0x4B XT_SMP_SECURITY_REQUEST
+	0x4c XT_SMP_PAIRING_PUBLIC_KEY
+	0x4d XT_SMP_PAIRING_DHKEY_CHECK
+	)
+
+
+	/* LE control packet type */
+	(
+	0x00 LL_CONNECTION_UPDATE_REQ
+	0x01 LL_CHANNEL_MAP_REQ
+	0x02 LL_TERMINATE_IND
+	0x03 LL_ENC_REQ
+	0x04 LL_ENC_RSP
+	0x05 LL_START_ENC_REQ
+	0x06 LL_START_ENC_RSP
+	0x07 LL_UNKNOWN_RSP
+	0x08 LL_FEATURE_REQ
+	0x09 LL_FEATURE_RSP
+	0x0A LL_PAUSE_ENC_REQ
+	0x0B LL_PAUSE_ENC_RSP
+	0x0C LL_VERSION_IND
+	0x0D LL_REJECT_IND
+	0x0E LL_SLAVE_FEATURE_REQ
+	0x0F LL_CONNECTION_PARAM_REQ
+	0x10 LL_CONNECTION_PARAM_RSP
+	0x11 LL_REJECT_IND_EXT
+	0x12 LL_PING_REQ
+	0x13 LL_PING_RSP
+	)
+
+	/* Security Manager Protocol Code */
+	(
+	0x01 SMP_PAIRING_REQUEST
+	0x02 SMP_PAIRING_RESPONSE
+	0x03 SMP_PAIRING_CONFIRM
+	0x04 SMP_PAIRING_RANDOM
+	0x05 SMP_PAIRING_FAILED
+	0x06 SMP_ENCRYPTION_INFORMATION
+	0x07 SMP_MASTER_IDENTIFICATION
+	0x08 SMP_IDENTITY_INFORMATION
+	0x09 SMP_IDENTITY_ADDRESS_INFORMATION
+	0x0A SMP_SIGNING_INFORMATION
+	0x0B SMP_SECURITY_REQUEST
+	0x0c SMP_PAIRING_PUBLIC_KEY
+	0x0d SMP_PAIRING_DHKEY_CHECK
+	)
+
+	/* ATT OPCODE */
+	(
+	0x01 ATTOP_ERROR_RESPONSE
+	0x02 ATTOP_EXCHANGE_MTU_REQUEST
+	0x03 ATTOP_EXCHANGE_MTU_RESPONSE
+	0x04 ATTOP_FIND_INFORMATION_REQUEST
+	0x05 ATTOP_FIND_INFORMATION_RESPONSE
+	0x06 ATTOP_FIND_BY_TYPE_VALUE_REQUEST
+	0x07 ATTOP_FIND_BY_TYPE_VALUE_RESPONSE
+	0x08 ATTOP_READ_BY_TYPE_REQUEST
+	0x09 ATTOP_READ_BY_TYPE_RESPONSE
+	0x0A ATTOP_READ_REQUEST
+	0x0B ATTOP_READ_RESPONSE
+	0x0C ATTOP_READ_BLOB_REQUEST
+	0x0D ATTOP_READ_BLOB_RESPONSE
+	0x0E ATTOP_READ_MULTIPLE_REQUEST
+	0x0F ATTOP_READ_MULTIPLE_RESPONSE
+	0x10 ATTOP_READ_BY_GROUP_TYPE_REQUEST
+	0x11 ATTOP_READ_BY_GROUP_TYPE_RESPONSE
+	0x12 ATTOP_WRITE_REQUEST
+	0x13 ATTOP_WRITE_RESPONSE
+	0x16 ATTOP_PREPARE_WRITE_REQUEST
+	0x17 ATTOP_PREPARE_WRITE_RESPONSE
+	0x18 ATTOP_EXECUTE_WRITE_REQUEST
+	0x19 ATTOP_EXECUTE_WRITE_RESPONSE
+	0x1B ATTOP_HANDLE_VALUE_NOTIFICATION
+	0x1D ATTOP_HANDLE_VALUE_INDICATION
+	0x1E ATTOP_HANDLE_VALUE_CONFIRMATION
+	0x52 ATTOP_WRITE_COMMAND
+	0xD2 ATTOP_SIGNED_WRITE_COMMAND
+	0x1f ATTOP_CONTINUE
+	0x9e EMPTY_LE_DATA_PRE
+	0x9f EMPTY_LE_DATA
+	)
+
+	/* ATT error code */
+	(
+	0x01 ATT_ERR_INVALID_HANDLE
+	0x02 ATT_ERR_READ_NOT_PERMITTED
+	0x03 ATT_ERR_WRITE_NOT_PERMITTED
+	0x04 ATT_ERR_INVALID_PDU
+	0x05 ATT_ERR_INSUFFICIENT_AUTHENTICATION
+	0x06 ATT_ERR_REQUEST_NOT_SUPPORTED
+	0x07 ATT_ERR_INVALID_OFFSET
+	0x08 ATT_ERR_INSUFFICIENT_AUTHORIZATION
+	0x09 ATT_ERR_PREPARE_QUEUE_FULL
+	0x0A ATT_ERR_ATTRIBUTE_NOT_FOUND
+	0x0B ATT_ERR_ATTRIBUTE_NOT_LONG
+	0x0C ATT_ERR_INSUFFICIENT_ENCRYPTION_KEY_SIZE
+	0x0D ATT_ERR_INVALID_ATTRIBUTE_VALUE_LENGTH
+	0x0E ATT_ERR_UNLIKELY_ERROR
+	0x0F ATT_ERR_INSUFFICIENT_ENCRYPTION
+	0x10 ATT_ERR_UNSUPPORTED_GROUP_TYPE
+	0x11 ATT_ERR_INSUFFICIENT_RESOURCES
+	)
+	/*	SERVICE UUID	*/
+	(
+	0x1800 UUID_SERVICE_GENERIC_ACC
+	0x1801 UUID_SERVICE_GENERIC_ATT
+	0x180a UUID_SERVICE_DEVICE_INFO
+	0x180f UUID_SERVICE_BATTERY
+	0x1812 UUID_SERVICE_HIDS
+	0x2800 UUID_GATT_PRIMARY_SERVICE
+	0x2801 UUID_GATT_SECONDARY_SERVICE
+	0X2802 UUID_GATT_INCLUDE
+	0X2803 UUID_GATT_CHARACTERISTIC
+	0X2A00 UUID_CHRCTR_DEVICE_NAME
+	0X2A19 UUID_CHRCTR_BATTERY_LEVEL
+	0X2A22 UUID_CHRCTR_KEYBOARD_INPUT
+	0X2A23 UUID_CHRCTR_SYSTEM_ID 
+	0X2A25 UUID_CHRCTR_SERIAL_NUMBER
+	0X2A26 UUID_CHRCTR_FIRMWARE
+	0X2A32 UUID_CHRCTR_KEYBOARD_OUTPUT
+	0X2A33 UUID_CHRCTR_MOUSE_INPUT
+	0X2A4A UUID_CHRCTR_HID_INFO
+	0X2A4B UUID_CHRCTR_REPORT_MAP
+	0X2A4C UUID_CHRCTR_HID_CTRL_POINT
+	0X2A4D UUID_CHRCTR_REPORT
+	0X2A4E UUID_CHRCTR_PROTOCOL_MODE
+	)
+
+	(// pairing failed reason
+	0x00 PAIRING_FAILED_RESERVED
+	0X01 PAIRING_FAILED_PASSKEY_ENTRY_FAILED
+	0X02 PAIRING_FAILED_OOB_NOT_AVAILABLE
+	0X03 PAIRING_FAILED_AUTHENTICATION_REQUIRE
+	0X04 PAIRING_FAILED_CONFIRM_VALUE_FAILED
+	0X05 PAIRING_FAILED_PAIRING_NOT_SUPPORTED
+	0X06 PAIRING_FAILED_ENCRYPTION_KEY_SIZE
+	0X07 PAIRING_FAILED_COMMAND_NOT_SUPPORTED
+	0X08 PAIRING_FAILED_UNSPECIFIED_REASON
+	0X09 PAIRING_FAILED_REPEATED_ATTEMPTS
+	0X0A PAIRING_FAILED_INVALID_PARAMETERS
+	0X0B PAIRING_FAILED_DHKEY_CHECK_FAILED
+	0X0C PAIRING_FAILED_NUMERIC_COMPARISON_FAILED
+	0X0D PAIRING_FAILED_BR_EDR_PAIRING_IN_PROGRESS
+	0X0E PAIRING_FAILED_KEY_DERIVATION_GENERATION_NOT_ALLOWED
+	)
+
+	//modified_name
+	(
+	0x14 MAX_NAME_LEN
+	0x16 ADV_DATA_NAME_LEN
+	0X20 SPACE
+	
+	)
+	/* GATT Specifications*/
+	(
+	0X2900 CHARACTERTIC_EXTENDED_PROPERTIES
+	0X2901 CHARACTERTIC_USER_DESCRIPTION
+	0X2902 CLIENT_CHARACTERTIC_CONFIGURATION
+	0X2903 SERVER_CHARACTERTIC_CONFIGURATION
+	0X2904 CHARACTERTIC_PRESENTATION_FORMAT
+	0X2905 CHARACTERTIC_AGGREGATE
+	0X2906 VALID_RANGE
+	0X2907 EXTERNAL_REPORT_REFERENCE
+	0X2908 REPORT_REFERENCE
+	0X290B ENVIR_SENSING_CONFIGURATION
+	0X290C ENVIR_SENSING_MEASUREMENT
+	0X290D ENVIR_SENSING_TRIGGER_SETTING
+	)
+	/* LE L2CAP CID */
+	(
+	0x04 LE_L2CAP_CID_ATT
+	0x05 LE_L2CAP_CID_SIGNAL
+	0x06 LE_L2CAP_CID_SMP
+	)
+
+	//LE address type
+	(
+	0 LE_ADDR_TYPE_PUBLIC
+	1 LE_ADDR_TYPE_RANDOM
+	)
+	//LE address type bitmap
+	(
+	7 LE_RECEIVER_ADDR_BIT
+	6 LE_SENDER_ADDR_BIT
+	)
+	//LE SCAN TYPE
+	(
+	0x00 LE_SCAN_TYPE_PASSIVE //no SCAN_REQ shall be sent
+	0x01 LE_SCAN_TYPE_ACTIVE
+	)
+
+	//LE SCAN ENABLE
+	(
+	0x00 LE_SCAN_DISABLE
+	0x01 LE_SCAN_ENABLE
+	0x0101 LE_ACTIVE_SCAN_ENABLE
+	)
+
+
+//	le_state_map 0-2 is reserved for state_inconn,state_insniff and state_sco
+(
+3 lestate_got_first_packet
+4 lestate_encryption
+5 lestate_update_param
+6 lestate_update_map
+)
+
+// 	le mode
+(
+0 lemode_idle
+1 lemode_slave
+3 lemode_master
+)
+
+(
+0 LE_CONTINUE_TYPE_NULL
+1 LE_CONTINUE_TYPE_NOTIFICATION
+2 LE_CONTINUE_TYPE_PREPARE_WRITE_RESPONSE 
+)
+
+
+(
+0 LE_INITATOR_LTK_BIT
+1 LE_INITATOR_IRK_BIT
+2 LE_INITATOR_CSRK_BIT
+)
+
+(
+0X00	LE_PAIRING_MODE_NONE
+0X01	LE_PAIRING_MODE_LAGACY_JUSTWORK
+0X02	LE_PAIRING_MODE_LAGACY_PASSKEY
+0x81	LE_PAIRING_MODE_SECURE_CONNECT_JUSTWORK
+0x82	LE_PAIRING_MODE_SECURE_CONNECT_NUMERIC
+0X83	LE_PAIRING_MODE_SECURE_CONNECT_PASSKEY
+
+7 LE_PAIRING_MODE_SECURE_CONNECT_BIT
+)
+
+
+(
+0 FLAG_IOCAP_DISPLAYONLY
+1 FLAG_IOCAP_DISPLAYYESNO
+2 FLAG_IOCAP_KEYBOARDONLY
+3 FLAG_IOCAP_NOINPUTNOOUTPUT
+4 FLAG_IOCAP_KEYBOARDDISPLAY
+
+0x00 FLAG_OOB_DATA_FLAG_NO
+)
+
+(
+0X00 FLAG_LE_NO_BONDING_NO_MITM
+0X01 FLAG_LE_BONDING_NO_MITM
+0X04 FLAG_LE_NO_BONDING_MITM
+0X05 FLAG_LE_BONDING_MITM
+0X09 FLAG_LE_BONDING_NO_MITM_SECURE
+0X0D FLAG_LE_BONDING_MITM_SECURE
+
+2 LE_AUTH_MITM_BIT
+3 LE_AUTH_SECURE_CONNECTION_PAIRING_BIT
+)
+
+(
+0  LE_FIND_BY_TYPE_VAL_RES_NOT_FOUND
+1  LE_FIND_BY_TYPE_VAL_RES_FOUND_STARTING_HANDLE
+2  LE_FIND_BY_TYPE_VAL_RES_FOUND_ENDING_HANDLE
+
+)
+
+(
+0 MASTER_PUBLIC_ADDR
+1 MASTER_RANDOM_ADDR
+)
+
+(
+0x06 LE_ERR_PIN_OR_KEY_MISSING
+)
+
+//mem_le_enc_state
+(
+0 FLAG_LE_ENC_NULL
+1 FLAG_LE_ENC_START
+2 FLAG_LE_ENC_PAUSE
+3 FLAG_LE_ENC_END
+)
+
+//mem_le_pairing_state
+(
+0 FLAG_LE_PAIRING_NULL
+1 FLAG_LE_PAIRING_START
+2 FLAG_LE_PAIRING_AFTER_AUTH
+3 FLAG_LE_PAIRING_END
+)
+
+/*LE secure connect state */
+(
+0x00 LE_SC_STAT_NULL
+0x01 LE_SC_STAT_RECEIVE_PUBLIC_KEY
+0x02 LE_SC_STAT_WAIT_SEND_PUBLIC_KEY
+0x03 LE_SC_STAT_SEND_PUBLIC_KEY
+0x04 LE_SC_STAT_RECEIVE_RANDOM
+0x05 LE_SC_STAT_SEND_RANDOM
+0x06 LE_SC_STAT_RECEIVE_DHKEY
+0x07 LE_SC_STAT_WAIT_CONFIRM_GKEY
+0x08 LE_SC_STAT_PASSKEY_WAIT_CONFIRM
+)
+
+
+(
+0 FLAG_LE_SC_CONFRIM_NULL
+1 FLAG_LE_SC_CONFRIM_GKEY_OK
+)
+
+
+(
+3 LE_CONTINUE_TYPE_PUBLIC_KEY
+)
+
+//mem_le_continue_flag
+(
+0 LE_CONTINUE_FLAG_NULL
+1 LE_CONTINUE_FLAG_RX
+2 LE_CONTINUE_FLAG_TX
+)
+
+(
+0x2902  ATT_Configuration
+)
+
+memalloc(
+
+1 mem_lmo_header_length
+1 mem_lmo_header_opcode
+17 mem_lmo_payload
+1 mem_lmi_accepted_opcode
+1 mem_disconn_reason_send
+1 mem_tx_fixed_freq
+1 mem_rx_fixed_freq
+1 mem_ext_features_page
+2 mem_lmpext_ssp_enable
+1 mem_remote_sppcap
+
+1 mem_lmp_conn_state
+2 mem_soft_timer
+1 mem_pincode_state
+
+1 mem_sres_tid
+1 mem_accptsco_tid
+
+1 mem_auth_enable
+1 mem_wait_encryption
+
+16 mem_sniff_payload
+4 mem_aurand_send_delay_time
+)
+
+xmemalloc(
+3 mem_lmp_version
+2 mem_lmp_subversion
+1 mem_local_name_length
+3 mem_local_name
+64 mem_local_name2
+1 mem_local_name_end
+1 mem_unsniff2sniff_timer
+1 mem_switch_flag
+)
+	(
+	//bit map
+	0 pair_state_inrand
+	1 pair_state_inrand_acpt
+	2 pair_state_send_comb
+	3 pair_state_recv_comb
+	4 pair_state_send_aurand
+	5 pair_state_recv_sres
+	6 pair_state_recv_aurand
+	7 pair_state_send_sres	
+	)
+	/* LMP opcodes */
+	(
+	1 LMP_NAME_REQ 
+	2 LMP_NAME_RES 
+	3 LMP_ACCEPTED 
+	4 LMP_NOT_ACCEPTED 
+	5 LMP_CLKOFFSET_REQ 
+	6 LMP_CLKOFFSET_RES 
+	7 LMP_DETACH 
+	8 LMP_IN_RAND 
+	9 LMP_COMB_KEY 
+	10 LMP_UNIT_KEY 
+	11 LMP_AU_RAND 
+	12 LMP_SRES 
+	13 LMP_TEMP_RAND 
+	14 LMP_TEMP_KEY 
+	15 LMP_ENCRYPTION_MODE_REQ 
+	16 LMP_ENCRYPTION_KEY_SIZE_REQ 
+	17 LMP_START_ENCRYPTION_REQ 
+	18 LMP_STOP_ENCRYPTION_REQ 
+	19 LMP_SWITCH_REQ 
+	20 LMP_HOLD
+	21 LMP_HOLD_REQ
+	23 LMP_SNIFF_REQ 
+	24 LMP_UNSNIFF_REQ 
+	26 LMP_PARK_REQ 
+	27 LMP_SET_BROADCAST_SCAN_WINDOW 
+	28 LMP_MODIFY_BEACON 
+	29 LMP_UNPARK_BD_ADDR_REQ 
+	30 LMP_UNPARK_PM_ADDR_REQ 
+	31 LMP_INCR_POWER_REQ 
+	32 LMP_DECR_POWER_REQ 
+	33 LMP_MAX_POWER 
+	34 LMP_MIN_POWER 
+	35 LMP_AUTO_RATE 
+	36 LMP_PREFERRED_RATE 
+	37 LMP_VERSION_REQ 
+	38 LMP_VERSION_RES 
+	39 LMP_FEATURES_REQ 
+	40 LMP_FEATURES_RES 
+	41 LMP_QUALITY_OF_SERVICE 
+	42 LMP_QUALITY_OF_SERVICE_REQ 
+	43 LMP_SCO_LINK_REQ 
+	44 LMP_REMOVE_SCO_LINK_REQ 
+	45 LMP_MAX_SLOT 
+	46 LMP_MAX_SLOT_REQ 
+	47 LMP_TIMING_ACCURACY_REQ 
+	48 LMP_TIMING_ACCURACY_RES 
+	49 LMP_SETUP_COMPLETE 
+	50 LMP_USE_SEMI_PERMANENT_KEY 
+	51 LMP_HOST_CONNECTION_REQ 
+	52 LMP_SLOT_OFFSET 
+	53 LMP_PAGE_MODE_REQ 
+	54 LMP_PAGE_SCAN_MODE_REQ 
+	55 LMP_SUPERVISION_TIMEOUT 
+	56 LMP_TEST_ACTIVATE
+	57 LMP_TEST_CONTROL
+	58 LMP_ENC_KEY_SIZE_MASK_REQ
+	59 LMP_ENC_KEY_SIZE_MASK_RES
+	60 LMP_SET_AFH
+
+	/* simple pairing support */
+	61 LMP_ENCAPSULATED_HEADER
+	62 LMP_ENCAPSULATED_PAYLOAD
+	63 LMP_SIMPLE_PAIRING_CONFIRM
+	64 LMP_SIMPLE_PAIRING_NUMBER
+	65 LMP_DHKEY_CHECK
+	127 LMP_ESCAPE
+	127 LMP_ESCAPE_4   /* add 2bytes LMP header support  */   
+	)
+	/* LMP EXT opcodes, ORed with bit 7 to make difference to nonEXT */
+	(
+	129 LMP_EXT_ACCEPTED
+	130 LMP_NOT_ACCEPTED_EXT
+	131 LMP_EXT_FEATURES_REQ
+	132 LMP_EXT_FEATURES_RES
+	139 LMP_PACKET_TYPE_TABLE_REQ
+	140 LMP_EXT_ESCO_LINK_REQ
+	141 LMP_EXT_REMOVE_ESCO_REQ
+	144 LMP_EXT_CHN_CLASSIFICATION_REQ
+	145 LMP_EXT_CHN_CLASSIFICATION
+	149 LMP_SNIFF_SUBRATING_REQ
+	150 LMP_SNIFF_SUBRATING_RES
+	151 LMP_PAUSE_ENCRYPTION_REQ
+	152 LMP_RESUME_ENCRYPTION_REQ
+	153 LMP_IO_CAP_REQ
+	154 LMP_IO_CAP_RES
+	)
+	/* LMP reason codes */
+	(
+	0x05 AUTHENTICATION_FAILURE_ERROR
+	0x06 KEY_MISSING
+	0x0b ACL_CONNECTION_ALREADY_EXISTS
+	0x13 OTHER_END_TERMINATED
+	0x15 ABOUT_TO_POEWR_OFF
+	0x16 LOCAL_HOST
+	0x18 PAIRING_NOT_ALLOWED
+	0x19 UNKNOWN_LMP_PDU
+	0x1A UNSUPPORTED_LMP_FEATURE 
+	0x1F UNSPECIFIED_ERROR
+	0x20 UNSUPPORTED_PARAMETERS
+	0x21 SWITCH_NOT_ALLOWED
+	0x23 TRANSACTION_COLLISION
+	0x24 PDU_NOT_ALLOWED
+	0x25 ENCRYPTION_MODE_NOT_ACCEPTABLE
+	0x2e NOT_SUPPORT_CHN_CLASSIFICATION
+	0x37 NOT_SUPPORT_SSP
+	)
+
+	/* test mode scenarios */
+	(
+	0 PAUSE_TEST_MODE
+	1 ZERO_PATTERN
+	2 ONE_PATTERN
+	3 ALT_PATTERN
+	4 PSEUDORANDOM
+	5 CLOSED_LOOP_BACK_ACL
+	6 CLOSED_LOOP_BACK_SCO
+	7 ACL_WITHOUT_WHITENING
+	8 SCO_WITHOUT_WHITENING
+	9 ALT2_PATTERN
+	255 EXIT_TEST_MODE
+	)
+	/* test mode hoppig modes */
+	(
+	0 FIXED_FREQ
+	1 NORMAL_HOP
+	)
+
+	/* mem_lmp_tid indicates which type of LMP will be sent */
+	(
+	0 TID_NORM_REPLY
+	1 TID_NORM_SEND
+	2 TID_ONE
+	3 TID_ZERO
+	4 TID_PAIRING
+	5 TID_ENCRYPTION
+	6 TID_VARIABLE
+	7 TID_RX
+	)
+
+	/* ============== lmp status ==========*/
+	(
+	0 lmp_incoming
+	1 lmp_outgoing
+	2 lmp_reject_msg
+	3 lmp_clear_msg
+	4 upper_reject_msg
+	5 upper_clear_msg
+	)
+
+(
+0x2ee00 TIMER_ONE_MINUTE //96000*2
+80 TIMER_SWITCH_WAITE
+12 TIMER_ENPT_WAITE
+)
+
+(
+0 SWITCH_FLAG_INIT
+1 SWITCH_FLAG_ACCEPT
+2 SWITCH_FLAG_NOT_ACCEPT
+)
+(
+0 NULL_ENCRYP
+1 DONE_ENCRYP
+)
+
+//
+//
+//Large memory blocks defined in this file.
+//Blocks Shall be defined with absolute address.
+//Blocks' length Shall be specified in comment following Blocks' names.
+//Different blocks MAY be overlap.
+//Blocks defined in this file Shall NOT be overlap with variable in memmap.format.
+
+// USB C51 exchange area
+(
+0xff0 mem_mcmd
+0xff1 mem_mouse_data
+)
+
+//l2cap RX buffers
+(
+0x1000 mem_l2cap_rxbuff1		//0x400
+0x1400 mem_l2cap_rxbuff2		//0x400
+//end address:0x17ff
+)
+//l2cap TX buffers
+(
+0x1800 mem_tx_buff0		//128
+0x1880 mem_tx_buff1		//128
+0x1900 mem_tx_buff2		//128
+0x1980 mem_tx_buff3		//128
+0x1a00 mem_tx_buff4		//128
+0x1a80 mem_tx_buff5		//128
+0x1b00 mem_tx_buff6		//128
+0x1b80 mem_tx_buff7		//128
+//end address: 0x1bff
+)
+
+//uart buffer
+(
+0x1800 mem_h5rx_buf//0x400
+0x1bff mem_h5rx_buf_end
+0x1c00 mem_h5tx_buf
+0x1fff mem_h5tx_buf_end
+)
+
+(
+0x4c00 mem_module_rx_buf//0x400
+0x4c00 mem_module_rx_buf_little
+0x4fff mem_module_rx_buf_end
+0x1c00 mem_module_tx_buf
+0x1fff mem_module_tx_buf_end
+)
+
+(
+0x1800 mem_ir_record
+0x1c      mem_ir_record_max
+)
+
+
+memalloc(
+	2 mem_module_temp_len
+	1 mem_uart_cmd
+	1 mem_uart_opcode
+	1 mem_uart_len
+	1 mem_module_temp_nl_discard_packet
+	1 mem_module_le_md_flag
+)
+omemalloc(	
+	1 mem_module_wake_up_gpio
+	1 mem_module_state_gpio
+	1 mem_module_connect_state_gpio
+
+	2 mem_current_packet_length
+	1 mem_module_state
+	1 mem_module_task
+	6 mem_cmode_addr
+	1 mem_module_mcu_wake_pin
+	4 mem_module_mcu_wake_delay_us
+
+	1 mem_module_spp_lpm_mult
+	1 mem_module_le_lpm_mult	
+	1 mem_module_bluetooth_stauts_by_command
+
+	//uart
+	2 mem_module_uart_rx_buffer
+	2 mem_module_uart_rx_buffer_end
+	2 mem_module_uart_tx_buffer
+	2 mem_module_uart_tx_buffer_end
+
+	//ADC
+	1 mem_module_read_vdd_flag
+	1 mem_module_read_vdd_count
+	1 mem_module_vdd_quotient
+	1 mem_module_vdd_remainder
+
+	//ble
+	2 mem_module_le_buff_len
+	2 mem_module_le_buff_len_all
+	2 mem_module_le_buff_data_len_all
+	1 mem_module_le_continue_flag
+	1 mem_module_le_rx_data_len
+	2 mem_module_le_rx_data_address
+	2 mem_module_le_rx_data_handle
+	//ble write handle
+	2 mem_module_data_write_handle
+	2 mem_module_data_write_handle2
+	//flag
+	1 mem_module_flag
+	1 mem_le_notify_type
+	2 mem_module_hci_notify_start
+	2 mem_module_hci_notify_offset
+	2 mem_module_hci_notify_len
+	2 mem_module_hci_notify_att
+	2 mem_module_hci_notify_original_len
+	
+	300 mem_module_uuid_list
+	0 mem_module_uuid_list_end
+	500 mem_module_le_att_list
+	0 mem_module_le_att_list_end
+	0 mem_nv_data
+	34 mem_nv_data0
+	34 mem_nv_data1
+	34 mem_nv_data2
+	34 mem_nv_data3
+	34 mem_nv_data4
+)
+
+
+(
+0 MODULE_FLAG_UART_FLOW_CONTROL
+1 MODULE_FLAG_BLE_RECEIVED_DATA
+2 MODULE_FLAG_BLE_SEND_MTU23
+3 MODULE_FLAG_BLE_SEND_DATA
+)
+
+
+
+
+(
+34 NV_DATA_LEN
+-1 DECREASED_ONE
+)
+
+
+
+(
+	10 FLAG_MODULE_READ_VDD_COUNT
+)
+
+	(
+		110  DM_REFCOM_BUFF_LEN
+		230  NL_RFCOMM_BUFF_LEN
+		220  NL_RFCOMM_BUFF_LEN_220
+		20 DM_LE_BUFF_LEN
+	)
+	(
+		0x200 UART_AIR_CONTROL_THRESHOLD
+		0x150 UART_RX_CONTROL_THRESHOLD
+	)
+	(
+		0 MODULE_LED_DISABLE
+		1 MODULE_LED_BLINK
+	)
+
+
+
+
+(
+0x01 HCI_DISCARD_PACKET
+0x00 HCI_NOT_DISCARD_PACKET
+
+
+)
+
+
+
+(//Command
+0x00 HCI_CMD_SET_BT_ADDR_REQ
+0x01 HCI_CMD_SET_LE_ADDR_REQ
+0x02 HCI_CMD_SET_VISIBILITY_REQ
+0x03 HCI_CMD_SET_BT_NAME_REQ
+0x04 HCI_CMD_SET_LE_NAME_REQ
+0x05 HCI_CMD_SPP_DATA_REQ
+0x09 HCI_CMD_LE_DATA_REQ
+0x0b HCI_CMD_STATUS_IRQ
+0x0c HCI_CMD_SET_PAIRING_REQ
+0x0d HCI_CMD_SET_PINCODE_REQ
+0x0e HCI_CMD_SET_UARTCONTROL_REQ
+0x0f HCI_CMD_SET_UART_BAUD_REQ
+0x10 HCI_CMD_VERSION_REQ
+0x11 HCI_CMD_BT_DISCONNECT
+0x12 HCI_CMD_BLE_DISCONNECT
+0x13 HCI_CMD_DELETE_DEVICE
+0x14 HCI_CMD_CREATE_CONNECT
+0x26 HCI_CMD_SET_NVRAM_REQ
+0x27 HCI_CMD_SLEEP
+0x28 HCI_CMD_CONFIRM_GKEY
+0x29 HCI_CMD_SET_CREDIT_GIVEN
+0x2a HCI_CMD_AUTO_ADV_SCAN
+0x2b HCI_CMD_POWER_REQ
+0x2c HCI_CMD_POWER_SET
+0x30 HCI_CMD_PASSKEY_ENTRY
+0x31 HCI_CMD_SET_GPIO
+0x32 HCI_CMD_READ_GPIO
+0x33 HCI_CMD_LE_SET_PAIRING
+0x34 HCI_CMD_LE_SET_ADV_DATA
+0x35 HCI_CMD_LE_SET_SCAN_DATA
+0x36 HCI_CMD_LE_SEND_CONN_UPDATE_REQ
+0x38 HCI_CMD_LE_START_PAIRING
+0x48 HCI_CMD_LE_CONFIRM_GKEY
+
+)
+
+(//event
+0x00 HCI_EVENT_SPP_CONN_REP
+0x01 HCI_EVENT_HID_CONN_REP
+0x02 HCI_EVENT_LE_CONN_REP
+0x03 HCI_EVENT_SPP_DIS_REP
+0x04 HCI_EVENT_HID_DIS_REP
+0x05 HCI_EVENT_LE_DIS_REP
+0x06 HCI_EVENT_CMD_RES
+0x07 HCI_EVENT_SPP_DATA_REP
+0x08 HCI_EVENT_LE_DATA_REP
+0x09 HCI_EVENT_STANDBY_REP
+0x0a HCI_EVENT_STATUS_RES
+0x0b HCI_EVENT_FINISH_PACK_NUM
+0X0C HCI_EVENT_SNIFF_MD_CHANGE
+0x0D HCI_EVENT_NVRAM_REP
+0x0e HCI_EVENT_GKEY
+0x0F HCI_EVENT_INVALID_PACKET
+0x10 HCI_EVENT_GET_PASSKEY
+0x11 HCI_EVENT_LE_TK
+0x12 HCI_EVENT_REMOTE_MTU
+0x14 HCI_EVENT_LE_PAIRING_STATE
+0X15 HCI_EVENT_LE_ENCRYPTION_STATE
+0x17 HCI_EVENT_LE_CONNECTION_UPDATE
+0x1d HCI_EVENT_LE_GKEY
+
+)
+
+
+
+
+(
+0x7e0 OTP_ADDR_RF_PARAM_FIX
+//struct of RF_PARAM_FIX
+// uint8       //length = param_pair_count * 2 
+// uint16     //param-pair-1
+// uint16     //param-pair-2
+// uint16     //param-pair-3
+// uint16     //param-pair-4
+// uint16     //param-pair-5
+// uint16     //param-pair-6
+// uint16     //param-pair-7
+)
+(
+0x0270 FW_VERSION_NUMBER
+)
+
+(
+0	PAIRING_PINCODE
+1	PAIRING_JUSTWORK
+2	PAIRING_PASSKEY
+3	PAIRING_CONFIRM
+)
+
+
+(
+0x0001	FLAG_BT_PAIRING_SUCCESS
+0x0101	FLAG_BT_PAIRING_FAIL
+0x0080	FLAG_BLE_PAIRING_SUCCESS
+0x0180	FLAG_BLE_PAIRING_FAIL
+)
+
+
+(
+1	FLAG_EVENT_START_ENC
+0	FLAG_EVENT_PAUSE_ENC
+)
+
+(
+	0 MOUDLE_STATE_BT_BIT
+	1 MOUDLE_STATE_BLE_BIT
+)
+
+(
+	0 MOUDLE_TASK_UNSINFF
+)
+
+
+
+memalloc(
+2 mem_init_cnt
+)
+//dpi eeprom addr
+198 mouse_dpi_eeprom_addr
+
+omemalloc(
+// Mouse Work Area
+1 mem_mouse_key
+2 mem_mouse_x
+2 mem_mouse_y
+1 mem_mouse_z
+1 mem_mouse_tz
+1 mem_mouse_xy_h
+1 mem_sensor_shutter_hi
+1 mem_sensor_shutter_lo
+1 mem_sensor_smart_flag
+1 mem_sensor_squal_reg
+1 mem_mouse_move_flag
+1 mem_reconnect_timeout
+2 mem_mouse_direct_timeout
+2 mem_mouse_no_data_timeout
+2 mem_mouse_blank_data_timeout
+2 mem_mouse_discovery_timer
+2 mem_mouse_direct_timer
+2 mem_mouse_no_data_timer
+2 mem_mouse_blank_data_timer
+1 mem_mouse_send_blank_timer
+1 mem_mouse_dpi
+1 mem_mouse_dpi_button_state
+1 mem_mouse_test_cnt
+2 mem_le_hibernate_timer
+1 mem_mouse_mode_state
+1 mem_mouse_le_notify_handle
+// Mouse Config Area
+
+1 mem_lbutton_gpio
+1 mem_rbutton_gpio
+1 mem_mbutton_gpio
+1 mem_sbutton1_gpio
+1 mem_sbutton2_gpio
+1 mem_dpi_button_gpio
+1 mem_sensor_data_gpio
+1 mem_whee_a_data_gpio
+1 mem_whee_b_data_gpio
+1 mem_sensor_reset_gpio
+1 mem_device1_led_gpio
+1 mem_device2_led_gpio
+1 mem_device3_led_gpio
+1 mem_conn_cnt
+//mouse T wheel
+1 mem_whee_ta_data_gpio
+1 mem_whee_tb_data_gpio
+1 mem_wheel_tb_old_pinlevel
+1 mem_wheel_tb_new_pinlevel
+1 mem_wheel_tog 
+1 mem_mouse_tz_data
+1 mem_mouse_tz_data_count
+1 mem_mouse_tz_data_count1
+
+1 mem_mwhee_a_data_gpio
+1 mem_mwhee_b_data_gpio
+1 mem_mwheel_b_old_pinlevel
+1 mem_mwheel_b_new_pinlevel
+1 mem_mwheel_tog 
+1 mem_mouse_z_data
+1 mem_mouse_z_data_count
+1 mem_mouse_z_data_count1
+
+1 mem_reconn_mode
+1 mem_mouse_statue_led_timer  
+
+1 mem_device_flag
+750 mem_mouse_uuid_list
+0 mem_mouse_uuid_list_end
+600 mem_mouse_le_att_list
+0 mem_mouse_le_att_list_end
+)
+(
+0x00 DPI_BUTTON_STATE_DOWN
+0x01 DPI_BUTTON_STATE_UP
+
+)
+
+(
+1 ONE_TRADITION_MOUSE
+2 ONE_BLE_MOUSE
+)
+
+
+(
+1 SENSOR_TYPE_A7530
+2 SENSOR_TYPE_P3204
+)
+0x30 P3204_ID
+0x31 P3065_ID
+0x3e P3610_ID
+
+0x00 PAN_REG_PID_L
+0x01 PAN_REG_PID_H
+0x02 PAN_REG_MOTION_STAUS
+0x03 PAN_REG_DELTA_X
+0x04 PAN_REG_DELTA_Y
+0x05 PAN_REG_OPRATION_MODE
+0x06 PAN_REG_CONFIG
+0x07 PAN_REG_IMAGE_QUALITY
+0x08 PAN_REG_OPRATION_STATE
+0x09 PAN_REG_WRITE_PROTECT
+0x0A PAN_REG_SLEEP_1
+0x0B PAN_REG_ENTER_TIME
+0x0C PAN_REG_SLEEP_2
+0x0D PAN_REG_IMAGE_THRESHOLD
+0x0E PAN_REG_IMAGE_RECGNITION
+
+7 pan_bit_motion
+
+(
+1000      MOUSE_LPM_CLR_LOCK_TIME
+0x06      MOUSE_DPI_ADDRESS
+       2       MOUSE_DPI_MAX_DECR
+)
+(
+80 MOUSE_SEND_BLANK_TIMER
+)
+
+
+//mem_mouse_mode_state
+(
+0x00 MOUSE_MODE_STATE_IDLE
+0x01 MOUSE_MODE_STATE_BT
+0x02 MOUSE_MODE_STATE_BLE
+)
+
+
+(
+	  0 patch00_0
+	  1 patch00_1
+	  2 patch00_2
+	  3 patch00_3
+	  4 patch00_4
+	  5 patch00_5
+	  6 patch00_6
+	  7 patch00_7
+	  8 patch01_0
+	  9 patch01_1
+	 10 patch01_2
+	 11 patch01_3
+	 12 patch01_4
+	 13 patch01_5
+	 14 patch01_6
+	 15 patch01_7
+	 16 patch02_0
+	 17 patch02_1
+	 18 patch02_2
+	 19 patch02_3
+	 20 patch02_4
+	 21 patch02_5
+	 22 patch02_6
+	 23 patch02_7
+	 24 patch03_0
+	 25 patch03_1
+	 26 patch03_2
+	 27 patch03_3
+	 28 patch03_4
+	 29 patch03_5
+	 30 patch03_6
+	 31 patch03_7
+	 32 patch04_0
+	 33 patch04_1
+	 34 patch04_2
+	 35 patch04_3
+	 36 patch04_4
+	 37 patch04_5
+	 38 patch04_6
+	 39 patch04_7
+	 40 patch05_0
+	 41 patch05_1
+	 42 patch05_2
+	 43 patch05_3
+	 44 patch05_4
+	 45 patch05_5
+	 46 patch05_6
+	 47 patch05_7
+	 48 patch06_0
+	 49 patch06_1
+	 50 patch06_2
+	 51 patch06_3
+	 52 patch06_4
+	 53 patch06_5
+	 54 patch06_6
+	 55 patch06_7
+	 56 patch07_0
+	 57 patch07_1
+	 58 patch07_2
+	 59 patch07_3
+	 60 patch07_4
+	 61 patch07_5
+	 62 patch07_6
+	 63 patch07_7
+	 64 patch08_0
+	 65 patch08_1
+	 66 patch08_2
+	 67 patch08_3
+	 68 patch08_4
+	 69 patch08_5
+	 70 patch08_6
+	 71 patch08_7
+	 72 patch09_0
+	 73 patch09_1
+	 74 patch09_2
+	 75 patch09_3
+	 76 patch09_4
+	 77 patch09_5
+	 78 patch09_6
+	 79 patch09_7
+	 80 patch0a_0
+	 81 patch0a_1
+	 82 patch0a_2
+	 83 patch0a_3
+	 84 patch0a_4
+	 85 patch0a_5
+	 86 patch0a_6
+	 87 patch0a_7
+	 88 patch0b_0
+	 89 patch0b_1
+	 90 patch0b_2
+	 91 patch0b_3
+	 92 patch0b_4
+	 93 patch0b_5
+	 94 patch0b_6
+	 95 patch0b_7
+	 96 patch0c_0
+	 97 patch0c_1
+	 98 patch0c_2
+	 99 patch0c_3
+	100 patch0c_4
+	101 patch0c_5
+	102 patch0c_6
+	103 patch0c_7
+	104 patch0d_0
+	105 patch0d_1
+	106 patch0d_2
+	107 patch0d_3
+	108 patch0d_4
+	109 patch0d_5
+	110 patch0d_6
+	111 patch0d_7
+	112 patch0e_0
+	113 patch0e_1
+	114 patch0e_2
+	115 patch0e_3
+	116 patch0e_4
+	117 patch0e_5
+	118 patch0e_6
+	119 patch0e_7
+	120 patch0f_0
+	121 patch0f_1
+	122 patch0f_2
+	123 patch0f_3
+	124 patch0f_4
+	125 patch0f_5
+	126 patch0f_6
+	127 patch0f_7
+	128 patch10_0
+	129 patch10_1
+	130 patch10_2
+	131 patch10_3
+	132 patch10_4
+	133 patch10_5
+	134 patch10_6
+	135 patch10_7
+	136 patch11_0
+	137 patch11_1
+	138 patch11_2
+	139 patch11_3
+	140 patch11_4
+	141 patch11_5
+	142 patch11_6
+	143 patch11_7
+	144 patch12_0
+	145 patch12_1
+	146 patch12_2
+	147 patch12_3
+	148 patch12_4
+	149 patch12_5
+	150 patch12_6
+	151 patch12_7
+	152 patch13_0
+	153 patch13_1
+	154 patch13_2
+	155 patch13_3
+	156 patch13_4
+	157 patch13_5
+	158 patch13_6
+	159 patch13_7
+	160 patch14_0
+	161 patch14_1
+	162 patch14_2
+	163 patch14_3
+	164 patch14_4
+	165 patch14_5
+	166 patch14_6
+	167 patch14_7
+	168 patch15_0
+	169 patch15_1
+	170 patch15_2
+	171 patch15_3
+	172 patch15_4
+	173 patch15_5
+	174 patch15_6
+	175 patch15_7
+	176 patch16_0
+	177 patch16_1
+	178 patch16_2
+	179 patch16_3
+	180 patch16_4
+	181 patch16_5
+	182 patch16_6
+	183 patch16_7
+	184 patch17_0
+	185 patch17_1
+	186 patch17_2
+	187 patch17_3
+	188 patch17_4
+	189 patch17_5
+	190 patch17_6
+	191 patch17_7
+	192 patch18_0
+	193 patch18_1
+	194 patch18_2
+	195 patch18_3
+	196 patch18_4
+	197 patch18_5
+	198 patch18_6
+	199 patch18_7
+	200 patch19_0
+	201 patch19_1
+	202 patch19_2
+	203 patch19_3
+	204 patch19_4
+	205 patch19_5
+	206 patch19_6
+	207 patch19_7
+	208 patch1a_0
+	209 patch1a_1
+	210 patch1a_2
+	211 patch1a_3
+	212 patch1a_4
+	213 patch1a_5
+	214 patch1a_6
+	215 patch1a_7
+	216 patch1b_0
+	217 patch1b_1
+	218 patch1b_2
+	219 patch1b_3
+	220 patch1b_4
+	221 patch1b_5
+	222 patch1b_6
+	223 patch1b_7
+	224 patch1c_0
+	225 patch1c_1
+	226 patch1c_2
+	227 patch1c_3
+	228 patch1c_4
+	229 patch1c_5
+	230 patch1c_6
+	231 patch1c_7
+	232 patch1d_0
+	233 patch1d_1
+	234 patch1d_2
+	235 patch1d_3
+	236 patch1d_4
+	237 patch1d_5
+	238 patch1d_6
+	239 patch1d_7
+	240 patch1e_0
+	241 patch1e_1
+	242 patch1e_2
+	243 patch1e_3
+	244 patch1e_4
+	245 patch1e_5
+	246 patch1e_6
+	247 patch1e_7
+	248 patch1f_0
+	249 patch1f_1
+	250 patch1f_2
+	251 patch1f_3
+	252 patch1f_4
+	253 patch1f_5
+	254 patch1f_6
+	255 patch1f_7
+	  0 patch20_0
+	  1 patch20_1
+	  2 patch20_2
+	  3 patch20_3
+	  4 patch20_4
+	  5 patch20_5
+	  6 patch20_6
+	  7 patch20_7
+	  8 patch21_0
+	  9 patch21_1
+	 10 patch21_2
+	 11 patch21_3
+	 12 patch21_4
+	 13 patch21_5
+	 14 patch21_6
+	 15 patch21_7
+	 16 patch22_0
+	 17 patch22_1
+	 18 patch22_2
+	 19 patch22_3
+	 20 patch22_4
+	 21 patch22_5
+	 22 patch22_6
+	 23 patch22_7
+	 24 patch23_0
+	 25 patch23_1
+	 26 patch23_2
+	 27 patch23_3
+	 28 patch23_4
+	 29 patch23_5
+	 30 patch23_6
+	 31 patch23_7
+	 32 patch24_0
+	 33 patch24_1
+	 34 patch24_2
+	 35 patch24_3
+	 36 patch24_4
+	 37 patch24_5
+	 38 patch24_6
+	 39 patch24_7
+	 40 patch25_0
+	 41 patch25_1
+	 42 patch25_2
+	 43 patch25_3
+	 44 patch25_4
+	 45 patch25_5
+	 46 patch25_6
+	 47 patch25_7
+	 48 patch26_0
+	 49 patch26_1
+	 50 patch26_2
+	 51 patch26_3
+	 52 patch26_4
+	 53 patch26_5
+	 54 patch26_6
+	 55 patch26_7
+	 56 patch27_0
+	 57 patch27_1
+	 58 patch27_2
+	 59 patch27_3
+	 60 patch27_4
+	 61 patch27_5
+	 62 patch27_6
+	 63 patch27_7
+	 64 patch28_0
+	 65 patch28_1
+	 66 patch28_2
+	 67 patch28_3
+	 68 patch28_4
+	 69 patch28_5
+	 70 patch28_6
+	 71 patch28_7
+	 72 patch29_0
+	 73 patch29_1
+	 74 patch29_2
+	 75 patch29_3
+	 76 patch29_4
+	 77 patch29_5
+	 78 patch29_6
+	 79 patch29_7
+	 80 patch2a_0
+	 81 patch2a_1
+	 82 patch2a_2
+	 83 patch2a_3
+	 84 patch2a_4
+	 85 patch2a_5
+	 86 patch2a_6
+	 87 patch2a_7
+	 88 patch2b_0
+	 89 patch2b_1
+	 90 patch2b_2
+	 91 patch2b_3
+	 92 patch2b_4
+	 93 patch2b_5
+	 94 patch2b_6
+	 95 patch2b_7
+	 96 patch2c_0
+	 97 patch2c_1
+	 98 patch2c_2
+	 99 patch2c_3
+	100 patch2c_4
+	101 patch2c_5
+	102 patch2c_6
+	103 patch2c_7
+	104 patch2d_0
+	105 patch2d_1
+	106 patch2d_2
+	107 patch2d_3
+	108 patch2d_4
+	109 patch2d_5
+	110 patch2d_6
+	111 patch2d_7
+	112 patch2e_0
+	113 patch2e_1
+	114 patch2e_2
+	115 patch2e_3
+	116 patch2e_4
+	117 patch2e_5
+	118 patch2e_6
+	119 patch2e_7
+	120 patch2f_0
+	121 patch2f_1
+	122 patch2f_2
+	123 patch2f_3
+	124 patch2f_4
+	125 patch2f_5
+	126 patch2f_6
+	127 patch2f_7
+	128 patch30_0
+	129 patch30_1
+	130 patch30_2
+	131 patch30_3
+	132 patch30_4
+	133 patch30_5
+	134 patch30_6
+	135 patch30_7
+	136 patch31_0
+	137 patch31_1
+	138 patch31_2
+	139 patch31_3
+	140 patch31_4
+	141 patch31_5
+	142 patch31_6
+	143 patch31_7
+	144 patch32_0
+	145 patch32_1
+	146 patch32_2
+	147 patch32_3
+	148 patch32_4
+	149 patch32_5
+	150 patch32_6
+	151 patch32_7
+	152 patch33_0
+	153 patch33_1
+	154 patch33_2
+	155 patch33_3
+	156 patch33_4
+	157 patch33_5
+	158 patch33_6
+	159 patch33_7
+	160 patch34_0
+	161 patch34_1
+	162 patch34_2
+	163 patch34_3
+	164 patch34_4
+	165 patch34_5
+	166 patch34_6
+	167 patch34_7
+	168 patch35_0
+	169 patch35_1
+	170 patch35_2
+	171 patch35_3
+	172 patch35_4
+	173 patch35_5
+	174 patch35_6
+	175 patch35_7
+	176 patch36_0
+	177 patch36_1
+	178 patch36_2
+	179 patch36_3
+	180 patch36_4
+	181 patch36_5
+	182 patch36_6
+	183 patch36_7
+	184 patch37_0
+	185 patch37_1
+	186 patch37_2
+	187 patch37_3
+	188 patch37_4
+	189 patch37_5
+	190 patch37_6
+	191 patch37_7
+	192 patch38_0
+	193 patch38_1
+	194 patch38_2
+	195 patch38_3
+	196 patch38_4
+	197 patch38_5
+	198 patch38_6
+	199 patch38_7
+	200 patch39_0
+	201 patch39_1
+	202 patch39_2
+	203 patch39_3
+	204 patch39_4
+	205 patch39_5
+	206 patch39_6
+	207 patch39_7
+	208 patch3a_0
+	209 patch3a_1
+	210 patch3a_2
+	211 patch3a_3
+	212 patch3a_4
+	213 patch3a_5
+	214 patch3a_6
+	215 patch3a_7
+	216 patch3b_0
+	217 patch3b_1
+	218 patch3b_2
+	219 patch3b_3
+	220 patch3b_4
+	221 patch3b_5
+	222 patch3b_6
+	223 patch3b_7
+	224 patch3c_0
+	225 patch3c_1
+	226 patch3c_2
+	227 patch3c_3
+	228 patch3c_4
+	229 patch3c_5
+	230 patch3c_6
+	231 patch3c_7
+	232 patch3d_0
+	233 patch3d_1
+	234 patch3d_2
+	235 patch3d_3
+	236 patch3d_4
+	237 patch3d_5
+	238 patch3d_6
+	239 patch3d_7
+	240 patch3e_0
+	241 patch3e_1
+	242 patch3e_2
+	243 patch3e_3
+	244 patch3e_4
+	245 patch3e_5
+	246 patch3e_6
+	247 patch3e_7
+	248 patch3f_0
+	249 patch3f_1
+	250 patch3f_2
+	251 patch3f_3
+	252 patch3f_4
+	253 patch3f_5
+	254 patch3f_6
+	255 patch3f_7
+
+)
+(
+  0x8000 core_chipid
+  0x8003 core_kick
+  0x8005 core_lpm_wr
+  0x8006 core_misc_ctrl
+  0x8007 core_otp_rdata
+  0x8009 core_pcmoutfifo
+  0x8010 core_reset
+  0x8011 core_encrypt
+  0x8015 core_uart_txd
+  0x8022 core_ucode_hi
+  0x8023 core_ucode_ctrl
+  0x8024 core_ucode_low
+  0x8025 core_ucode_data
+  0x8040 core_halfslot
+  0x8042 core_clksel
+  0x8043 core_uart_clksel
+  0x8043 core_config 
+  0x8044 core_xtal_stable_time
+  0x8045 core_otp_addr
+  0x8046 core_otp_din
+  0x8047 core_otp_ctrl
+  0x8048 core_otpd_addr
+  0x804a core_otpd_len
+  0x804b core_otpd_ctrl
+  0x804c core_lpm_reg
+  0x804f core_lpm_isogate
+  0x8050 core_clkoff
+  0x8052 core_uart_baud
+  0x8054 core_uart_rsaddr
+  0x8056 core_uart_readdr
+  0x8058 core_uart_rrptr
+  0x805a core_uart_tsaddr
+  0x805c core_uart_teaddr
+  0x805e core_uart_twptr
+  0x8060 core_uart_trptrp
+  0x8062 core_uart_ctrl
+  0x8063 core_kscn_ksctrl
+  0x8064 core_kscn_rctc
+  0x8065 core_kscn_scancycle_timer_l
+  0x8066 core_kscn_scancycle_timer_h
+  0x8067 core_kscn_m_debounce          
+  0x8068 core_kscn_modkey
+  0x806f core_kscn_rowmask
+  0x8070 core_gpio_oe0
+  0x8071 core_gpio_oe1
+  0x8072 core_gpio_oe2
+  0x8073 core_gpio_oe3
+  0x8074 core_gpio_out0
+  0x8075 core_gpio_out1
+  0x8076 core_gpio_out2
+  0x8077 core_gpio_out3
+  0x8078 core_gpio_pu0
+  0x8079 core_gpio_pu1
+  0x807a core_gpio_pu2
+  0x807b core_gpio_pu3
+  0x807c core_gpio_pd0
+  0x807d core_gpio_pd1
+  0x807e core_gpio_pd2
+  0x807f core_gpio_pd3
+  0x8080 core_gpio_sel
+  0x8081 core_gpio_sel1
+  0x8082 core_gpio_sel2
+  0x8083 core_gpio_key0
+  0x8084 core_gpio_key1
+  0x8085 core_gpio_key2
+  0x8086 core_spid_ctrl
+  0x8087 core_spid_delay
+  0x8088 core_spid_txlen
+  0x808a core_spid_txaddr
+  0x808c core_spid_rxaddr
+  0x808e core_spid_rxlen
+  0x8090 core_iicd_ctrl
+  0x8091 core_iicd_scl_low
+  0x8092 core_iicd_scl_high
+  0x8093 core_iicd_start_setup
+  0x8094 core_iicd_start_hold
+  0x8095 core_iicd_stop_setup
+  0x8096 core_iicd_data_setup
+  0x8097 core_iicd_data_hold
+  0x8098 core_iicd_txlen
+  0x809a core_iicd_txaddr
+  0x809c core_iicd_rxaddr
+  0x809e core_iicd_rxlen
+  0x80a0 core_pwm_pcnt0
+  0x80a2 core_pwm_ncnt0
+  0x80a4 core_pwm_pcnt1
+  0x80a6 core_pwm_ncnt1
+  0x80b0 core_enc_ctrl
+  0x80b1 core_cvsd_ctrl
+  0x80b2 core_codec_ctrl
+  0x80b3 core_dec_ctrl
+  0x80b4 core_bist_ctrl
+
+
+
+  
+  0x8108 core_misc_status
+  0x8109 core_qdec_cntx
+  0x810a core_qdec_cnty
+  0x810b core_qdec_cntz
+  0x810c core_uart_status
+  0x810d core_uart_rbaud
+  0x810e core_uart_txitems
+  0x8110 core_uart_trptr
+  0x8112 core_uart_rxitems
+  0x8114 core_uart_rdptr
+  0x8116 core_uart_rwptr
+  0x8119 core_kscn_kstat
+  0x811a core_kscn_event
+  0x811b core_kscn_event_num
+  0x811c core_gpio_in
+  0x811d core_gpio_in1
+  0x8124 core_current_otp_addr
+  0x8126 core_otpd_remain
+  0x8128 core_spid_remain
+  0x812a core_iicd_remain
+  0x812c core_dma_status
+  0x812d core_perf_status
+  0x812e core_adc_in
+  0x8134 core_pcminfifo
+  0x8135 core_pcminfifo_remain
+  0x8136 core_pcmoutfifo_remain
+  0x8138 core_lpm_ctrl
+  0x813c core_lpm_xtalcnt
+  0x813d core_lpm_buckcnt
+  0x813e core_lpm_ldocnt
+  0x813f core_lpm_latch
+  0x8140 core_gpio_wakeup_low
+  0x8144 core_gpio_wakeup_high
+  0x8149 core_clk_counter
+  0x8150 core_adc_sum
+// dummy regs  
+
+  0x8203 core_ice_ctrl
+  0x8204 core_ice_status
+  0x8205 core_ice_break0
+  0x8207 core_ice_break1
+  
+  0x8280 core_docd_ctrl
+  0x8288 core_docd_paddr
+  0x828a core_docd_pdata
+
+  0x8300 iic_prer_low		
+  0x8301 iic_slave_addr	
+  0x8302 iic_ctr					
+  0x8303 iic_cr					
+  0x8304 iic_rxr					
+  0x8305 iic_txr					
+  0x8306 iic_sr					
+  0x8307 iic_fifo				
+
+  0x8400   mem_b_box          /* entire bank */
+  0x8500   mem_e_box          /* entire bank */
+  0x8600   mem_l_box          /* entire bank */
+
+  0x8700 memk
+
+  0x8900 rfen_rx
+  0x8901 rfen_tx
+  0x8902 rfen_mdm
+  0x8903 rfen_sn
+  0x8904 rfen_msc
+  0x8905 rfen_ck
+  0x8906 rfen_adc
+  0x8912 rf_agc_ctrl
+  0x8914 rfen_ulp
+  0x8973 rfen_chgpump
+  0x894b rf_rx_vctrl_reg1
+  0x894c rf_rx_vctrl_reg2
+  0x894d rf_rx_ib_lna
+  0x894e rf_rx_lna_ctrim
+
+  0x8950 rf_bpf_ctrim
+  0x8951 rf_bpf_ib
+  0x8952 rf_adc_rccal
+  0x8952 rf_rccal_ctrl
+  0x8953 rf_rccal_sel
+  0x8955 rf_tx_pa
+  0x895f rf_pll_rstn
+  0x8964 rf_sdm_en
+  0x8960 rf_pll_intg
+  0x8961 rf_pll_frac
+  0x8963 rf_pll_frachi
+  0x896c rf_afc_cap
+  0x8967 rf_clkpll_bias
+  0x896f rf_clkpll_en
+  0x8968 rf_clkpll_int
+  0x8969 rf_clkpll_frac
+  0x896d rf_balun_ctrim
+  0x8971 rf_adc_mode
+  0x8972 rf_adc_gc
+  0x8973 rf_adc_ch
+  0x8980 rf_rccal_result
+  0x8981 rf_afc_d2a
+  0x8982 rf_rssi
+
+
+0x8c00 core_usb_config		
+0x8c01 core_usb_int_mask	
+0x8c10 core_usb_trig	
+0x8c11 core_usb_stall		
+0x8c12 core_usb_clear		
+0x8c18 core_usb_ep
+0x8c18 core_usb_dfifo0 
+0x8c19 core_usb_dfifo1  
+0x8c1a core_usb_dfifo2 
+0x8c20 core_usb_ep_len
+0x8c26 core_usb_status		
+0x8c27 core_usb_fifo_empty
+0x8c28 core_usb_fifo_full
+
+
+4 rx_freq_offset
+2 tx_freq_offset
+
+/* bit difinitions */
+  4 whiteoff_bit
+  6 clksel_rc
+  5 clksel_dpll
+  4 clksel_xtal
+  5 adc_rccal
+  0 bpf_rccal
+  1 demod_clkoff
+
+(
+  7 cold_wake
+  3 gpio_latch
+  4 enable_retmem
+  0xef isogate_mask
+  0xe0 cs_mask
+)
+
+// misc ctrl
+(
+  0x01 otpd_start
+  0x02 spid_start
+  0x04 iicd_start
+  0x08 lock_otp
+  0x10 x_sethi
+  0x20 y_sethi
+  0x40 z_sethi
+  0x80 ccnt_start
+)
+// dma status bit
+(
+  0 otpd_crcok
+  1 otpd_done
+  2 spid_crcok
+  3 spid_done
+  4 iicd_crcok
+  5 iicd_done
+)
+
+0x8b uart_ctrl_default //BCSP
+0x81 uart_ctrl_h4 //H4
+0x81 uart_ctrl_normal
+0x91 uart_ctrl_5line
+0x81 uart_ctrl_57600
+2 uart_baud_len
+0x00 uartclk_crystal
+0x01 uartclk_dpll
+0x1a0 uart_baud_115200
+0xbb uart_baud_256000
+0x340 uart_baud_57600
+0x34 uart_baud_921600
+0x9c4 uart_baud_9600
+0x2dc6c00 uart_clk
+0x16E3600 uart_clk_24
+
+//core_clkoff
+(
+	0 CLOCK_OFF_AUTH_ROM
+	1 CLOCK_OFF_UC_ROM
+	2 CLOCK_OFF_DEBUG_UART
+	3 CLOCK_OFF_SCHED_RAM
+	4 CLOCK_OFF_TRANCE_FIFO
+	5 CLOCK_OFF_CORDIC
+	6 CLOCK_OFF_OTPD
+	7 CLOCK_OFF_I2C
+	8 CLICK_OFF_8051
+	9 CLOCK_OFF_KEYSCAN
+	0x0a CLOCK_OFF_USB
+	0x0b CLOCK_OFF_QDECODER
+	0x0c CLOCK_OFF_SPI
+	0x0d CLOCK_OFF_PWM
+	0x0e CLOCK_OFF_CODEC
+	0x0f CLOCK_OFF_UART
+)
+
+
+/*****************************************************************************/
+/* RCS HEADER -- DO NOT ERASE                                                */
+/* $Author: Administrator $                                                           */
+/* $Id: bt_rfcomm_format.upper,v 1.1 2009-09-28 04:06:17 Administrator Exp $ */
+/* Orisil Technology                                                      */
+/*****************************************************************************/
+
+/**********/
+/* memory */
+/**********/
+
+memalloc(
+1 memRemoteRPNBitRate
+1 memRemotePRNDataBits
+1 memRemotePRNStopBit
+1 memRemotePRNParity
+1 memRemotePRNFlowControl
+1 memRemotePRNXon
+1 memRemotePRNXoff
+
+
+3 mem_mod2div_temp
+2 mem_contw_temp
+2 mem_attrib_list
+
+//rfcomm head
+1 mem_current_adss
+1 mem_current_channel
+1 mem_current_frame_type
+1 mem_current_fcs
+2 mem_current_length
+2 mem_rfcomm_uih_payload_ptr
+
+//rfcomm uih
+1 mem_uih_cmd_type
+2 mem_uih_length
+2 mem_param_payload_ptr
+
+
+//rfcomm modem status
+1 mem_ms_param
+
+//rfcomm pn
+1 mem_pn_credit_flow_type_info
+1 mem_pn_priority
+1 mem_pn_acknowledg_timer
+1 mem_pn_max_retrans
+
+1 mem_rfcomm_send_adss
+1 mem_rfcomm_send_frame_type
+1 mem_rfcomm_send_fcs
+1 mem_rfcomm_send_offset
+
+)
+
+xmemalloc(
+1 mem_pn_dlci
+2 mem_pn_max_frame_size
+
+1 memFCStemp1
+1 memFCStemp2
+1 memFCStemp3
+
+1 mem_rfcomm_initiator
+
+1 mem_remote_spp_channel
+
+1 mem_HIUfcs_SPP
+1 mem_HIUfcs_SPP_WCredits
+
+1 mem_rfcomm_send_more_pkt
+
+1 mem_remote_credits
+1 mem_credit_given
+
+//rfcomm modem status
+1 mem_ms_channel
+
+1 mem_credit_flag
+
+2 mem_rfcomm_max_frame_size
+1 mem_rfcomm_credit_init_data
+
+2 mem_cb_receive_spp_data
+
+2 mem_nl_rx_data_src
+2 mem_nl_rx_len_all
+)
+
+
+(
+0 CREDIT_DISABLE
+1 CREDIT_ENABLE
+)
+
+
+/************************************************************************/
+  
+
+ 
+/************/
+/* constant */
+/************/
+
+/* RFCOMM state for Headset (memRFCOMM_State) */ 
+  (
+    0 RFCOMM_IDLE           /* before the responsor HS receive SABM            */
+    1 RFCOMM_W4_DLCI0_OPEN
+    2 RFCOMM_W4_DLCI0_CLOSE
+    3 RFCOMM_START_DLCI0    /* After respond SABM frame (DLCI=0)               */
+    4 RFCOMM_W4_DLCI_OPEN
+    5 RFCOMM_W4_DLCI_CLOSE
+    6 RFCOMM_DLCI_OPENED    
+   
+  )
+  
+/* RFCOMM timer constants   */
+  (
+    1000  RFCOMM_T1         /* Used by SABM and DISC frames,100*20ms = 20s     */     
+    1000  RFCOMM_T2         /* Used by commands send in UIH on DLCI0,          */
+    300   RFCOMM_T3_RINGON  /* 6s for ring fade time                           */
+  
+  )
+
+/* Command Type */
+  (
+    0x3F RSP_RX_SABM        /*responsor expect SABM from initiator             */
+    0x3F INI_TX_SABM
+	
+    0x73 RSP_TX_UA          /*responsor send out UA command                    */
+    0x73 UA_WFBIT_SET	    /* UA control field with F bit set                 */
+	
+    0xEF RSP_RX_UIH         /*responsor expect UIH from initiator              */
+
+    0xEF RSP_TX_UIH         /*responsor send UIH to initiator                  */
+     
+    0x1F RSP_TX_DM          /*responsor send DM to initiator                   */
+    0x1F DM_WFBIT_SET       /* DM control field with F bit set                 */
+    0x0F DM_WFBIT_CLEAR     /* DM control field with F bit clear               */
+
+    0x53 RSP_RX_DISC        /*responsor expect DISC from initiator             */
+    0x53 INI_TX_DISC	    /*initiator send DISC control type command         */
+     
+    0xFF RSP_RX_UIH_WDATA   /*UIH data with credit flow control info           */
+    
+    
+  )
+
+/* Multiplexor commands and responses frames */
+  (
+    0x83 PN_COMMAND           /* Bit 0 EA C/R Type = 000001         */
+    0x81 PN_RESPONSOR         /* Bit 0 EA C/R Type = 000001         */
+    
+    0xE3 MSC_COMMAND          /* Bit 0 EA C/R Type = 000111         */
+    0xE1 MSC_RESPONSOR
+ 
+    0x13 NSC_COMMAND          /* Bit 0 EA C/R Type = 001000         */
+    0x11 NSC_RESPONSOR        /* Bit 0 EA C/R Type = 001000         */
+
+    0x23 TEST_COMMAND         /* Bit 0 EA C/R Type = 000111         */
+    0x21 TEST_RESPONSOR 
+    
+    0x93 RPN_COMMAND          /* Bit 0 EA C/R Type = 001001         */
+    0x91 RPN_RESPONSOR 
+    
+    0x53 RLS_COMMAND          /* Bit 0 EA C/R Type = 001010         */
+    0x51 RLS_RESPONSOR 
+
+    0xA3 FCON_COMMAND         /* Bit 0 EA C/R Type = 000101         */
+    0xA1 FCON_RESPONSOR 
+    
+    0x63 FCOFF_COMMAND        /* Bit 0 EA C/R Type = 000110         */
+    0x61 FCOFF_RESPONSOR 
+    	
+    0x03 RLS_OVERRUN
+    0x05 RLS_PARITY_ERROR
+    0x09 RLS_FRAMING_ERROR
+  )
+
+/* memLocalCredit */
+  (
+    0x01 RFCOMM_CREDIT
+  )
+
+  (
+  	0x007f RFCOMM_MAX_FRAME_SIZE
+  )
+
+/* UIH received Data length */
+  (
+    0  LENGTH_ZERO
+    
+    6  LENGTH_OK
+    7  LENGTH_HOT
+    8  LENGTH_RING
+    9  LENGTH_ERROR
+    9  LENGTH_AGVOL_ONEBYTE
+    10 LENGTH_AGVOL_TWOBYTE
+    10 LENGTH_VOL_ONEBYTE
+    11 LENGTH_VOL_TWOBYTE
+    12 LENGTH_BRSF
+    13 LENGTH_PLUS_CIEV
+    15 LENGTH_INBANDRING
+    14 LENGTH_CIEV_CALL
+    17 LENGTH_CRING
+    20 LENGTH_BRSF_OK
+    24 LENGTH_CIND0
+    28 LENGTH_CIEV_TWO
+    32 LENGTH_CIND_OK
+    59 LENGTH_CIND_OK2
+    100 LENGTH_DISCARD
+  )
+  
+/************/
+/* flags    */
+/************/
+  
+/* memRFCOMM_L2CAP_Interface */
+  (
+    0 RFCOMM_TX_W4BUF_FLAG    /* Wait for Tx buffer empty flag */
+    1 RFCOMM_CLOSE_LINK_FLAG
+  )
+  
+
+    
+/* memRemoteMSC		*/
+  (
+    0 MSC_EA_BIT
+    1 MSC_FC_BIT
+    2 MSC_RTC_BIT
+    3 MSC_RTR_BIT
+    6 MSC_IC_BIT
+    7 MSC_DV_BIT
+  )
+
+/* memRemoteRLS         */
+  (
+    0x0C OVERRUN_ERROR
+    0x0A PARITY_ERROR
+    0x09 FRAMING_RERROR
+  )
+  
+/* memRemoteRPNBitRate  */
+  (
+    0x00 BITS2400
+    0x01 BITS4800
+    0x02 BITS7200
+    0x03 BITS9600
+    0x04 BITS19200
+    0x05 BITS38400
+    0x06 BITS57600
+    0x07 BITS115200
+    0x08 BITS230400
+  )
+  
+/* memRemotePRNDataBits	*/
+  (
+    0x00 DATABITS5
+    0x01 DATABITS6
+    0x02 DATABITS7
+    0x03 DATABITS8
+  )
+  
+/* memRemotePRNStopBit	*/
+  (
+    0    ONESTOP
+    1    ONEHALFSTOP
+  )
+  
+/* memRemotePRNParity   */
+  (
+    0    ODDPARITY
+    1    EVENPARITY
+    2    MARKPARITY
+    3    SPACEPARITY
+    
+    7    PARITY_ENABLE_BIT
+  )
+
+/* RPN bit mask(in)     */
+  (
+     0   BIT_RATE_MASK_BIT
+     1   DATA_BITS_MASK_BIT
+     2   STOP_BITS_MASK_BIT
+     3   PARITY_MASK_BIT
+     4   PARITY_TYPE_MASK_BIT
+     5   XON_CHAR_MASK_BIT
+     6   XOFF_CHAR_MASK_BIT
+  )
+  
+/* RPN bit mask(in) 2    */
+  (
+     0   XON_XOFF_INPUT_MASK_BIT
+     1   XON_XOFF_OUTPUT_MASK_BIT
+     2	 RTR_INPUT_MASK_BIT
+     3   RTR_OUTPUT_MASK_BIT
+     4   RTC_INPUT_MASK_BIT
+     5   RTC_OUTPUT_MASK_BIT
+
+  )
+
+/* memRFCOMM_Request	*/
+  (
+    0 SEND_MSC_CMD_REQ_FLAG
+    1 SEND_AT_CKPD_REQ_FLAG
+    2 SEND_RING_REQ_FLAG
+    3 SEND_SABM_CMD
+  )
+  
+/* memRFCOMM_Misc_Flag  */
+  (
+    0 MSC_CDM_ALREADY_SEND_FLAG
+    1 CREDIT_FLOW_USED_FLAG
+    2 DONT_EMBEDDED_CREDIT_FLAG 
+    3 MSC_EXCHANGE_DONE_FLAG
+    4 FLOW_CONTROL_FCOFF_BIT            /* set when receive FCoff, clear when FCon   */
+  )
+  
+/* memRemoteMSC		*/
+  (
+    1 FLOW_CONTROL_FC_BIT		/* received MSC FC bits                      */
+  
+  )
+/* Address filed        */
+  (
+    0 ADDR_EA_BIT
+    1 ADDR_CR_BIT
+    2 ADDR_D_BIT
+  )
+//should be same as descripted in SDP
+(
+    1 SPP_SLAVE_CHANNEL
+    7 OBEX_SERVER_CHANNEL
+    8 HF_SERVER_CHANNEL 
+    9 HS_SERVER_CHANNEL
+)
+/* memRFCOMM_Flag */
+(
+	0 USING_HF_PROFILE
+	1 USING_HS_PROFILE
+	2 USING_SPP_PROFILE
+)
+/*RFCOMM Frame Type*/
+(
+	0x3f RFCOMM_FRAME_TYPE_SABM
+	0x73 RFCOMM_FRAME_TYPE_UA
+	0xEF RFCOMM_FRAME_TYPE_UIH
+	0xFF RFCOMM_FRAME_TYPE_UIH_CREDITS
+	0x53 RFCOMM_FRAME_TYPE_DISCONN
+)
+/*RFCOMM UIH CMD TYPE*/
+(
+	0x41 UIH_PARAM_NEG_CMD
+	0x40 UIH_PARAM_NEG_RES
+	0x49 UIH_PARAM_CMD_REMOVE_PORT
+	0x71 UIH_MODEM_STATUS_CMD
+	0x70 UIH_MODEM_STATUS_RES
+)
+
+/*bits in rfcomm address*/
+(
+	0 RFCOMM_ADDRESS_EXT_LEN
+	1 RFCOMM_ADDRESS_CR
+	2 RFCOMM_ADDRESS_DERECTION
+
+
+)
+
+	(                                   
+	0 RFCOMM_CHANNEL_STATE_PN_CMD
+	1 RFCOMM_CHANNEL_STATE_PN_RES
+	2 RFCOMM_CHANNEL_STATE_SABM
+	3 RFCOMM_CHANNEL_STATE_UA
+	4 RFCOMM_CHANNEL_STATE_SND_MS_CMD
+	5 RFCOMM_CHANNEL_STATE_RCV_MS_CMD
+	6 RFCOMM_CHANNEL_STATE_SND_MS_RES
+	7 RFCOMM_CHANNEL_STATE_RCV_MS_RES
+	0xff RFCOMM_CHANNEL_SETUP_COMPLETE
+	) 
+
+	/*mem_rfcomm_send_more_pkt*/
+	(
+	1 MORE_PKT_MSC_CMD_HF
+	2 MORE_PKT_MSC_CMD_HS
+	3 MORE_PKT_MSC_CMD_SPP
+	4 MORE_PKT_MSC_CMD_OBEX
+	)
+
+	(
+	127 RFCOMM_MALLOC_SIZE
+	)
+memalloc(
+0 mem_sdp_mem_start
+4 mem_uuid_search_pat
+2 mem_sdp_continue_byte
+1 mem_sdp_pduid
+2 mem_sdp_transactionid
+2 mem_sdp_attribute_maxbyte
+2 mem_sdp_record_maxcnt
+8 mem_sdp_error_code
+4 mem_sdp_record_handle
+1 mem_sdp_search_failed
+1 mem_sdp_LACAP_found
+1 mem_sdp_RFCOMM_found
+24 mem_handle_list
+1 mem_handle_humber
+0 mem_sdp_mem_end
+)
+xmemalloc(
+2 mem_ui_uuid_table
+22 mem_all_uuid_16bits
+18 mem_all_uuid_128bits
+2 mem_ui_le_uuid_table
+)
+(
+0 AGORHS_SERVICE
+1 GENAUDIO_SERVICE
+2 HANDSFREE_SERVICE
+)
+(
+0 ATTRIBUTEID_0000
+1 ATTRIBUTEID_0001
+2 ATTRIBUTEID_0004
+3 ATTRIBUTEID_0009
+4 ATTRIBUTEID_0100
+5 ATTRIBUTEID_0302
+6 ATTRIBUTEID_0006
+7 ATTRIBUTEID_0311
+)
+/* mem_sdp_search_profile */
+(
+1	SDP_SS_HEADSET
+2  	SDP_SS_HANDSFREE
+)
+(
+0x06 sdp_pduid_serviceSearchAttrib
+)
+0x2600 sdp_max_amount
+767 SDP_MALLOC_SIZE
+0x6e sdp_tid_spp //any number
+
+ 
+
+memalloc(
+/* moved from bt.format for 3dh5 1021bytes packet buffer */
+17 mem_rxbuf
+
+16 mem_random_number
+16 mem_round_key
+16 mem_kinit
+
+16 mem_input_store
+16 mem_x
+15 mem_y
+1 mem_y15
+17 mem_key_store
+1 mem_key_store_end
+2 memp_ar_key
+2 memp_ar_input
+10 mem_ar_hround
+
+
+1 mem_ec_infinite
+2 mem_ec_loopc
+1 mem_aes_cmac_data_length
+
+0 memdat
+/* ecc calculation */
+
+24 mem_ax
+24  mem_ay
+24  mem_az
+24 mem_bx
+0 mem_ax_256 //32 bytes
+24 mem_by
+8 mem_bz
+16 mem_ay_256 // 32 bytes
+16 mem_cx
+8 mem_az_256 // 32 bytes
+23 mem_cy
+1 mem_cy5
+0 mem_bx_256 // 32 bytes
+24 mem_cz
+8  mem_k
+16 mem_by_256 // 31 bytes
+16 mem_align
+
+0 mem_bz_256  //32 bytes
+0 mem_tmp1
+24 memahbak
+8 mem_tmp5
+0 mem_cx_256  //32 bytes
+16 memahsave
+16  mem_tmp2
+0 mem_cy_256  // 32 bytes
+0  memahsave_end 
+1  mem_addr_padding 
+7   mem_addr_value         /* 12 bytes     */ 
+0 mem_tmp3
+5 mem_t1
+3  mem_addr_value_end   
+15 mem_addr_iocap_end
+1 mem_cy5_256 // 1 byte
+0 mem_cz_256 // 32 bytes
+0 mem_tmp0
+8 mem_t0
+16 mem_tmp0a
+8  mem_t2
+16 mem_k_256 //32 bytes
+16 mem_t3
+8  mem_tmp1_256 //32 bytes
+24 mem_t7
+
+
+32 mem_tmp5_256
+32  mem_tmp2_256
+0 mem_tmp3_256
+32 mem_t1_256
+0 mem_tmp0_256
+32 mem_t0_256
+32 mem_t2_256
+32 mem_t3_256
+32 mem_t7_256
+
+24 mem_p		
+24 mem_a
+24 mem_b
+24 mem_gx
+24 mem_gy
+32 memh0
+
+//p256
+//2 mem_ec_loopc_256
+//32 mem_ax_256
+//32 mem_ay_256
+//32 mem_az_256
+//32 mem_bx_256
+//32 mem_by_256
+//32 mem_bz_256
+//32 mem_cx_256
+//31 mem_cy_256
+//1 mem_cy5_256
+//32 mem_cz_256
+//32 mem_k_256
+
+
+//32 mem_tmp1_256
+//32 mem_tmp5_256
+//32  mem_tmp2_256
+
+//0 mem_tmp3_256
+//32 mem_t1_256
+//0 mem_tmp0_256
+//32 mem_t0_256
+//32 mem_t2_256
+//32 mem_t3_256
+//32 mem_t7_256
+
+32 mem_p_256		
+32 mem_a_256
+32 mem_gx_256
+32 mem_gy_256
+//4 mem_le_keyid
+16 mem_le_slat
+
+
+//64 mem_regext
+//1 mem_regext_index
+
+//16 mem_le_mackey
+
+
+//1 mem_AES_CMAC_flag
+//16 mem_AES_CMAC_temp
+//16 mem_AES_CMAC_M_last
+
+//4 mem_le_gkey
+
+//16 mem_le_r
+
+)
+
+
+
+
+omemalloc(
+4 mem_shutter_send_data
+1 mem_shutter_key_temp
+1 mem_shutter_send_length
+4 mem_shutter_clkn_bt_last
+1 mem_shutter_key
+1 mem_shutter_flag
+1 mem_shutter_cable_unplug_conut
+1 mem_shutter_hid_disconn_count
+1 mem_shutter_1key_send_sm
+
+1 mem_shutter_iphonekey_gpio
+1 mem_shutter_androidkey_gpio
+1 mem_shutter_key_number
+
+
+//1 mem_last_txlch
+//2 mem_last_txlen
+//20 mem_last_txdata
+1 mem_read_eeprom_temp
+3 mem_read_eeprom_mac_addr
+
+1 mem_scale_tx_length
+1 mem_scale_txbuff_inuse
+2 mem_adv_lap_ptr
+1 mem_le_sleep_flag
+2 mem_rx_window_sniff_inc
+1 mem_pair_state
+1 mem_exchange_mtu_req
+2 mem_le_sleep_timeout
+2 mem_le_sleep_timeout_timer_count
+2 mem_le_fast_adv_timeout
+2 mem_le_fast_adv_timeout_timer_count
+2 mem_led_fast_dark_time
+2 mem_led_fast_light_time
+/////////////////////////////////////////////////////////////////
+//the pin of power on button
+1 mem_power_on_pin 
+//uint(100ms)
+//1 mem_key_press_to_power_on_time
+//uint(100ms)
+//1 mem_key_press_to_power_off_time
+//= 1 hardswitch, =0 softswitch
+1 mem_hard_soft_switch_case
+//=1 power on, =0 power off
+//1 mem_is_poweron_flag 
+1 mem_shutter_powerup_flag
+1 mem_shutter_button_timeout
+1 mem_shutter_button_timer
+1 mem_power_timeout
+1 mem_power_timer
+1 mem_enable_key_scan
+2 mem_packet_interval_set
+
+// byte array for led pin,uint8_t mem_led_map[4]
+1 mem_shutter_led_num
+4 mem_led_map
+
+/*
+*	typedef struct
+*	{
+*		LED_STYLE led_type,
+*		uint8_t led_pin,//bit[4-0]:gpio num, bit 7 =0 low active
+*		uint16_t on_time,//led light time
+*		uint16_t off_time,//led dark time
+*		uint8_t blink_count,//the number of times of led flashing,if blink _count == 0xff, always flashing
+*	}Led_Style;
+*/
+0 mem_fast_adv_led_style
+1 mem_fa_led_type
+1 mem_fa_led_pin
+2 mem_fa_led_on_time
+2 mem_fa_led_off_time
+1 mem_fa_blink_count
+
+0 mem_slow_adv_led_style
+1 mem_sa_led_type
+1 mem_sa_led_pin
+2 mem_sa_led_on_time
+2 mem_sa_led_off_time
+1 mem_sa_blink_count
+
+//Led_style power_on_led_style
+0 mem_power_on_led_style
+1 mem_po_led_type
+1 mem_po_led_pin
+2 mem_po_led_on_time
+2 mem_po_led_off_time
+1 mem_po_blink_count
+
+//Led_style Powe_off_led_style
+0 mem_powe_off_led_style
+1 mem_pf_led_type
+1 mem_pf_led_pin
+2 mem_pf_led_on_time
+2 mem_pf_led_off_time
+1 mem_pf_blink_count
+
+//Led_style connected_led_style
+0 mem_connected_led_style
+1 mem_co_led_type
+1 mem_co_led_pin
+2 mem_co_led_on_time
+2 mem_co_led_off_time
+1 mem_co_blink_count
+
+0 mem_key_led_style
+0 mem_key_led_style_ind_0
+7 mem_key_led_style_ind_0_data
+0 mem_key_led_style_ind_1
+7 mem_key_led_style_ind_1_data
+0 mem_key_led_style_ind_2
+7 mem_key_led_style_ind_2_data
+0 mem_key_led_style_ind_3
+0 mem_key_led_style_ind_key_release
+7 mem_key_led_style_ind_3_data
+
+0 mem_temp_led_style
+1 mem_temp_led_type
+1 mem_temp_led_pin
+2 mem_temp_led_on_time
+2 mem_temp_led_off_time
+1 mem_temp_blink_count
+
+/**
+* typedef struct
+* {
+*	uint8_t key_pin,//bit[4-0]:gpio num, bit 7 =0 low active
+*	uint8_t led_style_ind,//key_led[0,1,2]
+*	uint8_t *press_ptr,
+*	uint8_t *rel_ptr;
+* }Key_Conf;
+**/
+1 mem_shutter_key_num
+//key_conf[max_shutter_key_num] 
+0 mem_key_conf0
+1 mem_key_conf0_pin
+1 mem_key_conf0_led
+//2 mem_key_conf0_press_ptr
+//2 mem_key_conf0_rel_ptr
+0 mem_key_conf1
+1 mem_key_conf1_pin
+1 mem_key_conf1_led
+//2 mem_key_conf1_press_ptr
+//2 mem_key_conf1_rel_ptr
+0 mem_key_conf2
+1 mem_key_conf2_pin
+1 mem_key_conf2_led
+//2 mem_key_conf2_press_ptr
+//2 mem_key_conf2_rel_ptr
+0 mem_key_conf3
+1 mem_key_conf3_pin
+1 mem_key_conf3_led
+//2 mem_key_conf3_press_ptr
+//2 mem_key_conf3_rel_ptr
+0 mem_key_conf4
+1 mem_key_conf4_pin
+1 mem_key_conf4_led
+//2 mem_key_conf4_press_ptr
+//2 mem_key_conf4_rel_ptr
+0 mem_key_conf5
+1 mem_key_conf5_pin
+1 mem_key_conf5_led
+//2 mem_key_conf5_press_ptr
+//2 mem_key_conf5_rel_ptr
+
+//0 mem_key_conf_temp
+//1 mem_key_conf_pin
+//1 mem_key_conf_led
+//2 mem_key_conf_press_ptr
+//2 mem_key_conf_rel_ptr
+2 mem_key_value_temp
+2 mem_key_value
+1 mem_key_packet_count
+2 mem_key_next_addr
+1 mem_key_value_temp1
+1 mem_key_value_temp2
+1 mem_key_value_temp3
+1 mem_key_value_temp4
+1 mem_key_value_temp5
+1 mem_key_value_temp6
+
+20 mem_key0_press
+20 mem_key0_release	
+14 mem_key1_press
+14 mem_key1_release
+14 mem_key2_press
+14 mem_key2_release
+14 mem_key3_press
+14 mem_key3_release
+14 mem_key4_press
+14 mem_key4_release
+14 mem_key5_press
+14 mem_key5_release
+
+1 mem_queue_ele_num
+2 mem_queue_read
+2 mem_queue_write
+0 mem_queue_start
+10 mem_data_ele0
+10 mem_data_ele1
+10 mem_data_ele2
+10 mem_data_ele3
+10 mem_data_ele4
+10 mem_data_ele5
+0 mem_queue_end
+2 mem_queue_temp
+
+
+
+1 mem_shutter_key_data_flag
+1 mem_shutter_key_data_flag_1
+
+// find type value 
+2 mem_le_find_type_value_start_handle
+2 mem_le_find_type_value_end_handle
+1 mem_shutter_find_type_value_flag
+1 mem_le_uuid
+
+1 mem_send_updata_le_param_timer
+3 mem_le_smp_key_dist
+1 mem_ltk_states
+1 mem_shutter_conn_update_timer
+
+1 mem_empty_count
+1 mem_shutter_notification_len
+2 mem_shutter_notification_addr
+500 mem_shutter_le_att_list
+)
+
+omemalloc(
+//ble mouse
+1 mem_current_event
+1 mem_ipc_lock_rx_data_bt
+1 mem_ipc_lock_rx_data_c51
+1 mem_ipc_lock_tx_data_bt
+1 mem_ipc_lock_tx_data_c51
+150 mem_ipc_2bt_fifo_head
+0	mem_ipc_2bt_fifo_end
+2	mem_ipc_2bt_read_index
+2	mem_ipc_2bt_write_index
+100 mem_ipc_2C51_fifo_head
+0	mem_ipc_2C51_fifo_end
+2	mem_ipc_2C51_read_index
+2	mem_ipc_2C51_write_index
+100	mem_c51_private_area
+2 mem_ipc_tx_evt_buff
+1 mem_ipc_tx_evt
+1 mem_ipc_rx_type
+2 mem_ipc_bt_timer
+2 mem_ipc_c51_timer
+1 mem_ipc_bt_100ms_timer
+1 mem_ipc_c51_100ms_timer
+4 mem_ipc_last_check_timer
+
+34 mem_new_24g_rxbuf
+32 mem_new_24g_txbuf
+34 mem_new_24g_txpayload
+32 mem_new_24g_rxpayload
+1 mem_new_24g_rxdata_length
+1 mem_new_24g_pid
+1 mem_new_24g_datalen
+1 mem_new_24g_data_type
+1 mem_new_24g_txlen
+2 mem_new_24g_rx_window
+1 mem_new_24g_ensure
+2 mem_new_24g_txfail_cnt
+1 mem_new_24g_get_ack_fail
+1 mem_new_24g_retry
+1 mem_new_24g_ch
+1 mem_new_24g_current_ch_number
+4 mem_new_24g_paring_addr
+1 mem_new_24g_pairing_sm
+4 mem_new_24g_ch_map1
+4 mem_new_24g_ch_map2
+4 mem_new_24g_ch_map3
+4 mem_new_24g_ch_map4
+4 mem_new_24g_tx_btclk
+1 mem_new_24g_interval
+1 mem_new_24g_interval_min
+1 mem_new_24g_interval_max
+4 mem_new_24g_addr
+1 mem_new_24g_abort_pac
+1 mem_new_24g_sync_pac
+2 mem_new_24g_check_dongle_times
+8 mem_new_24g_enter_hibernate
+4 mem_new_24g_device_addr
+1 mem_new_24g_pac_index
+1 mem_new_24g_no_ack
+3 mem_new_24g_sta_crc
+3 mem_new_24g_last_crc
+1 mem_new_24g_sta_pid
+1 mem_new_24g_last_pid
+1 mem_new_24g_max_retry
+1 mem_new_24g_mode
+32 mem_new_uart_packet
+32 mem_new_24g_common_temp
+1 mem_new_24g_rf_last_sta
+1 mem_new_24g_rf_hop_ch
+1 mem_new_24g_sync_cnt
+1 mem_new_24g_hop_pac_retry
+1 mem_new_24g_rf_work_stage
+1 mem_new_24g_hop_fastly_cnt
+1 mem_new_24g_auto_paring_switch
+1 mem_new_24g_key_wheel_event
+1 mem_new_24g_delay_long_sleep_cnt
+1 mem_new_24g_delay_long_sleep_maxcnt
+1 mem_new_24g_enter_lpm_timer
+2 mem_new_24g_syncword
+1 mem_new_24g_syncword_crc8
+1 mem_new_24g_get_syncword_crc8
+1 mem_new_24g_paccnt
+1 mem_new_24g_ota_enable
+
+1 mem_bt_wakeup_from_long_mult
+1 mem_bt_motion_event
+
+1 mem_tx_power_temp
+1 mem_power_ctrl_level
+1 mem_power_ctrl_pac_succ_cnt
+8 mem_rssi_signal_buf
+1 mem_rssi_signal_index
+1 mem_rssi_hex_received
+1 mem_rssi_avg_received
+
+1 mem_last_txlch
+2 mem_last_txlen
+20 mem_last_txdata
+
+600 mem_device_uuid_list
+0 mem_device_uuid_list_end
+480 mem_device_le_att_list
+0 mem_device_le_att_list_end
+
+1 mem_empty_count_user
+32 mem_hid_buff
+2 mem_adc_0v
+2 mem_adc_3v
+1 mem_hibernate_flag
+2 mem_new_supervision_to
+
+4 mem_le_rx_winsows
+2 mem_le_att_report1
+2 mem_le_att_report2
+1 mem_le_slave_update_param_timer
+1 mem_le_slave_update_mult_timer
+1 mem_le_reconn_enable_notify_timer
+1 mem_le_reconn_flag
+12 mem_le_buff_temp
+2 mem_le_rx_window_inc
+1 mem_le_prepare_tx_retransmited_number
+
+4 mem_last_check_clk
+1 mem_hid_send_handshake
+1 mem_feature_ext_page_number
+11 mem_rf_init_data_new
+
+4 mem_short_lpm_interval_param
+1 mem_short_lpm_enable
+1 mem_short_lpm_tx_cnt
+3 mem_ckln_24g_short_lpm
+1 mem_send_data_24g_short_lpm
+1 mem_short_lpm_interval_cnt
+1 mem_ipc_is_ready
+1 mem_short_data_wheel
+1 mem_ble_data_wheel
+1 mem_ble_data_wheel_lpm_timer
+
+1 mem_bt_read_ipc_count
+1 mem_51_read_sensor_count
+
+1 mem_queue_write_prt
+1 mem_queue_read_ptr
+7 mem_queue_buffer0
+7 mem_queue_buffer1
+7 mem_queue_buffer2
+7 mem_queue_buffer3
+1 mem_ble_read_ipc_fifo_once
+1 mem_ble_send_flag
+1 mem_mouse_le_pairing_flag
+1 mem_le_mouse_fast_conn_flag
+1 mem_le_start_adv
+1 mem_le_start_fast_conn_count
+2 mem_mouse_eeprom_base
+2 mem_mouse_reconn_addr
+6 mem_mouse_le_reconn_addr_data
+6 mem_mouse_24g_reconn_addr_data
+1 mem_le_fast_conn_finished
+1 mem_le_init_eeprom_base_count
+0 mem_32asm_data_end
+
+1 mem_mult_time_arrive_flag
+)
+
+(
+6 QUEUE_ELE_COUNT
+10 QUEUE_ELE_LENGTH
+)
+
+(
+0 PAIR_UNKNOWN
+1 PAIR_ING
+2 PAIR_DONE
+)
+
+(
+0x18 ATT_WRITE_REQUEST_HANDLE
+)
+
+(
+0x13	HANDLE_VOLUM_UP_KEY	
+0x17	HANDLE_ENTER_KEY
+)
+	
+(
+0x010210 param_smp_key_dist1
+0x010010 param_smp_key_dist2
+)
+
+(
+0 INITATOR_LTK
+1 INITATOR_IRK
+2 INITATOR_CSRK
+)
+
+(
+//100ms
+0x00a0	FAST_ADV_INTERVAL_VALUE
+//200ms
+0x0140	SLOW_ADV_INTERVAL_VALUE
+)
+
+(
+0x01	GAP_ADTYPE_FLAGS
+0x02	GAP_ADTYPE_16BIT_MORE
+0x03	GAP_ADTYPE_16BIT_COMPLETE
+0x04	GAP_ADTYPE_32BIT_MORE
+0x05	GAP_ADTYPE_32BIT_COMPLETE
+0x06	GAP_ADTYPE_128BIT_MORE
+0x07	GAP_ADTYPE_128BIT_COMPLETE
+0x08	GAP_ADTYPE_LOCAL_NAME_SHORT
+0x09	GAP_ADTYPE_LOCAL_NAME_COMPLETE
+0x0a	GAP_ADTYPE_POWER_LEVEL
+0xff	GAP_ADTYPE_MANUFACTURER_SPECIFIC
+)
+
+(
+0 ATT_BIT_NOTIFICATION
+1 ATT_BIT_INDICATION
+)
+///////////////////////////////////////////////////////////////////////////////////////
+(
+13 MAX_SHUTER_KEY_NUM
+4  MAX_SHUTTER_LED_NUM
+0xFF INVALID_PIN_NUM
+)
+(
+0 KEY_DEFAULT
+1 kEY_1
+2 kEY_2
+3 KEY_3
+4 KEY_4
+)
+(
+0 HARD_SWITCH
+1 SOFT_SWITCH
+)
+(
+0 LED_OFF
+1 LED_ON
+2 LED_BLINK
+0xFF LED_INVALID
+)
+
+/*struct led_style*/
+(
+7 LED_STYLE_STRUCT_LEN
+0 LED_TYPE_OFFSET
+1 LED_PIN_OFFSET
+2 LED_ON_TIME_OFFSET
+4 LED_OFF_TIME_OFFSET
+6 LED_BLINK_COUNT_OFFSET
+)
+
+/*struct key_conf*/
+(
+2 KEY_CONF_STRUCT_LEN
+0 KEY_PIN_OFFSET
+1 KEY_STYLE_IND_OFFSET
+)
+
+(
+0 SHUTTER_POWER_UP
+1 SHUTTER_POWER_ON
+2 SHUTTER_POWER_OFF
+)
+
+(
+0xf00 EEP_LAP_ADDR
+)
+
+(
+0x33 PAIRED_DEVICE_TYPE_BT
+0x44 PAIRED_DEVICE_TYPE_BLE
+5 PAIRED_DEVICE_DEFAULT_LEN
+0x5a5a PAIRED_DEVICE_MAGIC
+)
+
+(
+0 FLAG_SHUTTER_DEFAULT
+1 FLAG_SHUTTER_IPHONEKEY_SEND
+2 FLAG_SHUTTER_ANDROIDKEY_SEND
+)
+
+(
+0 FLAG_SHUTTER_IPHONEKEY_PRESS
+1 FLAG_SHUTTER_ANDROIDKEY_PRESS
+)
+
+(
+1  FLAG_SHUTTER_HID_DISCONN_TIMEOUT
+5 FLAG_SHUTTER_CABLE_UNPLUG_TIMEOUT
+)
+
+(
+1 FLAG_SHUTTER_1KEY
+2 FLAG_SHUTTER_2KEY
+)
+
+(
+0 FLAG_SHUTTER_1KEY_SEND_NULL
+1 FLAG_SHUTTER_1KEY_SEND_STEP1
+2 FLAG_SHUTTER_1KEY_SEND_STEP2
+3 FLAG_SHUTTER_1KEY_SEND_STEP3
+4 FLAG_SHUTTER_1KEY_SEND_STEP4
+)
+
+
+//mem_shutter_find_type_value_flag
+(
+0X00 LE_FIND_TYPE_VALUE_HID_BIT
+0X01 LE_FIND_TYPE_VALUE_BATTERY_BIT
+0X02 LE_FIND_TYPE_VALUE_DEVICE_INFO_BIT
+0x03 LE_FIND_TYPE_VALUE_GATT_BIT
+)
+
+
+/* simple pairing page */
+
+memalloc(
+
+//4 mem_hci_ssp_mode
+0 mem_sp_state_start
+1 mem_sp_state
+1 mem_master_sp_state
+1 mem_sp_flag
+1 mem_master_sp_flag
+1 mem_sp_calc
+1 mem_sp_dh_ready
+1 mem_sp_localsm
+1 mem_pairing_auth
+
+0 mem_sp_flag_start
+1 mem_sp_local_key_send_count
+1 mem_sp_remote_key_recv_count
+1 mem_sp_remote_key_invalid
+1 mem_sp_dhkey_invalid
+
+
+4 mem_gkey
+
+
+8 mem_le_pubkey_remote_x_256
+0 mem_sp_pubkey_remote
+24 mem_sp_pubkey_remote_x
+0 mem_sp_pubkey_remote_x_end
+8 mem_le_pubkey_remote_y_256
+24 mem_sp_pubkey_remote_y
+
+8 mem_le_dhkey_256
+24 mem_sp_dhkey
+0 mem_sp_dhkey_end
+
+16 mem_sp_random_local
+0 mem_sp_random_local_end
+16 mem_sp_random_remote
+0 mem_sp_random_remote_end
+0 memresult
+0 mem_sp_calc_result
+4 memh
+4 memg
+4 memf
+4 meme
+0 mem_sp_calc_result_high
+4 memd
+4 memc
+4 memb
+4 mema
+16 mem_sp_check_result
+16 mem_sp_confirm_remote
+16 mem_sp_prarm_stack
+)
+
+xmemalloc(
+1 mem_sp_local_key_invalid
+
+
+32 mem_le_private_key_256
+32 mem_le_pubkey_local_x_256
+32 mem_le_pubkey_local_y_256
+
+24 mem_sp_private_key
+0 mem_sp_pubkey_local
+24 mem_sp_pubkey_local_x
+0 mem_sp_pubkey_local_x_end
+24 mem_sp_pubkey_local_y
+
+1 mem_ssp_enable
+3 mem_sp_iocap_local
+3 mem_sp_iocap_remote
+
+1 mem_flag_mode_ssp_pin
+1 mem_ssp_mode_flag
+1 mem_authentication_passkey_times
+1 mem_passkey_1bit
+1 mem_flag_pairing_state
+
+)
+/* simple pairing status flag */
+(
+  0x00   SP_FLAG_STANDBY
+  0x01   SP_FLAG_COMMIT
+  0x02   LE_SP_FLAG_COMMIT_256
+
+)
+
+/* simple pairing calc flag */
+(
+  0x00   SP_CALC_STANDBY
+  0x01   SP_CALC_PUBKEY
+  0x02   SP_CALC_DHKEY
+  0x03   SP_CALC_PUBKEY_256
+  0x04   SP_CALC_DHKEY_256
+)
+
+/* simple pairing state */
+(
+  0x00   SP_STAT_NULL
+  0x01   SP_STAT_KEY_RECV
+  0x02   SP_STAT_KEY_GENERATE
+  0x03   SP_STAT_KEY_SEND
+  0x04   SP_STAT_COMMIT_CALC
+  0x05   SP_STAT_COMMIT_SEND
+  0x06   SP_STAT_RANDOM_RECV
+  0x07   SP_STAT_RANDOM_SEND
+  0x08   SP_STAT_CONFIRM_RECV
+  0x09   SP_STAT_CONFIRM_CHECK
+  0x0A   SP_STAT_CONFIRM_CALC
+  0x0B   SP_STAT_CONFIRM_SEND
+  0x0C   SP_STAT_LINK_KEY_CALC
+  0x0F   SP_STAT_DONE
+  0x10   SP_STAT_FEATURE_EXT_SEND
+  0x11   SP_STAT_GKEY_CALC
+  /*simple pairing master only*/
+  0x12   SP_MASTER_STAT_START_SKIP
+  0x13   SP_MASTER_STAT_START_DONE
+  0x14   SP_STAT_COMMITMENT_COMPARE
+  0x15   SP_STATE_END
+)
+
+
+/* simple paring invalid flag */
+(
+  0x00   SP_KEY_INVALID
+  0x01   SP_KEY_VALID
+  0x03   SP_KEY_VALID_256
+
+)
+
+/* encapsulated defination for P-192 key */
+(
+  0x01  ENCAPSULATED_MAJOR_TYPE_P192
+  0x01  ENCAPSULATED_MINOR_TYPE_P192
+  0x30  ENCAPSULATED_LEN_P192
+)
+
+/* bluetooth 2.1 support flag */
+(
+  0x00  SIMPLE_PAIRING_ENABLE
+  0x01  ENCRYPTION_PAUSE_ENABLE
+  0x02  EXTENDED_INQUIRY_RESPOSE_ENABLE
+  0x03  SNIFF_SUBRATING_ENABLE
+)
+
+/*mem_sp_localsm*/
+(
+  0x00 DEFAULT_STATEMACHINE
+  0x01 LOCAL_STATEMACHINE
+)
+
+(
+ 0x00 DEFALT_PAIRING_AUTH
+ 0x01 PAIRING_AUTH
+)
+
+(
+1 SSP_MODE_SSP_PIN_FLAG
+2 SSP_MODE_PASSKEY_ENTRY_FLAG
+3 SSP_MODE_JUST_WORK_FLAG
+)
+
+(//ssp mode
+0x040003 SSP_MODE_JUST_WORK_IO_CAP_DATA
+0X040001 SSP_MODE_SSP_PIN_IO_CAP_DATA
+0X040002 SSP_MODE_PASSKEY_IO_CAP_DATA
+)
+
+(
+0x00 DISPLAY_ONLY
+0x01 DISPLAY_YESNO
+0x02 KEYBOARD_ONLY
+0x03 NO_INPUT_NO_OUTPUT
+)
+
+(
+7 FLAG_MODE_SSP_PIN_REVICEVE_COMPARISON_BIT
+6 FLAG_MODE_SSP_PIN_RECIEVE_DHKEY_BIT
+0 FLAG_MODE_SSP_PIN_COMPARISON_RESULT_BIT
+)
+(
+1 FLAG_PAIRING_STATE_PAIRING
+0 FLAG_PAIRING_STATE_NOT_PAIRING
+)
+
+  
+/*****************************************************************************/
+/* RCS HEADER -- DO NOT ERASE                                                */
+/* $Author: Administrator $                                                           */
+/* $Id: bt_ui_format.upper,v 1.1 2009-09-28 04:06:17 Administrator Exp $     */
+/************************************************************************/
+
+
+	/* ========= memory ============== */
+memalloc(
+2 mem_UI_data_txbuff_length
+
+1 mem_ipc_skip_continue_proc
+0 mem_ui_timer_temp  //length 4
+4 mem_ipc_rega_temp
+) 
+
+xmemalloc(
+//UI Work area
+1 mem_ipc_lock_bt
+1 mem_ipc_lock_c51
+8 mem_ipc_fifo_bt2c51
+8 mem_ipc_fifo_c512bt
+1 mem_led_switch
+1 mem_ui_button_timer
+1 mem_ui_button_last_state
+4 mem_ui_timer_last_btclk
+2 mem_discovery_timeout_timer_count
+1 mem_hid_handshake_timer_count
+1 memui_reconnect_mode
+2 mem_ui_state_map
+
+//UI Config area
+1 mem_ui_profile_supported
+1 mem_led_gpio
+2 mem_led_dark_time
+2 mem_led_light_time
+1 mem_led_blink_count
+1 mem_ui_button_timeout
+1 mem_ui_button_gpio
+2 mem_discovery_timeout
+1 mem_pin_length
+16 mem_pin
+
+)
+/************/
+/* constant */
+/************/
+
+//mem_ui_state_map
+(
+0 UI_STATE_BT_CONNECTED
+1 UI_STATE_BT_SETUP_COMPLETE
+2 UI_STATE_BT_HID_CONN
+3 UI_STATE_BT_HID_HANDSHAKE
+4 UI_STATE_BT_SPP_CONN
+5 UI_STATE_BT_SNIFF
+6 UI_STATE_BT_DISCOVERY
+7 UI_STATE_BT_RECONNECT
+8 UI_STATE_BT_SLAVE_ROLE
+9 UI_STATE_BLE_CONNECTED
+10 UI_STATE_BLE_WRITE_RCV
+11 UI_STATE_BLE_ADV
+12 UI_STATE_BTN_DOWN
+13 UI_STATE_LED_BLINK
+14 UI_STATE_LED_ON
+)
+(
+0xFF LED_FLASH_INFINITE
+)
+
+(
+1 UI_STATE_SPP_NL_AUTO_DISCOVER
+
+)
+
+/* UI state for Headset (memui_HS_State) */ 
+   (
+    0 UI_HEADSET_DISCONNECT
+    1 UI_HEADSET_IDLE                   /* before the responsor HS receive SABM      */
+    2 UI_HEADSET_W4CONNECT
+    3 UI_HEADSET_RINGING
+    4 UI_HEADSET_CONNECTED
+    5 UI_HEADSET_PARING
+  )
+/* memui_BB_State */
+(
+  0 UI_BB_OFF
+  1 UI_BB_IDLE
+  2 UI_BB_DISCOVERY
+  3 UI_BB_CONNECTED_ACTIVE_NO_SCO
+  4 UI_BB_CONNECTED_ACTIVE_WITH_SCO
+  5 UI_BB_CONNECTED_ACTIVE_WAIT_SNIFF
+  6 UI_BB_CONNECTED_SNIFF
+  7 UI_BB_RECONNECT
+  8 UI_BB_CONNECTED_SNIFF_WITH_SCO
+)
+
+/************/
+/* flags    */
+/************/
+  
+/* memui_Misc_Flags */
+  (
+    5 NO_IDLE_TURN_OFF
+    7 ANSWER_RING_FLAG               /* 1 Answer,0 no*/
+  )
+
+/* mem_UI_SCH_Interface */
+  (
+    0  UI_HS_PAIRING 
+    2  UI_REQ_CLOSE_RFCOMM
+    3  UI_LINK_LOST
+    4  UI_REQ_OPEN_SCO
+    6  UI_REQ_CLOSE_SCO
+  )
+  
+/* memui_PassOverKey */
+  (
+    0  ANSWER_RING_BIT
+    0  AG_SEND_RING_BIT
+    1  VOL_UP_BIT
+    2  VOL_DOWN_BIT
+    3  INI_CALL_BIT
+    4  DAIL_LAST_CALL
+    5  END_CALL_BIT
+    6  NOKIA_VOICE_ACTIVE 
+    7  REJECT_CALL_BIT
+  )
+  
+/* memui_reconnect_mode */
+(
+  0 NO_RECONNECTION
+  1 RECONNECT_HID
+  2 RECONNECT_HF
+  3 RECONNECT_HS
+  4 RECONNECT_HID_HF
+  5 RECONNECT_HID_HS
+)
+/* memui_Commands */
+(
+0 BT_CMD_STANDBY
+1 BT_CMD_START_DISCOVERY
+2 BT_CMD_STOP_DISCOVERY
+3 BT_CMD_RECONNECT
+4 BT_CMD_DISCONNECT
+5 BT_CMD_ENTER_SNIFF
+6 BT_CMD_EXIT_SNIFF
+7 BT_CMD_ENTER_SNIFF_SUBRATING
+8 BT_CMD_EXIT_SNIFF_SUBRATING
+9 BT_CMD_SNIFF_TEST
+10 BT_CMD_SET_PIN_CODE
+11 BT_CMD_START_INQUIRY
+12 BT_CMD_STOP_INQUIRY
+13 BT_CMD_START_ADV
+14 BT_CMD_STOP_ADV
+15 BT_CMD_START_DIRECT_ADV
+16 BT_CMD_STOP_DIRECT_ADV
+17 BT_CMD_LE_DISCONNECT
+18 BT_CMD_LE_UPDATE_CONN
+19 BT_CMD_LED_OFF
+20 BT_CMD_LED_ON
+21 BT_CMD_LED_BLINK
+22 BT_CMD_LE_START_CONN
+23 BT_CMD_LE_START_SCAN
+24 BT_CMD_LE_STOP_SCAN
+25 BT_CMD_ENTER_HIBERNATE
+27 BT_CMD_LE_SMP_SECURITY_REQUEST
+28 BT_CMD_LE_START_WRITE
+29 BT_CMD_ROLE_SWITCH
+30 BT_CMD_BB_RECONN_CANCEL
+31 BT_CMD_STORE_RECONN_INFO_LE
+32 BT_CMD_STORE_RECONN_INFO_BT
+33 BT_CMD_DHKEY_NOT_ACCEPT
+34 BT_CMD_UPDATE_SUPERVISION_TO
+35 BT_CMD_START_24G
+36 BT_CMD_STOP_24G
+37 BT_CMD_PAIR_24G
+38 BT_CMD_TEST_MODE
+39 BT_CMD_START_ADV_RECONN
+40 BT_CMD_AUTO_PAIR_24G
+)
+
+(
+0x00 BT_EVT_NULL
+0x01 BT_EVT_BB_CONNECTED
+0x02 BT_EVT_BB_DISCONNECTED
+0x03 BT_EVT_RECONN_STARTED
+0x04 BT_EVT_RECONN_FAILED
+0x05 BT_EVT_SETUP_COMPLETE
+0x06 BT_EVT_HID_CONNECTED
+0x07 BT_EVT_HID_DISCONNECTED
+0x08 BT_EVT_SPP_CONNECTED
+0x09 BT_EVT_SPP_DISCONNECTED
+0x0A BT_EVT_PINCODE_REQ
+0x0B BT_EVT_ENTER_SNIFF
+0x0C BT_EVT_EXIT_SNIFF
+0x0D BT_EVT_ENTER_SNIFF_SUB
+0x0E BT_EVT_EXIT_SNIFF_SUB
+0x0F BT_EVT_DISCOVERY_STOPED
+0x10 BT_EVT_BUTTON_LONG_PRESSED
+0x12 BT_EVT_HID_HANDSHAKE
+0X13 BT_EVT_RECONN_PAGE_TIMEOUT
+0x14 BT_EVT_LE_CONNECTED
+0X15 BT_EVT_LE_DISCONNECTED
+0x16 BT_EVT_ML2CAP_CONN_REFUSED
+0x17 BT_EVT_BUTTON_ENTER_HIBERNATE
+0x18 BT_EVT_LINKKEY_GENERATE
+0x19 BT_EVT_SWITCH_NOT_ACCEPT
+0x20 BT_EVT_SWITCH_ACCEPT
+0x21 BT_EVT_SNIFF_NOT_ACCEPT
+0x22 BT_EVT_SNIFF_ACCEPT
+0x23 BT_EVT_UNSNIFF_ACCEPT
+0x24 BT_EVT_UNSNIFF_NOT_ACCEPT
+0x25 BT_EVT_BUTTON_ADJUST_DPI
+0x26 BT_EVT_SEND_UNSNIFF_ACCEPT
+0x27 BT_EVT_VIRTUAL_CABLE_UNPLUG
+0x28 BT_EVT_LE_WRITE_REQUEST
+0x29 BT_EVT_LE_ENC_INFO
+0x2a BT_EVT_SWITCH_FAIL_MASTER
+0x2b BT_EVT_SWITCH_SUCCESS_MASTER
+0x2c BT_EVT_BUTTON_DOWN
+0x2d BT_EVT_BUTTON_UP
+0x2e BT_EVT_REMOTE_UNSNIFF
+0x2f BT_EVT_RESET
+0x30 BT_EVT_LE_PAIRING_FAIL
+0x31 BT_EVT_LE_PAIRING_SUCCESS
+0x32 BT_EVT_LE_START_ENC
+0x33 BT_EVT_LE_PAUSE_ENC
+0x34 BT_EVT_LE_TK_GENERATE
+0x35 BT_EVT_BT_GKEY_GENERATE
+0x36 BT_EVT_BT_GET_PASSKEY
+0x37 BT_EVT_BT_PAIRING_FAIL
+0x38 BT_EVT_BT_PAIRING_SUCCESS
+0x39 BT_EVT_24G_PAIRING_COMPLETE
+0x3a BT_EVT_24G_ATTEMPT_SUCCESS
+0x3b BT_EVT_24G_ATTEMPT_FAIL
+0x3c BT_EVT_WAKEUP
+0x3d BT_EVT_HIBERNATE_WAKE
+0x3e BT_EVT_CLEAR_LINKKEY
+0x3f BT_EVT_24G_CHEAK_DONGLE_EXIST
+0x40 BT_EVT_LE_NOTIFY_ENABLE
+
+0x50 BT_EVT_TIMER_INIT
+0xF0 BT_EVT_TIMER_MASK
+0x51 BT_EVT_TIMER_100MS
+0x52 BT_EVT_TIMER_200MS
+0x53 BT_EVT_TIMER_300MS
+0x54 BT_EVT_TIMER_400MS
+0x55 BT_EVT_TIMER_500MS
+0x56 BT_EVT_TIMER_600MS
+0x57 BT_EVT_TIMER_700MS
+0x58 BT_EVT_TIMER_800MS
+0x59 BT_EVT_TIMER_900MS
+0x5A BT_EVT_TIMER_1KMS
+0x5B BT_EVT_TIMER_1K1MS
+0x5C BT_EVT_TIMER_1K2MS
+0x5D BT_EVT_TIMER_1K3MS
+0x5E BT_EVT_TIMER_1K4MS
+0x5F BT_EVT_TIMER_1K5MS
+)
+//switch
+(
+0 OFF
+1 ON
+)
+/* memui_mem_lock */
+(
+    0 MEM_UNLOCK
+    1 MEM_LOCK
+)
+/* memui_flag0 */
+(
+    0 UI_USER_DATA_FLAG
+    1 UI_WII_WAITING_SLEEP
+    2 UI_KEYBOARD_SNIFF_SKIP
+)
+/* mem_master_type */
+(
+    0 MTYPE_HID_DEFAULT
+    1 MTYPE_HID_SSP
+    2 MTYPE_SPP
+)
+
+	(	
+	0x01 RECIEVE_SDP_CONN_RES
+	0x02 RECIEVE_SDP_CFG_REQ
+	0x03 RECIEVE_SDP_CFG_RES
+	0x04 RECIEVE_RFCOMM_CONN_RES
+	0x05 RECIEVE_RFCOMM_CFG_REQ
+	0x06 RECIEVE_RFCOMM_CFG_RES
+	0x07 RECIEVE_HID_CTRL_CONN_RES
+	0x08 RECIEVE_HID_CTRL_CFG_REQ
+	0x09 RECIEVE_HID_CTRL_CFG_RES
+	0x0A RECIEVE_HID_INT_CONN_RES
+	0x0B RECIEVE_HID_INT_CFG_REQ
+	0x0C RECIEVE_HID_INT_CFG_RES
+	0x0D RECIEVE_AVCTP_CONN_RES
+	0x0E RECIEVE_AVCTP_CFG_REQ
+	0x0F RECIEVE_AVCTP_CFG_RES
+	0x10 RECIEVE_AVDTP_SIGNAL_CONN_RES
+	0x11 RECIEVE_AVDTP_SIGNAL_CFG_REQ
+	0x12 RECIEVE_AVDTP_SIGNAL_CFG_RES
+	0x13 RECIEVE_AVDTP_MEDIA_CONN_RES
+	0x14 RECIEVE_AVDTP_MEDIA_CFG_REQ
+	0x15 RECIEVE_AVDTP_MEDIA_CFG_RES
+	0x16 RECIEVE_SS_REASULT_HS                  
+	0x17 RECIEVE_SS_REASULT_HF                  
+	0x18 RECIEVE_SS_REASULT_AVTARG		          
+	0x19 RECIEVE_SS_REASULT_OBEX		            
+	0x1A RECIEVE_DLCI0_UA
+	0x1B RECIEVE_HS_PARAM_NEG_RES
+	0x1C RECIEVE_HS_UA
+	0x1D RECIEVE_HS_MODEM_STATUS_RES
+	0x1E RECIEVE_HS_MODEm_STATUS_CMD
+	0x1F RECIEVE_HF_PARAM_NEG_RES   
+	0x20 RECIEVE_HF_UA              
+	0x21 RECIEVE_HF_MODEM_STATUS_RES
+	0x22 RECIEVE_HF_MODEm_STATUS_CMD 
+	0x23 RECIEVE_OBEX_PARAM_NEG_RES     
+	0x24 RECIEVE_OBEX_UA              
+	0x25 RECIEVE_OBEX_MODEM_STATUS_RES
+	0x26 RECIEVE_OBEX_MODEm_STATUS_CMD    
+	0x27 RECIEVE_SPP_PARAM_NEG_RES   
+	0x28 RECIEVE_SPP_UA              
+	0x29 RECIEVE_SPP_MODEM_STATUS_RES
+	0x2A RECIEVE_SPP_MODEm_STATUS_CMD
+	0x2b RECIEVE_SDP_DISCONN_RES
+	)
+
+
+
+	(
+	0 UPPERSM_RP_IDLE
+	1 UPPERSM_RP_SDP_CONN
+	2 UPPERSM_RP_SDP_CONN_WAIT
+	3 UPPERSM_RP_SDP_CFG
+	4 UPPERSM_RP_SDP_CFG_WAIT
+	5 UPPERSM_RP_SS_AVTARG
+	6 UPPERSM_RP_SS_AVTARG_WAIT
+	7 UPPERSM_RP_SS_OBEX
+	8 UPPERSM_RP_SS_OBEX_WAIT
+	9 UPPERSM_RP_SDP_DISCONN
+	10 UPPERSM_RP_SDP_DISCONN_WAIT
+	11 UPPERSM_RP_AVDTP_CONN_WAIT
+	12 UPPERSM_RP_AVCTP_CONN
+	13 UPPERSM_RP_AVCTP_CONN_WAIT
+	14 UPPERSM_RP_AVCTP_CFG
+	15 UPPERSM_RP_AVCTP_CFG_WAIT
+	16 UPPERSM_RP_OBEX_CMD_PN
+	17 UPPERSM_RP_OBEX_CMD_PN_WAIT
+	18 UPPERSM_RP_OBEX_SABM
+	19 UPPERSM_RP_OBEX_SABM_WAIT
+	20 UPPERSM_RP_OBEX_CMD_MS
+	21 UPPERSM_RP_OBEX_CMD_MS_WAIT
+	)
+	(		/*mem_upper_sm_reconn*/
+	0 UPPERSM_RECONN_IDLE		
+	1 UPPERSM_RECONN_SDP_CONN		
+	2 UPPERSM_RECONN_SDP_CONN_WAIT		
+	3 UPPERSM_RECONN_SDP_CFG		
+	4 UPPERSM_RECONN_SDP_CFG_WAIT		
+	5 UPPERSM_RECONN_SS_HS
+	6 UPPERSM_RECONN_SS_HS_WAIT
+	7 UPPERSM_RECONN_SS_HF
+	8 UPPERSM_RECONN_SS_HF_WAIT
+	9 UPPERSM_RECONN_SS_AVTARG		
+	10 UPPERSM_RECONN_SS_AVTARG_WAIT		    
+	11 UPPERSM_RECONN_SS_OBEX		            
+	12 UPPERSM_RECONN_SS_OBEX_WAIT		      
+	13 UPPERSM_RECONN_SDP_DISCONN		        
+	14 UPPERSM_RECONN_SDP_DISCONN_WAIT      
+	15 UPPERSM_RECONN_HID_CTRL_CONN		      
+	16 UPPERSM_RECONN_HID_CTRL_CONN_WAIT		
+	17 UPPERSM_RECONN_HID_CTRL_CFG		      
+	18 UPPERSM_RECONN_HID_CTRL_CFG_WAIT     
+	19 UPPERSM_RECONN_HID_INT_CONN		      
+	20 UPPERSM_RECONN_HID_INT_CONN_WAIT		  
+	21 UPPERSM_RECONN_HID_INT_CFG		        
+	22 UPPERSM_RECONN_HID_INT_CFG_WAIT      
+	23 UPPERSM_RECONN_RFCOMM_CONN		        
+	24 UPPERSM_RECONN_RFCOMM_CONN_WAIT		  
+	25 UPPERSM_RECONN_RFCOMM_CFG		        
+	26 UPPERSM_RECONN_RFCOMM_CFG_WAIT       
+	27 UPPERSM_RECONN_RFCOMM_SABM		        
+	28 UPPERSM_RECONN_RFCOMM_SABM_WAIT		  
+	29 UPPERSM_RECONN_SPP_CMD_PN		        
+	30 UPPERSM_RECONN_SPP_CMD_PN_WAIT		    
+	31 UPPERSM_RECONN_SPP_SABM		          
+	32 UPPERSM_RECONN_SPP_SABM_WAIT		      
+	33 UPPERSM_RECONN_SPP_CMD_MS		        
+	34 UPPERSM_RECONN_SPP_CMD_MS_WAIT       
+	35 UPPERSM_RECONN_HF_CMD_PN		          
+	36 UPPERSM_RECONN_HF_CMD_PN_WAIT		    
+	37 UPPERSM_RECONN_HF_SABM		            
+	38 UPPERSM_RECONN_HF_SABM_WAIT		      
+	39 UPPERSM_RECONN_HF_CMD_MS		          
+	40 UPPERSM_RECONN_HF_CMD_MS_WAIT        
+	41 UPPERSM_RECONN_AVDTPs_CONN		        
+	42 UPPERSM_RECONN_AVDTPs_CONN_WAIT		  
+	43 UPPERSM_RECONN_AVDTPs_CFG		        
+	44 UPPERSM_RECONN_AVDTPs_CFG_WAIT       
+	45 UPPERSM_RECONN_AVDTPm_CONN		        
+	46 UPPERSM_RECONN_AVDTPm_CONN_WAIT		  
+	47 UPPERSM_RECONN_AVDTPm_CFG		        
+	48 UPPERSM_RECONN_AVDTPm_CFG_WAIT       
+	49 UPPERSM_RECONN_AVCTP_CONN		        
+	50 UPPERSM_RECONN_AVCTP_CONN_WAIT		    
+	51 UPPERSM_RECONN_AVCTP_CFG		          
+	52 UPPERSM_RECONN_AVCTP_CFG_WAIT		    
+	53 UPPERSM_RECONN_OBEX_CMD_PN		        
+	54 UPPERSM_RECONN_OBEX_CMD_PN_WAIT		  
+	55 UPPERSM_RECONN_OBEX_SABM		          
+	56 UPPERSM_RECONN_OBEX_SABM_WAIT		    
+	57 UPPERSM_RECONN_OBEX_CMD_MS		        
+	58 UPPERSM_RECONN_OBEX_CMD_MS_WAIT     
+	59 UPPERSM_RECONN_SS_SPP
+	60 UPPERSM_RECONN_SS_SPP_WAIT
+	)
+	(/*mem_UI_profile_supported*/
+	0 support_HID
+	1 support_A2DP
+	2 support_AVRCP
+	3 support_HF
+	4 support_HS
+	5 support_PBAP
+	6 support_SPP
+	)
+	/*mem_upper_sm_ss*/
+	(
+	0 UPPERSM_SS_HS
+	1 UPPERSM_SS_HF
+	2 UPPERSM_SS_AVTARG
+	3 UPPERSM_SS_OBEX
+	)
+
+	(
+	160 UI_HUNDRED_MILLISECOND_TIME
+	0XFF UI_BUTTON_GPIO_DISABLE
+	)
+	(
+	0x01 UI_BB_INCONNECT
+	0x10 UI_BB_DISCONNECT
+	)
+(
+0x00 UI_BUTTON_STATE_DOWN
+0x01 UI_BUTTON_STATE_UP
+)
+
+//mem_ipc_skip_continue_proc
+(
+	0 IPC_CONTINUE_PROCESS
+	1 IPC_SKIP_CONTINUE_PROCESS
+)
+
+
+//C51 synchronous task
+(
+3 START_C51_CORE
+)
+
+
+//bt mode device number
+(
+0X01 MODE_BT_DEVICE1
+0X02 MODE_BT_DEVICE2
+0X03 MODE_BT_DEVICE3
+0X04 MODE_24G_DEVICE
+)
+
+//mem_24g_rx_packet_flag
+(
+0 FLAG_24G_NOT_RX_PACKET
+1 FLAG_24G_RX_PACKET
+)
+
+//mem_24g_pairing_sm
+(
+0 STATE_24G_PAIRING_NULL
+1 STATE_24G_PAIRING_1
+2 STATE_24G_PAIRING_2
+3 STATE_24G_PAIRING_3
+0X11 STATE_24G_PAIRING_1_WAITING_ACK
+0X12 STATE_24G_PAIRING_2_WAITING_ACK
+0X13 STATE_24G_PAIRING_3_WAITING_ACK
+0XFF STATE_24G_PAIRING_SUCCESS
+)
+
+(
+0x01 ADV_FLAG_LIMITED_DISCOVERABLE
+0x04 ADV_FLAG_BREDR_NOT_SUPPORTED
+)
+
+(
+0 POWER_ON
+1 WORK_PAIRED
+2 WORK_SEARCH
+0 INIT_CLEAR
+)
+
+(
+1 NEW_QUEUE_ELE_COUNT
+32 NEW_QUEUE_ELE_LENGTH
+
+0x4f50 p_mem_hci_log
+)
+
+(
+7 RSSI_BUF_LEN
+0x77 RSSI_DIS_MIN_24G
+0x82 RSSI_DIS_MAX_24G
+
+0x75 RSSI_DIS_MIN_BLE
+0x80 RSSI_DIS_MAX_BLE
+)
+
+(
+0x60 BLE_FAST_CONN_CHARACTER_HANDLE
+)
+
+/**
+*  @file:bt_utility_format.upper
+*  @author: lei.zhu
+*  utility header file. inlcude timer
+*  Copyright:  (C)Hanlynn Technology    
+*/
+
+memalloc(
+
+/*
+    temp parameter
+*/
+2 mem_hold_contr
+2 mem_hold_contw
+1 mem_fifo_temp
+
+8 mem_pdatatemp
+8 mem_temp //8 bytes
+4 mem_timeup // 4 bytes
+4 mem_rega //4 bytes
+4 mem_regb //4 bytes
+3 mem_regc //3 bytes
+2 mem_contr //2 bytes
+2 mem_contw //2 bytes
+
+0 mem_le_data_len_temp	//1byte
+0 mem_tx_fifo_map_temp
+0 mem_rpn_dlci		//1byte
+0 mem_event_cmd_response_content	//2byte
+0 mem_le_prand		//16byte
+0 mem_AES_CMAC_k	 //16 bytes
+0 mem_regext_index 	//1 bytes
+1 mem_temp_block0
+0 mem_le_data_temp	//15bytes
+15 mem_temp_block1
+0 mem_le_aes_128	//16byte
+0 mem_regext   //64 bytes
+0 mem_AES_CMAC_k1  //16 bytes
+16 mem_temp_block2
+0 mem_AES_CMAC_k2  //16 bytes
+16 mem_temp_block3
+0 mem_AES_CMAC_temp  // 16 bytes
+16 mem_temp_block4
+0 mem_AES_CMAC_M_last // 16 bytes
+16 mem_temp_block5
+0 mem_le_mackey //16 bytes
+16 mem_temp_block6
+
+200 mem_temp_prepare_write_request
+)
+
+
+(
+/*mem_util_timer_flag0_7*/
+    0   UTIL_TIMER_0_USED
+    1   UTIL_TIMER_1_USED
+    2   UTIL_TIMER_2_USED
+    3   UTIL_TIMER_3_USED
+    4   UTIL_TIMER_4_USED
+    5   UTIL_TIMER_5_USED
+    6   UTIL_TIMER_6_USED
+    7   UTIL_TIMER_7_USED
+/*mem_util_timer_flag8_15*/
+    0   UTIL_TIMER_8_USED
+    1   UTIL_TIMER_9_USED
+    2   UTIL_TIMER_10_USED
+    3   UTIL_TIMER_11_USED
+    4   UTIL_TIMER_12_USED
+    5   UTIL_TIMER_13_USED
+    6   UTIL_TIMER_14_USED
+    7   UTIL_TIMER_15_USED
+)
+
+//util fifo param
+(
+
+8 UTIL_FIFO_LEN
+-1 UTIL_FIFO_OFFSET
+)
+
+memalloc(
+0 mem_kb_map2_temp_start
+3 mem_kb_map2_vk
+3 mem_kb_current_vk
+1 mem_kb_vk_offset
+1 mem_kb_vk_processed_cnt
+2 mem_kb_map2_current_cell_ptr
+1 mem_kb_device_button
+8 mem_table_temp0
+8 mem_table_temp1
+0 mem_kb_map2_temp_end
+
+
+1 mem_check_count
+1 mem_store_key_count
+4 mem_kb_gpio_val
+
+1 mem_c51_flag
+1 mem_c51_lmp_lock
+1 mem_lmp_bb_disconnect_reason
+
+)
+
+/************************************************************************/
+/* RCS HEADER -- DO NOT ERASE                                           */
+/* $Author: Administrator $                                                     */
+/* $Id: bt_var.osi,v 1.1 2009-09-28 04:06:18 Administrator Exp $   */
+/* Orisil Technology                                                 */
+/************************************************************************/
+
+
+/* packet types */
+(
+  0x02 FHS_PACKET 
+  0x03 DM1_PACKET 
+  0x03 DM1_LMP_PACKET 
+  0x04 DH1_PACKET 
+  0x05 HV1_PACKET 
+  0x06 HV2_PACKET 
+  0x07 HV3_PACKET 
+  0x08 DV_PACKET 
+  0x09 AUX1_PACKET 
+  0x0a DM3_PACKET 
+  0x0b DH3_PACKET 
+  0x0e DM5_PACKET 
+  0x0f DH5_PACKET 
+)
+
+
+/* mem_lmp_respond */
+(
+  0 RESPOND_TO_ALL
+  1 PASS_EVERYTHING
+  2 PASS_ONLY_UNKNOWNS
+  3 RESPOND_TO_LMPS
+)
+/* SCO algorithm defines */
+(
+  0 ULAW
+  1 ALAW
+  2 CVSD
+)
+/* encryption modes */
+(
+  0 NO_ENCRYPTION
+  1 PT_PT_ENCRYPTION
+  2 PT_BROADCAST_ENCRYPTION
+)
+
+/* bits used in mem_lmp_state1 variable */
+(
+  0 LMP_STATE_DETACH
+  1 LMP_STATE_HOLD
+  2 LMP_STATE_SNIFF
+  3 LMP_STATE_PARK
+  4 LMP_STATE_WAIT_SCO_CREATE
+  5 LMP_STATE_WAIT_SCO_KILL
+  6 LMP_STATE_SCO3
+  7 LMP_STATE_WAIT_SCO_START
+)
+/* mem_lmp_state2 */
+(
+  0 LMP_WAIT_FOR_SNIFF_ACCEPT
+  1 LMP_WAIT_FOR_PARK_ACCEPT
+  2 LMP_SEND_UNPARK_ACCEPTED
+  3 LMP_SEND_ENCRYPTION_START
+  4 LMP_SEND_ENCRYPTION_STOP
+  5 MESSAGE_QUEUE
+  7 LMP_STATE_WAIT_BEACON
+)
+/* mem_lmp_state3 */
+(
+ 0 INQUIRY_STATE_CHECK
+ 1 HOST_DELAY_MESSAGE
+ 2 VARIABLE_DELAY
+ 3 TEST_MODE_START_LOOPBACK
+ 4 TEST_MODE_START_PATTERN
+ 5 PARSE_TEST_CONTROL_MESSAGE
+ 6 H_AUTH_SEND_COMB_KEY
+)
+/* mem_rx_status */
+(
+  0 FROM_MASTER
+)
+/* mem_ms_flag */
+(
+  0 MS_RECEIVE_SWITCH_REQ
+  1 MS_SEND_SETUP_COMPLATE
+)
+/* mem_conn_sm */
+(
+  0 CONN_SM_STANDBY
+  1 CONN_SM_WAIT_PAGE
+  2 CONN_SM_SEND_FEATURES
+  3 CONN_SM_WAIT_FEATURES_RES
+  4 CONN_SM_SEND_CONN_REQ
+  5 CONN_SM_WAIT_CONN_ACCEPT
+  6 CONN_SM_AUTH_PAIR
+  7 CONN_SM_AUTH_PAIR_WAIT
+  8 CONN_SM_WAIT_MUTAL_AUTH
+  9 CONN_SM_ENCRYPT
+  0xa CONN_SM_ENCRYPT_WAIT
+  0xb CONN_SM_ENCRYPT_WAIT_CLEAR
+  0xc CONN_SM_SEND_SETUP_COMPLETE
+  0xd CONN_SM_WAIT_SETUP_COMPLETE 
+  0xe CONN_SM_SEND_SWITCH
+  0xf CONN_SM_DETACH_DELAY
+  0x10 CONN_SM_WAIT_SWITCH_AFTER_HOST_CONNECTION
+  0x11 CONN_SM_DELAY_RESTART_CONNECTION
+  0x12 CONN_SM_SEND_VERSION
+  0X13 CONN_SM_WAIT_VERSION
+  0x14 CONN_SM_SEND_FEATURES_EXT
+  0x15 CONN_SM_WAIT_FEATURES_EXT
+  0x16 CONN_SM_PAIRING
+  0x17 CONN_SM_AUTH
+  0x18 CONN_SM_PAIRING_WAIT
+  0x19 CONN_SM_AUTH_WAIT
+  0x1a CONN_SM_DONE
+  0x1b CONN_SM_WAIT_DONE
+)
+
+/* btStateConn1 */
+(
+  0 CONN_STANDBY
+  1 CONN_MASTER_SEND_CONN_REQ
+  2 CONN_MASTER_WAIT_FOR_CONN_ACCEPTED
+  3 CONN_MASTER_AUTH
+  4 CONN_MASTER_WAIT_FOR_FEATURES
+  5 CONN_MASTER_WAIT_FOR_SETUP_COMPLETE
+  6 CONN_MASTER_WAIT_FOR_MAX_SLOT
+  7 CONN_SLAVE_CONN_REQUESTED
+  8 CONN_SLAVE_WAIT_FOR_SETUP_COMPLETE
+  9 CONN_SLAVE_AUTH
+  10 CONN_USING_HOST_OPCODE
+  11 CONN_SLAVE_AUTH_WAIT
+  12 CONN_SLAVE_ENCRYPT_WAIT
+)
+
+/* mem_lmp_conn_state */
+(
+  0 RECEIVED_CONN_REQ
+  1 SENT_CONN_REQ
+  2 RECEIVED_SETUP_COMPLETE
+  3 SENT_SETUP_COMPLETE
+  4 HOST_CONNECTION_MADE
+  6 INIT_COMPLETE
+  7 SNIFF_NEGOTIATE
+)
+/* btStateAuth1 */
+(
+  0 WAIT_FOR_KINIT
+  1 WAIT_FOR_LKA
+  2 WAIT_FOR_LKB
+  3 WAIT_FOR_SRES
+  4 EXAMINE_RECEIVED_SRES
+  5 SEND_AU_RAND
+  6 WAIT_FOR_KC
+  7 DELAYED_ENCRYPT_RESPONSE
+)
+/* btStateAuth2 */
+(
+  0 SENT_SRES
+  1 RECEIVED_IN_RAND
+  2 SENT_AU_RAND
+  3 AUTHENTICATION_FAILED
+  4 AUTHENTICATION_PASSED
+  5 STARTED_AUTH
+  6 SENT_COMB_KEY
+  7 SENT_IN_RAND
+)
+/* btStateAuth3 */
+(
+  0 RECEIVED_AU_RAND
+  1 RECEIVED_SRES
+  2 MUTUALLY_AUTHENTICATE
+)
+/* btStateHost */
+(
+  0 H_AUTH_STARTED
+  2 H_ENCRYPTION_MODE_REQ_PT
+  3 H_ENCRYPTION_KEY_SIZE
+  4 H_ENCRYPTION_START
+  5 H_ENCRYPTION_STOP
+  6 H_AUTH_SECOND_TRY
+)
+/* btStateEncrypt2 */
+(
+  0 RECEIVED_ENCRYPT_MODE_REQ_PT
+  1 RECEIVED_ENCRYPT_KEY_SIZE
+  2 RECEIVED_ENCRYPT_START
+  3 RECEIVED_ENCRYPT_STOP
+  4 STARTED_ENCRYPT_START
+)
+/* mem_ms_state */
+(
+  0x00 MS_STANDBY
+  0x11 M_MINIT_1
+  0x12 M_MINIT_2
+  0x20 M_SINIT_0
+  0x30 S_MINIT_0
+  0x31 S_MINIT_1
+  0x32 S_MINIT_2
+  0x41 S_SINIT_1
+  0x42 S_SINIT_2
+  0x43 S_SINIT_3
+)
+/* mem_test_mode */
+(
+  0 TEST_MODE_ALLOWED
+  1 TEST_MODE_ACTIVE
+)
+/* values for mem_tester_emulate */
+(
+  0x00 NO_TEST_MODE
+  0x00 CONTINUOUS_TRANSMIT
+  0x10 TRANSMIT_TEST
+  0x08 LOOPBACK
+)
+
+/* mem_tx_misc */
+(
+  1 SEND_TX_ADDR
+)
+/* BBHWREG_page_stat */
+(
+  5 PAGE_MODE_END
+)
+/* host_return_parameters_status codes */
+(
+  0x00 HOST_RETURN_SUCCESS
+  0x01 HOST_RETURN_SLAVE_CANT_ISSUE
+  0x02 HOST_RETURN_NO_CONNECTION
+  0x04 HOST_RETURN_PAGE_TIMEOUT
+  0x05 HOST_RETURN_INQUIRY_TIMEOUT
+  0x08 HOST_RETURN_CONNECTION_TIMEOUT
+  0x09 HOST_RETURN_MAX_NUM_CONNECTIONS
+  0x0a HOST_RETURN_MAX_NUM_SCO
+  0x0b HOST_RETURN_MAX_NUM_ACL
+  0x0c HOST_RETURN_SECURITY_REASONS
+  0x10 HOST_RETURN_HOST_TIMEOUT
+  0x11 HOST_RETURN_UNSUPPORTED_FEATURE_PARAMETER
+  0x13 HOST_RETURN_OTHER_END_USER
+  0x14 HOST_RETURN_OTHER_END_LOW_RESOURCE
+  0x15 HOST_RETURN_OTHER_END_POWER_OFF
+  0x16 HOST_RETURN_LOCAL_HOST
+  0x18 HOST_RETURN_PAIRING_NOT_ALLOWED
+  0x19 HOST_RETURN_UNKNOWN_PDU
+  0x1a HOST_RETURN_UNSUPPORTED_REMOTE_FEATURE
+  0x1d HOST_RETURN_SCO_AIR_MODE_REJECTED
+  0x20 HOST_RETURN_UNSUPPORTED_LMP_VALUE
+  0x21 HOST_RETURN_AUTHENTICATION_FAILURE
+  0x22 HOST_RETURN_CHANGED_EXISTING_SCO
+  0x23 HOST_RETURN_HOST_REJECTED
+  0x24 HOST_RETURN_UNSPECIFIED_ERROR
+  0x25 HOST_RESET
+  0x26 HOST_RETURN_BAD_HANDLE
+
+  0x00 HOST_RETURN_ACCEPT_COMMAND
+  0x01 HOST_RETURN_REJECT_COMMAND
+)
+/* host_present */
+(
+  0 HOST_IS_PRESENT
+  1 BCI_IS_PRESENT
+  2 DONT_INIT_RADIO
+)
+/* mem_master_state */
+(
+  0 MASTER_STATE_STANDBY
+  1 MASTER_INQUIRY
+)
+/* misc */
+(
+  92 SECOND_SWITCH_REQ
+  93 SLAVE_DELAY_DETACH
+  94 MASTER_DELAY_DETACH
+  95 UNSNIFF_DELAY_DETACH
+  0 WE_STARTED_AS_MASTER
+  1 WE_STARTED_AS_SLAVE
+)
+/* mem_host_commands */
+(
+  0x01 HOST_INQUIRY
+  0x02 HOST_INQUIRY_CANCEL
+  0x03 HOST_CREATE_CONNECTION
+  0x04 HOST_DISCONNECT_CONNECTION
+  0x05 HOST_ADD_SCO_REQUEST
+  0x06 HOST_REMOTE_NAME_REQUEST
+  0x07 HOST_WRITE_SUPPORTED_FEATURES
+  0x08 HOST_SET_TX_LEVEL
+  0x09 HOST_SET_RX_LEVEL
+  0x0a HOST_SNIFF_REQUEST
+  0x0b HOST_UNSNIFF_REQUEST
+  0x0c HOST_WRITE_LINK_SUPERVISION_TIMEOUT
+  0x0e HOST_WRITE_SCAN_ENABLE
+  0x0f HOST_READ_AUDIO_QUALITY
+  0x10 HOST_ENABLE_DEVICE_UNDER_TEST
+  0x14 HOST_BUTTON_CONFIGURE
+  0x15 HOST_SET_LOW_BATTERY_LEVEL
+  0x16 HOST_WRITE_LOCAL_NAME
+  0x17 HOST_WRITE_LOCAL_PIN
+  0x18 HOST_KILL_SCO_REQUEST
+  0x19 HOST_QOS_REQ
+
+  0x1a HOST_FEATURES_REQUEST
+  0x1b HOST_VERSION_REQUEST
+  0x1c HOST_TIMING_REQUEST
+  0x1d HOST_CLK_OFFSET_REQUEST
+  0x1e HOST_AUTHENTICATE
+  0x1f HOST_START_ENCRYPTION
+  0x20 HOST_STOP_ENCRYPTION
+  0x21 HOST_HOLD_REQUEST
+  0x22 HOST_HOLD_FORCE
+  0x23 HOST_PARK_REQUEST
+  0x24 HOST_MOD_BEACON
+  0x25 HOST_SET_BROADCAST_SCAN_WINDOW
+  0x26 HOST_UNPARK_PM_REQUEST
+  0x27 HOST_UNPARK_BD_REQUEST
+  0x28 HOST_SLAVE_REQUEST_UNPARK
+  0x29 HOST_DECREASE_POWER_REQUEST
+  0x2a HOST_INCREASE_POWER_REQUEST
+  0x2b HOST_SEND_PREFERRED_RATE
+  0x2c HOST_MAX_SLOT_REQ
+  0x2d HOST_MAX_SLOT_FORCE
+  0x2e HOST_PAGE_MODE_REQUEST
+  0x2f HOST_PAGE_SCAN_MODE_REQUEST
+  0x30 HOST_MASTER_SLAVE_SWITCH
+  0x31 HOST_SEND_AUTO_RATE
+  0x32 HOST_PAGE_CANCEL
+  0x33 HOST_CHANGE_LINK_KEY
+  0x34 HOST_RADIO_READ
+  0x35 HOST_RADIO_WRITE
+  0x36 HOST_REMOTE_SLAVE_INIT_UNPARK_REQUESTED
+
+  0x40 HOST_REMOTE_CONNECTION_REQUESTED
+  0x41 HOST_REMOTE_DETACH
+  0x42 HOST_REMOTE_SCO_CREATE_REQUESTED
+  0x43 HOST_REMOTE_SCO_KILL_REQUESTED
+  0x44 HOST_REMOTE_PARK_REQUESTED
+  0x45 HOST_REMOTE_UNPARK_REQUESTED
+  0x46 HOST_REMOTE_SNIFF_REQUESTED
+  0x47 HOST_REMOTE_UNSNIFF_REQUESTED
+  0x48 HOST_REMOTE_HOLD_REQUESTED
+  0x49 HOST_REMOTE_AUTHENTICATION
+  0x4a HOST_REMOTE_START_ENCRYPTION_REQUESTED
+  0x4b HOST_REMOTE_STOP_ENCRYPTION_REQUESTED
+  0x4c HOST_MODE_CHANGE_EVENT
+  0x4d HOST_REMOTE_TEST_ACTIVATE
+  0x4e HOST_REMOTE_TEST_CONTROL
+  0x4f HOST_REMOTE_TIMING_REQUEST
+)
+/* BCI interface (not used if not compiled in ) */
+(
+  0x01 BCI_INQUIRY
+  0x02 BCI_INQUIRY_CANCEL
+  0x03 BCI_CREATE_CONNECTION
+  0x04 BCI_DISCONNECT
+  0x05 BCI_ADD_SCO_CONNECTION
+  0x06 BCI_REMOTE_NAME_REQUEST
+  0x07 BCI_WRITE_SUPPORTED_FEATURES
+  0x08 BCI_SET_TX_POWER_LEVEL
+  0x09 BCI_SET_RX_POWER_LEVEL
+  0x0a BCI_SNIFF_MODE
+  0x0b BCI_EXIT_SNIFF_MODE
+  0x0c BCI_WRITE_LINK_SUPERVISION_TIMEOUT
+  0x0d BCI_WRITE_PAGE_TIMEOUT
+  0x0e BCI_WRITE_SCAN_ENABLE
+  0x0f BCI_GET_AUDIO_QUALITY
+  0x10 BCI_ENABLE_DEVICE_UNDER_TEST
+  0x11 BCI_SEND_DATA
+  0x12 BCI_REGISTER_SERVICE_RECORD
+  0x13 BCI_SERVICE_SEARCH_ATTRIB_REQ
+  0x14 BCI_BUTTON_CONFIGURE
+  0x15 BCI_SET_LOW_BATTERY_LEVEL
+  0x16 BCI_WRITE_LOCAL_NAME
+  0x17 BCI_WRITE_LOCAL_PIN
+  0x18 BCI_REMOVE_SCO_CONNECTION
+  0x19 BCI_QUALITY_OF_SERVICE
+  0x40 BCI_REMOTE_CONNECTION_REQUEST
+  0x41 BCI_REMOTE_DETACH
+  0x42 BCI_REMOTE_ADD_SCO_REQUEST
+  0x43 BCI_REMOTE_REMOVE_SCO_REQUEST
+  0x44 BCI_REMOTE_PARK_REQUEST
+  0x45 BCI_REMOTE_UNPARK_REQUEST
+  0x46 BCI_REMOTE_SNIFF_REQUEST
+  0x47 BCI_REMOTE_UNSNIFF_REQUEST
+  0x48 BCI_REMOTE_HOLD_REQUEST
+  0x49 BCI_REMOTE_AUTHENTICATION_PAIRING_REQUEST
+  0x4a BCI_REMOTE_START_ENCRYPTION_REQUEST
+  0x4b BCI_REMOTE_STOP_ENCRYPTION_REQUEST
+  0x4c BCI_MODE_CHANGE_EVENT
+)
+/* mode changes */
+(
+  0 MODE_CHANGE_ACTIVE
+  1 MODE_CHANGE_SNIFFING
+  2 MODE_CHANGE_PARKED
+  3 MODE_CHANGE_HOLDING
+  4 MODE_CHANGE_SCO_ADDED
+  5 MODE_CHANGE_SCO_REMOVED
+  6 MODE_CHANGE_ACL_CONNECTION
+  7 MODE_CHANGE_DISCONNECT
+  8 MODE_CHANGE_SCO_CHANGED
+  9 MODE_CHANGE_ENCRYPTING
+  10 MODE_CHANGE_NOT_ENCRYPTING
+  11 MODE_CHANGE_BUTTON_UP
+  12 MODE_CHANGE_BUTTON_DOWN
+  13 MODE_CHANGE_BATTERY_LOW
+  14 MODE_CHANGE_RESET
+  15 MODE_CHANGE_INQUIRY_CANCELED_RMTCMD
+  16 MODE_ACTIVE_MSSWITCH_PASSED
+  17 MODE_ACTIVE_MSSWITCH_FAILED
+)
+/* mem_battery - low nibble is level information, upper nibble is status info */
+(
+  6 BATTERY_CHECK_LEVEL
+  7 BATTERY_SENT_STATUS
+)
+/* mem_radio_version */
+(
+  0x02 RADIO_2001
+  0x12 RADIO_2002
+  0x32 RADIO_2002_DDM
+  0x42 RADIO_1008A1
+  0x52 RADIO_1018A0
+)
+/* mem_slave_initiated_conn */
+(
+  0 SLAVE_INIT_AUTHENTICATION
+  1 SLAVE_INIT_ENCRYPTION
+  2 SLAVE_INIT_MASTER_SLAVE_SWITCH
+)
+/* connection_options */
+(
+  0 CONNECTION_AUTH
+  1 CONNECTION_ENCRYPT
+  2 CONNECTION_SWITCH
+  3 CONNECTION_ACL
+  4 CONNECTION_FEATURE_EXT
+)
+/* mem_debug_config */
+(
+  7 AA_INSERTION
+)
Index: Standard_mouse/btms/rom/ui.prog
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/rom/ui.prog	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/rom/ui.prog	(working copy)
@@ -0,0 +1,480 @@
+ui_init:
+	call lpm_disable_exen_output
+	rtn wake
+	call ui_button_init
+	call ui_timer_init
+	branch ui_led_init
+
+ui_dispatch:
+	call ui_led_blink_polling
+	
+	branch ui_timer_check
+	
+ui_button_init:
+	set1 mark_ext_patch,mark
+	bpatch patch3d_7,mem_patch3d
+	fetch 1,mem_ui_button_gpio
+	rtneq UI_BUTTON_GPIO_DISABLE
+	iforce temp
+	call gpio_config_output
+	fetcht 1,mem_ui_button_gpio
+	call gpio_out_inactive
+	nop 100
+	fetcht 1,mem_ui_button_gpio
+	call gpio_config_input
+	branch ui_button_polling
+
+
+	
+ui_button_polling:
+	set1 mark_ext_patch,mark
+	bpatch patch3e_0,mem_patch3e
+	fetch 1,mem_ui_button_gpio
+	rtneq UI_BUTTON_GPIO_DISABLE
+	copy pdata,temp
+	call gpio_get_bit
+	nbranch ui_button_up,true
+	//fall through
+ui_button_down:
+	call ui_button_check_long_press
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BTN_DOWN
+	store 2,mem_ui_state_map
+	fetch 1,mem_ui_button_last_state
+	rtneq UI_BUTTON_STATE_DOWN
+	jam UI_BUTTON_STATE_DOWN,mem_ui_button_last_state
+	//Down Edge
+	fetch 1,mem_ui_button_timeout
+	store 1,mem_ui_button_timer //start long press timer
+	call lpm_button_get_wake_lock
+	jam BT_EVT_BUTTON_DOWN,mem_fifo_temp
+	branch ui_ipc_send_event
+ui_button_up:
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_BTN_DOWN
+	store 2,mem_ui_state_map
+	fetch 1,mem_ui_button_last_state
+	rtneq UI_BUTTON_STATE_UP
+	jam UI_BUTTON_STATE_UP,mem_ui_button_last_state
+	//Up Edge
+	jam 0,mem_ui_button_timer//stop long press timer
+	call lpm_button_clean_wake_lock
+	jam BT_EVT_BUTTON_UP,mem_fifo_temp
+	branch ui_ipc_send_event
+
+ui_button_check_long_press:
+	fetch 1,mem_ui_button_timer
+	rtn blank
+	increase -1,pdata
+	store 1,mem_ui_button_timer
+	nrtn blank
+	//Long Press
+	jam BT_EVT_BUTTON_LONG_PRESSED,mem_fifo_temp
+	branch ui_ipc_send_event
+
+lpm_button_get_wake_lock:
+	arg wake_lock_button,queue
+	branch lpm_get_wake_lock
+	
+lpm_button_clean_wake_lock:
+	arg wake_lock_button,queue
+	branch lpm_put_wake_lock
+
+ui_led_init:
+	fetch 1,mem_led_gpio
+	rtneq UI_BUTTON_GPIO_DISABLE
+	iforce temp
+	call gpio_config_output
+	branch ui_led_off
+	
+ui_led_blink_stop:
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_LED_BLINK
+	store 2,mem_ui_state_map
+	jam ui_led_stop,mem_led_switch
+ui_led_off:
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_LED_ON
+	store 2,mem_ui_state_map
+	fetcht 1,mem_led_gpio
+	branch gpio_out_inactive
+
+ui_led_on:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_LED_ON
+	store 2,mem_ui_state_map
+	jam ui_led_stop,mem_led_switch
+	fetcht 1,mem_led_gpio
+	branch gpio_out_active
+
+ui_led_blink_start:
+	jam 0xff,mem_led_blink_count
+ui_led_blink_start1:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_LED_BLINK
+	store 2,mem_ui_state_map
+	jam ui_led_start,mem_led_switch
+	rtn
+	
+ui_led_blink_polling:
+	set1 mark_ext_patch,mark
+	bpatch patch3e_1,mem_patch3e
+	fetch 1,mem_led_blink_count
+	rtn blank
+	fetch 1,mem_led_switch
+	rtneq ui_led_stop
+	arg ui_led_blink,queue
+	call timer_check
+	nrtn blank
+	fetch 1,mem_led_switch
+	beq ui_led_dark_time,in_ui_led_blink_polling_dark
+	call ui_led_on
+	jam ui_led_dark_time,mem_led_switch
+	fetch 2,mem_led_light_time
+	branch in_ui_led_blink_timer_start
+in_ui_led_blink_polling_dark:
+	call ui_led_off
+	fetch 1,mem_led_blink_count
+	beq LED_FLASH_INFINITE,in_ui_led_infinite
+	increase -1,pdata
+	store 1, mem_led_blink_count
+in_ui_led_infinite:
+	jam ui_led_light_time,mem_led_switch
+	fetch 2,mem_led_dark_time
+in_ui_led_blink_timer_start:
+	arg ui_led_blink,queue
+	branch timer_init	
+
+ui_timer_timeout:
+	setarg 0x1000
+	lshift16 pdata,pdata
+	iadd regb,regb
+	rtn
+	
+ui_timer_check:
+	set1 mark_ext_patch,mark
+	bpatch patch3e_2,mem_patch3e
+	arg 0,rega
+	fetcht 4,mem_ui_timer_last_btclk
+	copy clkn_bt,regb
+	copy regb,pdata
+	isub temp,null
+	ncall ui_timer_timeout,positive
+	//call ice_break
+ui_timer_check_loop:
+	copy regb,pdata
+	increase 160,temp    //320btclk = 100ms
+	increase 160,temp
+	isub temp,null
+	nbranch ui_timer_check_end,positive
+	increase 1,rega   //increase 1 every 100ms count
+	and rega,0x0f,pdata
+	nbranch ui_timer_check_loop,blank
+	arg 0,rega  //reset timer if it's longer than 1.5s between 2 checks
+	call ui_timer_check_send_evt
+ui_timer_init:
+	copy clkn_bt,pdata
+	store 4,mem_ui_timer_last_btclk
+	rtn
+ui_timer_check_end:
+	set1 mark_ext_patch,mark
+	bpatch patch3e_3,mem_patch3e
+	copy rega,pdata
+	rtn blank
+	increase -160,temp    //320btclk = 100ms
+	increase -160,temp
+	set0 28,temp
+	storet 4,mem_ui_timer_last_btclk
+ui_timer_check_send_evt:
+	increase BT_EVT_TIMER_INIT,pdata
+	store 1,mem_fifo_temp
+	branch ui_ipc_send_event
+	
+
+//**********************************************************//
+//************UI Inter-Processor Communication*******//
+//**********************************************************//
+ui_ipc_get_lock:
+	jam 1,mem_ipc_lock_bt
+ui_ipc_get_lock_wait:
+	fetch 1,mem_ipc_lock_c51
+	nbranch ui_ipc_get_lock_wait,blank
+	rtn
+	
+ui_ipc_put_lock:
+	jam 0,mem_ipc_lock_bt
+	rtn
+	
+
+	
+ui_ipc_send_event:
+	set1 mark_ext_patch,mark
+	bpatch patch3e_4,mem_patch3e
+	call ui_ipc_get_lock
+	copy rega,pdata
+	store 4,mem_ipc_rega_temp
+	arg mem_ipc_fifo_bt2c51,rega
+	call fifo_in
+	fetch 4,mem_ipc_rega_temp
+	copy pdata,rega
+	branch ui_ipc_put_lock
+
+ui_ipc_send_cmd:
+	set1 mark_ext_patch,mark
+	bpatch patch3e_5,mem_patch3e
+	call ui_ipc_get_lock
+	copy rega,pdata
+	store 4,mem_ipc_rega_temp	
+	arg mem_ipc_fifo_c512bt,rega
+	call fifo_in
+	fetch 4,mem_ipc_rega_temp
+	copy pdata,rega	
+	branch ui_ipc_put_lock
+
+ui_ipc_clean_all_fifo:
+	setarg 0
+	store UTIL_FIFO_LEN,mem_ipc_fifo_c512bt
+	store UTIL_FIFO_LEN,mem_ipc_fifo_bt2c51
+	rtn
+	
+check_51cmd:
+	set1 mark_ext_patch,mark
+	bpatch patch3e_6,mem_patch3e
+	fetch 1,mem_hci_cmd
+	nrtn blank
+	arg mem_ipc_fifo_c512bt,rega
+	call fifo_is_empty
+	rtn blank
+	jam IPC_CONTINUE_PROCESS,mem_ipc_skip_continue_proc
+	call check_51cmd_once
+	fetch 1,mem_ipc_skip_continue_proc
+	branch check_51cmd,blank
+	rtn
+
+check_51cmd_once:
+	set1 mark_ext_patch,mark
+	bpatch patch3e_7,mem_patch3e
+	call ui_ipc_get_lock
+	arg mem_ipc_fifo_c512bt,rega
+	call fifo_out
+	copy pdata,temp
+	call ui_ipc_put_lock
+	copy temp,pdata
+	rtn blank
+ 	beq BT_CMD_START_DISCOVERY,check_51cmd_start_discovery
+  	beq BT_CMD_STOP_DISCOVERY,check_51cmd_stop_discovery
+  	beq BT_CMD_RECONNECT,check_51cmd_reconnect
+  	beq BT_CMD_ENTER_SNIFF_SUBRATING,check_51cmd_enter_sniff_subrating
+  	beq BT_CMD_EXIT_SNIFF_SUBRATING,check_51cmd_exit_sniff_subrating
+  	beq BT_CMD_SNIFF_TEST,check_51cmd_sniff_test
+	beq BT_CMD_START_INQUIRY,check_51cmd_inq
+	beq BT_CMD_STOP_INQUIRY,check_51cmd_stop_inq
+	beq BT_CMD_START_ADV,check_51cmd_adv
+	beq BT_CMD_STOP_ADV,check_51cmd_stop_adv
+	beq BT_CMD_START_DIRECT_ADV,check_51cmd_direct_adv
+	beq BT_CMD_STOP_DIRECT_ADV,check_51cmd_stop_direct_adv
+	beq BT_CMD_LED_BLINK,ui_led_blink_start
+	beq BT_CMD_LED_ON,ui_led_on
+	beq BT_CMD_LED_OFF,ui_led_blink_stop
+	beq BT_CMD_LE_START_CONN,check_51cmd_le_start_con
+	beq BT_CMD_LE_START_SCAN,check_51cmd_start_scan
+	beq BT_CMD_LE_STOP_SCAN,check_51cmd_stop_scan
+	beq BT_CMD_ENTER_HIBERNATE,check_51cmd_hibernate
+	beq BT_CMD_LE_SMP_SECURITY_REQUEST,check_51cmd_le_smp_sec_req
+	beq BT_CMD_LE_START_WRITE,check_51cmd_le_start_write
+	beq BT_CMD_BB_RECONN_CANCEL,check_51cmd_bb_reconn_cancel
+ifdef COMPILE_24G
+	beq BT_CMD_START_24G,check_51cmd_start24g
+	beq BT_CMD_STOP_24G,check_52cmd_stop24g
+	beq BT_CMD_PAIR_24G,check_51_cmd_pairing_24g
+endif 
+	//context related, process in context
+	store 1,mem_fifo_temp
+	set1 mark_ext_patch,mark
+	bpatch patch3f_0,mem_patch3f
+	call lmo_fifo_check
+	nbranch check_51cmd_restore,blank  //process this cmd next time while lmo fifo is full
+check_51cmd_once_continue:
+	fetch 1,mem_fifo_temp
+	bmark0 mark_context,check_51cmd_check_idle
+  	beq BT_CMD_ENTER_SNIFF,cmd_in_sniff
+  	beq BT_CMD_EXIT_SNIFF,cmd_exit_sniff
+  	beq BT_CMD_SET_PIN_CODE,check_51cmd_pincode
+	beq BT_CMD_DISCONNECT,check_51cmd_disconnect
+	beq BT_CMD_LE_DISCONNECT,check_51cmd_le_disconnect
+	beq BT_CMD_ROLE_SWITCH,check_51cmd_role_switch
+	beq BT_CMD_STORE_RECONN_INFO_LE,eeprom_store_le_reconn_info
+	beq BT_CMD_STORE_RECONN_INFO_BT,eeprom_store_bd_reconn_info
+	beq BT_CMD_LE_UPDATE_CONN,check_51cmd_ble_update_connect_param
+	beq BT_CMD_DHKEY_NOT_ACCEPT,check_51cmd_dhkey_not_accept
+  	rtn
+
+check_51cmd_dhkey_not_accept:
+	call tid_set_reply
+	jam LMP_DHKey_Check,mem_lmi_opcode2
+	branch parse_lmp_dhkey_check_reject	
+
+check_51cmd_ble_update_connect_param:
+	jam XT_LL_CONNECTION_PARAM_REQ,mem_fifo_temp
+	branch le_xtype_fifo_in
+check_51cmd_check_idle:
+	store 1,mem_fifo_temp
+  	call context_check_idle
+	branch check_51cmd_restore,zero
+	call context_search_plap
+	nrtn zero
+check_51cmd_restore:
+	jam IPC_SKIP_CONTINUE_PROCESS,mem_ipc_skip_continue_proc
+	branch ui_ipc_send_cmd
+
+
+check_51cmd_role_switch:
+  	jam LMP_SLOT_OFFSET,mem_lmo_opcode2
+	set1 mark_switch_initiated,mark
+	nrtn master
+	jam SWITCH_FLAG_INIT,mem_switch_flag
+	jam LMP_SWITCH_REQ ,mem_lmo_opcode2
+	fetch 1,mem_connection_options
+	set0 CONNECTION_SWITCH,pdata
+	store 1,mem_connection_options
+	rtn
+	
+check_51cmd_start_discovery:
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BT_DISCOVERY
+	store 2,mem_ui_state_map
+	jam 3,mem_scan_mode
+	rtn
+	
+check_51cmd_stop_discovery:
+	jam 0,mem_hid_handshake_timer_count
+	jam 0,mem_scan_mode
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_BT_DISCOVERY
+	store 2,mem_ui_state_map
+	rtn
+	
+check_51cmd_reconnect:	
+	jam hci_cmd_create_conn,mem_hci_cmd
+	rtn
+	
+check_51cmd_disconnect:
+	jam LMP_DETACH,mem_lmo_opcode2
+	jam OTHER_END_TERMINATED,mem_disconn_reason_send
+	rtn
+	
+	
+check_51cmd_enter_sniff_subrating:
+	rtn
+	
+check_51cmd_exit_sniff_subrating:
+	rtn	
+	
+check_51cmd_sniff_test:
+	rtn
+	
+check_51cmd_pincode:
+	jam pincode_state_pincode_ready,mem_pincode_state
+	branch cmd_pair
+
+check_51cmd_inq:
+	rtn
+check_51cmd_stop_inq:
+	rtn
+check_51cmd_adv:
+	jam ON,mem_le_adv_enable
+	jam ADV_IND,mem_le_adv_type
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BLE_ADV,pdata
+	store 2,mem_ui_state_map
+	rtn
+check_51cmd_stop_adv:
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_BLE_ADV,pdata
+	store 2,mem_ui_state_map
+	jam OFF,mem_le_adv_enable
+	rtn
+check_51cmd_direct_adv:
+	jam ON,mem_le_adv_enable
+	jam ADV_DIRECT_IND,mem_le_adv_type
+	fetch 2,mem_ui_state_map
+	set1 UI_STATE_BLE_ADV,pdata
+	store 2,mem_ui_state_map
+	rtn
+check_51cmd_stop_direct_adv:
+	fetch 2,mem_ui_state_map
+	set0 UI_STATE_BLE_ADV,pdata
+	store 2,mem_ui_state_map
+	jam OFF,mem_le_adv_enable
+	rtn
+check_51cmd_le_disconnect:
+	setarg 10 // 100ms
+	store 2,mem_le_superto
+	jam XT_LL_TERMINATE_IND,mem_fifo_temp
+	branch le_xtype_fifo_in
+check_51cmd_le_start_con:
+	jam ON,mem_le_scan_enable
+	jam hci_cmd_le_create_conn,mem_hci_cmd
+//	fetch 6,mem_app_peer_addr
+//	store 6,mem_le_conn_peer_addr
+	rtn
+check_51cmd_start_scan:
+	jam ON,mem_le_scan_enable
+	rtn
+check_51cmd_stop_scan:
+	jam OFF,mem_le_scan_enable
+	jam 0,mem_hci_cmd
+	rtn
+check_51cmd_le_smp_sec_req:
+	jam XT_SMP_SECURITY_REQUEST,mem_fifo_temp
+	branch le_xtype_fifo_in
+check_51cmd_hibernate:
+	set1 mark_ext_patch,mark
+	bpatch patch3f_1,mem_patch3f
+	fetch 2,mem_cb_before_hibernate
+	call callback_func
+	enable user
+	hfetch 4,0x8138
+	setflag user,26,pdata
+	hstore 4,core_lpm_reg
+	call  lpm_write_ctrl
+	fetch 1,mem_ui_button_gpio
+	beq UI_BUTTON_GPIO_DISABLE,check_51cmd_hibernate_btn_disabled
+	copy pdata,temp
+	call gpio_config_input
+check_51cmd_hibernate_btn_disabled:
+	call ui_led_off
+	call ui_ipc_clean_all_fifo
+	branch lpm_hibernate
+	
+check_51cmd_le_start_write:
+	jam 1,mem_le_switch_send_data
+	rtn
+
+check_51cmd_bb_reconn_cancel:
+	force page_length_timer,queue
+	branch timer_stop
+
+ifdef COMPILE_24G
+check_51cmd_start24g:
+	fetch 4,mem_24g_addr_copy
+	store 4,mem_24g_addr
+	branch g24_init
+check_52cmd_stop24g:
+	jam P24G_SM_PAIRING_SUCC,mem_24g_pairing_sm
+	branch g24_uninit
+check_51_cmd_pairing_24g:
+	jam P24G_SM_PAIRING_REQUEST,mem_24g_pairing_sm
+	call g24_init
+	setarg -1
+	store 4,mem_24g_addr
+	branch g24_pairing_ch		//must change ch at last
+endif
+
+ui_check_paring_button:
+	fetch 1,mem_ui_state_map
+	rtnbit0 UI_STATE_BTN_DOWN
+	rtnbit0 UI_STATE_BT_RECONNECT
+	branch check_51cmd_bb_reconn_cancel
+
+
Index: Standard_mouse/btms/rom/utility.prog
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/rom/utility.prog	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/rom/utility.prog	(working copy)
@@ -0,0 +1,606 @@
+
+right_shift_n: //rshiftN pdata,pdata
+	sub loopcnt,0,null
+	rtn zero
+right_shift_n_loop: 
+	rshift pdata,pdata
+	loop right_shift_n_loop
+	rtn
+	
+push_stack:
+	deposit contw
+	store 2, mem_contw
+	storet 8,mem_temp
+	deposit timeup
+	store 4,mem_timeup
+	deposit rega
+	store 4, mem_rega
+	deposit regb
+	store 4, mem_regb
+	deposit regc
+	store 3, mem_regc
+	deposit contr
+	store 2, mem_contr
+	rtn
+pop_stack:
+	fetcht 8,mem_temp
+	fetch 4,mem_timeup
+	iforce timeup
+	fetch 4, mem_rega
+	iforce rega
+	fetch 4, mem_regb
+	iforce regb
+	fetch 3,mem_regc
+	iforce regc
+	fetch 2, mem_contw
+	iforce contw
+	fetch 2, mem_contr
+	iforce contr
+	rtn
+	
+get_contw:
+	fetch 2,mem_contw
+	copy pdata,contw
+	rtn
+get_contr:
+	fetch 2,mem_contr
+	copy pdata,contr
+	rtn
+store_contw:
+	copy contw,pdata
+	store 2,mem_contw
+	rtn
+store_contr:
+	copy contr,pdata
+	store 2,mem_contr
+	rtn	
+	
+
+//
+save_cont_pointers:
+	copy contw,pdata
+	store 2,mem_hold_contw
+	copy contr,pdata
+	store 2,mem_hold_contr
+	rtn
+load_cont_pointers:
+	fetch 2,mem_hold_contw
+	copy pdata,contw
+	fetch 2,mem_hold_contr
+	copy pdata,contr
+	rtn
+
+memcpy96:
+	call memcpy32
+memcpy64:
+	call memcpy32
+	branch memcpy32
+memcpy12:
+	call memcpy8
+memcpy4:
+	ifetch 4,contr
+	istore 4,contw
+	rtn	
+memcpy8:
+	ifetch 8,contr
+	istore 8,contw
+	rtn	
+
+memcpy48:
+	call memcpy16
+memcpy32:
+	call memcpy8
+memcpy24:
+	call memcpy8
+memcpy16:
+	call memcpy8
+	branch memcpy8
+
+
+
+delay_10ms:
+	copy clkn_bt,pdata
+	increase 16,pdata
+	increase 16,pdata
+delay_ms_wait:
+	copy clkn_bt,temp
+	isub temp,null
+	branch delay_ms_wait,positive
+	rtn
+
+bn_zero:
+	force 3,loopcnt
+memset0:
+	force 0,pdata
+memset8:
+	istore   8,contw
+	loop   memset8
+	rtn
+
+memset0_8:
+	force 0,pdata
+	istore 8,contw
+	rtn
+memset0_4:
+	force 0,pdata
+	istore 4,contw
+	rtn	
+	
+clear_mem_256:
+	force 4,loopcnt
+	branch memset0 
+clear_mem_512:
+	force 8,loopcnt
+	branch memset0 
+
+clear_mem:
+	deposit loopcnt
+	rtn blank
+	setarg 0
+clear_mem_loop:
+	istore 1,contw
+	loop clear_mem_loop
+	rtn
+	
+
+clear_temp_block:
+	arg 32,loopcnt
+	arg mem_temp_block0,contw
+	branch clear_mem
+	
+xor_loop:
+	ifetch   4,regc
+	ifetcht 4,rega
+	ixor     temp,pdata
+	istore   4,contw	
+	increase 4,rega
+	increase 4,regc
+	loop  xor_loop
+	rtn
+	
+// 11 22 -> 22 11; 11 22 33 -> 33 22 11 
+// rega:data addr ;loopnct:length
+inverse_data:
+	set1 mark_ext_patch,mark
+	bpatch patch3f_2,mem_patch3f
+	copy loopcnt,pdata
+	sub pdata,1,null
+	rtn positive
+	iadd rega,regb	
+	increase -1,regb
+	rshift loopcnt,loopcnt
+inverse_loop:
+	ifetcht 1,rega
+	ifetch 1,regb
+	istore 1,rega
+	istoret 1,regb
+	increase -1,regb
+	increase 1,rega
+	loop inverse_loop
+	rtn
+
+
+memcpy_fast:
+	deposit loopcnt
+	rtn blank
+memcpy_fast_loop:
+	increase -8,loopcnt
+	call memcpy8,positive
+	rtn zero
+	branch memcpy_fast_loop,positive
+	increase 8,loopcnt
+memcpy_fast_loop_four:
+	increase -4,loopcnt
+	call memcpy4,positive
+	rtn zero
+	branch memcpy_fast_loop_four,positive
+	increase 4,loopcnt
+	branch memcpy
+ 
+memcpy:
+	deposit loopcnt
+	rtn blank
+memcpy_loop:
+	ifetch 1,contr
+	istore 1,contw
+	loop memcpy_loop
+	rtn
+
+timer_stop:
+	setarg 0
+timer_init:
+	rshift clkn_bt,temp
+	storet 4,mem_last_clkn
+	arg mem_timers,contw
+	iforce temp
+	lshift queue,pdata
+	iadd contw,contw
+	istoret 2,contw
+	set1 mark_ext_patch,mark
+	bpatch patch3f_3,mem_patch3f
+	rtn
+
+timer_check_timeout:
+	arg 0x800,timeup
+	lshift16 timeup,timeup
+	iadd timeup,pdata
+	rtn
+
+
+timer_check:
+	set1 mark_ext_patch,mark
+	bpatch patch3f_4,mem_patch3f
+	fetcht 4,mem_last_clkn
+	rshift clkn_bt,pdata
+	store 4,mem_last_clkn	
+	isub temp,null
+	ncall timer_check_timeout,positive	
+	isub temp,timeup
+	copy timeup,temp
+	arg mem_timers,contr
+	copy contr,contw
+	arg 16,loopcnt
+timer_loop:
+	ifetch 2,contr
+	isub temp,pdata
+	branch timer_counting,positive
+	force 0,pdata
+timer_counting:
+	istore 2,contw
+	loop timer_loop	
+	arg mem_timers,contr
+	lshift queue,pdata
+	iadd contr,contr
+	ifetch 2,contr
+	rtn
+
+
+
+	/* pdata 28+16 bit add temp 26+16 bit, result in temp */
+clk_add:
+	iadd temp,temp
+	copy temp, loopcnt
+	setarg 3750
+	isub loopcnt,pdata
+	rtn positive
+	sub pdata,0,pdata
+	rshift16 temp,temp
+	increase 1,temp
+	lshift16 temp,temp
+	ior temp,temp
+	rtn
+
+clk_diff_rt:
+	call clk_diff
+	branch clk2rt
+
+/* pdata -temp -> pdata, all are 28+16 bits, set user if negative */
+clk_diff:
+	disable user
+	isub temp,pdata
+	branch clk_diff_pos,positive
+	enable user
+	sub pdata,0,pdata
+clk_diff_pos:
+	rtnbit0 15
+	arg -61786,temp
+	iadd temp,pdata
+	set0 64,pdata
+	rtn
+
+clk2rt:
+	iforce contr
+	rshift16 pdata,pdata
+	arg 3750,temp
+	imul32 temp,pdata
+	iadd contr,pdata
+	rtn
+
+	/* pdata = clks in, temp = lpo out */
+clk2lpo:
+	lshift8 pdata,pdata
+	lshift4 pdata,pdata
+	fetcht 3,mem_clks_per_lpo
+	idiv temp
+	call wait_div_end
+	quotient temp
+	rtn
+
+	/* rt clk -> bt+rt clk */
+clk2bt:
+	arg 3750,temp
+	idiv temp
+	call wait_div_end
+	quotient pdata
+	lshift16 pdata,pdata
+	remainder temp
+	ior temp,temp
+	rtn
+
+
+
+//input:contru 
+//output:temp
+//used register: temp regc
+string2dec_from_uart:
+	arg 0,temp
+string2dec_from_uart_done:
+         copy temp,regc
+	ifetch 1,contru
+	call uchar2dialog	
+	copy regc,temp
+	call swap
+	arg 10,regb
+	imul32 regb,pdata
+	iadd temp,pdata
+	copy pdata,temp
+	loop string2dec_from_uart_done
+	rtn
+	
+
+
+uchar2dialog:
+	arg 0x3a,temp
+	isub temp,null
+	nbranch uchar2dialog_number,positive
+	arg 0x61,temp
+	isub temp,null
+	branch uchar2dialog_a2f,positive
+	arg 0x37,temp
+	isub temp,pdata
+	rtn
+uchar2dialog_number:
+	arg 0x30,temp
+	isub temp,pdata
+	rtn
+uchar2dialog_a2f:
+	arg 0x57,temp
+	isub temp,pdata
+	rtn
+
+pn9:
+	copy temp,alarm
+	setarg 0x1ff
+	force 0,regb
+pn9_loop:	
+	rshift3 pdata,rega
+	rshift rega,rega
+	ixor rega,rega
+	isolate1 0,rega
+	setflag true,9,pdata
+	rshift temp,temp
+	isolate1 0,pdata
+	setflag true,7,temp
+	rshift pdata,pdata
+	increase 1,regb
+	compare 0,regb,0x7
+	nbranch pn9_loop,true
+	istoret 1,contw
+	loop pn9_loop
+	copy alarm,temp
+	rtn
+
+
+wait_div_end:	
+	rtn modone
+	branch wait_div_end
+
+
+
+
+//input:
+//	count:loopcnt str1:rega str2:regb
+//output:
+//	same:set falg true ,diff set falg false
+// using:
+//	reg:temp null flag:zero
+string_compare:
+	ifetch 1,rega
+	ifetcht 1,regb
+	isub temp,null
+	nrtn zero
+	increase 1,rega
+	increase 1,regb
+	loop string_compare
+	force 0,null
+	rtn
+
+	/* pdata = temp if pdata > temp */
+ceiling:
+	isub temp,null
+	nrtn positive
+	deposit temp
+	rtn
+	
+swap:
+	iadd temp,pdata
+	isub temp,temp
+	isub temp,pdata
+	rtn
+
+clean_mem:
+	arg 0x200,loopcnt
+	arg 0x4000,contw
+	branch memset0				// clear xram at boot
+/*
+slave_savelist:
+	fetch 5,mem_sync_clke
+	store 5,mem_pdatatemp
+	fetch 2,mem_clks_per_lpo
+	istore 2,contw
+	setarg 0
+	setflag match,7,pdata
+	setflag wake,6,pdata
+	setflag sync,5,pdata
+	setflag attempt,4,pdata
+	istore 1,contw
+	branch savelist_2
+
+
+le_savelist:
+	fetch 5,mem_sync_clke
+	store 5,mem_pdatatemp
+	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
+	branch savelist_2
+savelist:		
+	store 8,mem_pdatatemp
+savelist_2:
+	fetch 1,mem_seqi
+	rtneq 0x7f
+	and_into 0x7f,pdata
+	lshift3 pdata,pdata
+	arg mem_savelist,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	
+*/
+
+	//cb function ptr in pdata
+callback_func:
+	rtn blank
+	copy pdata,pc	//rtn through cb functon.
+	//branch assert
+
+wait_uarttx:
+	hfetch 2,core_uart_txitems
+	nbranch wait_uarttx,blank
+	rtn
+
+get_uart_rrptr:
+	hfetch 2,core_uart_rrptr
+	copy pdata,contru
+	rtn 
+
+
+ice_break:
+	hjam 0x1,core_ice_ctrl
+	rtn
+
+ice_setbp:
+	hstore 2,core_ice_break0
+	hfetch 1,core_ice_ctrl
+	set1 4,pdata
+	hstore 1,core_ice_ctrl
+	rtn
+ice_setbp2:
+	hstore 2,core_ice_break1
+	hfetch 1,core_ice_ctrl
+	set1 6,pdata
+	hstore 1,core_ice_ctrl
+	rtn
+	
+ice_set_write_bp:
+	hstore 2,core_ice_break0
+	hjam 0x30,core_ice_ctrl
+	rtn
+	
+
+
+test_enable_white:
+	hfetch 1,core_config
+	set0 whiteoff_bit,pdata
+	hstore 1,core_config			/* whitening on */
+	rtn
+
+check_uart_tx_buff:
+	hfetch 2,core_uart_txitems
+	arg UART_AIR_CONTROL_THRESHOLD,temp
+pdata_sub_temp:
+	isub temp,null
+	rtn
+
+	//fuction fifo_in
+	//rega pointer to fifo memory , *(rega+len) is the end of fifo
+	//mem_fifo_temp data into fifo
+	//assert if fifo was full
+fifo_in:
+	set1 mark_ext_patch,mark
+	bpatch patch3f_5,mem_patch3f
+	ifetcht UTIL_FIFO_LEN,rega
+	and temp,0xff,pdata
+	nbranch fifo_in_push,blank
+	rshift8 temp,pdata
+	istore UTIL_FIFO_LEN,rega
+fifo_in_push:
+	increase UTIL_FIFO_LEN+UTIL_FIFO_OFFSET,rega
+	ifetch 1,rega
+	nbranch assert,blank //fifo full
+	fetch 1,mem_fifo_temp
+	istore 1,rega
+	rtn
+	
+	//fuction fifo_out
+	//rega pointer to fifo memory
+	//pdata  data from fifo, blank mains fifo empty
+fifo_out:
+	set1 mark_ext_patch,mark
+	bpatch patch3f_6,mem_patch3f
+	arg UTIL_FIFO_LEN,loopcnt
+	ifetch UTIL_FIFO_LEN,rega
+	rtn blank
+fifo_out_loop:
+	ifetch 1,rega
+	nbranch fifo_out_end,blank
+	increase 1,rega
+	loop fifo_out_loop
+	branch assert
+fifo_out_end:
+	arg 0,temp
+	istoret 1,rega
+	rtn
+
+	//fuction fifo_is_empty
+	//rega pointer to fifo memory
+	//blank--- fifo is empty
+fifo_is_empty:
+	ifetch UTIL_FIFO_LEN,rega
+	rtn
+
+	//fuction fifo_is_full
+	//rega pointer to fifo memory
+	//blank--- fifo is NOT full
+fifo_is_full:
+	ifetch 1,rega
+	rtn
+	//rega pointer to fifo memory
+	//blank--- fifo is NOT near full
+fifo_is_near_full:
+	ifetch 2,rega
+	rtn
+
+	//rega pointer to fifo memory
+	//count output via pdata
+fifo_content_count:
+	arg 0,temp
+fifo_content_count_loop:
+	fetch 1,contr
+	loop fifo_content_count_loop,blank
+	increase 1,temp
+	loop fifo_content_count_loop
+	copy temp,pdata
+	rtn
+	
+not_greater_than:
+	isub temp,null
+	nrtn positive
+	copy temp,pdata
+	rtn
+
+
Index: Standard_mouse/btms/sched/patch.dat
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/sched/patch.dat	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/sched/patch.dat	(working copy)
@@ -0,0 +1,84 @@
+mem_patch00:09
+mem_patch10:40
+mem_patch11:0c
+mem_patch14:80
+mem_patch15:13
+mem_patch16:f0
+mem_patch20:20
+mem_patch22:40
+mem_patch23:08
+mem_patch24:08
+mem_patch25:80
+mem_patch26:0e
+mem_patch27:f2
+mem_patch28:04
+mem_patch29:20
+mem_patch32:20
+mem_patch3e:88
+mem_patch3f:03
+
+##49   #mem_patch00	#49 enable HID
+##02   #mem_patch01	#02 enable HID
+##00   #mem_patch02
+##00   #mem_patch03
+##60   #mem_patch04	#60 enable HID
+##02   #mem_patch05	#02 enable HID
+##00   #mem_patch06
+##80   #mem_patch07	#80 enable HID
+##00   #mem_patch08
+##10   #mem_patch09	#10 enable HID
+##01   #mem_patch0A	#01 enable HID
+##00   #mem_patch0B
+##00   #mem_patch0C
+##00   #mem_patch0D
+##00   #mem_patch0E
+##00   #mem_patch0F
+##40   #mem_patch10
+##0c   #mem_patch11
+##00   #mem_patch12
+##00   #mem_patch13
+##80   #mem_patch14
+##13   #mem_patch15
+##f0   #mem_patch16
+##00   #mem_patch17
+##00   #mem_patch18
+##01   #mem_patch19	#01 enable HID
+##00   #mem_patch1A
+##00   #mem_patch1B
+##00   #mem_patch1C
+##00   #mem_patch1D
+##00   #mem_patch1E
+##00   #mem_patch1F
+##20   #mem_patch20
+##00   #mem_patch21
+##40   #mem_patch22
+##08   #mem_patch23
+##08   #mem_patch24
+##80   #mem_patch25
+##0e   #mem_patch26
+##d0   #mem_patch27
+##04   #mem_patch28
+##20   #mem_patch29
+##60   #mem_patch2A	#60 enable HID
+##41   #mem_patch2B	#41 enable HID
+##00   #mem_patch2C
+##00   #mem_patch2D
+##00   #mem_patch2E
+##00   #mem_patch2F
+##00   #mem_patch30
+##00   #mem_patch31
+##20   #mem_patch32
+##00   #mem_patch33
+##00   #mem_patch34
+##40   #mem_patch35	#40 enable HID
+##00   #mem_patch36
+##00   #mem_patch37
+##00   #mem_patch38
+##01   #mem_patch39	#01 enable HID
+##00   #mem_patch3A
+##00   #mem_patch3B
+##00   #mem_patch3C
+##00   #mem_patch3D
+##88   #mem_patch3E
+##03   #mem_patch3F
+
Index: Standard_mouse/btms/sched/rf.dat
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/sched/rf.dat	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/sched/rf.dat	(working copy)
@@ -0,0 +1,35 @@
+mem_lpm_config:8f 1b ce
+mem_lpm_buckcnt:0a 0b ef 0f
+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_page_to:00 20
+mem_rx_window_init:80 04
+mem_rx_window_sniff:00 08
+mem_le_rx_window_inc:00 40
+
+mem_lmp_version: 09 59 00 B0 00    #04 0a 00 e9 12
+
+mem_eeprom_base:30 6f
+mem_eeprom_block_size:20
+
+mem_context_number:01
+
+mem_rf_init_data_new:
+# tx power
+55 d0
+56 c0
+57 4c
+58 3c
+59 50
+ff
+mem_rf_init_ptr:mem_rf_init_data_new
Index: Standard_mouse/btms/sched/user.dat
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/sched/user.dat	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/sched/user.dat	(working copy)
@@ -0,0 +1,820 @@
+
+#mem_class: 80 25 00
+#mem_lap:ab ab 66 63 5d 6c
+#mem_local_name_length:
+#'bt mouse
+#mem_sniff_param_interval:0c 00
+#mem_sniff_param_attempt:01
+#mem_sniff_param_timeout:01
+#mem_unsniff2sniff_timer:0a
+mem_ssp_enable:00
+#mem_sp_iocap_local:03 00 04
+mem_ui_profile_supported:01
+
+#mem_eir_enable:01
+
+#mem_all_uuid_16bits:
+#06
+#03#Type: Complete list of 16-bit UUIDs
+#1100 0001 0210 2411  0012  0100
+
+mem_all_uuid_128bits:00
+
+#mouse uuid
+#mem_device_uuid_list:
+#04 0011 0100 1002 1124
+#00 01 00 00
+#36 01 61
+#09
+#00
+#00
+#0a
+#00
+#01
+#00
+#09
+#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#YiChip
+#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#YiChip
+#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
+#0c
+#80
+#09
+#02
+#0d
+#28
+#00
+#09
+#02
+#0e
+#28
+#01
+#
+#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#SpecificationID
+#09 01 03#DeviceID Spec Version:1.3
+#
+#09 02 01# VendorID
+#09 0a 5c#Unknown See http://www.bluetooth.org/assigned-number.htm
+#
+#09 02 02#ProductID
+#09 00 01#0x0001
+#
+#09 02 03#Version
+#09 01 29#Product Version:1.2.9
+#09
+#02
+#04
+#28
+#01
+#09
+#02
+#05
+#09
+#00
+#02
+#00
+#00
+#
+#01 00 01
+#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
+
+#mem_ui_uuid_table:mem_device_uuid_list
+#Auto reconnection after power on
+mem_device_option:42
+#mem_ptt:0
+#mem_features:
+#ff
+#ff
+#8f
+#f8	#fe--EDR  F8--BR
+#9b	#AFHclose 83
+#9d
+#51
+#82
+
+#bluetootch param init
+mem_sp_flag:00
+mem_lpm_current_mult:00
+mem_master_sp_flag:00
+mem_le_ch_mapped:27
+mem_ui_button_gpio:ff
+mem_led_gpio:ff
+
+#2=mouse 4=dongle 6=ukey 7=ir
+mem_lpm_mode:01
+mem_lpm_mult:20
+mem_lpm_mult_timeout:03
+mem_lpm_overhead:08
+mem_lpm_interval:00 00
+mem_scan_mode:00
+mem_ipc_tx_evt_buff:02 01
+
+mem_adc_config_flag:04
+mem_adc_channel:30
+mem_adc_0v:9f 3e
+mem_adc_3v:cd 4d
+
+
+mem_le_adv_own_addr_type:00
+mem_le_adv_channel_map:07 
+mem_le_adv_filter_policy:00
+mem_le_transmit_window:50
+mem_le_notify_handle:1a
+mem_le_lap:ab b9 12 0e 10 26			#bluetooth MAC address
+mem_le_name_len:			#bluetooth name
+'BLE Mouse
+
+mem_le_local_mtu:17
+mem_le_adv_type:00
+mem_le_adv_direct_addr_type:01
+mem_le_adv_direct_addr:00 00 00 00 00 00
+mem_le_adv_enable:00
+
+mem_le_adv_data_len:1f
+mem_le_adv_data:
+#appearance
+03 19 c2 03
+
+#uuid
+03 03 12 18
+
+#flag 
+02 01 05
+
+#name
+'\09BLE Mouse
+
+
+mem_le_scan_data_len:1f
+mem_le_scan_data:
+#name
+'\09BLE Mouse
+
+
+#attribute list: handle 2bytes, uuid 2bytes, length 1bytes, attribute Nbytes
+mem_device_le_att_list:
+
+#Primary service GAP ------
+01 00 02 00 28 02 00 18 
+
+#Device name
+02 00 02 03 28 01 0a
+03 00 02 00 2a
+'BLE Mouse
+
+#Appearance
+04 00 02 03 28 01 02
+05 00 02 01 2a 02 c2 03 #3c2=hid mouse
+
+#Peripheral Preferred Connection Parameters
+06 00 02 03 28 01 02
+07 00 02 04 2a 08 06 00 06 00 64 00 2c 01 # interval 6ms, latency 100, timeout 300
+
+#Primary service GATT ------
+08 00 02 00 28 02 01 18
+#Service changed
+09 00 02 03 28 01 20
+0a 00 02 05 2a 00
+#Client Characteristic Configuration
+0b 00 02 02 29 02 00 00
+#Primary service device information ------
+0c 00 02 00 28 02 0a 18
+#Manufacturer Name
+0d 00 02 03 28 01 02
+0e 00 02 29 2a 06 59 69 43 68 69 70
+#PNP id
+0f 00 02 03 28 01 02
+10 00 02 50 2a 07 02 35 12 22 aa 01 00
+#Primary service battery ------
+11 00 02 00 28 02 0f 18
+#Battery level
+12 00 02 03 28 01 02
+13 00 02 19 2a 01 33
+#Client Characteristic
+14 00 02 02 29 02 00 00
+
+#Primary service hid ------
+15 00 02 00 28 02 12 18
+
+#Protocol mode
+16 00 02 03 28 01 06
+17 00 02 4e 2a 01 01
+
+#Hid report
+18 00 02 03 28 01 1a
+19 00 02 4d 2a 07 00 00 00 00 00 00 00
+
+#Client Characteristic
+1a 00 02 02 29 02 00 00
+
+#Report reference
+1b 00 02 08 29 02 01 01 # report id=1, type=1 input
+
+#Report map
+1c 00 02 03 28 01 0a
+1d 00 02 4b 2a 45 # length 72 bytes
+
+05 01 # Usage Page(Generic Desktop)
+09 02 # Usage(Mouse)
+a1 01 # Collection(Application)
+85 01 # Report ID(1)
+09 01 # Usage(Pointer)
+a1 00 # Collection(Physical)
+05 09 # Usage Page(Buttons)
+19 01 # Usage Minimum(1)
+29 08 # Usage Maximum(8)
+15 00 # Logical Minimum(0).
+25 01 # Logical Maximum(1)
+75 01 # Report Size(1)
+95 08 # Report Count(8)
+81 02 # Input(Data Variable Absolute)
+
+05 01 # Usage Page(Generic Desktop)
+09 30 # Usage(X)
+09 31 # Usage(Y)
+16 01 f8 # Logical Minimum(-2047)
+26 ff 07 # Logical Maximum(2047)
+75 10 # Report Size(16)
+95 02 # Report Count(2)
+81 06 # Input(Data Variable Relative)
+
+09 38 # Usage(Wheel)
+15 81 # Logical Minimum(-127)
+25 7f # Logical Maximum(127)
+75 08 # Report Size(8)
+95 01 # Report Count(1)
+81 06 # Input(Data Variable Relative)
+05 0c # Usage Page(Consumer)
+0a 38 02 # Usage(AC Pan)
+95 01 # Report Count(1)
+81 06 # Input(Data Variable Relative)
+c0 # End Collection
+c0 # End Collection
+
+#Boot mouse input report
+1e 00 02 03 28 01 1a
+1f 00 02 33 2a 08 00 00 00 00 00 00 00 00
+
+#Client Characteristic
+20 00 02 02 29 02 01 00
+
+#Hid information
+21 00 02 03 28 01 02
+22 00 02 4a 2a 04 01 01 00 03
+
+#Hid control point
+23 00 02 03 28 01 04
+24 00 02 4c 2a 00
+
+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
+
+#End of Attribute list
+00 00
+
+mem_ui_le_uuid_table:mem_device_le_att_list
+
+mem_le_rx_winsows:50
+
+mem_le_interal_min:
+07 00 #min interval
+07 00 #max interval
+05 00 #latency
+2c 01 #timeout
+
+mem_empty_count_user:00
+#mem_le_att_report1:13 00
+mem_le_att_report2:19 00
+mem_le_pairing_handle:22 00
+mem_le_pairing_mode:01
+mem_le_flag:01
+
+mem_tx_power:02#3dbm
+
+mem_le_start_fast_conn_count:01
+mem_le_init_eeprom_base_count:01
+
+#24g init
+mem_new_24g_mode:01#tx
+mem_new_24g_data_type:01	#mouse 1,kb 2
+mem_new_24g_max_retry:04#max tx retry
+mem_new_24g_no_ack:00#with ack
+mem_new_24g_rx_window:c0 12	#400us
+mem_new_24g_interval:19
+mem_new_24g_interval_min:19
+mem_new_24g_interval_max:1c
+mem_new_24g_ch_map1:00 13 2c 42
+mem_new_24g_ch_map2:06 15 36 48
+mem_new_24g_ch_map3:0f 1a 3a 4c
+mem_new_24g_ch_map4:11 23 31 4d
+mem_new_24g_pairing_sm:ff
+mem_new_24g_paring_addr:20 15 10 05
+mem_new_24g_common_temp:00 00 00 00 00 00 00 00 00 00
+mem_new_24g_enter_hibernate:00 48 60 00 00 00 00 00#10 min
+
+
Index: Standard_mouse/btms/util/a1bugfix.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/a1bugfix.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/a1bugfix.pl	(working copy)
@@ -0,0 +1,81 @@
+#get sched ram content
+$add = 0;
+if(open file, "sched.rom") {
+	while(<file>) {
+		next if(/^#/);
+		s/#.*//g;
+		if(/^([a-z0-9_]+):(.*)/) {
+			push @dat, $1;
+			$_ = $2;
+		}
+		if(/^\'/) {
+			s/[\'\r\n]//g;
+			for($i = 0;$i < length($_);$i++) {
+				push @dat, ord(substr($_, $i, 1));
+			}
+		} else {
+			s/\s//g;
+			for($i = 0;$i < length($_);$i+=2) {
+				push @dat, hex(substr($_, $i, 2));
+			}
+		}
+	}
+	close file;
+}
+for($j = $k = $n = 0;$j < @dat;$j++) {
+	if($dat[$j] =~ /^mem_/ && $j > 0 || $n == 3) {
+		push @init, sprintf "\tsetarg 0x%x\n", $k;
+		push @init, sprintf "\tistore %d,contw\n", $n;
+		$n = $k = 0;
+	}
+	if($dat[$j] =~ /^mem_/) {
+		push @init, sprintf "\targ %s,contw\n", $dat[$j];
+	} else {
+		$k |= $dat[$j] << $n++*8;
+	}
+}
+push @init, sprintf "\tsetarg 0x%x\n", $k;
+push @init, sprintf "\tistore %d,contw\n", $n;
+
+open file,"eeprom.dat";
+for($i = 0;$i < 4;$i++) {
+	$_ = <file>;
+}
+close file;
+$len = int(((hex($_) + @init*4 + 12) & 0xff)/4);
+if($len > 0x3b) {
+	for($i = 0;$i < 0x40 - $len;$i++) { push @init, "\trtn\n"; }
+	$len = 0;
+}
+printf "len=%x\n", $len;
+
+open file, "bt_program23.list";
+while(<file>){
+	if(/^0x([0-9a-f]+)\s+([0-9]+)/)  {
+		$line = 0 + $2;
+		last if(hex($1) == $len);
+	}
+}
+close file;
+open file, "bt_program23.meta";
+@f = <file>;
+close file;
+
+
+open file, ">bt_program23.meta";
+for($i = 0;$i < @f;$i++) { 
+	$_ = $f[$i];
+	if($i == $line) {
+		printf file "\tbranch skip_a1bugfix_romdat\n";
+		printf file "\tromdat 0x00,0x00,0x55,0xaa\n";
+		printf file "\tromdat 0x00,0x08,0x90,0x01\n";
+		printf file "\tromdat 0xa0,0x74,0x01,0xf0\n";
+		printf file "\tromdat 0x80,0xfe,0x00,0x00\n";
+		printf file "skip_a1bugfix_romdat:\n";
+	}
+	print file $_;
+	if(/^init_sched:/) {
+		print file @init;
+	}
+}
+close file;
Index: Standard_mouse/btms/util/bytecnt.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/bytecnt.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/bytecnt.pl	(working copy)
@@ -0,0 +1,12 @@
+while(<stdin>) {
+	next if(/^#/);
+	s/#.*//g;
+	if(/^\'/) {
+		s/[\r\n]//g;
+		$len += length($_) - 1;
+	} else {
+		s/\s//g;
+		$len += length($_)/2;
+	}
+}
+printf "len = %x\n", $len;
Index: Standard_mouse/btms/util/crc16_ccitt.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/crc16_ccitt.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/crc16_ccitt.pl	(working copy)
@@ -0,0 +1,61 @@
+sub swap
+{
+	my($b) = @_;
+	my($i, $j);
+	for($i = 0, $j = 0;$i < 8;$i++) {
+		$j |= 1 << $i if($b & 1 << (7 - $i)); 
+	}
+	return $j;
+}
+
+@crc_tabccitt = ();
+$initd = 0;
+sub init_crcccitt_tab
+{
+	my($crc, $i, $c, $j);
+
+  for ($i=0; $i<256; $i++) {
+      $crc = 0;
+      $c   = $i << 8;
+      for ($j=0; $j<8; $j++) {
+          if ( ($crc ^ $c) & 0x8000 ) {	$crc = ( $crc << 1 ) ^ 0x1021;	}
+          else  { $crc =   $crc << 1; }
+          $c = $c << 1;
+      }
+      $crc_tabccitt[$i] = $crc & 0xffff;
+  }
+	$initd = 1;
+}
+
+sub crc16_ccitt 
+
+{
+	my($crc, $c) = @_;
+	my($tmp, $short_c);
+
+	init_crcccitt_tab() if(!$initd);
+  $short_c  = 0x00ff & $c;
+
+  $tmp = ($crc >> 8) ^ $short_c;
+  $crc = (($crc << 8) ^ $crc_tabccitt[$tmp]) & 0xffff;
+
+  return $crc;
+
+} 
+
+sub crc16_ccitt2
+{
+	my($crc, $c) = @_;
+
+  $crc  = ($crc >> 8) | ($crc << 8);
+  $crc ^= $c;
+  $crc ^= ($crc & 0xff) >> 4;
+  $crc ^= $crc << 12;
+  $crc ^= ($crc & 0xff) << 5;
+  $crc &= 0xffff;
+ return $crc;
+}
+
+init_crcccitt_tab();
+
+1;
\ No newline at end of file
Index: Standard_mouse/btms/util/define_info.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/define_info.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/define_info.pl	(working copy)
@@ -0,0 +1,55 @@
+use strict;
+use warnings;
+
+sub read_definfo{
+	my $filename = shift();
+	my $const_chip = "CHIP VERSION：";
+	my $const_config = "CONFIG: ";
+	my $version = "";
+	my @res;
+	open(FILE,$filename) || die("can not open file:$filename ！\n");
+	while(my $line = <FILE>){
+		next if ($line eq "\n"||$line =~ "REVD");
+		last if ($line =~ "INCLUDE");
+		last if ($line =~ "SIMPLE_PAIRING");
+		
+		if ($line =~ "FPGA" && $line !~ "//"){
+			$version = $version."FPGA";
+		}elsif($line =~ "ROMCODE" && $line !~ "//"){
+			$version = $version."ROMCODE";
+			print $const_chip.$version."\n\n";
+		}elsif($line !~ "//"){				# valid
+			if ($line =~"liandi"){
+				print "baud rate  : boot rate\n";
+				}
+			elsif ($line =~ "CREDIT"){
+				print "credit     : from mcu\n";
+				}
+			elsif ($line =~ "SSP_EXT"){
+				print "ssp confirm: suport\n";
+				}
+			elsif ($line =~ "NVRAM"){
+				print "nvram      : by mcu\n";
+			}elsif ($line=~"RELEASE"){
+				print "version    : release\n";
+			}
+		}elsif ($line =~ "//"){				#noted
+			if ($line =~"liandi"){
+				print "baud rate  : 115200 or other \n";
+				}
+			elsif ($line =~ "CREDIT"){
+				print "credit     : auto\n";
+				}
+			elsif ($line =~ "SSP_EXT"){
+				print "ssp confirm: justwork only\n";
+				}
+			elsif ($line =~ "NVRAM"){
+				print "nvram      : in eep\n";
+			}elsif ($line =~ "RELEASE"){
+				print "version    : debug\n";
+			}
+		}
+	}
+}
+
+&read_definfo("bt.prog");
\ No newline at end of file
Index: Standard_mouse/btms/util/gen_patch_h.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/gen_patch_h.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/gen_patch_h.pl	(working copy)
@@ -0,0 +1,135 @@
+#!/usr/bin/perl
+sub clear_print_buf{
+	for($i = 0; $i < 10; $i++){
+		$binData[$i] = 0;
+	}
+}
+
+sub print_line{
+	if($byte_cnt == 0){
+		#new line print header;
+		$offset = $patch_cmd_len * $line_cnt;
+		printf "{";
+		printf "0x%x%x, ", ($offset / 16 )     % 16, ($offset)       % 16;
+		printf "0x%x%x, ", ($offset / 4096)    % 16, ($offset / 256) % 16;
+		printf "0x%x%x, ", ($patch_cmd_len / 16) % 16, ($patch_cmd_len)  % 16;
+		$line_cnt ++;
+	}
+	printf "0x%s%s, 0x%s%s, 0x%s%s, 0x%s%s",$binData[0],$binData[1],$binData[2],$binData[3],$binData[4],$binData[5],$binData[6],$binData[7];
+	
+	$byte_cnt += 4;
+	if($byte_cnt >= $patch_cmd_len){
+		$byte_cnt = 0;
+		printf "},\n\t";
+	}else{
+		printf ", ";
+	}
+}
+
+################STATIC########################
+
+$patch_cmd_len = 96;
+$patch_cmd_header_len = 3;
+$patch_cmd_checksum_len = 1;
+
+################main fuction##################
+
+printf "/******************************************************************************\n";
+printf " ** File Name:      yc_patch_yc1021.h                                         *\n";
+printf " **                                                                           *\n";
+printf " ******************************************************************************\n";
+printf "\n";
+printf " ******************************************************************************\n";
+printf " **                               Edit History                                *\n";
+printf " ** ------------------------------------------------------------------------- *\n";
+printf " **     DATE          NAME             DESCRIPTION                            *\n";
+printf " **  2015.3.17       fan.kou            Create.                               *\n";
+printf " ******************************************************************************/\n";
+printf "/******************************************************************************/\n";
+printf "#ifndef _YC_PATCH_YC1021_H_2015_03_17_16_39_59_298_\n";
+printf "#define _YC_PATCH_YC1021_H_2015_03_17_16_39_59_298_\n";
+printf "\n";
+printf "/**---------------------------------------------------------------------------*\n";
+printf " **                             Dependencies                                  *\n";
+printf " **---------------------------------------------------------------------------*/\n";
+printf "/**---------------------------------------------------------------------------*\n";
+printf " **                            Compiler Flag                                  *\n";
+printf " **---------------------------------------------------------------------------*/\n";
+printf "#ifdef __cplusplus\n";
+printf "extern   \"C\" \n";
+printf "{\n";
+printf "#endif\n";
+printf "/**---------------------------------------------------------------------------*\n";
+printf " **                           Macros & Enums                                  *\n";
+printf " **---------------------------------------------------------------------------*/\n";
+
+open(FILE,"ramcode.rom") or die $!;
+$line_cnt = 0;
+while($line = <FILE>){
+	$line_cnt++;
+}
+$cmd_cnt = $line_cnt * 4 / $patch_cmd_len + (($line_cnt * 4 % $patch_cmd_len) > 0);
+close(FILE);
+
+printf "#define YC_PATCH_CMD_CNT %d\n",$cmd_cnt;
+printf "#define YC_PATCH_CMD_LEN %d\n",$patch_cmd_len + $patch_cmd_header_len + $patch_cmd_checksum_len;
+printf "#define YC_PATCH_ARRAY_LEN 0x20\n";
+printf "/**---------------------------------------------------------------------------*\n";
+printf " **                           Data Structures                                 *\n";
+printf " **---------------------------------------------------------------------------*/\n";
+printf "\n";
+printf "/**---------------------------------------------------------------------------*\n";
+printf " **                             Variables                                     *\n";
+printf " **---------------------------------------------------------------------------*/\n";
+printf "\n";
+
+printf "const uint8_t yc_patch_array[YC_PATCH_ARRAY_LEN] =\n";
+printf "{\n";
+printf "\t0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \n";
+printf "\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \n";
+printf "\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \n";
+printf "\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \n";
+printf("\n");
+printf("};\n");
+
+
+printf "const uint8_t yc_patch_cmd[YC_PATCH_CMD_CNT][YC_PATCH_CMD_LEN] =\n";
+printf "{\n\t";
+
+open(BINFILE,"ramcode.rom") or die $!;
+binmode (BINFILE);
+$byte_cnt = 0;
+$end_of_file = 0;
+$checksum = 0;
+$line_cnt = 0;
+while(!$end_of_file)
+{
+	for($i = 0; $i < 10; $i++){
+		if(!read(BINFILE, $binData[$i], 1)){
+			$end_of_file = 1;
+			if(i != 0){
+				printf "Error: Error at the end of file.";
+			}
+		}
+	}
+	if(!$end_of_file){
+		&print_line;
+	}
+}
+while($byte_cnt){
+	&clear_print_buf;
+	&print_line;
+}
+printf("\n");
+printf("};\n");
+printf "\n";
+printf "/**---------------------------------------------------------------------------*\n";
+printf " **                         Function Prototypes                               *\n";
+printf " **---------------------------------------------------------------------------*/\n";
+printf "\n";
+printf "#ifdef __cplusplus\n";
+printf "}\n";
+printf "#endif\n";
+printf "\n";
+printf "/******************************************************************************/\n";
+printf "#endif //#ifndef _YC_PATCH_YC1021_H_2015_03_17_16_39_59_298_\n";
\ No newline at end of file
Index: Standard_mouse/btms/util/geneep.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: Standard_mouse/btms/util/geneep.exe
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/geneep.exe	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/geneep.exe	(working copy)

Property changes on: Standard_mouse/btms/util/geneep.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Standard_mouse/btms/util/hex2mif.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/hex2mif.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/hex2mif.pl	(working copy)
@@ -0,0 +1,103 @@
+#!/usr/bin/perl
+# 2005 - David Grant.
+# Take an ihex input from STDIN, and write a .mif file to STDOUT
+# This script could probably be implemented with something like:
+#    $#!@_%^$@%$@%$_!^$@#^@%$#@_%$@^&!%$_!%!%&$*(#^#@%^) 
+# But I perfer the somewhat readable version.
+
+# Flow from within the Nios2 SDK Shell:
+# nios2-elf-as file.asm -o file.o
+# nios2-elf-objcopy file.o --target ihex file.hex
+# cat file.hex | perl hex2mif.pl > file.mif
+
+my @rom = ();
+my @ram = ();
+
+sub conv {
+	my ($in) = @_;
+	$out = substr($in,6,2).substr($in,4,2).substr($in,2,2).substr($in,0,2);
+	return hex $out;
+}
+
+sub writeromfile {
+	my (@buf) = @_;
+	my($x);
+
+	for($x=0; $x<@buf; $x++) {
+		printf ("%02x\n", $buf[$x]);
+	}
+}
+
+sub writebinfile {
+	my (@buf) = @_;
+	my($x);
+
+	for($x=0; $x<@buf; $x++) {
+		for($y=0;$y<8;$y++) {
+			printf ("%d", $buf[$x] & 1<<(7-$y) ? 1 : 0);
+		}
+		printf "\n" if(($x & 3) == 3);
+	}
+}
+
+sub writemiffile {
+	my (@buf) = @_;
+	my($x);
+	print  ("WIDTH=8;\n");
+	print ("DEPTH=".@buf.";\n");
+	print ("CONTENT BEGIN\n");
+	for($x=0; $x<@buf; $x++) {
+		printf ("\t%04x : %02x;\n", $x, $buf[$x]);
+	}
+	print ("END;\n");
+}
+
+if($ARGV[0] eq "ram" || $ARGV[0] eq "rammif")
+{
+	$org = 0x8000;
+	$limit = 0xffff;
+} elsif($ARGV[0] eq "rom" || $ARGV[0] eq "bin" || $ARGV[0] eq "mif" || $ARGV[0] eq "rommif" ) {
+	$org = 0;
+	$limit = 0x7fff;
+} else {
+	$org = 0;
+	$limit = 0xffffff;
+}
+
+
+$org = 0;
+$limit = 0x7fff;
+
+while (<STDIN>) {
+	$l = $_;
+	next if(!/\w/);
+	$count = (hex substr($l, 1, 2));
+	$addr = (hex substr($l, 3, 4));
+	$type = (hex substr($l, 7, 2));
+	last if $type eq 1;
+	if($type == 4) {
+		$org = -(hex substr($l, 9, 4))*0x10000;
+	}
+	if($addr >= $org && $addr <= $limit) 
+	{
+		$addr*=4 if($ARGV[0] eq "bin");
+		$addr -= $org;
+		for($x=0; $x<$count; $x++) {
+			$rom[$addr + $x] = (hex substr($l, 9+2*$x, 2)) ; 
+		}
+	}
+}
+
+if($ARGV[0] eq "rom" || $ARGV[0] eq "ram" || $ARGV[0] eq "mem")
+{
+	writeromfile(@rom);
+}
+elsif($ARGV[0] eq "bin")
+{
+	writebinfile(@rom);
+}
+else
+{
+	writemiffile(@rom);
+}
+
Index: Standard_mouse/btms/util/ifdef.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/ifdef.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/ifdef.pl	(working copy)
@@ -0,0 +1,8 @@
+open file, "bt_program23.meta"
+@prog = <file>;
+close file;
+open file, "bt_format.meta"
+@fmt = <file>;
+close file;
+
+
Index: Standard_mouse/btms/util/memalloc.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/memalloc.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/memalloc.pl	(working copy)
@@ -0,0 +1,55 @@
+$path=$ARGV[0];
+open file, $path;
+@f = <file>;
+close file;
+open file, ">$path";
+$path =~ s/\/.*//;
+open file1, ">$path/memmap.format";
+$xaddr = 0x4000;
+$oaddr = $saddr = 0;
+for($i = 0;$i < @f;$i++) { 
+	$_ = $f[$i];
+	$start = 1 if(/^\s*memalloc\s*\(\s*$/);
+	$start = 2 if(/^\s*xmemalloc\s*\(\s*$/);
+	$start = 3 if(/^\s*omemalloc\s*\(\s*$/);
+	if($start) {
+		if(/^\s*([0-9]+)\s+([a-zA-Z0-9_]+)\s*(.*)$/) {
+			if($start == 1) {
+				$str = sprintf "0x%04x %s%s\n", $addr, $2, $3;
+				$addr += $1;
+				$bstr .= $str;
+				$sstr .= $str;
+			} elsif($start == 2) {
+				$str = sprintf "0x%04x %s%s\n", $xaddr, $2, $3;
+				$xaddr += $1;
+				$xstr .= $str;
+			} else {
+				push @ostr, $_;
+			}
+		}
+		if(/^\s*\)\s*$/) {
+			$start = 0;
+			push @omalloc,[@ostr] if(@ostr > 0);
+			@ostr = ();
+		}
+	} else {
+		$sstr .= $_;
+	}
+}
+
+for($i = 0;$i <= $#omalloc;$i++) {
+	for($j = 0, $oaddr = $xaddr;$j <= $#{$omalloc[$i]};$j++) {
+		if($omalloc[$i][$j] =~ /^\s*([0-9]+)\s+([a-zA-Z0-9_]+)\s*(.*)$/) {
+			$str = sprintf "0x%04x %s%s\n", $oaddr, $2, $3;
+			$oaddr += $1;
+			$xstr .= $str;
+		}
+	}
+	$xend = $oaddr if($oaddr > $xend);
+}
+print file $xstr, $sstr;
+print file1 $bstr, $xstr;
+close file;
+close file1;
+printf "\nLast allocated address is %04x\n", $addr;
+printf "\nLast allocated xmem address is %04x\n", $xend;
\ No newline at end of file
Index: Standard_mouse/btms/util/mergepatch.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/mergepatch.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/mergepatch.pl	(working copy)
@@ -0,0 +1,63 @@
+$defs = "";
+$fmt = 0;
+sub reva {
+	return $_ if($defs =~ /REV[CD]/ || $fmt);
+	if(/bmark([01])\s+([a-z0-9_]+)\s*,\s*([a-z0-9_]+)/) {
+		$ret = sprintf("\tisolate%d %s,mark\n\tbranch %s,true\n", $1, $2, $3);
+	}	elsif(/rtnmark([01])\s+([a-z0-9_]+)\s*/) {
+		$ret = sprintf("\tisolate%d %s,mark\n\trtn true\n", $1, $2);
+	} else {
+		$ret = $_;
+	}
+	return $ret if($defs =~ /REVB/);
+	if(/mul32\s+([a-z]+)\s*,\s*([a-z0-9_]+)\s*,\s*([a-z]+)/) {
+		$ret = sprintf("\tmult %s,%s\n\tnop 19\n\tproduct %s\n", $2, $1, $3);
+	}	elsif(/imul32\s+([a-z]+)\s*,\s*([a-z]+)/) {
+		$ret = sprintf("\timult %s\n\tnop 19\n\tproduct %s\n", $1, $2);
+	} else {
+		$ret = $_;
+	}
+	return $ret;
+}
+
+sub parseif {
+	my($fname) = @_;
+	open file, $fname;
+	@f = <file>;
+	close file;
+	open file, ">$fname";
+	@valid = (1);
+	for($i = 0;$i < @f;$i++) { 
+		$_ = $f[$i];
+		$defs .= $1 . " " if(/^define\s+(\w+)\s*/);
+		if(/^ifdef\s+(\w+)\s*/) {
+			push @valid, ($defs =~ /$1 / ? 1 : 0) & $valid[$#valid];
+		} elsif(/^ifndef\s+(\w+)\s*/) {
+			push @valid, ($defs =~ /$1 / ? 0 : 1) & $valid[$#valid];
+		} elsif(/^else/) {
+			printf "%s\nelse without if at line %d\n", $f[$i - 3], $i if($#valid == 0);
+			$valid[$#valid] = (1 - $valid[$#valid]) & $valid[$#valid - 1];
+		} elsif(/^endif/) {
+			printf "%s\nendif without if at line %d\n", $_, $i if($#valid == 0);
+			pop @valid;
+		} elsif($valid[$#valid]) {
+			if(/^include\s+(.+)\s*/) {
+				open file2, "program/$1";
+				@f2 = <file2>;
+				close file2;
+				splice(@f, $i + 1, 0, @f2);
+			} else {
+				next if(/^\s*bpatch\s+/ && $defs !~ /ROMCODE/);
+				next if(/^\s*set[01] mark_ext_patch/ && $defs !~ /ROMCODE/);
+				print file reva($_);
+			}
+		}
+	}
+	close file;
+}
+
+parseif("output/bt_program23.meta");
+$fmt = 1;
+parseif("output/bt_format.meta");
+
+
Index: Standard_mouse/btms/util/rom2mif.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/rom2mif.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/rom2mif.pl	(working copy)
@@ -0,0 +1,50 @@
+#!/usr/bin/perl
+#perl hex2mif.pl <filename without ext> 
+
+
+$file0 = $file1 = $ARGV[0];
+$file1 =~ s/\.rom/.mif/;
+$wid = 8;
+
+
+
+print ("opening $file0\n");
+open(ifile, "$file0") || die("cannot find $file0 file\n");
+for($l = 0;$val = <ifile>;$l++)
+{
+	if($l == 0)
+	{
+		if(substr($val, 1, 1) !~ /[0-9a-fA-F]/) { $wid = 1; }
+		elsif(substr($val, 2, 1) !~ /[0-9a-fA-F]/) { $wid = 8; }
+		elsif(substr($val, 4, 1) !~ /[0-9a-fA-F]/) { $wid = 16; }
+		else { $wid = 32;	}
+	}
+}
+printf ("width is %d\n", $wid);
+printf ("totally %d words\n", $l);
+seek(ifile, 0, 0);
+open(ofile, ">$file1");
+printf ofile ("DEPTH = %d;\n", $wid == 1 ? $l/8 : $l);
+printf ofile ("WIDTH = %d;\n", $wid == 1 ? 8 : $wid);
+print ofile ("ADDRESS_RADIX = HEX;\n");
+print ofile ("DATA_RADIX = HEX;\n");
+print ofile ("CONTENT\n");
+print ofile ("BEGIN\n");
+for($l = 0, $val1 = 0;$val = <ifile>;$l++)
+{
+	$val =~ s/\n//g;
+	$val0 = hex(substr($val, 0, $wid == 1 ? 1 : $wid/4));
+	if($wid > 1) {
+		printf ofile ("%x : %x;\n", $l, $val0);
+	} elsif($l % 8 == 0 && $l > 0) {
+		printf ofile ("%x : %x;\n", $l/8 - 1, $val1);
+		$val1 = 0;
+	}
+	$val1 |= $val0 << ($l & 7);
+}
+if($wid == 1) { printf ofile ("%x : %x;\n", $l/8 - 1, $val1); }
+print ofile ("END;\n");
+
+close(ifile);
+close(ofile);
+
Index: Standard_mouse/btms/util/route.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/route.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/route.pl	(working copy)
@@ -0,0 +1,10 @@
+system("route print > 1");
+open file,"1";
+while(<file>) {
+	if(/^\s+0\.0\.0\.0\s+0\.0\.0\.0\s+([\.0-9]+)\s+([\.0-9]+)\s+1\s+$/) {
+		print "added route to " . $1;
+		system("route add 192.168.2.126 " .$1);
+		last;
+	}
+}
+close file;
\ No newline at end of file
Index: Standard_mouse/btms/util/setarg.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/setarg.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/setarg.pl	(working copy)
@@ -0,0 +1,100 @@
+@dat = @init = ();
+
+sub setarg {
+my ($j, $k, $n);
+for($j = $k = $n = 0;$j < @dat;$j++) {
+        if($dat[$j] =~ /^mem_/ && $j > 0 || $n == 3) {
+                push @init, sprintf "\tsetarg 0x%x\n", $k;
+                push @init, sprintf "\tistore %d,contw\n", $n;
+                $n = $k = 0;
+        }
+        if($dat[$j] =~ /^mem_/) {
+               push @init, sprintf "\targ %s,contw\n", $dat[$j];
+        } else {
+                $k |= $dat[$j] << $n++*8;
+        }
+}
+push @init, sprintf "\tsetarg 0x%x\n", $k;
+push @init, sprintf "\tistore %d,contw\n", $n;
+}
+
+sub setsect {
+my($i,$j,$k,$n);
+
+if($ARGV[1] eq "c51") {
+	push @init, sprintf "ifdef C51\ndownload_pdata:\n\tforce 9,loopcnt\ndownload_pdata_loop:\n\thstore 1,core_docd_pdata\n";
+	push @init, sprintf "\trshift8 pdata,pdata\n\tloop download_pdata_loop\n\trtn\n";
+	push @init, sprintf "download_c51:\n\thjam 5,core_docd_ctrl\n\tforce 0,pdata\n\thstore 2,core_docd_paddr\n";
+}
+for($i = $j = $k = $n = 0;$i < @dat + 2;$i++) {
+	if($i == @dat && $n == 0) {
+		push @init, sprintf "\tsetarg 0x%x\n", $k;
+		if($ARGV[1] eq "c51") {
+                	push @init, sprintf "\tcall download_pdata\n";
+		} else {
+			push @init, sprintf "\tistore %d,contw\n", ($j + 7)/8;
+		}
+		last;
+	}
+	if($i == @dat) {
+		$i = $i;
+	}
+	if($j > 18 || $i == @dat + 1) {
+		push @init, sprintf "\tsetsect %d,0x%x\n", $n,$k & 0x3ffff;
+		if($n == 3 || $i == @dat + 1) {
+			if($ARGV[1] eq "c51") {
+                		push @init, sprintf "\tcall download_pdata\n";
+			} else {
+                		push @init, sprintf "\tistore %d,contw\n", ($n*18 + ($j > 18 ? 18 : $j))/8;
+			}
+			$n = -1;
+		}
+		$k >>= 18;
+		$j -= 18;
+		$n++;
+	}
+	if($i < @dat) {
+		if($dat[$i] =~ /^mem_/) {
+		       push @init, sprintf "\targ %s,contw\n", $dat[$i];
+		} else {
+			$k |= $dat[$i] << $j;
+			$j += 8;
+		}
+	}
+}
+if($ARGV[1] eq "c51") {
+	push @init, sprintf "\thjam 3,core_docd_ctrl\n\trtn\nendif\n";
+}
+}
+
+if(@ARGV == 0) {
+	printf "missing file name\n";
+	exit;
+}
+if(open file, $ARGV[0]) {
+        while(<file>) {
+                next if(/^#/);
+                s/#.*//g;
+                if(/^([a-z0-9_]+):(.*)/) {
+                        push @dat, $1;
+                        $_ = $2;
+                }
+                if(/^\'/) {
+                        s/[\'\r\n]//g;
+                        for($i = 0;$i < length($_);$i++) {
+                                push @dat, ord(substr($_, $i, 1));
+                        }
+                } else {
+                        s/\s//g;
+                        for($i = 0;$i < length($_);$i+=2) {
+                                push @dat, hex(substr($_, $i, 2));
+                        }
+                }
+        }
+        close file;
+}
+
+setsect();
+
+print @init;
+
Index: Standard_mouse/btms/util/transform_memmap2btreg.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/transform_memmap2btreg.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/transform_memmap2btreg.pl	(working copy)
@@ -0,0 +1,45 @@
+$memmap_path=$ARGV[0];
+$memblocks_path=$ARGV[1];
+$btreg_path=$ARGV[2];
+open(btreg,">$btreg_path");
+print btreg ("");#reset file
+close(btreg);
+open(memmap,$memmap_path);
+open(memblocks,$memblocks_path);
+open(btreg,">>$btreg_path");
+@text = <memmap>;
+print btreg ("#ifndef _BT_REG_H_\n");
+print btreg ("#define _BT_REG_H_\n");
+foreach $text (@text){
+	@word = split (/[\t ]+/,$text);
+	$reg_addr = @word[0];
+	if ($reg_addr =~ /0x[0-9abcdef]*/){#Is 0x0000~0xffff
+		$word1 = @word[1];
+		@reg_name = split(/\/[\/\*]/,$word1);#delete // or /*  */
+		$reg_name = @reg_name[0];
+		$reg_name =~ s/[\r\n]//;#delete Carriage return
+		
+		printf btreg ("#define\t%-40s\t%s\n",$reg_name,$reg_addr);
+		#print btreg ("#define \t $reg_name \t\t\t $reg_addr \n");
+		#print btreg ("@word[1]\n");
+	}
+}
+@text = <memblocks>;
+foreach $text (@text){
+	@word = split (/[\t ]+/,$text);
+	$reg_addr = @word[0];
+	if ($reg_addr =~ /0x[0-9abcdef]*/){
+		$word1 = @word[1];
+		@reg_name = split(/\/[\/\*]/,$word1);
+		$reg_name = @reg_name[0];
+		$reg_name =~ s/[\r\n]//;
+		printf btreg ("#define\t%-40s\t%s\n",$reg_name,$reg_addr);
+		#print btreg ("#define \t $reg_name \t\t\t\t $reg_addr \n");
+		#print btreg ("@word[1]\n");
+	}
+}
+print btreg ("#endif\n");
+close(memblocks);
+close(memmap);
+close(btreg);
+
Index: Standard_mouse/btms/util/transform_name2addr.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/transform_name2addr.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/btms/util/transform_name2addr.pl	(working copy)
@@ -0,0 +1,103 @@
+$Sched_path=$ARGV[0];
+$Sched_test_path=$ARGV[1];
+$Memmap_path=$ARGV[2];
+open(Sched,$Sched_path)||die("Cannot open files\n");
+@sched=<Sched>;
+close(Sched);
+open(Sched_test,">$Sched_test_path");
+print Sched_test ("");
+close(Sched_test);
+open(Sched_test,">$Sched_test_path");
+open(Memmap,$Memmap_path)||die("Cannot open files\n");
+@memmap=<Memmap>;
+close(Memmap);
+$type_add=0;
+$type_exchange=0;
+foreach $sched(@sched)
+{
+	$sched_begin = $sched;
+	@Sched = split(/[#]+/, $sched);
+	$sched = @Sched[0];
+	@Sched[0] = "";
+	if($sched =~ /mem[\w]+/)
+	{
+		@memmap_name = split(/[\W]+/, $sched);
+		foreach $memmap_name(@memmap_name)
+		{
+			if($memmap_name =~ /mem[\w]+/)
+			{
+				$Memmap_name=$memmap_name;
+				$type_add = 0;
+				$type_exchange = 0;
+				if($sched =~ /$Memmap_name[+]/)
+				{
+					$type_add = 1;#修改的类型第一种，加
+					@ADD_Num=split(/[^0-9\+xa-fA-F]/,$sched);
+					foreach $ADD_Num(@ADD_Num)
+					{
+						if($ADD_Num =~ /\+/)
+						{
+							if($ADD_Num =~ /0x/)
+							{
+								@add_num = split(/\+0x/,$ADD_Num);
+								$add_num1 =@add_num[1];
+								$add_num_begin = "0x".$add_num1;
+								$add_num = hex($add_num1);
+							}
+							else
+							{
+								@add_num = split(/\+/,$ADD_Num);
+								$add_num1 =@add_num[1];
+								$add_num_begin = $add_num1;
+								$add_num = int($add_num1);
+							}
+						}#$add_num是匹配出的需要加的数值，字符串形式
+					}
+				}
+				if($sched =~ /[:] *\t*$Memmap_name/)
+				{
+					$type_exchange = 1;#修改的类型第二种，高低位交换
+				}
+				foreach $memmap(@memmap)
+				{
+					if($memmap =~ /$Memmap_name/ && $memmap !~ /$Memmap_name[\w]+/)
+					{
+						@Memmap=split(/[ \t\n]/,$memmap);
+						$memmap_address=@Memmap[0];
+						$memmap_address =~ s/0x//;
+						if($type_add==1)
+						{
+							$memmap_address_D = hex($memmap_address);
+							$memmap_address_D = $memmap_address_D+$add_num;
+							$memmap_address_H = sprintf("%x", $memmap_address_D);
+							$memmap_address = $memmap_address_H;
+							$memmap_address_add_finish = $memmap_address;
+							$sched_begin =~ s/$Memmap_name\+$add_num_begin/$memmap_address/;
+						}
+						if($type_exchange==1)
+						{
+							$memmap_address_High = substr($memmap_address,0,2);
+							$memmap_address_Low = substr($memmap_address,2,2);
+							$memmap_address = $memmap_address_Low." ".$memmap_address_High;
+							if($type_add==0)
+							{
+								$sched_begin =~ s/$Memmap_name/$memmap_address/;
+							}
+							else
+							{
+								$sched_begin =~ s/$memmap_address_add_finish/$memmap_address/;
+							}
+						}
+					}
+				}
+				$sched_begin =~ s/$Memmap_name/$memmap_address/;
+			}
+		}
+		printf Sched_test ("%s",$sched_begin);
+	}
+	else
+	{
+		printf Sched_test ("%s",$sched_begin);
+	}	
+}
+close(Sched_test);
Index: Standard_mouse/c51/Makefile
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/Makefile	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/Makefile	(working copy)
@@ -0,0 +1,112 @@
+	comma:= ,
+empty:=
+space:= $(empty) $(empty)
+bracketl:= (
+bracketl0:= \(
+bracketr:= )
+bracketr0:= \)
+
+
+OUTDIR = output
+ROOT_PATH =C:\Keil
+
+UTIL_PATH = ..\rom\util
+
+C51BIN = $(ROOT_PATH)\c51\bin
+C51   = $(C51BIN)\c51
+A51   = $(C51BIN)\ax51
+BL51  = $(C51BIN)\lx51
+OH51  = $(C51BIN)\Ohx51
+OC51  = $(C51BIN)\oc51
+LIB51 = $(C51BIN)\libx51
+
+TARGET = $(OUTDIR)\fw
+TARGETHEX = $(TARGET).hex
+
+
+RAMTARGET = $(OUTDIR)\fwram
+
+RAMTARGETHEX = $(addsuffix .hex, $(RAMTARGET))
+
+############################## IMPORTANT ####################################
+#   opt level greater than 7 cannot be used, or the ram code and the rom code will be different
+##############################################################################
+OPT_LEVEL=7
+
+LIST_FILE_CTL=PR($(@:obj=lst))
+
+C_OPTS = object($@) OBJECTADVANCED  browse DF(ENABLE_APE) $(LIST_FILE_CTL) \
+OT($(OPT_LEVEL),SPEED) large
+
+#ASM_OPTS =  $(LIST_FILE_CTL) object($@)
+ASM_OPTS = SET (large) DEBUG EP $(LIST_FILE_CTL) object($@)
+
+LINK_OPTS = \
+	CLASSES (XDATA (X:0x1a00-X:0x1dFF),\
+	CODE(C:0-C:0xffff), DATA(D:0x10-0x7f), IDATA(I:0x80-0xcf)) \
+	SEGMENTS($(DATA_MAP)) \
+	NOOVERLAY \
+	PAGELENGTH(60000) \
+	CODE
+
+DATA_MAP = ?STACK(D:0xD0)
+CODE_MAP = ?PR?RAMENTRY?JUMPTABLE(C:0x0), ?PR?*, ?C*
+
+#LINK_OBJ_RAM =ram global_variable sys utilities gpio spi iic ipc uart adc keyscan sensor
+LINK_OBJ_RAM =ram  sys utilities gpio spi iic ipc adc global_variable Sensor
+
+LINK_OBJ_TMP_RAM = $(addsuffix .obj,$(LINK_OBJ_RAM)) 
+#..\patch\sensor.obj 
+LINK_OBJ_DEPENDENCIES_RAM = $(addprefix $(OUTDIR)/, $(LINK_OBJ_TMP_RAM))
+LINK_OBJ_FILES_RAM = $(subst $(space),$(comma),$(LINK_OBJ_DEPENDENCIES_RAM))
+
+LINK_OBJ_TMP_ROM = $(addsuffix .obj,$(LINK_OBJ_ROM))
+LINK_OBJ_DEPENDENCIES_ROM = $(addprefix $(OUTDIR)/, $(LINK_OBJ_TMP_ROM))
+LINK_OBJ_FILES_ROM = $(subst $(space),$(comma),$(LINK_OBJ_DEPENDENCIES_ROM))
+
+
+.SUFFIXES: .a51
+RAM_BIN = $(RAMTARGET).rom
+
+
+PROG_FILE = ..\rom\program\c51.prog
+RAM_FILES = $(RAM_MIF) $(RAM_BIN) $(EEPROM_FILE) $(PROG_FILE)
+
+$(OUTDIR)/%.obj : %.c hwreg.h
+	$(C51) $< "$(C_OPTS)"
+
+$(OUTDIR)/%.obj : %.a51
+	$(A51) $< "$(ASM_OPTS)"
+
+all : $(RAM_FILES) 
+
+
+$(TARGET) : $(LINK_OBJ_DEPENDENCIES_RAM)
+	$(BL51) $(LINK_OBJ_FILES_RAM) TO $@ "$(LINK_OPTS)"
+
+$(TARGETHEX) : $(TARGET)
+	$(OH51) $(TARGET)
+
+
+$(RAM_BIN) : $(TARGETHEX)
+
+
+$(RAM_MIF) : $(TARGETHEX)
+#	perl $(UTIL_PATH)\hex2mif.pl < $< rammif > $@
+	$(UTIL_PATH)\hex2mif.exe < $< rammif > $@
+
+$(EEPROM_FILE) : $(RAM_BIN)
+	cd ..\rom\output; ..\util\geneep.exe; cp eeprom.dat ..\..\sim 
+
+$(PROG_FILE) : $(RAM_BIN)
+#	perl $(UTIL_PATH)\setarg.pl $< c51 > $@
+
+clean:  
+	del /Q $(OUTDIR)\*.* 
+
+
+lib:
+	$(LIB51) TRANSFER $(OUTDIR)\ipc.obj TO $(OUTDIR)\yichip.LIB
+	
+ext:
+	$(LIB51) EXTRACT $(OUTDIR)\yichip.LIB (ipc) TO $(OUTDIR)\ipc.obj
Index: Standard_mouse/c51/Peripheral.h
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/Peripheral.h	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/Peripheral.h	(working copy)
@@ -0,0 +1,36 @@
+#ifndef _YC_PERIPHERAL_H_
+#define _YC_PERIPHERAL_H_
+#include "common.h"
+
+#define HID_REPORTID_MS 	1
+#define MOUSE_BUTTON_LRM 	7
+#define SLEEP_TIMER					300
+#define MOUSE_24G_PAIR_TIME			30
+
+#define KS_BL_GPIO	0x04
+#define KS_BM_GPIO	0x17
+#define KS_BR_GPIO	0x1b
+#define KS_BK_GPIO	0x17
+#define KS_FW_GPIO	0x04
+#define CPI_GPIO		0x06
+#define Timer_div_io		0x07
+#define SENSOR_MOTION_GPIO 0x18
+#define SENSOR_DIRECTION_GPIO_CHOICE 0x12
+
+#define LOWPOWER_GPIO_CHOICE 0x13
+#define WHEEL_DATA_A_GPIO 0x02
+#define WHEEL_DATA_B_GPIO 0x03
+#define LED_GPIO 	0x08
+
+
+#endif
+
+
+
+
+
+
+
+
+
+
Index: Standard_mouse/c51/Peripheral.c
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/Peripheral.c	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/Peripheral.c	(working copy)
@@ -0,0 +1 @@
+
Index: Standard_mouse/c51/REG320.H
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/REG320.H	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/REG320.H	(working copy)
@@ -0,0 +1,174 @@
+/*--------------------------------------------------------------------------
+REG320.H
+
+Header file for DS80C320/DS80C323.
+Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
+All rights reserved.
+--------------------------------------------------------------------------*/
+
+#ifndef __REG320_H__
+#define __REG320_H__
+
+/*  BYTE Registers  */
+sfr P0     = 0x80;
+sfr P1     = 0x90;
+sfr P2     = 0xA0;
+sfr P3     = 0xB0;
+sfr PSW    = 0xD0;
+sfr ACC    = 0xE0;
+sfr B      = 0xF0;
+sfr SP     = 0x81;
+sfr DPL    = 0x82;
+sfr DPH    = 0x83;
+sfr PCON   = 0x87;
+sfr TCON   = 0x88;
+sfr TMOD   = 0x89;
+sfr TL0    = 0x8A;
+sfr TL1    = 0x8B;
+sfr TH0    = 0x8C;
+sfr TH1    = 0x8D;
+sfr IE     = 0xA8;
+sfr IP     = 0xB8;
+sfr SCON0  = 0x98;
+sfr SBUF0  = 0x99;
+
+/*  DS80C320 Extensions  */
+sfr DPL1   = 0x84;
+sfr DPH1   = 0x85;
+sfr DPS    = 0x86;
+sfr CKCON  = 0x8E;
+sfr EXIF   = 0x91;
+sfr SADDR0 = 0xA9;
+sfr SADDR1 = 0xAA;
+sfr SADEN0 = 0xB9;
+sfr SADEN1 = 0xBA;
+sfr SCON1  = 0xC0;
+sfr SBUF1  = 0xC1;
+sfr STATUS = 0xC5;
+sfr TA     = 0xC7;
+sfr T2CON  = 0xC8;
+sfr T2MOD  = 0xC9;
+sfr RCAP2L = 0xCA;
+sfr RCAP2H = 0xCB;
+sfr TL2    = 0xCC;
+sfr TH2    = 0xCD;
+sfr WDCON  = 0xD8;
+sfr EIE    = 0xE8;
+sfr EIP    = 0xF8;
+
+/*  BIT Registers  */
+/*  PSW */
+sbit CY    = PSW^7;
+sbit AC    = PSW^6;
+sbit F0    = PSW^5;
+sbit RS1   = PSW^4;
+sbit RS0   = PSW^3;
+sbit OV    = PSW^2;
+sbit FL    = PSW^1;
+sbit F1    = PSW^1;
+sbit P     = PSW^0;
+
+/*  TCON  */
+sbit TF1   = TCON^7;
+sbit TR1   = TCON^6;
+sbit TF0   = TCON^5;
+sbit TR0   = TCON^4;
+sbit IE1   = TCON^3;
+sbit IT1   = TCON^2;
+sbit IE0   = TCON^1;
+sbit IT0   = TCON^0;
+
+/*  IE  */
+sbit EA    = IE^7;
+sbit ES1   = IE^6;
+sbit ET2   = IE^5;
+sbit ES0   = IE^4;
+sbit ET1   = IE^3;
+sbit EX1   = IE^2;
+sbit ET0   = IE^1;
+sbit EX0   = IE^0;
+
+/*  IP  */
+sbit PS1   = IP^6;
+sbit PT2   = IP^5;
+sbit PS0   = IP^4;
+sbit PT1   = IP^3;
+sbit PX1   = IP^2;
+sbit PT0   = IP^1;
+sbit PX0   = IP^0;
+
+/*  P1  */
+sbit INT5  = P1^7;
+sbit INT4  = P1^6;
+sbit INT3  = P1^5;
+sbit INT2  = P1^4;
+sbit TXD1  = P1^3;
+sbit RXD1  = P1^2;
+sbit T2EX  = P1^1;
+sbit T2    = P1^0;
+
+/*  P3  */
+sbit RD    = P3^7;
+sbit WR    = P3^6;
+sbit T1    = P3^5;
+sbit T0    = P3^4;
+sbit INT1  = P3^3;
+sbit INT0  = P3^2;
+sbit TXD0  = P3^1;
+sbit RXD0  = P3^0;
+
+/*  SCON0  */
+sbit SM0   = SCON0^7; /* alternative SM0_FE_0 */
+sbit SM1   = SCON0^6; /* alternative SM1_0 */
+sbit SM2   = SCON0^5; /* alternative SM2_0 */
+sbit REN   = SCON0^4; /* alternative REN_0 */
+sbit TB8   = SCON0^3; /* alternative TB8_0 */
+sbit RB8   = SCON0^2; /* alternative RB8_0 */
+sbit TI    = SCON0^1; /* alternative TI_0  */
+sbit RI    = SCON0^0; /* alternative RI_0  */
+
+/*  SCON1  */
+sbit SM01  = SCON1^7; /* alternative SM0_FE_1  */
+sbit SM11  = SCON1^6; /* alternative SM1_1  */
+sbit SM21  = SCON1^5; /* alternative SM2_1  */
+sbit REN1  = SCON1^4; /* alternative REN_1  */
+sbit TB81  = SCON1^3; /* alternative TB8_1  */
+sbit RB81  = SCON1^2; /* alternative RB8_1  */
+sbit TI1   = SCON1^1; /* alternative TI_1   */
+sbit RI1   = SCON1^0; /* alternative RI_1   */
+
+/*  T2CON  */
+sbit TF2    = T2CON^7;
+sbit EXF2   = T2CON^6;
+sbit RCLK   = T2CON^5;
+sbit TCLK   = T2CON^4;
+sbit EXEN2  = T2CON^3;
+sbit TR2    = T2CON^2;
+sbit C_T2   = T2CON^1;
+sbit CP_RL2 = T2CON^0;
+
+/*  WDCON  */
+sbit SMOD_1 = WDCON^7;
+sbit POR    = WDCON^6;
+sbit EPFI   = WDCON^5;
+sbit PFI    = WDCON^4;
+sbit WDIF   = WDCON^3;
+sbit WTRF   = WDCON^2;
+sbit EWT    = WDCON^1;
+sbit RWT    = WDCON^0;
+
+/*  EIE  */
+sbit EWDI  = EIE^4;
+sbit EX5   = EIE^3;
+sbit EX4   = EIE^2;
+sbit EX3   = EIE^1;
+sbit EX2   = EIE^0;
+
+/*  EIP  */
+sbit PWDI  = EIP^4;
+sbit PX5   = EIP^3;
+sbit PX4   = EIP^2;
+sbit PX3   = EIP^1;
+sbit PX2   = EIP^0;
+
+#endif
Index: Standard_mouse/c51/YichipTool.bat
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/YichipTool.bat	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/YichipTool.bat	(working copy)
@@ -0,0 +1,63 @@
+@echo off
+:start
+set/p cmd=Please enter cmd, c/C for compiling, and d/D for downloading:
+if /I "%cmd%" equ "a" (goto compile_all)
+if /I "%cmd%" equ "A" (goto compile_all)
+if /I "%cmd%" equ "c" (goto compile)
+if /I "%cmd%" equ "C" (goto compile)
+if /I "%cmd%" equ "d" (goto download)
+if /I "%cmd%" equ "D" (goto download)
+if "%cmd%" equ "" (goto error)  else (goto error)
+
+:compile_all
+cd ..\btms
+call do eep
+cd ..\c51
+
+:compile
+make clean
+make
+
+util\hex2mif.exe < output\fw.hex ram > output\fwram.rom
+copy .\patch\patch.dat + .\patch\user.dat + .\patch\rf.dat .\patch\sch.rom 
+util\transform_name2addr.exe .\patch\sch.rom .\output\sched.rom .\patch\memmap.format
+copy .\patch\ramcode.rom .\output\
+copy .\patch\geneep.exe .\output\
+@rem copy .\patch\*.obj .\output\*.obj
+
+copy .\util\eeprom2fulleeprom.exe .\eeprom2fulleeprom.exe
+copy .\util\crc16.exe .\crc16.exe
+
+cd output
+geneep geneep ramcode.rom fwram.rom sched.rom
+del *.lst
+del *.obj
+
+copy eeprom.dat ..\eeprom.dat
+cd ..
+eeprom2fulleeprom.exe eeprom.dat 256>compare2.dat
+crc16.exe compare2.dat 2 >.\output\eeprom.dat
+del eeprom.dat
+del compare2.dat
+del eeprom2fulleeprom.exe
+del crc16.exe
+
+:end
+set cmd=0
+echo/
+goto start
+
+:error
+echo Cmd error, enter again
+goto end
+
+:download
+e p
+e pu
+e ep
+e k
+e ku
+e a
+e au
+goto end
+
Index: Standard_mouse/c51/adc.h
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/adc.h	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/adc.h	(working copy)
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2016, yichip Semiconductor(shenzhen office)
+ * All Rights Reserved.
+ *
+ * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Yichip Semiconductor;
+ * the contents of this file may not be disclosed to third parties, copied
+ * or duplicated in any form, in whole or in part, without the prior
+ * written permission of Yichip Semiconductor.
+ */
+ 
+ /** @file
+ *
+ * IIC support for application
+ */
+#ifndef __DEV_ADC_H_
+#define __DEV_ADC_H_
+#include "type.h"
+#include "btreg.h"
+#include "hwreg.h"
+
+/**
+ * This function Get current ADC Value.
+ * 
+ * @param none.
+ * 
+ * @return adc value.
+*/
+u16_t ADC_GetCurrentValue();
+
+/**
+ * This function Get 3v base ADC Value.
+ * 
+ * @param none.
+ * 
+ * @return adc value.
+*/
+u16_t ADC_Get3vBase();
+
+/**
+ * This function Get 0v base ADC Value.
+ * 
+ * @param none.
+ * 
+ * @return adc value.
+*/
+u16_t ADC_Get0vBase();
+
+#endif/* YC_IIC_H */
+
Index: Standard_mouse/c51/adc.c
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/adc.c	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/adc.c	(working copy)
@@ -0,0 +1,17 @@
+#include "adc.h"
+#include "global_variable.h"
+
+u16_t ADC_GetCurrentValue()
+{
+	return m_adcCurrentValue;
+}
+
+u16_t ADC_Get3vBase()
+{
+	return m_adc3vValue;
+}
+
+u16_t ADC_Get0vBase()
+{
+	return m_adc0vBase;
+}
Index: Standard_mouse/c51/btreg.h
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/btreg.h	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/btreg.h	(working copy)
@@ -0,0 +1,1497 @@
+#ifndef _BT_REG_H_
+#define _BT_REG_H_
+#define	mem_le_adv_transmit                     	0x0000
+#define	mem_le_adv_waitcnt                      	0x0001
+#define	mem_le_adv_rcv                          	0x0002
+#define	mem_le_req_rcv                          	0x0003
+#define	mem_le_scanrsp_rcv                      	0x0004
+#define	mem_le_conn_rcv                         	0x0005
+#define	mem_inquiryscan_waitcnt                 	0x0006
+#define	mem_inquiryscan_rcvcnt                  	0x0007
+#define	mem_pagescan_waitcnt                    	0x0008
+#define	mem_pagescan_rcvcnt                     	0x0009
+#define	mem_pagescan_rcvfhscnt                  	0x000a
+#define	mem_slave_rcvcnt                        	0x000b
+#define	mem_page_transmit                       	0x000c
+#define	mem_page_rcv                            	0x000d
+#define	mem_page_rcv_fhs                        	0x000e
+#define	mem_master_rcvcnt                       	0x000f
+#define	mem_fhs_wait_counter                    	0x0010
+#define	mem_newconnto_counter                   	0x0011
+#define	mem_inquiry_transmit                    	0x0012
+#define	mem_inquiry_rcv                         	0x0013
+#define	mem_fw_ver                              	0x0014
+#define	mem_current_context                     	0x0015
+#define	mem_le_ch_mapped                        	0x0016
+#define	mem_last_freq                           	0x0017
+#define	mem_rssi                                	0x0018
+#define	mem_rx_type                             	0x0019
+#define	mem_rx_hec_err                          	0x001a
+#define	mem_rx_crc_err                          	0x001c
+#define	mem_context_ptr                         	0x001e
+#define	mem_display                             	0x0020
+#define	mem_bcd                                 	0x0028
+#define	mem_state                               	0x0030
+#define	mem_mode                                	0x0031
+#define	mem_tsniff                              	0x0032
+#define	mem_sniff_anchor                        	0x0034
+#define	mem_clk_offset                          	0x0038
+#define	mem_rx_window                           	0x003e
+#define	mem_plap                                	0x0040
+#define	mem_puap                                	0x0043
+#define	mem_pnap                                	0x0044
+#define	mem_conn_handle                         	0x0046
+#define	mem_arq                                 	0x0047
+#define	mem_lmp_to_send                         	0x0048
+#define	mem_lmi_opcode                          	0x0049
+#define	mem_lmo_reason                          	0x004a
+#define	mem_op                                  	0x004b
+#define	mem_state_map                           	0x004c
+#define	mem_supervision_timer                   	0x004d
+#define	mem_supervision_to                      	0x0051
+#define	mem_name_offset                         	0x0053
+#define	mem_key_size                            	0x0054
+#define	mem_conn_sm                             	0x0055
+#define	mem_aco                                 	0x0056
+#define	mem_kc                                  	0x0062
+#define	mem_conn_timer                          	0x0072
+#define	mem_sniff_attempt                       	0x0073
+#define	mem_sniff_timeout                       	0x0074
+#define	mem_dsniff                              	0x0075
+#define	mem_amaddr                              	0x0077
+#define	mem_lmo_opcode1                         	0x0078
+#define	mem_lmi_opcode1                         	0x0079
+#define	mem_lmo_reason1                         	0x007a
+#define	mem_lmo_tid1                            	0x007b
+#define	mem_lmo_opcode2                         	0x007c
+#define	mem_lmi_opcode2                         	0x007d
+#define	mem_lmo_reason2                         	0x007e
+#define	mem_lmo_tid2                            	0x007f
+#define	mem_hci_version                         	0x0080
+#define	mem_acl_pktlen                          	0x0083
+#define	mem_sco_pktlen                          	0x0085
+#define	mem_acl_pktcnt                          	0x0086
+#define	mem_sco_pktcnt                          	0x0088
+#define	mem_current_sniff_attempt               	0x008a
+#define	mem_current_sniff_timeout               	0x008b
+#define	mem_nfreq_index_inq                     	0x008c
+#define	mem_nfreq_index_page                    	0x008d
+#define	mem_ninqy_index                         	0x008e
+#define	mem_fhs_misc                            	0x008f
+#define	mem_subsniff_instant                    	0x0090
+#define	mem_subsniff_rate                       	0x0094
+#define	mem_subsniff_tcmax                      	0x0095
+#define	mem_subsniff_tsniff                     	0x0097
+#define	mem_lpm_adjust                          	0x0098
+#define	mem_sync_clke                           	0x0099
+#define	mem_lpm_current_mult                    	0x009f
+#define	mem_gpio_wakeup_low                     	0x00a0
+#define	mem_gpio_wakeup_high                    	0x00a4
+#define	mem_air_mode                            	0x00a8
+#define	mem_sco_asso_handle                     	0x00a9
+#define	mem_sco_handle                          	0x00aa
+#define	mem_esco_desco                          	0x00ac
+#define	mem_esco_type                           	0x00ad
+#define	mem_neogotiation_state                  	0x00ae
+#define	mem_saved_amaddr                        	0x00af
+#define	mem_esco_arq                            	0x00b0
+#define	mem_esco_saved_arq                      	0x00b1
+#define	mem_sco_obuf                            	0x00b2
+#define	mem_sco_ibuf                            	0x00d0
+#define	mem_sco_poll                            	0x00ee
+#define	mem_npage_index                         	0x00ef
+#define	mem_page_mode                           	0x00f0
+#define	mem_page_clk                            	0x00f1
+#define	mem_tst_pktcnt_sync                     	0x00f5
+#define	mem_tst_pktcnt_hec                      	0x00f7
+#define	mem_tst_pktcnt_crc                      	0x00f9
+#define	mem_tst_pktcnt_dmh                      	0x00fb
+#define	mem_tmp_buffer_head                     	0x00fd
+#define	mem_tmp_buffer                          	0x0100
+#define	mem_tester_emulate                      	0x0150
+#define	mem_temp_payload                        	0x0151
+#define	test_mode_scenario                      	0x0151
+#define	test_mode_hopping_mode                  	0x0152
+#define	test_mode_tx_freq                       	0x0153
+#define	test_mode_rx_freq                       	0x0154
+#define	test_mode_power_mode                    	0x0155
+#define	test_mode_poll_period                   	0x0156
+#define	test_mode_packet_type                   	0x0157
+#define	test_mode_data_length                   	0x0158
+#define	mem_test_mode_old_debug_config          	0x015a
+#define	mem_tester_cnt                          	0x015b
+#define	mem_temp_am_addr                        	0x015c
+#define	mem_temp_arq                            	0x015d
+#define	mem_len                                 	0x015e
+#define	mem_clkn_bt                             	0x0160
+#define	mem_clke_bt                             	0x0164
+#define	mem_dpll_clkn                           	0x0168
+#define	mem_connection_options                  	0x016c
+#define	mem_nameres_cnt                         	0x016d
+#define	mem_txptr                               	0x016e
+#define	mem_slot_offset                         	0x0170
+#define	extm_fhs_misc                           	0x0172
+#define	extm_newconn_am_addr                    	0x0173
+#define	extm_class                              	0x0174
+#define	extm_lap                                	0x0177
+#define	extm_uap                                	0x017a
+#define	extm_nap                                	0x017b
+#define	mem_debug_config                        	0x017e
+#define	mem_lch_code                            	0x017f
+#define	mem_fhs_am_addr                         	0x0180
+#define	mem_dpll_error                          	0x0181
+#define	mem_bdaddr_list_buff                    	0x0183
+#define	mem_select_list_item                    	0x01a7
+#define	mem_temp_reconn_record                  	0x01a8
+#define	mem_record_bt_mode                      	0x01a8
+#define	mem_temp_lap                            	0x01a9
+#define	mem_list_item_ptr                       	0x01af
+#define	mem_eir                                 	0x01b1
+#define	mem_ucode_status                        	0x0215
+#define	mem_otp_ucode_flag                      	0x0216
+#define	mem_spid_tbuf                           	0x0218
+#define	mem_iicd_tbuf                           	0x0219
+#define	mem_addr_hi                             	0x0219
+#define	mem_addr_mi                             	0x021a
+#define	mem_addr_lo                             	0x021b
+#define	mem_iicd_addr                           	0x021c
+#define	mem_spid_rbuf                           	0x021d
+#define	mem_ucode_buf                           	0x0221
+#define	mem_ucode_len                           	0x0223
+#define	mem_sched_addr                          	0x0225
+#define	mem_ucode_ptr                           	0x0227
+#define	mem_ucode_keybuf                        	0x0229
+#define	mem_check_plap_temp                     	0x0239
+#define	mem_sensor_id                           	0x024b
+#define	mem_reconnect_flag                      	0x024c
+#define	mem_switch_fail_master_count            	0x024d
+#define	mem_app_evt_timer_count                 	0x024e
+#define	mem_h5rx_ackcnt                         	0x024f
+#define	mem_check_err_acl_cont                  	0x0250
+#define	mem_rp_packets                          	0x0251
+#define	mem_packet_type                         	0x0252
+#define	mem_hci_sniff_conn_handle               	0x0254
+#define	mem_hci_sniff_max_interval              	0x0256
+#define	mem_hci_sniff_min_interval              	0x0258
+#define	mem_hci_sniff_attempt                   	0x025a
+#define	mem_hci_sniff_timeout                   	0x025c
+#define	mem_voice_setting                       	0x025e
+#define	mem_retransmission_effort               	0x0260
+#define	mem_sco_ptype                           	0x0261
+#define	mem_extm_uap_restore                    	0x0263
+#define	mem_h5rx_rptr                           	0x0266
+#define	mem_h5rx_ack                            	0x0268
+#define	mem_h5tx_ack                            	0x0269
+#define	mem_h5tx_rptr                           	0x026a
+#define	mem_h5tx_wptr                           	0x026c
+#define	mem_h5tx_free                           	0x026e
+#define	mem_h5rx_tmp                            	0x0270
+#define	mem_h5tx_seq                            	0x0271
+#define	mem_hci_acl_queue_wptr                  	0x0272
+#define	mem_hci_acl_queue_rptr                  	0x0274
+#define	mem_hci_acl_queue_end                   	0x0276
+#define	mem_hci_acl_queue_wcnt                  	0x0278
+#define	mem_hci_acl_cnt                         	0x0279
+#define	mem_hci_acl_tx_trigger_wptr             	0x027a
+#define	mem_ucode_id_local                      	0x027c
+#define	mem_ucode_id_remote                     	0x027d
+#define	mem_check_sum                           	0x027e
+#define	mem_ucode_temp                          	0x027f
+#define	mem_ucode_temp1                         	0x0280
+#define	mem_lock_in_enc                         	0x0281
+#define	mem_hci_disconn_reason                  	0x0282
+#define	mem_hci_curr_len                        	0x0283
+#define	mem_hci_curr_target                     	0x0284
+#define	mem_l2cap_mem_start                     	0x0286
+#define	mem_l2cap_rxbuff1_len                   	0x0286
+#define	mem_l2cap_rxbuff2_len                   	0x0288
+#define	mem_l2cap_rxbuff_new                    	0x028a
+#define	mem_l2cap_rxbuff_inuse                  	0x028c
+#define	mem_l2cap_payload_ptr                   	0x028d
+#define	mem_l2cap_rx_pkt_length                 	0x028f
+#define	mem_l2cap_rx_cid                        	0x0291
+#define	mem_l2cap_rx_done                       	0x0293
+#define	mem_l2cap_signal_tx_buff_ptr            	0x0294
+#define	mem_l2cap_signal_tx_payload_ptr         	0x0296
+#define	mem_l2cap_signal_tx_length              	0x0298
+#define	mem_sdp_tx_buff_ptr                     	0x029a
+#define	mem_sdp_tx_payload_ptr                  	0x029c
+#define	mem_sdp_tx_pkt_length                   	0x029e
+#define	mem_rfcomm_tx_buff_ptr                  	0x02a0
+#define	mem_rfcomm_tx_payload_ptr               	0x02a2
+#define	mem_rfcomm_tx_pkt_length                	0x02a4
+#define	memL2CAP_T1                             	0x02a6
+#define	mem_CONTROL_tasks                       	0x02a8
+#define	mem_send_config_req                     	0x02a9
+#define	mem_config_identifier                   	0x02aa
+#define	mem_config_req_dest_CID                 	0x02ab
+#define	mem_rfcomm_malloc_fail_flag             	0x02ad
+#define	mem_message_to_uppersm                  	0x02ae
+#define	mem_upper_sm_remote_page                	0x02af
+#define	mem_upper_sm_reconn                     	0x02b0
+#define	mem_upper_sm_ss                         	0x02b1
+#define	mem_tx_malloc_log                       	0x02b2
+#define	mem_l2cap_mem_end                       	0x02f2
+#define	mem_scid                                	0x02f2
+#define	mem_cmd_length                          	0x02f4
+#define	mem_tt2                                 	0x02f6
+#define	mem_tt3                                 	0x02f8
+#define	mem_id                                  	0x02fa
+#define	mem_psm                                 	0x02fc
+#define	mem_l2cap_sdpres_delay_time             	0x02fe
+#define	mem_le_rxbuf                            	0x0302
+#define	mem_le_mic                              	0x033a
+#define	mem_le_peer_mic                         	0x033e
+#define	mem_le_peer_ltk                         	0x0342
+#define	mem_le_mrand                            	0x0352
+#define	mem_le_state                            	0x0362
+#define	mem_le_mode                             	0x0363
+#define	mem_le_tsniff                           	0x0364
+#define	mem_le_anchor                           	0x0366
+#define	mem_le_clk_offset                       	0x036a
+#define	mem_le_receive_window                   	0x0370
+#define	mem_le_plap                             	0x0372
+#define	mem_le_conn_handle                      	0x0378
+#define	mem_le_arq                              	0x0379
+#define	mem_le_ch                               	0x037a
+#define	mem_le_hop                              	0x037b
+#define	mem_le_event_count                      	0x037c
+#define	mem_le_supervision_timer                	0x037e
+#define	mem_le_instant                          	0x0382
+#define	mem_le_channels                         	0x0384
+#define	mem_le_op                               	0x0385
+#define	mem_le_access                           	0x0386
+#define	mem_le_crcinit                          	0x038a
+#define	mem_le_window_size                      	0x038d
+#define	mem_le_slave_latency                    	0x038e
+#define	mem_le_superto                          	0x0390
+#define	mem_le_channel_map                      	0x0392
+#define	mem_le_no_using                         	0x0397
+#define	mem_le_peer_sca                         	0x0399
+#define	mem_le_att_opcode                       	0x039a
+#define	mem_le_att_handle                       	0x039b
+#define	mem_le_err_code                         	0x039d
+#define	mem_le_l2cap_pdu_length                 	0x039e
+#define	mem_le_sk                               	0x03a0
+#define	mem_le_testtype                         	0x03b0
+#define	mem_le_test_sync                        	0x03b1
+#define	mem_le_test_pcnt                        	0x03b3
+#define	mem_le_rxon_ts                          	0x03b5
+#define	mem_le_rx_ll_opcode                     	0x03bb
+#define	mem_le_notify_attr_start                	0x03bc
+#define	mem_le_notify_len                       	0x03be
+#define	mem_cmd_le_create_conn                  	0x03bf
+#define	mem_24g_id                              	0x03c0
+#define	mem_le_cur_attlist_start_ptr            	0x03c1
+#define	mem_le_cur_handle_start                 	0x03c3
+#define	mem_le_cur_handle_end                   	0x03c5
+#define	mem_le_cur_uuid_lenth                   	0x03c7
+#define	mem_le_cur_uuid                         	0x03c8
+#define	mem_le_search_len                       	0x03d8
+#define	mem_le_search_res                       	0x03d9
+#define	mem_le_continue_type                    	0x03da
+#define	mem_le_public_length                    	0x03db
+#define	mem_lmo_header_length                   	0x03dc
+#define	mem_lmo_header_opcode                   	0x03dd
+#define	mem_lmo_payload                         	0x03de
+#define	mem_lmi_accepted_opcode                 	0x03ef
+#define	mem_disconn_reason_send                 	0x03f0
+#define	mem_tx_fixed_freq                       	0x03f1
+#define	mem_rx_fixed_freq                       	0x03f2
+#define	mem_ext_features_page                   	0x03f3
+#define	mem_lmpext_ssp_enable                   	0x03f4
+#define	mem_remote_sppcap                       	0x03f6
+#define	mem_lmp_conn_state                      	0x03f7
+#define	mem_soft_timer                          	0x03f8
+#define	mem_pincode_state                       	0x03fa
+#define	mem_sres_tid                            	0x03fb
+#define	mem_accptsco_tid                        	0x03fc
+#define	mem_auth_enable                         	0x03fd
+#define	mem_wait_encryption                     	0x03fe
+#define	mem_sniff_payload                       	0x03ff
+#define	mem_aurand_send_delay_time              	0x040f
+#define	mem_module_temp_len                     	0x0413
+#define	mem_uart_cmd                            	0x0415
+#define	mem_uart_opcode                         	0x0416
+#define	mem_uart_len                            	0x0417
+#define	mem_module_temp_nl_discard_packet       	0x0418
+#define	mem_module_le_md_flag                   	0x0419
+#define	mem_init_cnt                            	0x041a
+#define	memRemoteRPNBitRate                     	0x041c
+#define	memRemotePRNDataBits                    	0x041d
+#define	memRemotePRNStopBit                     	0x041e
+#define	memRemotePRNParity                      	0x041f
+#define	memRemotePRNFlowControl                 	0x0420
+#define	memRemotePRNXon                         	0x0421
+#define	memRemotePRNXoff                        	0x0422
+#define	mem_mod2div_temp                        	0x0423
+#define	mem_contw_temp                          	0x0426
+#define	mem_attrib_list                         	0x0428
+#define	mem_current_adss                        	0x042a
+#define	mem_current_channel                     	0x042b
+#define	mem_current_frame_type                  	0x042c
+#define	mem_current_fcs                         	0x042d
+#define	mem_current_length                      	0x042e
+#define	mem_rfcomm_uih_payload_ptr              	0x0430
+#define	mem_uih_cmd_type                        	0x0432
+#define	mem_uih_length                          	0x0433
+#define	mem_param_payload_ptr                   	0x0435
+#define	mem_ms_param                            	0x0437
+#define	mem_pn_credit_flow_type_info            	0x0438
+#define	mem_pn_priority                         	0x0439
+#define	mem_pn_acknowledg_timer                 	0x043a
+#define	mem_pn_max_retrans                      	0x043b
+#define	mem_rfcomm_send_adss                    	0x043c
+#define	mem_rfcomm_send_frame_type              	0x043d
+#define	mem_rfcomm_send_fcs                     	0x043e
+#define	mem_rfcomm_send_offset                  	0x043f
+#define	mem_sdp_mem_start                       	0x0440
+#define	mem_uuid_search_pat                     	0x0440
+#define	mem_sdp_continue_byte                   	0x0444
+#define	mem_sdp_pduid                           	0x0446
+#define	mem_sdp_transactionid                   	0x0447
+#define	mem_sdp_attribute_maxbyte               	0x0449
+#define	mem_sdp_record_maxcnt                   	0x044b
+#define	mem_sdp_error_code                      	0x044d
+#define	mem_sdp_record_handle                   	0x0455
+#define	mem_sdp_search_failed                   	0x0459
+#define	mem_sdp_LACAP_found                     	0x045a
+#define	mem_sdp_RFCOMM_found                    	0x045b
+#define	mem_handle_list                         	0x045c
+#define	mem_handle_humber                       	0x0474
+#define	mem_sdp_mem_end                         	0x0475
+#define	mem_rxbuf                               	0x0475
+#define	mem_random_number                       	0x0486
+#define	mem_round_key                           	0x0496
+#define	mem_kinit                               	0x04a6
+#define	mem_input_store                         	0x04b6
+#define	mem_x                                   	0x04c6
+#define	mem_y                                   	0x04d6
+#define	mem_y15                                 	0x04e5
+#define	mem_key_store                           	0x04e6
+#define	mem_key_store_end                       	0x04f7
+#define	memp_ar_key                             	0x04f8
+#define	memp_ar_input                           	0x04fa
+#define	mem_ar_hround                           	0x04fc
+#define	mem_ec_infinite                         	0x0506
+#define	mem_ec_loopc                            	0x0507
+#define	mem_aes_cmac_data_length                	0x0509
+#define	memdat                                  	0x050a
+#define	mem_ax                                  	0x050a
+#define	mem_ay                                  	0x0522
+#define	mem_az                                  	0x053a
+#define	mem_bx                                  	0x0552
+#define	mem_ax_256                              	0x056a
+#define	mem_by                                  	0x056a
+#define	mem_bz                                  	0x0582
+#define	mem_ay_256                              	0x058a
+#define	mem_cx                                  	0x059a
+#define	mem_az_256                              	0x05aa
+#define	mem_cy                                  	0x05b2
+#define	mem_cy5                                 	0x05c9
+#define	mem_bx_256                              	0x05ca
+#define	mem_cz                                  	0x05ca
+#define	mem_k                                   	0x05e2
+#define	mem_by_256                              	0x05ea
+#define	mem_align                               	0x05fa
+#define	mem_bz_256                              	0x060a
+#define	mem_tmp1                                	0x060a
+#define	memahbak                                	0x060a
+#define	mem_tmp5                                	0x0622
+#define	mem_cx_256                              	0x062a
+#define	memahsave                               	0x062a
+#define	mem_tmp2                                	0x063a
+#define	mem_cy_256                              	0x064a
+#define	memahsave_end                           	0x064a
+#define	mem_addr_padding                        	0x064a
+#define	mem_addr_value                          	0x064b
+#define	mem_tmp3                                	0x0652
+#define	mem_t1                                  	0x0652
+#define	mem_addr_value_end                      	0x0657
+#define	mem_addr_iocap_end                      	0x065a
+#define	mem_cy5_256                             	0x0669
+#define	mem_cz_256                              	0x066a
+#define	mem_tmp0                                	0x066a
+#define	mem_t0                                  	0x066a
+#define	mem_tmp0a                               	0x0672
+#define	mem_t2                                  	0x0682
+#define	mem_k_256                               	0x068a
+#define	mem_t3                                  	0x069a
+#define	mem_tmp1_256                            	0x06aa
+#define	mem_t7                                  	0x06b2
+#define	mem_tmp5_256                            	0x06ca
+#define	mem_tmp2_256                            	0x06ea
+#define	mem_tmp3_256                            	0x070a
+#define	mem_t1_256                              	0x070a
+#define	mem_tmp0_256                            	0x072a
+#define	mem_t0_256                              	0x072a
+#define	mem_t2_256                              	0x074a
+#define	mem_t3_256                              	0x076a
+#define	mem_t7_256                              	0x078a
+#define	mem_p                                   	0x07aa
+#define	mem_a                                   	0x07c2
+#define	mem_b                                   	0x07da
+#define	mem_gx                                  	0x07f2
+#define	mem_gy                                  	0x080a
+#define	memh0                                   	0x0822
+#define	mem_p_256                               	0x0842
+#define	mem_a_256                               	0x0862
+#define	mem_gx_256                              	0x0882
+#define	mem_gy_256                              	0x08a2
+#define	mem_le_slat                             	0x08c2
+#define	mem_sp_state_start                      	0x08d2
+#define	mem_sp_state                            	0x08d2
+#define	mem_master_sp_state                     	0x08d3
+#define	mem_sp_flag                             	0x08d4
+#define	mem_master_sp_flag                      	0x08d5
+#define	mem_sp_calc                             	0x08d6
+#define	mem_sp_dh_ready                         	0x08d7
+#define	mem_sp_localsm                          	0x08d8
+#define	mem_pairing_auth                        	0x08d9
+#define	mem_sp_flag_start                       	0x08da
+#define	mem_sp_local_key_send_count             	0x08da
+#define	mem_sp_remote_key_recv_count            	0x08db
+#define	mem_sp_remote_key_invalid               	0x08dc
+#define	mem_sp_dhkey_invalid                    	0x08dd
+#define	mem_gkey                                	0x08de
+#define	mem_le_pubkey_remote_x_256              	0x08e2
+#define	mem_sp_pubkey_remote                    	0x08ea
+#define	mem_sp_pubkey_remote_x                  	0x08ea
+#define	mem_sp_pubkey_remote_x_end              	0x0902
+#define	mem_le_pubkey_remote_y_256              	0x0902
+#define	mem_sp_pubkey_remote_y                  	0x090a
+#define	mem_le_dhkey_256                        	0x0922
+#define	mem_sp_dhkey                            	0x092a
+#define	mem_sp_dhkey_end                        	0x0942
+#define	mem_sp_random_local                     	0x0942
+#define	mem_sp_random_local_end                 	0x0952
+#define	mem_sp_random_remote                    	0x0952
+#define	mem_sp_random_remote_end                	0x0962
+#define	memresult                               	0x0962
+#define	mem_sp_calc_result                      	0x0962
+#define	memh                                    	0x0962
+#define	memg                                    	0x0966
+#define	memf                                    	0x096a
+#define	meme                                    	0x096e
+#define	mem_sp_calc_result_high                 	0x0972
+#define	memd                                    	0x0972
+#define	memc                                    	0x0976
+#define	memb                                    	0x097a
+#define	mema                                    	0x097e
+#define	mem_sp_check_result                     	0x0982
+#define	mem_sp_confirm_remote                   	0x0992
+#define	mem_sp_prarm_stack                      	0x09a2
+#define	mem_UI_data_txbuff_length               	0x09b2
+#define	mem_ipc_skip_continue_proc              	0x09b4
+#define	mem_ui_timer_temp                       	0x09b5
+#define	mem_ipc_rega_temp                       	0x09b5
+#define	mem_hold_contr                          	0x09b9
+#define	mem_hold_contw                          	0x09bb
+#define	mem_fifo_temp                           	0x09bd
+#define	mem_pdatatemp                           	0x09be
+#define	mem_temp                                	0x09c6
+#define	mem_timeup                              	0x09ce
+#define	mem_rega                                	0x09d2
+#define	mem_regb                                	0x09d6
+#define	mem_regc                                	0x09da
+#define	mem_contr                               	0x09dd
+#define	mem_contw                               	0x09df
+#define	mem_le_data_len_temp                    	0x09e1
+#define	mem_tx_fifo_map_temp                    	0x09e1
+#define	mem_rpn_dlci                            	0x09e1
+#define	mem_event_cmd_response_content          	0x09e1
+#define	mem_le_prand                            	0x09e1
+#define	mem_AES_CMAC_k                          	0x09e1
+#define	mem_regext_index                        	0x09e1
+#define	mem_temp_block0                         	0x09e1
+#define	mem_le_data_temp                        	0x09e2
+#define	mem_temp_block1                         	0x09e2
+#define	mem_le_aes_128                          	0x09f1
+#define	mem_regext                              	0x09f1
+#define	mem_AES_CMAC_k1                         	0x09f1
+#define	mem_temp_block2                         	0x09f1
+#define	mem_AES_CMAC_k2                         	0x0a01
+#define	mem_temp_block3                         	0x0a01
+#define	mem_AES_CMAC_temp                       	0x0a11
+#define	mem_temp_block4                         	0x0a11
+#define	mem_AES_CMAC_M_last                     	0x0a21
+#define	mem_temp_block5                         	0x0a21
+#define	mem_le_mackey                           	0x0a31
+#define	mem_temp_block6                         	0x0a31
+#define	mem_temp_prepare_write_request          	0x0a41
+#define	mem_kb_map2_temp_start                  	0x0b09
+#define	mem_kb_map2_vk                          	0x0b09
+#define	mem_kb_current_vk                       	0x0b0c
+#define	mem_kb_vk_offset                        	0x0b0f
+#define	mem_kb_vk_processed_cnt                 	0x0b10
+#define	mem_kb_map2_current_cell_ptr            	0x0b11
+#define	mem_kb_device_button                    	0x0b13
+#define	mem_table_temp0                         	0x0b14
+#define	mem_table_temp1                         	0x0b1c
+#define	mem_kb_map2_temp_end                    	0x0b24
+#define	mem_check_count                         	0x0b24
+#define	mem_store_key_count                     	0x0b25
+#define	mem_kb_gpio_val                         	0x0b26
+#define	mem_c51_flag                            	0x0b2a
+#define	mem_c51_lmp_lock                        	0x0b2b
+#define	mem_lmp_bb_disconnect_reason            	0x0b2c
+#define	mem_patch00                             	0x4000
+#define	mem_patch01                             	0x4001
+#define	mem_patch02                             	0x4002
+#define	mem_patch03                             	0x4003
+#define	mem_patch04                             	0x4004
+#define	mem_patch05                             	0x4005
+#define	mem_patch06                             	0x4006
+#define	mem_patch07                             	0x4007
+#define	mem_patch08                             	0x4008
+#define	mem_patch09                             	0x4009
+#define	mem_patch0a                             	0x400a
+#define	mem_patch0b                             	0x400b
+#define	mem_patch0c                             	0x400c
+#define	mem_patch0d                             	0x400d
+#define	mem_patch0e                             	0x400e
+#define	mem_patch0f                             	0x400f
+#define	mem_patch10                             	0x4010
+#define	mem_patch11                             	0x4011
+#define	mem_patch12                             	0x4012
+#define	mem_patch13                             	0x4013
+#define	mem_patch14                             	0x4014
+#define	mem_patch15                             	0x4015
+#define	mem_patch16                             	0x4016
+#define	mem_patch17                             	0x4017
+#define	mem_patch18                             	0x4018
+#define	mem_patch19                             	0x4019
+#define	mem_patch1a                             	0x401a
+#define	mem_patch1b                             	0x401b
+#define	mem_patch1c                             	0x401c
+#define	mem_patch1d                             	0x401d
+#define	mem_patch1e                             	0x401e
+#define	mem_patch1f                             	0x401f
+#define	mem_patch20                             	0x4020
+#define	mem_patch21                             	0x4021
+#define	mem_patch22                             	0x4022
+#define	mem_patch23                             	0x4023
+#define	mem_patch24                             	0x4024
+#define	mem_patch25                             	0x4025
+#define	mem_patch26                             	0x4026
+#define	mem_patch27                             	0x4027
+#define	mem_patch28                             	0x4028
+#define	mem_patch29                             	0x4029
+#define	mem_patch2a                             	0x402a
+#define	mem_patch2b                             	0x402b
+#define	mem_patch2c                             	0x402c
+#define	mem_patch2d                             	0x402d
+#define	mem_patch2e                             	0x402e
+#define	mem_patch2f                             	0x402f
+#define	mem_patch30                             	0x4030
+#define	mem_patch31                             	0x4031
+#define	mem_patch32                             	0x4032
+#define	mem_patch33                             	0x4033
+#define	mem_patch34                             	0x4034
+#define	mem_patch35                             	0x4035
+#define	mem_patch36                             	0x4036
+#define	mem_patch37                             	0x4037
+#define	mem_patch38                             	0x4038
+#define	mem_patch39                             	0x4039
+#define	mem_patch3a                             	0x403a
+#define	mem_patch3b                             	0x403b
+#define	mem_patch3c                             	0x403c
+#define	mem_patch3d                             	0x403d
+#define	mem_patch3e                             	0x403e
+#define	mem_patch3f                             	0x403f
+#define	mem_context                             	0x4040
+#define	mem_current_amaddr                      	0x4130
+#define	mem_lpm_mode                            	0x4131
+#define	mem_device_option                       	0x4132
+#define	mem_scan_mode                           	0x4133
+#define	mem_last_clkn                           	0x4134
+#define	mem_features                            	0x4138
+#define	mem_lap                                 	0x4140
+#define	mem_uap                                 	0x4143
+#define	mem_nap                                 	0x4144
+#define	mem_npage                               	0x4146
+#define	mem_glap                                	0x4147
+#define	mem_class                               	0x414a
+#define	mem_iscan_window                        	0x414d
+#define	mem_iscan_interval                      	0x414f
+#define	mem_pscan_window                        	0x4151
+#define	mem_pscan_interval                      	0x4153
+#define	mem_page_interval                       	0x4155
+#define	mem_page_window                         	0x4157
+#define	mem_page_to                             	0x4159
+#define	mem_inq_window                          	0x415b
+#define	mem_fcomp_mul                           	0x415d
+#define	mem_fcomp_div                           	0x415e
+#define	mem_rx_window_init                      	0x415f
+#define	mem_rx_window_sniff                     	0x4161
+#define	mem_rf_init_ptr                         	0x4163
+#define	mem_last_type                           	0x4165
+#define	mem_last_type_esco                      	0x4166
+#define	mem_last_type_saved                     	0x4167
+#define	mem_retransmission_cnt                  	0x4168
+#define	mem_next_btclk                          	0x416a
+#define	mem_rf_rccal                            	0x416e
+#define	mem_handle_num                          	0x416f
+#define	mem_max_slot                            	0x4170
+#define	mem_eir_enable                          	0x4171
+#define	mem_afh_instant                         	0x4172
+#define	mem_afh_error_total                     	0x4176
+#define	mem_afh_cfg                             	0x4178
+#define	mem_afh_new_mod                         	0x4179
+#define	mem_afh_map_lo                          	0x417a
+#define	mem_afh_map_hi                          	0x417f
+#define	mem_afh_used                            	0x4184
+#define	mem_afh_index                           	0x4185
+#define	mem_afh_map_new                         	0x4187
+#define	mem_afh_map                             	0x4192
+#define	mem_afh_timer                           	0x41e2
+#define	mem_afh_classify_channel_map            	0x41e6
+#define	mem_chip_functions                      	0x41f0
+#define	mem_lpm_wake_lock                       	0x41f2
+#define	mem_lpm_interval                        	0x41f4
+#define	mem_lpm_overhead                        	0x41f6
+#define	mem_lpm_hibernate_switch                	0x41f7
+#define	mem_esco_addr                           	0x41f8
+#define	mem_sniff_unint_lost                    	0x41f9
+#define	mem_ptt                                 	0x41fa
+#define	mem_sleep_counter                       	0x41fb
+#define	mem_sleep_counter_all                   	0x41ff
+#define	mem_sleep_clkn                          	0x4203
+#define	mem_sniff_rcv                           	0x4209
+#define	mem_sniff_lost                          	0x420c
+#define	mem_clks_per_lpo                        	0x420f
+#define	mem_lpm_mult                            	0x4212
+#define	mem_lpm_mult_timeout                    	0x4213
+#define	mem_lpm_mult_cnt                        	0x4214
+#define	mem_lpm_config                          	0x4215
+#define	mem_lpm_xtalcnt                         	0x4218
+#define	mem_lpm_buckcnt                         	0x4219
+#define	mem_lpm_ldocnt                          	0x421a
+#define	mem_lpm_isogate                         	0x421b
+#define	mem_lpm_isogate_final                   	0x421c
+#define	mem_saved_gpio                          	0x421d
+#define	mem_saved_gsel                          	0x422d
+#define	mem_saved_mark                          	0x4230
+#define	mem_saved_spidctrl                      	0x4238
+#define	mem_patch_ptr                           	0x4239
+#define	mem_patch_len                           	0x423b
+#define	mem_timers                              	0x423d
+#define	mem_link_key_exists                     	0x425d
+#define	mem_link_key_eeprom_head                	0x425e
+#define	mem_link_key                            	0x4261
+#define	mem_hci_cmd                             	0x4271
+#define	mem_hci_conn_handle                     	0x4272
+#define	mem_hci_plap                            	0x4273
+#define	mem_hci_puap                            	0x4276
+#define	mem_hci_pnap                            	0x4277
+#define	mem_uartd_rxitems_got_data              	0x4279
+#define	mem_uartd_rxitems_threshold             	0x427a
+#define	mem_uartd_rx_timeout                    	0x427b
+#define	mem_tx_lch                              	0x427d
+#define	mem_tx_len                              	0x427e
+#define	mem_tx_power                            	0x4280
+#define	mem_context_number                      	0x4281
+#define	mem_rf_init_data                        	0x4282
+#define	mem_app_handshake_flag                  	0x4283
+#define	mem_sniff_param_interval                	0x4284
+#define	mem_sniff_param_attempt                 	0x4286
+#define	mem_sniff_param_timeout                 	0x4288
+#define	mem_cb_check_wakelock                   	0x428a
+#define	mem_cb_before_hibernate                 	0x428c
+#define	mem_cb_before_lpm                       	0x428e
+#define	mem_cb_le_process                       	0x4290
+#define	mem_cb_bt_process                       	0x4292
+#define	mem_cb_idle_process                     	0x4294
+#define	mem_cb_bb_event_process                 	0x4296
+#define	mem_cb_discovry_timeout                 	0x4298
+#define	mem_cb_att_write                        	0x429a
+#define	mem_cb_update_notify_value              	0x429c
+#define	mem_cb_update_notify_continue           	0x429e
+#define	mem_cb_event_timer                      	0x42a0
+#define	mem_cb_le_set_mult                      	0x42a2
+#define	mem_cb_bt_set_mult                      	0x42a4
+#define	mem_soft_version_num                    	0x42a6
+#define	mem_eeprom_base                         	0x42a8
+#define	mem_unsniff2sniff_timer_count           	0x42aa
+#define	mem_wake_up_delay_timer                 	0x42ab
+#define	mem_app_connection_options              	0x42ac
+#define	mem_app_disconn_reason                  	0x42ad
+#define	mem_app_disconn_reason_flag             	0x42af
+#define	mem_lpm_delay_after_sniff               	0x42b1
+#define	mem_xrecord_mode                        	0x42b5
+#define	mem_eeprom_block_size                   	0x42b6
+#define	mem_wakup_from_power_flag               	0x42b8
+#define	mem_spi_init_clk                        	0x42b9
+#define	mem_spi_init_delay_time                 	0x42ba
+#define	mem_spi_ncs_gpio                        	0x42bb
+#define	mem_nv_data_ptr                         	0x42bc
+#define	mem_nv_data_number                      	0x42be
+#define	mem_0_5_adc_io_data                     	0x42bf
+#define	mem_1v_adc_hvin_data                    	0x42c1
+#define	mem_2v_adc_vinlpm_data                  	0x42c3
+#define	mem_1v_adc_io_data                      	0x42c5
+#define	mem_5v_adc_hvin_data                    	0x42c7
+#define	mem_3v_adc_vinlpm_data                  	0x42c9
+#define	mem_otp_adc_flag                        	0x42cb
+#define	mem_reference_voltage                   	0x42cd
+#define	mem_adc_config_flag                     	0x42cf
+#define	mem_adc_channel                         	0x42d0
+#define	mem_adc_current_value                   	0x42d1
+#define	mem_baud                                	0x42d3
+#define	mem_hci_lt_rx_state                     	0x42d5
+#define	mem_l2cap_xmem_start                    	0x42d6
+#define	mem_l2cap_tx_multi_offset               	0x42d6
+#define	mem_sdp_remote_cid                      	0x42d8
+#define	mem_rfcomm_remote_cid                   	0x42da
+#define	mem_hid_ctrl_remote_cid                 	0x42dc
+#define	mem_hid_int_remote_cid                  	0x42de
+#define	mem_sdp_state                           	0x42e0
+#define	mem_rfcomm_state                        	0x42e1
+#define	mem_hid_control_state                   	0x42e2
+#define	mem_hid_interrupt_state                 	0x42e3
+#define	mem_spp_state                           	0x42e4
+#define	mem_ML2CAP_comm_id                      	0x42e5
+#define	mem_used_map                            	0x42e6
+#define	mem_tx_fifo0                            	0x42e7
+#define	mem_tx_fifo0_map                        	0x42e7
+#define	mem_tx_fifo0_ptr                        	0x42e8
+#define	mem_tx_fifo1                            	0x42ea
+#define	mem_tx_fifo1_map                        	0x42ea
+#define	mem_tx_fifo1_ptr                        	0x42eb
+#define	mem_tx_fifo2                            	0x42ed
+#define	mem_tx_fifo2_map                        	0x42ed
+#define	mem_tx_fifo2_ptr                        	0x42ee
+#define	mem_tx_fifo3                            	0x42f0
+#define	mem_tx_fifo3_map                        	0x42f0
+#define	mem_tx_fifo3_ptr                        	0x42f1
+#define	mem_tx_fifo_end                         	0x42f3
+#define	mem_l2cap_lpm_txbuf                     	0x42f3
+#define	mem_l2cap_flow_ctrl_flag                	0x43f3
+#define	mem_l2cap_pending_item                  	0x43f4
+#define	mem_l2cap_xmem_end                      	0x43f5
+#define	mem_le_dsniff                           	0x43f5
+#define	mem_le_conn_interval                    	0x43f7
+#define	mem_le_scan_enable                      	0x43f9
+#define	mem_le_scan_interval                    	0x43fa
+#define	mem_le_scan_window                      	0x43fc
+#define	mem_le_adv_led                          	0x43fe
+#define	mem_le_adv_enable                       	0x43ff
+#define	mem_le_adv_data_len                     	0x4400
+#define	mem_le_adv_data                         	0x4401
+#define	mem_le_scan_data_len                    	0x4420
+#define	mem_le_scan_data                        	0x4421
+#define	mem_le_name_len                         	0x4440
+#define	mem_le_name                             	0x4441
+#define	mem_le_led_on_time                      	0x4455
+#define	mem_le_new_map                          	0x4456
+#define	mem_le_new_param                        	0x445b
+#define	mem_le_new_transmitwindowsize           	0x445b
+#define	mem_le_new_transmitwindowoffset         	0x445c
+#define	mem_le_new_conninterval                 	0x445e
+#define	mem_le_new_connslavelatency             	0x4460
+#define	mem_le_new_connsupervisiontimeout       	0x4462
+#define	mem_le_temp                             	0x4464
+#define	mem_le_txheader                         	0x4465
+#define	mem_le_txlen                            	0x4466
+#define	mem_le_txpayload                        	0x4467
+#define	mem_le_txcid                            	0x4469
+#define	mem_le_l2cap                            	0x446b
+#define	mem_le_l2cap_response                   	0x446c
+#define	mem_le_txbdy                            	0x446d
+#define	mem_le_pcnt_tx                          	0x448c
+#define	mem_le_pcnt_rx                          	0x4491
+#define	mem_le_last_mic                         	0x4496
+#define	mem_le_ivm                              	0x449a
+#define	mem_le_ivs                              	0x449e
+#define	mem_le_ltk                              	0x44a2
+#define	mem_ltk_exists                          	0x44b2
+#define	mem_le_rconfirm                         	0x44b3
+#define	mem_le_srand                            	0x44c3
+#define	mem_le_iat                              	0x44d3
+#define	mem_le_rat                              	0x44d4
+#define	mem_le_preq                             	0x44d5
+#define	mem_le_preq_iocap                       	0x44d6
+#define	mem_le_preq_oob                         	0x44d7
+#define	mem_le_preq_auth                        	0x44d8
+#define	mem_le_preq_max_keysize                 	0x44d9
+#define	mem_le_preq_init_key_distribution       	0x44da
+#define	mem_le_preq_resp_key_distribution       	0x44db
+#define	mem_le_pres                             	0x44dc
+#define	mem_le_pres_iocap                       	0x44dd
+#define	mem_le_pres_oob                         	0x44de
+#define	mem_le_pres_auth                        	0x44df
+#define	mem_le_pres_max_keysize                 	0x44e0
+#define	mem_le_pres_init_key_distribution       	0x44e1
+#define	mem_le_pres_resp_key_distribution       	0x44e2
+#define	mem_le_search_handle_start              	0x44e3
+#define	mem_le_search_handle_end                	0x44e5
+#define	mem_le_att_offset                       	0x44e7
+#define	mem_le_search_att_type_length           	0x44e7
+#define	mem_le_search_att_type                  	0x44e8
+#define	mem_le_notify_handle                    	0x44f8
+#define	mem_le_search_uuid_length               	0x44fa
+#define	mem_le_search_uuid                      	0x44fb
+#define	mem_le_handle_data_len                  	0x450b
+#define	mem_le_handle_data                      	0x450c
+#define	mem_le_adv_param                        	0x451c
+#define	mem_le_adv_interval_min                 	0x451c
+#define	mem_le_adv_interval_max                 	0x451e
+#define	mem_le_adv_type                         	0x4520
+#define	mem_le_adv_own_addr_type                	0x4521
+#define	mem_le_adv_direct_addr_type             	0x4522
+#define	mem_le_adv_direct_addr                  	0x4523
+#define	mem_le_adv_channel_map                  	0x4529
+#define	mem_le_adv_filter_policy                	0x452a
+#define	mem_le_conn_param                       	0x452b
+#define	mem_le_conn_peer_addr_type              	0x452b
+#define	mem_le_conn_peer_addr                   	0x452c
+#define	mem_le_conn_own_addr_type               	0x4532
+#define	mem_le_conn_interval_min                	0x4533
+#define	mem_le_conn_interval_max                	0x4535
+#define	mem_le_conn_latency                     	0x4537
+#define	mem_le_conn_superto                     	0x4539
+#define	mem_le_scan_params                      	0x453b
+#define	mem_le_scan_type                        	0x453b
+#define	mem_le_scan_own_addr_type               	0x453c
+#define	mem_le_scan_filter_policy               	0x453d
+#define	mem_le_lap                              	0x453e
+#define	mem_le_uap                              	0x4541
+#define	mem_le_nap                              	0x4542
+#define	mem_le_xtype_fifo                       	0x4544
+#define	mem_le_local_mtu                        	0x454c
+#define	mem_le_remote_mtu                       	0x454e
+#define	mem_le_ll_cur_opcode                    	0x4550
+#define	mem_le_skdm                             	0x4551
+#define	mem_le_skds                             	0x4559
+#define	mem_le_init_superto                     	0x4561
+#define	mem_le_secure_connect_enable            	0x4563
+#define	mem_le_secure_connect_flag              	0x4564
+#define	mem_le_sc_calc                          	0x4565
+#define	mem_le_secure_connect_state             	0x4566
+#define	mem_le_sc_confirm_gkey_flag             	0x4567
+#define	mem_le_sc_local_key_invalid             	0x4568
+#define	mem_le_continue_flag                    	0x4569
+#define	mem_le_pairing_state                    	0x456a
+#define	mem_le_enc_state                        	0x456b
+#define	mem_le_pairing_mode                     	0x456c
+#define	mem_le_tk                               	0x456d
+#define	mem_le_ediv                             	0x4571
+#define	mem_le_rand                             	0x4573
+#define	mem_le_irk                              	0x457b
+#define	mem_le_pairing_handle                   	0x458b
+#define	mem_le_interal_min                      	0x458d
+#define	mem_le_interal_max                      	0x458f
+#define	mem_le_latency                          	0x4591
+#define	mem_le_timeout                          	0x4593
+#define	mem_le_switch_send_data                 	0x4595
+#define	mem_le_transmit_window                  	0x4596
+#define	mem_le_buff_len                         	0x459a
+#define	mem_le_buff_len_all                     	0x459c
+#define	mem_le_buff_data_len_all                	0x459e
+#define	mem_prepare_write_len                   	0x45a0
+#define	mem_le_prepare_write_req_offset         	0x45a2
+#define	mem_prepare_handle                      	0x45a4
+#define	mem_prepare_write_offest                	0x45a6
+#define	mem_le_flag                             	0x45a8
+#define	mem_lmp_version                         	0x45a9
+#define	mem_lmp_subversion                      	0x45ac
+#define	mem_local_name_length                   	0x45ae
+#define	mem_local_name                          	0x45af
+#define	mem_local_name2                         	0x45b2
+#define	mem_local_name_end                      	0x45f2
+#define	mem_unsniff2sniff_timer                 	0x45f3
+#define	mem_switch_flag                         	0x45f4
+#define	mem_pn_dlci                             	0x45f5
+#define	mem_pn_max_frame_size                   	0x45f6
+#define	memFCStemp1                             	0x45f8
+#define	memFCStemp2                             	0x45f9
+#define	memFCStemp3                             	0x45fa
+#define	mem_rfcomm_initiator                    	0x45fb
+#define	mem_remote_spp_channel                  	0x45fc
+#define	mem_HIUfcs_SPP                          	0x45fd
+#define	mem_HIUfcs_SPP_WCredits                 	0x45fe
+#define	mem_rfcomm_send_more_pkt                	0x45ff
+#define	mem_remote_credits                      	0x4600
+#define	mem_credit_given                        	0x4601
+#define	mem_ms_channel                          	0x4602
+#define	mem_credit_flag                         	0x4603
+#define	mem_rfcomm_max_frame_size               	0x4604
+#define	mem_rfcomm_credit_init_data             	0x4606
+#define	mem_cb_receive_spp_data                 	0x4607
+#define	mem_nl_rx_data_src                      	0x4609
+#define	mem_nl_rx_len_all                       	0x460b
+#define	mem_ui_uuid_table                       	0x460d
+#define	mem_all_uuid_16bits                     	0x460f
+#define	mem_all_uuid_128bits                    	0x4625
+#define	mem_ui_le_uuid_table                    	0x4637
+#define	mem_sp_local_key_invalid                	0x4639
+#define	mem_le_private_key_256                  	0x463a
+#define	mem_le_pubkey_local_x_256               	0x465a
+#define	mem_le_pubkey_local_y_256               	0x467a
+#define	mem_sp_private_key                      	0x469a
+#define	mem_sp_pubkey_local                     	0x46b2
+#define	mem_sp_pubkey_local_x                   	0x46b2
+#define	mem_sp_pubkey_local_x_end               	0x46ca
+#define	mem_sp_pubkey_local_y                   	0x46ca
+#define	mem_ssp_enable                          	0x46e2
+#define	mem_sp_iocap_local                      	0x46e3
+#define	mem_sp_iocap_remote                     	0x46e6
+#define	mem_flag_mode_ssp_pin                   	0x46e9
+#define	mem_ssp_mode_flag                       	0x46ea
+#define	mem_authentication_passkey_times        	0x46eb
+#define	mem_passkey_1bit                        	0x46ec
+#define	mem_flag_pairing_state                  	0x46ed
+#define	mem_ipc_lock_bt                         	0x46ee
+#define	mem_ipc_lock_c51                        	0x46ef
+#define	mem_ipc_fifo_bt2c51                     	0x46f0
+#define	mem_ipc_fifo_c512bt                     	0x46f8
+#define	mem_led_switch                          	0x4700
+#define	mem_ui_button_timer                     	0x4701
+#define	mem_ui_button_last_state                	0x4702
+#define	mem_ui_timer_last_btclk                 	0x4703
+#define	mem_discovery_timeout_timer_count       	0x4707
+#define	mem_hid_handshake_timer_count           	0x4709
+#define	memui_reconnect_mode                    	0x470a
+#define	mem_ui_state_map                        	0x470b
+#define	mem_ui_profile_supported                	0x470d
+#define	mem_led_gpio                            	0x470e
+#define	mem_led_dark_time                       	0x470f
+#define	mem_led_light_time                      	0x4711
+#define	mem_led_blink_count                     	0x4713
+#define	mem_ui_button_timeout                   	0x4714
+#define	mem_ui_button_gpio                      	0x4715
+#define	mem_discovery_timeout                   	0x4716
+#define	mem_pin_length                          	0x4718
+#define	mem_pin                                 	0x4719
+#define	mem_24g_tx_btclk                        	0x4729
+#define	mem_24g_interval                        	0x472d
+#define	mem_24g_txfail_cnt                      	0x472e
+#define	mem_24g_attempt_cnt                     	0x472f
+#define	mem_24g_attempt_flag                    	0x4730
+#define	mem_24g_rxfail_cnt                      	0x4731
+#define	mem_24g_retry                           	0x4734
+#define	mem_24g_pid                             	0x4735
+#define	mem_24g_datalen                         	0x4736
+#define	mem_24g_crc                             	0x4737
+#define	mem_24g_rxbuf                           	0x4739
+#define	mem_24g_addr                            	0x4779
+#define	mem_24g_len                             	0x477d
+#define	mem_24g_txpayload                       	0x477f
+#define	mem_24g_txdata                          	0x4789
+#define	mem_24g_ch                              	0x4793
+#define	mem_24g_scremble                        	0x4794
+#define	mem_24g_current_ch_number               	0x47a4
+#define	mem_24g_ch_map1                         	0x47a5
+#define	mem_24g_ch_map2                         	0x47a9
+#define	mem_24g_ch_map3                         	0x47ad
+#define	mem_24g_ch_map4                         	0x47b1
+#define	mem_24g_interval_min                    	0x47b5
+#define	mem_24g_interval_max                    	0x47b6
+#define	mem_24g_ensure                          	0x47b7
+#define	mem_24g_enter_hibernate                 	0x47b8
+#define	mem_24g_enter_lpm_timer                 	0x47c0
+#define	mem_24g_pairing_sm                      	0x47c1
+#define	mem_24g_addr_copy                       	0x47c2
+#define	mem_24g_sifs                            	0x47c6
+#define	mem_24g_rxcnt                           	0x47c7
+#define	mem_24g_addr_private_dongle             	0x47c8
+#define	mem_24g_map_buff0_dongle                	0x47cc
+#define	mem_24g_channel_cnt_dongle              	0x47cd
+#define	mem_24g_pairing_sm_dongle               	0x47ce
+#define	mem_24g_tx_btclk_dongle                 	0x47cf
+#define	mem_24g_interval_dongle                 	0x47d3
+#define	mem_24g_ch_update_dongle                	0x47d4
+#define	mem_24g_rx_sync_dongle                  	0x47d5
+#define	mem_24g_ch_cnt_dongle                   	0x47d6
+#define	mem_24g_rxbuf_temp_dongle               	0x47d7
+#define	mem_24g_rxbuf_dongle                    	0x47dd
+#define	mem_24g_rxfail_cnt_dongle               	0x47e3
+#define	mem_24g_spi_enable_flag                 	0x47e6
+#define	mem_acl_credits                         	0x4729
+#define	mem_allow_switch                        	0x472b
+#define	mem_hci_acl_queue_start                 	0x472c
+#define	mem_hci_wake_clk                        	0x4730
+#define	mem_kb_state                            	0x4729
+#define	mem_kb_report_data                      	0x472b
+#define	mem_kb_keys                             	0x4731
+#define	mem_kb_rcv_led_data                     	0x4732
+#define	mem_kb_fast_wake_last                   	0x4733
+#define	mem_led_cap_gpio                        	0x4737
+#define	mem_led_num_gpio                        	0x4738
+#define	mem_led_scl_gpio                        	0x4739
+#define	mem_kb_current_vdd_value_10times        	0x473a
+#define	mem_kb_read_adc_cnt_100ms               	0x473c
+#define	mem_kb_current_vdd_value                	0x473d
+#define	mem_led_power_blink_count               	0x473f
+#define	mem_led_power_500ms_cnt                 	0x4740
+#define	mem_kb_map2                             	0x4741
+#define	mem_3v1_adc_default                     	0x49fd
+#define	mem_kb_map                              	0x49ff
+#define	mem_kb_discovery_timer                  	0x4a9d
+#define	mem_kb_direct_timer                     	0x4a9f
+#define	mem_kb_no_data_timer                    	0x4aa1
+#define	mem_kb_direct_timeout                   	0x4aa3
+#define	mem_kscn_event_last                     	0x4aa5
+#define	mem_kscan_event_num_last                	0x4aa6
+#define	mem_auto_enable_mult_timer              	0x4aa7
+#define	mem_auto_enable_mult_timer_init         	0x4aa8
+#define	mem_kb_temp_flag                        	0x4aa9
+#define	mem_map2_out_report0                    	0x4aaa
+#define	mem_map2_out_report1                    	0x4ab2
+#define	mem_table_last_repory_data0             	0x4aba
+#define	mem_table_last_repory_data1             	0x4ac2
+#define	mem_kb_down                             	0x4aca
+#define	mem_kb_down_last                        	0x4ad4
+#define	mem_table_temp                          	0x4ade
+#define	mem_pincode_vk_last                     	0x4ae6
+#define	mem_kb_device_button_last               	0x4ae7
+#define	mem_kb_device_button_timer              	0x4ae8
+#define	mem_kb_current_status                   	0x4ae9
+#define	mem_seq                                 	0x4aea
+#define	mem_dorx_cnt                            	0x4aeb
+#define	mem_matched_btclk                       	0x4aec
+#define	mem_master_sniff_interval               	0x4aee
+#define	mem_led_power_gpio                      	0x4aef
+#define	mem_kb_check_vdd_count                  	0x4af0
+#define	mem_0v_adc_data                         	0x4af2
+#define	mem_2v2_adc_data                        	0x4af4
+#define	mem_3v_adc_data                         	0x4af6
+#define	mem_select_system_led_timer             	0x4af8
+#define	mem_led_cap_gpio_status                 	0x4af9
+#define	mem_kb_no_data_timeout                  	0x4afa
+#define	mem_kb_gpio_last_val                    	0x4afc
+#define	mem_store_current_status                	0x4b00
+#define	mem_kb_led_on_timer                     	0x4b01
+#define	mem_kb_debug_sm                         	0x4b02
+#define	mem_kb_mode                             	0x4b03
+#define	mem_kb_mode_revese                      	0x4b05
+#define	mem_master_addr                         	0x4b07
+#define	mem_led_device_blink_count              	0x4b0d
+#define	mem_led_device_500ms_cnt                	0x4b0e
+#define	mem_kb_caps_led_status                  	0x4b0f
+#define	mem_kb_reconnection_ssp                 	0x4b10
+#define	mem_kb_rcv_hid_control_rsp              	0x4b11
+#define	mem_kb_down_regroup                     	0x4b12
+#define	mem_kb_get_fn_flag                      	0x4b17
+#define	mem_kb_kscan_cnt                        	0x4b18
+#define	mem_kb_down_test                        	0x4b19
+#define	mem_kb_release_fn_data                  	0x4b23
+#define	mem_led_cap_delay_timer                 	0x4b24
+#define	mem_led_cap_mult_timer                  	0x4b25
+#define	mem_led_cap_flag                        	0x4b26
+#define	mem_hid_rx_data                         	0x4b27
+#define	mem_kb_fn_c                             	0x4b28
+#define	mem_kb_c_fn                             	0x4b29
+#define	mem_keyboard_uuid_list                  	0x4b2a
+#define	mem_keyboard_uuid_list_end              	0x4db4
+#define	mem_keyboard_le_att_list                	0x4db4
+#define	mem_keyboard_le_att_list_end            	0x4fa8
+#define	mem_module_wake_up_gpio                 	0x4729
+#define	mem_module_state_gpio                   	0x472a
+#define	mem_module_connect_state_gpio           	0x472b
+#define	mem_current_packet_length               	0x472c
+#define	mem_module_state                        	0x472e
+#define	mem_module_task                         	0x472f
+#define	mem_cmode_addr                          	0x4730
+#define	mem_module_mcu_wake_pin                 	0x4736
+#define	mem_module_mcu_wake_delay_us            	0x4737
+#define	mem_module_spp_lpm_mult                 	0x473b
+#define	mem_module_le_lpm_mult                  	0x473c
+#define	mem_module_bluetooth_stauts_by_command  	0x473d
+#define	mem_module_uart_rx_buffer               	0x473e
+#define	mem_module_uart_rx_buffer_end           	0x4740
+#define	mem_module_uart_tx_buffer               	0x4742
+#define	mem_module_uart_tx_buffer_end           	0x4744
+#define	mem_module_read_vdd_flag                	0x4746
+#define	mem_module_read_vdd_count               	0x4747
+#define	mem_module_vdd_quotient                 	0x4748
+#define	mem_module_vdd_remainder                	0x4749
+#define	mem_module_le_buff_len                  	0x474a
+#define	mem_module_le_buff_len_all              	0x474c
+#define	mem_module_le_buff_data_len_all         	0x474e
+#define	mem_module_le_continue_flag             	0x4750
+#define	mem_module_le_rx_data_len               	0x4751
+#define	mem_module_le_rx_data_address           	0x4752
+#define	mem_module_le_rx_data_handle            	0x4754
+#define	mem_module_data_write_handle            	0x4756
+#define	mem_module_data_write_handle2           	0x4758
+#define	mem_module_flag                         	0x475a
+#define	mem_le_notify_type                      	0x475b
+#define	mem_module_hci_notify_start             	0x475c
+#define	mem_module_hci_notify_offset            	0x475e
+#define	mem_module_hci_notify_len               	0x4760
+#define	mem_module_hci_notify_att               	0x4762
+#define	mem_module_hci_notify_original_len      	0x4764
+#define	mem_module_uuid_list                    	0x4766
+#define	mem_module_uuid_list_end                	0x4892
+#define	mem_module_le_att_list                  	0x4892
+#define	mem_module_le_att_list_end              	0x4a86
+#define	mem_nv_data                             	0x4a86
+#define	mem_nv_data0                            	0x4a86
+#define	mem_nv_data1                            	0x4aa8
+#define	mem_nv_data2                            	0x4aca
+#define	mem_nv_data3                            	0x4aec
+#define	mem_nv_data4                            	0x4b0e
+#define	mem_mouse_key                           	0x4729
+#define	mem_mouse_x                             	0x472a
+#define	mem_mouse_y                             	0x472c
+#define	mem_mouse_z                             	0x472e
+#define	mem_mouse_tz                            	0x472f
+#define	mem_mouse_xy_h                          	0x4730
+#define	mem_sensor_shutter_hi                   	0x4731
+#define	mem_sensor_shutter_lo                   	0x4732
+#define	mem_sensor_smart_flag                   	0x4733
+#define	mem_sensor_squal_reg                    	0x4734
+#define	mem_mouse_move_flag                     	0x4735
+#define	mem_reconnect_timeout                   	0x4736
+#define	mem_mouse_direct_timeout                	0x4737
+#define	mem_mouse_no_data_timeout               	0x4739
+#define	mem_mouse_blank_data_timeout            	0x473b
+#define	mem_mouse_discovery_timer               	0x473d
+#define	mem_mouse_direct_timer                  	0x473f
+#define	mem_mouse_no_data_timer                 	0x4741
+#define	mem_mouse_blank_data_timer              	0x4743
+#define	mem_mouse_send_blank_timer              	0x4745
+#define	mem_mouse_dpi                           	0x4746
+#define	mem_mouse_dpi_button_state              	0x4747
+#define	mem_mouse_test_cnt                      	0x4748
+#define	mem_le_hibernate_timer                  	0x4749
+#define	mem_mouse_mode_state                    	0x474b
+#define	mem_mouse_le_notify_handle              	0x474c
+#define	mem_lbutton_gpio                        	0x474d
+#define	mem_rbutton_gpio                        	0x474e
+#define	mem_mbutton_gpio                        	0x474f
+#define	mem_sbutton1_gpio                       	0x4750
+#define	mem_sbutton2_gpio                       	0x4751
+#define	mem_dpi_button_gpio                     	0x4752
+#define	mem_sensor_data_gpio                    	0x4753
+#define	mem_whee_a_data_gpio                    	0x4754
+#define	mem_whee_b_data_gpio                    	0x4755
+#define	mem_sensor_reset_gpio                   	0x4756
+#define	mem_device1_led_gpio                    	0x4757
+#define	mem_device2_led_gpio                    	0x4758
+#define	mem_device3_led_gpio                    	0x4759
+#define	mem_conn_cnt                            	0x475a
+#define	mem_whee_ta_data_gpio                   	0x475b
+#define	mem_whee_tb_data_gpio                   	0x475c
+#define	mem_wheel_tb_old_pinlevel               	0x475d
+#define	mem_wheel_tb_new_pinlevel               	0x475e
+#define	mem_wheel_tog                           	0x475f
+#define	mem_mouse_tz_data                       	0x4760
+#define	mem_mouse_tz_data_count                 	0x4761
+#define	mem_mouse_tz_data_count1                	0x4762
+#define	mem_mwhee_a_data_gpio                   	0x4763
+#define	mem_mwhee_b_data_gpio                   	0x4764
+#define	mem_mwheel_b_old_pinlevel               	0x4765
+#define	mem_mwheel_b_new_pinlevel               	0x4766
+#define	mem_mwheel_tog                          	0x4767
+#define	mem_mouse_z_data                        	0x4768
+#define	mem_mouse_z_data_count                  	0x4769
+#define	mem_mouse_z_data_count1                 	0x476a
+#define	mem_reconn_mode                         	0x476b
+#define	mem_mouse_statue_led_timer              	0x476c
+#define	mem_device_flag                         	0x476d
+#define	mem_mouse_uuid_list                     	0x476e
+#define	mem_mouse_uuid_list_end                 	0x4a5c
+#define	mem_mouse_le_att_list                   	0x4a5c
+#define	mem_mouse_le_att_list_end               	0x4cb4
+#define	mem_shutter_send_data                   	0x4729
+#define	mem_shutter_key_temp                    	0x472d
+#define	mem_shutter_send_length                 	0x472e
+#define	mem_shutter_clkn_bt_last                	0x472f
+#define	mem_shutter_key                         	0x4733
+#define	mem_shutter_flag                        	0x4734
+#define	mem_shutter_cable_unplug_conut          	0x4735
+#define	mem_shutter_hid_disconn_count           	0x4736
+#define	mem_shutter_1key_send_sm                	0x4737
+#define	mem_shutter_iphonekey_gpio              	0x4738
+#define	mem_shutter_androidkey_gpio             	0x4739
+#define	mem_shutter_key_number                  	0x473a
+#define	mem_read_eeprom_temp                    	0x473b
+#define	mem_read_eeprom_mac_addr                	0x473c
+#define	mem_scale_tx_length                     	0x473f
+#define	mem_scale_txbuff_inuse                  	0x4740
+#define	mem_adv_lap_ptr                         	0x4741
+#define	mem_le_sleep_flag                       	0x4743
+#define	mem_rx_window_sniff_inc                 	0x4744
+#define	mem_pair_state                          	0x4746
+#define	mem_exchange_mtu_req                    	0x4747
+#define	mem_le_sleep_timeout                    	0x4748
+#define	mem_le_sleep_timeout_timer_count        	0x474a
+#define	mem_le_fast_adv_timeout                 	0x474c
+#define	mem_le_fast_adv_timeout_timer_count     	0x474e
+#define	mem_led_fast_dark_time                  	0x4750
+#define	mem_led_fast_light_time                 	0x4752
+#define	mem_power_on_pin                        	0x4754
+#define	mem_hard_soft_switch_case               	0x4755
+#define	mem_shutter_powerup_flag                	0x4756
+#define	mem_shutter_button_timeout              	0x4757
+#define	mem_shutter_button_timer                	0x4758
+#define	mem_power_timeout                       	0x4759
+#define	mem_power_timer                         	0x475a
+#define	mem_enable_key_scan                     	0x475b
+#define	mem_packet_interval_set                 	0x475c
+#define	mem_shutter_led_num                     	0x475e
+#define	mem_led_map                             	0x475f
+#define	mem_fast_adv_led_style                  	0x4763
+#define	mem_fa_led_type                         	0x4763
+#define	mem_fa_led_pin                          	0x4764
+#define	mem_fa_led_on_time                      	0x4765
+#define	mem_fa_led_off_time                     	0x4767
+#define	mem_fa_blink_count                      	0x4769
+#define	mem_slow_adv_led_style                  	0x476a
+#define	mem_sa_led_type                         	0x476a
+#define	mem_sa_led_pin                          	0x476b
+#define	mem_sa_led_on_time                      	0x476c
+#define	mem_sa_led_off_time                     	0x476e
+#define	mem_sa_blink_count                      	0x4770
+#define	mem_power_on_led_style                  	0x4771
+#define	mem_po_led_type                         	0x4771
+#define	mem_po_led_pin                          	0x4772
+#define	mem_po_led_on_time                      	0x4773
+#define	mem_po_led_off_time                     	0x4775
+#define	mem_po_blink_count                      	0x4777
+#define	mem_powe_off_led_style                  	0x4778
+#define	mem_pf_led_type                         	0x4778
+#define	mem_pf_led_pin                          	0x4779
+#define	mem_pf_led_on_time                      	0x477a
+#define	mem_pf_led_off_time                     	0x477c
+#define	mem_pf_blink_count                      	0x477e
+#define	mem_connected_led_style                 	0x477f
+#define	mem_co_led_type                         	0x477f
+#define	mem_co_led_pin                          	0x4780
+#define	mem_co_led_on_time                      	0x4781
+#define	mem_co_led_off_time                     	0x4783
+#define	mem_co_blink_count                      	0x4785
+#define	mem_key_led_style                       	0x4786
+#define	mem_key_led_style_ind_0                 	0x4786
+#define	mem_key_led_style_ind_0_data            	0x4786
+#define	mem_key_led_style_ind_1                 	0x478d
+#define	mem_key_led_style_ind_1_data            	0x478d
+#define	mem_key_led_style_ind_2                 	0x4794
+#define	mem_key_led_style_ind_2_data            	0x4794
+#define	mem_key_led_style_ind_3                 	0x479b
+#define	mem_key_led_style_ind_key_release       	0x479b
+#define	mem_key_led_style_ind_3_data            	0x479b
+#define	mem_temp_led_style                      	0x47a2
+#define	mem_temp_led_type                       	0x47a2
+#define	mem_temp_led_pin                        	0x47a3
+#define	mem_temp_led_on_time                    	0x47a4
+#define	mem_temp_led_off_time                   	0x47a6
+#define	mem_temp_blink_count                    	0x47a8
+#define	mem_shutter_key_num                     	0x47a9
+#define	mem_key_conf0                           	0x47aa
+#define	mem_key_conf0_pin                       	0x47aa
+#define	mem_key_conf0_led                       	0x47ab
+#define	mem_key_conf1                           	0x47ac
+#define	mem_key_conf1_pin                       	0x47ac
+#define	mem_key_conf1_led                       	0x47ad
+#define	mem_key_conf2                           	0x47ae
+#define	mem_key_conf2_pin                       	0x47ae
+#define	mem_key_conf2_led                       	0x47af
+#define	mem_key_conf3                           	0x47b0
+#define	mem_key_conf3_pin                       	0x47b0
+#define	mem_key_conf3_led                       	0x47b1
+#define	mem_key_conf4                           	0x47b2
+#define	mem_key_conf4_pin                       	0x47b2
+#define	mem_key_conf4_led                       	0x47b3
+#define	mem_key_conf5                           	0x47b4
+#define	mem_key_conf5_pin                       	0x47b4
+#define	mem_key_conf5_led                       	0x47b5
+#define	mem_key_value_temp                      	0x47b6
+#define	mem_key_value                           	0x47b8
+#define	mem_key_packet_count                    	0x47ba
+#define	mem_key_next_addr                       	0x47bb
+#define	mem_key_value_temp1                     	0x47bd
+#define	mem_key_value_temp2                     	0x47be
+#define	mem_key_value_temp3                     	0x47bf
+#define	mem_key_value_temp4                     	0x47c0
+#define	mem_key_value_temp5                     	0x47c1
+#define	mem_key_value_temp6                     	0x47c2
+#define	mem_key0_press                          	0x47c3
+#define	mem_key0_release                        	0x47d7
+#define	mem_key1_press                          	0x47eb
+#define	mem_key1_release                        	0x47f9
+#define	mem_key2_press                          	0x4807
+#define	mem_key2_release                        	0x4815
+#define	mem_key3_press                          	0x4823
+#define	mem_key3_release                        	0x4831
+#define	mem_key4_press                          	0x483f
+#define	mem_key4_release                        	0x484d
+#define	mem_key5_press                          	0x485b
+#define	mem_key5_release                        	0x4869
+#define	mem_queue_ele_num                       	0x4877
+#define	mem_queue_read                          	0x4878
+#define	mem_queue_write                         	0x487a
+#define	mem_queue_start                         	0x487c
+#define	mem_data_ele0                           	0x487c
+#define	mem_data_ele1                           	0x4886
+#define	mem_data_ele2                           	0x4890
+#define	mem_data_ele3                           	0x489a
+#define	mem_data_ele4                           	0x48a4
+#define	mem_data_ele5                           	0x48ae
+#define	mem_queue_end                           	0x48b8
+#define	mem_queue_temp                          	0x48b8
+#define	mem_shutter_key_data_flag               	0x48ba
+#define	mem_shutter_key_data_flag_1             	0x48bb
+#define	mem_le_find_type_value_start_handle     	0x48bc
+#define	mem_le_find_type_value_end_handle       	0x48be
+#define	mem_shutter_find_type_value_flag        	0x48c0
+#define	mem_le_uuid                             	0x48c1
+#define	mem_send_updata_le_param_timer          	0x48c2
+#define	mem_le_smp_key_dist                     	0x48c3
+#define	mem_ltk_states                          	0x48c6
+#define	mem_shutter_conn_update_timer           	0x48c7
+#define	mem_empty_count                         	0x48c8
+#define	mem_shutter_notification_len            	0x48c9
+#define	mem_shutter_notification_addr           	0x48ca
+#define	mem_shutter_le_att_list                 	0x48cc
+#define	mem_current_event                       	0x4729
+#define	mem_ipc_lock_rx_data_bt                 	0x472a
+#define	mem_ipc_lock_rx_data_c51                	0x472b
+#define	mem_ipc_lock_tx_data_bt                 	0x472c
+#define	mem_ipc_lock_tx_data_c51                	0x472d
+#define	mem_ipc_2bt_fifo_head                   	0x472e
+#define	mem_ipc_2bt_fifo_end                    	0x47c4
+#define	mem_ipc_2bt_read_index                  	0x47c4
+#define	mem_ipc_2bt_write_index                 	0x47c6
+#define	mem_ipc_2C51_fifo_head                  	0x47c8
+#define	mem_ipc_2C51_fifo_end                   	0x482c
+#define	mem_ipc_2C51_read_index                 	0x482c
+#define	mem_ipc_2C51_write_index                	0x482e
+#define	mem_c51_private_area                    	0x4830
+#define	mem_ipc_tx_evt_buff                     	0x4894
+#define	mem_ipc_tx_evt                          	0x4896
+#define	mem_ipc_rx_type                         	0x4897
+#define	mem_ipc_bt_timer                        	0x4898
+#define	mem_ipc_c51_timer                       	0x489a
+#define	mem_ipc_bt_100ms_timer                  	0x489c
+#define	mem_ipc_c51_100ms_timer                 	0x489d
+#define	mem_ipc_last_check_timer                	0x489e
+#define	mem_new_24g_rxbuf                       	0x48a2
+#define	mem_new_24g_txbuf                       	0x48c4
+#define	mem_new_24g_txpayload                   	0x48e4
+#define	mem_new_24g_rxpayload                   	0x4906
+#define	mem_new_24g_rxdata_length               	0x4926
+#define	mem_new_24g_pid                         	0x4927
+#define	mem_new_24g_datalen                     	0x4928
+#define	mem_new_24g_data_type                   	0x4929
+#define	mem_new_24g_txlen                       	0x492a
+#define	mem_new_24g_rx_window                   	0x492b
+#define	mem_new_24g_ensure                      	0x492d
+#define	mem_new_24g_txfail_cnt                  	0x492e
+#define	mem_new_24g_get_ack_fail                	0x4930
+#define	mem_new_24g_retry                       	0x4931
+#define	mem_new_24g_ch                          	0x4932
+#define	mem_new_24g_current_ch_number           	0x4933
+#define	mem_new_24g_paring_addr                 	0x4934
+#define	mem_new_24g_pairing_sm                  	0x4938
+#define	mem_new_24g_ch_map1                     	0x4939
+#define	mem_new_24g_ch_map2                     	0x493d
+#define	mem_new_24g_ch_map3                     	0x4941
+#define	mem_new_24g_ch_map4                     	0x4945
+#define	mem_new_24g_tx_btclk                    	0x4949
+#define	mem_new_24g_interval                    	0x494d
+#define	mem_new_24g_interval_min                	0x494e
+#define	mem_new_24g_interval_max                	0x494f
+#define	mem_new_24g_addr                        	0x4950
+#define	mem_new_24g_abort_pac                   	0x4954
+#define	mem_new_24g_sync_pac                    	0x4955
+#define	mem_new_24g_check_dongle_times          	0x4956
+#define	mem_new_24g_enter_hibernate             	0x4958
+#define	mem_new_24g_device_addr                 	0x4960
+#define	mem_new_24g_pac_index                   	0x4964
+#define	mem_new_24g_no_ack                      	0x4965
+#define	mem_new_24g_sta_crc                     	0x4966
+#define	mem_new_24g_last_crc                    	0x4969
+#define	mem_new_24g_sta_pid                     	0x496c
+#define	mem_new_24g_last_pid                    	0x496d
+#define	mem_new_24g_max_retry                   	0x496e
+#define	mem_new_24g_mode                        	0x496f
+#define	mem_new_uart_packet                     	0x4970
+#define	mem_new_24g_common_temp                 	0x4990
+#define	mem_new_24g_rf_last_sta                 	0x49b0
+#define	mem_new_24g_rf_hop_ch                   	0x49b1
+#define	mem_new_24g_sync_cnt                    	0x49b2
+#define	mem_new_24g_hop_pac_retry               	0x49b3
+#define	mem_new_24g_rf_work_stage               	0x49b4
+#define	mem_new_24g_hop_fastly_cnt              	0x49b5
+#define	mem_new_24g_auto_paring_switch          	0x49b6
+#define	mem_new_24g_key_wheel_event             	0x49b7
+#define	mem_new_24g_delay_long_sleep_cnt        	0x49b8
+#define	mem_new_24g_delay_long_sleep_maxcnt     	0x49b9
+#define	mem_new_24g_enter_lpm_timer             	0x49ba
+#define	mem_new_24g_syncword                    	0x49bb
+#define	mem_new_24g_syncword_crc8               	0x49bd
+#define	mem_new_24g_get_syncword_crc8           	0x49be
+#define	mem_new_24g_paccnt                      	0x49bf
+#define	mem_new_24g_ota_enable                  	0x49c0
+#define	mem_bt_wakeup_from_long_mult            	0x49c1
+#define	mem_bt_motion_event                     	0x49c2
+#define	mem_tx_power_temp                       	0x49c3
+#define	mem_power_ctrl_level                    	0x49c4
+#define	mem_power_ctrl_pac_succ_cnt             	0x49c5
+#define	mem_rssi_signal_buf                     	0x49c6
+#define	mem_rssi_signal_index                   	0x49ce
+#define	mem_rssi_hex_received                   	0x49cf
+#define	mem_rssi_avg_received                   	0x49d0
+#define	mem_last_txlch                          	0x49d1
+#define	mem_last_txlen                          	0x49d2
+#define	mem_last_txdata                         	0x49d4
+#define	mem_device_uuid_list                    	0x49e8
+#define	mem_device_uuid_list_end                	0x4c40
+#define	mem_device_le_att_list                  	0x4c40
+#define	mem_device_le_att_list_end              	0x4e20
+#define	mem_empty_count_user                    	0x4e20
+#define	mem_hid_buff                            	0x4e21
+#define	mem_adc_0v                              	0x4e41
+#define	mem_adc_3v                              	0x4e43
+#define	mem_hibernate_flag                      	0x4e45
+#define	mem_new_supervision_to                  	0x4e46
+#define	mem_le_rx_winsows                       	0x4e48
+#define	mem_le_att_report1                      	0x4e4c
+#define	mem_le_att_report2                      	0x4e4e
+#define	mem_le_slave_update_param_timer         	0x4e50
+#define	mem_le_slave_update_mult_timer          	0x4e51
+#define	mem_le_reconn_enable_notify_timer       	0x4e52
+#define	mem_le_reconn_flag                      	0x4e53
+#define	mem_le_buff_temp                        	0x4e54
+#define	mem_le_rx_window_inc                    	0x4e60
+#define	mem_le_prepare_tx_retransmited_number   	0x4e62
+#define	mem_last_check_clk                      	0x4e63
+#define	mem_hid_send_handshake                  	0x4e67
+#define	mem_feature_ext_page_number             	0x4e68
+#define	mem_rf_init_data_new                    	0x4e69
+#define	mem_short_lpm_interval_param            	0x4e74
+#define	mem_short_lpm_enable                    	0x4e78
+#define	mem_short_lpm_tx_cnt                    	0x4e79
+#define	mem_ckln_24g_short_lpm                  	0x4e7a
+#define	mem_send_data_24g_short_lpm             	0x4e7d
+#define	mem_short_lpm_interval_cnt              	0x4e7e
+#define	mem_ipc_is_ready                        	0x4e7f
+#define	mem_short_data_wheel                    	0x4e80
+#define	mem_ble_data_wheel                      	0x4e81
+#define	mem_ble_data_wheel_lpm_timer            	0x4e82
+#define	mem_bt_read_ipc_count                   	0x4e83
+#define	mem_51_read_sensor_count                	0x4e84
+#define	mem_queue_write_prt                     	0x4e85
+#define	mem_queue_read_ptr                      	0x4e86
+#define	mem_queue_buffer0                       	0x4e87
+#define	mem_queue_buffer1                       	0x4e8e
+#define	mem_queue_buffer2                       	0x4e95
+#define	mem_queue_buffer3                       	0x4e9c
+#define	mem_ble_read_ipc_fifo_once              	0x4ea3
+#define	mem_ble_send_flag                       	0x4ea4
+#define	mem_mouse_le_pairing_flag               	0x4ea5
+#define	mem_le_mouse_fast_conn_flag             	0x4ea6
+#define	mem_le_start_adv                        	0x4ea7
+#define	mem_le_start_fast_conn_count            	0x4ea8
+#define	mem_mouse_eeprom_base                   	0x4ea9
+#define	mem_mouse_reconn_addr                   	0x4eab
+#define	mem_mouse_le_reconn_addr_data           	0x4ead
+#define	mem_mouse_24g_reconn_addr_data          	0x4eb3
+#define	mem_le_fast_conn_finished               	0x4eb9
+#define	mem_le_init_eeprom_base_count           	0x4eba
+#define	mem_32asm_data_end                      	0x4ebb
+#define	mem_mult_time_arrive_flag               	0x4ebb
+#endif
Index: Standard_mouse/c51/c.bat
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/c.bat	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/c.bat	(working copy)
@@ -0,0 +1,10 @@
+perl util\hex2mif.pl < output\fw.hex ram > output\fwram.rom
+copy .\patch\patch.dat + .\patch\user.dat + .\patch\rf.dat .\patch\sch.rom 
+perl util\transform_name2addr.pl .\patch\sch.rom .\output\sched.rom .\patch\memmap.format
+copy .\patch\ramcode.rom .\output\
+copy .\patch\geneep.exe .\output\
+@rem copy .\patch\*.obj .\output\*.obj
+cd output
+geneep geneep ramcode.rom fwram.rom sched.rom
+cd ..
+:end
Index: Standard_mouse/c51/common.h
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/common.h	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/common.h	(working copy)
@@ -0,0 +1,12 @@
+#ifndef _YC_INCLUDE_H_
+#define _YC_INCLUDE_H_
+#include "type.h"
+#include "btreg.h"
+#include "hwreg.h"
+#include "sys.h"
+#include "utilities.h"
+#include "REG320.H"
+
+//void mouseTimer4ms();
+#endif
+
Index: Standard_mouse/c51/e.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: Standard_mouse/c51/e.exe
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/e.exe	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/e.exe	(working copy)

Property changes on: Standard_mouse/c51/e.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Standard_mouse/c51/eeprom.da
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/eeprom.da	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/eeprom.da	(working copy)
@@ -0,0 +1,16239 @@
+00
+02
+aa
+55
+ae
+18
+c5
+12
+80
+16
+c0
+01
+80
+2e
+c0
+02
+00
+31
+c0
+03
+00
+3a
+c0
+04
+80
+4c
+c0
+12
+80
+50
+c0
+13
+00
+60
+c0
+14
+80
+66
+c0
+1f
+80
+71
+c0
+26
+00
+79
+c0
+28
+00
+88
+c0
+45
+80
+94
+c0
+53
+80
+a0
+c0
+54
+00
+a7
+c0
+54
+80
+ba
+c0
+56
+00
+bf
+c0
+5a
+03
+a9
+c0
+5a
+80
+d8
+c0
+5b
+00
+df
+c0
+5b
+80
+fc
+c0
+64
+01
+28
+20
+20
+00
+2d
+c0
+0d
+81
+47
+c0
+11
+81
+4a
+c0
+17
+81
+6e
+c0
+18
+81
+84
+c0
+19
+01
+9a
+c0
+19
+81
+ab
+c0
+1e
+01
+b9
+c0
+1f
+01
+cc
+c0
+1f
+81
+da
+c0
+21
+01
+f6
+c0
+26
+81
+fb
+c0
+2a
+82
+15
+c0
+2b
+02
+1d
+c0
+2c
+02
+24
+c0
+2f
+02
+43
+c0
+4a
+82
+4b
+c0
+57
+02
+52
+c0
+64
+02
+5d
+c0
+79
+82
+ab
+c0
+7b
+82
+b7
+c0
+7c
+02
+f2
+c0
+7c
+83
+05
+20
+20
+00
+2d
+20
+20
+00
+2d
+20
+40
+03
+0f
+20
+40
+03
+42
+20
+20
+30
+1b
+20
+40
+30
+43
+20
+40
+3d
+60
+20
+40
+30
+9e
+20
+40
+33
+3e
+20
+40
+33
+b3
+20
+40
+30
+29
+20
+40
+04
+3f
+20
+40
+3c
+53
+20
+20
+30
+19
+20
+40
+00
+3c
+20
+20
+30
+3b
+68
+08
+80
+15
+df
+20
+00
+03
+da
+20
+40
+40
+18
+40
+84
+01
+28
+41
+fe
+03
+24
+20
+80
+43
+d8
+40
+00
+00
+60
+08
+80
+15
+18
+4f
+fe
+50
+9a
+20
+8c
+00
+e8
+c0
+80
+00
+c3
+00
+b2
+76
+18
+c0
+8c
+01
+e8
+c1
+00
+00
+20
+3a
+32
+76
+20
+20
+32
+78
+60
+0c
+09
+c6
+20
+40
+7e
+e2
+68
+0c
+09
+c6
+20
+20
+30
+7c
+78
+54
+7c
+00
+68
+01
+00
+32
+d8
+40
+ff
+ff
+98
+46
+7c
+00
+24
+62
+80
+00
+68
+02
+00
+34
+20
+38
+00
+59
+9d
+06
+7e
+00
+20
+20
+00
+5a
+9c
+46
+7e
+00
+1f
+e6
+7c
+04
+24
+61
+00
+00
+18
+00
+7e
+00
+60
+01
+00
+32
+78
+34
+7c
+00
+20
+60
+00
+00
+60
+0a
+00
+34
+70
+45
+f4
+01
+58
+00
+ff
+ff
+60
+01
+00
+32
+70
+00
+73
+01
+20
+60
+00
+00
+20
+40
+3a
+ea
+20
+40
+00
+69
+20
+20
+32
+33
+1c
+40
+c2
+01
+20
+40
+39
+79
+18
+00
+48
+03
+20
+40
+39
+67
+20
+40
+3a
+ee
+20
+40
+3a
+f4
+20
+40
+3b
+05
+20
+20
+36
+c6
+20
+40
+3c
+a0
+20
+40
+3b
+22
+20
+21
+34
+3e
+20
+40
+31
+cd
+24
+34
+34
+3e
+20
+40
+37
+75
+24
+3a
+34
+27
+20
+60
+00
+00
+20
+40
+32
+83
+24
+22
+b5
+08
+68
+00
+80
+47
+c3
+01
+b5
+11
+68
+00
+c1
+65
+c0
+09
+b5
+02
+68
+01
+48
+87
+1f
+e6
+7c
+14
+24
+21
+35
+02
+60
+01
+42
+7e
+68
+00
+c8
+86
+60
+00
+c2
+7d
+58
+00
+48
+89
+60
+01
+01
+6e
+20
+20
+35
+02
+68
+01
+42
+7e
+60
+01
+48
+87
+1f
+e6
+7c
+14
+24
+21
+35
+2f
+98
+00
+72
+00
+68
+00
+c2
+7d
+60
+00
+c8
+86
+68
+01
+01
+6e
+98
+00
+0c
+00
+d8
+a0
+48
+89
+20
+40
+7e
+cd
+20
+20
+35
+2f
+20
+40
+3c
+d2
+20
+40
+3a
+5f
+70
+80
+42
+06
+68
+10
+89
+68
+79
+20
+7e
+07
+60
+10
+89
+68
+79
+3f
+fe
+07
+60
+10
+89
+68
+79
+20
+7e
+07
+60
+10
+89
+68
+70
+80
+42
+05
+20
+20
+3a
+0c
+20
+40
+3c
+2b
+68
+00
+ce
+73
+20
+7a
+00
+00
+70
+4e
+73
+00
+1c
+42
+7e
+00
+60
+02
+4a
+12
+20
+60
+00
+00
+20
+40
+3b
+e2
+68
+01
+c2
+0f
+20
+7a
+00
+00
+68
+01
+40
+42
+d8
+40
+ff
+ff
+98
+46
+7c
+00
+20
+62
+80
+00
+68
+00
+c1
+31
+20
+7a
+00
+00
+20
+40
+48
+16
+24
+7a
+00
+00
+20
+40
+3d
+0e
+24
+7a
+00
+00
+20
+40
+3a
+7b
+68
+00
+c6
+e2
+20
+3a
+3c
+5e
+68
+00
+c6
+39
+20
+7a
+00
+00
+20
+20
+3c
+5e
+20
+40
+00
+c4
+24
+74
+00
+00
+68
+00
+8b
+2b
+24
+7a
+00
+00
+20
+20
+3c
+6a
+20
+40
+00
+c4
+24
+74
+00
+00
+68
+00
+8b
+2b
+24
+7a
+00
+00
+20
+20
+3c
+8c
+20
+40
+00
+cf
+24
+74
+00
+00
+20
+40
+00
+cc
+24
+74
+00
+00
+70
+0b
+2b
+01
+70
+0b
+2a
+01
+20
+40
+00
+d4
+20
+20
+00
+cf
+68
+01
+49
+a0
+68
+09
+49
+a2
+20
+20
+00
+d1
+68
+01
+49
+38
+68
+09
+49
+3a
+98
+46
+7c
+00
+20
+22
+e4
+c0
+20
+20
+31
+d4
+68
+00
+8b
+2a
+20
+00
+00
+0a
+c0
+80
+00
+d4
+20
+60
+00
+00
+70
+00
+16
+27
+70
+01
+50
+00
+70
+01
+7e
+00
+70
+01
+7f
+00
+58
+00
+00
+00
+60
+02
+88
+d2
+20
+60
+00
+00
+da
+20
+46
+f0
+20
+40
+7f
+95
+20
+7a
+00
+00
+1f
+e2
+26
+00
+20
+40
+00
+e5
+20
+20
+3d
+9b
+c1
+0c
+00
+00
+c0
+03
+00
+eb
+c0
+0a
+00
+ec
+c0
+0a
+80
+f2
+c0
+14
+80
+fa
+20
+20
+3d
+73
+20
+20
+5e
+df
+70
+42
+12
+00
+70
+4e
+7f
+00
+20
+40
+3e
+61
+20
+40
+3e
+59
+20
+40
+3e
+7f
+20
+20
+3d
+c2
+70
+44
+b2
+00
+70
+42
+12
+00
+70
+4e
+7f
+00
+70
+45
+6a
+00
+68
+09
+4e
+7c
+60
+09
+44
+f8
+20
+40
+52
+a0
+20
+20
+3d
+c6
+20
+40
+01
+09
+20
+20
+7e
+3b
+60
+08
+82
+4e
+68
+00
+ca
+10
+1f
+e0
+fe
+01
+60
+00
+ca
+10
+68
+00
+82
+4e
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+82
+4e
+20
+40
+01
+23
+20
+40
+01
+19
+20
+40
+01
+0c
+20
+40
+01
+13
+20
+20
+01
+00
+20
+40
+3e
+7f
+70
+09
+bd
+12
+20
+20
+7d
+90
+68
+00
+ce
+7f
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+ce
+7f
+24
+7a
+00
+00
+70
+42
+12
+20
+20
+60
+00
+00
+68
+00
+ce
+80
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+ce
+80
+24
+7a
+00
+00
+20
+20
+3e
+6d
+68
+00
+c7
+09
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+c7
+09
+24
+7a
+00
+00
+68
+00
+ce
+95
+24
+3a
+01
+21
+20
+20
+3f
+f5
+70
+4e
+95
+00
+20
+60
+00
+00
+68
+00
+c7
+c0
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+c7
+c0
+20
+60
+00
+00
+68
+01
+02
+8d
+1f
+e2
+0c
+00
+e8
+c0
+80
+00
+1f
+e1
+04
+0f
+1f
+f1
+fe
+00
+c0
+04
+81
+34
+c0
+03
+bf
+eb
+c0
+05
+01
+39
+c0
+02
+81
+37
+c0
+00
+81
+40
+c0
+02
+3f
+eb
+20
+60
+00
+00
+20
+40
+3f
+eb
+70
+4e
+95
+01
+20
+60
+00
+00
+20
+40
+01
+39
+20
+20
+3f
+e4
+e8
+c0
+80
+00
+c0
+00
+bf
+fa
+c0
+20
+81
+3d
+20
+60
+00
+00
+70
+4a
+0a
+3e
+20
+40
+03
+71
+20
+20
+3e
+52
+18
+42
+7e
+00
+c0
+02
+81
+44
+c0
+01
+bf
+e2
+20
+60
+00
+00
+70
+4a
+0a
+27
+20
+40
+03
+71
+20
+20
+3e
+52
+68
+02
+4e
+76
+60
+02
+45
+96
+20
+20
+4a
+8c
+70
+41
+31
+01
+68
+01
+03
+7c
+68
+09
+03
+82
+98
+46
+7e
+00
+60
+01
+09
+be
+68
+00
+83
+62
+79
+3f
+fe
+05
+79
+3f
+fe
+03
+60
+00
+83
+62
+68
+02
+03
+66
+68
+09
+03
+64
+60
+09
+09
+c6
+98
+46
+22
+00
+68
+00
+c4
+5b
+60
+00
+83
+8d
+e8
+c9
+00
+00
+e8
+c1
+00
+00
+1f
+eb
+fe
+00
+60
+01
+03
+64
+18
+4b
+84
+00
+98
+40
+fe
+00
+e8
+ca
+00
+00
+60
+0a
+03
+8e
+9a
+20
+fe
+00
+1f
+e2
+28
+00
+68
+01
+03
+64
+68
+09
+09
+c6
+98
+46
+7e
+00
+68
+09
+09
+be
+98
+4f
+fe
+00
+9a
+80
+fe
+00
+60
+02
+03
+66
+20
+40
+51
+99
+68
+01
+03
+90
+60
+01
+45
+61
+20
+60
+00
+00
+68
+00
+83
+79
+c2
+82
+81
+80
+70
+4e
+90
+00
+68
+00
+ce
+4e
+24
+3a
+01
+78
+68
+00
+83
+62
+c3
+02
+01
+7c
+68
+00
+83
+03
+20
+3a
+01
+7c
+20
+20
+4f
+87
+68
+00
+ce
+4e
+1f
+e0
+ff
+ff
+60
+00
+ce
+4e
+20
+20
+4f
+87
+68
+00
+c5
+6a
+c0
+81
+01
+7f
+70
+4e
+4e
+03
+20
+20
+4b
+de
+68
+00
+ce
+90
+1f
+e0
+fe
+01
+60
+00
+ce
+90
+20
+60
+00
+00
+68
+00
+c4
+67
+c0
+03
+01
+88
+c0
+01
+01
+93
+20
+20
+4b
+fb
+68
+00
+ce
+81
+c0
+00
+81
+90
+20
+40
+3e
+6d
+18
+00
+04
+01
+20
+34
+cf
+89
+68
+00
+c5
+6a
+c0
+81
+4c
+8f
+20
+20
+4c
+8a
+20
+40
+01
+09
+70
+4e
+80
+03
+20
+20
+4c
+90
+58
+00
+00
+13
+e0
+a0
+80
+00
+20
+40
+4c
+58
+58
+00
+00
+0a
+60
+01
+03
+90
+60
+01
+45
+61
+20
+60
+00
+00
+68
+00
+c4
+6b
+c0
+01
+01
+9f
+c0
+03
+01
+a6
+c0
+03
+cd
+17
+20
+20
+4c
+18
+59
+00
+03
+02
+60
+01
+c4
+dc
+58
+00
+00
+01
+e0
+a0
+80
+00
+58
+01
+00
+10
+e0
+a1
+80
+00
+20
+20
+4c
+cd
+70
+09
+bd
+29
+20
+40
+7d
+86
+70
+09
+bd
+47
+20
+40
+4b
+d6
+20
+20
+4d
+01
+68
+00
+c4
+6b
+c0
+0d
+81
+af
+c0
+0e
+81
+af
+20
+20
+4c
+2b
+d8
+a0
+44
+6c
+68
+09
+4e
+7c
+e0
+a9
+00
+00
+d8
+c0
+4e
+82
+e8
+c0
+80
+00
+1f
+e2
+72
+00
+20
+40
+7e
+cd
+68
+08
+ce
+82
+18
+40
+84
+07
+20
+20
+4f
+89
+1a
+62
+7e
+00
+c0
+00
+01
+bf
+c0
+01
+01
+c2
+c0
+01
+81
+c6
+c0
+05
+01
+ca
+20
+20
+4f
+b9
+70
+41
+31
+00
+70
+4e
+7f
+3c
+20
+20
+50
+1f
+20
+40
+50
+33
+58
+00
+00
+00
+60
+04
+45
+44
+20
+60
+00
+00
+20
+40
+50
+39
+68
+00
+c5
+6a
+c1
+01
+00
+00
+20
+20
+64
+18
+70
+09
+bd
+2b
+20
+20
+4b
+d6
+e8
+c1
+80
+00
+60
+01
+83
+9a
+c0
+09
+01
+d0
+20
+20
+50
+11
+20
+40
+01
+d5
+20
+40
+51
+25
+24
+62
+80
+00
+70
+09
+bd
+13
+20
+20
+4b
+d6
+68
+00
+83
+03
+1f
+e0
+ff
+f9
+1f
+e2
+72
+00
+1f
+22
+24
+00
+20
+20
+51
+35
+68
+00
+c3
+ff
+20
+7a
+00
+00
+d8
+e0
+00
+01
+20
+40
+7e
+e2
+24
+7a
+00
+00
+78
+54
+fc
+00
+78
+28
+7c
+00
+20
+40
+4b
+1e
+20
+40
+49
+d4
+20
+40
+4a
+8a
+24
+36
+81
+ec
+68
+00
+80
+03
+1f
+e0
+fe
+01
+60
+00
+80
+03
+68
+00
+83
+02
+1f
+e1
+7e
+0f
+c0
+01
+81
+f4
+c0
+02
+d1
+af
+18
+0a
+7e
+00
+d8
+40
+01
+ff
+98
+41
+7e
+00
+1f
+e0
+fe
+fa
+1f
+e0
+ff
+ff
+20
+00
+00
+26
+24
+3a
+01
+f0
+20
+20
+51
+94
+20
+40
+4a
+c5
+20
+20
+01
+ec
+68
+02
+45
+96
+d8
+40
+4e
+20
+98
+40
+fe
+00
+60
+02
+45
+96
+20
+20
+51
+a9
+78
+55
+fc
+00
+20
+37
+01
+fe
+24
+36
+82
+0d
+20
+40
+3c
+b7
+68
+01
+41
+61
+60
+01
+03
+70
+68
+00
+83
+02
+2f
+e0
+06
+01
+24
+20
+bc
+cb
+68
+00
+c4
+65
+2f
+e0
+06
+01
+24
+20
+bc
+cb
+20
+40
+4b
+d0
+24
+3a
+3c
+cb
+68
+00
+ce
+90
+1f
+e6
+7c
+01
+24
+21
+3c
+cb
+20
+20
+52
+97
+68
+09
+41
+61
+68
+01
+4e
+8e
+98
+40
+84
+00
+18
+43
+04
+00
+68
+01
+03
+70
+98
+40
+fe
+00
+60
+01
+03
+70
+20
+20
+3c
+c3
+68
+00
+84
+76
+79
+20
+7e
+07
+60
+00
+80
+7d
+c0
+41
+82
+1a
+20
+20
+53
+84
+68
+00
+84
+77
+60
+00
+ce
+96
+20
+20
+53
+bf
+68
+00
+84
+76
+60
+00
+83
+ef
+c0
+09
+82
+21
+20
+20
+53
+cf
+70
+09
+bd
+20
+20
+40
+7d
+86
+20
+20
+00
+61
+78
+54
+7c
+00
+20
+40
+58
+ca
+68
+00
+80
+48
+20
+7a
+00
+00
+c2
+83
+82
+2a
+20
+20
+56
+28
+c0
+42
+02
+2d
+c0
+41
+82
+38
+20
+20
+56
+57
+18
+00
+0e
+0c
+20
+40
+58
+a9
+68
+00
+ce
+96
+e0
+a0
+80
+00
+58
+00
+00
+00
+e0
+a1
+00
+00
+58
+00
+00
+00
+e0
+a1
+80
+00
+58
+00
+00
+00
+e0
+a2
+00
+00
+20
+20
+58
+b9
+18
+00
+0e
+0c
+20
+40
+58
+a9
+58
+00
+00
+01
+e0
+a0
+80
+00
+58
+00
+00
+00
+e0
+a1
+00
+00
+58
+00
+00
+00
+e0
+a1
+80
+00
+58
+00
+00
+00
+e0
+a2
+00
+00
+20
+20
+58
+bb
+20
+40
+58
+c5
+24
+7a
+00
+00
+68
+00
+80
+55
+20
+7a
+00
+00
+c0
+07
+02
+49
+20
+20
+59
+2c
+24
+74
+80
+00
+20
+20
+59
+75
+68
+12
+00
+78
+68
+1a
+00
+7c
+98
+41
+fe
+00
+1f
+e4
+7e
+00
+9a
+21
+7e
+00
+60
+12
+00
+70
+20
+60
+00
+00
+20
+40
+48
+16
+24
+7a
+00
+00
+68
+0a
+4e
+91
+1d
+02
+7e
+00
+98
+46
+04
+00
+24
+21
+02
+5b
+18
+46
+7c
+0b
+24
+21
+02
+5b
+20
+60
+00
+00
+60
+02
+4e
+91
+20
+20
+3d
+65
+d8
+a0
+04
+40
+20
+40
+6d
+a6
+20
+22
+ed
+a4
+18
+00
+04
+00
+e8
+c0
+80
+00
+1a
+20
+a3
+ff
+19
+60
+97
+ff
+2f
+e1
+f0
+18
+24
+20
+ed
+a4
+2f
+e0
+0e
+04
+24
+20
+82
+7e
+18
+00
+04
+01
+e8
+c0
+80
+00
+1a
+20
+a3
+ff
+19
+60
+97
+ff
+c0
+80
+02
+72
+e8
+c0
+80
+00
+1a
+20
+a3
+ff
+19
+60
+97
+ff
+c0
+00
+02
+83
+20
+20
+02
+75
+18
+c0
+8c
+01
+1a
+20
+a3
+ff
+19
+60
+97
+ff
+18
+c0
+8c
+02
+1a
+20
+a3
+fe
+19
+60
+97
+fe
+28
+41
+fe
+00
+20
+20
+82
+a8
+18
+c0
+8c
+0c
+1a
+20
+a3
+f4
+19
+60
+97
+f4
+20
+20
+02
+a8
+2f
+e0
+0e
+02
+24
+20
+82
+81
+20
+20
+02
+69
+2f
+e0
+0e
+01
+24
+20
+ed
+a4
+e8
+c1
+00
+00
+1a
+20
+a3
+fe
+19
+60
+97
+fe
+e0
+a1
+00
+00
+28
+41
+fe
+00
+20
+20
+82
+a8
+18
+c2
+04
+00
+e8
+c0
+80
+00
+c0
+80
+02
+a2
+e8
+c0
+80
+00
+c0
+80
+02
+a2
+e8
+c0
+80
+00
+c0
+88
+02
+a2
+e8
+c0
+80
+00
+c0
+80
+02
+a2
+e8
+c0
+80
+00
+c0
+c0
+02
+a2
+e8
+c0
+80
+00
+c0
+80
+02
+a2
+e8
+c0
+80
+00
+c0
+80
+02
+a2
+e8
+c0
+80
+00
+c0
+c0
+02
+a2
+e8
+c0
+80
+00
+c0
+af
+82
+a2
+e8
+c0
+80
+00
+c0
+cd
+82
+a2
+e8
+c0
+80
+00
+c0
+9a
+02
+a2
+e8
+c0
+80
+00
+c0
+7d
+82
+a6
+18
+42
+0c
+00
+18
+c0
+8c
+0c
+18
+00
+0e
+00
+18
+00
+04
+00
+19
+60
+97
+f4
+1a
+20
+a3
+f4
+2a
+21
+fe
+00
+24
+20
+82
+60
+20
+20
+6d
+a1
+1a
+22
+7e
+00
+20
+7a
+00
+00
+18
+40
+85
+60
+18
+40
+85
+60
+79
+3f
+84
+1c
+60
+0a
+47
+03
+1f
+e2
+04
+00
+da
+20
+46
+f0
+20
+40
+7f
+a6
+24
+7a
+00
+00
+18
+42
+7e
+00
+20
+20
+7d
+7d
+20
+40
+7d
+80
+da
+20
+46
+f8
+20
+40
+7f
+95
+1f
+e2
+04
+00
+20
+40
+7d
+84
+18
+42
+7e
+00
+20
+7a
+00
+00
+c0
+11
+82
+c7
+c0
+12
+02
+c9
+c0
+12
+82
+cd
+c0
+00
+82
+d1
+c0
+01
+82
+d3
+c0
+06
+82
+d6
+c0
+13
+82
+e0
+c0
+13
+06
+2a
+20
+20
+7d
+b3
+70
+47
+c1
+ff
+20
+20
+06
+14
+70
+47
+c1
+ff
+70
+47
+c6
+00
+70
+4a
+0a
+3b
+20
+20
+03
+71
+68
+00
+c7
+c7
+24
+7a
+00
+00
+70
+47
+c7
+01
+20
+20
+04
+63
+70
+01
+6c
+06
+20
+20
+7d
+f0
+70
+01
+6c
+04
+70
+42
+5d
+01
+20
+20
+7d
+fb
+18
+0a
+7e
+00
+60
+00
+c5
+3f
+70
+4e
+81
+00
+68
+09
+4e
+7c
+60
+09
+44
+f8
+20
+40
+52
+a0
+20
+40
+02
+eb
+58
+00
+00
+05
+e0
+c0
+80
+00
+20
+20
+7e
+07
+70
+41
+31
+00
+70
+4e
+81
+01
+68
+09
+4e
+7c
+20
+40
+4f
+6a
+1a
+22
+0a
+00
+58
+00
+00
+01
+e0
+a0
+80
+00
+20
+40
+02
+eb
+58
+00
+00
+04
+e0
+c0
+80
+00
+20
+20
+7e
+07
+da
+20
+44
+01
+ea
+20
+80
+00
+20
+7a
+00
+00
+98
+c0
+a2
+00
+e8
+c0
+80
+00
+c1
+00
+80
+00
+20
+20
+02
+ec
+20
+40
+58
+c5
+24
+3a
+7d
+e5
+68
+00
+89
+bd
+c5
+84
+fd
+e0
+c0
+02
+02
+fb
+c0
+11
+03
+01
+c0
+0f
+83
+04
+c0
+10
+03
+04
+20
+20
+7d
+d0
+68
+01
+47
+0b
+c3
+01
+82
+fe
+20
+20
+7d
+fd
+58
+00
+00
+00
+60
+02
+00
+51
+20
+60
+00
+00
+70
+00
+7c
+37
+68
+01
+4e
+74
+60
+01
+00
+51
+20
+60
+00
+00
+70
+0b
+2a
+03
+20
+40
+00
+d4
+70
+4e
+73
+5a
+20
+40
+3c
+fc
+68
+12
+01
+38
+79
+3f
+fe
+0f
+60
+12
+00
+4c
+20
+40
+3c
+f4
+d8
+5f
+ff
+ff
+20
+20
+3c
+11
+68
+0a
+4a
+12
+1c
+42
+7e
+00
+98
+46
+7e
+00
+d8
+40
+06
+40
+98
+46
+fc
+00
+20
+40
+7f
+53
+18
+07
+fe
+00
+20
+7a
+00
+00
+1c
+42
+04
+00
+60
+0a
+4a
+12
+68
+09
+4a
+0c
+18
+50
+84
+00
+98
+40
+fe
+00
+1f
+f0
+fe
+00
+60
+01
+4a
+0c
+1f
+f0
+fe
+00
+1f
+e1
+7e
+03
+c1
+80
+00
+00
+20
+40
+48
+16
+24
+7a
+00
+00
+20
+40
+4b
+d0
+20
+7a
+00
+00
+68
+00
+c2
+cf
+c2
+80
+03
+2a
+c2
+80
+83
+2c
+c2
+81
+03
+2e
+20
+60
+00
+00
+70
+89
+71
+bf
+20
+20
+03
+32
+70
+89
+71
+af
+20
+20
+03
+32
+70
+89
+71
+8f
+68
+00
+c2
+d0
+60
+10
+89
+73
+20
+20
+03
+32
+68
+10
+80
+53
+79
+20
+7e
+07
+60
+10
+80
+53
+68
+10
+89
+73
+1f
+e1
+fe
+30
+60
+10
+89
+73
+70
+89
+06
+7c
+70
+89
+72
+aa
+20
+00
+13
+88
+68
+19
+01
+50
+68
+10
+80
+53
+79
+3f
+fe
+07
+60
+10
+80
+53
+18
+50
+84
+00
+60
+09
+42
+d1
+20
+60
+00
+00
+20
+40
+00
+cf
+20
+74
+00
+00
+1f
+f0
+fe
+00
+1f
+e2
+0c
+00
+20
+40
+03
+69
+60
+00
+ca
+0b
+c0
+00
+83
+54
+c0
+03
+03
+85
+1f
+e2
+04
+00
+18
+c2
+22
+00
+68
+00
+c0
+40
+c3
+00
+03
+5e
+1a
+22
+0c
+00
+c6
+84
+80
+00
+18
+42
+7e
+00
+c0
+01
+83
+8c
+c0
+02
+83
+97
+20
+20
+3b
+31
+20
+40
+03
+69
+20
+40
+03
+69
+60
+00
+89
+bd
+20
+40
+03
+59
+20
+20
+7d
+90
+20
+40
+03
+6c
+18
+c2
+04
+00
+18
+50
+84
+00
+60
+09
+49
+38
+20
+60
+00
+00
+1a
+22
+0c
+00
+d8
+a0
+00
+f5
+20
+20
+03
+61
+20
+40
+03
+69
+1f
+e2
+72
+00
+20
+40
+03
+65
+20
+20
+03
+59
+20
+40
+03
+69
+e0
+a0
+80
+00
+c2
+00
+03
+65
+20
+60
+00
+00
+20
+40
+03
+6c
+e8
+c0
+80
+00
+20
+60
+00
+00
+58
+00
+49
+38
+98
+c6
+7c
+00
+24
+62
+80
+00
+d8
+c0
+48
+a2
+20
+60
+00
+00
+df
+20
+00
+03
+d8
+c0
+4a
+08
+18
+c2
+22
+00
+68
+01
+49
+a2
+1f
+f0
+fe
+00
+1f
+e2
+0a
+00
+1a
+22
+0c
+00
+e8
+c0
+80
+00
+e0
+a0
+80
+00
+20
+40
+03
+80
+c2
+00
+03
+78
+18
+a2
+7e
+00
+1f
+f0
+fe
+00
+60
+01
+49
+a2
+20
+60
+00
+00
+58
+00
+49
+a0
+98
+a6
+7c
+00
+24
+62
+80
+00
+d8
+a0
+49
+3c
+20
+60
+00
+00
+20
+40
+03
+69
+1f
+e2
+72
+00
+60
+00
+8b
+4e
+20
+40
+03
+63
+68
+08
+8b
+4e
+da
+20
+0b
+4f
+20
+20
+04
+33
+18
+c2
+7e
+00
+60
+01
+09
+dd
+da
+20
+00
+09
+20
+40
+40
+05
+68
+01
+42
+de
+e0
+a1
+00
+00
+58
+00
+02
+a1
+e0
+a1
+00
+00
+68
+01
+09
+dd
+1f
+e2
+0c
+00
+20
+20
+03
+61
+18
+c2
+24
+00
+20
+40
+4b
+d0
+24
+7a
+00
+00
+68
+09
+4e
+7c
+20
+40
+4f
+6a
+c4
+00
+00
+00
+68
+00
+c5
+95
+c1
+00
+00
+00
+1a
+42
+0c
+00
+20
+40
+03
+69
+1f
+e2
+72
+00
+60
+00
+ce
+82
+20
+40
+03
+63
+70
+09
+bd
+1b
+20
+20
+4b
+d6
+68
+01
+42
+d8
+20
+3a
+3e
+37
+20
+20
+3e
+35
+20
+40
+52
+4a
+58
+00
+03
+a6
+60
+01
+42
+8a
+70
+0b
+2a
+00
+70
+01
+6c
+06
+20
+40
+3e
+7f
+58
+00
+04
+20
+60
+01
+42
+92
+58
+00
+04
+29
+60
+01
+42
+8e
+58
+00
+04
+2b
+60
+01
+42
+96
+58
+00
+04
+2a
+60
+01
+42
+94
+58
+00
+03
+42
+60
+01
+42
+90
+58
+00
+04
+23
+60
+01
+42
+8c
+58
+00
+48
+a2
+1f
+f0
+fe
+00
+60
+01
+49
+38
+60
+01
+49
+3a
+20
+40
+3d
+3e
+58
+00
+49
+3c
+1f
+f0
+fe
+00
+60
+01
+49
+a0
+60
+01
+49
+a2
+68
+00
+ce
+73
+c0
+2d
+03
+db
+20
+35
+83
+d9
+68
+01
+4e
+6f
+1f
+f0
+fe
+00
+60
+01
+4e
+6f
+68
+01
+4e
+71
+1f
+f0
+fe
+00
+60
+01
+4e
+71
+20
+40
+03
+e7
+68
+04
+09
+c6
+24
+3a
+03
+d4
+68
+01
+4a
+d4
+1f
+f0
+fe
+00
+20
+3a
+03
+d4
+60
+01
+4e
+71
+70
+4a
+0a
+2f
+20
+40
+03
+25
+20
+40
+03
+71
+70
+82
+80
+03
+20
+60
+00
+00
+70
+4a
+0a
+3c
+20
+20
+03
+d5
+1c
+e2
+7e
+00
+20
+3a
+03
+07
+20
+40
+53
+0d
+20
+40
+42
+eb
+58
+00
+00
+00
+60
+04
+40
+40
+60
+01
+47
+0b
+58
+00
+00
+00
+60
+01
+4a
+0c
+60
+01
+4a
+0e
+70
+4a
+0a
+3d
+20
+20
+03
+d5
+20
+40
+62
+c4
+58
+00
+07
+e2
+da
+20
+09
+c6
+d8
+40
+00
+0c
+20
+40
+63
+0d
+20
+40
+62
+c7
+68
+04
+09
+c6
+20
+7a
+00
+00
+68
+00
+c2
+cf
+c2
+80
+03
+f4
+c2
+80
+84
+02
+c2
+81
+04
+12
+20
+60
+00
+00
+68
+09
+09
+ca
+68
+01
+09
+d0
+18
+42
+24
+00
+1f
+e2
+22
+00
+1f
+f0
+fe
+00
+60
+01
+4e
+71
+1a
+22
+7e
+00
+98
+46
+26
+00
+1a
+63
+a6
+00
+1a
+42
+7e
+00
+9a
+66
+7e
+00
+1f
+f0
+fe
+00
+60
+01
+4e
+6f
+20
+60
+00
+00
+68
+09
+09
+c8
+68
+01
+09
+ce
+18
+42
+24
+00
+1f
+e2
+22
+00
+98
+46
+26
+00
+1a
+6b
+26
+00
+1a
+42
+7e
+00
+9a
+66
+7e
+00
+1f
+f0
+fe
+00
+60
+01
+4e
+6f
+1a
+63
+a6
+00
+1a
+22
+7e
+00
+9a
+66
+7e
+00
+1f
+f0
+fe
+00
+60
+01
+4e
+71
+20
+60
+00
+00
+68
+09
+09
+c6
+68
+01
+09
+cc
+18
+42
+24
+00
+1f
+e2
+22
+00
+98
+46
+26
+00
+1a
+42
+7e
+00
+9a
+66
+7e
+00
+1f
+f0
+fe
+00
+60
+01
+4e
+6f
+1a
+6b
+fe
+00
+9a
+20
+fe
+00
+1f
+f0
+fe
+00
+60
+01
+4e
+71
+20
+60
+00
+00
+20
+40
+48
+12
+24
+7a
+00
+00
+20
+20
+03
+42
+78
+34
+7c
+00
+68
+12
+01
+38
+79
+34
+7e
+1a
+60
+12
+00
+4c
+20
+40
+3c
+f4
+70
+00
+9f
+01
+20
+60
+00
+00
+20
+60
+00
+00
+1a
+62
+7e
+00
+1f
+e1
+7e
+f0
+c1
+28
+00
+00
+1a
+62
+7e
+00
+60
+00
+ca
+0a
+20
+20
+03
+71
+70
+47
+ca
+00
+20
+60
+00
+00
+68
+00
+c7
+ca
+24
+7a
+00
+00
+70
+47
+ca
+01
+60
+08
+c7
+36
+18
+42
+72
+00
+d8
+a0
+48
+3c
+1a
+22
+0c
+00
+20
+20
+7e
+cd
+20
+40
+05
+01
+20
+40
+05
+0b
+df
+20
+00
+0b
+20
+20
+05
+26
+68
+00
+c7
+c6
+20
+7a
+00
+00
+68
+02
+47
+29
+68
+08
+c7
+2d
+98
+40
+84
+00
+1c
+42
+7e
+00
+98
+46
+7c
+00
+24
+21
+04
+3f
+68
+08
+c7
+2d
+18
+46
+7c
+06
+20
+22
+84
+4c
+70
+47
+cb
+00
+60
+02
+47
+29
+20
+40
+04
+56
+20
+40
+04
+ca
+20
+40
+04
+5b
+68
+00
+c7
+c1
+c1
+ff
+80
+00
+68
+00
+c7
+cc
+c1
+80
+80
+00
+68
+00
+c7
+cb
+c1
+80
+00
+00
+20
+20
+04
+b4
+68
+00
+c7
+ca
+24
+7a
+00
+00
+68
+00
+c7
+c1
+c0
+ff
+84
+5f
+20
+20
+04
+90
+68
+00
+c7
+cc
+c1
+80
+80
+00
+20
+40
+04
+31
+20
+20
+04
+6a
+c0
+00
+84
+80
+c0
+01
+04
+83
+c0
+01
+84
+86
+20
+20
+3b
+31
+20
+40
+05
+f0
+70
+47
+c6
+01
+68
+02
+48
+25
+60
+02
+47
+79
+20
+40
+05
+f2
+70
+47
+c1
+01
+20
+60
+00
+00
+68
+00
+c7
+c1
+c1
+7f
+80
+00
+c0
+08
+84
+70
+c0
+09
+04
+72
+c0
+09
+84
+74
+20
+60
+00
+00
+70
+47
+c1
+02
+20
+60
+00
+00
+70
+47
+c1
+03
+20
+60
+00
+00
+70
+47
+c1
+ff
+70
+4a
+0a
+39
+20
+40
+03
+71
+d8
+40
+00
+07
+da
+20
+47
+db
+68
+02
+47
+dd
+60
+02
+47
+79
+20
+40
+05
+f2
+70
+47
+c7
+00
+70
+48
+38
+01
+70
+48
+3a
+0a
+20
+20
+7d
+2f
+70
+47
+c1
+11
+70
+0b
+4e
+aa
+20
+20
+04
+88
+70
+47
+c1
+12
+70
+0b
+4e
+55
+20
+20
+04
+88
+70
+47
+c1
+13
+70
+0b
+4e
+22
+70
+0b
+4f
+01
+68
+02
+41
+40
+60
+02
+0b
+50
+20
+20
+04
+8c
+70
+0b
+54
+00
+da
+20
+0b
+4e
+d8
+40
+00
+07
+20
+20
+04
+33
+20
+40
+03
+42
+20
+34
+04
+9d
+70
+47
+c0
+0a
+70
+48
+2c
+00
+20
+60
+00
+00
+70
+48
+2c
+01
+68
+04
+48
+2d
+60
+04
+0b
+4e
+e8
+c0
+80
+00
+e0
+a0
+80
+00
+d8
+40
+00
+09
+da
+20
+0b
+4e
+20
+20
+04
+33
+68
+00
+c8
+2c
+20
+3a
+04
+95
+68
+00
+c7
+c0
+24
+7a
+00
+00
+20
+40
+00
+c4
+24
+74
+00
+00
+68
+00
+8b
+2b
+24
+7a
+00
+00
+20
+40
+3b
+e2
+68
+01
+c2
+0f
+20
+7a
+00
+00
+68
+04
+47
+b8
+20
+40
+7f
+16
+60
+0a
+41
+fb
+68
+00
+c7
+cd
+c0
+00
+84
+af
+70
+47
+cd
+01
+20
+20
+3c
+11
+1c
+e2
+7e
+00
+20
+3a
+04
+b3
+70
+47
+cd
+00
+20
+20
+3c
+11
+20
+20
+7e
+2b
+70
+47
+cd
+00
+68
+00
+c8
+3a
+24
+7a
+00
+00
+20
+40
+00
+c4
+24
+74
+00
+00
+68
+00
+8b
+2b
+24
+7a
+00
+00
+20
+40
+3b
+e2
+68
+01
+c2
+0f
+20
+7a
+00
+00
+58
+00
+9c
+40
+20
+40
+7f
+16
+60
+0a
+41
+fb
+20
+20
+3c
+11
+70
+4a
+0a
+3b
+20
+20
+03
+71
+70
+47
+d1
+00
+70
+47
+ca
+00
+70
+47
+c1
+01
+68
+00
+8b
+54
+c1
+03
+80
+00
+20
+20
+3e
+0a
+68
+00
+c7
+ca
+20
+7a
+00
+00
+20
+40
+05
+b0
+70
+47
+34
+00
+68
+00
+c7
+cf
+1f
+e0
+fe
+01
+60
+00
+c7
+cf
+70
+47
+cc
+00
+20
+40
+04
+3b
+24
+2c
+04
+de
+20
+40
+05
+3c
+20
+34
+04
+de
+70
+47
+cc
+01
+70
+47
+d0
+00
+70
+47
+d1
+00
+70
+47
+cf
+00
+68
+00
+c7
+35
+1f
+e0
+fe
+01
+60
+00
+c7
+35
+20
+20
+04
+f9
+70
+47
+cb
+01
+68
+00
+c7
+d1
+1f
+e0
+fe
+01
+60
+00
+c7
+d1
+68
+00
+c7
+c1
+c0
+ff
+84
+f1
+68
+00
+c7
+34
+1f
+e0
+fe
+01
+60
+00
+c7
+34
+20
+00
+00
+0a
+c0
+81
+84
+d1
+68
+00
+c7
+c7
+20
+5a
+05
+fb
+68
+00
+c7
+cf
+c0
+00
+84
+f6
+c0
+02
+84
+f4
+68
+00
+c7
+d1
+c0
+7f
+82
+c9
+20
+20
+04
+fb
+68
+00
+c7
+d1
+c0
+7f
+84
+c2
+20
+20
+04
+fb
+70
+47
+d0
+ff
+20
+20
+04
+f7
+70
+47
+d0
+01
+20
+40
+04
+31
+20
+20
+04
+fb
+68
+00
+c7
+b6
+20
+20
+04
+fc
+68
+00
+c7
+b5
+60
+00
+c7
+2d
+20
+60
+00
+00
+70
+89
+56
+cb
+70
+89
+55
+d0
+20
+60
+00
+00
+68
+08
+c7
+93
+20
+40
+05
+08
+20
+40
+39
+b1
+20
+20
+39
+ce
+68
+00
+c7
+c7
+20
+7a
+00
+00
+20
+20
+04
+fe
+60
+08
+80
+17
+18
+40
+a2
+00
+20
+20
+3a
+13
+79
+20
+2a
+00
+78
+46
+fc
+00
+78
+2e
+fc
+00
+78
+30
+7c
+00
+78
+50
+fc
+00
+78
+43
+fc
+00
+20
+40
+49
+76
+68
+00
+c7
+ce
+1f
+e2
+72
+00
+da
+20
+48
+5c
+ea
+20
+80
+00
+08
+00
+86
+08
+1a
+20
+a2
+01
+c2
+00
+05
+15
+37
+d3
+82
+00
+20
+00
+00
+64
+20
+40
+05
+1d
+20
+20
+39
+b1
+70
+89
+55
+d4
+20
+00
+00
+04
+70
+89
+55
+d2
+20
+00
+00
+04
+70
+89
+55
+d1
+20
+00
+00
+04
+70
+89
+55
+d0
+70
+89
+56
+e0
+20
+60
+00
+00
+18
+00
+2a
+00
+68
+08
+c7
+93
+20
+40
+05
+f7
+20
+40
+39
+bf
+78
+4e
+fc
+00
+78
+26
+fc
+00
+78
+30
+fc
+00
+78
+50
+7c
+00
+78
+43
+fc
+00
+20
+40
+49
+76
+68
+02
+47
+d2
+98
+00
+12
+00
+78
+28
+7c
+00
+db
+60
+27
+10
+37
+c1
+84
+00
+24
+6c
+00
+00
+d8
+a0
+47
+39
+09
+80
+00
+08
+19
+89
+7e
+00
+e0
+a0
+80
+00
+c2
+00
+05
+37
+20
+20
+39
+92
+68
+00
+c7
+39
+1f
+ed
+fe
+00
+1f
+eb
+7e
+00
+60
+00
+c7
+d8
+1f
+e6
+7c
+10
+24
+21
+64
+c0
+68
+00
+c7
+d8
+1f
+e0
+fe
+01
+d8
+c0
+47
+39
+98
+c0
+8c
+00
+e8
+c1
+80
+00
+1f
+e3
+7e
+00
+60
+01
+47
+d9
+68
+04
+47
+3a
+1f
+e3
+7e
+00
+60
+03
+c7
+db
+df
+20
+00
+07
+d8
+c0
+47
+db
+d8
+a0
+47
+db
+20
+40
+05
+81
+68
+00
+c7
+e2
+1f
+e2
+72
+00
+d8
+a0
+47
+e3
+d8
+c0
+47
+d2
+20
+40
+7e
+cd
+18
+a2
+22
+00
+68
+00
+c7
+d8
+1f
+e0
+fe
+02
+1f
+e2
+72
+00
+d8
+c0
+47
+39
+1a
+22
+0a
+00
+20
+40
+7e
+cd
+68
+00
+c7
+d8
+68
+08
+c7
+e2
+98
+40
+fe
+00
+1f
+e0
+fe
+01
+1f
+e9
+fe
+00
+1f
+e0
+fe
+01
+1f
+e2
+72
+00
+d8
+c0
+47
+e3
+20
+40
+05
+94
+df
+20
+00
+02
+d8
+a0
+48
+23
+d8
+c0
+47
+37
+20
+40
+05
+88
+68
+01
+48
+23
+68
+09
+47
+d9
+98
+46
+7c
+00
+24
+22
+e4
+c0
+68
+00
+c7
+d8
+1f
+e2
+72
+00
+d8
+c0
+47
+39
+18
+c0
+8c
+01
+d8
+a0
+47
+e3
+20
+40
+05
+79
+68
+00
+c7
+d8
+1f
+e2
+72
+00
+d8
+a0
+47
+e3
+d8
+c0
+47
+e3
+20
+40
+05
+81
+20
+20
+31
+d4
+1f
+22
+7e
+00
+20
+7a
+00
+00
+e8
+c1
+00
+00
+18
+c0
+8d
+ff
+1f
+e3
+7e
+00
+e0
+a0
+80
+00
+c2
+00
+05
+7b
+20
+60
+00
+00
+1f
+22
+7e
+00
+20
+7a
+00
+00
+e8
+c0
+80
+00
+1f
+ed
+fe
+00
+e0
+a0
+80
+00
+c2
+00
+05
+83
+20
+60
+00
+00
+1f
+22
+7e
+00
+20
+7a
+00
+00
+18
+c2
+7e
+00
+9f
+20
+fe
+00
+1f
+e0
+ff
+ff
+1f
+e2
+0c
+00
+e8
+c0
+80
+00
+18
+c0
+8d
+fe
+1f
+ed
+fe
+00
+e0
+a0
+80
+00
+c2
+00
+05
+8e
+20
+60
+00
+00
+58
+00
+ff
+ff
+d8
+a0
+10
+21
+da
+20
+00
+00
+1a
+21
+7c
+07
+24
+22
+85
+9a
+e8
+c8
+80
+00
+c2
+87
+85
+a4
+28
+4c
+00
+00
+1f
+e3
+fe
+00
+20
+20
+85
+9f
+98
+a2
+fe
+00
+18
+43
+04
+00
+1a
+20
+a2
+01
+c2
+00
+05
+97
+60
+01
+47
+37
+20
+60
+00
+00
+28
+4f
+fe
+00
+20
+20
+05
+9c
+1f
+22
+7e
+00
+20
+3a
+05
+ae
+e8
+c0
+80
+00
+1f
+e3
+fe
+00
+98
+41
+84
+00
+e0
+a8
+80
+00
+1f
+ec
+84
+00
+c2
+00
+05
+a6
+e0
+a8
+80
+00
+20
+60
+00
+00
+70
+47
+ce
+05
+68
+00
+c7
+e2
+68
+08
+c7
+ce
+98
+40
+fe
+00
+68
+08
+c7
+36
+98
+40
+fe
+00
+60
+00
+c7
+ce
+68
+00
+c7
+d2
+c3
+00
+05
+bb
+58
+00
+00
+55
+20
+20
+05
+bc
+58
+00
+00
+aa
+60
+00
+c8
+5c
+68
+00
+c7
+e2
+1f
+e2
+72
+00
+d8
+a0
+48
+5d
+d8
+c0
+47
+d2
+20
+40
+7e
+cd
+68
+08
+c7
+35
+18
+41
+04
+03
+18
+4d
+84
+00
+68
+00
+c7
+36
+1f
+e2
+72
+00
+1f
+ed
+fe
+00
+1f
+eb
+7e
+00
+98
+41
+fe
+00
+e0
+a0
+80
+00
+18
+a2
+22
+00
+d8
+c0
+48
+3c
+d8
+a0
+0b
+4e
+20
+40
+05
+88
+68
+00
+c7
+36
+1f
+e2
+72
+00
+d8
+c0
+0b
+4e
+d8
+a0
+0b
+4e
+d8
+40
+00
+00
+20
+40
+05
+a6
+68
+00
+8b
+4e
+1f
+e0
+fe
+01
+60
+00
+8b
+4e
+68
+00
+c7
+36
+1f
+e0
+fe
+01
+1f
+e2
+72
+00
+d8
+c0
+0b
+4e
+1a
+22
+0a
+00
+20
+40
+7e
+cd
+18
+a2
+24
+00
+68
+00
+c7
+ce
+1f
+e0
+ff
+fc
+1f
+e9
+fe
+00
+1f
+e0
+fe
+01
+1f
+e2
+72
+00
+d8
+c0
+48
+5d
+20
+40
+05
+94
+1a
+40
+a5
+ff
+ea
+48
+80
+00
+df
+20
+00
+02
+1a
+42
+0a
+00
+d8
+c0
+47
+37
+20
+40
+05
+88
+df
+20
+00
+02
+1a
+42
+0c
+00
+1a
+42
+0a
+00
+20
+20
+05
+a6
+70
+47
+35
+00
+70
+47
+93
+4e
+68
+00
+c7
+e2
+1f
+e2
+72
+00
+d8
+c0
+47
+79
+d8
+a0
+47
+d2
+20
+20
+05
+88
+60
+08
+80
+17
+18
+40
+a2
+04
+70
+89
+6d
+07
+20
+20
+3a
+13
+68
+00
+c7
+d0
+20
+7a
+00
+00
+c0
+7f
+86
+00
+1f
+e0
+ff
+ff
+60
+00
+c7
+d0
+68
+08
+c7
+a4
+20
+40
+06
+06
+18
+40
+84
+01
+18
+41
+04
+03
+60
+08
+c7
+a4
+20
+60
+00
+00
+68
+00
+c7
+79
+1f
+e1
+7e
+03
+1f
+ef
+a2
+04
+58
+00
+47
+a5
+9a
+20
+fe
+00
+98
+40
+8c
+00
+e8
+c0
+80
+00
+60
+00
+c7
+93
+20
+60
+00
+00
+68
+01
+47
+c8
+1f
+e0
+fe
+01
+60
+01
+47
+c8
+20
+40
+05
+fb
+20
+20
+06
+1e
+70
+47
+d0
+ff
+20
+40
+05
+f0
+68
+00
+c7
+c1
+c1
+ff
+80
+00
+da
+20
+0b
+4e
+d8
+40
+00
+08
+20
+40
+04
+33
+20
+40
+05
+b0
+58
+00
+00
+00
+60
+01
+47
+c8
+20
+00
+4e
+20
+68
+01
+47
+c8
+c0
+7f
+82
+c9
+20
+40
+04
+3b
+24
+2c
+06
+0f
+20
+40
+05
+3c
+20
+34
+06
+0f
+70
+47
+c6
+01
+70
+47
+c7
+00
+70
+47
+c8
+00
+70
+4a
+0a
+3a
+20
+20
+03
+71
+20
+60
+00
+00
+91
+55
+aa
+55
+ad
+1f
+02
+02
+3f
+30
+30
+30
+30
+00
+01
+01
+00
+02
+1a
+28
+e7
+09
+f6
+08
+df
+fa
+80
+46
+e7
+09
+f2
+08
+df
+fa
+80
+3e
+88
+82
+8c
+83
+e7
+09
+f0
+a3
+df
+fa
+80
+32
+e3
+09
+f6
+08
+df
+fa
+80
+78
+e3
+09
+f2
+08
+df
+fa
+80
+70
+88
+82
+8c
+83
+e3
+09
+f0
+a3
+df
+fa
+80
+64
+89
+82
+8a
+83
+e0
+a3
+f6
+08
+df
+fa
+80
+58
+89
+82
+8a
+83
+e0
+a3
+f2
+08
+df
+fa
+80
+4c
+80
+d2
+80
+fa
+80
+c6
+80
+d4
+80
+69
+80
+f2
+80
+33
+80
+10
+80
+a6
+80
+ea
+80
+9a
+80
+a8
+80
+da
+80
+e2
+80
+ca
+80
+33
+89
+82
+8a
+83
+ec
+fa
+e4
+93
+a3
+c8
+c5
+82
+c8
+cc
+c5
+83
+cc
+f0
+a3
+c8
+c5
+82
+c8
+cc
+c5
+83
+cc
+df
+e9
+de
+e7
+80
+0d
+89
+82
+8a
+83
+e4
+93
+a3
+f6
+08
+df
+f9
+ec
+fa
+a9
+f0
+ed
+fb
+22
+89
+82
+8a
+83
+ec
+fa
+e0
+a3
+c8
+c5
+82
+c8
+cc
+c5
+83
+cc
+f0
+a3
+c8
+c5
+82
+c8
+cc
+c5
+83
+cc
+df
+ea
+de
+e8
+80
+db
+89
+82
+8a
+83
+e4
+93
+a3
+f2
+08
+df
+f9
+80
+cc
+88
+f0
+ef
+60
+01
+0e
+4e
+60
+c3
+88
+f0
+ed
+24
+02
+b4
+04
+00
+50
+b9
+f5
+82
+eb
+24
+02
+b4
+04
+00
+50
+af
+23
+23
+45
+82
+23
+90
+00
+5e
+73
+bb
+01
+06
+89
+82
+8a
+83
+e0
+22
+50
+02
+e7
+22
+bb
+fe
+02
+e3
+22
+89
+82
+8a
+83
+e4
+93
+22
+bb
+01
+0c
+e5
+82
+29
+f5
+82
+e5
+83
+3a
+f5
+83
+e0
+22
+50
+06
+e9
+25
+82
+f8
+e6
+22
+bb
+fe
+06
+e9
+25
+82
+f8
+e2
+22
+e5
+82
+29
+f5
+82
+e5
+83
+3a
+f5
+83
+e4
+93
+22
+bb
+01
+06
+89
+82
+8a
+83
+f0
+22
+50
+02
+f7
+22
+bb
+fe
+01
+f3
+22
+c2
+d5
+ec
+30
+e7
+09
+b2
+d5
+e4
+c3
+9d
+fd
+e4
+9c
+fc
+ee
+30
+e7
+15
+b2
+d5
+e4
+c3
+9f
+ff
+e4
+9e
+fe
+12
+01
+ea
+c3
+e4
+9d
+fd
+e4
+9c
+fc
+80
+03
+12
+01
+ea
+30
+d5
+07
+c3
+e4
+9f
+ff
+e4
+9e
+fe
+22
+c5
+f0
+f8
+a3
+e0
+28
+f0
+c5
+f0
+f8
+e5
+82
+15
+82
+70
+02
+15
+83
+e0
+38
+f0
+22
+a3
+f8
+e0
+c5
+f0
+25
+f0
+f0
+e5
+82
+15
+82
+70
+02
+15
+83
+e0
+c8
+38
+f0
+e8
+22
+d0
+83
+d0
+82
+f8
+e4
+93
+70
+12
+74
+01
+93
+70
+0d
+a3
+a3
+93
+f8
+74
+01
+93
+f5
+82
+88
+83
+e4
+73
+74
+02
+93
+68
+60
+ef
+a3
+a3
+a3
+80
+df
+8a
+83
+89
+82
+e4
+73
+bc
+00
+0b
+be
+00
+29
+ef
+8d
+f0
+84
+ff
+ad
+f0
+22
+e4
+cc
+f8
+75
+f0
+08
+ef
+2f
+ff
+ee
+33
+fe
+ec
+33
+fc
+ee
+9d
+ec
+98
+40
+05
+fc
+ee
+9d
+fe
+0f
+d5
+f0
+e9
+e4
+ce
+fd
+22
+ed
+f8
+f5
+f0
+ee
+84
+20
+d2
+1c
+fe
+ad
+f0
+75
+f0
+08
+ef
+2f
+ff
+ed
+33
+fd
+40
+07
+98
+50
+06
+d5
+f0
+f2
+22
+c3
+98
+fd
+0f
+d5
+f0
+ea
+22
+78
+7f
+e4
+f6
+d8
+fd
+75
+81
+cf
+02
+02
+86
+02
+02
+e1
+e4
+93
+a3
+f8
+e4
+93
+a3
+40
+03
+f6
+80
+01
+f2
+08
+df
+f4
+80
+29
+e4
+93
+a3
+f8
+54
+07
+24
+0c
+c8
+c3
+33
+c4
+54
+0f
+44
+20
+c8
+83
+40
+04
+f4
+56
+80
+01
+46
+f6
+df
+e4
+80
+0b
+01
+02
+04
+08
+10
+20
+40
+80
+90
+02
+cb
+e4
+7e
+01
+93
+60
+bc
+a3
+ff
+54
+3f
+30
+e5
+09
+54
+1f
+fe
+e4
+93
+a3
+60
+01
+0e
+cf
+54
+c0
+25
+e0
+60
+a8
+40
+b8
+e4
+93
+a3
+fa
+e4
+93
+a3
+f8
+e4
+93
+a3
+c8
+c5
+82
+c8
+ca
+c5
+83
+ca
+f0
+a3
+c8
+c5
+82
+c8
+ca
+c5
+83
+ca
+df
+e9
+de
+e7
+80
+be
+52
+1b
+ab
+ff
+04
+2a
+00
+00
+00
+ff
+16
+32
+ff
+15
+b9
+00
+00
+00
+00
+00
+00
+00
+12
+1a
+ab
+12
+1c
+6c
+12
+18
+ba
+12
+10
+7a
+12
+0b
+4d
+90
+0b
+2a
+e0
+14
+60
+74
+24
+fe
+70
+e9
+90
+00
+a0
+e4
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+12
+1e
+8e
+90
+80
+70
+e4
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+90
+80
+7c
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+90
+80
+78
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+90
+80
+74
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+7f
+02
+12
+0e
+90
+50
+08
+c2
+06
+7f
+02
+71
+ac
+80
+06
+d2
+06
+7f
+02
+71
+ac
+7f
+03
+12
+0e
+90
+50
+08
+c2
+06
+7f
+03
+71
+ac
+80
+06
+d2
+06
+7f
+03
+71
+ac
+d2
+07
+7f
+08
+12
+12
+80
+12
+0f
+6e
+12
+15
+ab
+80
+fe
+90
+4e
+a4
+e0
+70
+33
+90
+4e
+9e
+e0
+70
+2d
+90
+4e
+9a
+e0
+ff
+64
+01
+60
+0a
+ef
+64
+02
+60
+05
+ef
+64
+07
+70
+1a
+90
+00
+a0
+e4
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+12
+0f
+6e
+c2
+08
+7f
+18
+12
+0e
+e8
+12
+15
+ab
+41
+e4
+12
+1e
+82
+41
+e4
+41
+e4
+22
+ac
+07
+a2
+06
+92
+04
+12
+1b
+8a
+af
+04
+a2
+06
+b3
+92
+03
+12
+12
+93
+af
+04
+c2
+05
+7b
+01
+7a
+80
+79
+70
+a2
+05
+92
+01
+90
+1c
+15
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+e4
+fe
+fd
+ef
+54
+07
+fe
+ef
+13
+13
+13
+54
+03
+fd
+30
+01
+20
+90
+1c
+15
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+2d
+f9
+e4
+3a
+fa
+31
+04
+ff
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+4f
+21
+4a
+90
+1c
+15
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+2d
+f9
+e4
+3a
+fa
+31
+04
+ff
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+f4
+5f
+21
+4a
+90
+1c
+1b
+ef
+f0
+31
+be
+05
+cd
+01
+06
+9d
+02
+06
+9d
+04
+05
+ee
+0a
+06
+10
+12
+06
+9d
+13
+07
+14
+14
+07
+93
+15
+06
+6e
+18
+06
+7f
+27
+04
+6b
+2f
+06
+cc
+39
+06
+fc
+3a
+06
+f6
+3b
+05
+c7
+3c
+04
+68
+3d
+06
+7f
+3e
+00
+00
+07
+bb
+12
+1a
+68
+c2
+06
+7f
+18
+71
+ac
+c2
+06
+7f
+02
+71
+ac
+c2
+06
+7f
+03
+71
+ac
+c2
+06
+7f
+04
+71
+ac
+c2
+06
+7f
+17
+71
+ac
+c2
+06
+7f
+1b
+71
+ac
+c2
+06
+e4
+ff
+71
+ac
+c2
+06
+e4
+ff
+71
+ac
+c2
+06
+7f
+06
+71
+ac
+d2
+07
+7f
+08
+12
+12
+80
+12
+1b
+d2
+12
+19
+f2
+90
+1c
+1b
+e0
+64
+2f
+70
+39
+12
+09
+39
+90
+4e
+b6
+ef
+f0
+7b
+01
+7a
+4e
+79
+b9
+7d
+01
+7c
+00
+7f
+d8
+7e
+3f
+12
+12
+a0
+90
+4e
+b9
+e0
+d3
+94
+03
+40
+03
+74
+02
+f0
+7b
+01
+7a
+4e
+79
+b9
+7d
+01
+7c
+00
+7f
+d8
+7e
+3f
+12
+11
+b2
+12
+08
+59
+90
+80
+80
+e4
+f0
+90
+4e
+bc
+f0
+90
+4e
+bb
+f0
+7b
+01
+7a
+1c
+79
+1c
+7d
+01
+fc
+7f
+d9
+7e
+3f
+12
+12
+a0
+7f
+0a
+7e
+00
+12
+12
+61
+90
+1c
+1b
+e0
+64
+2f
+70
+3d
+a3
+e0
+b4
+09
+1c
+c2
+07
+7f
+08
+12
+12
+80
+7f
+f4
+7e
+01
+12
+12
+61
+d2
+07
+7f
+08
+12
+12
+80
+7f
+f4
+7e
+01
+12
+12
+61
+c2
+07
+7f
+08
+12
+12
+80
+7f
+f4
+7e
+01
+12
+12
+61
+d2
+07
+7f
+08
+12
+12
+80
+7f
+e8
+7e
+03
+12
+12
+61
+e4
+90
+4e
+a1
+f0
+a3
+f0
+90
+1c
+1c
+e0
+64
+09
+70
+5d
+7b
+01
+7a
+03
+79
+72
+7d
+06
+fc
+7f
+c6
+7e
+3f
+12
+12
+a0
+7f
+0a
+7e
+00
+12
+12
+61
+7b
+01
+7a
+45
+79
+3e
+7d
+06
+7c
+00
+7f
+cc
+7e
+3f
+12
+12
+a0
+90
+03
+72
+e0
+f4
+70
+24
+a3
+e0
+f4
+70
+1f
+a3
+e0
+b4
+ff
+1a
+a3
+e0
+b4
+ff
+15
+a3
+e0
+b4
+ff
+10
+a3
+e0
+b4
+ff
+0b
+7f
+0d
+f1
+bc
+90
+4e
+9a
+74
+03
+f0
+22
+90
+4e
+9a
+74
+08
+f0
+7f
+27
+e1
+bc
+02
+13
+90
+12
+1b
+d2
+02
+19
+f2
+7f
+0e
+f1
+bc
+7f
+02
+f1
+bc
+90
+4e
+9a
+74
+05
+f0
+90
+4e
+9f
+e0
+60
+06
+e4
+90
+4e
+9b
+f0
+22
+90
+4e
+9b
+74
+03
+f0
+22
+90
+47
+18
+74
+04
+f0
+7e
+47
+7f
+19
+7b
+ff
+7a
+00
+79
+03
+90
+1b
+e6
+f0
+12
+13
+4d
+7f
+0a
+f1
+bc
+90
+4e
+9b
+74
+03
+f0
+22
+90
+4e
+9a
+74
+02
+f0
+12
+0e
+68
+90
+00
+40
+e0
+60
+fa
+7b
+01
+7a
+00
+79
+40
+7d
+06
+7c
+00
+7f
+b0
+7e
+3f
+12
+11
+b2
+7f
+0a
+7e
+00
+12
+12
+61
+7b
+01
+7a
+4e
+79
+9a
+7d
+01
+7c
+00
+7f
+d9
+7e
+3f
+12
+11
+b2
+7f
+0a
+7e
+00
+12
+12
+61
+7b
+01
+7a
+4e
+79
+9a
+7d
+01
+7c
+00
+7f
+da
+7e
+3f
+12
+11
+b2
+7f
+05
+f1
+bc
+e4
+90
+4e
+9b
+f0
+90
+4e
+9f
+f0
+22
+7b
+01
+7a
+42
+79
+61
+7d
+10
+7c
+00
+7f
+b6
+7e
+3f
+02
+11
+b2
+7b
+01
+7a
+00
+79
+40
+7d
+06
+7c
+00
+12
+1b
+09
+7b
+01
+7a
+00
+79
+40
+7d
+06
+7c
+00
+7f
+b0
+7e
+3f
+12
+11
+b2
+90
+4e
+9b
+e0
+b4
+01
+09
+12
+13
+90
+e4
+90
+4e
+9b
+f0
+22
+90
+4e
+9b
+e0
+b4
+03
+11
+90
+4e
+9a
+74
+03
+f0
+e4
+a3
+f0
+7f
+0d
+f1
+bc
+7f
+01
+e1
+bc
+90
+4e
+9a
+74
+06
+f0
+22
+7b
+01
+7a
+47
+79
+db
+7d
+06
+7c
+00
+7f
+d2
+7e
+3f
+12
+11
+b2
+90
+4e
+9a
+74
+01
+f0
+fb
+7a
+4e
+79
+9a
+fd
+7c
+00
+7f
+d9
+7e
+3f
+12
+11
+b2
+7f
+23
+e1
+bc
+e4
+90
+4e
+c0
+f0
+22
+12
+0e
+68
+90
+4e
+c0
+74
+01
+f0
+fb
+7a
+4e
+79
+9a
+fd
+7c
+00
+7f
+da
+7e
+3f
+02
+11
+b2
+e4
+90
+4e
+cd
+f0
+7f
+0e
+f1
+bc
+7f
+02
+f1
+bc
+90
+4e
+9a
+74
+07
+f0
+90
+1c
+1c
+74
+09
+f0
+12
+0e
+68
+7b
+01
+7a
+03
+79
+72
+7d
+06
+7c
+00
+7f
+c6
+7e
+3f
+12
+11
+b2
+7f
+0a
+7e
+00
+12
+12
+61
+7b
+01
+7a
+45
+79
+3e
+7d
+06
+7c
+00
+7f
+cc
+7e
+3f
+12
+11
+b2
+7f
+0a
+7e
+00
+12
+12
+61
+7b
+01
+7a
+1c
+79
+1c
+7d
+01
+7c
+00
+7f
+d9
+7e
+3f
+12
+11
+b2
+7f
+0a
+7e
+00
+12
+12
+61
+7b
+01
+7a
+1c
+79
+1c
+7d
+01
+7c
+00
+7f
+da
+7e
+3f
+12
+11
+b2
+e4
+90
+4e
+9b
+f0
+90
+4e
+9f
+f0
+22
+90
+4e
+9b
+e0
+b4
+08
+0b
+7f
+0d
+f1
+bc
+90
+4e
+9a
+74
+03
+f0
+22
+7f
+27
+f1
+bc
+90
+4e
+9a
+74
+08
+f0
+e4
+90
+4e
+a1
+f0
+a3
+f0
+90
+4e
+cd
+04
+f0
+22
+90
+1c
+08
+ef
+f0
+78
+09
+7c
+1c
+7d
+01
+7b
+ff
+7a
+00
+79
+08
+7e
+00
+7f
+03
+11
+de
+90
+1c
+08
+e0
+90
+1c
+0b
+f0
+7b
+01
+7a
+1c
+79
+09
+7d
+03
+90
+1b
+e7
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+a3
+ed
+f0
+90
+49
+3a
+e0
+ff
+a3
+e0
+90
+1b
+eb
+cf
+f0
+a3
+ef
+f0
+90
+1b
+ea
+e0
+ff
+14
+f0
+ef
+60
+3f
+90
+1b
+e7
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+01
+a8
+a9
+f0
+fa
+12
+01
+04
+ff
+90
+1b
+eb
+e4
+75
+f0
+01
+12
+01
+a8
+85
+f0
+82
+f5
+83
+ef
+f0
+90
+1b
+eb
+e0
+fe
+a3
+e0
+ff
+be
+49
+c6
+bf
+38
+c3
+90
+1b
+eb
+74
+48
+f0
+a3
+74
+a2
+f0
+80
+b7
+90
+1b
+eb
+e0
+ff
+a3
+e0
+90
+49
+3a
+cf
+f0
+a3
+ef
+f0
+22
+d1
+30
+90
+4e
+b6
+e0
+ff
+64
+d0
+60
+04
+ef
+b4
+d1
+0a
+90
+4e
+b9
+e0
+04
+ff
+7d
+06
+31
+0e
+90
+4e
+b6
+e0
+b4
+31
+14
+90
+4e
+b9
+e0
+70
+08
+7d
+06
+7f
+01
+31
+0e
+80
+06
+7d
+06
+7f
+03
+31
+0e
+90
+4e
+b6
+e0
+b4
+50
+0b
+90
+4e
+b9
+e0
+24
+03
+ff
+7d
+06
+31
+0e
+90
+4e
+b6
+e0
+64
+02
+70
+53
+7d
+09
+7f
+5a
+31
+0e
+90
+4e
+b9
+e0
+14
+60
+18
+14
+60
+23
+14
+60
+2e
+24
+03
+70
+36
+7d
+0d
+7f
+15
+31
+0e
+7d
+0e
+7f
+15
+31
+0e
+80
+28
+7d
+0d
+7f
+20
+31
+0e
+7d
+0e
+7f
+20
+31
+0e
+80
+1a
+7d
+0d
+7f
+2a
+31
+0e
+7d
+0e
+7f
+2a
+31
+0e
+80
+0c
+7d
+0d
+7f
+3f
+31
+0e
+7d
+0e
+7f
+3f
+31
+0e
+7d
+09
+e4
+ff
+31
+0e
+90
+80
+81
+e4
+f0
+90
+80
+73
+e0
+44
+02
+f0
+90
+80
+77
+e0
+44
+02
+f0
+22
+ac
+07
+ed
+44
+80
+90
+02
+18
+f0
+a3
+ef
+f0
+90
+80
+88
+74
+02
+f0
+a3
+e4
+f0
+90
+80
+8e
+f0
+a3
+f0
+90
+80
+06
+74
+02
+f0
+90
+81
+2c
+e0
+30
+e3
+f9
+7f
+00
+22
+e4
+90
+1c
+1d
+f0
+a3
+f0
+e4
+ff
+71
+24
+bf
+31
+18
+7f
+06
+71
+24
+ef
+44
+80
+ff
+90
+1c
+1d
+f0
+7d
+06
+31
+0e
+90
+1c
+1e
+74
+31
+f0
+21
+e8
+e4
+ff
+71
+24
+ef
+64
+30
+70
+7c
+7f
+01
+71
+24
+ef
+54
+f0
+64
+d0
+70
+28
+7f
+1e
+71
+24
+ef
+30
+e0
+08
+90
+1c
+1e
+74
+d1
+f0
+80
+06
+90
+1c
+1e
+74
+d0
+f0
+7f
+06
+71
+24
+ef
+44
+80
+ff
+90
+1c
+1d
+f0
+7d
+06
+31
+0e
+80
+4d
+7f
+01
+71
+24
+ef
+54
+f0
+ff
+bf
+50
+18
+90
+1c
+1e
+74
+50
+f0
+7f
+06
+71
+24
+ef
+44
+80
+ff
+90
+1c
+1d
+f0
+7d
+06
+31
+0e
+80
+2a
+7f
+01
+71
+24
+bf
+02
+1f
+7f
+06
+71
+24
+ef
+44
+80
+ff
+90
+1c
+1d
+f0
+7d
+06
+31
+0e
+90
+1c
+1e
+74
+02
+f0
+7f
+01
+71
+24
+ef
+64
+02
+60
+04
+d1
+30
+21
+40
+90
+1c
+1e
+e0
+64
+d0
+60
+02
+41
+b8
+7d
+09
+7f
+5a
+31
+0e
+7d
+0d
+7f
+0a
+31
+0e
+7d
+1b
+7f
+35
+31
+0e
+7d
+1d
+7f
+db
+31
+0e
+7d
+28
+7f
+b4
+31
+0e
+7d
+29
+7f
+46
+31
+0e
+7d
+2a
+7f
+96
+31
+0e
+7d
+2b
+7f
+8c
+31
+0e
+7d
+2c
+7f
+6e
+31
+0e
+7d
+2d
+7f
+64
+31
+0e
+7d
+38
+7f
+5f
+31
+0e
+7d
+39
+7f
+0f
+31
+0e
+7d
+3a
+7f
+32
+31
+0e
+7d
+3b
+7f
+47
+31
+0e
+7d
+42
+7f
+10
+31
+0e
+7d
+43
+7f
+09
+31
+0e
+7d
+54
+7f
+2e
+31
+0e
+7d
+55
+7f
+f2
+31
+0e
+7d
+61
+7f
+f4
+31
+0e
+7d
+63
+7f
+70
+31
+0e
+7d
+75
+7f
+52
+31
+0e
+7d
+76
+7f
+41
+31
+0e
+7d
+77
+7f
+ed
+31
+0e
+7d
+78
+7f
+23
+31
+0e
+7d
+79
+7f
+46
+31
+0e
+7d
+7a
+7f
+e5
+31
+0e
+7d
+7c
+7f
+48
+31
+0e
+7d
+7d
+7f
+80
+31
+0e
+7d
+7e
+7f
+77
+31
+0e
+7d
+7f
+7f
+01
+31
+0e
+7d
+0b
+e4
+ff
+31
+0e
+7d
+7f
+e4
+ff
+31
+0e
+7d
+09
+e4
+ff
+31
+0e
+90
+1c
+1e
+e0
+b4
+02
+18
+7d
+09
+7f
+5a
+31
+0e
+7d
+26
+7f
+34
+31
+0e
+7d
+19
+7f
+04
+31
+0e
+7d
+09
+e4
+ff
+31
+0e
+90
+1c
+1e
+e0
+64
+50
+70
+3f
+7d
+09
+7f
+5a
+31
+0e
+7d
+5b
+7f
+9a
+31
+0e
+7f
+0d
+71
+24
+ef
+64
+12
+60
+08
+7d
+0d
+7f
+12
+31
+0e
+80
+ef
+7f
+0e
+71
+24
+ef
+64
+c5
+60
+08
+7d
+0e
+7f
+c5
+31
+0e
+80
+ef
+7f
+53
+71
+24
+ef
+64
+48
+60
+08
+7d
+53
+7f
+48
+31
+0e
+80
+ef
+90
+1c
+1e
+e0
+ff
+22
+90
+02
+18
+ef
+f0
+90
+80
+88
+74
+01
+f0
+a3
+e4
+f0
+90
+80
+8e
+04
+f0
+a3
+e4
+f0
+90
+80
+06
+74
+02
+f0
+90
+81
+2c
+e0
+30
+e3
+f9
+90
+02
+1d
+e0
+ff
+22
+e4
+90
+1c
+00
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+c2
+00
+90
+4e
+9a
+e0
+ff
+64
+01
+60
+07
+ef
+64
+07
+60
+02
+c1
+2f
+90
+4e
+c0
+e0
+70
+0a
+90
+4e
+9a
+e0
+64
+01
+70
+02
+c1
+2f
+f1
+d7
+40
+02
+c1
+2f
+90
+4e
+9a
+e0
+b4
+01
+0b
+90
+4e
+a4
+e0
+b4
+02
+12
+d2
+00
+80
+0e
+90
+4e
+cc
+e0
+ff
+90
+4e
+b1
+e0
+6f
+60
+02
+d2
+00
+90
+4e
+cc
+e0
+ff
+90
+4e
+b1
+f0
+bf
+07
+02
+e4
+f0
+90
+4e
+ca
+e0
+64
+01
+60
+0a
+90
+4e
+9a
+e0
+64
+07
+60
+02
+a1
+62
+7f
+18
+d1
+90
+50
+02
+a1
+62
+e4
+90
+4e
+ca
+f0
+d2
+00
+d1
+30
+7f
+02
+71
+24
+ef
+20
+e7
+02
+a1
+62
+90
+4e
+a4
+74
+02
+f0
+90
+4e
+b6
+e0
+64
+02
+60
+16
+7f
+03
+71
+24
+90
+1c
+00
+ef
+f0
+7f
+04
+71
+24
+ef
+f4
+04
+90
+1c
+01
+f0
+80
+29
+7f
+03
+71
+24
+90
+1c
+00
+ef
+f0
+7f
+04
+71
+24
+90
+1c
+01
+ef
+f0
+7f
+12
+71
+24
+90
+1c
+03
+ef
+f0
+e0
+ff
+c4
+54
+0f
+90
+1c
+02
+f0
+ef
+54
+0f
+a3
+f0
+90
+80
+81
+e4
+f0
+90
+80
+73
+e0
+44
+02
+f0
+90
+80
+77
+e0
+44
+02
+f0
+90
+4e
+b6
+e0
+64
+02
+70
+2a
+90
+1c
+02
+e0
+ff
+30
+e3
+05
+44
+f0
+f0
+80
+07
+90
+1c
+02
+e0
+54
+0f
+f0
+90
+1c
+03
+e0
+ff
+30
+e3
+05
+44
+f0
+f0
+80
+31
+90
+1c
+03
+e0
+54
+0f
+f0
+80
+28
+90
+1c
+00
+e0
+30
+e7
+08
+90
+1c
+02
+74
+ff
+f0
+80
+05
+e4
+90
+1c
+02
+f0
+90
+1c
+01
+e0
+30
+e7
+08
+90
+1c
+03
+74
+ff
+f0
+80
+05
+e4
+90
+1c
+03
+f0
+90
+1c
+02
+e0
+fe
+90
+1c
+00
+e0
+fd
+ee
+ed
+ff
+90
+1b
+c5
+ee
+f0
+a3
+ef
+f0
+90
+1c
+03
+e0
+fe
+90
+1c
+01
+e0
+fd
+ee
+ed
+ff
+90
+1b
+c7
+ee
+f0
+a3
+ef
+f0
+90
+4e
+b9
+e0
+b4
+02
+45
+90
+4e
+b6
+e0
+b4
+31
+3e
+90
+1b
+c7
+e0
+fc
+a3
+e0
+fd
+ae
+04
+78
+02
+ce
+a2
+e7
+13
+ce
+13
+d8
+f8
+2d
+ff
+ec
+3e
+90
+1b
+c7
+f0
+a3
+ef
+f0
+90
+1b
+c5
+e0
+fc
+a3
+e0
+fd
+ae
+04
+78
+02
+ce
+a2
+e7
+13
+ce
+13
+d8
+f8
+2d
+ff
+ec
+3e
+90
+1b
+c5
+f0
+a3
+ef
+f0
+90
+1b
+c7
+e0
+fe
+a3
+e0
+ff
+c3
+e4
+9f
+ff
+e4
+9e
+90
+1b
+c7
+f0
+a3
+ef
+f0
+90
+1b
+c5
+e0
+fe
+a3
+e0
+ff
+c3
+e4
+9f
+ff
+e4
+9e
+90
+1b
+c5
+f0
+a3
+ef
+f0
+12
+1e
+c7
+90
+1b
+c5
+e0
+fc
+a3
+e0
+90
+1c
+00
+f0
+ec
+ff
+33
+95
+e0
+90
+1c
+02
+ef
+f0
+90
+1b
+c7
+e0
+fc
+a3
+e0
+90
+1c
+01
+f0
+ec
+ff
+33
+95
+e0
+90
+1c
+03
+ef
+f0
+90
+4e
+b5
+e0
+60
+02
+d2
+00
+20
+00
+02
+c1
+2f
+e4
+90
+4e
+a1
+f0
+a3
+f0
+90
+4e
+9a
+e0
+64
+01
+70
+60
+90
+4e
+c3
+e0
+04
+f0
+e0
+d3
+94
+ff
+40
+02
+e4
+f0
+90
+4e
+4f
+74
+01
+f0
+90
+1c
+00
+e0
+90
+4e
+50
+f0
+90
+1c
+02
+e0
+90
+4e
+51
+f0
+90
+1c
+01
+e0
+90
+4e
+52
+f0
+90
+1c
+03
+e0
+90
+4e
+53
+f0
+90
+4e
+b5
+e0
+90
+4e
+54
+f0
+90
+4e
+b1
+e0
+90
+4e
+55
+f0
+e4
+a3
+f0
+90
+4e
+c3
+e0
+90
+4e
+57
+f0
+7b
+01
+7a
+4e
+79
+4f
+7d
+09
+12
+15
+ef
+e4
+90
+4e
+b5
+f0
+22
+90
+4e
+9a
+e0
+ff
+64
+02
+60
+05
+ef
+64
+07
+70
+43
+90
+4e
+b1
+e0
+90
+4e
+4f
+f0
+90
+1c
+00
+e0
+90
+4e
+50
+f0
+90
+1c
+02
+e0
+90
+4e
+51
+f0
+90
+1c
+01
+e0
+90
+4e
+52
+f0
+90
+1c
+03
+e0
+90
+4e
+53
+f0
+90
+4e
+b5
+e0
+90
+4e
+54
+f0
+e4
+a3
+f0
+7b
+01
+7a
+4e
+79
+4f
+7d
+07
+12
+19
+49
+e4
+90
+4e
+b5
+f0
+22
+e4
+ff
+90
+80
+81
+04
+f0
+e4
+ff
+71
+24
+ef
+64
+30
+60
+27
+ef
+64
+31
+60
+22
+90
+80
+81
+e4
+f0
+90
+80
+73
+e0
+44
+02
+f0
+90
+80
+77
+e0
+54
+fd
+f0
+90
+80
+73
+e0
+44
+02
+f0
+90
+80
+81
+74
+01
+f0
+80
+d0
+22
+e4
+ff
+d1
+30
+7f
+06
+71
+24
+ef
+54
+f7
+ff
+7d
+06
+31
+0e
+7f
+02
+71
+24
+90
+80
+81
+e4
+f0
+90
+80
+73
+e0
+44
+02
+f0
+90
+80
+77
+e0
+44
+02
+f0
+22
+7b
+01
+7a
+81
+79
+1c
+ad
+07
+e4
+90
+1c
+20
+f0
+fe
+ef
+54
+07
+f0
+ef
+13
+13
+13
+54
+03
+fe
+f5
+82
+75
+83
+00
+12
+01
+1d
+fd
+33
+95
+e0
+fc
+90
+1c
+20
+e0
+ff
+74
+01
+7e
+00
+a8
+07
+08
+80
+05
+c3
+33
+ce
+33
+ce
+d8
+f9
+ff
+ee
+5c
+fe
+ef
+5d
+4e
+24
+ff
+22
+90
+1c
+21
+ef
+f0
+d1
+90
+92
+09
+90
+1c
+21
+e0
+ff
+a2
+09
+b3
+92
+08
+ef
+54
+07
+fe
+ef
+13
+13
+13
+54
+03
+ff
+30
+08
+43
+24
+a0
+f5
+82
+e4
+34
+00
+f5
+83
+c0
+83
+c0
+82
+e0
+fd
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+f4
+5d
+d0
+82
+d0
+83
+f0
+74
+a4
+2f
+f5
+82
+e4
+34
+00
+f5
+83
+c0
+83
+c0
+82
+e0
+ff
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+4f
+d0
+82
+d0
+83
+f0
+22
+74
+a0
+2f
+f5
+82
+e4
+34
+00
+f5
+83
+c0
+83
+c0
+82
+e0
+fd
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+fc
+4d
+d0
+82
+d0
+83
+f0
+74
+a4
+2f
+f5
+82
+e4
+34
+00
+f5
+83
+e0
+ff
+ec
+f4
+fe
+ef
+5e
+f0
+22
+90
+80
+81
+e4
+f0
+90
+80
+73
+e0
+44
+02
+f0
+90
+80
+77
+e0
+44
+02
+f0
+c2
+06
+7f
+04
+12
+03
+ac
+c2
+06
+7f
+1b
+12
+03
+ac
+c2
+06
+7f
+17
+12
+03
+ac
+c2
+06
+e4
+ff
+12
+03
+ac
+c2
+06
+e4
+ff
+12
+03
+ac
+c2
+06
+7f
+06
+12
+03
+ac
+7f
+02
+d1
+d5
+7f
+03
+d1
+d5
+7f
+04
+d1
+d5
+7f
+17
+d1
+d5
+7f
+1b
+d1
+d5
+e4
+ff
+d1
+d5
+e4
+ff
+d1
+d5
+7f
+06
+c1
+d5
+7d
+05
+7f
+a1
+21
+0e
+7d
+05
+7f
+b8
+21
+0e
+90
+49
+3a
+e0
+fe
+a3
+e0
+ff
+90
+49
+38
+e0
+b5
+06
+07
+a3
+e0
+b5
+07
+02
+d3
+22
+c3
+22
+90
+4e
+a7
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+7f
+04
+d1
+90
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+a7
+f0
+30
+e0
+06
+90
+4e
+a4
+74
+02
+f0
+90
+4e
+a7
+e0
+54
+07
+ff
+bf
+07
+06
+a3
+74
+01
+f0
+80
+07
+ef
+70
+04
+90
+4e
+a8
+f0
+90
+4e
+a8
+e0
+ff
+22
+90
+4e
+a9
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+7f
+17
+12
+0e
+90
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+a9
+f0
+30
+e0
+06
+90
+4e
+a4
+74
+02
+f0
+90
+4e
+a9
+e0
+54
+07
+ff
+bf
+07
+06
+a3
+74
+01
+f0
+80
+07
+ef
+70
+04
+90
+4e
+aa
+f0
+90
+4e
+aa
+e0
+ff
+22
+e4
+90
+1b
+ed
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+90
+4e
+c8
+e0
+64
+01
+70
+57
+f0
+12
+0f
+ef
+90
+1b
+ed
+ef
+f0
+11
+34
+90
+1b
+ef
+ef
+f0
+f1
+e8
+90
+1b
+ee
+ef
+f0
+12
+18
+2e
+90
+1b
+f0
+ef
+f0
+12
+18
+74
+90
+1b
+f1
+ef
+f0
+11
+e7
+90
+1b
+ee
+e0
+ff
+25
+e0
+ff
+90
+1b
+ed
+e0
+4f
+ff
+90
+1b
+ef
+e0
+fe
+25
+e0
+25
+e0
+4f
+ff
+a3
+e0
+fe
+33
+33
+33
+54
+f8
+4f
+ff
+a3
+e0
+fe
+c4
+54
+f0
+4f
+90
+4e
+cc
+f0
+22
+90
+4e
+ba
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+7f
+06
+12
+0e
+90
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+ba
+f0
+30
+e0
+06
+90
+4e
+a4
+74
+02
+f0
+90
+4e
+ba
+e0
+ff
+bf
+07
+06
+90
+4e
+cb
+74
+01
+f0
+90
+4e
+ba
+e0
+f4
+70
+53
+90
+4e
+cb
+e0
+64
+0f
+70
+4b
+7b
+01
+7a
+4e
+79
+9a
+7d
+01
+fc
+7f
+d9
+7e
+3f
+51
+a0
+90
+4e
+9a
+e0
+b4
+01
+05
+74
+09
+f0
+80
+06
+90
+4e
+9a
+74
+01
+f0
+7b
+01
+7a
+4e
+79
+9a
+7d
+01
+7c
+00
+7f
+d9
+7e
+3f
+31
+b2
+7f
+0a
+7e
+00
+51
+61
+d2
+07
+7f
+08
+51
+80
+7f
+0a
+7e
+00
+51
+61
+90
+80
+10
+74
+01
+f0
+80
+fe
+90
+4e
+ba
+e0
+64
+f8
+70
+31
+90
+4e
+cb
+f0
+c3
+94
+0d
+50
+28
+90
+4e
+b9
+e0
+04
+f0
+e0
+b4
+03
+02
+e4
+f0
+90
+4e
+b9
+e0
+04
+90
+4e
+bb
+f0
+12
+08
+59
+7b
+01
+7a
+4e
+79
+b9
+7d
+01
+7c
+00
+7f
+d8
+7e
+3f
+31
+b2
+22
+90
+1b
+c9
+ee
+f0
+a3
+ef
+f0
+a3
+ec
+f0
+a3
+ed
+f0
+a3
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+1b
+cb
+e0
+70
+02
+a3
+e0
+70
+02
+41
+60
+90
+1b
+c9
+e0
+fe
+a3
+e0
+ff
+44
+0f
+24
+01
+fd
+e4
+3e
+fc
+c3
+ed
+9f
+ff
+ec
+9e
+fe
+90
+1b
+d0
+f0
+a3
+ef
+f0
+90
+1b
+cb
+e0
+fc
+a3
+e0
+fd
+d3
+9f
+ec
+9e
+40
+0a
+90
+1b
+d0
+e0
+fe
+a3
+e0
+ff
+80
+04
+ae
+04
+af
+05
+90
+1b
+d0
+ee
+f0
+fc
+a3
+ef
+f0
+fd
+c3
+90
+1b
+cc
+e0
+9d
+f0
+90
+1b
+cb
+e0
+9c
+f0
+90
+1b
+c9
+e0
+fe
+a3
+e0
+ff
+90
+1b
+cd
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+71
+b9
+7f
+0a
+7e
+00
+51
+61
+90
+1b
+d0
+e0
+fe
+a3
+e0
+ff
+90
+1b
+ce
+ee
+8f
+f0
+12
+01
+92
+90
+1b
+ca
+e0
+2f
+f0
+90
+1b
+c9
+e0
+3e
+f0
+21
+c9
+22
+d3
+ef
+94
+00
+ee
+94
+00
+40
+15
+e4
+fd
+fc
+0d
+bd
+00
+01
+0c
+bc
+04
+f8
+bd
+a6
+f5
+ef
+1f
+70
+01
+1e
+80
+e2
+22
+ac
+07
+d2
+05
+12
+03
+c3
+af
+04
+a2
+07
+92
+02
+b1
+42
+af
+04
+c2
+03
+7b
+01
+7a
+80
+79
+78
+a2
+03
+92
+01
+02
+03
+cd
+90
+1b
+f7
+ec
+f0
+a3
+ed
+f0
+a3
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+80
+98
+74
+04
+f0
+a3
+e4
+f0
+90
+1b
+2c
+74
+a0
+f0
+a3
+ee
+f0
+a3
+ef
+f0
+90
+1b
+2f
+74
+a1
+f0
+7a
+1b
+79
+2c
+7e
+1b
+7f
+2c
+74
+2c
+fc
+74
+1b
+ff
+ec
+fe
+ef
+90
+80
+9a
+ee
+f0
+a3
+ef
+f0
+90
+1b
+f7
+e0
+fc
+a3
+e0
+fa
+ec
+ff
+ea
+fe
+ef
+90
+80
+9e
+ee
+f0
+a3
+ef
+f0
+7a
+1b
+79
+30
+7e
+1b
+7f
+30
+74
+30
+fc
+74
+1b
+ff
+ec
+fe
+ef
+90
+80
+9c
+ee
+f0
+a3
+ef
+f0
+90
+80
+90
+74
+02
+f0
+90
+80
+9c
+a3
+e0
+20
+e7
+07
+90
+80
+90
+e0
+44
+01
+f0
+90
+80
+06
+e0
+44
+04
+f0
+91
+26
+90
+1b
+f9
+e0
+a3
+e0
+fa
+a3
+e0
+ae
+02
+ff
+7b
+01
+7a
+1b
+79
+30
+90
+1b
+f7
+e0
+a3
+e0
+90
+1b
+e6
+f0
+90
+1b
+e1
+ee
+f0
+a3
+ef
+f0
+a3
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+1b
+e6
+e0
+ff
+14
+f0
+ef
+60
+27
+90
+1b
+e3
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+01
+a8
+a9
+f0
+fa
+12
+01
+04
+ff
+90
+1b
+e1
+e4
+75
+f0
+01
+12
+01
+a8
+85
+f0
+82
+f5
+83
+ef
+f0
+80
+cf
+22
+7b
+01
+7a
+47
+79
+79
+7d
+04
+7c
+00
+7f
+d4
+7e
+3f
+51
+a0
+7f
+23
+12
+07
+bc
+90
+4e
+9a
+74
+01
+f0
+fb
+7a
+4e
+79
+9a
+fd
+7c
+00
+7f
+d9
+7e
+3f
+21
+b2
+90
+1b
+94
+ee
+f0
+a3
+ef
+f0
+a3
+ec
+f0
+a3
+ed
+f0
+7e
+1b
+7f
+9b
+90
+1b
+e6
+f0
+71
+4d
+90
+1b
+98
+74
+a0
+f0
+90
+1b
+94
+e0
+ff
+a3
+e0
+90
+1b
+99
+cf
+f0
+a3
+ef
+f0
+90
+1b
+97
+e0
+24
+03
+fd
+90
+1b
+96
+e0
+34
+00
+fc
+ed
+fa
+ec
+ff
+ea
+fe
+ef
+90
+80
+98
+ee
+f0
+a3
+ef
+f0
+7d
+98
+ed
+fa
+74
+1b
+ff
+ea
+fe
+ef
+a3
+ee
+f0
+a3
+ef
+f0
+90
+80
+9e
+e4
+f0
+a3
+f0
+90
+80
+90
+04
+f0
+90
+80
+06
+e0
+44
+04
+f0
+90
+81
+2c
+e0
+30
+e5
+f9
+22
+e4
+90
+1b
+f2
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+7f
+04
+12
+0e
+90
+40
+04
+7f
+01
+80
+02
+7f
+00
+90
+1b
+f2
+ef
+f0
+7f
+17
+12
+0e
+90
+40
+04
+7f
+01
+80
+02
+7f
+00
+90
+1b
+f4
+ef
+f0
+7f
+1b
+12
+0e
+90
+40
+04
+7f
+01
+80
+02
+7f
+00
+90
+1b
+f3
+ef
+f0
+e0
+ff
+25
+e0
+ff
+90
+1b
+f2
+e0
+4f
+ff
+90
+1b
+f4
+e0
+fe
+25
+e0
+25
+e0
+4f
+a3
+f0
+64
+07
+60
+02
+a1
+3c
+90
+4e
+a1
+f0
+a3
+f0
+90
+4e
+a4
+74
+0a
+f0
+90
+4e
+a3
+e0
+c3
+94
+19
+40
+02
+a1
+41
+90
+4e
+a3
+e0
+04
+f0
+e0
+64
+19
+60
+02
+a1
+41
+90
+4e
+9a
+e0
+60
+73
+14
+60
+22
+24
+fb
+60
+6c
+24
+fe
+60
+0f
+04
+70
+7b
+7f
+11
+12
+07
+bc
+90
+4e
+9b
+74
+08
+f0
+22
+90
+4e
+9a
+74
+03
+f0
+7f
+0d
+02
+07
+bc
+90
+4e
+c3
+e0
+04
+f0
+e0
+d3
+94
+ff
+40
+02
+e4
+f0
+90
+4e
+4f
+74
+01
+f0
+e4
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+90
+4e
+c3
+e0
+90
+4e
+57
+f0
+7b
+01
+7a
+4e
+79
+4f
+7d
+09
+b1
+ef
+7f
+64
+7e
+00
+51
+61
+f1
+3d
+7f
+0a
+7e
+00
+51
+61
+90
+4e
+9a
+74
+03
+f0
+7f
+0d
+02
+07
+bc
+90
+4e
+9a
+74
+03
+f0
+7f
+0d
+12
+07
+bc
+7f
+01
+02
+07
+bc
+22
+e4
+90
+4e
+a3
+f0
+22
+7b
+01
+7a
+80
+79
+74
+a2
+02
+92
+01
+02
+03
+cd
+90
+4e
+bb
+e0
+70
+03
+a3
+04
+f0
+90
+4e
+bb
+e0
+60
+2b
+90
+4e
+a4
+74
+0a
+f0
+90
+4e
+bc
+e0
+60
+0c
+c2
+02
+7f
+08
+b1
+42
+e4
+90
+4e
+bc
+f0
+22
+d2
+02
+7f
+08
+b1
+42
+90
+4e
+bc
+74
+01
+f0
+90
+4e
+bb
+e0
+14
+f0
+22
+90
+4e
+9a
+e0
+b4
+03
+14
+90
+4e
+a4
+74
+45
+f0
+90
+4e
+a6
+e0
+54
+07
+ff
+bf
+04
+0a
+7f
+08
+80
+2f
+d2
+02
+7f
+08
+b1
+42
+22
+e4
+90
+0b
+2b
+f0
+90
+0b
+2a
+f0
+7f
+01
+fe
+41
+61
+90
+4e
+a4
+e0
+60
+02
+14
+f0
+90
+4e
+a6
+e0
+04
+f0
+90
+4e
+cb
+e0
+60
+02
+04
+f0
+b1
+4f
+81
+2e
+90
+1c
+22
+ef
+f0
+7b
+01
+7a
+80
+79
+74
+12
+0e
+96
+92
+0a
+90
+1c
+22
+e0
+ff
+a2
+0a
+b3
+92
+02
+a1
+42
+90
+1c
+24
+ed
+f0
+90
+1a
+96
+74
+06
+f0
+90
+49
+3a
+e0
+fe
+a3
+e0
+ff
+90
+49
+38
+e0
+b5
+06
+f1
+a3
+e0
+b5
+07
+ec
+90
+1c
+24
+e0
+fd
+90
+1a
+97
+f0
+7e
+1a
+7f
+98
+90
+1b
+e6
+ed
+f0
+71
+4d
+7b
+01
+7a
+1a
+79
+96
+90
+1c
+24
+e0
+24
+02
+fd
+02
+07
+e3
+e4
+90
+1c
+1f
+f0
+90
+4f
+f0
+e0
+04
+f0
+90
+4e
+a2
+e0
+04
+f0
+70
+06
+90
+4e
+a1
+e0
+04
+f0
+90
+4e
+9a
+e0
+14
+60
+60
+24
+fe
+60
+22
+24
+fd
+70
+02
+e1
+0c
+14
+60
+32
+14
+60
+02
+e1
+3c
+90
+1c
+1f
+74
+09
+f0
+90
+4e
+a1
+e0
+70
+04
+a3
+e0
+64
+14
+70
+02
+e1
+2a
+90
+1c
+1f
+74
+02
+f0
+90
+4e
+a1
+e0
+64
+01
+70
+04
+a3
+e0
+64
+68
+60
+02
+e1
+3c
+e1
+2a
+22
+90
+1c
+1f
+74
+09
+f0
+90
+4e
+a1
+e0
+64
+04
+70
+04
+a3
+e0
+64
+b0
+60
+02
+e1
+3c
+7f
+11
+12
+07
+bc
+e4
+90
+4e
+9b
+f0
+22
+90
+1c
+1f
+74
+01
+f0
+90
+4e
+a1
+e0
+fe
+a3
+e0
+ff
+d3
+94
+58
+ee
+94
+02
+40
+08
+90
+4e
+c0
+e0
+64
+01
+60
+5a
+90
+4e
+c0
+e0
+70
+66
+ef
+64
+05
+4e
+70
+1e
+90
+42
+b8
+e0
+20
+e2
+07
+7f
+25
+12
+07
+bc
+80
+10
+7f
+24
+12
+07
+bc
+7f
+0a
+7e
+00
+51
+61
+7f
+23
+12
+07
+bc
+d3
+90
+4e
+a2
+e0
+94
+07
+90
+4e
+a1
+e0
+94
+00
+40
+33
+80
+1f
+22
+90
+1c
+1f
+74
+02
+f0
+12
+0f
+d7
+50
+25
+c3
+90
+4e
+a2
+e0
+94
+03
+90
+4e
+a1
+e0
+94
+00
+40
+16
+80
+02
+22
+22
+7b
+01
+7a
+1c
+79
+1f
+7d
+01
+7c
+00
+7f
+d9
+7e
+3f
+31
+b2
+f1
+48
+22
+7f
+24
+12
+07
+bc
+e4
+90
+4e
+9a
+f0
+22
+e4
+90
+4e
+a1
+f0
+a3
+f0
+90
+4e
+a4
+f0
+90
+4e
+9e
+04
+f0
+e4
+90
+4e
+9a
+f0
+7f
+19
+02
+07
+bc
+90
+1c
+25
+ed
+f0
+90
+1a
+96
+74
+04
+f0
+90
+49
+3a
+e0
+fe
+a3
+e0
+ff
+90
+49
+38
+e0
+b5
+06
+f1
+a3
+e0
+b5
+07
+ec
+90
+1c
+25
+e0
+fd
+90
+1a
+97
+f0
+7e
+1a
+7f
+98
+90
+1b
+e6
+ed
+f0
+71
+4d
+7b
+01
+7a
+1a
+79
+96
+90
+1c
+25
+e0
+24
+02
+fd
+02
+07
+e3
+90
+1c
+26
+ed
+f0
+90
+1a
+96
+74
+05
+f0
+90
+49
+3a
+e0
+fe
+a3
+e0
+ff
+90
+49
+38
+e0
+b5
+06
+f1
+a3
+e0
+b5
+07
+ec
+90
+1c
+26
+e0
+fd
+90
+1a
+97
+f0
+7e
+1a
+7f
+98
+90
+1b
+e6
+ed
+f0
+71
+4d
+7b
+01
+7a
+1a
+79
+96
+90
+1c
+26
+e0
+24
+02
+fd
+02
+07
+e3
+90
+4e
+ab
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+7f
+1b
+12
+0e
+90
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+ab
+f0
+30
+e0
+06
+90
+4e
+a4
+74
+02
+f0
+90
+4e
+ab
+e0
+54
+07
+ff
+bf
+07
+06
+a3
+74
+01
+f0
+80
+07
+ef
+70
+04
+90
+4e
+ac
+f0
+90
+4e
+ac
+e0
+ff
+22
+90
+4e
+af
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+e4
+ff
+12
+0e
+90
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+af
+f0
+30
+e0
+06
+90
+4e
+a4
+74
+02
+f0
+90
+4e
+af
+e0
+54
+07
+ff
+bf
+07
+06
+a3
+74
+01
+f0
+80
+07
+ef
+70
+04
+90
+4e
+b0
+f0
+90
+4e
+b0
+e0
+ff
+22
+90
+4e
+ad
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+e4
+ff
+12
+0e
+90
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+ad
+f0
+30
+e0
+06
+90
+4e
+a4
+74
+02
+f0
+90
+4e
+ad
+e0
+54
+07
+ff
+bf
+07
+06
+a3
+74
+01
+f0
+80
+07
+ef
+70
+04
+90
+4e
+ae
+f0
+90
+4e
+ae
+e0
+ff
+22
+e4
+90
+1c
+0c
+f0
+a3
+f0
+7f
+02
+12
+0e
+90
+e4
+33
+90
+1c
+0e
+f0
+7f
+03
+12
+0e
+90
+e4
+33
+ff
+90
+1c
+0e
+e0
+fe
+25
+e0
+4f
+ff
+90
+4e
+b2
+e0
+6f
+60
+64
+90
+4e
+b3
+e0
+a3
+f0
+90
+4e
+b2
+e0
+a3
+f0
+90
+4e
+b2
+ef
+f0
+fd
+a3
+e0
+75
+f0
+04
+a4
+fb
+aa
+f0
+ed
+75
+f0
+10
+a4
+ff
+e5
+f0
+4a
+fe
+ef
+4b
+ff
+a3
+e0
+fd
+ee
+ef
+4d
+ff
+90
+1c
+0c
+ee
+f0
+a3
+ef
+f0
+ee
+70
+2a
+ef
+24
+f5
+60
+19
+24
+d7
+60
+15
+24
+fc
+60
+04
+24
+31
+70
+19
+90
+4e
+b5
+e0
+14
+f0
+90
+4e
+a4
+74
+0a
+f0
+22
+90
+4e
+b5
+e0
+04
+f0
+90
+4e
+a4
+74
+0a
+f0
+22
+90
+1b
+fc
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+a3
+ed
+f0
+90
+4e
+9a
+e0
+ff
+64
+02
+60
+05
+ef
+64
+07
+70
+2e
+ef
+b4
+02
+10
+90
+1b
+fc
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+a3
+e0
+fd
+80
+1b
+90
+4e
+9a
+e0
+b4
+07
+11
+90
+1b
+fc
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+a3
+e0
+fd
+02
+17
+a5
+80
+fe
+22
+90
+1c
+23
+ed
+f0
+90
+1a
+96
+74
+03
+f0
+90
+1c
+23
+e0
+60
+39
+90
+49
+3a
+e0
+fe
+a3
+e0
+ff
+90
+49
+38
+e0
+b5
+06
+f1
+a3
+e0
+b5
+07
+ec
+90
+1c
+23
+e0
+fd
+90
+1a
+97
+f0
+7e
+1a
+7f
+98
+90
+1b
+e6
+ed
+f0
+12
+13
+4d
+7b
+01
+7a
+1a
+79
+96
+90
+1c
+23
+e0
+24
+02
+fd
+12
+07
+e3
+22
+90
+4e
+c8
+74
+01
+f0
+a3
+e0
+04
+f0
+e0
+30
+e0
+04
+a3
+74
+01
+f0
+22
+53
+89
+f0
+43
+89
+01
+75
+8c
+47
+e4
+f5
+8a
+f5
+a8
+d2
+af
+d2
+a9
+d2
+8c
+90
+1b
+c1
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+90
+1b
+bd
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+c2
+0b
+90
+1b
+c5
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+80
+b7
+c0
+e0
+c0
+f0
+c0
+83
+c0
+82
+c0
+d0
+75
+d0
+00
+c0
+00
+c0
+01
+c0
+02
+c0
+03
+c0
+04
+c0
+05
+c0
+06
+c0
+07
+75
+8c
+47
+75
+8a
+00
+31
+df
+d0
+07
+d0
+06
+d0
+05
+d0
+04
+d0
+03
+d0
+02
+d0
+01
+d0
+00
+d0
+d0
+d0
+82
+d0
+83
+d0
+f0
+d0
+e0
+32
+7b
+01
+7a
+4e
+79
+98
+7d
+38
+7c
+00
+51
+7f
+90
+4e
+ce
+74
+ff
+f0
+a3
+74
+38
+f0
+22
+90
+1c
+0f
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+ed
+1d
+ae
+04
+70
+01
+1c
+4e
+60
+16
+90
+1c
+0f
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+01
+a8
+a9
+f0
+fa
+e4
+12
+01
+4a
+80
+e0
+22
+7b
+01
+7a
+1b
+79
+ab
+78
+a4
+7c
+49
+7d
+01
+7e
+00
+7f
+12
+02
+00
+de
+90
+82
+80
+74
+01
+f0
+22
+90
+1b
+d2
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+1b
+d8
+74
+ff
+f5
+f0
+12
+01
+a8
+45
+f0
+60
+2a
+90
+1b
+d5
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+01
+a8
+a9
+f0
+fa
+12
+01
+04
+ff
+90
+1b
+d2
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+01
+a8
+a9
+f0
+fa
+ef
+12
+01
+4a
+80
+c8
+22
+90
+1c
+12
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+ed
+1d
+ae
+04
+70
+01
+1c
+4e
+60
+17
+90
+1c
+12
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+01
+a8
+a9
+f0
+fa
+74
+ff
+12
+01
+4a
+80
+df
+22
+ef
+d3
+94
+00
+40
+03
+1f
+80
+f7
+22
+90
+1b
+da
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+e4
+ff
+90
+1b
+e0
+e0
+fe
+ef
+c3
+9e
+50
+30
+90
+1b
+dd
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+8f
+82
+75
+83
+00
+12
+01
+1d
+fe
+90
+1b
+da
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+8f
+82
+75
+83
+00
+12
+01
+1d
+6e
+60
+03
+7f
+00
+22
+0f
+80
+c6
+7f
+01
+22
+7b
+01
+7a
+80
+79
+7c
+a2
+04
+92
+01
+02
+03
+cd
+ef
+54
+07
+fe
+ef
+13
+13
+13
+54
+03
+ff
+24
+a0
+f5
+82
+e4
+34
+00
+f5
+83
+c0
+83
+c0
+82
+e0
+fd
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+f4
+fc
+5d
+d0
+82
+d0
+83
+f0
+74
+a4
+2f
+f5
+82
+e4
+34
+00
+f5
+83
+e0
+5c
+f0
+22
+90
+80
+86
+74
+75
+f0
+a3
+74
+0a
+f0
+90
+80
+8a
+74
+18
+f0
+a3
+74
+02
+f0
+a3
+74
+1d
+f0
+a3
+74
+02
+f0
+90
+80
+77
+e0
+44
+02
+f0
+22
+90
+42
+d1
+e0
+fe
+a3
+e0
+ff
+22
+90
+4e
+71
+e0
+fe
+a3
+e0
+ff
+22
+90
+4e
+6f
+e0
+fe
+a3
+e0
+ff
+22
+90
+1c
+04
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+a3
+ed
+f0
+90
+49
+a0
+e0
+fe
+a3
+e0
+ff
+90
+1c
+07
+e0
+fd
+14
+f0
+ed
+60
+32
+0f
+ef
+ac
+06
+70
+01
+0e
+14
+f5
+82
+8c
+83
+e0
+fd
+90
+1c
+04
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+01
+a8
+a9
+f0
+fa
+ed
+12
+01
+4a
+ad
+07
+ac
+06
+bc
+49
+cd
+bd
+a0
+ca
+7e
+49
+7f
+3c
+80
+c4
+90
+49
+a0
+ee
+f0
+a3
+ef
+f0
+22
+7a
+1a
+79
+00
+90
+1c
+18
+74
+01
+f0
+a3
+74
+1a
+f0
+a3
+74
+00
+f0
+90
+49
+a2
+e0
+fe
+a3
+e0
+ff
+90
+49
+a0
+e0
+6e
+70
+03
+a3
+e0
+6f
+70
+02
+c1
+23
+7b
+01
+7a
+1a
+79
+00
+7d
+03
+91
+11
+90
+1c
+18
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+01
+04
+b4
+02
+2b
+90
+1c
+19
+e4
+75
+f0
+02
+12
+01
+92
+90
+1c
+18
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+01
+04
+ff
+90
+49
+a4
+e0
+a3
+e0
+fa
+a3
+e0
+f5
+82
+8a
+83
+12
+01
+e8
+c1
+23
+90
+1c
+18
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+01
+04
+64
+04
+70
+5b
+90
+1c
+19
+75
+f0
+01
+12
+01
+92
+90
+1c
+18
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+01
+04
+14
+fd
+7b
+01
+7a
+1a
+79
+03
+91
+11
+90
+1c
+18
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+c0
+02
+c0
+01
+90
+1c
+18
+e0
+a3
+e0
+fa
+a3
+e0
+f9
+12
+01
+04
+fd
+7c
+00
+90
+49
+a7
+e0
+a3
+e0
+fa
+a3
+e0
+f5
+82
+8a
+83
+d0
+01
+d0
+02
+12
+01
+e8
+c1
+23
+90
+1c
+18
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+01
+04
+64
+05
+70
+5b
+90
+1c
+19
+75
+f0
+01
+12
+01
+92
+90
+1c
+18
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+01
+04
+14
+fd
+7b
+01
+7a
+1a
+79
+03
+91
+11
+90
+1c
+18
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+c0
+02
+c0
+01
+90
+1c
+18
+e0
+a3
+e0
+fa
+a3
+e0
+f9
+12
+01
+04
+fd
+7c
+00
+90
+49
+b0
+e0
+a3
+e0
+fa
+a3
+e0
+f5
+82
+8a
+83
+d0
+01
+d0
+02
+12
+01
+e8
+80
+6f
+90
+1c
+18
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+01
+04
+64
+03
+70
+5b
+90
+1c
+19
+75
+f0
+01
+12
+01
+92
+90
+1c
+18
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+01
+04
+14
+fd
+7b
+01
+7a
+1a
+79
+03
+91
+11
+90
+1c
+18
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+c0
+02
+c0
+01
+90
+1c
+18
+e0
+a3
+e0
+fa
+a3
+e0
+f9
+12
+01
+04
+fd
+7c
+00
+90
+49
+b3
+e0
+a3
+e0
+fa
+a3
+e0
+f5
+82
+8a
+83
+d0
+01
+d0
+02
+12
+01
+e8
+80
+02
+80
+fe
+90
+4a
+0c
+e0
+fe
+a3
+e0
+ff
+90
+4a
+0e
+e0
+6e
+70
+03
+a3
+e0
+6f
+60
+21
+90
+49
+aa
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+4a
+60
+36
+12
+01
+e4
+90
+4a
+0f
+e0
+04
+f0
+70
+06
+90
+4a
+0e
+e0
+04
+f0
+80
+cb
+90
+4a
+10
+e0
+ff
+a3
+e0
+6f
+60
+19
+90
+49
+ad
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+4a
+60
+0b
+12
+01
+e4
+90
+4a
+11
+e0
+04
+f0
+80
+dd
+22
+90
+03
+f0
+e0
+ff
+22
+90
+0b
+2b
+74
+01
+f0
+e4
+90
+0b
+2a
+f0
+22
+e4
+ff
+12
+0e
+30
+7f
+06
+12
+0b
+24
+ef
+44
+08
+ff
+7d
+06
+12
+09
+0e
+90
+80
+81
+e4
+f0
+c2
+06
+7f
+19
+12
+03
+ac
+c2
+06
+7f
+1a
+02
+03
+ac
+d3
+ef
+94
+00
+ee
+64
+80
+94
+80
+50
+07
+c3
+e4
+9f
+ff
+e4
+9e
+fe
+22
+90
+1b
+c5
+e0
+fe
+a3
+e0
+ff
+d3
+94
+06
+ee
+64
+80
+94
+80
+50
+26
+c3
+ef
+94
+fa
+ee
+64
+80
+94
+7f
+40
+1b
+a3
+e0
+fe
+a3
+e0
+ff
+d3
+94
+06
+ee
+64
+80
+94
+80
+50
+0b
+c3
+ef
+94
+fa
+ee
+64
+80
+94
+7f
+50
+02
+d2
+0b
+90
+1b
+c5
+e0
+fe
+a3
+e0
+ff
+d1
+b4
+c3
+ef
+94
+03
+ee
+94
+00
+50
+13
+a3
+e0
+fe
+a3
+e0
+ff
+d1
+b4
+c3
+ef
+94
+03
+ee
+94
+00
+50
+02
+c2
+0b
+20
+0b
+02
+e1
+aa
+90
+1b
+bd
+e0
+fe
+a3
+e0
+ff
+c3
+90
+1b
+c2
+e0
+9f
+ff
+90
+1b
+c1
+e0
+9e
+fe
+90
+1b
+c6
+e0
+2f
+ff
+90
+1b
+c5
+e0
+3e
+fe
+90
+1b
+c1
+f0
+a3
+ef
+f0
+7c
+00
+7d
+02
+12
+01
+5c
+90
+1b
+bd
+ee
+f0
+a3
+ef
+f0
+90
+1b
+c5
+ee
+f0
+a3
+ef
+f0
+90
+1b
+bf
+e0
+fe
+a3
+e0
+ff
+c3
+90
+1b
+c4
+e0
+9f
+ff
+90
+1b
+c3
+e0
+9e
+fe
+90
+1b
+c8
+e0
+2f
+ff
+90
+1b
+c7
+e0
+3e
+fe
+90
+1b
+c3
+f0
+a3
+ef
+f0
+7c
+00
+7d
+02
+12
+01
+5c
+90
+1b
+bf
+ee
+f0
+a3
+ef
+f0
+90
+1b
+c7
+ee
+f0
+a3
+ef
+f0
+22
+fa
+01
+aa
+55
+40
+00
+00
+40
+58
+02
+00
+00
+60
+02
+00
+80
+00
+10
+01
+00
+00
+00
+00
+00
+00
+08
+00
+00
+80
+13
+f0
+00
+00
+01
+00
+00
+00
+00
+00
+00
+00
+00
+00
+08
+08
+80
+0e
+d0
+04
+20
+60
+41
+00
+00
+00
+00
+00
+00
+20
+00
+00
+40
+00
+00
+00
+01
+00
+00
+00
+00
+88
+03
+aa
+55
+03
+00
+4a
+41
+80
+25
+00
+aa
+55
+06
+00
+40
+41
+ab
+ab
+66
+63
+5d
+6c
+aa
+55
+10
+00
+ae
+45
+0f
+59
+43
+20
+53
+44
+4b
+20
+42
+54
+33
+2e
+30
+20
+4d
+53
+aa
+55
+03
+00
+84
+42
+0e
+00
+01
+aa
+55
+01
+00
+88
+42
+01
+aa
+55
+01
+00
+f3
+45
+0a
+aa
+55
+04
+00
+e2
+46
+00
+03
+00
+04
+aa
+55
+01
+00
+0d
+47
+01
+aa
+55
+01
+00
+71
+41
+01
+aa
+55
+0e
+00
+0f
+46
+06
+03
+11
+00
+00
+01
+02
+10
+24
+11
+00
+12
+01
+00
+aa
+55
+01
+00
+25
+46
+00
+aa
+55
+7a
+02
+16
+4a
+04
+00
+11
+01
+00
+10
+02
+11
+24
+00
+01
+00
+00
+36
+01
+61
+09
+00
+00
+0a
+00
+01
+00
+09
+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
+0c
+80
+09
+02
+0d
+28
+00
+09
+02
+0e
+28
+01
+04
+10
+02
+12
+00
+01
+00
+00
+01
+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
+0a
+5c
+09
+02
+02
+09
+00
+01
+09
+02
+03
+09
+01
+29
+09
+02
+04
+28
+01
+09
+02
+05
+09
+00
+02
+00
+00
+01
+00
+01
+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
+11
+01
+00
+03
+01
+00
+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
+aa
+55
+02
+00
+0d
+46
+16
+4a
+aa
+55
+01
+00
+32
+41
+43
+aa
+55
+01
+00
+fa
+41
+00
+aa
+55
+08
+00
+38
+41
+ff
+ff
+8f
+f8
+9b
+9d
+51
+82
+aa
+55
+01
+00
+d4
+08
+00
+aa
+55
+01
+00
+9f
+00
+00
+aa
+55
+01
+00
+d5
+08
+00
+aa
+55
+01
+00
+16
+00
+27
+aa
+55
+01
+00
+15
+47
+ff
+aa
+55
+01
+00
+0e
+47
+ff
+aa
+55
+01
+00
+31
+41
+01
+aa
+55
+02
+00
+12
+42
+00
+03
+aa
+55
+01
+00
+f6
+41
+08
+aa
+55
+02
+00
+f4
+41
+00
+02
+aa
+55
+01
+00
+33
+41
+00
+aa
+55
+02
+00
+08
+4a
+02
+01
+aa
+55
+02
+00
+cf
+42
+01
+34
+aa
+55
+04
+00
+6f
+4e
+9f
+3e
+cd
+4d
+aa
+55
+01
+00
+21
+45
+00
+aa
+55
+02
+00
+29
+45
+07
+00
+aa
+55
+01
+00
+96
+45
+50
+aa
+55
+01
+00
+f8
+44
+1a
+aa
+55
+06
+00
+3e
+45
+ab
+b9
+12
+0e
+10
+26
+aa
+55
+0e
+00
+40
+44
+0d
+59
+43
+20
+53
+44
+4b
+20
+42
+4c
+45
+20
+4d
+53
+aa
+55
+01
+00
+4c
+45
+17
+aa
+55
+01
+00
+20
+45
+00
+aa
+55
+07
+00
+22
+45
+01
+00
+00
+00
+00
+00
+00
+aa
+55
+1c
+00
+ff
+43
+00
+1f
+03
+19
+c2
+03
+03
+03
+12
+18
+02
+01
+05
+0e
+09
+59
+43
+20
+53
+44
+4b
+20
+42
+4c
+45
+20
+4d
+53
+aa
+55
+10
+00
+20
+44
+1f
+0e
+09
+59
+43
+20
+53
+44
+4b
+20
+42
+4c
+45
+20
+4d
+53
+aa
+55
+79
+01
+6e
+4c
+01
+00
+02
+00
+28
+02
+00
+18
+02
+00
+02
+03
+28
+01
+0a
+03
+00
+02
+00
+2a
+0d
+59
+43
+20
+53
+44
+4b
+20
+42
+4c
+45
+20
+4d
+53
+04
+00
+02
+03
+28
+01
+02
+05
+00
+02
+01
+2a
+02
+c2
+03
+06
+00
+02
+03
+28
+01
+02
+07
+00
+02
+04
+2a
+08
+06
+00
+06
+00
+64
+00
+2c
+01
+08
+00
+02
+00
+28
+02
+01
+18
+09
+00
+02
+03
+28
+01
+20
+0a
+00
+02
+05
+2a
+00
+0b
+00
+02
+02
+29
+02
+00
+00
+0c
+00
+02
+00
+28
+02
+0a
+18
+0d
+00
+02
+03
+28
+01
+02
+0e
+00
+02
+29
+2a
+06
+59
+69
+43
+68
+69
+70
+0f
+00
+02
+03
+28
+01
+02
+10
+00
+02
+50
+2a
+07
+02
+35
+12
+22
+aa
+01
+00
+11
+00
+02
+00
+28
+02
+0f
+18
+12
+00
+02
+03
+28
+01
+02
+13
+00
+02
+19
+2a
+01
+33
+14
+00
+02
+02
+29
+02
+00
+00
+15
+00
+02
+00
+28
+02
+12
+18
+16
+00
+02
+03
+28
+01
+06
+17
+00
+02
+4e
+2a
+01
+01
+18
+00
+02
+03
+28
+01
+1a
+19
+00
+02
+4d
+2a
+07
+00
+00
+00
+00
+00
+00
+00
+1a
+00
+02
+02
+29
+02
+00
+00
+1b
+00
+02
+08
+29
+02
+01
+01
+1c
+00
+02
+03
+28
+01
+0a
+1d
+00
+02
+4b
+2a
+45
+05
+01
+09
+02
+a1
+01
+85
+01
+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
+95
+01
+81
+06
+c0
+c0
+1e
+00
+02
+03
+28
+01
+1a
+1f
+00
+02
+33
+2a
+08
+00
+00
+00
+00
+00
+00
+00
+00
+20
+00
+02
+02
+29
+02
+01
+00
+21
+00
+02
+03
+28
+01
+02
+22
+00
+02
+4a
+2a
+04
+01
+01
+00
+03
+23
+00
+02
+03
+28
+01
+04
+24
+00
+02
+4c
+2a
+00
+00
+00
+aa
+55
+02
+00
+37
+46
+6e
+4c
+aa
+55
+01
+00
+76
+4e
+50
+aa
+55
+08
+00
+8d
+45
+07
+00
+07
+00
+00
+00
+2c
+01
+aa
+55
+01
+00
+4e
+4e
+03
+aa
+55
+01
+00
+80
+42
+04
+aa
+55
+02
+00
+7c
+4e
+19
+00
+aa
+55
+01
+00
+e2
+47
+04
+aa
+55
+06
+00
+25
+48
+20
+15
+10
+05
+00
+00
+aa
+55
+01
+00
+2d
+47
+19
+aa
+55
+02
+00
+b5
+47
+06
+0c
+aa
+55
+01
+00
+c1
+47
+ff
+aa
+55
+10
+00
+a5
+47
+00
+11
+23
+3c
+04
+1a
+27
+39
+08
+22
+35
+4b
+0f
+2d
+32
+4e
+aa
+55
+0a
+00
+4e
+0b
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+aa
+55
+09
+00
+2d
+48
+11
+00
+00
+00
+00
+00
+00
+00
+00
+aa
+55
+08
+00
+b8
+47
+00
+48
+60
+00
+00
+00
+00
+00
+aa
+55
+03
+00
+15
+42
+8f
+1f
+ce
+aa
+55
+04
+00
+19
+42
+0a
+0b
+ef
+0f
+aa
+55
+01
+00
+f7
+41
+00
+aa
+55
+08
+00
+a0
+00
+00
+00
+00
+00
+00
+00
+00
+00
+aa
+55
+02
+00
+5d
+41
+02
+24
+aa
+55
+08
+00
+4d
+41
+12
+00
+00
+02
+12
+00
+00
+02
+aa
+55
+02
+00
+5b
+41
+20
+00
+aa
+55
+04
+00
+57
+41
+20
+00
+00
+20
+aa
+55
+04
+00
+5f
+41
+80
+04
+00
+08
+aa
+55
+02
+00
+8e
+4e
+00
+40
+aa
+55
+05
+00
+a9
+45
+04
+0a
+00
+e9
+12
+aa
+55
+02
+00
+a8
+42
+30
+6f
+aa
+55
+01
+00
+b6
+42
+20
+aa
+55
+01
+00
+81
+42
+01
+aa
+55
+01
+00
+97
+4e
+ff
+aa
+55
+02
+00
+63
+41
+97
+4e
+d3
+39
Index: Standard_mouse/c51/global_variable.h
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/global_variable.h	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/global_variable.h	(working copy)
@@ -0,0 +1,134 @@
+#ifndef _GLOBAL_VARIABLE_H_
+#define _GLOBAL_VARIABLE_H_
+#include "sys.h"
+#include "type.h"
+
+
+typedef struct c51_global_variable
+{
+	u8_t modeSwitchCurrent;		// 4e7b + 0
+	u8_t modeSwitchLast;		// 1
+	u8_t currentState;			// 2
+	u8_t nextMode;				// 3
+	u8_t lastMode;				// 4
+	u8_t powerOnFlag;			// 5
+	u8_t lockLpm;				// 6
+	u8_t reconnFlag;			// 7
+	u8_t pageFlag;				// 8
+	u16_t sleepTimer;			// 9
+	u8_t buttonTimer;			// 11
+	u8_t wheelTimer;			// 12
+	u8_t powerOnTimer;			// 13
+	u8_t timer100msCount;		// 14
+	u8_t lKeyTemp;				// 15
+	u8_t lKey;					// 16
+	u8_t mKeyTemp;				// 17
+	u8_t mKey;					// 18
+	u8_t rKeyTemp;				// 19
+	u8_t rKey;					// 20
+	u8_t fwKeyTemp;				// 21
+	u8_t fwKey;					// 22
+	u8_t bkKeyTemp;				// 23
+	u8_t bkKey;					// 24
+	u8_t deltaKey;				// 25
+	u8_t wheelStateNow;			// 26
+	u8_t wheelStateBefore;		// 27
+	u8_t wheelStateLast;		// 28
+	u8_t deltaZWheel;			// 29
+	u8_t sensorType;			// 30
+	u8_t sensorAngle;			// 31
+	u8_t dpiCount;				// 32
+	u8_t dpiKeyTemp;			// 33
+	u8_t dpiLedFlipTime;		// 34
+	u8_t dpiLedStay;			// 35
+	u8_t dpiLedOnTimer;			// 36
+	u16_t adcCurrent;			// 37
+	u8_t adcLowPowerFlag;		// 39
+	u8_t g24DongleExist;		// 40
+	u8_t g24AutoPairFlag;		// 41	
+	u8_t g24TestMode;			// 42
+	u8_t btKeyTemp;				// 43
+	u8_t deviceKeytemp;			// 44
+	u8_t autoModeSelect;		// 45
+	u8_t ms4msFlag;				// 46
+	u8_t ms8msFlag;				// 47
+	u8_t debounceTrig;			// 48
+	u8_t modeSwCount;			// 49
+	u8_t keyDetect;				// 50
+	u8_t lowBatteryTimer;		// 51
+	u8_t lowBatteryStatus;		// 52
+	u8_t sensorChoice;			// 53
+	u8_t mouseFlag;				// 54
+	u8_t Factory_Pwr_on_f;		// 55
+
+	s16_t X_sum;				//56
+	s16_t Y_sum;				//58
+	s16_t X_pre;				//60
+	s16_t Y_pre;				//62
+	s16_t X_data;				//64
+	s16_t Y_data;				//66
+	u8_t asm_flag;				//68
+	
+	u8_t read_sensor_count;		//69
+	u8_t enterHibernateFlag;	//70
+	u8_t enterHibernateTimer;	//71
+
+	u16_t otaHeadAddr;			//72
+	u16_t otaLastAckPid;		//74
+	u8_t otaReqPacEnable;		//76
+	u8_t otaReqPacValue[7];		//77
+	u8_t otaExitFlag;			//84
+	u8_t otaExitCmdCount;		//85
+
+	u16_t leAddrRandomCnt;
+	
+	u8_t bufferEnd;				//86
+	u8_t bufferSize;			//87
+}G_VARIABLE_MAP;
+
+
+//static s16_t X_sum, Y_sum, X_pre, Y_pre;
+//static bool asm_flag;
+//s16_t X_data,Y_data;
+
+
+
+
+extern G_VARIABLE_MAP xdata g_variable;
+
+extern u8_t xdata m_hidBuff[32];
+extern u8_t xdata m_linkKey[16];
+extern u8_t xdata m_remoteAddr[6];
+extern u8_t xdata m_reconnAddr[6];
+extern u8_t xdata m_remoteLeAddr[6];
+extern u8_t xdata m_reconnLeAddr[6];
+extern u8_t xdata m_24gAddr[4];
+extern u8_t xdata m_24gRxPayload[32];
+extern u16_t xdata m_adcCurrentValue;
+extern u16_t xdata m_adc3vValue; 
+extern u16_t xdata m_adc0vBase;
+extern u16_t xdata m_uiStateMap;
+extern u8_t xdata m_lpmMode;
+extern u8_t xdata m_powerOnFlag;
+extern u8_t xdata m_IpcIsReady;
+extern u8_t xdata m_sendData24gShortLpm;
+extern u8_t xdata m_enable24gShortLpm;
+extern u8_t xdata m_bleSendDataFlag;
+extern u8_t xdata m_BtReadIpcCount;
+extern u8_t xdata m_51ReadSensor;
+extern u8_t xdata m_new24gKWEvent;
+extern u8_t xdata m_shortDataWheel;
+extern u8_t xdata m_bleDataWheel;
+extern u8_t xdata m_bleDataWheelLpmTimer;
+extern u8_t xdata m_btWakeupFromLongMult;
+extern u8_t xdata m_btMotionEvent;
+extern u8_t xdata m_new24gOtaEnable;
+extern u8_t xdata m_new24gIntMin;
+extern u8_t xdata m_new24gIntMax;
+extern u8_t xdata m_new24gAbortPac;
+extern u8_t xdata m_leStartAdv;
+extern u8_t xdata m_mouseFastConnFlag;
+extern u8_t xdata m_FastConnSendEmptyCount;
+#endif
+
+
Index: Standard_mouse/c51/global_variable.c
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/global_variable.c	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/global_variable.c	(working copy)
@@ -0,0 +1,41 @@
+#include "global_variable.h"
+#include "Btreg.h"
+
+G_VARIABLE_MAP xdata g_variable _at_ mem_32asm_data_end;
+
+volatile u16_t xdata m_uiStateMap _at_ mem_ui_state_map;
+volatile u8_t xdata m_lpmMode _at_ mem_lpm_mode;
+volatile u16_t xdata m_adc3vValue _at_ mem_adc_3v;
+volatile u16_t xdata m_adc0vBase _at_ mem_adc_0v;
+volatile u16_t xdata m_adcCurrentValue _at_ mem_adc_current_value;
+volatile u8_t xdata m_powerOnFlag _at_ mem_wakup_from_power_flag;
+volatile u8_t xdata m_IpcIsReady _at_ mem_ipc_is_ready;
+volatile u8_t xdata m_sendData24gShortLpm _at_ mem_send_data_24g_short_lpm;
+volatile u8_t xdata m_enable24gShortLpm _at_ mem_short_lpm_enable;
+volatile u8_t xdata m_bleSendDataFlag _at_ mem_le_switch_send_data;
+volatile u8_t xdata m_BtReadIpcCount _at_ mem_bt_read_ipc_count;
+volatile u8_t xdata m_51ReadSensor _at_ mem_51_read_sensor_count;
+volatile u8_t xdata m_new24gKWEvent _at_ mem_new_24g_key_wheel_event;
+volatile u8_t xdata m_shortDataWheel _at_ mem_short_data_wheel;
+volatile u8_t xdata m_bleDataWheel _at_ mem_ble_data_wheel;
+volatile u8_t xdata m_bleDataWheelLpmTimer _at_ mem_ble_data_wheel_lpm_timer;
+volatile u8_t xdata m_btWakeupFromLongMult _at_ mem_bt_wakeup_from_long_mult;
+volatile u8_t xdata m_btMotionEvent _at_ mem_bt_motion_event;
+volatile u8_t xdata m_new24gOtaEnable _at_ mem_new_24g_ota_enable;
+volatile u8_t xdata m_new24gIntMin _at_ mem_new_24g_interval_min;
+volatile u8_t xdata m_new24gIntMax _at_ mem_new_24g_interval_max;
+volatile u8_t xdata m_new24gAbortPac _at_ mem_new_24g_abort_pac;
+volatile u8_t xdata m_leStartAdv _at_ mem_le_start_adv;
+volatile u8_t xdata m_mouseFastConnFlag _at_ mem_le_mouse_fast_conn_flag;
+
+volatile u8_t xdata m_hidBuff[32] _at_ mem_hid_buff;
+volatile u8_t xdata m_linkKey[16] _at_ mem_link_key;
+volatile u8_t xdata m_remoteAddr[6] _at_ mem_plap;
+volatile u8_t xdata m_reconnAddr[6] _at_ mem_hci_plap;
+volatile u8_t xdata m_remoteLeAddr[6] _at_ mem_le_plap;
+volatile u8_t xdata m_reconnLeAddr[6] _at_ mem_le_lap;
+volatile u8_t xdata m_24gAddr[4] _at_ mem_new_24g_addr;
+volatile u8_t xdata m_24gRxPayload[32] _at_ mem_new_24g_rxpayload;
+volatile u8_t xdata m_FastConnSendEmptyCount;
+
+
Index: Standard_mouse/c51/gpio.h
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/gpio.h	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/gpio.h	(working copy)
@@ -0,0 +1,81 @@
+
+#ifndef _GPIO_H
+#define _GPIO_H
+#include "type.h"
+#include "Hwreg.h"
+
+extern volatile u8_t xdata YC_GPIOWakeupL[4];
+extern volatile u8_t xdata YC_GPIOWakeupH[4];
+
+#define GPIO_SetBit(gpio_num,reg_base, bit_val) if(bit_val)  \
+		*(reg_base + (gpio_num >> 3 & 3)) |= 1<<(gpio_num & 7);	\
+	else	\
+		*(reg_base + (gpio_num >> 3 & 3)) &= ~(1<<(gpio_num & 7))
+
+/**
+ * This function gpio get input status.0 low,1high
+ * 
+ * @param gpio_num
+ * 
+ * @return none.
+*/
+bool GPIO_GetInputStatus(u8_t gpio_num);
+/**
+ * This function set gpio out.
+ * 
+ * @param gpio_num,bit_val bit_val 0 low, 1high
+ * 
+ * @return none.
+*/
+void GPIO_Setout(u8_t gpio_num, bool bit_val);
+/**
+ * This function set gpio input
+ * 
+ * @param gpio_num,st 1 pull down ,0 pull up.
+ * 
+ * @return none.
+*/
+void GPIO_SetInput(u8_t gpio_num,bit  st);
+
+/**
+ * This function set gpio input
+ * 
+ * @param gpio_num,st 1 high ,0 low.
+ * 
+ * @return none.
+*/
+void GPIO_SetOutput(u8_t gpio_num,bit  st);
+/**
+ * This function set gpio wake.This function must use with GPIO_SetInput.
+ * 
+ * @param gpio_num, st 1 high wake,0 low wake.
+ * 
+ * @return none.
+*/
+void GPIO_SetWakeup(u8_t gpio_num,bit  st);
+
+/**
+ * This function set gpio wake by curent state for fast wake mcu.
+ * 
+ * @param gpio_num, st 1 high wake,0 low wake.
+ * 
+ * @return none.
+*/
+void GPIO_SetWakeupByCurrentState(u8_t gpio_num);
+
+/**
+ * This function Flip output state.
+ * 
+ * @param gpio_num.
+ * 
+ * @return none.
+*/
+void GPIO_FlipOutBit(u8_t gpio_num);
+
+
+void GPIO_ClearWakeup(u8_t gpio_num);
+
+
+#endif /* YC_GPIO_H */
+
+
Index: Standard_mouse/c51/gpio.c
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/gpio.c	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/gpio.c	(working copy)
@@ -0,0 +1,109 @@
+#include "gpio.h"
+#include "Hwreg.h"
+#include "btreg.h"
+
+volatile u8_t xdata YC_GPIOWakeupL[4] _at_ mem_gpio_wakeup_low;
+volatile u8_t xdata YC_GPIOWakeupH[4] _at_ mem_gpio_wakeup_high;
+
+static void gpioSetBit(u8_t gpio_num, char *reg_base, bool bit_val)
+{
+	u8_t queue = 0;
+	u8_t group = 0;
+
+	queue = (gpio_num & 7);
+	group = gpio_num >> 3 & 3;
+
+	if(bit_val) {
+		*(reg_base + group) |= 1<<queue;
+	}
+	else {
+		*(reg_base + group) &= ~(1<<queue);
+	}
+}
+
+static bool gpioGetBit(u8_t gpio_num, char *reg_base)
+{
+	u8_t queue = 0;
+	u8_t group = 0;
+
+	queue = (gpio_num & 7);
+	group = gpio_num >> 3 & 3;
+	return (*(reg_base + group)&(1<<queue));
+	
+}
+
+bool GPIO_GetInputStatus(u8_t gpio_num)
+{
+	return gpioGetBit(gpio_num, &REG_GPIO_IN(0));
+}
+
+void GPIO_Setout(u8_t gpio_num, bool bit_val)
+{
+	gpioSetBit(gpio_num, &REG_GPIO_OUT(0), bit_val);	
+}
+
+void GPIO_SetPu(u8_t gpio_num, bool bit_val)
+{
+	gpioSetBit(gpio_num, &REG_GPIO_PUP(0), bit_val);	
+}
+
+void GPIO_SetPd(u8_t gpio_num, bool bit_val)
+{
+	gpioSetBit(gpio_num, &REG_GPIO_PDN(0), bit_val);	
+}
+
+void GPIO_Setoe(u8_t gpio_num, bool bit_val)
+{
+	gpioSetBit(gpio_num, &REG_GPIO_OE(0), bit_val);	
+}
+
+void GPIO_SetInput(u8_t gpio_num, bit  st)
+{
+	GPIO_SetPd(gpio_num,st);
+	GPIO_SetPu(gpio_num,~st);
+	GPIO_Setoe(gpio_num,0);
+}
+
+void GPIO_SetOutput(u8_t gpio_num, bit  st)
+{
+	GPIO_Setoe(gpio_num,1);
+	GPIO_Setout(gpio_num,st);
+	GPIO_SetPu(gpio_num,0);
+}
+
+void GPIO_SetWakeup(u8_t gpio_num, bit  st)
+{
+	u8_t queue, group;
+	queue = (gpio_num & 7);
+	group = (gpio_num>>3 & 3);
+	if (st){
+		*(YC_GPIOWakeupL+group) &= ~(1<<queue);
+		*(YC_GPIOWakeupH+group) |= 1<<queue;	//high wakeup
+	}
+	else{
+		*(YC_GPIOWakeupL+group) |= 1<<queue;	//low wakeup
+		*(YC_GPIOWakeupH+group) &= ~(1<<queue);
+	}
+}
+
+void GPIO_ClearWakeup(u8_t gpio_num)
+{
+	u8_t queue, group;
+	queue = (gpio_num & 7);
+	group = (gpio_num>>3 & 3);
+	*(YC_GPIOWakeupL+group) &= ~(1<<queue);
+	*(YC_GPIOWakeupH+group) &= ~(1<<queue);
+}
+
+void GPIO_SetWakeupByCurrentState(u8_t gpio_num)
+{
+	bool st = GPIO_GetInputStatus(gpio_num);
+	GPIO_SetWakeup(gpio_num, ~st);
+}
+
+void GPIO_FlipOutBit(u8_t gpio_num)
+{
+	bool st = gpioGetBit(gpio_num, &REG_GPIO_OUT(0));
+	GPIO_Setout(gpio_num, ~st);
+}
+
Index: Standard_mouse/c51/hwreg.h
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/hwreg.h	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/hwreg.h	(working copy)
@@ -0,0 +1,200 @@
+#ifndef _HWREG_H_
+#define _HWREG_H_
+
+
+#define HWRITED(reg, dword)	do{HWRITE(reg, (dword) & 0xff); \
+							HWRITE(reg + 1, (dword) >> 8 & 0xff); \
+							HWRITE(reg + 2, (dword) >> 16 & 0xff); \
+							HWRITE(reg + 3, (dword) >> 24 & 0xff); \
+							}while(0)
+
+#define HREADD(reg)			((u32_t)HREAD(reg)  | (u32_t)HREAD(reg + 1) << 8 | (u32_t)HREAD(reg + 2) << 16 | (u32_t)HREAD(reg + 3) << 24)
+
+#define ESWAP(word)			((word) >> 8 & 0xff | (word) << 8 & 0xff00)
+#define min(x,y) 				((x) < (y) ? (x) : (y))
+#define HREADW(reg)			(*((volatile unsigned int xdata *)(reg)))
+#define HWRITEW(mem, word)	HREADW(mem) = ESWAP(word)
+#define HREADWS(reg)			ESWAP(HREADW(reg))
+
+#define HREAD(reg)			(*(volatile unsigned char xdata *)(reg))
+#define HWRITE(reg, value)		*((volatile unsigned char xdata *)(reg)) = value
+
+#define SETBIT(reg, value)		HWRITE(reg,( (HREAD(reg)) | (value)))
+#define CLRBIT(reg, value)		HWRITE(reg, (HREAD(reg) & (~(value))))
+#define READBIT(reg, value)		((HREAD(reg)) & (value))
+#define BIT(x)					(1 << (x))
+
+
+#define PWM_EN			0x8084
+
+#define GPIO_OE(X)                0x8070 + X
+#define GPIO_OUT(X)                0x8074 + X
+#define GPIO_PUP(X)                0x8078 + X
+#define GPIO_PDN(X)                0x807c + X
+#define GPIO_SEL(X)            0x8080 + X
+#define GPIO_KEY(X)            0x8083 + X
+
+#define GPIO_IN(X)                  0x811c + X
+
+
+#define PWM_PCOUNT(X) (0x80a0 + X*4)
+#define PWM_NCOUNT(X) (0x80a2 + X*4)
+
+#define CLOCK_SEL			0x8044
+#define CLOCK_SEL_12M		9
+
+#define LPM_EXENOE		0x813e
+
+// math cordic
+#define CORDIC_TYPE    	0x8053
+#define CORDIC_A     		0x80a8
+#define CORDIC_B     		0x80ac
+#define PERF_STATUS		0x812d
+#define CORDIC_RESULT     	0x8120
+
+#define YC_TYPE_SIN		0
+#define YC_TYPE_ATAN	1
+#define YC_TYPE_MULT	2
+#define YC_TYPE_DIV		3
+#define YC_TYPE_ASIN	         4
+#define YC_TYPE_SQRT	5
+#define YC_TYPE_COS		6
+#define YC_TYPE_TAN		7
+
+// DMA UART
+#define UART_BAUD     0x8052
+#define UART_RSADDR   0x8054
+#define UART_READDR   0x8056 
+#define UART_RRPTR    0x8058
+#define UART_TSADDR   0x805a 
+#define UART_TEADDR   0x805c 
+#define UART_TWPTR    0x805e
+#define UART_TRPTRP   0x8060 
+#define UART_CTRL     0x8062 
+#define CLKN		0x8100
+
+#define UART_STATUS  0x810c
+#define UART_RBAUD   0x810d 
+#define UART_TXITEMS 0x810e 
+#define UART_TRPTR   0x8110 
+#define UART_RXITEMS 0x8112 
+#define UART_RDPTR   0x8114 
+#define UART_RWPTR   0x8116 
+
+#define KSCN_KSCTRL                 	0x8063
+#define KSCN_RCTC                    	0x8064
+#define KSCN_ROW_MASK                	0x806f
+
+#define KSCN_EVENT_BUF           	0x811a
+#define KSCN_EVENT_NUM           	0x811b
+
+
+#define CPUB_ICE_CTRL	(*(volatile unsigned char xdata *)(0x8280))
+
+#define CPUB_ICE_BK0_LO	(*(volatile unsigned char xdata *)(0x8205))
+#define CPUB_ICE_BK0_HI	(*(volatile unsigned char xdata *)(0x8206))
+
+#define IIC_ADDR_START		0x8300
+#define IIC_PRER_LOW			0x8300
+#define IIC_SLAVE_ADDR		0x8301
+#define IIC_CTR				0x8302
+#define IIC_CR				0x8303
+#define IIC_RXR				0x8304
+#define IIC_TXR				0x8305
+#define IIC_SR				0x8306
+#define IIC_FIFO				0x8307
+
+#define USB_CONFIG		0x8c00
+#define USB_INT_MASK(x)	(0x8c01 + x)
+#define USB_TRG			0x8c10
+#define USB_STALL		0x8c11
+#define USB_CLEAR		0x8c12
+#define USB_EP(x)			(0x8c18 + x)
+#define USB_EP_LEN(x)		(0x8c20 + x)
+
+
+#define USB_STATUS		0x8c26
+#define USB_FIFO_EMPTY	0x8c27
+
+sfr DFIFO0     = 0x94;
+sfr DFIFO1     = 0x95;
+sfr DFIFO2     = 0x96;
+
+
+#define PWM_CLOCK           5 
+#define REG_CLK_OFF(n)		(*(volatile unsigned char xdata *)(0x8050 + n))
+
+#define REG_PWM_ENABLE   	(*(volatile unsigned char xdata *)0x8085)
+#define REG_PWM_CLK_SEL 	(*(volatile unsigned char xdata *)0x8042)
+#define REG_PWM_PCOUNT(n) 	(*(volatile unsigned char xdata *)(0x80a0 + n*4))
+#define REG_PWM_NCOUNT(n) 	(*(volatile unsigned char xdata *)(0x80a2 + n*4))
+
+
+#define REG_UART_CLK_SEL	(*(volatile unsigned char xdata *)0x8043)
+#define REG_UART_BAUD		(*(volatile unsigned short xdata *)0x8052)
+#define REG_UART_BAUD_HI		(*(volatile unsigned char xdata *)0x8053)
+#define REG_UART_RX_ADDR_S	(*(volatile unsigned short xdata *)0x8054)
+#define REG_UART_RX_ADDR_E 	(*(volatile unsigned short xdata *)0x8056)
+#define REG_UART_RX_PTR_R	(*(volatile unsigned short xdata *)0x8058)
+#define REG_UART_TX_ADDR_S	(*(volatile unsigned short xdata *)0x805a)
+#define REG_UART_TX_ADDR_E	(*(volatile unsigned short xdata *)0x805c)
+#define REG_UART_TX_PTR_W	(*(volatile unsigned short xdata *)0x805e)
+#define REG_UART_TX_PTRP_R	(*(volatile unsigned short xdata *)0x8060)
+#define REG_UART_CTRL		(*(volatile unsigned char xdata *)0x8062)
+
+//read only
+#define REG_UART_STATUS		(*(volatile unsigned char xdata *)0x810c)
+#define REG_UART_DET_BAUD	(*(volatile unsigned char xdata *)0x810d)
+#define REG_UART_TX_ITEMS	(*(volatile unsigned short xdata *)0x810e)
+#define REG_UART_TX_PTR_R	(*(volatile unsigned short xdata *)0x8110)
+#define REG_UART_RX_ITEMS	(*(volatile unsigned short xdata *)0x8112)
+#define REG_UART_RX_DPTR_R	(*(volatile unsigned short xdata *)0x8114)
+#define REG_UART_RX_PTR_W	(*(volatile unsigned short xdata *)0x8116)
+
+#define REG_GPIO_SELECT(n)	(*(volatile unsigned char xdata *)(0x8080 + n))
+
+#define REG_GPIO_OE(n) 	(*(volatile unsigned char xdata *)(0x8070 + n))
+#define REG_GPIO_OUT(n)	(*(volatile unsigned char xdata *)(0x8074 + n))
+#define REG_GPIO_PUP(n) 	(*(volatile unsigned char xdata *)(0x8078 + n))
+#define REG_GPIO_PDN(n)	(*(volatile unsigned char xdata *)(0x807c + n))
+#define REG_GPIO_SEL(n) 	(*(volatile unsigned char xdata *)(0x8080 + n))
+#define REG_GPIO_KEY(n) 	(*(volatile unsigned char xdata *)(0x8083 + n))
+
+#define REG_GPIO_IN(n)	(*(volatile unsigned char xdata *)(0x811c + n))	//n=0,1,2,3
+
+#define REG_MISC_CTRL			(*(volatile unsigned char xdata *)(0x8006))
+
+
+#define REG_SPID_CTRL  			(*(volatile unsigned char xdata *)(0x8086))
+#define REG_SPID_DELAY  		(*(volatile unsigned char xdata *)(0x8087))
+#define REG_SPID_TXADDR			(*(volatile unsigned short xdata *)(0x808a))
+#define REG_SPID_RXADDR			(*(volatile unsigned short xdata *)(0x808c))
+#define REG_SPID_TXLEN			(*(volatile unsigned short xdata *)(0x8088))
+#define REG_SPID_RXLEN			(*(volatile unsigned short xdata *)(0x808e))
+
+#define REG_IICD_CTRL			(*(volatile unsigned char xdata *)(0x8090))
+#define REG_IICD_SCL_LOW		(*(volatile unsigned char xdata *)(0x8091))
+#define REG_IICD_SCL_HIGH		(*(volatile unsigned char xdata *)(0x8092))
+#define REG_IICD_START_SETUP		(*(volatile unsigned char xdata *)(0x8093))
+#define REG_IICD_START_HOLD		(*(volatile unsigned char xdata *)(0x8094))
+#define REG_IICD_STOP_SETUP		(*(volatile unsigned char xdata *)(0x8095))
+#define REG_IICD_DATA_SETUP		(*(volatile unsigned char xdata *)(0x8096))
+#define REG_IICD_DATA_HOLD		(*(volatile unsigned char xdata *)(0x8097))
+#define REG_IICD_TXLEN			(*(volatile unsigned short xdata *)(0x8098))
+#define REG_IICD_TXADDR			(*(volatile unsigned short xdata *)(0x809a))
+#define REG_IICD_RXADDR			(*(volatile unsigned short xdata *)(0x809c))
+#define REG_IICD_RXLEN			(*(volatile unsigned short xdata *)(0x809e))
+#define REG_CLKN					(*(volatile unsigned long xdata *)(0x8100))
+#define REG_DMA_STATUS			(*(volatile unsigned char xdata *)(0x812c))
+
+#define REG_RFEN_ADC			(*(volatile unsigned char xdata *)(0x8906))
+#define REG_ADC_IN				(*(volatile unsigned short xdata *)(0x812e))
+#define REG_RF_ADC_GC			(*(volatile unsigned char xdata *)(0x8972))
+#define REG_RFEN_CHGPUMP		(*(volatile unsigned char xdata *)(0x8973))
+#define REG_RF_ADC_MODE		(*(volatile unsigned char xdata *)(0x8971))
+#define CORE_ADC_SUM		(*(volatile unsigned short xdata *)(0x8150))
+#define REG_RST			(*(volatile unsigned char xdata *)(0x8010))
+#define REG_Counter		(*(volatile unsigned char xdata *)(0x8100))
+
+
+#endif
Index: Standard_mouse/c51/iic.h
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/iic.h	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/iic.h	(working copy)
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2016, yichip Semiconductor(shenzhen office)
+ * All Rights Reserved.
+ *
+ * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Yichip Semiconductor;
+ * the contents of this file may not be disclosed to third parties, copied
+ * or duplicated in any form, in whole or in part, without the prior
+ * written permission of Yichip Semiconductor.
+ */
+ 
+ /** @file
+ *
+ * IIC support for application
+ */
+#ifndef __DEV_EEP_H_
+#define __DEV_EEP_H_
+#include "type.h"
+#include "btreg.h"
+#include "hwreg.h"
+
+/**
+ * This function read data by IIC,Warning:pbuff can't not piont to address > 0x4000.
+ * 
+ * @param addr IIC address ,len length to read,pbuff pointer to restore data
+ * 
+ * @return none.
+*/
+void IIC_Read(u16_t addr, u16_t len, u8_t* pbuff);
+/**
+ * This function write data by IIC,Warning:pbuff can't not piont to address > 0x4000.
+ * 
+ * @param addr IIC address ,len length to write,pbuff pointer to store data
+ * 
+ * @return none.
+*/
+void IIC_write(u16_t addr,u16_t len, u8_t* pbuff);
+/**
+ * This function write data by IIC,can't ignore page of block device,Warning:pbuff can't not piont to address > 0x4000.
+ * 
+ * @param addr IIC address ,len length to read,pbuff pointer to store data
+ * 
+ * @return none.
+*/
+void IIC_WriteBlock(u16_t addr, u16_t len, u8_t* pbuff);
+#endif/* YC_IIC_H */
+
Index: Standard_mouse/c51/iic.c
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/iic.c	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/iic.c	(working copy)
@@ -0,0 +1,66 @@
+#include "iic.h"
+#include "utilities.h"
+#define EEP_PAZE_SIZE  16
+#define EEP_DEV_ADDR	(0 << 1) & 6
+#define IIC_TEMP_BUFF_LEN 100
+
+static volatile u8_t IIC_TempBuff[IIC_TEMP_BUFF_LEN];
+static volatile u8_t YC_IICDTbuf[4];
+
+static void IIcWaitDone(void)
+{
+	while(!(REG_DMA_STATUS&(1<<5)));
+}
+
+void IIC_Read(u16_t addr, u16_t len, u8_t* pbuff)
+{
+	u16_t mem_src =  addr;
+	REG_IICD_TXLEN = ESWAP(4);
+	YC_IICDTbuf[0] = 0xa0 |EEP_DEV_ADDR;
+	*(u16_t*)(YC_IICDTbuf+1) = mem_src;
+	YC_IICDTbuf[3] = 0xa1 | EEP_DEV_ADDR;
+	REG_IICD_TXADDR = ESWAP((u16_t)&YC_IICDTbuf);
+	REG_IICD_RXLEN = ESWAP(len);
+	REG_IICD_RXADDR = ESWAP((u16_t)IIC_TempBuff);
+	REG_IICD_CTRL = 2;
+	if(!(REG_IICD_RXADDR&(1<<7)))
+	{
+		REG_IICD_CTRL |= 1;
+	}
+	REG_MISC_CTRL |= 1 << 2;	//start iic dma
+	IIcWaitDone();	
+	xmemcpy(pbuff,IIC_TempBuff,len);
+}
+
+void IIC_write(u16_t addr,u16_t len, u8_t* pbuff)
+{
+	u8_t ptemp_addr[EEP_PAZE_SIZE+3];
+	xmemcpy(ptemp_addr+3, pbuff, len);
+	ptemp_addr[0] = 0xa0;
+	(u16_t)ptemp_addr[1] = addr;
+	REG_IICD_TXLEN = ESWAP(len+3);
+	REG_IICD_TXADDR = ESWAP((u16_t)ptemp_addr);
+	REG_IICD_RXLEN = 0;
+	REG_IICD_CTRL = 1;
+	
+	REG_MISC_CTRL |= 1 << 2;	//start iic dma
+	IIcWaitDone();
+}
+
+void IIC_WriteBlock(u16_t addr, u16_t len, u8_t* pbuff)
+{
+	u16_t cris,curr_len;
+	while (len)
+	{
+		cris = (addr|(EEP_PAZE_SIZE-1)) +1;
+		curr_len = cris - addr;
+		curr_len = min(curr_len,len);
+		len -= curr_len;
+		IIC_write(addr,curr_len,pbuff);
+		Delay1ms(10);
+		pbuff += curr_len;
+		addr += curr_len;
+	};
+	
+}
+
Index: Standard_mouse/c51/ipc.h
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/ipc.h	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/ipc.h	(working copy)
@@ -0,0 +1,257 @@
+/*
+ * Copyright 2016, yichip Semiconductor(shenzhen office)
+ * All Rights Reserved.
+ *
+ * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Yichip Semiconductor;
+ * the contents of this file may not be disclosed to third parties, copied
+ * or duplicated in any form, in whole or in part, without the prior
+ * written permission of Yichip Semiconductor.
+ */
+ 
+ /** @file
+ *
+ * ipc support for application
+ */
+#ifndef _YC_IPC_H_
+#define _YC_IPC_H_
+#include "type.h"
+
+#define BUG_FIX
+#ifdef BUG_FIX
+#define FIX_ENTER_LPM	0x01
+#define FIX_ENTER_HIBERNATE	0x03
+
+#endif
+
+/* IPC tx hardware address */
+#define IPC_TX_HEAD	mem_ipc_2bt_fifo_head
+#define IPC_TX_END	mem_ipc_2bt_fifo_end
+#define IPC_TX_WRITE_PTR	mem_ipc_2bt_write_index
+#define IPC_TX_READ_PTR		mem_ipc_2bt_read_index
+
+/*IPC rx hardware address*/
+#define IPC_RX_HEAD	mem_ipc_2C51_fifo_head
+#define IPC_RX_END	mem_ipc_2C51_fifo_end
+#define IPC_RX_WRITE_PTR	mem_ipc_2C51_write_index
+#define IPC_RX_READ_PTR		mem_ipc_2C51_read_index
+
+/*IPC c51 private area*/
+#define IPC_CONTROL_BLOCK	mem_c51_private_area
+
+/*IPC data type*/
+#define IPC_CONTROL_CMD			0x01
+#define IPC_CONTROL_EVT			0x02
+#define IPC_HID_DATA			0x03
+#define IPC_SPP_DATA			0x04
+#define IPC_BLE_DATA			0x05
+#define IPC_24G_DATA			0x06
+
+/*IPC cmd type*/
+#define IPC_CMD_START_DISCOVERY 			0x01
+#define IPC_CMD_STOP_DISCOVERY				0x02
+#define IPC_CMD_RECONNECT 					0x03
+#define IPC_CMD_DISCONNECT 					0x04
+#define IPC_CMD_ENTER_SNIFF					0x05
+#define IPC_CMD_EXIT_SNIFF					0x06
+#define IPC_CMD_SET_PIN_CODE 				0x0a
+#define IPC_CMD_START_INQUIRY 				0x0b
+#define IPC_CMD_STOP_INQUIRY 				0x0c
+#define IPC_CMD_START_ADV					0x0d
+#define IPC_CMD_STOP_ADV					0x0e
+#define IPC_CMD_LE_DISCONNECT				0x11
+#define IPC_CMD_ENTER_HIBERNATE 			0x19
+#define IPC_CMD_ROLE_SWITCH 				0x1d
+#define IPC_CMD_BB_RECONN_CANCEL 			0x1e
+#define IPC_CMD_UPDATE_SUPPERVISION_TO		0x22
+#define IPC_CMD_START_24G					0x23
+#define IPC_CMD_STOP_24G					0x24
+#define IPC_CMD_PAIR_24G					0x25
+#define IPC_CMD_TEST_MODE 					0x26
+#define IPC_CMD_START_ADV_RECONN			0x27
+
+ 	
+/*IPC event type*/
+#define IPC_EVT_NULL						0x00
+#define IPC_EVT_BB_CONNECTED				0x01
+#define IPC_EVT_BB_DISCONNECTED				0x02
+#define IPC_EVT_RECONN_STARTED				0x03
+#define IPC_EVT_RECONN_FAILED				0x04
+#define IPC_EVT_SETUP_COMPLETE				0x05
+#define IPC_EVT_HID_CONNECTED				0x06
+#define IPC_EVT_HID_DISCONNECTED			0x07
+#define IPC_EVT_PINCODE_REQ					0x0a
+#define IPC_EVT_HID_HANDSHAKE				0x12
+#define IPC_EVT_RECONN_PAGE_TIMEOUT			0x13
+#define IPC_EVT_LE_CONNECTED				0x14
+#define IPC_EVT_LE_DISCONNECTED				0x15
+#define IPC_EVT_LINKKEY_GENERATE			0x18
+#define IPC_EVT_VIRTUAL_CABLE_UNPLUG		0x27
+#define IPC_EVT_LE_ENC_INFO					0x29
+#define IPC_EVT_SWITCH_FAIL_MASTER 			0x2a
+#define IPC_EVT_RESET						0x2f
+#define IPC_EVT_LE_START_ENC				0x32
+#define IPC_EVT_24G_PAIRING_COMPLETE		0x39
+#define IPC_EVT_24G_ATTEMPT_SUCCESS			0x3a
+#define IPC_EVT_24G_ATTEMPT_FAIL			0x3b
+#define IPC_EVT_WAKEUP						0x3c
+#define IPC_EVT_HIBERNATE_WAKE				0x3d
+#define IPC_EVT_CLEAR_LINKKEY				0x3e
+#define IPC_EVT_LE_NOTIFY_ENABLE			0x40
+
+
+/*IPC EVT callback function type*/
+typedef void (*tIPCEventCb)(u8_t);
+
+/*IPC SPP callback function type*/
+typedef void (*tIPCSppCb)(u8_t*, u16_t);
+
+/*IPC BLE callback function type*/
+typedef void (*tIPCBleCb)(u8_t*, u16_t);
+
+/*IPC timer(1s) callback function type*/
+typedef void (*tIPCTimer)(void);
+
+/*IPC Hid callback function type*/
+typedef void (*tIPCHidCb)(u8_t*, u16_t);
+
+/*IPC control block type*/
+typedef struct IPCContolBlock {
+	tIPCEventCb evtcb;		/*<ipc evt call back*/
+	tIPCSppCb sppcb;		/*<ipc spp call back*/
+	tIPCTimer timercb;		/*<ipc timer call back*/
+	tIPCTimer stimercb;
+	tIPCBleCb blecb;
+	tIPCHidCb hidcb;
+}tIPCControlBlock;
+
+
+typedef enum IPCRejReason{
+	AUTHENTICATION_FAILURE_ERROR = 0x05,
+	KEY_MISSING = 0x06,
+	ACL_CONNECTION_ALREADY_EXISTS = 0x0b,
+	OTHER_END_TERMINATED = 0x13,
+	ABOUT_TO_POEWR_OFF = 0x15,
+	LOCAL_HOST= 0x16,
+	PAIRING_NOT_ALLOWED = 0x18,
+	UNKNOWN_LMP_PDU = 0x19,
+	UNSUPPORTED_LMP_FEATURE = 0x1A,
+	UNSPECIFIED_ERROR = 0x1F,
+	UNSUPPORTED_PARAMETERS = 0x20,
+	SWITCH_NOT_ALLOWED = 0x21,
+	TRANSACTION_COLLISION = 0x23,
+	PDU_NOT_ALLOWED = 0x24,
+	ENCRYPTION_MODE_NOT_ACCEPTABLE = 0x25,
+	NOT_SUPPORT_CHN_CLASSIFICATION = 0x2e,
+	NOT_SUPPORT_SSP = 0x37,
+}tIPCREJREASON;
+
+/*IPC syc task type*/
+extern volatile u8_t current_task;
+
+#define BT_PIN_CODE_MAX_LEN 16
+extern u8_t xdata ipcPinlen;
+extern u8_t xdata ipcPin[BT_PIN_CODE_MAX_LEN];
+
+/*IPC set pincode*/
+#define IPC_SetPincode(p,l)	ipcPinlen= l,\
+							xmemcpy(ipcPin, p, ipcPinlen)
+
+/**
+ * This function rigist IPC Control Block.
+ * 
+ * @param cb the IPC control block.
+ * 
+ * @return none.
+*/
+void IPC_Initialize(tIPCControlBlock *cb);
+
+/**
+ * This function deal IPC Single process, callback the rigisted IPC control function.
+ * 
+ * @param none.
+ * 
+ * @return none.
+*/
+void IPC_DealSingleStep(void);
+
+/**
+ * This function tx control IPC command.
+ * 
+ * @param cmd IPC command want to send.
+ * 
+ * @return none.
+*/
+void IPC_TxControlCmd(u8_t cmd);
+/**
+ * This function tx HID IPC command,Cpu will block when TxBuffer is not Empty.
+ * 
+ * @param dt IPC HID data want to send,len length of hid data
+ * 
+ * @return none.
+*/
+void IPC_TxBREDRHidData(u8_t* dt, u8_t len);
+
+/**
+ * This function tx 24G IPC command,Cpu will block when TxBuffer is not Empty.
+ * 
+ * @param dt IPC HID data want to send,len length of hid data
+ * 
+ * @return none.
+*/
+void IPC_Tx24GData(u8_t* dt, u8_t len);
+
+/**
+ * This function tx SPP IPC command,Cpu will block when TxBuffer is not Empty.
+ * 
+ * @param dt IPC SPP data want to send,len length of SPP data
+ * 
+ * @return none.
+*/
+void IPC_TxSppData(u8_t* dt, u8_t len);
+
+/**
+ * This function tx BLE IPC command,Cpu will block when TxBuffer is not Empty.
+ * 
+ * @param dt IPC BLE data want to send,len length of BLE data
+ * 
+ * @return none.
+*/
+void IPC_TxBleData(u8_t* dt, u8_t len);
+
+/**
+ * This function will do nothing wait enter lpm.
+ * 
+ * @param none.
+ * 
+ * @return none.
+*/
+void IPC_WaitLpm(void);
+
+/**
+ * This function will do nothing abandon lpm this time.
+ * 
+ * @param none.
+ * 
+ * @return none.
+*/
+void IPC_AbandonLpm(void);
+
+/**
+ * This function will do nothing wait enter lpm.
+ * 
+ * @param none.
+ * 
+ * @return none.
+*/
+bit IPC_IsTxBuffEmpty(void);
+
+/**
+ * This function get reject reason.
+ * 
+ * @param none.
+ * 
+ * @return none.
+*/
+tIPCREJREASON IPC_GetBBDIsconnectReason();
+
+#endif /* YC_IPC_H */
Index: Standard_mouse/c51/ipc.c
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/ipc.c	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/ipc.c	(working copy)
@@ -0,0 +1,191 @@
+/*
+ * Copyright 2016, Yichip Semiconductor(shenzhen office)
+ * All Rights Reserved.
+ *
+ * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Yichip Semiconductor;
+ * the contents of this file may not be disclosed to third parties, copied
+ * or duplicated in any form, in whole or in part, without the prior
+ * written permission of Yichip Semiconductor.
+ */
+
+/** @file
+ *
+ * IPC Application for c51 devices
+ *
+ */
+ 
+#include "ipc.h"
+#include "utilities.h"
+
+#define IPC_READ_BUFF_LEN	150
+#define IPC_TX_BUFF_LEN		150
+#define IPC_HEAD_LEN 3
+#define IPC_CMD_LEN 3
+#define IPC_HID_LEN 10
+
+static const volatile u16_t ipcTxReadPtr _at_ IPC_TX_READ_PTR;	/*< read only*/
+static const  volatile u16_t ipcRxWritePtr _at_ IPC_RX_WRITE_PTR;	/*< read only*/
+static volatile u16_t ipcTxWritePtr _at_ IPC_TX_WRITE_PTR;	/*<read and wite */
+static volatile u16_t ipcRxReadPtr _at_ IPC_RX_READ_PTR;	/*<read and write */
+static tIPCControlBlock ipcCb _at_ IPC_CONTROL_BLOCK;
+static  volatile u8_t bbDisReason _at_ mem_disconn_reason_send;
+
+volatile u8_t xdata ipcPinlen _at_ mem_pin_length;
+volatile u8_t xdata ipcPin[BT_PIN_CODE_MAX_LEN] _at_ mem_pin;
+volatile u8_t xdata ipcReadBuff[IPC_READ_BUFF_LEN];
+volatile u8_t xdata ipcSendBuff[IPC_TX_BUFF_LEN];
+volatile u8_t current_task _at_  mem_c51_flag;
+volatile u8_t lpm_flag _at_ mem_c51_lmp_lock;
+volatile u16_t bttimer _at_ mem_ipc_bt_timer;
+volatile u16_t c51timer _at_ mem_ipc_c51_timer;
+volatile u8_t btstimer _at_ mem_ipc_bt_100ms_timer;
+volatile u8_t c51stimer _at_ mem_ipc_c51_100ms_timer;
+
+static void ipcRx(u8_t* dest, u8_t len)
+{
+	xu8_t* src = (xu8_t *)ipcRxReadPtr;
+	while(len--) {
+		*dest++ = *src++;
+		if ((u16_t)src == IPC_RX_END) {
+			src = (xu8_t *)IPC_RX_HEAD;
+		}
+	}
+	ipcRxReadPtr = (u16_t)src;
+}
+
+static void ipcTx(u8_t* src, u8_t len)
+{
+	xu8_t* dest = (xu8_t*)ipcTxWritePtr;
+	while(len--) {
+		*dest++ = *src++;
+		if ((u16_t)dest == IPC_TX_END) {
+			dest = (xu8_t *)IPC_TX_HEAD;
+		}
+	}
+	ipcTxWritePtr =  (u16_t)dest;
+}
+
+void IPC_TxControlCmd(u8_t cmd)
+{
+	u8_t cmdBuff[IPC_CMD_LEN] = {IPC_CONTROL_CMD,0x01};
+	cmdBuff[IPC_CMD_LEN - 1] = cmd;
+	ipcTx(cmdBuff, IPC_CMD_LEN);
+}
+
+void IPC_TxBREDRHidData(u8_t* dt, u8_t len)
+{
+	ipcSendBuff[0] = IPC_HID_DATA;
+	if (len == 0)
+		return;
+	while (ipcTxReadPtr!=ipcTxWritePtr);
+	ipcSendBuff[1] = len;
+	xmemcpy(&ipcSendBuff[2], dt, len);
+	ipcTx(ipcSendBuff, len + 2);
+}
+
+
+
+void IPC_Tx24GData(u8_t* dt, u8_t len)
+{
+	ipcSendBuff[0] = IPC_24G_DATA;
+	while (ipcTxReadPtr!=ipcTxWritePtr);
+	ipcSendBuff[1] = len;
+	xmemcpy(&ipcSendBuff[2], dt, len);
+	ipcTx(ipcSendBuff, len + 2);
+}
+
+
+u8_t IPC_GetBBDIsconnectReason()
+{
+	return bbDisReason;
+}
+
+void IPC_TxSppData(u8_t* dt, u8_t len)
+{
+	ipcSendBuff[0] = IPC_SPP_DATA;
+	while (ipcTxReadPtr!=ipcTxWritePtr);
+	ipcSendBuff[1] = len;
+	xmemcpy(&ipcSendBuff[2], dt, len);
+	ipcTx(ipcSendBuff, len + 2);
+}
+
+void IPC_TxBleData(u8_t* dt, u8_t len)
+{
+	ipcSendBuff[0] = IPC_BLE_DATA;
+	while (ipcTxReadPtr!=ipcTxWritePtr);
+	ipcSendBuff[1] = len;
+	xmemcpy(&ipcSendBuff[2], dt, len);
+	ipcTx(ipcSendBuff, len + 2);
+}
+
+void IPC_Initialize(tIPCControlBlock *cb)
+{
+	ipcCb = *cb;
+}
+
+void IPC_WaitLpm()
+{
+	lpm_flag = 0;
+	current_task = 0;
+	Delay1ms(1);
+}
+
+void IPC_AbandonLpm()
+{
+	lpm_flag = 1;
+	current_task = 0;
+}
+
+bit IPC_IsTxBuffEmpty()
+{
+	if (ipcTxReadPtr == ipcTxWritePtr)
+		return 1;
+	return 0;
+}
+
+
+void IPC_DealSingleStep()
+{
+	u8_t *pbuff = ipcReadBuff;
+	if (ipcRxReadPtr == ipcRxWritePtr)
+		goto IPC_TIMER;
+	ipcRx(ipcReadBuff, IPC_HEAD_LEN);
+	if (*pbuff == IPC_CONTROL_EVT) {
+		pbuff += 2;
+		ipcCb.evtcb(*pbuff);
+	}
+	else if (*pbuff == IPC_SPP_DATA) {
+		pbuff ++ ;
+		ipcRx(ipcReadBuff+3, *pbuff -1);
+		ipcCb.sppcb(pbuff+1, *pbuff);
+	}
+	else if (*pbuff == IPC_BLE_DATA) {
+		pbuff ++ ;
+		ipcRx(ipcReadBuff+3, *pbuff -1);
+		ipcCb.blecb(pbuff+1, *pbuff);
+	}
+	else if (*pbuff == IPC_HID_DATA) {
+		pbuff ++ ;
+		ipcRx(ipcReadBuff+3, *pbuff -1);
+		ipcCb.hidcb(pbuff+1, *pbuff);
+	}
+	else {
+		while(1);
+	}
+IPC_TIMER:
+	while (c51timer != bttimer) {
+		if (ipcCb.timercb == NULL)
+			return;
+		ipcCb.timercb();
+		c51timer ++;
+	}
+	while (c51stimer!= btstimer) {
+		if (ipcCb.stimercb == NULL)
+			return;
+		ipcCb.stimercb();
+		c51stimer ++;
+	}
+	//other app process
+}
+
+
Index: Standard_mouse/c51/kbhid.h
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/kbhid.h	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/kbhid.h	(working copy)
@@ -0,0 +1,273 @@
+    /// KB USB usages
+enum UsbUsage {
+        USB_USAGE_A=4,
+        USB_USAGE_B=5,
+        USB_USAGE_C=6,
+        USB_USAGE_D=7,
+        USB_USAGE_E=8,
+        USB_USAGE_F=9,
+        USB_USAGE_G=10,
+        USB_USAGE_H=11,
+        USB_USAGE_I=12,
+        USB_USAGE_J=13,
+        USB_USAGE_K=14,
+        USB_USAGE_L=15,
+        USB_USAGE_M=16,
+        USB_USAGE_N=17,
+        USB_USAGE_O=18,
+        USB_USAGE_P=19,
+        USB_USAGE_Q=20,
+        USB_USAGE_R=21,
+        USB_USAGE_S=22,
+        USB_USAGE_T=23,
+        USB_USAGE_U=24,
+        USB_USAGE_V=25,
+        USB_USAGE_W=26,
+        USB_USAGE_X=27,
+        USB_USAGE_Y=28,
+        USB_USAGE_Z=29,
+    
+        USB_USAGE_1=30,
+        USB_USAGE_2=31,
+        USB_USAGE_3=32,
+        USB_USAGE_4=33,
+        USB_USAGE_5=34,
+        USB_USAGE_6=35,
+        USB_USAGE_7=36,
+        USB_USAGE_8=37,
+        USB_USAGE_9=38,
+        USB_USAGE_0=39,
+    
+        USB_USAGE_ENTER=40,
+        USB_USAGE_ESCAPE=41,
+        USB_USAGE_BACKSPACE=42,
+        USB_USAGE_TAB=43,
+        USB_USAGE_SPACEBAR=44,
+        USB_USAGE_MINUS=45,
+        USB_USAGE_EQUAL=46,
+        USB_USAGE_LEFT_BRACKET=47,
+        USB_USAGE_RIGHT_BRACKET=48,
+        USB_USAGE_BACK_SLASH=49,
+    
+        USB_USAGE_NON_US_HASH=50,
+        USB_USAGE_SEMICOLON=51,
+        USB_USAGE_QUOTE=52,
+        USB_USAGE_ACCENT=53,
+        USB_USAGE_COMMA=54,
+        USB_USAGE_STOP_AND_GREATER=55,
+        USB_USAGE_SLASH=56,
+        USB_USAGE_CAPS_LOCK=57,
+        USB_USAGE_F1=58,
+        USB_USAGE_F2=59,
+    
+        USB_USAGE_F3=60,
+        USB_USAGE_F4=61,
+        USB_USAGE_F5=62,
+        USB_USAGE_F6=63,
+        USB_USAGE_F7=64,
+        USB_USAGE_F8=65,
+        USB_USAGE_F9=66,
+        USB_USAGE_F10=67,
+        USB_USAGE_F11=68,
+        USB_USAGE_F12=69,
+    
+        USB_USAGE_PRINT_SCREEN=70,
+        USB_USAGE_SCROLL_LOCK=71,
+        USB_USAGE_PAUSE=72,
+        USB_USAGE_INSERT=73,
+        USB_USAGE_HOME=74,
+        USB_USAGE_PAGE_UP=75,
+        USB_USAGE_DELETE=76,
+        USB_USAGE_END=77,
+        USB_USAGE_PAGE_DOWN=78,
+        USB_USAGE_RIGHT_ARROW=79,
+    
+        USB_USAGE_LEFT_ARROW=80,
+        USB_USAGE_DOWN_ARROW=81,
+        USB_USAGE_UP_ARROW=82,
+        USB_USAGE_NUM_LOCK=83,
+        USB_USAGE_KP_SLASH=84,
+        USB_USAGE_KP_ASTERISK=85,
+        USB_USAGE_KP_MINUS=86,
+        USB_USAGE_KP_PLUS=87,
+        USB_USAGE_KP_ENTER=88,
+        USB_USAGE_KP_1=89,
+    
+        USB_USAGE_KP_2=90,
+        USB_USAGE_KP_3=91,
+        USB_USAGE_KP_4=92,
+        USB_USAGE_KP_5=93,
+        USB_USAGE_KP_6=94,
+        USB_USAGE_KP_7=95,
+        USB_USAGE_KP_8=96,
+        USB_USAGE_KP_9=97,
+        USB_USAGE_KP_0=98,
+        USB_USAGE_KP_DOT=99,
+    
+        USB_USAGE_NON_US_BACK_SLASH=100,
+        USB_USAGE_APPLICATION=101,
+        USB_USAGE_POWER=102,
+        USB_USAGE_KP_EQUAL=103,
+        USB_USAGE_F13=104,
+        USB_USAGE_F14=105,
+        USB_USAGE_F15=106,
+        USB_USAGE_F16=107,
+        USB_USAGE_F17=108,
+        USB_USAGE_F18=109,
+    
+        USB_USAGE_F19=110,
+        USB_USAGE_F20=111,
+        USB_USAGE_F21=112,
+        USB_USAGE_F22=113,
+        USB_USAGE_F23=114,
+        USB_USAGE_F24=115,
+        USB_USAGE_EXECUTE=116,
+        USB_USAGE_HELP=117,
+        USB_USAGE_MENU=118,
+        USB_USAGE_SELECT=119,
+    
+        USB_USAGE_STOP=120,
+        USB_USAGE_AGAIN=121,
+        USB_USAGE_UNDO=122,
+        USB_USAGE_CUT=123,
+        USB_USAGE_COPY=124,
+        USB_USAGE_PASTE=125,
+        USB_USAGE_FIND=126,
+        USB_USAGE_MUTE=127,
+        USB_USAGE_VOL_UP=128,
+        USB_USAGE_VOL_DOWN=129,
+    
+        USB_USAGE_LOCKING_CAPS_LOCK=130,
+        USB_USAGE_LOCKING_NUM_LOCK=131,
+        USB_USAGE_LOCKING_SCROLL_LOCK=132,
+        USB_USAGE_KP_COMMA=133,
+        USB_USAGE_KP_EQUAL_AS400=134,
+        USB_USAGE_INTL_1=135,
+        USB_USAGE_INTL_2=136,
+        USB_USAGE_INTL_3=137,
+        USB_USAGE_INTL_4=138,
+        USB_USAGE_INTL_5=139,
+    
+        USB_USAGE_INTL_6=140,
+        USB_USAGE_INTL_7=141,
+        USB_USAGE_INTL_8=142,
+        USB_USAGE_INTL_9=143,
+        USB_USAGE_LANG_1=144,
+        USB_USAGE_LANG_2=145,
+        USB_USAGE_LANG_3=146,
+        USB_USAGE_LANG_4=147,
+        USB_USAGE_LANG_5=148,
+        USB_USAGE_LANG_6=149,
+    
+        USB_USAGE_LANG_7=150,
+        USB_USAGE_LANG_8=151,
+        USB_USAGE_LANG_9=152,
+        USB_USAGE_ALT_ERASE=153,
+        USB_USAGE_SYS_REQ=154,
+        USB_USAGE_CANCEL=155,
+        USB_USAGE_CLEAR=156,
+        USB_USAGE_PRIOR=157,
+        USB_USAGE_RETURN=158,
+        USB_USAGE_SEPARATOR=159,
+    
+        USB_USAGE_OUT=160,
+        USB_USAGE_OPER=161,
+        USB_USAGE_CLEAR_AGAIN=162,
+        USB_USAGE_CRSEL=163,
+        USB_USAGE_EXSEL=164,
+    
+        // Reserved 165-175
+    
+        USB_USAGE_KP_00=176,
+        USB_USAGE_KP_000=177,
+        USB_USAGE_THOUSANDS_SEPERATOR=178,
+        USB_USAGE_DECIMAL_SEPERATOR=179,
+    
+        USB_USAGE_CURRENCY_UNIT=180,
+        USB_USAGE_CURRENCY_SUB_UNIT=181,
+        USB_USAGE_KP_LEFT_PAREN=182,
+        USB_USAGE_KP_RIGHT_PAREN=183,
+        USB_USAGE_KP_LEFT_CURLY_BRACE=184,
+        USB_USAGE_KP_RIGHT_CURLY_BRACE=185,
+        USB_USAGE_KP_TAB=186,
+        USB_USAGE_KP_BACKSPACE=187,
+        USB_USAGE_KP_A=188,
+        USB_USAGE_KP_B=189,
+    
+        USB_USAGE_KP_C=190,
+        USB_USAGE_KP_D=191,
+        USB_USAGE_KP_E=192,
+        USB_USAGE_KP_F=193,
+        USB_USAGE_KP_XOR=194,
+        USB_USAGE_KP_CARET=195,
+        USB_USAGE_KP_PERCENT=196,
+        USB_USAGE_KP_LESS_THAN=197,
+        USB_USAGE_KP_GREATER_THAN=198,
+        USB_USAGE_KP_AMPERSAND=199,
+    
+        USB_USAGE_KP_DOUBLE_AMPERSAND=200,
+        USB_USAGE_KP_VERTICAL_BAR=201,
+        USB_USAGE_KP_DOUBLE_VERTICAL_BAR=202,
+        USB_USAGE_KP_COLON=203,
+        USB_USAGE_KP_HASH=204,
+        USB_USAGE_KP_SPACE=205,
+        USB_USAGE_KP_AT=206,
+        USB_USAGE_KP_EXCLAMATION=207,
+        USB_USAGE_KP_MEM_STORE=208,
+        USB_USAGE_KP_MEM_RECALL=209,
+    
+        USB_USAGE_KP_MEM_CLEAR=210,
+        USB_USAGE_KP_MEM_ADD=211,
+        USB_USAGE_KP_MEM_SUBTRACT=212,
+        USB_USAGE_KP_MEM_MULTIPLY=213,
+        USB_USAGE_KP_MEM_DIVIDE=214,
+        USB_USAGE_KP_PLUS_MINUS=215,
+        USB_USAGE_KP_CLEAR=216,
+        USB_USAGE_KP_CLEAR_ENTRY=217,
+        USB_USAGE_KP_BINARY=218,
+        USB_USAGE_KP_OCTAL=219,
+    
+        USB_USAGE_KP_DECIMAL=220,
+        USB_USAGE_KP_HEX=221,
+        // 222-223 reserved
+        USB_USAGE_LEFT_CTL=224,
+        USB_USAGE_LEFT_SHIFT=225,
+        USB_USAGE_LEFT_ALT=226,
+        USB_USAGE_LEFT_GUI=227,
+        USB_USAGE_RIGHT_CTL=228,
+        USB_USAGE_RIGHT_SHIFT=229,
+    
+        USB_USAGE_RIGHT_ALT=230,
+        USB_USAGE_RIGHT_GUI=231
+};
+
+enum multKey{
+//mult key
+	HID_MKEY_HOME = 0x01,
+	HID_MKEY_VIRKB	 = 0x02,
+	HID_MKEY_EMAILREADER = 0x03,
+	HID_MKEY_MENU = 0x04,
+	HID_MKEY_LIGHTUP = 0x05,
+	HID_MKEY_ACSEARCHER = 0x06,
+	HID_MKEY_PREMUSIC = 0x07,
+	HID_MKEY_STARTMUSIC = 0x08,
+	HID_MKEY_NEXTMUSIC = 0x09,
+	HID_MKEY_MUTE = 0x0a,
+	HID_MKEY_VOLDOWN = 0x0b,
+	HID_MKEY_VOLUP = 0x0c,
+	HID_MKEY_POWER = 0x0d,
+	HID_MKEY_MUSIC = 0x0e,
+	HID_MKEY_SCREESAVE = 0x13,
+	HID_MKEY_LIGHTDOWN = 0x15,
+};
+
+enum hidReportId{
+	HID_REPORTID_1 = 0x01,
+	HID_REPORTID_2 = 0x02
+};
+
+enum hidReportLen{
+	HID_REPORTLEN_1 = 0x09,
+	HID_REPORTLEN_2 = 0x05
+};
+
Index: Standard_mouse/c51/keyscan.h
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/keyscan.h	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/keyscan.h	(working copy)
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2016, yichip Semiconductor(shenzhen office)
+ * All Rights Reserved.
+ *
+ * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Yichip Semiconductor;
+ * the contents of this file may not be disclosed to third parties, copied
+ * or duplicated in any form, in whole or in part, without the prior
+ * written permission of Yichip Semiconductor.
+ */
+
+#include "type.h"
+#include "btreg.h"
+#include "hwreg.h"
+
+#ifndef _KEYSCAN_
+#define _KEYSCAN_
+
+#define KS_SEL_RGUI					0x80
+#define KS_SEL_RALT					0x40
+#define KS_SEL_RSHIFT				0x20
+#define KS_SEL_RCTRL					0x10
+#define KS_SEL_LGUI					0x08
+#define KS_SEL_LALT					0x04
+#define KS_SEL_LSHIFT				0x02
+#define KS_SEL_LCTRL					0x01
+
+#define KS_BUFF_POLL_LEN 6
+typedef struct {
+	u8_t standardSel;
+	u8_t ksPool[KS_BUFF_POLL_LEN];
+}tKSEVENT;
+
+/**
+ * This function initlialize key scan hardware.
+ * 
+ * @param none.
+ * 
+ * @return none.
+*/
+void KS_Initialize(void);
+
+/**
+ * This function Get Keyscan event message.
+ * 
+ * @param none.
+ * 
+ * @return ptr of keyscan event.
+*/
+tKSEVENT *KS_GetCurrentEvt();
+
+/**
+ * This function scan ks matrix.
+ * 
+ * @param none.
+ * 
+ * @return ptr of keyscan event.
+*/
+void KS_ScanMatrix();
+
+void KS_Unistall();
+#endif
+ 
\ No newline at end of file
Index: Standard_mouse/c51/keyscan.c
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/keyscan.c	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/keyscan.c	(working copy)
@@ -0,0 +1,314 @@
+#include "keyscan.h"
+#include "utilities.h"
+#include "gpio.h"
+#include "kbhid.h"
+#include "global_variable.h"
+
+#define KS_EVENT_EVT_BLOCK (mem_c51_private_area + 40)
+
+#define GET_RAW_KEY_SEL(y, g, n)	REG_GPIO_PUP (g) &= ~n; \
+	REG_GPIO_OE(g) |= n; \
+	REG_GPIO_OUT(g) &= ~n;	\
+	y = ~ REG_GPIO_IN(0);	\
+	REG_GPIO_PUP(g) |= n;	\
+	REG_GPIO_OE(g) &= ~n
+
+
+#define GET_RAW_KEY_SEL0(y,x)		GPIO_SetOutput(x, 0); \
+		y = ~ REG_GPIO_IN(0);	\
+		GPIO_SetInput(x, 0)
+
+static tKSEVENT ksEvtPool _at_ KS_EVENT_EVT_BLOCK;//4ca5
+//static u8_t ksMap[KS_KEY_MAP_LEN] _at_ mem_kb_map_c51;
+
+u8_t YC_check_is_connected();
+
+
+
+
+#define MAX(a,b) ((a)>(b)?(a):(b))
+
+static u8_t bit_count(u8_t v)
+{
+	unsigned char c;
+	for (c = 0; v; c++) {
+    	v &= v - 1;
+    }
+    return c;
+}
+
+
+//u8_t col[] = {25,26};
+static void keyIn(u8_t key)
+{
+	u8_t i = 0;
+
+	if (key == USB_USAGE_RIGHT_GUI) {
+		ksEvtPool.standardSel |= KS_SEL_RGUI;
+		return;
+	}
+	else if (key ==USB_USAGE_RIGHT_ALT) {
+		ksEvtPool.standardSel |= KS_SEL_RALT;
+		return;
+	}
+	else if (key ==USB_USAGE_RIGHT_SHIFT) {
+		ksEvtPool.standardSel |= KS_SEL_RSHIFT;
+		return;
+	}
+	else if (key ==USB_USAGE_RIGHT_CTL) {
+		ksEvtPool.standardSel |= KS_SEL_RCTRL;
+		return;
+	}
+	else if (key ==USB_USAGE_LEFT_GUI) {
+		ksEvtPool.standardSel |= KS_SEL_LGUI;
+		return;
+	}
+	else if (key ==USB_USAGE_LEFT_ALT) {
+		ksEvtPool.standardSel |= KS_SEL_LALT;
+		return;
+	}
+	else if (key ==USB_USAGE_LEFT_SHIFT) {
+		ksEvtPool.standardSel |= KS_SEL_LSHIFT;
+		return;
+	}
+	else if (key ==USB_USAGE_LEFT_CTL) {
+		ksEvtPool.standardSel |= KS_SEL_LCTRL;
+		return;
+	}
+	//special key
+
+	for (i=0 ; i<KS_BUFF_POLL_LEN ; i++) {
+		if (ksEvtPool.ksPool[i] == key)
+			break;
+		if (ksEvtPool.ksPool[i] == 0) {
+			ksEvtPool.ksPool[i] = key;
+			break;
+		}
+	}
+}
+
+static void keyOut(u8_t key)
+{
+	u8_t i = 0 ;
+	u8_t found = 0;
+
+	if (key == USB_USAGE_RIGHT_GUI ) {
+		ksEvtPool.standardSel &= ~KS_SEL_RGUI;
+		return;
+	}
+	else if (key ==USB_USAGE_RIGHT_ALT ) {
+		ksEvtPool.standardSel &= ~KS_SEL_RALT;
+		return;
+	}
+	else if (key ==USB_USAGE_RIGHT_SHIFT) {
+		ksEvtPool.standardSel &= ~KS_SEL_RSHIFT;
+		return;
+	}
+	else if (key ==USB_USAGE_RIGHT_CTL) {
+		ksEvtPool.standardSel &= ~KS_SEL_RCTRL;
+		return;
+	}
+	else if (key ==USB_USAGE_LEFT_GUI) {
+		ksEvtPool.standardSel &= ~KS_SEL_LGUI;
+		return;
+	}
+	else if (key ==USB_USAGE_LEFT_ALT) {
+		ksEvtPool.standardSel &= ~KS_SEL_LALT;
+		return;
+	}
+	else if (key ==USB_USAGE_LEFT_SHIFT) {
+		ksEvtPool.standardSel &= ~KS_SEL_LSHIFT;
+		return;
+	}
+	else if (key ==USB_USAGE_LEFT_CTL) {
+		ksEvtPool.standardSel &= ~ KS_SEL_LCTRL;
+		return;
+	}
+	
+	for (i=0 ; i<KS_BUFF_POLL_LEN ; i++) {
+		if (found == 0) {
+			if (ksEvtPool.ksPool[i] == key) {
+				if (i == KS_BUFF_POLL_LEN-1) {
+					ksEvtPool.ksPool[i] = 0;
+				}
+				found = 1;
+			}
+		}
+		else {
+			ksEvtPool.ksPool[i-1] = ksEvtPool.ksPool[i];
+			if (ksEvtPool.ksPool[i] == 0)
+				break;
+			if (i == KS_BUFF_POLL_LEN-1) {
+				ksEvtPool.ksPool[i] = 0;
+			}
+		}
+	}
+}
+
+static void ksRawInitialize()
+{
+	u8_t i = 0;
+	
+	for (i=0; i<8; i++) {
+		GPIO_SetInput(i, 0);
+	}
+}
+
+static void ksColInitialize()
+{
+	u8_t i = 0;
+	for (i=0; col[i]!=0; i++) {
+		GPIO_SetInput(col[i], 0);
+	}
+}
+
+void KS_Initialize()
+{
+	REG_GPIO_SELECT(0) = 0;
+	REG_GPIO_SELECT(1) = 0;
+	REG_GPIO_SELECT(2) = 0;
+	ksRawInitialize();
+	ksColInitialize();
+}
+
+void KS_Unistall()
+{
+	u8_t i = 0;
+	u8_t temp = 0;
+	u8_t tgroup = 0;
+	u8_t tgpionum = 0;
+	for (i=0; col[i]!=0; i++) {
+		tgroup = col[i]  >> 3;
+		tgpionum = 1 << (col[i] & 7);
+		REG_GPIO_PUP (tgroup) &= ~tgpionum;
+		REG_GPIO_OE(tgroup) |= tgpionum;
+		REG_GPIO_OUT(tgroup) &= ~tgpionum;
+	}
+	temp = REG_GPIO_IN(0);
+	YC_GPIOWakeupL[0] = temp;
+	YC_GPIOWakeupH[0] = ~temp;
+}
+
+
+void KS_ScanMatrix()
+{
+	u8_t i = 0;
+	u8_t j = 0;
+	u8_t tgroup = 0;
+	u8_t tgpionum = 0;
+	u8_t temp = 0;
+	u8_t check = 0;
+	u8_t rawSel = 0;
+	for (i=0; col[i]!=0; i++) {
+		tgroup = col[i]  >> 3;
+		tgpionum = 1 << (col[i] & 7);
+		GET_RAW_KEY_SEL(g_variable.ksSelMapCurr[i], tgroup, tgpionum);
+	}
+
+	for (i=0; col[i]!=0; i++) {
+		tgroup = col[i]  >> 3;
+		tgpionum = 1 << (col[i] & 7);
+		GET_RAW_KEY_SEL(g_variable.ksSelMapCheck[i], tgroup, tgpionum);
+	}
+
+	for (i=0; col[i]!=0; i++) {
+		if (g_variable.ksSelMapCheck[i]!=g_variable.ksSelMapCurr[i]) {
+			g_variable.ksSelMapCurr[i] &= g_variable.ksSelMapCheck[i];
+		}
+	}
+}
+
+u8_t array_is_empty(u8_t * str1,u8_t len)
+{
+	u8_t i;
+	for (i=0;i < len;i++)
+	{
+		if (str1[i] != 0)
+			return 0x00;
+	}
+	return 0x01;
+}
+
+tKSEVENT *KS_GetCurrentEvt()
+{
+	//
+	u8_t i = 0;
+	u8_t j = 0;
+	u8_t temp = 0;
+	u8_t flag = 0;
+	u8_t offset = 0;
+	u8_t state = 0;
+	u8_t colCounttemp = 0;
+	u8_t rawSel =0;
+	u8_t keyCounttemp = 0;
+	//u8_t ksSelMapChange[]
+	KS_ScanMatrix();
+
+	if (compare_str(g_variable.ksSelMapCurr,g_variable.ksSelMapOld,KB_KSCAN_COL_NUM) 
+		&& !array_is_empty(g_variable.ksSelMapCurr,KB_KSCAN_COL_NUM))
+	{
+		g_variable.button_flag |= 0x02;
+	}
+	else
+	{	
+		g_variable.button_flag &= 0xFD;
+		g_variable.button_timer[1] = 0;
+	}
+
+	for (i=0; col[i]!=0; i++) {
+		temp = g_variable.ksSelMapCurr[i];
+		if (temp!=0) {
+			colCounttemp++;
+			rawSel = temp|rawSel;
+			keyCounttemp += bit_count(temp);
+		}
+	}
+	g_variable.keyCount = keyCounttemp;
+	g_variable.colCount = colCounttemp;
+	g_variable.rawCount = bit_count(rawSel);
+	if (g_variable.keyCount >2 && g_variable.keyCount > MAX(g_variable.colCount, g_variable.rawCount)) {
+		g_variable.ghost = 1;
+	}
+	else {
+		g_variable.ghost = 0;
+	}
+	
+	for (i=0; col[i]!=0; i++) {
+		temp = g_variable.ksSelMapCurr[i] ^ g_variable.ksSelMapOld[i];
+		state = g_variable.ksSelMapCurr[i];
+		if (temp == 0) {
+			continue;
+		}
+		else {
+			if (g_variable.ghost) 
+				return NULL;
+			g_variable.ksSelMapOld[i] = g_variable.ksSelMapCurr[i];
+			for (j = 0 ; j<8 ; j++) {
+				if (temp&1) {
+					offset = i<<3 |j;
+					if (state & 1) {
+						g_variable.keyinCount++;
+						keyIn(ksMap[offset]);
+					}
+					else {
+						g_variable.keyoutCount++;
+						keyOut(ksMap[offset]);
+					}
+				}
+				temp = temp >>1;
+				state = state>>1;
+			}
+			flag = 1;
+		}
+	}
+	
+	if (flag) {
+		return &ksEvtPool;
+	}
+	else {
+		return NULL;
+	}
+	
+
+}
+
Index: Standard_mouse/c51/make.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: Standard_mouse/c51/make.exe
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/make.exe	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/make.exe	(working copy)

Property changes on: Standard_mouse/c51/make.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Standard_mouse/c51/output/FW
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: Standard_mouse/c51/output/FW
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/FW	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/FW	(working copy)

Property changes on: Standard_mouse/c51/output/FW
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Standard_mouse/c51/output/FW.COD
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/FW.COD	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/FW.COD	(working copy)
@@ -0,0 +1,7196 @@
+LX51 LINKER/LOCATER V4.41                                                               10/28/2019  17:53:39  PAGE 1
+
+
+
+
+
+ASSEMBLER CODE PACKING OF MODULE:  OUTPUT\FW (RAM)
+
+
+----- FUNCTION main (BEGIN) -----
+ FILE: 'ram.c'
+    5: void main()
+;----                  JMP     YC_SysMain
+    6: {
+    7: 	YC_SysMain();
+    8: 	//while(1){
+    9: 	//}
+----- FUNCTION main (END) -------
+
+
+----- FUNCTION YC_SysMain (BEGIN) -----
+ FILE: 'sys.c'
+ 1480: void YC_SysMain(void)
+ 1481: {		
+ 1482: 	u8_t i;
+ 1483: 	deviceInit();
+0002F1 121C20            LCALL   deviceInit
+ 1484: 	if(1 == m_enable24gShortLpm){
+0002F4 904E78            MOV     DPTR,#m_enable24gShortLpm
+0002F7 E0                MOVX    A,@DPTR
+0002F8 B40103            CJNE    A,#01H,?C0258?SYS
+ 1485: 		YC_24gShortLpmProcess();
+0002FB 1215DF            LCALL   YC_24gShortLpmProcess
+ 1486: 	}
+0002FE         ?C0258?SYS:
+ 1487: 	while(1)
+ 1488: 	{
+ 1489: 		IPC_DealSingleStep();
+0002FE 121D98            LCALL   IPC_DealSingleStep
+ 1490: 		mouseWheelScan();
+000301 1217B1            LCALL   mouseWheelScan
+ 1491: 		mouseKeyDetect();
+000304 121096            LCALL   mouseKeyDetect
+ 1492: 		mouseMotion();
+000307 121888            LCALL   mouseMotion
+ 1493: #if OTA_ENABLE
+ 1494: 		wirelessConfigProcess();
+ 1495: #endif		
+ 1496: 		switch (current_task) 
+00030A 900B2A            MOV     DPTR,#current_task
+00030D E0                MOVX    A,@DPTR
+00030E 14                DEC     A
+00030F 6058              JZ      ?C0271?SYS
+000311 24FE              ADD     A,#0FEH
+000313 70E9              JNZ     ?C0258?SYS
+ 1497: 		{
+ 1498: 			case FIX_ENTER_HIBERNATE:
+000315         ?C0261?SYS:
+ 1499: 				g_variable.read_sensor_count = 0;
+000315 E4                CLR     A
+000316 904F00            MOV     DPTR,#g_variable+045H
+000319 F0                MOVX    @DPTR,A
+ 1500: 				sensorPowerDown();
+00031A 120F4A            LCALL   sensorPowerDown
+ 1501: 				for (i = 0; i < 16; i ++) {
+;---- Variable 'i' assigned to Register 'R7' ----
+00031D E4                CLR     A
+00031E FF                MOV     R7,A
+00031F         ?C0262?SYS:
+ 1502: 					REG_GPIO_OE(i) = 0x00;
+00031F EF                MOV     A,R7
+000320 2470              ADD     A,#070H
+000322 FD                MOV     R5,A
+000323 E4                CLR     A
+000324 3480              ADDC    A,#080H
+000326 8D82              MOV     DPL,R5
+000328 F583              MOV     DPH,A
+00032A E4                CLR     A
+00032B F0                MOVX    @DPTR,A
+ 1503: 				}
+00032C 0F                INC     R7
+00032D EF                MOV     A,R7
+00032E B410EE            CJNE    A,#010H,?C0262?SYS
+000331         ?C0263?SYS:
+ 1504: 				if (GPIO_GetInputStatus(WHEEL_DATA_A_GPIO))
+000331 7F02              MOV     R7,#02H
+000333 120D4C            LCALL   _GPIO_GetInputStatus
+000336 5008              JNC     ?C0265?SYS
+ 1505: 					GPIO_SetInput(WHEEL_DATA_A_GPIO, 0);
+000338 C206              CLR     ?_GPIO_SetInput?BIT
+00033A 7F02              MOV     R7,#02H
+00033C 71A1              ACALL   _GPIO_SetInput
+00033E 8006              SJMP    ?C0266?SYS
+000340         ?C0265?SYS:
+ 1506: 				else GPIO_SetInput(WHEEL_DATA_A_GPIO, 1);
+000340 D206              SETB    ?_GPIO_SetInput?BIT
+000342 7F02              MOV     R7,#02H
+000344 71A1              ACALL   _GPIO_SetInput
+000346         ?C0266?SYS:
+ 1507: 				if (GPIO_GetInputStatus(WHEEL_DATA_B_GPIO))
+000346 7F03              MOV     R7,#03H
+000348 120D4C            LCALL   _GPIO_GetInputStatus
+00034B 5008              JNC     ?C0267?SYS
+ 1508: 					GPIO_SetInput(WHEEL_DATA_B_GPIO, 0);
+00034D C206              CLR     ?_GPIO_SetInput?BIT
+00034F 7F03              MOV     R7,#03H
+000351 71A1              ACALL   _GPIO_SetInput
+000353 8006              SJMP    ?C0268?SYS
+000355         ?C0267?SYS:
+ 1509: 				else GPIO_SetInput(WHEEL_DATA_B_GPIO, 1);
+000355 D206              SETB    ?_GPIO_SetInput?BIT
+000357 7F03              MOV     R7,#03H
+000359 71A1              ACALL   _GPIO_SetInput
+00035B         ?C0268?SYS:
+ 1510: 				GPIO_SetOutput(LED_GPIO, 1);
+00035B D207              SETB    ?_GPIO_SetOutput?BIT
+00035D 7F08              MOV     R7,#08H
+00035F 121075            LCALL   _GPIO_SetOutput
+ 1511: 				YC_SetWake();
+000362 F140              ACALL   YC_SetWake
+ 1512: 				IPC_WaitLpm();
+000364 1215D1            LCALL   IPC_WaitLpm
+000367         ?C0269?SYS:
+ 1513: 				while(1);
+000367 80FE              SJMP    ?C0269?SYS
+ 1514: 				break;
+ 1515: 			case FIX_ENTER_LPM:
+000369         ?C0271?SYS:
+ 1516: 				if (g_variable.wheelTimer ||g_variable.lockLpm)
+000369 904EC7            MOV     DPTR,#g_variable+0CH
+00036C E0                MOVX    A,@DPTR
+00036D 7006              JNZ     ?C0273?SYS
+00036F 904EC1            MOV     DPTR,#g_variable+06H
+000372 E0                MOVX    A,@DPTR
+000373 6005              JZ      ?C0272?SYS
+000375         ?C0273?SYS:
+ 1517: 				{
+ 1518: 					IPC_AbandonLpm();
+000375 1216D5            LCALL   IPC_AbandonLpm
+ 1519: 					break;
+000378 8084              SJMP    ?C0258?SYS
+ 1520: 				}
+00037A         ?C0272?SYS:
+ 1521: 				if (g_variable.currentState == DEVICE_MODE_24G 
+00037A 904EBD            MOV     DPTR,#g_variable+02H
+00037D E0                MOVX    A,@DPTR
+00037E FF                MOV     R7,A
+00037F 6401              XRL     A,#01H
+000381 6009              JZ      ?C0275?SYS
+000383 EF                MOV     A,R7
+000384 6402              XRL     A,#02H
+000386 6004              JZ      ?C0275?SYS
+000388 EF                MOV     A,R7
+000389 B4070D            CJNE    A,#07H,?C0274?SYS
+00038C         ?C0275?SYS:
+ 1522: 					||g_variable.currentState == DEVICE_MODE_BT
+ 1523: 					||g_variable.currentState == DEVICE_MODE_BLE_BB_CONNECT)
+ 1524: 				{
+ 1525: 					YC_SetWake();
+00038C F140              ACALL   YC_SetWake
+ 1526: 					GPIO_SetWakeup(SENSOR_MOTION_GPIO,0);
+00038E C208              CLR     ?_GPIO_SetWakeup?BIT
+000390 7F18              MOV     R7,#018H
+000392 F1AB              ACALL   _GPIO_SetWakeup
+ 1527: 					IPC_WaitLpm();	/*<wait enter lpm,do nothing*/
+000394 1215D1            LCALL   IPC_WaitLpm
+ 1528: 					break;
+000397 41FE              AJMP    ?C0258?SYS
+ 1529: 				}
+000399         ?C0274?SYS:
+ 1530: 				else
+ 1531: 				{
+ 1532: 					IPC_AbandonLpm();
+000399 1216D5            LCALL   IPC_AbandonLpm
+ 1533: 					break;
+00039C 41FE              AJMP    ?C0258?SYS
+ 1534: 				}
+ 1535: 		}
+ 1536: 	}
+00039E 41FE              AJMP    ?C0258?SYS
+0003A0 22                RET     
+----- FUNCTION YC_SysMain (END) -------
+
+
+----- FUNCTION _GPIO_SetInput (BEGIN) -----
+ FILE: 'gpio.c'
+   60: void GPIO_SetInput(u8_t gpio_num, bit  st)
+   61: {
+;---- Variable 'gpio_num' assigned to Register 'R4' ----
+0003A1 AC07              MOV     R4,AR7
+   62: 	GPIO_SetPd(gpio_num,st);
+   63: 	GPIO_SetPu(gpio_num,~st);
+0003A3 A206              MOV     C,st
+0003A5 9204              MOV     ?_GPIO_SetPd?BIT,C
+0003A7 121CF5            LCALL   _GPIO_SetPd
+   64: 	GPIO_Setoe(gpio_num,0);
+0003AA AF04              MOV     R7,AR4
+0003AC A206              MOV     C,st
+0003AE B3                CPL     C
+0003AF 9203              MOV     ?_GPIO_SetPu?BIT,C
+0003B1 121089            LCALL   _GPIO_SetPu
+   65: }
+0003B4 AF04              MOV     R7,AR4
+0003B6 C205              CLR     ?_GPIO_Setoe?BIT
+;----                  JMP     _GPIO_Setoe
+----- FUNCTION _GPIO_SetInput (END) -------
+
+
+----- FUNCTION _GPIO_Setoe (BEGIN) -----
+ FILE: 'gpio.c'
+   55: void GPIO_Setoe(u8_t gpio_num, bool bit_val)
+   56: {
+;---- Variable 'gpio_num' assigned to Register 'R7' ----
+   57: 	gpioSetBit(gpio_num, &REG_GPIO_OE(0), bit_val);	
+   58: }
+0003B8 7B01              MOV     R3,#01H
+0003BA 7A80              MOV     R2,#080H
+0003BC 7970              MOV     R1,#070H
+0003BE A205              MOV     C,bit_val
+0003C0 9201              MOV     ?_gpioSetBit?BIT,C
+;----                  JMP     _gpioSetBit
+----- FUNCTION _GPIO_Setoe (END) -------
+
+
+----- FUNCTION _gpioSetBit (BEGIN) -----
+ FILE: 'gpio.c'
+    8: static void gpioSetBit(u8_t gpio_num, char *reg_base, bool bit_val)
+    9: {
+0003C2 901C1F            MOV     DPTR,#reg_base
+0003C5 EB                MOV     A,R3
+0003C6 F0                MOVX    @DPTR,A
+0003C7 A3                INC     DPTR
+0003C8 EA                MOV     A,R2
+0003C9 F0                MOVX    @DPTR,A
+0003CA A3                INC     DPTR
+0003CB E9                MOV     A,R1
+0003CC F0                MOVX    @DPTR,A
+;---- Variable 'gpio_num' assigned to Register 'R7' ----
+   10: 	u8_t queue = 0;
+   11: 	u8_t group = 0;
+;---- Variable 'queue' assigned to Register 'R6' ----
+0003CD E4                CLR     A
+0003CE FE                MOV     R6,A
+   12: 
+;---- Variable 'group' assigned to Register 'R5' ----
+0003CF FD                MOV     R5,A
+   13: 	queue = (gpio_num & 7);
+0003D0 EF                MOV     A,R7
+0003D1 5407              ANL     A,#07H
+0003D3 FE                MOV     R6,A
+   14: 	group = gpio_num >> 3 & 3;
+0003D4 EF                MOV     A,R7
+0003D5 13                RRC     A
+0003D6 13                RRC     A
+0003D7 13                RRC     A
+0003D8 5403              ANL     A,#03H
+0003DA FD                MOV     R5,A
+   15: 
+   16: 	if(bit_val) {
+0003DB 300120            JNB     bit_val,?C0001?GPIO
+   17: 		*(reg_base + group) |= 1<<queue;
+0003DE 901C1F            MOV     DPTR,#reg_base
+0003E1 E0                MOVX    A,@DPTR
+0003E2 FB                MOV     R3,A
+0003E3 A3                INC     DPTR
+0003E4 E0                MOVX    A,@DPTR
+0003E5 FA                MOV     R2,A
+0003E6 A3                INC     DPTR
+0003E7 E0                MOVX    A,@DPTR
+0003E8 2D                ADD     A,R5
+0003E9 F9                MOV     R1,A
+0003EA E4                CLR     A
+0003EB 3A                ADDC    A,R2
+0003EC FA                MOV     R2,A
+0003ED 11F9              ACALL   ?C?CLDPTR
+0003EF FF                MOV     R7,A
+0003F0 7401              MOV     A,#01H
+0003F2 A806              MOV     R0,AR6
+0003F4 08                INC     R0
+0003F5 8002              SJMP    ?C0019?GPIO
+0003F7         ?C0018?GPIO:
+0003F7 C3                CLR     C
+0003F8 33                RLC     A
+0003F9         ?C0019?GPIO:
+0003F9 D8FC              DJNZ    R0,?C0018?GPIO
+0003FB 4F                ORL     A,R7
+0003FC 213F              AJMP    ?C?CSTPTR
+   18: 	}
+0003FE         ?C0001?GPIO:
+   19: 	else {
+   20: 		*(reg_base + group) &= ~(1<<queue);
+0003FE 901C1F            MOV     DPTR,#reg_base
+000401 E0                MOVX    A,@DPTR
+000402 FB                MOV     R3,A
+000403 A3                INC     DPTR
+000404 E0                MOVX    A,@DPTR
+000405 FA                MOV     R2,A
+000406 A3                INC     DPTR
+000407 E0                MOVX    A,@DPTR
+000408 2D                ADD     A,R5
+000409 F9                MOV     R1,A
+00040A E4                CLR     A
+00040B 3A                ADDC    A,R2
+00040C FA                MOV     R2,A
+00040D 11F9              ACALL   ?C?CLDPTR
+00040F FF                MOV     R7,A
+000410 7401              MOV     A,#01H
+000412 A806              MOV     R0,AR6
+000414 08                INC     R0
+000415 8002              SJMP    ?C0021?GPIO
+000417         ?C0020?GPIO:
+000417 C3                CLR     C
+000418 33                RLC     A
+000419         ?C0021?GPIO:
+000419 D8FC              DJNZ    R0,?C0020?GPIO
+00041B F4                CPL     A
+00041C 5F                ANL     A,R7
+00041D 213F              AJMP    ?C?CSTPTR
+   21: 	}
+----- FUNCTION _gpioSetBit (END) -------
+
+
+----- FUNCTION _deviceEvtCB (BEGIN) -----
+ FILE: 'sys.c'
+  889: static void deviceEvtCB(u8_t evt)
+  890: {
+00041F 901BBD            MOV     DPTR,#evt
+000422 EF                MOV     A,R7
+000423 F0                MOVX    @DPTR,A
+  891: 	u8_t curentMode;
+  892: 	u8_t buttonLeft = 0,buttonRight = 0,buttonMiddle = 0;
+000424 E4                CLR     A
+000425 901BBF            MOV     DPTR,#buttonLeft
+000428 F0                MOVX    @DPTR,A
+000429 A3                INC     DPTR
+00042A F0                MOVX    @DPTR,A
+00042B A3                INC     DPTR
+00042C F0                MOVX    @DPTR,A
+  893: 	u8_t combkey = 0;
+00042D A3                INC     DPTR
+00042E F0                MOVX    @DPTR,A
+  894: 	u8_t reconnLeAddr_buff[6] = 0;
+00042F 78C3              MOV     R0,#LOW reconnLeAddr_buff
+000431 7C1B              MOV     R4,#HIGH reconnLeAddr_buff
+000433 7D01              MOV     R5,#01H
+000435 7BFF              MOV     R3,#0FFH
+000437 7A02              MOV     R2,#HIGH _?ix1000
+000439 79E8              MOV     R1,#LOW _?ix1000
+00043B FE                MOV     R6,A
+00043C 7F06              MOV     R7,#06H
+00043E 11D3              ACALL   ?C?COPY
+  895: 	
+  896: 	switch(evt)
+000440 901BBD            MOV     DPTR,#evt
+000443 E0                MOVX    A,@DPTR
+000444 511A              ACALL   ?C?CCASE
+000446 06B6              DW      ?C0187?SYS
+000448 14                DB      014H
+000449 0721              DW      ?C0188?SYS
+00044B 15                DB      015H
+00044C 0468              DW      ?C0158?SYS
+00044E 2F                DB      02FH
+00044F 05F5              DW      ?C0179?SYS
+000451 39                DB      039H
+000452 0680              DW      ?C0185?SYS
+000454 3A                DB      03AH
+000455 0620              DW      ?C0180?SYS
+000457 3B                DB      03BH
+000458 05C6              DW      ?C0175?SYS
+00045A 3C                DB      03CH
+00045B 0465              DW      ?C0157?SYS
+00045D 3D                DB      03DH
+00045E 0695              DW      ?C0186?SYS
+000460 40                DB      040H
+000461 0000              DW      00H
+000463 073F              DW      ?C0193?SYS
+  897: 	{
+  898: 		case IPC_EVT_HIBERNATE_WAKE:
+000465         ?C0157?SYS:
+  899: 			clearGlobalMem();
+000465 121B43            LCALL   clearGlobalMem
+  900: 		case IPC_EVT_RESET:
+000468         ?C0158?SYS:
+  901: 			leAddrRandomCntInit();
+000468 12131C            LCALL   leAddrRandomCntInit
+  902: 			GPIO_SetInput(SENSOR_MOTION_GPIO, 0);
+00046B C206              CLR     ?_GPIO_SetInput?BIT
+00046D 7F18              MOV     R7,#018H
+00046F 71A1              ACALL   _GPIO_SetInput
+  903: 			GPIO_SetInput(SENSOR_DIRECTION_GPIO_CHOICE,0);
+000471 C206              CLR     ?_GPIO_SetInput?BIT
+000473 7F12              MOV     R7,#012H
+000475 71A1              ACALL   _GPIO_SetInput
+  904: 			GPIO_SetInput(LOWPOWER_GPIO_CHOICE, 0);
+000477 C206              CLR     ?_GPIO_SetInput?BIT
+000479 7F13              MOV     R7,#013H
+00047B 71A1              ACALL   _GPIO_SetInput
+  905: 			GPIO_SetInput(WHEEL_DATA_A_GPIO, 0);
+00047D C206              CLR     ?_GPIO_SetInput?BIT
+00047F 7F02              MOV     R7,#02H
+000481 71A1              ACALL   _GPIO_SetInput
+  906: 			GPIO_SetInput(WHEEL_DATA_B_GPIO, 0);
+000483 C206              CLR     ?_GPIO_SetInput?BIT
+000485 7F03              MOV     R7,#03H
+000487 71A1              ACALL   _GPIO_SetInput
+  907: 			GPIO_SetInput(KS_BL_GPIO, 0);
+000489 C206              CLR     ?_GPIO_SetInput?BIT
+00048B 7F04              MOV     R7,#04H
+00048D 71A1              ACALL   _GPIO_SetInput
+  908: 			GPIO_SetInput(KS_BM_GPIO, 0);
+00048F C206              CLR     ?_GPIO_SetInput?BIT
+000491 7F17              MOV     R7,#017H
+000493 71A1              ACALL   _GPIO_SetInput
+  909: 			GPIO_SetInput(KS_BR_GPIO, 0);
+000495 C206              CLR     ?_GPIO_SetInput?BIT
+000497 7F1B              MOV     R7,#01BH
+000499 71A1              ACALL   _GPIO_SetInput
+  910: 			GPIO_SetInput(KS_BK_GPIO, 0);
+00049B C206              CLR     ?_GPIO_SetInput?BIT
+00049D 7F17              MOV     R7,#017H
+00049F 71A1              ACALL   _GPIO_SetInput
+  911: 			GPIO_SetInput(KS_FW_GPIO, 0);
+0004A1 C206              CLR     ?_GPIO_SetInput?BIT
+0004A3 7F04              MOV     R7,#04H
+0004A5 71A1              ACALL   _GPIO_SetInput
+  912: 			GPIO_SetInput(CPI_GPIO, 0);
+0004A7 C206              CLR     ?_GPIO_SetInput?BIT
+0004A9 7F06              MOV     R7,#06H
+0004AB 71A1              ACALL   _GPIO_SetInput
+  913: 			GPIO_SetOutput(LED_GPIO,1);
+0004AD D207              SETB    ?_GPIO_SetOutput?BIT
+0004AF 7F08              MOV     R7,#08H
+0004B1 121075            LCALL   _GPIO_SetOutput
+  914: 			GPIO_SetOutput(Timer_div_io, 1);
+0004B4 D207              SETB    ?_GPIO_SetOutput?BIT
+0004B6 7F07              MOV     R7,#07H
+0004B8 121075            LCALL   _GPIO_SetOutput
+  915: 						
+  916: 			if (!GPIO_GetInputStatus(SENSOR_DIRECTION_GPIO_CHOICE)) {
+0004BB 7F12              MOV     R7,#012H
+0004BD 120D4C            LCALL   _GPIO_GetInputStatus
+0004C0 4007              JC      ?C0159?SYS
+  917: 				g_variable.sensorChoice = 0;
+0004C2 E4                CLR     A
+0004C3 904EF0            MOV     DPTR,#g_variable+035H
+0004C6 F0                MOVX    @DPTR,A
+  918: 			}
+0004C7 8006              SJMP    ?C0160?SYS
+0004C9         ?C0159?SYS:
+  919: 			else {
+  920: 				g_variable.sensorChoice = 1;
+0004C9 904EF0            MOV     DPTR,#g_variable+035H
+0004CC 7401              MOV     A,#01H
+0004CE F0                MOVX    @DPTR,A
+  921: 			}
+0004CF         ?C0160?SYS:
+  922: 			
+  923: 			if (!GPIO_GetInputStatus(LOWPOWER_GPIO_CHOICE)){
+0004CF 7F13              MOV     R7,#013H
+0004D1 120D4C            LCALL   _GPIO_GetInputStatus
+0004D4 500A              JNC     ?C0162?SYS
+  924: 			
+  925: #if ADC_VINLPM_ENABLE
+  926: 				(*(volatile unsigned char xdata *)mem_adc_config_flag) = 0x01;
+  927: #endif
+  928: 			}
+0004D6         ?C0161?SYS:
+  929: 			else {
+  930: #if ADC_GPIO_ENABLE
+  931: 				(*(volatile unsigned char xdata *)mem_adc_config_flag) = 0x04;
+0004D6 9042CF            MOV     DPTR,#042CFH
+0004D9 7404              MOV     A,#04H
+0004DB F0                MOVX    @DPTR,A
+  932: 				(*(volatile unsigned char xdata *)mem_adc_channel) = 0x30;//gpio5 for adc
+0004DC A3                INC     DPTR
+0004DD 7430              MOV     A,#030H
+0004DF F0                MOVX    @DPTR,A
+  933: #endif				
+  934: 			}
+0004E0         ?C0162?SYS:
+  935: 			SPI_Initialize();
+0004E0 12173A            LCALL   SPI_Initialize
+  936: 			Drawing_optima_init();
+0004E3 122152            LCALL   Drawing_optima_init
+  937: 			g_variable.sensorType = SPI_ResetSensor();
+0004E6 120873            LCALL   SPI_ResetSensor
+0004E9 904ED9            MOV     DPTR,#g_variable+01EH
+0004EC EF                MOV     A,R7
+0004ED F0                MOVX    @DPTR,A
+  938: 			IIC_Read(EEPROM_DPI_ADDR, 1, &g_variable.dpiCount);
+0004EE 7B01              MOV     R3,#01H
+0004F0 7A4E              MOV     R2,#HIGH g_variable+020H
+0004F2 79DB              MOV     R1,#LOW g_variable+020H
+0004F4 7D01              MOV     R5,#01H
+0004F6 7C00              MOV     R4,#00H
+0004F8 7FA8              MOV     R7,#0A8H
+0004FA 7E7F              MOV     R6,#07FH
+0004FC 121368            LCALL   _IIC_Read
+  939: 			if(g_variable.dpiCount>3) 
+0004FF 904EDB            MOV     DPTR,#g_variable+020H
+000502 E0                MOVX    A,@DPTR
+000503 D3                SETB    C
+000504 9403              SUBB    A,#03H
+000506 4003              JC      ?C0163?SYS
+  940: 				g_variable.dpiCount=0x02;
+000508 7402              MOV     A,#02H
+00050A F0                MOVX    @DPTR,A
+00050B         ?C0163?SYS:
+  941: 			IIC_WriteBlock(EEPROM_DPI_ADDR, 1, &g_variable.dpiCount);
+00050B 7B01              MOV     R3,#01H
+00050D 7A4E              MOV     R2,#HIGH g_variable+020H
+00050F 79DB              MOV     R1,#LOW g_variable+020H
+000511 7D01              MOV     R5,#01H
+000513 7C00              MOV     R4,#00H
+000515 7FA8              MOV     R7,#0A8H
+000517 7E7F              MOV     R6,#07FH
+000519 12126D            LCALL   _IIC_WriteBlock
+  942: 			dpiWriteInSensor();
+00051C 120AB9            LCALL   dpiWriteInSensor
+  943: 			REG_GPIO_SELECT(0) = 0x00;
+00051F 908080            MOV     DPTR,#08080H
+000522 E4                CLR     A
+000523 F0                MOVX    @DPTR,A
+  944: 			g_variable.dpiLedStay = 0;
+000524 904EDE            MOV     DPTR,#g_variable+023H
+000527 F0                MOVX    @DPTR,A
+  945: 			g_variable.dpiLedFlipTime = 0;
+000528 904EDD            MOV     DPTR,#g_variable+022H
+00052B F0                MOVX    @DPTR,A
+  946: 			buttonLeft = !GPIO_GetInputStatus(KS_BL_GPIO);
+00052C 7F04              MOV     R7,#04H
+00052E 120D4C            LCALL   _GPIO_GetInputStatus
+000531 4004              JC      ?C0164?SYS
+000533 7F01              MOV     R7,#01H
+000535 8002              SJMP    ?C0165?SYS
+000537         ?C0164?SYS:
+000537 7F00              MOV     R7,#00H
+000539         ?C0165?SYS:
+000539 901BBF            MOV     DPTR,#buttonLeft
+00053C EF                MOV     A,R7
+00053D F0                MOVX    @DPTR,A
+  947: 			buttonMiddle = !GPIO_GetInputStatus(KS_BM_GPIO);
+00053E 7F17              MOV     R7,#017H
+000540 120D4C            LCALL   _GPIO_GetInputStatus
+000543 4004              JC      ?C0166?SYS
+000545 7F01              MOV     R7,#01H
+000547 8002              SJMP    ?C0167?SYS
+000549         ?C0166?SYS:
+000549 7F00              MOV     R7,#00H
+00054B         ?C0167?SYS:
+00054B 901BC1            MOV     DPTR,#buttonMiddle
+00054E EF                MOV     A,R7
+00054F F0                MOVX    @DPTR,A
+  948: 			buttonRight = !GPIO_GetInputStatus(KS_BR_GPIO);
+000550 7F1B              MOV     R7,#01BH
+000552 120D4C            LCALL   _GPIO_GetInputStatus
+000555 4004              JC      ?C0168?SYS
+000557 7F01              MOV     R7,#01H
+000559 8002              SJMP    ?C0169?SYS
+00055B         ?C0168?SYS:
+00055B 7F00              MOV     R7,#00H
+00055D         ?C0169?SYS:
+00055D 901BC0            MOV     DPTR,#buttonRight
+000560 EF                MOV     A,R7
+000561 F0                MOVX    @DPTR,A
+  949: 			combkey = buttonLeft |buttonRight<<1|buttonMiddle<<2;
+000562 E0                MOVX    A,@DPTR
+000563 FF                MOV     R7,A
+000564 25E0              ADD     A,ACC
+000566 FF                MOV     R7,A
+000567 901BBF            MOV     DPTR,#buttonLeft
+00056A E0                MOVX    A,@DPTR
+00056B 4F                ORL     A,R7
+00056C FF                MOV     R7,A
+00056D 901BC1            MOV     DPTR,#buttonMiddle
+000570 E0                MOVX    A,@DPTR
+000571 FE                MOV     R6,A
+000572 25E0              ADD     A,ACC
+000574 25E0              ADD     A,ACC
+000576 4F                ORL     A,R7
+000577 FF                MOV     R7,A
+000578 A3                INC     DPTR
+000579 F0                MOVX    @DPTR,A
+  950: 			if ((combkey == 0x05)&&(evt == IPC_EVT_RESET)) 
+00057A BF050C            CJNE    R7,#05H,?C0170?SYS
+00057D 901BBD            MOV     DPTR,#evt
+000580 E0                MOVX    A,@DPTR
+000581 B42F05            CJNE    A,#02FH,?C0170?SYS
+  951: 			{
+  952: 				IPC_TxControlCmd(IPC_CMD_PAIR_24G);
+000584 7F25              MOV     R7,#025H
+000586 020EA2            LJMP    _IPC_TxControlCmd
+  953: 				break;
+  954: 			}
+000589         ?C0170?SYS:
+  955: 
+  956: 			if(m_leStartAdv == 1){
+000589 904EA7            MOV     DPTR,#m_leStartAdv
+00058C E0                MOVX    A,@DPTR
+00058D B40109            CJNE    A,#01H,?C0171?SYS
+  957: 				leReconnStart();
+000590 121458            LCALL   leReconnStart
+  958: 				m_leStartAdv = 0;
+000593 E4                CLR     A
+000594 904EA7            MOV     DPTR,#m_leStartAdv
+000597 F0                MOVX    @DPTR,A
+  959: 			}
+000598 22                RET     
+000599         ?C0171?SYS:
+  960: 			else{
+  961: 				IIC_Read(EEPROM_24G_ADDR+2, 4, (u8_t *)m_24gAddr);
+000599 7B01              MOV     R3,#01H
+00059B 7A49              MOV     R2,#HIGH m_24gAddr
+00059D 7950              MOV     R1,#LOW m_24gAddr
+00059F 7D04              MOV     R5,#04H
+0005A1 7C00              MOV     R4,#00H
+0005A3 7FA4              MOV     R7,#0A4H
+0005A5 7E7F              MOV     R6,#07FH
+0005A7 121368            LCALL   _IIC_Read
+  962: 				if(m_24gAddr[0] == 0xff && m_24gAddr[1] == 0xff && m_24gAddr[2] == 0xff && m_24gAddr[3] == 0xff)
+0005AA 904950            MOV     DPTR,#m_24gAddr
+0005AD E0                MOVX    A,@DPTR
+0005AE B4FF12            CJNE    A,#0FFH,?C0173?SYS
+0005B1 A3                INC     DPTR
+0005B2 E0                MOVX    A,@DPTR
+0005B3 B4FF0D            CJNE    A,#0FFH,?C0173?SYS
+0005B6 A3                INC     DPTR
+0005B7 E0                MOVX    A,@DPTR
+0005B8 B4FF08            CJNE    A,#0FFH,?C0173?SYS
+0005BB A3                INC     DPTR
+0005BC E0                MOVX    A,@DPTR
+0005BD B4FF03            CJNE    A,#0FFH,?C0173?SYS
+  963: 					leReconnStart();
+0005C0 021458            LJMP    leReconnStart
+0005C3         ?C0173?SYS:
+  964: 				else
+  965: 					deviceSwitch24GMode();	
+0005C3 020F93            LJMP    deviceSwitch24GMode
+  966: 			}
+  967: 			break;
+  968: 		case IPC_EVT_WAKEUP:
+0005C6         ?C0175?SYS:
+  969: 			if(g_variable.currentState == DEVICE_MODE_BLE_BB_CONNECT)
+0005C6 904EBD            MOV     DPTR,#g_variable+02H
+0005C9 E0                MOVX    A,@DPTR
+0005CA B40715            CJNE    A,#07H,?C0176?SYS
+  970: 			{
+  971: 				if(m_btWakeupFromLongMult == 1)
+0005CD 9049C1            MOV     DPTR,#m_btWakeupFromLongMult
+0005D0 E0                MOVX    A,@DPTR
+0005D1 FF                MOV     R7,A
+0005D2 6401              XRL     A,#01H
+0005D4 7002              JNZ     $ + 4H
+0005D6 E13F              AJMP    ?C0193?SYS
+  972: 					break;
+0005D8         ?C0177?SYS:
+  973: 				if(m_btWakeupFromLongMult == 2)
+0005D8 EF                MOV     A,R7
+0005D9 B40206            CJNE    A,#02H,?C0176?SYS
+  974: 					m_btWakeupFromLongMult = 1;
+0005DC 9049C1            MOV     DPTR,#m_btWakeupFromLongMult
+0005DF 7401              MOV     A,#01H
+0005E1 F0                MOVX    @DPTR,A
+  975: 			}
+0005E2         ?C0176?SYS:
+  976: 			SPI_Initialize();//spi
+0005E2 12173A            LCALL   SPI_Initialize
+  977: 			GPIO_SetOutput(Timer_div_io,1);
+0005E5 D207              SETB    ?_GPIO_SetOutput?BIT
+0005E7 7F07              MOV     R7,#07H
+0005E9 121075            LCALL   _GPIO_SetOutput
+  978: 			GPIO_SetInput(Timer_div_io,0);
+0005EC C206              CLR     ?_GPIO_SetInput?BIT
+0005EE 7F07              MOV     R7,#07H
+0005F0 71A1              ACALL   _GPIO_SetInput
+  979: 			Drawing_optima_init();
+0005F2 022152            LJMP    Drawing_optima_init
+  980: 			break;
+  981: #if MOUSE_BT_MODE_ENABLE			
+  982: 		case IPC_EVT_BB_CONNECTED:
+  983: 			IPC_TxControlCmd(IPC_CMD_STOP_ADV);
+  984: 			IPC_TxControlCmd(IPC_CMD_STOP_DISCOVERY);
+  985: 			g_variable.currentState = DEVICE_MODE_BB;
+  986: 			if (g_variable.reconnFlag)
+  987: 			{
+  988: 				g_variable.nextMode = DEVICE_MODE_NONE;
+  989: 			}
+  990: 			else 
+  991: 			{
+  992: 				g_variable.nextMode = DEVICE_MODE_DISC;
+  993: 			}
+  994: 			break;
+  995: 	
+  996: 		case IPC_EVT_PINCODE_REQ:
+  997: 			IPC_SetPincode("0000",4);
+  998: 			IPC_TxControlCmd(IPC_CMD_SET_PIN_CODE);
+  999: 			g_variable.nextMode = DEVICE_MODE_DISC;
+ 1000: 			break;
+ 1001: 		case IPC_EVT_HID_HANDSHAKE:
+ 1002: 			g_variable.currentState = DEVICE_MODE_BT;
+ 1003: 			sensorClearData();
+ 1004: 			IIC_WriteBlock(EEPROM_RECON_INFO_BASE,6,(u8_t *)m_remoteAddr);
+ 1005: 			Delay1ms(10);
+ 1006: 			IIC_WriteBlock(EEPROM_CONN_MODE,1,&g_variable.currentState);
+ 1007: 			IPC_TxControlCmd(IPC_CMD_ENTER_SNIFF);
+ 1008: 			g_variable.nextMode = DEVICE_MODE_NONE;
+ 1009: 			g_variable.reconnFlag = 0;
+ 1010: 			break;
+ 1011: 		case IPC_EVT_LINKKEY_GENERATE:
+ 1012: 			IIC_WriteBlock(EEPROM_LINK_KEY,16,(u8_t *)m_linkKey);
+ 1013: 			break;
+ 1014: 		case IPC_EVT_VIRTUAL_CABLE_UNPLUG:
+ 1015: 		case IPC_EVT_CLEAR_LINKKEY:
+ 1016: 			xmemclear_ff(m_remoteAddr,6);
+ 1017: 			IIC_WriteBlock(EEPROM_RECON_INFO_BASE,6,(u8_t *)m_remoteAddr);
+ 1018: 
+ 1019: 		case IPC_EVT_RECONN_FAILED:
+ 1020: 		case IPC_EVT_RECONN_PAGE_TIMEOUT:
+ 1021: 		case IPC_EVT_BB_DISCONNECTED:
+ 1022: 			if (g_variable.nextMode == DEVICE_MODE_24G) 
+ 1023: 			{
+ 1024: 				deviceSwitch24GMode();
+ 1025: 				g_variable.nextMode = DEVICE_MODE_NONE;
+ 1026: 				break;
+ 1027: 			}
+ 1028: 			else if (g_variable.nextMode == DEVICE_MODE_DISC) 
+ 1029: 			{
+ 1030: 				g_variable.currentState = DEVICE_MODE_DISC;
+ 1031: 				g_variable.nextMode = DEVICE_MODE_NONE;
+ 1032: 				
+ 1033: #if MOUSE_BT_MODE_ENABLE	
+ 1034: 				IPC_TxControlCmd(IPC_CMD_START_DISCOVERY);
+ 1035: #endif
+ 1036: 				leADVStart();
+ 1037: 				break;
+ 1038: 			}
+ 1039: 			g_variable.currentState = DEVICE_MODE_PREPARE_SLEEP;
+ 1040: 			break;
+ 1041: #endif			
+ 1042: 		case IPC_EVT_24G_PAIRING_COMPLETE:
+0005F5         ?C0179?SYS:
+ 1043: 			g_variable.currentState = DEVICE_MODE_24G;
+0005F5 904EBD            MOV     DPTR,#g_variable+02H
+0005F8 7401              MOV     A,#01H
+0005FA F0                MOVX    @DPTR,A
+ 1044: 			IIC_WriteBlock(EEPROM_CONN_MODE, 1,&g_variable.currentState);
+0005FB FB                MOV     R3,A
+0005FC 7A4E              MOV     R2,#HIGH g_variable+02H
+0005FE 79BD              MOV     R1,#LOW g_variable+02H
+000600 FD                MOV     R5,A
+000601 7C00              MOV     R4,#00H
+000603 7FA9              MOV     R7,#0A9H
+000605 7E7F              MOV     R6,#07FH
+000607 12126D            LCALL   _IIC_WriteBlock
+ 1045: 			IIC_WriteBlock(EEPROM_24G_ADDR,6,(u8_t *)m_24gRxPayload);
+00060A 7B01              MOV     R3,#01H
+00060C 7A49              MOV     R2,#HIGH m_24gRxPayload
+00060E 7906              MOV     R1,#LOW m_24gRxPayload
+000610 7D06              MOV     R5,#06H
+000612 7C00              MOV     R4,#00H
+000614 7FA2              MOV     R7,#0A2H
+000616 7E7F              MOV     R6,#07FH
+000618 12126D            LCALL   _IIC_WriteBlock
+ 1046: 			IPC_TxControlCmd( IPC_CMD_START_24G);
+00061B 7F23              MOV     R7,#023H
+00061D 020EA2            LJMP    _IPC_TxControlCmd
+ 1047: 			break;
+ 1048: 		case IPC_EVT_24G_ATTEMPT_FAIL:	
+000620         ?C0180?SYS:
+ 1049: 			deviceStop24g();
+000620 120F40            LCALL   deviceStop24g
+ 1050: 			g_variable.g24DongleExist = 0;
+000623 E4                CLR     A
+000624 904EE3            MOV     DPTR,#g_variable+028H
+000627 F0                MOVX    @DPTR,A
+ 1051: 			if (g_variable.Factory_Pwr_on_f)
+000628 904EF2            MOV     DPTR,#g_variable+037H
+00062B E0                MOVX    A,@DPTR
+00062C 6013              JZ      ?C0181?SYS
+ 1052: 			{
+ 1053: 				g_variable.Factory_Pwr_on_f++;
+00062E 04                INC     A
+00062F F0                MOVX    @DPTR,A
+ 1054: 				g_variable.Factory_Pwr_on_f = (g_variable.Factory_Pwr_on_f) & 0x07;
+000630 E0                MOVX    A,@DPTR
+000631 5407              ANL     A,#07H
+000633 F0                MOVX    @DPTR,A
+ 1055: 				if (g_variable.Factory_Pwr_on_f & 0x01)
+000634 30E005            JNB     ACC.0,?C0182?SYS
+ 1056: 					IPC_TxControlCmd(IPC_CMD_START_24G);
+000637 7F23              MOV     R7,#023H
+000639 020EA2            LJMP    _IPC_TxControlCmd
+00063C         ?C0182?SYS:
+ 1057: 				else 
+ 1058: 					IPC_TxControlCmd(IPC_CMD_PAIR_24G);
+00063C 7F25              MOV     R7,#025H
+00063E 020EA2            LJMP    _IPC_TxControlCmd
+ 1059: 				break;
+ 1060: 			}
+000641         ?C0181?SYS:
+ 1061: #if MOUSE_BT_MODE_ENABLE			
+ 1062: 			IIC_Read(EEPROM_CONN_MODE, 1,&curentMode);
+ 1063: 			Delay1ms(10);
+ 1064: 			if (curentMode == DEVICE_MODE_BT) 
+ 1065: 			{
+ 1066: 				Delay1ms(10);
+ 1067: 				IIC_Read(EEPROM_RECON_INFO_BASE ,6 , m_reconnAddr);
+ 1068: 				Delay1ms(10);
+ 1069: 				IIC_Read(EEPROM_LINK_KEY, 16, m_linkKey);
+ 1070: 				if (m_reconnAddr[0]!=0) 
+ 1071: 				{
+ 1072: 					g_variable.currentState = DEVICE_MODE_PAGE;
+ 1073: 					IPC_TxControlCmd(IPC_CMD_RECONNECT);
+ 1074: 					break;
+ 1075: 				}
+ 1076: 				else 
+ 1077: 				{
+ 1078: 					IPC_TxControlCmd(IPC_CMD_START_DISCOVERY);
+ 1079: 					break;
+ 1080: 				}
+ 1081: 			}
+ 1082: 			else
+ 1083: 			{
+ 1084: 				leReconnStart();
+ 1085: 			}
+ 1086: #else
+ 1087: 			IIC_Read(EEPROM_RECONN_LE_ADDR, 6,reconnLeAddr_buff);
+000641 7B01              MOV     R3,#01H
+000643 7A1B              MOV     R2,#HIGH reconnLeAddr_buff
+000645 79C3              MOV     R1,#LOW reconnLeAddr_buff
+000647 7D06              MOV     R5,#06H
+000649 7C00              MOV     R4,#00H
+00064B 7F9C              MOV     R7,#09CH
+00064D 7E7F              MOV     R6,#07FH
+00064F 121368            LCALL   _IIC_Read
+ 1088: 			if((reconnLeAddr_buff[0] == 0xff) && (reconnLeAddr_buff[1] == 0xff) 
+000652 901BC3            MOV     DPTR,#reconnLeAddr_buff
+000655 E0                MOVX    A,@DPTR
+000656 F4                CPL     A
+000657 7024              JNZ     ?C0184?SYS
+000659 A3                INC     DPTR
+00065A E0                MOVX    A,@DPTR
+00065B F4                CPL     A
+00065C 701F              JNZ     ?C0184?SYS
+00065E A3                INC     DPTR
+00065F E0                MOVX    A,@DPTR
+000660 B4FF1A            CJNE    A,#0FFH,?C0184?SYS
+000663 A3                INC     DPTR
+000664 E0                MOVX    A,@DPTR
+000665 B4FF15            CJNE    A,#0FFH,?C0184?SYS
+000668 A3                INC     DPTR
+000669 E0                MOVX    A,@DPTR
+00066A B4FF10            CJNE    A,#0FFH,?C0184?SYS
+00066D A3                INC     DPTR
+00066E E0                MOVX    A,@DPTR
+00066F B4FF0B            CJNE    A,#0FFH,?C0184?SYS
+ 1089: 				&& (reconnLeAddr_buff[2] == 0xff) && (reconnLeAddr_buff[3] == 0xff) 
+ 1090: 				&& (reconnLeAddr_buff[4] == 0xff) && (reconnLeAddr_buff[5] == 0xff)){
+ 1091: 				g_variable.enterHibernateFlag = 1;
+000672 904F01            MOV     DPTR,#g_variable+046H
+000675 7401              MOV     A,#01H
+000677 F0                MOVX    @DPTR,A
+ 1092: 				g_variable.enterHibernateTimer = 30;	//wait bt to exit 2.4G short lpm (about 50ms)
+000678 A3                INC     DPTR
+000679 741E              MOV     A,#01EH
+00067B F0                MOVX    @DPTR,A
+ 1093: 				break;
+00067C 22                RET     
+ 1094: 			}
+00067D         ?C0184?SYS:
+ 1095: 			leReconnStart();
+00067D 021458            LJMP    leReconnStart
+ 1096: #endif
+ 1097: 			break;
+ 1098: 		case IPC_EVT_24G_ATTEMPT_SUCCESS:
+000680         ?C0185?SYS:
+ 1099: 			sensorClearData();
+000680 120831            LCALL   sensorClearData
+ 1100: 			g_variable.g24DongleExist = 1;
+000683 904EE3            MOV     DPTR,#g_variable+028H
+000686 7401              MOV     A,#01H
+000688 F0                MOVX    @DPTR,A
+ 1101: 			g_variable.mouseFlag = 0;
+000689 E4                CLR     A
+00068A 904EF1            MOV     DPTR,#g_variable+036H
+00068D F0                MOVX    @DPTR,A
+ 1102: 			g_variable.Factory_Pwr_on_f = 0;
+00068E A3                INC     DPTR
+00068F F0                MOVX    @DPTR,A
+ 1103: //			curentMode = DEVICE_MODE_24G;
+ 1104: //			IIC_WriteBlock(EEPROM_CONN_MODE,1,&curentMode);
+ 1105: 			g_variable.nextMode = DEVICE_MODE_NONE;
+000690 904EBE            MOV     DPTR,#g_variable+03H
+000693 F0                MOVX    @DPTR,A
+ 1106: 			break;
+000694 22                RET     
+ 1107: 
+ 1108: 		case IPC_EVT_LE_NOTIFY_ENABLE:
+000695         ?C0186?SYS:
+ 1109: 			SPI_Initialize();//spi
+000695 12173A            LCALL   SPI_Initialize
+ 1110: 			SPI_TwReset();
+000698 120CF9            LCALL   SPI_TwReset
+ 1111: 			SPI_WriteSensor(0x80,0x06);			
+00069B 7D06              MOV     R5,#06H
+00069D 7F80              MOV     R7,#080H
+00069F 120A8E            LCALL   _SPI_WriteSensor
+ 1112: 			IIC_Read(EEPROM_DPI_ADDR, 1, &g_variable.dpiCount);
+0006A2 7B01              MOV     R3,#01H
+0006A4 7A4E              MOV     R2,#HIGH g_variable+020H
+0006A6 79DB              MOV     R1,#LOW g_variable+020H
+0006A8 7D01              MOV     R5,#01H
+0006AA 7C00              MOV     R4,#00H
+0006AC 7FA8              MOV     R7,#0A8H
+0006AE 7E7F              MOV     R6,#07FH
+0006B0 121368            LCALL   _IIC_Read
+ 1113: 			dpiWriteInSensor();
+0006B3 020AB9            LJMP    dpiWriteInSensor
+ 1114: 			break;
+ 1115: 		case IPC_EVT_LE_CONNECTED:
+0006B6         ?C0187?SYS:
+ 1116: 			m_51ReadSensor = 0;
+0006B6 E4                CLR     A
+0006B7 904E84            MOV     DPTR,#m_51ReadSensor
+0006BA F0                MOVX    @DPTR,A
+ 1117: 			IPC_TxControlCmd(IPC_CMD_STOP_ADV);
+0006BB 7F0E              MOV     R7,#0EH
+0006BD 120EA2            LCALL   _IPC_TxControlCmd
+ 1118: 			IPC_TxControlCmd(IPC_CMD_STOP_DISCOVERY);
+0006C0 7F02              MOV     R7,#02H
+0006C2 120EA2            LCALL   _IPC_TxControlCmd
+ 1119: 			g_variable.currentState = DEVICE_MODE_BLE_BB_CONNECT;
+0006C5 904EBD            MOV     DPTR,#g_variable+02H
+0006C8 7407              MOV     A,#07H
+0006CA F0                MOVX    @DPTR,A
+ 1120: 			curentMode = DEVICE_MODE_BLE;
+0006CB 901BBE            MOV     DPTR,#curentMode
+0006CE 7409              MOV     A,#09H
+0006D0 F0                MOVX    @DPTR,A
+ 1121: 			sensorClearData();
+0006D1 120831            LCALL   sensorClearData
+ 1122: 			IIC_WriteBlock(EEPROM_REMOTE_LE_ADDR,6,(u8_t *)m_remoteLeAddr);
+0006D4 7B01              MOV     R3,#01H
+0006D6 7A03              MOV     R2,#HIGH m_remoteLeAddr
+0006D8 7972              MOV     R1,#LOW m_remoteLeAddr
+0006DA 7D06              MOV     R5,#06H
+0006DC 7C00              MOV     R4,#00H
+0006DE 7F96              MOV     R7,#096H
+0006E0 7E7F              MOV     R6,#07FH
+0006E2 12126D            LCALL   _IIC_WriteBlock
+ 1123: 			Delay1ms(10);
+0006E5 7F0A              MOV     R7,#0AH
+0006E7 7E00              MOV     R6,#00H
+0006E9 1215B2            LCALL   _Delay1ms
+ 1124: 			IIC_WriteBlock(EEPROM_RECONN_LE_ADDR,6,(u8_t *)m_reconnLeAddr);
+0006EC 7B01              MOV     R3,#01H
+0006EE 7A45              MOV     R2,#HIGH m_reconnLeAddr
+0006F0 793E              MOV     R1,#LOW m_reconnLeAddr
+0006F2 7D06              MOV     R5,#06H
+0006F4 7C00              MOV     R4,#00H
+0006F6 7F9C              MOV     R7,#09CH
+0006F8 7E7F              MOV     R6,#07FH
+0006FA 12126D            LCALL   _IIC_WriteBlock
+ 1125: 			Delay1ms(10);				
+0006FD 7F0A              MOV     R7,#0AH
+0006FF 7E00              MOV     R6,#00H
+000701 1215B2            LCALL   _Delay1ms
+ 1126: 			IIC_WriteBlock(EEPROM_CONN_MODE,1,&curentMode);
+000704 7B01              MOV     R3,#01H
+000706 7A1B              MOV     R2,#HIGH curentMode
+000708 79BE              MOV     R1,#LOW curentMode
+00070A 7D01              MOV     R5,#01H
+00070C 7C00              MOV     R4,#00H
+00070E 7FA9              MOV     R7,#0A9H
+000710 7E7F              MOV     R6,#07FH
+000712 12126D            LCALL   _IIC_WriteBlock
+ 1127: 			g_variable.nextMode = DEVICE_MODE_PREPARE_SLEEP;
+000715 904EBE            MOV     DPTR,#g_variable+03H
+000718 7406              MOV     A,#06H
+00071A F0                MOVX    @DPTR,A
+ 1128: 			g_variable.reconnFlag = 0;
+00071B E4                CLR     A
+00071C 904EC2            MOV     DPTR,#g_variable+07H
+00071F F0                MOVX    @DPTR,A
+ 1129: 			break;
+000720 22                RET     
+ 1130: 		case IPC_EVT_LE_DISCONNECTED:	
+000721         ?C0188?SYS:
+ 1131: 			if(g_variable.nextMode == DEVICE_MODE_BLE_ADV)
+000721 904EBE            MOV     DPTR,#g_variable+03H
+000724 E0                MOVX    A,@DPTR
+000725 B4080A            CJNE    A,#08H,?C0189?SYS
+ 1132: 			{
+ 1133: #if MOUSE_BT_MODE_ENABLE	
+ 1134: 				IPC_TxControlCmd(IPC_CMD_START_DISCOVERY);
+ 1135: #endif
+ 1136: 				leADVStart();
+000728 120E62            LCALL   leADVStart
+ 1137: 				g_variable.currentState = DEVICE_MODE_DISC;
+00072B 904EBD            MOV     DPTR,#g_variable+02H
+00072E 7403              MOV     A,#03H
+000730 F0                MOVX    @DPTR,A
+ 1138: 			}
+000731 22                RET     
+000732         ?C0189?SYS:
+ 1139: 			else if(g_variable.nextMode == DEVICE_MODE_PREPARE_SLEEP)
+000732 904EBE            MOV     DPTR,#g_variable+03H
+000735 E0                MOVX    A,@DPTR
+000736 B40603            CJNE    A,#06H,?C0191?SYS
+ 1140: 			{
+ 1141: 				deviceLongSleep();
+000739 0216EA            LJMP    deviceLongSleep
+ 1142: 			}
+00073C         ?C0191?SYS:
+ 1143: 			else 
+ 1144: 			{
+ 1145: 				leReconnStart();
+00073C 121458            LCALL   leReconnStart
+ 1146: 			}
+ 1147: 			break;
+ 1148: 		}
+ 1149: 			
+ 1150: }
+00073F         ?C0193?SYS:
+00073F 22                RET     
+----- FUNCTION _deviceEvtCB (END) -------
+
+
+----- FUNCTION YC_SetWake (BEGIN) -----
+ FILE: 'sys.c'
+ 1366: void YC_SetWake(void)
+ 1367: {
+ 1368: 	(*(volatile unsigned char xdata *)(mem_gpio_wakeup_low+0)) = 0;
+ 1369: 	(*(volatile unsigned char xdata *)(mem_gpio_wakeup_low+1)) = 0;
+000740 9000A0            MOV     DPTR,#0A0H
+000743 E4                CLR     A
+000744 F0                MOVX    @DPTR,A
+ 1370: 	(*(volatile unsigned char xdata *)(mem_gpio_wakeup_low+2)) = 0;
+000745 A3                INC     DPTR
+000746 F0                MOVX    @DPTR,A
+ 1371: 	(*(volatile unsigned char xdata *)(mem_gpio_wakeup_low+3)) = 0;
+000747 A3                INC     DPTR
+000748 F0                MOVX    @DPTR,A
+ 1372: 	Sensor_spi_disable();
+000749 A3                INC     DPTR
+00074A F0                MOVX    @DPTR,A
+ 1373: 	GPIO_SetOutput(Timer_div_io, 0);
+00074B 120B70            LCALL   Sensor_spi_disable
+ 1374: 	GPIO_SetInput(KS_BL_GPIO, 0);
+00074E C207              CLR     ?_GPIO_SetOutput?BIT
+000750 7F07              MOV     R7,#07H
+000752 121075            LCALL   _GPIO_SetOutput
+ 1375: 	GPIO_SetInput(KS_BR_GPIO, 0);
+000755 C206              CLR     ?_GPIO_SetInput?BIT
+000757 7F04              MOV     R7,#04H
+000759 71A1              ACALL   _GPIO_SetInput
+ 1376: 	GPIO_SetInput(KS_BM_GPIO, 0);
+00075B C206              CLR     ?_GPIO_SetInput?BIT
+00075D 7F1B              MOV     R7,#01BH
+00075F 71A1              ACALL   _GPIO_SetInput
+ 1377: 	GPIO_SetInput(KS_BK_GPIO, 0);
+000761 C206              CLR     ?_GPIO_SetInput?BIT
+000763 7F17              MOV     R7,#017H
+000765 71A1              ACALL   _GPIO_SetInput
+ 1378: 	GPIO_SetInput(KS_FW_GPIO, 0);
+000767 C206              CLR     ?_GPIO_SetInput?BIT
+000769 7F17              MOV     R7,#017H
+00076B 71A1              ACALL   _GPIO_SetInput
+ 1379: 	GPIO_SetInput(CPI_GPIO, 0);
+00076D C206              CLR     ?_GPIO_SetInput?BIT
+00076F 7F04              MOV     R7,#04H
+000771 71A1              ACALL   _GPIO_SetInput
+ 1380: 	GPIO_SetWakeupByCurrentState(WHEEL_DATA_A_GPIO);
+000773 C206              CLR     ?_GPIO_SetInput?BIT
+000775 7F06              MOV     R7,#06H
+000777 71A1              ACALL   _GPIO_SetInput
+ 1381: 	GPIO_SetWakeupByCurrentState(WHEEL_DATA_B_GPIO);
+000779 7F02              MOV     R7,#02H
+00077B F197              ACALL   _GPIO_SetWakeupByCurrentState
+ 1382: 	GPIO_SetWakeupByCurrentState(KS_BL_GPIO);
+00077D 7F03              MOV     R7,#03H
+00077F F197              ACALL   _GPIO_SetWakeupByCurrentState
+ 1383: 	GPIO_SetWakeupByCurrentState(KS_BM_GPIO);
+000781 7F04              MOV     R7,#04H
+000783 F197              ACALL   _GPIO_SetWakeupByCurrentState
+ 1384: 	GPIO_SetWakeupByCurrentState(KS_BR_GPIO);
+000785 7F17              MOV     R7,#017H
+000787 F197              ACALL   _GPIO_SetWakeupByCurrentState
+ 1385: 	GPIO_SetWakeupByCurrentState(KS_BK_GPIO);
+000789 7F1B              MOV     R7,#01BH
+00078B F197              ACALL   _GPIO_SetWakeupByCurrentState
+ 1386: 	GPIO_SetWakeupByCurrentState(KS_FW_GPIO);
+00078D 7F17              MOV     R7,#017H
+00078F F197              ACALL   _GPIO_SetWakeupByCurrentState
+ 1387: 	GPIO_SetWakeupByCurrentState(CPI_GPIO);
+000791 7F04              MOV     R7,#04H
+000793 F197              ACALL   _GPIO_SetWakeupByCurrentState
+ 1388: }
+000795 7F06              MOV     R7,#06H
+;----                  JMP     _GPIO_SetWakeupByCurrentState
+----- FUNCTION YC_SetWake (END) -------
+
+
+----- FUNCTION _GPIO_SetWakeupByCurrentState (BEGIN) -----
+ FILE: 'gpio.c'
+   98: void GPIO_SetWakeupByCurrentState(u8_t gpio_num)
+   99: {
+000797 901C2C            MOV     DPTR,#gpio_num
+00079A EF                MOV     A,R7
+00079B F0                MOVX    @DPTR,A
+  100: 	bool st = GPIO_GetInputStatus(gpio_num);
+  101: 	GPIO_SetWakeup(gpio_num, ~st);
+00079C 120D4C            LCALL   _GPIO_GetInputStatus
+00079F 9209              MOV     st,C
+  102: }
+0007A1 901C2C            MOV     DPTR,#gpio_num
+0007A4 E0                MOVX    A,@DPTR
+0007A5 FF                MOV     R7,A
+0007A6 A209              MOV     C,st
+0007A8 B3                CPL     C
+0007A9 9208              MOV     ?_GPIO_SetWakeup?BIT,C
+;----                  JMP     _GPIO_SetWakeup
+----- FUNCTION _GPIO_SetWakeupByCurrentState (END) -------
+
+
+----- FUNCTION _GPIO_SetWakeup (BEGIN) -----
+ FILE: 'gpio.c'
+   74: void GPIO_SetWakeup(u8_t gpio_num, bit  st)
+   75: {
+;---- Variable 'gpio_num' assigned to Register 'R7' ----
+   76: 	u8_t queue, group;
+   77: 	queue = (gpio_num & 7);
+0007AB EF                MOV     A,R7
+0007AC 5407              ANL     A,#07H
+0007AE FE                MOV     R6,A
+;---- Variable 'queue' assigned to Register 'R6' ----
+   78: 	group = (gpio_num>>3 & 3);
+0007AF EF                MOV     A,R7
+0007B0 13                RRC     A
+0007B1 13                RRC     A
+0007B2 13                RRC     A
+0007B3 5403              ANL     A,#03H
+0007B5 FF                MOV     R7,A
+;---- Variable 'group' assigned to Register 'R7' ----
+   79: 	if (st){
+0007B6 300843            JNB     st,?C0012?GPIO
+   80: 		*(YC_GPIOWakeupL+group) &= ~(1<<queue);
+0007B9 24A0              ADD     A,#LOW YC_GPIOWakeupL
+0007BB F582              MOV     DPL,A
+0007BD E4                CLR     A
+0007BE 3400              ADDC    A,#HIGH YC_GPIOWakeupL
+0007C0 F583              MOV     DPH,A
+0007C2 C083              PUSH    DPH
+0007C4 C082              PUSH    DPL
+0007C6 E0                MOVX    A,@DPTR
+0007C7 FD                MOV     R5,A
+0007C8 7401              MOV     A,#01H
+0007CA A806              MOV     R0,AR6
+0007CC 08                INC     R0
+0007CD 8002              SJMP    ?C0025?GPIO
+0007CF         ?C0024?GPIO:
+0007CF C3                CLR     C
+0007D0 33                RLC     A
+0007D1         ?C0025?GPIO:
+0007D1 D8FC              DJNZ    R0,?C0024?GPIO
+0007D3 F4                CPL     A
+0007D4 5D                ANL     A,R5
+0007D5 D082              POP     DPL
+0007D7 D083              POP     DPH
+0007D9 F0                MOVX    @DPTR,A
+   81: 		*(YC_GPIOWakeupH+group) |= 1<<queue;	//high wakeup
+0007DA 74A4              MOV     A,#LOW YC_GPIOWakeupH
+0007DC 2F                ADD     A,R7
+0007DD F582              MOV     DPL,A
+0007DF E4                CLR     A
+0007E0 3400              ADDC    A,#HIGH YC_GPIOWakeupH
+0007E2 F583              MOV     DPH,A
+0007E4 C083              PUSH    DPH
+0007E6 C082              PUSH    DPL
+0007E8 E0                MOVX    A,@DPTR
+0007E9 FF                MOV     R7,A
+0007EA 7401              MOV     A,#01H
+0007EC A806              MOV     R0,AR6
+0007EE 08                INC     R0
+0007EF 8002              SJMP    ?C0027?GPIO
+0007F1         ?C0026?GPIO:
+0007F1 C3                CLR     C
+0007F2 33                RLC     A
+0007F3         ?C0027?GPIO:
+0007F3 D8FC              DJNZ    R0,?C0026?GPIO
+0007F5 4F                ORL     A,R7
+0007F6 D082              POP     DPL
+0007F8 D083              POP     DPH
+0007FA F0                MOVX    @DPTR,A
+   82: 	}
+0007FB 22                RET     
+0007FC         ?C0012?GPIO:
+   83: 	else{
+   84: 		*(YC_GPIOWakeupL+group) |= 1<<queue;	//low wakeup
+0007FC 74A0              MOV     A,#LOW YC_GPIOWakeupL
+0007FE 2F                ADD     A,R7
+0007FF F582              MOV     DPL,A
+000801 E4                CLR     A
+000802 3400              ADDC    A,#HIGH YC_GPIOWakeupL
+000804 F583              MOV     DPH,A
+000806 C083              PUSH    DPH
+000808 C082              PUSH    DPL
+00080A E0                MOVX    A,@DPTR
+00080B FD                MOV     R5,A
+00080C 7401              MOV     A,#01H
+00080E A806              MOV     R0,AR6
+000810 08                INC     R0
+000811 8002              SJMP    ?C0029?GPIO
+000813         ?C0028?GPIO:
+000813 C3                CLR     C
+000814 33                RLC     A
+000815         ?C0029?GPIO:
+000815 D8FC              DJNZ    R0,?C0028?GPIO
+000817 FC                MOV     R4,A
+000818 4D                ORL     A,R5
+000819 D082              POP     DPL
+00081B D083              POP     DPH
+00081D F0                MOVX    @DPTR,A
+   85: 		*(YC_GPIOWakeupH+group) &= ~(1<<queue);
+00081E 74A4              MOV     A,#LOW YC_GPIOWakeupH
+000820 2F                ADD     A,R7
+000821 F582              MOV     DPL,A
+000823 E4                CLR     A
+000824 3400              ADDC    A,#HIGH YC_GPIOWakeupH
+000826 F583              MOV     DPH,A
+000828 E0                MOVX    A,@DPTR
+000829 FF                MOV     R7,A
+00082A EC                MOV     A,R4
+00082B F4                CPL     A
+00082C FE                MOV     R6,A
+00082D EF                MOV     A,R7
+00082E 5E                ANL     A,R6
+00082F F0                MOVX    @DPTR,A
+   86: 	}
+   87: }
+000830 22                RET     
+----- FUNCTION _GPIO_SetWakeup (END) -------
+
+
+----- FUNCTION sensorClearData (BEGIN) -----
+ FILE: 'sys.c'
+  209: void sensorClearData()
+  210: {
+  211: 	sensorPowerOn();
+  212: 	SPI_TwReset();
+000831 91E3              ACALL   sensorPowerOn
+  213: 	while(!GPIO_GetInputStatus(SENSOR_MOTION_GPIO)){
+000833 91F9              ACALL   SPI_TwReset
+000835         ?C0001?SYS:
+  214: 		SPI_ReadSensor(SENSOR_MOTION);
+000835 7F18              MOV     R7,#018H
+000837 B14C              ACALL   _GPIO_GetInputStatus
+000839 400E              JC      ?C0003?SYS
+  215: 		SPI_ReadSensor(SENSOR_X_ADDR);
+00083B 7F02              MOV     R7,#02H
+00083D 114A              ACALL   _SPI_ReadSensor
+  216: 		SPI_ReadSensor(SENSOR_Y_ADDR);
+00083F 7F03              MOV     R7,#03H
+000841 114A              ACALL   _SPI_ReadSensor
+  217: 	}
+000843 7F04              MOV     R7,#04H
+000845 114A              ACALL   _SPI_ReadSensor
+  218: }
+000847 80EC              SJMP    ?C0001?SYS
+  219: 
+000849         ?C0003?SYS:
+000849 22                RET     
+----- FUNCTION sensorClearData (END) -------
+
+
+----- FUNCTION _SPI_ReadSensor (BEGIN) -----
+ FILE: 'spi.c'
+   26: u8_t SPI_ReadSensor(u8_t reg_num)
+   27: {
+;---- Variable 'reg_num' assigned to Register 'R7' ----
+   28: 	spi_tx_buff[0] = reg_num;
+   29: 	REG_SPID_TXLEN = ESWAP(READ_SENSOR_TXLEN);
+00084A 900218            MOV     DPTR,#spi_tx_buff
+00084D EF                MOV     A,R7
+00084E F0                MOVX    @DPTR,A
+   30: 	REG_SPID_RXLEN = ESWAP(READ_SENSOR_TXLEN);
+00084F 908088            MOV     DPTR,#08088H
+000852 7401              MOV     A,#01H
+000854 F0                MOVX    @DPTR,A
+000855 A3                INC     DPTR
+000856 E4                CLR     A
+000857 F0                MOVX    @DPTR,A
+   31: 	REG_MISC_CTRL = DMA_SPI_START;
+000858 90808E            MOV     DPTR,#0808EH
+00085B 04                INC     A
+00085C F0                MOVX    @DPTR,A
+00085D A3                INC     DPTR
+00085E E4                CLR     A
+00085F F0                MOVX    @DPTR,A
+   32: 	do {
+000860 908006            MOV     DPTR,#08006H
+000863 7402              MOV     A,#02H
+000865 F0                MOVX    @DPTR,A
+   33: 	
+   34: 	}
+000866         ?C0002?SPI:
+   35: 	while(!(REG_DMA_STATUS & 0x08));
+000866 90812C            MOV     DPTR,#0812CH
+000869 E0                MOVX    A,@DPTR
+00086A 30E3F9            JNB     ACC.3,?C0002?SPI
+   36: 	return  *spi_rx_buff;
+00086D 90021D            MOV     DPTR,#spi_rx_buff
+000870 E0                MOVX    A,@DPTR
+000871 FF                MOV     R7,A
+   37: }
+000872 22                RET     
+----- FUNCTION _SPI_ReadSensor (END) -------
+
+
+----- FUNCTION SPI_ResetSensor (BEGIN) -----
+ FILE: 'sensor.c'
+   90: u8_t SPI_ResetSensor()
+   91: {
+   92: 	u8_t sensorConfig=0;
+   93: 	u8_t Sensor_type = 0;
+000873 E4                CLR     A
+000874 901C27            MOV     DPTR,#sensorConfig
+000877 F0                MOVX    @DPTR,A
+   94: 	while (1) 
+000878 A3                INC     DPTR
+000879 F0                MOVX    @DPTR,A
+00087A         ?C0007?SENSOR:
+   95: 	{
+   96: 		if (SPI_ReadSensor(0) == FCT3065_ID)// FCT3065_ID PAW3205DB_ID
+   97: 		{
+00087A E4                CLR     A
+00087B FF                MOV     R7,A
+00087C 114A              ACALL   _SPI_ReadSensor
+00087E BF3118            CJNE    R7,#031H,?C0009?SENSOR
+   98: 			sensorConfig = SPI_ReadSensor(SENSOR_POWER)|0x80;
+   99: 			SPI_WriteSensor(sensorConfig, SENSOR_POWER);//dpi 1300
+000881 7F06              MOV     R7,#06H
+000883 114A              ACALL   _SPI_ReadSensor
+000885 EF                MOV     A,R7
+000886 4480              ORL     A,#080H
+000888 FF                MOV     R7,A
+000889 901C27            MOV     DPTR,#sensorConfig
+00088C F0                MOVX    @DPTR,A
+  100: 			Sensor_type= FCT3065_ID;
+00088D 7D06              MOV     R5,#06H
+00088F 518E              ACALL   _SPI_WriteSensor
+  101: 			break;
+000891 901C28            MOV     DPTR,#Sensor_type
+000894 7431              MOV     A,#031H
+000896 F0                MOVX    @DPTR,A
+  102: 		}
+000897 2152              AJMP    ?C0008?SENSOR
+  103: 		else if((SPI_ReadSensor(1) == MA8650_ID))
+000899         ?C0009?SENSOR:
+  104: 		{
+000899 7F01              MOV     R7,#01H
+00089B 114A              ACALL   _SPI_ReadSensor
+00089D BF5A18            CJNE    R7,#05AH,?C0011?SENSOR
+  105: 			Sensor_type= MA8650_ID;
+  106: 			sensorConfig = SPI_ReadSensor(SENSOR_POWER)|0x80;
+0008A0 901C28            MOV     DPTR,#Sensor_type
+0008A3 745A              MOV     A,#05AH
+0008A5 F0                MOVX    @DPTR,A
+  107: 			SPI_WriteSensor(sensorConfig, SENSOR_POWER);//dpi 1300
+0008A6 7F06              MOV     R7,#06H
+0008A8 114A              ACALL   _SPI_ReadSensor
+0008AA EF                MOV     A,R7
+0008AB 4480              ORL     A,#080H
+0008AD FF                MOV     R7,A
+0008AE 901C27            MOV     DPTR,#sensorConfig
+0008B1 F0                MOVX    @DPTR,A
+  108: 			break;
+0008B2 7D06              MOV     R5,#06H
+0008B4 518E              ACALL   _SPI_WriteSensor
+  109: 		}
+0008B6 2152              AJMP    ?C0008?SENSOR
+  110: 		else if (SPI_ReadSensor(0) == PIXART_ID)// FCT3065_ID PAW3205DB_ID
+0008B8         ?C0011?SENSOR:
+  111: 		{
+0008B8 E4                CLR     A
+0008B9 FF                MOV     R7,A
+0008BA 114A              ACALL   _SPI_ReadSensor
+0008BC EF                MOV     A,R7
+0008BD 6430              XRL     A,#030H
+0008BF 6002              JZ      $ + 4H
+0008C1 214E              AJMP    ?C0010?SENSOR
+  112: 			if(SPI_ReadSensor(1) == X816_ID)
+  113: 			{
+0008C3 7F01              MOV     R7,#01H
+0008C5 114A              ACALL   _SPI_ReadSensor
+0008C7 BF5408            CJNE    R7,#054H,?C0014?SENSOR
+  114: 				Sensor_type= FCT3065_ID;
+  115: 				break;
+0008CA 901C28            MOV     DPTR,#Sensor_type
+0008CD 7431              MOV     A,#031H
+0008CF F0                MOVX    @DPTR,A
+  116: 			}
+0008D0 2152              AJMP    ?C0008?SENSOR
+  117: #if MOUSE_3205_ENABLE
+0008D2         ?C0014?SENSOR:
+  118: 			if ((SPI_ReadSensor(1) & 0xf0) == PAW3205_ID)// FCT3065_ID PAW3205DB_ID
+0008D2 7F01              MOV     R7,#01H
+0008D4 114A              ACALL   _SPI_ReadSensor
+0008D6 EF                MOV     A,R7
+0008D7 54F0              ANL     A,#0F0H
+0008D9 64D0              XRL     A,#0D0H
+0008DB 7028              JNZ     ?C0015?SENSOR
+  119: 			{
+  120: 				if (SPI_ReadSensor(0x1e) & 0x01)
+0008DD 7F1E              MOV     R7,#01EH
+0008DF 114A              ACALL   _SPI_ReadSensor
+0008E1 EF                MOV     A,R7
+0008E2 30E008            JNB     ACC.0,?C0016?SENSOR
+  121: 					Sensor_type= PAW3204UL_ID;
+0008E5 901C28            MOV     DPTR,#Sensor_type
+0008E8 74D1              MOV     A,#0D1H
+0008EA F0                MOVX    @DPTR,A
+0008EB 8006              SJMP    ?C0017?SENSOR
+0008ED         ?C0016?SENSOR:
+  122: 				else 
+  123: 					Sensor_type= PAW3205_ID;
+0008ED 901C28            MOV     DPTR,#Sensor_type
+0008F0 74D0              MOV     A,#0D0H
+0008F2 F0                MOVX    @DPTR,A
+0008F3         ?C0017?SENSOR:
+  124: 				sensorConfig = SPI_ReadSensor(SENSOR_POWER)|0x80;
+0008F3 7F06              MOV     R7,#06H
+0008F5 114A              ACALL   _SPI_ReadSensor
+0008F7 EF                MOV     A,R7
+0008F8 4480              ORL     A,#080H
+0008FA FF                MOV     R7,A
+0008FB 901C27            MOV     DPTR,#sensorConfig
+0008FE F0                MOVX    @DPTR,A
+  125: 				SPI_WriteSensor(sensorConfig, SENSOR_POWER);//dpi 1300
+0008FF 7D06              MOV     R5,#06H
+000901 518E              ACALL   _SPI_WriteSensor
+  126: 				break;
+000903 804D              SJMP    ?C0008?SENSOR
+  127: 			}
+000905         ?C0015?SENSOR:
+  128: #endif
+  129: 
+  130: #if MOUSE_3204_ENABLE
+  131: 			if(((SPI_ReadSensor(1) & 0xf0) == PAW3204DB_ID))
+000905 7F01              MOV     R7,#01H
+000907 114A              ACALL   _SPI_ReadSensor
+000909 EF                MOV     A,R7
+00090A 54F0              ANL     A,#0F0H
+00090C FF                MOV     R7,A
+00090D BF5018            CJNE    R7,#050H,?C0018?SENSOR
+  132: 			{
+  133: 				Sensor_type= PAW3204DB_ID;
+000910 901C28            MOV     DPTR,#Sensor_type
+000913 7450              MOV     A,#050H
+000915 F0                MOVX    @DPTR,A
+  134: 				sensorConfig = SPI_ReadSensor(SENSOR_POWER)|0x80;
+000916 7F06              MOV     R7,#06H
+000918 114A              ACALL   _SPI_ReadSensor
+00091A EF                MOV     A,R7
+00091B 4480              ORL     A,#080H
+00091D FF                MOV     R7,A
+00091E 901C27            MOV     DPTR,#sensorConfig
+000921 F0                MOVX    @DPTR,A
+  135: 				SPI_WriteSensor(sensorConfig, SENSOR_POWER);//dpi 1300
+000922 7D06              MOV     R5,#06H
+000924 518E              ACALL   _SPI_WriteSensor
+  136: 				break;
+000926 802A              SJMP    ?C0008?SENSOR
+  137: 			}
+000928         ?C0018?SENSOR:
+  138: #endif
+  139: 			
+  140: #if MOUSE_3212_ENABLE
+  141: 			if (SPI_ReadSensor(1) == PAW3212_ID)// FCT3065_ID PAW3205DB_ID
+000928 7F01              MOV     R7,#01H
+00092A 114A              ACALL   _SPI_ReadSensor
+00092C BF021F            CJNE    R7,#02H,?C0010?SENSOR
+  142: 			{
+  143: 				sensorConfig = SPI_ReadSensor(SENSOR_POWER)|0x80;
+00092F 7F06              MOV     R7,#06H
+000931 114A              ACALL   _SPI_ReadSensor
+000933 EF                MOV     A,R7
+000934 4480              ORL     A,#080H
+000936 FF                MOV     R7,A
+000937 901C27            MOV     DPTR,#sensorConfig
+00093A F0                MOVX    @DPTR,A
+  144: 				SPI_WriteSensor(sensorConfig, SENSOR_POWER);//dpi 1300
+00093B 7D06              MOV     R5,#06H
+00093D 518E              ACALL   _SPI_WriteSensor
+  145: 				Sensor_type= PAW3212_ID;
+00093F 901C28            MOV     DPTR,#Sensor_type
+000942 7402              MOV     A,#02H
+000944 F0                MOVX    @DPTR,A
+  146: 				if (SPI_ReadSensor(1) == PAW3212_ID)
+000945 7F01              MOV     R7,#01H
+000947 114A              ACALL   _SPI_ReadSensor
+000949 EF                MOV     A,R7
+00094A 6402              XRL     A,#02H
+00094C 6004              JZ      ?C0008?SENSOR
+  147: 					break;
+00094E         ?C0020?SENSOR:
+  148: 			}
+  149: #endif
+  150: 		}
+00094E         ?C0010?SENSOR:
+  151: 		SPI_TwReset();
+00094E 91F9              ACALL   SPI_TwReset
+  152: 	}
+000950 017A              AJMP    ?C0007?SENSOR
+000952         ?C0008?SENSOR:
+  153: 
+  154: #if MOUSE_3205_ENABLE
+  155: 	if (Sensor_type== PAW3205_ID)
+000952 901C28            MOV     DPTR,#Sensor_type
+000955 E0                MOVX    A,@DPTR
+000956 64D0              XRL     A,#0D0H
+000958 6002              JZ      $ + 4H
+00095A 4122              AJMP    ?C0021?SENSOR
+  156: 	{
+  157: 		SPI_WriteSensor(0x5A,0x09);
+00095C 7D09              MOV     R5,#09H
+00095E 7F5A              MOV     R7,#05AH
+000960 518E              ACALL   _SPI_WriteSensor
+  158: 		SPI_WriteSensor(0x0A,0x0D);
+000962 7D0D              MOV     R5,#0DH
+000964 7F0A              MOV     R7,#0AH
+000966 518E              ACALL   _SPI_WriteSensor
+  159: 		SPI_WriteSensor(0x35,0x1B);
+000968 7D1B              MOV     R5,#01BH
+00096A 7F35              MOV     R7,#035H
+00096C 518E              ACALL   _SPI_WriteSensor
+  160: 		SPI_WriteSensor(0xDB,0x1D);
+00096E 7D1D              MOV     R5,#01DH
+000970 7FDB              MOV     R7,#0DBH
+000972 518E              ACALL   _SPI_WriteSensor
+  161: 		SPI_WriteSensor(0xB4,0x28);
+000974 7D28              MOV     R5,#028H
+000976 7FB4              MOV     R7,#0B4H
+000978 518E              ACALL   _SPI_WriteSensor
+  162: 		SPI_WriteSensor(0x46,0x29);
+00097A 7D29              MOV     R5,#029H
+00097C 7F46              MOV     R7,#046H
+00097E 518E              ACALL   _SPI_WriteSensor
+  163: 		SPI_WriteSensor(0x96,0x2A);
+000980 7D2A              MOV     R5,#02AH
+000982 7F96              MOV     R7,#096H
+000984 518E              ACALL   _SPI_WriteSensor
+  164: 		SPI_WriteSensor(0x8C,0x2B);
+000986 7D2B              MOV     R5,#02BH
+000988 7F8C              MOV     R7,#08CH
+00098A 518E              ACALL   _SPI_WriteSensor
+  165: 		SPI_WriteSensor(0x6E,0x2C);
+00098C 7D2C              MOV     R5,#02CH
+00098E 7F6E              MOV     R7,#06EH
+000990 518E              ACALL   _SPI_WriteSensor
+  166: 		SPI_WriteSensor(0x64,0x2D);
+000992 7D2D              MOV     R5,#02DH
+000994 7F64              MOV     R7,#064H
+000996 518E              ACALL   _SPI_WriteSensor
+  167: 		SPI_WriteSensor(0x5F,0x38);
+000998 7D38              MOV     R5,#038H
+00099A 7F5F              MOV     R7,#05FH
+00099C 518E              ACALL   _SPI_WriteSensor
+  168: 		SPI_WriteSensor(0x0F,0x39);
+00099E 7D39              MOV     R5,#039H
+0009A0 7F0F              MOV     R7,#0FH
+0009A2 518E              ACALL   _SPI_WriteSensor
+  169: 		SPI_WriteSensor(0x32,0x3A);
+0009A4 7D3A              MOV     R5,#03AH
+0009A6 7F32              MOV     R7,#032H
+0009A8 518E              ACALL   _SPI_WriteSensor
+  170: 		SPI_WriteSensor(0x47,0x3B);
+0009AA 7D3B              MOV     R5,#03BH
+0009AC 7F47              MOV     R7,#047H
+0009AE 518E              ACALL   _SPI_WriteSensor
+  171: 		SPI_WriteSensor(0x10,0x42);
+0009B0 7D42              MOV     R5,#042H
+0009B2 7F10              MOV     R7,#010H
+0009B4 518E              ACALL   _SPI_WriteSensor
+  172: 		SPI_WriteSensor(0x09,0x43);
+0009B6 7D43              MOV     R5,#043H
+0009B8 7F09              MOV     R7,#09H
+0009BA 518E              ACALL   _SPI_WriteSensor
+  173: 		SPI_WriteSensor(0x2E,0x54);
+0009BC 7D54              MOV     R5,#054H
+0009BE 7F2E              MOV     R7,#02EH
+0009C0 518E              ACALL   _SPI_WriteSensor
+  174: 		SPI_WriteSensor(0xF2,0x55);
+0009C2 7D55              MOV     R5,#055H
+0009C4 7FF2              MOV     R7,#0F2H
+0009C6 518E              ACALL   _SPI_WriteSensor
+  175: 		SPI_WriteSensor(0xF4,0x61);
+0009C8 7D61              MOV     R5,#061H
+0009CA 7FF4              MOV     R7,#0F4H
+0009CC 518E              ACALL   _SPI_WriteSensor
+  176: 		SPI_WriteSensor(0x70,0x63);
+0009CE 7D63              MOV     R5,#063H
+0009D0 7F70              MOV     R7,#070H
+0009D2 518E              ACALL   _SPI_WriteSensor
+  177: 		SPI_WriteSensor(0x52,0x75);
+0009D4 7D75              MOV     R5,#075H
+0009D6 7F52              MOV     R7,#052H
+0009D8 518E              ACALL   _SPI_WriteSensor
+  178: 		SPI_WriteSensor(0x41,0x76);
+0009DA 7D76              MOV     R5,#076H
+0009DC 7F41              MOV     R7,#041H
+0009DE 518E              ACALL   _SPI_WriteSensor
+  179: 		SPI_WriteSensor(0xED,0x77);
+0009E0 7D77              MOV     R5,#077H
+0009E2 7FED              MOV     R7,#0EDH
+0009E4 518E              ACALL   _SPI_WriteSensor
+  180: 		SPI_WriteSensor(0x23,0x78);
+0009E6 7D78              MOV     R5,#078H
+0009E8 7F23              MOV     R7,#023H
+0009EA 518E              ACALL   _SPI_WriteSensor
+  181: 		SPI_WriteSensor(0x46,0x79);
+0009EC 7D79              MOV     R5,#079H
+0009EE 7F46              MOV     R7,#046H
+0009F0 518E              ACALL   _SPI_WriteSensor
+  182: 		SPI_WriteSensor(0xE5,0x7A);
+0009F2 7D7A              MOV     R5,#07AH
+0009F4 7FE5              MOV     R7,#0E5H
+0009F6 518E              ACALL   _SPI_WriteSensor
+  183: 		SPI_WriteSensor(0x48,0x7C);
+0009F8 7D7C              MOV     R5,#07CH
+0009FA 7F48              MOV     R7,#048H
+0009FC 518E              ACALL   _SPI_WriteSensor
+  184: 		SPI_WriteSensor(0x80,0x7D);
+0009FE 7D7D              MOV     R5,#07DH
+000A00 7F80              MOV     R7,#080H
+000A02 518E              ACALL   _SPI_WriteSensor
+  185: 		SPI_WriteSensor(0x77,0x7E);
+000A04 7D7E              MOV     R5,#07EH
+000A06 7F77              MOV     R7,#077H
+000A08 518E              ACALL   _SPI_WriteSensor
+  186: 		SPI_WriteSensor(0x01,0x7F);
+000A0A 7D7F              MOV     R5,#07FH
+000A0C 7F01              MOV     R7,#01H
+000A0E 518E              ACALL   _SPI_WriteSensor
+  187: 		SPI_WriteSensor(0x00,0x0B);
+000A10 7D0B              MOV     R5,#0BH
+000A12 E4                CLR     A
+000A13 FF                MOV     R7,A
+000A14 518E              ACALL   _SPI_WriteSensor
+  188: 		SPI_WriteSensor(0x00,0x7F);
+000A16 7D7F              MOV     R5,#07FH
+000A18 E4                CLR     A
+000A19 FF                MOV     R7,A
+000A1A 518E              ACALL   _SPI_WriteSensor
+  189: 		SPI_WriteSensor(0x00,0x09);
+000A1C 7D09              MOV     R5,#09H
+000A1E E4                CLR     A
+000A1F FF                MOV     R7,A
+000A20 518E              ACALL   _SPI_WriteSensor
+  190: 	}
+000A22         ?C0021?SENSOR:
+  191: #endif
+  192: 
+  193: #if MOUSE_3212_ENABLE
+  194: 	if(Sensor_type== PAW3212_ID) 
+000A22 901C28            MOV     DPTR,#Sensor_type
+000A25 E0                MOVX    A,@DPTR
+000A26 B40218            CJNE    A,#02H,?C0022?SENSOR
+  195: 	{
+  196: 		SPI_WriteSensor(0x5a, 0x09);
+000A29 7D09              MOV     R5,#09H
+000A2B 7F5A              MOV     R7,#05AH
+000A2D 518E              ACALL   _SPI_WriteSensor
+  197: 		SPI_WriteSensor(0x34, 0x26);
+000A2F 7D26              MOV     R5,#026H
+000A31 7F34              MOV     R7,#034H
+000A33 518E              ACALL   _SPI_WriteSensor
+  198: 		SPI_WriteSensor(0x14, 0x19);	
+000A35 7D19              MOV     R5,#019H
+000A37 7F14              MOV     R7,#014H
+000A39 518E              ACALL   _SPI_WriteSensor
+  199: 		SPI_WriteSensor(0x00, 0x09);
+000A3B 7D09              MOV     R5,#09H
+000A3D E4                CLR     A
+000A3E FF                MOV     R7,A
+000A3F 518E              ACALL   _SPI_WriteSensor
+  200: 	}
+000A41         ?C0022?SENSOR:
+  201: #endif
+  202: 
+  203: #if MOUSE_3204_ENABLE
+  204: 	if(Sensor_type== PAW3204DB_ID)
+000A41 901C28            MOV     DPTR,#Sensor_type
+000A44 E0                MOVX    A,@DPTR
+000A45 6450              XRL     A,#050H
+000A47 703F              JNZ     ?C0023?SENSOR
+  205: 	{
+  206: 		SPI_WriteSensor(0x5a, 0x09);
+000A49 7D09              MOV     R5,#09H
+000A4B 7F5A              MOV     R7,#05AH
+000A4D 518E              ACALL   _SPI_WriteSensor
+  207: 		SPI_WriteSensor(0x9a, 0x5b);
+000A4F 7D5B              MOV     R5,#05BH
+000A51 7F9A              MOV     R7,#09AH
+000A53 518E              ACALL   _SPI_WriteSensor
+000A55         ?C0024?SENSOR:
+  208: 		while (SPI_ReadSensor(0x0d) != 0x12)
+000A55 7F0D              MOV     R7,#0DH
+000A57 114A              ACALL   _SPI_ReadSensor
+000A59 EF                MOV     A,R7
+000A5A 6412              XRL     A,#012H
+000A5C 6008              JZ      ?C0026?SENSOR
+  209: 			SPI_WriteSensor(0x12, 0x0d);
+000A5E 7D0D              MOV     R5,#0DH
+000A60 7F12              MOV     R7,#012H
+000A62 518E              ACALL   _SPI_WriteSensor
+000A64 80EF              SJMP    ?C0024?SENSOR
+000A66         ?C0026?SENSOR:
+  210: 		while (SPI_ReadSensor(0x0e) != 0xc5)
+000A66 7F0E              MOV     R7,#0EH
+000A68 114A              ACALL   _SPI_ReadSensor
+000A6A EF                MOV     A,R7
+000A6B 64C5              XRL     A,#0C5H
+000A6D 6008              JZ      ?C0028?SENSOR
+  211: 			SPI_WriteSensor(0xc5, 0x0e);
+000A6F 7D0E              MOV     R5,#0EH
+000A71 7FC5              MOV     R7,#0C5H
+000A73 518E              ACALL   _SPI_WriteSensor
+000A75 80EF              SJMP    ?C0026?SENSOR
+000A77         ?C0028?SENSOR:
+  212: 		while (SPI_ReadSensor(0x53) != 0x48)
+000A77 7F53              MOV     R7,#053H
+000A79 114A              ACALL   _SPI_ReadSensor
+000A7B EF                MOV     A,R7
+000A7C 6448              XRL     A,#048H
+000A7E 6008              JZ      ?C0023?SENSOR
+  213: 			SPI_WriteSensor(0x48, 0x53);
+000A80 7D53              MOV     R5,#053H
+000A82 7F48              MOV     R7,#048H
+000A84 518E              ACALL   _SPI_WriteSensor
+000A86 80EF              SJMP    ?C0028?SENSOR
+  214: 	}
+000A88         ?C0023?SENSOR:
+  215: #endif
+  216: 
+  217: 	return Sensor_type;
+000A88 901C28            MOV     DPTR,#Sensor_type
+000A8B E0                MOVX    A,@DPTR
+000A8C FF                MOV     R7,A
+  218: }
+000A8D 22                RET     
+----- FUNCTION SPI_ResetSensor (END) -------
+
+
+----- FUNCTION _SPI_WriteSensor (BEGIN) -----
+ FILE: 'spi.c'
+   39: u8_t SPI_WriteSensor(u8_t value, u8_t reg_num)
+   40: {
+;---- Variable 'reg_num' assigned to Register 'R5' ----
+;---- Variable 'value' assigned to Register 'R4' ----
+000A8E AC07              MOV     R4,AR7
+   41: 	spi_tx_buff[0] = reg_num|0x80;
+   42: 	spi_tx_buff[1] = value;
+000A90 ED                MOV     A,R5
+000A91 4480              ORL     A,#080H
+000A93 900218            MOV     DPTR,#spi_tx_buff
+000A96 F0                MOVX    @DPTR,A
+   43: 
+000A97 A3                INC     DPTR
+000A98 EF                MOV     A,R7
+000A99 F0                MOVX    @DPTR,A
+   44: 	REG_SPID_TXLEN = ESWAP(WRITE_SENSOR_TXLEN);
+000A9A 908088            MOV     DPTR,#08088H
+000A9D 7402              MOV     A,#02H
+000A9F F0                MOVX    @DPTR,A
+000AA0 A3                INC     DPTR
+000AA1 E4                CLR     A
+000AA2 F0                MOVX    @DPTR,A
+   45: 	REG_SPID_RXLEN = ESWAP(WRITE_SENSOR_RXLEN);
+000AA3 90808E            MOV     DPTR,#0808EH
+000AA6 F0                MOVX    @DPTR,A
+000AA7 A3                INC     DPTR
+000AA8 F0                MOVX    @DPTR,A
+   46: 
+   47: 	REG_MISC_CTRL = DMA_SPI_START;
+000AA9 908006            MOV     DPTR,#08006H
+000AAC 7402              MOV     A,#02H
+000AAE F0                MOVX    @DPTR,A
+   48: 	do {
+   49: 		
+   50: 	}
+000AAF         ?C0006?SPI:
+   51: 	while(!(REG_DMA_STATUS & 0x08));
+000AAF 90812C            MOV     DPTR,#0812CH
+000AB2 E0                MOVX    A,@DPTR
+000AB3 30E3F9            JNB     ACC.3,?C0006?SPI
+   52: 	return 0;
+000AB6 7F00              MOV     R7,#00H
+   53: }
+000AB8 22                RET     
+----- FUNCTION _SPI_WriteSensor (END) -------
+
+
+----- FUNCTION dpiWriteInSensor (BEGIN) -----
+ FILE: 'sys.c'
+  220: void dpiWriteInSensor()
+  221: {
+  222: 	SPI_TwReset();
+  223: #if MOUSE_3205_ENABLE
+000AB9 91F9              ACALL   SPI_TwReset
+  224: 	if((g_variable.sensorType == PAW3205_ID) ||(g_variable.sensorType == PAW3204UL_ID)) 
+000ABB 904ED9            MOV     DPTR,#g_variable+01EH
+000ABE E0                MOVX    A,@DPTR
+000ABF FF                MOV     R7,A
+000AC0 64D0              XRL     A,#0D0H
+000AC2 6004              JZ      ?C0005?SYS
+000AC4 EF                MOV     A,R7
+000AC5 B4D10A            CJNE    A,#0D1H,?C0004?SYS
+000AC8         ?C0005?SYS:
+  225: 	{
+  226: 		SPI_WriteSensor((g_variable.dpiCount+1), SENSOR_POWER);
+000AC8 904EDB            MOV     DPTR,#g_variable+020H
+000ACB E0                MOVX    A,@DPTR
+000ACC 04                INC     A
+000ACD FF                MOV     R7,A
+000ACE 7D06              MOV     R5,#06H
+000AD0 518E              ACALL   _SPI_WriteSensor
+  227: 	}
+000AD2         ?C0004?SYS:
+  228: #endif
+  229: 
+  230: 	if (g_variable.sensorType == FCT3065_ID)
+000AD2 904ED9            MOV     DPTR,#g_variable+01EH
+000AD5 E0                MOVX    A,@DPTR
+000AD6 B43118            CJNE    A,#031H,?C0006?SYS
+  231: 	{
+  232: 		if(g_variable.dpiCount == 1)
+000AD9 904EDB            MOV     DPTR,#g_variable+020H
+000ADC E0                MOVX    A,@DPTR
+000ADD B40108            CJNE    A,#01H,?C0007?SYS
+  233: 			SPI_WriteSensor(0, SENSOR_POWER);
+000AE0 7D06              MOV     R5,#06H
+000AE2 E4                CLR     A
+000AE3 FF                MOV     R7,A
+000AE4 518E              ACALL   _SPI_WriteSensor
+000AE6 8009              SJMP    ?C0006?SYS
+000AE8         ?C0007?SYS:
+  234: 		else
+  235: 			SPI_WriteSensor(g_variable.dpiCount, SENSOR_POWER);
+000AE8 904EDB            MOV     DPTR,#g_variable+020H
+000AEB E0                MOVX    A,@DPTR
+000AEC FF                MOV     R7,A
+000AED 7D06              MOV     R5,#06H
+000AEF 518E              ACALL   _SPI_WriteSensor
+  236: 	}
+000AF1         ?C0006?SYS:
+  237: 	
+  238: #if MOUSE_3204_ENABLE
+  239: 	if (g_variable.sensorType == PAW3204DB_ID)
+000AF1 904ED9            MOV     DPTR,#g_variable+01EH
+000AF4 E0                MOVX    A,@DPTR
+000AF5 B4500B            CJNE    A,#050H,?C0009?SYS
+  240: 	{
+  241: 		SPI_WriteSensor((g_variable.dpiCount+3), SENSOR_POWER);
+000AF8 904EDB            MOV     DPTR,#g_variable+020H
+000AFB E0                MOVX    A,@DPTR
+000AFC 2403              ADD     A,#03H
+000AFE FF                MOV     R7,A
+000AFF 7D06              MOV     R5,#06H
+000B01 518E              ACALL   _SPI_WriteSensor
+  242: 	}
+000B03         ?C0009?SYS:
+  243: #endif
+  244: 
+  245: #if MOUSE_8650_ENABLE
+  246: 	if (g_variable.sensorType == MA8650_ID)
+000B03 904ED9            MOV     DPTR,#g_variable+01EH
+000B06 E0                MOVX    A,@DPTR
+000B07 B45A0B            CJNE    A,#05AH,?C0010?SYS
+  247: 	{
+  248: 		SPI_WriteSensor((g_variable.dpiCount+3), SENSOR_POWER);
+000B0A 904EDB            MOV     DPTR,#g_variable+020H
+000B0D E0                MOVX    A,@DPTR
+000B0E 2403              ADD     A,#03H
+000B10 FF                MOV     R7,A
+000B11 7D06              MOV     R5,#06H
+000B13 518E              ACALL   _SPI_WriteSensor
+  249: 	}
+000B15         ?C0010?SYS:
+  250: #endif
+  251: 
+  252: #if MOUSE_3212_ENABLE	
+  253: 	if (g_variable.sensorType == PAW3212_ID) 
+000B15 904ED9            MOV     DPTR,#g_variable+01EH
+000B18 E0                MOVX    A,@DPTR
+000B19 6402              XRL     A,#02H
+000B1B 7053              JNZ     ?C0011?SYS
+  254: 	{
+  255: 		SPI_WriteSensor(0x5a,0x09);
+000B1D 7D09              MOV     R5,#09H
+000B1F 7F5A              MOV     R7,#05AH
+000B21 518E              ACALL   _SPI_WriteSensor
+  256: 		switch (g_variable.dpiCount)
+000B23 904EDB            MOV     DPTR,#g_variable+020H
+000B26 E0                MOVX    A,@DPTR
+000B27 14                DEC     A
+000B28 6018              JZ      ?C0014?SYS
+000B2A 14                DEC     A
+000B2B 6023              JZ      ?C0015?SYS
+000B2D 14                DEC     A
+000B2E 602E              JZ      ?C0016?SYS
+000B30 2403              ADD     A,#03H
+000B32 7036              JNZ     ?C0012?SYS
+  257: 		{
+  258: 			case 0:
+000B34         ?C0013?SYS:
+  259: 				SPI_WriteSensor(PAW3212_DPI0, 0x0d);
+000B34 7D0D              MOV     R5,#0DH
+000B36 7F15              MOV     R7,#015H
+000B38 518E              ACALL   _SPI_WriteSensor
+  260: 				SPI_WriteSensor(PAW3212_DPI0, 0x0e);
+000B3A 7D0E              MOV     R5,#0EH
+000B3C 7F15              MOV     R7,#015H
+000B3E 518E              ACALL   _SPI_WriteSensor
+  261: 				break;
+000B40 8028              SJMP    ?C0012?SYS
+  262: 			case 1:
+000B42         ?C0014?SYS:
+  263: 				SPI_WriteSensor(PAW3212_DPI1, 0x0d);
+000B42 7D0D              MOV     R5,#0DH
+000B44 7F20              MOV     R7,#020H
+000B46 518E              ACALL   _SPI_WriteSensor
+  264: 				SPI_WriteSensor(PAW3212_DPI1, 0x0e);
+000B48 7D0E              MOV     R5,#0EH
+000B4A 7F20              MOV     R7,#020H
+000B4C 518E              ACALL   _SPI_WriteSensor
+  265: 				break;				
+000B4E 801A              SJMP    ?C0012?SYS
+  266: 			case 2:
+000B50         ?C0015?SYS:
+  267: 				SPI_WriteSensor(PAW3212_DPI2, 0x0d);
+000B50 7D0D              MOV     R5,#0DH
+000B52 7F2A              MOV     R7,#02AH
+000B54 518E              ACALL   _SPI_WriteSensor
+  268: 				SPI_WriteSensor(PAW3212_DPI2, 0x0e);
+000B56 7D0E              MOV     R5,#0EH
+000B58 7F2A              MOV     R7,#02AH
+000B5A 518E              ACALL   _SPI_WriteSensor
+  269: 				break;
+000B5C 800C              SJMP    ?C0012?SYS
+  270: 			case 3:
+000B5E         ?C0016?SYS:
+  271: 				SPI_WriteSensor(PAW3212_DPI3, 0x0d);
+000B5E 7D0D              MOV     R5,#0DH
+000B60 7F3F              MOV     R7,#03FH
+000B62 518E              ACALL   _SPI_WriteSensor
+  272: 				SPI_WriteSensor(PAW3212_DPI3, 0x0e);
+000B64 7D0E              MOV     R5,#0EH
+000B66 7F3F              MOV     R7,#03FH
+000B68 518E              ACALL   _SPI_WriteSensor
+  273: 				break;
+  274: 			default:
+  275: 				break;
+  276: 		}
+000B6A         ?C0012?SYS:
+  277: 		SPI_WriteSensor(0x00,0x09);
+000B6A 7D09              MOV     R5,#09H
+000B6C E4                CLR     A
+000B6D FF                MOV     R7,A
+000B6E 518E              ACALL   _SPI_WriteSensor
+  278: 	}
+000B70         ?C0011?SYS:
+;----                  JMP     Sensor_spi_disable
+  279: #endif
+  280: 
+  281: 	Sensor_spi_disable();
+----- FUNCTION dpiWriteInSensor (END) -------
+
+
+----- FUNCTION Sensor_spi_disable (BEGIN) -----
+ FILE: 'sensor.c'
+  220: void Sensor_spi_disable(void)
+  221: {
+  222: 	REG_GPIO_SEL(1) = 0;
+  223: 	REG_GPIO_OE(3) |= 0x02;
+000B70 908081            MOV     DPTR,#08081H
+000B73 E4                CLR     A
+000B74 F0                MOVX    @DPTR,A
+  224: 	REG_GPIO_OUT(3) |= 0x02;
+000B75 908073            MOV     DPTR,#08073H
+000B78 E0                MOVX    A,@DPTR
+000B79 4402              ORL     A,#02H
+000B7B F0                MOVX    @DPTR,A
+  225: }
+000B7C 908077            MOV     DPTR,#08077H
+000B7F E0                MOVX    A,@DPTR
+000B80 4402              ORL     A,#02H
+000B82 F0                MOVX    @DPTR,A
+  226: 
+000B83 22                RET     
+----- FUNCTION Sensor_spi_disable (END) -------
+
+
+----- FUNCTION mouseReadSensor (BEGIN) -----
+ FILE: 'sys.c'
+  513: static bool mouseReadSensor(void)
+  514: {
+  515: 	u8_t deltaXL=0, deltaYL=0, deltaXH=0, deltaYH=0;
+  516: 
+000B84 E4                CLR     A
+000B85 901C06            MOV     DPTR,#deltaXL
+000B88 F0                MOVX    @DPTR,A
+000B89 A3                INC     DPTR
+000B8A F0                MOVX    @DPTR,A
+000B8B A3                INC     DPTR
+000B8C F0                MOVX    @DPTR,A
+000B8D A3                INC     DPTR
+000B8E F0                MOVX    @DPTR,A
+  517: 	if(1 == GPIO_GetInputStatus(SENSOR_MOTION_GPIO)){
+000B8F 7F18              MOV     R7,#018H
+000B91 B14C              ACALL   _GPIO_GetInputStatus
+000B93 5002              JNC     ?C0091?SYS
+  518: 		return 0;
+000B95 C3                CLR     C
+000B96 22                RET     
+  519: 	}
+000B97         ?C0091?SYS:
+  520: 	
+  521: 	SPI_TwReset();
+000B97 91F9              ACALL   SPI_TwReset
+  522: 
+  523: 	if ((SPI_ReadSensor(2)&0x80)){
+000B99 7F02              MOV     R7,#02H
+000B9B 114A              ACALL   _SPI_ReadSensor
+000B9D EF                MOV     A,R7
+000B9E 20E702            JB      ACC.7,$ + 5H
+000BA1 81E1              AJMP    ?C0093?SYS
+  524: 
+  525: 		g_variable.wheelTimer= 2;
+000BA3 904EC7            MOV     DPTR,#g_variable+0CH
+000BA6 7402              MOV     A,#02H
+000BA8 F0                MOVX    @DPTR,A
+  526: 		if(g_variable.sensorType != PAW3212_ID ){
+000BA9 904ED9            MOV     DPTR,#g_variable+01EH
+000BAC E0                MOVX    A,@DPTR
+000BAD 6402              XRL     A,#02H
+000BAF 6016              JZ      ?C0094?SYS
+  527: 			deltaXL = SPI_ReadSensor(SENSOR_X_ADDR);
+000BB1 7F03              MOV     R7,#03H
+000BB3 114A              ACALL   _SPI_ReadSensor
+000BB5 901C06            MOV     DPTR,#deltaXL
+000BB8 EF                MOV     A,R7
+000BB9 F0                MOVX    @DPTR,A
+  528: 			deltaYL = 0 - SPI_ReadSensor(SENSOR_Y_ADDR);
+000BBA 7F04              MOV     R7,#04H
+000BBC 114A              ACALL   _SPI_ReadSensor
+000BBE EF                MOV     A,R7
+000BBF F4                CPL     A
+000BC0 04                INC     A
+000BC1 901C07            MOV     DPTR,#deltaYL
+000BC4 F0                MOVX    @DPTR,A
+  529: 		}
+000BC5 8029              SJMP    ?C0095?SYS
+000BC7         ?C0094?SYS:
+  530: 		else {
+  531: 			deltaXL = SPI_ReadSensor(SENSOR_X_ADDR);
+000BC7 7F03              MOV     R7,#03H
+000BC9 114A              ACALL   _SPI_ReadSensor
+000BCB 901C06            MOV     DPTR,#deltaXL
+000BCE EF                MOV     A,R7
+000BCF F0                MOVX    @DPTR,A
+  532: 			deltaYL = SPI_ReadSensor(SENSOR_Y_ADDR);
+000BD0 7F04              MOV     R7,#04H
+000BD2 114A              ACALL   _SPI_ReadSensor
+000BD4 901C07            MOV     DPTR,#deltaYL
+000BD7 EF                MOV     A,R7
+000BD8 F0                MOVX    @DPTR,A
+  533: 			deltaYH = SPI_ReadSensor(SENSOR_XY_H);
+000BD9 7F12              MOV     R7,#012H
+000BDB 114A              ACALL   _SPI_ReadSensor
+000BDD 901C09            MOV     DPTR,#deltaYH
+000BE0 EF                MOV     A,R7
+000BE1 F0                MOVX    @DPTR,A
+  534: 			deltaXH = deltaYH>>4;
+000BE2 E0                MOVX    A,@DPTR
+000BE3 FF                MOV     R7,A
+000BE4 C4                SWAP    A
+000BE5 540F              ANL     A,#0FH
+000BE7 901C08            MOV     DPTR,#deltaXH
+000BEA F0                MOVX    @DPTR,A
+  535: 			deltaYH &= 0x0f;
+000BEB EF                MOV     A,R7
+000BEC 540F              ANL     A,#0FH
+000BEE A3                INC     DPTR
+000BEF F0                MOVX    @DPTR,A
+  536: 		}
+000BF0         ?C0095?SYS:
+  537: 		Sensor_spi_disable();
+000BF0 7170              ACALL   Sensor_spi_disable
+  538: 		if(g_variable.sensorType == PAW3212_ID) {
+000BF2 904ED9            MOV     DPTR,#g_variable+01EH
+000BF5 E0                MOVX    A,@DPTR
+000BF6 6402              XRL     A,#02H
+000BF8 702A              JNZ     ?C0096?SYS
+  539: 			if (deltaXH & 0x08) deltaXH |= 0xf0;
+000BFA 901C08            MOV     DPTR,#deltaXH
+000BFD E0                MOVX    A,@DPTR
+000BFE FF                MOV     R7,A
+000BFF 30E305            JNB     ACC.3,?C0097?SYS
+000C02 44F0              ORL     A,#0F0H
+000C04 F0                MOVX    @DPTR,A
+000C05 8007              SJMP    ?C0098?SYS
+000C07         ?C0097?SYS:
+  540: 			else deltaXH &= 0x0f;
+000C07 901C08            MOV     DPTR,#deltaXH
+000C0A E0                MOVX    A,@DPTR
+000C0B 540F              ANL     A,#0FH
+000C0D F0                MOVX    @DPTR,A
+000C0E         ?C0098?SYS:
+  541: 			if (deltaYH& 0x08) deltaYH |= 0xf0;
+000C0E 901C09            MOV     DPTR,#deltaYH
+000C11 E0                MOVX    A,@DPTR
+000C12 FF                MOV     R7,A
+000C13 30E305            JNB     ACC.3,?C0099?SYS
+000C16 44F0              ORL     A,#0F0H
+000C18 F0                MOVX    @DPTR,A
+000C19 8031              SJMP    ?C0101?SYS
+000C1B         ?C0099?SYS:
+  542: 			else deltaYH &= 0x0f;
+000C1B 901C09            MOV     DPTR,#deltaYH
+000C1E E0                MOVX    A,@DPTR
+000C1F 540F              ANL     A,#0FH
+000C21 F0                MOVX    @DPTR,A
+  543: 		}
+000C22 8028              SJMP    ?C0101?SYS
+000C24         ?C0096?SYS:
+  544: 		else {
+  545: 			if (deltaXL & 0x80) deltaXH = 0xff;
+000C24 901C06            MOV     DPTR,#deltaXL
+000C27 E0                MOVX    A,@DPTR
+000C28 30E708            JNB     ACC.7,?C0102?SYS
+000C2B 901C08            MOV     DPTR,#deltaXH
+000C2E 74FF              MOV     A,#0FFH
+000C30 F0                MOVX    @DPTR,A
+000C31 8005              SJMP    ?C0103?SYS
+000C33         ?C0102?SYS:
+  546: 			else deltaXH = 0;
+000C33 E4                CLR     A
+000C34 901C08            MOV     DPTR,#deltaXH
+000C37 F0                MOVX    @DPTR,A
+000C38         ?C0103?SYS:
+  547: 			if (deltaYL & 0x80) deltaYH = 0xff;
+000C38 901C07            MOV     DPTR,#deltaYL
+000C3B E0                MOVX    A,@DPTR
+000C3C 30E708            JNB     ACC.7,?C0104?SYS
+000C3F 901C09            MOV     DPTR,#deltaYH
+000C42 74FF              MOV     A,#0FFH
+000C44 F0                MOVX    @DPTR,A
+000C45 8005              SJMP    ?C0101?SYS
+000C47         ?C0104?SYS:
+  548: 			else deltaYH = 0;
+000C47 E4                CLR     A
+000C48 901C09            MOV     DPTR,#deltaYH
+000C4B F0                MOVX    @DPTR,A
+  549: 		}
+000C4C         ?C0101?SYS:
+  550: 		
+  551: 		if (g_variable.sensorChoice == 0) {
+000C4C 904EF0            MOV     DPTR,#g_variable+035H
+000C4F E0                MOVX    A,@DPTR
+000C50 7031              JNZ     ?C0106?SYS
+  552: 			g_variable.Y_data = 0 -(deltaXL | deltaXH<<8);
+000C52 901C08            MOV     DPTR,#deltaXH
+000C55 E0                MOVX    A,@DPTR
+000C56 FE                MOV     R6,A
+000C57 901C06            MOV     DPTR,#deltaXL
+000C5A E0                MOVX    A,@DPTR
+000C5B FD                MOV     R5,A
+000C5C EE                MOV     A,R6
+000C5D ED                MOV     A,R5
+000C5E FF                MOV     R7,A
+000C5F C3                CLR     C
+000C60 E4                CLR     A
+000C61 9F                SUBB    A,R7
+000C62 FF                MOV     R7,A
+000C63 E4                CLR     A
+000C64 9E                SUBB    A,R6
+000C65 904EFD            MOV     DPTR,#g_variable+042H
+000C68 F0                MOVX    @DPTR,A
+000C69 A3                INC     DPTR
+000C6A EF                MOV     A,R7
+000C6B F0                MOVX    @DPTR,A
+  553: 			g_variable.X_data = deltaYL | deltaYH<<8;
+000C6C 901C09            MOV     DPTR,#deltaYH
+000C6F E0                MOVX    A,@DPTR
+000C70 FE                MOV     R6,A
+000C71 901C07            MOV     DPTR,#deltaYL
+000C74 E0                MOVX    A,@DPTR
+000C75 FD                MOV     R5,A
+000C76 EE                MOV     A,R6
+000C77 ED                MOV     A,R5
+000C78 FF                MOV     R7,A
+000C79 904EFB            MOV     DPTR,#g_variable+040H
+000C7C EE                MOV     A,R6
+000C7D F0                MOVX    @DPTR,A
+000C7E A3                INC     DPTR
+000C7F EF                MOV     A,R7
+000C80 F0                MOVX    @DPTR,A
+  554: 		}
+000C81 802A              SJMP    ?C0107?SYS
+000C83         ?C0106?SYS:
+  555: 		else {
+  556: 			g_variable.X_data = deltaXL | deltaXH<<8;
+000C83 901C08            MOV     DPTR,#deltaXH
+000C86 E0                MOVX    A,@DPTR
+000C87 FE                MOV     R6,A
+000C88 901C06            MOV     DPTR,#deltaXL
+000C8B E0                MOVX    A,@DPTR
+000C8C FD                MOV     R5,A
+000C8D EE                MOV     A,R6
+000C8E ED                MOV     A,R5
+000C8F FF                MOV     R7,A
+000C90 904EFB            MOV     DPTR,#g_variable+040H
+000C93 EE                MOV     A,R6
+000C94 F0                MOVX    @DPTR,A
+000C95 A3                INC     DPTR
+000C96 EF                MOV     A,R7
+000C97 F0                MOVX    @DPTR,A
+  557: 			g_variable.Y_data = deltaYL | deltaYH<<8;
+000C98 901C09            MOV     DPTR,#deltaYH
+000C9B E0                MOVX    A,@DPTR
+000C9C FE                MOV     R6,A
+000C9D 901C07            MOV     DPTR,#deltaYL
+000CA0 E0                MOVX    A,@DPTR
+000CA1 FD                MOV     R5,A
+000CA2 EE                MOV     A,R6
+000CA3 ED                MOV     A,R5
+000CA4 FF                MOV     R7,A
+000CA5 904EFD            MOV     DPTR,#g_variable+042H
+000CA8 EE                MOV     A,R6
+000CA9 F0                MOVX    @DPTR,A
+000CAA A3                INC     DPTR
+000CAB EF                MOV     A,R7
+000CAC F0                MOVX    @DPTR,A
+  558: 		}
+000CAD         ?C0107?SYS:
+  559: 		g_variable.X_data = 0 -g_variable.X_data ;
+000CAD 904EFB            MOV     DPTR,#g_variable+040H
+000CB0 E0                MOVX    A,@DPTR
+000CB1 FE                MOV     R6,A
+000CB2 A3                INC     DPTR
+000CB3 E0                MOVX    A,@DPTR
+000CB4 FF                MOV     R7,A
+000CB5 C3                CLR     C
+000CB6 E4                CLR     A
+000CB7 9F                SUBB    A,R7
+000CB8 FF                MOV     R7,A
+000CB9 E4                CLR     A
+000CBA 9E                SUBB    A,R6
+000CBB 904EFB            MOV     DPTR,#g_variable+040H
+000CBE F0                MOVX    @DPTR,A
+000CBF A3                INC     DPTR
+000CC0 EF                MOV     A,R7
+000CC1 F0                MOVX    @DPTR,A
+  560: 		g_variable.Y_data = 0 -g_variable.Y_data;
+000CC2 A3                INC     DPTR
+000CC3 E0                MOVX    A,@DPTR
+000CC4 FE                MOV     R6,A
+000CC5 A3                INC     DPTR
+000CC6 E0                MOVX    A,@DPTR
+000CC7 FF                MOV     R7,A
+000CC8 C3                CLR     C
+000CC9 E4                CLR     A
+000CCA 9F                SUBB    A,R7
+000CCB FF                MOV     R7,A
+000CCC E4                CLR     A
+000CCD 9E                SUBB    A,R6
+000CCE 904EFD            MOV     DPTR,#g_variable+042H
+000CD1 F0                MOVX    @DPTR,A
+000CD2 A3                INC     DPTR
+000CD3 EF                MOV     A,R7
+000CD4 F0                MOVX    @DPTR,A
+  561: 
+  562: 		if(g_variable.currentState == DEVICE_MODE_24G)
+000CD5 904EBD            MOV     DPTR,#g_variable+02H
+000CD8 E0                MOVX    A,@DPTR
+000CD9 B40103            CJNE    A,#01H,?C0108?SYS
+  563: 			Drawing_optima();
+000CDC 122050            LCALL   Drawing_optima
+000CDF         ?C0108?SYS:
+  564: 		return (1);
+000CDF D3                SETB    C
+000CE0 22                RET     
+  565: 	}else{
+000CE1         ?C0093?SYS:
+  566: 		return (0);
+000CE1 C3                CLR     C
+  567: 	}
+  568: }
+000CE2 22                RET     
+----- FUNCTION mouseReadSensor (END) -------
+
+
+----- FUNCTION sensorPowerOn (BEGIN) -----
+ FILE: 'sensor.c'
+  238: void sensorPowerOn()
+  239: {
+  240: 	u8_t config = 0;
+  241: 	SPI_TwReset();
+;---- Variable 'config' assigned to Register 'R7' ----
+000CE3 E4                CLR     A
+000CE4 FF                MOV     R7,A
+  242: 	config = SPI_ReadSensor(0x06)&0xf7;
+000CE5 91F9              ACALL   SPI_TwReset
+  243: 	SPI_WriteSensor(config, 0x06);		//sensor Power on
+000CE7 7F06              MOV     R7,#06H
+000CE9 114A              ACALL   _SPI_ReadSensor
+000CEB EF                MOV     A,R7
+000CEC 54F7              ANL     A,#0F7H
+000CEE FF                MOV     R7,A
+  244: 	SPI_ReadSensor(2);
+000CEF 7D06              MOV     R5,#06H
+000CF1 518E              ACALL   _SPI_WriteSensor
+  245: 	Sensor_spi_disable();
+000CF3 7F02              MOV     R7,#02H
+000CF5 114A              ACALL   _SPI_ReadSensor
+  246: }
+000CF7 6170              AJMP    Sensor_spi_disable
+----- FUNCTION sensorPowerOn (END) -------
+
+
+----- FUNCTION SPI_TwReset (BEGIN) -----
+ FILE: 'sensor.c'
+   67: void SPI_TwReset()
+   68: {
+   69: 	u8_t sensorId = 0;
+   70: 	REG_GPIO_SEL(1) = 1;
+000CF9 E4                CLR     A
+000CFA 901C33            MOV     DPTR,#sensorId
+000CFD F0                MOVX    @DPTR,A
+   71: 	g_variable.read_sensor_count = 0;
+000CFE 908081            MOV     DPTR,#08081H
+000D01 04                INC     A
+000D02 F0                MOVX    @DPTR,A
+   72: 	while (1) 
+000D03 E4                CLR     A
+000D04 904F00            MOV     DPTR,#g_variable+045H
+000D07 F0                MOVX    @DPTR,A
+000D08         ?C0001?SENSOR:
+   73: 	{
+   74: 		g_variable.read_sensor_count++;
+   75: 		if(g_variable.read_sensor_count >= 6)
+000D08 904F00            MOV     DPTR,#g_variable+045H
+000D0B E0                MOVX    A,@DPTR
+000D0C 04                INC     A
+000D0D F0                MOVX    @DPTR,A
+   76: 		{
+000D0E E0                MOVX    A,@DPTR
+000D0F C3                CLR     C
+000D10 9406              SUBB    A,#06H
+000D12 4003              JC      ?C0003?SENSOR
+   77: 			SPI_Initialize();
+   78: 		}
+000D14 12173A            LCALL   SPI_Initialize
+   79: 		sensorId = SPI_ReadSensor(0) ;
+000D17         ?C0003?SENSOR:
+   80: 		if (( sensorId == PIXART_ID) ||(sensorId == FCT3065_ID))
+000D17 E4                CLR     A
+000D18 FF                MOV     R7,A
+000D19 114A              ACALL   _SPI_ReadSensor
+000D1B 901C33            MOV     DPTR,#sensorId
+000D1E EF                MOV     A,R7
+000D1F F0                MOVX    @DPTR,A
+   81: 			break;
+000D20 6430              XRL     A,#030H
+000D22 6027              JZ      ?C0006?SENSOR
+000D24 E0                MOVX    A,@DPTR
+000D25 6431              XRL     A,#031H
+000D27 6022              JZ      ?C0006?SENSOR
+   82: 		REG_GPIO_SEL(1) = 0;
+000D29         ?C0004?SENSOR:
+   83: 		REG_GPIO_OE(3) |= 0x02;
+000D29 908081            MOV     DPTR,#08081H
+000D2C E4                CLR     A
+000D2D F0                MOVX    @DPTR,A
+   84: 		REG_GPIO_OUT(3) &= 0xfd;
+000D2E 908073            MOV     DPTR,#08073H
+000D31 E0                MOVX    A,@DPTR
+000D32 4402              ORL     A,#02H
+000D34 F0                MOVX    @DPTR,A
+   85: 		REG_GPIO_OE(3) |= 0x02;
+000D35 908077            MOV     DPTR,#08077H
+000D38 E0                MOVX    A,@DPTR
+000D39 54FD              ANL     A,#0FDH
+000D3B F0                MOVX    @DPTR,A
+   86: 		REG_GPIO_SEL(1) = 1;
+000D3C 908073            MOV     DPTR,#08073H
+000D3F E0                MOVX    A,@DPTR
+000D40 4402              ORL     A,#02H
+000D42 F0                MOVX    @DPTR,A
+   87: 	} 
+000D43 908081            MOV     DPTR,#08081H
+000D46 7401              MOV     A,#01H
+000D48 F0                MOVX    @DPTR,A
+   88: }
+000D49 80BD              SJMP    ?C0001?SENSOR
+   89: 
+000D4B         ?C0006?SENSOR:
+000D4B 22                RET     
+----- FUNCTION SPI_TwReset (END) -------
+
+
+----- FUNCTION _GPIO_GetInputStatus (BEGIN) -----
+ FILE: 'gpio.c'
+   35: bool GPIO_GetInputStatus(u8_t gpio_num)
+   36: {
+;---- Variable 'gpio_num' assigned to Register 'R7' ----
+   37: 	return gpioGetBit(gpio_num, &REG_GPIO_IN(0));
+   38: }
+000D4C 7B01              MOV     R3,#01H
+000D4E 7A81              MOV     R2,#081H
+000D50 791C              MOV     R1,#01CH
+;----                  JMP     _gpioGetBit
+----- FUNCTION _GPIO_GetInputStatus (END) -------
+
+
+----- FUNCTION _gpioGetBit (BEGIN) -----
+ FILE: 'gpio.c'
+   24: static bool gpioGetBit(u8_t gpio_num, char *reg_base)
+   25: {
+;---- Variable 'gpio_num' assigned to Register 'R5' ----
+000D52 AD07              MOV     R5,AR7
+;---- Variable 'reg_base' assigned to Register 'R1/R2/R3' ----
+   26: 	u8_t queue = 0;
+   27: 	u8_t group = 0;
+000D54 E4                CLR     A
+000D55 901C2B            MOV     DPTR,#queue
+000D58 F0                MOVX    @DPTR,A
+   28: 
+;---- Variable 'group' assigned to Register 'R6' ----
+000D59 FE                MOV     R6,A
+   29: 	queue = (gpio_num & 7);
+000D5A EF                MOV     A,R7
+000D5B 5407              ANL     A,#07H
+000D5D F0                MOVX    @DPTR,A
+   30: 	group = gpio_num >> 3 & 3;
+000D5E EF                MOV     A,R7
+000D5F 13                RRC     A
+000D60 13                RRC     A
+000D61 13                RRC     A
+000D62 5403              ANL     A,#03H
+000D64 FE                MOV     R6,A
+   31: 	return (*(reg_base + group)&(1<<queue));
+000D65 F582              MOV     DPL,A
+000D67 758300            MOV     DPH,#00H
+000D6A 120112            LCALL   ?C?CLDOPTR
+000D6D FD                MOV     R5,A
+000D6E 33                RLC     A
+000D6F 95E0              SUBB    A,ACC
+000D71 FC                MOV     R4,A
+000D72 901C2B            MOV     DPTR,#queue
+000D75 E0                MOVX    A,@DPTR
+000D76 FF                MOV     R7,A
+000D77 7401              MOV     A,#01H
+000D79 7E00              MOV     R6,#00H
+000D7B A807              MOV     R0,AR7
+000D7D 08                INC     R0
+000D7E 8005              SJMP    ?C0023?GPIO
+000D80         ?C0022?GPIO:
+000D80 C3                CLR     C
+000D81 33                RLC     A
+000D82 CE                XCH     A,R6
+000D83 33                RLC     A
+000D84 CE                XCH     A,R6
+000D85         ?C0023?GPIO:
+000D85 D8F9              DJNZ    R0,?C0022?GPIO
+000D87 FF                MOV     R7,A
+000D88 EE                MOV     A,R6
+000D89 5C                ANL     A,R4
+000D8A FE                MOV     R6,A
+000D8B EF                MOV     A,R7
+000D8C 5D                ANL     A,R5
+000D8D 4E                ORL     A,R6
+000D8E 24FF              ADD     A,#0FFH
+   32: 	
+   33: }
+000D90 22                RET     
+----- FUNCTION _gpioGetBit (END) -------
+
+
+----- FUNCTION comboKeyPb (BEGIN) -----
+ FILE: 'sys.c'
+ 1152: void comboKeyPb()    // Lmr 3s enter discovery mode
+ 1153: {
+ 1154: 	u8_t buttonLeft = 0,buttonRight = 0,buttonMiddle = 0;
+ 1155: 	u8_t combkey = 0;
+000D91 E4                CLR     A
+000D92 901BF8            MOV     DPTR,#buttonLeft
+000D95 F0                MOVX    @DPTR,A
+000D96 A3                INC     DPTR
+000D97 F0                MOVX    @DPTR,A
+000D98 A3                INC     DPTR
+000D99 F0                MOVX    @DPTR,A
+ 1156: 	u8_t currentStateTemp=0;
+000D9A A3                INC     DPTR
+000D9B F0                MOVX    @DPTR,A
+ 1157: 	buttonLeft = !GPIO_GetInputStatus(KS_BL_GPIO);
+000D9C A3                INC     DPTR
+000D9D F0                MOVX    @DPTR,A
+ 1158: 	buttonMiddle = !GPIO_GetInputStatus(KS_BM_GPIO);
+000D9E 7F04              MOV     R7,#04H
+000DA0 B14C              ACALL   _GPIO_GetInputStatus
+000DA2 4004              JC      ?C0194?SYS
+000DA4 7F01              MOV     R7,#01H
+000DA6 8002              SJMP    ?C0195?SYS
+000DA8         ?C0194?SYS:
+000DA8 7F00              MOV     R7,#00H
+000DAA         ?C0195?SYS:
+000DAA 901BF8            MOV     DPTR,#buttonLeft
+000DAD EF                MOV     A,R7
+000DAE F0                MOVX    @DPTR,A
+ 1159: 	buttonRight = !GPIO_GetInputStatus(KS_BR_GPIO);
+000DAF 7F17              MOV     R7,#017H
+000DB1 B14C              ACALL   _GPIO_GetInputStatus
+000DB3 4004              JC      ?C0196?SYS
+000DB5 7F01              MOV     R7,#01H
+000DB7 8002              SJMP    ?C0197?SYS
+000DB9         ?C0196?SYS:
+000DB9 7F00              MOV     R7,#00H
+000DBB         ?C0197?SYS:
+000DBB 901BFA            MOV     DPTR,#buttonMiddle
+000DBE EF                MOV     A,R7
+000DBF F0                MOVX    @DPTR,A
+ 1160: 	combkey = buttonLeft |buttonRight<<1|buttonMiddle<<2;
+000DC0 7F1B              MOV     R7,#01BH
+000DC2 B14C              ACALL   _GPIO_GetInputStatus
+000DC4 4004              JC      ?C0198?SYS
+000DC6 7F01              MOV     R7,#01H
+000DC8 8002              SJMP    ?C0199?SYS
+000DCA         ?C0198?SYS:
+000DCA 7F00              MOV     R7,#00H
+000DCC         ?C0199?SYS:
+000DCC 901BF9            MOV     DPTR,#buttonRight
+000DCF EF                MOV     A,R7
+000DD0 F0                MOVX    @DPTR,A
+ 1161: 	if(combkey == 0x07) 
+000DD1 E0                MOVX    A,@DPTR
+000DD2 FF                MOV     R7,A
+000DD3 25E0              ADD     A,ACC
+000DD5 FF                MOV     R7,A
+000DD6 901BF8            MOV     DPTR,#buttonLeft
+000DD9 E0                MOVX    A,@DPTR
+000DDA 4F                ORL     A,R7
+000DDB FF                MOV     R7,A
+000DDC 901BFA            MOV     DPTR,#buttonMiddle
+000DDF E0                MOVX    A,@DPTR
+000DE0 FE                MOV     R6,A
+000DE1 25E0              ADD     A,ACC
+000DE3 25E0              ADD     A,ACC
+000DE5 4F                ORL     A,R7
+000DE6 A3                INC     DPTR
+000DE7 F0                MOVX    @DPTR,A
+ 1162: 	{
+000DE8 6407              XRL     A,#07H
+000DEA 7070              JNZ     ?C0200?SYS
+ 1163: 		g_variable.enterHibernateTimer = 30;
+ 1164: 		g_variable.sleepTimer = 0;
+000DEC 904F02            MOV     DPTR,#g_variable+047H
+000DEF 741E              MOV     A,#01EH
+000DF1 F0                MOVX    @DPTR,A
+ 1165: 		g_variable.wheelTimer = 10;
+000DF2 E4                CLR     A
+000DF3 904EC4            MOV     DPTR,#g_variable+09H
+000DF6 F0                MOVX    @DPTR,A
+000DF7 A3                INC     DPTR
+000DF8 F0                MOVX    @DPTR,A
+ 1166: 		if (g_variable.buttonTimer >= MOUSE_ENTER_PB_TIME)
+000DF9 904EC7            MOV     DPTR,#g_variable+0CH
+000DFC 740A              MOV     A,#0AH
+000DFE F0                MOVX    @DPTR,A
+ 1167: 			return ;
+000DFF 904EC6            MOV     DPTR,#g_variable+0BH
+000E02 E0                MOVX    A,@DPTR
+000E03 C3                CLR     C
+000E04 9419              SUBB    A,#019H
+000E06 5059              JNC     ?C0202?SYS
+000E08         ?C0201?SYS:
+ 1168: 		g_variable.buttonTimer ++;
+000E08 904EC6            MOV     DPTR,#g_variable+0BH
+000E0B E0                MOVX    A,@DPTR
+000E0C 04                INC     A
+000E0D F0                MOVX    @DPTR,A
+ 1169: 		if (g_variable.buttonTimer == MOUSE_ENTER_PB_TIME)
+000E0E E0                MOVX    A,@DPTR
+000E0F 6419              XRL     A,#019H
+000E11 704E              JNZ     ?C0202?SYS
+ 1170: 		{
+ 1171: 			g_variable.enterHibernateFlag = 0;
+000E13 904F01            MOV     DPTR,#g_variable+046H
+000E16 F0                MOVX    @DPTR,A
+ 1172: 			g_variable.enterHibernateTimer = 0;
+000E17 A3                INC     DPTR
+000E18 F0                MOVX    @DPTR,A
+ 1173: 		
+ 1174: 			switch (g_variable.currentState) 
+000E19 904EBD            MOV     DPTR,#g_variable+02H
+000E1C E0                MOVX    A,@DPTR
+000E1D 6032              JZ      ?C0209?SYS
+000E1F 14                DEC     A
+000E20 601E              JZ      ?C0207?SYS
+000E22 24FB              ADD     A,#0FBH
+000E24 602B              JZ      ?C0209?SYS
+000E26 24FE              ADD     A,#0FEH
+000E28 600E              JZ      ?C0206?SYS
+000E2A 04                INC     A
+000E2B 7034              JNZ     ?C0202?SYS
+ 1175: 			{
+ 1176: #if MOUSE_BT_MODE_ENABLE
+ 1177: 				case DEVICE_MODE_BT:
+ 1178: 				case DEVICE_MODE_BB:
+ 1179: 					IPC_TxControlCmd(IPC_CMD_DISCONNECT);
+ 1180: 					g_variable.nextMode = DEVICE_MODE_DISC;
+ 1181: 					g_variable.reconnFlag = 0;
+ 1182: 					break;
+ 1183: #endif 
+ 1184: 				case DEVICE_MODE_BLE_BB_CONNECT:
+000E2D         ?C0205?SYS:
+ 1185: 					IPC_TxControlCmd(IPC_CMD_LE_DISCONNECT);
+000E2D 7F11              MOV     R7,#011H
+000E2F D1A2              ACALL   _IPC_TxControlCmd
+ 1186: 					g_variable.nextMode = DEVICE_MODE_BLE_ADV;
+000E31 904EBE            MOV     DPTR,#g_variable+03H
+000E34 7408              MOV     A,#08H
+000E36 F0                MOVX    @DPTR,A
+ 1187: 					break;
+000E37 22                RET     
+ 1188: 				case DEVICE_MODE_BLE_ADV:
+000E38         ?C0206?SYS:
+ 1189: 					g_variable.currentState = DEVICE_MODE_DISC;
+000E38 904EBD            MOV     DPTR,#g_variable+02H
+000E3B 7403              MOV     A,#03H
+000E3D F0                MOVX    @DPTR,A
+ 1190: #if MOUSE_BT_MODE_ENABLE
+ 1191: 					IPC_TxControlCmd(IPC_CMD_START_DISCOVERY);
+ 1192: #endif
+ 1193: 					leADVStart();
+000E3E 8022              SJMP    leADVStart
+ 1194: 					break;	
+ 1195: 				case DEVICE_MODE_24G:
+000E40         ?C0207?SYS:
+ 1196: 					deviceStop24g();
+000E40 F140              ACALL   deviceStop24g
+ 1197: 					Delay1ms(10);
+000E42 7F0A              MOV     R7,#0AH
+000E44 7E00              MOV     R6,#00H
+000E46 1215B2            LCALL   _Delay1ms
+ 1198: 					g_variable.currentState = DEVICE_MODE_DISC;
+000E49 904EBD            MOV     DPTR,#g_variable+02H
+000E4C 7403              MOV     A,#03H
+000E4E F0                MOVX    @DPTR,A
+ 1199: #if MOUSE_BT_MODE_ENABLE
+ 1200: 					IPC_TxControlCmd(IPC_CMD_START_DISCOVERY);
+ 1201: #endif
+ 1202: 					leADVStart();
+000E4F 8011              SJMP    leADVStart
+ 1203: 					break;
+ 1204: #if MOUSE_BT_MODE_ENABLE
+ 1205: 				case DEVICE_MODE_PAGE:
+ 1206: 					g_variable.reconnFlag = 0;
+ 1207: 					IPC_TxControlCmd(IPC_CMD_BB_RECONN_CANCEL);
+ 1208: 					g_variable.nextMode = DEVICE_MODE_DISC;
+ 1209: 					break;
+ 1210: #endif
+ 1211: 				case DEVICE_MODE_NONE:
+ 1212: 				case DEVICE_MODE_PREPARE_SLEEP:
+000E51         ?C0209?SYS:
+ 1213: 					deviceStop24g();
+000E51 F140              ACALL   deviceStop24g
+ 1214: 					g_variable.currentState = DEVICE_MODE_DISC;
+000E53 904EBD            MOV     DPTR,#g_variable+02H
+000E56 7403              MOV     A,#03H
+000E58 F0                MOVX    @DPTR,A
+ 1215: #if MOUSE_BT_MODE_ENABLE
+ 1216: 					IPC_TxControlCmd(IPC_CMD_START_DISCOVERY);
+ 1217: #endif
+ 1218: 					leADVStart();
+000E59 8007              SJMP    leADVStart
+ 1219: 					break;
+ 1220: 				default :
+ 1221: 					break;
+ 1222: 			}
+ 1223: 		}
+ 1224: 	}
+000E5B 22                RET     
+000E5C         ?C0200?SYS:
+ 1225: 	else  g_variable.buttonTimer = 0;
+000E5C E4                CLR     A
+000E5D 904EC6            MOV     DPTR,#g_variable+0BH
+000E60 F0                MOVX    @DPTR,A
+ 1226: }
+000E61         ?C0202?SYS:
+000E61 22                RET     
+----- FUNCTION comboKeyPb (END) -------
+
+
+----- FUNCTION leADVStart (BEGIN) -----
+ FILE: 'sys.c'
+  866: void leADVStart()
+  867: {
+  868: 	IIC_Read(EEPROM_BLE_ADDR_RANDOM_CNT, 2, (u8_t *)&g_variable.leAddrRandomCnt);
+  869: 	g_variable.leAddrRandomCnt++;
+000E62 7B01              MOV     R3,#01H
+000E64 7A4F              MOV     R2,#HIGH g_variable+056H
+000E66 7911              MOV     R1,#LOW g_variable+056H
+000E68 7D02              MOV     R5,#02H
+000E6A 7C00              MOV     R4,#00H
+000E6C 7FAA              MOV     R7,#0AAH
+000E6E 7E7F              MOV     R6,#07FH
+000E70 121368            LCALL   _IIC_Read
+  870: 	IIC_WriteBlock(EEPROM_BLE_ADDR_RANDOM_CNT, 2, (u8_t *)&g_variable.leAddrRandomCnt);
+000E73 904F12            MOV     DPTR,#g_variable+057H
+000E76 E0                MOVX    A,@DPTR
+000E77 04                INC     A
+000E78 F0                MOVX    @DPTR,A
+000E79 7006              JNZ     ?C0278?SYS
+000E7B 904F11            MOV     DPTR,#g_variable+056H
+000E7E E0                MOVX    A,@DPTR
+000E7F 04                INC     A
+000E80 F0                MOVX    @DPTR,A
+000E81         ?C0278?SYS:
+  871: 	m_reconnLeAddr[1] = g_variable.leAddrRandomCnt & 0xff;
+000E81 7B01              MOV     R3,#01H
+000E83 7A4F              MOV     R2,#HIGH g_variable+056H
+000E85 7911              MOV     R1,#LOW g_variable+056H
+000E87 7D02              MOV     R5,#02H
+000E89 7C00              MOV     R4,#00H
+000E8B 7FAA              MOV     R7,#0AAH
+000E8D 7E7F              MOV     R6,#07FH
+000E8F 12126D            LCALL   _IIC_WriteBlock
+  872: 	m_reconnLeAddr[2] = g_variable.leAddrRandomCnt >> 8;
+000E92 904F11            MOV     DPTR,#g_variable+056H
+000E95 E0                MOVX    A,@DPTR
+000E96 FC                MOV     R4,A
+000E97 A3                INC     DPTR
+000E98 E0                MOVX    A,@DPTR
+000E99 90453F            MOV     DPTR,#m_reconnLeAddr+01H
+000E9C F0                MOVX    @DPTR,A
+  873: 	IPC_TxControlCmd(IPC_CMD_START_ADV);
+000E9D EC                MOV     A,R4
+000E9E A3                INC     DPTR
+000E9F F0                MOVX    @DPTR,A
+  874: }
+000EA0 7F0D              MOV     R7,#0DH
+;----                  JMP     _IPC_TxControlCmd
+----- FUNCTION leADVStart (END) -------
+
+
+----- FUNCTION _IPC_TxControlCmd (BEGIN) -----
+ FILE: 'ipc.c'
+   68: void IPC_TxControlCmd(u8_t cmd)
+   69: {
+000EA2 901C12            MOV     DPTR,#cmd
+000EA5 EF                MOV     A,R7
+000EA6 F0                MOVX    @DPTR,A
+   70: 	u8_t cmdBuff[IPC_CMD_LEN] = {IPC_CONTROL_CMD,0x01};
+   71: 	cmdBuff[IPC_CMD_LEN - 1] = cmd;
+000EA7 7813              MOV     R0,#LOW cmdBuff
+000EA9 7C1C              MOV     R4,#HIGH cmdBuff
+000EAB 7D01              MOV     R5,#01H
+000EAD 7BFF              MOV     R3,#0FFH
+000EAF 7A02              MOV     R2,#HIGH _?ix1000
+000EB1 79EE              MOV     R1,#LOW _?ix1000
+000EB3 7E00              MOV     R6,#00H
+000EB5 7F03              MOV     R7,#03H
+000EB7 1200D3            LCALL   ?C?COPY
+   72: 	ipcTx(cmdBuff, IPC_CMD_LEN);
+000EBA 901C12            MOV     DPTR,#cmd
+000EBD E0                MOVX    A,@DPTR
+000EBE 901C15            MOV     DPTR,#cmdBuff+02H
+000EC1 F0                MOVX    @DPTR,A
+   73: }
+000EC2 7B01              MOV     R3,#01H
+000EC4 7A1C              MOV     R2,#HIGH cmdBuff
+000EC6 7913              MOV     R1,#LOW cmdBuff
+000EC8 7D03              MOV     R5,#03H
+;----                  JMP     _ipcTx
+----- FUNCTION _IPC_TxControlCmd (END) -------
+
+
+----- FUNCTION _ipcTx (BEGIN) -----
+ FILE: 'ipc.c'
+   56: static void ipcTx(u8_t* src, u8_t len)
+   57: {
+000ECA 901BED            MOV     DPTR,#src
+000ECD EB                MOV     A,R3
+000ECE F0                MOVX    @DPTR,A
+000ECF A3                INC     DPTR
+000ED0 EA                MOV     A,R2
+000ED1 F0                MOVX    @DPTR,A
+000ED2 A3                INC     DPTR
+000ED3 E9                MOV     A,R1
+000ED4 F0                MOVX    @DPTR,A
+000ED5 A3                INC     DPTR
+000ED6 ED                MOV     A,R5
+000ED7 F0                MOVX    @DPTR,A
+   58: 	xu8_t* dest = (xu8_t*)ipcTxWritePtr;
+   59: 	while(len--) {
+000ED8 9047C6            MOV     DPTR,#ipcTxWritePtr
+000EDB E0                MOVX    A,@DPTR
+000EDC FF                MOV     R7,A
+000EDD A3                INC     DPTR
+000EDE E0                MOVX    A,@DPTR
+000EDF 901BF1            MOV     DPTR,#dest
+000EE2 CF                XCH     A,R7
+000EE3 F0                MOVX    @DPTR,A
+000EE4 A3                INC     DPTR
+000EE5 EF                MOV     A,R7
+000EE6 F0                MOVX    @DPTR,A
+000EE7         ?C0005?IPC:
+   60: 		*dest++ = *src++;
+000EE7 901BF0            MOV     DPTR,#len
+000EEA E0                MOVX    A,@DPTR
+000EEB FF                MOV     R7,A
+000EEC 14                DEC     A
+000EED F0                MOVX    @DPTR,A
+000EEE EF                MOV     A,R7
+000EEF 603F              JZ      ?C0006?IPC
+   61: 		if ((u16_t)dest == IPC_TX_END) {
+000EF1 901BED            MOV     DPTR,#src
+000EF4 E0                MOVX    A,@DPTR
+000EF5 FB                MOV     R3,A
+000EF6 A3                INC     DPTR
+000EF7 E4                CLR     A
+000EF8 75F001            MOV     B,#01H
+000EFB 120204            LCALL   ?C?ILDIX
+000EFE A9F0              MOV     R1,B
+000F00 FA                MOV     R2,A
+000F01 1200F9            LCALL   ?C?CLDPTR
+000F04 FF                MOV     R7,A
+000F05 901BF1            MOV     DPTR,#dest
+000F08 E4                CLR     A
+000F09 75F001            MOV     B,#01H
+000F0C 120204            LCALL   ?C?ILDIX
+000F0F 85F082            MOV     DPL,B
+000F12 F583              MOV     DPH,A
+000F14 EF                MOV     A,R7
+000F15 F0                MOVX    @DPTR,A
+   62: 			dest = (xu8_t *)IPC_TX_HEAD;
+000F16 901BF1            MOV     DPTR,#dest
+000F19 E0                MOVX    A,@DPTR
+000F1A FE                MOV     R6,A
+000F1B A3                INC     DPTR
+000F1C E0                MOVX    A,@DPTR
+000F1D FF                MOV     R7,A
+000F1E BE47C6            CJNE    R6,#047H,?C0005?IPC
+000F21 BFC4C3            CJNE    R7,#0C4H,?C0005?IPC
+   63: 		}
+000F24 901BF1            MOV     DPTR,#dest
+000F27 7447              MOV     A,#047H
+000F29 F0                MOVX    @DPTR,A
+000F2A A3                INC     DPTR
+000F2B 742E              MOV     A,#02EH
+000F2D F0                MOVX    @DPTR,A
+   64: 	}
+   65: 	ipcTxWritePtr =  (u16_t)dest;
+000F2E 80B7              SJMP    ?C0005?IPC
+000F30         ?C0006?IPC:
+   66: }
+000F30 901BF1            MOV     DPTR,#dest
+000F33 E0                MOVX    A,@DPTR
+000F34 FF                MOV     R7,A
+000F35 A3                INC     DPTR
+000F36 E0                MOVX    A,@DPTR
+000F37 9047C6            MOV     DPTR,#ipcTxWritePtr
+000F3A CF                XCH     A,R7
+000F3B F0                MOVX    @DPTR,A
+000F3C A3                INC     DPTR
+000F3D EF                MOV     A,R7
+000F3E F0                MOVX    @DPTR,A
+   67: 
+000F3F 22                RET     
+----- FUNCTION _ipcTx (END) -------
+
+
+----- FUNCTION deviceStop24g (BEGIN) -----
+ FILE: 'sys.c'
+  730: static void deviceStop24g()
+  731: {
+  732: 	IPC_TxControlCmd(IPC_CMD_STOP_24G);
+  733: 	g_variable.currentState = DEVICE_MODE_NONE;
+000F40 7F24              MOV     R7,#024H
+000F42 D1A2              ACALL   _IPC_TxControlCmd
+  734: }
+000F44 E4                CLR     A
+000F45 904EBD            MOV     DPTR,#g_variable+02H
+000F48 F0                MOVX    @DPTR,A
+  735: 
+000F49 22                RET     
+----- FUNCTION deviceStop24g (END) -------
+
+
+----- FUNCTION sensorPowerDown (BEGIN) -----
+ FILE: 'sensor.c'
+  227: void sensorPowerDown()
+  228: {
+  229: 	u8_t config = 0;
+  230: 	SPI_TwReset();
+;---- Variable 'config' assigned to Register 'R7' ----
+000F4A E4                CLR     A
+000F4B FF                MOV     R7,A
+  231: 	config = SPI_ReadSensor(0x06) |0x08;
+000F4C 91F9              ACALL   SPI_TwReset
+  232: 	SPI_WriteSensor(config, 0x06);		//sensor Power down
+000F4E 7F06              MOV     R7,#06H
+000F50 114A              ACALL   _SPI_ReadSensor
+000F52 EF                MOV     A,R7
+000F53 4408              ORL     A,#08H
+000F55 FF                MOV     R7,A
+  233: 	REG_GPIO_SEL(1) = 0;
+000F56 7D06              MOV     R5,#06H
+000F58 518E              ACALL   _SPI_WriteSensor
+  234: 	GPIO_SetInput(25, 0);
+000F5A 908081            MOV     DPTR,#08081H
+000F5D E4                CLR     A
+000F5E F0                MOVX    @DPTR,A
+  235: 	GPIO_SetInput(26, 0);
+000F5F C206              CLR     ?_GPIO_SetInput?BIT
+000F61 7F19              MOV     R7,#019H
+000F63 1203A1            LCALL   _GPIO_SetInput
+  236: }
+000F66 C206              CLR     ?_GPIO_SetInput?BIT
+000F68 7F1A              MOV     R7,#01AH
+000F6A 0203A1            LJMP    _GPIO_SetInput
+----- FUNCTION sensorPowerDown (END) -------
+
+
+----- FUNCTION _GPIO_FlipOutBit (BEGIN) -----
+ FILE: 'gpio.c'
+  104: void GPIO_FlipOutBit(u8_t gpio_num)
+  105: {
+000F6D 901C2D            MOV     DPTR,#gpio_num
+000F70 EF                MOV     A,R7
+000F71 F0                MOVX    @DPTR,A
+  106: 	bool st = gpioGetBit(gpio_num, &REG_GPIO_OUT(0));
+  107: 	GPIO_Setout(gpio_num, ~st);
+000F72 7B01              MOV     R3,#01H
+000F74 7A80              MOV     R2,#080H
+000F76 7974              MOV     R1,#074H
+000F78 B152              ACALL   _gpioGetBit
+000F7A 920A              MOV     st,C
+  108: }
+000F7C 901C2D            MOV     DPTR,#gpio_num
+000F7F E0                MOVX    A,@DPTR
+000F80 FF                MOV     R7,A
+000F81 A20A              MOV     C,st
+000F83 B3                CPL     C
+000F84 9202              MOV     ?_GPIO_Setout?BIT,C
+;----                  JMP     _GPIO_Setout
+----- FUNCTION _GPIO_FlipOutBit (END) -------
+
+
+----- FUNCTION _GPIO_Setout (BEGIN) -----
+ FILE: 'gpio.c'
+   40: void GPIO_Setout(u8_t gpio_num, bool bit_val)
+   41: {
+;---- Variable 'gpio_num' assigned to Register 'R7' ----
+   42: 	gpioSetBit(gpio_num, &REG_GPIO_OUT(0), bit_val);	
+   43: }
+000F86 7B01              MOV     R3,#01H
+000F88 7A80              MOV     R2,#080H
+000F8A 7974              MOV     R1,#074H
+000F8C A202              MOV     C,bit_val
+000F8E 9201              MOV     ?_gpioSetBit?BIT,C
+000F90 0203C2            LJMP    _gpioSetBit
+----- FUNCTION _GPIO_Setout (END) -------
+
+
+----- FUNCTION deviceSwitch24GMode (BEGIN) -----
+ FILE: 'sys.c'
+  713: static void deviceSwitch24GMode()
+  714: {
+  715: 	IIC_Read(EEPROM_24G_ADDR+2, 4, (u8_t *)m_24gAddr);
+  716: 	if(m_24gAddr[0] == 0xff && m_24gAddr[1] == 0xff && m_24gAddr[2] == 0xff && m_24gAddr[3] == 0xff)
+000F93 7B01              MOV     R3,#01H
+000F95 7A49              MOV     R2,#HIGH m_24gAddr
+000F97 7950              MOV     R1,#LOW m_24gAddr
+000F99 7D04              MOV     R5,#04H
+000F9B 7C00              MOV     R4,#00H
+000F9D 7FA4              MOV     R7,#0A4H
+000F9F 7E7F              MOV     R6,#07FH
+000FA1 121368            LCALL   _IIC_Read
+  717: 	{
+000FA4 904950            MOV     DPTR,#m_24gAddr
+000FA7 E0                MOVX    A,@DPTR
+000FA8 F4                CPL     A
+000FA9 7027              JNZ     ?C0134?SYS
+000FAB A3                INC     DPTR
+000FAC E0                MOVX    A,@DPTR
+000FAD F4                CPL     A
+000FAE 7022              JNZ     ?C0134?SYS
+000FB0 A3                INC     DPTR
+000FB1 E0                MOVX    A,@DPTR
+000FB2 B4FF1D            CJNE    A,#0FFH,?C0134?SYS
+000FB5 A3                INC     DPTR
+000FB6 E0                MOVX    A,@DPTR
+000FB7 B4FF18            CJNE    A,#0FFH,?C0134?SYS
+  718: 		m_24gAddr[0] = 0x0f;
+  719: 		m_24gAddr[1] = 0x0f;
+000FBA 904950            MOV     DPTR,#m_24gAddr
+000FBD 740F              MOV     A,#0FH
+000FBF F0                MOVX    @DPTR,A
+  720: 		m_24gAddr[2] = 0x0f;
+000FC0 A3                INC     DPTR
+000FC1 F0                MOVX    @DPTR,A
+  721: 		m_24gAddr[3] = 0x0f;
+000FC2 A3                INC     DPTR
+000FC3 F0                MOVX    @DPTR,A
+  722: 		IPC_TxControlCmd(IPC_CMD_START_24G);
+000FC4 A3                INC     DPTR
+000FC5 F0                MOVX    @DPTR,A
+  723: 		g_variable.Factory_Pwr_on_f = 1;
+000FC6 7F23              MOV     R7,#023H
+000FC8 D1A2              ACALL   _IPC_TxControlCmd
+  724: 	}
+000FCA 904EF2            MOV     DPTR,#g_variable+037H
+000FCD 7401              MOV     A,#01H
+000FCF F0                MOVX    @DPTR,A
+  725: 	else
+000FD0 8004              SJMP    ?C0135?SYS
+000FD2         ?C0134?SYS:
+  726: 		IPC_TxControlCmd(IPC_CMD_START_24G);
+000FD2 7F23              MOV     R7,#023H
+000FD4 D1A2              ACALL   _IPC_TxControlCmd
+000FD6         ?C0135?SYS:
+  727: 	g_variable.currentState = DEVICE_MODE_24G;
+000FD6 904EBD            MOV     DPTR,#g_variable+02H
+000FD9 7401              MOV     A,#01H
+000FDB F0                MOVX    @DPTR,A
+  728: }
+000FDC 22                RET     
+----- FUNCTION deviceSwitch24GMode (END) -------
+
+
+----- FUNCTION mouseLKeyCheck (BEGIN) -----
+ FILE: 'sys.c'
+  284: static u8_t mouseLKeyCheck()
+  285: {
+  286: 	GPIO_SetOutput(Timer_div_io, 1);
+  287: 	g_variable.lKeyTemp <<=1;
+000FDD D207              SETB    ?_GPIO_SetOutput?BIT
+000FDF 7F07              MOV     R7,#07H
+000FE1 121075            LCALL   _GPIO_SetOutput
+  288: 	g_variable.lKeyTemp |= !GPIO_GetInputStatus(KS_BL_GPIO);
+000FE4 904ECA            MOV     DPTR,#g_variable+0FH
+000FE7 E0                MOVX    A,@DPTR
+000FE8 FF                MOV     R7,A
+000FE9 25E0              ADD     A,ACC
+000FEB F0                MOVX    @DPTR,A
+  289: 	if (g_variable.lKeyTemp&0x01)
+000FEC E0                MOVX    A,@DPTR
+000FED FF                MOV     R7,A
+000FEE C007              PUSH    AR7
+000FF0 7F04              MOV     R7,#04H
+000FF2 B14C              ACALL   _GPIO_GetInputStatus
+000FF4 4004              JC      ?C0019?SYS
+000FF6 7E01              MOV     R6,#01H
+000FF8 8002              SJMP    ?C0020?SYS
+000FFA         ?C0019?SYS:
+000FFA 7E00              MOV     R6,#00H
+000FFC         ?C0020?SYS:
+000FFC D0E0              POP     ACC
+000FFE 4E                ORL     A,R6
+000FFF 904ECA            MOV     DPTR,#g_variable+0FH
+001002 F0                MOVX    @DPTR,A
+  290: 	{
+001003 30E006            JNB     ACC.0,?C0024?SYS
+  291: 		g_variable.wheelTimer= 2;
+  292: 	}
+001006 904EC7            MOV     DPTR,#g_variable+0CH
+001009 7402              MOV     A,#02H
+00100B F0                MOVX    @DPTR,A
+  293: 	do
+00100C         ?C0024?SYS:
+  294: 	{ 
+  295: 		if((g_variable.lKeyTemp & 0x07) == 0x07)
+00100C 904ECA            MOV     DPTR,#g_variable+0FH
+00100F E0                MOVX    A,@DPTR
+001010 5407              ANL     A,#07H
+001012 FF                MOV     R7,A
+001013 BF0706            CJNE    R7,#07H,?C0025?SYS
+  296: 		{
+  297: 			g_variable.lKey = 1;
+001016 A3                INC     DPTR
+001017 7401              MOV     A,#01H
+001019 F0                MOVX    @DPTR,A
+  298: 			break;
+00101A 8007              SJMP    ?C0023?SYS
+  299: 		}
+00101C         ?C0025?SYS:
+  300: 		if((g_variable.lKeyTemp & 0x07) == 0x00)
+00101C EF                MOV     A,R7
+00101D 7004              JNZ     ?C0023?SYS
+  301: 		{
+  302: 			g_variable.lKey = 0;
+00101F 904ECB            MOV     DPTR,#g_variable+010H
+001022 F0                MOVX    @DPTR,A
+  303: 			break;
+  304: 		}
+  305: 	}while(0);
+001023         ?C0023?SYS:
+  306: 	return g_variable.lKey;
+001023 904ECB            MOV     DPTR,#g_variable+010H
+001026 E0                MOVX    A,@DPTR
+001027 FF                MOV     R7,A
+  307: }
+001028 22                RET     
+----- FUNCTION mouseLKeyCheck (END) -------
+
+
+----- FUNCTION mouseMKeyCheck (BEGIN) -----
+ FILE: 'sys.c'
+  309: static u8_t mouseMKeyCheck()
+  310: {
+  311: 	GPIO_SetOutput(Timer_div_io, 1);
+  312: 	g_variable.mKeyTemp <<=1;
+001029 D207              SETB    ?_GPIO_SetOutput?BIT
+00102B 7F07              MOV     R7,#07H
+00102D 1175              ACALL   _GPIO_SetOutput
+  313: 	g_variable.mKeyTemp |= !GPIO_GetInputStatus(KS_BM_GPIO);
+00102F 904ECC            MOV     DPTR,#g_variable+011H
+001032 E0                MOVX    A,@DPTR
+001033 FF                MOV     R7,A
+001034 25E0              ADD     A,ACC
+001036 F0                MOVX    @DPTR,A
+  314: 	if (g_variable.mKeyTemp&0x01) 
+001037 E0                MOVX    A,@DPTR
+001038 FF                MOV     R7,A
+001039 C007              PUSH    AR7
+00103B 7F17              MOV     R7,#017H
+00103D 120D4C            LCALL   _GPIO_GetInputStatus
+001040 4004              JC      ?C0028?SYS
+001042 7E01              MOV     R6,#01H
+001044 8002              SJMP    ?C0029?SYS
+001046         ?C0028?SYS:
+001046 7E00              MOV     R6,#00H
+001048         ?C0029?SYS:
+001048 D0E0              POP     ACC
+00104A 4E                ORL     A,R6
+00104B 904ECC            MOV     DPTR,#g_variable+011H
+00104E F0                MOVX    @DPTR,A
+  315: 	{
+00104F 30E006            JNB     ACC.0,?C0033?SYS
+  316: 		g_variable.wheelTimer= 2 ;
+  317: 	}
+001052 904EC7            MOV     DPTR,#g_variable+0CH
+001055 7402              MOV     A,#02H
+001057 F0                MOVX    @DPTR,A
+  318: 	do 
+001058         ?C0033?SYS:
+  319: 	{ 
+  320: 		if((g_variable.mKeyTemp & 0x07) == 0x07) 
+001058 904ECC            MOV     DPTR,#g_variable+011H
+00105B E0                MOVX    A,@DPTR
+00105C 5407              ANL     A,#07H
+00105E FF                MOV     R7,A
+00105F BF0706            CJNE    R7,#07H,?C0034?SYS
+  321: 		{
+  322: 			g_variable.mKey = 1;
+001062 A3                INC     DPTR
+001063 7401              MOV     A,#01H
+001065 F0                MOVX    @DPTR,A
+  323: 			break;
+001066 8007              SJMP    ?C0032?SYS
+  324: 		}
+001068         ?C0034?SYS:
+  325: 		if((g_variable.mKeyTemp & 0x07) == 0x00) 
+001068 EF                MOV     A,R7
+001069 7004              JNZ     ?C0032?SYS
+  326: 		{
+  327: 			g_variable.mKey = 0;
+00106B 904ECD            MOV     DPTR,#g_variable+012H
+00106E F0                MOVX    @DPTR,A
+  328: 			break;
+  329: 		}
+  330: 	}while(0);
+00106F         ?C0032?SYS:
+  331: 	return g_variable.mKey;
+00106F 904ECD            MOV     DPTR,#g_variable+012H
+001072 E0                MOVX    A,@DPTR
+001073 FF                MOV     R7,A
+  332: }
+001074 22                RET     
+----- FUNCTION mouseMKeyCheck (END) -------
+
+
+----- FUNCTION _GPIO_SetOutput (BEGIN) -----
+ FILE: 'gpio.c'
+   67: void GPIO_SetOutput(u8_t gpio_num, bit  st)
+   68: {
+;---- Variable 'gpio_num' assigned to Register 'R4' ----
+001075 AC07              MOV     R4,AR7
+   69: 	GPIO_Setoe(gpio_num,1);
+   70: 	GPIO_Setout(gpio_num,st);
+001077 D205              SETB    ?_GPIO_Setoe?BIT
+001079 1203B8            LCALL   _GPIO_Setoe
+   71: 	GPIO_SetPu(gpio_num,0);
+00107C AF04              MOV     R7,AR4
+00107E A207              MOV     C,st
+001080 9202              MOV     ?_GPIO_Setout?BIT,C
+001082 120F86            LCALL   _GPIO_Setout
+   72: }
+001085 AF04              MOV     R7,AR4
+001087 C203              CLR     ?_GPIO_SetPu?BIT
+;----                  JMP     _GPIO_SetPu
+----- FUNCTION _GPIO_SetOutput (END) -------
+
+
+----- FUNCTION _GPIO_SetPu (BEGIN) -----
+ FILE: 'gpio.c'
+   45: void GPIO_SetPu(u8_t gpio_num, bool bit_val)
+   46: {
+;---- Variable 'gpio_num' assigned to Register 'R7' ----
+   47: 	gpioSetBit(gpio_num, &REG_GPIO_PUP(0), bit_val);	
+   48: }
+001089 7B01              MOV     R3,#01H
+00108B 7A80              MOV     R2,#080H
+00108D 7978              MOV     R1,#078H
+00108F A203              MOV     C,bit_val
+001091 9201              MOV     ?_gpioSetBit?BIT,C
+001093 0203C2            LJMP    _gpioSetBit
+----- FUNCTION _GPIO_SetPu (END) -------
+
+
+----- FUNCTION mouseKeyDetect (BEGIN) -----
+ FILE: 'sys.c'
+  500: void mouseKeyDetect()
+  501: {
+  502: 	u8_t buttonLeft = 0,buttonRight = 0,buttonMiddle = 0,buttonBack=0,buttonForward=0;
+  503: 	buttonLeft = mouseLKeyCheck();
+001096 E4                CLR     A
+001097 901BF3            MOV     DPTR,#buttonLeft
+00109A F0                MOVX    @DPTR,A
+00109B A3                INC     DPTR
+00109C F0                MOVX    @DPTR,A
+00109D A3                INC     DPTR
+00109E F0                MOVX    @DPTR,A
+00109F A3                INC     DPTR
+0010A0 F0                MOVX    @DPTR,A
+0010A1 A3                INC     DPTR
+0010A2 F0                MOVX    @DPTR,A
+  504: 	buttonMiddle = mouseMKeyCheck();
+0010A3 120FDD            LCALL   mouseLKeyCheck
+0010A6 901BF3            MOV     DPTR,#buttonLeft
+0010A9 EF                MOV     A,R7
+0010AA F0                MOVX    @DPTR,A
+  505: 	buttonRight = mouseRKeyCheck();
+0010AB 1129              ACALL   mouseMKeyCheck
+0010AD 901BF5            MOV     DPTR,#buttonMiddle
+0010B0 EF                MOV     A,R7
+0010B1 F0                MOVX    @DPTR,A
+  506: 	buttonBack = mouseBkKeyCheck();
+0010B2 31C6              ACALL   mouseRKeyCheck
+0010B4 901BF4            MOV     DPTR,#buttonRight
+0010B7 EF                MOV     A,R7
+0010B8 F0                MOVX    @DPTR,A
+  507: 	buttonForward = mouseFwKeyCheck();
+0010B9 11F8              ACALL   mouseBkKeyCheck
+0010BB 901BF6            MOV     DPTR,#buttonBack
+0010BE EF                MOV     A,R7
+0010BF F0                MOVX    @DPTR,A
+  508: 
+0010C0 315F              ACALL   mouseFwKeyCheck
+0010C2 901BF7            MOV     DPTR,#buttonForward
+0010C5 EF                MOV     A,R7
+0010C6 F0                MOVX    @DPTR,A
+  509: 	mouseDpiKeyCheck();
+0010C7 5112              ACALL   mouseDpiKeyCheck
+  510: 	g_variable.keyDetect = buttonLeft |buttonRight<<1|buttonMiddle<<2|buttonBack<<3|buttonForward<<4;
+0010C9 901BF4            MOV     DPTR,#buttonRight
+0010CC E0                MOVX    A,@DPTR
+0010CD FF                MOV     R7,A
+0010CE 25E0              ADD     A,ACC
+0010D0 FF                MOV     R7,A
+0010D1 901BF3            MOV     DPTR,#buttonLeft
+0010D4 E0                MOVX    A,@DPTR
+0010D5 4F                ORL     A,R7
+0010D6 FF                MOV     R7,A
+0010D7 901BF5            MOV     DPTR,#buttonMiddle
+0010DA E0                MOVX    A,@DPTR
+0010DB FE                MOV     R6,A
+0010DC 25E0              ADD     A,ACC
+0010DE 25E0              ADD     A,ACC
+0010E0 4F                ORL     A,R7
+0010E1 FF                MOV     R7,A
+0010E2 A3                INC     DPTR
+0010E3 E0                MOVX    A,@DPTR
+0010E4 FE                MOV     R6,A
+0010E5 33                RLC     A
+0010E6 33                RLC     A
+0010E7 33                RLC     A
+0010E8 54F8              ANL     A,#0F8H
+0010EA 4F                ORL     A,R7
+0010EB FF                MOV     R7,A
+0010EC A3                INC     DPTR
+0010ED E0                MOVX    A,@DPTR
+0010EE FE                MOV     R6,A
+0010EF C4                SWAP    A
+0010F0 54F0              ANL     A,#0F0H
+0010F2 4F                ORL     A,R7
+0010F3 904EED            MOV     DPTR,#g_variable+032H
+0010F6 F0                MOVX    @DPTR,A
+  511: }
+0010F7 22                RET     
+----- FUNCTION mouseKeyDetect (END) -------
+
+
+----- FUNCTION mouseBkKeyCheck (BEGIN) -----
+ FILE: 'sys.c'
+  360: static u8_t mouseBkKeyCheck()
+  361: {
+  362: 	if (!GPIO_GetInputStatus(KS_BK_GPIO)) return 0;
+  363: 	GPIO_SetOutput(Timer_div_io, 0);
+0010F8 7F17              MOV     R7,#017H
+0010FA 120D4C            LCALL   _GPIO_GetInputStatus
+0010FD 4003              JC      ?C0046?SYS
+0010FF 7F00              MOV     R7,#00H
+001101 22                RET     
+001102         ?C0046?SYS:
+  364: 	g_variable.bkKeyTemp <<=1;
+001102 C207              CLR     ?_GPIO_SetOutput?BIT
+001104 7F07              MOV     R7,#07H
+001106 1175              ACALL   _GPIO_SetOutput
+  365: 	g_variable.bkKeyTemp |= !GPIO_GetInputStatus(KS_BK_GPIO);
+001108 904ED2            MOV     DPTR,#g_variable+017H
+00110B E0                MOVX    A,@DPTR
+00110C FF                MOV     R7,A
+00110D 25E0              ADD     A,ACC
+00110F F0                MOVX    @DPTR,A
+  366: 	GPIO_SetOutput(Timer_div_io,1);
+001110 E0                MOVX    A,@DPTR
+001111 FF                MOV     R7,A
+001112 C007              PUSH    AR7
+001114 7F17              MOV     R7,#017H
+001116 120D4C            LCALL   _GPIO_GetInputStatus
+001119 4004              JC      ?C0048?SYS
+00111B 7E01              MOV     R6,#01H
+00111D 8002              SJMP    ?C0049?SYS
+00111F         ?C0048?SYS:
+00111F 7E00              MOV     R6,#00H
+001121         ?C0049?SYS:
+001121 D0E0              POP     ACC
+001123 4E                ORL     A,R6
+001124 904ED2            MOV     DPTR,#g_variable+017H
+001127 F0                MOVX    @DPTR,A
+  367: 	GPIO_SetInput(Timer_div_io, 0);	
+001128 D207              SETB    ?_GPIO_SetOutput?BIT
+00112A 7F07              MOV     R7,#07H
+00112C 1175              ACALL   _GPIO_SetOutput
+  368: 	if (g_variable.bkKeyTemp&0x01)
+00112E C206              CLR     ?_GPIO_SetInput?BIT
+001130 7F07              MOV     R7,#07H
+001132 1203A1            LCALL   _GPIO_SetInput
+  369: 	{
+001135 904ED2            MOV     DPTR,#g_variable+017H
+001138 E0                MOVX    A,@DPTR
+001139 30E006            JNB     ACC.0,?C0053?SYS
+  370: 		g_variable.wheelTimer= 2 ;
+  371: 	}	
+00113C 904EC7            MOV     DPTR,#g_variable+0CH
+00113F 7402              MOV     A,#02H
+001141 F0                MOVX    @DPTR,A
+  372: 	do 
+001142         ?C0053?SYS:
+  373: 	{ 
+  374: 		if((g_variable.bkKeyTemp & 0x07) == 0x07)
+001142 904ED2            MOV     DPTR,#g_variable+017H
+001145 E0                MOVX    A,@DPTR
+001146 5407              ANL     A,#07H
+001148 FF                MOV     R7,A
+001149 BF0706            CJNE    R7,#07H,?C0054?SYS
+  375: 		{
+  376: 			g_variable.bkKey = 1;
+00114C A3                INC     DPTR
+00114D 7401              MOV     A,#01H
+00114F F0                MOVX    @DPTR,A
+  377: 			break;
+001150 8007              SJMP    ?C0052?SYS
+  378: 		}
+001152         ?C0054?SYS:
+  379: 		if((g_variable.bkKeyTemp & 0x07) == 0x00)
+001152 EF                MOV     A,R7
+001153 7004              JNZ     ?C0052?SYS
+  380: 		{
+  381: 			g_variable.bkKey = 0;
+001155 904ED3            MOV     DPTR,#g_variable+018H
+001158 F0                MOVX    @DPTR,A
+  382: 			break;
+  383: 		}
+  384: 	}while(0);
+001159         ?C0052?SYS:
+  385: 	return g_variable.bkKey;
+001159 904ED3            MOV     DPTR,#g_variable+018H
+00115C E0                MOVX    A,@DPTR
+00115D FF                MOV     R7,A
+  386: }
+00115E 22                RET     
+----- FUNCTION mouseBkKeyCheck (END) -------
+
+
+----- FUNCTION mouseFwKeyCheck (BEGIN) -----
+ FILE: 'sys.c'
+  388: static u8_t mouseFwKeyCheck()
+  389: {
+  390: 	if (!GPIO_GetInputStatus(KS_FW_GPIO)) return 0;
+  391: 	GPIO_SetOutput(Timer_div_io, 0);
+00115F 7F04              MOV     R7,#04H
+001161 120D4C            LCALL   _GPIO_GetInputStatus
+001164 4003              JC      ?C0056?SYS
+001166 7F00              MOV     R7,#00H
+001168 22                RET     
+001169         ?C0056?SYS:
+  392: 	g_variable.fwKeyTemp <<=1;
+001169 C207              CLR     ?_GPIO_SetOutput?BIT
+00116B 7F07              MOV     R7,#07H
+00116D 1175              ACALL   _GPIO_SetOutput
+  393: 	g_variable.fwKeyTemp |= !GPIO_GetInputStatus(KS_FW_GPIO);
+00116F 904ED0            MOV     DPTR,#g_variable+015H
+001172 E0                MOVX    A,@DPTR
+001173 FF                MOV     R7,A
+001174 25E0              ADD     A,ACC
+001176 F0                MOVX    @DPTR,A
+  394: 	GPIO_SetOutput(Timer_div_io,1);
+001177 E0                MOVX    A,@DPTR
+001178 FF                MOV     R7,A
+001179 C007              PUSH    AR7
+00117B 7F04              MOV     R7,#04H
+00117D 120D4C            LCALL   _GPIO_GetInputStatus
+001180 4004              JC      ?C0058?SYS
+001182 7E01              MOV     R6,#01H
+001184 8002              SJMP    ?C0059?SYS
+001186         ?C0058?SYS:
+001186 7E00              MOV     R6,#00H
+001188         ?C0059?SYS:
+001188 D0E0              POP     ACC
+00118A 4E                ORL     A,R6
+00118B 904ED0            MOV     DPTR,#g_variable+015H
+00118E F0                MOVX    @DPTR,A
+  395: 	GPIO_SetInput(Timer_div_io, 0);	
+00118F D207              SETB    ?_GPIO_SetOutput?BIT
+001191 7F07              MOV     R7,#07H
+001193 1175              ACALL   _GPIO_SetOutput
+  396: 	if (g_variable.fwKeyTemp&0x01) 
+001195 C206              CLR     ?_GPIO_SetInput?BIT
+001197 7F07              MOV     R7,#07H
+001199 1203A1            LCALL   _GPIO_SetInput
+  397: 	{
+00119C 904ED0            MOV     DPTR,#g_variable+015H
+00119F E0                MOVX    A,@DPTR
+0011A0 30E006            JNB     ACC.0,?C0063?SYS
+  398: 		g_variable.wheelTimer= 2 ;
+  399: 	}
+0011A3 904EC7            MOV     DPTR,#g_variable+0CH
+0011A6 7402              MOV     A,#02H
+0011A8 F0                MOVX    @DPTR,A
+  400: 	do
+0011A9         ?C0063?SYS:
+  401: 	{ 
+  402: 		if((g_variable.fwKeyTemp & 0x07) == 0x07) 
+0011A9 904ED0            MOV     DPTR,#g_variable+015H
+0011AC E0                MOVX    A,@DPTR
+0011AD 5407              ANL     A,#07H
+0011AF FF                MOV     R7,A
+0011B0 BF0706            CJNE    R7,#07H,?C0064?SYS
+  403: 		{
+  404: 			g_variable.fwKey = 1;
+0011B3 A3                INC     DPTR
+0011B4 7401              MOV     A,#01H
+0011B6 F0                MOVX    @DPTR,A
+  405: 			break;
+0011B7 8007              SJMP    ?C0062?SYS
+  406: 		}
+0011B9         ?C0064?SYS:
+  407: 		if((g_variable.fwKeyTemp & 0x07) == 0x00)
+0011B9 EF                MOV     A,R7
+0011BA 7004              JNZ     ?C0062?SYS
+  408: 		{
+  409: 			g_variable.fwKey = 0;
+0011BC 904ED1            MOV     DPTR,#g_variable+016H
+0011BF F0                MOVX    @DPTR,A
+  410: 			break;
+  411: 		}
+  412: 	}while(0);
+0011C0         ?C0062?SYS:
+  413: 	return g_variable.fwKey;
+0011C0 904ED1            MOV     DPTR,#g_variable+016H
+0011C3 E0                MOVX    A,@DPTR
+0011C4 FF                MOV     R7,A
+  414: }
+0011C5 22                RET     
+----- FUNCTION mouseFwKeyCheck (END) -------
+
+
+----- FUNCTION mouseRKeyCheck (BEGIN) -----
+ FILE: 'sys.c'
+  335: static u8_t mouseRKeyCheck()
+  336: {
+  337: 	GPIO_SetOutput(Timer_div_io, 1);
+  338: 	g_variable.rKeyTemp <<=1;
+0011C6 D207              SETB    ?_GPIO_SetOutput?BIT
+0011C8 7F07              MOV     R7,#07H
+0011CA 1175              ACALL   _GPIO_SetOutput
+  339: 	g_variable.rKeyTemp |= !GPIO_GetInputStatus(KS_BR_GPIO);
+0011CC 904ECE            MOV     DPTR,#g_variable+013H
+0011CF E0                MOVX    A,@DPTR
+0011D0 FF                MOV     R7,A
+0011D1 25E0              ADD     A,ACC
+0011D3 F0                MOVX    @DPTR,A
+  340: 	if (g_variable.rKeyTemp&0x01) 
+0011D4 E0                MOVX    A,@DPTR
+0011D5 FF                MOV     R7,A
+0011D6 C007              PUSH    AR7
+0011D8 7F1B              MOV     R7,#01BH
+0011DA 120D4C            LCALL   _GPIO_GetInputStatus
+0011DD 4004              JC      ?C0037?SYS
+0011DF 7E01              MOV     R6,#01H
+0011E1 8002              SJMP    ?C0038?SYS
+0011E3         ?C0037?SYS:
+0011E3 7E00              MOV     R6,#00H
+0011E5         ?C0038?SYS:
+0011E5 D0E0              POP     ACC
+0011E7 4E                ORL     A,R6
+0011E8 904ECE            MOV     DPTR,#g_variable+013H
+0011EB F0                MOVX    @DPTR,A
+  341: 	{
+0011EC 30E006            JNB     ACC.0,?C0042?SYS
+  342: 		g_variable.wheelTimer= 2 ;
+  343: 	}
+0011EF 904EC7            MOV     DPTR,#g_variable+0CH
+0011F2 7402              MOV     A,#02H
+0011F4 F0                MOVX    @DPTR,A
+  344: 	do 
+0011F5         ?C0042?SYS:
+  345: 	{ 
+  346: 		if((g_variable.rKeyTemp & 0x07) == 0x07) 
+0011F5 904ECE            MOV     DPTR,#g_variable+013H
+0011F8 E0                MOVX    A,@DPTR
+0011F9 5407              ANL     A,#07H
+0011FB FF                MOV     R7,A
+0011FC BF0706            CJNE    R7,#07H,?C0043?SYS
+  347: 		{
+  348: 			g_variable.rKey = 1;
+0011FF A3                INC     DPTR
+001200 7401              MOV     A,#01H
+001202 F0                MOVX    @DPTR,A
+  349: 			break;
+001203 8007              SJMP    ?C0041?SYS
+  350: 		}
+001205         ?C0043?SYS:
+  351: 		if((g_variable.rKeyTemp & 0x07) == 0x00) 
+001205 EF                MOV     A,R7
+001206 7004              JNZ     ?C0041?SYS
+  352: 		{
+  353: 			g_variable.rKey = 0;
+001208 904ECF            MOV     DPTR,#g_variable+014H
+00120B F0                MOVX    @DPTR,A
+  354: 			break;
+  355: 		}
+  356: 	}while(0);
+00120C         ?C0041?SYS:
+  357: 	return g_variable.rKey;
+00120C 904ECF            MOV     DPTR,#g_variable+014H
+00120F E0                MOVX    A,@DPTR
+001210 FF                MOV     R7,A
+  358: }
+001211 22                RET     
+----- FUNCTION mouseRKeyCheck (END) -------
+
+
+----- FUNCTION mouseDpiKeyCheck (BEGIN) -----
+ FILE: 'sys.c'
+  416: void mouseDpiKeyCheck(void)
+  417: {
+  418: 	g_variable.dpiKeyTemp <<=1;
+  419: 	g_variable.dpiKeyTemp |= !GPIO_GetInputStatus(CPI_GPIO);
+001212 904EDC            MOV     DPTR,#g_variable+021H
+001215 E0                MOVX    A,@DPTR
+001216 FF                MOV     R7,A
+001217 25E0              ADD     A,ACC
+001219 F0                MOVX    @DPTR,A
+  420: 	if (g_variable.dpiKeyTemp&0x01)	g_variable.wheelTimer= 2 ;
+00121A E0                MOVX    A,@DPTR
+00121B FF                MOV     R7,A
+00121C C007              PUSH    AR7
+00121E 7F06              MOV     R7,#06H
+001220 120D4C            LCALL   _GPIO_GetInputStatus
+001223 4004              JC      ?C0066?SYS
+001225 7E01              MOV     R6,#01H
+001227 8002              SJMP    ?C0067?SYS
+001229         ?C0066?SYS:
+001229 7E00              MOV     R6,#00H
+00122B         ?C0067?SYS:
+00122B D0E0              POP     ACC
+00122D 4E                ORL     A,R6
+00122E 904EDC            MOV     DPTR,#g_variable+021H
+001231 F0                MOVX    @DPTR,A
+  421: 	if((g_variable.dpiKeyTemp & 0xff) == 0x07)  
+001232 30E006            JNB     ACC.0,?C0068?SYS
+001235 904EC7            MOV     DPTR,#g_variable+0CH
+001238 7402              MOV     A,#02H
+00123A F0                MOVX    @DPTR,A
+00123B         ?C0068?SYS:
+  422: 	{
+00123B 904EDC            MOV     DPTR,#g_variable+021H
+00123E E0                MOVX    A,@DPTR
+00123F 6407              XRL     A,#07H
+001241 7029              JNZ     ?C0071?SYS
+  423: 		g_variable.dpiCount++;
+  424: 		g_variable.dpiCount &= 0x03;
+001243 904EDB            MOV     DPTR,#g_variable+020H
+001246 E0                MOVX    A,@DPTR
+001247 04                INC     A
+001248 F0                MOVX    @DPTR,A
+  425: 		if (g_variable.dpiCount == 0 ) g_variable.dpiCount = 1;
+001249 E0                MOVX    A,@DPTR
+00124A 5403              ANL     A,#03H
+00124C F0                MOVX    @DPTR,A
+  426: 		g_variable.dpiLedFlipTime = g_variable.dpiCount;
+00124D 7002              JNZ     ?C0070?SYS
+00124F 04                INC     A
+001250 F0                MOVX    @DPTR,A
+001251         ?C0070?SYS:
+  427: 		dpiWriteInSensor();
+001251 904EDB            MOV     DPTR,#g_variable+020H
+001254 E0                MOVX    A,@DPTR
+001255 904EDD            MOV     DPTR,#g_variable+022H
+001258 F0                MOVX    @DPTR,A
+  428: 		IIC_WriteBlock(EEPROM_DPI_ADDR, 1,&g_variable.dpiCount);
+001259 120AB9            LCALL   dpiWriteInSensor
+  429: 	}
+00125C 7B01              MOV     R3,#01H
+00125E 7A4E              MOV     R2,#HIGH g_variable+020H
+001260 79DB              MOV     R1,#LOW g_variable+020H
+001262 7D01              MOV     R5,#01H
+001264 7C00              MOV     R4,#00H
+001266 7FA8              MOV     R7,#0A8H
+001268 7E7F              MOV     R6,#07FH
+00126A 516D              ACALL   _IIC_WriteBlock
+  430: }
+  431: 
+00126C         ?C0071?SYS:
+00126C 22                RET     
+----- FUNCTION mouseDpiKeyCheck (END) -------
+
+
+----- FUNCTION _IIC_WriteBlock (BEGIN) -----
+ FILE: 'iic.c'
+   50: void IIC_WriteBlock(u16_t addr, u16_t len, u8_t* pbuff)
+   51: {
+00126D 901BC9            MOV     DPTR,#addr
+001270 EE                MOV     A,R6
+001271 F0                MOVX    @DPTR,A
+001272 A3                INC     DPTR
+001273 EF                MOV     A,R7
+001274 F0                MOVX    @DPTR,A
+001275 A3                INC     DPTR
+001276 EC                MOV     A,R4
+001277 F0                MOVX    @DPTR,A
+001278 A3                INC     DPTR
+001279 ED                MOV     A,R5
+00127A F0                MOVX    @DPTR,A
+00127B A3                INC     DPTR
+00127C EB                MOV     A,R3
+00127D F0                MOVX    @DPTR,A
+00127E A3                INC     DPTR
+00127F EA                MOV     A,R2
+001280 F0                MOVX    @DPTR,A
+001281 A3                INC     DPTR
+001282 E9                MOV     A,R1
+001283 F0                MOVX    @DPTR,A
+   52: 	u16_t cris,curr_len;
+001284         ?C0007?IIC:
+   53: 	while (len)
+001284 901BCB            MOV     DPTR,#len
+001287 E0                MOVX    A,@DPTR
+001288 7002              JNZ     ?C0012?IIC
+00128A A3                INC     DPTR
+00128B E0                MOVX    A,@DPTR
+00128C         ?C0012?IIC:
+00128C 7002              JNZ     $ + 4H
+00128E 611B              AJMP    ?C0011?IIC
+   54: 	{
+   55: 		cris = (addr|(EEP_PAZE_SIZE-1)) +1;
+001290 901BC9            MOV     DPTR,#addr
+001293 E0                MOVX    A,@DPTR
+001294 FE                MOV     R6,A
+001295 A3                INC     DPTR
+001296 E0                MOVX    A,@DPTR
+001297 FF                MOV     R7,A
+001298 440F              ORL     A,#0FH
+00129A 2401              ADD     A,#01H
+00129C FD                MOV     R5,A
+00129D E4                CLR     A
+00129E 3E                ADDC    A,R6
+00129F FC                MOV     R4,A
+;---- Variable 'cris' assigned to Register 'R4/R5' ----
+   56: 		curr_len = cris - addr;
+0012A0 C3                CLR     C
+0012A1 ED                MOV     A,R5
+0012A2 9F                SUBB    A,R7
+0012A3 FF                MOV     R7,A
+0012A4 EC                MOV     A,R4
+0012A5 9E                SUBB    A,R6
+0012A6 FE                MOV     R6,A
+0012A7 901BD0            MOV     DPTR,#curr_len
+0012AA F0                MOVX    @DPTR,A
+0012AB A3                INC     DPTR
+0012AC EF                MOV     A,R7
+0012AD F0                MOVX    @DPTR,A
+   57: 		curr_len = min(curr_len,len);
+0012AE 901BCB            MOV     DPTR,#len
+0012B1 E0                MOVX    A,@DPTR
+0012B2 FC                MOV     R4,A
+0012B3 A3                INC     DPTR
+0012B4 E0                MOVX    A,@DPTR
+0012B5 FD                MOV     R5,A
+0012B6 D3                SETB    C
+0012B7 9F                SUBB    A,R7
+0012B8 EC                MOV     A,R4
+0012B9 9E                SUBB    A,R6
+0012BA 400A              JC      ?C0009?IIC
+0012BC 901BD0            MOV     DPTR,#curr_len
+0012BF E0                MOVX    A,@DPTR
+0012C0 FE                MOV     R6,A
+0012C1 A3                INC     DPTR
+0012C2 E0                MOVX    A,@DPTR
+0012C3 FF                MOV     R7,A
+0012C4 8004              SJMP    ?C0010?IIC
+0012C6         ?C0009?IIC:
+0012C6 AE04              MOV     R6,AR4
+0012C8 AF05              MOV     R7,AR5
+0012CA         ?C0010?IIC:
+0012CA 901BD0            MOV     DPTR,#curr_len
+0012CD EE                MOV     A,R6
+0012CE F0                MOVX    @DPTR,A
+0012CF FC                MOV     R4,A
+0012D0 A3                INC     DPTR
+0012D1 EF                MOV     A,R7
+0012D2 F0                MOVX    @DPTR,A
+0012D3 FD                MOV     R5,A
+   58: 		len -= curr_len;
+0012D4 C3                CLR     C
+0012D5 901BCC            MOV     DPTR,#len+01H
+0012D8 E0                MOVX    A,@DPTR
+0012D9 9D                SUBB    A,R5
+0012DA F0                MOVX    @DPTR,A
+0012DB 901BCB            MOV     DPTR,#len
+0012DE E0                MOVX    A,@DPTR
+0012DF 9C                SUBB    A,R4
+0012E0 F0                MOVX    @DPTR,A
+   59: 		IIC_write(addr,curr_len,pbuff);
+0012E1 901BC9            MOV     DPTR,#addr
+0012E4 E0                MOVX    A,@DPTR
+0012E5 FE                MOV     R6,A
+0012E6 A3                INC     DPTR
+0012E7 E0                MOVX    A,@DPTR
+0012E8 FF                MOV     R7,A
+0012E9 901BCD            MOV     DPTR,#pbuff
+0012EC E0                MOVX    A,@DPTR
+0012ED FB                MOV     R3,A
+0012EE A3                INC     DPTR
+0012EF E0                MOVX    A,@DPTR
+0012F0 FA                MOV     R2,A
+0012F1 A3                INC     DPTR
+0012F2 E0                MOVX    A,@DPTR
+0012F3 F9                MOV     R1,A
+0012F4 9179              ACALL   _IIC_write
+   60: 		Delay1ms(10);
+0012F6 7F0A              MOV     R7,#0AH
+0012F8 7E00              MOV     R6,#00H
+0012FA B1B2              ACALL   _Delay1ms
+   61: 		pbuff += curr_len;
+0012FC 901BD0            MOV     DPTR,#curr_len
+0012FF E0                MOVX    A,@DPTR
+001300 FE                MOV     R6,A
+001301 A3                INC     DPTR
+001302 E0                MOVX    A,@DPTR
+001303 FF                MOV     R7,A
+001304 901BCE            MOV     DPTR,#pbuff+01H
+001307 EE                MOV     A,R6
+001308 8FF0              MOV     B,R7
+00130A 1201EE            LCALL   ?C?IILDX
+   62: 		addr += curr_len;
+00130D 901BCA            MOV     DPTR,#addr+01H
+001310 E0                MOVX    A,@DPTR
+001311 2F                ADD     A,R7
+001312 F0                MOVX    @DPTR,A
+001313 901BC9            MOV     DPTR,#addr
+001316 E0                MOVX    A,@DPTR
+001317 3E                ADDC    A,R6
+001318 F0                MOVX    @DPTR,A
+   63: 	};
+001319 4184              AJMP    ?C0007?IIC
+   64: 	
+   65: }
+00131B         ?C0011?IIC:
+00131B 22                RET     
+----- FUNCTION _IIC_WriteBlock (END) -------
+
+
+----- FUNCTION leAddrRandomCntInit (BEGIN) -----
+ FILE: 'sys.c'
+  876: void leAddrRandomCntInit()
+  877: {	
+  878: 	u8_t leAddrE2WP = 0;
+  879: 	IIC_Read(EEPROM_BLE_ADDR_RANDOM_CNT_WP, 1, &leAddrE2WP);
+00131C E4                CLR     A
+00131D 901C29            MOV     DPTR,#leAddrE2WP
+001320 F0                MOVX    @DPTR,A
+  880: 	if(leAddrE2WP == 0xff)
+001321 7B01              MOV     R3,#01H
+001323 7A1C              MOV     R2,#HIGH leAddrE2WP
+001325 7929              MOV     R1,#LOW leAddrE2WP
+001327 7D01              MOV     R5,#01H
+001329 FC                MOV     R4,A
+00132A 7FAC              MOV     R7,#0ACH
+00132C 7E7F              MOV     R6,#07FH
+00132E 7168              ACALL   _IIC_Read
+  881: 	{
+001330 901C29            MOV     DPTR,#leAddrE2WP
+001333 E0                MOVX    A,@DPTR
+001334 B4FF30            CJNE    A,#0FFH,?C0155?SYS
+  882: 		g_variable.leAddrRandomCnt = ADC_Get0vBase();
+  883: 		IIC_WriteBlock(EEPROM_BLE_ADDR_RANDOM_CNT, 2, (u8_t *)&g_variable.leAddrRandomCnt);
+001337 91EE              ACALL   ADC_Get0vBase
+001339 904F11            MOV     DPTR,#g_variable+056H
+00133C EE                MOV     A,R6
+00133D F0                MOVX    @DPTR,A
+00133E A3                INC     DPTR
+00133F EF                MOV     A,R7
+001340 F0                MOVX    @DPTR,A
+  884: 		leAddrE2WP = 0x5a;
+001341 7B01              MOV     R3,#01H
+001343 7A4F              MOV     R2,#HIGH g_variable+056H
+001345 7911              MOV     R1,#LOW g_variable+056H
+001347 7D02              MOV     R5,#02H
+001349 7C00              MOV     R4,#00H
+00134B 7FAA              MOV     R7,#0AAH
+00134D 7E7F              MOV     R6,#07FH
+00134F 516D              ACALL   _IIC_WriteBlock
+  885: 		IIC_WriteBlock(EEPROM_BLE_ADDR_RANDOM_CNT_WP, 1, &leAddrE2WP);
+001351 901C29            MOV     DPTR,#leAddrE2WP
+001354 745A              MOV     A,#05AH
+001356 F0                MOVX    @DPTR,A
+  886: 	}
+001357 7B01              MOV     R3,#01H
+001359 7A1C              MOV     R2,#HIGH leAddrE2WP
+00135B 7929              MOV     R1,#LOW leAddrE2WP
+00135D 7D01              MOV     R5,#01H
+00135F 7C00              MOV     R4,#00H
+001361 7FAC              MOV     R7,#0ACH
+001363 7E7F              MOV     R6,#07FH
+001365 516D              ACALL   _IIC_WriteBlock
+  887: }
+  888: 
+001367         ?C0155?SYS:
+001367 22                RET     
+----- FUNCTION leAddrRandomCntInit (END) -------
+
+
+----- FUNCTION _IIC_Read (BEGIN) -----
+ FILE: 'iic.c'
+   15: void IIC_Read(u16_t addr, u16_t len, u8_t* pbuff)
+   16: {
+001368 901BFD            MOV     DPTR,#len
+00136B EC                MOV     A,R4
+00136C F0                MOVX    @DPTR,A
+00136D A3                INC     DPTR
+00136E ED                MOV     A,R5
+00136F F0                MOVX    @DPTR,A
+001370 A3                INC     DPTR
+001371 EB                MOV     A,R3
+001372 F0                MOVX    @DPTR,A
+001373 A3                INC     DPTR
+001374 EA                MOV     A,R2
+001375 F0                MOVX    @DPTR,A
+001376 A3                INC     DPTR
+001377 E9                MOV     A,R1
+001378 F0                MOVX    @DPTR,A
+;---- Variable 'addr' assigned to Register 'R6/R7' ----
+   17: 	u16_t mem_src =  addr;
+   18: 	REG_IICD_TXLEN = ESWAP(4);
+;---- Variable 'mem_src' assigned to Register 'R6/R7' ----
+   19: 	YC_IICDTbuf[0] = 0xa0 |EEP_DEV_ADDR;
+001379 908098            MOV     DPTR,#08098H
+00137C 7404              MOV     A,#04H
+00137E F0                MOVX    @DPTR,A
+00137F A3                INC     DPTR
+001380 E4                CLR     A
+001381 F0                MOVX    @DPTR,A
+   20: 	*(u16_t*)(YC_IICDTbuf+1) = mem_src;
+001382 901B2C            MOV     DPTR,#YC_IICDTbuf
+001385 74A0              MOV     A,#0A0H
+001387 F0                MOVX    @DPTR,A
+   21: 	YC_IICDTbuf[3] = 0xa1 | EEP_DEV_ADDR;
+001388 A3                INC     DPTR
+001389 EE                MOV     A,R6
+00138A F0                MOVX    @DPTR,A
+00138B A3                INC     DPTR
+00138C EF                MOV     A,R7
+00138D F0                MOVX    @DPTR,A
+   22: 	REG_IICD_TXADDR = ESWAP((u16_t)&YC_IICDTbuf);
+00138E 901B2F            MOV     DPTR,#YC_IICDTbuf+03H
+001391 74A1              MOV     A,#0A1H
+001393 F0                MOVX    @DPTR,A
+   23: 	REG_IICD_RXLEN = ESWAP(len);
+001394 7A1B              MOV     R2,#HIGH YC_IICDTbuf
+001396 792C              MOV     R1,#LOW YC_IICDTbuf
+001398 7E1B              MOV     R6,#HIGH YC_IICDTbuf
+00139A 7F2C              MOV     R7,#LOW YC_IICDTbuf
+00139C 742C              MOV     A,#LOW YC_IICDTbuf
+00139E FC                MOV     R4,A
+00139F 741B              MOV     A,#HIGH YC_IICDTbuf
+0013A1 FF                MOV     R7,A
+0013A2 EC                MOV     A,R4
+0013A3 FE                MOV     R6,A
+0013A4 EF                MOV     A,R7
+0013A5 90809A            MOV     DPTR,#0809AH
+0013A8 EE                MOV     A,R6
+0013A9 F0                MOVX    @DPTR,A
+0013AA A3                INC     DPTR
+0013AB EF                MOV     A,R7
+0013AC F0                MOVX    @DPTR,A
+   24: 	REG_IICD_RXADDR = ESWAP((u16_t)IIC_TempBuff);
+0013AD 901BFD            MOV     DPTR,#len
+0013B0 E0                MOVX    A,@DPTR
+0013B1 FC                MOV     R4,A
+0013B2 A3                INC     DPTR
+0013B3 E0                MOVX    A,@DPTR
+0013B4 FA                MOV     R2,A
+0013B5 EC                MOV     A,R4
+0013B6 FF                MOV     R7,A
+0013B7 EA                MOV     A,R2
+0013B8 FE                MOV     R6,A
+0013B9 EF                MOV     A,R7
+0013BA 90809E            MOV     DPTR,#0809EH
+0013BD EE                MOV     A,R6
+0013BE F0                MOVX    @DPTR,A
+0013BF A3                INC     DPTR
+0013C0 EF                MOV     A,R7
+0013C1 F0                MOVX    @DPTR,A
+   25: 	REG_IICD_CTRL = 2;
+0013C2 7A1B              MOV     R2,#HIGH IIC_TempBuff
+0013C4 7930              MOV     R1,#LOW IIC_TempBuff
+0013C6 7E1B              MOV     R6,#HIGH IIC_TempBuff
+0013C8 7F30              MOV     R7,#LOW IIC_TempBuff
+0013CA 7430              MOV     A,#LOW IIC_TempBuff
+0013CC FC                MOV     R4,A
+0013CD 741B              MOV     A,#HIGH IIC_TempBuff
+0013CF FF                MOV     R7,A
+0013D0 EC                MOV     A,R4
+0013D1 FE                MOV     R6,A
+0013D2 EF                MOV     A,R7
+0013D3 90809C            MOV     DPTR,#0809CH
+0013D6 EE                MOV     A,R6
+0013D7 F0                MOVX    @DPTR,A
+0013D8 A3                INC     DPTR
+0013D9 EF                MOV     A,R7
+0013DA F0                MOVX    @DPTR,A
+   26: 	if(!(REG_IICD_RXADDR&(1<<7)))
+0013DB 908090            MOV     DPTR,#08090H
+0013DE 7402              MOV     A,#02H
+0013E0 F0                MOVX    @DPTR,A
+   27: 	{
+0013E1 90809C            MOV     DPTR,#0809CH
+0013E4 A3                INC     DPTR
+0013E5 E0                MOVX    A,@DPTR
+0013E6 20E707            JB      ACC.7,?C0004?IIC
+   28: 		REG_IICD_CTRL |= 1;
+   29: 	}
+0013E9 908090            MOV     DPTR,#08090H
+0013EC E0                MOVX    A,@DPTR
+0013ED 4401              ORL     A,#01H
+0013EF F0                MOVX    @DPTR,A
+   30: 	REG_MISC_CTRL |= 1 << 2;	//start iic dma
+0013F0         ?C0004?IIC:
+   31: 	IIcWaitDone();	
+0013F0 908006            MOV     DPTR,#08006H
+0013F3 E0                MOVX    A,@DPTR
+0013F4 4404              ORL     A,#04H
+0013F6 F0                MOVX    @DPTR,A
+   32: 	xmemcpy(pbuff,IIC_TempBuff,len);
+0013F7 91E6              ACALL   IIcWaitDone
+   33: }
+0013F9 901BFF            MOV     DPTR,#pbuff
+0013FC E0                MOVX    A,@DPTR
+0013FD A3                INC     DPTR
+0013FE E0                MOVX    A,@DPTR
+0013FF FA                MOV     R2,A
+001400 A3                INC     DPTR
+001401 E0                MOVX    A,@DPTR
+001402 AE02              MOV     R6,AR2
+001404 FF                MOV     R7,A
+001405 7B01              MOV     R3,#01H
+001407 7A1B              MOV     R2,#HIGH IIC_TempBuff
+001409 7930              MOV     R1,#LOW IIC_TempBuff
+00140B 901BFD            MOV     DPTR,#len
+00140E E0                MOVX    A,@DPTR
+00140F A3                INC     DPTR
+001410 E0                MOVX    A,@DPTR
+001411 901BEC            MOV     DPTR,#?_xmemcpy?BYTE+05H
+001414 F0                MOVX    @DPTR,A
+;----                  JMP     _xmemcpy
+----- FUNCTION _IIC_Read (END) -------
+
+
+----- FUNCTION _xmemcpy (BEGIN) -----
+ FILE: 'utilities.c'
+   10: void xmemcpy(pxbyte dest, u8_t* src, u8_t len) 
+   11: {
+001415 901BE7            MOV     DPTR,#dest
+001418 EE                MOV     A,R6
+001419 F0                MOVX    @DPTR,A
+00141A A3                INC     DPTR
+00141B EF                MOV     A,R7
+00141C F0                MOVX    @DPTR,A
+00141D A3                INC     DPTR
+00141E EB                MOV     A,R3
+00141F F0                MOVX    @DPTR,A
+001420 A3                INC     DPTR
+001421 EA                MOV     A,R2
+001422 F0                MOVX    @DPTR,A
+001423 A3                INC     DPTR
+001424 E9                MOV     A,R1
+001425 F0                MOVX    @DPTR,A
+   12: 	while(len--)
+001426         ?C0002?UTILITIES:
+   13: 		*dest++ = *src++;
+001426 901BEC            MOV     DPTR,#len
+001429 E0                MOVX    A,@DPTR
+00142A FF                MOV     R7,A
+00142B 14                DEC     A
+00142C F0                MOVX    @DPTR,A
+00142D EF                MOV     A,R7
+00142E 6027              JZ      ?C0004?UTILITIES
+   14: 	return;
+001430 901BE9            MOV     DPTR,#src
+001433 E0                MOVX    A,@DPTR
+001434 FB                MOV     R3,A
+001435 A3                INC     DPTR
+001436 E4                CLR     A
+001437 75F001            MOV     B,#01H
+00143A 120204            LCALL   ?C?ILDIX
+00143D A9F0              MOV     R1,B
+00143F FA                MOV     R2,A
+001440 1200F9            LCALL   ?C?CLDPTR
+001443 FF                MOV     R7,A
+001444 901BE7            MOV     DPTR,#dest
+001447 E4                CLR     A
+001448 75F001            MOV     B,#01H
+00144B 120204            LCALL   ?C?ILDIX
+00144E 85F082            MOV     DPL,B
+001451 F583              MOV     DPH,A
+001453 EF                MOV     A,R7
+001454 F0                MOVX    @DPTR,A
+001455 80CF              SJMP    ?C0002?UTILITIES
+   15: }
+001457         ?C0004?UTILITIES:
+001457 22                RET     
+----- FUNCTION _xmemcpy (END) -------
+
+
+----- FUNCTION leReconnStart (BEGIN) -----
+ FILE: 'sys.c'
+  858: void leReconnStart()
+  859: {
+  860: 	g_variable.sleepTimer = 0;
+  861: 	IIC_Read(EEPROM_RECONN_LE_ADDR,6,(u8_t *)m_reconnLeAddr);
+001458 E4                CLR     A
+001459 904EC4            MOV     DPTR,#g_variable+09H
+00145C F0                MOVX    @DPTR,A
+00145D A3                INC     DPTR
+00145E F0                MOVX    @DPTR,A
+  862: 	g_variable.currentState = DEVICE_MODE_BLE_ADV;
+00145F 7B01              MOV     R3,#01H
+001461 7A45              MOV     R2,#HIGH m_reconnLeAddr
+001463 793E              MOV     R1,#LOW m_reconnLeAddr
+001465 7D06              MOV     R5,#06H
+001467 FC                MOV     R4,A
+001468 7F9C              MOV     R7,#09CH
+00146A 7E7F              MOV     R6,#07FH
+00146C 7168              ACALL   _IIC_Read
+  863: 	IPC_TxControlCmd(IPC_CMD_START_ADV_RECONN);
+00146E 904EBD            MOV     DPTR,#g_variable+02H
+001471 7408              MOV     A,#08H
+001473 F0                MOVX    @DPTR,A
+  864: }
+001474 7F27              MOV     R7,#027H
+001476 020EA2            LJMP    _IPC_TxControlCmd
+----- FUNCTION leReconnStart (END) -------
+
+
+----- FUNCTION _IIC_write (BEGIN) -----
+ FILE: 'iic.c'
+   35: void IIC_write(u16_t addr,u16_t len, u8_t* pbuff)
+   36: {
+001479 901B94            MOV     DPTR,#addr
+00147C EE                MOV     A,R6
+00147D F0                MOVX    @DPTR,A
+00147E A3                INC     DPTR
+00147F EF                MOV     A,R7
+001480 F0                MOVX    @DPTR,A
+;---- Variable 'pbuff' assigned to Register 'R1/R2/R3' ----
+001481 A3                INC     DPTR
+001482 EC                MOV     A,R4
+001483 F0                MOVX    @DPTR,A
+001484 A3                INC     DPTR
+001485 ED                MOV     A,R5
+001486 F0                MOVX    @DPTR,A
+   37: 	u8_t ptemp_addr[EEP_PAZE_SIZE+3];
+   38: 	xmemcpy(ptemp_addr+3, pbuff, len);
+001487 7E1B              MOV     R6,#HIGH ptemp_addr+03H
+001489 7F9B              MOV     R7,#LOW ptemp_addr+03H
+00148B 901BEC            MOV     DPTR,#?_xmemcpy?BYTE+05H
+00148E F0                MOVX    @DPTR,A
+00148F 9115              ACALL   _xmemcpy
+   39: 	ptemp_addr[0] = 0xa0;
+001491 901B98            MOV     DPTR,#ptemp_addr
+001494 74A0              MOV     A,#0A0H
+001496 F0                MOVX    @DPTR,A
+   40: 	(u16_t)ptemp_addr[1] = addr;
+001497 901B94            MOV     DPTR,#addr
+00149A E0                MOVX    A,@DPTR
+00149B FF                MOV     R7,A
+00149C A3                INC     DPTR
+00149D E0                MOVX    A,@DPTR
+00149E 901B99            MOV     DPTR,#ptemp_addr+01H
+0014A1 CF                XCH     A,R7
+0014A2 F0                MOVX    @DPTR,A
+0014A3 A3                INC     DPTR
+0014A4 EF                MOV     A,R7
+0014A5 F0                MOVX    @DPTR,A
+   41: 	REG_IICD_TXLEN = ESWAP(len+3);
+0014A6 901B97            MOV     DPTR,#len+01H
+0014A9 E0                MOVX    A,@DPTR
+0014AA 2403              ADD     A,#03H
+0014AC FD                MOV     R5,A
+0014AD 901B96            MOV     DPTR,#len
+0014B0 E0                MOVX    A,@DPTR
+0014B1 3400              ADDC    A,#00H
+0014B3 FC                MOV     R4,A
+0014B4 ED                MOV     A,R5
+0014B5 FA                MOV     R2,A
+0014B6 EC                MOV     A,R4
+0014B7 FF                MOV     R7,A
+0014B8 EA                MOV     A,R2
+0014B9 FE                MOV     R6,A
+0014BA EF                MOV     A,R7
+0014BB 908098            MOV     DPTR,#08098H
+0014BE EE                MOV     A,R6
+0014BF F0                MOVX    @DPTR,A
+0014C0 A3                INC     DPTR
+0014C1 EF                MOV     A,R7
+0014C2 F0                MOVX    @DPTR,A
+   42: 	REG_IICD_TXADDR = ESWAP((u16_t)ptemp_addr);
+0014C3 7D98              MOV     R5,#LOW ptemp_addr
+0014C5 ED                MOV     A,R5
+0014C6 FA                MOV     R2,A
+0014C7 741B              MOV     A,#HIGH ptemp_addr
+0014C9 FF                MOV     R7,A
+0014CA EA                MOV     A,R2
+0014CB FE                MOV     R6,A
+0014CC EF                MOV     A,R7
+0014CD A3                INC     DPTR
+0014CE EE                MOV     A,R6
+0014CF F0                MOVX    @DPTR,A
+0014D0 A3                INC     DPTR
+0014D1 EF                MOV     A,R7
+0014D2 F0                MOVX    @DPTR,A
+   43: 	REG_IICD_RXLEN = 0;
+0014D3 90809E            MOV     DPTR,#0809EH
+0014D6 E4                CLR     A
+0014D7 F0                MOVX    @DPTR,A
+0014D8 A3                INC     DPTR
+0014D9 F0                MOVX    @DPTR,A
+   44: 	REG_IICD_CTRL = 1;
+0014DA 908090            MOV     DPTR,#08090H
+0014DD 04                INC     A
+0014DE F0                MOVX    @DPTR,A
+   45: 	
+   46: 	REG_MISC_CTRL |= 1 << 2;	//start iic dma
+0014DF 908006            MOV     DPTR,#08006H
+0014E2 E0                MOVX    A,@DPTR
+0014E3 4404              ORL     A,#04H
+0014E5 F0                MOVX    @DPTR,A
+;----                  JMP     IIcWaitDone
+   47: 	IIcWaitDone();
+----- FUNCTION _IIC_write (END) -------
+
+
+----- FUNCTION IIcWaitDone (BEGIN) -----
+ FILE: 'iic.c'
+   10: static void IIcWaitDone(void)
+   11: {
+   12: 	while(!(REG_DMA_STATUS&(1<<5)));
+0014E6         ?C0001?IIC:
+   13: }
+0014E6 90812C            MOV     DPTR,#0812CH
+0014E9 E0                MOVX    A,@DPTR
+0014EA 30E5F9            JNB     ACC.5,?C0001?IIC
+   14: 
+0014ED 22                RET     
+----- FUNCTION IIcWaitDone (END) -------
+
+
+----- FUNCTION ADC_Get0vBase (BEGIN) -----
+ FILE: 'adc.c'
+   14: u16_t ADC_Get0vBase()
+   15: {
+   16: 	return m_adc0vBase;
+   17: }
+0014EE 904E41            MOV     DPTR,#m_adc0vBase
+0014F1 E0                MOVX    A,@DPTR
+0014F2 FE                MOV     R6,A
+0014F3 A3                INC     DPTR
+0014F4 E0                MOVX    A,@DPTR
+0014F5 FF                MOV     R7,A
+   17: 
+0014F6 22                RET     
+----- FUNCTION ADC_Get0vBase (END) -------
+
+
+----- FUNCTION Power_low_detect (BEGIN) -----
+ FILE: 'sys.c'
+ 1291: void Power_low_detect(void)
+ 1292: {
+ 1293: 	u16_t adc_value = 0;
+ 1294: 	adc_value = ADC_GetCurrentValue() - ADC_Get0vBase();
+0014F7 E4                CLR     A
+0014F8 901C25            MOV     DPTR,#adc_value
+0014FB F0                MOVX    @DPTR,A
+0014FC A3                INC     DPTR
+0014FD F0                MOVX    @DPTR,A
+ 1295: 	
+0014FE 91EE              ACALL   ADC_Get0vBase
+001500 C006              PUSH    AR6
+001502 C007              PUSH    AR7
+001504 D1E1              ACALL   ADC_GetCurrentValue
+001506 AC06              MOV     R4,AR6
+001508 AD07              MOV     R5,AR7
+00150A D007              POP     AR7
+00150C D006              POP     AR6
+00150E C3                CLR     C
+00150F ED                MOV     A,R5
+001510 9F                SUBB    A,R7
+001511 FF                MOV     R7,A
+001512 EC                MOV     A,R4
+001513 9E                SUBB    A,R6
+001514 901C25            MOV     DPTR,#adc_value
+001517 F0                MOVX    @DPTR,A
+001518 A3                INC     DPTR
+001519 EF                MOV     A,R7
+00151A F0                MOVX    @DPTR,A
+ 1296: #if ADC_VINLPM_ENABLE
+ 1297: 	if ((*(volatile unsigned char xdata *)mem_adc_config_flag)  == 1) 
+ 1298: 	{
+ 1299: 		if (adc_value < (((ADC_Get3vBase() - ADC_Get0vBase()) /30)*23)) 
+ 1300: 		{
+ 1301: 			g_variable.adcLowPowerFlag = 1;
+ 1302: 		}
+ 1303: 		else 
+ 1304: 		{
+ 1305: 			g_variable.adcLowPowerFlag = 0;
+ 1306: 		}
+ 1307: 		if (adc_value < ((ADC_Get3vBase() - ADC_Get0vBase()) /30 * 21))
+ 1308: 		{
+ 1309: 			if(m_new24gAbortPac != 1 && g_variable.currentState == DEVICE_MODE_24G)
+ 1310: 				return;
+ 1311: 			deviceLongSleep();
+ 1312: 		}
+ 1313: 	}
+ 1314: #endif
+ 1315: 	
+ 1316: #if ADC_GPIO_ENABLE
+ 1317: 	if ((*(volatile unsigned char xdata *)mem_adc_config_flag)  == 4) 
+00151B 9042CF            MOV     DPTR,#042CFH
+00151E E0                MOVX    A,@DPTR
+00151F 6404              XRL     A,#04H
+001521 6002              JZ      $ + 4H
+001523 A1A8              AJMP    ?C0231?SYS
+ 1318: 	{
+ 1319: 		if (adc_value < (((ADC_Get3vBase() - ADC_Get0vBase()) /30)*10)) 
+001525 91EE              ACALL   ADC_Get0vBase
+001527 C006              PUSH    AR6
+001529 C007              PUSH    AR7
+00152B B1A9              ACALL   ADC_Get3vBase
+00152D AC06              MOV     R4,AR6
+00152F AD07              MOV     R5,AR7
+001531 D007              POP     AR7
+001533 D006              POP     AR6
+001535 C3                CLR     C
+001536 ED                MOV     A,R5
+001537 9F                SUBB    A,R7
+001538 FF                MOV     R7,A
+001539 EC                MOV     A,R4
+00153A 9E                SUBB    A,R6
+00153B FE                MOV     R6,A
+00153C 7C00              MOV     R4,#00H
+00153E 7D1E              MOV     R5,#01EH
+001540 120163            LCALL   ?C?UIDIV
+001543 7C00              MOV     R4,#00H
+001545 7D0A              MOV     R5,#0AH
+001547 120151            LCALL   ?C?IMUL
+00154A C3                CLR     C
+00154B 901C26            MOV     DPTR,#adc_value+01H
+00154E E0                MOVX    A,@DPTR
+00154F 9F                SUBB    A,R7
+001550 901C25            MOV     DPTR,#adc_value
+001553 E0                MOVX    A,@DPTR
+001554 9E                SUBB    A,R6
+001555 5008              JNC     ?C0227?SYS
+ 1320: 			g_variable.adcLowPowerFlag = 1;
+001557 904EE2            MOV     DPTR,#g_variable+027H
+00155A 7401              MOV     A,#01H
+00155C F0                MOVX    @DPTR,A
+00155D 8005              SJMP    ?C0228?SYS
+00155F         ?C0227?SYS:
+ 1321: 		else g_variable.adcLowPowerFlag = 0;
+00155F E4                CLR     A
+001560 904EE2            MOV     DPTR,#g_variable+027H
+001563 F0                MOVX    @DPTR,A
+001564         ?C0228?SYS:
+ 1322: 		if (adc_value < ((ADC_Get3vBase() - ADC_Get0vBase()) /30 * 9))
+001564 91EE              ACALL   ADC_Get0vBase
+001566 C006              PUSH    AR6
+001568 C007              PUSH    AR7
+00156A B1A9              ACALL   ADC_Get3vBase
+00156C AC06              MOV     R4,AR6
+00156E AD07              MOV     R5,AR7
+001570 D007              POP     AR7
+001572 D006              POP     AR6
+001574 C3                CLR     C
+001575 ED                MOV     A,R5
+001576 9F                SUBB    A,R7
+001577 FF                MOV     R7,A
+001578 EC                MOV     A,R4
+001579 9E                SUBB    A,R6
+00157A FE                MOV     R6,A
+00157B 7C00              MOV     R4,#00H
+00157D 7D1E              MOV     R5,#01EH
+00157F 120163            LCALL   ?C?UIDIV
+001582 7C00              MOV     R4,#00H
+001584 7D09              MOV     R5,#09H
+001586 120151            LCALL   ?C?IMUL
+001589 C3                CLR     C
+00158A 901C26            MOV     DPTR,#adc_value+01H
+00158D E0                MOVX    A,@DPTR
+00158E 9F                SUBB    A,R7
+00158F 901C25            MOV     DPTR,#adc_value
+001592 E0                MOVX    A,@DPTR
+001593 9E                SUBB    A,R6
+001594 5012              JNC     ?C0231?SYS
+ 1323: 		{
+ 1324: 			if(m_new24gAbortPac != 1 && g_variable.currentState == DEVICE_MODE_24G)
+001596 904954            MOV     DPTR,#m_new24gAbortPac
+001599 E0                MOVX    A,@DPTR
+00159A 6401              XRL     A,#01H
+00159C 6008              JZ      ?C0230?SYS
+00159E 904EBD            MOV     DPTR,#g_variable+02H
+0015A1 E0                MOVX    A,@DPTR
+0015A2 6401              XRL     A,#01H
+0015A4 6002              JZ      ?C0231?SYS
+0015A6         ?C0230?SYS:
+ 1325: 				return;
+ 1326: 			deviceLongSleep();
+0015A6 D1EA              ACALL   deviceLongSleep
+ 1327: 		}
+ 1328: 	}
+ 1329: #endif
+ 1330: }
+0015A8         ?C0231?SYS:
+0015A8 22                RET     
+----- FUNCTION Power_low_detect (END) -------
+
+
+----- FUNCTION ADC_Get3vBase (BEGIN) -----
+ FILE: 'adc.c'
+    9: u16_t ADC_Get3vBase()
+   10: {
+   11: 	return m_adc3vValue;
+   12: }
+0015A9 904E43            MOV     DPTR,#m_adc3vValue
+0015AC E0                MOVX    A,@DPTR
+0015AD FE                MOV     R6,A
+0015AE A3                INC     DPTR
+0015AF E0                MOVX    A,@DPTR
+0015B0 FF                MOV     R7,A
+   13: 
+0015B1 22                RET     
+----- FUNCTION ADC_Get3vBase (END) -------
+
+
+----- FUNCTION _Delay1ms (BEGIN) -----
+ FILE: 'utilities.c'
+   46: void Delay1ms(u16_t Time)
+   47: {
+;---- Variable 'Time' assigned to Register 'R6/R7' ----
+   48: 	u16_t j; 
+   49: 	for(;Time>0;Time--)
+0015B2         ?C0014?UTILITIES:
+0015B2 D3                SETB    C
+0015B3 EF                MOV     A,R7
+0015B4 9400              SUBB    A,#00H
+0015B6 EE                MOV     A,R6
+0015B7 9400              SUBB    A,#00H
+0015B9 4015              JC      ?C0020?UTILITIES
+   50: 	{
+   51: 		for(j=0;j<1190;j++);
+;---- Variable 'j' assigned to Register 'R4/R5' ----
+0015BB E4                CLR     A
+0015BC FD                MOV     R5,A
+0015BD FC                MOV     R4,A
+0015BE         ?C0017?UTILITIES:
+0015BE 0D                INC     R5
+0015BF BD0001            CJNE    R5,#00H,?C0028?UTILITIES
+0015C2 0C                INC     R4
+0015C3         ?C0028?UTILITIES:
+0015C3 BC04F8            CJNE    R4,#04H,?C0017?UTILITIES
+0015C6 BDA6F5            CJNE    R5,#0A6H,?C0017?UTILITIES
+   52: 	}
+0015C9         ?C0016?UTILITIES:
+0015C9 EF                MOV     A,R7
+0015CA 1F                DEC     R7
+0015CB 7001              JNZ     ?C0029?UTILITIES
+0015CD 1E                DEC     R6
+0015CE         ?C0029?UTILITIES:
+0015CE 80E2              SJMP    ?C0014?UTILITIES
+   53: }
+0015D0         ?C0020?UTILITIES:
+0015D0 22                RET     
+----- FUNCTION _Delay1ms (END) -------
+
+
+----- FUNCTION IPC_WaitLpm (BEGIN) -----
+ FILE: 'ipc.c'
+  126: void IPC_WaitLpm()
+  127: {
+  128: 	lpm_flag = 0;
+  129: 	current_task = 0;
+0015D1 E4                CLR     A
+0015D2 900B2B            MOV     DPTR,#lpm_flag
+0015D5 F0                MOVX    @DPTR,A
+  130: 	Delay1ms(1);
+0015D6 900B2A            MOV     DPTR,#current_task
+0015D9 F0                MOVX    @DPTR,A
+  131: }
+0015DA 7F01              MOV     R7,#01H
+0015DC FE                MOV     R6,A
+0015DD 80D3              SJMP    _Delay1ms
+----- FUNCTION IPC_WaitLpm (END) -------
+
+
+----- FUNCTION YC_24gShortLpmProcess (BEGIN) -----
+ FILE: 'sys.c'
+ 1391: void YC_24gShortLpmProcess(void)
+ 1392: {
+ 1393: 	u8_t deltaXL=0, deltaYL=0, deltaXH=0, deltaYH=0;
+ 1394: 	u8_t send_flag = 0;
+0015DF E4                CLR     A
+0015E0 901BE1            MOV     DPTR,#deltaXL
+0015E3 F0                MOVX    @DPTR,A
+0015E4 A3                INC     DPTR
+0015E5 F0                MOVX    @DPTR,A
+0015E6 A3                INC     DPTR
+0015E7 F0                MOVX    @DPTR,A
+0015E8 A3                INC     DPTR
+0015E9 F0                MOVX    @DPTR,A
+ 1395: 	u8_t poll_cnt = 0;
+0015EA A3                INC     DPTR
+0015EB F0                MOVX    @DPTR,A
+ 1396: 
+0015EC A3                INC     DPTR
+0015ED F0                MOVX    @DPTR,A
+ 1397: 	m_sendData24gShortLpm = SHORT_LPM_STATE_POLLING;
+0015EE 904E7D            MOV     DPTR,#m_sendData24gShortLpm
+0015F1 F0                MOVX    @DPTR,A
+ 1398: 
+ 1399: 	SPI_Initialize();//spi
+0015F2 F13A              ACALL   SPI_Initialize
+ 1400: 	if ( g_variable.currentState == DEVICE_MODE_24G && g_variable.g24DongleExist == 1
+0015F4 904EBD            MOV     DPTR,#g_variable+02H
+0015F7 E0                MOVX    A,@DPTR
+0015F8 B40117            CJNE    A,#01H,?C0239?SYS
+0015FB 904EE3            MOV     DPTR,#g_variable+028H
+0015FE E0                MOVX    A,@DPTR
+0015FF B40110            CJNE    A,#01H,?C0239?SYS
+001602 7F18              MOV     R7,#018H
+001604 120D4C            LCALL   _GPIO_GetInputStatus
+001607 4009              JC      ?C0239?SYS
+ 1401: 		&&(!GPIO_GetInputStatus(SENSOR_MOTION_GPIO))){
+ 1402: 		send_flag = mouseReadSensor();
+001609 120B84            LCALL   mouseReadSensor
+00160C E4                CLR     A
+00160D 33                RLC     A
+00160E 901BE5            MOV     DPTR,#send_flag
+001611 F0                MOVX    @DPTR,A
+ 1403: 	}
+001612         ?C0239?SYS:
+ 1404: 	g_variable.currentState = DEVICE_MODE_24G;
+001612 904EBD            MOV     DPTR,#g_variable+02H
+001615 7401              MOV     A,#01H
+001617 F0                MOVX    @DPTR,A
+001618         ?C0240?SYS:
+ 1405: 	
+ 1406: 	while(1){
+ 1407: 		poll_cnt ++;
+001618 901BE6            MOV     DPTR,#poll_cnt
+00161B E0                MOVX    A,@DPTR
+00161C 04                INC     A
+00161D F0                MOVX    @DPTR,A
+ 1408: 		IPC_DealSingleStep();
+00161E 121D98            LCALL   IPC_DealSingleStep
+ 1409: 		if(poll_cnt > 5){
+001621 901BE6            MOV     DPTR,#poll_cnt
+001624 E0                MOVX    A,@DPTR
+001625 D3                SETB    C
+001626 9405              SUBB    A,#05H
+001628 400B              JC      ?C0242?SYS
+ 1410: 			poll_cnt = 5;
+00162A 7405              MOV     A,#05H
+00162C F0                MOVX    @DPTR,A
+ 1411: 			m_sendData24gShortLpm = SHORT_LPM_STATE_NODATA;
+00162D 904E7D            MOV     DPTR,#m_sendData24gShortLpm
+001630 7402              MOV     A,#02H
+001632 F0                MOVX    @DPTR,A
+ 1412: 		}else{
+001633 8075              SJMP    ?C0243?SYS
+001635         ?C0242?SYS:
+ 1413: 			mouseWheelScan();
+001635 F1B1              ACALL   mouseWheelScan
+ 1414: 			mouseKeyDetect();			
+001637 1196              ACALL   mouseKeyDetect
+ 1415: 			if(SHORT_LPM_STATE_POLLING== m_sendData24gShortLpm){
+001639 904E7D            MOV     DPTR,#m_sendData24gShortLpm
+00163C E0                MOVX    A,@DPTR
+00163D 706B              JNZ     ?C0243?SYS
+ 1416: 				if (g_variable.deltaZWheel)
+00163F 904ED8            MOV     DPTR,#g_variable+01DH
+001642 E0                MOVX    A,@DPTR
+001643 6016              JZ      ?C0245?SYS
+ 1417: 				{
+ 1418: 					send_flag = 1;
+001645 901BE5            MOV     DPTR,#send_flag
+001648 7401              MOV     A,#01H
+00164A F0                MOVX    @DPTR,A
+ 1419: 					m_sendData24gShortLpm = SHORT_LPM_STATE_BUTTON_WHEEL;
+00164B 904E7D            MOV     DPTR,#m_sendData24gShortLpm
+00164E 7403              MOV     A,#03H
+001650 F0                MOVX    @DPTR,A
+ 1420: 					m_new24gKWEvent = 1;
+001651 9049B7            MOV     DPTR,#m_new24gKWEvent
+001654 7401              MOV     A,#01H
+001656 F0                MOVX    @DPTR,A
+ 1421: 					m_shortDataWheel = 1;
+001657 904E80            MOV     DPTR,#m_shortDataWheel
+00165A F0                MOVX    @DPTR,A
+ 1422: 				}
+00165B         ?C0245?SYS:
+ 1423: 				if(g_variable.deltaKey != g_variable.keyDetect)
+00165B 904EED            MOV     DPTR,#g_variable+032H
+00165E E0                MOVX    A,@DPTR
+00165F FF                MOV     R7,A
+001660 904ED4            MOV     DPTR,#g_variable+019H
+001663 E0                MOVX    A,@DPTR
+001664 6F                XRL     A,R7
+001665 601D              JZ      ?C0246?SYS
+ 1424: 				{	
+ 1425: 					m_new24gKWEvent = 1;
+001667 9049B7            MOV     DPTR,#m_new24gKWEvent
+00166A 7401              MOV     A,#01H
+00166C F0                MOVX    @DPTR,A
+ 1426: 					send_flag = 1;
+00166D 901BE5            MOV     DPTR,#send_flag
+001670 F0                MOVX    @DPTR,A
+ 1427: 					m_sendData24gShortLpm = SHORT_LPM_STATE_BUTTON_WHEEL;
+001671 904E7D            MOV     DPTR,#m_sendData24gShortLpm
+001674 7403              MOV     A,#03H
+001676 F0                MOVX    @DPTR,A
+ 1428: 					g_variable.deltaKey = g_variable.keyDetect;
+001677 904ED4            MOV     DPTR,#g_variable+019H
+00167A EF                MOV     A,R7
+00167B F0                MOVX    @DPTR,A
+ 1429: 					if (g_variable.deltaKey == 0x07) {
+00167C BF0705            CJNE    R7,#07H,?C0246?SYS
+ 1430: 					//	g_variable.deltaKey = 0;
+ 1431: 						send_flag = 0;
+00167F E4                CLR     A
+001680 901BE5            MOV     DPTR,#send_flag
+001683 F0                MOVX    @DPTR,A
+ 1432: 					}
+ 1433: 				}
+001684         ?C0246?SYS:
+ 1434: 				if(g_variable.deltaKey == 0x07)
+001684 904ED4            MOV     DPTR,#g_variable+019H
+001687 E0                MOVX    A,@DPTR
+001688 B40706            CJNE    A,#07H,?C0248?SYS
+ 1435: 				{
+ 1436: 					//m_new24gKWEvent = 1;
+ 1437: 					m_sendData24gShortLpm = SHORT_LPM_STATE_BUTTON_WHEEL;
+00168B 904E7D            MOV     DPTR,#m_sendData24gShortLpm
+00168E 7403              MOV     A,#03H
+001690 F0                MOVX    @DPTR,A
+ 1438: 				}
+001691         ?C0248?SYS:
+ 1439: 				
+ 1440: 				if(1 == send_flag){
+001691 901BE5            MOV     DPTR,#send_flag
+001694 E0                MOVX    A,@DPTR
+001695 B40112            CJNE    A,#01H,?C0243?SYS
+ 1441: 					mousePackage();
+001698 F15E              ACALL   mousePackage
+ 1442: 					send_flag = 0;
+00169A E4                CLR     A
+00169B 901BE5            MOV     DPTR,#send_flag
+00169E F0                MOVX    @DPTR,A
+ 1443: 					if(SHORT_LPM_STATE_BUTTON_WHEEL != m_sendData24gShortLpm){
+00169F 904E7D            MOV     DPTR,#m_sendData24gShortLpm
+0016A2 E0                MOVX    A,@DPTR
+0016A3 6403              XRL     A,#03H
+0016A5 6003              JZ      ?C0243?SYS
+ 1444: 						m_sendData24gShortLpm = SHORT_LPM_STATE_DATA;
+0016A7 7401              MOV     A,#01H
+0016A9 F0                MOVX    @DPTR,A
+ 1445: 					}
+ 1446: 				}
+ 1447: 			}
+ 1448: 		}
+0016AA         ?C0243?SYS:
+ 1449: 
+ 1450: #if OTA_ENABLE
+ 1451: 		//OTA
+ 1452: 		if(m_24gRxPayload[0] == PC_REPORT_ID 
+ 1453: 			&&m_24gRxPayload[1] == CMD_USER_DEFINE
+ 1454: 			&&m_24gRxPayload[2] == CMD_OTA_START){
+ 1455: 			wirelessCmdOtaStart();
+ 1456: 		}		
+ 1457: #endif
+ 1458: 
+ 1459: 		if(FIX_ENTER_LPM == current_task){
+0016AA 900B2A            MOV     DPTR,#current_task
+0016AD E0                MOVX    A,@DPTR
+0016AE 6401              XRL     A,#01H
+0016B0 6002              JZ      $ + 4H
+0016B2 C118              AJMP    ?C0240?SYS
+ 1460: 			if(g_variable.wheelTimer ||g_variable.lockLpm)
+0016B4 904EC7            MOV     DPTR,#g_variable+0CH
+0016B7 E0                MOVX    A,@DPTR
+0016B8 7006              JNZ     ?C0253?SYS
+0016BA 904EC1            MOV     DPTR,#g_variable+06H
+0016BD E0                MOVX    A,@DPTR
+0016BE 6002              JZ      ?C0252?SYS
+0016C0         ?C0253?SYS:
+ 1461: 			{
+ 1462: 				IPC_AbandonLpm();
+0016C0 8013              SJMP    IPC_AbandonLpm
+ 1463: 				break;
+ 1464: 			}
+0016C2         ?C0252?SYS:
+ 1465: 			if (g_variable.currentState == DEVICE_MODE_24G)
+0016C2 904EBD            MOV     DPTR,#g_variable+02H
+0016C5 E0                MOVX    A,@DPTR
+0016C6 B4010C            CJNE    A,#01H,?C0254?SYS
+ 1466: 			{
+ 1467: 				YC_SetWake();
+0016C9 120740            LCALL   YC_SetWake
+ 1468: 				GPIO_SetWakeup(SENSOR_MOTION_GPIO,0);
+0016CC C208              CLR     ?_GPIO_SetWakeup?BIT
+0016CE 7F18              MOV     R7,#018H
+0016D0 1207AB            LCALL   _GPIO_SetWakeup
+ 1469: 				IPC_WaitLpm();	//<wait enter lpm,do nothing
+0016D3 A1D1              AJMP    IPC_WaitLpm
+ 1470: 				break;
+ 1471: 			}
+0016D5         ?C0254?SYS:
+;----                  JMP     IPC_AbandonLpm
+ 1472: 			else
+ 1473: 			{
+ 1474: 				IPC_AbandonLpm();
+ 1475: 				break;
+ 1476: 			}
+ 1477: 		}
+ 1478: 	}
+----- FUNCTION YC_24gShortLpmProcess (END) -------
+
+
+----- FUNCTION IPC_AbandonLpm (BEGIN) -----
+ FILE: 'ipc.c'
+  133: void IPC_AbandonLpm()
+  134: {
+  135: 	lpm_flag = 1;
+  136: 	current_task = 0;
+0016D5 900B2B            MOV     DPTR,#lpm_flag
+0016D8 7401              MOV     A,#01H
+0016DA F0                MOVX    @DPTR,A
+  137: }
+0016DB E4                CLR     A
+0016DC 900B2A            MOV     DPTR,#current_task
+0016DF F0                MOVX    @DPTR,A
+  138: 
+0016E0 22                RET     
+----- FUNCTION IPC_AbandonLpm (END) -------
+
+
+----- FUNCTION ADC_GetCurrentValue (BEGIN) -----
+ FILE: 'adc.c'
+    4: u16_t ADC_GetCurrentValue()
+    5: {
+    6: 	return m_adcCurrentValue;
+    7: }
+0016E1 9042D1            MOV     DPTR,#m_adcCurrentValue
+0016E4 E0                MOVX    A,@DPTR
+0016E5 FE                MOV     R6,A
+0016E6 A3                INC     DPTR
+0016E7 E0                MOVX    A,@DPTR
+0016E8 FF                MOV     R7,A
+    8: 
+0016E9 22                RET     
+----- FUNCTION ADC_GetCurrentValue (END) -------
+
+
+----- FUNCTION deviceLongSleep (BEGIN) -----
+ FILE: 'sys.c'
+  815: static void deviceLongSleep()
+  816: {
+  817: 	g_variable.sleepTimer = 0;
+  818: 	g_variable.wheelTimer = 0;
+0016EA E4                CLR     A
+0016EB 904EC4            MOV     DPTR,#g_variable+09H
+0016EE F0                MOVX    @DPTR,A
+0016EF A3                INC     DPTR
+0016F0 F0                MOVX    @DPTR,A
+  819: 	g_variable.lockLpm = 1;
+0016F1 904EC7            MOV     DPTR,#g_variable+0CH
+0016F4 F0                MOVX    @DPTR,A
+  820: 	g_variable.currentState = DEVICE_MODE_NONE;
+0016F5 904EC1            MOV     DPTR,#g_variable+06H
+0016F8 04                INC     A
+0016F9 F0                MOVX    @DPTR,A
+  821: 	IPC_TxControlCmd(IPC_CMD_ENTER_HIBERNATE);
+0016FA E4                CLR     A
+0016FB 904EBD            MOV     DPTR,#g_variable+02H
+0016FE F0                MOVX    @DPTR,A
+  822: }
+0016FF 7F19              MOV     R7,#019H
+001701 020EA2            LJMP    _IPC_TxControlCmd
+----- FUNCTION deviceLongSleep (END) -------
+
+
+----- FUNCTION deviceTimer100ms (BEGIN) -----
+ FILE: 'sys.c'
+ 1332: static void deviceTimer100ms()
+ 1333: {
+ 1334: 	if (g_variable.wheelTimer!=0) 
+ 1335: 		g_variable.wheelTimer--;
+001704 904EC7            MOV     DPTR,#g_variable+0CH
+001707 E0                MOVX    A,@DPTR
+001708 6002              JZ      ?C0232?SYS
+ 1336: 	g_variable.timer100msCount++;
+00170A 14                DEC     A
+00170B F0                MOVX    @DPTR,A
+00170C         ?C0232?SYS:
+ 1337: 	if (g_variable.modeSwCount)
+00170C 904EC9            MOV     DPTR,#g_variable+0EH
+00170F E0                MOVX    A,@DPTR
+001710 04                INC     A
+001711 F0                MOVX    @DPTR,A
+ 1338: 		g_variable.modeSwCount ++;
+001712 904EEC            MOV     DPTR,#g_variable+031H
+001715 E0                MOVX    A,@DPTR
+001716 6002              JZ      ?C0233?SYS
+ 1339: 	deviceLedFlash();
+001718 04                INC     A
+001719 F0                MOVX    @DPTR,A
+00171A         ?C0233?SYS:
+ 1340: 	comboKeyPb();
+00171A 121B92            LCALL   deviceLedFlash
+ 1341: 	Power_low_detect();
+00171D 120D91            LCALL   comboKeyPb
+ 1342: 
+001720 91F7              ACALL   Power_low_detect
+ 1343: 	if(g_variable.enterHibernateFlag == 1){
+001722 904F01            MOV     DPTR,#g_variable+046H
+001725 E0                MOVX    A,@DPTR
+001726 B40110            CJNE    A,#01H,?C0236?SYS
+ 1344: 		if(g_variable.enterHibernateTimer == 0){
+001729 A3                INC     DPTR
+00172A E0                MOVX    A,@DPTR
+00172B 7006              JNZ     ?C0235?SYS
+ 1345: 			g_variable.enterHibernateFlag = 0;
+00172D 904F01            MOV     DPTR,#g_variable+046H
+001730 F0                MOVX    @DPTR,A
+ 1346: 			deviceLongSleep();
+001731 D1EA              ACALL   deviceLongSleep
+ 1347: 		}
+001733         ?C0235?SYS:
+ 1348: 		g_variable.enterHibernateTimer--;
+001733 904F02            MOV     DPTR,#g_variable+047H
+001736 E0                MOVX    A,@DPTR
+001737 14                DEC     A
+001738 F0                MOVX    @DPTR,A
+ 1349: 	}	
+ 1350: }
+001739         ?C0236?SYS:
+001739 22                RET     
+----- FUNCTION deviceTimer100ms (END) -------
+
+
+----- FUNCTION SPI_Initialize (BEGIN) -----
+ FILE: 'spi.c'
+   17: void SPI_Initialize()
+   18: {
+   19: 	REG_SPID_CTRL = 0x75;
+   20: 	REG_SPID_DELAY = 10;
+00173A 908086            MOV     DPTR,#08086H
+00173D 7475              MOV     A,#075H
+00173F F0                MOVX    @DPTR,A
+   21: 	REG_SPID_TXADDR = ESWAP(SPI_TBUFF);
+001740 A3                INC     DPTR
+001741 740A              MOV     A,#0AH
+001743 F0                MOVX    @DPTR,A
+   22: 	REG_SPID_RXADDR = ESWAP(SPI_RBUFF);
+001744 90808A            MOV     DPTR,#0808AH
+001747 7418              MOV     A,#018H
+001749 F0                MOVX    @DPTR,A
+00174A A3                INC     DPTR
+00174B 7402              MOV     A,#02H
+00174D F0                MOVX    @DPTR,A
+   23: 	REG_GPIO_OUT(3) |= 0x02;
+00174E A3                INC     DPTR
+00174F 741D              MOV     A,#01DH
+001751 F0                MOVX    @DPTR,A
+001752 A3                INC     DPTR
+001753 7402              MOV     A,#02H
+001755 F0                MOVX    @DPTR,A
+   24: }
+001756 908077            MOV     DPTR,#08077H
+001759 E0                MOVX    A,@DPTR
+00175A 4402              ORL     A,#02H
+00175C F0                MOVX    @DPTR,A
+   25: 
+00175D 22                RET     
+----- FUNCTION SPI_Initialize (END) -------
+
+
+----- FUNCTION mousePackage (BEGIN) -----
+ FILE: 'sys.c'
+  570: void mousePackage()
+  571: {	
+  572: 	m_hidBuff[0] = g_variable.deltaKey;
+  573: 	m_hidBuff[1] = (u8_t)(g_variable.X_data & 0x00ff);
+00175E 904ED4            MOV     DPTR,#g_variable+019H
+001761 E0                MOVX    A,@DPTR
+001762 904E21            MOV     DPTR,#m_hidBuff
+001765 F0                MOVX    @DPTR,A
+  574: 	m_hidBuff[2] = (u8_t)(g_variable.X_data >>8);
+001766 904EFB            MOV     DPTR,#g_variable+040H
+001769 E0                MOVX    A,@DPTR
+00176A FC                MOV     R4,A
+00176B A3                INC     DPTR
+00176C E0                MOVX    A,@DPTR
+00176D 904E22            MOV     DPTR,#m_hidBuff+01H
+001770 F0                MOVX    @DPTR,A
+  575: 	m_hidBuff[3] = (u8_t)(g_variable.Y_data & 0x00ff);
+001771 EC                MOV     A,R4
+001772 FF                MOV     R7,A
+001773 33                RLC     A
+001774 95E0              SUBB    A,ACC
+001776 A3                INC     DPTR
+001777 EF                MOV     A,R7
+001778 F0                MOVX    @DPTR,A
+  576: 	m_hidBuff[4] = (u8_t)(g_variable.Y_data >>8);
+001779 904EFD            MOV     DPTR,#g_variable+042H
+00177C E0                MOVX    A,@DPTR
+00177D FC                MOV     R4,A
+00177E A3                INC     DPTR
+00177F E0                MOVX    A,@DPTR
+001780 904E24            MOV     DPTR,#m_hidBuff+03H
+001783 F0                MOVX    @DPTR,A
+  577: 	m_hidBuff[5] = g_variable.deltaZWheel;
+001784 EC                MOV     A,R4
+001785 FF                MOV     R7,A
+001786 33                RLC     A
+001787 95E0              SUBB    A,ACC
+001789 A3                INC     DPTR
+00178A EF                MOV     A,R7
+00178B F0                MOVX    @DPTR,A
+  578: 	m_hidBuff[6] = 0;	//tz
+00178C 904ED8            MOV     DPTR,#g_variable+01DH
+00178F E0                MOVX    A,@DPTR
+001790 904E26            MOV     DPTR,#m_hidBuff+05H
+001793 F0                MOVX    @DPTR,A
+  579: 	g_variable.deltaZWheel = 0;	
+001794 E4                CLR     A
+001795 A3                INC     DPTR
+001796 F0                MOVX    @DPTR,A
+  580: 	g_variable.sleepTimer = 0;
+001797 904ED8            MOV     DPTR,#g_variable+01DH
+00179A F0                MOVX    @DPTR,A
+  581: }
+00179B 904EC4            MOV     DPTR,#g_variable+09H
+00179E F0                MOVX    @DPTR,A
+00179F A3                INC     DPTR
+0017A0 F0                MOVX    @DPTR,A
+  582: 
+0017A1 22                RET     
+----- FUNCTION mousePackage (END) -------
+
+
+----- FUNCTION mouse_wheel_delay_lpm (BEGIN) -----
+ FILE: 'sys.c'
+  433: void mouse_wheel_delay_lpm(void)
+  434: {
+  435: 	if(g_variable.currentState != DEVICE_MODE_24G)
+  436: 	{
+0017A2 904EBD            MOV     DPTR,#g_variable+02H
+0017A5 E0                MOVX    A,@DPTR
+0017A6 6401              XRL     A,#01H
+0017A8 6006              JZ      ?C0073?SYS
+  437: 		g_variable.wheelTimer= 3;			//   10
+  438: 	}
+0017AA 904EC7            MOV     DPTR,#g_variable+0CH
+0017AD 7403              MOV     A,#03H
+0017AF F0                MOVX    @DPTR,A
+  439: }
+  440: 
+0017B0         ?C0073?SYS:
+0017B0 22                RET     
+----- FUNCTION mouse_wheel_delay_lpm (END) -------
+
+
+----- FUNCTION mouseWheelScan (BEGIN) -----
+ FILE: 'sys.c'
+  441: void mouseWheelScan(void)
+  442: {
+  443: 	u16_t result = 0;
+  444: 	u8_t tempStateA = GPIO_GetInputStatus(WHEEL_DATA_A_GPIO);
+0017B1 E4                CLR     A
+0017B2 901C16            MOV     DPTR,#result
+0017B5 F0                MOVX    @DPTR,A
+0017B6 A3                INC     DPTR
+0017B7 F0                MOVX    @DPTR,A
+  445: 	u8_t tempState = (tempStateA << 1)|
+0017B8 7F02              MOV     R7,#02H
+0017BA 120D4C            LCALL   _GPIO_GetInputStatus
+0017BD E4                CLR     A
+0017BE 33                RLC     A
+0017BF 901C18            MOV     DPTR,#tempStateA
+0017C2 F0                MOVX    @DPTR,A
+  446: 		GPIO_GetInputStatus(WHEEL_DATA_B_GPIO);
+0017C3 7F03              MOV     R7,#03H
+0017C5 120D4C            LCALL   _GPIO_GetInputStatus
+0017C8 E4                CLR     A
+0017C9 33                RLC     A
+0017CA FF                MOV     R7,A
+0017CB 901C18            MOV     DPTR,#tempStateA
+0017CE E0                MOVX    A,@DPTR
+0017CF FE                MOV     R6,A
+0017D0 25E0              ADD     A,ACC
+0017D2 4F                ORL     A,R7
+0017D3 FF                MOV     R7,A
+;---- Variable 'tempState' assigned to Register 'R7' ----
+  447: 	
+  448: 	if (g_variable.wheelStateNow == tempState)
+0017D4 904ED5            MOV     DPTR,#g_variable+01AH
+0017D7 E0                MOVX    A,@DPTR
+0017D8 6F                XRL     A,R7
+0017D9 605D              JZ      ?C0075?SYS
+0017DB         ?C0074?SYS:
+  449: 		return;
+  450: 
+  451: 	g_variable.wheelStateLast = g_variable.wheelStateBefore;
+0017DB 904ED6            MOV     DPTR,#g_variable+01BH
+0017DE E0                MOVX    A,@DPTR
+0017DF A3                INC     DPTR
+0017E0 F0                MOVX    @DPTR,A
+  452: 	g_variable.wheelStateBefore = g_variable.wheelStateNow;
+0017E1 904ED5            MOV     DPTR,#g_variable+01AH
+0017E4 E0                MOVX    A,@DPTR
+0017E5 A3                INC     DPTR
+0017E6 F0                MOVX    @DPTR,A
+  453: 	g_variable.wheelStateNow = tempState;
+0017E7 904ED5            MOV     DPTR,#g_variable+01AH
+0017EA EF                MOV     A,R7
+0017EB F0                MOVX    @DPTR,A
+0017EC FD                MOV     R5,A
+  454: 
+  455: 	result = (g_variable.wheelStateNow << 4) |(g_variable.wheelStateBefore << 2) |g_variable.wheelStateLast;
+0017ED A3                INC     DPTR
+0017EE E0                MOVX    A,@DPTR
+0017EF 75F004            MOV     B,#04H
+0017F2 A4                MUL     AB
+0017F3 FB                MOV     R3,A
+0017F4 AAF0              MOV     R2,B
+0017F6 ED                MOV     A,R5
+0017F7 75F010            MOV     B,#010H
+0017FA A4                MUL     AB
+0017FB FF                MOV     R7,A
+0017FC E5F0              MOV     A,B
+0017FE 4A                ORL     A,R2
+0017FF FE                MOV     R6,A
+001800 EF                MOV     A,R7
+001801 4B                ORL     A,R3
+001802 FF                MOV     R7,A
+001803 A3                INC     DPTR
+001804 E0                MOVX    A,@DPTR
+001805 FD                MOV     R5,A
+001806 EE                MOV     A,R6
+001807 EF                MOV     A,R7
+001808 4D                ORL     A,R5
+001809 FF                MOV     R7,A
+00180A 901C16            MOV     DPTR,#result
+00180D EE                MOV     A,R6
+00180E F0                MOVX    @DPTR,A
+00180F A3                INC     DPTR
+001810 EF                MOV     A,R7
+001811 F0                MOVX    @DPTR,A
+  456: 
+  457: 	switch (result) 
+001812 EE                MOV     A,R6
+001813 7023              JNZ     ?C0075?SYS
+001815 EF                MOV     A,R7
+001816 24F5              ADD     A,#0F5H
+001818 6015              JZ      ?C0080?SYS
+00181A 24D7              ADD     A,#0D7H
+00181C 6011              JZ      ?C0080?SYS
+00181E 24FC              ADD     A,#0FCH
+001820 6004              JZ      ?C0078?SYS
+001822 2431              ADD     A,#031H
+001824 7012              JNZ     ?C0075?SYS
+  458: 	{
+  459: 		case 0x38:
+  460: 		case 0x07:
+001826         ?C0078?SYS:
+  461: 			g_variable.deltaZWheel --;
+001826 904ED8            MOV     DPTR,#g_variable+01DH
+001829 E0                MOVX    A,@DPTR
+00182A 14                DEC     A
+00182B F0                MOVX    @DPTR,A
+  462: 			mouse_wheel_delay_lpm();
+00182C 0217A2            LJMP    mouse_wheel_delay_lpm
+  463: 			break;
+  464: 		case 0x34:
+  465: 		case 0x0b:
+00182F         ?C0080?SYS:
+  466: 			g_variable.deltaZWheel ++;
+00182F 904ED8            MOV     DPTR,#g_variable+01DH
+001832 E0                MOVX    A,@DPTR
+001833 04                INC     A
+001834 F0                MOVX    @DPTR,A
+  467: 			mouse_wheel_delay_lpm();
+001835 1217A2            LCALL   mouse_wheel_delay_lpm
+  468: 			break;
+  469: 		default:
+  470: 			break;
+  471: 	}
+  472: }
+001838         ?C0075?SYS:
+001838 22                RET     
+----- FUNCTION mouseWheelScan (END) -------
+
+
+----- FUNCTION _IPC_TxHidData (BEGIN) -----
+ FILE: 'sys.c'
+  474: void IPC_TxHidData(u8_t* dt, u8_t len)
+  475: {
+001839 901C02            MOV     DPTR,#dt
+00183C EB                MOV     A,R3
+00183D F0                MOVX    @DPTR,A
+00183E A3                INC     DPTR
+00183F EA                MOV     A,R2
+001840 F0                MOVX    @DPTR,A
+001841 A3                INC     DPTR
+001842 E9                MOV     A,R1
+001843 F0                MOVX    @DPTR,A
+001844 A3                INC     DPTR
+001845 ED                MOV     A,R5
+001846 F0                MOVX    @DPTR,A
+  476: 	if(g_variable.currentState != DEVICE_MODE_24G
+  477: 		&&g_variable.currentState != DEVICE_MODE_BT
+001847 904EBD            MOV     DPTR,#g_variable+02H
+00184A E0                MOVX    A,@DPTR
+00184B FF                MOV     R7,A
+00184C 6401              XRL     A,#01H
+00184E 600A              JZ      ?C0082?SYS
+001850 EF                MOV     A,R7
+001851 6402              XRL     A,#02H
+001853 6005              JZ      ?C0082?SYS
+001855 EF                MOV     A,R7
+001856 6407              XRL     A,#07H
+001858 702D              JNZ     ?C0083?SYS
+00185A         ?C0082?SYS:
+  478: 		&& g_variable.currentState != DEVICE_MODE_BLE_BB_CONNECT)
+  479: 		return;
+  480: 	if(g_variable.currentState == DEVICE_MODE_24G)
+00185A EF                MOV     A,R7
+00185B B40110            CJNE    A,#01H,?C0084?SYS
+  481: 	{
+  482: 		IPC_Tx24GData(dt,len);
+00185E 901C02            MOV     DPTR,#dt
+001861 E0                MOVX    A,@DPTR
+001862 FB                MOV     R3,A
+001863 A3                INC     DPTR
+001864 E0                MOVX    A,@DPTR
+001865 FA                MOV     R2,A
+001866 A3                INC     DPTR
+001867 E0                MOVX    A,@DPTR
+001868 F9                MOV     R1,A
+001869 A3                INC     DPTR
+00186A E0                MOVX    A,@DPTR
+00186B FD                MOV     R5,A
+00186C 4101              AJMP    _IPC_Tx24GData
+  483: 	}	
+00186E         ?C0084?SYS:
+  484: #if MOUSE_BT_MODE_ENABLE
+  485: 	else if(g_variable.currentState == DEVICE_MODE_BT)
+  486: 	{
+  487: 		IPC_TxBREDRHidData(dt,len);
+  488: 	}
+  489: #endif
+  490: 	else if(g_variable.currentState == DEVICE_MODE_BLE_BB_CONNECT)
+00186E 904EBD            MOV     DPTR,#g_variable+02H
+001871 E0                MOVX    A,@DPTR
+001872 B40710            CJNE    A,#07H,?C0088?SYS
+  491: 	{
+  492: 		IPC_TxBleData(dt,len);
+001875 901C02            MOV     DPTR,#dt
+001878 E0                MOVX    A,@DPTR
+001879 FB                MOV     R3,A
+00187A A3                INC     DPTR
+00187B E0                MOVX    A,@DPTR
+00187C FA                MOV     R2,A
+00187D A3                INC     DPTR
+00187E E0                MOVX    A,@DPTR
+00187F F9                MOV     R1,A
+001880 A3                INC     DPTR
+001881 E0                MOVX    A,@DPTR
+001882 FD                MOV     R5,A
+001883 4145              AJMP    _IPC_TxBleData
+  493: 	}
+  494: 	else
+  495: 	{
+001885         ?C0088?SYS:
+  496: 		while(1);
+001885 80FE              SJMP    ?C0088?SYS
+  497: 	}
+  498: }
+001887         ?C0083?SYS:
+001887 22                RET     
+----- FUNCTION _IPC_TxHidData (END) -------
+
+
+----- FUNCTION mouseMotion (BEGIN) -----
+ FILE: 'sys.c'
+  583: static void mouseMotion()
+  584: {
+  585: 	u8_t deltaXL=0, deltaYL=0, deltaXH=0, deltaYH=0;
+  586: 	bool sendFlag = 0;
+001888 E4                CLR     A
+001889 901C0A            MOV     DPTR,#deltaXL
+00188C F0                MOVX    @DPTR,A
+00188D A3                INC     DPTR
+00188E F0                MOVX    @DPTR,A
+00188F A3                INC     DPTR
+001890 F0                MOVX    @DPTR,A
+001891 A3                INC     DPTR
+001892 F0                MOVX    @DPTR,A
+  587: 
+001893 C200              CLR     sendFlag
+  588: #if MOUSE_BT_MODE_ENABLE
+  589: 	if ((g_variable.currentState != DEVICE_MODE_24G)
+  590: 		&&(g_variable.currentState != DEVICE_MODE_BLE_BB_CONNECT)
+  591: 		&&(g_variable.currentState != DEVICE_MODE_BT))
+  592: 	{
+  593: #else
+  594: 	if ((g_variable.currentState != DEVICE_MODE_24G)&&(g_variable.currentState != DEVICE_MODE_BLE_BB_CONNECT))
+001895 904EBD            MOV     DPTR,#g_variable+02H
+001898 E0                MOVX    A,@DPTR
+001899 FF                MOV     R7,A
+00189A 6401              XRL     A,#01H
+00189C 6007              JZ      ?C0111?SYS
+00189E EF                MOV     A,R7
+00189F 6407              XRL     A,#07H
+0018A1 6002              JZ      $ + 4H
+0018A3 21E8              AJMP    ?C0112?SYS
+  595: 	{
+  596: #endif
+  597: 		return;
+  598: 	}
+0018A5         ?C0111?SYS:
+  599: 	if ((g_variable.g24DongleExist == 0)&&(g_variable.currentState == DEVICE_MODE_24G)){
+0018A5 904EE3            MOV     DPTR,#g_variable+028H
+0018A8 E0                MOVX    A,@DPTR
+0018A9 700A              JNZ     ?C0113?SYS
+0018AB 904EBD            MOV     DPTR,#g_variable+02H
+0018AE E0                MOVX    A,@DPTR
+0018AF 6401              XRL     A,#01H
+0018B1 7002              JNZ     $ + 4H
+0018B3 21E8              AJMP    ?C0112?SYS
+  600: 		return;	
+  601: 	}
+0018B5         ?C0113?SYS:
+  602: 
+  603: 	if (!IPC_IsTxBuffEmpty()) {
+0018B5 31E9              ACALL   IPC_IsTxBuffEmpty
+0018B7 4002              JC      $ + 4H
+0018B9 21E8              AJMP    ?C0112?SYS
+  604: 		return;
+  605: 	}
+0018BB         ?C0114?SYS:
+  606: 	
+  607: #if OTA_ENABLE
+  608: 	//OTA
+  609: 	if(m_new24gOtaEnable == 1 
+  610: 		&& g_variable.otaReqPacEnable == 1
+  611: 		&& g_variable.currentState == DEVICE_MODE_24G)
+  612: 	{
+  613: 		g_variable.sleepTimer = 0;
+  614: 		m_hidBuff[0] = CMD_OTA;
+  615: 		m_hidBuff[1] = g_variable.otaReqPacValue[0];	//ackpayload type
+  616: 		m_hidBuff[2] = g_variable.otaReqPacValue[1];	//ackpayload low byte
+  617: 		m_hidBuff[3] = g_variable.otaReqPacValue[2];	//ackpayload high byte
+  618: 		m_hidBuff[4] = g_variable.otaReqPacValue[3];
+  619: 		m_hidBuff[5] = g_variable.otaReqPacValue[4];
+  620: 		m_hidBuff[6] = 0;
+  621: 		IPC_TxHidData(m_hidBuff,7);
+  622: 		return;
+  623: 	}
+  624: #endif
+  625: 	
+  626: 	if(g_variable.deltaKey != g_variable.keyDetect
+0018BB 904EED            MOV     DPTR,#g_variable+032H
+0018BE E0                MOVX    A,@DPTR
+0018BF FF                MOV     R7,A
+0018C0 904ED4            MOV     DPTR,#g_variable+019H
+0018C3 E0                MOVX    A,@DPTR
+0018C4 B50719            CJNE    A,AR7,?C0116?SYS
+0018C7 904EC7            MOV     DPTR,#g_variable+0CH
+0018CA E0                MOVX    A,@DPTR
+0018CB FE                MOV     R6,A
+0018CC D3                SETB    C
+0018CD 9400              SUBB    A,#00H
+0018CF 4005              JC      ?C0117?SYS
+0018D1 EE                MOV     A,R6
+0018D2 9403              SUBB    A,#03H
+0018D4 400A              JC      ?C0116?SYS
+0018D6         ?C0117?SYS:
+0018D6 904EBD            MOV     DPTR,#g_variable+02H
+0018D9 E0                MOVX    A,@DPTR
+0018DA B4010B            CJNE    A,#01H,?C0115?SYS
+0018DD EF                MOV     A,R7
+0018DE 6008              JZ      ?C0115?SYS
+0018E0         ?C0116?SYS:
+  627: 		||(g_variable.wheelTimer > 0 && g_variable.wheelTimer < 3)
+  628: 		||((g_variable.currentState == DEVICE_MODE_24G) && (g_variable.keyDetect != 0)))
+  629: 	{
+  630: 		sendFlag = 1;
+0018E0 D200              SETB    sendFlag
+  631: 		m_new24gKWEvent = 1;
+0018E2 9049B7            MOV     DPTR,#m_new24gKWEvent
+0018E5 7401              MOV     A,#01H
+0018E7 F0                MOVX    @DPTR,A
+  632: 	}
+0018E8         ?C0115?SYS:
+  633: 	g_variable.deltaKey = g_variable.keyDetect;
+0018E8 904EED            MOV     DPTR,#g_variable+032H
+0018EB E0                MOVX    A,@DPTR
+0018EC 904ED4            MOV     DPTR,#g_variable+019H
+0018EF F0                MOVX    @DPTR,A
+  634: 		
+  635: 	g_variable.X_data = 0;g_variable.Y_data = 0;
+0018F0 E4                CLR     A
+0018F1 904EFB            MOV     DPTR,#g_variable+040H
+0018F4 F0                MOVX    @DPTR,A
+0018F5 A3                INC     DPTR
+0018F6 F0                MOVX    @DPTR,A
+0018F7 A3                INC     DPTR
+0018F8 F0                MOVX    @DPTR,A
+0018F9 A3                INC     DPTR
+0018FA F0                MOVX    @DPTR,A
+  636: 	
+  637: #if MOUSE_BT_MODE_ENABLE
+  638: 
+  639: 	if(g_variable.currentState == DEVICE_MODE_BT)
+  640: 	{
+  641: 		sendFlag |= mouseReadSensor();
+  642: 	}
+  643: 
+  644: #endif
+  645: 	if ( (g_variable.currentState == DEVICE_MODE_24G) ) {
+0018FB 904EBD            MOV     DPTR,#g_variable+02H
+0018FE E0                MOVX    A,@DPTR
+0018FF B40107            CJNE    A,#01H,?C0118?SYS
+  646: 		sendFlag |= mouseReadSensor();
+001902 120B84            LCALL   mouseReadSensor
+001905 7200              ORL     C,sendFlag
+001907 9200              MOV     sendFlag,C
+  647: 	}
+001909         ?C0118?SYS:
+  648: 	
+  649: 	if ( (g_variable.currentState == DEVICE_MODE_BLE_BB_CONNECT) && m_bleSendDataFlag == 1 ) 
+001909 904EBD            MOV     DPTR,#g_variable+02H
+00190C E0                MOVX    A,@DPTR
+00190D B40720            CJNE    A,#07H,?C0119?SYS
+001910 904595            MOV     DPTR,#m_bleSendDataFlag
+001913 E0                MOVX    A,@DPTR
+001914 B40119            CJNE    A,#01H,?C0119?SYS
+  650: 	{
+  651: 			SPI_Initialize();//spi
+001917 12173A            LCALL   SPI_Initialize
+  652: 			sendFlag |= mouseReadSensor();
+00191A 120B84            LCALL   mouseReadSensor
+00191D 7200              ORL     C,sendFlag
+00191F 9200              MOV     sendFlag,C
+  653: 			if(m_51ReadSensor != m_BtReadIpcCount)
+001921 904E83            MOV     DPTR,#m_BtReadIpcCount
+001924 E0                MOVX    A,@DPTR
+001925 FF                MOV     R7,A
+001926 904E84            MOV     DPTR,#m_51ReadSensor
+001929 E0                MOVX    A,@DPTR
+00192A 6F                XRL     A,R7
+00192B 6003              JZ      ?C0119?SYS
+  654: 			{
+  655: 				m_51ReadSensor ++;
+00192D E0                MOVX    A,@DPTR
+00192E 04                INC     A
+00192F F0                MOVX    @DPTR,A
+  656: 			}
+  657: 	}
+001930         ?C0119?SYS:
+  658: 
+  659: 	if (g_variable.deltaZWheel)
+001930 904ED8            MOV     DPTR,#g_variable+01DH
+001933 E0                MOVX    A,@DPTR
+001934 601F              JZ      ?C0121?SYS
+  660: 	{
+  661: 		sendFlag = 1;
+001936 D200              SETB    sendFlag
+  662: 		m_new24gKWEvent = 1;
+001938 9049B7            MOV     DPTR,#m_new24gKWEvent
+00193B 7401              MOV     A,#01H
+00193D F0                MOVX    @DPTR,A
+  663: 		m_shortDataWheel = 1;
+00193E 904E80            MOV     DPTR,#m_shortDataWheel
+001941 F0                MOVX    @DPTR,A
+  664: 		if(g_variable.currentState == DEVICE_MODE_BLE_BB_CONNECT)
+001942 904EBD            MOV     DPTR,#g_variable+02H
+001945 E0                MOVX    A,@DPTR
+001946 B4070C            CJNE    A,#07H,?C0121?SYS
+  665: 		{
+  666: 			m_bleDataWheel = 1;
+001949 904E81            MOV     DPTR,#m_bleDataWheel
+00194C 7401              MOV     A,#01H
+00194E F0                MOVX    @DPTR,A
+  667: 			m_bleDataWheelLpmTimer = 10;
+00194F 904E82            MOV     DPTR,#m_bleDataWheelLpmTimer
+001952 740A              MOV     A,#0AH
+001954 F0                MOVX    @DPTR,A
+  668: 		}
+  669: 	}
+001955         ?C0121?SYS:
+  670: 
+  671: 	if(g_variable.buttonTimer >= (MOUSE_ENTER_PB_TIME - 2))
+001955 904EC6            MOV     DPTR,#g_variable+0BH
+001958 E0                MOVX    A,@DPTR
+001959 C3                CLR     C
+00195A 9417              SUBB    A,#017H
+00195C 4007              JC      ?C0123?SYS
+  672: 	{
+  673: 		g_variable.deltaKey = 0;	
+00195E E4                CLR     A
+00195F 904ED4            MOV     DPTR,#g_variable+019H
+001962 F0                MOVX    @DPTR,A
+  674: 		sendFlag = 1;
+001963 D200              SETB    sendFlag
+  675: 	}
+001965         ?C0123?SYS:
+  676: 	
+  677: 	if ((!sendFlag) ||(g_variable.buttonTimer >= (MOUSE_ENTER_PB_TIME - 1)))
+001965 200002            JB      sendFlag,$ + 5H
+001968 21E8              AJMP    ?C0112?SYS
+00196A 904EC6            MOV     DPTR,#g_variable+0BH
+00196D E0                MOVX    A,@DPTR
+00196E C3                CLR     C
+00196F 9418              SUBB    A,#018H
+001971 5075              JNC     ?C0112?SYS
+001973         ?C0124?SYS:
+  678: 		return;
+  679: 	
+  680: 	m_btMotionEvent = 1;
+001973 9049C2            MOV     DPTR,#m_btMotionEvent
+001976 7401              MOV     A,#01H
+001978 F0                MOVX    @DPTR,A
+  681: 	if (g_variable.currentState == DEVICE_MODE_24G
+001979 904EBD            MOV     DPTR,#g_variable+02H
+00197C E0                MOVX    A,@DPTR
+00197D FF                MOV     R7,A
+00197E 6401              XRL     A,#01H
+001980 600A              JZ      ?C0127?SYS
+001982 EF                MOV     A,R7
+001983 6402              XRL     A,#02H
+001985 6005              JZ      ?C0127?SYS
+001987 EF                MOV     A,R7
+001988 6407              XRL     A,#07H
+00198A 705C              JNZ     ?C0112?SYS
+00198C         ?C0127?SYS:
+  682: 		||g_variable.currentState == DEVICE_MODE_BT
+  683: 		||g_variable.currentState == DEVICE_MODE_BLE_BB_CONNECT)
+  684: 	{
+  685: 		mousePackage();
+00198C 12175E            LCALL   mousePackage
+  686: 
+  687: 		if(m_mouseFastConnFlag){
+00198F 904EA6            MOV     DPTR,#m_mouseFastConnFlag
+001992 E0                MOVX    A,@DPTR
+001993 6049              JZ      ?C0128?SYS
+  688: 			if((m_hidBuff[0] == 0) && (m_hidBuff[1] == 0) &&
+001995 904E21            MOV     DPTR,#m_hidBuff
+001998 E0                MOVX    A,@DPTR
+001999 7033              JNZ     ?C0129?SYS
+00199B A3                INC     DPTR
+00199C E0                MOVX    A,@DPTR
+00199D 702F              JNZ     ?C0129?SYS
+00199F A3                INC     DPTR
+0019A0 E0                MOVX    A,@DPTR
+0019A1 702B              JNZ     ?C0129?SYS
+0019A3 A3                INC     DPTR
+0019A4 E0                MOVX    A,@DPTR
+0019A5 7027              JNZ     ?C0129?SYS
+0019A7 A3                INC     DPTR
+0019A8 E0                MOVX    A,@DPTR
+0019A9 7023              JNZ     ?C0129?SYS
+0019AB A3                INC     DPTR
+0019AC E0                MOVX    A,@DPTR
+0019AD 701F              JNZ     ?C0129?SYS
+0019AF A3                INC     DPTR
+0019B0 E0                MOVX    A,@DPTR
+0019B1 701B              JNZ     ?C0129?SYS
+  689: 			(m_hidBuff[2] == 0) && (m_hidBuff[3] == 0) &&
+  690: 			(m_hidBuff[4] == 0) && (m_hidBuff[5] == 0) &&
+  691: 			(m_hidBuff[6] == 0) ){
+  692: 				if(m_FastConnSendEmptyCount < 3){
+0019B3 901C32            MOV     DPTR,#m_FastConnSendEmptyCount
+0019B6 E0                MOVX    A,@DPTR
+0019B7 C3                CLR     C
+0019B8 9403              SUBB    A,#03H
+0019BA 502C              JNC     ?C0112?SYS
+  693: 					IPC_TxHidData(m_hidBuff,7);
+0019BC 7B01              MOV     R3,#01H
+0019BE 7A4E              MOV     R2,#HIGH m_hidBuff
+0019C0 7921              MOV     R1,#LOW m_hidBuff
+0019C2 7D07              MOV     R5,#07H
+0019C4 1139              ACALL   _IPC_TxHidData
+  694: 					m_FastConnSendEmptyCount = m_FastConnSendEmptyCount+1;
+0019C6 901C32            MOV     DPTR,#m_FastConnSendEmptyCount
+0019C9 E0                MOVX    A,@DPTR
+0019CA 04                INC     A
+0019CB F0                MOVX    @DPTR,A
+  695: 				}
+0019CC 22                RET     
+  696: 				else{
+  697: 					return;
+  698: 				}
+  699: 			}
+0019CD 22                RET     
+0019CE         ?C0129?SYS:
+  700: 			else{
+  701: 				IPC_TxHidData(m_hidBuff,7);
+0019CE 7B01              MOV     R3,#01H
+0019D0 7A4E              MOV     R2,#HIGH m_hidBuff
+0019D2 7921              MOV     R1,#LOW m_hidBuff
+0019D4 7D07              MOV     R5,#07H
+0019D6 1139              ACALL   _IPC_TxHidData
+  702: 				m_FastConnSendEmptyCount = 0;
+0019D8 E4                CLR     A
+0019D9 901C32            MOV     DPTR,#m_FastConnSendEmptyCount
+0019DC F0                MOVX    @DPTR,A
+  703: 			}
+  704: 		}
+0019DD 22                RET     
+0019DE         ?C0128?SYS:
+  705: 		else{
+  706: 			IPC_TxHidData(m_hidBuff,7);
+0019DE 7B01              MOV     R3,#01H
+0019E0 7A4E              MOV     R2,#HIGH m_hidBuff
+0019E2 7921              MOV     R1,#LOW m_hidBuff
+0019E4 7D07              MOV     R5,#07H
+0019E6 1139              ACALL   _IPC_TxHidData
+  707: 		}
+  708: 		
+  709: 	}
+  710: }
+0019E8         ?C0112?SYS:
+0019E8 22                RET     
+----- FUNCTION mouseMotion (END) -------
+
+
+----- FUNCTION IPC_IsTxBuffEmpty (BEGIN) -----
+ FILE: 'ipc.c'
+  139: bit IPC_IsTxBuffEmpty()
+  140: {
+  141: 	if (ipcTxReadPtr == ipcTxWritePtr)
+  142: 		return 1;
+0019E9 9047C6            MOV     DPTR,#ipcTxWritePtr
+0019EC E0                MOVX    A,@DPTR
+0019ED FE                MOV     R6,A
+0019EE A3                INC     DPTR
+0019EF E0                MOVX    A,@DPTR
+0019F0 FF                MOV     R7,A
+0019F1 9047C4            MOV     DPTR,#ipcTxReadPtr
+0019F4 E0                MOVX    A,@DPTR
+0019F5 B50607            CJNE    A,AR6,?C0027?IPC
+0019F8 A3                INC     DPTR
+0019F9 E0                MOVX    A,@DPTR
+0019FA B50702            CJNE    A,AR7,?C0027?IPC
+  143: 	return 0;
+0019FD D3                SETB    C
+0019FE 22                RET     
+0019FF         ?C0027?IPC:
+  144: }
+0019FF C3                CLR     C
+  145: 
+001A00 22                RET     
+----- FUNCTION IPC_IsTxBuffEmpty (END) -------
+
+
+----- FUNCTION _IPC_Tx24GData (BEGIN) -----
+ FILE: 'ipc.c'
+   88: void IPC_Tx24GData(u8_t* dt, u8_t len)
+   89: {
+001A01 901C2F            MOV     DPTR,#len
+001A04 ED                MOV     A,R5
+001A05 F0                MOVX    @DPTR,A
+;---- Variable 'dt' assigned to Register 'R1/R2/R3' ----
+   90: 	ipcSendBuff[0] = IPC_24G_DATA;
+   91: 	while (ipcTxReadPtr!=ipcTxWritePtr);
+001A06 901A96            MOV     DPTR,#ipcSendBuff
+001A09 7406              MOV     A,#06H
+001A0B F0                MOVX    @DPTR,A
+001A0C         ?C0014?IPC:
+   92: 	ipcSendBuff[1] = len;
+001A0C 9047C6            MOV     DPTR,#ipcTxWritePtr
+001A0F E0                MOVX    A,@DPTR
+001A10 FE                MOV     R6,A
+001A11 A3                INC     DPTR
+001A12 E0                MOVX    A,@DPTR
+001A13 FF                MOV     R7,A
+001A14 9047C4            MOV     DPTR,#ipcTxReadPtr
+001A17 E0                MOVX    A,@DPTR
+001A18 B506F1            CJNE    A,AR6,?C0014?IPC
+001A1B A3                INC     DPTR
+001A1C E0                MOVX    A,@DPTR
+001A1D B507EC            CJNE    A,AR7,?C0014?IPC
+001A20         ?C0015?IPC:
+   93: 	xmemcpy(&ipcSendBuff[2], dt, len);
+001A20 901C2F            MOV     DPTR,#len
+001A23 E0                MOVX    A,@DPTR
+001A24 FD                MOV     R5,A
+001A25 901A97            MOV     DPTR,#ipcSendBuff+01H
+001A28 F0                MOVX    @DPTR,A
+   94: 	ipcTx(ipcSendBuff, len + 2);
+001A29 7E1A              MOV     R6,#HIGH ipcSendBuff+02H
+001A2B 7F98              MOV     R7,#LOW ipcSendBuff+02H
+001A2D 901BEC            MOV     DPTR,#?_xmemcpy?BYTE+05H
+001A30 ED                MOV     A,R5
+001A31 F0                MOVX    @DPTR,A
+001A32 121415            LCALL   _xmemcpy
+   95: }
+001A35 7B01              MOV     R3,#01H
+001A37 7A1A              MOV     R2,#HIGH ipcSendBuff
+001A39 7996              MOV     R1,#LOW ipcSendBuff
+001A3B 901C2F            MOV     DPTR,#len
+001A3E E0                MOVX    A,@DPTR
+001A3F 2402              ADD     A,#02H
+001A41 FD                MOV     R5,A
+001A42 020ECA            LJMP    _ipcTx
+----- FUNCTION _IPC_Tx24GData (END) -------
+
+
+----- FUNCTION _IPC_TxBleData (BEGIN) -----
+ FILE: 'ipc.c'
+  112: void IPC_TxBleData(u8_t* dt, u8_t len)
+  113: {
+001A45 901C31            MOV     DPTR,#len
+001A48 ED                MOV     A,R5
+001A49 F0                MOVX    @DPTR,A
+;---- Variable 'dt' assigned to Register 'R1/R2/R3' ----
+  114: 	ipcSendBuff[0] = IPC_BLE_DATA;
+  115: 	while (ipcTxReadPtr!=ipcTxWritePtr);
+001A4A 901A96            MOV     DPTR,#ipcSendBuff
+001A4D 7405              MOV     A,#05H
+001A4F F0                MOVX    @DPTR,A
+001A50         ?C0021?IPC:
+  116: 	ipcSendBuff[1] = len;
+001A50 9047C6            MOV     DPTR,#ipcTxWritePtr
+001A53 E0                MOVX    A,@DPTR
+001A54 FE                MOV     R6,A
+001A55 A3                INC     DPTR
+001A56 E0                MOVX    A,@DPTR
+001A57 FF                MOV     R7,A
+001A58 9047C4            MOV     DPTR,#ipcTxReadPtr
+001A5B E0                MOVX    A,@DPTR
+001A5C B506F1            CJNE    A,AR6,?C0021?IPC
+001A5F A3                INC     DPTR
+001A60 E0                MOVX    A,@DPTR
+001A61 B507EC            CJNE    A,AR7,?C0021?IPC
+001A64         ?C0022?IPC:
+  117: 	xmemcpy(&ipcSendBuff[2], dt, len);
+001A64 901C31            MOV     DPTR,#len
+001A67 E0                MOVX    A,@DPTR
+001A68 FD                MOV     R5,A
+001A69 901A97            MOV     DPTR,#ipcSendBuff+01H
+001A6C F0                MOVX    @DPTR,A
+  118: 	ipcTx(ipcSendBuff, len + 2);
+001A6D 7E1A              MOV     R6,#HIGH ipcSendBuff+02H
+001A6F 7F98              MOV     R7,#LOW ipcSendBuff+02H
+001A71 901BEC            MOV     DPTR,#?_xmemcpy?BYTE+05H
+001A74 ED                MOV     A,R5
+001A75 F0                MOVX    @DPTR,A
+001A76 121415            LCALL   _xmemcpy
+  119: }
+001A79 7B01              MOV     R3,#01H
+001A7B 7A1A              MOV     R2,#HIGH ipcSendBuff
+001A7D 7996              MOV     R1,#LOW ipcSendBuff
+001A7F 901C31            MOV     DPTR,#len
+001A82 E0                MOVX    A,@DPTR
+001A83 2402              ADD     A,#02H
+001A85 FD                MOV     R5,A
+001A86 020ECA            LJMP    _ipcTx
+----- FUNCTION _IPC_TxBleData (END) -------
+
+
+----- FUNCTION deviceTimer500ms (BEGIN) -----
+ FILE: 'sys.c'
+ 1228: static void deviceTimer500ms()
+ 1229: {
+ 1230: 	u8_t sleepState = 0;
+ 1231: 	g_variable.sleepTimer++;
+001A89 E4                CLR     A
+001A8A 901C2A            MOV     DPTR,#sleepState
+001A8D F0                MOVX    @DPTR,A
+ 1232: 	switch (g_variable.currentState) 
+001A8E 904EC5            MOV     DPTR,#g_variable+0AH
+001A91 E0                MOVX    A,@DPTR
+001A92 04                INC     A
+001A93 F0                MOVX    @DPTR,A
+001A94 7006              JNZ     ?C0279?SYS
+001A96 904EC4            MOV     DPTR,#g_variable+09H
+001A99 E0                MOVX    A,@DPTR
+001A9A 04                INC     A
+001A9B F0                MOVX    @DPTR,A
+001A9C         ?C0279?SYS:
+ 1233: 	{
+001A9C 904EBD            MOV     DPTR,#g_variable+02H
+001A9F E0                MOVX    A,@DPTR
+001AA0 14                DEC     A
+001AA1 6060              JZ      ?C0220?SYS
+001AA3 24FE              ADD     A,#0FEH
+001AA5 6021              JZ      ?C0216?SYS
+001AA7 24FD              ADD     A,#0FDH
+001AA9 6077              JZ      ?C0222?SYS
+001AAB 14                DEC     A
+001AAC 6035              JZ      ?C0218?SYS
+001AAE 14                DEC     A
+001AAF 6002              JZ      $ + 4H
+001AB1 6142              AJMP    ?C0224?SYS
+ 1234: 		case DEVICE_MODE_BLE_ADV:
+ 1235: 			 sleepState = DEVICE_MODE_BLE;
+001AB3         ?C0213?SYS:
+ 1236: 			 if (g_variable.sleepTimer == 16)
+001AB3 901C2A            MOV     DPTR,#sleepState
+001AB6 7409              MOV     A,#09H
+001AB8 F0                MOVX    @DPTR,A
+ 1237: 			 {
+001AB9 904EC4            MOV     DPTR,#g_variable+09H
+001ABC E0                MOVX    A,@DPTR
+001ABD 7004              JNZ     ?C0280?SYS
+001ABF A3                INC     DPTR
+001AC0 E0                MOVX    A,@DPTR
+001AC1 6410              XRL     A,#010H
+001AC3         ?C0280?SYS:
+001AC3 707D              JNZ     ?C0224?SYS
+ 1238: 		 		goto LONG_SLEEP;
+ 1239: 			 }
+001AC5 8078              SJMP    LONG_SLEEP?SYS
+ 1240: 			 break;
+ 1241: 		case DEVICE_MODE_DISC:
+001AC7 22                RET     
+ 1242: 			sleepState = DEVICE_MODE_BT;
+001AC8         ?C0216?SYS:
+ 1243: 			if (g_variable.sleepTimer == 360)	//BT Discover time 360 = 3min
+001AC8 901C2A            MOV     DPTR,#sleepState
+001ACB 7402              MOV     A,#02H
+001ACD F0                MOVX    @DPTR,A
+ 1244: 			{
+001ACE 904EC4            MOV     DPTR,#g_variable+09H
+001AD1 E0                MOVX    A,@DPTR
+001AD2 6401              XRL     A,#01H
+001AD4 7004              JNZ     ?C0281?SYS
+001AD6 A3                INC     DPTR
+001AD7 E0                MOVX    A,@DPTR
+001AD8 6468              XRL     A,#068H
+001ADA         ?C0281?SYS:
+001ADA 7066              JNZ     ?C0224?SYS
+ 1245: 				m_lpmMode = 1;
+ 1246: 				goto LONG_SLEEP;
+001ADC 904131            MOV     DPTR,#m_lpmMode
+001ADF 04                INC     A
+001AE0 F0                MOVX    @DPTR,A
+ 1247: 			}
+001AE1 805C              SJMP    LONG_SLEEP?SYS
+ 1248: 			break;
+ 1249: 		case DEVICE_MODE_BLE_BB_CONNECT:	
+ 1250: 			sleepState = DEVICE_MODE_BLE;
+001AE3         ?C0218?SYS:
+ 1251: 			if (g_variable.sleepTimer == 1200)	//BT sleep time 1200 = 10min
+001AE3 901C2A            MOV     DPTR,#sleepState
+001AE6 7409              MOV     A,#09H
+001AE8 F0                MOVX    @DPTR,A
+ 1252: 			{	
+001AE9 904EC4            MOV     DPTR,#g_variable+09H
+001AEC E0                MOVX    A,@DPTR
+001AED 6404              XRL     A,#04H
+001AEF 7004              JNZ     ?C0282?SYS
+001AF1 A3                INC     DPTR
+001AF2 E0                MOVX    A,@DPTR
+001AF3 64B0              XRL     A,#0B0H
+001AF5         ?C0282?SYS:
+001AF5 704B              JNZ     ?C0224?SYS
+ 1253: 				IPC_TxControlCmd(IPC_CMD_LE_DISCONNECT);
+ 1254: 				g_variable.nextMode = DEVICE_MODE_PREPARE_SLEEP;
+001AF7 7F11              MOV     R7,#011H
+001AF9 120EA2            LCALL   _IPC_TxControlCmd
+ 1255: 			}
+001AFC 904EBE            MOV     DPTR,#g_variable+03H
+001AFF 7406              MOV     A,#06H
+001B01 F0                MOVX    @DPTR,A
+ 1256: 			break;
+ 1257: #if MOUSE_BT_MODE_ENABLE
+001B02 22                RET     
+ 1258: 		case DEVICE_MODE_BT:
+ 1259: 			sleepState = DEVICE_MODE_BT;
+ 1260: 			if (g_variable.sleepTimer == 1200)	//BT sleep time 1200 = 10min
+ 1261: 			{	
+ 1262: 				IPC_TxControlCmd(IPC_CMD_DISCONNECT);
+ 1263: 				g_variable.nextMode = DEVICE_MODE_NONE;
+ 1264: 			}
+ 1265: 			break;
+ 1266: #endif
+ 1267: 		case DEVICE_MODE_24G:
+001B03         ?C0220?SYS:
+ 1268: 			sleepState = DEVICE_MODE_24G;
+001B03 901C2A            MOV     DPTR,#sleepState
+001B06 7401              MOV     A,#01H
+001B08 F0                MOVX    @DPTR,A
+ 1269: 			if ((g_variable.sleepTimer > 1200) && (g_variable.g24DongleExist == 1))
+001B09 D3                SETB    C
+001B0A 904EC5            MOV     DPTR,#g_variable+0AH
+001B0D E0                MOVX    A,@DPTR
+001B0E 94B0              SUBB    A,#0B0H
+001B10 904EC4            MOV     DPTR,#g_variable+09H
+001B13 E0                MOVX    A,@DPTR
+001B14 9404              SUBB    A,#04H
+001B16 402A              JC      ?C0224?SYS
+001B18 904EE3            MOV     DPTR,#g_variable+028H
+001B1B E0                MOVX    A,@DPTR
+001B1C B40123            CJNE    A,#01H,?C0224?SYS
+ 1270: 			{
+ 1271: 				goto LONG_SLEEP; 
+001B1F 801E              SJMP    LONG_SLEEP?SYS
+ 1272: 			}
+ 1273: 			break;
+001B21 22                RET     
+ 1274: 		case DEVICE_MODE_PREPARE_SLEEP:
+001B22         ?C0222?SYS:
+ 1275: 			sleepState = DEVICE_MODE_BT;
+001B22 901C2A            MOV     DPTR,#sleepState
+001B25 7402              MOV     A,#02H
+001B27 F0                MOVX    @DPTR,A
+ 1276: 			if (!IPC_IsTxBuffEmpty())
+001B28 31E9              ACALL   IPC_IsTxBuffEmpty
+001B2A 5016              JNC     ?C0224?SYS
+001B2C         ?C0223?SYS:
+ 1277: 				return;
+ 1278: 			if (g_variable.sleepTimer >= 3)		//24G sleep time 600=10min
+001B2C C3                CLR     C
+001B2D 904EC5            MOV     DPTR,#g_variable+0AH
+001B30 E0                MOVX    A,@DPTR
+001B31 9403              SUBB    A,#03H
+001B33 904EC4            MOV     DPTR,#g_variable+09H
+001B36 E0                MOVX    A,@DPTR
+001B37 9400              SUBB    A,#00H
+001B39 4007              JC      ?C0224?SYS
+ 1279: 			{
+ 1280: 				goto LONG_SLEEP;
+001B3B 8002              SJMP    LONG_SLEEP?SYS
+ 1281: 			}
+ 1282: 			break;
+001B3D 22                RET     
+ 1283: 	}
+001B3E 22                RET     
+ 1284: 	return;
+ 1285: 		
+ 1286: 	LONG_SLEEP:
+001B3F         LONG_SLEEP:
+ 1287: //		IIC_WriteBlock(EEPROM_CONN_MODE,1,&sleepState);
+ 1288: 		deviceLongSleep();
+001B3F 1216EA            LCALL   deviceLongSleep
+ 1289: }
+001B42         ?C0224?SYS:
+001B42 22                RET     
+----- FUNCTION deviceTimer500ms (END) -------
+
+
+----- FUNCTION clearGlobalMem (BEGIN) -----
+ FILE: 'sys.c'
+  807: void clearGlobalMem()
+  808: {
+  809: 	xmemclear_0(m_hidBuff,32);
+  810: 	xmemclear_0((u8_t *)&g_variable,sizeof(G_VARIABLE_MAP));
+001B43 7B01              MOV     R3,#01H
+001B45 7A4E              MOV     R2,#HIGH m_hidBuff
+001B47 7921              MOV     R1,#LOW m_hidBuff
+001B49 7D20              MOV     R5,#020H
+001B4B 7C00              MOV     R4,#00H
+001B4D 7166              ACALL   _xmemclear_0
+  811: 	g_variable.bufferEnd = 0xff;
+001B4F 7B01              MOV     R3,#01H
+001B51 7A4E              MOV     R2,#HIGH g_variable
+001B53 79BB              MOV     R1,#LOW g_variable
+001B55 7D5A              MOV     R5,#05AH
+001B57 7C00              MOV     R4,#00H
+001B59 7166              ACALL   _xmemclear_0
+  812: 	g_variable.bufferSize = sizeof(g_variable);
+001B5B 904F13            MOV     DPTR,#g_variable+058H
+001B5E 74FF              MOV     A,#0FFH
+001B60 F0                MOVX    @DPTR,A
+  813: }
+001B61 A3                INC     DPTR
+001B62 745A              MOV     A,#05AH
+001B64 F0                MOVX    @DPTR,A
+  814: 
+001B65 22                RET     
+----- FUNCTION clearGlobalMem (END) -------
+
+
+----- FUNCTION _xmemclear_0 (BEGIN) -----
+ FILE: 'utilities.c'
+   24: void xmemclear_0(u8_t *dest, u16_t len)
+   25: {
+001B66 901C19            MOV     DPTR,#dest
+001B69 EB                MOV     A,R3
+001B6A F0                MOVX    @DPTR,A
+001B6B A3                INC     DPTR
+001B6C EA                MOV     A,R2
+001B6D F0                MOVX    @DPTR,A
+001B6E A3                INC     DPTR
+001B6F E9                MOV     A,R1
+001B70 F0                MOVX    @DPTR,A
+;---- Variable 'len' assigned to Register 'R4/R5' ----
+   26: 	while(len--)
+001B71         ?C0008?UTILITIES:
+   27: 		*dest++ = 0x00;
+001B71 ED                MOV     A,R5
+001B72 1D                DEC     R5
+001B73 AE04              MOV     R6,AR4
+001B75 7001              JNZ     ?C0026?UTILITIES
+001B77 1C                DEC     R4
+001B78         ?C0026?UTILITIES:
+001B78 4E                ORL     A,R6
+001B79 6016              JZ      ?C0010?UTILITIES
+   28: 	return;
+001B7B 901C19            MOV     DPTR,#dest
+001B7E E0                MOVX    A,@DPTR
+001B7F FB                MOV     R3,A
+001B80 A3                INC     DPTR
+001B81 E4                CLR     A
+001B82 75F001            MOV     B,#01H
+001B85 120204            LCALL   ?C?ILDIX
+001B88 A9F0              MOV     R1,B
+001B8A FA                MOV     R2,A
+001B8B E4                CLR     A
+001B8C 12013F            LCALL   ?C?CSTPTR
+001B8F 80E0              SJMP    ?C0008?UTILITIES
+   29: }
+001B91         ?C0010?UTILITIES:
+001B91 22                RET     
+----- FUNCTION _xmemclear_0 (END) -------
+
+
+----- FUNCTION deviceLedFlash (BEGIN) -----
+ FILE: 'sys.c'
+  824: static void deviceLedFlash()
+  825: {
+  826: 	if (g_variable.dpiLedFlipTime == 0){
+  827: 		g_variable.dpiLedStay = 1;
+001B92 904EDD            MOV     DPTR,#g_variable+022H
+001B95 E0                MOVX    A,@DPTR
+001B96 7006              JNZ     ?C0140?SYS
+  828: 		g_variable.dpiLedOnTimer = 0;
+001B98 A3                INC     DPTR
+001B99 04                INC     A
+001B9A F0                MOVX    @DPTR,A
+  829: 	}
+001B9B E4                CLR     A
+001B9C A3                INC     DPTR
+001B9D F0                MOVX    @DPTR,A
+  830: 	if (g_variable.dpiLedFlipTime){
+001B9E         ?C0140?SYS:
+  831: 		g_variable.dpiLedOnTimer++;
+001B9E 904EDD            MOV     DPTR,#g_variable+022H
+001BA1 E0                MOVX    A,@DPTR
+001BA2 603A              JZ      ?C0141?SYS
+  832: 		if((g_variable.dpiLedOnTimer&0x07) == 0x05){
+001BA4 904EDF            MOV     DPTR,#g_variable+024H
+001BA7 E0                MOVX    A,@DPTR
+001BA8 04                INC     A
+001BA9 F0                MOVX    @DPTR,A
+  833: 			g_variable.wheelTimer = 0x0a;
+001BAA E0                MOVX    A,@DPTR
+001BAB 5407              ANL     A,#07H
+001BAD 6405              XRL     A,#05H
+001BAF 706E              JNZ     ?C0151?SYS
+  834: 			if(g_variable.dpiLedStay){
+001BB1 904EC7            MOV     DPTR,#g_variable+0CH
+001BB4 740A              MOV     A,#0AH
+001BB6 F0                MOVX    @DPTR,A
+  835: 				GPIO_Setout( LED_GPIO, 0);
+001BB7 904EDE            MOV     DPTR,#g_variable+023H
+001BBA E0                MOVX    A,@DPTR
+001BBB 600D              JZ      ?C0143?SYS
+  836: 				g_variable.dpiLedStay = 0;
+001BBD C202              CLR     ?_GPIO_Setout?BIT
+001BBF 7F08              MOV     R7,#08H
+001BC1 120F86            LCALL   _GPIO_Setout
+  837: 			}
+001BC4 E4                CLR     A
+001BC5 904EDE            MOV     DPTR,#g_variable+023H
+001BC8 F0                MOVX    @DPTR,A
+  838: 			else{
+001BC9 22                RET     
+001BCA         ?C0143?SYS:
+  839: 				GPIO_Setout( LED_GPIO , 1);
+  840: 				g_variable.dpiLedStay = 1;
+001BCA D202              SETB    ?_GPIO_Setout?BIT
+001BCC 7F08              MOV     R7,#08H
+001BCE 120F86            LCALL   _GPIO_Setout
+  841: 				g_variable.dpiLedFlipTime--;
+001BD1 904EDE            MOV     DPTR,#g_variable+023H
+001BD4 7401              MOV     A,#01H
+001BD6 F0                MOVX    @DPTR,A
+  842: 			}
+001BD7 904EDD            MOV     DPTR,#g_variable+022H
+001BDA E0                MOVX    A,@DPTR
+001BDB 14                DEC     A
+001BDC F0                MOVX    @DPTR,A
+  843: 		}
+  844: 	}
+  845: 	else if (g_variable.currentState == DEVICE_MODE_DISC){
+001BDD 22                RET     
+001BDE         ?C0141?SYS:
+  846: 		g_variable.wheelTimer = 0x45;
+001BDE 904EBD            MOV     DPTR,#g_variable+02H
+001BE1 E0                MOVX    A,@DPTR
+001BE2 B40315            CJNE    A,#03H,?C0146?SYS
+  847: 		if((g_variable.timer100msCount&0x07) == 0x04)
+001BE5 904EC7            MOV     DPTR,#g_variable+0CH
+001BE8 7445              MOV     A,#045H
+001BEA F0                MOVX    @DPTR,A
+  848: 			GPIO_FlipOutBit(LED_GPIO);
+001BEB 904EC9            MOV     DPTR,#g_variable+0EH
+001BEE E0                MOVX    A,@DPTR
+001BEF 5407              ANL     A,#07H
+001BF1 6404              XRL     A,#04H
+001BF3 702A              JNZ     ?C0151?SYS
+  849: 	}
+001BF5 7F08              MOV     R7,#08H
+001BF7 020F6D            LJMP    _GPIO_FlipOutBit
+  850: 	//low battery led
+001BFA         ?C0146?SYS:
+  851: 	else if ((g_variable.adcLowPowerFlag)&& ((g_variable.timer100msCount & 0x1f) < 5)){
+001BFA 904EE2            MOV     DPTR,#g_variable+027H
+001BFD E0                MOVX    A,@DPTR
+001BFE 6018              JZ      ?C0149?SYS
+001C00 904EC9            MOV     DPTR,#g_variable+0EH
+001C03 E0                MOVX    A,@DPTR
+001C04 541F              ANL     A,#01FH
+001C06 C3                CLR     C
+001C07 9405              SUBB    A,#05H
+001C09 500D              JNC     ?C0149?SYS
+  852: 		g_variable.wheelTimer = 10;
+001C0B 904EC7            MOV     DPTR,#g_variable+0CH
+001C0E 740A              MOV     A,#0AH
+001C10 F0                MOVX    @DPTR,A
+  853: 		GPIO_Setout(LED_GPIO, 0);
+001C11 C202              CLR     ?_GPIO_Setout?BIT
+001C13 7F08              MOV     R7,#08H
+001C15 020F86            LJMP    _GPIO_Setout
+  854: 		}
+001C18         ?C0149?SYS:
+  855: 	else  GPIO_Setout(LED_GPIO, 1);
+001C18 D202              SETB    ?_GPIO_Setout?BIT
+001C1A 7F08              MOV     R7,#08H
+001C1C 120F86            LCALL   _GPIO_Setout
+  856: }
+001C1F         ?C0151?SYS:
+001C1F 22                RET     
+----- FUNCTION deviceLedFlash (END) -------
+
+
+----- FUNCTION deviceInit (BEGIN) -----
+ FILE: 'sys.c'
+ 1361: static void deviceInit()
+ 1362: {
+ 1363: 	IPC_Initialize(&cb);
+ 1364: }
+001C20 7B01              MOV     R3,#01H
+001C22 7A1B              MOV     R2,#HIGH cb
+001C24 79AB              MOV     R1,#LOW cb
+;----                  JMP     _IPC_Initialize
+----- FUNCTION deviceInit (END) -------
+
+
+----- FUNCTION _IPC_Initialize (BEGIN) -----
+ FILE: 'ipc.c'
+  121: void IPC_Initialize(tIPCControlBlock *cb)
+  122: {
+;---- Variable 'cb' assigned to Register 'R1/R2/R3' ----
+  123: 	ipcCb = *cb;
+  124: }
+001C26 7830              MOV     R0,#LOW ipcCb
+001C28 7C48              MOV     R4,#HIGH ipcCb
+001C2A 7D01              MOV     R5,#01H
+001C2C 7E00              MOV     R6,#00H
+001C2E 7F12              MOV     R7,#012H
+001C30 0200D3            LJMP    ?C?COPY
+----- FUNCTION _IPC_Initialize (END) -------
+
+
+----- FUNCTION YC_Ice_break (BEGIN) -----
+ FILE: 'utilities.c'
+    4: void YC_Ice_break()
+    5: {
+    6: 	CPUB_ICE_CTRL = 1;
+    7: 	return;
+001C33 908280            MOV     DPTR,#08280H
+001C36 7401              MOV     A,#01H
+001C38 F0                MOVX    @DPTR,A
+    8: }
+001C39 22                RET     
+----- FUNCTION YC_Ice_break (END) -------
+
+
+----- FUNCTION _dmemcpy (BEGIN) -----
+ FILE: 'utilities.c'
+   17: void dmemcpy(u8_t *dest, u8_t* src, u16_t len) 
+   18: {
+001C3A 901BD2            MOV     DPTR,#dest
+001C3D EB                MOV     A,R3
+001C3E F0                MOVX    @DPTR,A
+001C3F A3                INC     DPTR
+001C40 EA                MOV     A,R2
+001C41 F0                MOVX    @DPTR,A
+001C42 A3                INC     DPTR
+001C43 E9                MOV     A,R1
+001C44 F0                MOVX    @DPTR,A
+   19: 	while(len--)
+001C45         ?C0005?UTILITIES:
+   20: 		*dest++ = *src++;
+001C45 901BD8            MOV     DPTR,#len
+001C48 74FF              MOV     A,#0FFH
+001C4A F5F0              MOV     B,A
+001C4C 120204            LCALL   ?C?ILDIX
+001C4F 45F0              ORL     A,B
+001C51 602A              JZ      ?C0007?UTILITIES
+   21: 	return;
+001C53 901BD5            MOV     DPTR,#src
+001C56 E0                MOVX    A,@DPTR
+001C57 FB                MOV     R3,A
+001C58 A3                INC     DPTR
+001C59 E4                CLR     A
+001C5A 75F001            MOV     B,#01H
+001C5D 120204            LCALL   ?C?ILDIX
+001C60 A9F0              MOV     R1,B
+001C62 FA                MOV     R2,A
+001C63 1200F9            LCALL   ?C?CLDPTR
+001C66 FF                MOV     R7,A
+001C67 901BD2            MOV     DPTR,#dest
+001C6A E0                MOVX    A,@DPTR
+001C6B FB                MOV     R3,A
+001C6C A3                INC     DPTR
+001C6D E4                CLR     A
+001C6E 75F001            MOV     B,#01H
+001C71 120204            LCALL   ?C?ILDIX
+001C74 A9F0              MOV     R1,B
+001C76 FA                MOV     R2,A
+001C77 EF                MOV     A,R7
+001C78 12013F            LCALL   ?C?CSTPTR
+001C7B 80C8              SJMP    ?C0005?UTILITIES
+   22: }
+001C7D         ?C0007?UTILITIES:
+001C7D 22                RET     
+----- FUNCTION _dmemcpy (END) -------
+
+
+----- FUNCTION _xmemclear_ff (BEGIN) -----
+ FILE: 'utilities.c'
+   31: void xmemclear_ff(u8_t *dest, u16_t len)
+   32: {
+001C7E 901C1C            MOV     DPTR,#dest
+001C81 EB                MOV     A,R3
+001C82 F0                MOVX    @DPTR,A
+001C83 A3                INC     DPTR
+001C84 EA                MOV     A,R2
+001C85 F0                MOVX    @DPTR,A
+001C86 A3                INC     DPTR
+001C87 E9                MOV     A,R1
+001C88 F0                MOVX    @DPTR,A
+;---- Variable 'len' assigned to Register 'R4/R5' ----
+   33: 	while(len--)
+001C89         ?C0011?UTILITIES:
+   34: 		*dest++ = 0xff;
+001C89 ED                MOV     A,R5
+001C8A 1D                DEC     R5
+001C8B AE04              MOV     R6,AR4
+001C8D 7001              JNZ     ?C0027?UTILITIES
+001C8F 1C                DEC     R4
+001C90         ?C0027?UTILITIES:
+001C90 4E                ORL     A,R6
+001C91 6017              JZ      ?C0013?UTILITIES
+   35: 	return;
+001C93 901C1C            MOV     DPTR,#dest
+001C96 E0                MOVX    A,@DPTR
+001C97 FB                MOV     R3,A
+001C98 A3                INC     DPTR
+001C99 E4                CLR     A
+001C9A 75F001            MOV     B,#01H
+001C9D 120204            LCALL   ?C?ILDIX
+001CA0 A9F0              MOV     R1,B
+001CA2 FA                MOV     R2,A
+001CA3 74FF              MOV     A,#0FFH
+001CA5 12013F            LCALL   ?C?CSTPTR
+001CA8 80DF              SJMP    ?C0011?UTILITIES
+   36: }
+001CAA         ?C0013?UTILITIES:
+001CAA 22                RET     
+----- FUNCTION _xmemclear_ff (END) -------
+
+
+----- FUNCTION _compare_str (BEGIN) -----
+ FILE: 'utilities.c'
+   55: u8_t compare_str(u8_t * str1,u8_t * str2,u8_t len)
+   56: {
+001CAB 901BDA            MOV     DPTR,#str1
+001CAE EB                MOV     A,R3
+001CAF F0                MOVX    @DPTR,A
+001CB0 A3                INC     DPTR
+001CB1 EA                MOV     A,R2
+001CB2 F0                MOVX    @DPTR,A
+001CB3 A3                INC     DPTR
+001CB4 E9                MOV     A,R1
+001CB5 F0                MOVX    @DPTR,A
+   57: 	u8_t i;
+   58: 	for (i=0;i < len;i++)
+;---- Variable 'i' assigned to Register 'R7' ----
+001CB6 E4                CLR     A
+001CB7 FF                MOV     R7,A
+001CB8         ?C0021?UTILITIES:
+001CB8 901BE0            MOV     DPTR,#len
+001CBB E0                MOVX    A,@DPTR
+001CBC FE                MOV     R6,A
+001CBD EF                MOV     A,R7
+001CBE C3                CLR     C
+001CBF 9E                SUBB    A,R6
+001CC0 5030              JNC     ?C0022?UTILITIES
+   59: 	{
+   60: 		if (str1[i] != str2[i])
+001CC2 901BDD            MOV     DPTR,#str2
+001CC5 E0                MOVX    A,@DPTR
+001CC6 FB                MOV     R3,A
+001CC7 A3                INC     DPTR
+001CC8 E0                MOVX    A,@DPTR
+001CC9 FA                MOV     R2,A
+001CCA A3                INC     DPTR
+001CCB E0                MOVX    A,@DPTR
+001CCC F9                MOV     R1,A
+001CCD 8F82              MOV     DPL,R7
+001CCF 758300            MOV     DPH,#00H
+001CD2 120112            LCALL   ?C?CLDOPTR
+001CD5 FE                MOV     R6,A
+001CD6 901BDA            MOV     DPTR,#str1
+001CD9 E0                MOVX    A,@DPTR
+001CDA FB                MOV     R3,A
+001CDB A3                INC     DPTR
+001CDC E0                MOVX    A,@DPTR
+001CDD FA                MOV     R2,A
+001CDE A3                INC     DPTR
+001CDF E0                MOVX    A,@DPTR
+001CE0 F9                MOV     R1,A
+001CE1 8F82              MOV     DPL,R7
+001CE3 758300            MOV     DPH,#00H
+001CE6 120112            LCALL   ?C?CLDOPTR
+001CE9 6E                XRL     A,R6
+001CEA 6003              JZ      ?C0023?UTILITIES
+   61: 			return 0x00;
+001CEC 7F00              MOV     R7,#00H
+001CEE 22                RET     
+   62: 	}
+001CEF         ?C0023?UTILITIES:
+001CEF 0F                INC     R7
+001CF0 80C6              SJMP    ?C0021?UTILITIES
+001CF2         ?C0022?UTILITIES:
+   63: 	return 0x01;
+001CF2 7F01              MOV     R7,#01H
+   64: }
+001CF4 22                RET     
+----- FUNCTION _compare_str (END) -------
+
+
+----- FUNCTION _GPIO_SetPd (BEGIN) -----
+ FILE: 'gpio.c'
+   50: void GPIO_SetPd(u8_t gpio_num, bool bit_val)
+   51: {
+;---- Variable 'gpio_num' assigned to Register 'R7' ----
+   52: 	gpioSetBit(gpio_num, &REG_GPIO_PDN(0), bit_val);	
+   53: }
+001CF5 7B01              MOV     R3,#01H
+001CF7 7A80              MOV     R2,#080H
+001CF9 797C              MOV     R1,#07CH
+001CFB A204              MOV     C,bit_val
+001CFD 9201              MOV     ?_gpioSetBit?BIT,C
+001CFF 0203C2            LJMP    _gpioSetBit
+----- FUNCTION _GPIO_SetPd (END) -------
+
+
+----- FUNCTION _GPIO_ClearWakeup (BEGIN) -----
+ FILE: 'gpio.c'
+   89: void GPIO_ClearWakeup(u8_t gpio_num)
+   90: {
+;---- Variable 'gpio_num' assigned to Register 'R7' ----
+   91: 	u8_t queue, group;
+   92: 	queue = (gpio_num & 7);
+001D02 EF                MOV     A,R7
+001D03 5407              ANL     A,#07H
+001D05 FE                MOV     R6,A
+;---- Variable 'queue' assigned to Register 'R6' ----
+   93: 	group = (gpio_num>>3 & 3);
+001D06 EF                MOV     A,R7
+001D07 13                RRC     A
+001D08 13                RRC     A
+001D09 13                RRC     A
+001D0A 5403              ANL     A,#03H
+001D0C FF                MOV     R7,A
+;---- Variable 'group' assigned to Register 'R7' ----
+   94: 	*(YC_GPIOWakeupL+group) &= ~(1<<queue);
+001D0D 24A0              ADD     A,#LOW YC_GPIOWakeupL
+001D0F F582              MOV     DPL,A
+001D11 E4                CLR     A
+001D12 3400              ADDC    A,#HIGH YC_GPIOWakeupL
+001D14 F583              MOV     DPH,A
+001D16 C083              PUSH    DPH
+001D18 C082              PUSH    DPL
+001D1A E0                MOVX    A,@DPTR
+001D1B FD                MOV     R5,A
+001D1C 7401              MOV     A,#01H
+001D1E A806              MOV     R0,AR6
+001D20 08                INC     R0
+001D21 8002              SJMP    ?C0031?GPIO
+001D23         ?C0030?GPIO:
+001D23 C3                CLR     C
+001D24 33                RLC     A
+001D25         ?C0031?GPIO:
+001D25 D8FC              DJNZ    R0,?C0030?GPIO
+001D27 F4                CPL     A
+001D28 FC                MOV     R4,A
+001D29 5D                ANL     A,R5
+001D2A D082              POP     DPL
+001D2C D083              POP     DPH
+001D2E F0                MOVX    @DPTR,A
+   95: 	*(YC_GPIOWakeupH+group) &= ~(1<<queue);
+001D2F 74A4              MOV     A,#LOW YC_GPIOWakeupH
+001D31 2F                ADD     A,R7
+001D32 F582              MOV     DPL,A
+001D34 E4                CLR     A
+001D35 3400              ADDC    A,#HIGH YC_GPIOWakeupH
+001D37 F583              MOV     DPH,A
+001D39 E0                MOVX    A,@DPTR
+001D3A 5C                ANL     A,R4
+001D3B F0                MOVX    @DPTR,A
+   96: }
+001D3C 22                RET     
+----- FUNCTION _GPIO_ClearWakeup (END) -------
+
+
+----- FUNCTION _ipcRx (BEGIN) -----
+ FILE: 'ipc.c'
+   44: static void ipcRx(u8_t* dest, u8_t len)
+   45: {
+001D3D 901C0E            MOV     DPTR,#dest
+001D40 EB                MOV     A,R3
+001D41 F0                MOVX    @DPTR,A
+001D42 A3                INC     DPTR
+001D43 EA                MOV     A,R2
+001D44 F0                MOVX    @DPTR,A
+001D45 A3                INC     DPTR
+001D46 E9                MOV     A,R1
+001D47 F0                MOVX    @DPTR,A
+001D48 A3                INC     DPTR
+001D49 ED                MOV     A,R5
+001D4A F0                MOVX    @DPTR,A
+   46: 	xu8_t* src = (xu8_t *)ipcRxReadPtr;
+   47: 	while(len--) {
+001D4B 90482C            MOV     DPTR,#ipcRxReadPtr
+001D4E E0                MOVX    A,@DPTR
+001D4F FE                MOV     R6,A
+001D50 A3                INC     DPTR
+001D51 E0                MOVX    A,@DPTR
+001D52 FF                MOV     R7,A
+;---- Variable 'src' assigned to Register 'R6/R7' ----
+001D53         ?C0001?IPC:
+   48: 		*dest++ = *src++;
+001D53 901C11            MOV     DPTR,#len
+001D56 E0                MOVX    A,@DPTR
+001D57 FD                MOV     R5,A
+001D58 14                DEC     A
+001D59 F0                MOVX    @DPTR,A
+001D5A ED                MOV     A,R5
+001D5B 6032              JZ      ?C0002?IPC
+   49: 		if ((u16_t)src == IPC_RX_END) {
+001D5D 0F                INC     R7
+001D5E EF                MOV     A,R7
+001D5F AC06              MOV     R4,AR6
+001D61 7001              JNZ     ?C0048?IPC
+001D63 0E                INC     R6
+001D64         ?C0048?IPC:
+001D64 14                DEC     A
+001D65 F582              MOV     DPL,A
+001D67 8C83              MOV     DPH,R4
+001D69 E0                MOVX    A,@DPTR
+001D6A FD                MOV     R5,A
+001D6B 901C0E            MOV     DPTR,#dest
+001D6E E0                MOVX    A,@DPTR
+001D6F FB                MOV     R3,A
+001D70 A3                INC     DPTR
+001D71 E4                CLR     A
+001D72 75F001            MOV     B,#01H
+001D75 120204            LCALL   ?C?ILDIX
+001D78 A9F0              MOV     R1,B
+001D7A FA                MOV     R2,A
+001D7B ED                MOV     A,R5
+001D7C 12013F            LCALL   ?C?CSTPTR
+   50: 			src = (xu8_t *)IPC_RX_HEAD;
+001D7F AD07              MOV     R5,AR7
+001D81 AC06              MOV     R4,AR6
+001D83 BC48CD            CJNE    R4,#048H,?C0001?IPC
+001D86 BD2CCA            CJNE    R5,#02CH,?C0001?IPC
+   51: 		}
+001D89 7E47              MOV     R6,#047H
+001D8B 7FC8              MOV     R7,#0C8H
+   52: 	}
+   53: 	ipcRxReadPtr = (u16_t)src;
+001D8D 80C4              SJMP    ?C0001?IPC
+001D8F         ?C0002?IPC:
+   54: }
+001D8F 90482C            MOV     DPTR,#ipcRxReadPtr
+001D92 EE                MOV     A,R6
+001D93 F0                MOVX    @DPTR,A
+001D94 A3                INC     DPTR
+001D95 EF                MOV     A,R7
+001D96 F0                MOVX    @DPTR,A
+   55: 
+001D97 22                RET     
+----- FUNCTION _ipcRx (END) -------
+
+
+----- FUNCTION IPC_DealSingleStep (BEGIN) -----
+ FILE: 'ipc.c'
+  147: void IPC_DealSingleStep()
+  148: {
+  149: 	u8_t *pbuff = ipcReadBuff;
+  150: 	if (ipcRxReadPtr == ipcRxWritePtr)
+001D98 7A1A              MOV     R2,#HIGH ipcReadBuff
+001D9A 7900              MOV     R1,#LOW ipcReadBuff
+001D9C 901C22            MOV     DPTR,#pbuff
+001D9F 7401              MOV     A,#01H
+001DA1 F0                MOVX    @DPTR,A
+001DA2 A3                INC     DPTR
+001DA3 741A              MOV     A,#HIGH ipcReadBuff
+001DA5 F0                MOVX    @DPTR,A
+001DA6 A3                INC     DPTR
+001DA7 7400              MOV     A,#LOW ipcReadBuff
+001DA9 F0                MOVX    @DPTR,A
+  151: 		goto IPC_TIMER;
+001DAA 90482E            MOV     DPTR,#ipcRxWritePtr
+001DAD E0                MOVX    A,@DPTR
+001DAE FE                MOV     R6,A
+001DAF A3                INC     DPTR
+001DB0 E0                MOVX    A,@DPTR
+001DB1 FF                MOV     R7,A
+001DB2 90482C            MOV     DPTR,#ipcRxReadPtr
+001DB5 E0                MOVX    A,@DPTR
+001DB6 6E                XRL     A,R6
+001DB7 7003              JNZ     ?C0054?IPC
+001DB9 A3                INC     DPTR
+001DBA E0                MOVX    A,@DPTR
+001DBB 6F                XRL     A,R7
+001DBC         ?C0054?IPC:
+001DBC 7002              JNZ     $ + 4H
+001DBE E14F              AJMP    ?C0041?IPC
+  152: 	ipcRx(ipcReadBuff, IPC_HEAD_LEN);
+001DC0         ?C0029?IPC:
+  153: 	if (*pbuff == IPC_CONTROL_EVT) {
+001DC0 7B01              MOV     R3,#01H
+001DC2 7A1A              MOV     R2,#HIGH ipcReadBuff
+001DC4 7900              MOV     R1,#LOW ipcReadBuff
+001DC6 7D03              MOV     R5,#03H
+001DC8 B13D              ACALL   _ipcRx
+  154: 		pbuff += 2;
+001DCA 901C22            MOV     DPTR,#pbuff
+001DCD E0                MOVX    A,@DPTR
+001DCE FB                MOV     R3,A
+001DCF A3                INC     DPTR
+001DD0 E0                MOVX    A,@DPTR
+001DD1 FA                MOV     R2,A
+001DD2 A3                INC     DPTR
+001DD3 E0                MOVX    A,@DPTR
+001DD4 F9                MOV     R1,A
+001DD5 1200F9            LCALL   ?C?CLDPTR
+001DD8 B4022B            CJNE    A,#02H,?C0031?IPC
+  155: 		ipcCb.evtcb(*pbuff);
+001DDB 901C23            MOV     DPTR,#pbuff+01H
+001DDE E4                CLR     A
+001DDF 75F002            MOV     B,#02H
+001DE2 1201EE            LCALL   ?C?IILDX
+  156: 	}
+001DE5 901C22            MOV     DPTR,#pbuff
+001DE8 E0                MOVX    A,@DPTR
+001DE9 FB                MOV     R3,A
+001DEA A3                INC     DPTR
+001DEB E0                MOVX    A,@DPTR
+001DEC FA                MOV     R2,A
+001DED A3                INC     DPTR
+001DEE E0                MOVX    A,@DPTR
+001DEF F9                MOV     R1,A
+001DF0 1200F9            LCALL   ?C?CLDPTR
+001DF3 FF                MOV     R7,A
+001DF4 904830            MOV     DPTR,#ipcCb
+001DF7 E0                MOVX    A,@DPTR
+001DF8 A3                INC     DPTR
+001DF9 E0                MOVX    A,@DPTR
+001DFA FA                MOV     R2,A
+001DFB A3                INC     DPTR
+001DFC E0                MOVX    A,@DPTR
+001DFD F582              MOV     DPL,A
+001DFF 8A83              MOV     DPH,R2
+001E01 120244            LCALL   ?C?ICALL2
+  157: 	else if (*pbuff == IPC_SPP_DATA) {
+001E04 E14F              AJMP    ?C0041?IPC
+001E06         ?C0031?IPC:
+  158: 		pbuff ++ ;
+001E06 901C22            MOV     DPTR,#pbuff
+001E09 E0                MOVX    A,@DPTR
+001E0A FB                MOV     R3,A
+001E0B A3                INC     DPTR
+001E0C E0                MOVX    A,@DPTR
+001E0D FA                MOV     R2,A
+001E0E A3                INC     DPTR
+001E0F E0                MOVX    A,@DPTR
+001E10 F9                MOV     R1,A
+001E11 1200F9            LCALL   ?C?CLDPTR
+001E14 6404              XRL     A,#04H
+001E16 705B              JNZ     ?C0033?IPC
+  159: 		ipcRx(ipcReadBuff+3, *pbuff -1);
+001E18 901C23            MOV     DPTR,#pbuff+01H
+001E1B 75F001            MOV     B,#01H
+001E1E 1201EE            LCALL   ?C?IILDX
+  160: 		ipcCb.sppcb(pbuff+1, *pbuff);
+001E21 901C22            MOV     DPTR,#pbuff
+001E24 E0                MOVX    A,@DPTR
+001E25 FB                MOV     R3,A
+001E26 A3                INC     DPTR
+001E27 E0                MOVX    A,@DPTR
+001E28 FA                MOV     R2,A
+001E29 A3                INC     DPTR
+001E2A E0                MOVX    A,@DPTR
+001E2B F9                MOV     R1,A
+001E2C 1200F9            LCALL   ?C?CLDPTR
+001E2F 14                DEC     A
+001E30 FD                MOV     R5,A
+001E31 7B01              MOV     R3,#01H
+001E33 7A1A              MOV     R2,#HIGH ipcReadBuff+03H
+001E35 7903              MOV     R1,#LOW ipcReadBuff+03H
+001E37 B13D              ACALL   _ipcRx
+  161: 	}
+001E39 901C22            MOV     DPTR,#pbuff
+001E3C E0                MOVX    A,@DPTR
+001E3D FB                MOV     R3,A
+001E3E A3                INC     DPTR
+001E3F E0                MOVX    A,@DPTR
+001E40 FA                MOV     R2,A
+001E41 A3                INC     DPTR
+001E42 E0                MOVX    A,@DPTR
+001E43 2401              ADD     A,#01H
+001E45 F9                MOV     R1,A
+001E46 E4                CLR     A
+001E47 3A                ADDC    A,R2
+001E48 FA                MOV     R2,A
+001E49 C002              PUSH    AR2
+001E4B C001              PUSH    AR1
+001E4D 901C22            MOV     DPTR,#pbuff
+001E50 E0                MOVX    A,@DPTR
+001E51 A3                INC     DPTR
+001E52 E0                MOVX    A,@DPTR
+001E53 FA                MOV     R2,A
+001E54 A3                INC     DPTR
+001E55 E0                MOVX    A,@DPTR
+001E56 F9                MOV     R1,A
+001E57 1200F9            LCALL   ?C?CLDPTR
+001E5A FD                MOV     R5,A
+001E5B 7C00              MOV     R4,#00H
+001E5D 904833            MOV     DPTR,#ipcCb+03H
+001E60 E0                MOVX    A,@DPTR
+001E61 A3                INC     DPTR
+001E62 E0                MOVX    A,@DPTR
+001E63 FA                MOV     R2,A
+001E64 A3                INC     DPTR
+001E65 E0                MOVX    A,@DPTR
+001E66 F582              MOV     DPL,A
+001E68 8A83              MOV     DPH,R2
+001E6A D001              POP     AR1
+001E6C D002              POP     AR2
+001E6E 120244            LCALL   ?C?ICALL2
+  162: 	else if (*pbuff == IPC_BLE_DATA) {
+001E71 E14F              AJMP    ?C0041?IPC
+001E73         ?C0033?IPC:
+  163: 		pbuff ++ ;
+001E73 901C22            MOV     DPTR,#pbuff
+001E76 E0                MOVX    A,@DPTR
+001E77 FB                MOV     R3,A
+001E78 A3                INC     DPTR
+001E79 E0                MOVX    A,@DPTR
+001E7A FA                MOV     R2,A
+001E7B A3                INC     DPTR
+001E7C E0                MOVX    A,@DPTR
+001E7D F9                MOV     R1,A
+001E7E 1200F9            LCALL   ?C?CLDPTR
+001E81 6405              XRL     A,#05H
+001E83 705B              JNZ     ?C0035?IPC
+  164: 		ipcRx(ipcReadBuff+3, *pbuff -1);
+001E85 901C23            MOV     DPTR,#pbuff+01H
+001E88 75F001            MOV     B,#01H
+001E8B 1201EE            LCALL   ?C?IILDX
+  165: 		ipcCb.blecb(pbuff+1, *pbuff);
+001E8E 901C22            MOV     DPTR,#pbuff
+001E91 E0                MOVX    A,@DPTR
+001E92 FB                MOV     R3,A
+001E93 A3                INC     DPTR
+001E94 E0                MOVX    A,@DPTR
+001E95 FA                MOV     R2,A
+001E96 A3                INC     DPTR
+001E97 E0                MOVX    A,@DPTR
+001E98 F9                MOV     R1,A
+001E99 1200F9            LCALL   ?C?CLDPTR
+001E9C 14                DEC     A
+001E9D FD                MOV     R5,A
+001E9E 7B01              MOV     R3,#01H
+001EA0 7A1A              MOV     R2,#HIGH ipcReadBuff+03H
+001EA2 7903              MOV     R1,#LOW ipcReadBuff+03H
+001EA4 B13D              ACALL   _ipcRx
+  166: 	}
+001EA6 901C22            MOV     DPTR,#pbuff
+001EA9 E0                MOVX    A,@DPTR
+001EAA FB                MOV     R3,A
+001EAB A3                INC     DPTR
+001EAC E0                MOVX    A,@DPTR
+001EAD FA                MOV     R2,A
+001EAE A3                INC     DPTR
+001EAF E0                MOVX    A,@DPTR
+001EB0 2401              ADD     A,#01H
+001EB2 F9                MOV     R1,A
+001EB3 E4                CLR     A
+001EB4 3A                ADDC    A,R2
+001EB5 FA                MOV     R2,A
+001EB6 C002              PUSH    AR2
+001EB8 C001              PUSH    AR1
+001EBA 901C22            MOV     DPTR,#pbuff
+001EBD E0                MOVX    A,@DPTR
+001EBE A3                INC     DPTR
+001EBF E0                MOVX    A,@DPTR
+001EC0 FA                MOV     R2,A
+001EC1 A3                INC     DPTR
+001EC2 E0                MOVX    A,@DPTR
+001EC3 F9                MOV     R1,A
+001EC4 1200F9            LCALL   ?C?CLDPTR
+001EC7 FD                MOV     R5,A
+001EC8 7C00              MOV     R4,#00H
+001ECA 90483C            MOV     DPTR,#ipcCb+0CH
+001ECD E0                MOVX    A,@DPTR
+001ECE A3                INC     DPTR
+001ECF E0                MOVX    A,@DPTR
+001ED0 FA                MOV     R2,A
+001ED1 A3                INC     DPTR
+001ED2 E0                MOVX    A,@DPTR
+001ED3 F582              MOV     DPL,A
+001ED5 8A83              MOV     DPH,R2
+001ED7 D001              POP     AR1
+001ED9 D002              POP     AR2
+001EDB 120244            LCALL   ?C?ICALL2
+  167: 	else if (*pbuff == IPC_HID_DATA) {
+001EDE 806F              SJMP    ?C0041?IPC
+001EE0         ?C0035?IPC:
+  168: 		pbuff ++ ;
+001EE0 901C22            MOV     DPTR,#pbuff
+001EE3 E0                MOVX    A,@DPTR
+001EE4 FB                MOV     R3,A
+001EE5 A3                INC     DPTR
+001EE6 E0                MOVX    A,@DPTR
+001EE7 FA                MOV     R2,A
+001EE8 A3                INC     DPTR
+001EE9 E0                MOVX    A,@DPTR
+001EEA F9                MOV     R1,A
+001EEB 1200F9            LCALL   ?C?CLDPTR
+001EEE 6403              XRL     A,#03H
+001EF0 705B              JNZ     ?C0039?IPC
+  169: 		ipcRx(ipcReadBuff+3, *pbuff -1);
+001EF2 901C23            MOV     DPTR,#pbuff+01H
+001EF5 75F001            MOV     B,#01H
+001EF8 1201EE            LCALL   ?C?IILDX
+  170: 		ipcCb.hidcb(pbuff+1, *pbuff);
+001EFB 901C22            MOV     DPTR,#pbuff
+001EFE E0                MOVX    A,@DPTR
+001EFF FB                MOV     R3,A
+001F00 A3                INC     DPTR
+001F01 E0                MOVX    A,@DPTR
+001F02 FA                MOV     R2,A
+001F03 A3                INC     DPTR
+001F04 E0                MOVX    A,@DPTR
+001F05 F9                MOV     R1,A
+001F06 1200F9            LCALL   ?C?CLDPTR
+001F09 14                DEC     A
+001F0A FD                MOV     R5,A
+001F0B 7B01              MOV     R3,#01H
+001F0D 7A1A              MOV     R2,#HIGH ipcReadBuff+03H
+001F0F 7903              MOV     R1,#LOW ipcReadBuff+03H
+001F11 B13D              ACALL   _ipcRx
+  171: 	}
+001F13 901C22            MOV     DPTR,#pbuff
+001F16 E0                MOVX    A,@DPTR
+001F17 FB                MOV     R3,A
+001F18 A3                INC     DPTR
+001F19 E0                MOVX    A,@DPTR
+001F1A FA                MOV     R2,A
+001F1B A3                INC     DPTR
+001F1C E0                MOVX    A,@DPTR
+001F1D 2401              ADD     A,#01H
+001F1F F9                MOV     R1,A
+001F20 E4                CLR     A
+001F21 3A                ADDC    A,R2
+001F22 FA                MOV     R2,A
+001F23 C002              PUSH    AR2
+001F25 C001              PUSH    AR1
+001F27 901C22            MOV     DPTR,#pbuff
+001F2A E0                MOVX    A,@DPTR
+001F2B A3                INC     DPTR
+001F2C E0                MOVX    A,@DPTR
+001F2D FA                MOV     R2,A
+001F2E A3                INC     DPTR
+001F2F E0                MOVX    A,@DPTR
+001F30 F9                MOV     R1,A
+001F31 1200F9            LCALL   ?C?CLDPTR
+001F34 FD                MOV     R5,A
+001F35 7C00              MOV     R4,#00H
+001F37 90483F            MOV     DPTR,#ipcCb+0FH
+001F3A E0                MOVX    A,@DPTR
+001F3B A3                INC     DPTR
+001F3C E0                MOVX    A,@DPTR
+001F3D FA                MOV     R2,A
+001F3E A3                INC     DPTR
+001F3F E0                MOVX    A,@DPTR
+001F40 F582              MOV     DPL,A
+001F42 8A83              MOV     DPH,R2
+001F44 D001              POP     AR1
+001F46 D002              POP     AR2
+001F48 120244            LCALL   ?C?ICALL2
+  172: 	else {
+001F4B 8002              SJMP    ?C0041?IPC
+  173: 		while(1);
+001F4D         ?C0039?IPC:
+  174: 	}
+001F4D 80FE              SJMP    ?C0039?IPC
+  175: IPC_TIMER:
+  176: 	while (c51timer != bttimer) {
+001F4F         IPC_TIMER:
+001F4F         ?C0041?IPC:
+  177: 		if (ipcCb.timercb == NULL)
+001F4F 904898            MOV     DPTR,#bttimer
+001F52 E0                MOVX    A,@DPTR
+001F53 FE                MOV     R6,A
+001F54 A3                INC     DPTR
+001F55 E0                MOVX    A,@DPTR
+001F56 FF                MOV     R7,A
+001F57 90489A            MOV     DPTR,#c51timer
+001F5A E0                MOVX    A,@DPTR
+001F5B 6E                XRL     A,R6
+001F5C 7003              JNZ     ?C0055?IPC
+001F5E A3                INC     DPTR
+001F5F E0                MOVX    A,@DPTR
+001F60 6F                XRL     A,R7
+001F61         ?C0055?IPC:
+001F61 6021              JZ      ?C0045?IPC
+  178: 			return;
+001F63 904836            MOV     DPTR,#ipcCb+06H
+001F66 E0                MOVX    A,@DPTR
+001F67 FB                MOV     R3,A
+001F68 A3                INC     DPTR
+001F69 E0                MOVX    A,@DPTR
+001F6A FA                MOV     R2,A
+001F6B A3                INC     DPTR
+001F6C E0                MOVX    A,@DPTR
+001F6D F9                MOV     R1,A
+001F6E 4A                ORL     A,R2
+001F6F 6036              JZ      ?C0044?IPC
+001F71         ?C0043?IPC:
+  179: 		ipcCb.timercb();
+001F71 120240            LCALL   ?C?ICALL
+  180: 		c51timer ++;
+001F74 90489B            MOV     DPTR,#c51timer+01H
+001F77 E0                MOVX    A,@DPTR
+001F78 04                INC     A
+001F79 F0                MOVX    @DPTR,A
+001F7A 7006              JNZ     ?C0056?IPC
+001F7C 90489A            MOV     DPTR,#c51timer
+001F7F E0                MOVX    A,@DPTR
+001F80 04                INC     A
+001F81 F0                MOVX    @DPTR,A
+001F82         ?C0056?IPC:
+  181: 	}
+001F82 80CB              SJMP    ?C0041?IPC
+001F84         ?C0045?IPC:
+  182: 	while (c51stimer!= btstimer) {
+001F84 90489C            MOV     DPTR,#btstimer
+001F87 E0                MOVX    A,@DPTR
+001F88 FF                MOV     R7,A
+001F89 A3                INC     DPTR
+001F8A E0                MOVX    A,@DPTR
+001F8B 6F                XRL     A,R7
+001F8C 6019              JZ      ?C0044?IPC
+  183: 		if (ipcCb.stimercb == NULL)
+001F8E 904839            MOV     DPTR,#ipcCb+09H
+001F91 E0                MOVX    A,@DPTR
+001F92 FB                MOV     R3,A
+001F93 A3                INC     DPTR
+001F94 E0                MOVX    A,@DPTR
+001F95 FA                MOV     R2,A
+001F96 A3                INC     DPTR
+001F97 E0                MOVX    A,@DPTR
+001F98 F9                MOV     R1,A
+001F99 4A                ORL     A,R2
+001F9A 600B              JZ      ?C0044?IPC
+001F9C         ?C0047?IPC:
+  184: 			return;
+  185: 		ipcCb.stimercb();
+001F9C 120240            LCALL   ?C?ICALL
+  186: 		c51stimer ++;
+001F9F 90489D            MOV     DPTR,#c51stimer
+001FA2 E0                MOVX    A,@DPTR
+001FA3 04                INC     A
+001FA4 F0                MOVX    @DPTR,A
+  187: 	}
+001FA5 80DD              SJMP    ?C0045?IPC
+  188: 	//other app process
+  189: }
+001FA7         ?C0044?IPC:
+001FA7 22                RET     
+----- FUNCTION IPC_DealSingleStep (END) -------
+
+
+----- FUNCTION _IPC_TxBREDRHidData (BEGIN) -----
+ FILE: 'ipc.c'
+   75: void IPC_TxBREDRHidData(u8_t* dt, u8_t len)
+   76: {
+001FA8 901C2E            MOV     DPTR,#len
+001FAB ED                MOV     A,R5
+001FAC F0                MOVX    @DPTR,A
+;---- Variable 'dt' assigned to Register 'R1/R2/R3' ----
+   77: 	ipcSendBuff[0] = IPC_HID_DATA;
+   78: 	if (len == 0)
+001FAD 901A96            MOV     DPTR,#ipcSendBuff
+001FB0 7403              MOV     A,#03H
+001FB2 F0                MOVX    @DPTR,A
+   79: 		return;
+001FB3 901C2E            MOV     DPTR,#len
+001FB6 E0                MOVX    A,@DPTR
+001FB7 6039              JZ      ?C0011?IPC
+001FB9         ?C0010?IPC:
+001FB9         ?C0012?IPC:
+   80: 	while (ipcTxReadPtr!=ipcTxWritePtr);
+001FB9 9047C6            MOV     DPTR,#ipcTxWritePtr
+001FBC E0                MOVX    A,@DPTR
+001FBD FE                MOV     R6,A
+001FBE A3                INC     DPTR
+001FBF E0                MOVX    A,@DPTR
+001FC0 FF                MOV     R7,A
+001FC1 9047C4            MOV     DPTR,#ipcTxReadPtr
+001FC4 E0                MOVX    A,@DPTR
+001FC5 B506F1            CJNE    A,AR6,?C0012?IPC
+001FC8 A3                INC     DPTR
+001FC9 E0                MOVX    A,@DPTR
+001FCA B507EC            CJNE    A,AR7,?C0012?IPC
+001FCD         ?C0013?IPC:
+   81: 	ipcSendBuff[1] = len;
+001FCD 901C2E            MOV     DPTR,#len
+001FD0 E0                MOVX    A,@DPTR
+001FD1 FD                MOV     R5,A
+001FD2 901A97            MOV     DPTR,#ipcSendBuff+01H
+001FD5 F0                MOVX    @DPTR,A
+   82: 	xmemcpy(&ipcSendBuff[2], dt, len);
+001FD6 7E1A              MOV     R6,#HIGH ipcSendBuff+02H
+001FD8 7F98              MOV     R7,#LOW ipcSendBuff+02H
+001FDA 901BEC            MOV     DPTR,#?_xmemcpy?BYTE+05H
+001FDD ED                MOV     A,R5
+001FDE F0                MOVX    @DPTR,A
+001FDF 121415            LCALL   _xmemcpy
+   83: 	ipcTx(ipcSendBuff, len + 2);
+001FE2 7B01              MOV     R3,#01H
+001FE4 7A1A              MOV     R2,#HIGH ipcSendBuff
+001FE6 7996              MOV     R1,#LOW ipcSendBuff
+001FE8 901C2E            MOV     DPTR,#len
+001FEB E0                MOVX    A,@DPTR
+001FEC 2402              ADD     A,#02H
+001FEE FD                MOV     R5,A
+001FEF 120ECA            LCALL   _ipcTx
+   84: }
+001FF2         ?C0011?IPC:
+001FF2 22                RET     
+----- FUNCTION _IPC_TxBREDRHidData (END) -------
+
+
+----- FUNCTION IPC_GetBBDIsconnectReason (BEGIN) -----
+ FILE: 'ipc.c'
+   98: u8_t IPC_GetBBDIsconnectReason()
+   99: {
+  100: 	return bbDisReason;
+  101: }
+001FF3 9003F0            MOV     DPTR,#bbDisReason
+001FF6 E0                MOVX    A,@DPTR
+001FF7 FF                MOV     R7,A
+  102: 
+001FF8 22                RET     
+----- FUNCTION IPC_GetBBDIsconnectReason (END) -------
+
+
+----- FUNCTION _IPC_TxSppData (BEGIN) -----
+ FILE: 'ipc.c'
+  103: void IPC_TxSppData(u8_t* dt, u8_t len)
+  104: {
+001FF9 901C30            MOV     DPTR,#len
+001FFC ED                MOV     A,R5
+001FFD F0                MOVX    @DPTR,A
+;---- Variable 'dt' assigned to Register 'R1/R2/R3' ----
+  105: 	ipcSendBuff[0] = IPC_SPP_DATA;
+  106: 	while (ipcTxReadPtr!=ipcTxWritePtr);
+001FFE 901A96            MOV     DPTR,#ipcSendBuff
+002001 7404              MOV     A,#04H
+002003 F0                MOVX    @DPTR,A
+002004         ?C0018?IPC:
+  107: 	ipcSendBuff[1] = len;
+002004 9047C6            MOV     DPTR,#ipcTxWritePtr
+002007 E0                MOVX    A,@DPTR
+002008 FE                MOV     R6,A
+002009 A3                INC     DPTR
+00200A E0                MOVX    A,@DPTR
+00200B FF                MOV     R7,A
+00200C 9047C4            MOV     DPTR,#ipcTxReadPtr
+00200F E0                MOVX    A,@DPTR
+002010 B506F1            CJNE    A,AR6,?C0018?IPC
+002013 A3                INC     DPTR
+002014 E0                MOVX    A,@DPTR
+002015 B507EC            CJNE    A,AR7,?C0018?IPC
+002018         ?C0019?IPC:
+  108: 	xmemcpy(&ipcSendBuff[2], dt, len);
+002018 901C30            MOV     DPTR,#len
+00201B E0                MOVX    A,@DPTR
+00201C FD                MOV     R5,A
+00201D 901A97            MOV     DPTR,#ipcSendBuff+01H
+002020 F0                MOVX    @DPTR,A
+  109: 	ipcTx(ipcSendBuff, len + 2);
+002021 7E1A              MOV     R6,#HIGH ipcSendBuff+02H
+002023 7F98              MOV     R7,#LOW ipcSendBuff+02H
+002025 901BEC            MOV     DPTR,#?_xmemcpy?BYTE+05H
+002028 ED                MOV     A,R5
+002029 F0                MOVX    @DPTR,A
+00202A 121415            LCALL   _xmemcpy
+  110: }
+00202D 7B01              MOV     R3,#01H
+00202F 7A1A              MOV     R2,#HIGH ipcSendBuff
+002031 7996              MOV     R1,#LOW ipcSendBuff
+002033 901C30            MOV     DPTR,#len
+002036 E0                MOVX    A,@DPTR
+002037 2402              ADD     A,#02H
+002039 FD                MOV     R5,A
+00203A 020ECA            LJMP    _ipcTx
+----- FUNCTION _IPC_TxSppData (END) -------
+
+
+----- FUNCTION _abs (BEGIN) -----
+ FILE: 'sensor.c'
+  259: u16_t abs(s16_t data_in)
+  260: {
+;---- Variable 'data_in' assigned to Register 'R6/R7' ----
+  261: 	if( data_in<=0)
+  262: 		data_in = 0 - data_in;
+00203D D3                SETB    C
+00203E EF                MOV     A,R7
+00203F 9400              SUBB    A,#00H
+002041 EE                MOV     A,R6
+002042 6480              XRL     A,#080H
+002044 9480              SUBB    A,#080H
+002046 5007              JNC     ?C0034?SENSOR
+  263: 	return ((u16_t) data_in);
+002048 C3                CLR     C
+002049 E4                CLR     A
+00204A 9F                SUBB    A,R7
+00204B FF                MOV     R7,A
+00204C E4                CLR     A
+00204D 9E                SUBB    A,R6
+00204E FE                MOV     R6,A
+00204F         ?C0034?SENSOR:
+  264: }
+  265: 
+00204F 22                RET     
+----- FUNCTION _abs (END) -------
+
+
+----- FUNCTION Drawing_optima (BEGIN) -----
+ FILE: 'sensor.c'
+  267: void Drawing_optima()
+  268: {
+  269: 	if ((g_variable.X_data > 6) ||(g_variable.X_data < -6)||(g_variable.Y_data > 6) ||(g_variable.Y_data < -6))
+  270: 		g_variable.asm_flag = 1;
+002050 904EFB            MOV     DPTR,#g_variable+040H
+002053 E0                MOVX    A,@DPTR
+002054 FE                MOV     R6,A
+002055 A3                INC     DPTR
+002056 E0                MOVX    A,@DPTR
+002057 FF                MOV     R7,A
+002058 D3                SETB    C
+002059 9406              SUBB    A,#06H
+00205B EE                MOV     A,R6
+00205C 6480              XRL     A,#080H
+00205E 9480              SUBB    A,#080H
+002060 5026              JNC     ?C0037?SENSOR
+002062 C3                CLR     C
+002063 EF                MOV     A,R7
+002064 94FA              SUBB    A,#0FAH
+002066 EE                MOV     A,R6
+002067 6480              XRL     A,#080H
+002069 947F              SUBB    A,#07FH
+00206B 401B              JC      ?C0037?SENSOR
+00206D A3                INC     DPTR
+00206E E0                MOVX    A,@DPTR
+00206F FE                MOV     R6,A
+002070 A3                INC     DPTR
+002071 E0                MOVX    A,@DPTR
+002072 FF                MOV     R7,A
+002073 D3                SETB    C
+002074 9406              SUBB    A,#06H
+002076 EE                MOV     A,R6
+002077 6480              XRL     A,#080H
+002079 9480              SUBB    A,#080H
+00207B 500B              JNC     ?C0037?SENSOR
+00207D C3                CLR     C
+00207E EF                MOV     A,R7
+00207F 94FA              SUBB    A,#0FAH
+002081 EE                MOV     A,R6
+002082 6480              XRL     A,#080H
+002084 947F              SUBB    A,#07FH
+002086 5006              JNC     ?C0036?SENSOR
+002088         ?C0037?SENSOR:
+  271: 	if ((abs(g_variable.X_data) <3) &&(abs(g_variable.Y_data) <3))
+002088 904EFF            MOV     DPTR,#g_variable+044H
+00208B 7401              MOV     A,#01H
+00208D F0                MOVX    @DPTR,A
+00208E         ?C0036?SENSOR:
+  272: 		g_variable.asm_flag = 0;
+00208E 904EFB            MOV     DPTR,#g_variable+040H
+002091 E0                MOVX    A,@DPTR
+002092 FE                MOV     R6,A
+002093 A3                INC     DPTR
+002094 E0                MOVX    A,@DPTR
+002095 FF                MOV     R7,A
+002096 113D              ACALL   _abs
+002098 C3                CLR     C
+002099 EF                MOV     A,R7
+00209A 9403              SUBB    A,#03H
+00209C EE                MOV     A,R6
+00209D 9400              SUBB    A,#00H
+00209F 5014              JNC     ?C0038?SENSOR
+0020A1 A3                INC     DPTR
+0020A2 E0                MOVX    A,@DPTR
+0020A3 FE                MOV     R6,A
+0020A4 A3                INC     DPTR
+0020A5 E0                MOVX    A,@DPTR
+0020A6 FF                MOV     R7,A
+0020A7 113D              ACALL   _abs
+0020A9 C3                CLR     C
+0020AA EF                MOV     A,R7
+0020AB 9403              SUBB    A,#03H
+0020AD EE                MOV     A,R6
+0020AE 9400              SUBB    A,#00H
+0020B0 5003              JNC     ?C0038?SENSOR
+  273: 	if(g_variable.asm_flag == 1) {
+0020B2 E4                CLR     A
+0020B3 A3                INC     DPTR
+0020B4 F0                MOVX    @DPTR,A
+0020B5         ?C0038?SENSOR:
+  274: 		g_variable.X_sum = g_variable.X_sum - g_variable.X_pre + g_variable.X_data;
+0020B5 904EFF            MOV     DPTR,#g_variable+044H
+0020B8 E0                MOVX    A,@DPTR
+0020B9 6401              XRL     A,#01H
+0020BB 6002              JZ      $ + 4H
+0020BD 213E              AJMP    ?C0039?SENSOR
+  275: 		g_variable.X_pre = g_variable.X_sum/2;
+0020BF 904EF7            MOV     DPTR,#g_variable+03CH
+0020C2 E0                MOVX    A,@DPTR
+0020C3 FE                MOV     R6,A
+0020C4 A3                INC     DPTR
+0020C5 E0                MOVX    A,@DPTR
+0020C6 FF                MOV     R7,A
+0020C7 C3                CLR     C
+0020C8 904EF4            MOV     DPTR,#g_variable+039H
+0020CB E0                MOVX    A,@DPTR
+0020CC 9F                SUBB    A,R7
+0020CD FF                MOV     R7,A
+0020CE 904EF3            MOV     DPTR,#g_variable+038H
+0020D1 E0                MOVX    A,@DPTR
+0020D2 9E                SUBB    A,R6
+0020D3 FE                MOV     R6,A
+0020D4 904EFC            MOV     DPTR,#g_variable+041H
+0020D7 E0                MOVX    A,@DPTR
+0020D8 2F                ADD     A,R7
+0020D9 FF                MOV     R7,A
+0020DA 904EFB            MOV     DPTR,#g_variable+040H
+0020DD E0                MOVX    A,@DPTR
+0020DE 3E                ADDC    A,R6
+0020DF FE                MOV     R6,A
+0020E0 904EF3            MOV     DPTR,#g_variable+038H
+0020E3 F0                MOVX    @DPTR,A
+0020E4 A3                INC     DPTR
+0020E5 EF                MOV     A,R7
+0020E6 F0                MOVX    @DPTR,A
+  276: 		g_variable.X_data = g_variable.X_pre;
+0020E7 7C00              MOV     R4,#00H
+0020E9 7D02              MOV     R5,#02H
+0020EB 1201B8            LCALL   ?C?SIDIV
+0020EE 904EF7            MOV     DPTR,#g_variable+03CH
+0020F1 EE                MOV     A,R6
+0020F2 F0                MOVX    @DPTR,A
+0020F3 A3                INC     DPTR
+0020F4 EF                MOV     A,R7
+0020F5 F0                MOVX    @DPTR,A
+  277: 		g_variable.Y_sum = g_variable.Y_sum - g_variable.Y_pre + g_variable.Y_data;
+0020F6 904EFB            MOV     DPTR,#g_variable+040H
+0020F9 EE                MOV     A,R6
+0020FA F0                MOVX    @DPTR,A
+0020FB A3                INC     DPTR
+0020FC EF                MOV     A,R7
+0020FD F0                MOVX    @DPTR,A
+  278: 		g_variable.Y_pre = g_variable.Y_sum/2;
+0020FE 904EF9            MOV     DPTR,#g_variable+03EH
+002101 E0                MOVX    A,@DPTR
+002102 FE                MOV     R6,A
+002103 A3                INC     DPTR
+002104 E0                MOVX    A,@DPTR
+002105 FF                MOV     R7,A
+002106 C3                CLR     C
+002107 904EF6            MOV     DPTR,#g_variable+03BH
+00210A E0                MOVX    A,@DPTR
+00210B 9F                SUBB    A,R7
+00210C FF                MOV     R7,A
+00210D 904EF5            MOV     DPTR,#g_variable+03AH
+002110 E0                MOVX    A,@DPTR
+002111 9E                SUBB    A,R6
+002112 FE                MOV     R6,A
+002113 904EFE            MOV     DPTR,#g_variable+043H
+002116 E0                MOVX    A,@DPTR
+002117 2F                ADD     A,R7
+002118 FF                MOV     R7,A
+002119 904EFD            MOV     DPTR,#g_variable+042H
+00211C E0                MOVX    A,@DPTR
+00211D 3E                ADDC    A,R6
+00211E FE                MOV     R6,A
+00211F 904EF5            MOV     DPTR,#g_variable+03AH
+002122 F0                MOVX    @DPTR,A
+002123 A3                INC     DPTR
+002124 EF                MOV     A,R7
+002125 F0                MOVX    @DPTR,A
+  279: 		g_variable.Y_data = g_variable.Y_pre;
+002126 7C00              MOV     R4,#00H
+002128 7D02              MOV     R5,#02H
+00212A 1201B8            LCALL   ?C?SIDIV
+00212D 904EF9            MOV     DPTR,#g_variable+03EH
+002130 EE                MOV     A,R6
+002131 F0                MOVX    @DPTR,A
+002132 A3                INC     DPTR
+002133 EF                MOV     A,R7
+002134 F0                MOVX    @DPTR,A
+  280: 	}else{
+002135 904EFD            MOV     DPTR,#g_variable+042H
+002138 EE                MOV     A,R6
+002139 F0                MOVX    @DPTR,A
+00213A A3                INC     DPTR
+00213B EF                MOV     A,R7
+00213C F0                MOVX    @DPTR,A
+  281: 		g_variable.X_sum = 0;
+00213D 22                RET     
+00213E         ?C0039?SENSOR:
+  282: 		g_variable.Y_sum = 0;
+00213E E4                CLR     A
+00213F 904EF3            MOV     DPTR,#g_variable+038H
+002142 F0                MOVX    @DPTR,A
+002143 A3                INC     DPTR
+002144 F0                MOVX    @DPTR,A
+  283: 	 	g_variable.X_pre = 0;
+002145 A3                INC     DPTR
+002146 F0                MOVX    @DPTR,A
+002147 A3                INC     DPTR
+002148 F0                MOVX    @DPTR,A
+  284: 	 	g_variable.Y_pre = 0;
+002149 A3                INC     DPTR
+00214A F0                MOVX    @DPTR,A
+00214B A3                INC     DPTR
+00214C F0                MOVX    @DPTR,A
+  285:  	}
+00214D A3                INC     DPTR
+00214E F0                MOVX    @DPTR,A
+00214F A3                INC     DPTR
+002150 F0                MOVX    @DPTR,A
+  286: }
+  287: 
+002151 22                RET     
+----- FUNCTION Drawing_optima (END) -------
+
+
+----- FUNCTION Drawing_optima_init (BEGIN) -----
+ FILE: 'sensor.c'
+  288: void Drawing_optima_init()
+  289: {
+  290: 	g_variable.X_sum = 0;
+  291: 	g_variable.Y_sum = 0;
+002152 E4                CLR     A
+002153 904EF3            MOV     DPTR,#g_variable+038H
+002156 F0                MOVX    @DPTR,A
+002157 A3                INC     DPTR
+002158 F0                MOVX    @DPTR,A
+  292:  	g_variable.X_pre = 0;
+002159 A3                INC     DPTR
+00215A F0                MOVX    @DPTR,A
+00215B A3                INC     DPTR
+00215C F0                MOVX    @DPTR,A
+  293:  	g_variable.Y_pre = 0;
+00215D A3                INC     DPTR
+00215E F0                MOVX    @DPTR,A
+00215F A3                INC     DPTR
+002160 F0                MOVX    @DPTR,A
+  294: 	g_variable.asm_flag = 0;
+002161 A3                INC     DPTR
+002162 F0                MOVX    @DPTR,A
+002163 A3                INC     DPTR
+002164 F0                MOVX    @DPTR,A
+  295: 	g_variable.X_data = 0;
+002165 904EFF            MOV     DPTR,#g_variable+044H
+002168 F0                MOVX    @DPTR,A
+  296: 	g_variable.Y_data = 0;
+002169 904EFB            MOV     DPTR,#g_variable+040H
+00216C F0                MOVX    @DPTR,A
+00216D A3                INC     DPTR
+00216E F0                MOVX    @DPTR,A
+  297: }
+00216F A3                INC     DPTR
+002170 F0                MOVX    @DPTR,A
+002171 A3                INC     DPTR
+002172 F0                MOVX    @DPTR,A
+  298: 
+002173 22                RET     
+----- FUNCTION Drawing_optima_init (END) -------
+
+
Index: Standard_mouse/c51/output/FW.HTM
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/FW.HTM	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/FW.HTM	(working copy)
@@ -0,0 +1,1071 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<title>LX51 Static Call Analysis</title>
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<style type="text/css">
+<!--
+p            { font-family: Verdana; font-size: 8pt; margin-top: 2; margin-bottom: 2 }
+.LI2         { margin-top: 2; margin-bottom: 2 }
+.Release     { background-color: #CCCCCC; font-weight: bold; padding: 6 }
+.ToolT       { font-size: 8pt; color: #808080 }
+.TinyT       { font-size: 8pt; text-align: Center }
+ul           { font-family: Verdana; font-size: 8pt; list-style-type: square;  margin-top: 2; margin-bottom: 2 }
+ol           { font-family: Verdana; font-size: 8pt }
+h1           { font-family: Verdana; font-size: 14pt; color: #000080; font-weight: bold; text-align: Center; margin-right: 3 }
+h2           { font-family: Verdana; font-size: 8pt; color: #000080; font-weight: bold; margin-top: 12; margin-bottom: 3; background-color: #CCCCCC; padding: 6 }
+h3           { font-family: Verdana; font-size: 8pt; font-weight: bold; margin-top: 12; margin-bottom: 3; background-color: #CCCCCC; padding: 6 }
+pre          { font-family: Courier New; font-size: 8pt; background-color: #CCFFCC; margin-left: 24; margin-right: 24 }
+li           { margin-top: 3; margin-bottom: 0 }
+-->
+</style>
+</head>
+<body>
+<h1>Static Call Analysis for<br>OUTPUT\FW (RAM)</h1>
+
+<p class="TinyT">
+Created from: <b>LX51 LINKER/LOCATER V4.41</b><br>
+Creation time: <b>10/28/2019  17:53:39</b><p>
+
+<hr>
+
+
+<h2><a name="S24"></a>?PR?DEVICESWITCH24GMODE?SYS (C:000F93H - C:000FDCH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S97">?PR?_IIC_READ?IIC</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S97">?PR?_IIC_READ?IIC</a></li>
+<li><a href="#S108">?PR?_IPC_TXCONTROLCMD?IPC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+</ul>
+
+<h2><a name="S33"></a>?PR?_DEVICEEVTCB?SYS (C:00041FH - C:00073FH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=10 Bytes (<a href="#S31">?PR?LEADDRRANDOMCNTINIT?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S190">?C?LIB_CODE</a></li>
+<li><a href="#S59">?PR?_DELAY1MS?UTILITIES</a></li>
+<li><a href="#S67">?PR?_GPIO_GETINPUTSTATUS?GPIO</a></li>
+<li><a href="#S76">?PR?_GPIO_SETINPUT?GPIO</a></li>
+<li><a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+<li><a href="#S97">?PR?_IIC_READ?IIC</a></li>
+<li><a href="#S101">?PR?_IIC_WRITEBLOCK?IIC</a></li>
+<li><a href="#S108">?PR?_IPC_TXCONTROLCMD?IPC</a></li>
+<li><a href="#S93">?PR?_SPI_WRITESENSOR?SPI</a></li>
+<li><a href="#S26">?PR?CLEARGLOBALMEM?SYS</a></li>
+<li><a href="#S27">?PR?DEVICELONGSLEEP?SYS</a></li>
+<li><a href="#S25">?PR?DEVICESTOP24G?SYS</a></li>
+<li><a href="#S24">?PR?DEVICESWITCH24GMODE?SYS</a></li>
+<li><a href="#S4">?PR?DPIWRITEINSENSOR?SYS</a></li>
+<li><a href="#S187">?PR?DRAWING_OPTIMA_INIT?SENSOR</a></li>
+<li><a href="#S31">?PR?LEADDRRANDOMCNTINIT?SYS</a></li>
+<li><a href="#S30">?PR?LEADVSTART?SYS</a></li>
+<li><a href="#S29">?PR?LERECONNSTART?SYS</a></li>
+<li><a href="#S3">?PR?SENSORCLEARDATA?SYS</a></li>
+<li><a href="#S91">?PR?SPI_INITIALIZE?SPI</a></li>
+<li><a href="#S180">?PR?SPI_RESETSENSOR?SENSOR</a></li>
+<li><a href="#S178">?PR?SPI_TWRESET?SENSOR</a></li>
+</ul>
+
+<h2><a name="S37"></a>?PR?DEVICETIMER500MS?SYS (C:001A89H - C:001B42H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S108">?PR?_IPC_TXCONTROLCMD?IPC</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S108">?PR?_IPC_TXCONTROLCMD?IPC</a></li>
+<li><a href="#S27">?PR?DEVICELONGSLEEP?SYS</a></li>
+<li><a href="#S122">?PR?IPC_ISTXBUFFEMPTY?IPC</a></li>
+</ul>
+
+<h2><a name="S41"></a>?PR?DEVICETIMER100MS?SYS (C:001704H - C:001739H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=10 Bytes (<a href="#S35">?PR?COMBOKEYPB?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S35">?PR?COMBOKEYPB?SYS</a></li>
+<li><a href="#S28">?PR?DEVICELEDFLASH?SYS</a></li>
+<li><a href="#S27">?PR?DEVICELONGSLEEP?SYS</a></li>
+<li><a href="#S39">?PR?POWER_LOW_DETECT?SYS</a></li>
+</ul>
+
+<h2><a name="S46"></a>?PR?YC_SYSMAIN?SYS (C:0002F1H - C:0003A0H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=14 Bytes (<a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S67">?PR?_GPIO_GETINPUTSTATUS?GPIO</a></li>
+<li><a href="#S76">?PR?_GPIO_SETINPUT?GPIO</a></li>
+<li><a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+<li><a href="#S80">?PR?_GPIO_SETWAKEUP?GPIO</a></li>
+<li><a href="#S42">?PR?DEVICEINIT?SYS</a></li>
+<li><a href="#S121">?PR?IPC_ABANDONLPM?IPC</a></li>
+<li><a href="#S123">?PR?IPC_DEALSINGLESTEP?IPC</a></li>
+<li><a href="#S120">?PR?IPC_WAITLPM?IPC</a></li>
+<li><a href="#S16">?PR?MOUSEKEYDETECT?SYS</a></li>
+<li><a href="#S21">?PR?MOUSEMOTION?SYS</a></li>
+<li><a href="#S12">?PR?MOUSEWHEELSCAN?SYS</a></li>
+<li><a href="#S183">?PR?SENSORPOWERDOWN?SENSOR</a></li>
+<li><a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a></li>
+<li><a href="#S43">?PR?YC_SETWAKE?SYS</a></li>
+</ul>
+
+<h2><a name="S53"></a>?PR?_DMEMCPY?UTILITIES (C:001C3AH - C:001C7DH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S190">?C?LIB_CODE</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S190">?C?LIB_CODE</a></li>
+</ul>
+
+<h2><a name="S57"></a>?PR?_XMEMCLEAR_FF?UTILITIES (C:001C7EH - C:001CAAH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S190">?C?LIB_CODE</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S190">?C?LIB_CODE</a></li>
+</ul>
+
+<h2><a name="S60"></a>?PR?_COMPARE_STR?UTILITIES (C:001CABH - C:001CF4H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S190">?C?LIB_CODE</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S190">?C?LIB_CODE</a></li>
+</ul>
+
+<h2><a name="S110"></a>?PR?_IPC_TXBREDRHIDDATA?IPC (C:001FA8H - C:001FF2H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S51">?PR?_XMEMCPY?UTILITIES</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S106">?PR?_IPCTX?IPC</a></li>
+<li><a href="#S51">?PR?_XMEMCPY?UTILITIES</a></li>
+</ul>
+
+<h2><a name="S115"></a>?PR?_IPC_TXSPPDATA?IPC (C:001FF9H - C:00203CH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S51">?PR?_XMEMCPY?UTILITIES</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S106">?PR?_IPCTX?IPC</a></li>
+<li><a href="#S51">?PR?_XMEMCPY?UTILITIES</a></li>
+</ul>
+
+<h2><a name="S119"></a>?PR?_IPC_INITIALIZE?IPC (C:001C26H - C:001C32H)</h2>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S190">?C?LIB_CODE</a></li>
+</ul>
+
+<h2><a name="S3"></a>?PR?SENSORCLEARDATA?SYS (C:000831H - C:000849H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S184">?PR?SENSORPOWERON?SENSOR</a>) Top=2 Bytes (<a href="#S33">?PR?_DEVICEEVTCB?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S67">?PR?_GPIO_GETINPUTSTATUS?GPIO</a></li>
+<li><a href="#S92">?PR?_SPI_READSENSOR?SPI</a></li>
+<li><a href="#S184">?PR?SENSORPOWERON?SENSOR</a></li>
+<li><a href="#S178">?PR?SPI_TWRESET?SENSOR</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+</ul>
+
+<h2><a name="S4"></a>?PR?DPIWRITEINSENSOR?SYS (C:000AB9H - C:000B6FH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S178">?PR?SPI_TWRESET?SENSOR</a>) Top=8 Bytes (<a href="#S10">?PR?MOUSEDPIKEYCHECK?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S93">?PR?_SPI_WRITESENSOR?SPI</a></li>
+<li><a href="#S178">?PR?SPI_TWRESET?SENSOR</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+<li><a href="#S10">?PR?MOUSEDPIKEYCHECK?SYS</a></li>
+</ul>
+
+<h2><a name="S5"></a>?PR?MOUSELKEYCHECK?SYS (C:000FDDH - C:001028H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a>) Top=6 Bytes (<a href="#S16">?PR?MOUSEKEYDETECT?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S67">?PR?_GPIO_GETINPUTSTATUS?GPIO</a></li>
+<li><a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S16">?PR?MOUSEKEYDETECT?SYS</a></li>
+</ul>
+
+<h2><a name="S6"></a>?PR?MOUSEMKEYCHECK?SYS (C:001029H - C:001074H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a>) Top=6 Bytes (<a href="#S16">?PR?MOUSEKEYDETECT?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S67">?PR?_GPIO_GETINPUTSTATUS?GPIO</a></li>
+<li><a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S16">?PR?MOUSEKEYDETECT?SYS</a></li>
+</ul>
+
+<h2><a name="S7"></a>?PR?MOUSERKEYCHECK?SYS (C:0011C6H - C:001211H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a>) Top=6 Bytes (<a href="#S16">?PR?MOUSEKEYDETECT?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S67">?PR?_GPIO_GETINPUTSTATUS?GPIO</a></li>
+<li><a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S16">?PR?MOUSEKEYDETECT?SYS</a></li>
+</ul>
+
+<h2><a name="S8"></a>?PR?MOUSEBKKEYCHECK?SYS (C:0010F8H - C:00115EH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a>) Top=6 Bytes (<a href="#S16">?PR?MOUSEKEYDETECT?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S67">?PR?_GPIO_GETINPUTSTATUS?GPIO</a></li>
+<li><a href="#S76">?PR?_GPIO_SETINPUT?GPIO</a></li>
+<li><a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S16">?PR?MOUSEKEYDETECT?SYS</a></li>
+</ul>
+
+<h2><a name="S9"></a>?PR?MOUSEFWKEYCHECK?SYS (C:00115FH - C:0011C5H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a>) Top=6 Bytes (<a href="#S16">?PR?MOUSEKEYDETECT?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S67">?PR?_GPIO_GETINPUTSTATUS?GPIO</a></li>
+<li><a href="#S76">?PR?_GPIO_SETINPUT?GPIO</a></li>
+<li><a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S16">?PR?MOUSEKEYDETECT?SYS</a></li>
+</ul>
+
+<h2><a name="S10"></a>?PR?MOUSEDPIKEYCHECK?SYS (C:001212H - C:00126CH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=8 Bytes (<a href="#S101">?PR?_IIC_WRITEBLOCK?IIC</a>) Top=6 Bytes (<a href="#S16">?PR?MOUSEKEYDETECT?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S67">?PR?_GPIO_GETINPUTSTATUS?GPIO</a></li>
+<li><a href="#S101">?PR?_IIC_WRITEBLOCK?IIC</a></li>
+<li><a href="#S4">?PR?DPIWRITEINSENSOR?SYS</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S16">?PR?MOUSEKEYDETECT?SYS</a></li>
+</ul>
+
+<h2><a name="S11"></a>?PR?MOUSE_WHEEL_DELAY_LPM?SYS (C:0017A2H - C:0017B0H)</h2>
+<p><br><b>Maximum Stack:</b> Top=6 Bytes (<a href="#S12">?PR?MOUSEWHEELSCAN?SYS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S12">?PR?MOUSEWHEELSCAN?SYS</a></li>
+</ul>
+
+<h2><a name="S12"></a>?PR?MOUSEWHEELSCAN?SYS (C:0017B1H - C:001838H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S67">?PR?_GPIO_GETINPUTSTATUS?GPIO</a>) Top=4 Bytes (<a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S67">?PR?_GPIO_GETINPUTSTATUS?GPIO</a></li>
+<li><a href="#S11">?PR?MOUSE_WHEEL_DELAY_LPM?SYS</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a></li>
+<li><a href="#S46">?PR?YC_SYSMAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S14"></a>?PR?_IPC_TXHIDDATA?SYS (C:001839H - C:001887H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S112">?PR?_IPC_TX24GDATA?IPC</a>) Top=4 Bytes (<a href="#S21">?PR?MOUSEMOTION?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S112">?PR?_IPC_TX24GDATA?IPC</a></li>
+<li><a href="#S117">?PR?_IPC_TXBLEDATA?IPC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S21">?PR?MOUSEMOTION?SYS</a></li>
+</ul>
+
+<h2><a name="S16"></a>?PR?MOUSEKEYDETECT?SYS (C:001096H - C:0010F7H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=10 Bytes (<a href="#S10">?PR?MOUSEDPIKEYCHECK?SYS</a>) Top=4 Bytes (<a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S8">?PR?MOUSEBKKEYCHECK?SYS</a></li>
+<li><a href="#S10">?PR?MOUSEDPIKEYCHECK?SYS</a></li>
+<li><a href="#S9">?PR?MOUSEFWKEYCHECK?SYS</a></li>
+<li><a href="#S5">?PR?MOUSELKEYCHECK?SYS</a></li>
+<li><a href="#S6">?PR?MOUSEMKEYCHECK?SYS</a></li>
+<li><a href="#S7">?PR?MOUSERKEYCHECK?SYS</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a></li>
+<li><a href="#S46">?PR?YC_SYSMAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S18"></a>?PR?MOUSEREADSENSOR?SYS (C:000B84H - C:000CE2H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S178">?PR?SPI_TWRESET?SENSOR</a>) Top=4 Bytes (<a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S67">?PR?_GPIO_GETINPUTSTATUS?GPIO</a></li>
+<li><a href="#S92">?PR?_SPI_READSENSOR?SPI</a></li>
+<li><a href="#S186">?PR?DRAWING_OPTIMA?SENSOR</a></li>
+<li><a href="#S182">?PR?SENSOR_SPI_DISABLE?SENSOR</a></li>
+<li><a href="#S178">?PR?SPI_TWRESET?SENSOR</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S21">?PR?MOUSEMOTION?SYS</a></li>
+<li><a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a></li>
+</ul>
+
+<h2><a name="S20"></a>?PR?MOUSEPACKAGE?SYS (C:00175EH - C:0017A1H)</h2>
+<p><br><b>Maximum Stack:</b> Top=4 Bytes (<a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S21">?PR?MOUSEMOTION?SYS</a></li>
+<li><a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a></li>
+</ul>
+
+<h2><a name="S21"></a>?PR?MOUSEMOTION?SYS (C:001888H - C:0019E8H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S18">?PR?MOUSEREADSENSOR?SYS</a>) Top=2 Bytes (<a href="#S46">?PR?YC_SYSMAIN?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S14">?PR?_IPC_TXHIDDATA?SYS</a></li>
+<li><a href="#S122">?PR?IPC_ISTXBUFFEMPTY?IPC</a></li>
+<li><a href="#S20">?PR?MOUSEPACKAGE?SYS</a></li>
+<li><a href="#S18">?PR?MOUSEREADSENSOR?SYS</a></li>
+<li><a href="#S91">?PR?SPI_INITIALIZE?SPI</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S46">?PR?YC_SYSMAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S25"></a>?PR?DEVICESTOP24G?SYS (C:000F40H - C:000F49H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S108">?PR?_IPC_TXCONTROLCMD?IPC</a>) Top=4 Bytes (<a href="#S35">?PR?COMBOKEYPB?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S108">?PR?_IPC_TXCONTROLCMD?IPC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+<li><a href="#S35">?PR?COMBOKEYPB?SYS</a></li>
+</ul>
+
+<h2><a name="S26"></a>?PR?CLEARGLOBALMEM?SYS (C:001B43H - C:001B65H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S55">?PR?_XMEMCLEAR_0?UTILITIES</a>) Top=2 Bytes (<a href="#S33">?PR?_DEVICEEVTCB?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S55">?PR?_XMEMCLEAR_0?UTILITIES</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+</ul>
+
+<h2><a name="S27"></a>?PR?DEVICELONGSLEEP?SYS (C:0016EAH - C:001703H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S108">?PR?_IPC_TXCONTROLCMD?IPC</a>) Top=4 Bytes (<a href="#S39">?PR?POWER_LOW_DETECT?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S108">?PR?_IPC_TXCONTROLCMD?IPC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+<li><a href="#S41">?PR?DEVICETIMER100MS?SYS</a></li>
+<li><a href="#S37">?PR?DEVICETIMER500MS?SYS</a></li>
+<li><a href="#S39">?PR?POWER_LOW_DETECT?SYS</a></li>
+</ul>
+
+<h2><a name="S28"></a>?PR?DEVICELEDFLASH?SYS (C:001B92H - C:001C1FH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S68">?PR?_GPIO_SETOUT?GPIO</a>) Top=2 Bytes (<a href="#S41">?PR?DEVICETIMER100MS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S86">?PR?_GPIO_FLIPOUTBIT?GPIO</a></li>
+<li><a href="#S68">?PR?_GPIO_SETOUT?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S41">?PR?DEVICETIMER100MS?SYS</a></li>
+</ul>
+
+<h2><a name="S29"></a>?PR?LERECONNSTART?SYS (C:001458H - C:001478H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S97">?PR?_IIC_READ?IIC</a>) Top=2 Bytes (<a href="#S33">?PR?_DEVICEEVTCB?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S97">?PR?_IIC_READ?IIC</a></li>
+<li><a href="#S108">?PR?_IPC_TXCONTROLCMD?IPC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+</ul>
+
+<h2><a name="S30"></a>?PR?LEADVSTART?SYS (C:000E62H - C:000EA1H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=8 Bytes (<a href="#S101">?PR?_IIC_WRITEBLOCK?IIC</a>) Top=2 Bytes (<a href="#S33">?PR?_DEVICEEVTCB?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S97">?PR?_IIC_READ?IIC</a></li>
+<li><a href="#S101">?PR?_IIC_WRITEBLOCK?IIC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+<li><a href="#S35">?PR?COMBOKEYPB?SYS</a></li>
+</ul>
+
+<h2><a name="S31"></a>?PR?LEADDRRANDOMCNTINIT?SYS (C:00131CH - C:001367H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=8 Bytes (<a href="#S101">?PR?_IIC_WRITEBLOCK?IIC</a>) Top=2 Bytes (<a href="#S33">?PR?_DEVICEEVTCB?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S97">?PR?_IIC_READ?IIC</a></li>
+<li><a href="#S101">?PR?_IIC_WRITEBLOCK?IIC</a></li>
+<li><a href="#S143">?PR?ADC_GET0VBASE?ADC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+</ul>
+
+<h2><a name="S35"></a>?PR?COMBOKEYPB?SYS (C:000D91H - C:000E61H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=8 Bytes (<a href="#S30">?PR?LEADVSTART?SYS</a>) Top=2 Bytes (<a href="#S41">?PR?DEVICETIMER100MS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S59">?PR?_DELAY1MS?UTILITIES</a></li>
+<li><a href="#S67">?PR?_GPIO_GETINPUTSTATUS?GPIO</a></li>
+<li><a href="#S108">?PR?_IPC_TXCONTROLCMD?IPC</a></li>
+<li><a href="#S25">?PR?DEVICESTOP24G?SYS</a></li>
+<li><a href="#S30">?PR?LEADVSTART?SYS</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S41">?PR?DEVICETIMER100MS?SYS</a></li>
+</ul>
+
+<h2><a name="S39"></a>?PR?POWER_LOW_DETECT?SYS (C:0014F7H - C:0015A8H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S141">?PR?ADC_GETCURRENTVALUE?ADC</a>) Top=2 Bytes (<a href="#S41">?PR?DEVICETIMER100MS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S190">?C?LIB_CODE</a></li>
+<li><a href="#S143">?PR?ADC_GET0VBASE?ADC</a></li>
+<li><a href="#S142">?PR?ADC_GET3VBASE?ADC</a></li>
+<li><a href="#S141">?PR?ADC_GETCURRENTVALUE?ADC</a></li>
+<li><a href="#S27">?PR?DEVICELONGSLEEP?SYS</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S41">?PR?DEVICETIMER100MS?SYS</a></li>
+</ul>
+
+<h2><a name="S42"></a>?PR?DEVICEINIT?SYS (C:001C20H - C:001C25H)</h2>
+<p><br><b>Maximum Stack:</b> Top=2 Bytes (<a href="#S46">?PR?YC_SYSMAIN?SYS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S46">?PR?YC_SYSMAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S43"></a>?PR?YC_SETWAKE?SYS (C:000740H - C:000796H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a>) Top=4 Bytes (<a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S76">?PR?_GPIO_SETINPUT?GPIO</a></li>
+<li><a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+<li><a href="#S83">?PR?_GPIO_SETWAKEUPBYCURRENTSTATE?GPIO</a></li>
+<li><a href="#S182">?PR?SENSOR_SPI_DISABLE?SENSOR</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a></li>
+<li><a href="#S46">?PR?YC_SYSMAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S44"></a>?PR?YC_24GSHORTLPMPROCESS?SYS (C:0015DFH - C:0016D4H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=12 Bytes (<a href="#S16">?PR?MOUSEKEYDETECT?SYS</a>) Top=2 Bytes (<a href="#S46">?PR?YC_SYSMAIN?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S67">?PR?_GPIO_GETINPUTSTATUS?GPIO</a></li>
+<li><a href="#S80">?PR?_GPIO_SETWAKEUP?GPIO</a></li>
+<li><a href="#S121">?PR?IPC_ABANDONLPM?IPC</a></li>
+<li><a href="#S123">?PR?IPC_DEALSINGLESTEP?IPC</a></li>
+<li><a href="#S120">?PR?IPC_WAITLPM?IPC</a></li>
+<li><a href="#S16">?PR?MOUSEKEYDETECT?SYS</a></li>
+<li><a href="#S20">?PR?MOUSEPACKAGE?SYS</a></li>
+<li><a href="#S18">?PR?MOUSEREADSENSOR?SYS</a></li>
+<li><a href="#S12">?PR?MOUSEWHEELSCAN?SYS</a></li>
+<li><a href="#S91">?PR?SPI_INITIALIZE?SPI</a></li>
+<li><a href="#S43">?PR?YC_SETWAKE?SYS</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S46">?PR?YC_SYSMAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S51"></a>?PR?_XMEMCPY?UTILITIES (C:001415H - C:001457H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S190">?C?LIB_CODE</a>) Top=12 Bytes (<a href="#S99">?PR?_IIC_WRITE?IIC</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S190">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S99">?PR?_IIC_WRITE?IIC</a></li>
+<li><a href="#S112">?PR?_IPC_TX24GDATA?IPC</a></li>
+<li><a href="#S117">?PR?_IPC_TXBLEDATA?IPC</a></li>
+<li><a href="#S110">?PR?_IPC_TXBREDRHIDDATA?IPC</a></li>
+<li><a href="#S115">?PR?_IPC_TXSPPDATA?IPC</a></li>
+</ul>
+
+<h2><a name="S55"></a>?PR?_XMEMCLEAR_0?UTILITIES (C:001B66H - C:001B91H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S190">?C?LIB_CODE</a>) Top=4 Bytes (<a href="#S26">?PR?CLEARGLOBALMEM?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S190">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S26">?PR?CLEARGLOBALMEM?SYS</a></li>
+</ul>
+
+<h2><a name="S59"></a>?PR?_DELAY1MS?UTILITIES (C:0015B2H - C:0015D0H)</h2>
+<p><br><b>Maximum Stack:</b> Top=10 Bytes (<a href="#S101">?PR?_IIC_WRITEBLOCK?IIC</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+<li><a href="#S101">?PR?_IIC_WRITEBLOCK?IIC</a></li>
+<li><a href="#S35">?PR?COMBOKEYPB?SYS</a></li>
+<li><a href="#S120">?PR?IPC_WAITLPM?IPC</a></li>
+</ul>
+
+<h2><a name="S62"></a>?PR?_GPIOSETBIT?GPIO (C:0003C2H - C:00041EH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S190">?C?LIB_CODE</a>) Top=10 Bytes (<a href="#S68">?PR?_GPIO_SETOUT?GPIO</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S190">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S68">?PR?_GPIO_SETOUT?GPIO</a></li>
+<li><a href="#S72">?PR?_GPIO_SETPD?GPIO</a></li>
+<li><a href="#S70">?PR?_GPIO_SETPU?GPIO</a></li>
+</ul>
+
+<h2><a name="S65"></a>?PR?_GPIOGETBIT?GPIO (C:000D52H - C:000D90H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S190">?C?LIB_CODE</a>) Top=4 Bytes (<a href="#S86">?PR?_GPIO_FLIPOUTBIT?GPIO</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S190">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S86">?PR?_GPIO_FLIPOUTBIT?GPIO</a></li>
+</ul>
+
+<h2><a name="S67"></a>?PR?_GPIO_GETINPUTSTATUS?GPIO (C:000D4CH - C:000D51H)</h2>
+<p><br><b>Maximum Stack:</b> Top=9 Bytes (<a href="#S5">?PR?MOUSELKEYCHECK?SYS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+<li><a href="#S83">?PR?_GPIO_SETWAKEUPBYCURRENTSTATE?GPIO</a></li>
+<li><a href="#S35">?PR?COMBOKEYPB?SYS</a></li>
+<li><a href="#S8">?PR?MOUSEBKKEYCHECK?SYS</a></li>
+<li><a href="#S10">?PR?MOUSEDPIKEYCHECK?SYS</a></li>
+<li><a href="#S9">?PR?MOUSEFWKEYCHECK?SYS</a></li>
+<li><a href="#S5">?PR?MOUSELKEYCHECK?SYS</a></li>
+<li><a href="#S6">?PR?MOUSEMKEYCHECK?SYS</a></li>
+<li><a href="#S18">?PR?MOUSEREADSENSOR?SYS</a></li>
+<li><a href="#S7">?PR?MOUSERKEYCHECK?SYS</a></li>
+<li><a href="#S12">?PR?MOUSEWHEELSCAN?SYS</a></li>
+<li><a href="#S3">?PR?SENSORCLEARDATA?SYS</a></li>
+<li><a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a></li>
+<li><a href="#S46">?PR?YC_SYSMAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S68"></a>?PR?_GPIO_SETOUT?GPIO (C:000F86H - C:000F92H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S62">?PR?_GPIOSETBIT?GPIO</a>) Top=10 Bytes (<a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S62">?PR?_GPIOSETBIT?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+<li><a href="#S28">?PR?DEVICELEDFLASH?SYS</a></li>
+</ul>
+
+<h2><a name="S70"></a>?PR?_GPIO_SETPU?GPIO (C:001089H - C:001095H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S62">?PR?_GPIOSETBIT?GPIO</a>) Top=10 Bytes (<a href="#S76">?PR?_GPIO_SETINPUT?GPIO</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S62">?PR?_GPIOSETBIT?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S76">?PR?_GPIO_SETINPUT?GPIO</a></li>
+</ul>
+
+<h2><a name="S72"></a>?PR?_GPIO_SETPD?GPIO (C:001CF5H - C:001D01H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S62">?PR?_GPIOSETBIT?GPIO</a>) Top=10 Bytes (<a href="#S76">?PR?_GPIO_SETINPUT?GPIO</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S62">?PR?_GPIOSETBIT?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S76">?PR?_GPIO_SETINPUT?GPIO</a></li>
+</ul>
+
+<h2><a name="S74"></a>?PR?_GPIO_SETOE?GPIO (C:0003B8H - C:0003C1H)</h2>
+<p><br><b>Maximum Stack:</b> Top=10 Bytes (<a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S78">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+</ul>
+
+<h2><a name="S76"></a>?PR?_GPIO_SETINPUT?GPIO (C:0003A1H - C:0003B7H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S72">?PR?_GPIO_SETPD?GPIO</a>) Top=8 Bytes (<a href="#S8">?PR?MOUSEBKKEYCHECK?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S72">?PR?_GPIO_SETPD?GPIO</a></li>
+<li><a href="#S70">?PR?_GPIO_SETPU?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+<li><a href="#S8">?PR?MOUSEBKKEYCHECK?SYS</a></li>
+<li><a href="#S9">?PR?MOUSEFWKEYCHECK?SYS</a></li>
+<li><a href="#S183">?PR?SENSORPOWERDOWN?SENSOR</a></li>
+<li><a href="#S43">?PR?YC_SETWAKE?SYS</a></li>
+<li><a href="#S46">?PR?YC_SYSMAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S78"></a>?PR?_GPIO_SETOUTPUT?GPIO (C:001075H - C:001088H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S68">?PR?_GPIO_SETOUT?GPIO</a>) Top=8 Bytes (<a href="#S5">?PR?MOUSELKEYCHECK?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S74">?PR?_GPIO_SETOE?GPIO</a></li>
+<li><a href="#S68">?PR?_GPIO_SETOUT?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+<li><a href="#S8">?PR?MOUSEBKKEYCHECK?SYS</a></li>
+<li><a href="#S9">?PR?MOUSEFWKEYCHECK?SYS</a></li>
+<li><a href="#S5">?PR?MOUSELKEYCHECK?SYS</a></li>
+<li><a href="#S6">?PR?MOUSEMKEYCHECK?SYS</a></li>
+<li><a href="#S7">?PR?MOUSERKEYCHECK?SYS</a></li>
+<li><a href="#S43">?PR?YC_SETWAKE?SYS</a></li>
+<li><a href="#S46">?PR?YC_SYSMAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S80"></a>?PR?_GPIO_SETWAKEUP?GPIO (C:0007ABH - C:000830H)</h2>
+<p><br><b>Maximum Stack:</b> Top=4 Bytes (<a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a></li>
+<li><a href="#S46">?PR?YC_SYSMAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S83"></a>?PR?_GPIO_SETWAKEUPBYCURRENTSTATE?GPIO (C:000797H - C:0007AAH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S67">?PR?_GPIO_GETINPUTSTATUS?GPIO</a>) Top=6 Bytes (<a href="#S43">?PR?YC_SETWAKE?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S67">?PR?_GPIO_GETINPUTSTATUS?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S43">?PR?YC_SETWAKE?SYS</a></li>
+</ul>
+
+<h2><a name="S86"></a>?PR?_GPIO_FLIPOUTBIT?GPIO (C:000F6DH - C:000F85H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S65">?PR?_GPIOGETBIT?GPIO</a>) Top=2 Bytes (<a href="#S28">?PR?DEVICELEDFLASH?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S65">?PR?_GPIOGETBIT?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S28">?PR?DEVICELEDFLASH?SYS</a></li>
+</ul>
+
+<h2><a name="S91"></a>?PR?SPI_INITIALIZE?SPI (C:00173AH - C:00175DH)</h2>
+<p><br><b>Maximum Stack:</b> Top=12 Bytes (<a href="#S178">?PR?SPI_TWRESET?SENSOR</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+<li><a href="#S21">?PR?MOUSEMOTION?SYS</a></li>
+<li><a href="#S178">?PR?SPI_TWRESET?SENSOR</a></li>
+<li><a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a></li>
+</ul>
+
+<h2><a name="S92"></a>?PR?_SPI_READSENSOR?SPI (C:00084AH - C:000872H)</h2>
+<p><br><b>Maximum Stack:</b> Top=12 Bytes (<a href="#S178">?PR?SPI_TWRESET?SENSOR</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S18">?PR?MOUSEREADSENSOR?SYS</a></li>
+<li><a href="#S3">?PR?SENSORCLEARDATA?SYS</a></li>
+<li><a href="#S183">?PR?SENSORPOWERDOWN?SENSOR</a></li>
+<li><a href="#S184">?PR?SENSORPOWERON?SENSOR</a></li>
+<li><a href="#S180">?PR?SPI_RESETSENSOR?SENSOR</a></li>
+<li><a href="#S178">?PR?SPI_TWRESET?SENSOR</a></li>
+</ul>
+
+<h2><a name="S93"></a>?PR?_SPI_WRITESENSOR?SPI (C:000A8EH - C:000AB8H)</h2>
+<p><br><b>Maximum Stack:</b> Top=10 Bytes (<a href="#S4">?PR?DPIWRITEINSENSOR?SYS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+<li><a href="#S4">?PR?DPIWRITEINSENSOR?SYS</a></li>
+<li><a href="#S183">?PR?SENSORPOWERDOWN?SENSOR</a></li>
+<li><a href="#S184">?PR?SENSORPOWERON?SENSOR</a></li>
+<li><a href="#S180">?PR?SPI_RESETSENSOR?SENSOR</a></li>
+</ul>
+
+<h2><a name="S96"></a>?PR?IICWAITDONE?IIC (C:0014E6H - C:0014EDH)</h2>
+<p><br><b>Maximum Stack:</b> Top=6 Bytes (<a href="#S97">?PR?_IIC_READ?IIC</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S97">?PR?_IIC_READ?IIC</a></li>
+</ul>
+
+<h2><a name="S97"></a>?PR?_IIC_READ?IIC (C:001368H - C:001414H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S96">?PR?IICWAITDONE?IIC</a>) Top=4 Bytes (<a href="#S31">?PR?LEADDRRANDOMCNTINIT?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S96">?PR?IICWAITDONE?IIC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+<li><a href="#S24">?PR?DEVICESWITCH24GMODE?SYS</a></li>
+<li><a href="#S31">?PR?LEADDRRANDOMCNTINIT?SYS</a></li>
+<li><a href="#S30">?PR?LEADVSTART?SYS</a></li>
+<li><a href="#S29">?PR?LERECONNSTART?SYS</a></li>
+</ul>
+
+<h2><a name="S99"></a>?PR?_IIC_WRITE?IIC (C:001479H - C:0014E5H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S51">?PR?_XMEMCPY?UTILITIES</a>) Top=10 Bytes (<a href="#S101">?PR?_IIC_WRITEBLOCK?IIC</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S51">?PR?_XMEMCPY?UTILITIES</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S101">?PR?_IIC_WRITEBLOCK?IIC</a></li>
+</ul>
+
+<h2><a name="S101"></a>?PR?_IIC_WRITEBLOCK?IIC (C:00126DH - C:00131BH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S99">?PR?_IIC_WRITE?IIC</a>) Top=8 Bytes (<a href="#S10">?PR?MOUSEDPIKEYCHECK?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S190">?C?LIB_CODE</a></li>
+<li><a href="#S59">?PR?_DELAY1MS?UTILITIES</a></li>
+<li><a href="#S99">?PR?_IIC_WRITE?IIC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+<li><a href="#S31">?PR?LEADDRRANDOMCNTINIT?SYS</a></li>
+<li><a href="#S30">?PR?LEADVSTART?SYS</a></li>
+<li><a href="#S10">?PR?MOUSEDPIKEYCHECK?SYS</a></li>
+</ul>
+
+<h2><a name="S104"></a>?PR?_IPCRX?IPC (C:001D3DH - C:001D97H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S190">?C?LIB_CODE</a>) Top=6 Bytes (<a href="#S123">?PR?IPC_DEALSINGLESTEP?IPC</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S190">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S123">?PR?IPC_DEALSINGLESTEP?IPC</a></li>
+</ul>
+
+<h2><a name="S106"></a>?PR?_IPCTX?IPC (C:000ECAH - C:000F3FH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S190">?C?LIB_CODE</a>) Top=4 Bytes (<a href="#S112">?PR?_IPC_TX24GDATA?IPC</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S190">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S112">?PR?_IPC_TX24GDATA?IPC</a></li>
+<li><a href="#S117">?PR?_IPC_TXBLEDATA?IPC</a></li>
+<li><a href="#S110">?PR?_IPC_TXBREDRHIDDATA?IPC</a></li>
+<li><a href="#S115">?PR?_IPC_TXSPPDATA?IPC</a></li>
+</ul>
+
+<h2><a name="S108"></a>?PR?_IPC_TXCONTROLCMD?IPC (C:000EA2H - C:000EC9H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S190">?C?LIB_CODE</a>) Top=6 Bytes (<a href="#S25">?PR?DEVICESTOP24G?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S190">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+<li><a href="#S35">?PR?COMBOKEYPB?SYS</a></li>
+<li><a href="#S27">?PR?DEVICELONGSLEEP?SYS</a></li>
+<li><a href="#S25">?PR?DEVICESTOP24G?SYS</a></li>
+<li><a href="#S24">?PR?DEVICESWITCH24GMODE?SYS</a></li>
+<li><a href="#S37">?PR?DEVICETIMER500MS?SYS</a></li>
+<li><a href="#S29">?PR?LERECONNSTART?SYS</a></li>
+</ul>
+
+<h2><a name="S112"></a>?PR?_IPC_TX24GDATA?IPC (C:001A01H - C:001A44H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S51">?PR?_XMEMCPY?UTILITIES</a>) Top=4 Bytes (<a href="#S14">?PR?_IPC_TXHIDDATA?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S106">?PR?_IPCTX?IPC</a></li>
+<li><a href="#S51">?PR?_XMEMCPY?UTILITIES</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S14">?PR?_IPC_TXHIDDATA?SYS</a></li>
+</ul>
+
+<h2><a name="S117"></a>?PR?_IPC_TXBLEDATA?IPC (C:001A45H - C:001A88H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S51">?PR?_XMEMCPY?UTILITIES</a>) Top=4 Bytes (<a href="#S14">?PR?_IPC_TXHIDDATA?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S106">?PR?_IPCTX?IPC</a></li>
+<li><a href="#S51">?PR?_XMEMCPY?UTILITIES</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S14">?PR?_IPC_TXHIDDATA?SYS</a></li>
+</ul>
+
+<h2><a name="S120"></a>?PR?IPC_WAITLPM?IPC (C:0015D1H - C:0015DEH)</h2>
+<p><br><b>Maximum Stack:</b> Top=2 Bytes (<a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S59">?PR?_DELAY1MS?UTILITIES</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a></li>
+<li><a href="#S46">?PR?YC_SYSMAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S121"></a>?PR?IPC_ABANDONLPM?IPC (C:0016D5H - C:0016E0H)</h2>
+<p><br><b>Maximum Stack:</b> Top=2 Bytes (<a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a></li>
+<li><a href="#S46">?PR?YC_SYSMAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S122"></a>?PR?IPC_ISTXBUFFEMPTY?IPC (C:0019E9H - C:001A00H)</h2>
+<p><br><b>Maximum Stack:</b> Top=4 Bytes (<a href="#S21">?PR?MOUSEMOTION?SYS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S37">?PR?DEVICETIMER500MS?SYS</a></li>
+<li><a href="#S21">?PR?MOUSEMOTION?SYS</a></li>
+</ul>
+
+<h2><a name="S123"></a>?PR?IPC_DEALSINGLESTEP?IPC (C:001D98H - C:001FA7H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S104">?PR?_IPCRX?IPC</a>) Top=4 Bytes (<a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S190">?C?LIB_CODE</a></li>
+<li><a href="#S104">?PR?_IPCRX?IPC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S44">?PR?YC_24GSHORTLPMPROCESS?SYS</a></li>
+<li><a href="#S46">?PR?YC_SYSMAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S141"></a>?PR?ADC_GETCURRENTVALUE?ADC (C:0016E1H - C:0016E9H)</h2>
+<p><br><b>Maximum Stack:</b> Top=6 Bytes (<a href="#S39">?PR?POWER_LOW_DETECT?SYS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S39">?PR?POWER_LOW_DETECT?SYS</a></li>
+</ul>
+
+<h2><a name="S142"></a>?PR?ADC_GET3VBASE?ADC (C:0015A9H - C:0015B1H)</h2>
+<p><br><b>Maximum Stack:</b> Top=6 Bytes (<a href="#S39">?PR?POWER_LOW_DETECT?SYS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S39">?PR?POWER_LOW_DETECT?SYS</a></li>
+</ul>
+
+<h2><a name="S143"></a>?PR?ADC_GET0VBASE?ADC (C:0014EEH - C:0014F6H)</h2>
+<p><br><b>Maximum Stack:</b> Top=4 Bytes (<a href="#S31">?PR?LEADDRRANDOMCNTINIT?SYS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S31">?PR?LEADDRRANDOMCNTINIT?SYS</a></li>
+<li><a href="#S39">?PR?POWER_LOW_DETECT?SYS</a></li>
+</ul>
+
+<h2><a name="S178"></a>?PR?SPI_TWRESET?SENSOR (C:000CF9H - C:000D4BH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S91">?PR?SPI_INITIALIZE?SPI</a>) Top=10 Bytes (<a href="#S4">?PR?DPIWRITEINSENSOR?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S92">?PR?_SPI_READSENSOR?SPI</a></li>
+<li><a href="#S91">?PR?SPI_INITIALIZE?SPI</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+<li><a href="#S4">?PR?DPIWRITEINSENSOR?SYS</a></li>
+<li><a href="#S18">?PR?MOUSEREADSENSOR?SYS</a></li>
+<li><a href="#S3">?PR?SENSORCLEARDATA?SYS</a></li>
+<li><a href="#S183">?PR?SENSORPOWERDOWN?SENSOR</a></li>
+<li><a href="#S184">?PR?SENSORPOWERON?SENSOR</a></li>
+<li><a href="#S180">?PR?SPI_RESETSENSOR?SENSOR</a></li>
+</ul>
+
+<h2><a name="S180"></a>?PR?SPI_RESETSENSOR?SENSOR (C:000873H - C:000A8DH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S178">?PR?SPI_TWRESET?SENSOR</a>) Top=2 Bytes (<a href="#S33">?PR?_DEVICEEVTCB?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S92">?PR?_SPI_READSENSOR?SPI</a></li>
+<li><a href="#S93">?PR?_SPI_WRITESENSOR?SPI</a></li>
+<li><a href="#S178">?PR?SPI_TWRESET?SENSOR</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+</ul>
+
+<h2><a name="S182"></a>?PR?SENSOR_SPI_DISABLE?SENSOR (C:000B70H - C:000B83H)</h2>
+<p><br><b>Maximum Stack:</b> Top=6 Bytes (<a href="#S18">?PR?MOUSEREADSENSOR?SYS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S18">?PR?MOUSEREADSENSOR?SYS</a></li>
+<li><a href="#S184">?PR?SENSORPOWERON?SENSOR</a></li>
+<li><a href="#S43">?PR?YC_SETWAKE?SYS</a></li>
+</ul>
+
+<h2><a name="S183"></a>?PR?SENSORPOWERDOWN?SENSOR (C:000F4AH - C:000F6CH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S76">?PR?_GPIO_SETINPUT?GPIO</a>) Top=2 Bytes (<a href="#S46">?PR?YC_SYSMAIN?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S76">?PR?_GPIO_SETINPUT?GPIO</a></li>
+<li><a href="#S92">?PR?_SPI_READSENSOR?SPI</a></li>
+<li><a href="#S93">?PR?_SPI_WRITESENSOR?SPI</a></li>
+<li><a href="#S178">?PR?SPI_TWRESET?SENSOR</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S46">?PR?YC_SYSMAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S184"></a>?PR?SENSORPOWERON?SENSOR (C:000CE3H - C:000CF8H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S178">?PR?SPI_TWRESET?SENSOR</a>) Top=4 Bytes (<a href="#S3">?PR?SENSORCLEARDATA?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S92">?PR?_SPI_READSENSOR?SPI</a></li>
+<li><a href="#S93">?PR?_SPI_WRITESENSOR?SPI</a></li>
+<li><a href="#S182">?PR?SENSOR_SPI_DISABLE?SENSOR</a></li>
+<li><a href="#S178">?PR?SPI_TWRESET?SENSOR</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S3">?PR?SENSORCLEARDATA?SYS</a></li>
+</ul>
+
+<h2><a name="S185"></a>?PR?_ABS?SENSOR (C:00203DH - C:00204FH)</h2>
+<p><br><b>Maximum Stack:</b> Top=8 Bytes (<a href="#S186">?PR?DRAWING_OPTIMA?SENSOR</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S186">?PR?DRAWING_OPTIMA?SENSOR</a></li>
+</ul>
+
+<h2><a name="S186"></a>?PR?DRAWING_OPTIMA?SENSOR (C:002050H - C:002151H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S185">?PR?_ABS?SENSOR</a>) Top=6 Bytes (<a href="#S18">?PR?MOUSEREADSENSOR?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S190">?C?LIB_CODE</a></li>
+<li><a href="#S185">?PR?_ABS?SENSOR</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S18">?PR?MOUSEREADSENSOR?SYS</a></li>
+</ul>
+
+<h2><a name="S187"></a>?PR?DRAWING_OPTIMA_INIT?SENSOR (C:002152H - C:002173H)</h2>
+<p><br><b>Maximum Stack:</b> Top=2 Bytes (<a href="#S33">?PR?_DEVICEEVTCB?SYS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+</ul>
+
+<h2><a name="S190"></a>?C?LIB_CODE (C:000003H - C:000245H)</h2>
+<p><br><b>Maximum Stack:</b> Top=14 Bytes (<a href="#S51">?PR?_XMEMCPY?UTILITIES</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S60">?PR?_COMPARE_STR?UTILITIES</a></li>
+<li><a href="#S33">?PR?_DEVICEEVTCB?SYS</a></li>
+<li><a href="#S53">?PR?_DMEMCPY?UTILITIES</a></li>
+<li><a href="#S65">?PR?_GPIOGETBIT?GPIO</a></li>
+<li><a href="#S62">?PR?_GPIOSETBIT?GPIO</a></li>
+<li><a href="#S101">?PR?_IIC_WRITEBLOCK?IIC</a></li>
+<li><a href="#S119">?PR?_IPC_INITIALIZE?IPC</a></li>
+<li><a href="#S108">?PR?_IPC_TXCONTROLCMD?IPC</a></li>
+<li><a href="#S104">?PR?_IPCRX?IPC</a></li>
+<li><a href="#S106">?PR?_IPCTX?IPC</a></li>
+<li><a href="#S55">?PR?_XMEMCLEAR_0?UTILITIES</a></li>
+<li><a href="#S57">?PR?_XMEMCLEAR_FF?UTILITIES</a></li>
+<li><a href="#S51">?PR?_XMEMCPY?UTILITIES</a></li>
+<li><a href="#S186">?PR?DRAWING_OPTIMA?SENSOR</a></li>
+<li><a href="#S123">?PR?IPC_DEALSINGLESTEP?IPC</a></li>
+<li><a href="#S39">?PR?POWER_LOW_DETECT?SYS</a></li>
+</ul>
+
+</body>
+</html>
Index: Standard_mouse/c51/output/FW.MAP
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/FW.MAP	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/FW.MAP	(working copy)
@@ -0,0 +1,2434 @@
+LX51 LINKER/LOCATER V4.41                                                               10/28/2019  17:53:39  PAGE 1
+
+
+LX51 LINKER/LOCATER V4.41, INVOKED BY:
+C:\KEIL\C51\BIN\LX51.EXE OUTPUT/RAM.OBJ, OUTPUT/SYS.OBJ, OUTPUT/UTILITIES.OBJ, OUTPUT/GPIO.OBJ, OUTPUT/SPI.OBJ, OUTPUT/I
+>> IC.OBJ, OUTPUT/IPC.OBJ, OUTPUT/ADC.OBJ, OUTPUT/GLOBAL_VARIABLE.OBJ, OUTPUT/SENSOR.OBJ TO OUTPUT\FW CLASSES (XDATA (X:
+>> 0X1A00-X:0X1DFF), CODE (C:0-C:0XFFFF), DATA (D:0X10-0X7F), IDATA (I:0X80-0XCF)) SEGMENTS (?STACK (D:0XD0)) NOOVERLAY 
+>> PAGELENGTH (60000) CODE
+
+
+CPU MODE:     8051 MODE
+MEMORY MODEL: LARGE
+
+
+INPUT MODULES INCLUDED:
+  OUTPUT/RAM.OBJ (RAM)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/SYS.OBJ (SYS)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/UTILITIES.OBJ (UTILITIES)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/GPIO.OBJ (GPIO)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/SPI.OBJ (SPI)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/IIC.OBJ (IIC)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/IPC.OBJ (IPC)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/ADC.OBJ (ADC)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/GLOBAL_VARIABLE.OBJ (GLOBAL_VARIABLE)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/SENSOR.OBJ (SENSOR)
+         COMMENT TYPE 0: C51 V9.00
+  C:\KEIL\C51\LIB\C51L.LIB (?C_STARTUP)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\KEIL\C51\LIB\C51L.LIB (?C?COPY)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\KEIL\C51\LIB\C51L.LIB (?C?CLDPTR)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\KEIL\C51\LIB\C51L.LIB (?C?CLDOPTR)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\KEIL\C51\LIB\C51L.LIB (?C?CSTPTR)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\KEIL\C51\LIB\C51L.LIB (?C?IMUL)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\KEIL\C51\LIB\C51L.LIB (?C?UIDIV)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\KEIL\C51\LIB\C51L.LIB (?C?SIDIV)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\KEIL\C51\LIB\C51L.LIB (?C?IILDX)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\KEIL\C51\LIB\C51L.LIB (?C?ILDIX)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\KEIL\C51\LIB\C51L.LIB (?C?CCASE)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\KEIL\C51\LIB\C51L.LIB (?C?ICALL)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  C:\KEIL\C51\LIB\C51L.LIB (?C_INIT)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+
+
+ACTIVE MEMORY CLASSES OF MODULE:  OUTPUT\FW (RAM)
+
+BASE        START       END         USED      MEMORY CLASS
+==========================================================
+X:000000H   X:001A00H   X:001DFFH   00035AH   XDATA
+C:000000H   C:000000H   C:00FFFFH   00216BH   CODE
+I:000000H   I:000010H   I:00007FH   000008H   DATA
+I:000000H   I:000080H   I:0000CFH   000001H   IDATA
+I:000020H.0 I:000020H.0 I:00002FH.7 000001H.3 BIT
+C:000000H   C:000000H   C:00FFFFH   000009H   CONST
+
+
+MEMORY MAP OF MODULE:  OUTPUT\FW (RAM)
+
+
+START     STOP      LENGTH    ALIGN  RELOC    MEMORY CLASS   SEGMENT NAME
+=========================================================================
+
+* * * * * * * * * * *   D A T A   M E M O R Y   * * * * * * * * * * * * *
+000000H   000007H   000008H   ---    AT..     DATA           "REG BANK 0"
+000008H.0 00001FH.7 000018H.0 ---    ---      **GAP**
+000020H.0 000020H.0 000000H.1 BIT    UNIT     BIT            ?BI?MOUSEMOTION?SYS
+000020H.1 000020H.1 000000H.1 BIT    UNIT     BIT            ?BI?_GPIOSETBIT?GPIO
+000020H.2 000020H.2 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_SETOUT?GPIO
+000020H.3 000020H.3 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_SETPU?GPIO
+000020H.4 000020H.4 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_SETPD?GPIO
+000020H.5 000020H.5 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_SETOE?GPIO
+000020H.6 000020H.6 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_SETINPUT?GPIO
+000020H.7 000020H.7 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_SETOUTPUT?GPIO
+000021H.0 000021H.0 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_SETWAKEUP?GPIO
+000021H.1 000021H.1 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_SETWAKEUPBYCURRENTSTATE?GPIO
+000021H.2 000021H.2 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_FLIPOUTBIT?GPIO
+000021H.3 0000CFH   0000AEH.5 ---    ---      **GAP**
+0000D0H   0000D0H   000001H   BYTE   UNIT     IDATA          ?STACK
+
+* * * * * * * * * * *   C O D E   M E M O R Y   * * * * * * * * * * * * *
+000000H   000002H   000003H   ---    OFFS..   CODE           ?CO??C_STARTUP?0
+000003H   000245H   000243H   BYTE   UNIT     CODE           ?C?LIB_CODE
+000246H   0002D1H   00008CH   BYTE   UNIT     CODE           ?C_C51STARTUP
+0002D2H   0002E7H   000016H   BYTE   UNIT     CODE           ?C_INITSEG
+0002E8H   0002EDH   000006H   BYTE   UNIT     CONST          ?CO?SYS
+0002EEH   0002F0H   000003H   BYTE   UNIT     CONST          ?CO?IPC
+0002F1H   ---       000000H   BYTE   UNIT     CODE           ?PR?MAIN?RAM
+0002F1H   0003A0H   0000B0H   BYTE   UNIT     CODE           ?PR?YC_SYSMAIN?SYS
+0003A1H   0003B7H   000017H   BYTE   UNIT     CODE           ?PR?_GPIO_SETINPUT?GPIO
+0003B8H   0003C1H   00000AH   BYTE   UNIT     CODE           ?PR?_GPIO_SETOE?GPIO
+0003C2H   00041EH   00005DH   BYTE   UNIT     CODE           ?PR?_GPIOSETBIT?GPIO
+00041FH   00073FH   000321H   BYTE   UNIT     CODE           ?PR?_DEVICEEVTCB?SYS
+000740H   000796H   000057H   BYTE   UNIT     CODE           ?PR?YC_SETWAKE?SYS
+000797H   0007AAH   000014H   BYTE   UNIT     CODE           ?PR?_GPIO_SETWAKEUPBYCURRENTSTATE?GPIO
+0007ABH   000830H   000086H   BYTE   UNIT     CODE           ?PR?_GPIO_SETWAKEUP?GPIO
+000831H   000849H   000019H   BYTE   UNIT     CODE           ?PR?SENSORCLEARDATA?SYS
+00084AH   000872H   000029H   BYTE   UNIT     CODE           ?PR?_SPI_READSENSOR?SPI
+000873H   000A8DH   00021BH   BYTE   UNIT     CODE           ?PR?SPI_RESETSENSOR?SENSOR
+000A8EH   000AB8H   00002BH   BYTE   UNIT     CODE           ?PR?_SPI_WRITESENSOR?SPI
+000AB9H   000B6FH   0000B7H   BYTE   UNIT     CODE           ?PR?DPIWRITEINSENSOR?SYS
+000B70H   000B83H   000014H   BYTE   UNIT     CODE           ?PR?SENSOR_SPI_DISABLE?SENSOR
+000B84H   000CE2H   00015FH   BYTE   UNIT     CODE           ?PR?MOUSEREADSENSOR?SYS
+000CE3H   000CF8H   000016H   BYTE   UNIT     CODE           ?PR?SENSORPOWERON?SENSOR
+000CF9H   000D4BH   000053H   BYTE   UNIT     CODE           ?PR?SPI_TWRESET?SENSOR
+000D4CH   000D51H   000006H   BYTE   UNIT     CODE           ?PR?_GPIO_GETINPUTSTATUS?GPIO
+000D52H   000D90H   00003FH   BYTE   UNIT     CODE           ?PR?_GPIOGETBIT?GPIO
+000D91H   000E61H   0000D1H   BYTE   UNIT     CODE           ?PR?COMBOKEYPB?SYS
+000E62H   000EA1H   000040H   BYTE   UNIT     CODE           ?PR?LEADVSTART?SYS
+000EA2H   000EC9H   000028H   BYTE   UNIT     CODE           ?PR?_IPC_TXCONTROLCMD?IPC
+000ECAH   000F3FH   000076H   BYTE   UNIT     CODE           ?PR?_IPCTX?IPC
+000F40H   000F49H   00000AH   BYTE   UNIT     CODE           ?PR?DEVICESTOP24G?SYS
+000F4AH   000F6CH   000023H   BYTE   UNIT     CODE           ?PR?SENSORPOWERDOWN?SENSOR
+000F6DH   000F85H   000019H   BYTE   UNIT     CODE           ?PR?_GPIO_FLIPOUTBIT?GPIO
+000F86H   000F92H   00000DH   BYTE   UNIT     CODE           ?PR?_GPIO_SETOUT?GPIO
+000F93H   000FDCH   00004AH   BYTE   UNIT     CODE           ?PR?DEVICESWITCH24GMODE?SYS
+000FDDH   001028H   00004CH   BYTE   UNIT     CODE           ?PR?MOUSELKEYCHECK?SYS
+001029H   001074H   00004CH   BYTE   UNIT     CODE           ?PR?MOUSEMKEYCHECK?SYS
+001075H   001088H   000014H   BYTE   UNIT     CODE           ?PR?_GPIO_SETOUTPUT?GPIO
+001089H   001095H   00000DH   BYTE   UNIT     CODE           ?PR?_GPIO_SETPU?GPIO
+001096H   0010F7H   000062H   BYTE   UNIT     CODE           ?PR?MOUSEKEYDETECT?SYS
+0010F8H   00115EH   000067H   BYTE   UNIT     CODE           ?PR?MOUSEBKKEYCHECK?SYS
+00115FH   0011C5H   000067H   BYTE   UNIT     CODE           ?PR?MOUSEFWKEYCHECK?SYS
+0011C6H   001211H   00004CH   BYTE   UNIT     CODE           ?PR?MOUSERKEYCHECK?SYS
+001212H   00126CH   00005BH   BYTE   UNIT     CODE           ?PR?MOUSEDPIKEYCHECK?SYS
+00126DH   00131BH   0000AFH   BYTE   UNIT     CODE           ?PR?_IIC_WRITEBLOCK?IIC
+00131CH   001367H   00004CH   BYTE   UNIT     CODE           ?PR?LEADDRRANDOMCNTINIT?SYS
+001368H   001414H   0000ADH   BYTE   UNIT     CODE           ?PR?_IIC_READ?IIC
+001415H   001457H   000043H   BYTE   UNIT     CODE           ?PR?_XMEMCPY?UTILITIES
+001458H   001478H   000021H   BYTE   UNIT     CODE           ?PR?LERECONNSTART?SYS
+001479H   0014E5H   00006DH   BYTE   UNIT     CODE           ?PR?_IIC_WRITE?IIC
+0014E6H   0014EDH   000008H   BYTE   UNIT     CODE           ?PR?IICWAITDONE?IIC
+0014EEH   0014F6H   000009H   BYTE   UNIT     CODE           ?PR?ADC_GET0VBASE?ADC
+0014F7H   0015A8H   0000B2H   BYTE   UNIT     CODE           ?PR?POWER_LOW_DETECT?SYS
+0015A9H   0015B1H   000009H   BYTE   UNIT     CODE           ?PR?ADC_GET3VBASE?ADC
+0015B2H   0015D0H   00001FH   BYTE   UNIT     CODE           ?PR?_DELAY1MS?UTILITIES
+0015D1H   0015DEH   00000EH   BYTE   UNIT     CODE           ?PR?IPC_WAITLPM?IPC
+0015DFH   0016D4H   0000F6H   BYTE   UNIT     CODE           ?PR?YC_24GSHORTLPMPROCESS?SYS
+0016D5H   0016E0H   00000CH   BYTE   UNIT     CODE           ?PR?IPC_ABANDONLPM?IPC
+0016E1H   0016E9H   000009H   BYTE   UNIT     CODE           ?PR?ADC_GETCURRENTVALUE?ADC
+0016EAH   001703H   00001AH   BYTE   UNIT     CODE           ?PR?DEVICELONGSLEEP?SYS
+001704H   001739H   000036H   BYTE   UNIT     CODE           ?PR?DEVICETIMER100MS?SYS
+00173AH   00175DH   000024H   BYTE   UNIT     CODE           ?PR?SPI_INITIALIZE?SPI
+00175EH   0017A1H   000044H   BYTE   UNIT     CODE           ?PR?MOUSEPACKAGE?SYS
+0017A2H   0017B0H   00000FH   BYTE   UNIT     CODE           ?PR?MOUSE_WHEEL_DELAY_LPM?SYS
+0017B1H   001838H   000088H   BYTE   UNIT     CODE           ?PR?MOUSEWHEELSCAN?SYS
+001839H   001887H   00004FH   BYTE   UNIT     CODE           ?PR?_IPC_TXHIDDATA?SYS
+001888H   0019E8H   000161H   BYTE   UNIT     CODE           ?PR?MOUSEMOTION?SYS
+0019E9H   001A00H   000018H   BYTE   UNIT     CODE           ?PR?IPC_ISTXBUFFEMPTY?IPC
+001A01H   001A44H   000044H   BYTE   UNIT     CODE           ?PR?_IPC_TX24GDATA?IPC
+001A45H   001A88H   000044H   BYTE   UNIT     CODE           ?PR?_IPC_TXBLEDATA?IPC
+001A89H   001B42H   0000BAH   BYTE   UNIT     CODE           ?PR?DEVICETIMER500MS?SYS
+001B43H   001B65H   000023H   BYTE   UNIT     CODE           ?PR?CLEARGLOBALMEM?SYS
+001B66H   001B91H   00002CH   BYTE   UNIT     CODE           ?PR?_XMEMCLEAR_0?UTILITIES
+001B92H   001C1FH   00008EH   BYTE   UNIT     CODE           ?PR?DEVICELEDFLASH?SYS
+001C20H   001C25H   000006H   BYTE   UNIT     CODE           ?PR?DEVICEINIT?SYS
+001C26H   001C32H   00000DH   BYTE   UNIT     CODE           ?PR?_IPC_INITIALIZE?IPC
+001C33H   001C39H   000007H   BYTE   UNIT     CODE           ?PR?YC_ICE_BREAK?UTILITIES
+001C3AH   001C7DH   000044H   BYTE   UNIT     CODE           ?PR?_DMEMCPY?UTILITIES
+001C7EH   001CAAH   00002DH   BYTE   UNIT     CODE           ?PR?_XMEMCLEAR_FF?UTILITIES
+001CABH   001CF4H   00004AH   BYTE   UNIT     CODE           ?PR?_COMPARE_STR?UTILITIES
+001CF5H   001D01H   00000DH   BYTE   UNIT     CODE           ?PR?_GPIO_SETPD?GPIO
+001D02H   001D3CH   00003BH   BYTE   UNIT     CODE           ?PR?_GPIO_CLEARWAKEUP?GPIO
+001D3DH   001D97H   00005BH   BYTE   UNIT     CODE           ?PR?_IPCRX?IPC
+001D98H   001FA7H   000210H   BYTE   UNIT     CODE           ?PR?IPC_DEALSINGLESTEP?IPC
+001FA8H   001FF2H   00004BH   BYTE   UNIT     CODE           ?PR?_IPC_TXBREDRHIDDATA?IPC
+001FF3H   001FF8H   000006H   BYTE   UNIT     CODE           ?PR?IPC_GETBBDISCONNECTREASON?IPC
+001FF9H   00203CH   000044H   BYTE   UNIT     CODE           ?PR?_IPC_TXSPPDATA?IPC
+00203DH   00204FH   000013H   BYTE   UNIT     CODE           ?PR?_ABS?SENSOR
+002050H   002151H   000102H   BYTE   UNIT     CODE           ?PR?DRAWING_OPTIMA?SENSOR
+002152H   002173H   000022H   BYTE   UNIT     CODE           ?PR?DRAWING_OPTIMA_INIT?SENSOR
+
+* * * * * * * * * * *  X D A T A   M E M O R Y  * * * * * * * * * * * * *
+000040H   000045H   000006H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?27
+000046H   00009FH   00005AH   ---    ---      **GAP**
+0000A0H   0000A3H   000004H   BYTE   OFFS..   XDATA          ?XD?GPIO?1
+0000A4H   0000A7H   000004H   BYTE   OFFS..   XDATA          ?XD?GPIO?0
+0000A8H   000217H   000170H   ---    ---      **GAP**
+000218H   00021BH   000004H   BYTE   OFFS..   XDATA          ?XD?SPI?1
+00021CH   00021CH   000001H   ---    ---      **GAP**
+00021DH   000220H   000004H   BYTE   OFFS..   XDATA          ?XD?SPI?0
+000221H   000371H   000151H   ---    ---      **GAP**
+000372H   000377H   000006H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?4
+000378H   0003EFH   000078H   ---    ---      **GAP**
+0003F0H   0003F0H   000001H   BYTE   OFFS..   XDATA          ?XD?IPC?7
+0003F1H   000B29H   000739H   ---    ---      **GAP**
+000B2AH   000B2AH   000001H   BYTE   OFFS..   XDATA          ?XD?IPC?0
+000B2BH   000B2BH   000001H   BYTE   OFFS..   XDATA          ?XD?IPC?4
+000B2CH   0019FFH   000ED4H   ---    ---      **GAP**
+001A00H   001B2BH   00012CH   BYTE   UNIT     XDATA          ?XD?IPC
+001B2CH   001B93H   000068H   BYTE   UNIT     XDATA          ?XD?IIC
+001B94H   001BAAH   000017H   BYTE   UNIT     XDATA          ?XD?_IIC_WRITE?IIC
+001BABH   001BBCH   000012H   BYTE   UNIT     XDATA          ?XD?SYS
+001BBDH   001BC8H   00000CH   BYTE   UNIT     XDATA          ?XD?_DEVICEEVTCB?SYS
+001BC9H   001BD1H   000009H   BYTE   UNIT     XDATA          ?XD?_IIC_WRITEBLOCK?IIC
+001BD2H   001BD9H   000008H   BYTE   UNIT     XDATA          ?XD?_DMEMCPY?UTILITIES
+001BDAH   001BE0H   000007H   BYTE   UNIT     XDATA          ?XD?_COMPARE_STR?UTILITIES
+001BE1H   001BE6H   000006H   BYTE   UNIT     XDATA          ?XD?YC_24GSHORTLPMPROCESS?SYS
+001BE7H   001BECH   000006H   BYTE   UNIT     XDATA          ?XD?_XMEMCPY?UTILITIES
+001BEDH   001BF2H   000006H   BYTE   UNIT     XDATA          ?XD?_IPCTX?IPC
+001BF3H   001BF7H   000005H   BYTE   UNIT     XDATA          ?XD?MOUSEKEYDETECT?SYS
+001BF8H   001BFCH   000005H   BYTE   UNIT     XDATA          ?XD?COMBOKEYPB?SYS
+001BFDH   001C01H   000005H   BYTE   UNIT     XDATA          ?XD?_IIC_READ?IIC
+001C02H   001C05H   000004H   BYTE   UNIT     XDATA          ?XD?_IPC_TXHIDDATA?SYS
+001C06H   001C09H   000004H   BYTE   UNIT     XDATA          ?XD?MOUSEREADSENSOR?SYS
+001C0AH   001C0DH   000004H   BYTE   UNIT     XDATA          ?XD?MOUSEMOTION?SYS
+001C0EH   001C11H   000004H   BYTE   UNIT     XDATA          ?XD?_IPCRX?IPC
+001C12H   001C15H   000004H   BYTE   UNIT     XDATA          ?XD?_IPC_TXCONTROLCMD?IPC
+001C16H   001C18H   000003H   BYTE   UNIT     XDATA          ?XD?MOUSEWHEELSCAN?SYS
+001C19H   001C1BH   000003H   BYTE   UNIT     XDATA          ?XD?_XMEMCLEAR_0?UTILITIES
+001C1CH   001C1EH   000003H   BYTE   UNIT     XDATA          ?XD?_XMEMCLEAR_FF?UTILITIES
+001C1FH   001C21H   000003H   BYTE   UNIT     XDATA          ?XD?_GPIOSETBIT?GPIO
+001C22H   001C24H   000003H   BYTE   UNIT     XDATA          ?XD?IPC_DEALSINGLESTEP?IPC
+001C25H   001C26H   000002H   BYTE   UNIT     XDATA          ?XD?POWER_LOW_DETECT?SYS
+001C27H   001C28H   000002H   BYTE   UNIT     XDATA          ?XD?SPI_RESETSENSOR?SENSOR
+001C29H   001C29H   000001H   BYTE   UNIT     XDATA          ?XD?LEADDRRANDOMCNTINIT?SYS
+001C2AH   001C2AH   000001H   BYTE   UNIT     XDATA          ?XD?DEVICETIMER500MS?SYS
+001C2BH   001C2BH   000001H   BYTE   UNIT     XDATA          ?XD?_GPIOGETBIT?GPIO
+001C2CH   001C2CH   000001H   BYTE   UNIT     XDATA          ?XD?_GPIO_SETWAKEUPBYCURRENTSTATE?GPIO
+001C2DH   001C2DH   000001H   BYTE   UNIT     XDATA          ?XD?_GPIO_FLIPOUTBIT?GPIO
+001C2EH   001C2EH   000001H   BYTE   UNIT     XDATA          ?XD?_IPC_TXBREDRHIDDATA?IPC
+001C2FH   001C2FH   000001H   BYTE   UNIT     XDATA          ?XD?_IPC_TX24GDATA?IPC
+001C30H   001C30H   000001H   BYTE   UNIT     XDATA          ?XD?_IPC_TXSPPDATA?IPC
+001C31H   001C31H   000001H   BYTE   UNIT     XDATA          ?XD?_IPC_TXBLEDATA?IPC
+001C32H   001C32H   000001H   BYTE   UNIT     XDATA          ?XD?GLOBAL_VARIABLE
+001C33H   001C33H   000001H   BYTE   UNIT     XDATA          ?XD?SPI_TWRESET?SENSOR
+001C34H   004130H   0024FDH   ---    ---      **GAP**
+004131H   004131H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?10
+004132H   004260H   00012FH   ---    ---      **GAP**
+004261H   004270H   000010H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?15
+004271H   004272H   000002H   ---    ---      **GAP**
+004273H   004278H   000006H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?25
+004279H   0042B7H   00003FH   ---    ---      **GAP**
+0042B8H   0042B8H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?19
+0042B9H   0042D0H   000018H   ---    ---      **GAP**
+0042D1H   0042D2H   000002H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?28
+0042D3H   00453DH   00026BH   ---    ---      **GAP**
+00453EH   004543H   000006H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?1
+004544H   004594H   000051H   ---    ---      **GAP**
+004595H   004595H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?2
+004596H   00470AH   000175H   ---    ---      **GAP**
+00470BH   00470CH   000002H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?24
+00470DH   004717H   00000BH   ---    ---      **GAP**
+004718H   004718H   000001H   BYTE   OFFS..   XDATA          ?XD?IPC?1
+004719H   004728H   000010H   BYTE   OFFS..   XDATA          ?XD?IPC?10
+004729H   0047C3H   00009BH   ---    ---      **GAP**
+0047C4H   0047C5H   000002H   BYTE   OFFS..   XDATA          ?XD?IPC?3
+0047C6H   0047C7H   000002H   BYTE   OFFS..   XDATA          ?XD?IPC?6
+0047C8H   00482BH   000064H   ---    ---      **GAP**
+00482CH   00482DH   000002H   BYTE   OFFS..   XDATA          ?XD?IPC?2
+00482EH   00482FH   000002H   BYTE   OFFS..   XDATA          ?XD?IPC?5
+004830H   004841H   000012H   BYTE   OFFS..   XDATA          ?XD?IPC?9
+004842H   004897H   000056H   ---    ---      **GAP**
+004898H   004899H   000002H   BYTE   OFFS..   XDATA          ?XD?IPC?13
+00489AH   00489BH   000002H   BYTE   OFFS..   XDATA          ?XD?IPC?11
+00489CH   00489CH   000001H   BYTE   OFFS..   XDATA          ?XD?IPC?12
+00489DH   00489DH   000001H   BYTE   OFFS..   XDATA          ?XD?IPC?8
+00489EH   004905H   000068H   ---    ---      **GAP**
+004906H   004925H   000020H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?18
+004926H   00494DH   000028H   ---    ---      **GAP**
+00494EH   00494EH   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?20
+00494FH   00494FH   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?21
+004950H   004953H   000004H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?8
+004954H   004954H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?32
+004955H   0049B6H   000062H   ---    ---      **GAP**
+0049B7H   0049B7H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?5
+0049B8H   0049BFH   000008H   ---    ---      **GAP**
+0049C0H   0049C0H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?26
+0049C1H   0049C1H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?29
+0049C2H   0049C2H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?13
+0049C3H   004E20H   00045EH   ---    ---      **GAP**
+004E21H   004E40H   000020H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?3
+004E41H   004E42H   000002H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?9
+004E43H   004E44H   000002H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?12
+004E45H   004E77H   000033H   ---    ---      **GAP**
+004E78H   004E78H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?22
+004E79H   004E7CH   000004H   ---    ---      **GAP**
+004E7DH   004E7DH   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?0
+004E7EH   004E7EH   000001H   ---    ---      **GAP**
+004E7FH   004E7FH   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?11
+004E80H   004E80H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?30
+004E81H   004E81H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?31
+004E82H   004E82H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?14
+004E83H   004E83H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?16
+004E84H   004E84H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?17
+004E85H   004EA5H   000021H   ---    ---      **GAP**
+004EA6H   004EA6H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?7
+004EA7H   004EA7H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?23
+004EA8H   004EBAH   000013H   ---    ---      **GAP**
+004EBBH   004F14H   00005AH   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?6
+
+
+
+PUBLIC SYMBOLS OF MODULE:  OUTPUT\FW (RAM)
+
+
+      VALUE       CLASS    TYPE      PUBLIC SYMBOL NAME
+      =================================================
+      02001BDAH   XDATA    BYTE      ?_compare_str?BYTE
+      02001BD2H   XDATA    BYTE      ?_dmemcpy?BYTE
+      00000020H.6 BIT      BIT       ?_GPIO_SetInput?BIT
+      00000020H.5 BIT      BIT       ?_GPIO_Setoe?BIT
+      00000020H.2 BIT      BIT       ?_GPIO_Setout?BIT
+      00000020H.7 BIT      BIT       ?_GPIO_SetOutput?BIT
+      00000020H.4 BIT      BIT       ?_GPIO_SetPd?BIT
+      00000020H.3 BIT      BIT       ?_GPIO_SetPu?BIT
+      00000021H.0 BIT      BIT       ?_GPIO_SetWakeup?BIT
+      02001BE7H   XDATA    BYTE      ?_xmemcpy?BYTE
+      0100021AH   CODE     ---       ?C?CCASE
+      01000112H   CODE     ---       ?C?CLDOPTR
+      010000F9H   CODE     ---       ?C?CLDPTR
+      00000000H   NUMBER   ---       ?C?CODESEG
+      010000D3H   CODE     ---       ?C?COPY
+      0100013FH   CODE     ---       ?C?CSTPTR
+      01000240H   CODE     ---       ?C?ICALL
+      01000244H   CODE     ---       ?C?ICALL2
+      010001EEH   CODE     ---       ?C?IILDX
+      01000204H   CODE     ---       ?C?ILDIX
+      01000151H   CODE     ---       ?C?IMUL
+      010001B8H   CODE     ---       ?C?SIDIV
+      01000163H   CODE     ---       ?C?UIDIV
+      00000000H   NUMBER   ---       ?C?XDATASEG
+      0100028DH   CODE     ---       ?C_START
+      01000000H   CODE     ---       ?C_STARTUP
+      0100203DH   CODE     ---       _abs
+      01001CABH   CODE     ---       _compare_str
+      010015B2H   CODE     ---       _Delay1ms
+      01001C3AH   CODE     ---       _dmemcpy
+      01001D02H   CODE     ---       _GPIO_ClearWakeup
+      01000F6DH   CODE     ---       _GPIO_FlipOutBit
+      01000D4CH   CODE     ---       _GPIO_GetInputStatus
+      010003A1H   CODE     ---       _GPIO_SetInput
+      010003B8H   CODE     ---       _GPIO_Setoe
+      01000F86H   CODE     ---       _GPIO_Setout
+      01001075H   CODE     ---       _GPIO_SetOutput
+      01001CF5H   CODE     ---       _GPIO_SetPd
+      01001089H   CODE     ---       _GPIO_SetPu
+      010007ABH   CODE     ---       _GPIO_SetWakeup
+      01000797H   CODE     ---       _GPIO_SetWakeupByCurrentState
+      01001368H   CODE     ---       _IIC_Read
+      01001479H   CODE     ---       _IIC_write
+      0100126DH   CODE     ---       _IIC_WriteBlock
+      01001C26H   CODE     ---       _IPC_Initialize
+      01001A01H   CODE     ---       _IPC_Tx24GData
+      01001A45H   CODE     ---       _IPC_TxBleData
+      01001FA8H   CODE     ---       _IPC_TxBREDRHidData
+      01000EA2H   CODE     ---       _IPC_TxControlCmd
+      01001839H   CODE     ---       _IPC_TxHidData
+      01001FF9H   CODE     ---       _IPC_TxSppData
+      0100084AH   CODE     ---       _SPI_ReadSensor
+      01000A8EH   CODE     ---       _SPI_WriteSensor
+      01001B66H   CODE     ---       _xmemclear_0
+      01001C7EH   CODE     ---       _xmemclear_ff
+      01001415H   CODE     ---       _xmemcpy
+      010014EEH   CODE     ---       ADC_Get0vBase
+      010015A9H   CODE     ---       ADC_Get3vBase
+      010016E1H   CODE     ---       ADC_GetCurrentValue
+      0200489CH   XDATA    BYTE      btstimer
+      02004898H   XDATA    WORD      bttimer
+      0200489DH   XDATA    BYTE      c51stimer
+      0200489AH   XDATA    WORD      c51timer
+      01001B43H   CODE     ---       clearGlobalMem
+      01000D91H   CODE     ---       comboKeyPb
+      02000B2AH   XDATA    BYTE      current_task
+      01000AB9H   CODE     ---       dpiWriteInSensor
+      01002050H   CODE     ---       Drawing_optima
+      01002152H   CODE     ---       Drawing_optima_init
+      02004EBBH   XDATA    ---       g_variable
+      010016D5H   CODE     ---       IPC_AbandonLpm
+      01001D98H   CODE     ---       IPC_DealSingleStep
+      01001FF3H   CODE     ---       IPC_GetBBDIsconnectReason
+      010019E9H   CODE     ---       IPC_IsTxBuffEmpty
+      010015D1H   CODE     ---       IPC_WaitLpm
+      02004719H   XDATA    ---       ipcPin
+      02004718H   XDATA    BYTE      ipcPinlen
+      02001A00H   XDATA    ---       ipcReadBuff
+      02001A96H   XDATA    ---       ipcSendBuff
+      0100131CH   CODE     ---       leAddrRandomCntInit
+      01000E62H   CODE     ---       leADVStart
+      01001458H   CODE     ---       leReconnStart
+      02000B2BH   XDATA    BYTE      lpm_flag
+      02004950H   XDATA    ---       m_24gAddr
+      02004906H   XDATA    ---       m_24gRxPayload
+      02004E84H   XDATA    BYTE      m_51ReadSensor
+      02004E41H   XDATA    WORD      m_adc0vBase
+      02004E43H   XDATA    WORD      m_adc3vValue
+      020042D1H   XDATA    WORD      m_adcCurrentValue
+      02004E81H   XDATA    BYTE      m_bleDataWheel
+      02004E82H   XDATA    BYTE      m_bleDataWheelLpmTimer
+      02004595H   XDATA    BYTE      m_bleSendDataFlag
+      020049C2H   XDATA    BYTE      m_btMotionEvent
+      02004E83H   XDATA    BYTE      m_BtReadIpcCount
+      020049C1H   XDATA    BYTE      m_btWakeupFromLongMult
+      02004E78H   XDATA    BYTE      m_enable24gShortLpm
+      02001C32H   XDATA    BYTE      m_FastConnSendEmptyCount
+      02004E21H   XDATA    ---       m_hidBuff
+      02004E7FH   XDATA    BYTE      m_IpcIsReady
+      02004EA7H   XDATA    BYTE      m_leStartAdv
+      02004261H   XDATA    ---       m_linkKey
+      02004131H   XDATA    BYTE      m_lpmMode
+      02004EA6H   XDATA    BYTE      m_mouseFastConnFlag
+      02004954H   XDATA    BYTE      m_new24gAbortPac
+      0200494FH   XDATA    BYTE      m_new24gIntMax
+      0200494EH   XDATA    BYTE      m_new24gIntMin
+      020049B7H   XDATA    BYTE      m_new24gKWEvent
+      020049C0H   XDATA    BYTE      m_new24gOtaEnable
+      020042B8H   XDATA    BYTE      m_powerOnFlag
+      02004273H   XDATA    ---       m_reconnAddr
+      0200453EH   XDATA    ---       m_reconnLeAddr
+      02000040H   XDATA    ---       m_remoteAddr
+      02000372H   XDATA    ---       m_remoteLeAddr
+      02004E7DH   XDATA    BYTE      m_sendData24gShortLpm
+      02004E80H   XDATA    BYTE      m_shortDataWheel
+      0200470BH   XDATA    WORD      m_uiStateMap
+      010002F1H   CODE     ---       main
+      010017A2H   CODE     ---       mouse_wheel_delay_lpm
+      01001212H   CODE     ---       mouseDpiKeyCheck
+      01001096H   CODE     ---       mouseKeyDetect
+      0100175EH   CODE     ---       mousePackage
+      010017B1H   CODE     ---       mouseWheelScan
+      010014F7H   CODE     ---       Power_low_detect
+      01000B70H   CODE     ---       Sensor_spi_disable
+      01000831H   CODE     ---       sensorClearData
+      01000F4AH   CODE     ---       sensorPowerDown
+      01000CE3H   CODE     ---       sensorPowerOn
+      0100173AH   CODE     ---       SPI_Initialize
+      01000873H   CODE     ---       SPI_ResetSensor
+      0200021DH   XDATA    ---       spi_rx_buff
+      01000CF9H   CODE     ---       SPI_TwReset
+      02000218H   XDATA    ---       spi_tx_buff
+      010015DFH   CODE     ---       YC_24gShortLpmProcess
+      020000A4H   XDATA    ---       YC_GPIOWakeupH
+      020000A0H   XDATA    ---       YC_GPIOWakeupL
+      01001C33H   CODE     ---       YC_Ice_break
+      01000740H   CODE     ---       YC_SetWake
+      010002F1H   CODE     ---       YC_SysMain
+
+
+
+SYMBOL TABLE OF MODULE:  OUTPUT\FW (RAM)
+
+      VALUE       REP       CLASS    TYPE      SYMBOL NAME
+      ====================================================
+      ---         MODULE    ---      ---       RAM
+      010002F1H   PUBLIC    CODE     ---       main
+
+      010002F1H   BLOCK     CODE     ---       LVL=0
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       SYS
+      010002F1H   PUBLIC    CODE     ---       YC_SysMain
+      010015DFH   PUBLIC    CODE     ---       YC_24gShortLpmProcess
+      01000740H   PUBLIC    CODE     ---       YC_SetWake
+      010014F7H   PUBLIC    CODE     ---       Power_low_detect
+      01000D91H   PUBLIC    CODE     ---       comboKeyPb
+      0100131CH   PUBLIC    CODE     ---       leAddrRandomCntInit
+      01000E62H   PUBLIC    CODE     ---       leADVStart
+      01001458H   PUBLIC    CODE     ---       leReconnStart
+      01001B43H   PUBLIC    CODE     ---       clearGlobalMem
+      0100175EH   PUBLIC    CODE     ---       mousePackage
+      01001096H   PUBLIC    CODE     ---       mouseKeyDetect
+      01001839H   PUBLIC    CODE     ---       _IPC_TxHidData
+      010017B1H   PUBLIC    CODE     ---       mouseWheelScan
+      010017A2H   PUBLIC    CODE     ---       mouse_wheel_delay_lpm
+      01001212H   PUBLIC    CODE     ---       mouseDpiKeyCheck
+      01000AB9H   PUBLIC    CODE     ---       dpiWriteInSensor
+      01000831H   PUBLIC    CODE     ---       sensorClearData
+
+      01000831H   BLOCK     CODE     ---       LVL=0
+      01000831H   LINE      ---      ---       #209
+      01000831H   LINE      ---      ---       #210
+      01000831H   LINE      ---      ---       #211
+      01000833H   LINE      ---      ---       #212
+      01000835H   LINE      ---      ---       #213
+      0100083BH   LINE      ---      ---       #214
+      0100083FH   LINE      ---      ---       #215
+      01000843H   LINE      ---      ---       #216
+      01000847H   LINE      ---      ---       #217
+      01000849H   LINE      ---      ---       #218
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000AB9H   BLOCK     CODE     ---       LVL=0
+      01000AB9H   LINE      ---      ---       #220
+      01000AB9H   LINE      ---      ---       #221
+      01000AB9H   LINE      ---      ---       #222
+      01000ABBH   LINE      ---      ---       #224
+      01000AC8H   LINE      ---      ---       #225
+      01000AC8H   LINE      ---      ---       #226
+      01000AD2H   LINE      ---      ---       #227
+      01000AD2H   LINE      ---      ---       #230
+      01000AD9H   LINE      ---      ---       #231
+      01000AD9H   LINE      ---      ---       #232
+      01000AE0H   LINE      ---      ---       #233
+      01000AE8H   LINE      ---      ---       #235
+      01000AF1H   LINE      ---      ---       #236
+      01000AF1H   LINE      ---      ---       #239
+      01000AF8H   LINE      ---      ---       #240
+      01000AF8H   LINE      ---      ---       #241
+      01000B03H   LINE      ---      ---       #242
+      01000B03H   LINE      ---      ---       #246
+      01000B0AH   LINE      ---      ---       #247
+      01000B0AH   LINE      ---      ---       #248
+      01000B15H   LINE      ---      ---       #249
+      01000B15H   LINE      ---      ---       #253
+      01000B1DH   LINE      ---      ---       #254
+      01000B1DH   LINE      ---      ---       #255
+      01000B23H   LINE      ---      ---       #256
+      01000B34H   LINE      ---      ---       #257
+      01000B34H   LINE      ---      ---       #258
+      01000B34H   LINE      ---      ---       #259
+      01000B3AH   LINE      ---      ---       #260
+      01000B40H   LINE      ---      ---       #261
+      01000B42H   LINE      ---      ---       #262
+      01000B42H   LINE      ---      ---       #263
+      01000B48H   LINE      ---      ---       #264
+      01000B4EH   LINE      ---      ---       #265
+      01000B50H   LINE      ---      ---       #266
+      01000B50H   LINE      ---      ---       #267
+      01000B56H   LINE      ---      ---       #268
+      01000B5CH   LINE      ---      ---       #269
+      01000B5EH   LINE      ---      ---       #270
+      01000B5EH   LINE      ---      ---       #271
+      01000B64H   LINE      ---      ---       #272
+      01000B6AH   LINE      ---      ---       #273
+      01000B6AH   LINE      ---      ---       #274
+      01000B6AH   LINE      ---      ---       #275
+      01000B6AH   LINE      ---      ---       #276
+      01000B6AH   LINE      ---      ---       #277
+      01000B70H   LINE      ---      ---       #278
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000FDDH   BLOCK     CODE     ---       LVL=0
+      01000FDDH   LINE      ---      ---       #284
+      01000FDDH   LINE      ---      ---       #285
+      01000FDDH   LINE      ---      ---       #286
+      01000FE4H   LINE      ---      ---       #287
+      01000FECH   LINE      ---      ---       #288
+      01001003H   LINE      ---      ---       #289
+      01001006H   LINE      ---      ---       #290
+      01001006H   LINE      ---      ---       #291
+      0100100CH   LINE      ---      ---       #292
+      0100100CH   LINE      ---      ---       #294
+      0100100CH   LINE      ---      ---       #295
+      01001016H   LINE      ---      ---       #296
+      01001016H   LINE      ---      ---       #297
+      0100101AH   LINE      ---      ---       #298
+      0100101CH   LINE      ---      ---       #299
+      0100101CH   LINE      ---      ---       #300
+      0100101FH   LINE      ---      ---       #301
+      0100101FH   LINE      ---      ---       #302
+      01001023H   LINE      ---      ---       #303
+      01001023H   LINE      ---      ---       #304
+      01001023H   LINE      ---      ---       #305
+      01001023H   LINE      ---      ---       #306
+      01001028H   LINE      ---      ---       #307
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001029H   BLOCK     CODE     ---       LVL=0
+      01001029H   LINE      ---      ---       #309
+      01001029H   LINE      ---      ---       #310
+      01001029H   LINE      ---      ---       #311
+      0100102FH   LINE      ---      ---       #312
+      01001037H   LINE      ---      ---       #313
+      0100104FH   LINE      ---      ---       #314
+      01001052H   LINE      ---      ---       #315
+      01001052H   LINE      ---      ---       #316
+      01001058H   LINE      ---      ---       #317
+      01001058H   LINE      ---      ---       #319
+      01001058H   LINE      ---      ---       #320
+      01001062H   LINE      ---      ---       #321
+      01001062H   LINE      ---      ---       #322
+      01001066H   LINE      ---      ---       #323
+      01001068H   LINE      ---      ---       #324
+      01001068H   LINE      ---      ---       #325
+      0100106BH   LINE      ---      ---       #326
+      0100106BH   LINE      ---      ---       #327
+      0100106FH   LINE      ---      ---       #328
+      0100106FH   LINE      ---      ---       #329
+      0100106FH   LINE      ---      ---       #330
+      0100106FH   LINE      ---      ---       #331
+      01001074H   LINE      ---      ---       #332
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010011C6H   BLOCK     CODE     ---       LVL=0
+      010011C6H   LINE      ---      ---       #335
+      010011C6H   LINE      ---      ---       #336
+      010011C6H   LINE      ---      ---       #337
+      010011CCH   LINE      ---      ---       #338
+      010011D4H   LINE      ---      ---       #339
+      010011ECH   LINE      ---      ---       #340
+      010011EFH   LINE      ---      ---       #341
+      010011EFH   LINE      ---      ---       #342
+      010011F5H   LINE      ---      ---       #343
+      010011F5H   LINE      ---      ---       #345
+      010011F5H   LINE      ---      ---       #346
+      010011FFH   LINE      ---      ---       #347
+      010011FFH   LINE      ---      ---       #348
+      01001203H   LINE      ---      ---       #349
+      01001205H   LINE      ---      ---       #350
+      01001205H   LINE      ---      ---       #351
+      01001208H   LINE      ---      ---       #352
+      01001208H   LINE      ---      ---       #353
+      0100120CH   LINE      ---      ---       #354
+      0100120CH   LINE      ---      ---       #355
+      0100120CH   LINE      ---      ---       #356
+      0100120CH   LINE      ---      ---       #357
+      01001211H   LINE      ---      ---       #358
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010010F8H   BLOCK     CODE     ---       LVL=0
+      010010F8H   LINE      ---      ---       #360
+      010010F8H   LINE      ---      ---       #361
+      010010F8H   LINE      ---      ---       #362
+      01001102H   LINE      ---      ---       #363
+      01001108H   LINE      ---      ---       #364
+      01001110H   LINE      ---      ---       #365
+      01001128H   LINE      ---      ---       #366
+      0100112EH   LINE      ---      ---       #367
+      01001135H   LINE      ---      ---       #368
+      0100113CH   LINE      ---      ---       #369
+      0100113CH   LINE      ---      ---       #370
+      01001142H   LINE      ---      ---       #371
+      01001142H   LINE      ---      ---       #373
+      01001142H   LINE      ---      ---       #374
+      0100114CH   LINE      ---      ---       #375
+      0100114CH   LINE      ---      ---       #376
+      01001150H   LINE      ---      ---       #377
+      01001152H   LINE      ---      ---       #378
+      01001152H   LINE      ---      ---       #379
+      01001155H   LINE      ---      ---       #380
+      01001155H   LINE      ---      ---       #381
+      01001159H   LINE      ---      ---       #382
+      01001159H   LINE      ---      ---       #383
+      01001159H   LINE      ---      ---       #384
+      01001159H   LINE      ---      ---       #385
+      0100115EH   LINE      ---      ---       #386
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      0100115FH   BLOCK     CODE     ---       LVL=0
+      0100115FH   LINE      ---      ---       #388
+      0100115FH   LINE      ---      ---       #389
+      0100115FH   LINE      ---      ---       #390
+      01001169H   LINE      ---      ---       #391
+      0100116FH   LINE      ---      ---       #392
+      01001177H   LINE      ---      ---       #393
+      0100118FH   LINE      ---      ---       #394
+      01001195H   LINE      ---      ---       #395
+      0100119CH   LINE      ---      ---       #396
+      010011A3H   LINE      ---      ---       #397
+      010011A3H   LINE      ---      ---       #398
+      010011A9H   LINE      ---      ---       #399
+      010011A9H   LINE      ---      ---       #401
+      010011A9H   LINE      ---      ---       #402
+      010011B3H   LINE      ---      ---       #403
+      010011B3H   LINE      ---      ---       #404
+      010011B7H   LINE      ---      ---       #405
+      010011B9H   LINE      ---      ---       #406
+      010011B9H   LINE      ---      ---       #407
+      010011BCH   LINE      ---      ---       #408
+      010011BCH   LINE      ---      ---       #409
+      010011C0H   LINE      ---      ---       #410
+      010011C0H   LINE      ---      ---       #411
+      010011C0H   LINE      ---      ---       #412
+      010011C0H   LINE      ---      ---       #413
+      010011C5H   LINE      ---      ---       #414
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001212H   BLOCK     CODE     ---       LVL=0
+      01001212H   LINE      ---      ---       #416
+      01001212H   LINE      ---      ---       #417
+      01001212H   LINE      ---      ---       #418
+      0100121AH   LINE      ---      ---       #419
+      01001232H   LINE      ---      ---       #420
+      0100123BH   LINE      ---      ---       #421
+      01001243H   LINE      ---      ---       #422
+      01001243H   LINE      ---      ---       #423
+      01001249H   LINE      ---      ---       #424
+      0100124DH   LINE      ---      ---       #425
+      01001251H   LINE      ---      ---       #426
+      01001259H   LINE      ---      ---       #427
+      0100125CH   LINE      ---      ---       #428
+      0100126CH   LINE      ---      ---       #429
+      0100126CH   LINE      ---      ---       #430
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010017A2H   BLOCK     CODE     ---       LVL=0
+      010017A2H   LINE      ---      ---       #433
+      010017A2H   LINE      ---      ---       #434
+      010017A2H   LINE      ---      ---       #435
+      010017AAH   LINE      ---      ---       #436
+      010017AAH   LINE      ---      ---       #437
+      010017B0H   LINE      ---      ---       #438
+      010017B0H   LINE      ---      ---       #439
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010017B1H   BLOCK     CODE     ---       LVL=0
+      010017B1H   LINE      ---      ---       #441
+      010017B1H   LINE      ---      ---       #442
+      010017B1H   BLOCK     CODE     NEAR LAB  LVL=1
+      010017B1H   LINE      ---      ---       #443
+      010017B8H   LINE      ---      ---       #444
+      010017C3H   LINE      ---      ---       #445
+      010017D4H   LINE      ---      ---       #448
+      010017DBH   LINE      ---      ---       #451
+      010017E1H   LINE      ---      ---       #452
+      010017E7H   LINE      ---      ---       #453
+      010017EDH   LINE      ---      ---       #455
+      01001812H   LINE      ---      ---       #457
+      01001826H   LINE      ---      ---       #458
+      01001826H   LINE      ---      ---       #459
+      01001826H   LINE      ---      ---       #460
+      01001826H   LINE      ---      ---       #461
+      0100182CH   LINE      ---      ---       #462
+      0100182FH   LINE      ---      ---       #463
+      0100182FH   LINE      ---      ---       #464
+      0100182FH   LINE      ---      ---       #465
+      0100182FH   LINE      ---      ---       #466
+      01001835H   LINE      ---      ---       #467
+      01001838H   LINE      ---      ---       #468
+      01001838H   LINE      ---      ---       #469
+      01001838H   LINE      ---      ---       #470
+      01001838H   LINE      ---      ---       #471
+      01001838H   LINE      ---      ---       #472
+      02001C16H   SYMBOL    XDATA    VOID      result
+      02001C18H   SYMBOL    XDATA    VOID      tempStateA
+      00000007H   SYMBOL    DATA     VOID      tempState
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01001839H   BLOCK     CODE     ---       LVL=0
+      01001839H   LINE      ---      ---       #474
+      01001847H   LINE      ---      ---       #475
+      01001847H   LINE      ---      ---       #476
+      0100185AH   LINE      ---      ---       #480
+      0100185EH   LINE      ---      ---       #481
+      0100185EH   LINE      ---      ---       #482
+      0100186EH   LINE      ---      ---       #483
+      0100186EH   LINE      ---      ---       #490
+      01001875H   LINE      ---      ---       #491
+      01001875H   LINE      ---      ---       #492
+      01001885H   LINE      ---      ---       #493
+      01001885H   LINE      ---      ---       #495
+      01001885H   LINE      ---      ---       #496
+      01001887H   LINE      ---      ---       #497
+      01001887H   LINE      ---      ---       #498
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001096H   BLOCK     CODE     ---       LVL=0
+      01001096H   LINE      ---      ---       #500
+      01001096H   LINE      ---      ---       #501
+      01001096H   BLOCK     CODE     NEAR LAB  LVL=1
+      01001096H   LINE      ---      ---       #502
+      010010A3H   LINE      ---      ---       #503
+      010010ABH   LINE      ---      ---       #504
+      010010B2H   LINE      ---      ---       #505
+      010010B9H   LINE      ---      ---       #506
+      010010C0H   LINE      ---      ---       #507
+      010010C7H   LINE      ---      ---       #509
+      010010C9H   LINE      ---      ---       #510
+      010010F7H   LINE      ---      ---       #511
+      02001BF3H   SYMBOL    XDATA    VOID      buttonLeft
+      02001BF4H   SYMBOL    XDATA    VOID      buttonRight
+      02001BF5H   SYMBOL    XDATA    VOID      buttonMiddle
+      02001BF6H   SYMBOL    XDATA    VOID      buttonBack
+      02001BF7H   SYMBOL    XDATA    VOID      buttonForward
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01000B84H   BLOCK     CODE     ---       LVL=0
+      01000B84H   LINE      ---      ---       #513
+      01000B84H   LINE      ---      ---       #514
+      01000B84H   BLOCK     CODE     NEAR LAB  LVL=1
+      01000B84H   LINE      ---      ---       #515
+      01000B8FH   LINE      ---      ---       #517
+      01000B95H   LINE      ---      ---       #518
+      01000B97H   LINE      ---      ---       #519
+      01000B97H   LINE      ---      ---       #521
+      01000B99H   LINE      ---      ---       #523
+      01000BA3H   LINE      ---      ---       #525
+      01000BA9H   LINE      ---      ---       #526
+      01000BB1H   LINE      ---      ---       #527
+      01000BBAH   LINE      ---      ---       #528
+      01000BC5H   LINE      ---      ---       #529
+      01000BC7H   LINE      ---      ---       #530
+      01000BC7H   LINE      ---      ---       #531
+      01000BD0H   LINE      ---      ---       #532
+      01000BD9H   LINE      ---      ---       #533
+      01000BE2H   LINE      ---      ---       #534
+      01000BEBH   LINE      ---      ---       #535
+      01000BF0H   LINE      ---      ---       #536
+      01000BF0H   LINE      ---      ---       #537
+      01000BF2H   LINE      ---      ---       #538
+      01000BFAH   LINE      ---      ---       #539
+      01000C07H   LINE      ---      ---       #540
+      01000C0EH   LINE      ---      ---       #541
+      01000C1BH   LINE      ---      ---       #542
+      01000C22H   LINE      ---      ---       #543
+      01000C24H   LINE      ---      ---       #544
+      01000C24H   LINE      ---      ---       #545
+      01000C33H   LINE      ---      ---       #546
+      01000C38H   LINE      ---      ---       #547
+      01000C47H   LINE      ---      ---       #548
+      01000C4CH   LINE      ---      ---       #549
+      01000C4CH   LINE      ---      ---       #551
+      01000C52H   LINE      ---      ---       #552
+      01000C6CH   LINE      ---      ---       #553
+      01000C81H   LINE      ---      ---       #554
+      01000C83H   LINE      ---      ---       #555
+      01000C83H   LINE      ---      ---       #556
+      01000C98H   LINE      ---      ---       #557
+      01000CADH   LINE      ---      ---       #558
+      01000CADH   LINE      ---      ---       #559
+      01000CC2H   LINE      ---      ---       #560
+      01000CD5H   LINE      ---      ---       #562
+      01000CDCH   LINE      ---      ---       #563
+      01000CDFH   LINE      ---      ---       #564
+      01000CE1H   LINE      ---      ---       #565
+      01000CE1H   LINE      ---      ---       #566
+      01000CE2H   LINE      ---      ---       #567
+      01000CE2H   LINE      ---      ---       #568
+      02001C06H   SYMBOL    XDATA    VOID      deltaXL
+      02001C07H   SYMBOL    XDATA    VOID      deltaYL
+      02001C08H   SYMBOL    XDATA    VOID      deltaXH
+      02001C09H   SYMBOL    XDATA    VOID      deltaYH
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      0100175EH   BLOCK     CODE     ---       LVL=0
+      0100175EH   LINE      ---      ---       #570
+      0100175EH   LINE      ---      ---       #571
+      0100175EH   LINE      ---      ---       #572
+      01001766H   LINE      ---      ---       #573
+      01001771H   LINE      ---      ---       #574
+      01001779H   LINE      ---      ---       #575
+      01001784H   LINE      ---      ---       #576
+      0100178CH   LINE      ---      ---       #577
+      01001794H   LINE      ---      ---       #578
+      01001797H   LINE      ---      ---       #579
+      0100179BH   LINE      ---      ---       #580
+      010017A1H   LINE      ---      ---       #581
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001888H   BLOCK     CODE     ---       LVL=0
+      01001888H   LINE      ---      ---       #583
+      01001888H   LINE      ---      ---       #584
+      01001888H   BLOCK     CODE     NEAR LAB  LVL=1
+      01001888H   LINE      ---      ---       #585
+      01001893H   LINE      ---      ---       #586
+      01001895H   LINE      ---      ---       #594
+      010018A5H   LINE      ---      ---       #595
+      010018A5H   LINE      ---      ---       #598
+      010018A5H   LINE      ---      ---       #599
+      010018B5H   LINE      ---      ---       #601
+      010018B5H   LINE      ---      ---       #603
+      010018BBH   LINE      ---      ---       #605
+      010018BBH   LINE      ---      ---       #626
+      010018E0H   LINE      ---      ---       #629
+      010018E0H   LINE      ---      ---       #630
+      010018E2H   LINE      ---      ---       #631
+      010018E8H   LINE      ---      ---       #632
+      010018E8H   LINE      ---      ---       #633
+      010018F0H   LINE      ---      ---       #635
+      010018FBH   LINE      ---      ---       #645
+      01001902H   LINE      ---      ---       #646
+      01001909H   LINE      ---      ---       #647
+      01001909H   LINE      ---      ---       #649
+      01001917H   LINE      ---      ---       #650
+      01001917H   LINE      ---      ---       #651
+      0100191AH   LINE      ---      ---       #652
+      01001921H   LINE      ---      ---       #653
+      0100192DH   LINE      ---      ---       #654
+      0100192DH   LINE      ---      ---       #655
+      01001930H   LINE      ---      ---       #656
+      01001930H   LINE      ---      ---       #657
+      01001930H   LINE      ---      ---       #659
+      01001936H   LINE      ---      ---       #660
+      01001936H   LINE      ---      ---       #661
+      01001938H   LINE      ---      ---       #662
+      0100193EH   LINE      ---      ---       #663
+      01001942H   LINE      ---      ---       #664
+      01001949H   LINE      ---      ---       #665
+      01001949H   LINE      ---      ---       #666
+      0100194FH   LINE      ---      ---       #667
+      01001955H   LINE      ---      ---       #668
+      01001955H   LINE      ---      ---       #669
+      01001955H   LINE      ---      ---       #671
+      0100195EH   LINE      ---      ---       #672
+      0100195EH   LINE      ---      ---       #673
+      01001963H   LINE      ---      ---       #674
+      01001965H   LINE      ---      ---       #675
+      01001965H   LINE      ---      ---       #677
+      01001973H   LINE      ---      ---       #680
+      01001979H   LINE      ---      ---       #681
+      0100198CH   LINE      ---      ---       #684
+      0100198CH   LINE      ---      ---       #685
+      0100198FH   LINE      ---      ---       #687
+      01001995H   LINE      ---      ---       #688
+      010019B3H   LINE      ---      ---       #691
+      010019B3H   LINE      ---      ---       #692
+      010019BCH   LINE      ---      ---       #693
+      010019C6H   LINE      ---      ---       #694
+      010019CCH   LINE      ---      ---       #695
+      010019CDH   LINE      ---      ---       #696
+      010019CDH   LINE      ---      ---       #698
+      010019CDH   LINE      ---      ---       #699
+      010019CEH   LINE      ---      ---       #700
+      010019CEH   LINE      ---      ---       #701
+      010019D8H   LINE      ---      ---       #702
+      010019DDH   LINE      ---      ---       #703
+      010019DDH   LINE      ---      ---       #704
+      010019DEH   LINE      ---      ---       #705
+      010019DEH   LINE      ---      ---       #706
+      010019E8H   LINE      ---      ---       #707
+      010019E8H   LINE      ---      ---       #709
+      010019E8H   LINE      ---      ---       #710
+      02001C0AH   SYMBOL    XDATA    VOID      deltaXL
+      02001C0BH   SYMBOL    XDATA    VOID      deltaYL
+      02001C0CH   SYMBOL    XDATA    VOID      deltaXH
+      02001C0DH   SYMBOL    XDATA    VOID      deltaYH
+      00000020H.0 SYMBOL    BIT      VOID      sendFlag
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01000F93H   BLOCK     CODE     ---       LVL=0
+      01000F93H   LINE      ---      ---       #713
+      01000F93H   LINE      ---      ---       #714
+      01000F93H   LINE      ---      ---       #715
+      01000FA4H   LINE      ---      ---       #716
+      01000FBAH   LINE      ---      ---       #717
+      01000FBAH   LINE      ---      ---       #718
+      01000FC0H   LINE      ---      ---       #719
+      01000FC2H   LINE      ---      ---       #720
+      01000FC4H   LINE      ---      ---       #721
+      01000FC6H   LINE      ---      ---       #722
+      01000FCAH   LINE      ---      ---       #723
+      01000FD0H   LINE      ---      ---       #724
+      01000FD2H   LINE      ---      ---       #726
+      01000FD6H   LINE      ---      ---       #727
+      01000FDCH   LINE      ---      ---       #728
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000F40H   BLOCK     CODE     ---       LVL=0
+      01000F40H   LINE      ---      ---       #730
+      01000F40H   LINE      ---      ---       #731
+      01000F40H   LINE      ---      ---       #732
+      01000F44H   LINE      ---      ---       #733
+      01000F49H   LINE      ---      ---       #734
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001B43H   BLOCK     CODE     ---       LVL=0
+      01001B43H   LINE      ---      ---       #807
+      01001B43H   LINE      ---      ---       #808
+      01001B43H   LINE      ---      ---       #809
+      01001B4FH   LINE      ---      ---       #810
+      01001B5BH   LINE      ---      ---       #811
+      01001B61H   LINE      ---      ---       #812
+      01001B65H   LINE      ---      ---       #813
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010016EAH   BLOCK     CODE     ---       LVL=0
+      010016EAH   LINE      ---      ---       #815
+      010016EAH   LINE      ---      ---       #816
+      010016EAH   LINE      ---      ---       #817
+      010016F1H   LINE      ---      ---       #818
+      010016F5H   LINE      ---      ---       #819
+      010016FAH   LINE      ---      ---       #820
+      010016FFH   LINE      ---      ---       #821
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001B92H   BLOCK     CODE     ---       LVL=0
+      01001B92H   LINE      ---      ---       #824
+      01001B92H   LINE      ---      ---       #825
+      01001B92H   LINE      ---      ---       #826
+      01001B98H   LINE      ---      ---       #827
+      01001B9BH   LINE      ---      ---       #828
+      01001B9EH   LINE      ---      ---       #829
+      01001B9EH   LINE      ---      ---       #830
+      01001BA4H   LINE      ---      ---       #831
+      01001BAAH   LINE      ---      ---       #832
+      01001BB1H   LINE      ---      ---       #833
+      01001BB7H   LINE      ---      ---       #834
+      01001BBDH   LINE      ---      ---       #835
+      01001BC4H   LINE      ---      ---       #836
+      01001BC9H   LINE      ---      ---       #837
+      01001BCAH   LINE      ---      ---       #838
+      01001BCAH   LINE      ---      ---       #839
+      01001BD1H   LINE      ---      ---       #840
+      01001BD7H   LINE      ---      ---       #841
+      01001BDDH   LINE      ---      ---       #842
+      01001BDDH   LINE      ---      ---       #843
+      01001BDDH   LINE      ---      ---       #844
+      01001BDEH   LINE      ---      ---       #845
+      01001BE5H   LINE      ---      ---       #846
+      01001BEBH   LINE      ---      ---       #847
+      01001BF5H   LINE      ---      ---       #848
+      01001BFAH   LINE      ---      ---       #849
+      01001BFAH   LINE      ---      ---       #851
+      01001C0BH   LINE      ---      ---       #852
+      01001C11H   LINE      ---      ---       #853
+      01001C18H   LINE      ---      ---       #854
+      01001C18H   LINE      ---      ---       #855
+      01001C1FH   LINE      ---      ---       #856
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001458H   BLOCK     CODE     ---       LVL=0
+      01001458H   LINE      ---      ---       #858
+      01001458H   LINE      ---      ---       #859
+      01001458H   LINE      ---      ---       #860
+      0100145FH   LINE      ---      ---       #861
+      0100146EH   LINE      ---      ---       #862
+      01001474H   LINE      ---      ---       #863
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000E62H   BLOCK     CODE     ---       LVL=0
+      01000E62H   LINE      ---      ---       #866
+      01000E62H   LINE      ---      ---       #867
+      01000E62H   LINE      ---      ---       #868
+      01000E73H   LINE      ---      ---       #869
+      01000E81H   LINE      ---      ---       #870
+      01000E92H   LINE      ---      ---       #871
+      01000E9DH   LINE      ---      ---       #872
+      01000EA0H   LINE      ---      ---       #873
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      0100131CH   BLOCK     CODE     ---       LVL=0
+      0100131CH   LINE      ---      ---       #876
+      0100131CH   LINE      ---      ---       #877
+      0100131CH   BLOCK     CODE     NEAR LAB  LVL=1
+      0100131CH   LINE      ---      ---       #878
+      01001321H   LINE      ---      ---       #879
+      01001330H   LINE      ---      ---       #880
+      01001337H   LINE      ---      ---       #881
+      01001337H   LINE      ---      ---       #882
+      01001341H   LINE      ---      ---       #883
+      01001351H   LINE      ---      ---       #884
+      01001357H   LINE      ---      ---       #885
+      01001367H   LINE      ---      ---       #886
+      01001367H   LINE      ---      ---       #887
+      02001C29H   SYMBOL    XDATA    VOID      leAddrE2WP
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      0100041FH   BLOCK     CODE     ---       LVL=0
+      0100041FH   LINE      ---      ---       #889
+      01000424H   LINE      ---      ---       #890
+      01000424H   BLOCK     CODE     NEAR LAB  LVL=1
+      01000424H   LINE      ---      ---       #892
+      0100042DH   LINE      ---      ---       #893
+      0100042FH   LINE      ---      ---       #894
+      01000440H   LINE      ---      ---       #896
+      01000465H   LINE      ---      ---       #897
+      01000465H   LINE      ---      ---       #898
+      01000465H   LINE      ---      ---       #899
+      01000468H   LINE      ---      ---       #900
+      01000468H   LINE      ---      ---       #901
+      0100046BH   LINE      ---      ---       #902
+      01000471H   LINE      ---      ---       #903
+      01000477H   LINE      ---      ---       #904
+      0100047DH   LINE      ---      ---       #905
+      01000483H   LINE      ---      ---       #906
+      01000489H   LINE      ---      ---       #907
+      0100048FH   LINE      ---      ---       #908
+      01000495H   LINE      ---      ---       #909
+      0100049BH   LINE      ---      ---       #910
+      010004A1H   LINE      ---      ---       #911
+      010004A7H   LINE      ---      ---       #912
+      010004ADH   LINE      ---      ---       #913
+      010004B4H   LINE      ---      ---       #914
+      010004BBH   LINE      ---      ---       #916
+      010004C2H   LINE      ---      ---       #917
+      010004C7H   LINE      ---      ---       #918
+      010004C9H   LINE      ---      ---       #919
+      010004C9H   LINE      ---      ---       #920
+      010004CFH   LINE      ---      ---       #921
+      010004CFH   LINE      ---      ---       #923
+      010004D6H   LINE      ---      ---       #928
+      010004D6H   LINE      ---      ---       #929
+      010004D6H   LINE      ---      ---       #931
+      010004DCH   LINE      ---      ---       #932
+      010004E0H   LINE      ---      ---       #934
+      010004E0H   LINE      ---      ---       #935
+      010004E3H   LINE      ---      ---       #936
+      010004E6H   LINE      ---      ---       #937
+      010004EEH   LINE      ---      ---       #938
+      010004FFH   LINE      ---      ---       #939
+      01000508H   LINE      ---      ---       #940
+      0100050BH   LINE      ---      ---       #941
+      0100051CH   LINE      ---      ---       #942
+      0100051FH   LINE      ---      ---       #943
+      01000524H   LINE      ---      ---       #944
+      01000528H   LINE      ---      ---       #945
+      0100052CH   LINE      ---      ---       #946
+      0100053EH   LINE      ---      ---       #947
+      01000550H   LINE      ---      ---       #948
+      01000562H   LINE      ---      ---       #949
+      0100057AH   LINE      ---      ---       #950
+      01000584H   LINE      ---      ---       #951
+      01000584H   LINE      ---      ---       #952
+      01000589H   LINE      ---      ---       #953
+      01000589H   LINE      ---      ---       #954
+      01000589H   LINE      ---      ---       #956
+      01000590H   LINE      ---      ---       #957
+      01000593H   LINE      ---      ---       #958
+      01000598H   LINE      ---      ---       #959
+      01000599H   LINE      ---      ---       #960
+      01000599H   LINE      ---      ---       #961
+      010005AAH   LINE      ---      ---       #962
+      010005C0H   LINE      ---      ---       #963
+      010005C3H   LINE      ---      ---       #965
+      010005C6H   LINE      ---      ---       #966
+      010005C6H   LINE      ---      ---       #967
+      010005C6H   LINE      ---      ---       #968
+      010005C6H   LINE      ---      ---       #969
+      010005CDH   LINE      ---      ---       #970
+      010005CDH   LINE      ---      ---       #971
+      010005D8H   LINE      ---      ---       #972
+      010005D8H   LINE      ---      ---       #973
+      010005DCH   LINE      ---      ---       #974
+      010005E2H   LINE      ---      ---       #975
+      010005E2H   LINE      ---      ---       #976
+      010005E5H   LINE      ---      ---       #977
+      010005ECH   LINE      ---      ---       #978
+      010005F2H   LINE      ---      ---       #979
+      010005F5H   LINE      ---      ---       #980
+      010005F5H   LINE      ---      ---       #1042
+      010005F5H   LINE      ---      ---       #1043
+      010005FBH   LINE      ---      ---       #1044
+      0100060AH   LINE      ---      ---       #1045
+      0100061BH   LINE      ---      ---       #1046
+      01000620H   LINE      ---      ---       #1047
+      01000620H   LINE      ---      ---       #1048
+      01000620H   LINE      ---      ---       #1049
+      01000623H   LINE      ---      ---       #1050
+      01000628H   LINE      ---      ---       #1051
+      0100062EH   LINE      ---      ---       #1052
+      0100062EH   LINE      ---      ---       #1053
+      01000630H   LINE      ---      ---       #1054
+      01000634H   LINE      ---      ---       #1055
+      01000637H   LINE      ---      ---       #1056
+      0100063CH   LINE      ---      ---       #1058
+      01000641H   LINE      ---      ---       #1059
+      01000641H   LINE      ---      ---       #1060
+      01000641H   LINE      ---      ---       #1087
+      01000652H   LINE      ---      ---       #1088
+      01000672H   LINE      ---      ---       #1090
+      01000672H   LINE      ---      ---       #1091
+      01000678H   LINE      ---      ---       #1092
+      0100067CH   LINE      ---      ---       #1093
+      0100067DH   LINE      ---      ---       #1094
+      0100067DH   LINE      ---      ---       #1095
+      01000680H   LINE      ---      ---       #1097
+      01000680H   LINE      ---      ---       #1098
+      01000680H   LINE      ---      ---       #1099
+      01000683H   LINE      ---      ---       #1100
+      01000689H   LINE      ---      ---       #1101
+      0100068EH   LINE      ---      ---       #1102
+      01000690H   LINE      ---      ---       #1105
+      01000694H   LINE      ---      ---       #1106
+      01000695H   LINE      ---      ---       #1108
+      01000695H   LINE      ---      ---       #1109
+      01000698H   LINE      ---      ---       #1110
+      0100069BH   LINE      ---      ---       #1111
+      010006A2H   LINE      ---      ---       #1112
+      010006B3H   LINE      ---      ---       #1113
+      010006B6H   LINE      ---      ---       #1114
+      010006B6H   LINE      ---      ---       #1115
+      010006B6H   LINE      ---      ---       #1116
+      010006BBH   LINE      ---      ---       #1117
+      010006C0H   LINE      ---      ---       #1118
+      010006C5H   LINE      ---      ---       #1119
+      010006CBH   LINE      ---      ---       #1120
+      010006D1H   LINE      ---      ---       #1121
+      010006D4H   LINE      ---      ---       #1122
+      010006E5H   LINE      ---      ---       #1123
+      010006ECH   LINE      ---      ---       #1124
+      010006FDH   LINE      ---      ---       #1125
+      01000704H   LINE      ---      ---       #1126
+      01000715H   LINE      ---      ---       #1127
+      0100071BH   LINE      ---      ---       #1128
+      01000720H   LINE      ---      ---       #1129
+      01000721H   LINE      ---      ---       #1130
+      01000721H   LINE      ---      ---       #1131
+      01000728H   LINE      ---      ---       #1132
+      01000728H   LINE      ---      ---       #1136
+      0100072BH   LINE      ---      ---       #1137
+      01000731H   LINE      ---      ---       #1138
+      01000732H   LINE      ---      ---       #1139
+      01000739H   LINE      ---      ---       #1140
+      01000739H   LINE      ---      ---       #1141
+      0100073CH   LINE      ---      ---       #1142
+      0100073CH   LINE      ---      ---       #1144
+      0100073CH   LINE      ---      ---       #1145
+      0100073FH   LINE      ---      ---       #1146
+      0100073FH   LINE      ---      ---       #1147
+      0100073FH   LINE      ---      ---       #1148
+      0100073FH   LINE      ---      ---       #1150
+      02001BBEH   SYMBOL    XDATA    VOID      curentMode
+      02001BBFH   SYMBOL    XDATA    VOID      buttonLeft
+      02001BC0H   SYMBOL    XDATA    VOID      buttonRight
+      02001BC1H   SYMBOL    XDATA    VOID      buttonMiddle
+      02001BC2H   SYMBOL    XDATA    VOID      combkey
+      02001BC3H   SYMBOL    XDATA    VOID      reconnLeAddr_buff
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01000D91H   BLOCK     CODE     ---       LVL=0
+      01000D91H   LINE      ---      ---       #1152
+      01000D91H   LINE      ---      ---       #1153
+      01000D91H   BLOCK     CODE     NEAR LAB  LVL=1
+      01000D91H   LINE      ---      ---       #1154
+      01000D9AH   LINE      ---      ---       #1155
+      01000D9CH   LINE      ---      ---       #1156
+      01000D9EH   LINE      ---      ---       #1157
+      01000DAFH   LINE      ---      ---       #1158
+      01000DC0H   LINE      ---      ---       #1159
+      01000DD1H   LINE      ---      ---       #1160
+      01000DE8H   LINE      ---      ---       #1161
+      01000DECH   LINE      ---      ---       #1162
+      01000DECH   LINE      ---      ---       #1163
+      01000DF2H   LINE      ---      ---       #1164
+      01000DF9H   LINE      ---      ---       #1165
+      01000DFFH   LINE      ---      ---       #1166
+      01000E08H   LINE      ---      ---       #1168
+      01000E0EH   LINE      ---      ---       #1169
+      01000E13H   LINE      ---      ---       #1170
+      01000E13H   LINE      ---      ---       #1171
+      01000E17H   LINE      ---      ---       #1172
+      01000E19H   LINE      ---      ---       #1174
+      01000E2DH   LINE      ---      ---       #1175
+      01000E2DH   LINE      ---      ---       #1184
+      01000E2DH   LINE      ---      ---       #1185
+      01000E31H   LINE      ---      ---       #1186
+      01000E37H   LINE      ---      ---       #1187
+      01000E38H   LINE      ---      ---       #1188
+      01000E38H   LINE      ---      ---       #1189
+      01000E3EH   LINE      ---      ---       #1193
+      01000E40H   LINE      ---      ---       #1194
+      01000E40H   LINE      ---      ---       #1195
+      01000E40H   LINE      ---      ---       #1196
+      01000E42H   LINE      ---      ---       #1197
+      01000E49H   LINE      ---      ---       #1198
+      01000E4FH   LINE      ---      ---       #1202
+      01000E51H   LINE      ---      ---       #1203
+      01000E51H   LINE      ---      ---       #1211
+      01000E51H   LINE      ---      ---       #1212
+      01000E51H   LINE      ---      ---       #1213
+      01000E53H   LINE      ---      ---       #1214
+      01000E59H   LINE      ---      ---       #1218
+      01000E5BH   LINE      ---      ---       #1219
+      01000E5BH   LINE      ---      ---       #1220
+      01000E5BH   LINE      ---      ---       #1221
+      01000E5BH   LINE      ---      ---       #1222
+      01000E5BH   LINE      ---      ---       #1223
+      01000E5BH   LINE      ---      ---       #1224
+      01000E5CH   LINE      ---      ---       #1225
+      01000E61H   LINE      ---      ---       #1226
+      02001BF8H   SYMBOL    XDATA    VOID      buttonLeft
+      02001BF9H   SYMBOL    XDATA    VOID      buttonRight
+      02001BFAH   SYMBOL    XDATA    VOID      buttonMiddle
+      02001BFBH   SYMBOL    XDATA    VOID      combkey
+      02001BFCH   SYMBOL    XDATA    VOID      currentStateTemp
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01001A89H   BLOCK     CODE     ---       LVL=0
+      01001A89H   LINE      ---      ---       #1228
+      01001A89H   LINE      ---      ---       #1229
+      01001A89H   BLOCK     CODE     NEAR LAB  LVL=1
+      01001A89H   LINE      ---      ---       #1230
+      01001A8EH   LINE      ---      ---       #1231
+      01001A9CH   LINE      ---      ---       #1232
+      01001AB3H   LINE      ---      ---       #1233
+      01001AB3H   LINE      ---      ---       #1234
+      01001AB3H   LINE      ---      ---       #1235
+      01001AB9H   LINE      ---      ---       #1236
+      01001AC5H   LINE      ---      ---       #1237
+      01001AC5H   LINE      ---      ---       #1238
+      01001AC7H   LINE      ---      ---       #1239
+      01001AC7H   LINE      ---      ---       #1240
+      01001AC8H   LINE      ---      ---       #1241
+      01001AC8H   LINE      ---      ---       #1242
+      01001ACEH   LINE      ---      ---       #1243
+      01001ADCH   LINE      ---      ---       #1244
+      01001ADCH   LINE      ---      ---       #1245
+      01001AE1H   LINE      ---      ---       #1246
+      01001AE3H   LINE      ---      ---       #1247
+      01001AE3H   LINE      ---      ---       #1248
+      01001AE3H   LINE      ---      ---       #1249
+      01001AE3H   LINE      ---      ---       #1250
+      01001AE9H   LINE      ---      ---       #1251
+      01001AF7H   LINE      ---      ---       #1252
+      01001AF7H   LINE      ---      ---       #1253
+      01001AFCH   LINE      ---      ---       #1254
+      01001B02H   LINE      ---      ---       #1255
+      01001B02H   LINE      ---      ---       #1256
+      01001B03H   LINE      ---      ---       #1267
+      01001B03H   LINE      ---      ---       #1268
+      01001B09H   LINE      ---      ---       #1269
+      01001B1FH   LINE      ---      ---       #1270
+      01001B1FH   LINE      ---      ---       #1271
+      01001B21H   LINE      ---      ---       #1272
+      01001B21H   LINE      ---      ---       #1273
+      01001B22H   LINE      ---      ---       #1274
+      01001B22H   LINE      ---      ---       #1275
+      01001B28H   LINE      ---      ---       #1276
+      01001B2CH   LINE      ---      ---       #1278
+      01001B3BH   LINE      ---      ---       #1279
+      01001B3BH   LINE      ---      ---       #1280
+      01001B3DH   LINE      ---      ---       #1281
+      01001B3DH   LINE      ---      ---       #1282
+      01001B3EH   LINE      ---      ---       #1283
+      01001B3FH   LINE      ---      ---       #1286
+      01001B3FH   LINE      ---      ---       #1288
+      01001B42H   LINE      ---      ---       #1289
+      01001B3FH   SYMBOL    ---      ---       LONG_SLEEPr500ms
+      02001C2AH   SYMBOL    XDATA    VOID      sleepState
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      010014F7H   BLOCK     CODE     ---       LVL=0
+      010014F7H   LINE      ---      ---       #1291
+      010014F7H   LINE      ---      ---       #1292
+      010014F7H   BLOCK     CODE     NEAR LAB  LVL=1
+      010014F7H   LINE      ---      ---       #1293
+      010014FEH   LINE      ---      ---       #1294
+      0100151BH   LINE      ---      ---       #1317
+      01001525H   LINE      ---      ---       #1318
+      01001525H   LINE      ---      ---       #1319
+      01001557H   LINE      ---      ---       #1320
+      0100155FH   LINE      ---      ---       #1321
+      01001564H   LINE      ---      ---       #1322
+      01001596H   LINE      ---      ---       #1323
+      01001596H   LINE      ---      ---       #1324
+      010015A6H   LINE      ---      ---       #1326
+      010015A8H   LINE      ---      ---       #1327
+      010015A8H   LINE      ---      ---       #1328
+      010015A8H   LINE      ---      ---       #1330
+      02001C25H   SYMBOL    XDATA    VOID      adc_value
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01001704H   BLOCK     CODE     ---       LVL=0
+      01001704H   LINE      ---      ---       #1332
+      01001704H   LINE      ---      ---       #1333
+      01001704H   LINE      ---      ---       #1334
+      0100170AH   LINE      ---      ---       #1335
+      0100170CH   LINE      ---      ---       #1336
+      01001712H   LINE      ---      ---       #1337
+      01001718H   LINE      ---      ---       #1338
+      0100171AH   LINE      ---      ---       #1339
+      0100171DH   LINE      ---      ---       #1340
+      01001720H   LINE      ---      ---       #1341
+      01001722H   LINE      ---      ---       #1343
+      01001729H   LINE      ---      ---       #1344
+      0100172DH   LINE      ---      ---       #1345
+      01001731H   LINE      ---      ---       #1346
+      01001733H   LINE      ---      ---       #1347
+      01001733H   LINE      ---      ---       #1348
+      01001739H   LINE      ---      ---       #1349
+      01001739H   LINE      ---      ---       #1350
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001C20H   BLOCK     CODE     ---       LVL=0
+      01001C20H   LINE      ---      ---       #1361
+      01001C20H   LINE      ---      ---       #1362
+      01001C20H   LINE      ---      ---       #1363
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000740H   BLOCK     CODE     ---       LVL=0
+      01000740H   LINE      ---      ---       #1366
+      01000740H   LINE      ---      ---       #1367
+      01000740H   LINE      ---      ---       #1368
+      01000745H   LINE      ---      ---       #1369
+      01000747H   LINE      ---      ---       #1370
+      01000749H   LINE      ---      ---       #1371
+      0100074BH   LINE      ---      ---       #1372
+      0100074EH   LINE      ---      ---       #1373
+      01000755H   LINE      ---      ---       #1374
+      0100075BH   LINE      ---      ---       #1375
+      01000761H   LINE      ---      ---       #1376
+      01000767H   LINE      ---      ---       #1377
+      0100076DH   LINE      ---      ---       #1378
+      01000773H   LINE      ---      ---       #1379
+      01000779H   LINE      ---      ---       #1380
+      0100077DH   LINE      ---      ---       #1381
+      01000781H   LINE      ---      ---       #1382
+      01000785H   LINE      ---      ---       #1383
+      01000789H   LINE      ---      ---       #1384
+      0100078DH   LINE      ---      ---       #1385
+      01000791H   LINE      ---      ---       #1386
+      01000795H   LINE      ---      ---       #1387
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010015DFH   BLOCK     CODE     ---       LVL=0
+      010015DFH   LINE      ---      ---       #1391
+      010015DFH   LINE      ---      ---       #1392
+      010015DFH   BLOCK     CODE     NEAR LAB  LVL=1
+      010015DFH   LINE      ---      ---       #1393
+      010015EAH   LINE      ---      ---       #1394
+      010015ECH   LINE      ---      ---       #1395
+      010015EEH   LINE      ---      ---       #1397
+      010015F2H   LINE      ---      ---       #1399
+      010015F4H   LINE      ---      ---       #1400
+      01001609H   LINE      ---      ---       #1401
+      01001609H   LINE      ---      ---       #1402
+      01001612H   LINE      ---      ---       #1403
+      01001612H   LINE      ---      ---       #1404
+      01001618H   LINE      ---      ---       #1406
+      01001618H   LINE      ---      ---       #1407
+      0100161EH   LINE      ---      ---       #1408
+      01001621H   LINE      ---      ---       #1409
+      0100162AH   LINE      ---      ---       #1410
+      0100162DH   LINE      ---      ---       #1411
+      01001633H   LINE      ---      ---       #1412
+      01001635H   LINE      ---      ---       #1413
+      01001637H   LINE      ---      ---       #1414
+      01001639H   LINE      ---      ---       #1415
+      0100163FH   LINE      ---      ---       #1416
+      01001645H   LINE      ---      ---       #1417
+      01001645H   LINE      ---      ---       #1418
+      0100164BH   LINE      ---      ---       #1419
+      01001651H   LINE      ---      ---       #1420
+      01001657H   LINE      ---      ---       #1421
+      0100165BH   LINE      ---      ---       #1422
+      0100165BH   LINE      ---      ---       #1423
+      01001667H   LINE      ---      ---       #1424
+      01001667H   LINE      ---      ---       #1425
+      0100166DH   LINE      ---      ---       #1426
+      01001671H   LINE      ---      ---       #1427
+      01001677H   LINE      ---      ---       #1428
+      0100167CH   LINE      ---      ---       #1429
+      0100167FH   LINE      ---      ---       #1431
+      01001684H   LINE      ---      ---       #1432
+      01001684H   LINE      ---      ---       #1433
+      01001684H   LINE      ---      ---       #1434
+      0100168BH   LINE      ---      ---       #1435
+      0100168BH   LINE      ---      ---       #1437
+      01001691H   LINE      ---      ---       #1438
+      01001691H   LINE      ---      ---       #1440
+      01001698H   LINE      ---      ---       #1441
+      0100169AH   LINE      ---      ---       #1442
+      0100169FH   LINE      ---      ---       #1443
+      010016A7H   LINE      ---      ---       #1444
+      010016AAH   LINE      ---      ---       #1445
+      010016AAH   LINE      ---      ---       #1446
+      010016AAH   LINE      ---      ---       #1447
+      010016AAH   LINE      ---      ---       #1448
+      010016AAH   LINE      ---      ---       #1459
+      010016B4H   LINE      ---      ---       #1460
+      010016C0H   LINE      ---      ---       #1461
+      010016C0H   LINE      ---      ---       #1462
+      010016C2H   LINE      ---      ---       #1463
+      010016C2H   LINE      ---      ---       #1464
+      010016C2H   LINE      ---      ---       #1465
+      010016C9H   LINE      ---      ---       #1466
+      010016C9H   LINE      ---      ---       #1467
+      010016CCH   LINE      ---      ---       #1468
+      010016D3H   LINE      ---      ---       #1469
+      010016D5H   LINE      ---      ---       #1470
+      010016D5H   LINE      ---      ---       #1471
+      02001BE1H   SYMBOL    XDATA    VOID      deltaXL
+      02001BE2H   SYMBOL    XDATA    VOID      deltaYL
+      02001BE3H   SYMBOL    XDATA    VOID      deltaXH
+      02001BE4H   SYMBOL    XDATA    VOID      deltaYH
+      02001BE5H   SYMBOL    XDATA    VOID      send_flag
+      02001BE6H   SYMBOL    XDATA    VOID      poll_cnt
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      010002F1H   BLOCK     CODE     ---       LVL=0
+      010002F1H   LINE      ---      ---       #1480
+      010002F1H   LINE      ---      ---       #1481
+      010002F1H   BLOCK     CODE     NEAR LAB  LVL=1
+      010002F1H   LINE      ---      ---       #1483
+      010002F4H   LINE      ---      ---       #1484
+      010002FBH   LINE      ---      ---       #1485
+      010002FEH   LINE      ---      ---       #1486
+      010002FEH   LINE      ---      ---       #1487
+      010002FEH   LINE      ---      ---       #1488
+      010002FEH   LINE      ---      ---       #1489
+      01000301H   LINE      ---      ---       #1490
+      01000304H   LINE      ---      ---       #1491
+      01000307H   LINE      ---      ---       #1492
+      0100030AH   LINE      ---      ---       #1496
+      01000315H   LINE      ---      ---       #1497
+      01000315H   LINE      ---      ---       #1498
+      01000315H   LINE      ---      ---       #1499
+      0100031AH   LINE      ---      ---       #1500
+      0100031DH   LINE      ---      ---       #1501
+      0100031FH   LINE      ---      ---       #1502
+      0100032CH   LINE      ---      ---       #1503
+      01000331H   LINE      ---      ---       #1504
+      01000338H   LINE      ---      ---       #1505
+      01000340H   LINE      ---      ---       #1506
+      01000346H   LINE      ---      ---       #1507
+      0100034DH   LINE      ---      ---       #1508
+      01000355H   LINE      ---      ---       #1509
+      0100035BH   LINE      ---      ---       #1510
+      01000362H   LINE      ---      ---       #1511
+      01000364H   LINE      ---      ---       #1512
+      01000367H   LINE      ---      ---       #1513
+      01000369H   LINE      ---      ---       #1514
+      01000369H   LINE      ---      ---       #1515
+      01000369H   LINE      ---      ---       #1516
+      01000375H   LINE      ---      ---       #1517
+      01000375H   LINE      ---      ---       #1518
+      01000378H   LINE      ---      ---       #1519
+      0100037AH   LINE      ---      ---       #1520
+      0100037AH   LINE      ---      ---       #1521
+      0100038CH   LINE      ---      ---       #1524
+      0100038CH   LINE      ---      ---       #1525
+      0100038EH   LINE      ---      ---       #1526
+      01000394H   LINE      ---      ---       #1527
+      01000397H   LINE      ---      ---       #1528
+      01000399H   LINE      ---      ---       #1529
+      01000399H   LINE      ---      ---       #1531
+      01000399H   LINE      ---      ---       #1532
+      0100039CH   LINE      ---      ---       #1533
+      0100039EH   LINE      ---      ---       #1534
+      0100039EH   LINE      ---      ---       #1535
+      0100039EH   LINE      ---      ---       #1536
+      00000007H   SYMBOL    DATA     VOID      i
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      ---         MODULE    ---      ---       UTILITIES
+      02001BDAH   PUBLIC    XDATA    BYTE      ?_compare_str?BYTE
+      01001CABH   PUBLIC    CODE     ---       _compare_str
+      010015B2H   PUBLIC    CODE     ---       _Delay1ms
+      01001C7EH   PUBLIC    CODE     ---       _xmemclear_ff
+      01001B66H   PUBLIC    CODE     ---       _xmemclear_0
+      02001BD2H   PUBLIC    XDATA    BYTE      ?_dmemcpy?BYTE
+      01001C3AH   PUBLIC    CODE     ---       _dmemcpy
+      02001BE7H   PUBLIC    XDATA    BYTE      ?_xmemcpy?BYTE
+      01001415H   PUBLIC    CODE     ---       _xmemcpy
+      01001C33H   PUBLIC    CODE     ---       YC_Ice_break
+
+      01001C33H   BLOCK     CODE     ---       LVL=0
+      01001C33H   LINE      ---      ---       #4
+      01001C33H   LINE      ---      ---       #5
+      01001C33H   LINE      ---      ---       #6
+      01001C39H   LINE      ---      ---       #8
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001415H   BLOCK     CODE     ---       LVL=0
+      01001415H   LINE      ---      ---       #10
+      01001426H   LINE      ---      ---       #11
+      01001426H   LINE      ---      ---       #12
+      01001430H   LINE      ---      ---       #13
+      01001457H   LINE      ---      ---       #15
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001C3AH   BLOCK     CODE     ---       LVL=0
+      01001C3AH   LINE      ---      ---       #17
+      01001C45H   LINE      ---      ---       #18
+      01001C45H   LINE      ---      ---       #19
+      01001C53H   LINE      ---      ---       #20
+      01001C7DH   LINE      ---      ---       #22
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001B66H   BLOCK     CODE     ---       LVL=0
+      01001B66H   LINE      ---      ---       #24
+      01001B71H   LINE      ---      ---       #25
+      01001B71H   LINE      ---      ---       #26
+      01001B7BH   LINE      ---      ---       #27
+      01001B91H   LINE      ---      ---       #29
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001C7EH   BLOCK     CODE     ---       LVL=0
+      01001C7EH   LINE      ---      ---       #31
+      01001C89H   LINE      ---      ---       #32
+      01001C89H   LINE      ---      ---       #33
+      01001C93H   LINE      ---      ---       #34
+      01001CAAH   LINE      ---      ---       #36
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010015B2H   BLOCK     CODE     ---       LVL=0
+      010015B2H   LINE      ---      ---       #46
+      010015B2H   LINE      ---      ---       #47
+      010015B2H   BLOCK     CODE     NEAR LAB  LVL=1
+      010015B2H   LINE      ---      ---       #49
+      010015BBH   LINE      ---      ---       #50
+      010015BBH   LINE      ---      ---       #51
+      010015C9H   LINE      ---      ---       #52
+      010015D0H   LINE      ---      ---       #53
+      00000004H   SYMBOL    DATA     VOID      j
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01001CABH   BLOCK     CODE     ---       LVL=0
+      01001CABH   LINE      ---      ---       #55
+      01001CB6H   LINE      ---      ---       #56
+      01001CB6H   BLOCK     CODE     NEAR LAB  LVL=1
+      01001CB6H   LINE      ---      ---       #58
+      01001CC2H   LINE      ---      ---       #59
+      01001CC2H   LINE      ---      ---       #60
+      01001CECH   LINE      ---      ---       #61
+      01001CEFH   LINE      ---      ---       #62
+      01001CF2H   LINE      ---      ---       #63
+      01001CF4H   LINE      ---      ---       #64
+      00000007H   SYMBOL    DATA     VOID      i
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      ---         MODULE    ---      ---       GPIO
+      020000A0H   PUBLIC    XDATA    ---       YC_GPIOWakeupL
+      020000A4H   PUBLIC    XDATA    ---       YC_GPIOWakeupH
+      01000F6DH   PUBLIC    CODE     ---       _GPIO_FlipOutBit
+      01000797H   PUBLIC    CODE     ---       _GPIO_SetWakeupByCurrentState
+      01001D02H   PUBLIC    CODE     ---       _GPIO_ClearWakeup
+      00000021H.0 PUBLIC    BIT      BIT       ?_GPIO_SetWakeup?BIT
+      010007ABH   PUBLIC    CODE     ---       _GPIO_SetWakeup
+      00000020H.7 PUBLIC    BIT      BIT       ?_GPIO_SetOutput?BIT
+      01001075H   PUBLIC    CODE     ---       _GPIO_SetOutput
+      00000020H.6 PUBLIC    BIT      BIT       ?_GPIO_SetInput?BIT
+      010003A1H   PUBLIC    CODE     ---       _GPIO_SetInput
+      00000020H.5 PUBLIC    BIT      BIT       ?_GPIO_Setoe?BIT
+      010003B8H   PUBLIC    CODE     ---       _GPIO_Setoe
+      00000020H.4 PUBLIC    BIT      BIT       ?_GPIO_SetPd?BIT
+      01001CF5H   PUBLIC    CODE     ---       _GPIO_SetPd
+      00000020H.3 PUBLIC    BIT      BIT       ?_GPIO_SetPu?BIT
+      01001089H   PUBLIC    CODE     ---       _GPIO_SetPu
+      00000020H.2 PUBLIC    BIT      BIT       ?_GPIO_Setout?BIT
+      01000F86H   PUBLIC    CODE     ---       _GPIO_Setout
+      01000D4CH   PUBLIC    CODE     ---       _GPIO_GetInputStatus
+
+      010003C2H   BLOCK     CODE     ---       LVL=0
+      010003C2H   LINE      ---      ---       #8
+      010003CDH   LINE      ---      ---       #9
+      010003CDH   BLOCK     CODE     NEAR LAB  LVL=1
+      010003CDH   LINE      ---      ---       #10
+      010003CFH   LINE      ---      ---       #11
+      010003D0H   LINE      ---      ---       #13
+      010003D4H   LINE      ---      ---       #14
+      010003DBH   LINE      ---      ---       #16
+      010003DEH   LINE      ---      ---       #17
+      010003FEH   LINE      ---      ---       #18
+      010003FEH   LINE      ---      ---       #19
+      010003FEH   LINE      ---      ---       #20
+      00000006H   SYMBOL    DATA     VOID      queue
+      00000005H   SYMBOL    DATA     VOID      group
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01000D52H   BLOCK     CODE     ---       LVL=0
+      01000D52H   LINE      ---      ---       #24
+      01000D54H   LINE      ---      ---       #25
+      01000D54H   BLOCK     CODE     NEAR LAB  LVL=1
+      01000D54H   LINE      ---      ---       #26
+      01000D59H   LINE      ---      ---       #27
+      01000D5AH   LINE      ---      ---       #29
+      01000D5EH   LINE      ---      ---       #30
+      01000D65H   LINE      ---      ---       #31
+      01000D90H   LINE      ---      ---       #33
+      02001C2BH   SYMBOL    XDATA    VOID      queue
+      00000006H   SYMBOL    DATA     VOID      group
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01000D4CH   BLOCK     CODE     ---       LVL=0
+      01000D4CH   LINE      ---      ---       #35
+      01000D4CH   LINE      ---      ---       #36
+      01000D4CH   LINE      ---      ---       #37
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000F86H   BLOCK     CODE     ---       LVL=0
+      01000F86H   LINE      ---      ---       #40
+      01000F86H   LINE      ---      ---       #41
+      01000F86H   LINE      ---      ---       #42
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001089H   BLOCK     CODE     ---       LVL=0
+      01001089H   LINE      ---      ---       #45
+      01001089H   LINE      ---      ---       #46
+      01001089H   LINE      ---      ---       #47
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001CF5H   BLOCK     CODE     ---       LVL=0
+      01001CF5H   LINE      ---      ---       #50
+      01001CF5H   LINE      ---      ---       #51
+      01001CF5H   LINE      ---      ---       #52
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010003B8H   BLOCK     CODE     ---       LVL=0
+      010003B8H   LINE      ---      ---       #55
+      010003B8H   LINE      ---      ---       #56
+      010003B8H   LINE      ---      ---       #57
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010003A1H   BLOCK     CODE     ---       LVL=0
+      010003A1H   LINE      ---      ---       #60
+      010003A3H   LINE      ---      ---       #61
+      010003A3H   LINE      ---      ---       #62
+      010003AAH   LINE      ---      ---       #63
+      010003B4H   LINE      ---      ---       #64
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001075H   BLOCK     CODE     ---       LVL=0
+      01001075H   LINE      ---      ---       #67
+      01001077H   LINE      ---      ---       #68
+      01001077H   LINE      ---      ---       #69
+      0100107CH   LINE      ---      ---       #70
+      01001085H   LINE      ---      ---       #71
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010007ABH   BLOCK     CODE     ---       LVL=0
+      010007ABH   LINE      ---      ---       #74
+      010007ABH   LINE      ---      ---       #75
+      010007ABH   BLOCK     CODE     NEAR LAB  LVL=1
+      010007ABH   LINE      ---      ---       #77
+      010007AFH   LINE      ---      ---       #78
+      010007B6H   LINE      ---      ---       #79
+      010007B9H   LINE      ---      ---       #80
+      010007DAH   LINE      ---      ---       #81
+      010007FBH   LINE      ---      ---       #82
+      010007FCH   LINE      ---      ---       #83
+      010007FCH   LINE      ---      ---       #84
+      0100081EH   LINE      ---      ---       #85
+      01000830H   LINE      ---      ---       #86
+      01000830H   LINE      ---      ---       #87
+      00000006H   SYMBOL    DATA     VOID      queue
+      00000007H   SYMBOL    DATA     VOID      group
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01001D02H   BLOCK     CODE     ---       LVL=0
+      01001D02H   LINE      ---      ---       #89
+      01001D02H   LINE      ---      ---       #90
+      01001D02H   BLOCK     CODE     NEAR LAB  LVL=1
+      01001D02H   LINE      ---      ---       #92
+      01001D06H   LINE      ---      ---       #93
+      01001D0DH   LINE      ---      ---       #94
+      01001D2FH   LINE      ---      ---       #95
+      01001D3CH   LINE      ---      ---       #96
+      00000006H   SYMBOL    DATA     VOID      queue
+      00000007H   SYMBOL    DATA     VOID      group
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01000797H   BLOCK     CODE     ---       LVL=0
+      01000797H   LINE      ---      ---       #98
+      0100079CH   LINE      ---      ---       #99
+      0100079CH   BLOCK     CODE     NEAR LAB  LVL=1
+      0100079CH   LINE      ---      ---       #100
+      010007A1H   LINE      ---      ---       #101
+      00000021H.1 SYMBOL    BIT      VOID      st
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01000F6DH   BLOCK     CODE     ---       LVL=0
+      01000F6DH   LINE      ---      ---       #104
+      01000F72H   LINE      ---      ---       #105
+      01000F72H   BLOCK     CODE     NEAR LAB  LVL=1
+      01000F72H   LINE      ---      ---       #106
+      01000F7CH   LINE      ---      ---       #107
+      00000021H.2 SYMBOL    BIT      VOID      st
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      ---         MODULE    ---      ---       SPI
+      02000218H   PUBLIC    XDATA    ---       spi_tx_buff
+      0200021DH   PUBLIC    XDATA    ---       spi_rx_buff
+      01000A8EH   PUBLIC    CODE     ---       _SPI_WriteSensor
+      0100084AH   PUBLIC    CODE     ---       _SPI_ReadSensor
+      0100173AH   PUBLIC    CODE     ---       SPI_Initialize
+
+      0100173AH   BLOCK     CODE     ---       LVL=0
+      0100173AH   LINE      ---      ---       #17
+      0100173AH   LINE      ---      ---       #18
+      0100173AH   LINE      ---      ---       #19
+      01001740H   LINE      ---      ---       #20
+      01001744H   LINE      ---      ---       #21
+      0100174EH   LINE      ---      ---       #22
+      01001756H   LINE      ---      ---       #23
+      0100175DH   LINE      ---      ---       #24
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      0100084AH   BLOCK     CODE     ---       LVL=0
+      0100084AH   LINE      ---      ---       #26
+      0100084AH   LINE      ---      ---       #27
+      0100084AH   LINE      ---      ---       #28
+      0100084FH   LINE      ---      ---       #29
+      01000858H   LINE      ---      ---       #30
+      01000860H   LINE      ---      ---       #31
+      01000866H   LINE      ---      ---       #32
+      01000866H   LINE      ---      ---       #34
+      01000866H   LINE      ---      ---       #35
+      0100086DH   LINE      ---      ---       #36
+      01000872H   LINE      ---      ---       #37
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000A8EH   BLOCK     CODE     ---       LVL=0
+      01000A8EH   LINE      ---      ---       #39
+      01000A90H   LINE      ---      ---       #40
+      01000A90H   LINE      ---      ---       #41
+      01000A97H   LINE      ---      ---       #42
+      01000A9AH   LINE      ---      ---       #44
+      01000AA3H   LINE      ---      ---       #45
+      01000AA9H   LINE      ---      ---       #47
+      01000AAFH   LINE      ---      ---       #48
+      01000AAFH   LINE      ---      ---       #50
+      01000AAFH   LINE      ---      ---       #51
+      01000AB6H   LINE      ---      ---       #52
+      01000AB8H   LINE      ---      ---       #53
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       IIC
+      0100126DH   PUBLIC    CODE     ---       _IIC_WriteBlock
+      01001479H   PUBLIC    CODE     ---       _IIC_write
+      01001368H   PUBLIC    CODE     ---       _IIC_Read
+
+      010014E6H   BLOCK     CODE     ---       LVL=0
+      010014E6H   LINE      ---      ---       #10
+      010014E6H   LINE      ---      ---       #11
+      010014E6H   LINE      ---      ---       #12
+      010014EDH   LINE      ---      ---       #13
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001368H   BLOCK     CODE     ---       LVL=0
+      01001368H   LINE      ---      ---       #15
+      01001379H   LINE      ---      ---       #16
+      01001379H   BLOCK     CODE     NEAR LAB  LVL=1
+      01001379H   LINE      ---      ---       #17
+      01001379H   LINE      ---      ---       #18
+      01001382H   LINE      ---      ---       #19
+      01001388H   LINE      ---      ---       #20
+      0100138EH   LINE      ---      ---       #21
+      01001394H   LINE      ---      ---       #22
+      010013ADH   LINE      ---      ---       #23
+      010013C2H   LINE      ---      ---       #24
+      010013DBH   LINE      ---      ---       #25
+      010013E1H   LINE      ---      ---       #26
+      010013E9H   LINE      ---      ---       #27
+      010013E9H   LINE      ---      ---       #28
+      010013F0H   LINE      ---      ---       #29
+      010013F0H   LINE      ---      ---       #30
+      010013F7H   LINE      ---      ---       #31
+      010013F9H   LINE      ---      ---       #32
+      00000006H   SYMBOL    DATA     VOID      mem_src
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01001479H   BLOCK     CODE     ---       LVL=0
+      01001479H   LINE      ---      ---       #35
+      01001487H   LINE      ---      ---       #36
+      01001487H   BLOCK     CODE     NEAR LAB  LVL=1
+      01001487H   LINE      ---      ---       #38
+      01001491H   LINE      ---      ---       #39
+      01001497H   LINE      ---      ---       #40
+      010014A6H   LINE      ---      ---       #41
+      010014C3H   LINE      ---      ---       #42
+      010014D3H   LINE      ---      ---       #43
+      010014DAH   LINE      ---      ---       #44
+      010014DFH   LINE      ---      ---       #46
+      02001B98H   SYMBOL    XDATA    VOID      ptemp_addr
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      0100126DH   BLOCK     CODE     ---       LVL=0
+      0100126DH   LINE      ---      ---       #50
+      01001284H   LINE      ---      ---       #51
+      01001284H   BLOCK     CODE     NEAR LAB  LVL=1
+      01001284H   LINE      ---      ---       #53
+      01001290H   LINE      ---      ---       #54
+      01001290H   LINE      ---      ---       #55
+      010012A0H   LINE      ---      ---       #56
+      010012AEH   LINE      ---      ---       #57
+      010012D4H   LINE      ---      ---       #58
+      010012E1H   LINE      ---      ---       #59
+      010012F6H   LINE      ---      ---       #60
+      010012FCH   LINE      ---      ---       #61
+      0100130DH   LINE      ---      ---       #62
+      01001319H   LINE      ---      ---       #63
+      0100131BH   LINE      ---      ---       #65
+      00000004H   SYMBOL    DATA     VOID      cris
+      02001BD0H   SYMBOL    XDATA    VOID      curr_len
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      ---         MODULE    ---      ---       IPC
+      02004898H   PUBLIC    XDATA    WORD      bttimer
+      0200489CH   PUBLIC    XDATA    BYTE      btstimer
+      0200489AH   PUBLIC    XDATA    WORD      c51timer
+      02004719H   PUBLIC    XDATA    ---       ipcPin
+      0200489DH   PUBLIC    XDATA    BYTE      c51stimer
+      02001A96H   PUBLIC    XDATA    ---       ipcSendBuff
+      02000B2BH   PUBLIC    XDATA    BYTE      lpm_flag
+      02001A00H   PUBLIC    XDATA    ---       ipcReadBuff
+      02004718H   PUBLIC    XDATA    BYTE      ipcPinlen
+      02000B2AH   PUBLIC    XDATA    BYTE      current_task
+      01001D98H   PUBLIC    CODE     ---       IPC_DealSingleStep
+      010019E9H   PUBLIC    CODE     ---       IPC_IsTxBuffEmpty
+      010016D5H   PUBLIC    CODE     ---       IPC_AbandonLpm
+      010015D1H   PUBLIC    CODE     ---       IPC_WaitLpm
+      01001C26H   PUBLIC    CODE     ---       _IPC_Initialize
+      01001A45H   PUBLIC    CODE     ---       _IPC_TxBleData
+      01001FF9H   PUBLIC    CODE     ---       _IPC_TxSppData
+      01001FF3H   PUBLIC    CODE     ---       IPC_GetBBDIsconnectReason
+      01001A01H   PUBLIC    CODE     ---       _IPC_Tx24GData
+      01001FA8H   PUBLIC    CODE     ---       _IPC_TxBREDRHidData
+      01000EA2H   PUBLIC    CODE     ---       _IPC_TxControlCmd
+
+      01001D3DH   BLOCK     CODE     ---       LVL=0
+      01001D3DH   LINE      ---      ---       #44
+      01001D4BH   LINE      ---      ---       #45
+      01001D4BH   BLOCK     CODE     NEAR LAB  LVL=1
+      01001D4BH   LINE      ---      ---       #46
+      01001D53H   LINE      ---      ---       #47
+      01001D5DH   LINE      ---      ---       #48
+      01001D7FH   LINE      ---      ---       #49
+      01001D89H   LINE      ---      ---       #50
+      01001D8DH   LINE      ---      ---       #51
+      01001D8DH   LINE      ---      ---       #52
+      01001D8FH   LINE      ---      ---       #53
+      01001D97H   LINE      ---      ---       #54
+      00000006H   SYMBOL    DATA     VOID      src
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01000ECAH   BLOCK     CODE     ---       LVL=0
+      01000ECAH   LINE      ---      ---       #56
+      01000ED8H   LINE      ---      ---       #57
+      01000ED8H   BLOCK     CODE     NEAR LAB  LVL=1
+      01000ED8H   LINE      ---      ---       #58
+      01000EE7H   LINE      ---      ---       #59
+      01000EF1H   LINE      ---      ---       #60
+      01000F16H   LINE      ---      ---       #61
+      01000F24H   LINE      ---      ---       #62
+      01000F2EH   LINE      ---      ---       #63
+      01000F2EH   LINE      ---      ---       #64
+      01000F30H   LINE      ---      ---       #65
+      01000F3FH   LINE      ---      ---       #66
+      02001BF1H   SYMBOL    XDATA    VOID      dest
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01000EA2H   BLOCK     CODE     ---       LVL=0
+      01000EA2H   LINE      ---      ---       #68
+      01000EA7H   LINE      ---      ---       #69
+      01000EA7H   BLOCK     CODE     NEAR LAB  LVL=1
+      01000EA7H   LINE      ---      ---       #70
+      01000EBAH   LINE      ---      ---       #71
+      01000EC2H   LINE      ---      ---       #72
+      02001C13H   SYMBOL    XDATA    VOID      cmdBuff
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01001FA8H   BLOCK     CODE     ---       LVL=0
+      01001FA8H   LINE      ---      ---       #75
+      01001FADH   LINE      ---      ---       #76
+      01001FADH   LINE      ---      ---       #77
+      01001FB3H   LINE      ---      ---       #78
+      01001FB9H   LINE      ---      ---       #80
+      01001FCDH   LINE      ---      ---       #81
+      01001FD6H   LINE      ---      ---       #82
+      01001FE2H   LINE      ---      ---       #83
+      01001FF2H   LINE      ---      ---       #84
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001A01H   BLOCK     CODE     ---       LVL=0
+      01001A01H   LINE      ---      ---       #88
+      01001A06H   LINE      ---      ---       #89
+      01001A06H   LINE      ---      ---       #90
+      01001A0CH   LINE      ---      ---       #91
+      01001A20H   LINE      ---      ---       #92
+      01001A29H   LINE      ---      ---       #93
+      01001A35H   LINE      ---      ---       #94
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001FF3H   BLOCK     CODE     ---       LVL=0
+      01001FF3H   LINE      ---      ---       #98
+      01001FF3H   LINE      ---      ---       #99
+      01001FF3H   LINE      ---      ---       #100
+      01001FF8H   LINE      ---      ---       #101
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001FF9H   BLOCK     CODE     ---       LVL=0
+      01001FF9H   LINE      ---      ---       #103
+      01001FFEH   LINE      ---      ---       #104
+      01001FFEH   LINE      ---      ---       #105
+      01002004H   LINE      ---      ---       #106
+      01002018H   LINE      ---      ---       #107
+      01002021H   LINE      ---      ---       #108
+      0100202DH   LINE      ---      ---       #109
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001A45H   BLOCK     CODE     ---       LVL=0
+      01001A45H   LINE      ---      ---       #112
+      01001A4AH   LINE      ---      ---       #113
+      01001A4AH   LINE      ---      ---       #114
+      01001A50H   LINE      ---      ---       #115
+      01001A64H   LINE      ---      ---       #116
+      01001A6DH   LINE      ---      ---       #117
+      01001A79H   LINE      ---      ---       #118
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001C26H   BLOCK     CODE     ---       LVL=0
+      01001C26H   LINE      ---      ---       #121
+      01001C26H   LINE      ---      ---       #122
+      01001C26H   LINE      ---      ---       #123
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010015D1H   BLOCK     CODE     ---       LVL=0
+      010015D1H   LINE      ---      ---       #126
+      010015D1H   LINE      ---      ---       #127
+      010015D1H   LINE      ---      ---       #128
+      010015D6H   LINE      ---      ---       #129
+      010015DAH   LINE      ---      ---       #130
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010016D5H   BLOCK     CODE     ---       LVL=0
+      010016D5H   LINE      ---      ---       #133
+      010016D5H   LINE      ---      ---       #134
+      010016D5H   LINE      ---      ---       #135
+      010016DBH   LINE      ---      ---       #136
+      010016E0H   LINE      ---      ---       #137
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010019E9H   BLOCK     CODE     ---       LVL=0
+      010019E9H   LINE      ---      ---       #139
+      010019E9H   LINE      ---      ---       #140
+      010019E9H   LINE      ---      ---       #141
+      010019FDH   LINE      ---      ---       #142
+      010019FFH   LINE      ---      ---       #143
+      01001A00H   LINE      ---      ---       #144
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001D98H   BLOCK     CODE     ---       LVL=0
+      01001D98H   LINE      ---      ---       #147
+      01001D98H   LINE      ---      ---       #148
+      01001D98H   BLOCK     CODE     NEAR LAB  LVL=1
+      01001D98H   LINE      ---      ---       #149
+      01001DAAH   LINE      ---      ---       #150
+      01001DC0H   LINE      ---      ---       #151
+      01001DC0H   LINE      ---      ---       #152
+      01001DCAH   LINE      ---      ---       #153
+      01001DDBH   LINE      ---      ---       #154
+      01001DE5H   LINE      ---      ---       #155
+      01001E04H   LINE      ---      ---       #156
+      01001E06H   LINE      ---      ---       #157
+      01001E18H   LINE      ---      ---       #158
+      01001E21H   LINE      ---      ---       #159
+      01001E39H   LINE      ---      ---       #160
+      01001E71H   LINE      ---      ---       #161
+      01001E73H   LINE      ---      ---       #162
+      01001E85H   LINE      ---      ---       #163
+      01001E8EH   LINE      ---      ---       #164
+      01001EA6H   LINE      ---      ---       #165
+      01001EDEH   LINE      ---      ---       #166
+      01001EE0H   LINE      ---      ---       #167
+      01001EF2H   LINE      ---      ---       #168
+      01001EFBH   LINE      ---      ---       #169
+      01001F13H   LINE      ---      ---       #170
+      01001F4BH   LINE      ---      ---       #171
+      01001F4DH   LINE      ---      ---       #172
+      01001F4DH   LINE      ---      ---       #173
+      01001F4FH   LINE      ---      ---       #174
+      01001F4FH   LINE      ---      ---       #175
+      01001F4FH   LINE      ---      ---       #176
+      01001F63H   LINE      ---      ---       #177
+      01001F71H   LINE      ---      ---       #179
+      01001F74H   LINE      ---      ---       #180
+      01001F82H   LINE      ---      ---       #181
+      01001F84H   LINE      ---      ---       #182
+      01001F8EH   LINE      ---      ---       #183
+      01001F9CH   LINE      ---      ---       #185
+      01001F9FH   LINE      ---      ---       #186
+      01001FA5H   LINE      ---      ---       #187
+      01001FA7H   LINE      ---      ---       #189
+      01001F4FH   SYMBOL    ---      ---       IPC_TIMERingleStep
+      02001C22H   SYMBOL    XDATA    VOID      pbuff
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      ---         MODULE    ---      ---       ADC
+      010014EEH   PUBLIC    CODE     ---       ADC_Get0vBase
+      010015A9H   PUBLIC    CODE     ---       ADC_Get3vBase
+      010016E1H   PUBLIC    CODE     ---       ADC_GetCurrentValue
+
+      010016E1H   BLOCK     CODE     ---       LVL=0
+      010016E1H   LINE      ---      ---       #4
+      010016E1H   LINE      ---      ---       #5
+      010016E1H   LINE      ---      ---       #6
+      010016E9H   LINE      ---      ---       #7
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010015A9H   BLOCK     CODE     ---       LVL=0
+      010015A9H   LINE      ---      ---       #9
+      010015A9H   LINE      ---      ---       #10
+      010015A9H   LINE      ---      ---       #11
+      010015B1H   LINE      ---      ---       #12
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010014EEH   BLOCK     CODE     ---       LVL=0
+      010014EEH   LINE      ---      ---       #14
+      010014EEH   LINE      ---      ---       #15
+      010014EEH   LINE      ---      ---       #16
+      010014F6H   LINE      ---      ---       #17
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       GLOBAL_VARIABLE
+      02004954H   PUBLIC    XDATA    BYTE      m_new24gAbortPac
+      02004E81H   PUBLIC    XDATA    BYTE      m_bleDataWheel
+      02004E80H   PUBLIC    XDATA    BYTE      m_shortDataWheel
+      020049C1H   PUBLIC    XDATA    BYTE      m_btWakeupFromLongMult
+      020042D1H   PUBLIC    XDATA    WORD      m_adcCurrentValue
+      02000040H   PUBLIC    XDATA    ---       m_remoteAddr
+      020049C0H   PUBLIC    XDATA    BYTE      m_new24gOtaEnable
+      02004273H   PUBLIC    XDATA    ---       m_reconnAddr
+      0200470BH   PUBLIC    XDATA    WORD      m_uiStateMap
+      02004EA7H   PUBLIC    XDATA    BYTE      m_leStartAdv
+      02004E78H   PUBLIC    XDATA    BYTE      m_enable24gShortLpm
+      0200494FH   PUBLIC    XDATA    BYTE      m_new24gIntMax
+      0200494EH   PUBLIC    XDATA    BYTE      m_new24gIntMin
+      020042B8H   PUBLIC    XDATA    BYTE      m_powerOnFlag
+      02004906H   PUBLIC    XDATA    ---       m_24gRxPayload
+      02004E84H   PUBLIC    XDATA    BYTE      m_51ReadSensor
+      02004E83H   PUBLIC    XDATA    BYTE      m_BtReadIpcCount
+      02004261H   PUBLIC    XDATA    ---       m_linkKey
+      02004E82H   PUBLIC    XDATA    BYTE      m_bleDataWheelLpmTimer
+      020049C2H   PUBLIC    XDATA    BYTE      m_btMotionEvent
+      02004E43H   PUBLIC    XDATA    WORD      m_adc3vValue
+      02004E7FH   PUBLIC    XDATA    BYTE      m_IpcIsReady
+      02004131H   PUBLIC    XDATA    BYTE      m_lpmMode
+      02004E41H   PUBLIC    XDATA    WORD      m_adc0vBase
+      02001C32H   PUBLIC    XDATA    BYTE      m_FastConnSendEmptyCount
+      02004950H   PUBLIC    XDATA    ---       m_24gAddr
+      02004EA6H   PUBLIC    XDATA    BYTE      m_mouseFastConnFlag
+      02004EBBH   PUBLIC    XDATA    ---       g_variable
+      020049B7H   PUBLIC    XDATA    BYTE      m_new24gKWEvent
+      02000372H   PUBLIC    XDATA    ---       m_remoteLeAddr
+      02004E21H   PUBLIC    XDATA    ---       m_hidBuff
+      02004595H   PUBLIC    XDATA    BYTE      m_bleSendDataFlag
+      0200453EH   PUBLIC    XDATA    ---       m_reconnLeAddr
+      02004E7DH   PUBLIC    XDATA    BYTE      m_sendData24gShortLpm
+
+      ---         MODULE    ---      ---       SENSOR
+      01002152H   PUBLIC    CODE     ---       Drawing_optima_init
+      01002050H   PUBLIC    CODE     ---       Drawing_optima
+      0100203DH   PUBLIC    CODE     ---       _abs
+      01000CE3H   PUBLIC    CODE     ---       sensorPowerOn
+      01000F4AH   PUBLIC    CODE     ---       sensorPowerDown
+      01000B70H   PUBLIC    CODE     ---       Sensor_spi_disable
+      01000873H   PUBLIC    CODE     ---       SPI_ResetSensor
+      01000CF9H   PUBLIC    CODE     ---       SPI_TwReset
+
+      01000CF9H   BLOCK     CODE     ---       LVL=0
+      01000CF9H   LINE      ---      ---       #67
+      01000CF9H   LINE      ---      ---       #68
+      01000CF9H   BLOCK     CODE     NEAR LAB  LVL=1
+      01000CF9H   LINE      ---      ---       #69
+      01000CFEH   LINE      ---      ---       #70
+      01000D03H   LINE      ---      ---       #71
+      01000D08H   LINE      ---      ---       #72
+      01000D08H   LINE      ---      ---       #73
+      01000D08H   LINE      ---      ---       #74
+      01000D0EH   LINE      ---      ---       #75
+      01000D14H   LINE      ---      ---       #76
+      01000D14H   LINE      ---      ---       #77
+      01000D17H   LINE      ---      ---       #78
+      01000D17H   LINE      ---      ---       #79
+      01000D20H   LINE      ---      ---       #80
+      01000D29H   LINE      ---      ---       #81
+      01000D29H   LINE      ---      ---       #82
+      01000D2EH   LINE      ---      ---       #83
+      01000D35H   LINE      ---      ---       #84
+      01000D3CH   LINE      ---      ---       #85
+      01000D43H   LINE      ---      ---       #86
+      01000D49H   LINE      ---      ---       #87
+      01000D4BH   LINE      ---      ---       #88
+      02001C33H   SYMBOL    XDATA    VOID      sensorId
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01000873H   BLOCK     CODE     ---       LVL=0
+      01000873H   LINE      ---      ---       #90
+      01000873H   LINE      ---      ---       #91
+      01000873H   BLOCK     CODE     NEAR LAB  LVL=1
+      01000873H   LINE      ---      ---       #92
+      01000878H   LINE      ---      ---       #93
+      0100087AH   LINE      ---      ---       #94
+      0100087AH   LINE      ---      ---       #95
+      0100087AH   LINE      ---      ---       #96
+      01000881H   LINE      ---      ---       #97
+      01000881H   LINE      ---      ---       #98
+      0100088DH   LINE      ---      ---       #99
+      01000891H   LINE      ---      ---       #100
+      01000897H   LINE      ---      ---       #101
+      01000899H   LINE      ---      ---       #102
+      01000899H   LINE      ---      ---       #103
+      010008A0H   LINE      ---      ---       #104
+      010008A0H   LINE      ---      ---       #105
+      010008A6H   LINE      ---      ---       #106
+      010008B2H   LINE      ---      ---       #107
+      010008B6H   LINE      ---      ---       #108
+      010008B8H   LINE      ---      ---       #109
+      010008B8H   LINE      ---      ---       #110
+      010008C3H   LINE      ---      ---       #111
+      010008C3H   LINE      ---      ---       #112
+      010008CAH   LINE      ---      ---       #113
+      010008CAH   LINE      ---      ---       #114
+      010008D0H   LINE      ---      ---       #115
+      010008D2H   LINE      ---      ---       #116
+      010008D2H   LINE      ---      ---       #118
+      010008DDH   LINE      ---      ---       #119
+      010008DDH   LINE      ---      ---       #120
+      010008E5H   LINE      ---      ---       #121
+      010008EDH   LINE      ---      ---       #123
+      010008F3H   LINE      ---      ---       #124
+      010008FFH   LINE      ---      ---       #125
+      01000903H   LINE      ---      ---       #126
+      01000905H   LINE      ---      ---       #127
+      01000905H   LINE      ---      ---       #131
+      01000910H   LINE      ---      ---       #132
+      01000910H   LINE      ---      ---       #133
+      01000916H   LINE      ---      ---       #134
+      01000922H   LINE      ---      ---       #135
+      01000926H   LINE      ---      ---       #136
+      01000928H   LINE      ---      ---       #137
+      01000928H   LINE      ---      ---       #141
+      0100092FH   LINE      ---      ---       #142
+      0100092FH   LINE      ---      ---       #143
+      0100093BH   LINE      ---      ---       #144
+      0100093FH   LINE      ---      ---       #145
+      01000945H   LINE      ---      ---       #146
+      0100094EH   LINE      ---      ---       #147
+      0100094EH   LINE      ---      ---       #148
+      0100094EH   LINE      ---      ---       #150
+      0100094EH   LINE      ---      ---       #151
+      01000950H   LINE      ---      ---       #152
+      01000952H   LINE      ---      ---       #155
+      0100095CH   LINE      ---      ---       #156
+      0100095CH   LINE      ---      ---       #157
+      01000962H   LINE      ---      ---       #158
+      01000968H   LINE      ---      ---       #159
+      0100096EH   LINE      ---      ---       #160
+      01000974H   LINE      ---      ---       #161
+      0100097AH   LINE      ---      ---       #162
+      01000980H   LINE      ---      ---       #163
+      01000986H   LINE      ---      ---       #164
+      0100098CH   LINE      ---      ---       #165
+      01000992H   LINE      ---      ---       #166
+      01000998H   LINE      ---      ---       #167
+      0100099EH   LINE      ---      ---       #168
+      010009A4H   LINE      ---      ---       #169
+      010009AAH   LINE      ---      ---       #170
+      010009B0H   LINE      ---      ---       #171
+      010009B6H   LINE      ---      ---       #172
+      010009BCH   LINE      ---      ---       #173
+      010009C2H   LINE      ---      ---       #174
+      010009C8H   LINE      ---      ---       #175
+      010009CEH   LINE      ---      ---       #176
+      010009D4H   LINE      ---      ---       #177
+      010009DAH   LINE      ---      ---       #178
+      010009E0H   LINE      ---      ---       #179
+      010009E6H   LINE      ---      ---       #180
+      010009ECH   LINE      ---      ---       #181
+      010009F2H   LINE      ---      ---       #182
+      010009F8H   LINE      ---      ---       #183
+      010009FEH   LINE      ---      ---       #184
+      01000A04H   LINE      ---      ---       #185
+      01000A0AH   LINE      ---      ---       #186
+      01000A10H   LINE      ---      ---       #187
+      01000A16H   LINE      ---      ---       #188
+      01000A1CH   LINE      ---      ---       #189
+      01000A22H   LINE      ---      ---       #190
+      01000A22H   LINE      ---      ---       #194
+      01000A29H   LINE      ---      ---       #195
+      01000A29H   LINE      ---      ---       #196
+      01000A2FH   LINE      ---      ---       #197
+      01000A35H   LINE      ---      ---       #198
+      01000A3BH   LINE      ---      ---       #199
+      01000A41H   LINE      ---      ---       #200
+      01000A41H   LINE      ---      ---       #204
+      01000A49H   LINE      ---      ---       #205
+      01000A49H   LINE      ---      ---       #206
+      01000A4FH   LINE      ---      ---       #207
+      01000A55H   LINE      ---      ---       #208
+      01000A5EH   LINE      ---      ---       #209
+      01000A66H   LINE      ---      ---       #210
+      01000A6FH   LINE      ---      ---       #211
+      01000A77H   LINE      ---      ---       #212
+      01000A80H   LINE      ---      ---       #213
+      01000A88H   LINE      ---      ---       #214
+      01000A88H   LINE      ---      ---       #217
+      01000A8DH   LINE      ---      ---       #218
+      02001C27H   SYMBOL    XDATA    VOID      sensorConfig
+      02001C28H   SYMBOL    XDATA    VOID      Sensor_type
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01000B70H   BLOCK     CODE     ---       LVL=0
+      01000B70H   LINE      ---      ---       #220
+      01000B70H   LINE      ---      ---       #221
+      01000B70H   LINE      ---      ---       #222
+      01000B75H   LINE      ---      ---       #223
+      01000B7CH   LINE      ---      ---       #224
+      01000B83H   LINE      ---      ---       #225
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000F4AH   BLOCK     CODE     ---       LVL=0
+      01000F4AH   LINE      ---      ---       #227
+      01000F4AH   LINE      ---      ---       #228
+      01000F4AH   BLOCK     CODE     NEAR LAB  LVL=1
+      01000F4AH   LINE      ---      ---       #229
+      01000F4CH   LINE      ---      ---       #230
+      01000F4EH   LINE      ---      ---       #231
+      01000F56H   LINE      ---      ---       #232
+      01000F5AH   LINE      ---      ---       #233
+      01000F5FH   LINE      ---      ---       #234
+      01000F66H   LINE      ---      ---       #235
+      00000007H   SYMBOL    DATA     VOID      config
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01000CE3H   BLOCK     CODE     ---       LVL=0
+      01000CE3H   LINE      ---      ---       #238
+      01000CE3H   LINE      ---      ---       #239
+      01000CE3H   BLOCK     CODE     NEAR LAB  LVL=1
+      01000CE3H   LINE      ---      ---       #240
+      01000CE5H   LINE      ---      ---       #241
+      01000CE7H   LINE      ---      ---       #242
+      01000CEFH   LINE      ---      ---       #243
+      01000CF3H   LINE      ---      ---       #244
+      01000CF7H   LINE      ---      ---       #245
+      00000007H   SYMBOL    DATA     VOID      config
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      0100203DH   BLOCK     CODE     ---       LVL=0
+      0100203DH   LINE      ---      ---       #259
+      0100203DH   LINE      ---      ---       #260
+      0100203DH   LINE      ---      ---       #261
+      01002048H   LINE      ---      ---       #262
+      0100204FH   LINE      ---      ---       #263
+      0100204FH   LINE      ---      ---       #264
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01002050H   BLOCK     CODE     ---       LVL=0
+      01002050H   LINE      ---      ---       #267
+      01002050H   LINE      ---      ---       #268
+      01002050H   LINE      ---      ---       #269
+      01002088H   LINE      ---      ---       #270
+      0100208EH   LINE      ---      ---       #271
+      010020B2H   LINE      ---      ---       #272
+      010020B5H   LINE      ---      ---       #273
+      010020BFH   LINE      ---      ---       #274
+      010020E7H   LINE      ---      ---       #275
+      010020F6H   LINE      ---      ---       #276
+      010020FEH   LINE      ---      ---       #277
+      01002126H   LINE      ---      ---       #278
+      01002135H   LINE      ---      ---       #279
+      0100213DH   LINE      ---      ---       #280
+      0100213EH   LINE      ---      ---       #281
+      01002145H   LINE      ---      ---       #282
+      01002149H   LINE      ---      ---       #283
+      0100214DH   LINE      ---      ---       #284
+      01002151H   LINE      ---      ---       #285
+      01002151H   LINE      ---      ---       #286
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01002152H   BLOCK     CODE     ---       LVL=0
+      01002152H   LINE      ---      ---       #288
+      01002152H   LINE      ---      ---       #289
+      01002152H   LINE      ---      ---       #290
+      01002159H   LINE      ---      ---       #291
+      0100215DH   LINE      ---      ---       #292
+      01002161H   LINE      ---      ---       #293
+      01002165H   LINE      ---      ---       #294
+      01002169H   LINE      ---      ---       #295
+      0100216FH   LINE      ---      ---       #296
+      01002173H   LINE      ---      ---       #297
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       ?C_STARTUP
+      01000000H   PUBLIC    CODE     ---       ?C_STARTUP
+
+      ---         MODULE    ---      ---       ?C?COPY
+      010000D3H   PUBLIC    CODE     ---       ?C?COPY
+
+      ---         MODULE    ---      ---       ?C?CLDPTR
+      010000F9H   PUBLIC    CODE     ---       ?C?CLDPTR
+
+      ---         MODULE    ---      ---       ?C?CLDOPTR
+      01000112H   PUBLIC    CODE     ---       ?C?CLDOPTR
+
+      ---         MODULE    ---      ---       ?C?CSTPTR
+      0100013FH   PUBLIC    CODE     ---       ?C?CSTPTR
+
+      ---         MODULE    ---      ---       ?C?IMUL
+      01000151H   PUBLIC    CODE     ---       ?C?IMUL
+
+      ---         MODULE    ---      ---       ?C?UIDIV
+      01000163H   PUBLIC    CODE     ---       ?C?UIDIV
+
+      ---         MODULE    ---      ---       ?C?SIDIV
+      010001B8H   PUBLIC    CODE     ---       ?C?SIDIV
+
+      ---         MODULE    ---      ---       ?C?IILDX
+      010001EEH   PUBLIC    CODE     ---       ?C?IILDX
+
+      ---         MODULE    ---      ---       ?C?ILDIX
+      01000204H   PUBLIC    CODE     ---       ?C?ILDIX
+
+      ---         MODULE    ---      ---       ?C?CCASE
+      0100021AH   PUBLIC    CODE     ---       ?C?CCASE
+
+      ---         MODULE    ---      ---       ?C?ICALL
+      01000240H   PUBLIC    CODE     ---       ?C?ICALL
+      01000244H   PUBLIC    CODE     ---       ?C?ICALL2
+
+      ---         MODULE    ---      ---       ?C_INIT
+      0100028DH   PUBLIC    CODE     ---       ?C_START
+
+Program Size: data=10.3 xdata=858 const=9 code=8555
+LX51 RUN COMPLETE.  0 WARNING(S),  0 ERROR(S)
Index: Standard_mouse/c51/output/FW.SBR
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: Standard_mouse/c51/output/FW.SBR
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/FW.SBR	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/FW.SBR	(working copy)

Property changes on: Standard_mouse/c51/output/FW.SBR
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Standard_mouse/c51/output/eeprom.dat
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/eeprom.dat	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/eeprom.dat	(working copy)
@@ -0,0 +1,32768 @@
+00
+02
+aa
+55
+06
+1b
+c5
+12
+80
+0f
+c0
+00
+00
+24
+c0
+01
+80
+2f
+c0
+43
+00
+35
+c0
+45
+00
+3f
+c0
+45
+80
+61
+c0
+53
+80
+6d
+c0
+54
+00
+74
+c0
+54
+80
+88
+c0
+56
+00
+9b
+c0
+5a
+03
+49
+c0
+5a
+80
+b4
+c0
+5b
+00
+bb
+c0
+5b
+80
+dd
+20
+20
+3b
+34
+c0
+02
+81
+17
+c0
+0b
+01
+1c
+c0
+0d
+81
+20
+c0
+11
+81
+23
+c0
+17
+81
+47
+c0
+18
+81
+5c
+c0
+19
+01
+6e
+c0
+19
+81
+81
+c0
+1c
+81
+92
+c0
+1e
+01
+9f
+c0
+1e
+81
+b2
+c0
+1f
+01
+b8
+c0
+1f
+81
+d1
+c0
+21
+01
+ef
+c0
+26
+81
+f4
+c0
+4a
+82
+25
+c0
+79
+82
+2c
+c0
+7b
+82
+38
+c0
+7c
+02
+6f
+c0
+7c
+82
+75
+20
+20
+3b
+34
+20
+80
+00
+00
+24
+35
+b0
+04
+68
+00
+c5
+95
+24
+3a
+00
+2d
+68
+00
+ce
+78
+20
+3a
+30
+04
+70
+4e
+7f
+00
+c5
+93
+30
+04
+24
+35
+b0
+04
+70
+82
+80
+03
+20
+20
+30
+04
+20
+40
+02
+7f
+20
+40
+04
+3d
+20
+40
+02
+bd
+68
+00
+ce
+78
+24
+3a
+03
+83
+20
+20
+30
+1b
+20
+30
+b9
+a3
+70
+89
+55
+d4
+20
+00
+00
+04
+70
+89
+55
+d2
+20
+00
+00
+04
+70
+89
+55
+d1
+20
+00
+00
+04
+68
+00
+c2
+80
+c0
+0a
+39
+ae
+20
+20
+39
+9c
+60
+08
+80
+17
+18
+40
+a2
+00
+20
+40
+3a
+13
+58
+00
+05
+00
+20
+40
+3b
+35
+70
+89
+06
+01
+70
+89
+00
+3c
+70
+89
+01
+e0
+70
+89
+6d
+12
+20
+00
+00
+0a
+70
+89
+02
+01
+70
+89
+02
+3d
+20
+00
+00
+0a
+70
+89
+03
+b7
+20
+00
+00
+0a
+70
+89
+02
+7f
+68
+00
+c2
+80
+c0
+0a
+00
+5e
+c2
+80
+80
+58
+c2
+81
+00
+58
+70
+89
+4c
+5b
+70
+89
+4d
+96
+70
+89
+4e
+2c
+70
+89
+4f
+46
+20
+20
+00
+5c
+70
+89
+4c
+fb
+70
+89
+4d
+ef
+70
+89
+4e
+ec
+70
+89
+4f
+5e
+68
+00
+c2
+80
+20
+20
+39
+dc
+70
+89
+56
+c2
+70
+89
+55
+d0
+20
+60
+00
+00
+20
+40
+3c
+d2
+20
+40
+3a
+5f
+70
+80
+42
+06
+68
+10
+89
+68
+79
+20
+7e
+07
+60
+10
+89
+68
+79
+3f
+fe
+07
+60
+10
+89
+68
+79
+20
+7e
+07
+60
+10
+89
+68
+70
+80
+42
+05
+20
+20
+3a
+0c
+20
+40
+3c
+2b
+68
+00
+ce
+45
+20
+7a
+00
+00
+70
+4e
+45
+00
+1c
+42
+7e
+00
+60
+02
+48
+9e
+20
+60
+00
+00
+c6
+13
+00
+00
+20
+40
+3b
+e2
+68
+01
+c2
+0f
+20
+7a
+00
+00
+68
+01
+40
+42
+d8
+40
+ff
+ff
+98
+46
+7c
+00
+20
+62
+80
+00
+68
+00
+c1
+31
+20
+7a
+00
+00
+20
+40
+48
+16
+24
+7a
+00
+00
+20
+40
+3d
+0e
+24
+7a
+00
+00
+20
+40
+3a
+7b
+68
+00
+c6
+e2
+20
+3a
+3c
+5e
+68
+00
+c6
+39
+20
+7a
+00
+00
+20
+20
+3c
+5e
+68
+00
+c5
+95
+20
+3a
+00
+95
+68
+00
+80
+9f
+24
+3a
+00
+95
+68
+00
+ce
+83
+68
+08
+ce
+84
+98
+46
+7c
+00
+24
+62
+80
+00
+68
+00
+ce
+81
+24
+7a
+00
+00
+58
+00
+00
+00
+60
+04
+00
+a0
+20
+20
+3c
+6a
+20
+40
+00
+a0
+24
+74
+00
+00
+68
+00
+8b
+2b
+24
+7a
+00
+00
+70
+49
+c1
+00
+20
+20
+3c
+6a
+20
+40
+00
+a0
+24
+74
+00
+00
+68
+00
+8b
+2b
+24
+7a
+00
+00
+20
+20
+3c
+8c
+20
+40
+00
+ab
+24
+74
+00
+00
+20
+40
+00
+a8
+24
+74
+00
+00
+70
+0b
+2b
+01
+70
+0b
+2a
+01
+20
+40
+00
+b0
+20
+20
+00
+ab
+68
+01
+48
+2c
+68
+09
+48
+2e
+20
+20
+00
+ad
+68
+01
+47
+c4
+68
+09
+47
+c6
+98
+46
+7c
+00
+20
+22
+e4
+c0
+20
+20
+31
+d4
+68
+00
+8b
+2a
+20
+00
+00
+0a
+c0
+80
+00
+b0
+20
+60
+00
+00
+70
+00
+16
+27
+70
+01
+50
+00
+70
+01
+7e
+00
+70
+01
+7f
+00
+58
+00
+00
+00
+60
+02
+88
+d2
+20
+60
+00
+00
+da
+20
+46
+f0
+20
+40
+7f
+95
+20
+7a
+00
+00
+1f
+e2
+26
+00
+20
+40
+00
+c1
+20
+20
+3d
+9b
+c1
+0c
+00
+00
+c0
+0a
+00
+c6
+c0
+0a
+80
+d0
+c0
+14
+80
+db
+20
+20
+3d
+73
+70
+4e
+83
+00
+70
+42
+12
+00
+70
+4e
+bb
+00
+70
+4e
+51
+14
+20
+40
+3e
+61
+20
+40
+3e
+59
+20
+40
+3e
+7f
+20
+40
+3e
+20
+70
+4e
+b9
+01
+20
+20
+3d
+c2
+70
+4e
+a4
+00
+20
+40
+03
+04
+70
+44
+b2
+00
+70
+42
+12
+00
+70
+4e
+bb
+00
+70
+4e
+51
+00
+70
+45
+6a
+00
+68
+09
+4e
+4e
+60
+09
+44
+f8
+20
+40
+52
+a0
+20
+20
+3d
+c6
+20
+40
+01
+05
+20
+20
+7e
+3b
+60
+08
+82
+4e
+68
+00
+c8
+9c
+1f
+e0
+fe
+01
+60
+00
+c8
+9c
+68
+00
+82
+4e
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+82
+4e
+20
+40
+01
+08
+20
+40
+00
+eb
+20
+40
+01
+11
+20
+40
+00
+f7
+20
+40
+00
+fe
+20
+20
+00
+e1
+68
+00
+ce
+bb
+20
+7a
+00
+00
+68
+00
+c2
+12
+2f
+e1
+fe
+20
+24
+40
+80
+f5
+68
+00
+c1
+31
+20
+5a
+00
+f3
+20
+60
+00
+00
+70
+41
+31
+01
+20
+60
+00
+00
+70
+42
+12
+20
+20
+60
+00
+00
+68
+00
+c9
+ba
+20
+7a
+00
+00
+70
+4e
+80
+00
+1f
+e0
+ff
+ff
+60
+00
+c9
+ba
+24
+7a
+00
+00
+20
+60
+00
+00
+68
+00
+ce
+82
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+ce
+82
+24
+7a
+00
+00
+70
+4e
+81
+00
+20
+60
+00
+00
+20
+40
+3e
+7f
+70
+09
+bd
+12
+20
+20
+7d
+90
+68
+00
+ce
+51
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+ce
+51
+24
+7a
+00
+00
+70
+42
+12
+20
+70
+41
+31
+01
+70
+4e
+bb
+01
+20
+60
+00
+00
+68
+00
+ce
+52
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+ce
+52
+24
+7a
+00
+00
+20
+20
+3e
+6d
+20
+40
+49
+68
+20
+40
+4b
+51
+20
+40
+4b
+d8
+20
+40
+06
+16
+20
+20
+49
+45
+20
+40
+3a
+50
+1f
+e2
+22
+00
+20
+40
+06
+54
+20
+20
+4a
+3d
+68
+02
+4e
+48
+60
+02
+45
+96
+20
+20
+4a
+8c
+70
+41
+31
+01
+68
+01
+03
+7c
+68
+09
+03
+82
+98
+46
+7e
+00
+60
+01
+09
+be
+68
+00
+83
+62
+79
+3f
+fe
+05
+79
+3f
+fe
+03
+60
+00
+83
+62
+68
+02
+03
+66
+68
+09
+03
+64
+60
+09
+09
+c6
+98
+46
+22
+00
+68
+00
+c4
+5b
+60
+00
+83
+8d
+e8
+c9
+00
+00
+e8
+c1
+00
+00
+1f
+eb
+fe
+00
+60
+01
+03
+64
+18
+4b
+84
+00
+98
+40
+fe
+00
+e8
+ca
+00
+00
+60
+0a
+03
+8e
+9a
+20
+fe
+00
+1f
+e2
+28
+00
+68
+01
+03
+64
+68
+09
+09
+c6
+98
+46
+7e
+00
+68
+09
+09
+be
+98
+4f
+fe
+00
+9a
+80
+fe
+00
+60
+02
+03
+66
+20
+40
+51
+99
+68
+01
+03
+90
+60
+01
+45
+61
+20
+60
+00
+00
+68
+00
+83
+79
+c2
+82
+81
+58
+20
+40
+06
+08
+70
+4e
+62
+00
+68
+00
+ce
+20
+24
+3a
+01
+52
+68
+00
+ce
+a5
+c0
+00
+81
+56
+68
+00
+83
+03
+20
+3a
+4b
+de
+20
+20
+4f
+87
+68
+00
+ce
+20
+1f
+e0
+ff
+ff
+60
+00
+ce
+20
+20
+20
+4f
+87
+70
+4e
+20
+03
+20
+20
+4b
+de
+68
+00
+ce
+62
+1f
+e0
+fe
+01
+60
+00
+ce
+62
+20
+20
+06
+0c
+68
+00
+c4
+67
+c0
+03
+01
+60
+c0
+01
+01
+67
+20
+20
+4b
+fb
+68
+00
+ce
+53
+c0
+00
+81
+64
+20
+40
+3e
+6d
+20
+20
+4c
+86
+20
+40
+01
+05
+70
+4e
+52
+03
+20
+20
+4c
+90
+58
+00
+00
+13
+e0
+a0
+80
+00
+20
+40
+4c
+58
+58
+00
+00
+0a
+60
+01
+03
+90
+60
+01
+45
+61
+20
+60
+00
+00
+68
+00
+c4
+6b
+c0
+01
+01
+75
+c0
+03
+01
+7c
+c0
+03
+81
+73
+20
+20
+4c
+18
+70
+4e
+a5
+00
+20
+20
+4d
+17
+59
+00
+03
+02
+60
+01
+c4
+dc
+58
+00
+00
+01
+e0
+a0
+80
+00
+58
+01
+00
+10
+e0
+a1
+80
+00
+20
+20
+4c
+cd
+70
+09
+bd
+29
+20
+40
+7d
+86
+70
+09
+bd
+47
+20
+40
+4b
+d6
+20
+20
+4d
+01
+68
+00
+c4
+6b
+c0
+0d
+81
+85
+c0
+0e
+81
+85
+20
+20
+4c
+2b
+68
+09
+4e
+4e
+60
+09
+44
+6c
+68
+00
+ce
+86
+1f
+e0
+84
+01
+18
+41
+04
+03
+60
+08
+ce
+86
+1f
+ef
+fe
+07
+d8
+c0
+4e
+87
+98
+c0
+8c
+00
+e8
+c3
+80
+00
+60
+03
+c4
+6e
+d8
+40
+00
+0e
+20
+20
+4f
+89
+60
+08
+c4
+66
+28
+20
+06
+02
+24
+20
+81
+97
+18
+40
+ff
+fc
+60
+01
+44
+67
+68
+08
+83
+79
+20
+40
+01
+9a
+20
+20
+4f
+92
+68
+00
+ce
+a5
+c0
+00
+81
+9d
+20
+20
+4b
+d0
+58
+00
+00
+00
+20
+60
+00
+00
+1a
+62
+7e
+00
+c0
+00
+01
+a5
+c0
+01
+01
+a8
+c0
+01
+81
+ac
+c0
+05
+01
+b0
+20
+20
+4f
+b9
+70
+41
+31
+00
+70
+4e
+51
+3c
+20
+20
+50
+1f
+20
+40
+50
+33
+58
+00
+00
+00
+60
+04
+45
+44
+20
+60
+00
+00
+20
+40
+50
+39
+68
+00
+c5
+6a
+c1
+01
+00
+00
+20
+20
+64
+18
+70
+09
+bd
+2b
+20
+20
+4b
+d6
+e8
+c0
+80
+00
+c0
+00
+81
+b5
+20
+20
+4f
+fe
+70
+4e
+a5
+01
+70
+4e
+20
+03
+20
+20
+50
+69
+e8
+c1
+80
+00
+60
+01
+83
+9a
+c0
+09
+01
+bc
+20
+20
+50
+11
+70
+41
+31
+01
+20
+40
+01
+c8
+68
+00
+83
+9b
+1f
+e6
+7c
+60
+20
+22
+81
+cd
+70
+4e
+a6
+00
+20
+40
+51
+25
+24
+62
+80
+00
+68
+00
+ce
+a6
+24
+5a
+01
+cf
+70
+09
+bd
+13
+20
+20
+4b
+d6
+68
+00
+83
+03
+1f
+e0
+ff
+f9
+1f
+e2
+72
+00
+1f
+22
+24
+00
+20
+20
+51
+35
+70
+4e
+a6
+01
+20
+20
+01
+c2
+70
+09
+bd
+29
+20
+20
+7d
+86
+68
+00
+c3
+ff
+20
+7a
+00
+00
+d8
+e0
+00
+01
+20
+40
+7e
+e2
+24
+7a
+00
+00
+78
+54
+fc
+00
+78
+28
+7c
+00
+20
+40
+4b
+1e
+20
+40
+49
+d4
+20
+40
+4a
+8a
+24
+36
+81
+e3
+68
+00
+80
+03
+1f
+e0
+fe
+01
+60
+00
+80
+03
+68
+00
+83
+02
+1f
+e1
+7e
+0f
+c0
+01
+81
+ed
+c0
+02
+d1
+af
+68
+00
+80
+16
+c0
+93
+d1
+7d
+18
+0a
+7e
+00
+d8
+40
+01
+ff
+98
+41
+7e
+00
+1f
+e0
+fe
+fa
+1f
+e0
+ff
+ff
+20
+00
+00
+26
+24
+3a
+01
+e9
+20
+20
+51
+96
+20
+40
+4a
+c5
+20
+20
+01
+e3
+68
+02
+45
+96
+d8
+40
+ea
+60
+98
+40
+fe
+00
+60
+02
+45
+96
+20
+20
+51
+a9
+78
+55
+fc
+00
+20
+37
+01
+f7
+24
+36
+82
+06
+20
+40
+3c
+b7
+68
+01
+41
+61
+60
+01
+03
+70
+68
+00
+83
+02
+2f
+e0
+06
+01
+24
+20
+bc
+cb
+68
+00
+c4
+65
+2f
+e0
+06
+01
+24
+20
+bc
+cb
+20
+40
+4b
+d0
+24
+3a
+3c
+cb
+68
+00
+ce
+62
+1f
+e6
+7c
+01
+24
+21
+3c
+cb
+20
+20
+52
+97
+68
+09
+41
+61
+68
+01
+4e
+60
+98
+40
+84
+00
+18
+43
+04
+00
+68
+01
+03
+70
+98
+40
+fe
+00
+60
+01
+03
+70
+20
+20
+3c
+c3
+20
+40
+02
+1c
+df
+20
+00
+06
+d8
+c0
+4e
+ad
+58
+00
+ff
+ff
+20
+40
+02
+20
+24
+62
+80
+00
+68
+00
+ce
+a8
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+ce
+a8
+20
+40
+3e
+28
+20
+62
+80
+00
+70
+4e
+a7
+01
+20
+60
+00
+00
+d8
+40
+00
+0c
+da
+20
+4e
+ad
+68
+01
+4e
+ab
+20
+20
+62
+4a
+e8
+c9
+00
+00
+98
+46
+7c
+00
+24
+62
+80
+00
+c2
+00
+02
+20
+20
+60
+00
+00
+68
+12
+00
+78
+68
+1a
+00
+7c
+98
+41
+fe
+00
+1f
+e4
+7e
+00
+9a
+21
+7e
+00
+60
+12
+00
+70
+20
+60
+00
+00
+1a
+22
+7e
+00
+20
+7a
+00
+00
+18
+40
+85
+60
+18
+40
+85
+60
+79
+3f
+84
+1c
+60
+0a
+47
+03
+1f
+e2
+04
+00
+da
+20
+46
+f0
+20
+40
+7f
+a6
+24
+7a
+00
+00
+18
+42
+7e
+00
+20
+20
+7d
+7d
+20
+40
+7d
+80
+da
+20
+46
+f8
+20
+40
+7f
+95
+1f
+e2
+04
+00
+20
+40
+7d
+84
+18
+42
+7e
+00
+20
+7a
+00
+00
+c0
+11
+82
+45
+c0
+12
+02
+49
+c0
+12
+82
+4d
+c0
+06
+82
+4f
+c0
+13
+82
+5e
+20
+20
+7d
+b3
+68
+00
+c9
+c3
+60
+00
+c2
+80
+70
+49
+38
+ff
+20
+20
+06
+9c
+68
+00
+c9
+c3
+60
+00
+c2
+80
+79
+3f
+80
+26
+20
+20
+49
+7d
+70
+42
+80
+14
+20
+20
+06
+6d
+79
+3f
+80
+26
+70
+41
+31
+00
+18
+0a
+7e
+00
+60
+00
+c5
+3e
+58
+26
+10
+0e
+60
+01
+c5
+41
+70
+4e
+53
+00
+68
+09
+4e
+4e
+60
+09
+44
+f8
+20
+40
+52
+a0
+da
+40
+00
+05
+20
+40
+02
+68
+1a
+42
+7e
+00
+e0
+c0
+80
+00
+20
+20
+7e
+07
+79
+3f
+80
+26
+70
+41
+31
+00
+70
+4e
+53
+01
+68
+09
+4e
+4e
+20
+40
+4f
+6a
+1a
+22
+0a
+00
+58
+00
+00
+01
+e0
+a0
+80
+00
+da
+40
+00
+04
+20
+20
+02
+5a
+da
+20
+44
+01
+ea
+20
+80
+00
+20
+7a
+00
+00
+98
+c0
+a2
+00
+e8
+c0
+80
+00
+c1
+00
+80
+00
+20
+20
+02
+69
+20
+40
+58
+c5
+24
+3a
+7d
+e5
+68
+00
+89
+bd
+c5
+84
+fd
+e0
+c0
+0f
+82
+95
+20
+20
+7d
+d0
+70
+0b
+2a
+03
+20
+40
+00
+b0
+70
+4e
+45
+5a
+20
+40
+3c
+fc
+68
+12
+01
+38
+79
+3f
+fe
+0f
+60
+12
+00
+4c
+20
+40
+3c
+f4
+d8
+5f
+ff
+ff
+20
+20
+3c
+11
+68
+0a
+48
+9e
+1c
+42
+7e
+00
+98
+46
+7e
+00
+d8
+40
+06
+40
+98
+46
+fc
+00
+20
+40
+7f
+53
+18
+07
+fe
+00
+20
+7a
+00
+00
+1c
+42
+04
+00
+60
+0a
+48
+9e
+68
+09
+48
+98
+18
+50
+84
+00
+98
+40
+fe
+00
+1f
+f0
+fe
+00
+60
+01
+48
+98
+1f
+f0
+fe
+00
+1f
+e1
+7e
+03
+c1
+80
+00
+00
+20
+40
+02
+b3
+24
+76
+00
+00
+68
+00
+c2
+cf
+c2
+81
+02
+96
+20
+60
+00
+00
+68
+10
+80
+78
+79
+3f
+fe
+05
+60
+10
+80
+78
+70
+89
+71
+8f
+68
+00
+c2
+d0
+60
+10
+89
+73
+20
+40
+02
+a1
+68
+10
+80
+78
+79
+20
+7e
+05
+60
+10
+80
+78
+20
+60
+00
+00
+68
+10
+80
+53
+79
+20
+7e
+07
+60
+10
+80
+53
+68
+10
+89
+73
+1f
+e1
+fe
+30
+60
+10
+89
+73
+70
+89
+06
+7c
+70
+89
+72
+aa
+20
+00
+13
+88
+68
+19
+01
+50
+68
+10
+80
+53
+79
+3f
+fe
+07
+60
+10
+80
+53
+18
+50
+84
+00
+60
+09
+42
+d1
+20
+60
+00
+00
+78
+36
+7c
+00
+20
+60
+00
+00
+78
+56
+7c
+00
+20
+40
+4b
+d0
+20
+5a
+02
+b1
+68
+00
+c9
+54
+24
+5a
+02
+b1
+20
+60
+00
+00
+70
+4e
+a3
+01
+20
+40
+02
+bd
+70
+4e
+a3
+00
+20
+60
+00
+00
+20
+40
+00
+ab
+20
+74
+00
+00
+1f
+f0
+fe
+00
+1f
+e2
+0c
+00
+20
+40
+02
+e3
+60
+00
+c8
+97
+c0
+00
+82
+ce
+c0
+03
+02
+ff
+1f
+e2
+04
+00
+18
+c2
+22
+00
+68
+00
+c0
+40
+c3
+00
+02
+d8
+1a
+22
+0c
+00
+c6
+84
+80
+00
+18
+42
+7e
+00
+c0
+02
+83
+16
+20
+20
+3b
+31
+20
+40
+02
+e3
+20
+40
+02
+e3
+60
+00
+89
+bd
+20
+40
+02
+d3
+20
+20
+7d
+90
+20
+40
+02
+e6
+18
+c2
+04
+00
+18
+50
+84
+00
+60
+09
+47
+c4
+20
+60
+00
+00
+1a
+22
+0c
+00
+d8
+a0
+00
+f5
+20
+20
+02
+db
+20
+40
+02
+e3
+1f
+e2
+72
+00
+20
+40
+02
+df
+20
+20
+02
+d3
+20
+40
+02
+e3
+e0
+a0
+80
+00
+c2
+00
+02
+df
+20
+60
+00
+00
+20
+40
+02
+e6
+e8
+c0
+80
+00
+20
+60
+00
+00
+58
+00
+47
+c4
+98
+c6
+7c
+00
+24
+62
+80
+00
+d8
+c0
+47
+2e
+20
+60
+00
+00
+df
+20
+00
+03
+d8
+c0
+48
+94
+18
+c2
+22
+00
+68
+01
+48
+2e
+1f
+f0
+fe
+00
+1f
+e2
+0a
+00
+1a
+22
+0c
+00
+e8
+c0
+80
+00
+e0
+a0
+80
+00
+20
+40
+02
+fa
+c2
+00
+02
+f2
+18
+a2
+7e
+00
+1f
+f0
+fe
+00
+60
+01
+48
+2e
+20
+60
+00
+00
+58
+00
+48
+2c
+98
+a6
+7c
+00
+24
+62
+80
+00
+d8
+a0
+47
+c8
+20
+60
+00
+00
+c6
+93
+80
+00
+20
+40
+02
+e3
+1f
+e2
+72
+00
+60
+00
+c9
+70
+20
+20
+02
+dd
+58
+00
+00
+00
+60
+01
+ce
+85
+20
+60
+00
+00
+c6
+13
+00
+00
+68
+00
+c5
+95
+20
+7a
+00
+00
+20
+40
+00
+ab
+20
+74
+00
+00
+1f
+f0
+fe
+00
+1f
+e2
+0c
+00
+20
+40
+02
+e3
+60
+00
+c8
+97
+18
+c2
+22
+00
+c0
+82
+82
+d8
+18
+c2
+24
+00
+20
+40
+4b
+d4
+24
+7a
+00
+00
+20
+20
+03
+1b
+18
+c2
+24
+00
+68
+00
+ce
+a3
+20
+7a
+00
+00
+20
+40
+4b
+d0
+24
+7a
+00
+00
+68
+09
+4e
+4e
+20
+40
+4f
+6a
+c4
+00
+00
+00
+68
+00
+c5
+95
+c1
+00
+00
+00
+68
+00
+ce
+83
+1f
+e0
+fe
+01
+60
+00
+ce
+83
+68
+00
+ce
+85
+1f
+e0
+84
+01
+18
+41
+04
+03
+60
+08
+ce
+85
+1f
+ef
+fe
+07
+d8
+a0
+4e
+87
+98
+a0
+8a
+00
+1a
+42
+0c
+00
+20
+40
+02
+e3
+1f
+e2
+72
+00
+20
+40
+02
+dd
+20
+40
+03
+32
+20
+76
+00
+00
+70
+09
+bd
+1b
+20
+20
+4b
+d6
+78
+56
+7c
+00
+68
+00
+ce
+a4
+c1
+02
+80
+00
+78
+36
+7c
+00
+1f
+e0
+fe
+01
+60
+00
+ce
+a4
+1f
+e6
+7c
+01
+24
+61
+00
+00
+70
+48
+96
+40
+20
+20
+02
+eb
+58
+00
+47
+2e
+1f
+f0
+fe
+00
+60
+01
+47
+c4
+60
+01
+47
+c6
+58
+00
+47
+c8
+1f
+f0
+fe
+00
+60
+01
+48
+2c
+60
+01
+48
+2e
+20
+60
+00
+00
+68
+01
+4e
+a9
+1f
+e0
+fe
+1c
+60
+01
+4e
+ab
+20
+60
+00
+00
+20
+40
+52
+4a
+70
+0b
+2a
+00
+70
+01
+6c
+06
+20
+40
+3e
+7f
+58
+00
+03
+c8
+60
+01
+42
+96
+58
+00
+02
+b9
+60
+01
+42
+90
+58
+00
+03
+c1
+60
+01
+42
+8c
+24
+55
+83
+3c
+20
+55
+83
+89
+20
+40
+3d
+3e
+68
+00
+ce
+ba
+20
+3a
+03
+62
+1f
+e0
+ff
+ff
+60
+00
+ce
+ba
+58
+00
+7f
+80
+60
+01
+4e
+a9
+20
+40
+03
+45
+68
+00
+ce
+53
+24
+3a
+03
+62
+68
+00
+ce
+b9
+24
+3a
+03
+62
+20
+40
+02
+0e
+68
+00
+ce
+45
+c0
+2d
+03
+9d
+20
+35
+83
+9b
+68
+00
+c2
+80
+60
+00
+c9
+c3
+20
+40
+06
+05
+68
+01
+4e
+41
+1f
+f0
+fe
+00
+60
+01
+4e
+41
+68
+01
+4e
+43
+1f
+f0
+fe
+00
+60
+01
+4e
+43
+20
+40
+03
+a8
+20
+40
+03
+e2
+68
+04
+09
+c6
+24
+3a
+03
+76
+68
+01
+4a
+d4
+1f
+f0
+fe
+00
+20
+3a
+03
+76
+60
+01
+4e
+43
+70
+48
+96
+2f
+68
+00
+ce
+78
+24
+3a
+03
+7e
+20
+40
+02
+93
+20
+40
+02
+eb
+20
+40
+03
+07
+70
+82
+80
+03
+20
+60
+00
+00
+20
+55
+bc
+29
+d9
+60
+0d
+00
+34
+73
+02
+00
+1c
+42
+7e
+00
+60
+01
+ce
+7a
+68
+01
+47
+0b
+c3
+85
+80
+00
+c3
+83
+00
+00
+20
+40
+3d
+60
+20
+40
+04
+f6
+20
+20
+03
+83
+1c
+e2
+7e
+00
+c5
+93
+03
+93
+20
+3a
+03
+8e
+70
+49
+b9
+bb
+20
+60
+00
+00
+70
+49
+b9
+00
+68
+00
+c9
+b7
+20
+7a
+00
+00
+70
+49
+b7
+00
+20
+20
+03
+8c
+20
+3a
+03
+96
+70
+49
+c1
+02
+20
+60
+00
+00
+68
+00
+c9
+c2
+20
+7a
+00
+00
+70
+49
+c2
+00
+70
+49
+c1
+01
+20
+60
+00
+00
+70
+48
+96
+3c
+20
+20
+03
+77
+1c
+e2
+7e
+00
+20
+3a
+02
+77
+20
+40
+53
+0d
+20
+40
+42
+eb
+58
+00
+00
+00
+60
+04
+40
+40
+60
+01
+47
+0b
+60
+01
+48
+98
+60
+01
+48
+9a
+70
+48
+96
+3d
+20
+20
+03
+77
+20
+40
+62
+c4
+58
+00
+07
+e2
+da
+20
+09
+c6
+d8
+40
+00
+0c
+20
+40
+63
+0d
+20
+40
+62
+c7
+68
+04
+09
+c6
+20
+7a
+00
+00
+68
+00
+c2
+cf
+c2
+81
+03
+b3
+20
+60
+00
+00
+68
+09
+09
+c6
+68
+01
+09
+cc
+18
+42
+24
+00
+1f
+e2
+22
+00
+98
+46
+26
+00
+1a
+42
+7e
+00
+9a
+66
+7e
+00
+1f
+f0
+fe
+00
+60
+01
+4e
+41
+1a
+6b
+fe
+00
+9a
+20
+fe
+00
+1f
+f0
+fe
+00
+60
+01
+4e
+43
+20
+60
+00
+00
+78
+34
+7c
+00
+68
+12
+01
+38
+79
+34
+7e
+1a
+60
+12
+00
+4c
+20
+40
+3c
+f4
+70
+00
+9f
+01
+20
+60
+00
+00
+1a
+62
+7e
+00
+1f
+e1
+7e
+f0
+c1
+28
+00
+00
+1a
+62
+7e
+00
+60
+00
+c8
+96
+20
+20
+02
+eb
+70
+49
+27
+00
+70
+49
+32
+4e
+68
+02
+49
+34
+60
+02
+49
+50
+20
+20
+04
+91
+68
+08
+c9
+33
+20
+40
+03
+d9
+18
+40
+84
+01
+18
+41
+04
+03
+60
+08
+c9
+33
+20
+60
+00
+00
+68
+00
+c9
+50
+1f
+e1
+7e
+03
+1f
+ef
+a2
+04
+58
+00
+49
+39
+9a
+20
+fe
+00
+98
+40
+8c
+00
+e8
+c0
+80
+00
+60
+00
+c9
+32
+20
+60
+00
+00
+68
+02
+09
+c6
+60
+02
+49
+60
+24
+7a
+00
+00
+68
+02
+41
+40
+60
+02
+49
+60
+20
+60
+00
+00
+70
+49
+b0
+01
+70
+49
+b2
+00
+68
+00
+c9
+29
+1f
+e1
+7e
+07
+60
+00
+c9
+29
+20
+60
+00
+00
+68
+00
+c9
+29
+79
+20
+7e
+04
+60
+00
+c9
+29
+60
+00
+c8
+e4
+20
+60
+00
+00
+68
+00
+c9
+29
+79
+3f
+fe
+04
+60
+00
+c9
+29
+20
+60
+00
+00
+20
+40
+06
+0c
+68
+00
+c9
+b4
+c0
+00
+83
+fc
+c0
+01
+04
+00
+20
+60
+00
+00
+70
+49
+b2
+02
+70
+49
+b3
+00
+70
+49
+b0
+00
+20
+20
+03
+ea
+70
+49
+b1
+00
+20
+20
+03
+fd
+68
+01
+49
+2e
+1f
+e0
+fe
+01
+60
+01
+49
+2e
+c2
+85
+05
+71
+68
+00
+c9
+b1
+c0
+00
+84
+0b
+70
+49
+b1
+01
+68
+00
+c9
+b1
+c0
+80
+83
+ea
+68
+00
+c9
+b5
+1f
+e0
+fe
+01
+60
+00
+c9
+b5
+c0
+02
+04
+12
+20
+40
+03
+d3
+70
+49
+6e
+02
+20
+20
+05
+32
+20
+40
+06
+0c
+70
+49
+b5
+00
+20
+20
+03
+ea
+70
+49
+b2
+02
+70
+49
+b0
+01
+70
+49
+b1
+00
+20
+20
+03
+ea
+68
+00
+c9
+b4
+c0
+01
+84
+16
+68
+00
+c9
+29
+2f
+ec
+00
+04
+20
+20
+83
+e8
+68
+00
+c9
+b4
+c0
+00
+84
+15
+c0
+01
+04
+16
+20
+60
+00
+00
+68
+00
+c9
+38
+c1
+ff
+80
+00
+20
+40
+04
+27
+24
+56
+04
+2f
+20
+60
+00
+00
+78
+56
+7c
+00
+68
+00
+c9
+b0
+c1
+80
+80
+00
+68
+00
+c9
+b2
+c1
+80
+00
+00
+70
+49
+b4
+01
+70
+49
+6e
+04
+20
+20
+02
+b1
+68
+00
+c9
+b2
+20
+3a
+04
+37
+1f
+e0
+ff
+ff
+60
+00
+c9
+b2
+70
+49
+b4
+02
+20
+40
+03
+d3
+70
+49
+6e
+04
+20
+60
+00
+00
+70
+49
+b4
+03
+68
+00
+c9
+b1
+24
+3a
+04
+09
+20
+40
+03
+d3
+70
+49
+6e
+02
+20
+60
+00
+00
+c6
+93
+00
+00
+79
+20
+00
+27
+68
+0a
+49
+49
+1c
+42
+7e
+00
+98
+46
+7c
+00
+24
+41
+04
+56
+1f
+e2
+24
+00
+68
+02
+49
+49
+68
+08
+c9
+4d
+98
+40
+84
+00
+1a
+42
+7e
+00
+98
+46
+7c
+00
+24
+21
+04
+54
+79
+3f
+fe
+1c
+60
+02
+49
+49
+20
+40
+04
+59
+20
+40
+04
+66
+20
+34
+04
+c1
+20
+40
+04
+22
+20
+40
+05
+32
+68
+00
+c9
+38
+1f
+e6
+7c
+ff
+20
+42
+86
+16
+79
+3f
+80
+27
+20
+60
+00
+00
+20
+62
+80
+00
+79
+20
+7e
+1c
+20
+60
+00
+00
+68
+00
+c9
+64
+1f
+e0
+fe
+01
+60
+00
+c9
+64
+c0
+02
+04
+5f
+c0
+02
+84
+62
+20
+60
+00
+00
+68
+00
+c9
+4f
+60
+00
+c9
+4d
+20
+60
+00
+00
+70
+49
+64
+00
+68
+00
+c9
+4e
+60
+00
+c9
+4d
+20
+60
+00
+00
+68
+00
+c9
+38
+c0
+ff
+86
+71
+20
+40
+02
+bd
+20
+34
+04
+78
+68
+00
+c8
+97
+c0
+83
+64
+c0
+68
+00
+ce
+80
+20
+5a
+04
+dc
+68
+00
+ce
+80
+24
+5a
+04
+74
+20
+40
+04
+7d
+20
+40
+04
+9e
+70
+49
+2d
+01
+20
+60
+00
+00
+70
+4e
+79
+00
+70
+4e
+78
+00
+70
+49
+ba
+0a
+20
+60
+00
+00
+68
+00
+ce
+78
+24
+3a
+04
+7d
+68
+00
+c9
+2d
+c0
+00
+b1
+d4
+20
+60
+00
+00
+68
+00
+c9
+b9
+60
+00
+c9
+b8
+68
+00
+c9
+70
+1f
+e2
+22
+00
+da
+40
+49
+71
+70
+49
+54
+00
+20
+40
+03
+ea
+60
+00
+c9
+90
+1a
+20
+84
+01
+d8
+a0
+49
+91
+1a
+22
+72
+00
+1a
+42
+0c
+00
+20
+40
+7e
+cd
+da
+20
+49
+90
+c6
+93
+80
+00
+60
+08
+c9
+28
+18
+42
+72
+00
+d8
+a0
+48
+c4
+1a
+22
+0c
+00
+20
+20
+7e
+cd
+da
+20
+00
+00
+df
+20
+00
+04
+d8
+c0
+49
+50
+e8
+c0
+80
+00
+9a
+20
+a2
+00
+c2
+00
+04
+94
+1a
+22
+7e
+00
+60
+01
+49
+bb
+68
+00
+c9
+bb
+68
+08
+c9
+bc
+98
+40
+fe
+00
+60
+00
+c9
+bd
+20
+60
+00
+00
+68
+00
+c9
+28
+1f
+e0
+fe
+02
+60
+00
+c9
+2a
+68
+00
+c9
+29
+60
+00
+c8
+e4
+68
+00
+c9
+28
+1f
+e9
+fe
+00
+68
+08
+c9
+27
+18
+41
+04
+03
+18
+43
+84
+00
+98
+41
+fe
+00
+68
+08
+c9
+65
+98
+40
+fe
+00
+e0
+a0
+80
+00
+68
+00
+c9
+28
+98
+00
+72
+00
+d8
+c0
+48
+c4
+20
+20
+7e
+cd
+70
+49
+54
+01
+70
+49
+b1
+00
+20
+40
+03
+ea
+60
+00
+c9
+90
+58
+00
+00
+00
+60
+03
+c9
+91
+68
+02
+49
+60
+60
+02
+49
+98
+d8
+40
+00
+0c
+da
+20
+49
+90
+20
+40
+04
+8b
+68
+00
+c9
+29
+79
+20
+7e
+03
+60
+00
+c9
+29
+20
+40
+04
+9e
+20
+40
+04
+72
+20
+20
+04
+50
+68
+00
+ce
+78
+20
+3a
+04
+c5
+20
+40
+04
+ef
+20
+20
+05
+0e
+68
+00
+c9
+54
+20
+3a
+04
+b0
+68
+08
+c9
+b8
+18
+40
+84
+01
+60
+08
+c9
+b8
+68
+00
+c9
+b9
+98
+46
+7c
+00
+20
+61
+00
+00
+70
+49
+b8
+00
+20
+40
+00
+a0
+24
+74
+00
+00
+68
+00
+8b
+2b
+24
+7a
+00
+00
+68
+00
+c9
+ba
+24
+7a
+00
+00
+70
+4e
+80
+00
+20
+40
+3b
+e2
+68
+01
+c2
+0f
+20
+7a
+00
+00
+68
+04
+49
+58
+20
+40
+7f
+16
+60
+0a
+41
+fb
+20
+20
+3c
+11
+68
+00
+c2
+b8
+2f
+ec
+00
+02
+20
+20
+84
+e6
+68
+00
+ce
+79
+c1
+02
+80
+00
+1f
+e0
+fe
+01
+60
+00
+ce
+79
+c1
+82
+80
+00
+70
+4e
+78
+01
+20
+60
+00
+00
+68
+00
+ce
+79
+c1
+0a
+00
+00
+1f
+e0
+fe
+01
+60
+00
+ce
+79
+c1
+8a
+00
+00
+68
+00
+c2
+b8
+79
+20
+7e
+02
+60
+00
+c2
+b8
+20
+20
+04
+e4
+68
+00
+ce
+79
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+ce
+79
+24
+7a
+00
+00
+70
+4e
+78
+00
+20
+60
+00
+00
+79
+20
+00
+27
+20
+40
+02
+bd
+20
+34
+04
+fb
+68
+00
+c8
+97
+c0
+03
+05
+0a
+68
+00
+ce
+7d
+c0
+00
+85
+02
+c0
+01
+04
+c1
+c0
+01
+85
+00
+20
+60
+00
+00
+70
+4e
+79
+00
+70
+4e
+78
+00
+20
+40
+04
+dc
+70
+4e
+7d
+00
+df
+20
+00
+07
+1f
+22
+7e
+00
+60
+00
+c9
+70
+d8
+c0
+4e
+21
+20
+40
+7e
+cd
+78
+54
+7c
+00
+20
+40
+04
+6c
+20
+40
+04
+22
+20
+40
+05
+32
+20
+40
+06
+16
+20
+40
+3b
+e2
+68
+01
+c2
+0f
+20
+7a
+00
+00
+68
+00
+c1
+31
+20
+7a
+00
+00
+68
+00
+ce
+80
+c0
+00
+85
+17
+58
+00
+00
+00
+60
+04
+00
+a0
+20
+40
+05
+27
+d9
+60
+0d
+00
+34
+73
+02
+00
+68
+09
+ce
+7a
+1c
+42
+7e
+00
+98
+46
+7e
+00
+1f
+e1
+7e
+ff
+d8
+40
+0e
+a6
+98
+4f
+84
+00
+68
+02
+4e
+74
+98
+46
+7e
+00
+20
+21
+3c
+7f
+68
+00
+c2
+18
+1f
+e0
+fe
+01
+60
+02
+41
+fb
+20
+20
+3c
+86
+58
+01
+3c
+68
+60
+02
+4e
+74
+68
+00
+ce
+7e
+1f
+e0
+fe
+01
+c0
+82
+85
+2d
+58
+00
+00
+00
+60
+00
+ce
+7e
+c4
+00
+00
+00
+58
+01
+30
+b0
+60
+02
+4e
+74
+20
+60
+00
+00
+70
+49
+31
+00
+d9
+60
+0d
+00
+34
+73
+02
+00
+20
+40
+05
+4a
+68
+00
+c9
+65
+c1
+00
+80
+00
+24
+2c
+05
+59
+24
+37
+85
+59
+20
+40
+05
+78
+20
+40
+06
+08
+68
+00
+c9
+27
+1f
+e0
+fe
+01
+60
+00
+c9
+27
+68
+00
+c9
+38
+c0
+ff
+85
+48
+20
+40
+04
+19
+58
+00
+00
+00
+60
+01
+49
+2e
+60
+00
+c9
+30
+60
+00
+c9
+b3
+70
+49
+2d
+00
+20
+60
+00
+00
+20
+40
+06
+05
+20
+20
+06
+8c
+78
+57
+fc
+00
+20
+40
+05
+98
+68
+00
+c9
+65
+c0
+00
+85
+57
+18
+00
+2a
+00
+68
+02
+49
+50
+98
+00
+12
+00
+68
+08
+80
+17
+20
+40
+39
+b9
+20
+40
+39
+bf
+20
+40
+05
+c2
+20
+57
+86
+01
+20
+60
+00
+00
+20
+40
+06
+01
+20
+20
+05
+3c
+68
+00
+c9
+30
+1f
+e0
+fe
+01
+60
+00
+c9
+30
+68
+00
+c9
+38
+c0
+ff
+85
+6d
+68
+08
+c9
+31
+18
+40
+84
+01
+60
+08
+c9
+31
+68
+00
+c9
+6e
+98
+46
+7e
+00
+24
+3a
+05
+33
+68
+00
+c9
+b4
+c0
+01
+84
+02
+68
+00
+c9
+b3
+1f
+e0
+fe
+01
+60
+00
+c9
+b3
+c0
+01
+03
+f7
+20
+40
+03
+ee
+70
+49
+6e
+01
+20
+20
+05
+32
+68
+00
+c9
+30
+c1
+ff
+80
+00
+70
+49
+30
+00
+20
+20
+05
+76
+58
+00
+00
+00
+60
+01
+49
+2e
+70
+41
+31
+00
+70
+4e
+79
+00
+70
+4e
+78
+00
+70
+48
+96
+3b
+20
+20
+02
+eb
+20
+40
+05
+7f
+68
+00
+c9
+26
+20
+7a
+00
+00
+98
+00
+72
+00
+d8
+c0
+48
+a4
+d8
+a0
+49
+06
+20
+20
+7e
+cd
+68
+00
+c8
+a3
+1f
+e9
+7e
+00
+60
+00
+c9
+26
+1f
+e0
+fe
+01
+d8
+c0
+48
+a3
+98
+c0
+8c
+00
+e8
+c1
+80
+00
+60
+01
+c9
+66
+68
+00
+c8
+a3
+1f
+e3
+7e
+00
+1f
+e1
+7e
+03
+60
+00
+c9
+6c
+20
+60
+00
+00
+78
+44
+fc
+00
+78
+43
+fc
+00
+58
+55
+55
+55
+98
+00
+1e
+00
+68
+00
+c9
+32
+1f
+ed
+84
+00
+79
+20
+04
+01
+18
+43
+1c
+00
+20
+60
+00
+00
+20
+40
+39
+b1
+68
+08
+c9
+32
+20
+20
+39
+c9
+20
+40
+49
+76
+68
+02
+49
+50
+98
+00
+12
+00
+20
+40
+05
+8c
+20
+40
+05
+95
+79
+20
+2a
+00
+78
+2e
+fc
+00
+78
+30
+7c
+00
+78
+50
+fc
+00
+19
+31
+7e
+00
+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
+c9
+bd
+08
+00
+86
+08
+68
+00
+c9
+2a
+98
+00
+72
+00
+d8
+c0
+48
+e4
+e8
+c0
+80
+00
+08
+00
+86
+08
+c2
+00
+05
+ae
+78
+24
+7c
+00
+08
+00
+86
+18
+78
+44
+7c
+00
+37
+d3
+82
+00
+20
+00
+00
+64
+78
+4e
+fc
+00
+78
+4d
+fc
+00
+20
+60
+00
+00
+20
+40
+49
+76
+68
+02
+49
+50
+98
+00
+12
+00
+20
+40
+39
+b1
+68
+08
+c9
+32
+20
+40
+39
+b9
+58
+00
+05
+00
+20
+40
+3b
+35
+20
+40
+39
+bf
+20
+40
+05
+8c
+78
+57
+fc
+00
+78
+26
+fc
+00
+78
+30
+fc
+00
+78
+50
+7c
+00
+78
+28
+7c
+00
+68
+01
+49
+2b
+98
+00
+36
+00
+37
+c1
+84
+00
+24
+2c
+06
+04
+78
+46
+fc
+00
+78
+25
+fc
+00
+78
+23
+fc
+00
+78
+24
+fc
+00
+09
+80
+00
+08
+19
+89
+7e
+00
+60
+00
+c9
+be
+20
+40
+04
+91
+68
+08
+c9
+be
+98
+46
+7c
+00
+24
+22
+86
+01
+09
+80
+00
+08
+19
+89
+7e
+00
+60
+00
+c8
+a2
+68
+00
+c9
+6f
+1f
+e6
+7c
+02
+20
+22
+85
+e1
+68
+00
+c8
+a2
+68
+08
+c9
+29
+a8
+40
+0e
+00
+24
+20
+86
+01
+09
+80
+00
+08
+19
+89
+7e
+00
+e0
+a0
+80
+00
+1f
+e9
+7e
+00
+1f
+e1
+72
+1f
+20
+22
+85
+eb
+09
+80
+00
+08
+19
+89
+7e
+00
+e0
+a0
+80
+00
+c2
+00
+05
+e7
+18
+a2
+22
+00
+09
+80
+00
+08
+19
+89
+7e
+00
+60
+00
+c9
+cf
+1a
+22
+0a
+00
+09
+80
+00
+18
+78
+28
+7c
+00
+db
+60
+06
+64
+1f
+ef
+7e
+00
+1f
+f1
+7e
+00
+e0
+a1
+80
+00
+78
+45
+fc
+00
+20
+23
+06
+01
+78
+37
+fc
+00
+68
+00
+80
+17
+1f
+e0
+a2
+00
+20
+40
+3a
+13
+78
+46
+fc
+00
+20
+40
+39
+b1
+68
+00
+c9
+cf
+1f
+e2
+22
+00
+20
+20
+06
+54
+78
+4d
+fc
+00
+78
+45
+fc
+00
+20
+20
+36
+c6
+20
+20
+06
+01
+70
+49
+c4
+01
+70
+49
+c5
+00
+20
+60
+00
+00
+68
+00
+c9
+c5
+1f
+e0
+fe
+01
+60
+00
+c9
+c5
+20
+60
+00
+00
+68
+00
+c9
+c5
+1f
+e6
+7c
+01
+24
+41
+06
+14
+68
+00
+c9
+c5
+c1
+00
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+c9
+c5
+20
+60
+00
+00
+70
+49
+c5
+02
+20
+60
+00
+00
+da
+20
+49
+c6
+20
+40
+06
+5d
+60
+08
+c9
+d0
+28
+0f
+fe
+26
+20
+40
+86
+24
+24
+40
+86
+28
+98
+46
+7c
+00
+24
+21
+06
+41
+68
+00
+c9
+c5
+1f
+e6
+7c
+01
+24
+21
+06
+2c
+68
+00
+c9
+c5
+c0
+00
+06
+41
+20
+60
+00
+00
+58
+00
+00
+82
+20
+60
+00
+00
+58
+00
+00
+77
+20
+60
+00
+00
+58
+00
+00
+80
+20
+60
+00
+00
+58
+00
+00
+75
+20
+60
+00
+00
+68
+00
+c9
+c5
+c1
+a3
+00
+00
+70
+49
+c5
+00
+68
+08
+c9
+d0
+28
+0f
+fe
+26
+20
+40
+86
+26
+24
+40
+86
+2a
+98
+46
+7c
+00
+24
+61
+00
+00
+68
+00
+c9
+c4
+c0
+00
+06
+4d
+1f
+e0
+ff
+ff
+60
+00
+c9
+c4
+c0
+00
+06
+4d
+70
+89
+55
+d0
+70
+89
+56
+e0
+70
+89
+57
+4c
+70
+89
+58
+6c
+70
+89
+59
+50
+70
+42
+80
+01
+20
+60
+00
+00
+68
+00
+c9
+c4
+c0
+01
+06
+46
+1f
+e0
+fe
+01
+60
+00
+c9
+c4
+c0
+00
+86
+3a
+70
+89
+55
+d0
+70
+89
+56
+e0
+70
+89
+57
+4c
+70
+89
+58
+3c
+70
+89
+59
+10
+70
+42
+80
+04
+20
+60
+00
+00
+70
+89
+55
+d0
+70
+89
+56
+c0
+70
+89
+57
+4c
+70
+89
+58
+6c
+70
+89
+59
+50
+70
+42
+80
+10
+20
+60
+00
+00
+68
+08
+c9
+ce
+58
+00
+49
+c6
+98
+40
+8a
+00
+1a
+22
+7e
+00
+e0
+a0
+80
+00
+18
+40
+84
+01
+18
+41
+04
+07
+60
+08
+c9
+ce
+20
+60
+00
+00
+d8
+40
+00
+00
+df
+20
+00
+08
+1a
+22
+0c
+00
+e8
+c0
+80
+00
+98
+40
+84
+00
+c2
+00
+06
+60
+18
+49
+7e
+00
+1f
+e2
+04
+00
+c6
+93
+00
+00
+1f
+e6
+fc
+0a
+20
+40
+7f
+53
+18
+07
+fe
+00
+1f
+f2
+7e
+00
+18
+07
+04
+00
+98
+41
+84
+00
+20
+60
+00
+00
+79
+20
+00
+26
+20
+40
+03
+ce
+70
+49
+38
+01
+20
+60
+00
+00
+68
+00
+c9
+2d
+c0
+00
+b1
+d4
+68
+00
+c9
+38
+c0
+00
+86
+78
+c0
+01
+06
+7b
+c0
+01
+86
+7e
+20
+20
+3b
+31
+70
+49
+38
+11
+70
+49
+90
+aa
+20
+20
+06
+80
+70
+49
+38
+12
+70
+49
+90
+55
+20
+20
+06
+80
+70
+49
+38
+13
+70
+49
+90
+22
+68
+00
+c9
+29
+1f
+e1
+7e
+07
+60
+00
+c9
+91
+68
+02
+49
+60
+60
+02
+49
+92
+70
+49
+96
+00
+da
+20
+49
+90
+d8
+40
+00
+07
+20
+40
+04
+8b
+20
+40
+04
+9e
+20
+40
+04
+72
+20
+20
+31
+d4
+68
+00
+c9
+38
+c1
+7f
+80
+00
+c0
+08
+86
+92
+c0
+09
+06
+94
+c0
+09
+86
+96
+20
+60
+00
+00
+70
+49
+38
+02
+20
+20
+05
+42
+70
+49
+38
+03
+20
+20
+05
+42
+70
+49
+38
+ff
+70
+48
+96
+39
+20
+40
+02
+eb
+68
+02
+49
+08
+20
+40
+03
+d1
+20
+20
+05
+42
+79
+3f
+80
+26
+20
+40
+03
+d3
+68
+02
+49
+50
+20
+40
+04
+91
+68
+00
+c9
+38
+c1
+ff
+80
+00
+20
+40
+06
+b2
+58
+00
+00
+00
+60
+01
+49
+56
+20
+00
+07
+d0
+68
+00
+c9
+56
+c0
+7f
+85
+76
+20
+40
+05
+4a
+24
+2c
+06
+bc
+24
+37
+86
+bc
+70
+41
+31
+01
+79
+20
+00
+26
+58
+00
+00
+00
+60
+01
+49
+56
+70
+09
+bd
+3a
+20
+40
+7d
+86
+20
+20
+7e
+0d
+79
+20
+00
+27
+70
+49
+90
+ff
+68
+00
+c9
+29
+60
+00
+c9
+91
+68
+02
+49
+60
+60
+02
+49
+92
+d8
+40
+00
+06
+da
+20
+49
+90
+20
+40
+04
+8b
+20
+20
+04
+9e
+68
+01
+49
+56
+1f
+e0
+fe
+01
+60
+01
+49
+56
+20
+40
+03
+d3
+20
+20
+06
+a5
+a0
+11
+aa
+55
+76
+21
+02
+02
+46
+e7
+09
+f6
+08
+df
+fa
+80
+46
+e7
+09
+f2
+08
+df
+fa
+80
+3e
+88
+82
+8c
+83
+e7
+09
+f0
+a3
+df
+fa
+80
+32
+e3
+09
+f6
+08
+df
+fa
+80
+78
+e3
+09
+f2
+08
+df
+fa
+80
+70
+88
+82
+8c
+83
+e3
+09
+f0
+a3
+df
+fa
+80
+64
+89
+82
+8a
+83
+e0
+a3
+f6
+08
+df
+fa
+80
+58
+89
+82
+8a
+83
+e0
+a3
+f2
+08
+df
+fa
+80
+4c
+80
+d2
+80
+fa
+80
+c6
+80
+d4
+80
+69
+80
+f2
+80
+33
+80
+10
+80
+a6
+80
+ea
+80
+9a
+80
+a8
+80
+da
+80
+e2
+80
+ca
+80
+33
+89
+82
+8a
+83
+ec
+fa
+e4
+93
+a3
+c8
+c5
+82
+c8
+cc
+c5
+83
+cc
+f0
+a3
+c8
+c5
+82
+c8
+cc
+c5
+83
+cc
+df
+e9
+de
+e7
+80
+0d
+89
+82
+8a
+83
+e4
+93
+a3
+f6
+08
+df
+f9
+ec
+fa
+a9
+f0
+ed
+fb
+22
+89
+82
+8a
+83
+ec
+fa
+e0
+a3
+c8
+c5
+82
+c8
+cc
+c5
+83
+cc
+f0
+a3
+c8
+c5
+82
+c8
+cc
+c5
+83
+cc
+df
+ea
+de
+e8
+80
+db
+89
+82
+8a
+83
+e4
+93
+a3
+f2
+08
+df
+f9
+80
+cc
+88
+f0
+ef
+60
+01
+0e
+4e
+60
+c3
+88
+f0
+ed
+24
+02
+b4
+04
+00
+50
+b9
+f5
+82
+eb
+24
+02
+b4
+04
+00
+50
+af
+23
+23
+45
+82
+23
+90
+00
+53
+73
+bb
+01
+06
+89
+82
+8a
+83
+e0
+22
+50
+02
+e7
+22
+bb
+fe
+02
+e3
+22
+89
+82
+8a
+83
+e4
+93
+22
+bb
+01
+0c
+e5
+82
+29
+f5
+82
+e5
+83
+3a
+f5
+83
+e0
+22
+50
+06
+e9
+25
+82
+f8
+e6
+22
+bb
+fe
+06
+e9
+25
+82
+f8
+e2
+22
+e5
+82
+29
+f5
+82
+e5
+83
+3a
+f5
+83
+e4
+93
+22
+bb
+01
+06
+89
+82
+8a
+83
+f0
+22
+50
+02
+f7
+22
+bb
+fe
+01
+f3
+22
+ef
+8d
+f0
+a4
+a8
+f0
+cf
+8c
+f0
+a4
+28
+ce
+8d
+f0
+a4
+2e
+fe
+22
+bc
+00
+0b
+be
+00
+29
+ef
+8d
+f0
+84
+ff
+ad
+f0
+22
+e4
+cc
+f8
+75
+f0
+08
+ef
+2f
+ff
+ee
+33
+fe
+ec
+33
+fc
+ee
+9d
+ec
+98
+40
+05
+fc
+ee
+9d
+fe
+0f
+d5
+f0
+e9
+e4
+ce
+fd
+22
+ed
+f8
+f5
+f0
+ee
+84
+20
+d2
+1c
+fe
+ad
+f0
+75
+f0
+08
+ef
+2f
+ff
+ed
+33
+fd
+40
+07
+98
+50
+06
+d5
+f0
+f2
+22
+c3
+98
+fd
+0f
+d5
+f0
+ea
+22
+c2
+d5
+ec
+30
+e7
+09
+b2
+d5
+e4
+c3
+9d
+fd
+e4
+9c
+fc
+ee
+30
+e7
+15
+b2
+d5
+e4
+c3
+9f
+ff
+e4
+9e
+fe
+12
+01
+63
+c3
+e4
+9d
+fd
+e4
+9c
+fc
+80
+03
+12
+01
+63
+30
+d5
+07
+c3
+e4
+9f
+ff
+e4
+9e
+fe
+22
+c5
+f0
+f8
+a3
+e0
+28
+f0
+c5
+f0
+f8
+e5
+82
+15
+82
+70
+02
+15
+83
+e0
+38
+f0
+22
+a3
+f8
+e0
+c5
+f0
+25
+f0
+f0
+e5
+82
+15
+82
+70
+02
+15
+83
+e0
+c8
+38
+f0
+e8
+22
+d0
+83
+d0
+82
+f8
+e4
+93
+70
+12
+74
+01
+93
+70
+0d
+a3
+a3
+93
+f8
+74
+01
+93
+f5
+82
+88
+83
+e4
+73
+74
+02
+93
+68
+60
+ef
+a3
+a3
+a3
+80
+df
+8a
+83
+89
+82
+e4
+73
+78
+7f
+e4
+f6
+d8
+fd
+75
+81
+cf
+02
+02
+8d
+02
+02
+f1
+e4
+93
+a3
+f8
+e4
+93
+a3
+40
+03
+f6
+80
+01
+f2
+08
+df
+f4
+80
+29
+e4
+93
+a3
+f8
+54
+07
+24
+0c
+c8
+c3
+33
+c4
+54
+0f
+44
+20
+c8
+83
+40
+04
+f4
+56
+80
+01
+46
+f6
+df
+e4
+80
+0b
+01
+02
+04
+08
+10
+20
+40
+80
+90
+02
+d2
+e4
+7e
+01
+93
+60
+bc
+a3
+ff
+54
+3f
+30
+e5
+09
+54
+1f
+fe
+e4
+93
+a3
+60
+01
+0e
+cf
+54
+c0
+25
+e0
+60
+a8
+40
+b8
+e4
+93
+a3
+fa
+e4
+93
+a3
+f8
+e4
+93
+a3
+c8
+c5
+82
+c8
+ca
+c5
+83
+ca
+f0
+a3
+c8
+c5
+82
+c8
+ca
+c5
+83
+ca
+df
+e9
+de
+e7
+80
+be
+52
+1b
+ab
+ff
+04
+1f
+00
+00
+00
+ff
+1a
+89
+ff
+17
+04
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+01
+01
+00
+12
+1c
+20
+90
+4e
+78
+e0
+b4
+01
+03
+12
+15
+df
+12
+1d
+98
+12
+17
+b1
+12
+10
+96
+12
+18
+88
+90
+0b
+2a
+e0
+14
+60
+58
+24
+fe
+70
+e9
+e4
+90
+4f
+00
+f0
+12
+0f
+4a
+e4
+ff
+ef
+24
+70
+fd
+e4
+34
+80
+8d
+82
+f5
+83
+e4
+f0
+0f
+ef
+b4
+10
+ee
+7f
+02
+12
+0d
+4c
+50
+08
+c2
+06
+7f
+02
+71
+a1
+80
+06
+d2
+06
+7f
+02
+71
+a1
+7f
+03
+12
+0d
+4c
+50
+08
+c2
+06
+7f
+03
+71
+a1
+80
+06
+d2
+06
+7f
+03
+71
+a1
+d2
+07
+7f
+08
+12
+10
+75
+f1
+40
+12
+15
+d1
+80
+fe
+90
+4e
+c7
+e0
+70
+06
+90
+4e
+c1
+e0
+60
+05
+12
+16
+d5
+80
+84
+90
+4e
+bd
+e0
+ff
+64
+01
+60
+09
+ef
+64
+02
+60
+04
+ef
+b4
+07
+0d
+f1
+40
+c2
+08
+7f
+18
+f1
+ab
+12
+15
+d1
+41
+fe
+12
+16
+d5
+41
+fe
+41
+fe
+22
+ac
+07
+a2
+06
+92
+04
+12
+1c
+f5
+af
+04
+a2
+06
+b3
+92
+03
+12
+10
+89
+af
+04
+c2
+05
+7b
+01
+7a
+80
+79
+70
+a2
+05
+92
+01
+90
+1c
+1f
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+e4
+fe
+fd
+ef
+54
+07
+fe
+ef
+13
+13
+13
+54
+03
+fd
+30
+01
+20
+90
+1c
+1f
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+2d
+f9
+e4
+3a
+fa
+11
+f9
+ff
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+4f
+21
+3f
+90
+1c
+1f
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+2d
+f9
+e4
+3a
+fa
+11
+f9
+ff
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+f4
+5f
+21
+3f
+90
+1b
+bd
+ef
+f0
+e4
+90
+1b
+bf
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+78
+c3
+7c
+1b
+7d
+01
+7b
+ff
+7a
+02
+79
+e8
+fe
+7f
+06
+11
+d3
+90
+1b
+bd
+e0
+51
+1a
+06
+b6
+14
+07
+21
+15
+04
+68
+2f
+05
+f5
+39
+06
+80
+3a
+06
+20
+3b
+05
+c6
+3c
+04
+65
+3d
+06
+95
+40
+00
+00
+07
+3f
+12
+1b
+43
+12
+13
+1c
+c2
+06
+7f
+18
+71
+a1
+c2
+06
+7f
+12
+71
+a1
+c2
+06
+7f
+13
+71
+a1
+c2
+06
+7f
+02
+71
+a1
+c2
+06
+7f
+03
+71
+a1
+c2
+06
+7f
+04
+71
+a1
+c2
+06
+7f
+17
+71
+a1
+c2
+06
+7f
+1b
+71
+a1
+c2
+06
+7f
+17
+71
+a1
+c2
+06
+7f
+04
+71
+a1
+c2
+06
+7f
+06
+71
+a1
+d2
+07
+7f
+08
+12
+10
+75
+d2
+07
+7f
+07
+12
+10
+75
+7f
+12
+12
+0d
+4c
+40
+07
+e4
+90
+4e
+f0
+f0
+80
+06
+90
+4e
+f0
+74
+01
+f0
+7f
+13
+12
+0d
+4c
+50
+0a
+90
+42
+cf
+74
+04
+f0
+a3
+74
+30
+f0
+12
+17
+3a
+12
+21
+52
+12
+08
+73
+90
+4e
+d9
+ef
+f0
+7b
+01
+7a
+4e
+79
+db
+7d
+01
+7c
+00
+7f
+a8
+7e
+7f
+12
+13
+68
+90
+4e
+db
+e0
+d3
+94
+03
+40
+03
+74
+02
+f0
+7b
+01
+7a
+4e
+79
+db
+7d
+01
+7c
+00
+7f
+a8
+7e
+7f
+12
+12
+6d
+12
+0a
+b9
+90
+80
+80
+e4
+f0
+90
+4e
+de
+f0
+90
+4e
+dd
+f0
+7f
+04
+12
+0d
+4c
+40
+04
+7f
+01
+80
+02
+7f
+00
+90
+1b
+bf
+ef
+f0
+7f
+17
+12
+0d
+4c
+40
+04
+7f
+01
+80
+02
+7f
+00
+90
+1b
+c1
+ef
+f0
+7f
+1b
+12
+0d
+4c
+40
+04
+7f
+01
+80
+02
+7f
+00
+90
+1b
+c0
+ef
+f0
+e0
+ff
+25
+e0
+ff
+90
+1b
+bf
+e0
+4f
+ff
+90
+1b
+c1
+e0
+fe
+25
+e0
+25
+e0
+4f
+ff
+a3
+f0
+bf
+05
+0c
+90
+1b
+bd
+e0
+b4
+2f
+05
+7f
+25
+02
+0e
+a2
+90
+4e
+a7
+e0
+b4
+01
+09
+12
+14
+58
+e4
+90
+4e
+a7
+f0
+22
+7b
+01
+7a
+49
+79
+50
+7d
+04
+7c
+00
+7f
+a4
+7e
+7f
+12
+13
+68
+90
+49
+50
+e0
+b4
+ff
+12
+a3
+e0
+b4
+ff
+0d
+a3
+e0
+b4
+ff
+08
+a3
+e0
+b4
+ff
+03
+02
+14
+58
+02
+0f
+93
+90
+4e
+bd
+e0
+b4
+07
+15
+90
+49
+c1
+e0
+ff
+64
+01
+70
+02
+e1
+3f
+ef
+b4
+02
+06
+90
+49
+c1
+74
+01
+f0
+12
+17
+3a
+d2
+07
+7f
+07
+12
+10
+75
+c2
+06
+7f
+07
+71
+a1
+02
+21
+52
+90
+4e
+bd
+74
+01
+f0
+fb
+7a
+4e
+79
+bd
+fd
+7c
+00
+7f
+a9
+7e
+7f
+12
+12
+6d
+7b
+01
+7a
+49
+79
+06
+7d
+06
+7c
+00
+7f
+a2
+7e
+7f
+12
+12
+6d
+7f
+23
+02
+0e
+a2
+12
+0f
+40
+e4
+90
+4e
+e3
+f0
+90
+4e
+f2
+e0
+60
+13
+04
+f0
+e0
+54
+07
+f0
+30
+e0
+05
+7f
+23
+02
+0e
+a2
+7f
+25
+02
+0e
+a2
+7b
+01
+7a
+1b
+79
+c3
+7d
+06
+7c
+00
+7f
+9c
+7e
+7f
+12
+13
+68
+90
+1b
+c3
+e0
+f4
+70
+24
+a3
+e0
+f4
+70
+1f
+a3
+e0
+b4
+ff
+1a
+a3
+e0
+b4
+ff
+15
+a3
+e0
+b4
+ff
+10
+a3
+e0
+b4
+ff
+0b
+90
+4f
+01
+74
+01
+f0
+a3
+74
+1e
+f0
+22
+02
+14
+58
+12
+08
+31
+90
+4e
+e3
+74
+01
+f0
+e4
+90
+4e
+f1
+f0
+a3
+f0
+90
+4e
+be
+f0
+22
+12
+17
+3a
+12
+0c
+f9
+7d
+06
+7f
+80
+12
+0a
+8e
+7b
+01
+7a
+4e
+79
+db
+7d
+01
+7c
+00
+7f
+a8
+7e
+7f
+12
+13
+68
+02
+0a
+b9
+e4
+90
+4e
+84
+f0
+7f
+0e
+12
+0e
+a2
+7f
+02
+12
+0e
+a2
+90
+4e
+bd
+74
+07
+f0
+90
+1b
+be
+74
+09
+f0
+12
+08
+31
+7b
+01
+7a
+03
+79
+72
+7d
+06
+7c
+00
+7f
+96
+7e
+7f
+12
+12
+6d
+7f
+0a
+7e
+00
+12
+15
+b2
+7b
+01
+7a
+45
+79
+3e
+7d
+06
+7c
+00
+7f
+9c
+7e
+7f
+12
+12
+6d
+7f
+0a
+7e
+00
+12
+15
+b2
+7b
+01
+7a
+1b
+79
+be
+7d
+01
+7c
+00
+7f
+a9
+7e
+7f
+12
+12
+6d
+90
+4e
+be
+74
+06
+f0
+e4
+90
+4e
+c2
+f0
+22
+90
+4e
+be
+e0
+b4
+08
+0a
+12
+0e
+62
+90
+4e
+bd
+74
+03
+f0
+22
+90
+4e
+be
+e0
+b4
+06
+03
+02
+16
+ea
+12
+14
+58
+22
+90
+00
+a0
+e4
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+12
+0b
+70
+c2
+07
+7f
+07
+12
+10
+75
+c2
+06
+7f
+04
+71
+a1
+c2
+06
+7f
+1b
+71
+a1
+c2
+06
+7f
+17
+71
+a1
+c2
+06
+7f
+17
+71
+a1
+c2
+06
+7f
+04
+71
+a1
+c2
+06
+7f
+06
+71
+a1
+7f
+02
+f1
+97
+7f
+03
+f1
+97
+7f
+04
+f1
+97
+7f
+17
+f1
+97
+7f
+1b
+f1
+97
+7f
+17
+f1
+97
+7f
+04
+f1
+97
+7f
+06
+90
+1c
+2c
+ef
+f0
+12
+0d
+4c
+92
+09
+90
+1c
+2c
+e0
+ff
+a2
+09
+b3
+92
+08
+ef
+54
+07
+fe
+ef
+13
+13
+13
+54
+03
+ff
+30
+08
+43
+24
+a0
+f5
+82
+e4
+34
+00
+f5
+83
+c0
+83
+c0
+82
+e0
+fd
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+f4
+5d
+d0
+82
+d0
+83
+f0
+74
+a4
+2f
+f5
+82
+e4
+34
+00
+f5
+83
+c0
+83
+c0
+82
+e0
+ff
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+4f
+d0
+82
+d0
+83
+f0
+22
+74
+a0
+2f
+f5
+82
+e4
+34
+00
+f5
+83
+c0
+83
+c0
+82
+e0
+fd
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+fc
+4d
+d0
+82
+d0
+83
+f0
+74
+a4
+2f
+f5
+82
+e4
+34
+00
+f5
+83
+e0
+ff
+ec
+f4
+fe
+ef
+5e
+f0
+22
+91
+e3
+91
+f9
+7f
+18
+b1
+4c
+40
+0e
+7f
+02
+11
+4a
+7f
+03
+11
+4a
+7f
+04
+11
+4a
+80
+ec
+22
+90
+02
+18
+ef
+f0
+90
+80
+88
+74
+01
+f0
+a3
+e4
+f0
+90
+80
+8e
+04
+f0
+a3
+e4
+f0
+90
+80
+06
+74
+02
+f0
+90
+81
+2c
+e0
+30
+e3
+f9
+90
+02
+1d
+e0
+ff
+22
+e4
+90
+1c
+27
+f0
+a3
+f0
+e4
+ff
+11
+4a
+bf
+31
+18
+7f
+06
+11
+4a
+ef
+44
+80
+ff
+90
+1c
+27
+f0
+7d
+06
+51
+8e
+90
+1c
+28
+74
+31
+f0
+21
+52
+7f
+01
+11
+4a
+bf
+5a
+18
+90
+1c
+28
+74
+5a
+f0
+7f
+06
+11
+4a
+ef
+44
+80
+ff
+90
+1c
+27
+f0
+7d
+06
+51
+8e
+21
+52
+e4
+ff
+11
+4a
+ef
+64
+30
+60
+02
+21
+4e
+7f
+01
+11
+4a
+bf
+54
+08
+90
+1c
+28
+74
+31
+f0
+21
+52
+7f
+01
+11
+4a
+ef
+54
+f0
+64
+d0
+70
+28
+7f
+1e
+11
+4a
+ef
+30
+e0
+08
+90
+1c
+28
+74
+d1
+f0
+80
+06
+90
+1c
+28
+74
+d0
+f0
+7f
+06
+11
+4a
+ef
+44
+80
+ff
+90
+1c
+27
+f0
+7d
+06
+51
+8e
+80
+4d
+7f
+01
+11
+4a
+ef
+54
+f0
+ff
+bf
+50
+18
+90
+1c
+28
+74
+50
+f0
+7f
+06
+11
+4a
+ef
+44
+80
+ff
+90
+1c
+27
+f0
+7d
+06
+51
+8e
+80
+2a
+7f
+01
+11
+4a
+bf
+02
+1f
+7f
+06
+11
+4a
+ef
+44
+80
+ff
+90
+1c
+27
+f0
+7d
+06
+51
+8e
+90
+1c
+28
+74
+02
+f0
+7f
+01
+11
+4a
+ef
+64
+02
+60
+04
+91
+f9
+01
+7a
+90
+1c
+28
+e0
+64
+d0
+60
+02
+41
+22
+7d
+09
+7f
+5a
+51
+8e
+7d
+0d
+7f
+0a
+51
+8e
+7d
+1b
+7f
+35
+51
+8e
+7d
+1d
+7f
+db
+51
+8e
+7d
+28
+7f
+b4
+51
+8e
+7d
+29
+7f
+46
+51
+8e
+7d
+2a
+7f
+96
+51
+8e
+7d
+2b
+7f
+8c
+51
+8e
+7d
+2c
+7f
+6e
+51
+8e
+7d
+2d
+7f
+64
+51
+8e
+7d
+38
+7f
+5f
+51
+8e
+7d
+39
+7f
+0f
+51
+8e
+7d
+3a
+7f
+32
+51
+8e
+7d
+3b
+7f
+47
+51
+8e
+7d
+42
+7f
+10
+51
+8e
+7d
+43
+7f
+09
+51
+8e
+7d
+54
+7f
+2e
+51
+8e
+7d
+55
+7f
+f2
+51
+8e
+7d
+61
+7f
+f4
+51
+8e
+7d
+63
+7f
+70
+51
+8e
+7d
+75
+7f
+52
+51
+8e
+7d
+76
+7f
+41
+51
+8e
+7d
+77
+7f
+ed
+51
+8e
+7d
+78
+7f
+23
+51
+8e
+7d
+79
+7f
+46
+51
+8e
+7d
+7a
+7f
+e5
+51
+8e
+7d
+7c
+7f
+48
+51
+8e
+7d
+7d
+7f
+80
+51
+8e
+7d
+7e
+7f
+77
+51
+8e
+7d
+7f
+7f
+01
+51
+8e
+7d
+0b
+e4
+ff
+51
+8e
+7d
+7f
+e4
+ff
+51
+8e
+7d
+09
+e4
+ff
+51
+8e
+90
+1c
+28
+e0
+b4
+02
+18
+7d
+09
+7f
+5a
+51
+8e
+7d
+26
+7f
+34
+51
+8e
+7d
+19
+7f
+14
+51
+8e
+7d
+09
+e4
+ff
+51
+8e
+90
+1c
+28
+e0
+64
+50
+70
+3f
+7d
+09
+7f
+5a
+51
+8e
+7d
+5b
+7f
+9a
+51
+8e
+7f
+0d
+11
+4a
+ef
+64
+12
+60
+08
+7d
+0d
+7f
+12
+51
+8e
+80
+ef
+7f
+0e
+11
+4a
+ef
+64
+c5
+60
+08
+7d
+0e
+7f
+c5
+51
+8e
+80
+ef
+7f
+53
+11
+4a
+ef
+64
+48
+60
+08
+7d
+53
+7f
+48
+51
+8e
+80
+ef
+90
+1c
+28
+e0
+ff
+22
+ac
+07
+ed
+44
+80
+90
+02
+18
+f0
+a3
+ef
+f0
+90
+80
+88
+74
+02
+f0
+a3
+e4
+f0
+90
+80
+8e
+f0
+a3
+f0
+90
+80
+06
+74
+02
+f0
+90
+81
+2c
+e0
+30
+e3
+f9
+7f
+00
+22
+91
+f9
+90
+4e
+d9
+e0
+ff
+64
+d0
+60
+04
+ef
+b4
+d1
+0a
+90
+4e
+db
+e0
+04
+ff
+7d
+06
+51
+8e
+90
+4e
+d9
+e0
+b4
+31
+18
+90
+4e
+db
+e0
+b4
+01
+08
+7d
+06
+e4
+ff
+51
+8e
+80
+09
+90
+4e
+db
+e0
+ff
+7d
+06
+51
+8e
+90
+4e
+d9
+e0
+b4
+50
+0b
+90
+4e
+db
+e0
+24
+03
+ff
+7d
+06
+51
+8e
+90
+4e
+d9
+e0
+b4
+5a
+0b
+90
+4e
+db
+e0
+24
+03
+ff
+7d
+06
+51
+8e
+90
+4e
+d9
+e0
+64
+02
+70
+53
+7d
+09
+7f
+5a
+51
+8e
+90
+4e
+db
+e0
+14
+60
+18
+14
+60
+23
+14
+60
+2e
+24
+03
+70
+36
+7d
+0d
+7f
+15
+51
+8e
+7d
+0e
+7f
+15
+51
+8e
+80
+28
+7d
+0d
+7f
+20
+51
+8e
+7d
+0e
+7f
+20
+51
+8e
+80
+1a
+7d
+0d
+7f
+2a
+51
+8e
+7d
+0e
+7f
+2a
+51
+8e
+80
+0c
+7d
+0d
+7f
+3f
+51
+8e
+7d
+0e
+7f
+3f
+51
+8e
+7d
+09
+e4
+ff
+51
+8e
+90
+80
+81
+e4
+f0
+90
+80
+73
+e0
+44
+02
+f0
+90
+80
+77
+e0
+44
+02
+f0
+22
+e4
+90
+1c
+06
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+7f
+18
+b1
+4c
+50
+02
+c3
+22
+91
+f9
+7f
+02
+11
+4a
+ef
+20
+e7
+02
+81
+e1
+90
+4e
+c7
+74
+02
+f0
+90
+4e
+d9
+e0
+64
+02
+60
+16
+7f
+03
+11
+4a
+90
+1c
+06
+ef
+f0
+7f
+04
+11
+4a
+ef
+f4
+04
+90
+1c
+07
+f0
+80
+29
+7f
+03
+11
+4a
+90
+1c
+06
+ef
+f0
+7f
+04
+11
+4a
+90
+1c
+07
+ef
+f0
+7f
+12
+11
+4a
+90
+1c
+09
+ef
+f0
+e0
+ff
+c4
+54
+0f
+90
+1c
+08
+f0
+ef
+54
+0f
+a3
+f0
+71
+70
+90
+4e
+d9
+e0
+64
+02
+70
+2a
+90
+1c
+08
+e0
+ff
+30
+e3
+05
+44
+f0
+f0
+80
+07
+90
+1c
+08
+e0
+54
+0f
+f0
+90
+1c
+09
+e0
+ff
+30
+e3
+05
+44
+f0
+f0
+80
+31
+90
+1c
+09
+e0
+54
+0f
+f0
+80
+28
+90
+1c
+06
+e0
+30
+e7
+08
+90
+1c
+08
+74
+ff
+f0
+80
+05
+e4
+90
+1c
+08
+f0
+90
+1c
+07
+e0
+30
+e7
+08
+90
+1c
+09
+74
+ff
+f0
+80
+05
+e4
+90
+1c
+09
+f0
+90
+4e
+f0
+e0
+70
+31
+90
+1c
+08
+e0
+fe
+90
+1c
+06
+e0
+fd
+ee
+ed
+ff
+c3
+e4
+9f
+ff
+e4
+9e
+90
+4e
+fd
+f0
+a3
+ef
+f0
+90
+1c
+09
+e0
+fe
+90
+1c
+07
+e0
+fd
+ee
+ed
+ff
+90
+4e
+fb
+ee
+f0
+a3
+ef
+f0
+80
+2a
+90
+1c
+08
+e0
+fe
+90
+1c
+06
+e0
+fd
+ee
+ed
+ff
+90
+4e
+fb
+ee
+f0
+a3
+ef
+f0
+90
+1c
+09
+e0
+fe
+90
+1c
+07
+e0
+fd
+ee
+ed
+ff
+90
+4e
+fd
+ee
+f0
+a3
+ef
+f0
+90
+4e
+fb
+e0
+fe
+a3
+e0
+ff
+c3
+e4
+9f
+ff
+e4
+9e
+90
+4e
+fb
+f0
+a3
+ef
+f0
+a3
+e0
+fe
+a3
+e0
+ff
+c3
+e4
+9f
+ff
+e4
+9e
+90
+4e
+fd
+f0
+a3
+ef
+f0
+90
+4e
+bd
+e0
+b4
+01
+03
+12
+20
+50
+d3
+22
+c3
+22
+e4
+ff
+91
+f9
+7f
+06
+11
+4a
+ef
+54
+f7
+ff
+7d
+06
+51
+8e
+7f
+02
+11
+4a
+61
+70
+e4
+90
+1c
+33
+f0
+90
+80
+81
+04
+f0
+e4
+90
+4f
+00
+f0
+90
+4f
+00
+e0
+04
+f0
+e0
+c3
+94
+06
+40
+03
+12
+17
+3a
+e4
+ff
+11
+4a
+90
+1c
+33
+ef
+f0
+64
+30
+60
+27
+e0
+64
+31
+60
+22
+90
+80
+81
+e4
+f0
+90
+80
+73
+e0
+44
+02
+f0
+90
+80
+77
+e0
+54
+fd
+f0
+90
+80
+73
+e0
+44
+02
+f0
+90
+80
+81
+74
+01
+f0
+80
+bd
+22
+7b
+01
+7a
+81
+79
+1c
+ad
+07
+e4
+90
+1c
+2b
+f0
+fe
+ef
+54
+07
+f0
+ef
+13
+13
+13
+54
+03
+fe
+f5
+82
+75
+83
+00
+12
+01
+12
+fd
+33
+95
+e0
+fc
+90
+1c
+2b
+e0
+ff
+74
+01
+7e
+00
+a8
+07
+08
+80
+05
+c3
+33
+ce
+33
+ce
+d8
+f9
+ff
+ee
+5c
+fe
+ef
+5d
+4e
+24
+ff
+22
+e4
+90
+1b
+f8
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+7f
+04
+b1
+4c
+40
+04
+7f
+01
+80
+02
+7f
+00
+90
+1b
+f8
+ef
+f0
+7f
+17
+b1
+4c
+40
+04
+7f
+01
+80
+02
+7f
+00
+90
+1b
+fa
+ef
+f0
+7f
+1b
+b1
+4c
+40
+04
+7f
+01
+80
+02
+7f
+00
+90
+1b
+f9
+ef
+f0
+e0
+ff
+25
+e0
+ff
+90
+1b
+f8
+e0
+4f
+ff
+90
+1b
+fa
+e0
+fe
+25
+e0
+25
+e0
+4f
+a3
+f0
+64
+07
+70
+70
+90
+4f
+02
+74
+1e
+f0
+e4
+90
+4e
+c4
+f0
+a3
+f0
+90
+4e
+c7
+74
+0a
+f0
+90
+4e
+c6
+e0
+c3
+94
+19
+50
+59
+90
+4e
+c6
+e0
+04
+f0
+e0
+64
+19
+70
+4e
+90
+4f
+01
+f0
+a3
+f0
+90
+4e
+bd
+e0
+60
+32
+14
+60
+1e
+24
+fb
+60
+2b
+24
+fe
+60
+0e
+04
+70
+34
+7f
+11
+d1
+a2
+90
+4e
+be
+74
+08
+f0
+22
+90
+4e
+bd
+74
+03
+f0
+80
+22
+f1
+40
+7f
+0a
+7e
+00
+12
+15
+b2
+90
+4e
+bd
+74
+03
+f0
+80
+11
+f1
+40
+90
+4e
+bd
+74
+03
+f0
+80
+07
+22
+e4
+90
+4e
+c6
+f0
+22
+7b
+01
+7a
+4f
+79
+11
+7d
+02
+7c
+00
+7f
+aa
+7e
+7f
+12
+13
+68
+90
+4f
+12
+e0
+04
+f0
+70
+06
+90
+4f
+11
+e0
+04
+f0
+7b
+01
+7a
+4f
+79
+11
+7d
+02
+7c
+00
+7f
+aa
+7e
+7f
+12
+12
+6d
+90
+4f
+11
+e0
+fc
+a3
+e0
+90
+45
+3f
+f0
+ec
+a3
+f0
+7f
+0d
+90
+1c
+12
+ef
+f0
+78
+13
+7c
+1c
+7d
+01
+7b
+ff
+7a
+02
+79
+ee
+7e
+00
+7f
+03
+12
+00
+d3
+90
+1c
+12
+e0
+90
+1c
+15
+f0
+7b
+01
+7a
+1c
+79
+13
+7d
+03
+90
+1b
+ed
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+a3
+ed
+f0
+90
+47
+c6
+e0
+ff
+a3
+e0
+90
+1b
+f1
+cf
+f0
+a3
+ef
+f0
+90
+1b
+f0
+e0
+ff
+14
+f0
+ef
+60
+3f
+90
+1b
+ed
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+02
+04
+a9
+f0
+fa
+12
+00
+f9
+ff
+90
+1b
+f1
+e4
+75
+f0
+01
+12
+02
+04
+85
+f0
+82
+f5
+83
+ef
+f0
+90
+1b
+f1
+e0
+fe
+a3
+e0
+ff
+be
+47
+c6
+bf
+c4
+c3
+90
+1b
+f1
+74
+47
+f0
+a3
+74
+2e
+f0
+80
+b7
+90
+1b
+f1
+e0
+ff
+a3
+e0
+90
+47
+c6
+cf
+f0
+a3
+ef
+f0
+22
+7f
+24
+d1
+a2
+e4
+90
+4e
+bd
+f0
+22
+e4
+ff
+91
+f9
+7f
+06
+11
+4a
+ef
+44
+08
+ff
+7d
+06
+51
+8e
+90
+80
+81
+e4
+f0
+c2
+06
+7f
+19
+12
+03
+a1
+c2
+06
+7f
+1a
+02
+03
+a1
+90
+1c
+2d
+ef
+f0
+7b
+01
+7a
+80
+79
+74
+b1
+52
+92
+0a
+90
+1c
+2d
+e0
+ff
+a2
+0a
+b3
+92
+02
+7b
+01
+7a
+80
+79
+74
+a2
+02
+92
+01
+02
+03
+c2
+7b
+01
+7a
+49
+79
+50
+7d
+04
+7c
+00
+7f
+a4
+7e
+7f
+12
+13
+68
+90
+49
+50
+e0
+f4
+70
+27
+a3
+e0
+f4
+70
+22
+a3
+e0
+b4
+ff
+1d
+a3
+e0
+b4
+ff
+18
+90
+49
+50
+74
+0f
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+7f
+23
+d1
+a2
+90
+4e
+f2
+74
+01
+f0
+80
+04
+7f
+23
+d1
+a2
+90
+4e
+bd
+74
+01
+f0
+22
+d2
+07
+7f
+07
+12
+10
+75
+90
+4e
+ca
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+7f
+04
+b1
+4c
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+ca
+f0
+30
+e0
+06
+90
+4e
+c7
+74
+02
+f0
+90
+4e
+ca
+e0
+54
+07
+ff
+bf
+07
+06
+a3
+74
+01
+f0
+80
+07
+ef
+70
+04
+90
+4e
+cb
+f0
+90
+4e
+cb
+e0
+ff
+22
+d2
+07
+7f
+07
+11
+75
+90
+4e
+cc
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+7f
+17
+12
+0d
+4c
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+cc
+f0
+30
+e0
+06
+90
+4e
+c7
+74
+02
+f0
+90
+4e
+cc
+e0
+54
+07
+ff
+bf
+07
+06
+a3
+74
+01
+f0
+80
+07
+ef
+70
+04
+90
+4e
+cd
+f0
+90
+4e
+cd
+e0
+ff
+22
+ac
+07
+d2
+05
+12
+03
+b8
+af
+04
+a2
+07
+92
+02
+12
+0f
+86
+af
+04
+c2
+03
+7b
+01
+7a
+80
+79
+78
+a2
+03
+92
+01
+02
+03
+c2
+e4
+90
+1b
+f3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+12
+0f
+dd
+90
+1b
+f3
+ef
+f0
+11
+29
+90
+1b
+f5
+ef
+f0
+31
+c6
+90
+1b
+f4
+ef
+f0
+11
+f8
+90
+1b
+f6
+ef
+f0
+31
+5f
+90
+1b
+f7
+ef
+f0
+51
+12
+90
+1b
+f4
+e0
+ff
+25
+e0
+ff
+90
+1b
+f3
+e0
+4f
+ff
+90
+1b
+f5
+e0
+fe
+25
+e0
+25
+e0
+4f
+ff
+a3
+e0
+fe
+33
+33
+33
+54
+f8
+4f
+ff
+a3
+e0
+fe
+c4
+54
+f0
+4f
+90
+4e
+ed
+f0
+22
+7f
+17
+12
+0d
+4c
+40
+03
+7f
+00
+22
+c2
+07
+7f
+07
+11
+75
+90
+4e
+d2
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+7f
+17
+12
+0d
+4c
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+d2
+f0
+d2
+07
+7f
+07
+11
+75
+c2
+06
+7f
+07
+12
+03
+a1
+90
+4e
+d2
+e0
+30
+e0
+06
+90
+4e
+c7
+74
+02
+f0
+90
+4e
+d2
+e0
+54
+07
+ff
+bf
+07
+06
+a3
+74
+01
+f0
+80
+07
+ef
+70
+04
+90
+4e
+d3
+f0
+90
+4e
+d3
+e0
+ff
+22
+7f
+04
+12
+0d
+4c
+40
+03
+7f
+00
+22
+c2
+07
+7f
+07
+11
+75
+90
+4e
+d0
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+7f
+04
+12
+0d
+4c
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+d0
+f0
+d2
+07
+7f
+07
+11
+75
+c2
+06
+7f
+07
+12
+03
+a1
+90
+4e
+d0
+e0
+30
+e0
+06
+90
+4e
+c7
+74
+02
+f0
+90
+4e
+d0
+e0
+54
+07
+ff
+bf
+07
+06
+a3
+74
+01
+f0
+80
+07
+ef
+70
+04
+90
+4e
+d1
+f0
+90
+4e
+d1
+e0
+ff
+22
+d2
+07
+7f
+07
+11
+75
+90
+4e
+ce
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+7f
+1b
+12
+0d
+4c
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+ce
+f0
+30
+e0
+06
+90
+4e
+c7
+74
+02
+f0
+90
+4e
+ce
+e0
+54
+07
+ff
+bf
+07
+06
+a3
+74
+01
+f0
+80
+07
+ef
+70
+04
+90
+4e
+cf
+f0
+90
+4e
+cf
+e0
+ff
+22
+90
+4e
+dc
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+7f
+06
+12
+0d
+4c
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+dc
+f0
+30
+e0
+06
+90
+4e
+c7
+74
+02
+f0
+90
+4e
+dc
+e0
+64
+07
+70
+29
+90
+4e
+db
+e0
+04
+f0
+e0
+54
+03
+f0
+70
+02
+04
+f0
+90
+4e
+db
+e0
+90
+4e
+dd
+f0
+12
+0a
+b9
+7b
+01
+7a
+4e
+79
+db
+7d
+01
+7c
+00
+7f
+a8
+7e
+7f
+51
+6d
+22
+90
+1b
+c9
+ee
+f0
+a3
+ef
+f0
+a3
+ec
+f0
+a3
+ed
+f0
+a3
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+1b
+cb
+e0
+70
+02
+a3
+e0
+70
+02
+61
+1b
+90
+1b
+c9
+e0
+fe
+a3
+e0
+ff
+44
+0f
+24
+01
+fd
+e4
+3e
+fc
+c3
+ed
+9f
+ff
+ec
+9e
+fe
+90
+1b
+d0
+f0
+a3
+ef
+f0
+90
+1b
+cb
+e0
+fc
+a3
+e0
+fd
+d3
+9f
+ec
+9e
+40
+0a
+90
+1b
+d0
+e0
+fe
+a3
+e0
+ff
+80
+04
+ae
+04
+af
+05
+90
+1b
+d0
+ee
+f0
+fc
+a3
+ef
+f0
+fd
+c3
+90
+1b
+cc
+e0
+9d
+f0
+90
+1b
+cb
+e0
+9c
+f0
+90
+1b
+c9
+e0
+fe
+a3
+e0
+ff
+90
+1b
+cd
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+91
+79
+7f
+0a
+7e
+00
+b1
+b2
+90
+1b
+d0
+e0
+fe
+a3
+e0
+ff
+90
+1b
+ce
+ee
+8f
+f0
+12
+01
+ee
+90
+1b
+ca
+e0
+2f
+f0
+90
+1b
+c9
+e0
+3e
+f0
+41
+84
+22
+e4
+90
+1c
+29
+f0
+7b
+01
+7a
+1c
+79
+29
+7d
+01
+fc
+7f
+ac
+7e
+7f
+71
+68
+90
+1c
+29
+e0
+b4
+ff
+30
+91
+ee
+90
+4f
+11
+ee
+f0
+a3
+ef
+f0
+7b
+01
+7a
+4f
+79
+11
+7d
+02
+7c
+00
+7f
+aa
+7e
+7f
+51
+6d
+90
+1c
+29
+74
+5a
+f0
+7b
+01
+7a
+1c
+79
+29
+7d
+01
+7c
+00
+7f
+ac
+7e
+7f
+51
+6d
+22
+90
+1b
+fd
+ec
+f0
+a3
+ed
+f0
+a3
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+80
+98
+74
+04
+f0
+a3
+e4
+f0
+90
+1b
+2c
+74
+a0
+f0
+a3
+ee
+f0
+a3
+ef
+f0
+90
+1b
+2f
+74
+a1
+f0
+7a
+1b
+79
+2c
+7e
+1b
+7f
+2c
+74
+2c
+fc
+74
+1b
+ff
+ec
+fe
+ef
+90
+80
+9a
+ee
+f0
+a3
+ef
+f0
+90
+1b
+fd
+e0
+fc
+a3
+e0
+fa
+ec
+ff
+ea
+fe
+ef
+90
+80
+9e
+ee
+f0
+a3
+ef
+f0
+7a
+1b
+79
+30
+7e
+1b
+7f
+30
+74
+30
+fc
+74
+1b
+ff
+ec
+fe
+ef
+90
+80
+9c
+ee
+f0
+a3
+ef
+f0
+90
+80
+90
+74
+02
+f0
+90
+80
+9c
+a3
+e0
+20
+e7
+07
+90
+80
+90
+e0
+44
+01
+f0
+90
+80
+06
+e0
+44
+04
+f0
+91
+e6
+90
+1b
+ff
+e0
+a3
+e0
+fa
+a3
+e0
+ae
+02
+ff
+7b
+01
+7a
+1b
+79
+30
+90
+1b
+fd
+e0
+a3
+e0
+90
+1b
+ec
+f0
+90
+1b
+e7
+ee
+f0
+a3
+ef
+f0
+a3
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+1b
+ec
+e0
+ff
+14
+f0
+ef
+60
+27
+90
+1b
+e9
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+02
+04
+a9
+f0
+fa
+12
+00
+f9
+ff
+90
+1b
+e7
+e4
+75
+f0
+01
+12
+02
+04
+85
+f0
+82
+f5
+83
+ef
+f0
+80
+cf
+22
+e4
+90
+4e
+c4
+f0
+a3
+f0
+7b
+01
+7a
+45
+79
+3e
+7d
+06
+fc
+7f
+9c
+7e
+7f
+71
+68
+90
+4e
+bd
+74
+08
+f0
+7f
+27
+02
+0e
+a2
+90
+1b
+94
+ee
+f0
+a3
+ef
+f0
+a3
+ec
+f0
+a3
+ed
+f0
+7e
+1b
+7f
+9b
+90
+1b
+ec
+f0
+91
+15
+90
+1b
+98
+74
+a0
+f0
+90
+1b
+94
+e0
+ff
+a3
+e0
+90
+1b
+99
+cf
+f0
+a3
+ef
+f0
+90
+1b
+97
+e0
+24
+03
+fd
+90
+1b
+96
+e0
+34
+00
+fc
+ed
+fa
+ec
+ff
+ea
+fe
+ef
+90
+80
+98
+ee
+f0
+a3
+ef
+f0
+7d
+98
+ed
+fa
+74
+1b
+ff
+ea
+fe
+ef
+a3
+ee
+f0
+a3
+ef
+f0
+90
+80
+9e
+e4
+f0
+a3
+f0
+90
+80
+90
+04
+f0
+90
+80
+06
+e0
+44
+04
+f0
+90
+81
+2c
+e0
+30
+e5
+f9
+22
+90
+4e
+41
+e0
+fe
+a3
+e0
+ff
+22
+e4
+90
+1c
+25
+f0
+a3
+f0
+91
+ee
+c0
+06
+c0
+07
+d1
+e1
+ac
+06
+ad
+07
+d0
+07
+d0
+06
+c3
+ed
+9f
+ff
+ec
+9e
+90
+1c
+25
+f0
+a3
+ef
+f0
+90
+42
+cf
+e0
+64
+04
+60
+02
+a1
+a8
+91
+ee
+c0
+06
+c0
+07
+b1
+a9
+ac
+06
+ad
+07
+d0
+07
+d0
+06
+c3
+ed
+9f
+ff
+ec
+9e
+fe
+7c
+00
+7d
+1e
+12
+01
+63
+7c
+00
+7d
+0a
+12
+01
+51
+c3
+90
+1c
+26
+e0
+9f
+90
+1c
+25
+e0
+9e
+50
+08
+90
+4e
+e2
+74
+01
+f0
+80
+05
+e4
+90
+4e
+e2
+f0
+91
+ee
+c0
+06
+c0
+07
+b1
+a9
+ac
+06
+ad
+07
+d0
+07
+d0
+06
+c3
+ed
+9f
+ff
+ec
+9e
+fe
+7c
+00
+7d
+1e
+12
+01
+63
+7c
+00
+7d
+09
+12
+01
+51
+c3
+90
+1c
+26
+e0
+9f
+90
+1c
+25
+e0
+9e
+50
+12
+90
+49
+54
+e0
+64
+01
+60
+08
+90
+4e
+bd
+e0
+64
+01
+60
+02
+d1
+ea
+22
+90
+4e
+43
+e0
+fe
+a3
+e0
+ff
+22
+d3
+ef
+94
+00
+ee
+94
+00
+40
+15
+e4
+fd
+fc
+0d
+bd
+00
+01
+0c
+bc
+04
+f8
+bd
+a6
+f5
+ef
+1f
+70
+01
+1e
+80
+e2
+22
+e4
+90
+0b
+2b
+f0
+90
+0b
+2a
+f0
+7f
+01
+fe
+80
+d3
+e4
+90
+1b
+e1
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+90
+4e
+7d
+f0
+f1
+3a
+90
+4e
+bd
+e0
+b4
+01
+17
+90
+4e
+e3
+e0
+b4
+01
+10
+7f
+18
+12
+0d
+4c
+40
+09
+12
+0b
+84
+e4
+33
+90
+1b
+e5
+f0
+90
+4e
+bd
+74
+01
+f0
+90
+1b
+e6
+e0
+04
+f0
+12
+1d
+98
+90
+1b
+e6
+e0
+d3
+94
+05
+40
+0b
+74
+05
+f0
+90
+4e
+7d
+74
+02
+f0
+80
+75
+f1
+b1
+11
+96
+90
+4e
+7d
+e0
+70
+6b
+90
+4e
+d8
+e0
+60
+16
+90
+1b
+e5
+74
+01
+f0
+90
+4e
+7d
+74
+03
+f0
+90
+49
+b7
+74
+01
+f0
+90
+4e
+80
+f0
+90
+4e
+ed
+e0
+ff
+90
+4e
+d4
+e0
+6f
+60
+1d
+90
+49
+b7
+74
+01
+f0
+90
+1b
+e5
+f0
+90
+4e
+7d
+74
+03
+f0
+90
+4e
+d4
+ef
+f0
+bf
+07
+05
+e4
+90
+1b
+e5
+f0
+90
+4e
+d4
+e0
+b4
+07
+06
+90
+4e
+7d
+74
+03
+f0
+90
+1b
+e5
+e0
+b4
+01
+12
+f1
+5e
+e4
+90
+1b
+e5
+f0
+90
+4e
+7d
+e0
+64
+03
+60
+03
+74
+01
+f0
+90
+0b
+2a
+e0
+64
+01
+60
+02
+c1
+18
+90
+4e
+c7
+e0
+70
+06
+90
+4e
+c1
+e0
+60
+02
+80
+13
+90
+4e
+bd
+e0
+b4
+01
+0c
+12
+07
+40
+c2
+08
+7f
+18
+12
+07
+ab
+a1
+d1
+90
+0b
+2b
+74
+01
+f0
+e4
+90
+0b
+2a
+f0
+22
+90
+42
+d1
+e0
+fe
+a3
+e0
+ff
+22
+e4
+90
+4e
+c4
+f0
+a3
+f0
+90
+4e
+c7
+f0
+90
+4e
+c1
+04
+f0
+e4
+90
+4e
+bd
+f0
+7f
+19
+02
+0e
+a2
+90
+4e
+c7
+e0
+60
+02
+14
+f0
+90
+4e
+c9
+e0
+04
+f0
+90
+4e
+ec
+e0
+60
+02
+04
+f0
+12
+1b
+92
+12
+0d
+91
+91
+f7
+90
+4f
+01
+e0
+b4
+01
+10
+a3
+e0
+70
+06
+90
+4f
+01
+f0
+d1
+ea
+90
+4f
+02
+e0
+14
+f0
+22
+90
+80
+86
+74
+75
+f0
+a3
+74
+0a
+f0
+90
+80
+8a
+74
+18
+f0
+a3
+74
+02
+f0
+a3
+74
+1d
+f0
+a3
+74
+02
+f0
+90
+80
+77
+e0
+44
+02
+f0
+22
+90
+4e
+d4
+e0
+90
+4e
+21
+f0
+90
+4e
+fb
+e0
+fc
+a3
+e0
+90
+4e
+22
+f0
+ec
+ff
+33
+95
+e0
+a3
+ef
+f0
+90
+4e
+fd
+e0
+fc
+a3
+e0
+90
+4e
+24
+f0
+ec
+ff
+33
+95
+e0
+a3
+ef
+f0
+90
+4e
+d8
+e0
+90
+4e
+26
+f0
+e4
+a3
+f0
+90
+4e
+d8
+f0
+90
+4e
+c4
+f0
+a3
+f0
+22
+90
+4e
+bd
+e0
+64
+01
+60
+06
+90
+4e
+c7
+74
+03
+f0
+22
+e4
+90
+1c
+16
+f0
+a3
+f0
+7f
+02
+12
+0d
+4c
+e4
+33
+90
+1c
+18
+f0
+7f
+03
+12
+0d
+4c
+e4
+33
+ff
+90
+1c
+18
+e0
+fe
+25
+e0
+4f
+ff
+90
+4e
+d5
+e0
+6f
+60
+5d
+90
+4e
+d6
+e0
+a3
+f0
+90
+4e
+d5
+e0
+a3
+f0
+90
+4e
+d5
+ef
+f0
+fd
+a3
+e0
+75
+f0
+04
+a4
+fb
+aa
+f0
+ed
+75
+f0
+10
+a4
+ff
+e5
+f0
+4a
+fe
+ef
+4b
+ff
+a3
+e0
+fd
+ee
+ef
+4d
+ff
+90
+1c
+16
+ee
+f0
+a3
+ef
+f0
+ee
+70
+23
+ef
+24
+f5
+60
+15
+24
+d7
+60
+11
+24
+fc
+60
+04
+24
+31
+70
+12
+90
+4e
+d8
+e0
+14
+f0
+02
+17
+a2
+90
+4e
+d8
+e0
+04
+f0
+12
+17
+a2
+22
+90
+1c
+02
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+a3
+ed
+f0
+90
+4e
+bd
+e0
+ff
+64
+01
+60
+0a
+ef
+64
+02
+60
+05
+ef
+64
+07
+70
+2d
+ef
+b4
+01
+10
+90
+1c
+02
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+a3
+e0
+fd
+41
+01
+90
+4e
+bd
+e0
+b4
+07
+10
+90
+1c
+02
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+a3
+e0
+fd
+41
+45
+80
+fe
+22
+e4
+90
+1c
+0a
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+c2
+00
+90
+4e
+bd
+e0
+ff
+64
+01
+60
+07
+ef
+64
+07
+60
+02
+21
+e8
+90
+4e
+e3
+e0
+70
+0a
+90
+4e
+bd
+e0
+64
+01
+70
+02
+21
+e8
+31
+e9
+40
+02
+21
+e8
+90
+4e
+ed
+e0
+ff
+90
+4e
+d4
+e0
+b5
+07
+19
+90
+4e
+c7
+e0
+fe
+d3
+94
+00
+40
+05
+ee
+94
+03
+40
+0a
+90
+4e
+bd
+e0
+b4
+01
+0b
+ef
+60
+08
+d2
+00
+90
+49
+b7
+74
+01
+f0
+90
+4e
+ed
+e0
+90
+4e
+d4
+f0
+e4
+90
+4e
+fb
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+90
+4e
+bd
+e0
+b4
+01
+07
+12
+0b
+84
+72
+00
+92
+00
+90
+4e
+bd
+e0
+b4
+07
+20
+90
+45
+95
+e0
+b4
+01
+19
+12
+17
+3a
+12
+0b
+84
+72
+00
+92
+00
+90
+4e
+83
+e0
+ff
+90
+4e
+84
+e0
+6f
+60
+03
+e0
+04
+f0
+90
+4e
+d8
+e0
+60
+1f
+d2
+00
+90
+49
+b7
+74
+01
+f0
+90
+4e
+80
+f0
+90
+4e
+bd
+e0
+b4
+07
+0c
+90
+4e
+81
+74
+01
+f0
+90
+4e
+82
+74
+0a
+f0
+90
+4e
+c6
+e0
+c3
+94
+17
+40
+07
+e4
+90
+4e
+d4
+f0
+d2
+00
+20
+00
+02
+21
+e8
+90
+4e
+c6
+e0
+c3
+94
+18
+50
+75
+90
+49
+c2
+74
+01
+f0
+90
+4e
+bd
+e0
+ff
+64
+01
+60
+0a
+ef
+64
+02
+60
+05
+ef
+64
+07
+70
+5c
+12
+17
+5e
+90
+4e
+a6
+e0
+60
+49
+90
+4e
+21
+e0
+70
+33
+a3
+e0
+70
+2f
+a3
+e0
+70
+2b
+a3
+e0
+70
+27
+a3
+e0
+70
+23
+a3
+e0
+70
+1f
+a3
+e0
+70
+1b
+90
+1c
+32
+e0
+c3
+94
+03
+50
+2c
+7b
+01
+7a
+4e
+79
+21
+7d
+07
+11
+39
+90
+1c
+32
+e0
+04
+f0
+22
+22
+7b
+01
+7a
+4e
+79
+21
+7d
+07
+11
+39
+e4
+90
+1c
+32
+f0
+22
+7b
+01
+7a
+4e
+79
+21
+7d
+07
+11
+39
+22
+90
+47
+c6
+e0
+fe
+a3
+e0
+ff
+90
+47
+c4
+e0
+b5
+06
+07
+a3
+e0
+b5
+07
+02
+d3
+22
+c3
+22
+90
+1c
+2f
+ed
+f0
+90
+1a
+96
+74
+06
+f0
+90
+47
+c6
+e0
+fe
+a3
+e0
+ff
+90
+47
+c4
+e0
+b5
+06
+f1
+a3
+e0
+b5
+07
+ec
+90
+1c
+2f
+e0
+fd
+90
+1a
+97
+f0
+7e
+1a
+7f
+98
+90
+1b
+ec
+ed
+f0
+12
+14
+15
+7b
+01
+7a
+1a
+79
+96
+90
+1c
+2f
+e0
+24
+02
+fd
+02
+0e
+ca
+90
+1c
+31
+ed
+f0
+90
+1a
+96
+74
+05
+f0
+90
+47
+c6
+e0
+fe
+a3
+e0
+ff
+90
+47
+c4
+e0
+b5
+06
+f1
+a3
+e0
+b5
+07
+ec
+90
+1c
+31
+e0
+fd
+90
+1a
+97
+f0
+7e
+1a
+7f
+98
+90
+1b
+ec
+ed
+f0
+12
+14
+15
+7b
+01
+7a
+1a
+79
+96
+90
+1c
+31
+e0
+24
+02
+fd
+02
+0e
+ca
+e4
+90
+1c
+2a
+f0
+90
+4e
+c5
+e0
+04
+f0
+70
+06
+90
+4e
+c4
+e0
+04
+f0
+90
+4e
+bd
+e0
+14
+60
+60
+24
+fe
+60
+21
+24
+fd
+60
+77
+14
+60
+35
+14
+60
+02
+61
+42
+90
+1c
+2a
+74
+09
+f0
+90
+4e
+c4
+e0
+70
+04
+a3
+e0
+64
+10
+70
+7d
+80
+78
+22
+90
+1c
+2a
+74
+02
+f0
+90
+4e
+c4
+e0
+64
+01
+70
+04
+a3
+e0
+64
+68
+70
+66
+90
+41
+31
+04
+f0
+80
+5c
+90
+1c
+2a
+74
+09
+f0
+90
+4e
+c4
+e0
+64
+04
+70
+04
+a3
+e0
+64
+b0
+70
+4b
+7f
+11
+12
+0e
+a2
+90
+4e
+be
+74
+06
+f0
+22
+90
+1c
+2a
+74
+01
+f0
+d3
+90
+4e
+c5
+e0
+94
+b0
+90
+4e
+c4
+e0
+94
+04
+40
+2a
+90
+4e
+e3
+e0
+b4
+01
+23
+80
+1e
+22
+90
+1c
+2a
+74
+02
+f0
+31
+e9
+50
+16
+c3
+90
+4e
+c5
+e0
+94
+03
+90
+4e
+c4
+e0
+94
+00
+40
+07
+80
+02
+22
+22
+12
+16
+ea
+22
+7b
+01
+7a
+4e
+79
+21
+7d
+20
+7c
+00
+71
+66
+7b
+01
+7a
+4e
+79
+bb
+7d
+5a
+7c
+00
+71
+66
+90
+4f
+13
+74
+ff
+f0
+a3
+74
+5a
+f0
+22
+90
+1c
+19
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+ed
+1d
+ae
+04
+70
+01
+1c
+4e
+60
+16
+90
+1c
+19
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+02
+04
+a9
+f0
+fa
+e4
+12
+01
+3f
+80
+e0
+22
+90
+4e
+dd
+e0
+70
+06
+a3
+04
+f0
+e4
+a3
+f0
+90
+4e
+dd
+e0
+60
+3a
+90
+4e
+df
+e0
+04
+f0
+e0
+54
+07
+64
+05
+70
+6e
+90
+4e
+c7
+74
+0a
+f0
+90
+4e
+de
+e0
+60
+0d
+c2
+02
+7f
+08
+12
+0f
+86
+e4
+90
+4e
+de
+f0
+22
+d2
+02
+7f
+08
+12
+0f
+86
+90
+4e
+de
+74
+01
+f0
+90
+4e
+dd
+e0
+14
+f0
+22
+90
+4e
+bd
+e0
+b4
+03
+15
+90
+4e
+c7
+74
+45
+f0
+90
+4e
+c9
+e0
+54
+07
+64
+04
+70
+2a
+7f
+08
+02
+0f
+6d
+90
+4e
+e2
+e0
+60
+18
+90
+4e
+c9
+e0
+54
+1f
+c3
+94
+05
+50
+0d
+90
+4e
+c7
+74
+0a
+f0
+c2
+02
+7f
+08
+02
+0f
+86
+d2
+02
+7f
+08
+12
+0f
+86
+22
+7b
+01
+7a
+1b
+79
+ab
+78
+30
+7c
+48
+7d
+01
+7e
+00
+7f
+12
+02
+00
+d3
+90
+82
+80
+74
+01
+f0
+22
+90
+1b
+d2
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+1b
+d8
+74
+ff
+f5
+f0
+12
+02
+04
+45
+f0
+60
+2a
+90
+1b
+d5
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+02
+04
+a9
+f0
+fa
+12
+00
+f9
+ff
+90
+1b
+d2
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+02
+04
+a9
+f0
+fa
+ef
+12
+01
+3f
+80
+c8
+22
+90
+1c
+1c
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+ed
+1d
+ae
+04
+70
+01
+1c
+4e
+60
+17
+90
+1c
+1c
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+02
+04
+a9
+f0
+fa
+74
+ff
+12
+01
+3f
+80
+df
+22
+90
+1b
+da
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+e4
+ff
+90
+1b
+e0
+e0
+fe
+ef
+c3
+9e
+50
+30
+90
+1b
+dd
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+8f
+82
+75
+83
+00
+12
+01
+12
+fe
+90
+1b
+da
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+8f
+82
+75
+83
+00
+12
+01
+12
+6e
+60
+03
+7f
+00
+22
+0f
+80
+c6
+7f
+01
+22
+7b
+01
+7a
+80
+79
+7c
+a2
+04
+92
+01
+02
+03
+c2
+ef
+54
+07
+fe
+ef
+13
+13
+13
+54
+03
+ff
+24
+a0
+f5
+82
+e4
+34
+00
+f5
+83
+c0
+83
+c0
+82
+e0
+fd
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+f4
+fc
+5d
+d0
+82
+d0
+83
+f0
+74
+a4
+2f
+f5
+82
+e4
+34
+00
+f5
+83
+e0
+5c
+f0
+22
+90
+1c
+0e
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+a3
+ed
+f0
+90
+48
+2c
+e0
+fe
+a3
+e0
+ff
+90
+1c
+11
+e0
+fd
+14
+f0
+ed
+60
+32
+0f
+ef
+ac
+06
+70
+01
+0e
+14
+f5
+82
+8c
+83
+e0
+fd
+90
+1c
+0e
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+02
+04
+a9
+f0
+fa
+ed
+12
+01
+3f
+ad
+07
+ac
+06
+bc
+48
+cd
+bd
+2c
+ca
+7e
+47
+7f
+c8
+80
+c4
+90
+48
+2c
+ee
+f0
+a3
+ef
+f0
+22
+7a
+1a
+79
+00
+90
+1c
+22
+74
+01
+f0
+a3
+74
+1a
+f0
+a3
+74
+00
+f0
+90
+48
+2e
+e0
+fe
+a3
+e0
+ff
+90
+48
+2c
+e0
+6e
+70
+03
+a3
+e0
+6f
+70
+02
+e1
+4f
+7b
+01
+7a
+1a
+79
+00
+7d
+03
+b1
+3d
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+b4
+02
+2b
+90
+1c
+23
+e4
+75
+f0
+02
+12
+01
+ee
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+ff
+90
+48
+30
+e0
+a3
+e0
+fa
+a3
+e0
+f5
+82
+8a
+83
+12
+02
+44
+e1
+4f
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+64
+04
+70
+5b
+90
+1c
+23
+75
+f0
+01
+12
+01
+ee
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+14
+fd
+7b
+01
+7a
+1a
+79
+03
+b1
+3d
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+c0
+02
+c0
+01
+90
+1c
+22
+e0
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+fd
+7c
+00
+90
+48
+33
+e0
+a3
+e0
+fa
+a3
+e0
+f5
+82
+8a
+83
+d0
+01
+d0
+02
+12
+02
+44
+e1
+4f
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+64
+05
+70
+5b
+90
+1c
+23
+75
+f0
+01
+12
+01
+ee
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+14
+fd
+7b
+01
+7a
+1a
+79
+03
+b1
+3d
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+c0
+02
+c0
+01
+90
+1c
+22
+e0
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+fd
+7c
+00
+90
+48
+3c
+e0
+a3
+e0
+fa
+a3
+e0
+f5
+82
+8a
+83
+d0
+01
+d0
+02
+12
+02
+44
+80
+6f
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+64
+03
+70
+5b
+90
+1c
+23
+75
+f0
+01
+12
+01
+ee
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+14
+fd
+7b
+01
+7a
+1a
+79
+03
+b1
+3d
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+c0
+02
+c0
+01
+90
+1c
+22
+e0
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+fd
+7c
+00
+90
+48
+3f
+e0
+a3
+e0
+fa
+a3
+e0
+f5
+82
+8a
+83
+d0
+01
+d0
+02
+12
+02
+44
+80
+02
+80
+fe
+90
+48
+98
+e0
+fe
+a3
+e0
+ff
+90
+48
+9a
+e0
+6e
+70
+03
+a3
+e0
+6f
+60
+21
+90
+48
+36
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+4a
+60
+36
+12
+02
+40
+90
+48
+9b
+e0
+04
+f0
+70
+06
+90
+48
+9a
+e0
+04
+f0
+80
+cb
+90
+48
+9c
+e0
+ff
+a3
+e0
+6f
+60
+19
+90
+48
+39
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+4a
+60
+0b
+12
+02
+40
+90
+48
+9d
+e0
+04
+f0
+80
+dd
+22
+90
+1c
+2e
+ed
+f0
+90
+1a
+96
+74
+03
+f0
+90
+1c
+2e
+e0
+60
+39
+90
+47
+c6
+e0
+fe
+a3
+e0
+ff
+90
+47
+c4
+e0
+b5
+06
+f1
+a3
+e0
+b5
+07
+ec
+90
+1c
+2e
+e0
+fd
+90
+1a
+97
+f0
+7e
+1a
+7f
+98
+90
+1b
+ec
+ed
+f0
+12
+14
+15
+7b
+01
+7a
+1a
+79
+96
+90
+1c
+2e
+e0
+24
+02
+fd
+12
+0e
+ca
+22
+90
+03
+f0
+e0
+ff
+22
+90
+1c
+30
+ed
+f0
+90
+1a
+96
+74
+04
+f0
+90
+47
+c6
+e0
+fe
+a3
+e0
+ff
+90
+47
+c4
+e0
+b5
+06
+f1
+a3
+e0
+b5
+07
+ec
+90
+1c
+30
+e0
+fd
+90
+1a
+97
+f0
+7e
+1a
+7f
+98
+90
+1b
+ec
+ed
+f0
+12
+14
+15
+7b
+01
+7a
+1a
+79
+96
+90
+1c
+30
+e0
+24
+02
+fd
+02
+0e
+ca
+d3
+ef
+94
+00
+ee
+64
+80
+94
+80
+50
+07
+c3
+e4
+9f
+ff
+e4
+9e
+fe
+22
+90
+4e
+fb
+e0
+fe
+a3
+e0
+ff
+d3
+94
+06
+ee
+64
+80
+94
+80
+50
+26
+c3
+ef
+94
+fa
+ee
+64
+80
+94
+7f
+40
+1b
+a3
+e0
+fe
+a3
+e0
+ff
+d3
+94
+06
+ee
+64
+80
+94
+80
+50
+0b
+c3
+ef
+94
+fa
+ee
+64
+80
+94
+7f
+50
+06
+90
+4e
+ff
+74
+01
+f0
+90
+4e
+fb
+e0
+fe
+a3
+e0
+ff
+11
+3d
+c3
+ef
+94
+03
+ee
+94
+00
+50
+14
+a3
+e0
+fe
+a3
+e0
+ff
+11
+3d
+c3
+ef
+94
+03
+ee
+94
+00
+50
+03
+e4
+a3
+f0
+90
+4e
+ff
+e0
+64
+01
+60
+02
+21
+3e
+90
+4e
+f7
+e0
+fe
+a3
+e0
+ff
+c3
+90
+4e
+f4
+e0
+9f
+ff
+90
+4e
+f3
+e0
+9e
+fe
+90
+4e
+fc
+e0
+2f
+ff
+90
+4e
+fb
+e0
+3e
+fe
+90
+4e
+f3
+f0
+a3
+ef
+f0
+7c
+00
+7d
+02
+12
+01
+b8
+90
+4e
+f7
+ee
+f0
+a3
+ef
+f0
+90
+4e
+fb
+ee
+f0
+a3
+ef
+f0
+90
+4e
+f9
+e0
+fe
+a3
+e0
+ff
+c3
+90
+4e
+f6
+e0
+9f
+ff
+90
+4e
+f5
+e0
+9e
+fe
+90
+4e
+fe
+e0
+2f
+ff
+90
+4e
+fd
+e0
+3e
+fe
+90
+4e
+f5
+f0
+a3
+ef
+f0
+7c
+00
+7d
+02
+12
+01
+b8
+90
+4e
+f9
+ee
+f0
+a3
+ef
+f0
+90
+4e
+fd
+ee
+f0
+a3
+ef
+f0
+22
+e4
+90
+4e
+f3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+22
+e4
+90
+4e
+f3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+90
+4e
+ff
+f0
+90
+4e
+fb
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+22
+82
+ac
+aa
+55
+01
+00
+00
+40
+09
+aa
+55
+02
+00
+10
+40
+40
+0c
+aa
+55
+03
+00
+14
+40
+80
+13
+f0
+aa
+55
+01
+00
+20
+40
+20
+aa
+55
+08
+00
+22
+40
+40
+08
+08
+80
+0e
+f2
+04
+20
+aa
+55
+01
+00
+32
+40
+20
+aa
+55
+02
+00
+3e
+40
+88
+03
+aa
+55
+01
+00
+e2
+46
+00
+aa
+55
+01
+00
+0d
+47
+01
+aa
+55
+01
+00
+25
+46
+00
+aa
+55
+01
+00
+32
+41
+42
+aa
+55
+01
+00
+d4
+08
+00
+aa
+55
+01
+00
+9f
+00
+00
+aa
+55
+01
+00
+d5
+08
+00
+aa
+55
+01
+00
+16
+00
+27
+aa
+55
+01
+00
+15
+47
+ff
+aa
+55
+01
+00
+0e
+47
+ff
+aa
+55
+01
+00
+31
+41
+01
+aa
+55
+02
+00
+12
+42
+20
+03
+aa
+55
+01
+00
+f6
+41
+08
+aa
+55
+02
+00
+f4
+41
+00
+00
+aa
+55
+01
+00
+33
+41
+00
+aa
+55
+02
+00
+94
+48
+02
+01
+aa
+55
+02
+00
+cf
+42
+04
+30
+aa
+55
+04
+00
+41
+4e
+9f
+3e
+cd
+4d
+aa
+55
+01
+00
+21
+45
+00
+aa
+55
+02
+00
+29
+45
+07
+00
+aa
+55
+01
+00
+96
+45
+50
+aa
+55
+01
+00
+f8
+44
+1a
+aa
+55
+06
+00
+3e
+45
+ab
+b9
+12
+0e
+10
+26
+aa
+55
+0a
+00
+40
+44
+09
+42
+4c
+45
+20
+4d
+6f
+75
+73
+65
+aa
+55
+01
+00
+4c
+45
+17
+aa
+55
+01
+00
+20
+45
+00
+aa
+55
+07
+00
+22
+45
+01
+00
+00
+00
+00
+00
+00
+aa
+55
+18
+00
+ff
+43
+00
+1f
+03
+19
+c2
+03
+03
+03
+12
+18
+02
+01
+05
+0a
+09
+42
+4c
+45
+20
+4d
+6f
+75
+73
+65
+aa
+55
+0c
+00
+20
+44
+1f
+0a
+09
+42
+4c
+45
+20
+4d
+6f
+75
+73
+65
+aa
+55
+b5
+01
+40
+4c
+01
+00
+02
+00
+28
+02
+00
+18
+02
+00
+02
+03
+28
+01
+0a
+03
+00
+02
+00
+2a
+09
+42
+4c
+45
+20
+4d
+6f
+75
+73
+65
+04
+00
+02
+03
+28
+01
+02
+05
+00
+02
+01
+2a
+02
+c2
+03
+06
+00
+02
+03
+28
+01
+02
+07
+00
+02
+04
+2a
+08
+06
+00
+06
+00
+64
+00
+2c
+01
+08
+00
+02
+00
+28
+02
+01
+18
+09
+00
+02
+03
+28
+01
+20
+0a
+00
+02
+05
+2a
+00
+0b
+00
+02
+02
+29
+02
+00
+00
+0c
+00
+02
+00
+28
+02
+0a
+18
+0d
+00
+02
+03
+28
+01
+02
+0e
+00
+02
+29
+2a
+06
+59
+69
+43
+68
+69
+70
+0f
+00
+02
+03
+28
+01
+02
+10
+00
+02
+50
+2a
+07
+02
+35
+12
+22
+aa
+01
+00
+11
+00
+02
+00
+28
+02
+0f
+18
+12
+00
+02
+03
+28
+01
+02
+13
+00
+02
+19
+2a
+01
+33
+14
+00
+02
+02
+29
+02
+00
+00
+15
+00
+02
+00
+28
+02
+12
+18
+16
+00
+02
+03
+28
+01
+06
+17
+00
+02
+4e
+2a
+01
+01
+18
+00
+02
+03
+28
+01
+1a
+19
+00
+02
+4d
+2a
+07
+00
+00
+00
+00
+00
+00
+00
+1a
+00
+02
+02
+29
+02
+00
+00
+1b
+00
+02
+08
+29
+02
+01
+01
+1c
+00
+02
+03
+28
+01
+0a
+1d
+00
+02
+4b
+2a
+45
+05
+01
+09
+02
+a1
+01
+85
+01
+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
+95
+01
+81
+06
+c0
+c0
+1e
+00
+02
+03
+28
+01
+1a
+1f
+00
+02
+33
+2a
+08
+00
+00
+00
+00
+00
+00
+00
+00
+20
+00
+02
+02
+29
+02
+01
+00
+21
+00
+02
+03
+28
+01
+02
+22
+00
+02
+4a
+2a
+04
+01
+01
+00
+03
+23
+00
+02
+03
+28
+01
+04
+24
+00
+02
+4c
+2a
+00
+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
+00
+00
+aa
+55
+02
+00
+37
+46
+40
+4c
+aa
+55
+01
+00
+48
+4e
+50
+aa
+55
+08
+00
+8d
+45
+07
+00
+07
+00
+05
+00
+2c
+01
+aa
+55
+01
+00
+20
+4e
+00
+aa
+55
+02
+00
+4e
+4e
+19
+00
+aa
+55
+02
+00
+8b
+45
+22
+00
+aa
+55
+01
+00
+6c
+45
+01
+aa
+55
+01
+00
+a8
+45
+01
+aa
+55
+01
+00
+80
+42
+02
+aa
+55
+01
+00
+a8
+4e
+01
+aa
+55
+01
+00
+ba
+4e
+01
+aa
+55
+01
+00
+6f
+49
+01
+aa
+55
+01
+00
+29
+49
+01
+aa
+55
+01
+00
+6e
+49
+04
+aa
+55
+01
+00
+65
+49
+00
+aa
+55
+02
+00
+2b
+49
+c0
+12
+aa
+55
+03
+00
+4d
+49
+19
+19
+1c
+aa
+55
+10
+00
+39
+49
+00
+13
+2c
+42
+06
+15
+36
+48
+0f
+1a
+3a
+4c
+11
+23
+31
+4d
+aa
+55
+01
+00
+38
+49
+ff
+aa
+55
+04
+00
+34
+49
+20
+15
+10
+05
+aa
+55
+0a
+00
+90
+49
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+aa
+55
+08
+00
+58
+49
+00
+48
+60
+00
+00
+00
+00
+00
+aa
+55
+03
+00
+15
+42
+8f
+1b
+ce
+aa
+55
+04
+00
+19
+42
+0a
+0b
+ef
+0f
+aa
+55
+01
+00
+f7
+41
+00
+aa
+55
+08
+00
+a0
+00
+00
+00
+00
+00
+00
+00
+00
+00
+aa
+55
+02
+00
+5d
+41
+02
+24
+aa
+55
+08
+00
+4d
+41
+12
+00
+00
+02
+12
+00
+00
+02
+aa
+55
+02
+00
+5b
+41
+20
+00
+aa
+55
+04
+00
+57
+41
+20
+00
+00
+20
+aa
+55
+04
+00
+5f
+41
+80
+04
+00
+08
+aa
+55
+02
+00
+60
+4e
+00
+40
+aa
+55
+05
+00
+a9
+45
+09
+59
+00
+b0
+00
+aa
+55
+02
+00
+a8
+42
+30
+6f
+aa
+55
+01
+00
+b6
+42
+20
+aa
+55
+01
+00
+81
+42
+01
+aa
+55
+0b
+00
+69
+4e
+55
+d0
+56
+c0
+57
+4c
+58
+3c
+59
+50
+ff
+aa
+55
+02
+00
+63
+41
+69
+4e
+b4
+5f
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+7d
+a5
Index: Standard_mouse/c51/output/fw.hex
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/fw.hex	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/fw.hex	(working copy)
@@ -0,0 +1,537 @@
+:10000000020246E709F608DFFA8046E709F208DF50
+:10001000FA803E88828C83E709F0A3DFFA8032E31E
+:1000200009F608DFFA8078E309F208DFFA807088C1
+:10003000828C83E309F0A3DFFA806489828A83E0FB
+:10004000A3F608DFFA805889828A83E0A3F208DFEA
+:10005000FA804C80D280FA80C680D4806980F28099
+:1000600033801080A680EA809A80A880DA80E280BF
+:10007000CA803389828A83ECFAE493A3C8C582C814
+:10008000CCC583CCF0A3C8C582C8CCC583CCDFE97E
+:10009000DEE7800D89828A83E493A3F608DFF9EC1A
+:1000A000FAA9F0EDFB2289828A83ECFAE0A3C8C5A5
+:1000B00082C8CCC583CCF0A3C8C582C8CCC583CCCC
+:1000C000DFEADEE880DB89828A83E493A3F208DF3B
+:1000D000F980CC88F0EF60010E4E60C388F0ED240B
+:1000E00002B4040050B9F582EB2402B4040050AF0E
+:1000F000232345822390005373BB010689828A83A0
+:10010000E0225002E722BBFE02E32289828A83E4D6
+:100110009322BB010CE58229F582E5833AF583E061
+:10012000225006E92582F8E622BBFE06E92582F880
+:10013000E222E58229F582E5833AF583E49322BB46
+:10014000010689828A83F0225002F722BBFE01F366
+:1001500022EF8DF0A4A8F0CF8CF0A428CE8DF0A4CF
+:100160002EFE22BC000BBE0029EF8DF084FFADF007
+:1001700022E4CCF875F008EF2FFFEE33FEEC33FCF1
+:10018000EE9DEC984005FCEE9DFE0FD5F0E9E4CE27
+:10019000FD22EDF8F5F0EE8420D21CFEADF075F0F6
+:1001A00008EF2FFFED33FD4007985006D5F0F222FF
+:1001B000C398FD0FD5F0EA22C2D5EC30E709B2D5DD
+:1001C000E4C39DFDE49CFCEE30E715B2D5E4C39F8B
+:1001D000FFE49EFE120163C3E49DFDE49CFC8003EA
+:1001E00012016330D507C3E49FFFE49EFE22C5F0F1
+:1001F000F8A3E028F0C5F0F8E582158270021583B7
+:10020000E038F022A3F8E0C5F025F0F0E582158291
+:1002100070021583E0C838F0E822D083D082F8E479
+:10022000937012740193700DA3A393F8740193F566
+:10023000828883E4737402936860EFA3A3A380DFD2
+:100240008A838982E473787FE4F6D8FD7581CF02D2
+:10025000028D0202F1E493A3F8E493A34003F68035
+:1002600001F208DFF48029E493A3F85407240CC8B2
+:10027000C333C4540F4420C8834004F4568001465D
+:10028000F6DFE4800B01020408102040809002D2C7
+:10029000E47E019360BCA3FF543F30E509541FFE88
+:1002A000E493A360010ECF54C025E060A840B8E4F9
+:1002B00093A3FAE493A3F8E493A3C8C582C8CAC57C
+:1002C00083CAF0A3C8C582C8CAC583CADFE9DEE70E
+:1002D00080BE521BABFF041F000000FF1A89FF17EE
+:1002E0000400000000000000000000000000010108
+:1002F00000121C20904E78E0B401031215DF121D8D
+:10030000981217B1121096121888900B2AE01460F8
+:100310005824FE70E9E4904F00F0120F4AE4FFEF1A
+:100320002470FDE434808D82F583E4F00FEFB41087
+:10033000EE7F02120D4C5008C2067F0271A18006AA
+:10034000D2067F0271A17F03120D4C5008C2067FB6
+:100350000371A18006D2067F0371A1D2077F081224
+:100360001075F1401215D180FE904EC7E0700690D6
+:100370004EC1E060051216D58084904EBDE0FF644A
+:10038000016009EF64026004EFB4070DF140C20898
+:100390007F18F1AB1215D141FE1216D541FE41FE78
+:1003A00022AC07A2069204121CF5AF04A206B39277
+:1003B00003121089AF04C2057B017A807970A2050F
+:1003C0009201901C1FEBF0A3EAF0A3E9F0E4FEFD1C
+:1003D000EF5407FEEF1313135403FD300120901C5C
+:1003E0001FE0FBA3E0FAA3E02DF9E43AFA11F9FFCC
+:1003F0007401A806088002C333D8FC4F213F901C2B
+:100400001FE0FBA3E0FAA3E02DF9E43AFA11F9FFAB
+:100410007401A806088002C333D8FCF45F213F9022
+:100420001BBDEFF0E4901BBFF0A3F0A3F0A3F078A6
+:10043000C37C1B7D017BFF7A0279E8FE7F0611D326
+:10044000901BBDE0511A06B61407211504682F054C
+:10045000F53906803A06203B05C63C04653D069505
+:10046000400000073F121B4312131CC2067F187185
+:10047000A1C2067F1271A1C2067F1371A1C2067FBD
+:100480000271A1C2067F0371A1C2067F0471A1C2DD
+:10049000067F1771A1C2067F1B71A1C2067F17716B
+:1004A000A1C2067F0471A1C2067F0671A1D2077F97
+:1004B00008121075D2077F071210757F12120D4CAB
+:1004C0004007E4904EF0F08006904EF07401F07F0B
+:1004D00013120D4C500A9042CF7404F0A37430F004
+:1004E00012173A122152120873904ED9EFF07B0185
+:1004F0007A4E79DB7D017C007FA87E7F12136890A5
+:100500004EDBE0D3940340037402F07B017A4E7912
+:10051000DB7D017C007FA87E7F12126D120AB990EC
+:100520008080E4F0904EDEF0904EDDF07F04120DFE
+:100530004C40047F0180027F00901BBFEFF07F17CB
+:10054000120D4C40047F0180027F00901BC1EFF030
+:100550007F1B120D4C40047F0180027F00901BC066
+:10056000EFF0E0FF25E0FF901BBFE04FFF901BC1C5
+:10057000E0FE25E025E04FFFA3F0BF050C901BBD7A
+:10058000E0B42F057F25020EA2904EA7E0B401092A
+:10059000121458E4904EA7F0227B017A4979507DDD
+:1005A000047C007FA47E7F121368904950E0B4FF62
+:1005B00012A3E0B4FF0DA3E0B4FF08A3E0B4FF036F
+:1005C000021458020F93904EBDE0B407159049C134
+:1005D000E0FF64017002E13FEFB402069049C1748C
+:1005E00001F012173AD2077F07121075C2067F0773
+:1005F00071A1022152904EBD7401F0FB7A4E79BD7B
+:10060000FD7C007FA97E7F12126D7B017A497906FD
+:100610007D067C007FA27E7F12126D7F23020EA2D8
+:10062000120F40E4904EE3F0904EF2E0601304F0BD
+:10063000E05407F030E0057F23020EA27F25020E72
+:10064000A27B017A1B79C37D067C007F9C7E7F1292
+:100650001368901BC3E0F47024A3E0F4701FA3E0C0
+:10066000B4FF1AA3E0B4FF15A3E0B4FF10A3E0B4F5
+:10067000FF0B904F017401F0A3741EF02202145876
+:10068000120831904EE37401F0E4904EF1F0A3F0C3
+:10069000904EBEF02212173A120CF97D067F80129E
+:1006A0000A8E7B017A4E79DB7D017C007FA87E7FFC
+:1006B000121368020AB9E4904E84F07F0E120EA263
+:1006C0007F02120EA2904EBD7407F0901BBE7409FB
+:1006D000F01208317B017A0379727D067C007F96E7
+:1006E0007E7F12126D7F0A7E001215B27B017A4561
+:1006F000793E7D067C007F9C7E7F12126D7F0A7E94
+:10070000001215B27B017A1B79BE7D017C007FA9A6
+:100710007E7F12126D904EBE7406F0E4904EC2F0D1
+:1007200022904EBEE0B4080A120E62904EBD7403D1
+:10073000F022904EBEE0B406030216EA12145822CC
+:100740009000A0E4F0A3F0A3F0A3F0120B70C20796
+:100750007F07121075C2067F0471A1C2067F1B714C
+:10076000A1C2067F1771A1C2067F1771A1C2067FC1
+:100770000471A1C2067F0671A17F02F1977F03F188
+:10078000977F04F1977F17F1977F1BF1977F17F100
+:10079000977F04F1977F06901C2CEFF0120D4C927E
+:1007A00009901C2CE0FFA209B39208EF5407FEEF5A
+:1007B0001313135403FF30084324A0F582E43400DC
+:1007C000F583C083C082E0FD7401A806088002C3DF
+:1007D00033D8FCF45DD082D083F074A42FF582E48A
+:1007E0003400F583C083C082E0FF7401A80608804E
+:1007F00002C333D8FC4FD082D083F02274A02FF5EF
+:1008000082E43400F583C083C082E0FD7401A80651
+:10081000088002C333D8FCFC4DD082D083F074A48E
+:100820002FF582E43400F583E0FFECF4FEEF5EF098
+:100830002291E391F97F18B14C400E7F02114A7F5B
+:1008400003114A7F04114A80EC22900218EFF090C5
+:1008500080887401F0A3E4F090808E04F0A3E4F0AB
+:100860009080067402F090812CE030E3F990021D34
+:10087000E0FF22E4901C27F0A3F0E4FF114ABF310F
+:10088000187F06114AEF4480FF901C27F07D065127
+:100890008E901C287431F021527F01114ABF5A18E2
+:1008A000901C28745AF07F06114AEF4480FF901C78
+:1008B00027F07D06518E2152E4FF114AEF6430602B
+:1008C00002214E7F01114ABF5408901C287431F058
+:1008D00021527F01114AEF54F064D070287F1E111D
+:1008E0004AEF30E008901C2874D1F08006901C2854
+:1008F00074D0F07F06114AEF4480FF901C27F07DF2
+:1009000006518E804D7F01114AEF54F0FFBF501801
+:10091000901C287450F07F06114AEF4480FF901C11
+:1009200027F07D06518E802A7F01114ABF021F7F6A
+:1009300006114AEF4480FF901C27F07D06518E90EF
+:100940001C287402F07F01114AEF6402600491F9DF
+:10095000017A901C28E064D0600241227D097F5A10
+:10096000518E7D0D7F0A518E7D1B7F35518E7D1DF1
+:100970007FDB518E7D287FB4518E7D297F46518E3D
+:100980007D2A7F96518E7D2B7F8C518E7D2C7F6EA4
+:10099000518E7D2D7F64518E7D387F5F518E7D39E4
+:1009A0007F0F518E7D3A7F32518E7D3B7F47518E36
+:1009B0007D427F10518E7D437F09518E7D547F2E65
+:1009C000518E7D557FF2518E7D617FF4518E7D6316
+:1009D0007F70518E7D757F52518E7D767F41518E15
+:1009E0007D777FED518E7D787F23518E7D797F4697
+:1009F000518E7D7A7FE5518E7D7C7F48518E7D7D45
+:100A00007F80518E7D7E7F77518E7D7F7F01518EDD
+:100A10007D0BE4FF518E7D7FE4FF518E7D09E4FF65
+:100A2000518E901C28E0B402187D097F5A518E7DAA
+:100A3000267F34518E7D197F14518E7D09E4FF513C
+:100A40008E901C28E06450703F7D097F5A518E7D46
+:100A50005B7F9A518E7F0D114AEF641260087D0D05
+:100A60007F12518E80EF7F0E114AEF64C560087DC2
+:100A70000E7FC5518E80EF7F53114AEF64486008A6
+:100A80007D537F48518E80EF901C28E0FF22AC07F9
+:100A9000ED4480900218F0A3EFF09080887402F08B
+:100AA000A3E4F090808EF0A3F09080067402F090A2
+:100AB000812CE030E3F97F002291F9904ED9E0FFDC
+:100AC00064D06004EFB4D10A904EDBE004FF7D06F1
+:100AD000518E904ED9E0B43118904EDBE0B401084D
+:100AE0007D06E4FF518E8009904EDBE0FF7D0651CC
+:100AF0008E904ED9E0B4500B904EDBE02403FF7D86
+:100B000006518E904ED9E0B45A0B904EDBE0240390
+:100B1000FF7D06518E904ED9E0640270537D097FAF
+:100B20005A518E904EDBE014601814602314602E2E
+:100B3000240370367D0D7F15518E7D0E7F15518EED
+:100B400080287D0D7F20518E7D0E7F20518E801A52
+:100B50007D0D7F2A518E7D0E7F2A518E800C7D0D5A
+:100B60007F3F518E7D0E7F3F518E7D09E4FF518E78
+:100B7000908081E4F0908073E04402F0908077E010
+:100B80004402F022E4901C06F0A3F0A3F0A3F07F4F
+:100B900018B14C5002C32291F97F02114AEF20E7AD
+:100BA0000281E1904EC77402F0904ED9E064026079
+:100BB000167F03114A901C06EFF07F04114AEFF4F0
+:100BC00004901C07F080297F03114A901C06EFF067
+:100BD0007F04114A901C07EFF07F12114A901C0904
+:100BE000EFF0E0FFC4540F901C08F0EF540FA3F097
+:100BF0007170904ED9E06402702A901C08E0FF30BA
+:100C0000E30544F0F08007901C08E0540FF0901CBE
+:100C100009E0FF30E30544F0F08031901C09E05416
+:100C20000FF08028901C06E030E708901C0874FF45
+:100C3000F08005E4901C08F0901C07E030E7089075
+:100C40001C0974FFF08005E4901C09F0904EF0E060
+:100C50007031901C08E0FE901C06E0FDEEEDFFC335
+:100C6000E49FFFE49E904EFDF0A3EFF0901C09E09E
+:100C7000FE901C07E0FDEEEDFF904EFBEEF0A3EFC3
+:100C8000F0802A901C08E0FE901C06E0FDEEEDFFCF
+:100C9000904EFBEEF0A3EFF0901C09E0FE901C07D5
+:100CA000E0FDEEEDFF904EFDEEF0A3EFF0904EFB79
+:100CB000E0FEA3E0FFC3E49FFFE49E904EFBF0A3A1
+:100CC000EFF0A3E0FEA3E0FFC3E49FFFE49E904E9D
+:100CD000FDF0A3EFF0904EBDE0B40103122050D31D
+:100CE00022C322E4FF91F97F06114AEF54F7FF7DFA
+:100CF00006518E7F02114A6170E4901C33F090809F
+:100D00008104F0E4904F00F0904F00E004F0E0C365
+:100D10009406400312173AE4FF114A901C33EFF097
+:100D200064306027E064316022908081E4F090803C
+:100D300073E04402F0908077E054FDF0908073E01F
+:100D40004402F09080817401F080BD227B017A81A1
+:100D5000791CAD07E4901C2BF0FEEF5407F0EF1365
+:100D600013135403FEF582758300120112FD3395AF
+:100D7000E0FC901C2BE0FF74017E00A807088005B2
+:100D8000C333CE33CED8F9FFEE5CFEEF5D4E24FFC9
+:100D900022E4901BF8F0A3F0A3F0A3F0A3F07F04EB
+:100DA000B14C40047F0180027F00901BF8EFF07F80
+:100DB00017B14C40047F0180027F00901BFAEFF0D6
+:100DC0007F1BB14C40047F0180027F00901BF9EF34
+:100DD000F0E0FF25E0FF901BF8E04FFF901BFAE0EA
+:100DE000FE25E025E04FA3F064077070904F027479
+:100DF0001EF0E4904EC4F0A3F0904EC7740AF09039
+:100E00004EC6E0C394195059904EC6E004F0E06419
+:100E100019704E904F01F0A3F0904EBDE060321477
+:100E2000601E24FB602B24FE600E0470347F11D101
+:100E3000A2904EBE7408F022904EBD7403F0802242
+:100E4000F1407F0A7E001215B2904EBD7403F0800F
+:100E500011F140904EBD7403F0800722E4904EC61D
+:100E6000F0227B017A4F79117D027C007FAA7E7F80
+:100E7000121368904F12E004F07006904F11E004D6
+:100E8000F07B017A4F79117D027C007FAA7E7F1270
+:100E9000126D904F11E0FCA3E090453FF0ECA3F001
+:100EA0007F0D901C12EFF078137C1C7D017BFF7A84
+:100EB0000279EE7E007F031200D3901C12E0901C9A
+:100EC00015F07B017A1C79137D03901BEDEBF0A3E9
+:100ED000EAF0A3E9F0A3EDF09047C6E0FFA3E090AD
+:100EE0001BF1CFF0A3EFF0901BF0E0FF14F0EF60E8
+:100EF0003F901BEDE0FBA3E475F001120204A9F0A2
+:100F0000FA1200F9FF901BF1E475F001120204855A
+:100F1000F082F583EFF0901BF1E0FEA3E0FFBE4707
+:100F2000C6BFC4C3901BF17447F0A3742EF080B702
+:100F3000901BF1E0FFA3E09047C6CFF0A3EFF022B3
+:100F40007F24D1A2E4904EBDF022E4FF91F97F0608
+:100F5000114AEF4408FF7D06518E908081E4F0C273
+:100F6000067F191203A1C2067F1A0203A1901C2D4D
+:100F7000EFF07B017A807974B152920A901C2DE0D7
+:100F8000FFA20AB392027B017A807974A2029201D5
+:100F90000203C27B017A4979507D047C007FA47EE4
+:100FA0007F121368904950E0F47027A3E0F4702298
+:100FB000A3E0B4FF1DA3E0B4FF18904950740FF0F4
+:100FC000A3F0A3F0A3F07F23D1A2904EF27401F01E
+:100FD00080047F23D1A2904EBD7401F022D2077FFE
+:100FE00007121075904ECAE0FF25E0F0E0FFC00741
+:100FF0007F04B14C40047E0180027E00D0E04E9020
+:101000004ECAF030E006904EC77402F0904ECAE02F
+:101010005407FFBF0706A37401F08007EF70049028
+:101020004ECBF0904ECBE0FF22D2077F0711759098
+:101030004ECCE0FF25E0F0E0FFC0077F17120D4C1B
+:1010400040047E0180027E00D0E04E904ECCF03015
+:10105000E006904EC77402F0904ECCE05407FFBFFC
+:101060000706A37401F08007EF7004904ECDF09056
+:101070004ECDE0FF22AC07D2051203B8AF04A207A1
+:101080009202120F86AF04C2037B017A807978A2A4
+:101090000392010203C2E4901BF3F0A3F0A3F0A3B8
+:1010A000F0A3F0120FDD901BF3EFF01129901BF568
+:1010B000EFF031C6901BF4EFF011F8901BF6EFF053
+:1010C000315F901BF7EFF05112901BF4E0FF25E029
+:1010D000FF901BF3E04FFF901BF5E0FE25E025E0BD
+:1010E0004FFFA3E0FE33333354F84FFFA3E0FEC4B9
+:1010F00054F04F904EEDF0227F17120D4C40037FBD
+:101100000022C2077F071175904ED2E0FF25E0F064
+:10111000E0FFC0077F17120D4C40047E0180027E65
+:1011200000D0E04E904ED2F0D2077F071175C20674
+:101130007F071203A1904ED2E030E006904EC774B4
+:1011400002F0904ED2E05407FFBF0706A37401F0EF
+:101150008007EF7004904ED3F0904ED3E0FF227FD3
+:1011600004120D4C40037F0022C2077F07117590C7
+:101170004ED0E0FF25E0F0E0FFC0077F04120D4CE9
+:1011800040047E0180027E00D0E04E904ED0F0D22E
+:10119000077F071175C2067F071203A1904ED0E0AA
+:1011A00030E006904EC77402F0904ED0E05407FF36
+:1011B000BF0706A37401F08007EF7004904ED1F0D2
+:1011C000904ED1E0FF22D2077F071175904ECEE0FE
+:1011D000FF25E0F0E0FFC0077F1B120D4C40047EAE
+:1011E0000180027E00D0E04E904ECEF030E00690BE
+:1011F0004EC77402F0904ECEE05407FFBF0706A31F
+:101200007401F08007EF7004904ECFF0904ECFE065
+:10121000FF22904EDCE0FF25E0F0E0FFC0077F06F4
+:10122000120D4C40047E0180027E00D0E04E904EB4
+:10123000DCF030E006904EC77402F0904EDCE064C3
+:10124000077029904EDBE004F0E05403F0700204D4
+:10125000F0904EDBE0904EDDF0120AB97B017A4E41
+:1012600079DB7D017C007FA87E7F516D22901BC9B8
+:10127000EEF0A3EFF0A3ECF0A3EDF0A3EBF0A3EA04
+:10128000F0A3E9F0901BCBE07002A3E07002611BB9
+:10129000901BC9E0FEA3E0FF440F2401FDE43EFCE7
+:1012A000C3ED9FFFEC9EFE901BD0F0A3EFF0901BD0
+:1012B000CBE0FCA3E0FDD39FEC9E400A901BD0E066
+:1012C000FEA3E0FF8004AE04AF05901BD0EEF0FC5F
+:1012D000A3EFF0FDC3901BCCE09DF0901BCBE09CF6
+:1012E000F0901BC9E0FEA3E0FF901BCDE0FBA3E064
+:1012F000FAA3E0F991797F0A7E00B1B2901BD0E0A9
+:10130000FEA3E0FF901BCEEE8FF01201EE901BCA01
+:10131000E02FF0901BC9E03EF0418422E4901C29AC
+:10132000F07B017A1C79297D01FC7FAC7E7F71689E
+:10133000901C29E0B4FF3091EE904F11EEF0A3EF36
+:10134000F07B017A4F79117D027C007FAA7E7F516C
+:101350006D901C29745AF07B017A1C79297D017CDF
+:10136000007FAC7E7F516D22901BFDECF0A3EDF071
+:10137000A3EBF0A3EAF0A3E9F09080987404F0A343
+:10138000E4F0901B2C74A0F0A3EEF0A3EFF0901B00
+:101390002F74A1F07A1B792C7E1B7F2C742CFC748B
+:1013A0001BFFECFEEF90809AEEF0A3EFF0901BFD98
+:1013B000E0FCA3E0FAECFFEAFEEF90809EEEF0A3E3
+:1013C000EFF07A1B79307E1B7F307430FC741BFF8A
+:1013D000ECFEEF90809CEEF0A3EFF0908090740212
+:1013E000F090809CA3E020E707908090E04401F01B
+:1013F000908006E04404F091E6901BFFE0A3E0FA41
+:10140000A3E0AE02FF7B017A1B7930901BFDE0A3C5
+:10141000E0901BECF0901BE7EEF0A3EFF0A3EBF0F5
+:10142000A3EAF0A3E9F0901BECE0FF14F0EF6027D3
+:10143000901BE9E0FBA3E475F001120204A9F0FAA5
+:101440001200F9FF901BE7E475F00112020485F029
+:1014500082F583EFF080CF22E4904EC4F0A3F07BBE
+:10146000017A45793E7D06FC7F9C7E7F7168904EB7
+:10147000BD7408F07F27020EA2901B94EEF0A3EF3C
+:10148000F0A3ECF0A3EDF07E1B7F9B901BECF091A2
+:1014900015901B9874A0F0901B94E0FFA3E0901BA4
+:1014A00099CFF0A3EFF0901B97E02403FD901B96DB
+:1014B000E03400FCEDFAECFFEAFEEF908098EEF0ED
+:1014C000A3EFF07D98EDFA741BFFEAFEEFA3EEF0B8
+:1014D000A3EFF090809EE4F0A3F090809004F09051
+:1014E0008006E04404F090812CE030E5F922904E33
+:1014F00041E0FEA3E0FF22E4901C25F0A3F091EE72
+:10150000C006C007D1E1AC06AD07D007D006C3EDD9
+:101510009FFFEC9E901C25F0A3EFF09042CFE0647B
+:10152000046002A1A891EEC006C007B1A9AC06AD47
+:1015300007D007D006C3ED9FFFEC9EFE7C007D1E0A
+:101540001201637C007D0A120151C3901C26E09FAA
+:10155000901C25E09E5008904EE27401F08005E456
+:10156000904EE2F091EEC006C007B1A9AC06AD07FF
+:10157000D007D006C3ED9FFFEC9EFE7C007D1E12BF
+:1015800001637C007D09120151C3901C26E09F90ED
+:101590001C25E09E5012904954E064016008904E72
+:1015A000BDE064016002D1EA22904E43E0FEA3E078
+:1015B000FF22D3EF9400EE94004015E4FDFC0DBD36
+:1015C00000010CBC04F8BDA6F5EF1F70011E80E2FF
+:1015D00022E4900B2BF0900B2AF07F01FE80D3E4E5
+:1015E000901BE1F0A3F0A3F0A3F0A3F0A3F0904EC2
+:1015F0007DF0F13A904EBDE0B40117904EE3E0B4B7
+:1016000001107F18120D4C4009120B84E433901B1B
+:10161000E5F0904EBD7401F0901BE6E004F0121D61
+:1016200098901BE6E0D39405400B7405F0904E7D36
+:101630007402F08075F1B11196904E7DE0706B9060
+:101640004ED8E06016901BE57401F0904E7D740357
+:10165000F09049B77401F0904E80F0904EEDE0FFAD
+:10166000904ED4E06F601D9049B77401F0901BE577
+:10167000F0904E7D7403F0904ED4EFF0BF0705E478
+:10168000901BE5F0904ED4E0B40706904E7D7403B5
+:10169000F0901BE5E0B40112F15EE4901BE5F090E0
+:1016A0004E7DE0640360037401F0900B2AE0640156
+:1016B0006002C118904EC7E07006904EC1E0600213
+:1016C0008013904EBDE0B4010C120740C2087F1891
+:1016D0001207ABA1D1900B2B7401F0E4900B2AF010
+:1016E000229042D1E0FEA3E0FF22E4904EC4F0A39A
+:1016F000F0904EC7F0904EC104F0E4904EBDF07FE4
+:1017000019020EA2904EC7E0600214F0904EC9E09C
+:1017100004F0904EECE0600204F0121B92120D9166
+:1017200091F7904F01E0B40110A3E07006904F01D3
+:10173000F0D1EA904F02E014F0229080867475F0A8
+:10174000A3740AF090808A7418F0A37402F0A37452
+:101750001DF0A37402F0908077E04402F022904ED6
+:10176000D4E0904E21F0904EFBE0FCA3E0904E229E
+:10177000F0ECFF3395E0A3EFF0904EFDE0FCA3E02A
+:10178000904E24F0ECFF3395E0A3EFF0904ED8E0BC
+:10179000904E26F0E4A3F0904ED8F0904EC4F0A303
+:1017A000F022904EBDE064016006904EC77403F0D5
+:1017B00022E4901C16F0A3F07F02120D4CE433904B
+:1017C0001C18F07F03120D4CE433FF901C18E0FE50
+:1017D00025E04FFF904ED5E06F605D904ED6E0A3C0
+:1017E000F0904ED5E0A3F0904ED5EFF0FDA3E0755C
+:1017F000F004A4FBAAF0ED75F010A4FFE5F04AFE9A
+:10180000EF4BFFA3E0FDEEEF4DFF901C16EEF0A3B3
+:10181000EFF0EE7023EF24F5601524D7601124FC5F
+:10182000600424317012904ED8E014F00217A29098
+:101830004ED8E004F01217A222901C02EBF0A3EAAB
+:10184000F0A3E9F0A3EDF0904EBDE0FF6401600A63
+:10185000EF64026005EF6407702DEFB40110901C77
+:1018600002E0FBA3E0FAA3E0F9A3E0FD4101904E02
+:10187000BDE0B40710901C02E0FBA3E0FAA3E0F97E
+:10188000A3E0FD414580FE22E4901C0AF0A3F0A3F2
+:10189000F0A3F0C200904EBDE0FF64016007EF646A
+:1018A00007600221E8904EE3E0700A904EBDE064CC
+:1018B00001700221E831E9400221E8904EEDE0FF9D
+:1018C000904ED4E0B50719904EC7E0FED394004087
+:1018D00005EE9403400A904EBDE0B4010BEF6008A2
+:1018E000D2009049B77401F0904EEDE0904ED4F0E4
+:1018F000E4904EFBF0A3F0A3F0A3F0904EBDE0B453
+:101900000107120B8472009200904EBDE0B40720D4
+:10191000904595E0B4011912173A120B84720092A7
+:1019200000904E83E0FF904E84E06F6003E004F08F
+:10193000904ED8E0601FD2009049B77401F0904EED
+:1019400080F0904EBDE0B4070C904E817401F09091
+:101950004E82740AF0904EC6E0C394174007E4909C
+:101960004ED4F0D20020000221E8904EC6E0C3948D
+:101970001850759049C27401F0904EBDE0FF6401AB
+:10198000600AEF64026005EF6407705C12175E90F6
+:101990004EA6E06049904E21E07033A3E0702FA383
+:1019A000E0702BA3E07027A3E07023A3E0701FA3D7
+:1019B000E0701B901C32E0C39403502C7B017A4EE4
+:1019C00079217D071139901C32E004F022227B013D
+:1019D0007A4E79217D071139E4901C32F0227B0187
+:1019E0007A4E79217D071139229047C6E0FEA3E0A7
+:1019F000FF9047C4E0B50607A3E0B50702D322C3B2
+:101A000022901C2FEDF0901A967406F09047C6E0D5
+:101A1000FEA3E0FF9047C4E0B506F1A3E0B507ECF4
+:101A2000901C2FE0FD901A97F07E1A7F98901BEC87
+:101A3000EDF01214157B017A1A7996901C2FE02490
+:101A400002FD020ECA901C31EDF0901A967405F05A
+:101A50009047C6E0FEA3E0FF9047C4E0B506F1A3BF
+:101A6000E0B507EC901C31E0FD901A97F07E1A7FEC
+:101A700098901BECEDF01214157B017A1A79969070
+:101A80001C31E02402FD020ECAE4901C2AF0904EA4
+:101A9000C5E004F07006904EC4E004F0904EBDE046
+:101AA00014606024FE602124FD60771460351460AA
+:101AB000026142901C2A7409F0904EC4E07004A3A5
+:101AC000E06410707D807822901C2A7402F0904EA1
+:101AD000C4E064017004A3E064687066904131045E
+:101AE000F0805C901C2A7409F0904EC4E06404708D
+:101AF00004A3E064B0704B7F11120EA2904EBE742E
+:101B000006F022901C2A7401F0D3904EC5E094B0E8
+:101B1000904EC4E09404402A904EE3E0B401238048
+:101B20001E22901C2A7402F031E95016C3904EC553
+:101B3000E09403904EC4E0940040078002222212F9
+:101B400016EA227B017A4E79217D207C0071667B2A
+:101B5000017A4E79BB7D5A7C007166904F1374FFF9
+:101B6000F0A3745AF022901C19EBF0A3EAF0A3E959
+:101B7000F0ED1DAE0470011C4E6016901C19E0FBC8
+:101B8000A3E475F001120204A9F0FAE412013F8007
+:101B9000E022904EDDE07006A304F0E4A3F0904E46
+:101BA000DDE0603A904EDFE004F0E0540764057039
+:101BB0006E904EC7740AF0904EDEE0600DC2027F58
+:101BC00008120F86E4904EDEF022D2027F08120F38
+:101BD00086904EDE7401F0904EDDE014F022904EBF
+:101BE000BDE0B40315904EC77445F0904EC9E05463
+:101BF000076404702A7F08020F6D904EE2E06018BF
+:101C0000904EC9E0541FC39405500D904EC7740AFE
+:101C1000F0C2027F08020F86D2027F08120F8622CE
+:101C20007B017A1B79AB78307C487D017E007F1286
+:101C30000200D39082807401F022901BD2EBF0A3BB
+:101C4000EAF0A3E9F0901BD874FFF5F01202044506
+:101C5000F0602A901BD5E0FBA3E475F001120204AA
+:101C6000A9F0FA1200F9FF901BD2E0FBA3E475F093
+:101C700001120204A9F0FAEF12013F80C822901C61
+:101C80001CEBF0A3EAF0A3E9F0ED1DAE0470011C1B
+:101C90004E6017901C1CE0FBA3E475F001120204D7
+:101CA000A9F0FA74FF12013F80DF22901BDAEBF0FB
+:101CB000A3EAF0A3E9F0E4FF901BE0E0FEEFC39E8F
+:101CC0005030901BDDE0FBA3E0FAA3E0F98F8275B2
+:101CD0008300120112FE901BDAE0FBA3E0FAA3E0FE
+:101CE000F98F827583001201126E60037F00220F4C
+:101CF00080C67F01227B017A80797CA20492010256
+:101D000003C2EF5407FEEF1313135403FF24A0F58F
+:101D100082E43400F583C083C082E0FD7401A8062C
+:101D2000088002C333D8FCF4FC5DD082D083F07409
+:101D3000A42FF582E43400F583E05CF022901C0EC1
+:101D4000EBF0A3EAF0A3E9F0A3EDF090482CE0FE5D
+:101D5000A3E0FF901C11E0FD14F0ED60320FEFAC3A
+:101D60000670010E14F5828C83E0FD901C0EE0FBE2
+:101D7000A3E475F001120204A9F0FAED12013FADDF
+:101D800007AC06BC48CDBD2CCA7E477FC880C49036
+:101D9000482CEEF0A3EFF0227A1A7900901C2274FE
+:101DA00001F0A3741AF0A37400F090482EE0FEA393
+:101DB000E0FF90482CE06E7003A3E06F7002E14FEB
+:101DC0007B017A1A79007D03B13D901C22E0FBA3D0
+:101DD000E0FAA3E0F91200F9B4022B901C23E47599
+:101DE000F0021201EE901C22E0FBA3E0FAA3E0F95E
+:101DF0001200F9FF904830E0A3E0FAA3E0F5828AF0
+:101E000083120244E14F901C22E0FBA3E0FAA3E01E
+:101E1000F91200F96404705B901C2375F001120143
+:101E2000EE901C22E0FBA3E0FAA3E0F91200F91403
+:101E3000FD7B017A1A7903B13D901C22E0FBA3E0FF
+:101E4000FAA3E02401F9E43AFAC002C001901C228E
+:101E5000E0A3E0FAA3E0F91200F9FD7C009048331A
+:101E6000E0A3E0FAA3E0F5828A83D001D002120257
+:101E700044E14F901C22E0FBA3E0FAA3E0F912003A
+:101E8000F96405705B901C2375F0011201EE901C43
+:101E900022E0FBA3E0FAA3E0F91200F914FD7B01B4
+:101EA0007A1A7903B13D901C22E0FBA3E0FAA3E08B
+:101EB0002401F9E43AFAC002C001901C22E0A3E038
+:101EC000FAA3E0F91200F9FD7C0090483CE0A3E0A1
+:101ED000FAA3E0F5828A83D001D002120244806F17
+:101EE000901C22E0FBA3E0FAA3E0F91200F96403DE
+:101EF000705B901C2375F0011201EE901C22E0FB38
+:101F0000A3E0FAA3E0F91200F914FD7B017A1A7933
+:101F100003B13D901C22E0FBA3E0FAA3E02401F909
+:101F2000E43AFAC002C001901C22E0A3E0FAA3E068
+:101F3000F91200F9FD7C0090483FE0A3E0FAA3E02D
+:101F4000F5828A83D001D002120244800280FE9082
+:101F50004898E0FEA3E0FF90489AE06E7003A3E08B
+:101F60006F6021904836E0FBA3E0FAA3E0F94A60F5
+:101F70003612024090489BE004F0700690489AE0C8
+:101F800004F080CB90489CE0FFA3E06F601990487C
+:101F900039E0FBA3E0FAA3E0F94A600B120240909B
+:101FA000489DE004F080DD22901C2EEDF0901A9602
+:101FB0007403F0901C2EE060399047C6E0FEA3E069
+:101FC000FF9047C4E0B506F1A3E0B507EC901C2EE6
+:101FD000E0FD901A97F07E1A7F98901BECEDF012BE
+:101FE00014157B017A1A7996901C2EE02402FD12BA
+:101FF0000ECA229003F0E0FF22901C30EDF0901A00
+:10200000967404F09047C6E0FEA3E0FF9047C4E05A
+:10201000B506F1A3E0B507EC901C30E0FD901A97EF
+:10202000F07E1A7F98901BECEDF01214157B017A6C
+:102030001A7996901C30E02402FD020ECAD3EF9468
+:1020400000EE648094805007C3E49FFFE49EFE226C
+:10205000904EFBE0FEA3E0FFD39406EE64809480F4
+:102060005026C3EF94FAEE6480947F401BA3E0FEF9
+:10207000A3E0FFD39406EE64809480500BC3EF94EA
+:10208000FAEE6480947F5006904EFF7401F0904EFB
+:10209000FBE0FEA3E0FF113DC3EF9403EE9400507C
+:1020A00014A3E0FEA3E0FF113DC3EF9403EE940000
+:1020B0005003E4A3F0904EFFE064016002213E90E3
+:1020C0004EF7E0FEA3E0FFC3904EF4E09FFF904E7A
+:1020D000F3E09EFE904EFCE02FFF904EFBE03EFEB4
+:1020E000904EF3F0A3EFF07C007D021201B8904E09
+:1020F000F7EEF0A3EFF0904EFBEEF0A3EFF0904E72
+:10210000F9E0FEA3E0FFC3904EF6E09FFF904EF58E
+:10211000E09EFE904EFEE02FFF904EFDE03EFE90D2
+:102120004EF5F0A3EFF07C007D021201B8904EF95D
+:10213000EEF0A3EFF0904EFDEEF0A3EFF022E4906E
+:102140004EF3F0A3F0A3F0A3F0A3F0A3F0A3F0A349
+:10215000F022E4904EF3F0A3F0A3F0A3F0A3F0A3D9
+:10216000F0A3F0A3F0904EFFF0904EFBF0A3F0A38D
+:04217000F0A3F022C6
+:00000001FF
Index: Standard_mouse/c51/output/fwram.rom
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/fwram.rom	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/fwram.rom	(working copy)
@@ -0,0 +1,8564 @@
+02
+02
+46
+e7
+09
+f6
+08
+df
+fa
+80
+46
+e7
+09
+f2
+08
+df
+fa
+80
+3e
+88
+82
+8c
+83
+e7
+09
+f0
+a3
+df
+fa
+80
+32
+e3
+09
+f6
+08
+df
+fa
+80
+78
+e3
+09
+f2
+08
+df
+fa
+80
+70
+88
+82
+8c
+83
+e3
+09
+f0
+a3
+df
+fa
+80
+64
+89
+82
+8a
+83
+e0
+a3
+f6
+08
+df
+fa
+80
+58
+89
+82
+8a
+83
+e0
+a3
+f2
+08
+df
+fa
+80
+4c
+80
+d2
+80
+fa
+80
+c6
+80
+d4
+80
+69
+80
+f2
+80
+33
+80
+10
+80
+a6
+80
+ea
+80
+9a
+80
+a8
+80
+da
+80
+e2
+80
+ca
+80
+33
+89
+82
+8a
+83
+ec
+fa
+e4
+93
+a3
+c8
+c5
+82
+c8
+cc
+c5
+83
+cc
+f0
+a3
+c8
+c5
+82
+c8
+cc
+c5
+83
+cc
+df
+e9
+de
+e7
+80
+0d
+89
+82
+8a
+83
+e4
+93
+a3
+f6
+08
+df
+f9
+ec
+fa
+a9
+f0
+ed
+fb
+22
+89
+82
+8a
+83
+ec
+fa
+e0
+a3
+c8
+c5
+82
+c8
+cc
+c5
+83
+cc
+f0
+a3
+c8
+c5
+82
+c8
+cc
+c5
+83
+cc
+df
+ea
+de
+e8
+80
+db
+89
+82
+8a
+83
+e4
+93
+a3
+f2
+08
+df
+f9
+80
+cc
+88
+f0
+ef
+60
+01
+0e
+4e
+60
+c3
+88
+f0
+ed
+24
+02
+b4
+04
+00
+50
+b9
+f5
+82
+eb
+24
+02
+b4
+04
+00
+50
+af
+23
+23
+45
+82
+23
+90
+00
+53
+73
+bb
+01
+06
+89
+82
+8a
+83
+e0
+22
+50
+02
+e7
+22
+bb
+fe
+02
+e3
+22
+89
+82
+8a
+83
+e4
+93
+22
+bb
+01
+0c
+e5
+82
+29
+f5
+82
+e5
+83
+3a
+f5
+83
+e0
+22
+50
+06
+e9
+25
+82
+f8
+e6
+22
+bb
+fe
+06
+e9
+25
+82
+f8
+e2
+22
+e5
+82
+29
+f5
+82
+e5
+83
+3a
+f5
+83
+e4
+93
+22
+bb
+01
+06
+89
+82
+8a
+83
+f0
+22
+50
+02
+f7
+22
+bb
+fe
+01
+f3
+22
+ef
+8d
+f0
+a4
+a8
+f0
+cf
+8c
+f0
+a4
+28
+ce
+8d
+f0
+a4
+2e
+fe
+22
+bc
+00
+0b
+be
+00
+29
+ef
+8d
+f0
+84
+ff
+ad
+f0
+22
+e4
+cc
+f8
+75
+f0
+08
+ef
+2f
+ff
+ee
+33
+fe
+ec
+33
+fc
+ee
+9d
+ec
+98
+40
+05
+fc
+ee
+9d
+fe
+0f
+d5
+f0
+e9
+e4
+ce
+fd
+22
+ed
+f8
+f5
+f0
+ee
+84
+20
+d2
+1c
+fe
+ad
+f0
+75
+f0
+08
+ef
+2f
+ff
+ed
+33
+fd
+40
+07
+98
+50
+06
+d5
+f0
+f2
+22
+c3
+98
+fd
+0f
+d5
+f0
+ea
+22
+c2
+d5
+ec
+30
+e7
+09
+b2
+d5
+e4
+c3
+9d
+fd
+e4
+9c
+fc
+ee
+30
+e7
+15
+b2
+d5
+e4
+c3
+9f
+ff
+e4
+9e
+fe
+12
+01
+63
+c3
+e4
+9d
+fd
+e4
+9c
+fc
+80
+03
+12
+01
+63
+30
+d5
+07
+c3
+e4
+9f
+ff
+e4
+9e
+fe
+22
+c5
+f0
+f8
+a3
+e0
+28
+f0
+c5
+f0
+f8
+e5
+82
+15
+82
+70
+02
+15
+83
+e0
+38
+f0
+22
+a3
+f8
+e0
+c5
+f0
+25
+f0
+f0
+e5
+82
+15
+82
+70
+02
+15
+83
+e0
+c8
+38
+f0
+e8
+22
+d0
+83
+d0
+82
+f8
+e4
+93
+70
+12
+74
+01
+93
+70
+0d
+a3
+a3
+93
+f8
+74
+01
+93
+f5
+82
+88
+83
+e4
+73
+74
+02
+93
+68
+60
+ef
+a3
+a3
+a3
+80
+df
+8a
+83
+89
+82
+e4
+73
+78
+7f
+e4
+f6
+d8
+fd
+75
+81
+cf
+02
+02
+8d
+02
+02
+f1
+e4
+93
+a3
+f8
+e4
+93
+a3
+40
+03
+f6
+80
+01
+f2
+08
+df
+f4
+80
+29
+e4
+93
+a3
+f8
+54
+07
+24
+0c
+c8
+c3
+33
+c4
+54
+0f
+44
+20
+c8
+83
+40
+04
+f4
+56
+80
+01
+46
+f6
+df
+e4
+80
+0b
+01
+02
+04
+08
+10
+20
+40
+80
+90
+02
+d2
+e4
+7e
+01
+93
+60
+bc
+a3
+ff
+54
+3f
+30
+e5
+09
+54
+1f
+fe
+e4
+93
+a3
+60
+01
+0e
+cf
+54
+c0
+25
+e0
+60
+a8
+40
+b8
+e4
+93
+a3
+fa
+e4
+93
+a3
+f8
+e4
+93
+a3
+c8
+c5
+82
+c8
+ca
+c5
+83
+ca
+f0
+a3
+c8
+c5
+82
+c8
+ca
+c5
+83
+ca
+df
+e9
+de
+e7
+80
+be
+52
+1b
+ab
+ff
+04
+1f
+00
+00
+00
+ff
+1a
+89
+ff
+17
+04
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+01
+01
+00
+12
+1c
+20
+90
+4e
+78
+e0
+b4
+01
+03
+12
+15
+df
+12
+1d
+98
+12
+17
+b1
+12
+10
+96
+12
+18
+88
+90
+0b
+2a
+e0
+14
+60
+58
+24
+fe
+70
+e9
+e4
+90
+4f
+00
+f0
+12
+0f
+4a
+e4
+ff
+ef
+24
+70
+fd
+e4
+34
+80
+8d
+82
+f5
+83
+e4
+f0
+0f
+ef
+b4
+10
+ee
+7f
+02
+12
+0d
+4c
+50
+08
+c2
+06
+7f
+02
+71
+a1
+80
+06
+d2
+06
+7f
+02
+71
+a1
+7f
+03
+12
+0d
+4c
+50
+08
+c2
+06
+7f
+03
+71
+a1
+80
+06
+d2
+06
+7f
+03
+71
+a1
+d2
+07
+7f
+08
+12
+10
+75
+f1
+40
+12
+15
+d1
+80
+fe
+90
+4e
+c7
+e0
+70
+06
+90
+4e
+c1
+e0
+60
+05
+12
+16
+d5
+80
+84
+90
+4e
+bd
+e0
+ff
+64
+01
+60
+09
+ef
+64
+02
+60
+04
+ef
+b4
+07
+0d
+f1
+40
+c2
+08
+7f
+18
+f1
+ab
+12
+15
+d1
+41
+fe
+12
+16
+d5
+41
+fe
+41
+fe
+22
+ac
+07
+a2
+06
+92
+04
+12
+1c
+f5
+af
+04
+a2
+06
+b3
+92
+03
+12
+10
+89
+af
+04
+c2
+05
+7b
+01
+7a
+80
+79
+70
+a2
+05
+92
+01
+90
+1c
+1f
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+e4
+fe
+fd
+ef
+54
+07
+fe
+ef
+13
+13
+13
+54
+03
+fd
+30
+01
+20
+90
+1c
+1f
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+2d
+f9
+e4
+3a
+fa
+11
+f9
+ff
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+4f
+21
+3f
+90
+1c
+1f
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+2d
+f9
+e4
+3a
+fa
+11
+f9
+ff
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+f4
+5f
+21
+3f
+90
+1b
+bd
+ef
+f0
+e4
+90
+1b
+bf
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+78
+c3
+7c
+1b
+7d
+01
+7b
+ff
+7a
+02
+79
+e8
+fe
+7f
+06
+11
+d3
+90
+1b
+bd
+e0
+51
+1a
+06
+b6
+14
+07
+21
+15
+04
+68
+2f
+05
+f5
+39
+06
+80
+3a
+06
+20
+3b
+05
+c6
+3c
+04
+65
+3d
+06
+95
+40
+00
+00
+07
+3f
+12
+1b
+43
+12
+13
+1c
+c2
+06
+7f
+18
+71
+a1
+c2
+06
+7f
+12
+71
+a1
+c2
+06
+7f
+13
+71
+a1
+c2
+06
+7f
+02
+71
+a1
+c2
+06
+7f
+03
+71
+a1
+c2
+06
+7f
+04
+71
+a1
+c2
+06
+7f
+17
+71
+a1
+c2
+06
+7f
+1b
+71
+a1
+c2
+06
+7f
+17
+71
+a1
+c2
+06
+7f
+04
+71
+a1
+c2
+06
+7f
+06
+71
+a1
+d2
+07
+7f
+08
+12
+10
+75
+d2
+07
+7f
+07
+12
+10
+75
+7f
+12
+12
+0d
+4c
+40
+07
+e4
+90
+4e
+f0
+f0
+80
+06
+90
+4e
+f0
+74
+01
+f0
+7f
+13
+12
+0d
+4c
+50
+0a
+90
+42
+cf
+74
+04
+f0
+a3
+74
+30
+f0
+12
+17
+3a
+12
+21
+52
+12
+08
+73
+90
+4e
+d9
+ef
+f0
+7b
+01
+7a
+4e
+79
+db
+7d
+01
+7c
+00
+7f
+a8
+7e
+7f
+12
+13
+68
+90
+4e
+db
+e0
+d3
+94
+03
+40
+03
+74
+02
+f0
+7b
+01
+7a
+4e
+79
+db
+7d
+01
+7c
+00
+7f
+a8
+7e
+7f
+12
+12
+6d
+12
+0a
+b9
+90
+80
+80
+e4
+f0
+90
+4e
+de
+f0
+90
+4e
+dd
+f0
+7f
+04
+12
+0d
+4c
+40
+04
+7f
+01
+80
+02
+7f
+00
+90
+1b
+bf
+ef
+f0
+7f
+17
+12
+0d
+4c
+40
+04
+7f
+01
+80
+02
+7f
+00
+90
+1b
+c1
+ef
+f0
+7f
+1b
+12
+0d
+4c
+40
+04
+7f
+01
+80
+02
+7f
+00
+90
+1b
+c0
+ef
+f0
+e0
+ff
+25
+e0
+ff
+90
+1b
+bf
+e0
+4f
+ff
+90
+1b
+c1
+e0
+fe
+25
+e0
+25
+e0
+4f
+ff
+a3
+f0
+bf
+05
+0c
+90
+1b
+bd
+e0
+b4
+2f
+05
+7f
+25
+02
+0e
+a2
+90
+4e
+a7
+e0
+b4
+01
+09
+12
+14
+58
+e4
+90
+4e
+a7
+f0
+22
+7b
+01
+7a
+49
+79
+50
+7d
+04
+7c
+00
+7f
+a4
+7e
+7f
+12
+13
+68
+90
+49
+50
+e0
+b4
+ff
+12
+a3
+e0
+b4
+ff
+0d
+a3
+e0
+b4
+ff
+08
+a3
+e0
+b4
+ff
+03
+02
+14
+58
+02
+0f
+93
+90
+4e
+bd
+e0
+b4
+07
+15
+90
+49
+c1
+e0
+ff
+64
+01
+70
+02
+e1
+3f
+ef
+b4
+02
+06
+90
+49
+c1
+74
+01
+f0
+12
+17
+3a
+d2
+07
+7f
+07
+12
+10
+75
+c2
+06
+7f
+07
+71
+a1
+02
+21
+52
+90
+4e
+bd
+74
+01
+f0
+fb
+7a
+4e
+79
+bd
+fd
+7c
+00
+7f
+a9
+7e
+7f
+12
+12
+6d
+7b
+01
+7a
+49
+79
+06
+7d
+06
+7c
+00
+7f
+a2
+7e
+7f
+12
+12
+6d
+7f
+23
+02
+0e
+a2
+12
+0f
+40
+e4
+90
+4e
+e3
+f0
+90
+4e
+f2
+e0
+60
+13
+04
+f0
+e0
+54
+07
+f0
+30
+e0
+05
+7f
+23
+02
+0e
+a2
+7f
+25
+02
+0e
+a2
+7b
+01
+7a
+1b
+79
+c3
+7d
+06
+7c
+00
+7f
+9c
+7e
+7f
+12
+13
+68
+90
+1b
+c3
+e0
+f4
+70
+24
+a3
+e0
+f4
+70
+1f
+a3
+e0
+b4
+ff
+1a
+a3
+e0
+b4
+ff
+15
+a3
+e0
+b4
+ff
+10
+a3
+e0
+b4
+ff
+0b
+90
+4f
+01
+74
+01
+f0
+a3
+74
+1e
+f0
+22
+02
+14
+58
+12
+08
+31
+90
+4e
+e3
+74
+01
+f0
+e4
+90
+4e
+f1
+f0
+a3
+f0
+90
+4e
+be
+f0
+22
+12
+17
+3a
+12
+0c
+f9
+7d
+06
+7f
+80
+12
+0a
+8e
+7b
+01
+7a
+4e
+79
+db
+7d
+01
+7c
+00
+7f
+a8
+7e
+7f
+12
+13
+68
+02
+0a
+b9
+e4
+90
+4e
+84
+f0
+7f
+0e
+12
+0e
+a2
+7f
+02
+12
+0e
+a2
+90
+4e
+bd
+74
+07
+f0
+90
+1b
+be
+74
+09
+f0
+12
+08
+31
+7b
+01
+7a
+03
+79
+72
+7d
+06
+7c
+00
+7f
+96
+7e
+7f
+12
+12
+6d
+7f
+0a
+7e
+00
+12
+15
+b2
+7b
+01
+7a
+45
+79
+3e
+7d
+06
+7c
+00
+7f
+9c
+7e
+7f
+12
+12
+6d
+7f
+0a
+7e
+00
+12
+15
+b2
+7b
+01
+7a
+1b
+79
+be
+7d
+01
+7c
+00
+7f
+a9
+7e
+7f
+12
+12
+6d
+90
+4e
+be
+74
+06
+f0
+e4
+90
+4e
+c2
+f0
+22
+90
+4e
+be
+e0
+b4
+08
+0a
+12
+0e
+62
+90
+4e
+bd
+74
+03
+f0
+22
+90
+4e
+be
+e0
+b4
+06
+03
+02
+16
+ea
+12
+14
+58
+22
+90
+00
+a0
+e4
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+12
+0b
+70
+c2
+07
+7f
+07
+12
+10
+75
+c2
+06
+7f
+04
+71
+a1
+c2
+06
+7f
+1b
+71
+a1
+c2
+06
+7f
+17
+71
+a1
+c2
+06
+7f
+17
+71
+a1
+c2
+06
+7f
+04
+71
+a1
+c2
+06
+7f
+06
+71
+a1
+7f
+02
+f1
+97
+7f
+03
+f1
+97
+7f
+04
+f1
+97
+7f
+17
+f1
+97
+7f
+1b
+f1
+97
+7f
+17
+f1
+97
+7f
+04
+f1
+97
+7f
+06
+90
+1c
+2c
+ef
+f0
+12
+0d
+4c
+92
+09
+90
+1c
+2c
+e0
+ff
+a2
+09
+b3
+92
+08
+ef
+54
+07
+fe
+ef
+13
+13
+13
+54
+03
+ff
+30
+08
+43
+24
+a0
+f5
+82
+e4
+34
+00
+f5
+83
+c0
+83
+c0
+82
+e0
+fd
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+f4
+5d
+d0
+82
+d0
+83
+f0
+74
+a4
+2f
+f5
+82
+e4
+34
+00
+f5
+83
+c0
+83
+c0
+82
+e0
+ff
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+4f
+d0
+82
+d0
+83
+f0
+22
+74
+a0
+2f
+f5
+82
+e4
+34
+00
+f5
+83
+c0
+83
+c0
+82
+e0
+fd
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+fc
+4d
+d0
+82
+d0
+83
+f0
+74
+a4
+2f
+f5
+82
+e4
+34
+00
+f5
+83
+e0
+ff
+ec
+f4
+fe
+ef
+5e
+f0
+22
+91
+e3
+91
+f9
+7f
+18
+b1
+4c
+40
+0e
+7f
+02
+11
+4a
+7f
+03
+11
+4a
+7f
+04
+11
+4a
+80
+ec
+22
+90
+02
+18
+ef
+f0
+90
+80
+88
+74
+01
+f0
+a3
+e4
+f0
+90
+80
+8e
+04
+f0
+a3
+e4
+f0
+90
+80
+06
+74
+02
+f0
+90
+81
+2c
+e0
+30
+e3
+f9
+90
+02
+1d
+e0
+ff
+22
+e4
+90
+1c
+27
+f0
+a3
+f0
+e4
+ff
+11
+4a
+bf
+31
+18
+7f
+06
+11
+4a
+ef
+44
+80
+ff
+90
+1c
+27
+f0
+7d
+06
+51
+8e
+90
+1c
+28
+74
+31
+f0
+21
+52
+7f
+01
+11
+4a
+bf
+5a
+18
+90
+1c
+28
+74
+5a
+f0
+7f
+06
+11
+4a
+ef
+44
+80
+ff
+90
+1c
+27
+f0
+7d
+06
+51
+8e
+21
+52
+e4
+ff
+11
+4a
+ef
+64
+30
+60
+02
+21
+4e
+7f
+01
+11
+4a
+bf
+54
+08
+90
+1c
+28
+74
+31
+f0
+21
+52
+7f
+01
+11
+4a
+ef
+54
+f0
+64
+d0
+70
+28
+7f
+1e
+11
+4a
+ef
+30
+e0
+08
+90
+1c
+28
+74
+d1
+f0
+80
+06
+90
+1c
+28
+74
+d0
+f0
+7f
+06
+11
+4a
+ef
+44
+80
+ff
+90
+1c
+27
+f0
+7d
+06
+51
+8e
+80
+4d
+7f
+01
+11
+4a
+ef
+54
+f0
+ff
+bf
+50
+18
+90
+1c
+28
+74
+50
+f0
+7f
+06
+11
+4a
+ef
+44
+80
+ff
+90
+1c
+27
+f0
+7d
+06
+51
+8e
+80
+2a
+7f
+01
+11
+4a
+bf
+02
+1f
+7f
+06
+11
+4a
+ef
+44
+80
+ff
+90
+1c
+27
+f0
+7d
+06
+51
+8e
+90
+1c
+28
+74
+02
+f0
+7f
+01
+11
+4a
+ef
+64
+02
+60
+04
+91
+f9
+01
+7a
+90
+1c
+28
+e0
+64
+d0
+60
+02
+41
+22
+7d
+09
+7f
+5a
+51
+8e
+7d
+0d
+7f
+0a
+51
+8e
+7d
+1b
+7f
+35
+51
+8e
+7d
+1d
+7f
+db
+51
+8e
+7d
+28
+7f
+b4
+51
+8e
+7d
+29
+7f
+46
+51
+8e
+7d
+2a
+7f
+96
+51
+8e
+7d
+2b
+7f
+8c
+51
+8e
+7d
+2c
+7f
+6e
+51
+8e
+7d
+2d
+7f
+64
+51
+8e
+7d
+38
+7f
+5f
+51
+8e
+7d
+39
+7f
+0f
+51
+8e
+7d
+3a
+7f
+32
+51
+8e
+7d
+3b
+7f
+47
+51
+8e
+7d
+42
+7f
+10
+51
+8e
+7d
+43
+7f
+09
+51
+8e
+7d
+54
+7f
+2e
+51
+8e
+7d
+55
+7f
+f2
+51
+8e
+7d
+61
+7f
+f4
+51
+8e
+7d
+63
+7f
+70
+51
+8e
+7d
+75
+7f
+52
+51
+8e
+7d
+76
+7f
+41
+51
+8e
+7d
+77
+7f
+ed
+51
+8e
+7d
+78
+7f
+23
+51
+8e
+7d
+79
+7f
+46
+51
+8e
+7d
+7a
+7f
+e5
+51
+8e
+7d
+7c
+7f
+48
+51
+8e
+7d
+7d
+7f
+80
+51
+8e
+7d
+7e
+7f
+77
+51
+8e
+7d
+7f
+7f
+01
+51
+8e
+7d
+0b
+e4
+ff
+51
+8e
+7d
+7f
+e4
+ff
+51
+8e
+7d
+09
+e4
+ff
+51
+8e
+90
+1c
+28
+e0
+b4
+02
+18
+7d
+09
+7f
+5a
+51
+8e
+7d
+26
+7f
+34
+51
+8e
+7d
+19
+7f
+14
+51
+8e
+7d
+09
+e4
+ff
+51
+8e
+90
+1c
+28
+e0
+64
+50
+70
+3f
+7d
+09
+7f
+5a
+51
+8e
+7d
+5b
+7f
+9a
+51
+8e
+7f
+0d
+11
+4a
+ef
+64
+12
+60
+08
+7d
+0d
+7f
+12
+51
+8e
+80
+ef
+7f
+0e
+11
+4a
+ef
+64
+c5
+60
+08
+7d
+0e
+7f
+c5
+51
+8e
+80
+ef
+7f
+53
+11
+4a
+ef
+64
+48
+60
+08
+7d
+53
+7f
+48
+51
+8e
+80
+ef
+90
+1c
+28
+e0
+ff
+22
+ac
+07
+ed
+44
+80
+90
+02
+18
+f0
+a3
+ef
+f0
+90
+80
+88
+74
+02
+f0
+a3
+e4
+f0
+90
+80
+8e
+f0
+a3
+f0
+90
+80
+06
+74
+02
+f0
+90
+81
+2c
+e0
+30
+e3
+f9
+7f
+00
+22
+91
+f9
+90
+4e
+d9
+e0
+ff
+64
+d0
+60
+04
+ef
+b4
+d1
+0a
+90
+4e
+db
+e0
+04
+ff
+7d
+06
+51
+8e
+90
+4e
+d9
+e0
+b4
+31
+18
+90
+4e
+db
+e0
+b4
+01
+08
+7d
+06
+e4
+ff
+51
+8e
+80
+09
+90
+4e
+db
+e0
+ff
+7d
+06
+51
+8e
+90
+4e
+d9
+e0
+b4
+50
+0b
+90
+4e
+db
+e0
+24
+03
+ff
+7d
+06
+51
+8e
+90
+4e
+d9
+e0
+b4
+5a
+0b
+90
+4e
+db
+e0
+24
+03
+ff
+7d
+06
+51
+8e
+90
+4e
+d9
+e0
+64
+02
+70
+53
+7d
+09
+7f
+5a
+51
+8e
+90
+4e
+db
+e0
+14
+60
+18
+14
+60
+23
+14
+60
+2e
+24
+03
+70
+36
+7d
+0d
+7f
+15
+51
+8e
+7d
+0e
+7f
+15
+51
+8e
+80
+28
+7d
+0d
+7f
+20
+51
+8e
+7d
+0e
+7f
+20
+51
+8e
+80
+1a
+7d
+0d
+7f
+2a
+51
+8e
+7d
+0e
+7f
+2a
+51
+8e
+80
+0c
+7d
+0d
+7f
+3f
+51
+8e
+7d
+0e
+7f
+3f
+51
+8e
+7d
+09
+e4
+ff
+51
+8e
+90
+80
+81
+e4
+f0
+90
+80
+73
+e0
+44
+02
+f0
+90
+80
+77
+e0
+44
+02
+f0
+22
+e4
+90
+1c
+06
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+7f
+18
+b1
+4c
+50
+02
+c3
+22
+91
+f9
+7f
+02
+11
+4a
+ef
+20
+e7
+02
+81
+e1
+90
+4e
+c7
+74
+02
+f0
+90
+4e
+d9
+e0
+64
+02
+60
+16
+7f
+03
+11
+4a
+90
+1c
+06
+ef
+f0
+7f
+04
+11
+4a
+ef
+f4
+04
+90
+1c
+07
+f0
+80
+29
+7f
+03
+11
+4a
+90
+1c
+06
+ef
+f0
+7f
+04
+11
+4a
+90
+1c
+07
+ef
+f0
+7f
+12
+11
+4a
+90
+1c
+09
+ef
+f0
+e0
+ff
+c4
+54
+0f
+90
+1c
+08
+f0
+ef
+54
+0f
+a3
+f0
+71
+70
+90
+4e
+d9
+e0
+64
+02
+70
+2a
+90
+1c
+08
+e0
+ff
+30
+e3
+05
+44
+f0
+f0
+80
+07
+90
+1c
+08
+e0
+54
+0f
+f0
+90
+1c
+09
+e0
+ff
+30
+e3
+05
+44
+f0
+f0
+80
+31
+90
+1c
+09
+e0
+54
+0f
+f0
+80
+28
+90
+1c
+06
+e0
+30
+e7
+08
+90
+1c
+08
+74
+ff
+f0
+80
+05
+e4
+90
+1c
+08
+f0
+90
+1c
+07
+e0
+30
+e7
+08
+90
+1c
+09
+74
+ff
+f0
+80
+05
+e4
+90
+1c
+09
+f0
+90
+4e
+f0
+e0
+70
+31
+90
+1c
+08
+e0
+fe
+90
+1c
+06
+e0
+fd
+ee
+ed
+ff
+c3
+e4
+9f
+ff
+e4
+9e
+90
+4e
+fd
+f0
+a3
+ef
+f0
+90
+1c
+09
+e0
+fe
+90
+1c
+07
+e0
+fd
+ee
+ed
+ff
+90
+4e
+fb
+ee
+f0
+a3
+ef
+f0
+80
+2a
+90
+1c
+08
+e0
+fe
+90
+1c
+06
+e0
+fd
+ee
+ed
+ff
+90
+4e
+fb
+ee
+f0
+a3
+ef
+f0
+90
+1c
+09
+e0
+fe
+90
+1c
+07
+e0
+fd
+ee
+ed
+ff
+90
+4e
+fd
+ee
+f0
+a3
+ef
+f0
+90
+4e
+fb
+e0
+fe
+a3
+e0
+ff
+c3
+e4
+9f
+ff
+e4
+9e
+90
+4e
+fb
+f0
+a3
+ef
+f0
+a3
+e0
+fe
+a3
+e0
+ff
+c3
+e4
+9f
+ff
+e4
+9e
+90
+4e
+fd
+f0
+a3
+ef
+f0
+90
+4e
+bd
+e0
+b4
+01
+03
+12
+20
+50
+d3
+22
+c3
+22
+e4
+ff
+91
+f9
+7f
+06
+11
+4a
+ef
+54
+f7
+ff
+7d
+06
+51
+8e
+7f
+02
+11
+4a
+61
+70
+e4
+90
+1c
+33
+f0
+90
+80
+81
+04
+f0
+e4
+90
+4f
+00
+f0
+90
+4f
+00
+e0
+04
+f0
+e0
+c3
+94
+06
+40
+03
+12
+17
+3a
+e4
+ff
+11
+4a
+90
+1c
+33
+ef
+f0
+64
+30
+60
+27
+e0
+64
+31
+60
+22
+90
+80
+81
+e4
+f0
+90
+80
+73
+e0
+44
+02
+f0
+90
+80
+77
+e0
+54
+fd
+f0
+90
+80
+73
+e0
+44
+02
+f0
+90
+80
+81
+74
+01
+f0
+80
+bd
+22
+7b
+01
+7a
+81
+79
+1c
+ad
+07
+e4
+90
+1c
+2b
+f0
+fe
+ef
+54
+07
+f0
+ef
+13
+13
+13
+54
+03
+fe
+f5
+82
+75
+83
+00
+12
+01
+12
+fd
+33
+95
+e0
+fc
+90
+1c
+2b
+e0
+ff
+74
+01
+7e
+00
+a8
+07
+08
+80
+05
+c3
+33
+ce
+33
+ce
+d8
+f9
+ff
+ee
+5c
+fe
+ef
+5d
+4e
+24
+ff
+22
+e4
+90
+1b
+f8
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+7f
+04
+b1
+4c
+40
+04
+7f
+01
+80
+02
+7f
+00
+90
+1b
+f8
+ef
+f0
+7f
+17
+b1
+4c
+40
+04
+7f
+01
+80
+02
+7f
+00
+90
+1b
+fa
+ef
+f0
+7f
+1b
+b1
+4c
+40
+04
+7f
+01
+80
+02
+7f
+00
+90
+1b
+f9
+ef
+f0
+e0
+ff
+25
+e0
+ff
+90
+1b
+f8
+e0
+4f
+ff
+90
+1b
+fa
+e0
+fe
+25
+e0
+25
+e0
+4f
+a3
+f0
+64
+07
+70
+70
+90
+4f
+02
+74
+1e
+f0
+e4
+90
+4e
+c4
+f0
+a3
+f0
+90
+4e
+c7
+74
+0a
+f0
+90
+4e
+c6
+e0
+c3
+94
+19
+50
+59
+90
+4e
+c6
+e0
+04
+f0
+e0
+64
+19
+70
+4e
+90
+4f
+01
+f0
+a3
+f0
+90
+4e
+bd
+e0
+60
+32
+14
+60
+1e
+24
+fb
+60
+2b
+24
+fe
+60
+0e
+04
+70
+34
+7f
+11
+d1
+a2
+90
+4e
+be
+74
+08
+f0
+22
+90
+4e
+bd
+74
+03
+f0
+80
+22
+f1
+40
+7f
+0a
+7e
+00
+12
+15
+b2
+90
+4e
+bd
+74
+03
+f0
+80
+11
+f1
+40
+90
+4e
+bd
+74
+03
+f0
+80
+07
+22
+e4
+90
+4e
+c6
+f0
+22
+7b
+01
+7a
+4f
+79
+11
+7d
+02
+7c
+00
+7f
+aa
+7e
+7f
+12
+13
+68
+90
+4f
+12
+e0
+04
+f0
+70
+06
+90
+4f
+11
+e0
+04
+f0
+7b
+01
+7a
+4f
+79
+11
+7d
+02
+7c
+00
+7f
+aa
+7e
+7f
+12
+12
+6d
+90
+4f
+11
+e0
+fc
+a3
+e0
+90
+45
+3f
+f0
+ec
+a3
+f0
+7f
+0d
+90
+1c
+12
+ef
+f0
+78
+13
+7c
+1c
+7d
+01
+7b
+ff
+7a
+02
+79
+ee
+7e
+00
+7f
+03
+12
+00
+d3
+90
+1c
+12
+e0
+90
+1c
+15
+f0
+7b
+01
+7a
+1c
+79
+13
+7d
+03
+90
+1b
+ed
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+a3
+ed
+f0
+90
+47
+c6
+e0
+ff
+a3
+e0
+90
+1b
+f1
+cf
+f0
+a3
+ef
+f0
+90
+1b
+f0
+e0
+ff
+14
+f0
+ef
+60
+3f
+90
+1b
+ed
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+02
+04
+a9
+f0
+fa
+12
+00
+f9
+ff
+90
+1b
+f1
+e4
+75
+f0
+01
+12
+02
+04
+85
+f0
+82
+f5
+83
+ef
+f0
+90
+1b
+f1
+e0
+fe
+a3
+e0
+ff
+be
+47
+c6
+bf
+c4
+c3
+90
+1b
+f1
+74
+47
+f0
+a3
+74
+2e
+f0
+80
+b7
+90
+1b
+f1
+e0
+ff
+a3
+e0
+90
+47
+c6
+cf
+f0
+a3
+ef
+f0
+22
+7f
+24
+d1
+a2
+e4
+90
+4e
+bd
+f0
+22
+e4
+ff
+91
+f9
+7f
+06
+11
+4a
+ef
+44
+08
+ff
+7d
+06
+51
+8e
+90
+80
+81
+e4
+f0
+c2
+06
+7f
+19
+12
+03
+a1
+c2
+06
+7f
+1a
+02
+03
+a1
+90
+1c
+2d
+ef
+f0
+7b
+01
+7a
+80
+79
+74
+b1
+52
+92
+0a
+90
+1c
+2d
+e0
+ff
+a2
+0a
+b3
+92
+02
+7b
+01
+7a
+80
+79
+74
+a2
+02
+92
+01
+02
+03
+c2
+7b
+01
+7a
+49
+79
+50
+7d
+04
+7c
+00
+7f
+a4
+7e
+7f
+12
+13
+68
+90
+49
+50
+e0
+f4
+70
+27
+a3
+e0
+f4
+70
+22
+a3
+e0
+b4
+ff
+1d
+a3
+e0
+b4
+ff
+18
+90
+49
+50
+74
+0f
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+7f
+23
+d1
+a2
+90
+4e
+f2
+74
+01
+f0
+80
+04
+7f
+23
+d1
+a2
+90
+4e
+bd
+74
+01
+f0
+22
+d2
+07
+7f
+07
+12
+10
+75
+90
+4e
+ca
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+7f
+04
+b1
+4c
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+ca
+f0
+30
+e0
+06
+90
+4e
+c7
+74
+02
+f0
+90
+4e
+ca
+e0
+54
+07
+ff
+bf
+07
+06
+a3
+74
+01
+f0
+80
+07
+ef
+70
+04
+90
+4e
+cb
+f0
+90
+4e
+cb
+e0
+ff
+22
+d2
+07
+7f
+07
+11
+75
+90
+4e
+cc
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+7f
+17
+12
+0d
+4c
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+cc
+f0
+30
+e0
+06
+90
+4e
+c7
+74
+02
+f0
+90
+4e
+cc
+e0
+54
+07
+ff
+bf
+07
+06
+a3
+74
+01
+f0
+80
+07
+ef
+70
+04
+90
+4e
+cd
+f0
+90
+4e
+cd
+e0
+ff
+22
+ac
+07
+d2
+05
+12
+03
+b8
+af
+04
+a2
+07
+92
+02
+12
+0f
+86
+af
+04
+c2
+03
+7b
+01
+7a
+80
+79
+78
+a2
+03
+92
+01
+02
+03
+c2
+e4
+90
+1b
+f3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+12
+0f
+dd
+90
+1b
+f3
+ef
+f0
+11
+29
+90
+1b
+f5
+ef
+f0
+31
+c6
+90
+1b
+f4
+ef
+f0
+11
+f8
+90
+1b
+f6
+ef
+f0
+31
+5f
+90
+1b
+f7
+ef
+f0
+51
+12
+90
+1b
+f4
+e0
+ff
+25
+e0
+ff
+90
+1b
+f3
+e0
+4f
+ff
+90
+1b
+f5
+e0
+fe
+25
+e0
+25
+e0
+4f
+ff
+a3
+e0
+fe
+33
+33
+33
+54
+f8
+4f
+ff
+a3
+e0
+fe
+c4
+54
+f0
+4f
+90
+4e
+ed
+f0
+22
+7f
+17
+12
+0d
+4c
+40
+03
+7f
+00
+22
+c2
+07
+7f
+07
+11
+75
+90
+4e
+d2
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+7f
+17
+12
+0d
+4c
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+d2
+f0
+d2
+07
+7f
+07
+11
+75
+c2
+06
+7f
+07
+12
+03
+a1
+90
+4e
+d2
+e0
+30
+e0
+06
+90
+4e
+c7
+74
+02
+f0
+90
+4e
+d2
+e0
+54
+07
+ff
+bf
+07
+06
+a3
+74
+01
+f0
+80
+07
+ef
+70
+04
+90
+4e
+d3
+f0
+90
+4e
+d3
+e0
+ff
+22
+7f
+04
+12
+0d
+4c
+40
+03
+7f
+00
+22
+c2
+07
+7f
+07
+11
+75
+90
+4e
+d0
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+7f
+04
+12
+0d
+4c
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+d0
+f0
+d2
+07
+7f
+07
+11
+75
+c2
+06
+7f
+07
+12
+03
+a1
+90
+4e
+d0
+e0
+30
+e0
+06
+90
+4e
+c7
+74
+02
+f0
+90
+4e
+d0
+e0
+54
+07
+ff
+bf
+07
+06
+a3
+74
+01
+f0
+80
+07
+ef
+70
+04
+90
+4e
+d1
+f0
+90
+4e
+d1
+e0
+ff
+22
+d2
+07
+7f
+07
+11
+75
+90
+4e
+ce
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+7f
+1b
+12
+0d
+4c
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+ce
+f0
+30
+e0
+06
+90
+4e
+c7
+74
+02
+f0
+90
+4e
+ce
+e0
+54
+07
+ff
+bf
+07
+06
+a3
+74
+01
+f0
+80
+07
+ef
+70
+04
+90
+4e
+cf
+f0
+90
+4e
+cf
+e0
+ff
+22
+90
+4e
+dc
+e0
+ff
+25
+e0
+f0
+e0
+ff
+c0
+07
+7f
+06
+12
+0d
+4c
+40
+04
+7e
+01
+80
+02
+7e
+00
+d0
+e0
+4e
+90
+4e
+dc
+f0
+30
+e0
+06
+90
+4e
+c7
+74
+02
+f0
+90
+4e
+dc
+e0
+64
+07
+70
+29
+90
+4e
+db
+e0
+04
+f0
+e0
+54
+03
+f0
+70
+02
+04
+f0
+90
+4e
+db
+e0
+90
+4e
+dd
+f0
+12
+0a
+b9
+7b
+01
+7a
+4e
+79
+db
+7d
+01
+7c
+00
+7f
+a8
+7e
+7f
+51
+6d
+22
+90
+1b
+c9
+ee
+f0
+a3
+ef
+f0
+a3
+ec
+f0
+a3
+ed
+f0
+a3
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+1b
+cb
+e0
+70
+02
+a3
+e0
+70
+02
+61
+1b
+90
+1b
+c9
+e0
+fe
+a3
+e0
+ff
+44
+0f
+24
+01
+fd
+e4
+3e
+fc
+c3
+ed
+9f
+ff
+ec
+9e
+fe
+90
+1b
+d0
+f0
+a3
+ef
+f0
+90
+1b
+cb
+e0
+fc
+a3
+e0
+fd
+d3
+9f
+ec
+9e
+40
+0a
+90
+1b
+d0
+e0
+fe
+a3
+e0
+ff
+80
+04
+ae
+04
+af
+05
+90
+1b
+d0
+ee
+f0
+fc
+a3
+ef
+f0
+fd
+c3
+90
+1b
+cc
+e0
+9d
+f0
+90
+1b
+cb
+e0
+9c
+f0
+90
+1b
+c9
+e0
+fe
+a3
+e0
+ff
+90
+1b
+cd
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+91
+79
+7f
+0a
+7e
+00
+b1
+b2
+90
+1b
+d0
+e0
+fe
+a3
+e0
+ff
+90
+1b
+ce
+ee
+8f
+f0
+12
+01
+ee
+90
+1b
+ca
+e0
+2f
+f0
+90
+1b
+c9
+e0
+3e
+f0
+41
+84
+22
+e4
+90
+1c
+29
+f0
+7b
+01
+7a
+1c
+79
+29
+7d
+01
+fc
+7f
+ac
+7e
+7f
+71
+68
+90
+1c
+29
+e0
+b4
+ff
+30
+91
+ee
+90
+4f
+11
+ee
+f0
+a3
+ef
+f0
+7b
+01
+7a
+4f
+79
+11
+7d
+02
+7c
+00
+7f
+aa
+7e
+7f
+51
+6d
+90
+1c
+29
+74
+5a
+f0
+7b
+01
+7a
+1c
+79
+29
+7d
+01
+7c
+00
+7f
+ac
+7e
+7f
+51
+6d
+22
+90
+1b
+fd
+ec
+f0
+a3
+ed
+f0
+a3
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+80
+98
+74
+04
+f0
+a3
+e4
+f0
+90
+1b
+2c
+74
+a0
+f0
+a3
+ee
+f0
+a3
+ef
+f0
+90
+1b
+2f
+74
+a1
+f0
+7a
+1b
+79
+2c
+7e
+1b
+7f
+2c
+74
+2c
+fc
+74
+1b
+ff
+ec
+fe
+ef
+90
+80
+9a
+ee
+f0
+a3
+ef
+f0
+90
+1b
+fd
+e0
+fc
+a3
+e0
+fa
+ec
+ff
+ea
+fe
+ef
+90
+80
+9e
+ee
+f0
+a3
+ef
+f0
+7a
+1b
+79
+30
+7e
+1b
+7f
+30
+74
+30
+fc
+74
+1b
+ff
+ec
+fe
+ef
+90
+80
+9c
+ee
+f0
+a3
+ef
+f0
+90
+80
+90
+74
+02
+f0
+90
+80
+9c
+a3
+e0
+20
+e7
+07
+90
+80
+90
+e0
+44
+01
+f0
+90
+80
+06
+e0
+44
+04
+f0
+91
+e6
+90
+1b
+ff
+e0
+a3
+e0
+fa
+a3
+e0
+ae
+02
+ff
+7b
+01
+7a
+1b
+79
+30
+90
+1b
+fd
+e0
+a3
+e0
+90
+1b
+ec
+f0
+90
+1b
+e7
+ee
+f0
+a3
+ef
+f0
+a3
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+1b
+ec
+e0
+ff
+14
+f0
+ef
+60
+27
+90
+1b
+e9
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+02
+04
+a9
+f0
+fa
+12
+00
+f9
+ff
+90
+1b
+e7
+e4
+75
+f0
+01
+12
+02
+04
+85
+f0
+82
+f5
+83
+ef
+f0
+80
+cf
+22
+e4
+90
+4e
+c4
+f0
+a3
+f0
+7b
+01
+7a
+45
+79
+3e
+7d
+06
+fc
+7f
+9c
+7e
+7f
+71
+68
+90
+4e
+bd
+74
+08
+f0
+7f
+27
+02
+0e
+a2
+90
+1b
+94
+ee
+f0
+a3
+ef
+f0
+a3
+ec
+f0
+a3
+ed
+f0
+7e
+1b
+7f
+9b
+90
+1b
+ec
+f0
+91
+15
+90
+1b
+98
+74
+a0
+f0
+90
+1b
+94
+e0
+ff
+a3
+e0
+90
+1b
+99
+cf
+f0
+a3
+ef
+f0
+90
+1b
+97
+e0
+24
+03
+fd
+90
+1b
+96
+e0
+34
+00
+fc
+ed
+fa
+ec
+ff
+ea
+fe
+ef
+90
+80
+98
+ee
+f0
+a3
+ef
+f0
+7d
+98
+ed
+fa
+74
+1b
+ff
+ea
+fe
+ef
+a3
+ee
+f0
+a3
+ef
+f0
+90
+80
+9e
+e4
+f0
+a3
+f0
+90
+80
+90
+04
+f0
+90
+80
+06
+e0
+44
+04
+f0
+90
+81
+2c
+e0
+30
+e5
+f9
+22
+90
+4e
+41
+e0
+fe
+a3
+e0
+ff
+22
+e4
+90
+1c
+25
+f0
+a3
+f0
+91
+ee
+c0
+06
+c0
+07
+d1
+e1
+ac
+06
+ad
+07
+d0
+07
+d0
+06
+c3
+ed
+9f
+ff
+ec
+9e
+90
+1c
+25
+f0
+a3
+ef
+f0
+90
+42
+cf
+e0
+64
+04
+60
+02
+a1
+a8
+91
+ee
+c0
+06
+c0
+07
+b1
+a9
+ac
+06
+ad
+07
+d0
+07
+d0
+06
+c3
+ed
+9f
+ff
+ec
+9e
+fe
+7c
+00
+7d
+1e
+12
+01
+63
+7c
+00
+7d
+0a
+12
+01
+51
+c3
+90
+1c
+26
+e0
+9f
+90
+1c
+25
+e0
+9e
+50
+08
+90
+4e
+e2
+74
+01
+f0
+80
+05
+e4
+90
+4e
+e2
+f0
+91
+ee
+c0
+06
+c0
+07
+b1
+a9
+ac
+06
+ad
+07
+d0
+07
+d0
+06
+c3
+ed
+9f
+ff
+ec
+9e
+fe
+7c
+00
+7d
+1e
+12
+01
+63
+7c
+00
+7d
+09
+12
+01
+51
+c3
+90
+1c
+26
+e0
+9f
+90
+1c
+25
+e0
+9e
+50
+12
+90
+49
+54
+e0
+64
+01
+60
+08
+90
+4e
+bd
+e0
+64
+01
+60
+02
+d1
+ea
+22
+90
+4e
+43
+e0
+fe
+a3
+e0
+ff
+22
+d3
+ef
+94
+00
+ee
+94
+00
+40
+15
+e4
+fd
+fc
+0d
+bd
+00
+01
+0c
+bc
+04
+f8
+bd
+a6
+f5
+ef
+1f
+70
+01
+1e
+80
+e2
+22
+e4
+90
+0b
+2b
+f0
+90
+0b
+2a
+f0
+7f
+01
+fe
+80
+d3
+e4
+90
+1b
+e1
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+90
+4e
+7d
+f0
+f1
+3a
+90
+4e
+bd
+e0
+b4
+01
+17
+90
+4e
+e3
+e0
+b4
+01
+10
+7f
+18
+12
+0d
+4c
+40
+09
+12
+0b
+84
+e4
+33
+90
+1b
+e5
+f0
+90
+4e
+bd
+74
+01
+f0
+90
+1b
+e6
+e0
+04
+f0
+12
+1d
+98
+90
+1b
+e6
+e0
+d3
+94
+05
+40
+0b
+74
+05
+f0
+90
+4e
+7d
+74
+02
+f0
+80
+75
+f1
+b1
+11
+96
+90
+4e
+7d
+e0
+70
+6b
+90
+4e
+d8
+e0
+60
+16
+90
+1b
+e5
+74
+01
+f0
+90
+4e
+7d
+74
+03
+f0
+90
+49
+b7
+74
+01
+f0
+90
+4e
+80
+f0
+90
+4e
+ed
+e0
+ff
+90
+4e
+d4
+e0
+6f
+60
+1d
+90
+49
+b7
+74
+01
+f0
+90
+1b
+e5
+f0
+90
+4e
+7d
+74
+03
+f0
+90
+4e
+d4
+ef
+f0
+bf
+07
+05
+e4
+90
+1b
+e5
+f0
+90
+4e
+d4
+e0
+b4
+07
+06
+90
+4e
+7d
+74
+03
+f0
+90
+1b
+e5
+e0
+b4
+01
+12
+f1
+5e
+e4
+90
+1b
+e5
+f0
+90
+4e
+7d
+e0
+64
+03
+60
+03
+74
+01
+f0
+90
+0b
+2a
+e0
+64
+01
+60
+02
+c1
+18
+90
+4e
+c7
+e0
+70
+06
+90
+4e
+c1
+e0
+60
+02
+80
+13
+90
+4e
+bd
+e0
+b4
+01
+0c
+12
+07
+40
+c2
+08
+7f
+18
+12
+07
+ab
+a1
+d1
+90
+0b
+2b
+74
+01
+f0
+e4
+90
+0b
+2a
+f0
+22
+90
+42
+d1
+e0
+fe
+a3
+e0
+ff
+22
+e4
+90
+4e
+c4
+f0
+a3
+f0
+90
+4e
+c7
+f0
+90
+4e
+c1
+04
+f0
+e4
+90
+4e
+bd
+f0
+7f
+19
+02
+0e
+a2
+90
+4e
+c7
+e0
+60
+02
+14
+f0
+90
+4e
+c9
+e0
+04
+f0
+90
+4e
+ec
+e0
+60
+02
+04
+f0
+12
+1b
+92
+12
+0d
+91
+91
+f7
+90
+4f
+01
+e0
+b4
+01
+10
+a3
+e0
+70
+06
+90
+4f
+01
+f0
+d1
+ea
+90
+4f
+02
+e0
+14
+f0
+22
+90
+80
+86
+74
+75
+f0
+a3
+74
+0a
+f0
+90
+80
+8a
+74
+18
+f0
+a3
+74
+02
+f0
+a3
+74
+1d
+f0
+a3
+74
+02
+f0
+90
+80
+77
+e0
+44
+02
+f0
+22
+90
+4e
+d4
+e0
+90
+4e
+21
+f0
+90
+4e
+fb
+e0
+fc
+a3
+e0
+90
+4e
+22
+f0
+ec
+ff
+33
+95
+e0
+a3
+ef
+f0
+90
+4e
+fd
+e0
+fc
+a3
+e0
+90
+4e
+24
+f0
+ec
+ff
+33
+95
+e0
+a3
+ef
+f0
+90
+4e
+d8
+e0
+90
+4e
+26
+f0
+e4
+a3
+f0
+90
+4e
+d8
+f0
+90
+4e
+c4
+f0
+a3
+f0
+22
+90
+4e
+bd
+e0
+64
+01
+60
+06
+90
+4e
+c7
+74
+03
+f0
+22
+e4
+90
+1c
+16
+f0
+a3
+f0
+7f
+02
+12
+0d
+4c
+e4
+33
+90
+1c
+18
+f0
+7f
+03
+12
+0d
+4c
+e4
+33
+ff
+90
+1c
+18
+e0
+fe
+25
+e0
+4f
+ff
+90
+4e
+d5
+e0
+6f
+60
+5d
+90
+4e
+d6
+e0
+a3
+f0
+90
+4e
+d5
+e0
+a3
+f0
+90
+4e
+d5
+ef
+f0
+fd
+a3
+e0
+75
+f0
+04
+a4
+fb
+aa
+f0
+ed
+75
+f0
+10
+a4
+ff
+e5
+f0
+4a
+fe
+ef
+4b
+ff
+a3
+e0
+fd
+ee
+ef
+4d
+ff
+90
+1c
+16
+ee
+f0
+a3
+ef
+f0
+ee
+70
+23
+ef
+24
+f5
+60
+15
+24
+d7
+60
+11
+24
+fc
+60
+04
+24
+31
+70
+12
+90
+4e
+d8
+e0
+14
+f0
+02
+17
+a2
+90
+4e
+d8
+e0
+04
+f0
+12
+17
+a2
+22
+90
+1c
+02
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+a3
+ed
+f0
+90
+4e
+bd
+e0
+ff
+64
+01
+60
+0a
+ef
+64
+02
+60
+05
+ef
+64
+07
+70
+2d
+ef
+b4
+01
+10
+90
+1c
+02
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+a3
+e0
+fd
+41
+01
+90
+4e
+bd
+e0
+b4
+07
+10
+90
+1c
+02
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+a3
+e0
+fd
+41
+45
+80
+fe
+22
+e4
+90
+1c
+0a
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+c2
+00
+90
+4e
+bd
+e0
+ff
+64
+01
+60
+07
+ef
+64
+07
+60
+02
+21
+e8
+90
+4e
+e3
+e0
+70
+0a
+90
+4e
+bd
+e0
+64
+01
+70
+02
+21
+e8
+31
+e9
+40
+02
+21
+e8
+90
+4e
+ed
+e0
+ff
+90
+4e
+d4
+e0
+b5
+07
+19
+90
+4e
+c7
+e0
+fe
+d3
+94
+00
+40
+05
+ee
+94
+03
+40
+0a
+90
+4e
+bd
+e0
+b4
+01
+0b
+ef
+60
+08
+d2
+00
+90
+49
+b7
+74
+01
+f0
+90
+4e
+ed
+e0
+90
+4e
+d4
+f0
+e4
+90
+4e
+fb
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+90
+4e
+bd
+e0
+b4
+01
+07
+12
+0b
+84
+72
+00
+92
+00
+90
+4e
+bd
+e0
+b4
+07
+20
+90
+45
+95
+e0
+b4
+01
+19
+12
+17
+3a
+12
+0b
+84
+72
+00
+92
+00
+90
+4e
+83
+e0
+ff
+90
+4e
+84
+e0
+6f
+60
+03
+e0
+04
+f0
+90
+4e
+d8
+e0
+60
+1f
+d2
+00
+90
+49
+b7
+74
+01
+f0
+90
+4e
+80
+f0
+90
+4e
+bd
+e0
+b4
+07
+0c
+90
+4e
+81
+74
+01
+f0
+90
+4e
+82
+74
+0a
+f0
+90
+4e
+c6
+e0
+c3
+94
+17
+40
+07
+e4
+90
+4e
+d4
+f0
+d2
+00
+20
+00
+02
+21
+e8
+90
+4e
+c6
+e0
+c3
+94
+18
+50
+75
+90
+49
+c2
+74
+01
+f0
+90
+4e
+bd
+e0
+ff
+64
+01
+60
+0a
+ef
+64
+02
+60
+05
+ef
+64
+07
+70
+5c
+12
+17
+5e
+90
+4e
+a6
+e0
+60
+49
+90
+4e
+21
+e0
+70
+33
+a3
+e0
+70
+2f
+a3
+e0
+70
+2b
+a3
+e0
+70
+27
+a3
+e0
+70
+23
+a3
+e0
+70
+1f
+a3
+e0
+70
+1b
+90
+1c
+32
+e0
+c3
+94
+03
+50
+2c
+7b
+01
+7a
+4e
+79
+21
+7d
+07
+11
+39
+90
+1c
+32
+e0
+04
+f0
+22
+22
+7b
+01
+7a
+4e
+79
+21
+7d
+07
+11
+39
+e4
+90
+1c
+32
+f0
+22
+7b
+01
+7a
+4e
+79
+21
+7d
+07
+11
+39
+22
+90
+47
+c6
+e0
+fe
+a3
+e0
+ff
+90
+47
+c4
+e0
+b5
+06
+07
+a3
+e0
+b5
+07
+02
+d3
+22
+c3
+22
+90
+1c
+2f
+ed
+f0
+90
+1a
+96
+74
+06
+f0
+90
+47
+c6
+e0
+fe
+a3
+e0
+ff
+90
+47
+c4
+e0
+b5
+06
+f1
+a3
+e0
+b5
+07
+ec
+90
+1c
+2f
+e0
+fd
+90
+1a
+97
+f0
+7e
+1a
+7f
+98
+90
+1b
+ec
+ed
+f0
+12
+14
+15
+7b
+01
+7a
+1a
+79
+96
+90
+1c
+2f
+e0
+24
+02
+fd
+02
+0e
+ca
+90
+1c
+31
+ed
+f0
+90
+1a
+96
+74
+05
+f0
+90
+47
+c6
+e0
+fe
+a3
+e0
+ff
+90
+47
+c4
+e0
+b5
+06
+f1
+a3
+e0
+b5
+07
+ec
+90
+1c
+31
+e0
+fd
+90
+1a
+97
+f0
+7e
+1a
+7f
+98
+90
+1b
+ec
+ed
+f0
+12
+14
+15
+7b
+01
+7a
+1a
+79
+96
+90
+1c
+31
+e0
+24
+02
+fd
+02
+0e
+ca
+e4
+90
+1c
+2a
+f0
+90
+4e
+c5
+e0
+04
+f0
+70
+06
+90
+4e
+c4
+e0
+04
+f0
+90
+4e
+bd
+e0
+14
+60
+60
+24
+fe
+60
+21
+24
+fd
+60
+77
+14
+60
+35
+14
+60
+02
+61
+42
+90
+1c
+2a
+74
+09
+f0
+90
+4e
+c4
+e0
+70
+04
+a3
+e0
+64
+10
+70
+7d
+80
+78
+22
+90
+1c
+2a
+74
+02
+f0
+90
+4e
+c4
+e0
+64
+01
+70
+04
+a3
+e0
+64
+68
+70
+66
+90
+41
+31
+04
+f0
+80
+5c
+90
+1c
+2a
+74
+09
+f0
+90
+4e
+c4
+e0
+64
+04
+70
+04
+a3
+e0
+64
+b0
+70
+4b
+7f
+11
+12
+0e
+a2
+90
+4e
+be
+74
+06
+f0
+22
+90
+1c
+2a
+74
+01
+f0
+d3
+90
+4e
+c5
+e0
+94
+b0
+90
+4e
+c4
+e0
+94
+04
+40
+2a
+90
+4e
+e3
+e0
+b4
+01
+23
+80
+1e
+22
+90
+1c
+2a
+74
+02
+f0
+31
+e9
+50
+16
+c3
+90
+4e
+c5
+e0
+94
+03
+90
+4e
+c4
+e0
+94
+00
+40
+07
+80
+02
+22
+22
+12
+16
+ea
+22
+7b
+01
+7a
+4e
+79
+21
+7d
+20
+7c
+00
+71
+66
+7b
+01
+7a
+4e
+79
+bb
+7d
+5a
+7c
+00
+71
+66
+90
+4f
+13
+74
+ff
+f0
+a3
+74
+5a
+f0
+22
+90
+1c
+19
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+ed
+1d
+ae
+04
+70
+01
+1c
+4e
+60
+16
+90
+1c
+19
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+02
+04
+a9
+f0
+fa
+e4
+12
+01
+3f
+80
+e0
+22
+90
+4e
+dd
+e0
+70
+06
+a3
+04
+f0
+e4
+a3
+f0
+90
+4e
+dd
+e0
+60
+3a
+90
+4e
+df
+e0
+04
+f0
+e0
+54
+07
+64
+05
+70
+6e
+90
+4e
+c7
+74
+0a
+f0
+90
+4e
+de
+e0
+60
+0d
+c2
+02
+7f
+08
+12
+0f
+86
+e4
+90
+4e
+de
+f0
+22
+d2
+02
+7f
+08
+12
+0f
+86
+90
+4e
+de
+74
+01
+f0
+90
+4e
+dd
+e0
+14
+f0
+22
+90
+4e
+bd
+e0
+b4
+03
+15
+90
+4e
+c7
+74
+45
+f0
+90
+4e
+c9
+e0
+54
+07
+64
+04
+70
+2a
+7f
+08
+02
+0f
+6d
+90
+4e
+e2
+e0
+60
+18
+90
+4e
+c9
+e0
+54
+1f
+c3
+94
+05
+50
+0d
+90
+4e
+c7
+74
+0a
+f0
+c2
+02
+7f
+08
+02
+0f
+86
+d2
+02
+7f
+08
+12
+0f
+86
+22
+7b
+01
+7a
+1b
+79
+ab
+78
+30
+7c
+48
+7d
+01
+7e
+00
+7f
+12
+02
+00
+d3
+90
+82
+80
+74
+01
+f0
+22
+90
+1b
+d2
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+1b
+d8
+74
+ff
+f5
+f0
+12
+02
+04
+45
+f0
+60
+2a
+90
+1b
+d5
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+02
+04
+a9
+f0
+fa
+12
+00
+f9
+ff
+90
+1b
+d2
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+02
+04
+a9
+f0
+fa
+ef
+12
+01
+3f
+80
+c8
+22
+90
+1c
+1c
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+ed
+1d
+ae
+04
+70
+01
+1c
+4e
+60
+17
+90
+1c
+1c
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+02
+04
+a9
+f0
+fa
+74
+ff
+12
+01
+3f
+80
+df
+22
+90
+1b
+da
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+e4
+ff
+90
+1b
+e0
+e0
+fe
+ef
+c3
+9e
+50
+30
+90
+1b
+dd
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+8f
+82
+75
+83
+00
+12
+01
+12
+fe
+90
+1b
+da
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+8f
+82
+75
+83
+00
+12
+01
+12
+6e
+60
+03
+7f
+00
+22
+0f
+80
+c6
+7f
+01
+22
+7b
+01
+7a
+80
+79
+7c
+a2
+04
+92
+01
+02
+03
+c2
+ef
+54
+07
+fe
+ef
+13
+13
+13
+54
+03
+ff
+24
+a0
+f5
+82
+e4
+34
+00
+f5
+83
+c0
+83
+c0
+82
+e0
+fd
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+f4
+fc
+5d
+d0
+82
+d0
+83
+f0
+74
+a4
+2f
+f5
+82
+e4
+34
+00
+f5
+83
+e0
+5c
+f0
+22
+90
+1c
+0e
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+a3
+ed
+f0
+90
+48
+2c
+e0
+fe
+a3
+e0
+ff
+90
+1c
+11
+e0
+fd
+14
+f0
+ed
+60
+32
+0f
+ef
+ac
+06
+70
+01
+0e
+14
+f5
+82
+8c
+83
+e0
+fd
+90
+1c
+0e
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+02
+04
+a9
+f0
+fa
+ed
+12
+01
+3f
+ad
+07
+ac
+06
+bc
+48
+cd
+bd
+2c
+ca
+7e
+47
+7f
+c8
+80
+c4
+90
+48
+2c
+ee
+f0
+a3
+ef
+f0
+22
+7a
+1a
+79
+00
+90
+1c
+22
+74
+01
+f0
+a3
+74
+1a
+f0
+a3
+74
+00
+f0
+90
+48
+2e
+e0
+fe
+a3
+e0
+ff
+90
+48
+2c
+e0
+6e
+70
+03
+a3
+e0
+6f
+70
+02
+e1
+4f
+7b
+01
+7a
+1a
+79
+00
+7d
+03
+b1
+3d
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+b4
+02
+2b
+90
+1c
+23
+e4
+75
+f0
+02
+12
+01
+ee
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+ff
+90
+48
+30
+e0
+a3
+e0
+fa
+a3
+e0
+f5
+82
+8a
+83
+12
+02
+44
+e1
+4f
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+64
+04
+70
+5b
+90
+1c
+23
+75
+f0
+01
+12
+01
+ee
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+14
+fd
+7b
+01
+7a
+1a
+79
+03
+b1
+3d
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+c0
+02
+c0
+01
+90
+1c
+22
+e0
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+fd
+7c
+00
+90
+48
+33
+e0
+a3
+e0
+fa
+a3
+e0
+f5
+82
+8a
+83
+d0
+01
+d0
+02
+12
+02
+44
+e1
+4f
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+64
+05
+70
+5b
+90
+1c
+23
+75
+f0
+01
+12
+01
+ee
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+14
+fd
+7b
+01
+7a
+1a
+79
+03
+b1
+3d
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+c0
+02
+c0
+01
+90
+1c
+22
+e0
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+fd
+7c
+00
+90
+48
+3c
+e0
+a3
+e0
+fa
+a3
+e0
+f5
+82
+8a
+83
+d0
+01
+d0
+02
+12
+02
+44
+80
+6f
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+64
+03
+70
+5b
+90
+1c
+23
+75
+f0
+01
+12
+01
+ee
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+14
+fd
+7b
+01
+7a
+1a
+79
+03
+b1
+3d
+90
+1c
+22
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+c0
+02
+c0
+01
+90
+1c
+22
+e0
+a3
+e0
+fa
+a3
+e0
+f9
+12
+00
+f9
+fd
+7c
+00
+90
+48
+3f
+e0
+a3
+e0
+fa
+a3
+e0
+f5
+82
+8a
+83
+d0
+01
+d0
+02
+12
+02
+44
+80
+02
+80
+fe
+90
+48
+98
+e0
+fe
+a3
+e0
+ff
+90
+48
+9a
+e0
+6e
+70
+03
+a3
+e0
+6f
+60
+21
+90
+48
+36
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+4a
+60
+36
+12
+02
+40
+90
+48
+9b
+e0
+04
+f0
+70
+06
+90
+48
+9a
+e0
+04
+f0
+80
+cb
+90
+48
+9c
+e0
+ff
+a3
+e0
+6f
+60
+19
+90
+48
+39
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+4a
+60
+0b
+12
+02
+40
+90
+48
+9d
+e0
+04
+f0
+80
+dd
+22
+90
+1c
+2e
+ed
+f0
+90
+1a
+96
+74
+03
+f0
+90
+1c
+2e
+e0
+60
+39
+90
+47
+c6
+e0
+fe
+a3
+e0
+ff
+90
+47
+c4
+e0
+b5
+06
+f1
+a3
+e0
+b5
+07
+ec
+90
+1c
+2e
+e0
+fd
+90
+1a
+97
+f0
+7e
+1a
+7f
+98
+90
+1b
+ec
+ed
+f0
+12
+14
+15
+7b
+01
+7a
+1a
+79
+96
+90
+1c
+2e
+e0
+24
+02
+fd
+12
+0e
+ca
+22
+90
+03
+f0
+e0
+ff
+22
+90
+1c
+30
+ed
+f0
+90
+1a
+96
+74
+04
+f0
+90
+47
+c6
+e0
+fe
+a3
+e0
+ff
+90
+47
+c4
+e0
+b5
+06
+f1
+a3
+e0
+b5
+07
+ec
+90
+1c
+30
+e0
+fd
+90
+1a
+97
+f0
+7e
+1a
+7f
+98
+90
+1b
+ec
+ed
+f0
+12
+14
+15
+7b
+01
+7a
+1a
+79
+96
+90
+1c
+30
+e0
+24
+02
+fd
+02
+0e
+ca
+d3
+ef
+94
+00
+ee
+64
+80
+94
+80
+50
+07
+c3
+e4
+9f
+ff
+e4
+9e
+fe
+22
+90
+4e
+fb
+e0
+fe
+a3
+e0
+ff
+d3
+94
+06
+ee
+64
+80
+94
+80
+50
+26
+c3
+ef
+94
+fa
+ee
+64
+80
+94
+7f
+40
+1b
+a3
+e0
+fe
+a3
+e0
+ff
+d3
+94
+06
+ee
+64
+80
+94
+80
+50
+0b
+c3
+ef
+94
+fa
+ee
+64
+80
+94
+7f
+50
+06
+90
+4e
+ff
+74
+01
+f0
+90
+4e
+fb
+e0
+fe
+a3
+e0
+ff
+11
+3d
+c3
+ef
+94
+03
+ee
+94
+00
+50
+14
+a3
+e0
+fe
+a3
+e0
+ff
+11
+3d
+c3
+ef
+94
+03
+ee
+94
+00
+50
+03
+e4
+a3
+f0
+90
+4e
+ff
+e0
+64
+01
+60
+02
+21
+3e
+90
+4e
+f7
+e0
+fe
+a3
+e0
+ff
+c3
+90
+4e
+f4
+e0
+9f
+ff
+90
+4e
+f3
+e0
+9e
+fe
+90
+4e
+fc
+e0
+2f
+ff
+90
+4e
+fb
+e0
+3e
+fe
+90
+4e
+f3
+f0
+a3
+ef
+f0
+7c
+00
+7d
+02
+12
+01
+b8
+90
+4e
+f7
+ee
+f0
+a3
+ef
+f0
+90
+4e
+fb
+ee
+f0
+a3
+ef
+f0
+90
+4e
+f9
+e0
+fe
+a3
+e0
+ff
+c3
+90
+4e
+f6
+e0
+9f
+ff
+90
+4e
+f5
+e0
+9e
+fe
+90
+4e
+fe
+e0
+2f
+ff
+90
+4e
+fd
+e0
+3e
+fe
+90
+4e
+f5
+f0
+a3
+ef
+f0
+7c
+00
+7d
+02
+12
+01
+b8
+90
+4e
+f9
+ee
+f0
+a3
+ef
+f0
+90
+4e
+fd
+ee
+f0
+a3
+ef
+f0
+22
+e4
+90
+4e
+f3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+22
+e4
+90
+4e
+f3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+90
+4e
+ff
+f0
+90
+4e
+fb
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+22
Index: Standard_mouse/c51/output/geneep.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: Standard_mouse/c51/output/geneep.exe
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/geneep.exe	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/geneep.exe	(working copy)

Property changes on: Standard_mouse/c51/output/geneep.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Standard_mouse/c51/output/otp.dat
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/otp.dat	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/otp.dat	(working copy)
@@ -0,0 +1,12 @@
+00
+02
+aa
+55
+00
+00
+aa
+55
+00
+00
+82
+78
Index: Standard_mouse/c51/output/ramcode.rom
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/ramcode.rom	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/ramcode.rom	(working copy)
@@ -0,0 +1,1729 @@
+c512800f
+c0000024
+c001802f
+c0430035
+c045003f
+c0458061
+c053806d
+c0540074
+c0548088
+c056009b
+c05a0349
+c05a80b4
+c05b00bb
+c05b80dd
+20203b34
+c0028117
+c00b011c
+c00d8120
+c0118123
+c0178147
+c018815c
+c019016e
+c0198181
+c01c8192
+c01e019f
+c01e81b2
+c01f01b8
+c01f81d1
+c02101ef
+c02681f4
+c04a8225
+c079822c
+c07b8238
+c07c026f
+c07c8275
+20203b34
+20800000
+2435b004
+6800c595
+243a002d
+6800ce78
+203a3004
+704e7f00
+c5933004
+2435b004
+70828003
+20203004
+2040027f
+2040043d
+204002bd
+6800ce78
+243a0383
+2020301b
+2030b9a3
+708955d4
+20000004
+708955d2
+20000004
+708955d1
+20000004
+6800c280
+c00a39ae
+2020399c
+60088017
+1840a200
+20403a13
+58000500
+20403b35
+70890601
+7089003c
+708901e0
+70896d12
+2000000a
+70890201
+7089023d
+2000000a
+708903b7
+2000000a
+7089027f
+6800c280
+c00a005e
+c2808058
+c2810058
+70894c5b
+70894d96
+70894e2c
+70894f46
+2020005c
+70894cfb
+70894def
+70894eec
+70894f5e
+6800c280
+202039dc
+708956c2
+708955d0
+20600000
+20403cd2
+20403a5f
+70804206
+68108968
+79207e07
+60108968
+793ffe07
+60108968
+79207e07
+60108968
+70804205
+20203a0c
+20403c2b
+6800ce45
+207a0000
+704e4500
+1c427e00
+6002489e
+20600000
+c6130000
+20403be2
+6801c20f
+207a0000
+68014042
+d840ffff
+98467c00
+20628000
+6800c131
+207a0000
+20404816
+247a0000
+20403d0e
+247a0000
+20403a7b
+6800c6e2
+203a3c5e
+6800c639
+207a0000
+20203c5e
+6800c595
+203a0095
+6800809f
+243a0095
+6800ce83
+6808ce84
+98467c00
+24628000
+6800ce81
+247a0000
+58000000
+600400a0
+20203c6a
+204000a0
+24740000
+68008b2b
+247a0000
+7049c100
+20203c6a
+204000a0
+24740000
+68008b2b
+247a0000
+20203c8c
+204000ab
+24740000
+204000a8
+24740000
+700b2b01
+700b2a01
+204000b0
+202000ab
+6801482c
+6809482e
+202000ad
+680147c4
+680947c6
+98467c00
+2022e4c0
+202031d4
+68008b2a
+2000000a
+c08000b0
+20600000
+70001627
+70015000
+70017e00
+70017f00
+58000000
+600288d2
+20600000
+da2046f0
+20407f95
+207a0000
+1fe22600
+204000c1
+20203d9b
+c10c0000
+c00a00c6
+c00a80d0
+c01480db
+20203d73
+704e8300
+70421200
+704ebb00
+704e5114
+20403e61
+20403e59
+20403e7f
+20403e20
+704eb901
+20203dc2
+704ea400
+20400304
+7044b200
+70421200
+704ebb00
+704e5100
+70456a00
+68094e4e
+600944f8
+204052a0
+20203dc6
+20400105
+20207e3b
+6008824e
+6800c89c
+1fe0fe01
+6000c89c
+6800824e
+207a0000
+1fe0ffff
+6000824e
+20400108
+204000eb
+20400111
+204000f7
+204000fe
+202000e1
+6800cebb
+207a0000
+6800c212
+2fe1fe20
+244080f5
+6800c131
+205a00f3
+20600000
+70413101
+20600000
+70421220
+20600000
+6800c9ba
+207a0000
+704e8000
+1fe0ffff
+6000c9ba
+247a0000
+20600000
+6800ce82
+207a0000
+1fe0ffff
+6000ce82
+247a0000
+704e8100
+20600000
+20403e7f
+7009bd12
+20207d90
+6800ce51
+207a0000
+1fe0ffff
+6000ce51
+247a0000
+70421220
+70413101
+704ebb01
+20600000
+6800ce52
+207a0000
+1fe0ffff
+6000ce52
+247a0000
+20203e6d
+20404968
+20404b51
+20404bd8
+20400616
+20204945
+20403a50
+1fe22200
+20400654
+20204a3d
+68024e48
+60024596
+20204a8c
+70413101
+6801037c
+68090382
+98467e00
+600109be
+68008362
+793ffe05
+793ffe03
+60008362
+68020366
+68090364
+600909c6
+98462200
+6800c45b
+6000838d
+e8c90000
+e8c10000
+1febfe00
+60010364
+184b8400
+9840fe00
+e8ca0000
+600a038e
+9a20fe00
+1fe22800
+68010364
+680909c6
+98467e00
+680909be
+984ffe00
+9a80fe00
+60020366
+20405199
+68010390
+60014561
+20600000
+68008379
+c2828158
+20400608
+704e6200
+6800ce20
+243a0152
+6800cea5
+c0008156
+68008303
+203a4bde
+20204f87
+6800ce20
+1fe0ffff
+6000ce20
+20204f87
+704e2003
+20204bde
+6800ce62
+1fe0fe01
+6000ce62
+2020060c
+6800c467
+c0030160
+c0010167
+20204bfb
+6800ce53
+c0008164
+20403e6d
+20204c86
+20400105
+704e5203
+20204c90
+58000013
+e0a08000
+20404c58
+5800000a
+60010390
+60014561
+20600000
+6800c46b
+c0010175
+c003017c
+c0038173
+20204c18
+704ea500
+20204d17
+59000302
+6001c4dc
+58000001
+e0a08000
+58010010
+e0a18000
+20204ccd
+7009bd29
+20407d86
+7009bd47
+20404bd6
+20204d01
+6800c46b
+c00d8185
+c00e8185
+20204c2b
+68094e4e
+6009446c
+6800ce86
+1fe08401
+18410403
+6008ce86
+1feffe07
+d8c04e87
+98c08c00
+e8c38000
+6003c46e
+d840000e
+20204f89
+6008c466
+28200602
+24208197
+1840fffc
+60014467
+68088379
+2040019a
+20204f92
+6800cea5
+c000819d
+20204bd0
+58000000
+20600000
+1a627e00
+c00001a5
+c00101a8
+c00181ac
+c00501b0
+20204fb9
+70413100
+704e513c
+2020501f
+20405033
+58000000
+60044544
+20600000
+20405039
+6800c56a
+c1010000
+20206418
+7009bd2b
+20204bd6
+e8c08000
+c00081b5
+20204ffe
+704ea501
+704e2003
+20205069
+e8c18000
+6001839a
+c00901bc
+20205011
+70413101
+204001c8
+6800839b
+1fe67c60
+202281cd
+704ea600
+20405125
+24628000
+6800cea6
+245a01cf
+7009bd13
+20204bd6
+68008303
+1fe0fff9
+1fe27200
+1f222400
+20205135
+704ea601
+202001c2
+7009bd29
+20207d86
+6800c3ff
+207a0000
+d8e00001
+20407ee2
+247a0000
+7854fc00
+78287c00
+20404b1e
+204049d4
+20404a8a
+243681e3
+68008003
+1fe0fe01
+60008003
+68008302
+1fe17e0f
+c00181ed
+c002d1af
+68008016
+c093d17d
+180a7e00
+d84001ff
+98417e00
+1fe0fefa
+1fe0ffff
+20000026
+243a01e9
+20205196
+20404ac5
+202001e3
+68024596
+d840ea60
+9840fe00
+60024596
+202051a9
+7855fc00
+203701f7
+24368206
+20403cb7
+68014161
+60010370
+68008302
+2fe00601
+2420bccb
+6800c465
+2fe00601
+2420bccb
+20404bd0
+243a3ccb
+6800ce62
+1fe67c01
+24213ccb
+20205297
+68094161
+68014e60
+98408400
+18430400
+68010370
+9840fe00
+60010370
+20203cc3
+2040021c
+df200006
+d8c04ead
+5800ffff
+20400220
+24628000
+6800cea8
+207a0000
+1fe0ffff
+6000cea8
+20403e28
+20628000
+704ea701
+20600000
+d840000c
+da204ead
+68014eab
+2020624a
+e8c90000
+98467c00
+24628000
+c2000220
+20600000
+68120078
+681a007c
+9841fe00
+1fe47e00
+9a217e00
+60120070
+20600000
+1a227e00
+207a0000
+18408560
+18408560
+793f841c
+600a4703
+1fe20400
+da2046f0
+20407fa6
+247a0000
+18427e00
+20207d7d
+20407d80
+da2046f8
+20407f95
+1fe20400
+20407d84
+18427e00
+207a0000
+c0118245
+c0120249
+c012824d
+c006824f
+c013825e
+20207db3
+6800c9c3
+6000c280
+704938ff
+2020069c
+6800c9c3
+6000c280
+793f8026
+2020497d
+70428014
+2020066d
+793f8026
+70413100
+180a7e00
+6000c53e
+5826100e
+6001c541
+704e5300
+68094e4e
+600944f8
+204052a0
+da400005
+20400268
+1a427e00
+e0c08000
+20207e07
+793f8026
+70413100
+704e5301
+68094e4e
+20404f6a
+1a220a00
+58000001
+e0a08000
+da400004
+2020025a
+da204401
+ea208000
+207a0000
+98c0a200
+e8c08000
+c1008000
+20200269
+204058c5
+243a7de5
+680089bd
+c584fde0
+c00f8295
+20207dd0
+700b2a03
+204000b0
+704e455a
+20403cfc
+68120138
+793ffe0f
+6012004c
+20403cf4
+d85fffff
+20203c11
+680a489e
+1c427e00
+98467e00
+d8400640
+9846fc00
+20407f53
+1807fe00
+207a0000
+1c420400
+600a489e
+68094898
+18508400
+9840fe00
+1ff0fe00
+60014898
+1ff0fe00
+1fe17e03
+c1800000
+204002b3
+24760000
+6800c2cf
+c2810296
+20600000
+68108078
+793ffe05
+60108078
+7089718f
+6800c2d0
+60108973
+204002a1
+68108078
+79207e05
+60108078
+20600000
+68108053
+79207e07
+60108053
+68108973
+1fe1fe30
+60108973
+7089067c
+708972aa
+20001388
+68190150
+68108053
+793ffe07
+60108053
+18508400
+600942d1
+20600000
+78367c00
+20600000
+78567c00
+20404bd0
+205a02b1
+6800c954
+245a02b1
+20600000
+704ea301
+204002bd
+704ea300
+20600000
+204000ab
+20740000
+1ff0fe00
+1fe20c00
+204002e3
+6000c897
+c00082ce
+c00302ff
+1fe20400
+18c22200
+6800c040
+c30002d8
+1a220c00
+c6848000
+18427e00
+c0028316
+20203b31
+204002e3
+204002e3
+600089bd
+204002d3
+20207d90
+204002e6
+18c20400
+18508400
+600947c4
+20600000
+1a220c00
+d8a000f5
+202002db
+204002e3
+1fe27200
+204002df
+202002d3
+204002e3
+e0a08000
+c20002df
+20600000
+204002e6
+e8c08000
+20600000
+580047c4
+98c67c00
+24628000
+d8c0472e
+20600000
+df200003
+d8c04894
+18c22200
+6801482e
+1ff0fe00
+1fe20a00
+1a220c00
+e8c08000
+e0a08000
+204002fa
+c20002f2
+18a27e00
+1ff0fe00
+6001482e
+20600000
+5800482c
+98a67c00
+24628000
+d8a047c8
+20600000
+c6938000
+204002e3
+1fe27200
+6000c970
+202002dd
+58000000
+6001ce85
+20600000
+c6130000
+6800c595
+207a0000
+204000ab
+20740000
+1ff0fe00
+1fe20c00
+204002e3
+6000c897
+18c22200
+c08282d8
+18c22400
+20404bd4
+247a0000
+2020031b
+18c22400
+6800cea3
+207a0000
+20404bd0
+247a0000
+68094e4e
+20404f6a
+c4000000
+6800c595
+c1000000
+6800ce83
+1fe0fe01
+6000ce83
+6800ce85
+1fe08401
+18410403
+6008ce85
+1feffe07
+d8a04e87
+98a08a00
+1a420c00
+204002e3
+1fe27200
+204002dd
+20400332
+20760000
+7009bd1b
+20204bd6
+78567c00
+6800cea4
+c1028000
+78367c00
+1fe0fe01
+6000cea4
+1fe67c01
+24610000
+70489640
+202002eb
+5800472e
+1ff0fe00
+600147c4
+600147c6
+580047c8
+1ff0fe00
+6001482c
+6001482e
+20600000
+68014ea9
+1fe0fe1c
+60014eab
+20600000
+2040524a
+700b2a00
+70016c06
+20403e7f
+580003c8
+60014296
+580002b9
+60014290
+580003c1
+6001428c
+2455833c
+20558389
+20403d3e
+6800ceba
+203a0362
+1fe0ffff
+6000ceba
+58007f80
+60014ea9
+20400345
+6800ce53
+243a0362
+6800ceb9
+243a0362
+2040020e
+6800ce45
+c02d039d
+2035839b
+6800c280
+6000c9c3
+20400605
+68014e41
+1ff0fe00
+60014e41
+68014e43
+1ff0fe00
+60014e43
+204003a8
+204003e2
+680409c6
+243a0376
+68014ad4
+1ff0fe00
+203a0376
+60014e43
+7048962f
+6800ce78
+243a037e
+20400293
+204002eb
+20400307
+70828003
+20600000
+2055bc29
+d9600d00
+34730200
+1c427e00
+6001ce7a
+6801470b
+c3858000
+c3830000
+20403d60
+204004f6
+20200383
+1ce27e00
+c5930393
+203a038e
+7049b9bb
+20600000
+7049b900
+6800c9b7
+207a0000
+7049b700
+2020038c
+203a0396
+7049c102
+20600000
+6800c9c2
+207a0000
+7049c200
+7049c101
+20600000
+7048963c
+20200377
+1ce27e00
+203a0277
+2040530d
+204042eb
+58000000
+60044040
+6001470b
+60014898
+6001489a
+7048963d
+20200377
+204062c4
+580007e2
+da2009c6
+d840000c
+2040630d
+204062c7
+680409c6
+207a0000
+6800c2cf
+c28103b3
+20600000
+680909c6
+680109cc
+18422400
+1fe22200
+98462600
+1a427e00
+9a667e00
+1ff0fe00
+60014e41
+1a6bfe00
+9a20fe00
+1ff0fe00
+60014e43
+20600000
+78347c00
+68120138
+79347e1a
+6012004c
+20403cf4
+70009f01
+20600000
+1a627e00
+1fe17ef0
+c1280000
+1a627e00
+6000c896
+202002eb
+70492700
+7049324e
+68024934
+60024950
+20200491
+6808c933
+204003d9
+18408401
+18410403
+6008c933
+20600000
+6800c950
+1fe17e03
+1fefa204
+58004939
+9a20fe00
+98408c00
+e8c08000
+6000c932
+20600000
+680209c6
+60024960
+247a0000
+68024140
+60024960
+20600000
+7049b001
+7049b200
+6800c929
+1fe17e07
+6000c929
+20600000
+6800c929
+79207e04
+6000c929
+6000c8e4
+20600000
+6800c929
+793ffe04
+6000c929
+20600000
+2040060c
+6800c9b4
+c00083fc
+c0010400
+20600000
+7049b202
+7049b300
+7049b000
+202003ea
+7049b100
+202003fd
+6801492e
+1fe0fe01
+6001492e
+c2850571
+6800c9b1
+c000840b
+7049b101
+6800c9b1
+c08083ea
+6800c9b5
+1fe0fe01
+6000c9b5
+c0020412
+204003d3
+70496e02
+20200532
+2040060c
+7049b500
+202003ea
+7049b202
+7049b001
+7049b100
+202003ea
+6800c9b4
+c0018416
+6800c929
+2fec0004
+202083e8
+6800c9b4
+c0008415
+c0010416
+20600000
+6800c938
+c1ff8000
+20400427
+2456042f
+20600000
+78567c00
+6800c9b0
+c1808000
+6800c9b2
+c1800000
+7049b401
+70496e04
+202002b1
+6800c9b2
+203a0437
+1fe0ffff
+6000c9b2
+7049b402
+204003d3
+70496e04
+20600000
+7049b403
+6800c9b1
+243a0409
+204003d3
+70496e02
+20600000
+c6930000
+79200027
+680a4949
+1c427e00
+98467c00
+24410456
+1fe22400
+68024949
+6808c94d
+98408400
+1a427e00
+98467c00
+24210454
+793ffe1c
+60024949
+20400459
+20400466
+203404c1
+20400422
+20400532
+6800c938
+1fe67cff
+20428616
+793f8027
+20600000
+20628000
+79207e1c
+20600000
+6800c964
+1fe0fe01
+6000c964
+c002045f
+c0028462
+20600000
+6800c94f
+6000c94d
+20600000
+70496400
+6800c94e
+6000c94d
+20600000
+6800c938
+c0ff8671
+204002bd
+20340478
+6800c897
+c08364c0
+6800ce80
+205a04dc
+6800ce80
+245a0474
+2040047d
+2040049e
+70492d01
+20600000
+704e7900
+704e7800
+7049ba0a
+20600000
+6800ce78
+243a047d
+6800c92d
+c000b1d4
+20600000
+6800c9b9
+6000c9b8
+6800c970
+1fe22200
+da404971
+70495400
+204003ea
+6000c990
+1a208401
+d8a04991
+1a227200
+1a420c00
+20407ecd
+da204990
+c6938000
+6008c928
+18427200
+d8a048c4
+1a220c00
+20207ecd
+da200000
+df200004
+d8c04950
+e8c08000
+9a20a200
+c2000494
+1a227e00
+600149bb
+6800c9bb
+6808c9bc
+9840fe00
+6000c9bd
+20600000
+6800c928
+1fe0fe02
+6000c92a
+6800c929
+6000c8e4
+6800c928
+1fe9fe00
+6808c927
+18410403
+18438400
+9841fe00
+6808c965
+9840fe00
+e0a08000
+6800c928
+98007200
+d8c048c4
+20207ecd
+70495401
+7049b100
+204003ea
+6000c990
+58000000
+6003c991
+68024960
+60024998
+d840000c
+da204990
+2040048b
+6800c929
+79207e03
+6000c929
+2040049e
+20400472
+20200450
+6800ce78
+203a04c5
+204004ef
+2020050e
+6800c954
+203a04b0
+6808c9b8
+18408401
+6008c9b8
+6800c9b9
+98467c00
+20610000
+7049b800
+204000a0
+24740000
+68008b2b
+247a0000
+6800c9ba
+247a0000
+704e8000
+20403be2
+6801c20f
+207a0000
+68044958
+20407f16
+600a41fb
+20203c11
+6800c2b8
+2fec0002
+202084e6
+6800ce79
+c1028000
+1fe0fe01
+6000ce79
+c1828000
+704e7801
+20600000
+6800ce79
+c10a0000
+1fe0fe01
+6000ce79
+c18a0000
+6800c2b8
+79207e02
+6000c2b8
+202004e4
+6800ce79
+207a0000
+1fe0ffff
+6000ce79
+247a0000
+704e7800
+20600000
+79200027
+204002bd
+203404fb
+6800c897
+c003050a
+6800ce7d
+c0008502
+c00104c1
+c0018500
+20600000
+704e7900
+704e7800
+204004dc
+704e7d00
+df200007
+1f227e00
+6000c970
+d8c04e21
+20407ecd
+78547c00
+2040046c
+20400422
+20400532
+20400616
+20403be2
+6801c20f
+207a0000
+6800c131
+207a0000
+6800ce80
+c0008517
+58000000
+600400a0
+20400527
+d9600d00
+34730200
+6809ce7a
+1c427e00
+98467e00
+1fe17eff
+d8400ea6
+984f8400
+68024e74
+98467e00
+20213c7f
+6800c218
+1fe0fe01
+600241fb
+20203c86
+58013c68
+60024e74
+6800ce7e
+1fe0fe01
+c082852d
+58000000
+6000ce7e
+c4000000
+580130b0
+60024e74
+20600000
+70493100
+d9600d00
+34730200
+2040054a
+6800c965
+c1008000
+242c0559
+24378559
+20400578
+20400608
+6800c927
+1fe0fe01
+6000c927
+6800c938
+c0ff8548
+20400419
+58000000
+6001492e
+6000c930
+6000c9b3
+70492d00
+20600000
+20400605
+2020068c
+7857fc00
+20400598
+6800c965
+c0008557
+18002a00
+68024950
+98001200
+68088017
+204039b9
+204039bf
+204005c2
+20578601
+20600000
+20400601
+2020053c
+6800c930
+1fe0fe01
+6000c930
+6800c938
+c0ff856d
+6808c931
+18408401
+6008c931
+6800c96e
+98467e00
+243a0533
+6800c9b4
+c0018402
+6800c9b3
+1fe0fe01
+6000c9b3
+c00103f7
+204003ee
+70496e01
+20200532
+6800c930
+c1ff8000
+70493000
+20200576
+58000000
+6001492e
+70413100
+704e7900
+704e7800
+7048963b
+202002eb
+2040057f
+6800c926
+207a0000
+98007200
+d8c048a4
+d8a04906
+20207ecd
+6800c8a3
+1fe97e00
+6000c926
+1fe0fe01
+d8c048a3
+98c08c00
+e8c18000
+6001c966
+6800c8a3
+1fe37e00
+1fe17e03
+6000c96c
+20600000
+7844fc00
+7843fc00
+58555555
+98001e00
+6800c932
+1fed8400
+79200401
+18431c00
+20600000
+204039b1
+6808c932
+202039c9
+20404976
+68024950
+98001200
+2040058c
+20400595
+79202a00
+782efc00
+78307c00
+7850fc00
+19317e00
+1fecfe00
+1ff1fe00
+08008628
+784efc00
+782dfc00
+7823fc00
+7824fc00
+6800c9bd
+08008608
+6800c92a
+98007200
+d8c048e4
+e8c08000
+08008608
+c20005ae
+78247c00
+08008618
+78447c00
+37d38200
+20000064
+784efc00
+784dfc00
+20600000
+20404976
+68024950
+98001200
+204039b1
+6808c932
+204039b9
+58000500
+20403b35
+204039bf
+2040058c
+7857fc00
+7826fc00
+7830fc00
+78507c00
+78287c00
+6801492b
+98003600
+37c18400
+242c0604
+7846fc00
+7825fc00
+7823fc00
+7824fc00
+09800008
+19897e00
+6000c9be
+20400491
+6808c9be
+98467c00
+24228601
+09800008
+19897e00
+6000c8a2
+6800c96f
+1fe67c02
+202285e1
+6800c8a2
+6808c929
+a8400e00
+24208601
+09800008
+19897e00
+e0a08000
+1fe97e00
+1fe1721f
+202285eb
+09800008
+19897e00
+e0a08000
+c20005e7
+18a22200
+09800008
+19897e00
+6000c9cf
+1a220a00
+09800018
+78287c00
+db600664
+1fef7e00
+1ff17e00
+e0a18000
+7845fc00
+20230601
+7837fc00
+68008017
+1fe0a200
+20403a13
+7846fc00
+204039b1
+6800c9cf
+1fe22200
+20200654
+784dfc00
+7845fc00
+202036c6
+20200601
+7049c401
+7049c500
+20600000
+6800c9c5
+1fe0fe01
+6000c9c5
+20600000
+6800c9c5
+1fe67c01
+24410614
+6800c9c5
+c1000000
+1fe0ffff
+6000c9c5
+20600000
+7049c502
+20600000
+da2049c6
+2040065d
+6008c9d0
+280ffe26
+20408624
+24408628
+98467c00
+24210641
+6800c9c5
+1fe67c01
+2421062c
+6800c9c5
+c0000641
+20600000
+58000082
+20600000
+58000077
+20600000
+58000080
+20600000
+58000075
+20600000
+6800c9c5
+c1a30000
+7049c500
+6808c9d0
+280ffe26
+20408626
+2440862a
+98467c00
+24610000
+6800c9c4
+c000064d
+1fe0ffff
+6000c9c4
+c000064d
+708955d0
+708956e0
+7089574c
+7089586c
+70895950
+70428001
+20600000
+6800c9c4
+c0010646
+1fe0fe01
+6000c9c4
+c000863a
+708955d0
+708956e0
+7089574c
+7089583c
+70895910
+70428004
+20600000
+708955d0
+708956c0
+7089574c
+7089586c
+70895950
+70428010
+20600000
+6808c9ce
+580049c6
+98408a00
+1a227e00
+e0a08000
+18408401
+18410407
+6008c9ce
+20600000
+d8400000
+df200008
+1a220c00
+e8c08000
+98408400
+c2000660
+18497e00
+1fe20400
+c6930000
+1fe6fc0a
+20407f53
+1807fe00
+1ff27e00
+18070400
+98418400
+20600000
+79200026
+204003ce
+70493801
+20600000
+6800c92d
+c000b1d4
+6800c938
+c0008678
+c001067b
+c001867e
+20203b31
+70493811
+704990aa
+20200680
+70493812
+70499055
+20200680
+70493813
+70499022
+6800c929
+1fe17e07
+6000c991
+68024960
+60024992
+70499600
+da204990
+d8400007
+2040048b
+2040049e
+20400472
+202031d4
+6800c938
+c17f8000
+c0088692
+c0090694
+c0098696
+20600000
+70493802
+20200542
+70493803
+20200542
+704938ff
+70489639
+204002eb
+68024908
+204003d1
+20200542
+793f8026
+204003d3
+68024950
+20400491
+6800c938
+c1ff8000
+204006b2
+58000000
+60014956
+200007d0
+6800c956
+c07f8576
+2040054a
+242c06bc
+243786bc
+70413101
+79200026
+58000000
+60014956
+7009bd3a
+20407d86
+20207e0d
+79200027
+704990ff
+6800c929
+6000c991
+68024960
+60024992
+d8400006
+da204990
+2040048b
+2020049e
+68014956
+1fe0fe01
+60014956
+204003d3
+202006a5
Index: Standard_mouse/c51/output/sched.rom
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/sched.rom	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/output/sched.rom	(working copy)
@@ -0,0 +1,939 @@
+4000:09
+4010:40
+4011:0c
+4014:80
+4015:13
+4016:f0
+4020:20
+4022:40
+4023:08
+4024:08
+4025:80
+4026:0e
+4027:f2
+4028:04
+4029:20
+4032:20
+403e:88
+403f:03
+
+##49   #mem_patch00	#49 enable HID
+##02   #mem_patch01	#02 enable HID
+##00   #mem_patch02
+##00   #mem_patch03
+##60   #mem_patch04	#60 enable HID
+##02   #mem_patch05	#02 enable HID
+##00   #mem_patch06
+##80   #mem_patch07	#80 enable HID
+##00   #mem_patch08
+##10   #mem_patch09	#10 enable HID
+##01   #mem_patch0A	#01 enable HID
+##00   #mem_patch0B
+##00   #mem_patch0C
+##00   #mem_patch0D
+##00   #mem_patch0E
+##00   #mem_patch0F
+##40   #mem_patch10
+##0c   #mem_patch11
+##00   #mem_patch12
+##00   #mem_patch13
+##80   #mem_patch14
+##13   #mem_patch15
+##f0   #mem_patch16
+##00   #mem_patch17
+##00   #mem_patch18
+##01   #mem_patch19	#01 enable HID
+##00   #mem_patch1A
+##00   #mem_patch1B
+##00   #mem_patch1C
+##00   #mem_patch1D
+##00   #mem_patch1E
+##00   #mem_patch1F
+##20   #mem_patch20
+##00   #mem_patch21
+##40   #mem_patch22
+##08   #mem_patch23
+##08   #mem_patch24
+##80   #mem_patch25
+##0e   #mem_patch26
+##d0   #mem_patch27
+##04   #mem_patch28
+##20   #mem_patch29
+##60   #mem_patch2A	#60 enable HID
+##41   #mem_patch2B	#41 enable HID
+##00   #mem_patch2C
+##00   #mem_patch2D
+##00   #mem_patch2E
+##00   #mem_patch2F
+##00   #mem_patch30
+##00   #mem_patch31
+##20   #mem_patch32
+##00   #mem_patch33
+##00   #mem_patch34
+##40   #mem_patch35	#40 enable HID
+##00   #mem_patch36
+##00   #mem_patch37
+##00   #mem_patch38
+##01   #mem_patch39	#01 enable HID
+##00   #mem_patch3A
+##00   #mem_patch3B
+##00   #mem_patch3C
+##00   #mem_patch3D
+##88   #mem_patch3E
+##03   #mem_patch3F
+
+
+#mem_class: 80 25 00
+#mem_lap:ab ab 66 63 5d 6c
+#mem_local_name_length:
+#'bt mouse
+#mem_sniff_param_interval:0c 00
+#mem_sniff_param_attempt:01
+#mem_sniff_param_timeout:01
+#mem_unsniff2sniff_timer:0a
+46e2:00
+#mem_sp_iocap_local:03 00 04
+470d:01
+
+#mem_eir_enable:01
+
+#mem_all_uuid_16bits:
+#06
+#03#Type: Complete list of 16-bit UUIDs
+#1100 0001 0210 2411  0012  0100
+
+4625:00
+
+#mouse uuid
+#mem_device_uuid_list:
+#04 0011 0100 1002 1124
+#00 01 00 00
+#36 01 61
+#09
+#00
+#00
+#0a
+#00
+#01
+#00
+#09
+#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#YiChip
+#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#YiChip
+#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
+#0c
+#80
+#09
+#02
+#0d
+#28
+#00
+#09
+#02
+#0e
+#28
+#01
+#
+#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#SpecificationID
+#09 01 03#DeviceID Spec Version:1.3
+#
+#09 02 01# VendorID
+#09 0a 5c#Unknown See http://www.bluetooth.org/assigned-number.htm
+#
+#09 02 02#ProductID
+#09 00 01#0x0001
+#
+#09 02 03#Version
+#09 01 29#Product Version:1.2.9
+#09
+#02
+#04
+#28
+#01
+#09
+#02
+#05
+#09
+#00
+#02
+#00
+#00
+#
+#01 00 01
+#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
+
+#mem_ui_uuid_table:mem_device_uuid_list
+#Auto reconnection after power on
+4132:42
+#mem_ptt:0
+#mem_features:
+#ff
+#ff
+#8f
+#f8	#fe--EDR  F8--BR
+#9b	#AFHclose 83
+#9d
+#51
+#82
+
+#bluetootch param init
+08d4:00
+009f:00
+08d5:00
+0016:27
+4715:ff
+470e:ff
+
+#2=mouse 4=dongle 6=ukey 7=ir
+4131:01
+4212:20
+4213:03
+41f6:08
+41f4:00 00
+4133:00
+4894:02 01
+
+42cf:04
+42d0:30
+4e41:9f 3e
+4e43:cd 4d
+
+
+4521:00
+4529:07 
+452a:00
+4596:50
+44f8:1a
+453e:ab b9 12 0e 10 26			#bluetooth MAC address
+4440:			#bluetooth name
+'BLE Mouse
+
+454c:17
+4520:00
+4522:01
+4523:00 00 00 00 00 00
+43ff:00
+
+4400:1f
+4401:
+#appearance
+03 19 c2 03
+
+#uuid
+03 03 12 18
+
+#flag 
+02 01 05
+
+#name
+'\09BLE Mouse
+
+
+4420:1f
+4421:
+#name
+'\09BLE Mouse
+
+
+#attribute list: handle 2bytes, uuid 2bytes, length 1bytes, attribute Nbytes
+4c40:
+
+#Primary service GAP ------
+01 00 02 00 28 02 00 18 
+
+#Device name
+02 00 02 03 28 01 0a
+03 00 02 00 2a
+'BLE Mouse
+
+#Appearance
+04 00 02 03 28 01 02
+05 00 02 01 2a 02 c2 03 #3c2=hid mouse
+
+#Peripheral Preferred Connection Parameters
+06 00 02 03 28 01 02
+07 00 02 04 2a 08 06 00 06 00 64 00 2c 01 # interval 6ms, latency 100, timeout 300
+
+#Primary service GATT ------
+08 00 02 00 28 02 01 18
+#Service changed
+09 00 02 03 28 01 20
+0a 00 02 05 2a 00
+#Client Characteristic Configuration
+0b 00 02 02 29 02 00 00
+#Primary service device information ------
+0c 00 02 00 28 02 0a 18
+#Manufacturer Name
+0d 00 02 03 28 01 02
+0e 00 02 29 2a 06 59 69 43 68 69 70
+#PNP id
+0f 00 02 03 28 01 02
+10 00 02 50 2a 07 02 35 12 22 aa 01 00
+#Primary service battery ------
+11 00 02 00 28 02 0f 18
+#Battery level
+12 00 02 03 28 01 02
+13 00 02 19 2a 01 33
+#Client Characteristic
+14 00 02 02 29 02 00 00
+
+#Primary service hid ------
+15 00 02 00 28 02 12 18
+
+#Protocol mode
+16 00 02 03 28 01 06
+17 00 02 4e 2a 01 01
+
+#Hid report
+18 00 02 03 28 01 1a
+19 00 02 4d 2a 07 00 00 00 00 00 00 00
+
+#Client Characteristic
+1a 00 02 02 29 02 00 00
+
+#Report reference
+1b 00 02 08 29 02 01 01 # report id=1, type=1 input
+
+#Report map
+1c 00 02 03 28 01 0a
+1d 00 02 4b 2a 45 # length 72 bytes
+
+05 01 # Usage Page(Generic Desktop)
+09 02 # Usage(Mouse)
+a1 01 # Collection(Application)
+85 01 # Report ID(1)
+09 01 # Usage(Pointer)
+a1 00 # Collection(Physical)
+05 09 # Usage Page(Buttons)
+19 01 # Usage Minimum(1)
+29 08 # Usage Maximum(8)
+15 00 # Logical Minimum(0).
+25 01 # Logical Maximum(1)
+75 01 # Report Size(1)
+95 08 # Report Count(8)
+81 02 # Input(Data Variable Absolute)
+
+05 01 # Usage Page(Generic Desktop)
+09 30 # Usage(X)
+09 31 # Usage(Y)
+16 01 f8 # Logical Minimum(-2047)
+26 ff 07 # Logical Maximum(2047)
+75 10 # Report Size(16)
+95 02 # Report Count(2)
+81 06 # Input(Data Variable Relative)
+
+09 38 # Usage(Wheel)
+15 81 # Logical Minimum(-127)
+25 7f # Logical Maximum(127)
+75 08 # Report Size(8)
+95 01 # Report Count(1)
+81 06 # Input(Data Variable Relative)
+05 0c # Usage Page(Consumer)
+0a 38 02 # Usage(AC Pan)
+95 01 # Report Count(1)
+81 06 # Input(Data Variable Relative)
+c0 # End Collection
+c0 # End Collection
+
+#Boot mouse input report
+1e 00 02 03 28 01 1a
+1f 00 02 33 2a 08 00 00 00 00 00 00 00 00
+
+#Client Characteristic
+20 00 02 02 29 02 01 00
+
+#Hid information
+21 00 02 03 28 01 02
+22 00 02 4a 2a 04 01 01 00 03
+
+#Hid control point
+23 00 02 03 28 01 04
+24 00 02 4c 2a 00
+
+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
+
+#End of Attribute list
+00 00
+
+4637:40 4c
+
+4e48:50
+
+458d:
+07 00 #min interval
+07 00 #max interval
+05 00 #latency
+2c 01 #timeout
+
+4e20:00
+#mem_le_att_report1:13 00
+4e4e:19 00
+458b:22 00
+456c:01
+45a8:01
+
+4280:02#3dbm
+
+4ea8:01
+4eba:01
+
+#24g init
+496f:01#tx
+4929:01	#mouse 1,kb 2
+496e:04#max tx retry
+4965:00#with ack
+492b:c0 12	#400us
+494d:19
+494e:19
+494f:1c
+4939:00 13 2c 42
+493d:06 15 36 48
+4941:0f 1a 3a 4c
+4945:11 23 31 4d
+4938:ff
+4934:20 15 10 05
+4990:00 00 00 00 00 00 00 00 00 00
+4958:00 48 60 00 00 00 00 00#10 min
+
+
+4215:8f 1b ce
+4219:0a 0b ef 0f
+41f7:00
+00a0:00 00 00 00 00 00 00 00
+
+415d:02
+415e:24
+414d:12 00
+414f:00 02
+4151:12 00
+4153:00 02
+
+415b:20 00
+4157:20 00
+4159:00 20
+415f:80 04
+4161:00 08
+4e60:00 40
+
+45a9: 09 59 00 B0 00    #04 0a 00 e9 12
+
+42a8:30 6f
+42b6:20
+
+4281:01
+
+4e69:
+# tx power
+55 d0
+56 c0
+57 4c
+58 3c
+59 50
+ff
+4163:69 4e
Index: Standard_mouse/c51/patch/geneep.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: Standard_mouse/c51/patch/geneep.exe
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/patch/geneep.exe	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/patch/geneep.exe	(working copy)

Property changes on: Standard_mouse/c51/patch/geneep.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Standard_mouse/c51/patch/memmap.format
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/patch/memmap.format	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/patch/memmap.format	(working copy)
@@ -0,0 +1,1494 @@
+0x0000 mem_le_adv_transmit
+0x0001 mem_le_adv_waitcnt
+0x0002 mem_le_adv_rcv
+0x0003 mem_le_req_rcv
+0x0004 mem_le_scanrsp_rcv
+0x0005 mem_le_conn_rcv
+0x0006 mem_inquiryscan_waitcnt
+0x0007 mem_inquiryscan_rcvcnt
+0x0008 mem_pagescan_waitcnt
+0x0009 mem_pagescan_rcvcnt
+0x000a mem_pagescan_rcvfhscnt
+0x000b mem_slave_rcvcnt
+0x000c mem_page_transmit
+0x000d mem_page_rcv
+0x000e mem_page_rcv_fhs
+0x000f mem_master_rcvcnt
+0x0010 mem_fhs_wait_counter
+0x0011 mem_newconnto_counter
+0x0012 mem_inquiry_transmit
+0x0013 mem_inquiry_rcv
+0x0014 mem_fw_ver
+0x0015 mem_current_context
+0x0016 mem_le_ch_mapped
+0x0017 mem_last_freq
+0x0018 mem_rssi
+0x0019 mem_rx_type
+0x001a mem_rx_hec_err
+0x001c mem_rx_crc_err
+0x001e mem_context_ptr
+0x0020 mem_display
+0x0028 mem_bcd
+0x0030 mem_state
+0x0031 mem_mode
+0x0032 mem_tsniff
+0x0034 mem_sniff_anchor
+0x0038 mem_clk_offset
+0x003e mem_rx_window
+0x0040 mem_plap
+0x0043 mem_puap
+0x0044 mem_pnap
+0x0046 mem_conn_handle
+0x0047 mem_arq
+0x0048 mem_lmp_to_send
+0x0049 mem_lmi_opcode
+0x004a mem_lmo_reason
+0x004b mem_op
+0x004c mem_state_map
+0x004d mem_supervision_timer
+0x0051 mem_supervision_to
+0x0053 mem_name_offset
+0x0054 mem_key_size
+0x0055 mem_conn_sm
+0x0056 mem_aco
+0x0062 mem_kc
+0x0072 mem_conn_timer
+0x0073 mem_sniff_attempt
+0x0074 mem_sniff_timeout
+0x0075 mem_dsniff
+0x0077 mem_amaddr
+0x0078 mem_lmo_opcode1
+0x0079 mem_lmi_opcode1
+0x007a mem_lmo_reason1
+0x007b mem_lmo_tid1
+0x007c mem_lmo_opcode2
+0x007d mem_lmi_opcode2
+0x007e mem_lmo_reason2
+0x007f mem_lmo_tid2
+0x0080 mem_hci_version
+0x0083 mem_acl_pktlen
+0x0085 mem_sco_pktlen
+0x0086 mem_acl_pktcnt
+0x0088 mem_sco_pktcnt
+0x008a mem_current_sniff_attempt
+0x008b mem_current_sniff_timeout
+0x008c mem_nfreq_index_inq
+0x008d mem_nfreq_index_page
+0x008e mem_ninqy_index
+0x008f mem_fhs_misc
+0x0090 mem_subsniff_instant
+0x0094 mem_subsniff_rate
+0x0095 mem_subsniff_tcmax
+0x0097 mem_subsniff_tsniff
+0x0098 mem_lpm_adjust
+0x0099 mem_sync_clke
+0x009f mem_lpm_current_mult
+0x00a0 mem_gpio_wakeup_low
+0x00a4 mem_gpio_wakeup_high
+0x00a8 mem_air_mode
+0x00a9 mem_sco_asso_handle
+0x00aa mem_sco_handle
+0x00ac mem_esco_desco
+0x00ad mem_esco_type
+0x00ae mem_neogotiation_state
+0x00af mem_saved_amaddr
+0x00b0 mem_esco_arq
+0x00b1 mem_esco_saved_arq
+0x00b2 mem_sco_obuf
+0x00d0 mem_sco_ibuf
+0x00ee mem_sco_poll
+0x00ef mem_npage_index
+0x00f0 mem_page_mode
+0x00f1 mem_page_clk
+0x00f5 mem_tst_pktcnt_sync
+0x00f7 mem_tst_pktcnt_hec
+0x00f9 mem_tst_pktcnt_crc
+0x00fb mem_tst_pktcnt_dmh
+0x00fd mem_tmp_buffer_head
+0x0100 mem_tmp_buffer
+0x0150 mem_tester_emulate
+0x0151 mem_temp_payload
+0x0151 test_mode_scenario
+0x0152 test_mode_hopping_mode
+0x0153 test_mode_tx_freq
+0x0154 test_mode_rx_freq
+0x0155 test_mode_power_mode
+0x0156 test_mode_poll_period
+0x0157 test_mode_packet_type
+0x0158 test_mode_data_length
+0x015a mem_test_mode_old_debug_config
+0x015b mem_tester_cnt
+0x015c mem_temp_am_addr
+0x015d mem_temp_arq
+0x015e mem_len
+0x0160 mem_clkn_bt
+0x0164 mem_clke_bt
+0x0168 mem_dpll_clkn
+0x016c mem_connection_options
+0x016d mem_nameres_cnt
+0x016e mem_txptr
+0x0170 mem_slot_offset
+0x0172 extm_fhs_misc
+0x0173 extm_newconn_am_addr
+0x0174 extm_class
+0x0177 extm_lap
+0x017a extm_uap
+0x017b extm_nap
+0x017e mem_debug_config
+0x017f mem_lch_code
+0x0180 mem_fhs_am_addr
+0x0181 mem_dpll_error
+0x0183 mem_bdaddr_list_buff
+0x01a7 mem_select_list_item
+0x01a8 mem_temp_reconn_record
+0x01a8 mem_record_bt_mode
+0x01a9 mem_temp_lap
+0x01af mem_list_item_ptr
+0x01b1 mem_eir
+0x0215 mem_ucode_status
+0x0216 mem_otp_ucode_flag
+0x0218 mem_spid_tbuf/* spid buf: 03 addr[23:16] addr[15:8] addr[7:0] */
+0x0219 mem_iicd_tbuf/* iicd buf: iic_adr addr[15:8] addr[7:0] iic_adr */
+0x0219 mem_addr_hi
+0x021a mem_addr_mi
+0x021b mem_addr_lo
+0x021c mem_iicd_addr
+0x021d mem_spid_rbuf
+0x0221 mem_ucode_buf
+0x0223 mem_ucode_len
+0x0225 mem_sched_addr
+0x0227 mem_ucode_ptr
+0x0229 mem_ucode_keybuf
+0x0239 mem_check_plap_temp
+0x024b mem_sensor_id
+0x024c mem_reconnect_flag
+0x024d mem_switch_fail_master_count
+0x024e mem_app_evt_timer_count
+0x024f mem_h5rx_ackcnt
+0x0250 mem_check_err_acl_cont
+0x0251 mem_rp_packets
+0x0252 mem_packet_type
+0x0254 mem_hci_sniff_conn_handle
+0x0256 mem_hci_sniff_max_interval
+0x0258 mem_hci_sniff_min_interval
+0x025a mem_hci_sniff_attempt
+0x025c mem_hci_sniff_timeout
+0x025e mem_voice_setting
+0x0260 mem_retransmission_effort
+0x0261 mem_sco_ptype
+0x0263 mem_extm_uap_restore
+0x0266 mem_h5rx_rptr
+0x0268 mem_h5rx_ack
+0x0269 mem_h5tx_ack
+0x026a mem_h5tx_rptr
+0x026c mem_h5tx_wptr
+0x026e mem_h5tx_free
+0x0270 mem_h5rx_tmp
+0x0271 mem_h5tx_seq
+0x0272 mem_hci_acl_queue_wptr
+0x0274 mem_hci_acl_queue_rptr
+0x0276 mem_hci_acl_queue_end
+0x0278 mem_hci_acl_queue_wcnt
+0x0279 mem_hci_acl_cnt
+0x027a mem_hci_acl_tx_trigger_wptr//tx via uart
+0x027c mem_ucode_id_local
+0x027d mem_ucode_id_remote
+0x027e mem_check_sum
+0x027f mem_ucode_temp
+0x0280 mem_ucode_temp1
+0x0281 mem_lock_in_enc//boolean
+0x0282 mem_hci_disconn_reason
+0x0283 mem_hci_curr_len
+0x0284 mem_hci_curr_target
+0x0286 mem_l2cap_mem_start
+0x0286 mem_l2cap_rxbuff1_len
+0x0288 mem_l2cap_rxbuff2_len
+0x028a mem_l2cap_rxbuff_new
+0x028c mem_l2cap_rxbuff_inuse
+0x028d mem_l2cap_payload_ptr
+0x028f mem_l2cap_rx_pkt_length
+0x0291 mem_l2cap_rx_cid
+0x0293 mem_l2cap_rx_done
+0x0294 mem_l2cap_signal_tx_buff_ptr
+0x0296 mem_l2cap_signal_tx_payload_ptr
+0x0298 mem_l2cap_signal_tx_length
+0x029a mem_sdp_tx_buff_ptr
+0x029c mem_sdp_tx_payload_ptr
+0x029e mem_sdp_tx_pkt_length
+0x02a0 mem_rfcomm_tx_buff_ptr
+0x02a2 mem_rfcomm_tx_payload_ptr
+0x02a4 mem_rfcomm_tx_pkt_length
+0x02a6 memL2CAP_T1
+0x02a8 mem_CONTROL_tasks
+0x02a9 mem_send_config_req
+0x02aa mem_config_identifier
+0x02ab mem_config_req_dest_CID
+0x02ad mem_rfcomm_malloc_fail_flag
+0x02ae mem_message_to_uppersm
+0x02af mem_upper_sm_remote_page
+0x02b0 mem_upper_sm_reconn
+0x02b1 mem_upper_sm_ss
+0x02b2 mem_tx_malloc_log
+0x02f2 mem_l2cap_mem_end
+0x02f2 mem_scid
+0x02f4 mem_cmd_length
+0x02f6 mem_tt2
+0x02f8 mem_tt3
+0x02fa mem_id
+0x02fc mem_psm
+0x02fe mem_l2cap_sdpres_delay_time
+0x0302 mem_le_rxbuf
+0x033a mem_le_mic
+0x033e mem_le_peer_mic
+0x0342 mem_le_peer_ltk
+0x0352 mem_le_mrand
+0x0362 mem_le_state
+0x0363 mem_le_mode
+0x0364 mem_le_tsniff
+0x0366 mem_le_anchor
+0x036a mem_le_clk_offset
+0x0370 mem_le_receive_window
+0x0372 mem_le_plap
+0x0378 mem_le_conn_handle
+0x0379 mem_le_arq
+0x037a mem_le_ch
+0x037b mem_le_hop
+0x037c mem_le_event_count
+0x037e mem_le_supervision_timer
+0x0382 mem_le_instant
+0x0384 mem_le_channels
+0x0385 mem_le_op
+0x0386 mem_le_access
+0x038a mem_le_crcinit
+0x038d mem_le_window_size
+0x038e mem_le_slave_latency
+0x0390 mem_le_superto
+0x0392 mem_le_channel_map
+0x0397 mem_le_no_using
+0x0399 mem_le_peer_sca
+0x039a mem_le_att_opcode
+0x039b mem_le_att_handle
+0x039d mem_le_err_code
+0x039e mem_le_l2cap_pdu_length
+0x03a0 mem_le_sk
+0x03b0 mem_le_testtype
+0x03b1 mem_le_test_sync
+0x03b3 mem_le_test_pcnt
+0x03b5 mem_le_rxon_ts
+0x03bb mem_le_rx_ll_opcode
+0x03bc mem_le_notify_attr_start
+0x03be mem_le_notify_len
+0x03bf mem_cmd_le_create_conn
+0x03c0 mem_24g_id
+0x03c1 mem_le_cur_attlist_start_ptr
+0x03c3 mem_le_cur_handle_start
+0x03c5 mem_le_cur_handle_end
+0x03c7 mem_le_cur_uuid_lenth
+0x03c8 mem_le_cur_uuid
+0x03d8 mem_le_search_len
+0x03d9 mem_le_search_res
+0x03da mem_le_continue_type
+0x03db mem_le_public_length
+0x03dc mem_lmo_header_length
+0x03dd mem_lmo_header_opcode
+0x03de mem_lmo_payload
+0x03ef mem_lmi_accepted_opcode
+0x03f0 mem_disconn_reason_send
+0x03f1 mem_tx_fixed_freq
+0x03f2 mem_rx_fixed_freq
+0x03f3 mem_ext_features_page
+0x03f4 mem_lmpext_ssp_enable
+0x03f6 mem_remote_sppcap
+0x03f7 mem_lmp_conn_state
+0x03f8 mem_soft_timer
+0x03fa mem_pincode_state
+0x03fb mem_sres_tid
+0x03fc mem_accptsco_tid
+0x03fd mem_auth_enable
+0x03fe mem_wait_encryption
+0x03ff mem_sniff_payload
+0x040f mem_aurand_send_delay_time
+0x0413 mem_module_temp_len
+0x0415 mem_uart_cmd
+0x0416 mem_uart_opcode
+0x0417 mem_uart_len
+0x0418 mem_module_temp_nl_discard_packet
+0x0419 mem_module_le_md_flag
+0x041a mem_init_cnt
+0x041c memRemoteRPNBitRate
+0x041d memRemotePRNDataBits
+0x041e memRemotePRNStopBit
+0x041f memRemotePRNParity
+0x0420 memRemotePRNFlowControl
+0x0421 memRemotePRNXon
+0x0422 memRemotePRNXoff
+0x0423 mem_mod2div_temp
+0x0426 mem_contw_temp
+0x0428 mem_attrib_list
+0x042a mem_current_adss
+0x042b mem_current_channel
+0x042c mem_current_frame_type
+0x042d mem_current_fcs
+0x042e mem_current_length
+0x0430 mem_rfcomm_uih_payload_ptr
+0x0432 mem_uih_cmd_type
+0x0433 mem_uih_length
+0x0435 mem_param_payload_ptr
+0x0437 mem_ms_param
+0x0438 mem_pn_credit_flow_type_info
+0x0439 mem_pn_priority
+0x043a mem_pn_acknowledg_timer
+0x043b mem_pn_max_retrans
+0x043c mem_rfcomm_send_adss
+0x043d mem_rfcomm_send_frame_type
+0x043e mem_rfcomm_send_fcs
+0x043f mem_rfcomm_send_offset
+0x0440 mem_sdp_mem_start
+0x0440 mem_uuid_search_pat
+0x0444 mem_sdp_continue_byte
+0x0446 mem_sdp_pduid
+0x0447 mem_sdp_transactionid
+0x0449 mem_sdp_attribute_maxbyte
+0x044b mem_sdp_record_maxcnt
+0x044d mem_sdp_error_code
+0x0455 mem_sdp_record_handle
+0x0459 mem_sdp_search_failed
+0x045a mem_sdp_LACAP_found
+0x045b mem_sdp_RFCOMM_found
+0x045c mem_handle_list
+0x0474 mem_handle_humber
+0x0475 mem_sdp_mem_end
+0x0475 mem_rxbuf
+0x0486 mem_random_number
+0x0496 mem_round_key
+0x04a6 mem_kinit
+0x04b6 mem_input_store
+0x04c6 mem_x
+0x04d6 mem_y
+0x04e5 mem_y15
+0x04e6 mem_key_store
+0x04f7 mem_key_store_end
+0x04f8 memp_ar_key
+0x04fa memp_ar_input
+0x04fc mem_ar_hround
+0x0506 mem_ec_infinite
+0x0507 mem_ec_loopc
+0x0509 mem_aes_cmac_data_length
+0x050a memdat
+0x050a mem_ax
+0x0522 mem_ay
+0x053a mem_az
+0x0552 mem_bx
+0x056a mem_ax_256//32 bytes
+0x056a mem_by
+0x0582 mem_bz
+0x058a mem_ay_256// 32 bytes
+0x059a mem_cx
+0x05aa mem_az_256// 32 bytes
+0x05b2 mem_cy
+0x05c9 mem_cy5
+0x05ca mem_bx_256// 32 bytes
+0x05ca mem_cz
+0x05e2 mem_k
+0x05ea mem_by_256// 31 bytes
+0x05fa mem_align
+0x060a mem_bz_256//32 bytes
+0x060a mem_tmp1
+0x060a memahbak
+0x0622 mem_tmp5
+0x062a mem_cx_256//32 bytes
+0x062a memahsave
+0x063a mem_tmp2
+0x064a mem_cy_256// 32 bytes
+0x064a memahsave_end
+0x064a mem_addr_padding
+0x064b mem_addr_value/* 12 bytes     */ 
+0x0652 mem_tmp3
+0x0652 mem_t1
+0x0657 mem_addr_value_end
+0x065a mem_addr_iocap_end
+0x0669 mem_cy5_256// 1 byte
+0x066a mem_cz_256// 32 bytes
+0x066a mem_tmp0
+0x066a mem_t0
+0x0672 mem_tmp0a
+0x0682 mem_t2
+0x068a mem_k_256//32 bytes
+0x069a mem_t3
+0x06aa mem_tmp1_256//32 bytes
+0x06b2 mem_t7
+0x06ca mem_tmp5_256
+0x06ea mem_tmp2_256
+0x070a mem_tmp3_256
+0x070a mem_t1_256
+0x072a mem_tmp0_256
+0x072a mem_t0_256
+0x074a mem_t2_256
+0x076a mem_t3_256
+0x078a mem_t7_256
+0x07aa mem_p
+0x07c2 mem_a
+0x07da mem_b
+0x07f2 mem_gx
+0x080a mem_gy
+0x0822 memh0
+0x0842 mem_p_256
+0x0862 mem_a_256
+0x0882 mem_gx_256
+0x08a2 mem_gy_256
+0x08c2 mem_le_slat
+0x08d2 mem_sp_state_start
+0x08d2 mem_sp_state
+0x08d3 mem_master_sp_state
+0x08d4 mem_sp_flag
+0x08d5 mem_master_sp_flag
+0x08d6 mem_sp_calc
+0x08d7 mem_sp_dh_ready
+0x08d8 mem_sp_localsm
+0x08d9 mem_pairing_auth
+0x08da mem_sp_flag_start
+0x08da mem_sp_local_key_send_count
+0x08db mem_sp_remote_key_recv_count
+0x08dc mem_sp_remote_key_invalid
+0x08dd mem_sp_dhkey_invalid
+0x08de mem_gkey
+0x08e2 mem_le_pubkey_remote_x_256
+0x08ea mem_sp_pubkey_remote
+0x08ea mem_sp_pubkey_remote_x
+0x0902 mem_sp_pubkey_remote_x_end
+0x0902 mem_le_pubkey_remote_y_256
+0x090a mem_sp_pubkey_remote_y
+0x0922 mem_le_dhkey_256
+0x092a mem_sp_dhkey
+0x0942 mem_sp_dhkey_end
+0x0942 mem_sp_random_local
+0x0952 mem_sp_random_local_end
+0x0952 mem_sp_random_remote
+0x0962 mem_sp_random_remote_end
+0x0962 memresult
+0x0962 mem_sp_calc_result
+0x0962 memh
+0x0966 memg
+0x096a memf
+0x096e meme
+0x0972 mem_sp_calc_result_high
+0x0972 memd
+0x0976 memc
+0x097a memb
+0x097e mema
+0x0982 mem_sp_check_result
+0x0992 mem_sp_confirm_remote
+0x09a2 mem_sp_prarm_stack
+0x09b2 mem_UI_data_txbuff_length
+0x09b4 mem_ipc_skip_continue_proc
+0x09b5 mem_ui_timer_temp//length 4
+0x09b5 mem_ipc_rega_temp
+0x09b9 mem_hold_contr
+0x09bb mem_hold_contw
+0x09bd mem_fifo_temp
+0x09be mem_pdatatemp
+0x09c6 mem_temp//8 bytes
+0x09ce mem_timeup// 4 bytes
+0x09d2 mem_rega//4 bytes
+0x09d6 mem_regb//4 bytes
+0x09da mem_regc//3 bytes
+0x09dd mem_contr//2 bytes
+0x09df mem_contw//2 bytes
+0x09e1 mem_le_data_len_temp//1byte
+0x09e1 mem_tx_fifo_map_temp
+0x09e1 mem_rpn_dlci//1byte
+0x09e1 mem_event_cmd_response_content//2byte
+0x09e1 mem_le_prand//16byte
+0x09e1 mem_AES_CMAC_k//16 bytes
+0x09e1 mem_regext_index//1 bytes
+0x09e1 mem_temp_block0
+0x09e2 mem_le_data_temp//15bytes
+0x09e2 mem_temp_block1
+0x09f1 mem_le_aes_128//16byte
+0x09f1 mem_regext//64 bytes
+0x09f1 mem_AES_CMAC_k1//16 bytes
+0x09f1 mem_temp_block2
+0x0a01 mem_AES_CMAC_k2//16 bytes
+0x0a01 mem_temp_block3
+0x0a11 mem_AES_CMAC_temp// 16 bytes
+0x0a11 mem_temp_block4
+0x0a21 mem_AES_CMAC_M_last// 16 bytes
+0x0a21 mem_temp_block5
+0x0a31 mem_le_mackey//16 bytes
+0x0a31 mem_temp_block6
+0x0a41 mem_temp_prepare_write_request
+0x0b09 mem_kb_map2_temp_start
+0x0b09 mem_kb_map2_vk
+0x0b0c mem_kb_current_vk
+0x0b0f mem_kb_vk_offset
+0x0b10 mem_kb_vk_processed_cnt
+0x0b11 mem_kb_map2_current_cell_ptr
+0x0b13 mem_kb_device_button
+0x0b14 mem_table_temp0
+0x0b1c mem_table_temp1
+0x0b24 mem_kb_map2_temp_end
+0x0b24 mem_check_count
+0x0b25 mem_store_key_count
+0x0b26 mem_kb_gpio_val
+0x0b2a mem_c51_flag
+0x0b2b mem_c51_lmp_lock
+0x0b2c mem_lmp_bb_disconnect_reason
+0x4000 mem_patch00
+0x4001 mem_patch01
+0x4002 mem_patch02
+0x4003 mem_patch03
+0x4004 mem_patch04
+0x4005 mem_patch05
+0x4006 mem_patch06
+0x4007 mem_patch07
+0x4008 mem_patch08
+0x4009 mem_patch09
+0x400a mem_patch0a
+0x400b mem_patch0b
+0x400c mem_patch0c
+0x400d mem_patch0d
+0x400e mem_patch0e
+0x400f mem_patch0f
+0x4010 mem_patch10
+0x4011 mem_patch11
+0x4012 mem_patch12
+0x4013 mem_patch13
+0x4014 mem_patch14
+0x4015 mem_patch15
+0x4016 mem_patch16
+0x4017 mem_patch17
+0x4018 mem_patch18
+0x4019 mem_patch19
+0x401a mem_patch1a
+0x401b mem_patch1b
+0x401c mem_patch1c
+0x401d mem_patch1d
+0x401e mem_patch1e
+0x401f mem_patch1f
+0x4020 mem_patch20
+0x4021 mem_patch21
+0x4022 mem_patch22
+0x4023 mem_patch23
+0x4024 mem_patch24
+0x4025 mem_patch25
+0x4026 mem_patch26
+0x4027 mem_patch27
+0x4028 mem_patch28
+0x4029 mem_patch29
+0x402a mem_patch2a
+0x402b mem_patch2b
+0x402c mem_patch2c
+0x402d mem_patch2d
+0x402e mem_patch2e
+0x402f mem_patch2f
+0x4030 mem_patch30
+0x4031 mem_patch31
+0x4032 mem_patch32
+0x4033 mem_patch33
+0x4034 mem_patch34
+0x4035 mem_patch35
+0x4036 mem_patch36
+0x4037 mem_patch37
+0x4038 mem_patch38
+0x4039 mem_patch39
+0x403a mem_patch3a
+0x403b mem_patch3b
+0x403c mem_patch3c
+0x403d mem_patch3d
+0x403e mem_patch3e
+0x403f mem_patch3f
+0x4040 mem_context
+0x4130 mem_current_amaddr
+0x4131 mem_lpm_mode
+0x4132 mem_device_option
+0x4133 mem_scan_mode
+0x4134 mem_last_clkn
+0x4138 mem_features
+0x4140 mem_lap
+0x4143 mem_uap
+0x4144 mem_nap
+0x4146 mem_npage
+0x4147 mem_glap
+0x414a mem_class
+0x414d mem_iscan_window
+0x414f mem_iscan_interval
+0x4151 mem_pscan_window
+0x4153 mem_pscan_interval
+0x4155 mem_page_interval
+0x4157 mem_page_window
+0x4159 mem_page_to
+0x415b mem_inq_window
+0x415d mem_fcomp_mul
+0x415e mem_fcomp_div
+0x415f mem_rx_window_init
+0x4161 mem_rx_window_sniff
+0x4163 mem_rf_init_ptr
+0x4165 mem_last_type
+0x4166 mem_last_type_esco
+0x4167 mem_last_type_saved
+0x4168 mem_retransmission_cnt
+0x416a mem_next_btclk
+0x416e mem_rf_rccal
+0x416f mem_handle_num
+0x4170 mem_max_slot
+0x4171 mem_eir_enable
+0x4172 mem_afh_instant
+0x4176 mem_afh_error_total
+0x4178 mem_afh_cfg
+0x4179 mem_afh_new_mod
+0x417a mem_afh_map_lo
+0x417f mem_afh_map_hi
+0x4184 mem_afh_used
+0x4185 mem_afh_index
+0x4187 mem_afh_map_new
+0x4192 mem_afh_map
+0x41e2 mem_afh_timer
+0x41e6 mem_afh_classify_channel_map
+0x41f0 mem_chip_functions
+0x41f2 mem_lpm_wake_lock
+0x41f4 mem_lpm_interval
+0x41f6 mem_lpm_overhead
+0x41f7 mem_lpm_hibernate_switch
+0x41f8 mem_esco_addr
+0x41f9 mem_sniff_unint_lost
+0x41fa mem_ptt
+0x41fb mem_sleep_counter//should be 0x41fc in REVC
+0x41ff mem_sleep_counter_all
+0x4203 mem_sleep_clkn
+0x4209 mem_sniff_rcv
+0x420c mem_sniff_lost
+0x420f mem_clks_per_lpo
+0x4212 mem_lpm_mult
+0x4213 mem_lpm_mult_timeout
+0x4214 mem_lpm_mult_cnt
+0x4215 mem_lpm_config
+0x4218 mem_lpm_xtalcnt
+0x4219 mem_lpm_buckcnt
+0x421a mem_lpm_ldocnt
+0x421b mem_lpm_isogate
+0x421c mem_lpm_isogate_final
+0x421d mem_saved_gpio// should be 0x421e in REVC
+0x422d mem_saved_gsel
+0x4230 mem_saved_mark
+0x4238 mem_saved_spidctrl
+0x4239 mem_patch_ptr
+0x423b mem_patch_len
+0x423d mem_timers
+0x425d mem_link_key_exists
+0x425e mem_link_key_eeprom_head
+0x4261 mem_link_key
+0x4271 mem_hci_cmd
+0x4272 mem_hci_conn_handle
+0x4273 mem_hci_plap
+0x4276 mem_hci_puap
+0x4277 mem_hci_pnap
+0x4279 mem_uartd_rxitems_got_data
+0x427a mem_uartd_rxitems_threshold
+0x427b mem_uartd_rx_timeout
+0x427d mem_tx_lch
+0x427e mem_tx_len
+0x4280 mem_tx_power
+0x4281 mem_context_number
+0x4282 mem_rf_init_data
+0x4283 mem_app_handshake_flag
+0x4284 mem_sniff_param_interval
+0x4286 mem_sniff_param_attempt
+0x4288 mem_sniff_param_timeout
+0x428a mem_cb_check_wakelock
+0x428c mem_cb_before_hibernate
+0x428e mem_cb_before_lpm
+0x4290 mem_cb_le_process
+0x4292 mem_cb_bt_process
+0x4294 mem_cb_idle_process
+0x4296 mem_cb_bb_event_process
+0x4298 mem_cb_discovry_timeout
+0x429a mem_cb_att_write
+0x429c mem_cb_update_notify_value
+0x429e mem_cb_update_notify_continue
+0x42a0 mem_cb_event_timer
+0x42a2 mem_cb_le_set_mult
+0x42a4 mem_cb_bt_set_mult
+0x42a6 mem_soft_version_num
+0x42a8 mem_eeprom_base
+0x42aa mem_unsniff2sniff_timer_count
+0x42ab mem_wake_up_delay_timer
+0x42ac mem_app_connection_options
+0x42ad mem_app_disconn_reason
+0x42af mem_app_disconn_reason_flag
+0x42b1 mem_lpm_delay_after_sniff
+0x42b5 mem_xrecord_mode
+0x42b6 mem_eeprom_block_size
+0x42b8 mem_wakup_from_power_flag
+0x42b9 mem_spi_init_clk
+0x42ba mem_spi_init_delay_time
+0x42bb mem_spi_ncs_gpio
+0x42bc mem_nv_data_ptr
+0x42be mem_nv_data_number
+0x42bf mem_0_5_adc_io_data
+0x42c1 mem_1v_adc_hvin_data
+0x42c3 mem_2v_adc_vinlpm_data
+0x42c5 mem_1v_adc_io_data
+0x42c7 mem_5v_adc_hvin_data
+0x42c9 mem_3v_adc_vinlpm_data
+0x42cb mem_otp_adc_flag
+0x42cd mem_reference_voltage
+0x42cf mem_adc_config_flag
+0x42d0 mem_adc_channel
+0x42d1 mem_adc_current_value
+0x42d3 mem_baud
+0x42d5 mem_hci_lt_rx_state
+0x42d6 mem_l2cap_xmem_start
+0x42d6 mem_l2cap_tx_multi_offset//0 means single packet
+0x42d8 mem_sdp_remote_cid
+0x42da mem_rfcomm_remote_cid
+0x42dc mem_hid_ctrl_remote_cid
+0x42de mem_hid_int_remote_cid
+0x42e0 mem_sdp_state
+0x42e1 mem_rfcomm_state
+0x42e2 mem_hid_control_state
+0x42e3 mem_hid_interrupt_state
+0x42e4 mem_spp_state
+0x42e5 mem_ML2CAP_comm_id
+0x42e6 mem_used_map
+0x42e7 mem_tx_fifo0
+0x42e7 mem_tx_fifo0_map
+0x42e8 mem_tx_fifo0_ptr
+0x42ea mem_tx_fifo1
+0x42ea mem_tx_fifo1_map
+0x42eb mem_tx_fifo1_ptr
+0x42ed mem_tx_fifo2
+0x42ed mem_tx_fifo2_map
+0x42ee mem_tx_fifo2_ptr
+0x42f0 mem_tx_fifo3
+0x42f0 mem_tx_fifo3_map
+0x42f1 mem_tx_fifo3_ptr
+0x42f3 mem_tx_fifo_end
+0x42f3 mem_l2cap_lpm_txbuf
+0x43f3 mem_l2cap_flow_ctrl_flag
+0x43f4 mem_l2cap_pending_item
+0x43f5 mem_l2cap_xmem_end
+0x43f5 mem_le_dsniff
+0x43f7 mem_le_conn_interval
+0x43f9 mem_le_scan_enable
+0x43fa mem_le_scan_interval
+0x43fc mem_le_scan_window
+0x43fe mem_le_adv_led
+0x43ff mem_le_adv_enable
+0x4400 mem_le_adv_data_len
+0x4401 mem_le_adv_data
+0x4420 mem_le_scan_data_len
+0x4421 mem_le_scan_data
+0x4440 mem_le_name_len
+0x4441 mem_le_name
+0x4455 mem_le_led_on_time
+0x4456 mem_le_new_map
+0x445b mem_le_new_param
+0x445b mem_le_new_transmitwindowsize
+0x445c mem_le_new_transmitwindowoffset
+0x445e mem_le_new_conninterval
+0x4460 mem_le_new_connslavelatency
+0x4462 mem_le_new_connsupervisiontimeout
+0x4464 mem_le_temp
+0x4465 mem_le_txheader
+0x4466 mem_le_txlen
+0x4467 mem_le_txpayload
+0x4469 mem_le_txcid
+0x446b mem_le_l2cap
+0x446c mem_le_l2cap_response
+0x446d mem_le_txbdy
+0x448c mem_le_pcnt_tx
+0x4491 mem_le_pcnt_rx
+0x4496 mem_le_last_mic
+0x449a mem_le_ivm
+0x449e mem_le_ivs
+0x44a2 mem_le_ltk
+0x44b2 mem_ltk_exists
+0x44b3 mem_le_rconfirm
+0x44c3 mem_le_srand
+0x44d3 mem_le_iat
+0x44d4 mem_le_rat
+0x44d5 mem_le_preq
+0x44d6 mem_le_preq_iocap
+0x44d7 mem_le_preq_oob
+0x44d8 mem_le_preq_auth
+0x44d9 mem_le_preq_max_keysize
+0x44da mem_le_preq_init_key_distribution
+0x44db mem_le_preq_resp_key_distribution
+0x44dc mem_le_pres
+0x44dd mem_le_pres_iocap
+0x44de mem_le_pres_oob
+0x44df mem_le_pres_auth
+0x44e0 mem_le_pres_max_keysize
+0x44e1 mem_le_pres_init_key_distribution
+0x44e2 mem_le_pres_resp_key_distribution
+0x44e3 mem_le_search_handle_start
+0x44e5 mem_le_search_handle_end
+0x44e7 mem_le_att_offset
+0x44e7 mem_le_search_att_type_length
+0x44e8 mem_le_search_att_type
+0x44f8 mem_le_notify_handle
+0x44fa mem_le_search_uuid_length
+0x44fb mem_le_search_uuid
+0x450b mem_le_handle_data_len
+0x450c mem_le_handle_data
+0x451c mem_le_adv_param
+0x451c mem_le_adv_interval_min
+0x451e mem_le_adv_interval_max
+0x4520 mem_le_adv_type
+0x4521 mem_le_adv_own_addr_type
+0x4522 mem_le_adv_direct_addr_type
+0x4523 mem_le_adv_direct_addr
+0x4529 mem_le_adv_channel_map
+0x452a mem_le_adv_filter_policy
+0x452b mem_le_conn_param
+0x452b mem_le_conn_peer_addr_type
+0x452c mem_le_conn_peer_addr
+0x4532 mem_le_conn_own_addr_type
+0x4533 mem_le_conn_interval_min
+0x4535 mem_le_conn_interval_max
+0x4537 mem_le_conn_latency
+0x4539 mem_le_conn_superto
+0x453b mem_le_scan_params
+0x453b mem_le_scan_type
+0x453c mem_le_scan_own_addr_type
+0x453d mem_le_scan_filter_policy
+0x453e mem_le_lap
+0x4541 mem_le_uap
+0x4542 mem_le_nap
+0x4544 mem_le_xtype_fifo
+0x454c mem_le_local_mtu
+0x454e mem_le_remote_mtu
+0x4550 mem_le_ll_cur_opcode
+0x4551 mem_le_skdm
+0x4559 mem_le_skds
+0x4561 mem_le_init_superto
+0x4563 mem_le_secure_connect_enable
+0x4564 mem_le_secure_connect_flag
+0x4565 mem_le_sc_calc
+0x4566 mem_le_secure_connect_state
+0x4567 mem_le_sc_confirm_gkey_flag
+0x4568 mem_le_sc_local_key_invalid
+0x4569 mem_le_continue_flag
+0x456a mem_le_pairing_state
+0x456b mem_le_enc_state
+0x456c mem_le_pairing_mode
+0x456d mem_le_tk
+0x4571 mem_le_ediv
+0x4573 mem_le_rand
+0x457b mem_le_irk
+0x458b mem_le_pairing_handle
+0x458d mem_le_interal_min
+0x458f mem_le_interal_max
+0x4591 mem_le_latency
+0x4593 mem_le_timeout
+0x4595 mem_le_switch_send_data
+0x4596 mem_le_transmit_window
+0x459a mem_le_buff_len
+0x459c mem_le_buff_len_all
+0x459e mem_le_buff_data_len_all
+0x45a0 mem_prepare_write_len
+0x45a2 mem_le_prepare_write_req_offset
+0x45a4 mem_prepare_handle
+0x45a6 mem_prepare_write_offest
+0x45a8 mem_le_flag
+0x45a9 mem_lmp_version
+0x45ac mem_lmp_subversion
+0x45ae mem_local_name_length
+0x45af mem_local_name
+0x45b2 mem_local_name2
+0x45f2 mem_local_name_end
+0x45f3 mem_unsniff2sniff_timer
+0x45f4 mem_switch_flag
+0x45f5 mem_pn_dlci
+0x45f6 mem_pn_max_frame_size
+0x45f8 memFCStemp1
+0x45f9 memFCStemp2
+0x45fa memFCStemp3
+0x45fb mem_rfcomm_initiator
+0x45fc mem_remote_spp_channel
+0x45fd mem_HIUfcs_SPP
+0x45fe mem_HIUfcs_SPP_WCredits
+0x45ff mem_rfcomm_send_more_pkt
+0x4600 mem_remote_credits
+0x4601 mem_credit_given
+0x4602 mem_ms_channel
+0x4603 mem_credit_flag
+0x4604 mem_rfcomm_max_frame_size
+0x4606 mem_rfcomm_credit_init_data
+0x4607 mem_cb_receive_spp_data
+0x4609 mem_nl_rx_data_src
+0x460b mem_nl_rx_len_all
+0x460d mem_ui_uuid_table
+0x460f mem_all_uuid_16bits
+0x4625 mem_all_uuid_128bits
+0x4637 mem_ui_le_uuid_table
+0x4639 mem_sp_local_key_invalid
+0x463a mem_le_private_key_256
+0x465a mem_le_pubkey_local_x_256
+0x467a mem_le_pubkey_local_y_256
+0x469a mem_sp_private_key
+0x46b2 mem_sp_pubkey_local
+0x46b2 mem_sp_pubkey_local_x
+0x46ca mem_sp_pubkey_local_x_end
+0x46ca mem_sp_pubkey_local_y
+0x46e2 mem_ssp_enable
+0x46e3 mem_sp_iocap_local
+0x46e6 mem_sp_iocap_remote
+0x46e9 mem_flag_mode_ssp_pin
+0x46ea mem_ssp_mode_flag
+0x46eb mem_authentication_passkey_times
+0x46ec mem_passkey_1bit
+0x46ed mem_flag_pairing_state
+0x46ee mem_ipc_lock_bt
+0x46ef mem_ipc_lock_c51
+0x46f0 mem_ipc_fifo_bt2c51
+0x46f8 mem_ipc_fifo_c512bt
+0x4700 mem_led_switch
+0x4701 mem_ui_button_timer
+0x4702 mem_ui_button_last_state
+0x4703 mem_ui_timer_last_btclk
+0x4707 mem_discovery_timeout_timer_count
+0x4709 mem_hid_handshake_timer_count
+0x470a memui_reconnect_mode
+0x470b mem_ui_state_map
+0x470d mem_ui_profile_supported
+0x470e mem_led_gpio
+0x470f mem_led_dark_time
+0x4711 mem_led_light_time
+0x4713 mem_led_blink_count
+0x4714 mem_ui_button_timeout
+0x4715 mem_ui_button_gpio
+0x4716 mem_discovery_timeout
+0x4718 mem_pin_length
+0x4719 mem_pin
+0x4729 mem_24g_tx_btclk
+0x472d mem_24g_interval
+0x472e mem_24g_txfail_cnt
+0x472f mem_24g_attempt_cnt
+0x4730 mem_24g_attempt_flag
+0x4731 mem_24g_rxfail_cnt
+0x4734 mem_24g_retry
+0x4735 mem_24g_pid
+0x4736 mem_24g_datalen
+0x4737 mem_24g_crc
+0x4739 mem_24g_rxbuf
+0x4779 mem_24g_addr
+0x477d mem_24g_len
+0x477f mem_24g_txpayload
+0x4789 mem_24g_txdata
+0x4793 mem_24g_ch
+0x4794 mem_24g_scremble
+0x47a4 mem_24g_current_ch_number
+0x47a5 mem_24g_ch_map1
+0x47a9 mem_24g_ch_map2
+0x47ad mem_24g_ch_map3
+0x47b1 mem_24g_ch_map4
+0x47b5 mem_24g_interval_min
+0x47b6 mem_24g_interval_max
+0x47b7 mem_24g_ensure
+0x47b8 mem_24g_enter_hibernate
+0x47c0 mem_24g_enter_lpm_timer
+0x47c1 mem_24g_pairing_sm
+0x47c2 mem_24g_addr_copy
+0x47c6 mem_24g_sifs
+0x47c7 mem_24g_rxcnt
+0x47c8 mem_24g_addr_private_dongle
+0x47cc mem_24g_map_buff0_dongle
+0x47cd mem_24g_channel_cnt_dongle
+0x47ce mem_24g_pairing_sm_dongle
+0x47cf mem_24g_tx_btclk_dongle
+0x47d3 mem_24g_interval_dongle
+0x47d4 mem_24g_ch_update_dongle
+0x47d5 mem_24g_rx_sync_dongle
+0x47d6 mem_24g_ch_cnt_dongle
+0x47d7 mem_24g_rxbuf_temp_dongle
+0x47dd mem_24g_rxbuf_dongle
+0x47e3 mem_24g_rxfail_cnt_dongle
+0x47e6 mem_24g_spi_enable_flag
+0x4729 mem_acl_credits
+0x472b mem_allow_switch
+0x472c mem_hci_acl_queue_start/*param_acl_pktcnt+2 byte*/
+0x4730 mem_hci_wake_clk
+0x4729 mem_kb_state
+0x472b mem_kb_report_data
+0x4731 mem_kb_keys
+0x4732 mem_kb_rcv_led_data
+0x4733 mem_kb_fast_wake_last
+0x4737 mem_led_cap_gpio
+0x4738 mem_led_num_gpio
+0x4739 mem_led_scl_gpio
+0x473a mem_kb_current_vdd_value_10times
+0x473c mem_kb_read_adc_cnt_100ms
+0x473d mem_kb_current_vdd_value
+0x473f mem_led_power_blink_count
+0x4740 mem_led_power_500ms_cnt
+0x4741 mem_kb_map2
+0x49fd mem_3v1_adc_default
+0x49ff mem_kb_map
+0x4a9d mem_kb_discovery_timer
+0x4a9f mem_kb_direct_timer
+0x4aa1 mem_kb_no_data_timer
+0x4aa3 mem_kb_direct_timeout
+0x4aa5 mem_kscn_event_last
+0x4aa6 mem_kscan_event_num_last
+0x4aa7 mem_auto_enable_mult_timer
+0x4aa8 mem_auto_enable_mult_timer_init
+0x4aa9 mem_kb_temp_flag
+0x4aaa mem_map2_out_report0
+0x4ab2 mem_map2_out_report1
+0x4aba mem_table_last_repory_data0
+0x4ac2 mem_table_last_repory_data1
+0x4aca mem_kb_down
+0x4ad4 mem_kb_down_last
+0x4ade mem_table_temp
+0x4ae6 mem_pincode_vk_last
+0x4ae7 mem_kb_device_button_last
+0x4ae8 mem_kb_device_button_timer
+0x4ae9 mem_kb_current_status
+0x4aea mem_seq
+0x4aeb mem_dorx_cnt
+0x4aec mem_matched_btclk
+0x4aee mem_master_sniff_interval
+0x4aef mem_led_power_gpio
+0x4af0 mem_kb_check_vdd_count
+0x4af2 mem_0v_adc_data
+0x4af4 mem_2v2_adc_data
+0x4af6 mem_3v_adc_data
+0x4af8 mem_select_system_led_timer
+0x4af9 mem_led_cap_gpio_status
+0x4afa mem_kb_no_data_timeout
+0x4afc mem_kb_gpio_last_val
+0x4b00 mem_store_current_status
+0x4b01 mem_kb_led_on_timer
+0x4b02 mem_kb_debug_sm
+0x4b03 mem_kb_mode
+0x4b05 mem_kb_mode_revese
+0x4b07 mem_master_addr
+0x4b0d mem_led_device_blink_count
+0x4b0e mem_led_device_500ms_cnt
+0x4b0f mem_kb_caps_led_status
+0x4b10 mem_kb_reconnection_ssp
+0x4b11 mem_kb_rcv_hid_control_rsp
+0x4b12 mem_kb_down_regroup
+0x4b17 mem_kb_get_fn_flag
+0x4b18 mem_kb_kscan_cnt
+0x4b19 mem_kb_down_test
+0x4b23 mem_kb_release_fn_data
+0x4b24 mem_led_cap_delay_timer
+0x4b25 mem_led_cap_mult_timer
+0x4b26 mem_led_cap_flag
+0x4b27 mem_hid_rx_data
+0x4b28 mem_kb_fn_c
+0x4b29 mem_kb_c_fn
+0x4b2a mem_keyboard_uuid_list
+0x4db4 mem_keyboard_uuid_list_end
+0x4db4 mem_keyboard_le_att_list
+0x4fa8 mem_keyboard_le_att_list_end
+0x4729 mem_module_wake_up_gpio
+0x472a mem_module_state_gpio
+0x472b mem_module_connect_state_gpio
+0x472c mem_current_packet_length
+0x472e mem_module_state
+0x472f mem_module_task
+0x4730 mem_cmode_addr
+0x4736 mem_module_mcu_wake_pin
+0x4737 mem_module_mcu_wake_delay_us
+0x473b mem_module_spp_lpm_mult
+0x473c mem_module_le_lpm_mult
+0x473d mem_module_bluetooth_stauts_by_command
+0x473e mem_module_uart_rx_buffer
+0x4740 mem_module_uart_rx_buffer_end
+0x4742 mem_module_uart_tx_buffer
+0x4744 mem_module_uart_tx_buffer_end
+0x4746 mem_module_read_vdd_flag
+0x4747 mem_module_read_vdd_count
+0x4748 mem_module_vdd_quotient
+0x4749 mem_module_vdd_remainder
+0x474a mem_module_le_buff_len
+0x474c mem_module_le_buff_len_all
+0x474e mem_module_le_buff_data_len_all
+0x4750 mem_module_le_continue_flag
+0x4751 mem_module_le_rx_data_len
+0x4752 mem_module_le_rx_data_address
+0x4754 mem_module_le_rx_data_handle
+0x4756 mem_module_data_write_handle
+0x4758 mem_module_data_write_handle2
+0x475a mem_module_flag
+0x475b mem_le_notify_type
+0x475c mem_module_hci_notify_start
+0x475e mem_module_hci_notify_offset
+0x4760 mem_module_hci_notify_len
+0x4762 mem_module_hci_notify_att
+0x4764 mem_module_hci_notify_original_len
+0x4766 mem_module_uuid_list
+0x4892 mem_module_uuid_list_end
+0x4892 mem_module_le_att_list
+0x4a86 mem_module_le_att_list_end
+0x4a86 mem_nv_data
+0x4a86 mem_nv_data0
+0x4aa8 mem_nv_data1
+0x4aca mem_nv_data2
+0x4aec mem_nv_data3
+0x4b0e mem_nv_data4
+0x4729 mem_mouse_key
+0x472a mem_mouse_x
+0x472c mem_mouse_y
+0x472e mem_mouse_z
+0x472f mem_mouse_tz
+0x4730 mem_mouse_xy_h
+0x4731 mem_sensor_shutter_hi
+0x4732 mem_sensor_shutter_lo
+0x4733 mem_sensor_smart_flag
+0x4734 mem_sensor_squal_reg
+0x4735 mem_mouse_move_flag
+0x4736 mem_reconnect_timeout
+0x4737 mem_mouse_direct_timeout
+0x4739 mem_mouse_no_data_timeout
+0x473b mem_mouse_blank_data_timeout
+0x473d mem_mouse_discovery_timer
+0x473f mem_mouse_direct_timer
+0x4741 mem_mouse_no_data_timer
+0x4743 mem_mouse_blank_data_timer
+0x4745 mem_mouse_send_blank_timer
+0x4746 mem_mouse_dpi
+0x4747 mem_mouse_dpi_button_state
+0x4748 mem_mouse_test_cnt
+0x4749 mem_le_hibernate_timer
+0x474b mem_mouse_mode_state
+0x474c mem_mouse_le_notify_handle
+0x474d mem_lbutton_gpio
+0x474e mem_rbutton_gpio
+0x474f mem_mbutton_gpio
+0x4750 mem_sbutton1_gpio
+0x4751 mem_sbutton2_gpio
+0x4752 mem_dpi_button_gpio
+0x4753 mem_sensor_data_gpio
+0x4754 mem_whee_a_data_gpio
+0x4755 mem_whee_b_data_gpio
+0x4756 mem_sensor_reset_gpio
+0x4757 mem_device1_led_gpio
+0x4758 mem_device2_led_gpio
+0x4759 mem_device3_led_gpio
+0x475a mem_conn_cnt
+0x475b mem_whee_ta_data_gpio
+0x475c mem_whee_tb_data_gpio
+0x475d mem_wheel_tb_old_pinlevel
+0x475e mem_wheel_tb_new_pinlevel
+0x475f mem_wheel_tog
+0x4760 mem_mouse_tz_data
+0x4761 mem_mouse_tz_data_count
+0x4762 mem_mouse_tz_data_count1
+0x4763 mem_mwhee_a_data_gpio
+0x4764 mem_mwhee_b_data_gpio
+0x4765 mem_mwheel_b_old_pinlevel
+0x4766 mem_mwheel_b_new_pinlevel
+0x4767 mem_mwheel_tog
+0x4768 mem_mouse_z_data
+0x4769 mem_mouse_z_data_count
+0x476a mem_mouse_z_data_count1
+0x476b mem_reconn_mode
+0x476c mem_mouse_statue_led_timer
+0x476d mem_device_flag
+0x476e mem_mouse_uuid_list
+0x4a5c mem_mouse_uuid_list_end
+0x4a5c mem_mouse_le_att_list
+0x4cb4 mem_mouse_le_att_list_end
+0x4729 mem_shutter_send_data
+0x472d mem_shutter_key_temp
+0x472e mem_shutter_send_length
+0x472f mem_shutter_clkn_bt_last
+0x4733 mem_shutter_key
+0x4734 mem_shutter_flag
+0x4735 mem_shutter_cable_unplug_conut
+0x4736 mem_shutter_hid_disconn_count
+0x4737 mem_shutter_1key_send_sm
+0x4738 mem_shutter_iphonekey_gpio
+0x4739 mem_shutter_androidkey_gpio
+0x473a mem_shutter_key_number
+0x473b mem_read_eeprom_temp
+0x473c mem_read_eeprom_mac_addr
+0x473f mem_scale_tx_length
+0x4740 mem_scale_txbuff_inuse
+0x4741 mem_adv_lap_ptr
+0x4743 mem_le_sleep_flag
+0x4744 mem_rx_window_sniff_inc
+0x4746 mem_pair_state
+0x4747 mem_exchange_mtu_req
+0x4748 mem_le_sleep_timeout
+0x474a mem_le_sleep_timeout_timer_count
+0x474c mem_le_fast_adv_timeout
+0x474e mem_le_fast_adv_timeout_timer_count
+0x4750 mem_led_fast_dark_time
+0x4752 mem_led_fast_light_time
+0x4754 mem_power_on_pin
+0x4755 mem_hard_soft_switch_case
+0x4756 mem_shutter_powerup_flag
+0x4757 mem_shutter_button_timeout
+0x4758 mem_shutter_button_timer
+0x4759 mem_power_timeout
+0x475a mem_power_timer
+0x475b mem_enable_key_scan
+0x475c mem_packet_interval_set
+0x475e mem_shutter_led_num
+0x475f mem_led_map
+0x4763 mem_fast_adv_led_style
+0x4763 mem_fa_led_type
+0x4764 mem_fa_led_pin
+0x4765 mem_fa_led_on_time
+0x4767 mem_fa_led_off_time
+0x4769 mem_fa_blink_count
+0x476a mem_slow_adv_led_style
+0x476a mem_sa_led_type
+0x476b mem_sa_led_pin
+0x476c mem_sa_led_on_time
+0x476e mem_sa_led_off_time
+0x4770 mem_sa_blink_count
+0x4771 mem_power_on_led_style
+0x4771 mem_po_led_type
+0x4772 mem_po_led_pin
+0x4773 mem_po_led_on_time
+0x4775 mem_po_led_off_time
+0x4777 mem_po_blink_count
+0x4778 mem_powe_off_led_style
+0x4778 mem_pf_led_type
+0x4779 mem_pf_led_pin
+0x477a mem_pf_led_on_time
+0x477c mem_pf_led_off_time
+0x477e mem_pf_blink_count
+0x477f mem_connected_led_style
+0x477f mem_co_led_type
+0x4780 mem_co_led_pin
+0x4781 mem_co_led_on_time
+0x4783 mem_co_led_off_time
+0x4785 mem_co_blink_count
+0x4786 mem_key_led_style
+0x4786 mem_key_led_style_ind_0
+0x4786 mem_key_led_style_ind_0_data
+0x478d mem_key_led_style_ind_1
+0x478d mem_key_led_style_ind_1_data
+0x4794 mem_key_led_style_ind_2
+0x4794 mem_key_led_style_ind_2_data
+0x479b mem_key_led_style_ind_3
+0x479b mem_key_led_style_ind_key_release
+0x479b mem_key_led_style_ind_3_data
+0x47a2 mem_temp_led_style
+0x47a2 mem_temp_led_type
+0x47a3 mem_temp_led_pin
+0x47a4 mem_temp_led_on_time
+0x47a6 mem_temp_led_off_time
+0x47a8 mem_temp_blink_count
+0x47a9 mem_shutter_key_num
+0x47aa mem_key_conf0
+0x47aa mem_key_conf0_pin
+0x47ab mem_key_conf0_led
+0x47ac mem_key_conf1
+0x47ac mem_key_conf1_pin
+0x47ad mem_key_conf1_led
+0x47ae mem_key_conf2
+0x47ae mem_key_conf2_pin
+0x47af mem_key_conf2_led
+0x47b0 mem_key_conf3
+0x47b0 mem_key_conf3_pin
+0x47b1 mem_key_conf3_led
+0x47b2 mem_key_conf4
+0x47b2 mem_key_conf4_pin
+0x47b3 mem_key_conf4_led
+0x47b4 mem_key_conf5
+0x47b4 mem_key_conf5_pin
+0x47b5 mem_key_conf5_led
+0x47b6 mem_key_value_temp
+0x47b8 mem_key_value
+0x47ba mem_key_packet_count
+0x47bb mem_key_next_addr
+0x47bd mem_key_value_temp1
+0x47be mem_key_value_temp2
+0x47bf mem_key_value_temp3
+0x47c0 mem_key_value_temp4
+0x47c1 mem_key_value_temp5
+0x47c2 mem_key_value_temp6
+0x47c3 mem_key0_press
+0x47d7 mem_key0_release
+0x47eb mem_key1_press
+0x47f9 mem_key1_release
+0x4807 mem_key2_press
+0x4815 mem_key2_release
+0x4823 mem_key3_press
+0x4831 mem_key3_release
+0x483f mem_key4_press
+0x484d mem_key4_release
+0x485b mem_key5_press
+0x4869 mem_key5_release
+0x4877 mem_queue_ele_num
+0x4878 mem_queue_read
+0x487a mem_queue_write
+0x487c mem_queue_start
+0x487c mem_data_ele0
+0x4886 mem_data_ele1
+0x4890 mem_data_ele2
+0x489a mem_data_ele3
+0x48a4 mem_data_ele4
+0x48ae mem_data_ele5
+0x48b8 mem_queue_end
+0x48b8 mem_queue_temp
+0x48ba mem_shutter_key_data_flag
+0x48bb mem_shutter_key_data_flag_1
+0x48bc mem_le_find_type_value_start_handle
+0x48be mem_le_find_type_value_end_handle
+0x48c0 mem_shutter_find_type_value_flag
+0x48c1 mem_le_uuid
+0x48c2 mem_send_updata_le_param_timer
+0x48c3 mem_le_smp_key_dist
+0x48c6 mem_ltk_states
+0x48c7 mem_shutter_conn_update_timer
+0x48c8 mem_empty_count
+0x48c9 mem_shutter_notification_len
+0x48ca mem_shutter_notification_addr
+0x48cc mem_shutter_le_att_list
+0x4729 mem_current_event
+0x472a mem_ipc_lock_rx_data_bt
+0x472b mem_ipc_lock_rx_data_c51
+0x472c mem_ipc_lock_tx_data_bt
+0x472d mem_ipc_lock_tx_data_c51
+0x472e mem_ipc_2bt_fifo_head
+0x47c4 mem_ipc_2bt_fifo_end
+0x47c4 mem_ipc_2bt_read_index
+0x47c6 mem_ipc_2bt_write_index
+0x47c8 mem_ipc_2C51_fifo_head
+0x482c mem_ipc_2C51_fifo_end
+0x482c mem_ipc_2C51_read_index
+0x482e mem_ipc_2C51_write_index
+0x4830 mem_c51_private_area
+0x4894 mem_ipc_tx_evt_buff
+0x4896 mem_ipc_tx_evt
+0x4897 mem_ipc_rx_type
+0x4898 mem_ipc_bt_timer
+0x489a mem_ipc_c51_timer
+0x489c mem_ipc_bt_100ms_timer
+0x489d mem_ipc_c51_100ms_timer
+0x489e mem_ipc_last_check_timer
+0x48a2 mem_new_24g_rxbuf
+0x48c4 mem_new_24g_txbuf
+0x48e4 mem_new_24g_txpayload
+0x4906 mem_new_24g_rxpayload
+0x4926 mem_new_24g_rxdata_length
+0x4927 mem_new_24g_pid
+0x4928 mem_new_24g_datalen
+0x4929 mem_new_24g_data_type
+0x492a mem_new_24g_txlen
+0x492b mem_new_24g_rx_window
+0x492d mem_new_24g_ensure
+0x492e mem_new_24g_txfail_cnt
+0x4930 mem_new_24g_get_ack_fail
+0x4931 mem_new_24g_retry
+0x4932 mem_new_24g_ch
+0x4933 mem_new_24g_current_ch_number
+0x4934 mem_new_24g_paring_addr
+0x4938 mem_new_24g_pairing_sm
+0x4939 mem_new_24g_ch_map1
+0x493d mem_new_24g_ch_map2
+0x4941 mem_new_24g_ch_map3
+0x4945 mem_new_24g_ch_map4
+0x4949 mem_new_24g_tx_btclk
+0x494d mem_new_24g_interval
+0x494e mem_new_24g_interval_min
+0x494f mem_new_24g_interval_max
+0x4950 mem_new_24g_addr
+0x4954 mem_new_24g_abort_pac
+0x4955 mem_new_24g_sync_pac
+0x4956 mem_new_24g_check_dongle_times
+0x4958 mem_new_24g_enter_hibernate
+0x4960 mem_new_24g_device_addr
+0x4964 mem_new_24g_pac_index
+0x4965 mem_new_24g_no_ack
+0x4966 mem_new_24g_sta_crc
+0x4969 mem_new_24g_last_crc
+0x496c mem_new_24g_sta_pid
+0x496d mem_new_24g_last_pid
+0x496e mem_new_24g_max_retry
+0x496f mem_new_24g_mode
+0x4970 mem_new_uart_packet
+0x4990 mem_new_24g_common_temp
+0x49b0 mem_new_24g_rf_last_sta
+0x49b1 mem_new_24g_rf_hop_ch
+0x49b2 mem_new_24g_sync_cnt
+0x49b3 mem_new_24g_hop_pac_retry
+0x49b4 mem_new_24g_rf_work_stage
+0x49b5 mem_new_24g_hop_fastly_cnt
+0x49b6 mem_new_24g_auto_paring_switch
+0x49b7 mem_new_24g_key_wheel_event
+0x49b8 mem_new_24g_delay_long_sleep_cnt
+0x49b9 mem_new_24g_delay_long_sleep_maxcnt
+0x49ba mem_new_24g_enter_lpm_timer
+0x49bb mem_new_24g_syncword
+0x49bd mem_new_24g_syncword_crc8
+0x49be mem_new_24g_get_syncword_crc8
+0x49bf mem_new_24g_paccnt
+0x49c0 mem_new_24g_ota_enable
+0x49c1 mem_bt_wakeup_from_long_mult
+0x49c2 mem_bt_motion_event
+0x49c3 mem_tx_power_temp
+0x49c4 mem_power_ctrl_level
+0x49c5 mem_power_ctrl_pac_succ_cnt
+0x49c6 mem_rssi_signal_buf
+0x49ce mem_rssi_signal_index
+0x49cf mem_rssi_hex_received
+0x49d0 mem_rssi_avg_received
+0x49d1 mem_last_txlch
+0x49d2 mem_last_txlen
+0x49d4 mem_last_txdata
+0x49e8 mem_device_uuid_list
+0x4c40 mem_device_uuid_list_end
+0x4c40 mem_device_le_att_list
+0x4e20 mem_device_le_att_list_end
+0x4e20 mem_empty_count_user
+0x4e21 mem_hid_buff
+0x4e41 mem_adc_0v
+0x4e43 mem_adc_3v
+0x4e45 mem_hibernate_flag
+0x4e46 mem_new_supervision_to
+0x4e48 mem_le_rx_winsows
+0x4e4c mem_le_att_report1
+0x4e4e mem_le_att_report2
+0x4e50 mem_le_slave_update_param_timer
+0x4e51 mem_le_slave_update_mult_timer
+0x4e52 mem_le_reconn_enable_notify_timer
+0x4e53 mem_le_reconn_flag
+0x4e54 mem_le_buff_temp
+0x4e60 mem_le_rx_window_inc
+0x4e62 mem_le_prepare_tx_retransmited_number
+0x4e63 mem_last_check_clk
+0x4e67 mem_hid_send_handshake
+0x4e68 mem_feature_ext_page_number
+0x4e69 mem_rf_init_data_new
+0x4e74 mem_short_lpm_interval_param
+0x4e78 mem_short_lpm_enable
+0x4e79 mem_short_lpm_tx_cnt
+0x4e7a mem_ckln_24g_short_lpm
+0x4e7d mem_send_data_24g_short_lpm
+0x4e7e mem_short_lpm_interval_cnt
+0x4e7f mem_ipc_is_ready
+0x4e80 mem_short_data_wheel
+0x4e81 mem_ble_data_wheel
+0x4e82 mem_ble_data_wheel_lpm_timer
+0x4e83 mem_bt_read_ipc_count
+0x4e84 mem_51_read_sensor_count
+0x4e85 mem_queue_write_prt
+0x4e86 mem_queue_read_ptr
+0x4e87 mem_queue_buffer0
+0x4e8e mem_queue_buffer1
+0x4e95 mem_queue_buffer2
+0x4e9c mem_queue_buffer3
+0x4ea3 mem_ble_read_ipc_fifo_once
+0x4ea4 mem_ble_send_flag
+0x4ea5 mem_mouse_le_pairing_flag
+0x4ea6 mem_le_mouse_fast_conn_flag
+0x4ea7 mem_le_start_adv
+0x4ea8 mem_le_start_fast_conn_count
+0x4ea9 mem_mouse_eeprom_base
+0x4eab mem_mouse_reconn_addr
+0x4ead mem_mouse_le_reconn_addr_data
+0x4eb3 mem_mouse_24g_reconn_addr_data
+0x4eb9 mem_le_fast_conn_finished
+0x4eba mem_le_init_eeprom_base_count
+0x4ebb mem_32asm_data_end
+0x4ebb mem_mult_time_arrive_flag
Index: Standard_mouse/c51/patch/patch.dat
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/patch/patch.dat	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/patch/patch.dat	(working copy)
@@ -0,0 +1,84 @@
+mem_patch00:09
+mem_patch10:40
+mem_patch11:0c
+mem_patch14:80
+mem_patch15:13
+mem_patch16:f0
+mem_patch20:20
+mem_patch22:40
+mem_patch23:08
+mem_patch24:08
+mem_patch25:80
+mem_patch26:0e
+mem_patch27:f2
+mem_patch28:04
+mem_patch29:20
+mem_patch32:20
+mem_patch3e:88
+mem_patch3f:03
+
+##49   #mem_patch00	#49 enable HID
+##02   #mem_patch01	#02 enable HID
+##00   #mem_patch02
+##00   #mem_patch03
+##60   #mem_patch04	#60 enable HID
+##02   #mem_patch05	#02 enable HID
+##00   #mem_patch06
+##80   #mem_patch07	#80 enable HID
+##00   #mem_patch08
+##10   #mem_patch09	#10 enable HID
+##01   #mem_patch0A	#01 enable HID
+##00   #mem_patch0B
+##00   #mem_patch0C
+##00   #mem_patch0D
+##00   #mem_patch0E
+##00   #mem_patch0F
+##40   #mem_patch10
+##0c   #mem_patch11
+##00   #mem_patch12
+##00   #mem_patch13
+##80   #mem_patch14
+##13   #mem_patch15
+##f0   #mem_patch16
+##00   #mem_patch17
+##00   #mem_patch18
+##01   #mem_patch19	#01 enable HID
+##00   #mem_patch1A
+##00   #mem_patch1B
+##00   #mem_patch1C
+##00   #mem_patch1D
+##00   #mem_patch1E
+##00   #mem_patch1F
+##20   #mem_patch20
+##00   #mem_patch21
+##40   #mem_patch22
+##08   #mem_patch23
+##08   #mem_patch24
+##80   #mem_patch25
+##0e   #mem_patch26
+##d0   #mem_patch27
+##04   #mem_patch28
+##20   #mem_patch29
+##60   #mem_patch2A	#60 enable HID
+##41   #mem_patch2B	#41 enable HID
+##00   #mem_patch2C
+##00   #mem_patch2D
+##00   #mem_patch2E
+##00   #mem_patch2F
+##00   #mem_patch30
+##00   #mem_patch31
+##20   #mem_patch32
+##00   #mem_patch33
+##00   #mem_patch34
+##40   #mem_patch35	#40 enable HID
+##00   #mem_patch36
+##00   #mem_patch37
+##00   #mem_patch38
+##01   #mem_patch39	#01 enable HID
+##00   #mem_patch3A
+##00   #mem_patch3B
+##00   #mem_patch3C
+##00   #mem_patch3D
+##88   #mem_patch3E
+##03   #mem_patch3F
+
Index: Standard_mouse/c51/patch/ramcode.rom
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/patch/ramcode.rom	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/patch/ramcode.rom	(working copy)
@@ -0,0 +1,1729 @@
+c512800f
+c0000024
+c001802f
+c0430035
+c045003f
+c0458061
+c053806d
+c0540074
+c0548088
+c056009b
+c05a0349
+c05a80b4
+c05b00bb
+c05b80dd
+20203b34
+c0028117
+c00b011c
+c00d8120
+c0118123
+c0178147
+c018815c
+c019016e
+c0198181
+c01c8192
+c01e019f
+c01e81b2
+c01f01b8
+c01f81d1
+c02101ef
+c02681f4
+c04a8225
+c079822c
+c07b8238
+c07c026f
+c07c8275
+20203b34
+20800000
+2435b004
+6800c595
+243a002d
+6800ce78
+203a3004
+704e7f00
+c5933004
+2435b004
+70828003
+20203004
+2040027f
+2040043d
+204002bd
+6800ce78
+243a0383
+2020301b
+2030b9a3
+708955d4
+20000004
+708955d2
+20000004
+708955d1
+20000004
+6800c280
+c00a39ae
+2020399c
+60088017
+1840a200
+20403a13
+58000500
+20403b35
+70890601
+7089003c
+708901e0
+70896d12
+2000000a
+70890201
+7089023d
+2000000a
+708903b7
+2000000a
+7089027f
+6800c280
+c00a005e
+c2808058
+c2810058
+70894c5b
+70894d96
+70894e2c
+70894f46
+2020005c
+70894cfb
+70894def
+70894eec
+70894f5e
+6800c280
+202039dc
+708956c2
+708955d0
+20600000
+20403cd2
+20403a5f
+70804206
+68108968
+79207e07
+60108968
+793ffe07
+60108968
+79207e07
+60108968
+70804205
+20203a0c
+20403c2b
+6800ce45
+207a0000
+704e4500
+1c427e00
+6002489e
+20600000
+c6130000
+20403be2
+6801c20f
+207a0000
+68014042
+d840ffff
+98467c00
+20628000
+6800c131
+207a0000
+20404816
+247a0000
+20403d0e
+247a0000
+20403a7b
+6800c6e2
+203a3c5e
+6800c639
+207a0000
+20203c5e
+6800c595
+203a0095
+6800809f
+243a0095
+6800ce83
+6808ce84
+98467c00
+24628000
+6800ce81
+247a0000
+58000000
+600400a0
+20203c6a
+204000a0
+24740000
+68008b2b
+247a0000
+7049c100
+20203c6a
+204000a0
+24740000
+68008b2b
+247a0000
+20203c8c
+204000ab
+24740000
+204000a8
+24740000
+700b2b01
+700b2a01
+204000b0
+202000ab
+6801482c
+6809482e
+202000ad
+680147c4
+680947c6
+98467c00
+2022e4c0
+202031d4
+68008b2a
+2000000a
+c08000b0
+20600000
+70001627
+70015000
+70017e00
+70017f00
+58000000
+600288d2
+20600000
+da2046f0
+20407f95
+207a0000
+1fe22600
+204000c1
+20203d9b
+c10c0000
+c00a00c6
+c00a80d0
+c01480db
+20203d73
+704e8300
+70421200
+704ebb00
+704e5114
+20403e61
+20403e59
+20403e7f
+20403e20
+704eb901
+20203dc2
+704ea400
+20400304
+7044b200
+70421200
+704ebb00
+704e5100
+70456a00
+68094e4e
+600944f8
+204052a0
+20203dc6
+20400105
+20207e3b
+6008824e
+6800c89c
+1fe0fe01
+6000c89c
+6800824e
+207a0000
+1fe0ffff
+6000824e
+20400108
+204000eb
+20400111
+204000f7
+204000fe
+202000e1
+6800cebb
+207a0000
+6800c212
+2fe1fe20
+244080f5
+6800c131
+205a00f3
+20600000
+70413101
+20600000
+70421220
+20600000
+6800c9ba
+207a0000
+704e8000
+1fe0ffff
+6000c9ba
+247a0000
+20600000
+6800ce82
+207a0000
+1fe0ffff
+6000ce82
+247a0000
+704e8100
+20600000
+20403e7f
+7009bd12
+20207d90
+6800ce51
+207a0000
+1fe0ffff
+6000ce51
+247a0000
+70421220
+70413101
+704ebb01
+20600000
+6800ce52
+207a0000
+1fe0ffff
+6000ce52
+247a0000
+20203e6d
+20404968
+20404b51
+20404bd8
+20400616
+20204945
+20403a50
+1fe22200
+20400654
+20204a3d
+68024e48
+60024596
+20204a8c
+70413101
+6801037c
+68090382
+98467e00
+600109be
+68008362
+793ffe05
+793ffe03
+60008362
+68020366
+68090364
+600909c6
+98462200
+6800c45b
+6000838d
+e8c90000
+e8c10000
+1febfe00
+60010364
+184b8400
+9840fe00
+e8ca0000
+600a038e
+9a20fe00
+1fe22800
+68010364
+680909c6
+98467e00
+680909be
+984ffe00
+9a80fe00
+60020366
+20405199
+68010390
+60014561
+20600000
+68008379
+c2828158
+20400608
+704e6200
+6800ce20
+243a0152
+6800cea5
+c0008156
+68008303
+203a4bde
+20204f87
+6800ce20
+1fe0ffff
+6000ce20
+20204f87
+704e2003
+20204bde
+6800ce62
+1fe0fe01
+6000ce62
+2020060c
+6800c467
+c0030160
+c0010167
+20204bfb
+6800ce53
+c0008164
+20403e6d
+20204c86
+20400105
+704e5203
+20204c90
+58000013
+e0a08000
+20404c58
+5800000a
+60010390
+60014561
+20600000
+6800c46b
+c0010175
+c003017c
+c0038173
+20204c18
+704ea500
+20204d17
+59000302
+6001c4dc
+58000001
+e0a08000
+58010010
+e0a18000
+20204ccd
+7009bd29
+20407d86
+7009bd47
+20404bd6
+20204d01
+6800c46b
+c00d8185
+c00e8185
+20204c2b
+68094e4e
+6009446c
+6800ce86
+1fe08401
+18410403
+6008ce86
+1feffe07
+d8c04e87
+98c08c00
+e8c38000
+6003c46e
+d840000e
+20204f89
+6008c466
+28200602
+24208197
+1840fffc
+60014467
+68088379
+2040019a
+20204f92
+6800cea5
+c000819d
+20204bd0
+58000000
+20600000
+1a627e00
+c00001a5
+c00101a8
+c00181ac
+c00501b0
+20204fb9
+70413100
+704e513c
+2020501f
+20405033
+58000000
+60044544
+20600000
+20405039
+6800c56a
+c1010000
+20206418
+7009bd2b
+20204bd6
+e8c08000
+c00081b5
+20204ffe
+704ea501
+704e2003
+20205069
+e8c18000
+6001839a
+c00901bc
+20205011
+70413101
+204001c8
+6800839b
+1fe67c60
+202281cd
+704ea600
+20405125
+24628000
+6800cea6
+245a01cf
+7009bd13
+20204bd6
+68008303
+1fe0fff9
+1fe27200
+1f222400
+20205135
+704ea601
+202001c2
+7009bd29
+20207d86
+6800c3ff
+207a0000
+d8e00001
+20407ee2
+247a0000
+7854fc00
+78287c00
+20404b1e
+204049d4
+20404a8a
+243681e3
+68008003
+1fe0fe01
+60008003
+68008302
+1fe17e0f
+c00181ed
+c002d1af
+68008016
+c093d17d
+180a7e00
+d84001ff
+98417e00
+1fe0fefa
+1fe0ffff
+20000026
+243a01e9
+20205196
+20404ac5
+202001e3
+68024596
+d840ea60
+9840fe00
+60024596
+202051a9
+7855fc00
+203701f7
+24368206
+20403cb7
+68014161
+60010370
+68008302
+2fe00601
+2420bccb
+6800c465
+2fe00601
+2420bccb
+20404bd0
+243a3ccb
+6800ce62
+1fe67c01
+24213ccb
+20205297
+68094161
+68014e60
+98408400
+18430400
+68010370
+9840fe00
+60010370
+20203cc3
+2040021c
+df200006
+d8c04ead
+5800ffff
+20400220
+24628000
+6800cea8
+207a0000
+1fe0ffff
+6000cea8
+20403e28
+20628000
+704ea701
+20600000
+d840000c
+da204ead
+68014eab
+2020624a
+e8c90000
+98467c00
+24628000
+c2000220
+20600000
+68120078
+681a007c
+9841fe00
+1fe47e00
+9a217e00
+60120070
+20600000
+1a227e00
+207a0000
+18408560
+18408560
+793f841c
+600a4703
+1fe20400
+da2046f0
+20407fa6
+247a0000
+18427e00
+20207d7d
+20407d80
+da2046f8
+20407f95
+1fe20400
+20407d84
+18427e00
+207a0000
+c0118245
+c0120249
+c012824d
+c006824f
+c013825e
+20207db3
+6800c9c3
+6000c280
+704938ff
+2020069c
+6800c9c3
+6000c280
+793f8026
+2020497d
+70428014
+2020066d
+793f8026
+70413100
+180a7e00
+6000c53e
+5826100e
+6001c541
+704e5300
+68094e4e
+600944f8
+204052a0
+da400005
+20400268
+1a427e00
+e0c08000
+20207e07
+793f8026
+70413100
+704e5301
+68094e4e
+20404f6a
+1a220a00
+58000001
+e0a08000
+da400004
+2020025a
+da204401
+ea208000
+207a0000
+98c0a200
+e8c08000
+c1008000
+20200269
+204058c5
+243a7de5
+680089bd
+c584fde0
+c00f8295
+20207dd0
+700b2a03
+204000b0
+704e455a
+20403cfc
+68120138
+793ffe0f
+6012004c
+20403cf4
+d85fffff
+20203c11
+680a489e
+1c427e00
+98467e00
+d8400640
+9846fc00
+20407f53
+1807fe00
+207a0000
+1c420400
+600a489e
+68094898
+18508400
+9840fe00
+1ff0fe00
+60014898
+1ff0fe00
+1fe17e03
+c1800000
+204002b3
+24760000
+6800c2cf
+c2810296
+20600000
+68108078
+793ffe05
+60108078
+7089718f
+6800c2d0
+60108973
+204002a1
+68108078
+79207e05
+60108078
+20600000
+68108053
+79207e07
+60108053
+68108973
+1fe1fe30
+60108973
+7089067c
+708972aa
+20001388
+68190150
+68108053
+793ffe07
+60108053
+18508400
+600942d1
+20600000
+78367c00
+20600000
+78567c00
+20404bd0
+205a02b1
+6800c954
+245a02b1
+20600000
+704ea301
+204002bd
+704ea300
+20600000
+204000ab
+20740000
+1ff0fe00
+1fe20c00
+204002e3
+6000c897
+c00082ce
+c00302ff
+1fe20400
+18c22200
+6800c040
+c30002d8
+1a220c00
+c6848000
+18427e00
+c0028316
+20203b31
+204002e3
+204002e3
+600089bd
+204002d3
+20207d90
+204002e6
+18c20400
+18508400
+600947c4
+20600000
+1a220c00
+d8a000f5
+202002db
+204002e3
+1fe27200
+204002df
+202002d3
+204002e3
+e0a08000
+c20002df
+20600000
+204002e6
+e8c08000
+20600000
+580047c4
+98c67c00
+24628000
+d8c0472e
+20600000
+df200003
+d8c04894
+18c22200
+6801482e
+1ff0fe00
+1fe20a00
+1a220c00
+e8c08000
+e0a08000
+204002fa
+c20002f2
+18a27e00
+1ff0fe00
+6001482e
+20600000
+5800482c
+98a67c00
+24628000
+d8a047c8
+20600000
+c6938000
+204002e3
+1fe27200
+6000c970
+202002dd
+58000000
+6001ce85
+20600000
+c6130000
+6800c595
+207a0000
+204000ab
+20740000
+1ff0fe00
+1fe20c00
+204002e3
+6000c897
+18c22200
+c08282d8
+18c22400
+20404bd4
+247a0000
+2020031b
+18c22400
+6800cea3
+207a0000
+20404bd0
+247a0000
+68094e4e
+20404f6a
+c4000000
+6800c595
+c1000000
+6800ce83
+1fe0fe01
+6000ce83
+6800ce85
+1fe08401
+18410403
+6008ce85
+1feffe07
+d8a04e87
+98a08a00
+1a420c00
+204002e3
+1fe27200
+204002dd
+20400332
+20760000
+7009bd1b
+20204bd6
+78567c00
+6800cea4
+c1028000
+78367c00
+1fe0fe01
+6000cea4
+1fe67c01
+24610000
+70489640
+202002eb
+5800472e
+1ff0fe00
+600147c4
+600147c6
+580047c8
+1ff0fe00
+6001482c
+6001482e
+20600000
+68014ea9
+1fe0fe1c
+60014eab
+20600000
+2040524a
+700b2a00
+70016c06
+20403e7f
+580003c8
+60014296
+580002b9
+60014290
+580003c1
+6001428c
+2455833c
+20558389
+20403d3e
+6800ceba
+203a0362
+1fe0ffff
+6000ceba
+58007f80
+60014ea9
+20400345
+6800ce53
+243a0362
+6800ceb9
+243a0362
+2040020e
+6800ce45
+c02d039d
+2035839b
+6800c280
+6000c9c3
+20400605
+68014e41
+1ff0fe00
+60014e41
+68014e43
+1ff0fe00
+60014e43
+204003a8
+204003e2
+680409c6
+243a0376
+68014ad4
+1ff0fe00
+203a0376
+60014e43
+7048962f
+6800ce78
+243a037e
+20400293
+204002eb
+20400307
+70828003
+20600000
+2055bc29
+d9600d00
+34730200
+1c427e00
+6001ce7a
+6801470b
+c3858000
+c3830000
+20403d60
+204004f6
+20200383
+1ce27e00
+c5930393
+203a038e
+7049b9bb
+20600000
+7049b900
+6800c9b7
+207a0000
+7049b700
+2020038c
+203a0396
+7049c102
+20600000
+6800c9c2
+207a0000
+7049c200
+7049c101
+20600000
+7048963c
+20200377
+1ce27e00
+203a0277
+2040530d
+204042eb
+58000000
+60044040
+6001470b
+60014898
+6001489a
+7048963d
+20200377
+204062c4
+580007e2
+da2009c6
+d840000c
+2040630d
+204062c7
+680409c6
+207a0000
+6800c2cf
+c28103b3
+20600000
+680909c6
+680109cc
+18422400
+1fe22200
+98462600
+1a427e00
+9a667e00
+1ff0fe00
+60014e41
+1a6bfe00
+9a20fe00
+1ff0fe00
+60014e43
+20600000
+78347c00
+68120138
+79347e1a
+6012004c
+20403cf4
+70009f01
+20600000
+1a627e00
+1fe17ef0
+c1280000
+1a627e00
+6000c896
+202002eb
+70492700
+7049324e
+68024934
+60024950
+20200491
+6808c933
+204003d9
+18408401
+18410403
+6008c933
+20600000
+6800c950
+1fe17e03
+1fefa204
+58004939
+9a20fe00
+98408c00
+e8c08000
+6000c932
+20600000
+680209c6
+60024960
+247a0000
+68024140
+60024960
+20600000
+7049b001
+7049b200
+6800c929
+1fe17e07
+6000c929
+20600000
+6800c929
+79207e04
+6000c929
+6000c8e4
+20600000
+6800c929
+793ffe04
+6000c929
+20600000
+2040060c
+6800c9b4
+c00083fc
+c0010400
+20600000
+7049b202
+7049b300
+7049b000
+202003ea
+7049b100
+202003fd
+6801492e
+1fe0fe01
+6001492e
+c2850571
+6800c9b1
+c000840b
+7049b101
+6800c9b1
+c08083ea
+6800c9b5
+1fe0fe01
+6000c9b5
+c0020412
+204003d3
+70496e02
+20200532
+2040060c
+7049b500
+202003ea
+7049b202
+7049b001
+7049b100
+202003ea
+6800c9b4
+c0018416
+6800c929
+2fec0004
+202083e8
+6800c9b4
+c0008415
+c0010416
+20600000
+6800c938
+c1ff8000
+20400427
+2456042f
+20600000
+78567c00
+6800c9b0
+c1808000
+6800c9b2
+c1800000
+7049b401
+70496e04
+202002b1
+6800c9b2
+203a0437
+1fe0ffff
+6000c9b2
+7049b402
+204003d3
+70496e04
+20600000
+7049b403
+6800c9b1
+243a0409
+204003d3
+70496e02
+20600000
+c6930000
+79200027
+680a4949
+1c427e00
+98467c00
+24410456
+1fe22400
+68024949
+6808c94d
+98408400
+1a427e00
+98467c00
+24210454
+793ffe1c
+60024949
+20400459
+20400466
+203404c1
+20400422
+20400532
+6800c938
+1fe67cff
+20428616
+793f8027
+20600000
+20628000
+79207e1c
+20600000
+6800c964
+1fe0fe01
+6000c964
+c002045f
+c0028462
+20600000
+6800c94f
+6000c94d
+20600000
+70496400
+6800c94e
+6000c94d
+20600000
+6800c938
+c0ff8671
+204002bd
+20340478
+6800c897
+c08364c0
+6800ce80
+205a04dc
+6800ce80
+245a0474
+2040047d
+2040049e
+70492d01
+20600000
+704e7900
+704e7800
+7049ba0a
+20600000
+6800ce78
+243a047d
+6800c92d
+c000b1d4
+20600000
+6800c9b9
+6000c9b8
+6800c970
+1fe22200
+da404971
+70495400
+204003ea
+6000c990
+1a208401
+d8a04991
+1a227200
+1a420c00
+20407ecd
+da204990
+c6938000
+6008c928
+18427200
+d8a048c4
+1a220c00
+20207ecd
+da200000
+df200004
+d8c04950
+e8c08000
+9a20a200
+c2000494
+1a227e00
+600149bb
+6800c9bb
+6808c9bc
+9840fe00
+6000c9bd
+20600000
+6800c928
+1fe0fe02
+6000c92a
+6800c929
+6000c8e4
+6800c928
+1fe9fe00
+6808c927
+18410403
+18438400
+9841fe00
+6808c965
+9840fe00
+e0a08000
+6800c928
+98007200
+d8c048c4
+20207ecd
+70495401
+7049b100
+204003ea
+6000c990
+58000000
+6003c991
+68024960
+60024998
+d840000c
+da204990
+2040048b
+6800c929
+79207e03
+6000c929
+2040049e
+20400472
+20200450
+6800ce78
+203a04c5
+204004ef
+2020050e
+6800c954
+203a04b0
+6808c9b8
+18408401
+6008c9b8
+6800c9b9
+98467c00
+20610000
+7049b800
+204000a0
+24740000
+68008b2b
+247a0000
+6800c9ba
+247a0000
+704e8000
+20403be2
+6801c20f
+207a0000
+68044958
+20407f16
+600a41fb
+20203c11
+6800c2b8
+2fec0002
+202084e6
+6800ce79
+c1028000
+1fe0fe01
+6000ce79
+c1828000
+704e7801
+20600000
+6800ce79
+c10a0000
+1fe0fe01
+6000ce79
+c18a0000
+6800c2b8
+79207e02
+6000c2b8
+202004e4
+6800ce79
+207a0000
+1fe0ffff
+6000ce79
+247a0000
+704e7800
+20600000
+79200027
+204002bd
+203404fb
+6800c897
+c003050a
+6800ce7d
+c0008502
+c00104c1
+c0018500
+20600000
+704e7900
+704e7800
+204004dc
+704e7d00
+df200007
+1f227e00
+6000c970
+d8c04e21
+20407ecd
+78547c00
+2040046c
+20400422
+20400532
+20400616
+20403be2
+6801c20f
+207a0000
+6800c131
+207a0000
+6800ce80
+c0008517
+58000000
+600400a0
+20400527
+d9600d00
+34730200
+6809ce7a
+1c427e00
+98467e00
+1fe17eff
+d8400ea6
+984f8400
+68024e74
+98467e00
+20213c7f
+6800c218
+1fe0fe01
+600241fb
+20203c86
+58013c68
+60024e74
+6800ce7e
+1fe0fe01
+c082852d
+58000000
+6000ce7e
+c4000000
+580130b0
+60024e74
+20600000
+70493100
+d9600d00
+34730200
+2040054a
+6800c965
+c1008000
+242c0559
+24378559
+20400578
+20400608
+6800c927
+1fe0fe01
+6000c927
+6800c938
+c0ff8548
+20400419
+58000000
+6001492e
+6000c930
+6000c9b3
+70492d00
+20600000
+20400605
+2020068c
+7857fc00
+20400598
+6800c965
+c0008557
+18002a00
+68024950
+98001200
+68088017
+204039b9
+204039bf
+204005c2
+20578601
+20600000
+20400601
+2020053c
+6800c930
+1fe0fe01
+6000c930
+6800c938
+c0ff856d
+6808c931
+18408401
+6008c931
+6800c96e
+98467e00
+243a0533
+6800c9b4
+c0018402
+6800c9b3
+1fe0fe01
+6000c9b3
+c00103f7
+204003ee
+70496e01
+20200532
+6800c930
+c1ff8000
+70493000
+20200576
+58000000
+6001492e
+70413100
+704e7900
+704e7800
+7048963b
+202002eb
+2040057f
+6800c926
+207a0000
+98007200
+d8c048a4
+d8a04906
+20207ecd
+6800c8a3
+1fe97e00
+6000c926
+1fe0fe01
+d8c048a3
+98c08c00
+e8c18000
+6001c966
+6800c8a3
+1fe37e00
+1fe17e03
+6000c96c
+20600000
+7844fc00
+7843fc00
+58555555
+98001e00
+6800c932
+1fed8400
+79200401
+18431c00
+20600000
+204039b1
+6808c932
+202039c9
+20404976
+68024950
+98001200
+2040058c
+20400595
+79202a00
+782efc00
+78307c00
+7850fc00
+19317e00
+1fecfe00
+1ff1fe00
+08008628
+784efc00
+782dfc00
+7823fc00
+7824fc00
+6800c9bd
+08008608
+6800c92a
+98007200
+d8c048e4
+e8c08000
+08008608
+c20005ae
+78247c00
+08008618
+78447c00
+37d38200
+20000064
+784efc00
+784dfc00
+20600000
+20404976
+68024950
+98001200
+204039b1
+6808c932
+204039b9
+58000500
+20403b35
+204039bf
+2040058c
+7857fc00
+7826fc00
+7830fc00
+78507c00
+78287c00
+6801492b
+98003600
+37c18400
+242c0604
+7846fc00
+7825fc00
+7823fc00
+7824fc00
+09800008
+19897e00
+6000c9be
+20400491
+6808c9be
+98467c00
+24228601
+09800008
+19897e00
+6000c8a2
+6800c96f
+1fe67c02
+202285e1
+6800c8a2
+6808c929
+a8400e00
+24208601
+09800008
+19897e00
+e0a08000
+1fe97e00
+1fe1721f
+202285eb
+09800008
+19897e00
+e0a08000
+c20005e7
+18a22200
+09800008
+19897e00
+6000c9cf
+1a220a00
+09800018
+78287c00
+db600664
+1fef7e00
+1ff17e00
+e0a18000
+7845fc00
+20230601
+7837fc00
+68008017
+1fe0a200
+20403a13
+7846fc00
+204039b1
+6800c9cf
+1fe22200
+20200654
+784dfc00
+7845fc00
+202036c6
+20200601
+7049c401
+7049c500
+20600000
+6800c9c5
+1fe0fe01
+6000c9c5
+20600000
+6800c9c5
+1fe67c01
+24410614
+6800c9c5
+c1000000
+1fe0ffff
+6000c9c5
+20600000
+7049c502
+20600000
+da2049c6
+2040065d
+6008c9d0
+280ffe26
+20408624
+24408628
+98467c00
+24210641
+6800c9c5
+1fe67c01
+2421062c
+6800c9c5
+c0000641
+20600000
+58000082
+20600000
+58000077
+20600000
+58000080
+20600000
+58000075
+20600000
+6800c9c5
+c1a30000
+7049c500
+6808c9d0
+280ffe26
+20408626
+2440862a
+98467c00
+24610000
+6800c9c4
+c000064d
+1fe0ffff
+6000c9c4
+c000064d
+708955d0
+708956e0
+7089574c
+7089586c
+70895950
+70428001
+20600000
+6800c9c4
+c0010646
+1fe0fe01
+6000c9c4
+c000863a
+708955d0
+708956e0
+7089574c
+7089583c
+70895910
+70428004
+20600000
+708955d0
+708956c0
+7089574c
+7089586c
+70895950
+70428010
+20600000
+6808c9ce
+580049c6
+98408a00
+1a227e00
+e0a08000
+18408401
+18410407
+6008c9ce
+20600000
+d8400000
+df200008
+1a220c00
+e8c08000
+98408400
+c2000660
+18497e00
+1fe20400
+c6930000
+1fe6fc0a
+20407f53
+1807fe00
+1ff27e00
+18070400
+98418400
+20600000
+79200026
+204003ce
+70493801
+20600000
+6800c92d
+c000b1d4
+6800c938
+c0008678
+c001067b
+c001867e
+20203b31
+70493811
+704990aa
+20200680
+70493812
+70499055
+20200680
+70493813
+70499022
+6800c929
+1fe17e07
+6000c991
+68024960
+60024992
+70499600
+da204990
+d8400007
+2040048b
+2040049e
+20400472
+202031d4
+6800c938
+c17f8000
+c0088692
+c0090694
+c0098696
+20600000
+70493802
+20200542
+70493803
+20200542
+704938ff
+70489639
+204002eb
+68024908
+204003d1
+20200542
+793f8026
+204003d3
+68024950
+20400491
+6800c938
+c1ff8000
+204006b2
+58000000
+60014956
+200007d0
+6800c956
+c07f8576
+2040054a
+242c06bc
+243786bc
+70413101
+79200026
+58000000
+60014956
+7009bd3a
+20407d86
+20207e0d
+79200027
+704990ff
+6800c929
+6000c991
+68024960
+60024992
+d8400006
+da204990
+2040048b
+2020049e
+68014956
+1fe0fe01
+60014956
+204003d3
+202006a5
Index: Standard_mouse/c51/patch/rf.dat
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/patch/rf.dat	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/patch/rf.dat	(working copy)
@@ -0,0 +1,35 @@
+mem_lpm_config:8f 1b ce
+mem_lpm_buckcnt:0a 0b ef 0f
+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_page_to:00 20
+mem_rx_window_init:80 04
+mem_rx_window_sniff:00 08
+mem_le_rx_window_inc:00 40
+
+mem_lmp_version: 09 59 00 B0 00    #04 0a 00 e9 12
+
+mem_eeprom_base:30 6f
+mem_eeprom_block_size:20
+
+mem_context_number:01
+
+mem_rf_init_data_new:
+# tx power
+55 d0
+56 c0
+57 4c
+58 3c
+59 50
+ff
+mem_rf_init_ptr:mem_rf_init_data_new
Index: Standard_mouse/c51/patch/sch.rom
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/patch/sch.rom	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/patch/sch.rom	(working copy)
@@ -0,0 +1,939 @@
+mem_patch00:09
+mem_patch10:40
+mem_patch11:0c
+mem_patch14:80
+mem_patch15:13
+mem_patch16:f0
+mem_patch20:20
+mem_patch22:40
+mem_patch23:08
+mem_patch24:08
+mem_patch25:80
+mem_patch26:0e
+mem_patch27:f2
+mem_patch28:04
+mem_patch29:20
+mem_patch32:20
+mem_patch3e:88
+mem_patch3f:03
+
+##49   #mem_patch00	#49 enable HID
+##02   #mem_patch01	#02 enable HID
+##00   #mem_patch02
+##00   #mem_patch03
+##60   #mem_patch04	#60 enable HID
+##02   #mem_patch05	#02 enable HID
+##00   #mem_patch06
+##80   #mem_patch07	#80 enable HID
+##00   #mem_patch08
+##10   #mem_patch09	#10 enable HID
+##01   #mem_patch0A	#01 enable HID
+##00   #mem_patch0B
+##00   #mem_patch0C
+##00   #mem_patch0D
+##00   #mem_patch0E
+##00   #mem_patch0F
+##40   #mem_patch10
+##0c   #mem_patch11
+##00   #mem_patch12
+##00   #mem_patch13
+##80   #mem_patch14
+##13   #mem_patch15
+##f0   #mem_patch16
+##00   #mem_patch17
+##00   #mem_patch18
+##01   #mem_patch19	#01 enable HID
+##00   #mem_patch1A
+##00   #mem_patch1B
+##00   #mem_patch1C
+##00   #mem_patch1D
+##00   #mem_patch1E
+##00   #mem_patch1F
+##20   #mem_patch20
+##00   #mem_patch21
+##40   #mem_patch22
+##08   #mem_patch23
+##08   #mem_patch24
+##80   #mem_patch25
+##0e   #mem_patch26
+##d0   #mem_patch27
+##04   #mem_patch28
+##20   #mem_patch29
+##60   #mem_patch2A	#60 enable HID
+##41   #mem_patch2B	#41 enable HID
+##00   #mem_patch2C
+##00   #mem_patch2D
+##00   #mem_patch2E
+##00   #mem_patch2F
+##00   #mem_patch30
+##00   #mem_patch31
+##20   #mem_patch32
+##00   #mem_patch33
+##00   #mem_patch34
+##40   #mem_patch35	#40 enable HID
+##00   #mem_patch36
+##00   #mem_patch37
+##00   #mem_patch38
+##01   #mem_patch39	#01 enable HID
+##00   #mem_patch3A
+##00   #mem_patch3B
+##00   #mem_patch3C
+##00   #mem_patch3D
+##88   #mem_patch3E
+##03   #mem_patch3F
+
+
+#mem_class: 80 25 00
+#mem_lap:ab ab 66 63 5d 6c
+#mem_local_name_length:
+#'bt mouse
+#mem_sniff_param_interval:0c 00
+#mem_sniff_param_attempt:01
+#mem_sniff_param_timeout:01
+#mem_unsniff2sniff_timer:0a
+mem_ssp_enable:00
+#mem_sp_iocap_local:03 00 04
+mem_ui_profile_supported:01
+
+#mem_eir_enable:01
+
+#mem_all_uuid_16bits:
+#06
+#03#Type: Complete list of 16-bit UUIDs
+#1100 0001 0210 2411  0012  0100
+
+mem_all_uuid_128bits:00
+
+#mouse uuid
+#mem_device_uuid_list:
+#04 0011 0100 1002 1124
+#00 01 00 00
+#36 01 61
+#09
+#00
+#00
+#0a
+#00
+#01
+#00
+#09
+#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#YiChip
+#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#YiChip
+#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
+#0c
+#80
+#09
+#02
+#0d
+#28
+#00
+#09
+#02
+#0e
+#28
+#01
+#
+#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#SpecificationID
+#09 01 03#DeviceID Spec Version:1.3
+#
+#09 02 01# VendorID
+#09 0a 5c#Unknown See http://www.bluetooth.org/assigned-number.htm
+#
+#09 02 02#ProductID
+#09 00 01#0x0001
+#
+#09 02 03#Version
+#09 01 29#Product Version:1.2.9
+#09
+#02
+#04
+#28
+#01
+#09
+#02
+#05
+#09
+#00
+#02
+#00
+#00
+#
+#01 00 01
+#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
+
+#mem_ui_uuid_table:mem_device_uuid_list
+#Auto reconnection after power on
+mem_device_option:42
+#mem_ptt:0
+#mem_features:
+#ff
+#ff
+#8f
+#f8	#fe--EDR  F8--BR
+#9b	#AFHclose 83
+#9d
+#51
+#82
+
+#bluetootch param init
+mem_sp_flag:00
+mem_lpm_current_mult:00
+mem_master_sp_flag:00
+mem_le_ch_mapped:27
+mem_ui_button_gpio:ff
+mem_led_gpio:ff
+
+#2=mouse 4=dongle 6=ukey 7=ir
+mem_lpm_mode:01
+mem_lpm_mult:20
+mem_lpm_mult_timeout:03
+mem_lpm_overhead:08
+mem_lpm_interval:00 00
+mem_scan_mode:00
+mem_ipc_tx_evt_buff:02 01
+
+mem_adc_config_flag:04
+mem_adc_channel:30
+mem_adc_0v:9f 3e
+mem_adc_3v:cd 4d
+
+
+mem_le_adv_own_addr_type:00
+mem_le_adv_channel_map:07 
+mem_le_adv_filter_policy:00
+mem_le_transmit_window:50
+mem_le_notify_handle:1a
+mem_le_lap:ab b9 12 0e 10 26			#bluetooth MAC address
+mem_le_name_len:			#bluetooth name
+'BLE Mouse
+
+mem_le_local_mtu:17
+mem_le_adv_type:00
+mem_le_adv_direct_addr_type:01
+mem_le_adv_direct_addr:00 00 00 00 00 00
+mem_le_adv_enable:00
+
+mem_le_adv_data_len:1f
+mem_le_adv_data:
+#appearance
+03 19 c2 03
+
+#uuid
+03 03 12 18
+
+#flag 
+02 01 05
+
+#name
+'\09BLE Mouse
+
+
+mem_le_scan_data_len:1f
+mem_le_scan_data:
+#name
+'\09BLE Mouse
+
+
+#attribute list: handle 2bytes, uuid 2bytes, length 1bytes, attribute Nbytes
+mem_device_le_att_list:
+
+#Primary service GAP ------
+01 00 02 00 28 02 00 18 
+
+#Device name
+02 00 02 03 28 01 0a
+03 00 02 00 2a
+'BLE Mouse
+
+#Appearance
+04 00 02 03 28 01 02
+05 00 02 01 2a 02 c2 03 #3c2=hid mouse
+
+#Peripheral Preferred Connection Parameters
+06 00 02 03 28 01 02
+07 00 02 04 2a 08 06 00 06 00 64 00 2c 01 # interval 6ms, latency 100, timeout 300
+
+#Primary service GATT ------
+08 00 02 00 28 02 01 18
+#Service changed
+09 00 02 03 28 01 20
+0a 00 02 05 2a 00
+#Client Characteristic Configuration
+0b 00 02 02 29 02 00 00
+#Primary service device information ------
+0c 00 02 00 28 02 0a 18
+#Manufacturer Name
+0d 00 02 03 28 01 02
+0e 00 02 29 2a 06 59 69 43 68 69 70
+#PNP id
+0f 00 02 03 28 01 02
+10 00 02 50 2a 07 02 35 12 22 aa 01 00
+#Primary service battery ------
+11 00 02 00 28 02 0f 18
+#Battery level
+12 00 02 03 28 01 02
+13 00 02 19 2a 01 33
+#Client Characteristic
+14 00 02 02 29 02 00 00
+
+#Primary service hid ------
+15 00 02 00 28 02 12 18
+
+#Protocol mode
+16 00 02 03 28 01 06
+17 00 02 4e 2a 01 01
+
+#Hid report
+18 00 02 03 28 01 1a
+19 00 02 4d 2a 07 00 00 00 00 00 00 00
+
+#Client Characteristic
+1a 00 02 02 29 02 00 00
+
+#Report reference
+1b 00 02 08 29 02 01 01 # report id=1, type=1 input
+
+#Report map
+1c 00 02 03 28 01 0a
+1d 00 02 4b 2a 45 # length 72 bytes
+
+05 01 # Usage Page(Generic Desktop)
+09 02 # Usage(Mouse)
+a1 01 # Collection(Application)
+85 01 # Report ID(1)
+09 01 # Usage(Pointer)
+a1 00 # Collection(Physical)
+05 09 # Usage Page(Buttons)
+19 01 # Usage Minimum(1)
+29 08 # Usage Maximum(8)
+15 00 # Logical Minimum(0).
+25 01 # Logical Maximum(1)
+75 01 # Report Size(1)
+95 08 # Report Count(8)
+81 02 # Input(Data Variable Absolute)
+
+05 01 # Usage Page(Generic Desktop)
+09 30 # Usage(X)
+09 31 # Usage(Y)
+16 01 f8 # Logical Minimum(-2047)
+26 ff 07 # Logical Maximum(2047)
+75 10 # Report Size(16)
+95 02 # Report Count(2)
+81 06 # Input(Data Variable Relative)
+
+09 38 # Usage(Wheel)
+15 81 # Logical Minimum(-127)
+25 7f # Logical Maximum(127)
+75 08 # Report Size(8)
+95 01 # Report Count(1)
+81 06 # Input(Data Variable Relative)
+05 0c # Usage Page(Consumer)
+0a 38 02 # Usage(AC Pan)
+95 01 # Report Count(1)
+81 06 # Input(Data Variable Relative)
+c0 # End Collection
+c0 # End Collection
+
+#Boot mouse input report
+1e 00 02 03 28 01 1a
+1f 00 02 33 2a 08 00 00 00 00 00 00 00 00
+
+#Client Characteristic
+20 00 02 02 29 02 01 00
+
+#Hid information
+21 00 02 03 28 01 02
+22 00 02 4a 2a 04 01 01 00 03
+
+#Hid control point
+23 00 02 03 28 01 04
+24 00 02 4c 2a 00
+
+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
+
+#End of Attribute list
+00 00
+
+mem_ui_le_uuid_table:mem_device_le_att_list
+
+mem_le_rx_winsows:50
+
+mem_le_interal_min:
+07 00 #min interval
+07 00 #max interval
+05 00 #latency
+2c 01 #timeout
+
+mem_empty_count_user:00
+#mem_le_att_report1:13 00
+mem_le_att_report2:19 00
+mem_le_pairing_handle:22 00
+mem_le_pairing_mode:01
+mem_le_flag:01
+
+mem_tx_power:02#3dbm
+
+mem_le_start_fast_conn_count:01
+mem_le_init_eeprom_base_count:01
+
+#24g init
+mem_new_24g_mode:01#tx
+mem_new_24g_data_type:01	#mouse 1,kb 2
+mem_new_24g_max_retry:04#max tx retry
+mem_new_24g_no_ack:00#with ack
+mem_new_24g_rx_window:c0 12	#400us
+mem_new_24g_interval:19
+mem_new_24g_interval_min:19
+mem_new_24g_interval_max:1c
+mem_new_24g_ch_map1:00 13 2c 42
+mem_new_24g_ch_map2:06 15 36 48
+mem_new_24g_ch_map3:0f 1a 3a 4c
+mem_new_24g_ch_map4:11 23 31 4d
+mem_new_24g_pairing_sm:ff
+mem_new_24g_paring_addr:20 15 10 05
+mem_new_24g_common_temp:00 00 00 00 00 00 00 00 00 00
+mem_new_24g_enter_hibernate:00 48 60 00 00 00 00 00#10 min
+
+
+mem_lpm_config:8f 1b ce
+mem_lpm_buckcnt:0a 0b ef 0f
+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_page_to:00 20
+mem_rx_window_init:80 04
+mem_rx_window_sniff:00 08
+mem_le_rx_window_inc:00 40
+
+mem_lmp_version: 09 59 00 B0 00    #04 0a 00 e9 12
+
+mem_eeprom_base:30 6f
+mem_eeprom_block_size:20
+
+mem_context_number:01
+
+mem_rf_init_data_new:
+# tx power
+55 d0
+56 c0
+57 4c
+58 3c
+59 50
+ff
+mem_rf_init_ptr:mem_rf_init_data_new
Index: Standard_mouse/c51/patch/sched.rom
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/patch/sched.rom	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/patch/sched.rom	(working copy)
@@ -0,0 +1,939 @@
+mem_patch00:09
+mem_patch10:40
+mem_patch11:0c
+mem_patch14:80
+mem_patch15:13
+mem_patch16:f0
+mem_patch20:20
+mem_patch22:40
+mem_patch23:08
+mem_patch24:08
+mem_patch25:80
+mem_patch26:0e
+mem_patch27:f2
+mem_patch28:04
+mem_patch29:20
+mem_patch32:20
+mem_patch3e:88
+mem_patch3f:03
+
+##49   #mem_patch00	#49 enable HID
+##02   #mem_patch01	#02 enable HID
+##00   #mem_patch02
+##00   #mem_patch03
+##60   #mem_patch04	#60 enable HID
+##02   #mem_patch05	#02 enable HID
+##00   #mem_patch06
+##80   #mem_patch07	#80 enable HID
+##00   #mem_patch08
+##10   #mem_patch09	#10 enable HID
+##01   #mem_patch0A	#01 enable HID
+##00   #mem_patch0B
+##00   #mem_patch0C
+##00   #mem_patch0D
+##00   #mem_patch0E
+##00   #mem_patch0F
+##40   #mem_patch10
+##0c   #mem_patch11
+##00   #mem_patch12
+##00   #mem_patch13
+##80   #mem_patch14
+##13   #mem_patch15
+##f0   #mem_patch16
+##00   #mem_patch17
+##00   #mem_patch18
+##01   #mem_patch19	#01 enable HID
+##00   #mem_patch1A
+##00   #mem_patch1B
+##00   #mem_patch1C
+##00   #mem_patch1D
+##00   #mem_patch1E
+##00   #mem_patch1F
+##20   #mem_patch20
+##00   #mem_patch21
+##40   #mem_patch22
+##08   #mem_patch23
+##08   #mem_patch24
+##80   #mem_patch25
+##0e   #mem_patch26
+##d0   #mem_patch27
+##04   #mem_patch28
+##20   #mem_patch29
+##60   #mem_patch2A	#60 enable HID
+##41   #mem_patch2B	#41 enable HID
+##00   #mem_patch2C
+##00   #mem_patch2D
+##00   #mem_patch2E
+##00   #mem_patch2F
+##00   #mem_patch30
+##00   #mem_patch31
+##20   #mem_patch32
+##00   #mem_patch33
+##00   #mem_patch34
+##40   #mem_patch35	#40 enable HID
+##00   #mem_patch36
+##00   #mem_patch37
+##00   #mem_patch38
+##01   #mem_patch39	#01 enable HID
+##00   #mem_patch3A
+##00   #mem_patch3B
+##00   #mem_patch3C
+##00   #mem_patch3D
+##88   #mem_patch3E
+##03   #mem_patch3F
+
+mem_lpm_config:8f 1b ce
+mem_lpm_buckcnt:0a 0b ef 0f
+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_page_to:00 20
+mem_rx_window_init:80 04
+mem_rx_window_sniff:00 08
+mem_le_rx_window_inc:00 40
+
+mem_lmp_version: 09 59 00 B0 00    #04 0a 00 e9 12
+
+mem_eeprom_base:30 6f
+mem_eeprom_block_size:20
+
+mem_context_number:01
+
+mem_rf_init_data_new:
+# tx power
+55 d0
+56 c0
+57 4c
+58 3c
+59 50
+ff
+mem_rf_init_ptr:mem_rf_init_data_new
+
+#mem_class: 80 25 00
+#mem_lap:ab ab 66 63 5d 6c
+#mem_local_name_length:
+#'bt mouse
+#mem_sniff_param_interval:0c 00
+#mem_sniff_param_attempt:01
+#mem_sniff_param_timeout:01
+#mem_unsniff2sniff_timer:0a
+mem_ssp_enable:00
+#mem_sp_iocap_local:03 00 04
+mem_ui_profile_supported:01
+
+#mem_eir_enable:01
+
+#mem_all_uuid_16bits:
+#06
+#03#Type: Complete list of 16-bit UUIDs
+#1100 0001 0210 2411  0012  0100
+
+mem_all_uuid_128bits:00
+
+#mouse uuid
+#mem_device_uuid_list:
+#04 0011 0100 1002 1124
+#00 01 00 00
+#36 01 61
+#09
+#00
+#00
+#0a
+#00
+#01
+#00
+#09
+#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#YiChip
+#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#YiChip
+#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
+#0c
+#80
+#09
+#02
+#0d
+#28
+#00
+#09
+#02
+#0e
+#28
+#01
+#
+#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#SpecificationID
+#09 01 03#DeviceID Spec Version:1.3
+#
+#09 02 01# VendorID
+#09 0a 5c#Unknown See http://www.bluetooth.org/assigned-number.htm
+#
+#09 02 02#ProductID
+#09 00 01#0x0001
+#
+#09 02 03#Version
+#09 01 29#Product Version:1.2.9
+#09
+#02
+#04
+#28
+#01
+#09
+#02
+#05
+#09
+#00
+#02
+#00
+#00
+#
+#01 00 01
+#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
+
+#mem_ui_uuid_table:mem_device_uuid_list
+#Auto reconnection after power on
+mem_device_option:42
+#mem_ptt:0
+#mem_features:
+#ff
+#ff
+#8f
+#f8	#fe--EDR  F8--BR
+#9b	#AFHclose 83
+#9d
+#51
+#82
+
+#bluetootch param init
+mem_sp_flag:00
+mem_lpm_current_mult:00
+mem_master_sp_flag:00
+mem_le_ch_mapped:27
+mem_ui_button_gpio:ff
+mem_led_gpio:ff
+
+#2=mouse 4=dongle 6=ukey 7=ir
+mem_lpm_mode:01
+mem_lpm_mult:20
+mem_lpm_mult_timeout:03
+mem_lpm_overhead:08
+mem_lpm_interval:00 00
+mem_scan_mode:00
+mem_ipc_tx_evt_buff:02 01
+
+mem_adc_config_flag:04
+mem_adc_channel:30
+mem_adc_0v:9f 3e
+mem_adc_3v:cd 4d
+
+
+mem_le_adv_own_addr_type:00
+mem_le_adv_channel_map:07 
+mem_le_adv_filter_policy:00
+mem_le_transmit_window:50
+mem_le_notify_handle:1a
+mem_le_lap:ab b9 12 0e 10 26			#bluetooth MAC address
+mem_le_name_len:			#bluetooth name
+'BLE Mouse
+
+mem_le_local_mtu:17
+mem_le_adv_type:00
+mem_le_adv_direct_addr_type:01
+mem_le_adv_direct_addr:00 00 00 00 00 00
+mem_le_adv_enable:00
+
+mem_le_adv_data_len:1f
+mem_le_adv_data:
+#appearance
+03 19 c2 03
+
+#uuid
+03 03 12 18
+
+#flag 
+02 01 05
+
+#name
+'\09BLE Mouse
+
+
+mem_le_scan_data_len:1f
+mem_le_scan_data:
+#name
+'\09BLE Mouse
+
+
+#attribute list: handle 2bytes, uuid 2bytes, length 1bytes, attribute Nbytes
+mem_device_le_att_list:
+
+#Primary service GAP ------
+01 00 02 00 28 02 00 18 
+
+#Device name
+02 00 02 03 28 01 0a
+03 00 02 00 2a
+'BLE Mouse
+
+#Appearance
+04 00 02 03 28 01 02
+05 00 02 01 2a 02 c2 03 #3c2=hid mouse
+
+#Peripheral Preferred Connection Parameters
+06 00 02 03 28 01 02
+07 00 02 04 2a 08 06 00 06 00 64 00 2c 01 # interval 6ms, latency 100, timeout 300
+
+#Primary service GATT ------
+08 00 02 00 28 02 01 18
+#Service changed
+09 00 02 03 28 01 20
+0a 00 02 05 2a 00
+#Client Characteristic Configuration
+0b 00 02 02 29 02 00 00
+#Primary service device information ------
+0c 00 02 00 28 02 0a 18
+#Manufacturer Name
+0d 00 02 03 28 01 02
+0e 00 02 29 2a 06 59 69 43 68 69 70
+#PNP id
+0f 00 02 03 28 01 02
+10 00 02 50 2a 07 02 35 12 22 aa 01 00
+#Primary service battery ------
+11 00 02 00 28 02 0f 18
+#Battery level
+12 00 02 03 28 01 02
+13 00 02 19 2a 01 33
+#Client Characteristic
+14 00 02 02 29 02 00 00
+
+#Primary service hid ------
+15 00 02 00 28 02 12 18
+
+#Protocol mode
+16 00 02 03 28 01 06
+17 00 02 4e 2a 01 01
+
+#Hid report
+18 00 02 03 28 01 1a
+19 00 02 4d 2a 07 00 00 00 00 00 00 00
+
+#Client Characteristic
+1a 00 02 02 29 02 00 00
+
+#Report reference
+1b 00 02 08 29 02 01 01 # report id=1, type=1 input
+
+#Report map
+1c 00 02 03 28 01 0a
+1d 00 02 4b 2a 45 # length 72 bytes
+
+05 01 # Usage Page(Generic Desktop)
+09 02 # Usage(Mouse)
+a1 01 # Collection(Application)
+85 01 # Report ID(1)
+09 01 # Usage(Pointer)
+a1 00 # Collection(Physical)
+05 09 # Usage Page(Buttons)
+19 01 # Usage Minimum(1)
+29 08 # Usage Maximum(8)
+15 00 # Logical Minimum(0).
+25 01 # Logical Maximum(1)
+75 01 # Report Size(1)
+95 08 # Report Count(8)
+81 02 # Input(Data Variable Absolute)
+
+05 01 # Usage Page(Generic Desktop)
+09 30 # Usage(X)
+09 31 # Usage(Y)
+16 01 f8 # Logical Minimum(-2047)
+26 ff 07 # Logical Maximum(2047)
+75 10 # Report Size(16)
+95 02 # Report Count(2)
+81 06 # Input(Data Variable Relative)
+
+09 38 # Usage(Wheel)
+15 81 # Logical Minimum(-127)
+25 7f # Logical Maximum(127)
+75 08 # Report Size(8)
+95 01 # Report Count(1)
+81 06 # Input(Data Variable Relative)
+05 0c # Usage Page(Consumer)
+0a 38 02 # Usage(AC Pan)
+95 01 # Report Count(1)
+81 06 # Input(Data Variable Relative)
+c0 # End Collection
+c0 # End Collection
+
+#Boot mouse input report
+1e 00 02 03 28 01 1a
+1f 00 02 33 2a 08 00 00 00 00 00 00 00 00
+
+#Client Characteristic
+20 00 02 02 29 02 01 00
+
+#Hid information
+21 00 02 03 28 01 02
+22 00 02 4a 2a 04 01 01 00 03
+
+#Hid control point
+23 00 02 03 28 01 04
+24 00 02 4c 2a 00
+
+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
+
+#End of Attribute list
+00 00
+
+mem_ui_le_uuid_table:mem_device_le_att_list
+
+mem_le_rx_winsows:50
+
+mem_le_interal_min:
+07 00 #min interval
+07 00 #max interval
+05 00 #latency
+2c 01 #timeout
+
+mem_empty_count_user:00
+#mem_le_att_report1:13 00
+mem_le_att_report2:19 00
+mem_le_pairing_handle:22 00
+mem_le_pairing_mode:01
+mem_le_flag:01
+
+mem_tx_power:02#3dbm
+
+mem_le_start_fast_conn_count:01
+mem_le_init_eeprom_base_count:01
+
+#24g init
+mem_new_24g_mode:01#tx
+mem_new_24g_data_type:01	#mouse 1,kb 2
+mem_new_24g_max_retry:04#max tx retry
+mem_new_24g_no_ack:00#with ack
+mem_new_24g_rx_window:c0 12	#400us
+mem_new_24g_interval:19
+mem_new_24g_interval_min:19
+mem_new_24g_interval_max:1c
+mem_new_24g_ch_map1:00 13 2c 42
+mem_new_24g_ch_map2:06 15 36 48
+mem_new_24g_ch_map3:0f 1a 3a 4c
+mem_new_24g_ch_map4:11 23 31 4d
+mem_new_24g_pairing_sm:ff
+mem_new_24g_paring_addr:20 15 10 05
+mem_new_24g_common_temp:00 00 00 00 00 00 00 00 00 00
+mem_new_24g_enter_hibernate:00 48 60 00 00 00 00 00#10 min
+
+
Index: Standard_mouse/c51/patch/user.dat
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/patch/user.dat	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/patch/user.dat	(working copy)
@@ -0,0 +1,820 @@
+
+#mem_class: 80 25 00
+#mem_lap:ab ab 66 63 5d 6c
+#mem_local_name_length:
+#'bt mouse
+#mem_sniff_param_interval:0c 00
+#mem_sniff_param_attempt:01
+#mem_sniff_param_timeout:01
+#mem_unsniff2sniff_timer:0a
+mem_ssp_enable:00
+#mem_sp_iocap_local:03 00 04
+mem_ui_profile_supported:01
+
+#mem_eir_enable:01
+
+#mem_all_uuid_16bits:
+#06
+#03#Type: Complete list of 16-bit UUIDs
+#1100 0001 0210 2411  0012  0100
+
+mem_all_uuid_128bits:00
+
+#mouse uuid
+#mem_device_uuid_list:
+#04 0011 0100 1002 1124
+#00 01 00 00
+#36 01 61
+#09
+#00
+#00
+#0a
+#00
+#01
+#00
+#09
+#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#YiChip
+#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#YiChip
+#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
+#0c
+#80
+#09
+#02
+#0d
+#28
+#00
+#09
+#02
+#0e
+#28
+#01
+#
+#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#SpecificationID
+#09 01 03#DeviceID Spec Version:1.3
+#
+#09 02 01# VendorID
+#09 0a 5c#Unknown See http://www.bluetooth.org/assigned-number.htm
+#
+#09 02 02#ProductID
+#09 00 01#0x0001
+#
+#09 02 03#Version
+#09 01 29#Product Version:1.2.9
+#09
+#02
+#04
+#28
+#01
+#09
+#02
+#05
+#09
+#00
+#02
+#00
+#00
+#
+#01 00 01
+#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
+
+#mem_ui_uuid_table:mem_device_uuid_list
+#Auto reconnection after power on
+mem_device_option:42
+#mem_ptt:0
+#mem_features:
+#ff
+#ff
+#8f
+#f8	#fe--EDR  F8--BR
+#9b	#AFHclose 83
+#9d
+#51
+#82
+
+#bluetootch param init
+mem_sp_flag:00
+mem_lpm_current_mult:00
+mem_master_sp_flag:00
+mem_le_ch_mapped:27
+mem_ui_button_gpio:ff
+mem_led_gpio:ff
+
+#2=mouse 4=dongle 6=ukey 7=ir
+mem_lpm_mode:01
+mem_lpm_mult:20
+mem_lpm_mult_timeout:03
+mem_lpm_overhead:08
+mem_lpm_interval:00 00
+mem_scan_mode:00
+mem_ipc_tx_evt_buff:02 01
+
+mem_adc_config_flag:04
+mem_adc_channel:30
+mem_adc_0v:9f 3e
+mem_adc_3v:cd 4d
+
+
+mem_le_adv_own_addr_type:00
+mem_le_adv_channel_map:07 
+mem_le_adv_filter_policy:00
+mem_le_transmit_window:50
+mem_le_notify_handle:1a
+mem_le_lap:ab b9 12 0e 10 26			#bluetooth MAC address
+mem_le_name_len:			#bluetooth name
+'BLE Mouse
+
+mem_le_local_mtu:17
+mem_le_adv_type:00
+mem_le_adv_direct_addr_type:01
+mem_le_adv_direct_addr:00 00 00 00 00 00
+mem_le_adv_enable:00
+
+mem_le_adv_data_len:1f
+mem_le_adv_data:
+#appearance
+03 19 c2 03
+
+#uuid
+03 03 12 18
+
+#flag 
+02 01 05
+
+#name
+'\09BLE Mouse
+
+
+mem_le_scan_data_len:1f
+mem_le_scan_data:
+#name
+'\09BLE Mouse
+
+
+#attribute list: handle 2bytes, uuid 2bytes, length 1bytes, attribute Nbytes
+mem_device_le_att_list:
+
+#Primary service GAP ------
+01 00 02 00 28 02 00 18 
+
+#Device name
+02 00 02 03 28 01 0a
+03 00 02 00 2a
+'BLE Mouse
+
+#Appearance
+04 00 02 03 28 01 02
+05 00 02 01 2a 02 c2 03 #3c2=hid mouse
+
+#Peripheral Preferred Connection Parameters
+06 00 02 03 28 01 02
+07 00 02 04 2a 08 06 00 06 00 64 00 2c 01 # interval 6ms, latency 100, timeout 300
+
+#Primary service GATT ------
+08 00 02 00 28 02 01 18
+#Service changed
+09 00 02 03 28 01 20
+0a 00 02 05 2a 00
+#Client Characteristic Configuration
+0b 00 02 02 29 02 00 00
+#Primary service device information ------
+0c 00 02 00 28 02 0a 18
+#Manufacturer Name
+0d 00 02 03 28 01 02
+0e 00 02 29 2a 06 59 69 43 68 69 70
+#PNP id
+0f 00 02 03 28 01 02
+10 00 02 50 2a 07 02 35 12 22 aa 01 00
+#Primary service battery ------
+11 00 02 00 28 02 0f 18
+#Battery level
+12 00 02 03 28 01 02
+13 00 02 19 2a 01 33
+#Client Characteristic
+14 00 02 02 29 02 00 00
+
+#Primary service hid ------
+15 00 02 00 28 02 12 18
+
+#Protocol mode
+16 00 02 03 28 01 06
+17 00 02 4e 2a 01 01
+
+#Hid report
+18 00 02 03 28 01 1a
+19 00 02 4d 2a 07 00 00 00 00 00 00 00
+
+#Client Characteristic
+1a 00 02 02 29 02 00 00
+
+#Report reference
+1b 00 02 08 29 02 01 01 # report id=1, type=1 input
+
+#Report map
+1c 00 02 03 28 01 0a
+1d 00 02 4b 2a 45 # length 72 bytes
+
+05 01 # Usage Page(Generic Desktop)
+09 02 # Usage(Mouse)
+a1 01 # Collection(Application)
+85 01 # Report ID(1)
+09 01 # Usage(Pointer)
+a1 00 # Collection(Physical)
+05 09 # Usage Page(Buttons)
+19 01 # Usage Minimum(1)
+29 08 # Usage Maximum(8)
+15 00 # Logical Minimum(0).
+25 01 # Logical Maximum(1)
+75 01 # Report Size(1)
+95 08 # Report Count(8)
+81 02 # Input(Data Variable Absolute)
+
+05 01 # Usage Page(Generic Desktop)
+09 30 # Usage(X)
+09 31 # Usage(Y)
+16 01 f8 # Logical Minimum(-2047)
+26 ff 07 # Logical Maximum(2047)
+75 10 # Report Size(16)
+95 02 # Report Count(2)
+81 06 # Input(Data Variable Relative)
+
+09 38 # Usage(Wheel)
+15 81 # Logical Minimum(-127)
+25 7f # Logical Maximum(127)
+75 08 # Report Size(8)
+95 01 # Report Count(1)
+81 06 # Input(Data Variable Relative)
+05 0c # Usage Page(Consumer)
+0a 38 02 # Usage(AC Pan)
+95 01 # Report Count(1)
+81 06 # Input(Data Variable Relative)
+c0 # End Collection
+c0 # End Collection
+
+#Boot mouse input report
+1e 00 02 03 28 01 1a
+1f 00 02 33 2a 08 00 00 00 00 00 00 00 00
+
+#Client Characteristic
+20 00 02 02 29 02 01 00
+
+#Hid information
+21 00 02 03 28 01 02
+22 00 02 4a 2a 04 01 01 00 03
+
+#Hid control point
+23 00 02 03 28 01 04
+24 00 02 4c 2a 00
+
+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
+
+#End of Attribute list
+00 00
+
+mem_ui_le_uuid_table:mem_device_le_att_list
+
+mem_le_rx_winsows:50
+
+mem_le_interal_min:
+07 00 #min interval
+07 00 #max interval
+05 00 #latency
+2c 01 #timeout
+
+mem_empty_count_user:00
+#mem_le_att_report1:13 00
+mem_le_att_report2:19 00
+mem_le_pairing_handle:22 00
+mem_le_pairing_mode:01
+mem_le_flag:01
+
+mem_tx_power:02#3dbm
+
+mem_le_start_fast_conn_count:01
+mem_le_init_eeprom_base_count:01
+
+#24g init
+mem_new_24g_mode:01#tx
+mem_new_24g_data_type:01	#mouse 1,kb 2
+mem_new_24g_max_retry:04#max tx retry
+mem_new_24g_no_ack:00#with ack
+mem_new_24g_rx_window:c0 12	#400us
+mem_new_24g_interval:19
+mem_new_24g_interval_min:19
+mem_new_24g_interval_max:1c
+mem_new_24g_ch_map1:00 13 2c 42
+mem_new_24g_ch_map2:06 15 36 48
+mem_new_24g_ch_map3:0f 1a 3a 4c
+mem_new_24g_ch_map4:11 23 31 4d
+mem_new_24g_pairing_sm:ff
+mem_new_24g_paring_addr:20 15 10 05
+mem_new_24g_common_temp:00 00 00 00 00 00 00 00 00 00
+mem_new_24g_enter_hibernate:00 48 60 00 00 00 00 00#10 min
+
+
Index: Standard_mouse/c51/ram.c
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/ram.c	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/ram.c	(working copy)
@@ -0,0 +1,10 @@
+
+extern void YC_SysMain(void);
+
+
+void main()
+{
+	YC_SysMain();
+	//while(1){
+	//}
+}
Index: Standard_mouse/c51/sensor.h
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/sensor.h	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/sensor.h	(working copy)
@@ -0,0 +1,44 @@
+#ifndef _YC_SENSOR_H_
+#define _YC_SENSOR_H_
+
+#define FCT3065_ID						0x31
+#define PIXART_ID						0x30		// PAW3205,PAW3212
+#define PAW3205_ID						0xD0
+#define PAW3212_ID						0x02
+#define PAW3204UL_ID					0xD1
+#define PAW3204DB_ID					0x50
+#define X816_ID							0x54
+#define SENSOR_POWER					0x06
+#define MA8650_ID						0x5a
+
+#define SENSOR_POWER					0x06
+#define PAW3212_DPI0					21
+#define PAW3212_DPI1					32
+#define PAW3212_DPI2					42
+#define PAW3212_DPI3					63
+
+#define SENSOR_X_ADDR					0x03
+#define SENSOR_Y_ADDR					0x04
+#define SENSOR_XY_H						0x12
+#define SENSOR_POWER					0x06
+#define SENSOR_MOTION					0x02
+
+#define MOUSE_3205_ENABLE            	1//0 disable bt
+#define MOUSE_3204_ENABLE            	1//0 disable bt
+#define MOUSE_3212_ENABLE            	1//0 disable bt
+#define MOUSE_8650_ENABLE            	1//0 disable bt
+//extern s16_t X_data,Y_data;
+
+void Sensor_spi_disable(void);
+void SPI_TwReset (void);
+u8_t SPI_ResetSensor (void);
+void sensorPowerDown (void);
+void sensorPowerOn (void);
+//void Sensor_LED_DC_ON (void);
+//void Sensor_LED_DC_OFF (void);
+void Drawing_optima(void);
+void Drawing_optima_init(void);
+//void mouseTimer4ms_start(void);
+
+#endif
+
Index: Standard_mouse/c51/sensor.c
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/sensor.c	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/sensor.c	(working copy)
@@ -0,0 +1,299 @@
+#include "common.h"
+#include "Spi.h"
+#include"Gpio.h"
+#include "global_variable.h"
+
+#define FCT3065_ID						0x31
+#define PIXART_ID						0x30		// PAW3205,PAW3212
+#define PAW3205_ID						0xD0
+#define PAW3212_ID						0x02
+#define PAW3204UL_ID					0xD1
+#define PAW3204DB_ID					0x50
+#define X816_ID							0x54
+#define SENSOR_POWER					0x06
+#define MA8650_ID						0x5a
+
+#define SENSOR_POWER					0x06
+#define PAW3212_DPI0					21
+#define PAW3212_DPI1					32
+#define PAW3212_DPI2					42
+#define PAW3212_DPI3					63
+
+#define OSC_FREQ        24
+#define TIMER_MODE0     0x00
+#define TIMER_MODE1     0x01
+#define TIMER_MODE2     0x02
+#define TIMER_MODE3     0x03
+#define GPIO_ACTIVE 0
+#define GPIO_NEGATIVE 1
+
+#define MOUSE_3205_ENABLE            	1//0 disable bt
+#define MOUSE_3204_ENABLE            	1//0 disable bt
+#define MOUSE_3212_ENABLE            	1//0 disable bt
+#define MOUSE_8650_ENABLE            	1//0 disable b
+
+//static s16_t X_sum, Y_sum, X_pre, Y_pre;
+//static bool asm_flag;
+//s16_t X_data,Y_data;
+/*
+void mouseTimer4ms_start(void)
+{    
+	TMOD &= 0xF0;	
+	TMOD |= TIMER_MODE1;        //    TH0=(65536-1085)/256; //    TL0=(65536-1085)%256;    
+	TH0=0x47;
+	TL0=0x00; 
+	IE = 0;
+	EA=1;        
+	ET0=1;       
+	TR0=1;  
+	X_sum = 0;
+	Y_sum = 0;
+ 	X_pre = 0;
+ 	Y_pre = 0;
+	asm_flag = 0;
+	X_data = 0;
+	Y_data = 0;
+	mouseTimer4ms();
+}
+
+void T0_time() interrupt 1
+{    
+	TH0=0x47;
+	TL0=0x00; 
+	mouseTimer4ms();
+}
+*/
+
+void SPI_TwReset()
+{
+	u8_t sensorId = 0;
+	REG_GPIO_SEL(1) = 1;
+	g_variable.read_sensor_count = 0;
+	while (1) 
+	{
+		g_variable.read_sensor_count++;
+		if(g_variable.read_sensor_count >= 6)
+		{
+			SPI_Initialize();
+		}
+		sensorId = SPI_ReadSensor(0) ;
+		if (( sensorId == PIXART_ID) ||(sensorId == FCT3065_ID))
+			break;
+		REG_GPIO_SEL(1) = 0;
+		REG_GPIO_OE(3) |= 0x02;
+		REG_GPIO_OUT(3) &= 0xfd;
+		REG_GPIO_OE(3) |= 0x02;
+		REG_GPIO_SEL(1) = 1;
+	} 
+}
+
+u8_t SPI_ResetSensor()
+{
+	u8_t sensorConfig=0;
+	u8_t Sensor_type = 0;
+	while (1) 
+	{
+		if (SPI_ReadSensor(0) == FCT3065_ID)// FCT3065_ID PAW3205DB_ID
+		{
+			sensorConfig = SPI_ReadSensor(SENSOR_POWER)|0x80;
+			SPI_WriteSensor(sensorConfig, SENSOR_POWER);//dpi 1300
+			Sensor_type= FCT3065_ID;
+			break;
+		}
+		else if((SPI_ReadSensor(1) == MA8650_ID))
+		{
+			Sensor_type= MA8650_ID;
+			sensorConfig = SPI_ReadSensor(SENSOR_POWER)|0x80;
+			SPI_WriteSensor(sensorConfig, SENSOR_POWER);//dpi 1300
+			break;
+		}
+		else if (SPI_ReadSensor(0) == PIXART_ID)// FCT3065_ID PAW3205DB_ID
+		{
+			if(SPI_ReadSensor(1) == X816_ID)
+			{
+				Sensor_type= FCT3065_ID;
+				break;
+			}
+#if MOUSE_3205_ENABLE
+			if ((SPI_ReadSensor(1) & 0xf0) == PAW3205_ID)// FCT3065_ID PAW3205DB_ID
+			{
+				if (SPI_ReadSensor(0x1e) & 0x01)
+					Sensor_type= PAW3204UL_ID;
+				else 
+					Sensor_type= PAW3205_ID;
+				sensorConfig = SPI_ReadSensor(SENSOR_POWER)|0x80;
+				SPI_WriteSensor(sensorConfig, SENSOR_POWER);//dpi 1300
+				break;
+			}
+#endif
+
+#if MOUSE_3204_ENABLE
+			if(((SPI_ReadSensor(1) & 0xf0) == PAW3204DB_ID))
+			{
+				Sensor_type= PAW3204DB_ID;
+				sensorConfig = SPI_ReadSensor(SENSOR_POWER)|0x80;
+				SPI_WriteSensor(sensorConfig, SENSOR_POWER);//dpi 1300
+				break;
+			}
+#endif
+			
+#if MOUSE_3212_ENABLE
+			if (SPI_ReadSensor(1) == PAW3212_ID)// FCT3065_ID PAW3205DB_ID
+			{
+				sensorConfig = SPI_ReadSensor(SENSOR_POWER)|0x80;
+				SPI_WriteSensor(sensorConfig, SENSOR_POWER);//dpi 1300
+				Sensor_type= PAW3212_ID;
+				if (SPI_ReadSensor(1) == PAW3212_ID)
+					break;
+			}
+#endif
+		}
+		SPI_TwReset();
+	}
+
+#if MOUSE_3205_ENABLE
+	if (Sensor_type== PAW3205_ID)
+	{
+		SPI_WriteSensor(0x5A,0x09);
+		SPI_WriteSensor(0x0A,0x0D);
+		SPI_WriteSensor(0x35,0x1B);
+		SPI_WriteSensor(0xDB,0x1D);
+		SPI_WriteSensor(0xB4,0x28);
+		SPI_WriteSensor(0x46,0x29);
+		SPI_WriteSensor(0x96,0x2A);
+		SPI_WriteSensor(0x8C,0x2B);
+		SPI_WriteSensor(0x6E,0x2C);
+		SPI_WriteSensor(0x64,0x2D);
+		SPI_WriteSensor(0x5F,0x38);
+		SPI_WriteSensor(0x0F,0x39);
+		SPI_WriteSensor(0x32,0x3A);
+		SPI_WriteSensor(0x47,0x3B);
+		SPI_WriteSensor(0x10,0x42);
+		SPI_WriteSensor(0x09,0x43);
+		SPI_WriteSensor(0x2E,0x54);
+		SPI_WriteSensor(0xF2,0x55);
+		SPI_WriteSensor(0xF4,0x61);
+		SPI_WriteSensor(0x70,0x63);
+		SPI_WriteSensor(0x52,0x75);
+		SPI_WriteSensor(0x41,0x76);
+		SPI_WriteSensor(0xED,0x77);
+		SPI_WriteSensor(0x23,0x78);
+		SPI_WriteSensor(0x46,0x79);
+		SPI_WriteSensor(0xE5,0x7A);
+		SPI_WriteSensor(0x48,0x7C);
+		SPI_WriteSensor(0x80,0x7D);
+		SPI_WriteSensor(0x77,0x7E);
+		SPI_WriteSensor(0x01,0x7F);
+		SPI_WriteSensor(0x00,0x0B);
+		SPI_WriteSensor(0x00,0x7F);
+		SPI_WriteSensor(0x00,0x09);
+	}
+#endif
+
+#if MOUSE_3212_ENABLE
+	if(Sensor_type== PAW3212_ID) 
+	{
+		SPI_WriteSensor(0x5a, 0x09);
+		SPI_WriteSensor(0x34, 0x26);
+		SPI_WriteSensor(0x14, 0x19);	
+		SPI_WriteSensor(0x00, 0x09);
+	}
+#endif
+
+#if MOUSE_3204_ENABLE
+	if(Sensor_type== PAW3204DB_ID)
+	{
+		SPI_WriteSensor(0x5a, 0x09);
+		SPI_WriteSensor(0x9a, 0x5b);
+		while (SPI_ReadSensor(0x0d) != 0x12)
+			SPI_WriteSensor(0x12, 0x0d);
+		while (SPI_ReadSensor(0x0e) != 0xc5)
+			SPI_WriteSensor(0xc5, 0x0e);
+		while (SPI_ReadSensor(0x53) != 0x48)
+			SPI_WriteSensor(0x48, 0x53);
+	}
+#endif
+
+	return Sensor_type;
+}
+
+void Sensor_spi_disable(void)
+{
+	REG_GPIO_SEL(1) = 0;
+	REG_GPIO_OE(3) |= 0x02;
+	REG_GPIO_OUT(3) |= 0x02;
+}
+
+void sensorPowerDown()
+{
+	u8_t config = 0;
+	SPI_TwReset();
+	config = SPI_ReadSensor(0x06) |0x08;
+	SPI_WriteSensor(config, 0x06);		//sensor Power down
+	REG_GPIO_SEL(1) = 0;
+	GPIO_SetInput(25, 0);
+	GPIO_SetInput(26, 0);
+}
+
+void sensorPowerOn()
+{
+	u8_t config = 0;
+	SPI_TwReset();
+	config = SPI_ReadSensor(0x06)&0xf7;
+	SPI_WriteSensor(config, 0x06);		//sensor Power on
+	SPI_ReadSensor(2);
+	Sensor_spi_disable();
+}
+
+/*
+void Sensor_LED_DC_ON()
+{
+	SPI_WriteSensor(0xa1, 0x05);
+}
+
+void Sensor_LED_DC_OFF()
+{
+	SPI_WriteSensor(0xb8, 0x05);
+}
+*/
+u16_t abs(s16_t data_in)
+{
+	if( data_in<=0)
+		data_in = 0 - data_in;
+	return ((u16_t) data_in);
+}
+
+
+void Drawing_optima()
+{
+	if ((g_variable.X_data > 6) ||(g_variable.X_data < -6)||(g_variable.Y_data > 6) ||(g_variable.Y_data < -6))
+		g_variable.asm_flag = 1;
+	if ((abs(g_variable.X_data) <3) &&(abs(g_variable.Y_data) <3))
+		g_variable.asm_flag = 0;
+	if(g_variable.asm_flag == 1) {
+		g_variable.X_sum = g_variable.X_sum - g_variable.X_pre + g_variable.X_data;
+		g_variable.X_pre = g_variable.X_sum/2;
+		g_variable.X_data = g_variable.X_pre;
+		g_variable.Y_sum = g_variable.Y_sum - g_variable.Y_pre + g_variable.Y_data;
+		g_variable.Y_pre = g_variable.Y_sum/2;
+		g_variable.Y_data = g_variable.Y_pre;
+	}else{
+		g_variable.X_sum = 0;
+		g_variable.Y_sum = 0;
+	 	g_variable.X_pre = 0;
+	 	g_variable.Y_pre = 0;
+ 	}
+}
+
+void Drawing_optima_init()
+{
+	g_variable.X_sum = 0;
+	g_variable.Y_sum = 0;
+ 	g_variable.X_pre = 0;
+ 	g_variable.Y_pre = 0;
+	g_variable.asm_flag = 0;
+	g_variable.X_data = 0;
+	g_variable.Y_data = 0;
+}
+
+
Index: Standard_mouse/c51/spi.h
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/spi.h	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/spi.h	(working copy)
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2016, yichip Semiconductor(shenzhen office)
+ * All Rights Reserved.
+ *
+ * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Yichip Semiconductor;
+ * the contents of this file may not be disclosed to third parties, copied
+ * or duplicated in any form, in whole or in part, without the prior
+ * written permission of Yichip Semiconductor.
+ */
+
+  /** @file
+ *
+ * spi support for application
+ */
+#ifndef _SPI_H
+#define _SPI_H
+#include "common.h"
+
+#define	SPI_TBUFF		mem_spid_tbuf
+#define	SPI_RBUFF		mem_spid_rbuf
+
+/**
+ * This function SPI Initialize.
+ * 
+ * @param cb the IPC control block.
+ * 
+ * @return none.
+*/
+void SPI_Initialize(void);
+
+/**
+ * This function SPI read sensor.
+ * 
+ * @param cb the IPC control block.
+ * 
+ * @return none.
+*/
+u8_t SPI_ReadSensor(u8_t reg_num);
+
+
+/**
+ * This function SPI write sensor.
+ * 
+ * @param cb the IPC control block.
+ * 
+ * @return none.
+*/
+u8_t SPI_WriteSensor(u8_t value, u8_t reg_num);
+
+#endif/*YC_SPI_H*/
+
Index: Standard_mouse/c51/spi.c
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/spi.c	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/spi.c	(working copy)
@@ -0,0 +1,54 @@
+#include "spi.h"
+#include "Hwreg.h"
+
+#define	READ_SENSOR_TXLEN			0x01
+#define	READ_SENSOR_RXLEN			0X01
+
+#define	WRITE_SENSOR_TXLEN			0x02
+#define	WRITE_SENSOR_RXLEN			0X00
+
+#define	DMA_SPI_START				0X02
+
+#define SPI_RX_LEN (4)
+u8_t spi_rx_buff[SPI_RX_LEN] _at_ SPI_RBUFF;
+u8_t spi_tx_buff[SPI_RX_LEN] _at_ SPI_TBUFF;
+
+
+void SPI_Initialize()
+{
+	REG_SPID_CTRL = 0x75;
+	REG_SPID_DELAY = 10;
+	REG_SPID_TXADDR = ESWAP(SPI_TBUFF);
+	REG_SPID_RXADDR = ESWAP(SPI_RBUFF);
+	REG_GPIO_OUT(3) |= 0x02;
+}
+
+u8_t SPI_ReadSensor(u8_t reg_num)
+{
+	spi_tx_buff[0] = reg_num;
+	REG_SPID_TXLEN = ESWAP(READ_SENSOR_TXLEN);
+	REG_SPID_RXLEN = ESWAP(READ_SENSOR_TXLEN);
+	REG_MISC_CTRL = DMA_SPI_START;
+	do {
+	
+	}
+	while(!(REG_DMA_STATUS & 0x08));
+	return  *spi_rx_buff;
+}
+
+u8_t SPI_WriteSensor(u8_t value, u8_t reg_num)
+{
+	spi_tx_buff[0] = reg_num|0x80;
+	spi_tx_buff[1] = value;
+
+	REG_SPID_TXLEN = ESWAP(WRITE_SENSOR_TXLEN);
+	REG_SPID_RXLEN = ESWAP(WRITE_SENSOR_RXLEN);
+
+	REG_MISC_CTRL = DMA_SPI_START;
+	do {
+		
+	}
+	while(!(REG_DMA_STATUS & 0x08));
+	return 0;
+}
+
Index: Standard_mouse/c51/sys.h
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/sys.h	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/sys.h	(working copy)
@@ -0,0 +1,84 @@
+#ifndef _YC_SYSTEM_H_
+#define _YC_SYSTEM_H_
+#include "common.h"
+
+#define TASK_NULL 							(0)
+#define TASK_OBTAIN_MOUSE_KEY				(TASK_NULL + 1)
+#define TASK_OBTAIN_MOUSE_SENSOR			(TASK_NULL + 2)
+#define TASK_OBTAIN_ADC_DATA				(TASK_NULL + 3)
+#define TASK_OBTAIN_MOUSE_TWHEEL			(TASK_NULL + 4)
+#define TASK_OBTAIN_MOUSE_VDD_COMPARE	(TASK_NULL + 5)
+#define TASK_OBTAIN_TIMER_100MS			(TASK_NULL + 6)
+#define TASK_OBTAIN_0V_ADC_BASE			(TASK_NULL + 7)
+#define TASK_OBTAIN_3V_ADC_BASE			(TASK_NULL + 8)
+#define TASK_OBTAIN_IPC_EVENT			(TASK_NULL + 9)
+
+typedef enum c51_ble_state_enum
+{
+	CHANGE_TO_BLE_DISCONNECT =0,
+	CHANGE_TO_BLE_INDIR_ADV = 1,
+	CHANGE_TO_BLE_DIRECT_ADV,
+	CHANGE_TO_BLE_CONNECTING,
+	CHANGE_TO_BLE_CONNECTED,
+}C51_BLE_STATE;
+
+typedef enum c51_br_state_enum{
+	CHANGE_TO_BR_DISCONNECT =0,
+	CHANGE_TO_BR_DISCOVERY = 1,
+	CHANGE_TO_BR_RECONNECT,
+	CHANGE_TO_BR_CONNECTING,
+	CHANGE_TO_BR_CONNECTED,
+}C51_BR_STATE;
+
+typedef enum c51_24g_state_enum{
+	CHANGE_TO_24G_DISCONNECTED =0,
+	CHANGE_TO_24G_PAIRING= 1,
+	CHANGE_TO_24G_CONNECTING,
+	CHANGE_TO_24G_CONNECTED,
+}C51_24G_STATE;
+
+typedef enum c51_ble_connecting_substate_enum
+{
+	CHANGE_TO_BLE_SUB_NONE=0,
+	CHANGE_TO_BLE_SUB_INIT,
+	CHANGE_TO_BLE_SUB_PINCODE,
+	CHANGE_TO_BLE_SUB_PINCODE_OK,
+}C51_BLE_CONNECTING_SUBSTATE;
+
+typedef enum c51_br_connecting_substate_enum
+{
+	CHANGE_TO_BR_SUB_NONE =0,
+	CHANGE_TO_BR_SUB_INIT,
+	CHANGE_TO_BR_SUB_PINCODE,
+	CHANGE_TO_BR_SUB_PINCODE_OK,
+}C51_BR_CONNECTING_SUBSTATE;
+
+typedef enum c51_24g_connecting_substate_enum
+{
+	CHANGE_TO_24G_SUB_NONE=0,
+	CHANGE_TO_24G_SUB_INIT ,
+}C51_24G_CONNECTING_SUBSTATE;
+
+typedef enum c51_user_key_action
+{
+	KEY_NONE= 0,
+	KEY_RECON_0=1,
+	KEY_RECON_1=2,
+	KEY_RECON_2=3,
+	KEY_ENTER_ADV,
+	KEY_DISCOVERY,
+	KEY_DISCONNECT_ALL,
+	KEY_CLEAR_RECORD,
+	KEY_START_24G,
+	KEY_OPEN_24G,
+	KEY_PAIRING_24G,
+	KEY_STOP_24G,
+	KEY_USB,
+	KEY_STOP_DISCOVERY,
+}C51_KEY_ACTION;
+void YC_key_action_handle(C51_KEY_ACTION key_num);
+void check_switch_button_init();
+void check_switch_button();
+void mouseMotion();
+
+#endif
Index: Standard_mouse/c51/sys.c
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/sys.c	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/sys.c	(working copy)
@@ -0,0 +1,1541 @@
+#include "sys.h"
+#include "Peripheral.h"
+#include "gpio.h"
+#include "spi.h"
+#include "ipc.h"
+#include "iic.h"
+#include "global_variable.h"
+#include "adc.h"
+#include "sensor.h"
+
+#define MOUSE_BT_MODE_ENABLE            0//0 disable
+#define ADC_VINLPM_ENABLE            	0//0 disable
+#define ADC_GPIO_ENABLE            		1//0 disable
+#define OTA_ENABLE						0//0 disable
+
+#define DEVICE_MODE_NONE 				0
+#define DEVICE_MODE_24G 				1
+#define DEVICE_MODE_BT 					2
+#define DEVICE_MODE_DISC 				3
+#define DEVICE_MODE_PAGE 				4
+#define DEVICE_MODE_BB					5
+#define DEVICE_MODE_PREPARE_SLEEP		6
+#define DEVICE_MODE_BLE_BB_CONNECT 		7
+#define DEVICE_MODE_BLE_ADV 			8
+#define DEVICE_MODE_BLE 				9
+#define MOUSE_ENTER_PB_TIME				25
+#define MOUSE_MODE_SW_TIME				15
+
+#if DEVICE_MODE_24G
+#define EEPROM_SIZE						0x8000		//TOTAL LEN
+#define EEPROM_RECON_INFO_BASE			0x7f80		//6BYTE
+#else
+#define EEPROM_RECON_INFO_BASE			0x3f80		//6BYTE
+#endif
+#define EEPROM_HEAD_ADDR				0									//2BYTE
+#define EEPROM_DATA_LENGTH				42			//TOTAL LEN
+#define EEPROM_LINK_KEY					(EEPROM_RECON_INFO_BASE+6)			//16BYTE
+#define EEPROM_REMOTE_LE_ADDR			(EEPROM_LINK_KEY+16)				//6BYTE
+#define EEPROM_RECONN_LE_ADDR			(EEPROM_REMOTE_LE_ADDR+6)			//6BYTE
+#define EEPROM_24G_ADDR					(EEPROM_RECONN_LE_ADDR+6)			//6BYTE
+#define EEPROM_DPI_ADDR					(EEPROM_24G_ADDR+6) 				//1BYTE
+#define EEPROM_CONN_MODE				(EEPROM_DPI_ADDR+1)					//1BYTE
+#define EEPROM_BLE_ADDR_RANDOM_CNT		(EEPROM_CONN_MODE+1)				//2BYTE
+#define EEPROM_BLE_ADDR_RANDOM_CNT_WP	(EEPROM_BLE_ADDR_RANDOM_CNT+2)			//1BYTE
+
+#define PWR_ON_F 						((m_powerOnFlag&0x04) == 0)
+
+#define LOW_BATTERY_INTERVAL 		10
+#define SHORT_LPM_STATE_POLLING 	0
+#define SHORT_LPM_STATE_DATA 		1
+#define SHORT_LPM_STATE_NODATA 	 	2
+#define SHORT_LPM_STATE_BUTTON_WHEEL		3
+
+#define PC_REPORT_ID 		0xba
+#define CMD_USER_DEFINE		0xb0
+#define CMD_OTA				0xcf
+#define CMD_OTA_START		0xc0
+#define CMD_OTA_DATA		0xc1
+#define CMD_OTA_EXIT		0xc2
+
+
+#if OTA_ENABLE
+void wirelessCmdOtaStart()
+{
+	u8_t eeprom_addr[2] = 0;
+	m_new24gIntMax = 5;
+	m_new24gIntMin = 5;
+	m_new24gOtaEnable = 1;
+	g_variable.otaReqPacEnable = 1;
+	g_variable.otaLastAckPid = 0;
+	g_variable.otaExitCmdCount = 0;
+	g_variable.otaExitFlag = 0;
+
+	//get boot eeprom addr
+	IIC_Read(EEPROM_HEAD_ADDR,2,eeprom_addr);
+	if(eeprom_addr[0] == 0x00 && eeprom_addr[1] == 0x02)
+		g_variable.otaHeadAddr = EEPROM_SIZE;	//
+	else
+		g_variable.otaHeadAddr = 0x0000;	//
+}
+
+void wirelessCmdOtaData()
+{
+	u16_t currentAckPID;
+	g_variable.otaReqPacEnable = 1;
+	//check ack pid;
+	currentAckPID = (m_24gRxPayload[3] & 0xff) |(m_24gRxPayload[4] <<8);
+	if((ESWAP(ESWAP(currentAckPID) -ESWAP(g_variable.otaLastAckPid))&0xff) != 0x01){
+		g_variable.otaReqPacValue[0] = CMD_OTA_DATA;
+		g_variable.otaReqPacValue[1] = g_variable.otaLastAckPid & 0xff;
+		g_variable.otaReqPacValue[2] = g_variable.otaLastAckPid >> 8;
+		return;
+	}
+	g_variable.otaLastAckPid = currentAckPID;
+	g_variable.otaReqPacValue[0] = CMD_OTA_DATA;
+	g_variable.otaReqPacValue[1] = m_24gRxPayload[3];
+	g_variable.otaReqPacValue[2] = m_24gRxPayload[4];
+	//store ota data
+	if(g_variable.otaHeadAddr == 0x0000 
+		&& m_24gRxPayload[3] == 0x01 
+		&&m_24gRxPayload[4] == 0x00){
+		IIC_WriteBlock(g_variable.otaHeadAddr+2,m_24gRxPayload[5],&m_24gRxPayload[8]);
+	}
+	else	
+		IIC_WriteBlock(g_variable.otaHeadAddr,m_24gRxPayload[5],&m_24gRxPayload[6]);
+	g_variable.otaHeadAddr += m_24gRxPayload[5];
+}
+
+void wirelessCmdOtaExit()
+{
+	u32_t checkSum = 0;
+	u16_t i,eepromHead = 0;
+	u8_t eepromData = 0,eepromData1 = 0;
+	u8_t eeprom_addr[2] = 0;
+	u16_t eepromDataRAddr = 0,eepromDataWAddr = 0;
+	u8_t eepromBootAddr = 0;
+	u16_t j,k;
+		
+	if(g_variable.otaExitFlag == 1){
+		IIC_Read(EEPROM_HEAD_ADDR,2,eeprom_addr);
+		if(eeprom_addr[0] == 0x00 && eeprom_addr[1] == 0x02){
+			eepromDataRAddr = EEPROM_RECON_INFO_BASE;
+			eepromDataWAddr = EEPROM_RECON_INFO_BASE+EEPROM_SIZE;
+			eepromBootAddr = 0x80;
+		}
+		else{
+			eepromDataRAddr = EEPROM_RECON_INFO_BASE+EEPROM_SIZE;
+			eepromDataWAddr = EEPROM_RECON_INFO_BASE;
+			eepromBootAddr = 0x00;
+		}
+		for(j=0;j<EEPROM_DATA_LENGTH;j++){
+			IIC_Read((eepromDataRAddr+j),1,&eepromData1);
+			Delay1ms(10);
+			IIC_WriteBlock((eepromDataWAddr+j),1,&eepromData1);
+			Delay1ms(10);
+		}
+		IIC_WriteBlock(EEPROM_HEAD_ADDR,1,&eepromBootAddr);
+		m_new24gOtaEnable = 0;
+		g_variable.otaHeadAddr = 0;
+		g_variable.otaLastAckPid = 0;
+		g_variable.otaReqPacEnable = 0;
+		g_variable.otaExitFlag = 0;
+		g_variable.otaExitCmdCount = 0;
+		for(k=0;k<7;k++)
+			g_variable.otaReqPacValue[k] = 0;
+		REG_RST = 1;
+		return;
+	}
+
+	if(g_variable.otaExitCmdCount == 1)
+		return;
+	g_variable.otaExitCmdCount = 1;
+
+	eepromHead = g_variable.otaHeadAddr -EEPROM_SIZE;
+	for(i=0;i<EEPROM_SIZE;i++){
+		IIC_Read((eepromHead+i),1,&eepromData);
+		checkSum += eepromData;
+	}
+	IIC_Read(EEPROM_HEAD_ADDR,2,eeprom_addr);
+	if(eeprom_addr[0] == 0x80 && eeprom_addr[1] == 0x02)
+		checkSum -= 0x80;
+
+	if(((checkSum & 0xff) == m_24gRxPayload[5]) 
+		&& (((checkSum>>8) & 0xff) == m_24gRxPayload[6]) 
+		&& (((checkSum>>16) & 0xff) == m_24gRxPayload[7])){
+		g_variable.otaReqPacValue[0] = CMD_OTA_EXIT;
+		g_variable.otaReqPacValue[1] = m_24gRxPayload[3];
+		g_variable.otaReqPacValue[2] = m_24gRxPayload[4];
+		g_variable.otaReqPacValue[3] = 0x55;
+		g_variable.otaReqPacValue[4] = 0;
+		g_variable.otaExitFlag = 1;
+	}
+	else{
+		g_variable.otaReqPacValue[0] = CMD_OTA_EXIT;
+		g_variable.otaReqPacValue[1] = m_24gRxPayload[3];
+		g_variable.otaReqPacValue[2] = m_24gRxPayload[4];
+		g_variable.otaReqPacValue[3] = 0xaa;
+		g_variable.otaReqPacValue[4] = 0;
+	}
+}
+
+void wirelessConfigProcess()
+{
+	if(g_variable.currentState != DEVICE_MODE_24G || g_variable.g24DongleExist != 1){
+		return;
+	}
+	//pc user define features
+	if(m_24gRxPayload[0] != PC_REPORT_ID ||m_24gRxPayload[1] != CMD_USER_DEFINE){
+		return;
+	}
+	else{	
+		switch(m_24gRxPayload[2]){	//pc cmd
+		case CMD_OTA_START:	//0xc0
+			wirelessCmdOtaStart();
+			break;
+		case CMD_OTA_DATA:	//0xc1
+			wirelessCmdOtaData();
+			break;
+		case CMD_OTA_EXIT:	//0xc2
+			wirelessCmdOtaExit();
+			break;
+		default:
+			break;
+		}
+	}
+}
+#endif
+
+void sensorClearData()
+{
+	sensorPowerOn();
+	SPI_TwReset();
+	while(!GPIO_GetInputStatus(SENSOR_MOTION_GPIO)){
+		SPI_ReadSensor(SENSOR_MOTION);
+		SPI_ReadSensor(SENSOR_X_ADDR);
+		SPI_ReadSensor(SENSOR_Y_ADDR);
+	}
+}
+
+void dpiWriteInSensor()
+{
+	SPI_TwReset();
+#if MOUSE_3205_ENABLE
+	if((g_variable.sensorType == PAW3205_ID) ||(g_variable.sensorType == PAW3204UL_ID)) 
+	{
+		SPI_WriteSensor((g_variable.dpiCount+1), SENSOR_POWER);
+	}
+#endif
+
+	if (g_variable.sensorType == FCT3065_ID)
+	{
+		if(g_variable.dpiCount == 1)
+			SPI_WriteSensor(0, SENSOR_POWER);
+		else
+			SPI_WriteSensor(g_variable.dpiCount, SENSOR_POWER);
+	}
+	
+#if MOUSE_3204_ENABLE
+	if (g_variable.sensorType == PAW3204DB_ID)
+	{
+		SPI_WriteSensor((g_variable.dpiCount+3), SENSOR_POWER);
+	}
+#endif
+
+#if MOUSE_8650_ENABLE
+	if (g_variable.sensorType == MA8650_ID)
+	{
+		SPI_WriteSensor((g_variable.dpiCount+3), SENSOR_POWER);
+	}
+#endif
+
+#if MOUSE_3212_ENABLE	
+	if (g_variable.sensorType == PAW3212_ID) 
+	{
+		SPI_WriteSensor(0x5a,0x09);
+		switch (g_variable.dpiCount)
+		{
+			case 0:
+				SPI_WriteSensor(PAW3212_DPI0, 0x0d);
+				SPI_WriteSensor(PAW3212_DPI0, 0x0e);
+				break;
+			case 1:
+				SPI_WriteSensor(PAW3212_DPI1, 0x0d);
+				SPI_WriteSensor(PAW3212_DPI1, 0x0e);
+				break;				
+			case 2:
+				SPI_WriteSensor(PAW3212_DPI2, 0x0d);
+				SPI_WriteSensor(PAW3212_DPI2, 0x0e);
+				break;
+			case 3:
+				SPI_WriteSensor(PAW3212_DPI3, 0x0d);
+				SPI_WriteSensor(PAW3212_DPI3, 0x0e);
+				break;
+			default:
+				break;
+		}
+		SPI_WriteSensor(0x00,0x09);
+	}
+#endif
+
+	Sensor_spi_disable();
+}
+
+static u8_t mouseLKeyCheck()
+{
+	GPIO_SetOutput(Timer_div_io, 1);
+	g_variable.lKeyTemp <<=1;
+	g_variable.lKeyTemp |= !GPIO_GetInputStatus(KS_BL_GPIO);
+	if (g_variable.lKeyTemp&0x01)
+	{
+		g_variable.wheelTimer= 2;
+	}
+	do
+	{ 
+		if((g_variable.lKeyTemp & 0x07) == 0x07)
+		{
+			g_variable.lKey = 1;
+			break;
+		}
+		if((g_variable.lKeyTemp & 0x07) == 0x00)
+		{
+			g_variable.lKey = 0;
+			break;
+		}
+	}while(0);
+	return g_variable.lKey;
+}
+
+static u8_t mouseMKeyCheck()
+{
+	GPIO_SetOutput(Timer_div_io, 1);
+	g_variable.mKeyTemp <<=1;
+	g_variable.mKeyTemp |= !GPIO_GetInputStatus(KS_BM_GPIO);
+	if (g_variable.mKeyTemp&0x01) 
+	{
+		g_variable.wheelTimer= 2 ;
+	}
+	do 
+	{ 
+		if((g_variable.mKeyTemp & 0x07) == 0x07) 
+		{
+			g_variable.mKey = 1;
+			break;
+		}
+		if((g_variable.mKeyTemp & 0x07) == 0x00) 
+		{
+			g_variable.mKey = 0;
+			break;
+		}
+	}while(0);
+	return g_variable.mKey;
+}
+
+
+static u8_t mouseRKeyCheck()
+{
+	GPIO_SetOutput(Timer_div_io, 1);
+	g_variable.rKeyTemp <<=1;
+	g_variable.rKeyTemp |= !GPIO_GetInputStatus(KS_BR_GPIO);
+	if (g_variable.rKeyTemp&0x01) 
+	{
+		g_variable.wheelTimer= 2 ;
+	}
+	do 
+	{ 
+		if((g_variable.rKeyTemp & 0x07) == 0x07) 
+		{
+			g_variable.rKey = 1;
+			break;
+		}
+		if((g_variable.rKeyTemp & 0x07) == 0x00) 
+		{
+			g_variable.rKey = 0;
+			break;
+		}
+	}while(0);
+	return g_variable.rKey;
+}
+
+static u8_t mouseBkKeyCheck()
+{
+	if (!GPIO_GetInputStatus(KS_BK_GPIO)) return 0;
+	GPIO_SetOutput(Timer_div_io, 0);
+	g_variable.bkKeyTemp <<=1;
+	g_variable.bkKeyTemp |= !GPIO_GetInputStatus(KS_BK_GPIO);
+	GPIO_SetOutput(Timer_div_io,1);
+	GPIO_SetInput(Timer_div_io, 0);	
+	if (g_variable.bkKeyTemp&0x01)
+	{
+		g_variable.wheelTimer= 2 ;
+	}	
+	do 
+	{ 
+		if((g_variable.bkKeyTemp & 0x07) == 0x07)
+		{
+			g_variable.bkKey = 1;
+			break;
+		}
+		if((g_variable.bkKeyTemp & 0x07) == 0x00)
+		{
+			g_variable.bkKey = 0;
+			break;
+		}
+	}while(0);
+	return g_variable.bkKey;
+}
+
+static u8_t mouseFwKeyCheck()
+{
+	if (!GPIO_GetInputStatus(KS_FW_GPIO)) return 0;
+	GPIO_SetOutput(Timer_div_io, 0);
+	g_variable.fwKeyTemp <<=1;
+	g_variable.fwKeyTemp |= !GPIO_GetInputStatus(KS_FW_GPIO);
+	GPIO_SetOutput(Timer_div_io,1);
+	GPIO_SetInput(Timer_div_io, 0);	
+	if (g_variable.fwKeyTemp&0x01) 
+	{
+		g_variable.wheelTimer= 2 ;
+	}
+	do
+	{ 
+		if((g_variable.fwKeyTemp & 0x07) == 0x07) 
+		{
+			g_variable.fwKey = 1;
+			break;
+		}
+		if((g_variable.fwKeyTemp & 0x07) == 0x00)
+		{
+			g_variable.fwKey = 0;
+			break;
+		}
+	}while(0);
+	return g_variable.fwKey;
+}
+
+void mouseDpiKeyCheck(void)
+{
+	g_variable.dpiKeyTemp <<=1;
+	g_variable.dpiKeyTemp |= !GPIO_GetInputStatus(CPI_GPIO);
+	if (g_variable.dpiKeyTemp&0x01)	g_variable.wheelTimer= 2 ;
+	if((g_variable.dpiKeyTemp & 0xff) == 0x07)  
+	{
+		g_variable.dpiCount++;
+		g_variable.dpiCount &= 0x03;
+		if (g_variable.dpiCount == 0 ) g_variable.dpiCount = 1;
+		g_variable.dpiLedFlipTime = g_variable.dpiCount;
+		dpiWriteInSensor();
+		IIC_WriteBlock(EEPROM_DPI_ADDR, 1,&g_variable.dpiCount);
+	}
+}
+
+
+void mouse_wheel_delay_lpm(void)
+{
+	if(g_variable.currentState != DEVICE_MODE_24G)
+	{
+		g_variable.wheelTimer= 3;			//   10
+	}
+}
+
+void mouseWheelScan(void)
+{
+	u16_t result = 0;
+	u8_t tempStateA = GPIO_GetInputStatus(WHEEL_DATA_A_GPIO);
+	u8_t tempState = (tempStateA << 1)|
+		GPIO_GetInputStatus(WHEEL_DATA_B_GPIO);
+	
+	if (g_variable.wheelStateNow == tempState)
+		return;
+
+	g_variable.wheelStateLast = g_variable.wheelStateBefore;
+	g_variable.wheelStateBefore = g_variable.wheelStateNow;
+	g_variable.wheelStateNow = tempState;
+
+	result = (g_variable.wheelStateNow << 4) |(g_variable.wheelStateBefore << 2) |g_variable.wheelStateLast;
+
+	switch (result) 
+	{
+		case 0x38:
+		case 0x07:
+			g_variable.deltaZWheel --;
+			mouse_wheel_delay_lpm();
+			break;
+		case 0x34:
+		case 0x0b:
+			g_variable.deltaZWheel ++;
+			mouse_wheel_delay_lpm();
+			break;
+		default:
+			break;
+	}
+}
+
+void IPC_TxHidData(u8_t* dt, u8_t len)
+{
+	if(g_variable.currentState != DEVICE_MODE_24G
+		&&g_variable.currentState != DEVICE_MODE_BT
+		&& g_variable.currentState != DEVICE_MODE_BLE_BB_CONNECT)
+		return;
+	if(g_variable.currentState == DEVICE_MODE_24G)
+	{
+		IPC_Tx24GData(dt,len);
+	}	
+#if MOUSE_BT_MODE_ENABLE
+	else if(g_variable.currentState == DEVICE_MODE_BT)
+	{
+		IPC_TxBREDRHidData(dt,len);
+	}
+#endif
+	else if(g_variable.currentState == DEVICE_MODE_BLE_BB_CONNECT)
+	{
+		IPC_TxBleData(dt,len);
+	}
+	else
+	{
+		while(1);
+	}
+}
+
+void mouseKeyDetect()
+{
+	u8_t buttonLeft = 0,buttonRight = 0,buttonMiddle = 0,buttonBack=0,buttonForward=0;
+	buttonLeft = mouseLKeyCheck();
+	buttonMiddle = mouseMKeyCheck();
+	buttonRight = mouseRKeyCheck();
+	buttonBack = mouseBkKeyCheck();
+	buttonForward = mouseFwKeyCheck();
+
+	mouseDpiKeyCheck();
+	g_variable.keyDetect = buttonLeft |buttonRight<<1|buttonMiddle<<2|buttonBack<<3|buttonForward<<4;
+}
+
+static bool mouseReadSensor(void)
+{
+	u8_t deltaXL=0, deltaYL=0, deltaXH=0, deltaYH=0;
+
+	if(1 == GPIO_GetInputStatus(SENSOR_MOTION_GPIO)){
+		return 0;
+	}
+	
+	SPI_TwReset();
+
+	if ((SPI_ReadSensor(2)&0x80)){
+
+		g_variable.wheelTimer= 2;
+		if(g_variable.sensorType != PAW3212_ID ){
+			deltaXL = SPI_ReadSensor(SENSOR_X_ADDR);
+			deltaYL = 0 - SPI_ReadSensor(SENSOR_Y_ADDR);
+		}
+		else {
+			deltaXL = SPI_ReadSensor(SENSOR_X_ADDR);
+			deltaYL = SPI_ReadSensor(SENSOR_Y_ADDR);
+			deltaYH = SPI_ReadSensor(SENSOR_XY_H);
+			deltaXH = deltaYH>>4;
+			deltaYH &= 0x0f;
+		}
+		Sensor_spi_disable();
+		if(g_variable.sensorType == PAW3212_ID) {
+			if (deltaXH & 0x08) deltaXH |= 0xf0;
+			else deltaXH &= 0x0f;
+			if (deltaYH& 0x08) deltaYH |= 0xf0;
+			else deltaYH &= 0x0f;
+		}
+		else {
+			if (deltaXL & 0x80) deltaXH = 0xff;
+			else deltaXH = 0;
+			if (deltaYL & 0x80) deltaYH = 0xff;
+			else deltaYH = 0;
+		}
+		
+		if (g_variable.sensorChoice == 0) {
+			g_variable.Y_data = 0 -(deltaXL | deltaXH<<8);
+			g_variable.X_data = deltaYL | deltaYH<<8;
+		}
+		else {
+			g_variable.X_data = deltaXL | deltaXH<<8;
+			g_variable.Y_data = deltaYL | deltaYH<<8;
+		}
+		g_variable.X_data = 0 -g_variable.X_data ;
+		g_variable.Y_data = 0 -g_variable.Y_data;
+
+		if(g_variable.currentState == DEVICE_MODE_24G)
+			Drawing_optima();
+		return (1);
+	}else{
+		return (0);
+	}
+}
+
+void mousePackage()
+{	
+	m_hidBuff[0] = g_variable.deltaKey;
+	m_hidBuff[1] = (u8_t)(g_variable.X_data & 0x00ff);
+	m_hidBuff[2] = (u8_t)(g_variable.X_data >>8);
+	m_hidBuff[3] = (u8_t)(g_variable.Y_data & 0x00ff);
+	m_hidBuff[4] = (u8_t)(g_variable.Y_data >>8);
+	m_hidBuff[5] = g_variable.deltaZWheel;
+	m_hidBuff[6] = 0;	//tz
+	g_variable.deltaZWheel = 0;	
+	g_variable.sleepTimer = 0;
+}
+
+static void mouseMotion()
+{
+	u8_t deltaXL=0, deltaYL=0, deltaXH=0, deltaYH=0;
+	bool sendFlag = 0;
+
+#if MOUSE_BT_MODE_ENABLE
+	if ((g_variable.currentState != DEVICE_MODE_24G)
+		&&(g_variable.currentState != DEVICE_MODE_BLE_BB_CONNECT)
+		&&(g_variable.currentState != DEVICE_MODE_BT))
+	{
+#else
+	if ((g_variable.currentState != DEVICE_MODE_24G)&&(g_variable.currentState != DEVICE_MODE_BLE_BB_CONNECT))
+	{
+#endif
+		return;
+	}
+	if ((g_variable.g24DongleExist == 0)&&(g_variable.currentState == DEVICE_MODE_24G)){
+		return;	
+	}
+
+	if (!IPC_IsTxBuffEmpty()) {
+		return;
+	}
+	
+#if OTA_ENABLE
+	//OTA
+	if(m_new24gOtaEnable == 1 
+		&& g_variable.otaReqPacEnable == 1
+		&& g_variable.currentState == DEVICE_MODE_24G)
+	{
+		g_variable.sleepTimer = 0;
+		m_hidBuff[0] = CMD_OTA;
+		m_hidBuff[1] = g_variable.otaReqPacValue[0];	//ackpayload type
+		m_hidBuff[2] = g_variable.otaReqPacValue[1];	//ackpayload low byte
+		m_hidBuff[3] = g_variable.otaReqPacValue[2];	//ackpayload high byte
+		m_hidBuff[4] = g_variable.otaReqPacValue[3];
+		m_hidBuff[5] = g_variable.otaReqPacValue[4];
+		m_hidBuff[6] = 0;
+		IPC_TxHidData(m_hidBuff,7);
+		return;
+	}
+#endif
+	
+	if(g_variable.deltaKey != g_variable.keyDetect
+		||(g_variable.wheelTimer > 0 && g_variable.wheelTimer < 3)
+		||((g_variable.currentState == DEVICE_MODE_24G) && (g_variable.keyDetect != 0)))
+	{
+		sendFlag = 1;
+		m_new24gKWEvent = 1;
+	}
+	g_variable.deltaKey = g_variable.keyDetect;
+		
+	g_variable.X_data = 0;g_variable.Y_data = 0;
+	
+#if MOUSE_BT_MODE_ENABLE
+
+	if(g_variable.currentState == DEVICE_MODE_BT)
+	{
+		sendFlag |= mouseReadSensor();
+	}
+
+#endif
+	if ( (g_variable.currentState == DEVICE_MODE_24G) ) {
+		sendFlag |= mouseReadSensor();
+	}
+	
+	if ( (g_variable.currentState == DEVICE_MODE_BLE_BB_CONNECT) && m_bleSendDataFlag == 1 ) 
+	{
+			SPI_Initialize();//spi
+			sendFlag |= mouseReadSensor();
+			if(m_51ReadSensor != m_BtReadIpcCount)
+			{
+				m_51ReadSensor ++;
+			}
+	}
+
+	if (g_variable.deltaZWheel)
+	{
+		sendFlag = 1;
+		m_new24gKWEvent = 1;
+		m_shortDataWheel = 1;
+		if(g_variable.currentState == DEVICE_MODE_BLE_BB_CONNECT)
+		{
+			m_bleDataWheel = 1;
+			m_bleDataWheelLpmTimer = 10;
+		}
+	}
+
+	if(g_variable.buttonTimer >= (MOUSE_ENTER_PB_TIME - 2))
+	{
+		g_variable.deltaKey = 0;	
+		sendFlag = 1;
+	}
+	
+	if ((!sendFlag) ||(g_variable.buttonTimer >= (MOUSE_ENTER_PB_TIME - 1)))
+		return;
+	
+	m_btMotionEvent = 1;
+	if (g_variable.currentState == DEVICE_MODE_24G
+		||g_variable.currentState == DEVICE_MODE_BT
+		||g_variable.currentState == DEVICE_MODE_BLE_BB_CONNECT)
+	{
+		mousePackage();
+
+		if(m_mouseFastConnFlag){
+			if((m_hidBuff[0] == 0) && (m_hidBuff[1] == 0) &&
+			(m_hidBuff[2] == 0) && (m_hidBuff[3] == 0) &&
+			(m_hidBuff[4] == 0) && (m_hidBuff[5] == 0) &&
+			(m_hidBuff[6] == 0) ){
+				if(m_FastConnSendEmptyCount < 3){
+					IPC_TxHidData(m_hidBuff,7);
+					m_FastConnSendEmptyCount = m_FastConnSendEmptyCount+1;
+				}
+				else{
+					return;
+				}
+			}
+			else{
+				IPC_TxHidData(m_hidBuff,7);
+				m_FastConnSendEmptyCount = 0;
+			}
+		}
+		else{
+			IPC_TxHidData(m_hidBuff,7);
+		}
+		
+	}
+}
+
+
+static void deviceSwitch24GMode()
+{
+	IIC_Read(EEPROM_24G_ADDR+2, 4, (u8_t *)m_24gAddr);
+	if(m_24gAddr[0] == 0xff && m_24gAddr[1] == 0xff && m_24gAddr[2] == 0xff && m_24gAddr[3] == 0xff)
+	{
+		m_24gAddr[0] = 0x0f;
+		m_24gAddr[1] = 0x0f;
+		m_24gAddr[2] = 0x0f;
+		m_24gAddr[3] = 0x0f;
+		IPC_TxControlCmd(IPC_CMD_START_24G);
+		g_variable.Factory_Pwr_on_f = 1;
+	}
+	else
+		IPC_TxControlCmd(IPC_CMD_START_24G);
+	g_variable.currentState = DEVICE_MODE_24G;
+}
+
+static void deviceStop24g()
+{
+	IPC_TxControlCmd(IPC_CMD_STOP_24G);
+	g_variable.currentState = DEVICE_MODE_NONE;
+}
+
+
+/*
+void deviceBtPairCheck(void)
+{
+	g_variable.btKeyTemp <<=1;
+	g_variable.btKeyTemp |= !GPIO_GetInputStatus(BT_BUTTON_GPIO);
+
+	if (g_variable.btKeyTemp&0x01)
+	{
+		g_variable.wheelTimer = 2;
+	}
+	if((g_variable.btKeyTemp & 0xff) == 0x07)
+	{
+		switch (g_variable.currentState) 
+		{
+			case DEVICE_MODE_BT:
+			case DEVICE_MODE_BB:
+				IPC_TxControlCmd(IPC_CMD_DISCONNECT);
+				g_variable.nextMode = DEVICE_MODE_DISC;
+				g_variable.reconnFlag = 0;
+				break;
+			
+			case DEVICE_MODE_BLE_BB_CONNECT:
+				IPC_TxControlCmd(IPC_CMD_LE_DISCONNECT);
+				g_variable.nextMode = DEVICE_MODE_BLE_ADV;
+				break;
+			case DEVICE_MODE_BLE_ADV:
+				IPC_TxControlCmd(IPC_CMD_START_ADV);
+				IPC_TxControlCmd(IPC_CMD_START_DISCOVERY);
+				break;	
+			case DEVICE_MODE_24G:
+				g_variable.g24Pid++;
+				if(g_variable.g24Pid>255)
+					g_variable.g24Pid = 0;
+				m_hidBuff[0] = HID_REPORTID_MS;
+				m_hidBuff[1] = 0;
+				m_hidBuff[2] = 0;
+				m_hidBuff[3] = 0;
+				m_hidBuff[4] = 0;
+				m_hidBuff[5] = 0;
+				m_hidBuff[6] = 0;
+				m_hidBuff[7] = 0;
+				m_hidBuff[8] = g_variable.g24Pid;
+				IPC_Tx24GData(m_hidBuff,9);
+				Delay1ms(100);
+				deviceStop24g();
+				Delay1ms(10);
+				g_variable.currentState = DEVICE_MODE_DISC;
+				
+				IPC_TxControlCmd(IPC_CMD_START_ADV);
+				IPC_TxControlCmd(IPC_CMD_START_DISCOVERY);
+				break;
+			case DEVICE_MODE_PAGE:
+				g_variable.reconnFlag = 0;
+				IPC_TxControlCmd(IPC_CMD_BB_RECONN_CANCEL);
+				g_variable.nextMode = DEVICE_MODE_DISC;
+				break;
+			case DEVICE_MODE_NONE:
+			case DEVICE_MODE_PREPARE_SLEEP:
+				g_variable.currentState = DEVICE_MODE_DISC;
+			
+				IPC_TxControlCmd(IPC_CMD_START_ADV);
+				IPC_TxControlCmd(IPC_CMD_START_DISCOVERY);
+				break;
+			default :
+				break;
+		}
+	}
+}
+*/
+
+void clearGlobalMem()
+{
+	xmemclear_0(m_hidBuff,32);
+	xmemclear_0((u8_t *)&g_variable,sizeof(G_VARIABLE_MAP));
+	g_variable.bufferEnd = 0xff;
+	g_variable.bufferSize = sizeof(g_variable);
+}
+
+static void deviceLongSleep()
+{
+	g_variable.sleepTimer = 0;
+	g_variable.wheelTimer = 0;
+	g_variable.lockLpm = 1;
+	g_variable.currentState = DEVICE_MODE_NONE;
+	IPC_TxControlCmd(IPC_CMD_ENTER_HIBERNATE);
+}
+
+static void deviceLedFlash()
+{
+	if (g_variable.dpiLedFlipTime == 0){
+		g_variable.dpiLedStay = 1;
+		g_variable.dpiLedOnTimer = 0;
+	}
+	if (g_variable.dpiLedFlipTime){
+		g_variable.dpiLedOnTimer++;
+		if((g_variable.dpiLedOnTimer&0x07) == 0x05){
+			g_variable.wheelTimer = 0x0a;
+			if(g_variable.dpiLedStay){
+				GPIO_Setout( LED_GPIO, 0);
+				g_variable.dpiLedStay = 0;
+			}
+			else{
+				GPIO_Setout( LED_GPIO , 1);
+				g_variable.dpiLedStay = 1;
+				g_variable.dpiLedFlipTime--;
+			}
+		}
+	}
+	else if (g_variable.currentState == DEVICE_MODE_DISC){
+		g_variable.wheelTimer = 0x45;
+		if((g_variable.timer100msCount&0x07) == 0x04)
+			GPIO_FlipOutBit(LED_GPIO);
+	}
+	//low battery led
+	else if ((g_variable.adcLowPowerFlag)&& ((g_variable.timer100msCount & 0x1f) < 5)){
+		g_variable.wheelTimer = 10;
+		GPIO_Setout(LED_GPIO, 0);
+		}
+	else  GPIO_Setout(LED_GPIO, 1);
+}
+
+void leReconnStart()
+{
+	g_variable.sleepTimer = 0;
+	IIC_Read(EEPROM_RECONN_LE_ADDR,6,(u8_t *)m_reconnLeAddr);
+	g_variable.currentState = DEVICE_MODE_BLE_ADV;
+	IPC_TxControlCmd(IPC_CMD_START_ADV_RECONN);
+}
+
+void leADVStart()
+{
+	IIC_Read(EEPROM_BLE_ADDR_RANDOM_CNT, 2, (u8_t *)&g_variable.leAddrRandomCnt);
+	g_variable.leAddrRandomCnt++;
+	IIC_WriteBlock(EEPROM_BLE_ADDR_RANDOM_CNT, 2, (u8_t *)&g_variable.leAddrRandomCnt);
+	m_reconnLeAddr[1] = g_variable.leAddrRandomCnt & 0xff;
+	m_reconnLeAddr[2] = g_variable.leAddrRandomCnt >> 8;
+	IPC_TxControlCmd(IPC_CMD_START_ADV);
+}
+
+void leAddrRandomCntInit()
+{	
+	u8_t leAddrE2WP = 0;
+	IIC_Read(EEPROM_BLE_ADDR_RANDOM_CNT_WP, 1, &leAddrE2WP);
+	if(leAddrE2WP == 0xff)
+	{
+		g_variable.leAddrRandomCnt = ADC_Get0vBase();
+		IIC_WriteBlock(EEPROM_BLE_ADDR_RANDOM_CNT, 2, (u8_t *)&g_variable.leAddrRandomCnt);
+		leAddrE2WP = 0x5a;
+		IIC_WriteBlock(EEPROM_BLE_ADDR_RANDOM_CNT_WP, 1, &leAddrE2WP);
+	}
+}
+
+static void deviceEvtCB(u8_t evt)
+{
+	u8_t curentMode;
+	u8_t buttonLeft = 0,buttonRight = 0,buttonMiddle = 0;
+	u8_t combkey = 0;
+	u8_t reconnLeAddr_buff[6] = 0;
+	
+	switch(evt)
+	{
+		case IPC_EVT_HIBERNATE_WAKE:
+			clearGlobalMem();
+		case IPC_EVT_RESET:
+			leAddrRandomCntInit();
+			GPIO_SetInput(SENSOR_MOTION_GPIO, 0);
+			GPIO_SetInput(SENSOR_DIRECTION_GPIO_CHOICE,0);
+			GPIO_SetInput(LOWPOWER_GPIO_CHOICE, 0);
+			GPIO_SetInput(WHEEL_DATA_A_GPIO, 0);
+			GPIO_SetInput(WHEEL_DATA_B_GPIO, 0);
+			GPIO_SetInput(KS_BL_GPIO, 0);
+			GPIO_SetInput(KS_BM_GPIO, 0);
+			GPIO_SetInput(KS_BR_GPIO, 0);
+			GPIO_SetInput(KS_BK_GPIO, 0);
+			GPIO_SetInput(KS_FW_GPIO, 0);
+			GPIO_SetInput(CPI_GPIO, 0);
+			GPIO_SetOutput(LED_GPIO,1);
+			GPIO_SetOutput(Timer_div_io, 1);
+						
+			if (!GPIO_GetInputStatus(SENSOR_DIRECTION_GPIO_CHOICE)) {
+				g_variable.sensorChoice = 0;
+			}
+			else {
+				g_variable.sensorChoice = 1;
+			}
+			
+			if (!GPIO_GetInputStatus(LOWPOWER_GPIO_CHOICE)){
+			
+#if ADC_VINLPM_ENABLE
+				(*(volatile unsigned char xdata *)mem_adc_config_flag) = 0x01;
+#endif
+			}
+			else {
+#if ADC_GPIO_ENABLE
+				(*(volatile unsigned char xdata *)mem_adc_config_flag) = 0x04;
+				(*(volatile unsigned char xdata *)mem_adc_channel) = 0x30;//gpio5 for adc
+#endif				
+			}
+			SPI_Initialize();
+			Drawing_optima_init();
+			g_variable.sensorType = SPI_ResetSensor();
+			IIC_Read(EEPROM_DPI_ADDR, 1, &g_variable.dpiCount);
+			if(g_variable.dpiCount>3) 
+				g_variable.dpiCount=0x02;
+			IIC_WriteBlock(EEPROM_DPI_ADDR, 1, &g_variable.dpiCount);
+			dpiWriteInSensor();
+			REG_GPIO_SELECT(0) = 0x00;
+			g_variable.dpiLedStay = 0;
+			g_variable.dpiLedFlipTime = 0;
+			buttonLeft = !GPIO_GetInputStatus(KS_BL_GPIO);
+			buttonMiddle = !GPIO_GetInputStatus(KS_BM_GPIO);
+			buttonRight = !GPIO_GetInputStatus(KS_BR_GPIO);
+			combkey = buttonLeft |buttonRight<<1|buttonMiddle<<2;
+			if ((combkey == 0x05)&&(evt == IPC_EVT_RESET)) 
+			{
+				IPC_TxControlCmd(IPC_CMD_PAIR_24G);
+				break;
+			}
+
+			if(m_leStartAdv == 1){
+				leReconnStart();
+				m_leStartAdv = 0;
+			}
+			else{
+				IIC_Read(EEPROM_24G_ADDR+2, 4, (u8_t *)m_24gAddr);
+				if(m_24gAddr[0] == 0xff && m_24gAddr[1] == 0xff && m_24gAddr[2] == 0xff && m_24gAddr[3] == 0xff)
+					leReconnStart();
+				else
+					deviceSwitch24GMode();	
+			}
+			break;
+		case IPC_EVT_WAKEUP:
+			if(g_variable.currentState == DEVICE_MODE_BLE_BB_CONNECT)
+			{
+				if(m_btWakeupFromLongMult == 1)
+					break;
+				if(m_btWakeupFromLongMult == 2)
+					m_btWakeupFromLongMult = 1;
+			}
+			SPI_Initialize();//spi
+			GPIO_SetOutput(Timer_div_io,1);
+			GPIO_SetInput(Timer_div_io,0);
+			Drawing_optima_init();
+			break;
+#if MOUSE_BT_MODE_ENABLE			
+		case IPC_EVT_BB_CONNECTED:
+			IPC_TxControlCmd(IPC_CMD_STOP_ADV);
+			IPC_TxControlCmd(IPC_CMD_STOP_DISCOVERY);
+			g_variable.currentState = DEVICE_MODE_BB;
+			if (g_variable.reconnFlag)
+			{
+				g_variable.nextMode = DEVICE_MODE_NONE;
+			}
+			else 
+			{
+				g_variable.nextMode = DEVICE_MODE_DISC;
+			}
+			break;
+	
+		case IPC_EVT_PINCODE_REQ:
+			IPC_SetPincode("0000",4);
+			IPC_TxControlCmd(IPC_CMD_SET_PIN_CODE);
+			g_variable.nextMode = DEVICE_MODE_DISC;
+			break;
+		case IPC_EVT_HID_HANDSHAKE:
+			g_variable.currentState = DEVICE_MODE_BT;
+			sensorClearData();
+			IIC_WriteBlock(EEPROM_RECON_INFO_BASE,6,(u8_t *)m_remoteAddr);
+			Delay1ms(10);
+			IIC_WriteBlock(EEPROM_CONN_MODE,1,&g_variable.currentState);
+			IPC_TxControlCmd(IPC_CMD_ENTER_SNIFF);
+			g_variable.nextMode = DEVICE_MODE_NONE;
+			g_variable.reconnFlag = 0;
+			break;
+		case IPC_EVT_LINKKEY_GENERATE:
+			IIC_WriteBlock(EEPROM_LINK_KEY,16,(u8_t *)m_linkKey);
+			break;
+		case IPC_EVT_VIRTUAL_CABLE_UNPLUG:
+		case IPC_EVT_CLEAR_LINKKEY:
+			xmemclear_ff(m_remoteAddr,6);
+			IIC_WriteBlock(EEPROM_RECON_INFO_BASE,6,(u8_t *)m_remoteAddr);
+
+		case IPC_EVT_RECONN_FAILED:
+		case IPC_EVT_RECONN_PAGE_TIMEOUT:
+		case IPC_EVT_BB_DISCONNECTED:
+			if (g_variable.nextMode == DEVICE_MODE_24G) 
+			{
+				deviceSwitch24GMode();
+				g_variable.nextMode = DEVICE_MODE_NONE;
+				break;
+			}
+			else if (g_variable.nextMode == DEVICE_MODE_DISC) 
+			{
+				g_variable.currentState = DEVICE_MODE_DISC;
+				g_variable.nextMode = DEVICE_MODE_NONE;
+				
+#if MOUSE_BT_MODE_ENABLE	
+				IPC_TxControlCmd(IPC_CMD_START_DISCOVERY);
+#endif
+				leADVStart();
+				break;
+			}
+			g_variable.currentState = DEVICE_MODE_PREPARE_SLEEP;
+			break;
+#endif			
+		case IPC_EVT_24G_PAIRING_COMPLETE:
+			g_variable.currentState = DEVICE_MODE_24G;
+			IIC_WriteBlock(EEPROM_CONN_MODE, 1,&g_variable.currentState);
+			IIC_WriteBlock(EEPROM_24G_ADDR,6,(u8_t *)m_24gRxPayload);
+			IPC_TxControlCmd( IPC_CMD_START_24G);
+			break;
+		case IPC_EVT_24G_ATTEMPT_FAIL:	
+			deviceStop24g();
+			g_variable.g24DongleExist = 0;
+			if (g_variable.Factory_Pwr_on_f)
+			{
+				g_variable.Factory_Pwr_on_f++;
+				g_variable.Factory_Pwr_on_f = (g_variable.Factory_Pwr_on_f) & 0x07;
+				if (g_variable.Factory_Pwr_on_f & 0x01)
+					IPC_TxControlCmd(IPC_CMD_START_24G);
+				else 
+					IPC_TxControlCmd(IPC_CMD_PAIR_24G);
+				break;
+			}
+#if MOUSE_BT_MODE_ENABLE			
+			IIC_Read(EEPROM_CONN_MODE, 1,&curentMode);
+			Delay1ms(10);
+			if (curentMode == DEVICE_MODE_BT) 
+			{
+				Delay1ms(10);
+				IIC_Read(EEPROM_RECON_INFO_BASE ,6 , m_reconnAddr);
+				Delay1ms(10);
+				IIC_Read(EEPROM_LINK_KEY, 16, m_linkKey);
+				if (m_reconnAddr[0]!=0) 
+				{
+					g_variable.currentState = DEVICE_MODE_PAGE;
+					IPC_TxControlCmd(IPC_CMD_RECONNECT);
+					break;
+				}
+				else 
+				{
+					IPC_TxControlCmd(IPC_CMD_START_DISCOVERY);
+					break;
+				}
+			}
+			else
+			{
+				leReconnStart();
+			}
+#else
+			IIC_Read(EEPROM_RECONN_LE_ADDR, 6,reconnLeAddr_buff);
+			if((reconnLeAddr_buff[0] == 0xff) && (reconnLeAddr_buff[1] == 0xff) 
+				&& (reconnLeAddr_buff[2] == 0xff) && (reconnLeAddr_buff[3] == 0xff) 
+				&& (reconnLeAddr_buff[4] == 0xff) && (reconnLeAddr_buff[5] == 0xff)){
+				g_variable.enterHibernateFlag = 1;
+				g_variable.enterHibernateTimer = 30;	//wait bt to exit 2.4G short lpm (about 50ms)
+				break;
+			}
+			leReconnStart();
+#endif
+			break;
+		case IPC_EVT_24G_ATTEMPT_SUCCESS:
+			sensorClearData();
+			g_variable.g24DongleExist = 1;
+			g_variable.mouseFlag = 0;
+			g_variable.Factory_Pwr_on_f = 0;
+//			curentMode = DEVICE_MODE_24G;
+//			IIC_WriteBlock(EEPROM_CONN_MODE,1,&curentMode);
+			g_variable.nextMode = DEVICE_MODE_NONE;
+			break;
+
+		case IPC_EVT_LE_NOTIFY_ENABLE:
+			SPI_Initialize();//spi
+			SPI_TwReset();
+			SPI_WriteSensor(0x80,0x06);			
+			IIC_Read(EEPROM_DPI_ADDR, 1, &g_variable.dpiCount);
+			dpiWriteInSensor();
+			break;
+		case IPC_EVT_LE_CONNECTED:
+			m_51ReadSensor = 0;
+			IPC_TxControlCmd(IPC_CMD_STOP_ADV);
+			IPC_TxControlCmd(IPC_CMD_STOP_DISCOVERY);
+			g_variable.currentState = DEVICE_MODE_BLE_BB_CONNECT;
+			curentMode = DEVICE_MODE_BLE;
+			sensorClearData();
+			IIC_WriteBlock(EEPROM_REMOTE_LE_ADDR,6,(u8_t *)m_remoteLeAddr);
+			Delay1ms(10);
+			IIC_WriteBlock(EEPROM_RECONN_LE_ADDR,6,(u8_t *)m_reconnLeAddr);
+			Delay1ms(10);				
+			IIC_WriteBlock(EEPROM_CONN_MODE,1,&curentMode);
+			g_variable.nextMode = DEVICE_MODE_PREPARE_SLEEP;
+			g_variable.reconnFlag = 0;
+			break;
+		case IPC_EVT_LE_DISCONNECTED:	
+			if(g_variable.nextMode == DEVICE_MODE_BLE_ADV)
+			{
+#if MOUSE_BT_MODE_ENABLE	
+				IPC_TxControlCmd(IPC_CMD_START_DISCOVERY);
+#endif
+				leADVStart();
+				g_variable.currentState = DEVICE_MODE_DISC;
+			}
+			else if(g_variable.nextMode == DEVICE_MODE_PREPARE_SLEEP)
+			{
+				deviceLongSleep();
+			}
+			else 
+			{
+				leReconnStart();
+			}
+			break;
+		}
+			
+}
+
+void comboKeyPb()    // Lmr 3s enter discovery mode
+{
+	u8_t buttonLeft = 0,buttonRight = 0,buttonMiddle = 0;
+	u8_t combkey = 0;
+	u8_t currentStateTemp=0;
+	buttonLeft = !GPIO_GetInputStatus(KS_BL_GPIO);
+	buttonMiddle = !GPIO_GetInputStatus(KS_BM_GPIO);
+	buttonRight = !GPIO_GetInputStatus(KS_BR_GPIO);
+	combkey = buttonLeft |buttonRight<<1|buttonMiddle<<2;
+	if(combkey == 0x07) 
+	{
+		g_variable.enterHibernateTimer = 30;
+		g_variable.sleepTimer = 0;
+		g_variable.wheelTimer = 10;
+		if (g_variable.buttonTimer >= MOUSE_ENTER_PB_TIME)
+			return ;
+		g_variable.buttonTimer ++;
+		if (g_variable.buttonTimer == MOUSE_ENTER_PB_TIME)
+		{
+			g_variable.enterHibernateFlag = 0;
+			g_variable.enterHibernateTimer = 0;
+		
+			switch (g_variable.currentState) 
+			{
+#if MOUSE_BT_MODE_ENABLE
+				case DEVICE_MODE_BT:
+				case DEVICE_MODE_BB:
+					IPC_TxControlCmd(IPC_CMD_DISCONNECT);
+					g_variable.nextMode = DEVICE_MODE_DISC;
+					g_variable.reconnFlag = 0;
+					break;
+#endif 
+				case DEVICE_MODE_BLE_BB_CONNECT:
+					IPC_TxControlCmd(IPC_CMD_LE_DISCONNECT);
+					g_variable.nextMode = DEVICE_MODE_BLE_ADV;
+					break;
+				case DEVICE_MODE_BLE_ADV:
+					g_variable.currentState = DEVICE_MODE_DISC;
+#if MOUSE_BT_MODE_ENABLE
+					IPC_TxControlCmd(IPC_CMD_START_DISCOVERY);
+#endif
+					leADVStart();
+					break;	
+				case DEVICE_MODE_24G:
+					deviceStop24g();
+					Delay1ms(10);
+					g_variable.currentState = DEVICE_MODE_DISC;
+#if MOUSE_BT_MODE_ENABLE
+					IPC_TxControlCmd(IPC_CMD_START_DISCOVERY);
+#endif
+					leADVStart();
+					break;
+#if MOUSE_BT_MODE_ENABLE
+				case DEVICE_MODE_PAGE:
+					g_variable.reconnFlag = 0;
+					IPC_TxControlCmd(IPC_CMD_BB_RECONN_CANCEL);
+					g_variable.nextMode = DEVICE_MODE_DISC;
+					break;
+#endif
+				case DEVICE_MODE_NONE:
+				case DEVICE_MODE_PREPARE_SLEEP:
+					deviceStop24g();
+					g_variable.currentState = DEVICE_MODE_DISC;
+#if MOUSE_BT_MODE_ENABLE
+					IPC_TxControlCmd(IPC_CMD_START_DISCOVERY);
+#endif
+					leADVStart();
+					break;
+				default :
+					break;
+			}
+		}
+	}
+	else  g_variable.buttonTimer = 0;
+}
+
+static void deviceTimer500ms()
+{
+	u8_t sleepState = 0;
+	g_variable.sleepTimer++;
+	switch (g_variable.currentState) 
+	{
+		case DEVICE_MODE_BLE_ADV:
+			 sleepState = DEVICE_MODE_BLE;
+			 if (g_variable.sleepTimer == 16)
+			 {
+		 		goto LONG_SLEEP;
+			 }
+			 break;
+		case DEVICE_MODE_DISC:
+			sleepState = DEVICE_MODE_BT;
+			if (g_variable.sleepTimer == 360)	//BT Discover time 360 = 3min
+			{
+				m_lpmMode = 1;
+				goto LONG_SLEEP;
+			}
+			break;
+		case DEVICE_MODE_BLE_BB_CONNECT:	
+			sleepState = DEVICE_MODE_BLE;
+			if (g_variable.sleepTimer == 1200)	//BT sleep time 1200 = 10min
+			{	
+				IPC_TxControlCmd(IPC_CMD_LE_DISCONNECT);
+				g_variable.nextMode = DEVICE_MODE_PREPARE_SLEEP;
+			}
+			break;
+#if MOUSE_BT_MODE_ENABLE
+		case DEVICE_MODE_BT:
+			sleepState = DEVICE_MODE_BT;
+			if (g_variable.sleepTimer == 1200)	//BT sleep time 1200 = 10min
+			{	
+				IPC_TxControlCmd(IPC_CMD_DISCONNECT);
+				g_variable.nextMode = DEVICE_MODE_NONE;
+			}
+			break;
+#endif
+		case DEVICE_MODE_24G:
+			sleepState = DEVICE_MODE_24G;
+			if ((g_variable.sleepTimer > 1200) && (g_variable.g24DongleExist == 1))
+			{
+				goto LONG_SLEEP; 
+			}
+			break;
+		case DEVICE_MODE_PREPARE_SLEEP:
+			sleepState = DEVICE_MODE_BT;
+			if (!IPC_IsTxBuffEmpty())
+				return;
+			if (g_variable.sleepTimer >= 3)		//24G sleep time 600=10min
+			{
+				goto LONG_SLEEP;
+			}
+			break;
+	}
+	return;
+		
+	LONG_SLEEP:
+//		IIC_WriteBlock(EEPROM_CONN_MODE,1,&sleepState);
+		deviceLongSleep();
+}
+
+void Power_low_detect(void)
+{
+	u16_t adc_value = 0;
+	adc_value = ADC_GetCurrentValue() - ADC_Get0vBase();
+	
+#if ADC_VINLPM_ENABLE
+	if ((*(volatile unsigned char xdata *)mem_adc_config_flag)  == 1) 
+	{
+		if (adc_value < (((ADC_Get3vBase() - ADC_Get0vBase()) /30)*23)) 
+		{
+			g_variable.adcLowPowerFlag = 1;
+		}
+		else 
+		{
+			g_variable.adcLowPowerFlag = 0;
+		}
+		if (adc_value < ((ADC_Get3vBase() - ADC_Get0vBase()) /30 * 21))
+		{
+			if(m_new24gAbortPac != 1 && g_variable.currentState == DEVICE_MODE_24G)
+				return;
+			deviceLongSleep();
+		}
+	}
+#endif
+	
+#if ADC_GPIO_ENABLE
+	if ((*(volatile unsigned char xdata *)mem_adc_config_flag)  == 4) 
+	{
+		if (adc_value < (((ADC_Get3vBase() - ADC_Get0vBase()) /30)*10)) 
+			g_variable.adcLowPowerFlag = 1;
+		else g_variable.adcLowPowerFlag = 0;
+		if (adc_value < ((ADC_Get3vBase() - ADC_Get0vBase()) /30 * 9))
+		{
+			if(m_new24gAbortPac != 1 && g_variable.currentState == DEVICE_MODE_24G)
+				return;
+			deviceLongSleep();
+		}
+	}
+#endif
+}
+
+static void deviceTimer100ms()
+{
+	if (g_variable.wheelTimer!=0) 
+		g_variable.wheelTimer--;
+	g_variable.timer100msCount++;
+	if (g_variable.modeSwCount)
+		g_variable.modeSwCount ++;
+	deviceLedFlash();
+	comboKeyPb();
+	Power_low_detect();
+
+	if(g_variable.enterHibernateFlag == 1){
+		if(g_variable.enterHibernateTimer == 0){
+			g_variable.enterHibernateFlag = 0;
+			deviceLongSleep();
+		}
+		g_variable.enterHibernateTimer--;
+	}	
+}
+
+static tIPCControlBlock cb = 
+{
+	deviceEvtCB,
+	NULL,
+	deviceTimer500ms,
+	deviceTimer100ms,
+	NULL
+};
+
+static void deviceInit()
+{
+	IPC_Initialize(&cb);
+}
+
+void YC_SetWake(void)
+{
+	(*(volatile unsigned char xdata *)(mem_gpio_wakeup_low+0)) = 0;
+	(*(volatile unsigned char xdata *)(mem_gpio_wakeup_low+1)) = 0;
+	(*(volatile unsigned char xdata *)(mem_gpio_wakeup_low+2)) = 0;
+	(*(volatile unsigned char xdata *)(mem_gpio_wakeup_low+3)) = 0;
+	Sensor_spi_disable();
+	GPIO_SetOutput(Timer_div_io, 0);
+	GPIO_SetInput(KS_BL_GPIO, 0);
+	GPIO_SetInput(KS_BR_GPIO, 0);
+	GPIO_SetInput(KS_BM_GPIO, 0);
+	GPIO_SetInput(KS_BK_GPIO, 0);
+	GPIO_SetInput(KS_FW_GPIO, 0);
+	GPIO_SetInput(CPI_GPIO, 0);
+	GPIO_SetWakeupByCurrentState(WHEEL_DATA_A_GPIO);
+	GPIO_SetWakeupByCurrentState(WHEEL_DATA_B_GPIO);
+	GPIO_SetWakeupByCurrentState(KS_BL_GPIO);
+	GPIO_SetWakeupByCurrentState(KS_BM_GPIO);
+	GPIO_SetWakeupByCurrentState(KS_BR_GPIO);
+	GPIO_SetWakeupByCurrentState(KS_BK_GPIO);
+	GPIO_SetWakeupByCurrentState(KS_FW_GPIO);
+	GPIO_SetWakeupByCurrentState(CPI_GPIO);
+}
+
+
+void YC_24gShortLpmProcess(void)
+{
+	u8_t deltaXL=0, deltaYL=0, deltaXH=0, deltaYH=0;
+	u8_t send_flag = 0;
+	u8_t poll_cnt = 0;
+
+	m_sendData24gShortLpm = SHORT_LPM_STATE_POLLING;
+
+	SPI_Initialize();//spi
+	if ( g_variable.currentState == DEVICE_MODE_24G && g_variable.g24DongleExist == 1
+		&&(!GPIO_GetInputStatus(SENSOR_MOTION_GPIO))){
+		send_flag = mouseReadSensor();
+	}
+	g_variable.currentState = DEVICE_MODE_24G;
+	
+	while(1){
+		poll_cnt ++;
+		IPC_DealSingleStep();
+		if(poll_cnt > 5){
+			poll_cnt = 5;
+			m_sendData24gShortLpm = SHORT_LPM_STATE_NODATA;
+		}else{
+			mouseWheelScan();
+			mouseKeyDetect();			
+			if(SHORT_LPM_STATE_POLLING== m_sendData24gShortLpm){
+				if (g_variable.deltaZWheel)
+				{
+					send_flag = 1;
+					m_sendData24gShortLpm = SHORT_LPM_STATE_BUTTON_WHEEL;
+					m_new24gKWEvent = 1;
+					m_shortDataWheel = 1;
+				}
+				if(g_variable.deltaKey != g_variable.keyDetect)
+				{	
+					m_new24gKWEvent = 1;
+					send_flag = 1;
+					m_sendData24gShortLpm = SHORT_LPM_STATE_BUTTON_WHEEL;
+					g_variable.deltaKey = g_variable.keyDetect;
+					if (g_variable.deltaKey == 0x07) {
+					//	g_variable.deltaKey = 0;
+						send_flag = 0;
+					}
+				}
+				if(g_variable.deltaKey == 0x07)
+				{
+					//m_new24gKWEvent = 1;
+					m_sendData24gShortLpm = SHORT_LPM_STATE_BUTTON_WHEEL;
+				}
+				
+				if(1 == send_flag){
+					mousePackage();
+					send_flag = 0;
+					if(SHORT_LPM_STATE_BUTTON_WHEEL != m_sendData24gShortLpm){
+						m_sendData24gShortLpm = SHORT_LPM_STATE_DATA;
+					}
+				}
+			}
+		}
+
+#if OTA_ENABLE
+		//OTA
+		if(m_24gRxPayload[0] == PC_REPORT_ID 
+			&&m_24gRxPayload[1] == CMD_USER_DEFINE
+			&&m_24gRxPayload[2] == CMD_OTA_START){
+			wirelessCmdOtaStart();
+		}		
+#endif
+
+		if(FIX_ENTER_LPM == current_task){
+			if(g_variable.wheelTimer ||g_variable.lockLpm)
+			{
+				IPC_AbandonLpm();
+				break;
+			}
+			if (g_variable.currentState == DEVICE_MODE_24G)
+			{
+				YC_SetWake();
+				GPIO_SetWakeup(SENSOR_MOTION_GPIO,0);
+				IPC_WaitLpm();	//<wait enter lpm,do nothing
+				break;
+			}
+			else
+			{
+				IPC_AbandonLpm();
+				break;
+			}
+		}
+	}
+}
+void YC_SysMain(void)
+{		
+	u8_t i;
+	deviceInit();
+	if(1 == m_enable24gShortLpm){
+		YC_24gShortLpmProcess();
+	}
+	while(1)
+	{
+		IPC_DealSingleStep();
+		mouseWheelScan();
+		mouseKeyDetect();
+		mouseMotion();
+#if OTA_ENABLE
+		wirelessConfigProcess();
+#endif		
+		switch (current_task) 
+		{
+			case FIX_ENTER_HIBERNATE:
+				g_variable.read_sensor_count = 0;
+				sensorPowerDown();
+				for (i = 0; i < 16; i ++) {
+					REG_GPIO_OE(i) = 0x00;
+				}
+				if (GPIO_GetInputStatus(WHEEL_DATA_A_GPIO))
+					GPIO_SetInput(WHEEL_DATA_A_GPIO, 0);
+				else GPIO_SetInput(WHEEL_DATA_A_GPIO, 1);
+				if (GPIO_GetInputStatus(WHEEL_DATA_B_GPIO))
+					GPIO_SetInput(WHEEL_DATA_B_GPIO, 0);
+				else GPIO_SetInput(WHEEL_DATA_B_GPIO, 1);
+				GPIO_SetOutput(LED_GPIO, 1);
+				YC_SetWake();
+				IPC_WaitLpm();
+				while(1);
+				break;
+			case FIX_ENTER_LPM:
+				if (g_variable.wheelTimer ||g_variable.lockLpm)
+				{
+					IPC_AbandonLpm();
+					break;
+				}
+				if (g_variable.currentState == DEVICE_MODE_24G 
+					||g_variable.currentState == DEVICE_MODE_BT
+					||g_variable.currentState == DEVICE_MODE_BLE_BB_CONNECT)
+				{
+					YC_SetWake();
+					GPIO_SetWakeup(SENSOR_MOTION_GPIO,0);
+					IPC_WaitLpm();	/*<wait enter lpm,do nothing*/
+					break;
+				}
+				else
+				{
+					IPC_AbandonLpm();
+					break;
+				}
+		}
+	}
+}
+
+
+
+
Index: Standard_mouse/c51/type.h
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/type.h	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/type.h	(working copy)
@@ -0,0 +1,28 @@
+#ifndef _YC_DEFINE_H_
+#define _YC_DEFINE_H_
+
+#define PUBLIC 
+#define LOCAL static
+
+typedef unsigned char byte;
+typedef unsigned char xdata xbyte;
+typedef unsigned int uint;
+typedef unsigned char xdata * pxbyte;
+typedef unsigned char xdata * data pxdbyte;
+typedef unsigned   char    u8_t;
+typedef signed     char    s8_t;
+typedef unsigned   short   u16_t;
+typedef signed     short   s16_t;
+typedef unsigned   long    u32_t;
+typedef signed     long    s32_t;
+typedef unsigned char xdata xu8_t;
+typedef bit bool;
+
+#define true 1
+#define false 0
+#ifndef NULL
+#define NULL (0)
+#endif
+
+#endif
+
Index: Standard_mouse/c51/uart.h
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/uart.h	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/uart.h	(working copy)
@@ -0,0 +1,56 @@
+#ifndef _UART_H_
+#define _UART_H_
+#include "type.h"
+ 
+#define  UART_BAUD_115200 0x00d0
+
+///**********************<buff define**************************/
+//please do not change here
+#define UART_RX_HEAD	0x1e00		/**< yc rx buff head */
+#define UART_RX_END		0x1eff		/**< yc rx buff end */
+
+#define UART_TX_HEAD	0x1f00		  /**< yc tx buff head */
+#define UART_TX_END		0x1fff		/**< yc tx buff end */
+///**************************<end ****************************/
+#define UART_SelectGpio() REG_GPIO_SELECT(1) |= BIT(2)
+
+#define UART_Enable() \
+			REG_UART_CLK_SEL &= 0xfe,\
+			REG_CLK_OFF(1) &= ~ BIT(7)				//turn on UART's clock
+			
+#define  UART_ControlOn() \
+			REG_UART_CTRL = 0x91
+
+#define UART_ControlOff() \
+			REG_UART_CTRL = 0x81
+
+#define UART_SetRxBuff(s,e)   REG_UART_RX_ADDR_S = ESWAP((u16_t)(s)),\
+								REG_UART_RX_ADDR_E =  ESWAP((u16_t)(e))
+								
+							
+#define UART_SetTxBuff(s,e)	REG_UART_TX_ADDR_S = ESWAP((u16_t)(s)),\
+								REG_UART_TX_ADDR_E =  ESWAP((u16_t)(e))
+									
+
+#define UART_SetBaudRate(b)		REG_UART_BAUD = ESWAP((u16_t)(b))
+
+
+#define UART_ReSet()	REG_UART_TX_PTRP_R = REG_UART_TX_ADDR_S,\
+							REG_UART_TX_PTR_W = REG_UART_TX_ADDR_S,\
+								REG_UART_RX_PTR_R = REG_UART_RX_ADDR_S
+
+#define UART_OP_MAXREAD	1		
+#define UART_OP_UNRELEASE (0x02)
+
+
+void UART_Initialize(void);
+
+u8_t UART_RecvData(u8_t *   pbuff, u8_t len);
+
+u8_t  UART_SendData(const u8_t*  pbuff, u8_t len);
+
+u16_t UART_GetRxCount();
+
+u8_t UART_RecvDataWithoutRelease(u8_t *   pbuff, u8_t len);
+
+#endif
\ No newline at end of file
Index: Standard_mouse/c51/uart.c
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/uart.c	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/uart.c	(working copy)
@@ -0,0 +1,86 @@
+#include "uart.h" 
+#include "utilities.h"
+ 
+static volatile u8_t xdata uart_tx_buff[0x1ff] _at_ UART_RX_HEAD ;
+
+/*<********************** internal func**********************/
+
+static pxbyte uart_cpyout(pxbyte dest, u8_t* src, u8_t len)
+{
+	while(len--){
+		*dest++ = *src++;
+		if ((u16_t)src > UART_RX_END){
+			src = (pxbyte)UART_RX_HEAD;
+		}
+	}
+	return src;
+}
+
+static pxbyte uart_cpyin(pxbyte dest, u8_t* src, u8_t len)
+{
+	while(len--){
+		*dest++ = *src++;
+		if ((u16_t)dest > UART_TX_END){
+			dest = (pxbyte)UART_TX_HEAD;
+		}
+	}
+	return dest;
+}
+
+
+/*==============UART======================================================================*/
+void UART_Initialize()
+{
+	UART_SetRxBuff(UART_RX_HEAD,UART_RX_END);
+	UART_SetTxBuff(UART_TX_HEAD,UART_TX_END);
+	UART_SelectGpio();
+	UART_ReSet();
+	UART_SetBaudRate(UART_BAUD_115200);
+	UART_Enable();
+	UART_ControlOff();
+}
+//if len =0 ;return rev length in uart buff
+u8_t *rrptr  = uart_tx_buff;
+u8_t UART_RecvData(u8_t *   pbuff, u8_t len)
+{
+	u16_t rx_len;
+	rx_len = ESWAP(REG_UART_RX_ITEMS);
+
+	rx_len = min(len,rx_len);	
+	if (rx_len!=0){
+		rrptr = uart_cpyout(pbuff,rrptr,rx_len);
+		//yc_ice_break();
+		REG_UART_RX_PTR_R = ESWAP((short)rrptr);
+	}
+	return rx_len;
+}
+
+u8_t  UART_SendData(const u8_t*  pbuff, u8_t len)
+{
+	u8_t* twptr;
+	u8_t lenoo= len;
+	twptr = (u8_t*)ESWAP(REG_UART_TX_PTR_W);
+	twptr = uart_cpyin((u8_t*)twptr, pbuff,len);
+	REG_UART_TX_PTR_W = ESWAP((short)twptr);
+	return 0;
+}
+
+u16_t UART_GetRxCount()
+{
+	return ESWAP(REG_UART_RX_ITEMS);
+}
+
+u8_t UART_RecvDataWithoutRelease(u8_t *   pbuff, u8_t len)
+{
+	u16_t rx_len;
+	u8_t* rrp = rrptr;
+	rx_len = ESWAP(REG_UART_RX_ITEMS);
+
+	rx_len = min(len,rx_len);	
+	if (rx_len!=0){
+		rrp = uart_cpyout(pbuff,rrp,rx_len);
+	}
+	return rx_len;
+}
+
+ 
Index: Standard_mouse/c51/util/crc16.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: Standard_mouse/c51/util/crc16.exe
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/crc16.exe	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/crc16.exe	(working copy)

Property changes on: Standard_mouse/c51/util/crc16.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Standard_mouse/c51/util/crc16.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/crc16.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/crc16.pl	(working copy)
@@ -0,0 +1,27 @@
+$debug = 0;
+$crc = 0xffff;
+$i = 0;
+$offset = 0xffff;
+$source_file = $ARGV[0];
+$offset = $ARGV[1];
+
+open(EEP,"$source_file") or die $!;
+
+while (<EEP>) {    
+	$c = hex();
+
+  if($i >= $offset){
+  	if($debug){printf "%02x\t", $c;}
+  	$crc  = ($crc >> 8) | ($crc << 8);
+		$crc ^= $c & 0xff;
+		$crc ^= ($crc & 0xff) >> 4;
+		$crc ^= $crc << 12;
+		$crc ^= ($crc & 0xff) << 5;
+		$crc &= 0xffff;
+  }
+  $i ++;
+  if($debug){printf "%02x\t", $crc;}
+  printf "%02x\n", $c;
+}
+
+printf "%02x\n%02x\n", (($crc >> 8) & 0xff),($crc & 0xff);
Index: Standard_mouse/c51/util/eeprom2bin.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/eeprom2bin.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/eeprom2bin.pl	(working copy)
@@ -0,0 +1,15 @@
+
+$source_file = $ARGV[0];
+#$dest_file = $ARGV[1];
+
+
+open(EEP,"$source_file") or die $!;
+open(BINFILE, ">eeprom.bin") or die $!;
+binmode(BINFILE);
+while (<EEP>) {
+	printf BINFILE "%c", hex();
+}
+close(EEP);
+close(BINFILE);
+    
+   
Index: Standard_mouse/c51/util/eeprom2fulleeprom.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: Standard_mouse/c51/util/eeprom2fulleeprom.exe
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/eeprom2fulleeprom.exe	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/eeprom2fulleeprom.exe	(working copy)

Property changes on: Standard_mouse/c51/util/eeprom2fulleeprom.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Standard_mouse/c51/util/eeprom2fulleeprom.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/eeprom2fulleeprom.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/eeprom2fulleeprom.pl	(working copy)
@@ -0,0 +1,18 @@
+
+
+
+$source_file = $ARGV[0];
+$eeprom_size = $ARGV[1];
+
+open(EEP,"$source_file") or die("cannot open files");
+for ($i = 1 ;$i<=$eeprom_size*128-2;$i++)
+{
+
+    while (<EEP>) { 
+        $c = hex();
+        printf "%02x\n", $c;
+        $i++;
+    }
+
+	printf "FF\n";
+}
Index: Standard_mouse/c51/util/hex2mif.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: Standard_mouse/c51/util/hex2mif.exe
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/hex2mif.exe	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/hex2mif.exe	(working copy)

Property changes on: Standard_mouse/c51/util/hex2mif.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Standard_mouse/c51/util/hex2mif.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/hex2mif.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/hex2mif.pl	(working copy)
@@ -0,0 +1,103 @@
+#!/usr/bin/perl
+# 2005 - David Grant.
+# Take an ihex input from STDIN, and write a .mif file to STDOUT
+# This script could probably be implemented with something like:
+#    $#!@_%^$@%$@%$_!^$@#^@%$#@_%$@^&!%$_!%!%&$*(#^#@%^) 
+# But I perfer the somewhat readable version.
+
+# Flow from within the Nios2 SDK Shell:
+# nios2-elf-as file.asm -o file.o
+# nios2-elf-objcopy file.o --target ihex file.hex
+# cat file.hex | perl hex2mif.pl > file.mif
+
+my @rom = ();
+my @ram = ();
+
+sub conv {
+	my ($in) = @_;
+	$out = substr($in,6,2).substr($in,4,2).substr($in,2,2).substr($in,0,2);
+	return hex $out;
+}
+
+sub writeromfile {
+	my (@buf) = @_;
+	my($x);
+
+	for($x=0; $x<@buf; $x++) {
+		printf ("%02x\n", $buf[$x]);
+	}
+}
+
+sub writebinfile {
+	my (@buf) = @_;
+	my($x);
+
+	for($x=0; $x<@buf; $x++) {
+		for($y=0;$y<8;$y++) {
+			printf ("%d", $buf[$x] & 1<<(7-$y) ? 1 : 0);
+		}
+		printf "\n" if(($x & 3) == 3);
+	}
+}
+
+sub writemiffile {
+	my (@buf) = @_;
+	my($x);
+	print  ("WIDTH=8;\n");
+	print ("DEPTH=".@buf.";\n");
+	print ("CONTENT BEGIN\n");
+	for($x=0; $x<@buf; $x++) {
+		printf ("\t%04x : %02x;\n", $x, $buf[$x]);
+	}
+	print ("END;\n");
+}
+
+if($ARGV[0] eq "ram" || $ARGV[0] eq "rammif")
+{
+	$org = 0x8000;
+	$limit = 0xffff;
+} elsif($ARGV[0] eq "rom" || $ARGV[0] eq "bin" || $ARGV[0] eq "mif" || $ARGV[0] eq "rommif" ) {
+	$org = 0;
+	$limit = 0x7fff;
+} else {
+	$org = 0;
+	$limit = 0xffffff;
+}
+
+
+$org = 0;
+$limit = 0x7fff;
+
+while (<STDIN>) {
+	$l = $_;
+	next if(!/\w/);
+	$count = (hex substr($l, 1, 2));
+	$addr = (hex substr($l, 3, 4));
+	$type = (hex substr($l, 7, 2));
+	last if $type eq 1;
+	if($type == 4) {
+		$org = -(hex substr($l, 9, 4))*0x10000;
+	}
+	if($addr >= $org && $addr <= $limit) 
+	{
+		$addr*=4 if($ARGV[0] eq "bin");
+		$addr -= $org;
+		for($x=0; $x<$count; $x++) {
+			$rom[$addr + $x] = (hex substr($l, 9+2*$x, 2)) ; 
+		}
+	}
+}
+
+if($ARGV[0] eq "rom" || $ARGV[0] eq "ram" || $ARGV[0] eq "mem")
+{
+	writeromfile(@rom);
+}
+elsif($ARGV[0] eq "bin")
+{
+	writebinfile(@rom);
+}
+else
+{
+	writemiffile(@rom);
+}
+
Index: Standard_mouse/c51/util/transform_name2addr.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: Standard_mouse/c51/util/transform_name2addr.exe
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/transform_name2addr.exe	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/transform_name2addr.exe	(working copy)

Property changes on: Standard_mouse/c51/util/transform_name2addr.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: Standard_mouse/c51/util/transform_name2addr.pl
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/transform_name2addr.pl	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/util/transform_name2addr.pl	(working copy)
@@ -0,0 +1,103 @@
+$Sched_path=$ARGV[0];
+$Sched_test_path=$ARGV[1];
+$Memmap_path=$ARGV[2];
+open(Sched,$Sched_path)||die("Cannot open files\n");
+@sched=<Sched>;
+close(Sched);
+open(Sched_test,">$Sched_test_path");
+print Sched_test ("");
+close(Sched_test);
+open(Sched_test,">$Sched_test_path");
+open(Memmap,$Memmap_path)||die("Cannot open files\n");
+@memmap=<Memmap>;
+close(Memmap);
+$type_add=0;
+$type_exchange=0;
+foreach $sched(@sched)
+{
+	$sched_begin = $sched;
+	@Sched = split(/[#]+/, $sched);
+	$sched = @Sched[0];
+	@Sched[0] = "";
+	if($sched =~ /mem[\w]+/)
+	{
+		@memmap_name = split(/[\W]+/, $sched);
+		foreach $memmap_name(@memmap_name)
+		{
+			if($memmap_name =~ /mem[\w]+/)
+			{
+				$Memmap_name=$memmap_name;
+				$type_add = 0;
+				$type_exchange = 0;
+				if($sched =~ /$Memmap_name[+]/)
+				{
+					$type_add = 1;#修改的类型第一种，加
+					@ADD_Num=split(/[^0-9\+xa-fA-F]/,$sched);
+					foreach $ADD_Num(@ADD_Num)
+					{
+						if($ADD_Num =~ /\+/)
+						{
+							if($ADD_Num =~ /0x/)
+							{
+								@add_num = split(/\+0x/,$ADD_Num);
+								$add_num1 =@add_num[1];
+								$add_num_begin = "0x".$add_num1;
+								$add_num = hex($add_num1);
+							}
+							else
+							{
+								@add_num = split(/\+/,$ADD_Num);
+								$add_num1 =@add_num[1];
+								$add_num_begin = $add_num1;
+								$add_num = int($add_num1);
+							}
+						}#$add_num是匹配出的需要加的数值，字符串形式
+					}
+				}
+				if($sched =~ /[:] *\t*$Memmap_name/)
+				{
+					$type_exchange = 1;#修改的类型第二种，高低位交换
+				}
+				foreach $memmap(@memmap)
+				{
+					if($memmap =~ /$Memmap_name/ && $memmap !~ /$Memmap_name[\w]+/)
+					{
+						@Memmap=split(/[ \t\n]/,$memmap);
+						$memmap_address=@Memmap[0];
+						$memmap_address =~ s/0x//;
+						if($type_add==1)
+						{
+							$memmap_address_D = hex($memmap_address);
+							$memmap_address_D = $memmap_address_D+$add_num;
+							$memmap_address_H = sprintf("%x", $memmap_address_D);
+							$memmap_address = $memmap_address_H;
+							$memmap_address_add_finish = $memmap_address;
+							$sched_begin =~ s/$Memmap_name\+$add_num_begin/$memmap_address/;
+						}
+						if($type_exchange==1)
+						{
+							$memmap_address_High = substr($memmap_address,0,2);
+							$memmap_address_Low = substr($memmap_address,2,2);
+							$memmap_address = $memmap_address_Low." ".$memmap_address_High;
+							if($type_add==0)
+							{
+								$sched_begin =~ s/$Memmap_name/$memmap_address/;
+							}
+							else
+							{
+								$sched_begin =~ s/$memmap_address_add_finish/$memmap_address/;
+							}
+						}
+					}
+				}
+				$sched_begin =~ s/$Memmap_name/$memmap_address/;
+			}
+		}
+		printf Sched_test ("%s",$sched_begin);
+	}
+	else
+	{
+		printf Sched_test ("%s",$sched_begin);
+	}	
+}
+close(Sched_test);
Index: Standard_mouse/c51/utilities.h
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/utilities.h	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/utilities.h	(working copy)
@@ -0,0 +1,28 @@
+#ifndef _YC_UTILITIES_H_
+#define _YC_UTILITIES_H_
+#include "common.h"
+
+
+/*==============Set a breakpoint function
+no input:
+no output
+====================*/
+void YC_Ice_break();
+
+//void YC_Ice_Set_Write_Bp(u16_t memaddr);
+
+void dmemcpy(u8_t *dest, u8_t* src, u16_t len) ;
+
+void xmemcpy(pxbyte dest, u8_t* src, u8_t len);
+
+void Delay1ms(u16_t Time);
+
+//void YC_DelayNOP(u8_t num);
+
+void xmemclear_0(u8_t *dest, u16_t len);
+
+void xmemclear_ff(u8_t *dest, u16_t len);
+
+u8_t compare_str(u8_t * str1,u8_t * str2,u8_t len);
+
+#endif
Index: Standard_mouse/c51/utilities.c
===================================================================
--- /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/utilities.c	(revision 0)
+++ /branch/mouse/1098_customers_code_release/Standard_mouse_fast_conn_project/BLE&24G/Standard_mouse/c51/utilities.c	(working copy)
@@ -0,0 +1,66 @@
+#include "utilities.h"
+
+
+void YC_Ice_break()
+{
+	CPUB_ICE_CTRL = 1;
+	return;
+}
+
+void xmemcpy(pxbyte dest, u8_t* src, u8_t len) 
+{
+	while(len--)
+		*dest++ = *src++;
+	return;
+}
+
+void dmemcpy(u8_t *dest, u8_t* src, u16_t len) 
+{
+	while(len--)
+		*dest++ = *src++;
+	return;
+}
+
+void xmemclear_0(u8_t *dest, u16_t len)
+{
+	while(len--)
+		*dest++ = 0x00;
+	return;
+}
+
+void xmemclear_ff(u8_t *dest, u16_t len)
+{
+	while(len--)
+		*dest++ = 0xff;
+	return;
+}
+/*
+void YC_DelayNOP(u8_t num)
+{
+	for(;num>0;num--)
+	{
+		;
+	}
+}
+*/
+void Delay1ms(u16_t Time)
+{
+	u16_t j; 
+	for(;Time>0;Time--)
+	{
+		for(j=0;j<1190;j++);
+	}
+}
+
+u8_t compare_str(u8_t * str1,u8_t * str2,u8_t len)
+{
+	u8_t i;
+	for (i=0;i < len;i++)
+	{
+		if (str1[i] != str2[i])
+			return 0x00;
+	}
+	return 0x01;
+}
+
+
