Index: Makefile
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/Makefile	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/Makefile	(working copy)
@@ -0,0 +1,112 @@
+	comma:= ,
+empty:=
+space:= $(empty) $(empty)
+bracketl:= (
+bracketl0:= \(
+bracketr:= )
+bracketr0:= \)
+
+
+OUTDIR = output
+ROOT_PATH =h:\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:0x4dd0-X:0x4f40),\
+	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 = bluetooth global_variable kb_process keyscan led sys adc ram pwm
+
+#LINK_OBJ_LIB = 
+
+LINK_OBJ_TMP_RAM = $(addsuffix .obj,$(LINK_OBJ_LIB) $(LINK_OBJ_RAM)) ..\patch\ipc.obj ..\patch\utilities.obj ..\patch\gpio.obj ..\patch\iic.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 > $@
+
+
+$(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: YCkbTool.bat
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/YCkbTool.bat	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/YCkbTool.bat	(working copy)
@@ -0,0 +1,76 @@
+@echo off
+title %~0
+: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 /I "%cmd%" equ "k" (goto reset)
+if /I "%cmd%" equ "K" (goto reset)
+if "%cmd%" equ "" (goto error)  else (goto error)
+
+:compile_all
+cd ..\btkb
+call do eep
+cd ..\c51
+
+:compile
+make clean
+make
+
+util\hex2mif.exe < output\fw.hex ram > output\fwram.rom
+copy .\patch\kb.dat + .\patch\rf.dat .\patch\sch.rom 
+
+cd util
+
+perl transform_name2addr.pl ..\patch\sch.rom ..\output\sched.rom ..\patch\memmap.format
+cd ..
+
+copy .\patch\ramcode.rom .\output\
+copy .\patch\geneep.exe .\output\
+copy .\output\*.obj .\patch\*.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
+
+:reset
+e pu
+e ku
+goto end
+
+:download
+e p
+e pu
+e ep
+e k
+e ku
+e a
+e au
+goto end
+
Index: adc.h
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/adc.h	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/adc.h	(working copy)
@@ -0,0 +1,56 @@
+#ifndef _ADC_H
+#define _ADC_H
+#include "common.h"
+
+#define ADC_ENABLE
+/***need to modify  mem_adc_config_flag in kb.dat at the same time****/
+//#define ADC_TYPE_VINLPM			0x01	// 1.8V~3.6V
+#define ADC_TYPE_HVIN			0x02	// 3.0~5.5V
+//#define ADC_TYPE_GPIO			0x04	// 0~1.5V
+
+
+// GPIO5 0x30,   GPIO6 0x31,   GPIO7 0x32,
+//GPIO18 0x33,   GPIO19 0x34,   GPIO20 0x35,   GPIO21 0x36,    GPIO22 0x37
+#define ADC_CHANNEL				0x33	
+
+
+#define BAT_STATUS_NONE			0
+#define BAT_STATUS_LOW				1
+#define BAT_STATUS_SHUT_DOWN		2
+
+//battery check
+#define BATTERY_CHECK_INTERVAL 		5			// 500ms*5 = 2.5s
+#define INIT_BATTERY_VALUE   				0x5454
+#define INIT_BATTERY_VALUE_GPIO			0x6262
+#define INIT_BATTERY_VALUE_VINLPM		0x5151
+#define LOW_BATTERY_FLASH_INTERVAL	24	
+
+// battery to gpio R = 1M
+#define LOW_BATTER_COEFFICIENT_1V5   	0.61
+#define LOW_BATTER_COEFFICIENT_1V1   	0.33
+#define LOW_BATTER_COEFFICIENT_1V0       0.27
+#define LOW_BATTER_COEFFICIENT_0V9	0.19
+
+#define LOW_BATTER_COEFFICIENT_2V2   	0.74
+#define LOW_BATTER_COEFFICIENT_2V0       0.67
+
+#define LOW_BATTER_COEFFICIENT_3V9   	1.33
+#define LOW_BATTER_COEFFICIENT_3V8   	1.29
+#define LOW_BATTER_COEFFICIENT_3V7   	1.24
+#define LOW_BATTER_COEFFICIENT_3V6   	1.21
+#define LOW_BATTER_COEFFICIENT_3V5   	1.17
+#define LOW_BATTER_COEFFICIENT_3V4   	1.14
+#define LOW_BATTER_COEFFICIENT_3V3   	1.11
+#define LOW_BATTER_COEFFICIENT_3V2       1.07
+#define LOW_BATTER_COEFFICIENT_3V1	1.04
+#define LOW_BATTER_COEFFICIENT_3V0	1.01
+#define LOW_BATTER_COEFFICIENT_2V9	0.98
+
+
+void YC_adc_check_timer500ms();
+void YC_adc_check() ;
+void YC_adc_init();
+
+#endif /* YC_ADC_H */
+
+
Index: adc.c
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/adc.c	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/adc.c	(working copy)
@@ -0,0 +1,98 @@
+#include "adc.h"
+
+void YC_adc_init()
+{
+#ifdef  ADC_ENABLE
+	byte i;
+	
+	g_variable.battery_check_interval = BATTERY_CHECK_INTERVAL;
+	g_variable.battery_value_index = 0;
+
+#ifdef ADC_TYPE_HVIN 	
+	for (i = 0; i < BAT_ARRAY_LEN; i++)
+	{
+		g_variable.battery_value[i] = INIT_BATTERY_VALUE;
+	}
+//	g_variable.battery_level_full = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_3V7+m_adc0vBase;
+	g_variable.battery_level_low = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_3V1+m_adc0vBase;
+	g_variable.battery_level_shutdown = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_2V9+m_adc0vBase;
+
+#endif
+#ifdef ADC_TYPE_VINLPM
+		for (i = 0; i < BAT_ARRAY_LEN; i++)
+		{
+			g_variable.battery_value[i] = INIT_BATTERY_VALUE_VINLPM;
+		}
+		g_variable.battery_level_low = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_2V2+m_adc0vBase;
+		g_variable.battery_level_shutdown = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_2V0+m_adc0vBase;
+#endif
+#ifdef ADC_TYPE_GPIO
+	m_adc_channel = ADC_CHANNEL;
+	for (i = 0; i < BAT_ARRAY_LEN; i++)
+	{
+		g_variable.battery_value[i] = INIT_BATTERY_VALUE_GPIO;
+	}
+		g_variable.battery_level_low = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_1V1+m_adc0vBase;
+		g_variable.battery_level_shutdown = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_0V9+m_adc0vBase;
+#endif	
+#endif
+}
+
+void YC_adc_check() 
+{
+#ifdef  ADC_ENABLE
+	byte i;
+	ulong batValue = 0;
+
+	if(!m_adcCurrentValue)
+		return;
+
+	g_variable.battery_value[g_variable.battery_value_index++] = m_adcCurrentValue;
+	if (g_variable.battery_value_index >= BAT_ARRAY_LEN)
+		g_variable.battery_value_index = 0;
+	for (i = 0; i < BAT_ARRAY_LEN; i++)
+	{
+		batValue += g_variable.battery_value[i];
+	}
+	batValue = batValue/BAT_ARRAY_LEN;
+
+	if(batValue < g_variable.battery_level_shutdown)
+	{
+		g_variable.battery_status = BAT_STATUS_SHUT_DOWN;
+	}
+	else
+	{	
+		if (batValue < g_variable.battery_level_low)
+		{
+			g_variable.battery_status = BAT_STATUS_LOW;
+			g_variable.battery_level_low = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_3V3+m_adc0vBase;
+		}
+		else
+		{
+			g_variable.battery_status = BAT_STATUS_NONE;
+			g_variable.battery_level_low = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_3V1+m_adc0vBase;
+		}
+	}
+
+	g_variable.last_battery_status = g_variable.battery_status;
+#endif	
+}
+
+
+void YC_adc_check_timer500ms()
+{
+#ifdef  ADC_ENABLE
+	// adc check timer	
+	if (g_variable.battery_check_interval)
+	{
+		g_variable.battery_check_interval--;
+		if (g_variable.battery_check_interval == 0)
+		{
+			g_variable.battery_check_interval = BATTERY_CHECK_INTERVAL;
+			YC_adc_check();
+		}
+	}
+#endif	
+}
+
+
Index: bluetooth.h
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/bluetooth.h	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/bluetooth.h	(working copy)
@@ -0,0 +1,31 @@
+#ifndef _BLUETOOTH_H
+#define _BLUETOOTH_H
+#include "common.h"
+
+
+#define DEVICE_MODE_BT_ONLY	0
+#define DEVICE_MODE_BLE_ONLY	1
+#define DEVICE_MODE_BT_BLE		0
+
+#define TYPE_BLE			0x01
+#define TYPE_BT			0x02
+#define TYPE_24G			0x03
+
+
+void YC_load_record_list(byte index);
+void YC_store_record_list(byte link_type,byte index);
+byte YC_check_is_connected();
+byte YC_check_need_reconnected();
+void YC_clear_reconnect_flag();
+byte YC_disconnect_all_link();
+void YC_start_reconnect();
+void YC_update_eeprom_data();
+
+
+void YC_get_ble_ramdon_lap();
+void  YC_clear_BT_same_address_record();
+
+
+#endif /* _BLUETOOTH_H */
+
+
Index: bluetooth.c
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/bluetooth.c	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/bluetooth.c	(working copy)
@@ -0,0 +1,82 @@
+#include "bluetooth.h"
+
+
+byte YC_check_is_connected()
+{
+	if (g_variable.g24_currentState == CHANGE_TO_24G_CONNECTED)
+	{
+		return 1;
+	}
+	return 0;
+}
+
+byte YC_check_need_reconnected()
+{
+	byte return_val = 0;
+
+	if(g_variable.pairing_g24_timeout)
+		return return_val;
+
+	if (g_variable.g24_currentState != CHANGE_TO_24G_CONNECTED)
+	{
+		if(g_variable.recon_delay == 0)
+		{
+			g_variable.recon_delay = 10;
+			if ((g_variable.recon_count == 0)
+			&& (power_on_flag == 2))
+			{				
+				YC_key_action_handle(KEY_OPEN_24G);
+				return_val = 1;
+			}
+		}
+	}
+	else
+	{
+		g_variable.release_data = 0;
+		return_val = 1;
+	}
+	return return_val;
+}
+
+
+void YC_clear_reconnect_flag()  
+{
+	g_variable.recon_count = 0;
+}
+
+
+byte YC_disconnect_all_link()
+{
+	if (g_variable.g24_currentState == CHANGE_TO_24G_CONNECTED 
+		||g_variable.g24_currentState == CHANGE_TO_24G_CONNECTING)
+	{
+		IPC_TxControlCmd(IPC_CMD_STOP_24G);
+		return 1;
+	}
+	return 0;
+}
+
+
+void YC_start_reconnect()
+{
+	power_on_flag = 2;
+	YC_key_action_handle(KEY_START_24G);
+}
+
+
+void YC_update_eeprom_data()
+{
+	if (g_variable.update_eeprom_flag)				//bt3.0  bt4.2 record information save
+	{
+		#ifdef  ADC_ENABLE
+		if(m_adcCurrentValue < g_variable.battery_level_shutdown)
+			return;
+		#endif
+		GPIO_Setout(EEPROM_WP_GPIO,0);
+		IIC_WriteBlock(EEPROM_RECON_INFO_BASE_6,4 , (byte *)m_24g_addr);
+		GPIO_Setout(EEPROM_WP_GPIO,1);
+		Delay1ms(10);
+		g_variable.update_eeprom_flag = 0;
+	}
+}
+
Index: btreg.h
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/btreg.h	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/btreg.h	(working copy)
@@ -0,0 +1,1145 @@
+#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_tx_lch                              	0x0090
+#define	mem_tx_len                              	0x0091
+#define	mem_subsniff_instant                    	0x0093
+#define	mem_subsniff_rate                       	0x0097
+#define	mem_subsniff_tcmax                      	0x0098
+#define	mem_subsniff_tsniff                     	0x009a
+#define	mem_lpm_adjust                          	0x009b
+#define	mem_sync_clke                           	0x009c
+#define	mem_lpm_current_mult                    	0x00a2
+#define	mem_gpio_wakeup_low                     	0x00a3
+#define	mem_gpio_wakeup_high                    	0x00a7
+#define	mem_air_mode                            	0x00ab
+#define	mem_sco_asso_handle                     	0x00ac
+#define	mem_sco_handle                          	0x00ad
+#define	mem_esco_desco                          	0x00af
+#define	mem_esco_type                           	0x00b0
+#define	mem_neogotiation_state                  	0x00b1
+#define	mem_saved_amaddr                        	0x00b2
+#define	mem_esco_arq                            	0x00b3
+#define	mem_esco_saved_arq                      	0x00b4
+#define	mem_sco_obuf                            	0x00b5
+#define	mem_sco_ibuf                            	0x00d3
+#define	mem_sco_poll                            	0x00f1
+#define	mem_npage_index                         	0x00f2
+#define	mem_page_mode                           	0x00f3
+#define	mem_page_clk                            	0x00f4
+#define	mem_tst_pktcnt_sync                     	0x00f8
+#define	mem_tst_pktcnt_hec                      	0x00fa
+#define	mem_tst_pktcnt_crc                      	0x00fc
+#define	mem_tst_pktcnt_dmh                      	0x00fe
+#define	mem_tmp_buffer_head                     	0x0100
+#define	mem_tmp_buffer                          	0x0103
+#define	mem_tester_emulate                      	0x0153
+#define	mem_temp_payload                        	0x0154
+#define	test_mode_scenario                      	0x0154
+#define	test_mode_hopping_mode                  	0x0155
+#define	test_mode_tx_freq                       	0x0156
+#define	test_mode_rx_freq                       	0x0157
+#define	test_mode_power_mode                    	0x0158
+#define	test_mode_poll_period                   	0x0159
+#define	test_mode_packet_type                   	0x015a
+#define	test_mode_data_length                   	0x015b
+#define	mem_test_mode_old_debug_config          	0x015d
+#define	mem_tester_cnt                          	0x015e
+#define	mem_temp_am_addr                        	0x015f
+#define	mem_temp_arq                            	0x0160
+#define	mem_pdatatemp                           	0x0161
+#define	mem_len                                 	0x0169
+#define	mem_clkn_bt                             	0x016b
+#define	mem_clke_bt                             	0x016f
+#define	mem_dpll_clkn                           	0x0173
+#define	mem_connection_options                  	0x0177
+#define	mem_nameres_cnt                         	0x0178
+#define	mem_txptr                               	0x0179
+#define	mem_slot_offset                         	0x017b
+#define	extm_fhs_misc                           	0x017d
+#define	extm_newconn_am_addr                    	0x017e
+#define	extm_class                              	0x017f
+#define	extm_lap                                	0x0182
+#define	extm_uap                                	0x0185
+#define	extm_nap                                	0x0186
+#define	mem_debug_config                        	0x0189
+#define	mem_lch_code                            	0x018a
+#define	mem_fhs_am_addr                         	0x018b
+#define	mem_dpll_error                          	0x018c
+#define	mem_bdaddr_list_buff                    	0x018e
+#define	mem_select_list_item                    	0x01b2
+#define	mem_temp_reconn_record                  	0x01b3
+#define	mem_record_bt_mode                      	0x01b3
+#define	mem_temp_lap                            	0x01b4
+#define	mem_list_item_ptr                       	0x01ba
+#define	mem_eir                                 	0x01bc
+#define	mem_ucode_status                        	0x0220
+#define	mem_otp_ucode_flag                      	0x0221
+#define	mem_spid_tbuf                           	0x0223
+#define	mem_iicd_tbuf                           	0x0224
+#define	mem_addr_hi                             	0x0224
+#define	mem_addr_mi                             	0x0225
+#define	mem_addr_lo                             	0x0226
+#define	mem_iicd_addr                           	0x0227
+#define	mem_spid_rbuf                           	0x0228
+#define	mem_ucode_buf                           	0x022c
+#define	mem_ucode_len                           	0x022e
+#define	mem_sched_addr                          	0x0230
+#define	mem_ucode_ptr                           	0x0232
+#define	mem_ucode_keybuf                        	0x0234
+#define	mem_check_plap_temp                     	0x0244
+#define	mem_sensor_id                           	0x0256
+#define	mem_reconnect_flag                      	0x0257
+#define	mem_switch_fail_master_count            	0x0258
+#define	mem_app_evt_timer_count                 	0x0259
+#define	mem_dongle_count                        	0x025a
+#define	mem_le_addr_slave1                      	0x025b
+#define	mem_le_addr_slave2                      	0x0261
+#define	mem_le_peer_state                       	0x0267
+#define	mem_app_peer_addr                       	0x0268
+#define	mem_dongle_peers                        	0x026e
+#define	mem_dongle_pairing_cnt                  	0x026f
+#define	mem_dongle_signature                    	0x0270
+#define	mem_h5rx_ackcnt                         	0x0272
+#define	mem_check_err_acl_cont                  	0x0273
+#define	mem_rp_packets                          	0x0274
+#define	mem_packet_type                         	0x0275
+#define	mem_hci_sniff_conn_handle               	0x0277
+#define	mem_hci_sniff_max_interval              	0x0279
+#define	mem_hci_sniff_min_interval              	0x027b
+#define	mem_hci_sniff_attempt                   	0x027d
+#define	mem_hci_sniff_timeout                   	0x027f
+#define	mem_voice_setting                       	0x0281
+#define	mem_retransmission_effort               	0x0283
+#define	mem_sco_ptype                           	0x0284
+#define	mem_extm_uap_restore                    	0x0286
+#define	mem_h5rx_rptr                           	0x0289
+#define	mem_h5rx_ack                            	0x028b
+#define	mem_h5tx_ack                            	0x028c
+#define	mem_h5tx_rptr                           	0x028d
+#define	mem_h5tx_wptr                           	0x028f
+#define	mem_h5tx_free                           	0x0291
+#define	mem_h5rx_tmp                            	0x0293
+#define	mem_h5tx_seq                            	0x0294
+#define	mem_hci_acl_queue_wptr                  	0x0295
+#define	mem_hci_acl_queue_rptr                  	0x0297
+#define	mem_hci_acl_queue_end                   	0x0299
+#define	mem_hci_acl_queue_wcnt                  	0x029b
+#define	mem_hci_acl_cnt                         	0x029c
+#define	mem_hci_acl_tx_trigger_wptr             	0x029d
+#define	mem_ucode_id_local                      	0x029f
+#define	mem_temp                                	0x02a0
+#define	mem_timeup                              	0x02a8
+#define	mem_rega                                	0x02ac
+#define	mem_regb                                	0x02b0
+#define	mem_regc                                	0x02b4
+#define	mem_contr                               	0x02b7
+#define	mem_contw                               	0x02b9
+#define	mem_ucode_id_remote                     	0x02bb
+#define	mem_check_sum                           	0x02bc
+#define	mem_ucode_temp                          	0x02bd
+#define	mem_ucode_temp1                         	0x02be
+#define	mem_lock_in_enc                         	0x02bf
+#define	mem_hci_disconn_reason                  	0x02c0
+#define	mem_hci_curr_len                        	0x02c1
+#define	mem_hci_curr_target                     	0x02c2
+#define	mem_l2cap_mem_start                     	0x02c4
+#define	mem_l2cap_rxbuff1_len                   	0x02c4
+#define	mem_l2cap_rxbuff2_len                   	0x02c6
+#define	mem_l2cap_rxbuff_new                    	0x02c8
+#define	mem_l2cap_rxbuff_inuse                  	0x02ca
+#define	mem_l2cap_payload_ptr                   	0x02cb
+#define	mem_l2cap_rx_pkt_length                 	0x02cd
+#define	mem_l2cap_rx_cid                        	0x02cf
+#define	mem_l2cap_rx_done                       	0x02d1
+#define	mem_l2cap_signal_tx_buff_ptr            	0x02d2
+#define	mem_l2cap_signal_tx_payload_ptr         	0x02d4
+#define	mem_l2cap_signal_tx_length              	0x02d6
+#define	mem_sdp_tx_buff_ptr                     	0x02d8
+#define	mem_sdp_tx_payload_ptr                  	0x02da
+#define	mem_sdp_tx_pkt_length                   	0x02dc
+#define	mem_rfcomm_tx_buff_ptr                  	0x02de
+#define	mem_rfcomm_tx_payload_ptr               	0x02e0
+#define	mem_rfcomm_tx_pkt_length                	0x02e2
+#define	memL2CAP_T1                             	0x02e4
+#define	mem_CONTROL_tasks                       	0x02e6
+#define	mem_send_config_req                     	0x02e7
+#define	mem_config_identifier                   	0x02e8
+#define	mem_config_req_dest_CID                 	0x02e9
+#define	mem_rfcomm_malloc_fail_flag             	0x02eb
+#define	mem_message_to_uppersm                  	0x02ec
+#define	mem_upper_sm_remote_page                	0x02ed
+#define	mem_upper_sm_reconn                     	0x02ee
+#define	mem_upper_sm_ss                         	0x02ef
+#define	mem_tx_malloc_log                       	0x02f0
+#define	mem_l2cap_mem_end                       	0x0330
+#define	mem_scid                                	0x0330
+#define	mem_cmd_length                          	0x0332
+#define	mem_tt2                                 	0x0334
+#define	mem_tt3                                 	0x0336
+#define	mem_id                                  	0x0338
+#define	mem_psm                                 	0x033a
+#define	mem_l2cap_sdpres_delay_time             	0x033c
+#define	mem_le_rxbuf                            	0x0340
+#define	mem_le_mic                              	0x0378
+#define	mem_le_peer_mic                         	0x037c
+#define	mem_le_skdm                             	0x0380
+#define	mem_le_skds                             	0x0388
+#define	mem_le_peer_ltk                         	0x0390
+#define	mem_le_my_ltk                           	0x03a0
+#define	mem_le_mrand                            	0x03b0
+#define	mem_le_state                            	0x03c0
+#define	mem_le_mode                             	0x03c1
+#define	mem_le_tsniff                           	0x03c2
+#define	mem_le_anchor                           	0x03c4
+#define	mem_le_clk_offset                       	0x03c8
+#define	mem_le_receive_window                   	0x03ce
+#define	mem_le_plap                             	0x03d0
+#define	mem_le_conn_handle                      	0x03d6
+#define	mem_le_arq                              	0x03d7
+#define	mem_le_ch                               	0x03d8
+#define	mem_le_hop                              	0x03d9
+#define	mem_le_event_count                      	0x03da
+#define	mem_le_supervision_timer                	0x03dc
+#define	mem_le_instant                          	0x03e0
+#define	mem_le_channels                         	0x03e2
+#define	mem_le_conn_sm                          	0x03e3
+#define	mem_le_op                               	0x03e4
+#define	mem_le_access                           	0x03e5
+#define	mem_le_crcinit                          	0x03e9
+#define	mem_le_window_size                      	0x03ec
+#define	mem_le_slave_latency                    	0x03ed
+#define	mem_le_superto                          	0x03ef
+#define	mem_le_channel_map                      	0x03f1
+#define	mem_le_no_using                         	0x03f6
+#define	mem_le_peer_sca                         	0x03f8
+#define	mem_le_att_opcode                       	0x03f9
+#define	mem_le_att_handle                       	0x03fa
+#define	mem_le_err_code                         	0x03fc
+#define	mem_le_sk                               	0x03fd
+#define	mem_le_testtype                         	0x040d
+#define	mem_le_test_sync                        	0x040e
+#define	mem_le_test_pcnt                        	0x0410
+#define	mem_le_rxon_ts                          	0x0412
+#define	mem_le_rx_ll_opcode                     	0x0418
+#define	mem_le_notify_attr_start                	0x0419
+#define	mem_le_notify_len                       	0x041b
+#define	mem_cmd_le_create_conn                  	0x041c
+#define	mem_le_adv_temp                         	0x041d
+#define	mem_24g_id                              	0x0431
+#define	mem_lmo_header_length                   	0x0432
+#define	mem_lmo_header_opcode                   	0x0433
+#define	mem_lmo_payload                         	0x0434
+#define	mem_lmi_accepted_opcode                 	0x0445
+#define	mem_disconn_reason_send                 	0x0446
+#define	mem_tx_fixed_freq                       	0x0447
+#define	mem_rx_fixed_freq                       	0x0448
+#define	mem_ext_features_page                   	0x0449
+#define	mem_lmpext_ssp_enable                   	0x044a
+#define	mem_remote_sppcap                       	0x044c
+#define	mem_lmp_conn_state                      	0x044d
+#define	mem_soft_timer                          	0x044e
+#define	mem_pincode_state                       	0x0450
+#define	mem_sres_tid                            	0x0451
+#define	mem_accptsco_tid                        	0x0452
+#define	mem_auth_enable                         	0x0453
+#define	mem_wait_encryption                     	0x0454
+#define	mem_sniff_payload                       	0x0455
+#define	mem_aurand_send_delay_time              	0x0465
+#define	mem_module_temp_len                     	0x0469
+#define	mem_init_cnt                            	0x046b
+#define	mem_prcp_data                           	0x046d
+#define	mem_prcp                                	0x0481
+#define	mem_prcp_tx_len                         	0x0482
+#define	rx_buf_data_ptr                         	0x0483
+#define	memRemoteRPNBitRate                     	0x0485
+#define	memRemotePRNDataBits                    	0x0486
+#define	memRemotePRNStopBit                     	0x0487
+#define	memRemotePRNParity                      	0x0488
+#define	memRemotePRNFlowControl                 	0x0489
+#define	memRemotePRNXon                         	0x048a
+#define	memRemotePRNXoff                        	0x048b
+#define	mem_mod2div_temp                        	0x048c
+#define	mem_contw_temp                          	0x048f
+#define	mem_attrib_list                         	0x0491
+#define	mem_current_adss                        	0x0493
+#define	mem_current_channel                     	0x0494
+#define	mem_current_frame_type                  	0x0495
+#define	mem_current_fcs                         	0x0496
+#define	mem_current_length                      	0x0497
+#define	mem_rfcomm_uih_payload_ptr              	0x0499
+#define	mem_uih_cmd_type                        	0x049b
+#define	mem_uih_length                          	0x049c
+#define	mem_param_payload_ptr                   	0x049e
+#define	mem_ms_param                            	0x04a0
+#define	mem_pn_credit_flow_type_info            	0x04a1
+#define	mem_pn_priority                         	0x04a2
+#define	mem_pn_acknowledg_timer                 	0x04a3
+#define	mem_pn_max_retrans                      	0x04a4
+#define	mem_rfcomm_send_adss                    	0x04a5
+#define	mem_rfcomm_send_frame_type              	0x04a6
+#define	mem_rfcomm_send_fcs                     	0x04a7
+#define	mem_rfcomm_send_offset                  	0x04a8
+#define	mem_sdp_mem_start                       	0x04a9
+#define	mem_uuid_search_pat                     	0x04a9
+#define	mem_sdp_continue_byte                   	0x04ad
+#define	mem_sdp_pduid                           	0x04af
+#define	mem_sdp_transactionid                   	0x04b0
+#define	mem_sdp_attribute_maxbyte               	0x04b2
+#define	mem_sdp_record_maxcnt                   	0x04b4
+#define	mem_sdp_error_code                      	0x04b6
+#define	mem_sdp_record_handle                   	0x04be
+#define	mem_sdp_search_failed                   	0x04c2
+#define	mem_sdp_LACAP_found                     	0x04c3
+#define	mem_sdp_RFCOMM_found                    	0x04c4
+#define	mem_handle_list                         	0x04c5
+#define	mem_handle_humber                       	0x04dd
+#define	mem_sdp_mem_end                         	0x04de
+#define	mem_rxbuf                               	0x04de
+#define	mem_random_number                       	0x04ef
+#define	mem_round_key                           	0x04ff
+#define	mem_kinit                               	0x050f
+#define	mem_input_store                         	0x051f
+#define	mem_x                                   	0x052f
+#define	mem_y                                   	0x053f
+#define	mem_y15                                 	0x054e
+#define	mem_pin_length                          	0x054f
+#define	mem_pin                                 	0x0550
+#define	mem_key_store                           	0x0560
+#define	mem_key_store_end                       	0x0571
+#define	memp_ar_key                             	0x0572
+#define	memp_ar_input                           	0x0574
+#define	mem_ar_hround                           	0x0576
+#define	mem_ec_infinite                         	0x0580
+#define	mem_ec_loopc                            	0x0581
+#define	memdat                                  	0x0582
+#define	mem_ax                                  	0x0582
+#define	mem_ay                                  	0x059a
+#define	mem_az                                  	0x05b2
+#define	mem_bx                                  	0x05ca
+#define	mem_by                                  	0x05e2
+#define	mem_bz                                  	0x05fa
+#define	mem_cx                                  	0x0612
+#define	mem_cy                                  	0x062a
+#define	mem_cy5                                 	0x0641
+#define	mem_cz                                  	0x0642
+#define	mem_k                                   	0x065a
+#define	mem_align                               	0x0672
+#define	mem_tmp1                                	0x0682
+#define	memahbak                                	0x0682
+#define	mem_tmp5                                	0x069a
+#define	memahsave                               	0x06a2
+#define	mem_tmp2                                	0x06b2
+#define	memahsave_end                           	0x06c2
+#define	mem_addr_padding                        	0x06c2
+#define	mem_addr_value                          	0x06c3
+#define	mem_tmp3                                	0x06ca
+#define	mem_t1                                  	0x06ca
+#define	mem_addr_value_end                      	0x06cf
+#define	mem_addr_iocap_end                      	0x06d2
+#define	mem_tmp0                                	0x06e2
+#define	mem_t0                                  	0x06e2
+#define	mem_tmp0a                               	0x06ea
+#define	mem_t2                                  	0x06fa
+#define	mem_t3                                  	0x0712
+#define	mem_t7                                  	0x072a
+#define	mem_p                                   	0x0742
+#define	mem_a                                   	0x075a
+#define	mem_b                                   	0x0772
+#define	mem_gx                                  	0x078a
+#define	mem_gy                                  	0x07a2
+#define	memh0                                   	0x07ba
+#define	mem_sp_state_start                      	0x07da
+#define	mem_sp_state                            	0x07da
+#define	mem_master_sp_state                     	0x07db
+#define	mem_sp_flag                             	0x07dc
+#define	mem_master_sp_flag                      	0x07dd
+#define	mem_sp_calc                             	0x07de
+#define	mem_sp_dh_ready                         	0x07df
+#define	mem_sp_localsm                          	0x07e0
+#define	mem_pairing_auth                        	0x07e1
+#define	mem_sp_flag_start                       	0x07e2
+#define	mem_sp_local_key_send_count             	0x07e2
+#define	mem_sp_remote_key_recv_count            	0x07e3
+#define	mem_sp_remote_key_invalid               	0x07e4
+#define	mem_sp_dhkey_invalid                    	0x07e5
+#define	mem_sp_iocap_local                      	0x07e6
+#define	mem_sp_iocap_remote                     	0x07e9
+#define	mem_sp_gkey                             	0x07ec
+#define	mem_sp_pubkey_remote                    	0x07f0
+#define	mem_sp_pubkey_remote_x                  	0x07f0
+#define	mem_sp_pubkey_remote_x_end              	0x0808
+#define	mem_sp_pubkey_remote_y                  	0x0808
+#define	mem_sp_dhkey                            	0x0820
+#define	mem_sp_dhkey_end                        	0x0838
+#define	mem_sp_random_local                     	0x0838
+#define	mem_sp_random_local_end                 	0x0848
+#define	mem_sp_random_remote                    	0x0848
+#define	mem_sp_random_remote_end                	0x0858
+#define	memresult                               	0x0858
+#define	mem_sp_calc_result                      	0x0858
+#define	memh                                    	0x0858
+#define	memg                                    	0x085c
+#define	memf                                    	0x0860
+#define	meme                                    	0x0864
+#define	mem_sp_calc_result_high                 	0x0868
+#define	memd                                    	0x0868
+#define	memc                                    	0x086c
+#define	memb                                    	0x0870
+#define	mema                                    	0x0874
+#define	mem_sp_check_result                     	0x0878
+#define	mem_sp_confirm_remote                   	0x0888
+#define	mem_sp_prarm_stack                      	0x0898
+#define	mem_UI_data_txbuff_length               	0x08a8
+#define	mem_ipc_skip_continue_proc              	0x08aa
+#define	mem_ui_timer_temp                       	0x08ab
+#define	mem_ipc_rega_temp                       	0x08ab
+#define	mem_usb_status                          	0x08af
+#define	mem_usb_fifo_empty                      	0x08b0
+#define	mem_usb_read_len                        	0x08b1
+#define	mem_usb_rxbuf                           	0x08b2
+#define	mem_usb_cnt                             	0x08f2
+#define	mem_usb_tx_enable                       	0x08f4
+#define	mem_usb_tx_count                        	0x08f5
+#define	mem_usb_set_protocol_count              	0x08f6
+#define	mem_usb_desc                            	0x08f7
+#define	mem_usb_state                           	0x08f8
+#define	mem_usb_idle_cnt                        	0x08f9
+#define	mem_usb_idle_timeout                    	0x08fb
+#define	mem_usb_trig_timeout                    	0x08fd
+#define	mem_usb_setup                           	0x08ff
+#define	mem_usb_setup_bmRequestType             	0x08ff
+#define	mem_usb_setup_bRequest                  	0x0900
+#define	mem_usb_setup_bValue                    	0x0901
+#define	mem_usb_setup_bValueH                   	0x0902
+#define	mem_usb_setup_wIndex                    	0x0903
+#define	mem_usb_setup_bLength                   	0x0905
+#define	mem_usb_setup_bLengthH                  	0x0906
+#define	mem_usb0_setup                          	0x0907
+#define	mem_bufptr                              	0x090f
+#define	mem_remain                              	0x0911
+#define	mem_devicedesc                          	0x0912
+#define	mem_hidreportdesc_kb                    	0x0926
+#define	mem_hidreportdesc_m                     	0x09ee
+#define	mem_confdesc                            	0x0ab6
+#define	mem_string0                             	0x0b1a
+#define	mem_string1                             	0x0b1f
+#define	mem_string2                             	0x0b3d
+#define	mem_string3                             	0x0b5b
+#define	mem_hold_contr                          	0x0b79
+#define	mem_hold_contw                          	0x0b7b
+#define	mem_fifo_temp                           	0x0b7d
+#define	mem_c51_flag                            	0x0b7e
+#define	mem_c51_lpm_lock                        	0x0b7f
+#define	mem_c51_wait_lpm                        	0x0b80
+#define	mem_wakup_from_power_flag               	0x0b81
+#define	mem_lmp_bb_disconnect_reason            	0x0b82
+#define	mem_c51_eeprom_buf                      	0x0b83
+#define	mem_c51_ipc_txbuf                       	0x0be7
+#define	mem_c51_ipc_rxbuf                       	0x0c4b
+#define	mem_c51_iicd_buf                        	0x0caf
+#define	mem_24g_rxbuf                           	0x0cb3
+#define	mem_24g_txbuf                           	0x0cd5
+#define	mem_24g_txpayload                       	0x0cf5
+#define	mem_24g_rxpayload                       	0x0d17
+#define	mem_24g_common_temp                     	0x0d37
+#define	mem_packet_length_temp                  	0x0d57
+#define	mem_le_cur_handle_start                 	0x0d58
+#define	mem_le_cur_handle_end                   	0x0d5a
+#define	mem_le_search_res                       	0x0d5c
+#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_seqi                                	0x416e
+#define	mem_rf_rccal                            	0x416f
+#define	mem_handle_num                          	0x4170
+#define	mem_max_slot                            	0x4171
+#define	mem_eir_enable                          	0x4172
+#define	mem_afh_instant                         	0x4173
+#define	mem_afh_error_total                     	0x4177
+#define	mem_afh_cfg                             	0x4179
+#define	mem_afh_new_mod                         	0x417a
+#define	mem_afh_map_lo                          	0x417b
+#define	mem_afh_map_hi                          	0x4180
+#define	mem_afh_used                            	0x4185
+#define	mem_afh_index                           	0x4186
+#define	mem_afh_map_new                         	0x4188
+#define	mem_afh_map                             	0x4193
+#define	mem_afh_timer                           	0x41e3
+#define	mem_afh_classify_channel_map            	0x41e7
+#define	mem_chip_functions                      	0x41f1
+#define	mem_lpm_wake_lock                       	0x41f3
+#define	mem_lpm_interval                        	0x41f5
+#define	mem_lpm_overhead                        	0x41f7
+#define	mem_lpm_hibernate_switch                	0x41f8
+#define	mem_esco_addr                           	0x41f9
+#define	mem_sniff_unint_lost                    	0x41fa
+#define	mem_ptt                                 	0x41fb
+#define	mem_sleep_counter                       	0x41fc
+#define	mem_sleep_counter_all                   	0x4200
+#define	mem_sleep_clkn                          	0x4204
+#define	mem_sniff_rcv                           	0x420a
+#define	mem_sniff_lost                          	0x420d
+#define	mem_clks_per_lpo                        	0x4210
+#define	mem_lpm_mult                            	0x4213
+#define	mem_lpm_mult_timeout                    	0x4214
+#define	mem_lpm_mult_cnt                        	0x4215
+#define	mem_lpm_config                          	0x4216
+#define	mem_lpm_xtalcnt                         	0x4219
+#define	mem_lpm_buckcnt                         	0x421a
+#define	mem_lpm_ldocnt                          	0x421b
+#define	mem_lpm_isogate                         	0x421c
+#define	mem_lpm_isogate_final                   	0x421d
+#define	mem_saved_gpio                          	0x421e
+#define	mem_saved_gsel                          	0x422e
+#define	mem_saved_mark                          	0x4231
+#define	mem_saved_spidctrl                      	0x4239
+#define	mem_patch_ptr                           	0x423a
+#define	mem_patch_len                           	0x423c
+#define	mem_timers                              	0x423e
+#define	mem_link_key_exists                     	0x425e
+#define	mem_link_key_eeprom_head                	0x425f
+#define	mem_link_key                            	0x4262
+#define	mem_hci_cmd                             	0x4272
+#define	mem_hci_conn_handle                     	0x4273
+#define	mem_hci_plap                            	0x4274
+#define	mem_hci_puap                            	0x4277
+#define	mem_hci_pnap                            	0x4278
+#define	mem_uartd_rxitems_got_data              	0x427a
+#define	mem_uartd_rxitems_threshold             	0x427b
+#define	mem_uartd_rx_timeout                    	0x427c
+#define	mem_app_state                           	0x427e
+#define	mem_app_handshake_flag                  	0x427f
+#define	mem_sniff_param_interval                	0x4280
+#define	mem_sniff_param_attempt                 	0x4282
+#define	mem_sniff_param_timeout                 	0x4284
+#define	mem_cb_check_wakelock                   	0x4286
+#define	mem_cb_before_hibernate                 	0x4288
+#define	mem_cb_before_lpm                       	0x428a
+#define	mem_cb_le_process                       	0x428c
+#define	mem_cb_bt_process                       	0x428e
+#define	mem_cb_idle_process                     	0x4290
+#define	mem_cb_bb_event_process                 	0x4292
+#define	mem_cb_discovry_timeout                 	0x4294
+#define	mem_cb_att_write                        	0x4296
+#define	mem_cb_update_notify_value              	0x4298
+#define	mem_device_nums                         	0x429a
+#define	mem_eeprom_base                         	0x429b
+#define	mem_unsniff2sniff_timer_count           	0x429d
+#define	mem_wake_up_delay_timer                 	0x429e
+#define	mem_app_connection_options              	0x429f
+#define	mem_app_disconn_reason                  	0x42a0
+#define	mem_app_disconn_reason_flag             	0x42a2
+#define	mem_at_using_flag                       	0x42a4
+#define	mem_lpm_delay_after_sniff               	0x42a5
+#define	mem_xrecord_mode                        	0x42a9
+#define	mem_eeprom_block_size                   	0x42aa
+#define	mem_baud                                	0x42ac
+#define	mem_hci_lt_rx_state                     	0x42ae
+#define	mem_l2cap_xmem_start                    	0x42af
+#define	mem_l2cap_tx_multi_offset               	0x42af
+#define	mem_sdp_remote_cid                      	0x42b1
+#define	mem_rfcomm_remote_cid                   	0x42b3
+#define	mem_hid_ctrl_remote_cid                 	0x42b5
+#define	mem_hid_int_remote_cid                  	0x42b7
+#define	mem_sdp_state                           	0x42b9
+#define	mem_rfcomm_state                        	0x42ba
+#define	mem_hid_control_state                   	0x42bb
+#define	mem_hid_interrupt_state                 	0x42bc
+#define	mem_spp_state                           	0x42bd
+#define	mem_ML2CAP_comm_id                      	0x42be
+#define	mem_used_map                            	0x42bf
+#define	mem_tx_fifo0                            	0x42c0
+#define	mem_tx_fifo0_map                        	0x42c0
+#define	mem_tx_fifo0_ptr                        	0x42c1
+#define	mem_tx_fifo1                            	0x42c3
+#define	mem_tx_fifo1_map                        	0x42c3
+#define	mem_tx_fifo1_ptr                        	0x42c4
+#define	mem_tx_fifo2                            	0x42c6
+#define	mem_tx_fifo2_map                        	0x42c6
+#define	mem_tx_fifo2_ptr                        	0x42c7
+#define	mem_tx_fifo3                            	0x42c9
+#define	mem_tx_fifo3_map                        	0x42c9
+#define	mem_tx_fifo3_ptr                        	0x42ca
+#define	mem_tx_fifo_end                         	0x42cc
+#define	mem_l2cap_lpm_txbuf                     	0x42cc
+#define	mem_l2cap_flow_ctrl_flag                	0x43cc
+#define	mem_l2cap_pending_item                  	0x43cd
+#define	mem_l2cap_xmem_end                      	0x43ce
+#define	mem_le_dsniff                           	0x43ce
+#define	mem_le_conn_interval                    	0x43d0
+#define	mem_le_scan_enable                      	0x43d2
+#define	mem_le_scan_interval                    	0x43d3
+#define	mem_le_scan_window                      	0x43d5
+#define	mem_le_adv_led                          	0x43d7
+#define	mem_le_adv_enable                       	0x43d8
+#define	mem_le_adv_data_len                     	0x43d9
+#define	mem_le_adv_data                         	0x43da
+#define	mem_le_scan_data_len                    	0x43f9
+#define	mem_le_scan_data                        	0x43fa
+#define	mem_le_name_len                         	0x4419
+#define	mem_le_name                             	0x441a
+#define	mem_le_led_on_time                      	0x442e
+#define	mem_le_new_map                          	0x442f
+#define	mem_le_new_param                        	0x4434
+#define	mem_le_new_window                       	0x4434
+#define	mem_le_new_offset                       	0x4435
+#define	mem_le_new_interval                     	0x4437
+#define	mem_le_new_latency                      	0x4439
+#define	mem_le_new_timeout                      	0x443b
+#define	mem_le_temp                             	0x443d
+#define	mem_le_txheader                         	0x443e
+#define	mem_le_txlen                            	0x443f
+#define	mem_le_txpayload                        	0x4440
+#define	mem_le_txcid                            	0x4442
+#define	mem_le_l2cap                            	0x4444
+#define	mem_le_l2cap_response                   	0x4445
+#define	mem_le_txbdy                            	0x4446
+#define	mem_le_pcnt_tx                          	0x4465
+#define	mem_le_pcnt_rx                          	0x446a
+#define	mem_le_last_mic                         	0x446f
+#define	mem_le_ivm                              	0x4473
+#define	mem_le_ivs                              	0x4477
+#define	mem_le_ltk                              	0x447b
+#define	mem_ltk_exists                          	0x448b
+#define	mem_le_rconfirm                         	0x448c
+#define	mem_le_srand                            	0x449c
+#define	mem_le_iat                              	0x44ac
+#define	mem_le_rat                              	0x44ad
+#define	mem_le_preq                             	0x44ae
+#define	mem_le_pres                             	0x44b5
+#define	mem_le_search_handle_start              	0x44bc
+#define	mem_le_search_handle_end                	0x44be
+#define	mem_le_att_offset                       	0x44c0
+#define	mem_le_search_att_type                  	0x44c0
+#define	mem_le_notify_handle                    	0x44c2
+#define	mem_le_uuid                             	0x44c4
+#define	mem_le_handle_data_len                  	0x44c6
+#define	mem_le_handle_data                      	0x44c7
+#define	mem_le_adv_param                        	0x44d7
+#define	mem_le_adv_interval_min                 	0x44d7
+#define	mem_le_adv_interval_max                 	0x44d9
+#define	mem_le_adv_type                         	0x44db
+#define	mem_le_adv_own_addr_type                	0x44dc
+#define	mem_le_adv_direct_addr_type             	0x44dd
+#define	mem_le_adv_direct_addr                  	0x44de
+#define	mem_le_adv_channel_map                  	0x44e4
+#define	mem_le_adv_filter_policy                	0x44e5
+#define	mem_le_conn_param                       	0x44e6
+#define	mem_le_conn_peer_addr_type              	0x44e6
+#define	mem_le_conn_peer_addr                   	0x44e7
+#define	mem_le_conn_own_addr_type               	0x44ed
+#define	mem_le_conn_interval_min                	0x44ee
+#define	mem_le_conn_interval_max                	0x44f0
+#define	mem_le_conn_latency                     	0x44f2
+#define	mem_le_conn_superto                     	0x44f4
+#define	mem_le_scan_params                      	0x44f6
+#define	mem_le_scan_type                        	0x44f6
+#define	mem_le_scan_own_addr_type               	0x44f7
+#define	mem_le_scan_filter_policy               	0x44f8
+#define	mem_le_lap                              	0x44f9
+#define	mem_le_uap                              	0x44fc
+#define	mem_le_nap                              	0x44fd
+#define	mem_le_xtype_fifo                       	0x44ff
+#define	mem_le_att_list                         	0x4504
+#define	mem_le_switch_send_data                 	0x46f8
+#define	mem_le_transmit_window                  	0x46f9
+#define	mem_lmp_version                         	0x46fd
+#define	mem_lmp_subversion                      	0x4700
+#define	mem_local_name_length                   	0x4702
+#define	mem_local_name                          	0x4703
+#define	mem_local_name2                         	0x4706
+#define	mem_local_name_end                      	0x4746
+#define	mem_unsniff2sniff_timer                 	0x4747
+#define	mem_switch_flag                         	0x4748
+#define	mem_eeprom_ota_base_addr                	0x4749
+#define	mem_pn_dlci                             	0x474b
+#define	mem_pn_max_frame_size                   	0x474c
+#define	memFCStemp1                             	0x474e
+#define	memFCStemp2                             	0x474f
+#define	memFCStemp3                             	0x4750
+#define	mem_rfcomm_initiator                    	0x4751
+#define	mem_remote_spp_channel                  	0x4752
+#define	mem_HIUfcs_SPP                          	0x4753
+#define	mem_HIUfcs_SPP_WCredits                 	0x4754
+#define	mem_rfcomm_send_more_pkt                	0x4755
+#define	mem_remote_credits                      	0x4756
+#define	mem_credit_given                        	0x4757
+#define	mem_ms_channel                          	0x4758
+#define	memui_uuid_table                        	0x4759
+#define	mem_all_uuid_16bits                     	0x475b
+#define	mem_all_uuid_128bits                    	0x4771
+#define	mem_sp_local_key_invalid                	0x4793
+#define	mem_sp_private_key                      	0x4794
+#define	mem_sp_pubkey_local                     	0x47ac
+#define	mem_sp_pubkey_local_x                   	0x47ac
+#define	mem_sp_pubkey_local_x_end               	0x47c4
+#define	mem_sp_pubkey_local_y                   	0x47c4
+#define	mem_ssp_enable                          	0x47dc
+#define	mem_ipc_lock_bt                         	0x47dd
+#define	mem_ipc_lock_c51                        	0x47de
+#define	mem_ipc_fifo_bt2c51                     	0x47df
+#define	mem_ipc_fifo_c512bt                     	0x47e4
+#define	mem_led_switch                          	0x47e9
+#define	mem_ui_button_timer                     	0x47ea
+#define	mem_ui_button_last_state                	0x47eb
+#define	mem_ui_timer_last_btclk                 	0x47ec
+#define	mem_discovery_timeout_timer_count       	0x47f0
+#define	mem_hid_handshake_timer_count           	0x47f2
+#define	memui_reconnect_mode                    	0x47f3
+#define	mem_ui_state_map                        	0x47f4
+#define	mem_ui_profile_supported                	0x47f6
+#define	mem_led_gpio                            	0x47f7
+#define	mem_led_dark_time                       	0x47f8
+#define	mem_led_light_time                      	0x47fa
+#define	mem_ui_button_timeout                   	0x47fc
+#define	mem_ui_button_gpio                      	0x47fd
+#define	mem_discovery_timeout                   	0x47fe
+#define	mem_ir_ptr                              	0x4800
+#define	mem_ir_type                             	0x4802
+#define	mem_ir_cmd                              	0x4803
+#define	mem_ir_play_count                       	0x4804
+#define	mem_ir_report_len                       	0x4805
+#define	mem_ir_pulse_zero                       	0x4807
+#define	mem_ir_pulse_one                        	0x4808
+#define	mem_ir_pulses                           	0x4809
+#define	mem_ir_sequence_len                     	0x4825
+#define	mem_ir_sequence                         	0x4826
+#define	mem_acl_credits                         	0x4800
+#define	mem_allow_switch                        	0x4802
+#define	mem_hci_acl_queue_start                 	0x4803
+#define	mem_hci_wake_clk                        	0x4807
+#define	mem_kb_state                            	0x4800
+#define	mem_kb_report_data                      	0x4802
+#define	mem_kb_keys                             	0x4808
+#define	mem_kb_rcv_led_data                     	0x4809
+#define	mem_kb_fast_wake_last                   	0x480a
+#define	mem_led_cap_gpio                        	0x480e
+#define	mem_led_num_gpio                        	0x480f
+#define	mem_led_scl_gpio                        	0x4810
+#define	mem_kb_map                              	0x4811
+#define	mem_kb_uuid_list                        	0x4811
+#define	mem_24g_paring_tx_power_param           	0x4a87
+#define	mem_5db_tx_power_param                  	0x4a91
+#define	mem_current_event                       	0x4a9b
+#define	mem_ipc_lock_rx_data_bt                 	0x4a9c
+#define	mem_ipc_lock_rx_data_c51                	0x4a9d
+#define	mem_ipc_lock_tx_data_bt                 	0x4a9e
+#define	mem_ipc_lock_tx_data_c51                	0x4a9f
+#define	mem_ipc_2bt_fifo_head                   	0x4aa0
+#define	mem_ipc_2bt_fifo_end                    	0x4b36
+#define	mem_ipc_2C51_fifo_head                  	0x4b36
+#define	mem_ipc_2C51_fifo_end                   	0x4b9a
+#define	mem_ipc_2bt_read_index                  	0x4b9a
+#define	mem_ipc_2bt_write_index                 	0x4b9c
+#define	mem_ipc_2C51_read_index                 	0x4b9e
+#define	mem_ipc_2C51_write_index                	0x4ba0
+#define	mem_ipc_tx_evt_buff                     	0x4ba2
+#define	mem_ipc_tx_evt                          	0x4ba4
+#define	mem_ipc_bt_timer                        	0x4ba5
+#define	mem_ipc_rx_type                         	0x4ba7
+#define	mem_rfcomm_tx_buff                      	0x4ba8
+#define	mem_queue_ele_num                       	0x4ba8
+#define	mem_queue_write                         	0x4ba9
+#define	mem_queue_read                          	0x4bab
+#define	mem_queue_start                         	0x4bad
+#define	mem_uart_packet                         	0x4bad
+#define	mem_data_ele0                           	0x4bb9
+#define	mem_data_ele1                           	0x4bc5
+#define	mem_data_ele2                           	0x4bd1
+#define	mem_queue_end                           	0x4bdd
+#define	mem_queue_temp                          	0x4bdd
+#define	mem_24g_rxdata_length                   	0x4bdf
+#define	mem_24g_pid                             	0x4be0
+#define	mem_24g_datalen                         	0x4be1
+#define	mem_24g_data_type                       	0x4be2
+#define	mem_24g_txlen                           	0x4be3
+#define	mem_24g_rx_window                       	0x4be4
+#define	mem_24g_ensure                          	0x4be6
+#define	mem_24g_get_ack_fail                    	0x4be7
+#define	mem_24g_retry                           	0x4be8
+#define	mem_24g_ch                              	0x4be9
+#define	mem_24g_current_ch_number               	0x4bea
+#define	mem_24g_paring_addr                     	0x4beb
+#define	mem_24g_pairing_sm                      	0x4bef
+#define	mem_24g_ch_map1                         	0x4bf0
+#define	mem_24g_ch_map2                         	0x4bf4
+#define	mem_24g_ch_map3                         	0x4bf8
+#define	mem_24g_ch_map4                         	0x4bfc
+#define	mem_24g_addr                            	0x4c00
+#define	mem_24g_check_dongle_times              	0x4c04
+#define	mem_24g_device_addr                     	0x4c06
+#define	mem_24g_no_ack                          	0x4c0a
+#define	mem_24g_sta_crc                         	0x4c0b
+#define	mem_24g_sta_pid                         	0x4c0e
+#define	mem_24g_max_retry                       	0x4c0f
+#define	mem_24g_mode                            	0x4c10
+#define	mem_24g_hop_pac_retry                   	0x4c11
+#define	mem_24g_idle_timeout                    	0x4c12
+#define	mem_24g_idle_cnt                        	0x4c13
+#define	mem_24g_auto_paring_switch              	0x4c14
+#define	mem_24g_enter_lpm_timer                 	0x4c15
+#define	mem_24g_syncword                        	0x4c16
+#define	mem_24g_syncword_crc8                   	0x4c18
+#define	mem_24g_get_syncword_crc8               	0x4c19
+#define	mem_24g_discard_cnt                     	0x4c1a
+#define	mem_cb_24g_data                         	0x4c1c
+#define	mem_24g_lasttx                          	0x4c1e
+#define	mem_power_ctrl_pac_succ_cnt             	0x4c27
+#define	mem_power_ctrl_level                    	0x4c28
+#define	mem_rssi_avg_received                   	0x4c29
+#define	mem_rssi_hex_received                   	0x4c2a
+#define	mem_rssi_signal_buf                     	0x4c2b
+#define	mem_rssi_noise_buf                      	0x4c33
+#define	mem_rssi_noise_index                    	0x4c3b
+#define	mem_rssi_signal_index                   	0x4c3c
+#define	mem_tx_power                            	0x4c3d
+#define	mem_tx_power_temp                       	0x4c3e
+#define	mem_cnt                                 	0x4c3f
+#define	mem_last_txlch                          	0x4c42
+#define	mem_last_txlen                          	0x4c43
+#define	mem_last_txdata                         	0x4c45
+#define	mem_ipc_last_check_timer                	0x4c59
+#define	mem_prepare_write_len                   	0x4c5d
+#define	mem_ipc_c51_timer                       	0x4c5e
+#define	mem_le_rx_window                        	0x4c60
+#define	mem_le_find_type_value_start_handle     	0x4c61
+#define	mem_le_find_type_value_end_handle       	0x4c63
+#define	mem_le_cur_att_type                     	0x4c65
+#define	mem_le_search_len                       	0x4c67
+#define	mem_le_ll_unknown_type                  	0x4c68
+#define	mem_le_pairing_state                    	0x4c69
+#define	mem_le_local_mtu                        	0x4c6a
+#define	mem_le_connection_updata_param          	0x4c6c
+#define	mem_ltk_states                          	0x4c7c
+#define	mem_pair_state                          	0x4c7d
+#define	mem_empty_count                         	0x4c7e
+#define	mem_shutter_find_type_value_flag        	0x4c7f
+#define	mem_le51_payload_len                    	0x4c80
+#define	mem_le51_cmd                            	0x4c81
+#define	mem_le51_tx_length                      	0x4c82
+#define	mem_le51_txbuff_inuse                   	0x4c83
+#define	mem_le51_txbuf                          	0x4c84
+#define	mem_ipc_bt_100ms_timer                  	0x4c8d
+#define	mem_ipc_c51_100ms_timer                 	0x4c8e
+#define	mem_adc_config_flag                     	0x4c8f
+#define	mem_adc_channel                         	0x4c90
+#define	mem_adc_0v                              	0x4c91
+#define	mem_adc_3v                              	0x4c93
+#define	mem_adc_current_value                   	0x4c95
+#define	mem_hibernate_flag                      	0x4c97
+#define	mem_new_supervision_to                  	0x4c98
+#define	mem_kb_wake_timer                       	0x4c9a
+#define	mem_kb_last_data                        	0x4c9b
+#define	mem_kb_keycount                         	0x4caf
+#define	mem_led_cap_delay_timer                 	0x4cb0
+#define	mem_test                                	0x4cb1
+#define	mem_seq                                 	0x4cb4
+#define	mem_recon_index                         	0x4cb5
+#define	mem_power_on_flag                       	0x4cb6
+#define	mem_caps_num_lock                       	0x4cb7
+#define	mem_att_report1                         	0x4cb8
+#define	mem_att_report2                         	0x4cba
+#define	mem_att_report3                         	0x4cbc
+#define	mem_suspend_flag                        	0x4cbe
+#define	mem_32asm_data_end                      	0x4cbf
+#define	mem_store_ltk_timer                     	0x4d37
+#define	mem_reconnect_continue                  	0x4d38
+#define	mem_le_pin_code                         	0x4d39
+#define	mem_24g_enter_hibernate                 	0x4d3d
+#define	mem_24g_txfail_cnt                      	0x4d45
+#define	mem_mouse_retry_flag                    	0x4d46
+#define	mem_24g_led_flag                        	0x4d47
+#define	mem_ui_timer_last_btclk_temp            	0x4d48
+#define	mem_ui_check_timer_setup                	0x4d4c
+#define	mem_customize_timer_setup               	0x4d50
+#define	mem_customize_timer                     	0x4d52
+#define	mem_version_yy_mm_dd                    	0x4d53
+#define	mem_24g_txbuf_new                       	0x4d57
+#define	mem_24g_enter_hibernate_setup           	0x4d6b
+#define	mem_24g_enter_hibernate_max             	0x4d6f
+#define	mem_24g_short_sleep_counter             	0x4d73
+#define	mem_pc_sleep_flag                       	0x4d76
+#define	mem_at_gpio                             	0x4800
+#define	mem_module_wake_up_gpio                 	0x4801
+#define	mem_module_state_gpio                   	0x4802
+#define	mem_module_connect_state_gpio           	0x4803
+#define	mem_module_version                      	0x4804
+#define	mem_last_uart_clock                     	0x480a
+#define	mem_current_packet_length               	0x480e
+#define	mem_module_prepare_tx_len               	0x4810
+#define	mem_module_state                        	0x4812
+#define	mem_module_task                         	0x4813
+#define	mem_cmode_addr                          	0x4814
+#define	mem_at_scan_time                        	0x481a
+#define	mem_prarm_pswd                          	0x481c
+#define	mem_prarm_uart                          	0x4820
+#define	mem_prarm_blename                       	0x4824
+#define	mem_prarm_name                          	0x4827
+#define	mem_prarm_bleadss                       	0x482b
+#define	mem_prarm_adss                          	0x482e
+#define	mem_prarm_vers                          	0x4832
+#define	mem_prarm_class                         	0x4836
+#define	mem_prarm_clrflg                        	0x483b
+#define	mem_prarm_reconn                        	0x4841
+#define	mem_prarm_bledis                        	0x4847
+#define	mem_prarm_dis                           	0x4849
+#define	mem_prarm_stsn                          	0x484c
+#define	mem_prarm_atp                           	0x4850
+#define	mem_prarm_list                          	0x4853
+#define	mem_prarm_role                          	0x4857
+#define	mem_prarm_sniff                         	0x485b
+#define	mem_prarm_ldev                          	0x4860
+#define	mem_prarm_rssi                          	0x4864
+#define	mem_prarm_cdev                          	0x4868
+#define	mem_prarm_bleinqr                       	0x486c
+#define	mem_prarm_inqr                          	0x486f
+#define	mem_prarm_cmode                         	0x4873
+#define	mem_prarm_mode                          	0x4878
+#define	mem_prarm_dmstate                       	0x487c
+#define	mem_prarm_discov                        	0x4883
+#define	mem_prarm_ota                           	0x4889
+#define	mem_prarm_bleconn                       	0x488c
+#define	mem_prarm_conn                          	0x488e
+#define	mem_prarm_pageout                       	0x4892
+#define	mem_prarm_recfail                       	0x4899
+#define	mem_module_uuid_list                    	0x48a0
+#define	mem_mouse_x                             	0x4800
+#define	mem_mouse_y                             	0x4802
+#define	mem_mouse_z                             	0x4804
+#define	mem_mouse_key                           	0x4805
+#define	mem_mouse_z_last                        	0x4806
+#define	mem_mouse_z_before                      	0x4807
+#define	mem_mouse_z_now                         	0x4808
+#define	mem_mouse_z_data                        	0x4809
+#define	mem_mouse_move_flag                     	0x480a
+#define	mem_reconnect_timeout                   	0x480b
+#define	mem_mouse_direct_timeout                	0x480c
+#define	mem_mouse_no_data_timeout               	0x480e
+#define	mem_mouse_blank_data_timeout            	0x4810
+#define	mem_mouse_discovery_timer               	0x4812
+#define	mem_mouse_direct_timer                  	0x4814
+#define	mem_mouse_no_data_timer                 	0x4816
+#define	mem_mouse_blank_data_timer              	0x4818
+#define	mem_mouse_send_blank_timer              	0x481a
+#define	mem_mouse_dpi                           	0x481b
+#define	mem_mouse_dpi_button_state              	0x481c
+#define	mem_mouse_test_cnt                      	0x481d
+#define	mem_le_hibernate_timer                  	0x481e
+#define	mem_mouse_mode_state                    	0x4820
+#define	mem_sensor_type                         	0x4821
+#define	mem_lbutton_gpio                        	0x4822
+#define	mem_rbutton_gpio                        	0x4823
+#define	mem_mbutton_gpio                        	0x4824
+#define	mem_dpi_button_gpio                     	0x4825
+#define	mem_sensor_data_gpio                    	0x4826
+#define	mem_whee_a_data_gpio                    	0x4827
+#define	mem_whee_b_data_gpio                    	0x4828
+#define	mem_conn_cnt                            	0x4829
+#define	mem_mouse_uuid_list                     	0x482a
+#define	mem_shutter_send_data                   	0x4800
+#define	mem_shutter_key_temp                    	0x4804
+#define	mem_shutter_send_length                 	0x4805
+#define	mem_shutter_clkn_bt_last                	0x4806
+#define	mem_shutter_key                         	0x480a
+#define	mem_shutter_flag                        	0x480b
+#define	mem_shutter_cable_unplug_conut          	0x480c
+#define	mem_shutter_hid_disconn_count           	0x480d
+#define	mem_shutter_1key_send_sm                	0x480e
+#define	mem_shutter_iphonekey_gpio              	0x480f
+#define	mem_shutter_androidkey_gpio             	0x4810
+#define	mem_shutter_key_number                  	0x4811
+#define	mem_shutter_uuid_list                   	0x4812
+#define	mem_mcmd                                	0xff0
+#define	mem_mouse_data                          	0xff1
+#define	mem_l2cap_rxbuff1                       	0x1000
+#define	mem_l2cap_rxbuff2                       	0x1400
+#define	mem_tx_buff0                            	0x1800
+#define	mem_tx_buff1                            	0x1880
+#define	mem_tx_buff2                            	0x1900
+#define	mem_tx_buff3                            	0x1980
+#define	mem_tx_buff4                            	0x1a00
+#define	mem_tx_buff5                            	0x1a80
+#define	mem_tx_buff6                            	0x1b00
+#define	mem_tx_buff7                            	0x1b80
+#define	mem_h5rx_buf                            	0x1800
+#define	mem_h5rx_buf_end                        	0x1bff
+#define	mem_h5tx_buf                            	0x1c00
+#define	mem_h5tx_buf_end                        	0x1fff
+#define	mem_module_rx_buf                       	0x4a00
+#define	mem_module_rx_buf_end                   	0x4fff
+#define	mem_module_tx_buf                       	0x1c00
+#define	mem_module_tx_buf_end                   	0x1fff
+#define	mem_ir_record                           	0x1800
+#define	mem_ir_record_max                       	0x1c
+#define	memk                                    	0x4b00
+#endif
Index: c.bat
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/c.bat	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/c.bat	(working copy)
@@ -0,0 +1,10 @@
+perl util\hex2mif.pl < output\fw.hex ram > output\fwram.rom
+copy .\patch\kb.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: common.h
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/common.h	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/common.h	(working copy)
@@ -0,0 +1,20 @@
+#ifndef _YC_INCLUDE_H_
+#define _YC_INCLUDE_H_
+#include "type.h"
+#include "btreg.h"
+#include "hwreg.h"
+#include "sys.h"
+#include "utilities.h"
+#include "kbhid.h"
+#include "global_variable.h"
+#include "keyscan.h"
+#include "gpio.h"
+#include "led.h"
+#include "bluetooth.h"
+#include "kb_process.h"
+#include "ipc.h"
+#include "iic.h"
+#include "adc.h"
+#include "pwm.h"
+#endif
+
Index: global_variable.h
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/global_variable.h	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/global_variable.h	(working copy)
@@ -0,0 +1,187 @@
+#ifndef _GLOBAL_VARIABLE_H_
+#define _GLOBAL_VARIABLE_H_
+#include "common.h"
+
+#define BAT_ARRAY_LEN				4
+
+typedef struct c51_device_state
+{
+	 byte currentState ;
+	 byte currentSubState;
+	 byte currentStateBefore;
+}DEVICE_STATE;
+
+typedef enum device_mode
+{
+	DEVICE_24G_MODE,
+	DEVICE_BLE_MODE,
+	DEVICE_BR_MODE,
+	DEVICE_MODE_NUM,
+}DEVICE_CURRENT_MODE;
+
+
+typedef enum led_type
+{
+	STYLE_NONE,
+	STYLE_BT_PAIRING,
+	STYLE_LOW_BAT,
+	STYLE_DEVICE_1,
+	STYLE_DEVICE_2,
+	STYLE_DEVICE_3,
+	STYLE_24G_PAIRING,
+	STYLE_BT_RECON,
+}EVT_LED_STYLE;
+
+typedef struct device_recode{
+	byte  device_type;
+	byte  device_addr[6];
+	byte  device_link_key[16] ;
+	byte  local_addr[6];
+}BD_KEY_RECORD;
+
+
+typedef struct c51_global_variable		// 0x4cbf
+{
+	 byte update_eeprom_flag;		// 0x4cbf
+	 byte last_device_num;			// 0x4cc0
+	 byte system_mode;			// 0x4cc1
+	 byte power_on_action;			// 0x4cc2
+	 byte current_device_num;		// 0x4cc3
+	 byte temp_device_num;		// 0x4cc4
+
+	 byte g24_currentState;			// 0x4cc5
+	 byte g24_currentSubState;		// 0x4cc6
+	 byte ble_currentState;			// 0x4cc7
+	 byte ble_currentSubState;		// 0x4cc8
+	 byte br_currentState;			// 0x4cc9
+	 byte br_currentSubState;		// 0x4cca
+	 byte history_state;			// 0x4ccb
+
+	 byte button_reconnect_flag;	// 0x4ccc
+	 byte button_24G_rec_flag;		// 0x4ccd
+	 byte button_flag;				// 0x4cce
+	 byte button_timer[4];			// 0x4ccf~0x4cd2
+ 
+	 byte battery_check_interval;			// 0x4cd3
+	 byte battery_value_index;				// 0x4cd4
+	 byte battery_status;					// 0x4cd5
+	 word battery_value[BAT_ARRAY_LEN];	// 0x4cd6~0x4cdd
+	 word battery_level_low;				// 0x4cde
+	 word battery_level_shutdown;			// 0x4ce0
+
+	 byte battery_low_led_flash_interval;		// 0x4ce2
+
+		 
+	 word sleepTimer;						// 0x4ce3
+	 byte powerOn_timer;					// 0x4ce5
+	 byte sys_numlockled_on_timer;			// 0x4ce6
+	 byte sys_capslockled_on_timer;			// 0x4ce7
+	 byte sys_scrolllockled_on_timer;		// 0x4ce8
+	 byte pairing_timeout;					// 0x4ce9
+	 byte delay_enter_lpm_timer;			// 0x4cea
+	 
+	 byte release_data;					// 0x4ceb
+	 byte lockLpm;	 					// 0x4cec
+	 byte key_action;						// 0x4ced
+
+	 byte pairing_g24_timeout;				//0x4cee
+	 byte recon_delay;						// 0x4cef
+	 byte recon_count;						// 0x4cf0
+	 byte recon_continue;					// 0x4cf1
+	 byte ble_ramdon_lap1;					// 0x4cf2
+	 byte ble_ramdon_lap2;					// 0x4cf3 
+	 byte key_combination_step;			// 0x4cf4
+	 byte key_combination_ctrl;				// 0x4cf5
+	 byte key_combination_keyvalue;		// 0x4cf6
+	 byte battery_low_led_flash_flag;		// 0x4cf7
+	 byte one_key_press_wait_release_timer;
+	 byte system_win_app_lock_flag; 
+	 byte pwm_lpm_mode_flag;
+	 byte battery_shutdown_flag;
+	 byte last_battery_status;
+
+	 byte backlight_level;
+	 byte backlight_speed;
+	 byte backlight_step;
+	 word backlight_switch_timer;
+	 byte backlight_duty_level;
+	 byte backlight_breathe_step;			//0x4c
+	 byte backlight_breathe_flag;			//0x4c
+	 byte g24_long_sleep_flag;
+
+	 byte test_buff;
+	
+}G_VARIABLE_MAP;
+
+
+
+extern G_VARIABLE_MAP xdata g_variable;
+
+
+ extern xbyte m_caps_num_lock_last;
+
+ extern xbyte iOS_rec_pinCode;
+ extern xbyte pinCode_flag;
+ extern xbyte le_pin_code_len;
+ extern xbyte power_on_flag;
+ extern xbyte repeat_send_24g;
+ extern xbyte get_24g_led_send;
+ extern xbyte ble_reconnect_flag;
+ extern xbyte press_long_time_flag;
+ extern xbyte long_press_flag;
+ extern xbyte standard_key_release_flag;
+ extern xbyte fast_connect_flag;
+ extern xbyte fn_flag;
+ extern xbyte fn_tx_flag;
+ extern xbyte fn_flag_last;
+ extern xbyte fn_lock_flag;
+ extern xbyte ksSelMapOld[];
+ extern xbyte ksSelMapCheck[];
+ extern xbyte ksSelMapCurr[]; 
+ extern xbyte multikey[9];
+ extern xbyte mult_key_value;
+ extern  xbyte keyCount;
+ extern xbyte mult_key_status;
+ extern xbyte key_value_temp;
+ extern xbyte system_key_press;
+ extern xbyte recon_index;
+
+ extern xbyte delayChgInvTimer;
+ extern xbyte action_timeout;
+ extern xbyte switch_role_timer;
+ extern xbyte m_customize_timer_last;
+
+
+extern xbyte hidBuff[10] ;
+extern xbyte  m_link_key_exists  ;
+extern xbyte  m_ltk_exists  ;
+extern xbyte m_remote_le_addr[6]  ;
+extern xword m_ui_state_map  ;
+extern xbyte m_linkkey[16]   ;
+extern xbyte m_remote_addr[6]  ;
+extern xbyte m_reconn_addr[6]  ;
+extern xbyte m_le_ltk[16]  ;
+extern byte m_24g_addr[4] ;
+extern byte m_24g_paring_addr[4];
+extern byte kscurrmult;
+extern xbyte m_le_lap[6];
+extern xbyte m_reset_reg;
+extern xbyte m_lpm_mode;
+extern ulong le_pin_code;
+extern xword m_adcCurrentValue;
+extern xword m_adc3vValue; 
+extern xword m_adc0vBase;
+extern volatile xbyte m_adc_config_flag;
+extern volatile xbyte m_24g_enter_hibernate[4];
+extern volatile xbyte m_24g_pairing_sm;
+extern volatile xbyte  m_power_on_flag;
+extern volatile xbyte m_caps_num_lock;
+extern volatile xbyte m_reconnect_continue;
+extern volatile xbyte m_adc_channel;
+extern volatile xbyte m_wakup_from_power_flag;
+extern volatile xbyte m_customize_timer;
+extern volatile xbyte m_24g_led_flag;
+extern volatile xbyte m_pc_sleep_flag;
+extern volatile xbyte bitkey[15];
+
+#endif //_GLOBAL_VARIABLE_H_
Index: global_variable.c
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/global_variable.c	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/global_variable.c	(working copy)
@@ -0,0 +1,253 @@
+#include "global_variable.h"
+#include "Btreg.h"
+
+ 
+G_VARIABLE_MAP xdata g_variable _at_ mem_32asm_data_end;
+
+
+// xbyte data random at 4dd0 to 4f40: makefile
+ xbyte m_caps_num_lock_last;
+ xbyte iOS_rec_pinCode;
+ xbyte pinCode_flag;
+ xbyte le_pin_code_len;
+ xbyte power_on_flag;
+ xbyte repeat_send_24g;
+ xbyte get_24g_led_send;
+ xbyte ble_reconnect_flag;
+ xbyte press_long_time_flag;
+ xbyte long_press_flag;
+ xbyte standard_key_release_flag;
+ xbyte fast_connect_flag;
+ xbyte fn_flag;
+ xbyte fn_flag_last;
+ xbyte fn_tx_flag;
+ xbyte fn_lock_flag;
+
+ xbyte multikey[9];
+ xbyte mult_key_value;
+ xbyte mult_key_status;
+ xbyte system_key_press;
+ xbyte key_value_temp;
+ xbyte keyCount;
+ xbyte recon_index;
+
+ xbyte delayChgInvTimer;
+ xbyte action_timeout;
+ xbyte switch_role_timer;
+ xbyte m_customize_timer_last;
+
+
+volatile xbyte ksSelMapOld[KB_KSCAN_COL_NUM] _at_ 0x4d93;
+volatile xbyte ksSelMapCheck[KB_KSCAN_COL_NUM] _at_ 0x4da8;	// 4d93+20 = 4da8
+volatile xbyte ksSelMapCurr[KB_KSCAN_COL_NUM] _at_ 0x4dbc; 	// 4da8+20 = 4dbc
+volatile xbyte hidBuff[10] _at_ mem_mouse_x;
+volatile xbyte  m_link_key_exists _at_ mem_link_key_exists;
+volatile xbyte m_linkkey[16] _at_ mem_link_key ;
+volatile xbyte  m_ltk_exists _at_ mem_ltk_exists;
+volatile xbyte m_le_ltk[16] _at_ mem_le_ltk;
+volatile xbyte m_remote_le_addr[6] _at_ mem_le_plap;
+volatile xbyte m_remote_addr[6] _at_ mem_plap;
+volatile xbyte m_reconn_addr[6] _at_ mem_hci_plap;
+volatile byte m_24g_addr[4] _at_ mem_24g_addr;
+volatile byte m_24g_paring_addr[4] _at_ mem_24g_paring_addr;
+
+volatile xbyte m_le_lap[6] _at_ mem_le_lap;
+
+volatile byte kscurrmult _at_ mem_lpm_mult;
+volatile xword m_ui_state_map _at_ mem_ui_state_map;
+volatile xbyte m_reset_reg _at_ 0x8010;
+volatile xbyte m_lpm_mode _at_ mem_lpm_mode;
+volatile ulong le_pin_code _at_ mem_le_pin_code;
+volatile xword m_adcCurrentValue _at_ mem_adc_current_value;
+volatile xword m_adc3vValue _at_ mem_adc_3v;
+volatile xword m_adc0vBase _at_ mem_adc_0v;
+volatile xbyte m_adc_config_flag _at_ mem_adc_config_flag;
+volatile xbyte m_24g_enter_hibernate[4] _at_ mem_24g_enter_hibernate;
+volatile xbyte m_24g_pairing_sm _at_ mem_24g_pairing_sm;
+volatile xbyte  m_power_on_flag _at_ mem_power_on_flag;
+volatile xbyte m_caps_num_lock _at_ mem_caps_num_lock;
+volatile xbyte m_reconnect_continue _at_ mem_reconnect_continue;
+volatile xbyte m_adc_channel _at_ mem_adc_channel;
+volatile xbyte m_wakup_from_power_flag _at_ mem_wakup_from_power_flag;
+
+volatile xbyte m_customize_timer _at_ mem_customize_timer;
+volatile xbyte m_24g_led_flag _at_ mem_24g_led_flag;
+volatile xbyte m_pc_sleep_flag _at_ mem_pc_sleep_flag;
+
+volatile xbyte bitkey[15];
+
+code byte col[KB_KSCAN_COL_NUM+1]=
+{
+26,    		//C0
+8,    			//C1
+9,    			//C2
+10,    		//C3
+11,    		//C4
+12,    		//C5
+13,    		//C6
+14,    		//C7
+25,	    		//C8	
+24,    		//C9
+23,    		//C10
+18,    		//C11
+17,    		//C12
+16,    		//C13
+15,    		//C14
+};
+
+
+code byte  ksMap[KS_KEY_MAP_LEN]=
+{
+//c0
+HID_KEY_ESC, 				//R0
+HID_KEY_NULL, 				//R1
+HID_KEY_NULL, 				//R2
+HID_KEY_NULL,				//R3
+HID_KEY_CAPS_LOCK, 			//R4
+HID_KEY_NULL, 				//R5
+HID_KEY_NULL, 			//R6
+HID_KEY_NULL, 					//R7
+
+//c1
+HID_KEY_TAB, 					//R0
+HID_KEY_Q, 				//R1
+HID_KEY_W, 					//R2
+HID_KEY_A, 				//R3
+HID_KEY_NULL,					//R4
+HID_KEY_SPACE, 				//R5
+HID_KEY_Z, 				//R6
+HID_KEY_LEFT_ALT, 					//R7
+
+//c2
+HID_KEY_NULL,					//R0
+HID_KEY_1, 		//R1
+HID_KEY_2, 					//R2
+HID_KEY_NULL, 				//R3
+HID_KEY_LEFT_SHIFT, 					//R4
+HID_KEY_NULL, 				//R5
+HID_KEY_NULL,					//R6
+HID_KEY_NULL , 					//R7
+
+//C3
+HID_KEY_NULL, 					//R0
+HID_KEY_3, 					//R1
+HID_KEY_NULL,					//R2
+HID_KEY_LEFT_GUI, 					//R3
+HID_KEY_S,					//R4
+HID_KEY_NULL,				//R5
+HID_KEY_NULL,					//R6
+HID_KEY_NULL,					//R7
+
+//c4
+HID_KEY_NULL,					//R0		
+HID_KEY_4, 					//R1
+HID_KEY_NULL, 					//R2
+HID_KEY_NULL, 					//R3
+HID_KEY_E, 					//R4
+HID_KEY_NULL, 					//R5
+HID_KEY_NULL, 					//R6
+HID_KEY_NULL,					//R7
+
+//c5
+HID_KEY_NULL, 					//R0
+HID_KEY_5,					//R1
+HID_KEY_NULL, 					//R2
+HID_KEY_NULL, 					//R3
+HID_KEY_F, 					//R4
+HID_KEY_NULL,					//R5
+HID_KEY_NULL, 					//R6
+HID_KEY_NULL, 					//R7
+
+//c6						
+HID_KEY_NULL, 					//R0
+HID_KEY_6, 	//R1
+HID_KEY_Y, 					//R2
+HID_KEY_NULL, 					//R3
+HID_KEY_X,			//R4
+HID_KEY_NULL, 				//R5
+HID_KEY_NULL,				//R6
+HID_KEY_NULL, 					//R7
+
+
+//c7
+HID_KEY_NULL, 					//R0
+HID_KEY_7,					//R1
+HID_KEY_U, 					//R2
+HID_KEY_H, 				//R3
+HID_KEY_B, 		//R4
+HID_KEY_N, 				//R5
+HID_KEY_RIGHT_CTL, 					//R6
+HID_KEY_NULL,					//R7
+
+//c8
+HID_KEY_NULL,					//R0
+HID_KEY_8,		//R1
+HID_KEY_I,		//R2
+HID_KEY_J,				//R3
+HID_KEY_M,				//R4
+HID_KEY_APP,				//R5
+HID_KEY_K56, 				//R6
+HID_KEY_NULL,					//R7
+
+//c9
+HID_KEY_NULL,		//R0
+HID_KEY_9,				//R1
+HID_KEY_O, 				//R2
+HID_KEY_K, 			//R3
+HID_KEY_D,				//R4
+HID_KEY_LESS_THAN, 			//R5
+HID_KEY_GREAT_THAN,				//R6
+HID_KEY_HOME,  		//R7
+
+//c10 
+HID_KEY_NULL, 				//R0
+HID_KEY_0, 		//R1	
+HID_KEY_P, 		//R2
+HID_KEY_L, 				//R3
+HID_KEY_G, 				//R4
+HID_KEY_RIGHT_ALT, 				//R5
+HID_KEY_SLASH, 					//R6
+HID_KEY_END, 				//R7
+
+//c11 
+HID_KEY_NULL, 				//R0
+HID_KEY_MINUS ,				//R1
+HID_KEY_LEFT_BRACKET, 				//R2
+HID_KEY_SEMICOLON, 				//R3
+HID_KEY_T,			//R4
+HID_KEY_FN, 		//R5
+HID_KEY_C, 			//R6
+HID_KEY_PAGE_UP, 				//R7
+
+//c12 
+HID_KEY_NULL, 				//R0
+HID_KEY_EQUAL,				//R1
+HID_KEY_RIGHT_BRACKET,				//R2
+HID_KEY_QUOTE, 				//R3
+HID_KEY_R,			//R4
+HID_KEY_NULL,		//R5
+HID_KEY_K45,				//R6
+HID_KEY_PAGE_DOWN, 				//R7
+
+//c13 
+HID_KEY_NULL, 				//R0
+HID_KEY_INSERT, 				//R1	
+HID_KEY_ENTER, 				//R2
+HID_KEY_BACK_SLASH, 			//R3
+HID_KEY_V, 		//R4
+HID_KEY_RIGHT_SHIFT, 			//R5
+HID_KEY_END, 			//R6
+HID_KEY_UP_ARROW, 		//R7
+
+//c14 
+HID_KEY_NULL,			//R0
+HID_KEY_BACKSPACE, 		//R1
+HID_KEY_DELETE, 			//R2
+HID_KEY_K42, 		//R3
+HID_KEY_LEFT_CTL, 			//R4
+HID_KEY_LEFT_ARROW, 		//R5
+HID_KEY_DOWN_ARROW,				//R6
+HID_KEY_RIGHT_ARROW,				//R7
+
+};
+
Index: gpio.h
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/gpio.h	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/gpio.h	(working copy)
@@ -0,0 +1,83 @@
+
+#ifndef _GPIO_H
+#define _GPIO_H
+#include "type.h"
+#include "Hwreg.h"
+
+extern volatile xbyte YC_GPIOWakeupL[4];
+extern volatile xbyte 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(byte gpio_num);
+/**
+ * This function set gpio out.
+ * 
+ * @param gpio_num,bit_val bit_val 0 low, 1high
+ * 
+ * @return none.
+*/
+void GPIO_Setout(byte 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(byte gpio_num,bit  st);
+
+/**
+ * This function set gpio input
+ * 
+ * @param gpio_num,st 1 high ,0 low.
+ * 
+ * @return none.
+*/
+void GPIO_SetOutput(byte 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(byte 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(byte gpio_num);
+
+/**
+ * This function Flip output state.
+ * 
+ * @param gpio_num.
+ * 
+ * @return none.
+*/
+void GPIO_FlipOutBit(byte gpio_num);
+
+/* make all gpios into pd state if not output or pullhigh */
+void GPIO_fillpd();
+void GPIO_SetPd(byte gpio_num, bool bit_val);
+void GPIO_Setoe(byte gpio_num, bool bit_val);
+void GPIO_SetPu(byte gpio_num, bool bit_val);
+
+#endif /* YC_GPIO_H */
+
+
Index: hwreg.h
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/hwreg.h	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/hwreg.h	(working copy)
@@ -0,0 +1,214 @@
+#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  CPUA_ICE_CTRL (*(volatile unsigned char xdata *)(0x8280))
+
+#define CPUB_ICE_BK0_LO			0x8205
+#define CPUB_ICE_BK0_HI			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_KSCAN_KSCTRL				(*(volatile unsigned char xdata *)(0x8063))
+#define REG_KSCAN_RCTC				(*(volatile unsigned char xdata *)(0x8064))
+#define REG_KSCAN_SCANCYCLE_TIMER_L	(*(volatile unsigned char xdata *)(0x8065))
+#define REG_KSCAN_SCANCYCLE_TIMER_H	(*(volatile unsigned char xdata *)(0x8066))
+
+
+#define REG_KSCAN_KSTAT				(*(volatile unsigned char xdata *)(0x8119))
+#define REG_KSCAN_EVENT				(*(volatile unsigned char xdata *)(0x811a))
+#define REG_KSCAN_EVENT_NUM			(*(volatile unsigned char xdata *)(0x811b))
+
+#define REG_KSCAN_M_DEBOUNCE		(*(volatile unsigned char xdata *)(0x8067))
+#define REG_KSCAN_MODKEY				(*(volatile unsigned char xdata *)(0x8068))
+#define REG_KSCAN_ROWMASK			(*(volatile unsigned char xdata *)(0x806f))
+#define REG_CONFIG						(*(volatile unsigned char xdata *)(0x8043))
+
+
+
+#endif
Index: iic.h
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/iic.h	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/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(word addr, word len, byte* 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(word addr,word len, byte* 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(word addr, word len, byte* pbuff);
+#endif/* YC_IIC_H */
+
Index: ipc.h
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/ipc.h	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/ipc.h	(working copy)
@@ -0,0 +1,313 @@
+/*
+ * 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"
+#include "btreg.h"
+
+#define BUG_FIX
+#ifdef BUG_FIX
+#define FIX_ENTER_LPM	0x01
+#define FIX_ENTER_HIBERNATE	0x03
+#define FIX_LEAVE_LPM	0x05
+
+#endif
+
+
+/* IPC tx hardware address */
+#define IPC_TX_HEAD	mem_ipc_2bt_fifo_head
+#define IPC_TX_END	mem_ipc_2bt_fifo_end
+
+/*IPC rx hardware address*/
+#define IPC_RX_HEAD	mem_ipc_2C51_fifo_head
+#define IPC_RX_END	mem_ipc_2C51_fifo_end
+
+/*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_STANDBY                                  	0x00
+#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_ENTER_SNIFF_SUBRATING         0x07
+#define IPC_CMD_EXIT_SNIFF_SUBRATING             0x08
+#define IPC_CMD_SNIFF_TEST                               	0x09
+#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_START_DIRECT_ADV                   0x0f
+#define IPC_CMD_STOP_DIRECT_ADV                    	0x10
+#define IPC_CMD_LE_DISCONNECT                        	0x11
+#define IPC_CMD_LE_UPDATE_CONN                     	0x12
+#define IPC_CMD_LED_OFF                                  	0x13
+#define IPC_CMD_LED_ON                                   	0x14
+#define IPC_CMD_LED_BLINK                                	0x15
+#define IPC_CMD_LE_START_CONN                     	0x16
+#define IPC_CMD_LE_START_SCAN                      	0x17
+#define IPC_CMD_LE_STOP_SCAN                         	0x18
+#define IPC_CMD_ENTER_HIBERNATE                    	0x19
+#define IPC_CMD_LE_SMP_SECURITY_REQUEST   0x1b
+#define IPC_CMD_LE_START_WRITE                      	0x1c
+#define IPC_CMD_ROLE_SWITCH                          	0x1d
+#define IPC_CMD_BB_RECONN_CANCEL              	0x1e
+#define IPC_CMD_STORE_RECONN_INFO_LE        	0x1f
+#define IPC_CMD_STORE_RECONN_INFO_BT        	0x20
+#define IPC_CMD_START_24G                                	0x21
+#define IPC_CMD_STOP_24G                                 	0x22
+#define IPC_CMD_PAIR_24G                                 	0x23
+#define IPC_CMD_UPDATE_SUPERVISION_TO     	0x28
+#define IPC_CMD_LE_SET_PINCODE                      	0x29
+#define IPC_CMD_SET_RECONNECT_INIT          	0x2a
+#define IPC_CMD_START_ADV_REC                      	0x2b
+#define IPC_CMD_START_ADV_DISCOVERY            0x2c
+
+
+/*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_SPP_CONNECTED                     	0x08
+#define IPC_EVT_SPP_DISCONNECTED                  	0x09
+#define IPC_EVT_PINCODE_REQ                           	0x0A
+#define IPC_EVT_ENTER_SNIFF                              	0x0B
+#define IPC_EVT_EXIT_SNIFF                               	0x0C
+#define IPC_EVT_ENTER_SNIFF_SUB                     	0x0D
+#define IPC_EVT_EXIT_SNIFF_SUB                      	0x0E
+#define IPC_EVT_DISCOVERY_STOPED                 	0x0F
+#define IPC_EVT_BUTTON_LONG_PRESSED         	0x10
+#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_ML2CAP_CONN_REFUSED           	0x16
+#define IPC_EVT_BUTTON_ENTER_HIBERNATE     	0x17
+#define IPC_EVT_LINKKEY_GENERATE                   	0x18
+#define IPC_EVT_SWITCH_NOT_ACCEPT                	0x19
+#define IPC_EVT_SWITCH_ACCEPT                         	0x20
+#define IPC_EVT_SNIFF_NOT_ACCEPT                    0x21
+#define IPC_EVT_SNIFF_ACCEPT                             0x22
+#define IPC_EVT_UNSNIFF_ACCEPT                        	0x23
+#define IPC_EVT_UNSNIFF_NOT_ACCEPT               	0x24
+#define IPC_EVT_BUTTON_ADJUST_DPI                 	0x25
+#define IPC_EVT_SEND_UNSNIFF_ACCEPT            	0x26
+#define IPC_EVT_VIRTUAL_CABLE_UNPLUG          	0x27
+#define IPC_EVT_LE_WRITE_REQUEST                  	0x28
+#define IPC_EVT_LE_ENC_INFO                              	0x29
+#define IPC_EVT_SWITCH_FAIL_MASTER               	0x2a
+#define IPC_EVT_SWITCH_SUCCESS_MASTER       	0x2b
+#define IPC_EVT_BUTTON_DOWN                           	0x2c
+#define IPC_EVT_BUTTON_UP                                	0x2d
+#define IPC_EVT_REMOTE_UNSNIFF                      	0x2e
+#define IPC_EVT_RESET                                    	0x2f
+#define IPC_EVT_WAKEUP                                   	0x30
+#define IPC_EVT_24G_PAIRING_COMPLETE          	0x31
+#define IPC_EVT_24G_ATTEMPT_FAIL                   	0x32
+#define IPC_EVT_HIBERNATE_WAKE                      	0x33
+#define IPC_EVT_LE_PROTOCOL_CONNECTED    	0x34
+#define IPC_EVT_LE_PINCODE_REQ				0x35
+#define IPC_EVT_RECONNECT_STANDY                	0x37
+#define IPC_EVT_CLEAR_LINKKEY                         	0x39
+#define IPC_EVT_24G_ATTEMPT_SUCCESS           	0x3c
+#define IPC_EVT_TIMER_INIT                               	0x50
+#define IPC_EVT_TIMER_MASK                               	0xF0
+#define IPC_EVT_TIMER_100MS                              	0x51
+#define IPC_EVT_TIMER_200MS                             	0x52
+#define IPC_EVT_TIMER_300MS                              	0x53
+#define IPC_EVT_TIMER_400MS                              	0x54
+#define IPC_EVT_TIMER_500MS                              	0x55
+#define IPC_EVT_TIMER_600MS                              	0x56
+#define IPC_EVT_TIMER_700MS                              	0x57
+#define IPC_EVT_TIMER_800MS                              	0x58
+#define IPC_EVT_TIMER_900MS                              	0x59
+#define IPC_EVT_TIMER_1KMS                               	0x5A
+#define IPC_EVT_TIMER_1K1MS                              	0x5B
+#define IPC_EVT_TIMER_1K2MS                              	0x5C
+#define IPC_EVT_TIMER_1K3MS                              	0x5D
+#define IPC_EVT_TIMER_1K4MS                              	0x5E
+#define IPC_EVT_TIMER_1K5MS                              	0x5F
+
+
+/*IPC EVT callback function type*/
+typedef void (*tIPCEventCb)(byte);
+
+/*IPC SPP callback function type*/
+typedef void (*tIPCSppCb)(byte*, word);
+
+/*IPC BLE callback function type*/
+typedef void (*tIPCBleCb)(byte*, word);
+
+/*IPC timer(1s) callback function type*/
+typedef void (*tIPCTimer)(void);
+
+/*IPC Hid callback function type*/
+typedef void (*tIPCHidCb)(byte*, word);
+
+/*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*/
+
+#define BT_PIN_CODE_MAX_LEN 16
+extern xbyte ipcPinlen;
+extern xbyte ipcPin[BT_PIN_CODE_MAX_LEN];
+extern xbyte current_task;
+
+/*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(byte 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(byte* dt, byte 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(byte* dt, byte 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(byte* dt, byte 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(byte* dt, byte 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: kb_process.h
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/kb_process.h	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/kb_process.h	(working copy)
@@ -0,0 +1,126 @@
+#ifndef _KB_PROCESS_H
+#define _KB_PROCESS_H
+#include "common.h"
+
+#define KEY_STANDBY					0x00
+#define KEY_MULIT_PRESS				0x01
+#define KEY_SYSTEM_PRESS			0x04
+#define KEY_WAIT_RELEASE			0x02
+#define KEY_RELEASE					0x03
+#define KEY_2G4_FN_TX				0x04
+
+#define KB_PC_KEYSEL_NUMLOCK		0x01
+#define KB_PC_KEYSEL_CAPSLOCK		0x02
+#define KB_PC_KEYSEL_SCROLLLOCK 	0x04
+
+#define KEY_FLAG_BTKEY_PRESS				0x01
+#define KEY_FLAG_SAME_KEY_PRESS			0x02
+#define KEY_FLAG_STOP_DISCOVERY			0x04
+#define KEY_FLAG_FN_DEVICE_BUTTON			0x08
+#define KEY_FLAG_FN_24G_DEVICE_BUTTON		0x10
+
+#define CAMBINATION_KEY_FREE				0
+#define CAMBINATION_KEY_PRESS				1
+#define CAMBINATION_KEY_HOLD				2
+#define CAMBINATION_KEY_COMPLETE			3
+#define CAMBINATION_KEY_WAIT_RELEASE 		4
+#define CAMBINATION_KEY_RELEASE			5	
+#define CAMBINATION_KEY_NULL				6
+
+
+#define BACKLIGHT_ON						0
+#define BACKLIGHT_BREATH					1
+#define BACKLIGHT_UP_TO_DOWN_ON			2
+#define BACKLIGHT_DOWN_TO_UP_ON			3
+#define BACKLIGHT_MIDDLE_TO_OUTSIDE		4
+#define BACKLIGHT_OUTSIDE_TO_MIDDLE		5
+#define BACKLIGHT_UP_TO_DOWN_ON_OFF		6
+#define BACKLIGHT_DOWN_TO_UP_ON_OFF		7
+#define BACKLIGHT_OFF						8
+
+
+#define BACKLIGHT_DUTY_LEVEL_00			0
+#define BACKLIGHT_DUTY_LEVEL_25			1
+#define BACKLIGHT_DUTY_LEVEL_50			2
+#define BACKLIGHT_DUTY_LEVEL_75			3
+#define BACKLIGHT_DUTY_LEVEL_100			4
+
+
+#define BACKLIGHT_SPEED_LEVEL_100MS		1
+#define BACKLIGHT_SPEED_LEVEL_200MS		2
+#define BACKLIGHT_SPEED_LEVEL_300MS		3
+#define BACKLIGHT_SPEED_LEVEL_400MS		4
+#define BACKLIGHT_SPEED_LEVEL_500MS		5
+
+#define BACLIGHT_ON_STEP_1					0
+#define BACLIGHT_ON_STEP_2					1
+#define BACLIGHT_ON_STEP_3					2
+#define BACLIGHT_ON_STEP_4					3
+#define BACLIGHT_ON_STEP_5					4
+#define BACLIGHT_ON_STEP_6					5
+#define BACLIGHT_ON_STEP_7					6
+#define BACLIGHT_ON_STEP_8					7
+
+
+//gipo
+#define EEPROM_WP_GPIO			0xff
+
+#define CAPS_LED_GPIO		  	29
+#define WIN_LOCK_LED_GPIO		31
+#define LOWPOWER_LED_GPIO		28
+
+#define BACKLIGHT_PWM_GPIO		22
+#define LINE5_LED_GPIO			27
+#define LINE4_LED_GPIO			30
+#define LINE3_LED_GPIO			21
+#define LINE2_LED_GPIO			20
+#define LINE1_LED_GPIO			19
+
+
+
+//eeprom address base
+#define EEPROM_RECON_INFO_BASE_6  					0x7FF0
+#define EEPROM_RECON_INFO_SYTEM_MODE 			(EEPROM_RECON_INFO_BASE_6+8)
+
+
+
+
+#define KS_KEY_MAP_LEN					158
+#define KB_KSCAN_COL_NUM				20
+
+#define KB_24G_LED_ACK_TYPE			3
+
+byte key_fn_function(byte state ,byte key_value);
+
+
+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 IPC_TxHidData(byte* dt, byte len);
+void kb_need_keyscan();
+void YC_key_action_handle(byte key_num);
+void kb_motion_keyscan(tKSEVENT *pEvt);
+byte kb_device_select(tKSEVENT *pEvt);
+void kb_multikey_setup(tKSEVENT *pEvt);
+byte key_fn_function(byte state ,byte key_value);
+
+
+#endif
+
Index: kb_process.c
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/kb_process.c	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/kb_process.c	(working copy)
@@ -0,0 +1,706 @@
+#include "kb_process.h"
+
+void YC_key_action_handle(byte key_num)
+{
+	switch (key_num)
+	{
+	case KEY_START_24G:
+	case KEY_OPEN_24G:
+		g_variable.recon_count = 0;
+
+		IIC_Read(EEPROM_RECON_INFO_BASE_6,4 , (byte *)m_24g_addr);
+		Delay1ms(10);
+		fast_connect_flag = 0;
+		if (m_24g_addr[0] == 0xff && m_24g_addr[1] == 0xff && m_24g_addr[2] == 0xff && m_24g_addr[3] == 0xff)
+		{
+			m_24g_addr[0] = 0x0f;
+			m_24g_addr[1] = 0x0f;
+			m_24g_addr[2] = 0x0f;
+			m_24g_addr[3] = 0x0f;
+			fast_connect_flag = 1;
+		}
+		IPC_TxControlCmd(IPC_CMD_START_24G);
+		
+		g_variable.g24_currentState = CHANGE_TO_24G_CONNECTING;
+		g_variable.g24_currentSubState = CHANGE_TO_24G_SUB_NONE;
+		g_variable.key_action = KEY_NONE;
+		
+		break;
+	case KEY_PAIRING_24G:
+		g_variable.recon_count = 0;
+		if (YC_disconnect_all_link())
+		{
+			g_variable.key_action = key_num;
+		}
+		else
+		{
+			if (g_variable.g24_currentState != CHANGE_TO_24G_PAIRING)
+			{
+				IPC_TxControlCmd(IPC_CMD_PAIR_24G);
+				g_variable.g24_currentState = CHANGE_TO_24G_PAIRING;
+				g_variable.g24_currentSubState = CHANGE_TO_24G_SUB_NONE;
+				g_variable.pairing_g24_timeout = BT_PAIRING_TIME_OUT_1MIN;
+				g_variable.pairing_timeout = 0;
+			}
+			g_variable.key_action = KEY_NONE;
+		}
+		break;
+	default:
+		g_variable.key_action = KEY_NONE;
+		break;
+	}
+}
+
+
+
+void IPC_TxHidData(byte* dt, byte len)
+{
+	xbyte tx_hid_buff[10];
+	byte i=0;
+
+	for(i==0; i< len; i++)
+	{
+		tx_hid_buff[i] = dt[i];
+	}
+	
+	if(!YC_check_need_reconnected()) 
+		return;
+	if (g_variable.release_data)
+		return;
+
+	if (g_variable.g24_currentState == CHANGE_TO_24G_CONNECTED)
+	{
+		if(tx_hid_buff[0] == HID_REPORTID_KEY_STANDARD)
+		{
+			tx_hid_buff[0] = 4;
+			if (tx_hid_buff[1] == 0 && tx_hid_buff[3] == 00 && tx_hid_buff[4] == 00 && tx_hid_buff[5] == 0)
+				repeat_send_24g = 0;
+			else
+				repeat_send_24g = 1;			
+		}
+		else if(tx_hid_buff[0] == HID_REPORTID_MEDIA_KEY)
+		{
+			tx_hid_buff[0] = 5;
+			if (tx_hid_buff[1] == 00 && tx_hid_buff[2] == 00)
+			{
+				repeat_send_24g = 0;
+			}
+			else
+			{
+				repeat_send_24g = 1;
+			}
+		}
+		else if(tx_hid_buff[0] == HID_REPORTID_SYSTEM_CTRL)
+		{
+			tx_hid_buff[0] = 7;
+		}
+		IPC_Tx24GData(tx_hid_buff,len);
+	}
+}
+
+
+void kb_set_multikey(word multikey_value)
+{
+	if(mult_key_status != KEY_WAIT_RELEASE)
+	{
+		mult_key_status = KEY_MULIT_PRESS;
+		multikey[0] = HID_REPORTID_MEDIA_KEY;
+		multikey[1] = (multikey_value&0xff);
+		multikey[2] = ((multikey_value>>8)&0xff);
+	}
+}
+
+#ifdef SYSTEM_CONTROL_ENABLE
+void kb_set_systemkey(byte systemkey_value)
+{
+	if(mult_key_status != KEY_WAIT_RELEASE)
+	{
+		mult_key_status = KEY_SYSTEM_PRESS;
+		system_key_press = 1;
+		multikey[0] = HID_REPORTID_SYSTEM_CTRL;
+		multikey[1] = systemkey_value;
+	}
+}
+#endif
+
+void kb_send_combination_key(byte ctrl_value,byte key_value)
+{
+	xmemclear(hidBuff,9);
+	hidBuff[0] = HID_REPORTID_KEY_STANDARD;
+	hidBuff[1] |= ctrl_value;
+	hidBuff[3] = key_value; 
+	IPC_TxHidData(hidBuff, 9);
+}
+
+/*
+//touch data send
+void kb_set_mouse_data()
+{
+	multikey[0] = HID_REPORTID_MOUSE;
+	multikey[1] = g_variable.sensor_key;
+	multikey[2] = g_variable.sensor_x_l;
+	multikey[3] = g_variable.sensor_x_h;
+	multikey[4] = g_variable.sensor_y_l;
+	multikey[5] = g_variable.sensor_y_h;
+	multikey[6] = g_variable.sensor_wheel;
+	multikey[7] = g_variable.sensor_titl;
+	IPC_TxHidData(multikey, 8);
+	xmemclear(multikey,9);
+}
+*/
+
+void kb_24g_get_led_status()		//get RF Ack for get numlock/capslock status
+{
+	if((m_24g_led_flag)&& (repeat_send_24g == 0))
+	{
+		if (g_variable.g24_currentState == CHANGE_TO_24G_CONNECTED)
+		{
+			xmemclear(hidBuff,9);
+
+			mult_key_status = 0;
+			hidBuff[0] = HID_REPORTID_KEY_STANDARD;		// standard key send
+			hidBuff[2] = m_24g_led_flag;
+			IPC_TxHidData(hidBuff, 9);
+		}	
+	}
+
+}
+
+
+
+static void kb_motion()
+{
+	tKSEVENT *pEvt = NULL;
+	
+	if (!IPC_IsTxBuffEmpty())
+		return;
+	pEvt = KS_GetCurrentEvt();
+
+	if (pEvt == NULL)
+	{
+		m_power_on_flag = 1;
+		kb_24g_get_led_status();
+		return;
+	}
+	kb_motion_keyscan(pEvt);
+}
+
+
+
+void kb_need_keyscan()
+{
+		if((g_variable.key_combination_step == CAMBINATION_KEY_FREE)
+		||(g_variable.key_combination_step == CAMBINATION_KEY_COMPLETE)
+		|| (g_variable.key_combination_step == CAMBINATION_KEY_RELEASE)
+		)
+			kb_motion();
+		else
+		{
+			if(g_variable.key_combination_step == CAMBINATION_KEY_PRESS)
+			{
+				kb_send_combination_key(g_variable.key_combination_ctrl,0);
+				g_variable.key_combination_step = CAMBINATION_KEY_HOLD;
+			}
+			else if(g_variable.key_combination_step == CAMBINATION_KEY_HOLD)
+			{	
+				g_variable.key_combination_step = CAMBINATION_KEY_COMPLETE;
+				kb_send_combination_key(g_variable.key_combination_ctrl,g_variable.key_combination_keyvalue);
+			}
+			else if(g_variable.key_combination_step == CAMBINATION_KEY_WAIT_RELEASE)
+			{
+				g_variable.key_combination_keyvalue = 0;
+				kb_send_combination_key(g_variable.key_combination_ctrl,g_variable.key_combination_keyvalue);
+				g_variable.key_combination_ctrl = 0;
+				if(!g_variable.one_key_press_wait_release_timer)
+					g_variable.key_combination_step = CAMBINATION_KEY_NULL;
+				else
+					g_variable.key_combination_step = CAMBINATION_KEY_RELEASE;
+			}
+			else if(g_variable.key_combination_step == CAMBINATION_KEY_NULL)
+			{
+				g_variable.key_combination_keyvalue = 0;
+				g_variable.key_combination_ctrl = 0;
+				kb_send_combination_key(g_variable.key_combination_ctrl,g_variable.key_combination_keyvalue);
+				g_variable.key_combination_step = CAMBINATION_KEY_FREE;
+			}
+		}
+
+}
+
+
+
+void kb_motion_keyscan(tKSEVENT *pEvt)
+{
+	byte temp = 0;
+	byte i=0;
+	
+	fn_flag = 0;
+	for(i=0; i < KS_BUFF_POLL_LEN-1; i++)
+	{
+		if (pEvt->ksPool[i] == HID_KEY_FN) 		// Fn key check
+		{
+			fn_flag = 1;
+		}
+	}
+	fn_flag_last = fn_flag;
+
+	
+	if (pEvt == NULL)
+		return;
+
+#ifdef PC_SLEEP_STATUS_GET
+	if(m_pc_sleep_flag)		// wake from pc sleep,get led status
+	{
+		m_pc_sleep_flag = 0;
+		m_24g_led_flag = KB_24G_LED_ACK_TYPE;	
+	}
+#endif
+
+
+	delayChgInvTimer = 10;
+	g_variable.sleepTimer = 0;
+	g_variable.g24_long_sleep_flag = 0;
+	
+	if(g_variable.backlight_level != BACKLIGHT_OFF)
+	{
+		m_24g_enter_hibernate[0]	= 0x00;
+		m_24g_enter_hibernate[1]	= 0x48;
+		m_24g_enter_hibernate[2]	= 0x12;		// 100ms
+		m_24g_enter_hibernate[3]	= 0x00;
+	}
+	else
+	{
+		m_24g_enter_hibernate[0]	= 0x00;
+		m_24g_enter_hibernate[1]	= 0x48;
+		m_24g_enter_hibernate[2]   = 0x5d;		// 510ms
+		m_24g_enter_hibernate[3]	= 0x00;
+	}
+	xmemclear(hidBuff,9);
+	xmemclear(multikey,9);
+
+	////////////////////////////2.4g pairing////////////////////////////////////
+	if ((pEvt->ksPool[0]  == HID_KEY_FN && pEvt->ksPool[1]  == HID_KEY_V) 
+		||(pEvt->ksPool[0]  == HID_KEY_V && pEvt->ksPool[1]  == HID_KEY_FN) 
+		)
+	{
+		if (g_variable.g24_currentState != CHANGE_TO_24G_PAIRING)
+		{
+			g_variable.button_flag |= KEY_FLAG_FN_24G_DEVICE_BUTTON;
+		}
+		else
+		{
+			g_variable.button_flag &= ~KEY_FLAG_FN_24G_DEVICE_BUTTON;
+		}
+	}
+	else
+	{
+		g_variable.button_flag &= ~KEY_FLAG_FN_24G_DEVICE_BUTTON;
+	}
+
+	m_power_on_flag = 1;
+	if( (g_variable.key_combination_step == CAMBINATION_KEY_PRESS) ||
+	    (g_variable.key_combination_step == CAMBINATION_KEY_WAIT_RELEASE) ||
+	    (g_variable.key_combination_step == CAMBINATION_KEY_HOLD))
+	{
+		return;
+	}
+
+	// get 24g led status
+	if (g_variable.g24_currentState == CHANGE_TO_24G_CONNECTED)
+	{
+		for(i=0; i < KS_BUFF_POLL_LEN-1; i++)
+		{
+			if ((pEvt->ksPool[i] == HID_KEY_CAPS_LOCK) || (pEvt->ksPool[i] == HID_KEY_NUM_LOCK) 
+			|| (pEvt->ksPool[i] == HID_KEY_SCROLL_LOCK))
+			{
+				m_24g_led_flag = KB_24G_LED_ACK_TYPE;
+
+			}
+		}
+	}
+
+	kb_multikey_setup(pEvt);
+	
+	if (mult_key_status == KEY_MULIT_PRESS) 
+	{
+		mult_key_status = KEY_WAIT_RELEASE;
+		multikey[0] = HID_REPORTID_MEDIA_KEY;
+		IPC_TxHidData(multikey, 3);
+	}
+#ifdef SYSTEM_CONTROL_ENABLE	
+	else if (mult_key_status == KEY_SYSTEM_PRESS) 
+	{
+		mult_key_status = KEY_WAIT_RELEASE;
+		multikey[0] = HID_REPORTID_SYSTEM_CTRL;
+		IPC_TxHidData(multikey, 3);
+	}
+#endif	
+	else if((mult_key_status == KEY_RELEASE) || (mult_key_status == KEY_WAIT_RELEASE && (!keyCount)))
+	{
+		mult_key_status = KEY_STANDBY;
+		mult_key_value = 0;
+#ifdef SYSTEM_CONTROL_ENABLE		
+		if(system_key_press)
+		{
+			system_key_press = 0;
+			multikey[0] = HID_REPORTID_SYSTEM_CTRL;
+		}
+		else
+#endif		
+			multikey[0] = HID_REPORTID_MEDIA_KEY;
+		IPC_TxHidData(multikey, 3);
+	}
+	else 
+	{
+		if(!keyCount)
+		{
+			xmemclear(pEvt->ksPool,6);
+			xmemclear(bitkey,15);
+			pEvt->standardSel = 0;
+		}
+	
+		hidBuff[0] = HID_REPORTID_KEY_STANDARD;		// standard key send
+		hidBuff[1] = pEvt->standardSel;
+		if (g_variable.g24_currentState == CHANGE_TO_24G_CONNECTED)
+			hidBuff[2] = m_24g_led_flag;
+		else
+			hidBuff[2] = 0;
+
+		standard_key_release_flag = 0;
+		if(!fast_connect_flag)
+		{
+			if (pEvt->ksPool[0] == HID_KEY_FN)
+				xmemcpy(&hidBuff[3], &pEvt->ksPool[1], 5);
+			else
+				xmemcpy(&hidBuff[3], pEvt->ksPool, 6);
+			
+			for(i = 3; i<9;i++)
+			{
+				if (hidBuff[i] == HID_KEY_FN)
+					hidBuff[i] = 0;
+			}
+		}
+		else	
+			xmemcpy(&hidBuff[3], pEvt->ksPool, 6);
+		IPC_TxHidData(hidBuff, 9);
+		bitkey[0] = HID_REPORTID_GAME;
+		IPC_TxHidData(bitkey, 15);
+	}
+	return;
+}
+/////////////////////////////////////////////////////////////////
+
+
+void kb_combination_key_press(byte press_state,byte special_key,byte standrad_key)
+{
+	g_variable.key_combination_ctrl = special_key;	
+	g_variable.key_combination_keyvalue = standrad_key;
+
+	if(press_state & 1)
+	{
+		if(g_variable.key_combination_step == CAMBINATION_KEY_COMPLETE) 
+			g_variable.key_combination_step = CAMBINATION_KEY_HOLD;
+		else	
+			g_variable.key_combination_step = CAMBINATION_KEY_PRESS;
+	}
+	else
+	{
+		g_variable.key_combination_step = CAMBINATION_KEY_WAIT_RELEASE;
+	}
+
+}
+
+
+byte key_fn_function(byte state ,byte key_value)
+{
+	byte temp = 0;
+
+	if(state & 1)
+		g_variable.one_key_press_wait_release_timer = 0;
+
+	temp = key_value;
+	if(fn_flag == 1)			// Fn lock
+	{
+		
+		switch (key_value)
+		{ 
+			case HID_KEY_ESC:
+				temp = HID_KEY_TILDE;
+				break;
+			case HID_KEY_1:
+				temp = HID_KEY_F1;
+				break;
+			case HID_KEY_2:
+				temp = HID_KEY_F2;
+				break;
+			case HID_KEY_3:
+				temp = HID_KEY_F3;
+				break;	
+			case HID_KEY_4:
+				temp = HID_KEY_F4;
+				break;
+			case HID_KEY_5:
+				temp = HID_KEY_F5;
+				break;
+			case HID_KEY_6:
+				temp = HID_KEY_F6;
+				break;
+			case HID_KEY_7:
+				temp = HID_KEY_F7;
+				break;
+			case HID_KEY_8:
+				temp = HID_KEY_F8;
+				break;
+			case HID_KEY_9:
+				temp = HID_KEY_F9;
+				break;
+			case HID_KEY_0:
+				temp = HID_KEY_F10;
+				break;
+			case HID_KEY_MINUS:
+				temp = HID_KEY_F11;
+				break;
+			case HID_KEY_EQUAL:
+				temp = HID_KEY_F12;
+				break;
+
+			case HID_KEY_BACKSPACE:	// switch
+				if(state & 1)
+				{
+					if(g_variable.backlight_level < BACKLIGHT_OFF)
+						g_variable.backlight_level++;
+					else
+						g_variable.backlight_level = BACKLIGHT_ON;
+					g_variable.backlight_step = BACLIGHT_ON_STEP_1;	
+				}
+				temp = HID_KEY_NULL;
+				break;
+			case HID_KEY_RIGHT_BRACKET:
+				if(state & 1)
+				{
+					if(g_variable.backlight_duty_level < BACKLIGHT_DUTY_LEVEL_100)
+						g_variable.backlight_duty_level++;
+					g_variable.backlight_step = BACLIGHT_ON_STEP_1;	
+				}
+				temp = HID_KEY_NULL;
+				break;
+			case HID_KEY_LEFT_BRACKET:
+				if(state & 1)
+				{
+					if(g_variable.backlight_duty_level != BACKLIGHT_DUTY_LEVEL_00)
+						g_variable.backlight_duty_level--;
+				}
+				temp = HID_KEY_NULL;
+				break;
+			case HID_KEY_QUOTE:			//++
+				if(state & 1)
+				{
+					if(g_variable.backlight_speed > BACKLIGHT_SPEED_LEVEL_100MS)
+						g_variable.backlight_speed--;
+				}
+				temp = HID_KEY_NULL;
+				break;	
+			case HID_KEY_SEMICOLON:		// --
+				if(state & 1)
+				{
+					if(g_variable.backlight_speed < BACKLIGHT_SPEED_LEVEL_500MS)
+						g_variable.backlight_speed++;
+				}
+				temp = HID_KEY_NULL;
+				break;
+			case HID_KEY_LEFT_GUI:
+			case HID_KEY_RIGHT_GUI:
+				if(state & 1)
+					g_variable.system_win_app_lock_flag = ~g_variable.system_win_app_lock_flag;
+				temp = HID_KEY_NULL;
+				break;
+			case HID_KEY_A:
+				temp = HID_MULTIKEY_PALY;
+				break;
+			case HID_KEY_S:
+				temp = HID_MULTIKEY_PRE_TRACK;
+				break;
+			case HID_KEY_D:
+				temp = HID_MULTIKEY_NEXT_TRACK;
+				break;	
+			case HID_KEY_F:
+				temp = HID_MULTIKEY_VOL_DOWN;
+				break;
+			case HID_KEY_G:
+				temp = HID_MULTIKEY_VOL_UP;
+				break;
+			case HID_KEY_H:
+				temp = HID_MULTIKEY_MUTE;
+				break;
+			case HID_KEY_U:
+				temp = HID_KEY_PRINT_SCREEN;
+				break;
+			case HID_KEY_I:
+				temp = HID_KEY_SCROLL_LOCK;
+				break;
+			case HID_KEY_O:
+				temp = HID_KEY_PAUSE;
+				break;
+			case HID_KEY_J:
+				temp = HID_KEY_INSERT;
+				break;
+			case HID_KEY_K:
+				temp = HID_KEY_HOME;
+				break;
+			case HID_KEY_L:
+				temp = HID_KEY_PAGE_UP;
+				break;
+			case HID_KEY_M:
+				temp = HID_KEY_DELETE;
+				break;
+			case HID_KEY_LESS_THAN:
+				temp = HID_KEY_END;
+				break;
+			case HID_KEY_GREAT_THAN:
+				temp = HID_KEY_PAGE_DOWN;
+				break;
+			case HID_KEY_SLASH:
+				temp = HID_KEY_UP_ARROW;
+				break;
+			case HID_KEY_RIGHT_CTL:
+				temp = HID_KEY_RIGHT_ARROW;
+				break;
+			case HID_KEY_RIGHT_ALT:
+				temp = HID_KEY_LEFT_ARROW;
+				break;				
+			case HID_KEY_APP:
+				temp = HID_KEY_DOWN_ARROW;
+				break;	
+			default :
+				break;
+		}
+	}
+
+	if(g_variable.system_win_app_lock_flag)
+	{
+		if((temp == HID_KEY_APP) || (temp == HID_KEY_LEFT_GUI) ||(temp == HID_KEY_RIGHT_GUI))
+			temp = HID_KEY_NULL;
+	}
+
+
+
+	return temp;
+}
+
+
+
+void kb_multikey_setup(tKSEVENT *pEvt)
+{
+	byte i = 0;
+	
+	for (i = 0;i < 6;i++)
+	{		
+		if ((pEvt->ksPool[i] &0xF0) == 0xf0 
+			|| (pEvt->ksPool[i] &0xD0) == 0xD0)
+		{
+			
+			if (pEvt->ksPool[i] ==  HID_MULTIKEY_MEDIA) //media select
+			{
+				kb_set_multikey(0x0183); 
+			}
+			else
+			if (pEvt->ksPool[i] ==  HID_MULTIKEY_PALY) //play / pause
+			{ 
+				kb_set_multikey(0x00cd);
+			}
+			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_STOP)  //stop
+			{
+				kb_set_multikey(0x00b7);
+			}	
+			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_PRE_TRACK) //pre Track
+			{
+				kb_set_multikey(0x00b6);
+			}
+			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_NEXT_TRACK) //next Track
+			{
+				kb_set_multikey(0x00b5);
+			}
+			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_VOL_DOWN) //vol-
+			{
+				kb_set_multikey(0x00ea);
+			}
+			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_VOL_UP) //vol+
+			{
+				kb_set_multikey(0x00e9);
+			}
+			else	if (pEvt->ksPool[i] ==  HID_MULTIKEY_MUTE) //mute
+			{
+				kb_set_multikey(0x00e2);
+			}
+			else	if (pEvt->ksPool[i] ==  HID_MULTIKEY_MY_COMPUTER) 
+			{
+				kb_set_multikey(0x0194);
+			}	
+			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_MAIL)  //mail
+			{
+				kb_set_multikey(0x018a);//mail
+			}
+			else	if (pEvt->ksPool[i] ==  HID_MULTIKEY_CALCULATOR) //calculator
+			{
+				kb_set_multikey(0x0192);
+			}
+			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_AC_FAVORITES) 
+			{
+				kb_set_multikey(0x022a);//www Favorites
+			}
+			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_AC_FORWARD)  
+			{
+				kb_set_multikey(0x0225);
+			}
+			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_AC_STOP)  //www Stop
+			{
+				kb_set_multikey(0x0226);
+			}
+			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_AC_BACK)  
+			{
+				kb_set_multikey(0x0224);
+			}
+			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_AC_REFRESH) //www refresh
+			{
+				kb_set_multikey(0x0227);
+			}	
+			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_AC_SEARCH)  //www search
+			{
+				kb_set_multikey(0x0221);
+			}
+			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_AC_HOME)
+			{
+				kb_set_multikey(0x0223);
+			} 	
+			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_LIGHT_DOWN)
+			{
+				kb_set_multikey(0x0070);
+			}
+			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_LIGHT_UP)
+			{
+				kb_set_multikey(0x006f);
+			}
+		#ifdef SYSTEM_CONTROL_ENABLE
+		      	else if (pEvt->ksPool[i] ==  HID_SYSTEM_KEY_POWER_DOWN)
+		      	{
+		        	kb_set_systemkey(0x01);
+		      	}
+		      	else if (pEvt->ksPool[i] ==  HID_SYSTEM_KEY_SLEEP)
+		      	{
+		        	kb_set_systemkey(0x02);
+		      	}
+		      	else if (pEvt->ksPool[i] ==  HID_SYSTEM_KEY_WAKE_UP)
+		      	{
+		        	kb_set_systemkey(0x04);
+		      	}
+		#endif
+			
+			if(mult_key_status == KEY_WAIT_RELEASE)
+			{
+				mult_key_value = pEvt->ksPool[i];
+				pEvt->ksPool[i] = 0;
+			}
+		}
+	}
+}
+
Index: kbhid.h
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/kbhid.h	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/kbhid.h	(working copy)
@@ -0,0 +1,296 @@
+#ifndef _KB_KEY_HID_
+#define _KB_KEY_HID_
+
+
+    /// KB USB usages
+enum UsbUsage {
+        HID_KEY_A 	= 0x04,
+        HID_KEY_B 	= 0x05,
+        HID_KEY_C 	= 0x06,
+        HID_KEY_D 	= 0x07,
+        HID_KEY_E 	= 0x08,
+        HID_KEY_F 	= 0x09,
+        HID_KEY_G 	= 0x0a,
+        HID_KEY_H 	= 0x0b,
+        HID_KEY_I  	= 0x0c,
+        HID_KEY_J 	= 0x0d,
+        HID_KEY_K 	= 0x0e,
+        HID_KEY_L 	= 0x0f,
+        HID_KEY_M 	= 0x10,
+        HID_KEY_N 	= 0x11,
+        HID_KEY_O	= 0x12,
+        HID_KEY_P	= 0x13,
+        HID_KEY_Q	= 0x14,
+        HID_KEY_R	= 0x15,
+        HID_KEY_S	= 0x16,
+        HID_KEY_T	= 0x17,
+        HID_KEY_U	= 0x18,
+        HID_KEY_V	= 0x19,
+        HID_KEY_W 	= 0x1a,
+        HID_KEY_X	= 0x1b,
+        HID_KEY_Y	= 0x1c,
+        HID_KEY_Z	= 0x1d,
+    
+        HID_KEY_1	= 0x1e,
+        HID_KEY_2	= 0x1f,
+        HID_KEY_3	= 0x20,
+        HID_KEY_4	= 0x21,
+        HID_KEY_5	= 0x22,
+        HID_KEY_6	= 0x23,
+        HID_KEY_7	= 0x24,
+        HID_KEY_8	= 0x25,
+        HID_KEY_9	= 0x26,
+        HID_KEY_0	= 0x27,
+    
+        HID_KEY_ENTER 				= 0x28,
+        HID_KEY_ESC				= 0x29,
+        HID_KEY_BACKSPACE		= 0x2a,
+        HID_KEY_TAB				= 0x2b,
+        HID_KEY_SPACE 				= 0x2c,
+        HID_KEY_MINUS				= 0x2d,		// -_
+        HID_KEY_EQUAL				= 0x2e,		// =+
+        HID_KEY_LEFT_BRACKET 		= 0x2f,		// [{
+        HID_KEY_RIGHT_BRACKET 	= 0x30,		// ]}
+        HID_KEY_BACK_SLASH 		= 0x31,		// \|
+    
+        HID_KEY_K42				= 0x32,
+        HID_KEY_SEMICOLON			= 0x33,		// ;:
+        HID_KEY_QUOTE				= 0x34,		// ' "
+        HID_KEY_TILDE				= 0x35,		// `~
+        HID_KEY_LESS_THAN			= 0x36,		// ,<
+        HID_KEY_GREAT_THAN		= 0x37,		// .>
+        HID_KEY_SLASH				= 0x38,		// /?
+        HID_KEY_CAPS_LOCK			= 0x39,
+
+        HID_KEY_F1		= 0x3a,
+        HID_KEY_F2		= 0x3b,
+        HID_KEY_F3		= 0x3c,
+        HID_KEY_F4		= 0x3d,
+        HID_KEY_F5		= 0x3e,
+        HID_KEY_F6		= 0x3f,
+        HID_KEY_F7		= 0x40,
+        HID_KEY_F8		= 0x41,
+        HID_KEY_F9		= 0x42,
+        HID_KEY_F10	= 0x43,
+        HID_KEY_F11	= 0x44,
+        HID_KEY_F12	= 0x45,
+    
+        HID_KEY_PRINT_SCREEN	= 0x46,
+        HID_KEY_SCROLL_LOCK	= 0x47,
+        HID_KEY_PAUSE			= 0x48,
+        HID_KEY_INSERT			= 0x49,
+        HID_KEY_HOME			= 0x4a,
+        HID_KEY_PAGE_UP		= 0x4b,
+        HID_KEY_DELETE		= 0x4c,
+        HID_KEY_END			= 0x4d,
+        HID_KEY_PAGE_DOWN	= 0x4e,
+        
+        HID_KEY_RIGHT_ARROW	= 0x4f,
+        HID_KEY_LEFT_ARROW	= 0x50,
+        HID_KEY_DOWN_ARROW	= 0x51,
+        HID_KEY_UP_ARROW		= 0x52,
+        
+        HID_KEY_NUM_LOCK		= 0x53,
+        HID_KEY_KP_SLASH		= 0x54,
+        HID_KEY_KP_ASTERISK	= 0x55,
+        HID_KEY_KP_MINUS		= 0x56,
+        HID_KEY_KP_PLUS		= 0x57,
+        HID_KEY_KP_ENTER		= 0x58,
+        HID_KEY_KP_1			= 0x59,
+        HID_KEY_KP_2			= 0x5a,
+        HID_KEY_KP_3			= 0x5b,
+        HID_KEY_KP_4			= 0x5c,
+        HID_KEY_KP_5			= 0x5d,
+        HID_KEY_KP_6			= 0x5e,
+        HID_KEY_KP_7			= 0x5f,
+        HID_KEY_KP_8			= 0x60,
+        HID_KEY_KP_9			= 0x61,
+        HID_KEY_KP_0			= 0x62,
+        HID_KEY_KP_DEL		= 0x63,
+  
+        HID_KEY_K45			= 0x64,
+        HID_KEY_APP			= 0x65,
+        HID_KEY_POWER			= 0x66,
+        HID_KEY_KP_EQUAL		= 0x67,
+        
+        HID_KEY_F13			= 0x68,
+        HID_KEY_F14			= 0x69,
+        HID_KEY_F15			= 0x6A,
+        HID_KEY_F16			= 0x6B,
+        HID_KEY_F17			= 0x6C,
+        HID_KEY_F18			= 0x6D,
+        HID_KEY_F19			= 0x6E,
+        HID_KEY_F20			= 0x6F,
+        HID_KEY_F21			= 0x70,
+        HID_KEY_F22			= 0x71,
+        HID_KEY_F23			= 0x72,
+        HID_KEY_F24			= 0x73,
+        
+        HID_KEY_EXECUTE		= 0x74,
+        HID_KEY_HELP			= 0x75,
+        HID_KEY_MENU			= 0x76,
+        HID_KEY_SELECT		= 0x77,
+    
+        HID_KEY_STOP			= 0x78,
+        HID_KEY_AGAIN			= 0x79,
+        HID_KEY_UNDO			= 0x7a,
+        HID_KEY_CUT			= 0x7b,
+        HID_KEY_COPY			= 0x7c,
+        HID_KEY_PASTE			= 0x7d,
+        HID_KEY_FIND			= 0x7e,
+        HID_KEY_MUTE			= 0x7f,
+        HID_KEY_VOL_UP		= 0x80,
+        HID_KEY_VOL_DOWN		= 0x81,
+    
+        HID_KEY_LOCKING_CAPS_LOCK		= 0x82,
+        HID_KEY_LOCKING_NUM_LOCK		= 0x83,
+        HID_KEY_LOCKING_SCROLL_LOCK		= 0x84,
+        HID_KEY_KP_COMMA					= 0x85,
+        HID_KEY_KP_EQUAL_AS400			= 0x86,
+        
+        HID_KEY_K56				= 0x87,
+        HID_KEY_K133  				= 0x88,
+        HID_KEY_K14  				= 0x89,
+        HID_KEY_K132  				= 0x8a,
+        HID_KEY_K131 				= 0x8b,
+    
+        HID_KEY_INTL_6				= 0x8c,
+        HID_KEY_INTL_7				= 0x8d,
+        HID_KEY_INTL_8				= 0x8e,
+        HID_KEY_INTL_9				= 0x8f,
+        HID_KEY_KR_R  				= 0x90,
+        HID_KEY_KR_L  				= 0x91,
+        HID_KEY_LANG_3			= 0x92,
+        HID_KEY_LANG_4			= 0x93,
+        HID_KEY_LANG_5			= 0x94,
+        HID_KEY_LANG_6			= 0x95,
+    
+        HID_KEY_LANG_7			= 0x96,
+        HID_KEY_LANG_8			= 0x97,
+        HID_KEY_LANG_9			= 0x98,
+        HID_KEY_ALT_ERASE			= 0x99,
+        HID_KEY_SYS_REQ			= 0x9a,
+        HID_KEY_CANCEL			= 0x9b,
+        HID_KEY_CLEAR				= 0x9c,
+        HID_KEY_PRIOR				= 0x9d,
+        HID_KEY_RETURN			= 0x9e,
+        HID_KEY_SEPARATOR		= 0x9f,
+    
+        HID_KEY_OUT				= 0xa0,
+        HID_KEY_OPER				= 0xa1,
+        HID_KEY_CLEAR_AGAIN		= 0xa2,
+        HID_KEY_CRSEL				= 0xa3,
+        HID_KEY_EXSEL				= 0xa4,
+    
+        // Reserved 0xa5~0xaf
+        HID_KEY_KP_00						= 0xb0,
+        HID_KEY_KP_000						= 0xb1,
+        HID_KEY_THOUSANDS_SEPERATOR	= 0xb2,
+        HID_KEY_DECIMAL_SEPERATOR		= 0xb3,
+        HID_KEY_CURRENCY_UNIT			= 0xb4,
+        HID_KEY_CURRENCY_SUB_UNIT		= 0xb5,
+        HID_KEY_KP_LEFT_PAREN			= 0xb6,
+        HID_KEY_KP_RIGHT_PAREN			= 0xb7,
+        HID_KEY_KP_LEFT_CURLY_BRACE		= 0xb8,
+        HID_KEY_KP_RIGHT_CURLY_BRACE	= 0xb9,
+        HID_KEY_KP_TAB					= 0xba,
+        HID_KEY_KP_BACKSPACE				= 0xbb,
+        HID_KEY_KP_A						= 0xbc,
+        HID_KEY_KP_B						= 0xbd,
+        HID_KEY_KP_C						= 0xbe,
+        HID_KEY_KP_D						= 0xbf,
+        HID_KEY_KP_E						= 0xc0,
+        HID_KEY_KP_F						= 0xc1,
+        HID_KEY_KP_XOR					= 0xc2,
+        HID_KEY_KP_CARET					= 0xc3,
+        HID_KEY_KP_PERCENT				= 0xc4,
+        HID_KEY_KP_LESS_THAN				= 0xc5,
+        HID_KEY_KP_GREATER_THAN			= 0xc6,
+        HID_KEY_KP_AMPERSAND				= 0xc7,
+    
+        HID_KEY_KP_DOUBLE_AMPERSAND	= 0xc8,
+        HID_KEY_KP_VERTICAL_BAR			= 0xc9,
+        HID_KEY_KP_DOUBLE_VERTICAL_BAR	= 0xca,
+        HID_KEY_KP_COLON					= 0xcb,
+        HID_KEY_KP_HASH					= 0xcc,
+        HID_KEY_KP_SPACE					= 0xcd,
+        HID_KEY_KP_AT						= 0xce,
+        HID_KEY_KP_EXCLAMATION			= 0xcf,
+        HID_KEY_KP_MEM_STORE			= 0xd0,
+        HID_KEY_KP_MEM_RECALL			= 0xd1,
+    
+        HID_KEY_KP_MEM_CLEAR				= 0xd2,
+        HID_KEY_KP_MEM_ADD				= 0xd3,
+        HID_KEY_KP_MEM_SUBTRACT			= 0xd4,
+        HID_KEY_KP_MEM_MULTIPLY			= 0xd5,
+        HID_KEY_KP_MEM_DIVIDE				= 0xd6,
+        HID_KEY_KP_PLUS_MINUS				= 0xd7,
+        HID_KEY_KP_CLEAR					= 0xd8,
+        HID_KEY_KP_CLEAR_ENTRY			= 0xd9,
+        HID_KEY_KP_BINARY					= 0xda,
+        HID_KEY_KP_OCTAL					= 0xdb,
+    
+        HID_KEY_KP_DECIMAL				= 0xdc,
+        HID_KEY_KP_HEX					= 0xdd,
+        // 0xde~0xdf reserved
+        
+        HID_KEY_LEFT_CTL			= 0xe0,
+        HID_KEY_LEFT_SHIFT			= 0xe1,
+        HID_KEY_LEFT_ALT 			= 0xe2,
+        HID_KEY_LEFT_GUI 			= 0xe3,
+        HID_KEY_RIGHT_CTL			= 0xe4,
+        HID_KEY_RIGHT_SHIFT		= 0xe5,
+        HID_KEY_RIGHT_ALT			= 0xe6,
+        HID_KEY_RIGHT_GUI			= 0xe7,
+        // 0xe8~0xff reserved
+        HID_KEY_FN 					= 0x7f,
+        HID_KEY_PB					= 0xef,
+        HID_KEY_NULL 				= 0x00,
+};
+
+enum multKey{
+//mult key
+	HID_MULTIKEY_MEDIA		= 0xF1,
+ 	HID_MULTIKEY_PALY		= 0xF2,
+ 	HID_MULTIKEY_STOP		= 0xF3,
+ 	HID_MULTIKEY_PRE_TRACK	= 0xF4,
+ 	HID_MULTIKEY_NEXT_TRACK	= 0xF5,
+ 	HID_MULTIKEY_VOL_DOWN	= 0xF6,
+ 	HID_MULTIKEY_VOL_UP		= 0xF7,
+ 	HID_MULTIKEY_MUTE			= 0xF8,
+ 	HID_MULTIKEY_MY_COMPUTER 	= 0xF9,
+ 	HID_MULTIKEY_MAIL			= 0xFA,
+ 	HID_MULTIKEY_CALCULATOR	= 0xFB,
+
+
+ 	HID_MULTIKEY_AC_FAVORITES	= 0xD0,
+ 	HID_MULTIKEY_AC_FORWARD	= 0xD1,
+ 	HID_MULTIKEY_AC_BACK		= 0xD2,
+ 	HID_MULTIKEY_AC_STOP		= 0xD3,
+ 	HID_MULTIKEY_AC_REFRESH	= 0xD4,
+ 	HID_MULTIKEY_AC_SEARCH	= 0xD5,
+ 	HID_MULTIKEY_AC_HOME		= 0xD6,
+ 	HID_MULTIKEY_LIGHT_DOWN	= 0xD7,
+ 	HID_MULTIKEY_LIGHT_UP		= 0xD8,
+	
+	HID_SYSTEM_KEY_POWER_DOWN 	= 0xDD,
+	HID_SYSTEM_KEY_SLEEP 			= 0xDE,
+	HID_SYSTEM_KEY_WAKE_UP		= 0xDF
+};
+
+enum hidReportId{
+	HID_REPORTID_KEY_STANDARD = 0x01,
+	HID_REPORTID_MEDIA_KEY = 0x02,
+	HID_REPORTID_SYSTEM_CTRL = 0x03,
+	HID_REPORTID_BATTERY = 0x04,
+	HID_REPORTID_FAST_CONN_NAME = 0x05,
+	HID_REPORTID_MOUSE = 0x06,
+	HID_REPORTID_GAME = 0x08
+};
+
+enum hidReportLen{
+	HID_REPORTLEN_1 = 0x09,
+	HID_REPORTLEN_2 = 0x05
+};
+
+#endif
Index: keyscan.h
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/keyscan.h	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/keyscan.h	(working copy)
@@ -0,0 +1,61 @@
+/*
+ * 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 "common.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 {
+	byte standardSel;
+	byte 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: keyscan.c
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/keyscan.c	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/keyscan.c	(working copy)
@@ -0,0 +1,352 @@
+#include "keyscan.h"
+
+
+extern code byte col[KB_KSCAN_COL_NUM+1];
+extern code byte  ksMap[KS_KEY_MAP_LEN];
+
+
+#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)
+
+tKSEVENT xdata ksEvtPool;
+
+#define MAX(a,b) ((a)>(b)?(a):(b))
+
+static byte bit_count(byte v)
+{
+	unsigned char c;
+	for (c = 0; v; c++) {
+    	v &= v - 1;
+    }
+    return c;
+}
+
+
+//byte col[] = {25,26};
+static void keyIn(byte key)
+{
+	byte i = 0,full_flag = 0,full=0,temp_chu=0;
+
+	if(key >= HID_KEY_LEFT_CTL && key <= HID_KEY_RIGHT_GUI)
+	{
+		ksEvtPool.standardSel  |=  0x01 << (key & 0x07);
+		return;
+	}
+
+	for(i=0;i<6;i++)
+	{
+		if(ksEvtPool.ksPool[i] != 0)
+		{
+			full_flag++;
+		}
+	}
+
+
+	//special key
+
+	for (i=0 ; i<KS_BUFF_POLL_LEN ; i++) 
+	{
+		if (ksEvtPool.ksPool[i] == key && full_flag==6)
+		{
+			full=1;
+			break;
+		}
+		if (ksEvtPool.ksPool[i] == 0) 
+		{
+			if(mult_key_value != key)
+				ksEvtPool.ksPool[i] = key;
+			break;
+		}
+	}
+
+
+	if(full_flag == 6 && full ==0)
+	{
+		if(key <= 112)
+		{
+			temp_chu = (key)/8;
+			bitkey[temp_chu+1]  |=  (1<<((key)%8)); 
+		}
+	}
+	
+}
+
+static void keyOut(byte key)
+{
+	byte i = 0,full_flag=0, temp_chu=0;
+	byte found = 0;
+
+	if ((key &0xF0) == 0xf0 || (key &0xD0) == 0xD0)
+	{
+		if(mult_key_status == KEY_WAIT_RELEASE)
+		{
+			mult_key_status = KEY_RELEASE;
+		}
+	}
+	else
+		standard_key_release_flag = 1;
+
+	if(key >= HID_KEY_LEFT_CTL && key <= HID_KEY_RIGHT_GUI)
+	{
+		ksEvtPool.standardSel  &= ~(0x01 << (key & 0x07));
+		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;
+			}
+		}
+	}
+
+
+	if(key <= 112)
+	{
+		temp_chu = (key)/8;
+		bitkey[temp_chu+1]  &=  ~(1<<((key)%8)); 
+	}
+	
+}
+
+static void ksRawInitialize()
+{
+	byte i = 0;
+	
+	for (i=0; i<8; i++) {
+		GPIO_SetInput(i, 0);
+	}
+}
+
+static void ksColInitialize()
+{
+	byte 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()
+{
+	byte i = 0;
+	byte temp = 0;
+	byte tgroup = 0;
+	byte 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;
+	}
+	
+	GPIO_fillpd();
+	
+	temp = REG_GPIO_IN(0);
+
+	if(long_press_flag)
+	{
+		GPIO_SetWakeupByCurrentState(0);
+		GPIO_SetWakeupByCurrentState(1);
+		GPIO_SetWakeupByCurrentState(2);
+		GPIO_SetWakeupByCurrentState(3);
+		GPIO_SetWakeupByCurrentState(4);
+		GPIO_SetWakeupByCurrentState(5);
+		GPIO_SetWakeupByCurrentState(6);
+		GPIO_SetWakeupByCurrentState(7);
+	}
+	else
+	{
+		YC_GPIOWakeupL[0] = temp;
+		YC_GPIOWakeupH[0] = ~temp;
+	}
+
+}
+
+
+void KS_ScanMatrix()
+{
+	byte i = 0;
+	byte j = 0;
+	byte tgroup = 0;
+	byte tgpionum = 0;
+	byte temp = 0;
+	byte check = 0;
+	for (i=0; col[i]!=0; i++) {
+		tgroup = col[i]  >> 3;
+		tgpionum = 1 << (col[i] & 7);
+		GET_RAW_KEY_SEL(ksSelMapCurr[i], tgroup, tgpionum);
+	}
+
+	for (i=0; col[i]!=0; i++) {
+		tgroup = col[i]  >> 3;
+		tgpionum = 1 << (col[i] & 7);
+		GET_RAW_KEY_SEL(ksSelMapCheck[i], tgroup, tgpionum);
+	}
+
+	for (i=0; col[i]!=0; i++) {
+		if (ksSelMapCheck[i]!=ksSelMapCurr[i]) {
+			ksSelMapCurr[i] &= ksSelMapCheck[i];
+		}
+	}
+}
+
+byte array_is_empty(byte * str1,byte len)
+{
+	byte i;
+	for (i=0;i < len;i++)
+	{
+		if (str1[i] != 0)
+			return 0x00;
+	}
+	return 0x01;
+}
+
+
+tKSEVENT *KS_GetCurrentEvt()
+{
+	//
+	byte i = 0;
+	byte j = 0;
+	byte k = 0;
+	byte temp = 0;
+	byte flag = 0;
+	byte offset = 0;
+	byte state = 0;
+	byte keyCounttemp = 0;
+	byte key_value_temp = 0;
+	byte ghost = 0;
+	byte rawCount = 0;
+	
+	KS_ScanMatrix();
+
+	if (compare_str(ksSelMapCurr,ksSelMapCheck,KB_KSCAN_COL_NUM) 
+		&& !array_is_empty(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 = ksSelMapCurr[i];
+		rawCount = bit_count(temp);
+		if(rawCount >= 2)		// col[i] has more than two key press
+		{
+			for(j=0 ; j<8 ;j++)
+			{
+				if(temp & (1<<j))	// Ci_Rj press
+				{
+					for(k=0 ; col[k]!=0; k++)
+					{
+						if(k!= i)
+						{
+							if(ksSelMapCurr[k] & (1<<j))	// R line has another key press
+							{
+								ghost = 1;
+								break;
+							}	
+						}
+					}
+				}
+			}
+		}
+		
+		if (temp!=0)
+		{
+			keyCounttemp += bit_count(temp);
+		}
+	}
+	keyCount = keyCounttemp;
+	
+	for (i=0; col[i]!=0; i++)
+	{
+		temp = ksSelMapCurr[i] ^ ksSelMapOld[i];
+		state = ksSelMapCurr[i];
+		if (temp == 0) 
+		{
+			continue;
+		}
+		else 
+		{
+
+			if (ghost) 
+				return NULL;
+			ksSelMapOld[i] = ksSelMapCurr[i];
+			for (j = 0 ; j<8 ; j++) 
+			{
+				if (temp&1)
+				{
+					offset = i<<3 |j;
+					key_value_temp = key_fn_function(state,ksMap[offset]);
+					if (state & 1)
+					{
+						keyIn(key_value_temp);
+					}
+					else
+					{
+						keyOut(key_value_temp);
+					}
+				}
+				temp = temp >>1;
+				state = state>>1;
+			}
+			flag = 1;
+		}
+	}
+	
+	if((mult_key_status == KEY_RELEASE) && (standard_key_release_flag == 1))
+	{
+		standard_key_release_flag = 2;		//media key and standard key  release the same time
+	}
+
+	
+	if (flag || standard_key_release_flag == 2) 
+	{
+		return &ksEvtPool;
+	}
+	else
+	{
+		return NULL;
+	}
+	
+
+}
+
Index: led.h
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/led.h	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/led.h	(working copy)
@@ -0,0 +1,22 @@
+#ifndef _LED_H
+#define _LED_H
+#include "common.h"
+
+#define LED_ON 1
+#define LED_OFF 0
+
+#define LED_ON_0  	0
+#define LED_OFF_1 	1
+
+
+void LED_all_shutdown();
+void LED_device_line_control(byte line1_status,byte line2_status,byte line3_status,byte line4_status,byte line5_status);
+void backlight_led_process();
+void LED_handle();
+void LED_device_poweron();
+void LED_device_poweroff();
+void LED_backlight_breath();
+
+#endif /* YC_LED_H */
+
+
Index: output/FW
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: output/FW
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: led.c
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/led.c	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/led.c	(working copy)
@@ -0,0 +1,345 @@
+#include "led.h"
+
+
+void LED_all_shutdown()
+{
+	GPIO_SetOutput(CAPS_LED_GPIO,LED_OFF_1);
+	GPIO_SetOutput(WIN_LOCK_LED_GPIO,LED_OFF_1);
+	GPIO_SetOutput(LOWPOWER_LED_GPIO, LED_OFF_1);
+	LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);	
+}
+
+
+void LED_device_line_control(byte line1_status,byte line2_status,byte line3_status,byte line4_status,byte line5_status)
+{
+	GPIO_SetOutput(LINE1_LED_GPIO,line1_status);
+	GPIO_SetOutput(LINE2_LED_GPIO,line2_status);
+	GPIO_SetOutput(LINE3_LED_GPIO,line3_status);
+	GPIO_SetOutput(LINE4_LED_GPIO,line4_status);
+	GPIO_SetOutput(LINE5_LED_GPIO,line5_status);
+}
+
+
+void LED_handle()
+{
+	if (power_on_flag != 2)
+		return;
+
+	if(g_variable.system_win_app_lock_flag)
+		GPIO_SetOutput(WIN_LOCK_LED_GPIO,LED_OFF_1);
+	else
+		GPIO_SetOutput(WIN_LOCK_LED_GPIO,LED_ON_0);
+
+
+	if(!g_variable.pairing_timeout && !g_variable.pairing_g24_timeout)
+	{
+		if(!g_variable.g24_long_sleep_flag)
+			LED_backlight_breath();
+	
+		//low battery LED process
+		if (g_variable.battery_status == BAT_STATUS_SHUT_DOWN)
+		{
+			System_long_sleep();
+		}
+		else if (g_variable.battery_status == BAT_STATUS_LOW)
+		{
+			if (g_variable.battery_low_led_flash_flag == 0)
+			{
+				g_variable.battery_low_led_flash_interval = LOW_BATTERY_FLASH_INTERVAL;
+				g_variable.battery_low_led_flash_flag = 1;
+			}
+		}
+		else
+		{
+			if (g_variable.battery_low_led_flash_flag == 1)
+			{
+				g_variable.battery_low_led_flash_flag = 0;
+				g_variable.battery_low_led_flash_interval = 0;
+				GPIO_Setout(LOWPOWER_LED_GPIO, LED_OFF_1);
+			}
+		}
+
+		//capslock  numlock  scrolllock LED process
+		if (YC_check_is_connected())
+		{
+			//if (g_variable.sleepTimer < KB_NUM_CAPS_LED_ON_TIMER)
+			{			
+				if(m_caps_num_lock & KB_PC_KEYSEL_CAPSLOCK)
+				{
+					GPIO_Setout(CAPS_LED_GPIO, LED_ON_0);
+				}
+				else 
+				{
+					GPIO_Setout(CAPS_LED_GPIO, LED_OFF_1);
+				}
+			}
+			//else
+			//{
+			//	GPIO_Setout(CAPS_LED_GPIO, LED_OFF_1);
+			//}
+		}
+		else
+		{
+			GPIO_Setout(CAPS_LED_GPIO, LED_OFF_1);
+		}
+	}
+	else
+	{
+		GPIO_Setout(CAPS_LED_GPIO, LED_OFF_1);
+	}
+
+}
+
+
+
+void LED_backlight_breath()
+{
+#ifdef PWM_ENABLE
+	if(m_customize_timer_last != m_customize_timer)
+	{
+		m_customize_timer_last = m_customize_timer;
+		if((g_variable.battery_status != BAT_STATUS_NONE))
+		{
+			YC_PWM_disable();
+			LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+			return;
+		}
+
+		
+		if(g_variable.backlight_level == BACKLIGHT_BREATH)
+		{
+			if(g_variable.backlight_breathe_flag)
+			{
+				if(g_variable.backlight_breathe_step < 85)
+					g_variable.backlight_breathe_step++;
+				else
+				{
+					g_variable.backlight_breathe_flag = 0;
+				}
+			}
+			else
+			{
+				if(g_variable.backlight_breathe_step > 5)
+					g_variable.backlight_breathe_step--;
+				else
+				{
+					g_variable.backlight_breathe_flag = 1;
+				}
+
+			}
+			m_lpm_mode = 0;
+			g_variable.pwm_lpm_mode_flag = 1;
+
+			YC_PWM_init();
+			REG_PWM_PCOUNT(0) = g_variable.backlight_breathe_step;
+			REG_PWM_NCOUNT(0) = (100 - g_variable.backlight_breathe_step );
+		
+			REG_PWM_ENABLE |= 0x40;
+		}
+		else
+		{
+			YC_PWM_set_duty(g_variable.backlight_duty_level);	
+		}
+	}
+#endif	
+
+
+}
+
+
+void backlight_led_process()
+{
+	g_variable.backlight_switch_timer++;
+	if((g_variable.backlight_switch_timer % g_variable.backlight_speed) == 0)
+	{
+		switch(g_variable.backlight_level)
+		{
+			case BACKLIGHT_ON:
+				LED_device_line_control(LED_ON,LED_ON,LED_ON,LED_ON,LED_ON);
+				break;
+			case BACKLIGHT_BREATH:
+				break;
+			case BACKLIGHT_UP_TO_DOWN_ON:	// 1,1+2,1+2+3,1+2+3+4,1+2+3+4+5,0,
+				if(g_variable.backlight_step == BACLIGHT_ON_STEP_1)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_2;
+					LED_device_line_control(LED_ON,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_2)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_3;
+					LED_device_line_control(LED_ON,LED_ON,LED_OFF,LED_OFF,LED_OFF);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_3)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_4;
+					LED_device_line_control(LED_ON,LED_ON,LED_ON,LED_OFF,LED_OFF);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_4)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_5;
+					LED_device_line_control(LED_ON,LED_ON,LED_ON,LED_ON,LED_OFF);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_5)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_6;
+					LED_device_line_control(LED_ON,LED_ON,LED_ON,LED_ON,LED_ON);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_6)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_1;
+					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+				}
+				break;
+			case BACKLIGHT_DOWN_TO_UP_ON:
+				if(g_variable.backlight_step == BACLIGHT_ON_STEP_1)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_2;
+					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_ON);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_2)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_3;
+					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_ON,LED_ON);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_3)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_4;
+					LED_device_line_control(LED_OFF,LED_OFF,LED_ON,LED_ON,LED_ON);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_4)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_5;
+					LED_device_line_control(LED_OFF,LED_ON,LED_ON,LED_ON,LED_ON);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_5)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_6;
+					LED_device_line_control(LED_ON,LED_ON,LED_ON,LED_ON,LED_ON);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_6)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_1;
+					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+				}
+				break;
+			case BACKLIGHT_MIDDLE_TO_OUTSIDE:
+				if(g_variable.backlight_step == BACLIGHT_ON_STEP_1)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_2;
+					LED_device_line_control(LED_OFF,LED_OFF,LED_ON,LED_OFF,LED_OFF);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_2)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_3;
+					LED_device_line_control(LED_OFF,LED_ON,LED_OFF,LED_ON,LED_OFF);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_3)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_4;
+					LED_device_line_control(LED_ON,LED_OFF,LED_OFF,LED_OFF,LED_ON);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_4)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_1;
+					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+				}
+				break;	
+			case BACKLIGHT_OUTSIDE_TO_MIDDLE:
+				if(g_variable.backlight_step == BACLIGHT_ON_STEP_1)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_2;
+					LED_device_line_control(LED_ON,LED_OFF,LED_OFF,LED_OFF,LED_ON);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_2)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_3;
+					LED_device_line_control(LED_OFF,LED_ON,LED_OFF,LED_ON,LED_OFF);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_3)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_4;
+					LED_device_line_control(LED_OFF,LED_OFF,LED_ON,LED_OFF,LED_OFF);					
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_4)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_1;
+					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+				}
+				break;
+			case BACKLIGHT_UP_TO_DOWN_ON_OFF:
+				if(g_variable.backlight_step == BACLIGHT_ON_STEP_1)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_2;
+					LED_device_line_control(LED_ON,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_2)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_3;
+					LED_device_line_control(LED_OFF,LED_ON,LED_OFF,LED_OFF,LED_OFF);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_3)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_4;
+					LED_device_line_control(LED_OFF,LED_OFF,LED_ON,LED_OFF,LED_OFF);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_4)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_5;
+					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_ON,LED_OFF);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_5)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_6;
+					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_ON);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_6)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_1;
+					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+				}
+				break;
+			case BACKLIGHT_DOWN_TO_UP_ON_OFF:
+				if(g_variable.backlight_step == BACLIGHT_ON_STEP_1)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_2;
+					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_ON);					
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_2)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_3;
+					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_ON,LED_OFF);					
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_3)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_4;
+					LED_device_line_control(LED_OFF,LED_OFF,LED_ON,LED_OFF,LED_OFF);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_4)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_5;
+					LED_device_line_control(LED_OFF,LED_ON,LED_OFF,LED_OFF,LED_OFF);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_5)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_6;
+					LED_device_line_control(LED_ON,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+				}
+				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_6)
+				{
+					g_variable.backlight_step = BACLIGHT_ON_STEP_1;
+					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+				}
+				break;
+			case BACKLIGHT_OFF:
+			default:
+				LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+				break;
+				
+
+		}
+	}
+}
+
+
+
Index: output/FW.COD
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/FW.COD	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/FW.COD	(working copy)
@@ -0,0 +1,8986 @@
+LX51 LINKER/LOCATER V4.41                                                               03/24/2022  19:13:33  PAGE 1
+
+
+
+
+
+ASSEMBLER CODE PACKING OF MODULE:  OUTPUT\FW (BLUETOOTH)
+
+
+----- FUNCTION YC_check_is_connected (BEGIN) -----
+ FILE: 'bluetooth.c'
+    4: byte YC_check_is_connected()
+    5: {
+    6: 	if (g_variable.g24_currentState == CHANGE_TO_24G_CONNECTED)
+    7: 	{
+00073D 904CC5            MOV     DPTR,#g_variable+06H
+000740 E0                MOVX    A,@DPTR
+000741 B40303            CJNE    A,#03H,?C0001?BLUETOOTH
+    8: 		return 1;
+    9: 	}
+000744 7F01              MOV     R7,#01H
+000746 22                RET     
+   10: 	return 0;
+000747         ?C0001?BLUETOOTH:
+   11: }
+000747 7F00              MOV     R7,#00H
+   12: 
+000749 22                RET     
+----- FUNCTION YC_check_is_connected (END) -------
+
+
+----- FUNCTION LED_handle (BEGIN) -----
+ FILE: 'led.c'
+   23: void LED_handle()
+   24: {
+   25: 	if (power_on_flag != 2)
+   26: 		return;
+00074A 904DF4            MOV     DPTR,#power_on_flag
+00074D E0                MOVX    A,@DPTR
+00074E 6402              XRL     A,#02H
+000750 6002              JZ      $ + 4H
+000752 E1DD              AJMP    ?C0004?LED
+000754         ?C0003?LED:
+   27: 
+   28: 	if(g_variable.system_win_app_lock_flag)
+000754 904CF9            MOV     DPTR,#g_variable+03AH
+000757 E0                MOVX    A,@DPTR
+000758 6009              JZ      ?C0005?LED
+   29: 		GPIO_SetOutput(WIN_LOCK_LED_GPIO,LED_OFF_1);
+00075A D206              SETB    ?_GPIO_SetOutput?BIT
+00075C 7F1F              MOV     R7,#01FH
+00075E 120B60            LCALL   _GPIO_SetOutput
+000761 8007              SJMP    ?C0006?LED
+000763         ?C0005?LED:
+   30: 	else
+   31: 		GPIO_SetOutput(WIN_LOCK_LED_GPIO,LED_ON_0);
+000763 C206              CLR     ?_GPIO_SetOutput?BIT
+000765 7F1F              MOV     R7,#01FH
+000767 120B60            LCALL   _GPIO_SetOutput
+00076A         ?C0006?LED:
+   32: 
+   33: 
+   34: 	if(!g_variable.pairing_timeout && !g_variable.pairing_g24_timeout)
+00076A 904CE9            MOV     DPTR,#g_variable+02AH
+00076D E0                MOVX    A,@DPTR
+00076E 7067              JNZ     ?C0007?LED
+000770 904CEE            MOV     DPTR,#g_variable+02FH
+000773 E0                MOVX    A,@DPTR
+000774 7061              JNZ     ?C0007?LED
+   35: 	{
+   36: 		if(!g_variable.g24_long_sleep_flag)
+000776 904D05            MOV     DPTR,#g_variable+046H
+000779 E0                MOVX    A,@DPTR
+00077A 7003              JNZ     ?C0008?LED
+   37: 			LED_backlight_breath();
+00077C 12266A            LCALL   LED_backlight_breath
+00077F         ?C0008?LED:
+   38: 	
+   39: 		//low battery LED process
+   40: 		if (g_variable.battery_status == BAT_STATUS_SHUT_DOWN)
+00077F 904CD5            MOV     DPTR,#g_variable+016H
+000782 E0                MOVX    A,@DPTR
+000783 B40205            CJNE    A,#02H,?C0009?LED
+   41: 		{
+   42: 			System_long_sleep();
+000786 120EE7            LCALL   System_long_sleep
+   43: 		}
+000789 802E              SJMP    ?C0010?LED
+00078B         ?C0009?LED:
+   44: 		else if (g_variable.battery_status == BAT_STATUS_LOW)
+00078B 904CD5            MOV     DPTR,#g_variable+016H
+00078E E0                MOVX    A,@DPTR
+00078F B40114            CJNE    A,#01H,?C0011?LED
+   45: 		{
+   46: 			if (g_variable.battery_low_led_flash_flag == 0)
+000792 904CF7            MOV     DPTR,#g_variable+038H
+000795 E0                MOVX    A,@DPTR
+000796 7021              JNZ     ?C0010?LED
+   47: 			{
+   48: 				g_variable.battery_low_led_flash_interval = LOW_BATTERY_FLASH_INTERVAL;
+000798 904CE2            MOV     DPTR,#g_variable+023H
+00079B 7418              MOV     A,#018H
+00079D F0                MOVX    @DPTR,A
+   49: 				g_variable.battery_low_led_flash_flag = 1;
+00079E 904CF7            MOV     DPTR,#g_variable+038H
+0007A1 7401              MOV     A,#01H
+0007A3 F0                MOVX    @DPTR,A
+   50: 			}
+   51: 		}
+0007A4 8013              SJMP    ?C0010?LED
+0007A6         ?C0011?LED:
+   52: 		else
+   53: 		{
+   54: 			if (g_variable.battery_low_led_flash_flag == 1)
+0007A6 904CF7            MOV     DPTR,#g_variable+038H
+0007A9 E0                MOVX    A,@DPTR
+0007AA B4010C            CJNE    A,#01H,?C0010?LED
+   55: 			{
+   56: 				g_variable.battery_low_led_flash_flag = 0;
+0007AD E4                CLR     A
+0007AE F0                MOVX    @DPTR,A
+   57: 				g_variable.battery_low_led_flash_interval = 0;
+0007AF 904CE2            MOV     DPTR,#g_variable+023H
+0007B2 F0                MOVX    @DPTR,A
+   58: 				GPIO_Setout(LOWPOWER_LED_GPIO, LED_OFF_1);
+0007B3 D201              SETB    ?_GPIO_Setout?BIT
+0007B5 7F1C              MOV     R7,#01CH
+0007B7 F1DE              ACALL   _GPIO_Setout
+   59: 			}
+   60: 		}
+0007B9         ?C0010?LED:
+   61: 
+   62: 		//capslock  numlock  scrolllock LED process
+   63: 		if (YC_check_is_connected())
+0007B9 F13D              ACALL   YC_check_is_connected
+0007BB EF                MOV     A,R7
+0007BC 6013              JZ      ?C0015?LED
+   64: 		{
+   65: 			//if (g_variable.sleepTimer < KB_NUM_CAPS_LED_ON_TIMER)
+   66: 			{			
+   67: 				if(m_caps_num_lock & KB_PC_KEYSEL_CAPSLOCK)
+0007BE 904CB7            MOV     DPTR,#m_caps_num_lock
+0007C1 E0                MOVX    A,@DPTR
+0007C2 30E106            JNB     ACC.1,?C0016?LED
+   68: 				{
+   69: 					GPIO_Setout(CAPS_LED_GPIO, LED_ON_0);
+0007C5 C201              CLR     ?_GPIO_Setout?BIT
+0007C7 7F1D              MOV     R7,#01DH
+0007C9 8013              SJMP    _GPIO_Setout
+   70: 				}
+0007CB         ?C0016?LED:
+   71: 				else 
+   72: 				{
+   73: 					GPIO_Setout(CAPS_LED_GPIO, LED_OFF_1);
+0007CB D201              SETB    ?_GPIO_Setout?BIT
+0007CD 7F1D              MOV     R7,#01DH
+0007CF 800D              SJMP    _GPIO_Setout
+   74: 				}
+   75: 			}
+   76: 			//else
+   77: 			//{
+   78: 			//	GPIO_Setout(CAPS_LED_GPIO, LED_OFF_1);
+   79: 			//}
+   80: 		}
+0007D1         ?C0015?LED:
+   81: 		else
+   82: 		{
+   83: 			GPIO_Setout(CAPS_LED_GPIO, LED_OFF_1);
+0007D1 D201              SETB    ?_GPIO_Setout?BIT
+0007D3 7F1D              MOV     R7,#01DH
+0007D5 8007              SJMP    _GPIO_Setout
+   84: 		}
+   85: 	}
+0007D7         ?C0007?LED:
+   86: 	else
+   87: 	{
+   88: 		GPIO_Setout(CAPS_LED_GPIO, LED_OFF_1);
+0007D7 D201              SETB    ?_GPIO_Setout?BIT
+0007D9 7F1D              MOV     R7,#01DH
+0007DB F1DE              ACALL   _GPIO_Setout
+   89: 	}
+   90: 
+   91: }
+0007DD         ?C0004?LED:
+0007DD 22                RET     
+----- FUNCTION LED_handle (END) -------
+
+
+----- FUNCTION _GPIO_Setout (BEGIN) -----
+;---- Variable 'gpio_num' assigned to Register 'R7' ----
+0007DE EF                MOV     A,R7
+0007DF F4                CPL     A
+0007E0 600D              JZ      ?C0007?GPIO
+0007E2         ?C0006?GPIO:
+0007E2 7B01              MOV     R3,#01H
+0007E4 7A80              MOV     R2,#080H
+0007E6 7974              MOV     R1,#074H
+0007E8 A201              MOV     C,bit_val
+0007EA 9200              MOV     ?_gpioSetBit?BIT,C
+0007EC 1222DF            LCALL   _gpioSetBit
+0007EF         ?C0007?GPIO:
+0007EF 22                RET     
+----- FUNCTION _GPIO_Setout (END) -------
+
+
+----- FUNCTION YC_check_need_reconnected (BEGIN) -----
+ FILE: 'bluetooth.c'
+   13: byte YC_check_need_reconnected()
+   14: {
+   15: 	byte return_val = 0;
+   16: 
+;---- Variable 'return_val' assigned to Register 'R7' ----
+0007F0 E4                CLR     A
+0007F1 FF                MOV     R7,A
+   17: 	if(g_variable.pairing_g24_timeout)
+0007F2 904CEE            MOV     DPTR,#g_variable+02FH
+0007F5 E0                MOVX    A,@DPTR
+0007F6 6001              JZ      ?C0003?BLUETOOTH
+   18: 		return return_val;
+0007F8 22                RET     
+0007F9         ?C0003?BLUETOOTH:
+   19: 
+   20: 	if (g_variable.g24_currentState != CHANGE_TO_24G_CONNECTED)
+0007F9 904CC5            MOV     DPTR,#g_variable+06H
+0007FC E0                MOVX    A,@DPTR
+0007FD 6403              XRL     A,#03H
+0007FF 601C              JZ      ?C0005?BLUETOOTH
+   21: 	{
+   22: 		if(g_variable.recon_delay == 0)
+000801 904CEF            MOV     DPTR,#g_variable+030H
+000804 E0                MOVX    A,@DPTR
+000805 701D              JNZ     ?C0008?BLUETOOTH
+   23: 		{
+   24: 			g_variable.recon_delay = 10;
+000807 740A              MOV     A,#0AH
+000809 F0                MOVX    @DPTR,A
+   25: 			if ((g_variable.recon_count == 0)
+00080A A3                INC     DPTR
+00080B E0                MOVX    A,@DPTR
+00080C 7016              JNZ     ?C0008?BLUETOOTH
+00080E 904DF4            MOV     DPTR,#power_on_flag
+000811 E0                MOVX    A,@DPTR
+000812 B4020F            CJNE    A,#02H,?C0008?BLUETOOTH
+   26: 			&& (power_on_flag == 2))
+   27: 			{				
+   28: 				YC_key_action_handle(KEY_OPEN_24G);
+000815 7F09              MOV     R7,#09H
+000817 1125              ACALL   _YC_key_action_handle
+   29: 				return_val = 1;
+000819 7F01              MOV     R7,#01H
+   30: 			}
+   31: 		}
+   32: 	}
+00081B 8007              SJMP    ?C0008?BLUETOOTH
+00081D         ?C0005?BLUETOOTH:
+   33: 	else
+   34: 	{
+   35: 		g_variable.release_data = 0;
+00081D E4                CLR     A
+00081E 904CEB            MOV     DPTR,#g_variable+02CH
+000821 F0                MOVX    @DPTR,A
+   36: 		return_val = 1;
+000822 7F01              MOV     R7,#01H
+   37: 	}
+000824         ?C0008?BLUETOOTH:
+   38: 	return return_val;
+   39: }
+000824 22                RET     
+----- FUNCTION YC_check_need_reconnected (END) -------
+
+
+----- FUNCTION _YC_key_action_handle (BEGIN) -----
+ FILE: 'kb_process.c'
+    3: void YC_key_action_handle(byte key_num)
+    4: {
+000825 904EAF            MOV     DPTR,#key_num
+000828 EF                MOV     A,R7
+000829 F0                MOVX    @DPTR,A
+    5: 	switch (key_num)
+    6: 	{
+00082A 24F7              ADD     A,#0F7H
+00082C 6009              JZ      ?C0003?KB_PROCESS
+00082E 14                DEC     A
+00082F 605E              JZ      ?C0005?KB_PROCESS
+000831 2402              ADD     A,#02H
+000833 6002              JZ      $ + 4H
+000835 01C8              AJMP    ?C0009?KB_PROCESS
+    7: 	case KEY_START_24G:
+    8: 	case KEY_OPEN_24G:
+    9: 		g_variable.recon_count = 0;
+000837         ?C0003?KB_PROCESS:
+   10: 
+000837 E4                CLR     A
+000838 904CF0            MOV     DPTR,#g_variable+031H
+00083B F0                MOVX    @DPTR,A
+   11: 		IIC_Read(EEPROM_RECON_INFO_BASE_6,4 , (byte *)m_24g_addr);
+00083C 7B01              MOV     R3,#01H
+00083E 7A4C              MOV     R2,#HIGH m_24g_addr
+000840 7900              MOV     R1,#LOW m_24g_addr
+000842 7D04              MOV     R5,#04H
+000844 FC                MOV     R4,A
+000845 7FF0              MOV     R7,#0F0H
+000847 7E7F              MOV     R6,#07FH
+000849 1211A3            LCALL   _IIC_Read
+   12: 		Delay1ms(10);
+00084C 7F0A              MOV     R7,#0AH
+00084E 512D              ACALL   _Delay1ms
+   13: 		fast_connect_flag = 0;
+000850 E4                CLR     A
+000851 904E01            MOV     DPTR,#fast_connect_flag
+000854 F0                MOVX    @DPTR,A
+   14: 		if (m_24g_addr[0] == 0xff && m_24g_addr[1] == 0xff && m_24g_addr[2] == 0xff && m_24g_addr[3] == 0xff)
+000855 904C00            MOV     DPTR,#m_24g_addr
+000858 E0                MOVX    A,@DPTR
+000859 F4                CPL     A
+00085A 7021              JNZ     ?C0004?KB_PROCESS
+00085C A3                INC     DPTR
+00085D E0                MOVX    A,@DPTR
+00085E B4FF1C            CJNE    A,#0FFH,?C0004?KB_PROCESS
+000861 A3                INC     DPTR
+000862 E0                MOVX    A,@DPTR
+000863 B4FF17            CJNE    A,#0FFH,?C0004?KB_PROCESS
+000866 A3                INC     DPTR
+000867 E0                MOVX    A,@DPTR
+000868 B4FF12            CJNE    A,#0FFH,?C0004?KB_PROCESS
+   15: 		{
+   16: 			m_24g_addr[0] = 0x0f;
+00086B 904C00            MOV     DPTR,#m_24g_addr
+00086E 740F              MOV     A,#0FH
+000870 F0                MOVX    @DPTR,A
+   17: 			m_24g_addr[1] = 0x0f;
+000871 A3                INC     DPTR
+000872 F0                MOVX    @DPTR,A
+   18: 			m_24g_addr[2] = 0x0f;
+000873 A3                INC     DPTR
+000874 F0                MOVX    @DPTR,A
+   19: 			m_24g_addr[3] = 0x0f;
+000875 A3                INC     DPTR
+000876 F0                MOVX    @DPTR,A
+   20: 			fast_connect_flag = 1;
+000877 904E01            MOV     DPTR,#fast_connect_flag
+00087A 7401              MOV     A,#01H
+00087C F0                MOVX    @DPTR,A
+   21: 		}
+00087D         ?C0004?KB_PROCESS:
+   22: 		IPC_TxControlCmd(IPC_CMD_START_24G);
+00087D 7F21              MOV     R7,#021H
+00087F 11CE              ACALL   _IPC_TxControlCmd
+   23: 		
+   24: 		g_variable.g24_currentState = CHANGE_TO_24G_CONNECTING;
+000881 904CC5            MOV     DPTR,#g_variable+06H
+000884 7402              MOV     A,#02H
+000886 F0                MOVX    @DPTR,A
+   25: 		g_variable.g24_currentSubState = CHANGE_TO_24G_SUB_NONE;
+000887 E4                CLR     A
+000888 A3                INC     DPTR
+000889 F0                MOVX    @DPTR,A
+   26: 		g_variable.key_action = KEY_NONE;
+00088A 904CED            MOV     DPTR,#g_variable+02EH
+00088D F0                MOVX    @DPTR,A
+   27: 		
+   28: 		break;
+00088E 22                RET     
+   29: 	case KEY_PAIRING_24G:
+00088F         ?C0005?KB_PROCESS:
+   30: 		g_variable.recon_count = 0;
+00088F E4                CLR     A
+000890 904CF0            MOV     DPTR,#g_variable+031H
+000893 F0                MOVX    @DPTR,A
+   31: 		if (YC_disconnect_all_link())
+000894 318B              ACALL   YC_disconnect_all_link
+000896 EF                MOV     A,R7
+000897 6009              JZ      ?C0006?KB_PROCESS
+   32: 		{
+   33: 			g_variable.key_action = key_num;
+000899 904EAF            MOV     DPTR,#key_num
+00089C E0                MOVX    A,@DPTR
+00089D 904CED            MOV     DPTR,#g_variable+02EH
+0008A0 F0                MOVX    @DPTR,A
+   34: 		}
+0008A1 22                RET     
+0008A2         ?C0006?KB_PROCESS:
+   35: 		else
+   36: 		{
+   37: 			if (g_variable.g24_currentState != CHANGE_TO_24G_PAIRING)
+0008A2 904CC5            MOV     DPTR,#g_variable+06H
+0008A5 E0                MOVX    A,@DPTR
+0008A6 6401              XRL     A,#01H
+0008A8 6018              JZ      ?C0008?KB_PROCESS
+   38: 			{
+   39: 				IPC_TxControlCmd(IPC_CMD_PAIR_24G);
+0008AA 7F23              MOV     R7,#023H
+0008AC 11CE              ACALL   _IPC_TxControlCmd
+   40: 				g_variable.g24_currentState = CHANGE_TO_24G_PAIRING;
+0008AE 904CC5            MOV     DPTR,#g_variable+06H
+0008B1 7401              MOV     A,#01H
+0008B3 F0                MOVX    @DPTR,A
+   41: 				g_variable.g24_currentSubState = CHANGE_TO_24G_SUB_NONE;
+0008B4 E4                CLR     A
+0008B5 A3                INC     DPTR
+0008B6 F0                MOVX    @DPTR,A
+   42: 				g_variable.pairing_g24_timeout = BT_PAIRING_TIME_OUT_1MIN;
+0008B7 904CEE            MOV     DPTR,#g_variable+02FH
+0008BA 7478              MOV     A,#078H
+0008BC F0                MOVX    @DPTR,A
+   43: 				g_variable.pairing_timeout = 0;
+0008BD E4                CLR     A
+0008BE 904CE9            MOV     DPTR,#g_variable+02AH
+0008C1 F0                MOVX    @DPTR,A
+   44: 			}
+0008C2         ?C0008?KB_PROCESS:
+   45: 			g_variable.key_action = KEY_NONE;
+0008C2 E4                CLR     A
+0008C3 904CED            MOV     DPTR,#g_variable+02EH
+0008C6 F0                MOVX    @DPTR,A
+   46: 		}
+   47: 		break;
+0008C7 22                RET     
+   48: 	default:
+0008C8         ?C0009?KB_PROCESS:
+   49: 		g_variable.key_action = KEY_NONE;
+0008C8 E4                CLR     A
+0008C9 904CED            MOV     DPTR,#g_variable+02EH
+0008CC F0                MOVX    @DPTR,A
+   50: 		break;
+   51: 	}
+   52: }
+0008CD 22                RET     
+----- FUNCTION _YC_key_action_handle (END) -------
+
+
+----- FUNCTION _IPC_TxControlCmd (BEGIN) -----
+0008CE 904E8D            MOV     DPTR,#cmd
+0008D1 EF                MOV     A,R7
+0008D2 F0                MOVX    @DPTR,A
+0008D3 788E              MOV     R0,#LOW cmdBuff
+0008D5 7C4E              MOV     R4,#HIGH cmdBuff
+0008D7 7D01              MOV     R5,#01H
+0008D9 7BFF              MOV     R3,#0FFH
+0008DB 7A07              MOV     R2,#HIGH _?ix1000
+0008DD 793A              MOV     R1,#LOW _?ix1000
+0008DF 7E00              MOV     R6,#00H
+0008E1 7F03              MOV     R7,#03H
+0008E3 120390            LCALL   ?C?COPY
+0008E6 904E8D            MOV     DPTR,#cmd
+0008E9 E0                MOVX    A,@DPTR
+0008EA 904E90            MOV     DPTR,#cmdBuff+02H
+0008ED F0                MOVX    @DPTR,A
+0008EE 7B01              MOV     R3,#01H
+0008F0 7A4E              MOV     R2,#HIGH cmdBuff
+0008F2 798E              MOV     R1,#LOW cmdBuff
+0008F4 7D03              MOV     R5,#03H
+;----                  JMP     _ipcTx
+----- FUNCTION _IPC_TxControlCmd (END) -------
+
+
+----- FUNCTION _ipcTx (BEGIN) -----
+0008F6 904E65            MOV     DPTR,#src
+0008F9 EB                MOV     A,R3
+0008FA F0                MOVX    @DPTR,A
+0008FB A3                INC     DPTR
+0008FC EA                MOV     A,R2
+0008FD F0                MOVX    @DPTR,A
+0008FE A3                INC     DPTR
+0008FF E9                MOV     A,R1
+000900 F0                MOVX    @DPTR,A
+000901 A3                INC     DPTR
+000902 ED                MOV     A,R5
+000903 F0                MOVX    @DPTR,A
+000904 904B9C            MOV     DPTR,#ipcTxWritePtr
+000907 E0                MOVX    A,@DPTR
+000908 FF                MOV     R7,A
+000909 A3                INC     DPTR
+00090A E0                MOVX    A,@DPTR
+00090B 904E69            MOV     DPTR,#dest
+00090E CF                XCH     A,R7
+00090F F0                MOVX    @DPTR,A
+000910 A3                INC     DPTR
+000911 EF                MOV     A,R7
+000912 F0                MOVX    @DPTR,A
+000913         ?C0008?IPC:
+000913 904B9A            MOV     DPTR,#ipcTxReadPtr
+000916 E0                MOVX    A,@DPTR
+000917 FE                MOV     R6,A
+000918 A3                INC     DPTR
+000919 E0                MOVX    A,@DPTR
+00091A FF                MOV     R7,A
+00091B 904B9C            MOV     DPTR,#ipcTxWritePtr
+00091E E0                MOVX    A,@DPTR
+00091F FC                MOV     R4,A
+000920 A3                INC     DPTR
+000921 E0                MOVX    A,@DPTR
+000922 FD                MOV     R5,A
+000923 7B64              MOV     R3,#064H
+000925 122BB6            LCALL   _bufsize
+000928 904E68            MOV     DPTR,#len
+00092B E0                MOVX    A,@DPTR
+00092C FE                MOV     R6,A
+00092D EF                MOV     A,R7
+00092E C3                CLR     C
+00092F 9E                SUBB    A,R6
+000930 40E1              JC      ?C0008?IPC
+000932         ?C0009?IPC:
+000932         ?C0010?IPC:
+000932 904E68            MOV     DPTR,#len
+000935 E0                MOVX    A,@DPTR
+000936 FF                MOV     R7,A
+000937 14                DEC     A
+000938 F0                MOVX    @DPTR,A
+000939 EF                MOV     A,R7
+00093A 603F              JZ      ?C0011?IPC
+00093C 904E65            MOV     DPTR,#src
+00093F E0                MOVX    A,@DPTR
+000940 FB                MOV     R3,A
+000941 A3                INC     DPTR
+000942 E4                CLR     A
+000943 75F001            MOV     B,#01H
+000946 120479            LCALL   ?C?ILDIX
+000949 A9F0              MOV     R1,B
+00094B FA                MOV     R2,A
+00094C 1203B6            LCALL   ?C?CLDPTR
+00094F FF                MOV     R7,A
+000950 904E69            MOV     DPTR,#dest
+000953 E4                CLR     A
+000954 75F001            MOV     B,#01H
+000957 120479            LCALL   ?C?ILDIX
+00095A 85F082            MOV     DPL,B
+00095D F583              MOV     DPH,A
+00095F EF                MOV     A,R7
+000960 F0                MOVX    @DPTR,A
+000961 904E69            MOV     DPTR,#dest
+000964 E0                MOVX    A,@DPTR
+000965 FE                MOV     R6,A
+000966 A3                INC     DPTR
+000967 E0                MOVX    A,@DPTR
+000968 FF                MOV     R7,A
+000969 BE4BC6            CJNE    R6,#04BH,?C0010?IPC
+00096C BF36C3            CJNE    R7,#036H,?C0010?IPC
+00096F 904E69            MOV     DPTR,#dest
+000972 744A              MOV     A,#04AH
+000974 F0                MOVX    @DPTR,A
+000975 A3                INC     DPTR
+000976 74A0              MOV     A,#0A0H
+000978 F0                MOVX    @DPTR,A
+000979 80B7              SJMP    ?C0010?IPC
+00097B         ?C0011?IPC:
+00097B 904E69            MOV     DPTR,#dest
+00097E E0                MOVX    A,@DPTR
+00097F FF                MOV     R7,A
+000980 A3                INC     DPTR
+000981 E0                MOVX    A,@DPTR
+000982 904B9C            MOV     DPTR,#ipcTxWritePtr
+000985 CF                XCH     A,R7
+000986 F0                MOVX    @DPTR,A
+000987 A3                INC     DPTR
+000988 EF                MOV     A,R7
+000989 F0                MOVX    @DPTR,A
+00098A 22                RET     
+----- FUNCTION _ipcTx (END) -------
+
+
+----- FUNCTION YC_disconnect_all_link (BEGIN) -----
+ FILE: 'bluetooth.c'
+   48: byte YC_disconnect_all_link()
+   49: {
+   50: 	if (g_variable.g24_currentState == CHANGE_TO_24G_CONNECTED 
+   51: 		||g_variable.g24_currentState == CHANGE_TO_24G_CONNECTING)
+00098B 904CC5            MOV     DPTR,#g_variable+06H
+00098E E0                MOVX    A,@DPTR
+00098F FF                MOV     R7,A
+000990 6403              XRL     A,#03H
+000992 6004              JZ      ?C0011?BLUETOOTH
+000994 EF                MOV     A,R7
+000995 B40207            CJNE    A,#02H,?C0010?BLUETOOTH
+000998         ?C0011?BLUETOOTH:
+   52: 	{
+   53: 		IPC_TxControlCmd(IPC_CMD_STOP_24G);
+000998 7F22              MOV     R7,#022H
+00099A 11CE              ACALL   _IPC_TxControlCmd
+   54: 		return 1;
+00099C 7F01              MOV     R7,#01H
+00099E 22                RET     
+   55: 	}
+00099F         ?C0010?BLUETOOTH:
+   56: 	return 0;
+00099F 7F00              MOV     R7,#00H
+   57: }
+0009A1 22                RET     
+----- FUNCTION YC_disconnect_all_link (END) -------
+
+
+----- FUNCTION kb_button_press_timer500ms (BEGIN) -----
+ FILE: 'sys.c'
+  266: void kb_button_press_timer500ms()
+  267: {
+  268: 	
+  269: //key status 
+  270: 	if (g_variable.button_flag & KEY_FLAG_SAME_KEY_PRESS)
+0009A2 904CCE            MOV     DPTR,#g_variable+0FH
+0009A5 E0                MOVX    A,@DPTR
+0009A6 30E13D            JNB     ACC.1,?C0041?SYS
+  271: 	{
+  272: 		if (g_variable.button_timer[1] < 250)
+0009A9 904CD0            MOV     DPTR,#g_variable+011H
+0009AC E0                MOVX    A,@DPTR
+0009AD C3                CLR     C
+0009AE 94FA              SUBB    A,#0FAH
+0009B0 5003              JNC     ?C0042?SYS
+  273: 			g_variable.button_timer[1]++;
+0009B2 E0                MOVX    A,@DPTR
+0009B3 04                INC     A
+0009B4 F0                MOVX    @DPTR,A
+0009B5         ?C0042?SYS:
+  274: 		if (g_variable.button_timer[1] == 180)			// 500ms*180*3 = 4min30s
+0009B5 904CD0            MOV     DPTR,#g_variable+011H
+0009B8 E0                MOVX    A,@DPTR
+0009B9 64B4              XRL     A,#0B4H
+0009BB 7036              JNZ     ?C0047?SYS
+  275: 		{
+  276: 			press_long_time_flag++;
+0009BD 904DEB            MOV     DPTR,#press_long_time_flag
+0009C0 E0                MOVX    A,@DPTR
+0009C1 04                INC     A
+0009C2 F0                MOVX    @DPTR,A
+  277: 			if(press_long_time_flag <= 2)
+0009C3 E0                MOVX    A,@DPTR
+0009C4 D3                SETB    C
+0009C5 9402              SUBB    A,#02H
+0009C7 5007              JNC     ?C0044?SYS
+  278: 			{
+  279: 				g_variable.button_timer[1] = 0;
+0009C9 E4                CLR     A
+0009CA 904CD0            MOV     DPTR,#g_variable+011H
+0009CD F0                MOVX    @DPTR,A
+  280: 			}
+0009CE 8023              SJMP    ?C0047?SYS
+0009D0         ?C0044?SYS:
+  281: 			else if(press_long_time_flag == 3)
+0009D0 904DEB            MOV     DPTR,#press_long_time_flag
+0009D3 E0                MOVX    A,@DPTR
+0009D4 B4031C            CJNE    A,#03H,?C0047?SYS
+  282: 			{
+  283: 				long_press_flag = 1;
+0009D7 904DE4            MOV     DPTR,#long_press_flag
+0009DA 7401              MOV     A,#01H
+0009DC F0                MOVX    @DPTR,A
+  284: 				g_variable.button_timer[1] = 0;
+0009DD E4                CLR     A
+0009DE 904CD0            MOV     DPTR,#g_variable+011H
+0009E1 F0                MOVX    @DPTR,A
+  285: 				System_long_sleep();
+0009E2 D1E7              ACALL   System_long_sleep
+  286: 			}
+  287: 		}
+  288: 	}
+0009E4 800D              SJMP    ?C0047?SYS
+0009E6         ?C0041?SYS:
+  289: 	else
+  290: 	{
+  291: 		press_long_time_flag = 0;
+0009E6 E4                CLR     A
+0009E7 904DEB            MOV     DPTR,#press_long_time_flag
+0009EA F0                MOVX    @DPTR,A
+  292: 		long_press_flag = 0;
+0009EB 904DE4            MOV     DPTR,#long_press_flag
+0009EE F0                MOVX    @DPTR,A
+  293: 		g_variable.button_timer[1] = 0;
+0009EF 904CD0            MOV     DPTR,#g_variable+011H
+0009F2 F0                MOVX    @DPTR,A
+  294: 	}
+0009F3         ?C0047?SYS:
+  295: 		
+  296: 	if (g_variable.button_flag & KEY_FLAG_FN_24G_DEVICE_BUTTON)		// G24 pairing
+0009F3 904CCE            MOV     DPTR,#g_variable+0FH
+0009F6 E0                MOVX    A,@DPTR
+0009F7 30E42D            JNB     ACC.4,?C0048?SYS
+  297: 	{
+  298: 		g_variable.delay_enter_lpm_timer = 10;
+0009FA 904CEA            MOV     DPTR,#g_variable+02BH
+0009FD 740A              MOV     A,#0AH
+0009FF F0                MOVX    @DPTR,A
+  299: 		if (g_variable.button_timer[2] < 250)
+000A00 904CD1            MOV     DPTR,#g_variable+012H
+000A03 E0                MOVX    A,@DPTR
+000A04 C3                CLR     C
+000A05 94FA              SUBB    A,#0FAH
+000A07 5003              JNC     ?C0049?SYS
+  300: 			g_variable.button_timer[2]++;
+000A09 E0                MOVX    A,@DPTR
+000A0A 04                INC     A
+000A0B F0                MOVX    @DPTR,A
+000A0C         ?C0049?SYS:
+  301: 		if (g_variable.button_timer[2] == 6)
+000A0C 904CD1            MOV     DPTR,#g_variable+012H
+000A0F E0                MOVX    A,@DPTR
+000A10 B40619            CJNE    A,#06H,?C0054?SYS
+  302: 		{
+  303: 			if( !g_variable.current_device_num || (g_variable.current_device_num == 0xfe))
+000A13 904CC3            MOV     DPTR,#g_variable+04H
+000A16 E0                MOVX    A,@DPTR
+000A17 FF                MOV     R7,A
+000A18 6003              JZ      ?C0052?SYS
+000A1A B4FE0F            CJNE    A,#0FEH,?C0054?SYS
+000A1D         ?C0052?SYS:
+  304: 			{
+  305: 				YC_disconnect_all_link();
+000A1D 318B              ACALL   YC_disconnect_all_link
+  306: 				Delay1ms(10);
+000A1F 7F0A              MOV     R7,#0AH
+000A21 512D              ACALL   _Delay1ms
+  307: 				YC_key_action_handle(KEY_PAIRING_24G);
+000A23 7F0A              MOV     R7,#0AH
+000A25 0125              AJMP    _YC_key_action_handle
+  308: 			}
+  309: 		}
+  310: 	}
+000A27         ?C0048?SYS:
+  311: 	else
+  312: 		g_variable.button_timer[2] = 0;
+000A27 E4                CLR     A
+000A28 904CD1            MOV     DPTR,#g_variable+012H
+000A2B F0                MOVX    @DPTR,A
+  313: 	
+  314: }
+000A2C         ?C0054?SYS:
+000A2C 22                RET     
+----- FUNCTION kb_button_press_timer500ms (END) -------
+
+
+----- FUNCTION _Delay1ms (BEGIN) -----
+;---- Variable 'Time' assigned to Register 'R7' ----
+000A2D         ?C0014?UTILITIES:
+000A2D EF                MOV     A,R7
+000A2E D3                SETB    C
+000A2F 9400              SUBB    A,#00H
+000A31 4011              JC      ?C0020?UTILITIES
+;---- Variable 'j' assigned to Register 'R4/R5' ----
+000A33 E4                CLR     A
+000A34 FD                MOV     R5,A
+000A35 FC                MOV     R4,A
+000A36         ?C0017?UTILITIES:
+000A36 0D                INC     R5
+000A37 BD0001            CJNE    R5,#00H,?C0028?UTILITIES
+000A3A 0C                INC     R4
+000A3B         ?C0028?UTILITIES:
+000A3B BC04F8            CJNE    R4,#04H,?C0017?UTILITIES
+000A3E BDA6F5            CJNE    R5,#0A6H,?C0017?UTILITIES
+000A41         ?C0016?UTILITIES:
+000A41 1F                DEC     R7
+000A42 80E9              SJMP    ?C0014?UTILITIES
+000A44         ?C0020?UTILITIES:
+000A44 22                RET     
+----- FUNCTION _Delay1ms (END) -------
+
+
+----- FUNCTION _kb_cb_event (BEGIN) -----
+ FILE: 'sys.c'
+  118: static void kb_cb_event(byte evt)
+  119: {
+000A45 904EB5            MOV     DPTR,#evt
+000A48 EF                MOV     A,R7
+000A49 F0                MOVX    @DPTR,A
+  120: 	switch (evt) 
+  121: 	{
+000A4A 24D0              ADD     A,#0D0H
+000A4C 605D              JZ      ?C0015?SYS
+000A4E 14                DEC     A
+000A4F 6065              JZ      ?C0017?SYS
+000A51 14                DEC     A
+000A52 7002              JNZ     $ + 4H
+000A54 41F4              AJMP    ?C0019?SYS
+000A56 14                DEC     A
+000A57 600A              JZ      ?C0014?SYS
+000A59 24F7              ADD     A,#0F7H
+000A5B 6059              JZ      ?C0017?SYS
+000A5D 240D              ADD     A,#0DH
+000A5F 6002              JZ      $ + 4H
+000A61 6120              AJMP    ?C0022?SYS
+  122: 	case IPC_EVT_HIBERNATE_WAKE:
+  123: //		System_Hardware_init();
+  124: //		System_Software_init();
+  125: //		break;	
+  126: 	case IPC_EVT_RESET:
+000A63         ?C0014?SYS:
+  127: 		System_Hardware_init();
+000A63 F1E9              ACALL   System_Hardware_init
+  128: 		System_Software_init();
+000A65 122786            LCALL   System_Software_init
+  129: 		
+  130: 		IIC_Read(EEPROM_RECON_INFO_BASE_6,4 , (byte *)m_24g_addr);
+000A68 7B01              MOV     R3,#01H
+000A6A 7A4C              MOV     R2,#HIGH m_24g_addr
+000A6C 7900              MOV     R1,#LOW m_24g_addr
+000A6E 7D04              MOV     R5,#04H
+000A70 7C00              MOV     R4,#00H
+000A72 7FF0              MOV     R7,#0F0H
+000A74 7E7F              MOV     R6,#07FH
+000A76 1211A3            LCALL   _IIC_Read
+  131: 		Delay1ms(10);
+000A79 7F0A              MOV     R7,#0AH
+000A7B 512D              ACALL   _Delay1ms
+  132: 		IIC_Read(EEPROM_RECON_INFO_SYTEM_MODE,1 , (byte *)g_variable.system_mode);
+000A7D 904CC1            MOV     DPTR,#g_variable+02H
+000A80 E0                MOVX    A,@DPTR
+000A81 F9                MOV     R1,A
+000A82 7A00              MOV     R2,#00H
+000A84 7B00              MOV     R3,#00H
+000A86 7D01              MOV     R5,#01H
+000A88 7C00              MOV     R4,#00H
+000A8A 7FF8              MOV     R7,#0F8H
+000A8C 7E7F              MOV     R6,#07FH
+000A8E 1211A3            LCALL   _IIC_Read
+  133: 		Delay1ms(10);
+000A91 7F0A              MOV     R7,#0AH
+000A93 512D              ACALL   _Delay1ms
+  134: 
+  135: 		GPIO_SetOutput(BACKLIGHT_PWM_GPIO,LED_ON);
+000A95 D206              SETB    ?_GPIO_SetOutput?BIT
+000A97 7F16              MOV     R7,#016H
+000A99 7160              ACALL   _GPIO_SetOutput
+  136: 		LED_device_line_control(LED_ON,LED_ON,LED_ON,LED_ON,LED_ON);
+000A9B 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000A9E 7401              MOV     A,#01H
+000AA0 F0                MOVX    @DPTR,A
+000AA1 A3                INC     DPTR
+000AA2 F0                MOVX    @DPTR,A
+000AA3 FB                MOV     R3,A
+000AA4 FD                MOV     R5,A
+000AA5 FF                MOV     R7,A
+000AA6 7121              ACALL   _LED_device_line_control
+  137: 		YC_start_reconnect();
+000AA8 021005            LJMP    YC_start_reconnect
+  138: 		break;
+  139: 	case IPC_EVT_WAKEUP:
+000AAB         ?C0015?SYS:
+  140: 		System_IIC_clk_setup();
+000AAB F1F2              ACALL   System_IIC_clk_setup
+  141: 		KS_Initialize();
+000AAD 122265            LCALL   KS_Initialize
+  142: 		g_variable.g24_long_sleep_flag = 0;
+000AB0 E4                CLR     A
+000AB1 904D05            MOV     DPTR,#g_variable+046H
+000AB4 F0                MOVX    @DPTR,A
+  143: 		break;
+000AB5 22                RET     
+  144: 
+  145: 		
+  146: // 2.4G event	
+  147: 	case IPC_EVT_24G_PAIRING_COMPLETE:
+  148: 	case IPC_EVT_24G_ATTEMPT_SUCCESS:
+000AB6         ?C0017?SYS:
+  149: 		g_variable.g24_currentState =  CHANGE_TO_24G_CONNECTED;
+000AB6 904CC5            MOV     DPTR,#g_variable+06H
+000AB9 7403              MOV     A,#03H
+000ABB F0                MOVX    @DPTR,A
+  150: 		g_variable.g24_currentSubState = CHANGE_TO_24G_SUB_NONE;
+000ABC E4                CLR     A
+000ABD A3                INC     DPTR
+000ABE F0                MOVX    @DPTR,A
+  151: 		YC_clear_reconnect_flag();
+000ABF F1E3              ACALL   YC_clear_reconnect_flag
+  152: 		g_variable.pairing_g24_timeout = 0;
+000AC1 E4                CLR     A
+000AC2 904CEE            MOV     DPTR,#g_variable+02FH
+000AC5 F0                MOVX    @DPTR,A
+  153: 		g_variable.release_data = 0;
+000AC6 904CEB            MOV     DPTR,#g_variable+02CH
+000AC9 F0                MOVX    @DPTR,A
+  154: 		g_variable.last_device_num = 0xfe;
+000ACA 904CC0            MOV     DPTR,#g_variable+01H
+000ACD 74FE              MOV     A,#0FEH
+000ACF F0                MOVX    @DPTR,A
+  155: 		g_variable.current_device_num = 0xfe;
+000AD0 904CC3            MOV     DPTR,#g_variable+04H
+000AD3 F0                MOVX    @DPTR,A
+  156: 		m_24g_led_flag = KB_24G_LED_ACK_TYPE;
+000AD4 904D47            MOV     DPTR,#m_24g_led_flag
+000AD7 7403              MOV     A,#03H
+000AD9 F0                MOVX    @DPTR,A
+  157: 		delayChgInvTimer = 10;
+000ADA 904DEF            MOV     DPTR,#delayChgInvTimer
+000ADD 740A              MOV     A,#0AH
+000ADF F0                MOVX    @DPTR,A
+  158: 
+  159: 		if(evt == IPC_EVT_24G_PAIRING_COMPLETE)
+000AE0 904EB5            MOV     DPTR,#evt
+000AE3 E0                MOVX    A,@DPTR
+000AE4 6431              XRL     A,#031H
+000AE6 7038              JNZ     ?C0022?SYS
+  160: 		{
+  161: 			fast_connect_flag = 0;
+000AE8 904E01            MOV     DPTR,#fast_connect_flag
+000AEB F0                MOVX    @DPTR,A
+  162: 			g_variable.update_eeprom_flag = 1;
+000AEC 904CBF            MOV     DPTR,#g_variable
+000AEF 04                INC     A
+000AF0 F0                MOVX    @DPTR,A
+  163: 			YC_update_eeprom_data();
+000AF1 021010            LJMP    YC_update_eeprom_data
+  164: 		}
+  165: 		
+  166: 		break;
+  167: 	
+  168: 	case IPC_EVT_24G_ATTEMPT_FAIL:		
+000AF4         ?C0019?SYS:
+  169: 		g_variable.g24_currentState =  CHANGE_TO_24G_DISCONNECTED;
+000AF4 E4                CLR     A
+000AF5 904CC5            MOV     DPTR,#g_variable+06H
+000AF8 F0                MOVX    @DPTR,A
+  170: 		g_variable.g24_currentSubState = CHANGE_TO_24G_SUB_NONE;
+000AF9 A3                INC     DPTR
+000AFA F0                MOVX    @DPTR,A
+  171: 		g_variable.sleepTimer = 0;
+000AFB 904CE3            MOV     DPTR,#g_variable+024H
+000AFE F0                MOVX    @DPTR,A
+000AFF A3                INC     DPTR
+000B00 F0                MOVX    @DPTR,A
+  172: 		g_variable.release_data = 1;
+000B01 904CEB            MOV     DPTR,#g_variable+02CH
+000B04 04                INC     A
+000B05 F0                MOVX    @DPTR,A
+  173: 
+  174: 		if (g_variable.key_action != KEY_NONE)
+000B06 904CED            MOV     DPTR,#g_variable+02EH
+000B09 E0                MOVX    A,@DPTR
+000B0A 6009              JZ      ?C0020?SYS
+  175: 		{
+  176: 			YC_clear_reconnect_flag();
+000B0C F1E3              ACALL   YC_clear_reconnect_flag
+  177: 			YC_key_action_handle(g_variable.key_action);
+000B0E 904CED            MOV     DPTR,#g_variable+02EH
+000B11 E0                MOVX    A,@DPTR
+000B12 FF                MOV     R7,A
+000B13 0125              AJMP    _YC_key_action_handle
+  178: 			break;
+  179: 		}
+000B15         ?C0020?SYS:
+  180: 
+  181: 		if (g_variable.lockLpm == 1)
+000B15 904CEC            MOV     DPTR,#g_variable+02DH
+000B18 E0                MOVX    A,@DPTR
+000B19 B40104            CJNE    A,#01H,?C0022?SYS
+  182: 		{
+  183: 			g_variable.lockLpm =0;
+000B1C E4                CLR     A
+000B1D F0                MOVX    @DPTR,A
+  184: 			System_long_sleep();
+000B1E D1E7              ACALL   System_long_sleep
+  185: 			break;
+  186: 		}
+  187: 		break;
+  188: 	}
+  189: }
+000B20         ?C0022?SYS:
+000B20 22                RET     
+----- FUNCTION _kb_cb_event (END) -------
+
+
+----- FUNCTION _LED_device_line_control (BEGIN) -----
+ FILE: 'led.c'
+   13: void LED_device_line_control(byte line1_status,byte line2_status,byte line3_status,byte line4_status,byte line5_s
+>> tatus)
+   14: {
+000B21 904E77            MOV     DPTR,#line2_status
+000B24 ED                MOV     A,R5
+000B25 F0                MOVX    @DPTR,A
+000B26 A3                INC     DPTR
+000B27 EB                MOV     A,R3
+000B28 F0                MOVX    @DPTR,A
+;---- Variable 'line1_status' assigned to Register 'R7' ----
+   15: 	GPIO_SetOutput(LINE1_LED_GPIO,line1_status);
+   16: 	GPIO_SetOutput(LINE2_LED_GPIO,line2_status);
+000B29 EF                MOV     A,R7
+000B2A 24FF              ADD     A,#0FFH
+000B2C 9206              MOV     ?_GPIO_SetOutput?BIT,C
+000B2E 7F13              MOV     R7,#013H
+000B30 7160              ACALL   _GPIO_SetOutput
+   17: 	GPIO_SetOutput(LINE3_LED_GPIO,line3_status);
+000B32 904E77            MOV     DPTR,#line2_status
+000B35 E0                MOVX    A,@DPTR
+000B36 24FF              ADD     A,#0FFH
+000B38 9206              MOV     ?_GPIO_SetOutput?BIT,C
+000B3A 7F14              MOV     R7,#014H
+000B3C 7160              ACALL   _GPIO_SetOutput
+   18: 	GPIO_SetOutput(LINE4_LED_GPIO,line4_status);
+000B3E 904E78            MOV     DPTR,#line3_status
+000B41 E0                MOVX    A,@DPTR
+000B42 24FF              ADD     A,#0FFH
+000B44 9206              MOV     ?_GPIO_SetOutput?BIT,C
+000B46 7F15              MOV     R7,#015H
+000B48 7160              ACALL   _GPIO_SetOutput
+   19: 	GPIO_SetOutput(LINE5_LED_GPIO,line5_status);
+000B4A 904E79            MOV     DPTR,#line4_status
+000B4D E0                MOVX    A,@DPTR
+000B4E 24FF              ADD     A,#0FFH
+000B50 9206              MOV     ?_GPIO_SetOutput?BIT,C
+000B52 7F1E              MOV     R7,#01EH
+000B54 7160              ACALL   _GPIO_SetOutput
+   20: }
+000B56 904E7A            MOV     DPTR,#line5_status
+000B59 E0                MOVX    A,@DPTR
+000B5A 24FF              ADD     A,#0FFH
+000B5C 9206              MOV     ?_GPIO_SetOutput?BIT,C
+000B5E 7F1B              MOV     R7,#01BH
+;----                  JMP     _GPIO_SetOutput
+----- FUNCTION _LED_device_line_control (END) -------
+
+
+----- FUNCTION _GPIO_SetOutput (BEGIN) -----
+;---- Variable 'gpio_num' assigned to Register 'R4' ----
+000B60 AC07              MOV     R4,AR7
+000B62 EC                MOV     A,R4
+000B63 F4                CPL     A
+000B64 6017              JZ      ?C0017?GPIO
+000B66         ?C0016?GPIO:
+000B66 AF04              MOV     R7,AR4
+000B68 D204              SETB    ?_GPIO_Setoe?BIT
+000B6A 1222CE            LCALL   _GPIO_Setoe
+000B6D AF04              MOV     R7,AR4
+000B6F A206              MOV     C,st
+000B71 9201              MOV     ?_GPIO_Setout?BIT,C
+000B73 1207DE            LCALL   _GPIO_Setout
+000B76 AF04              MOV     R7,AR4
+000B78 C202              CLR     ?_GPIO_SetPu?BIT
+000B7A 1222AC            LCALL   _GPIO_SetPu
+000B7D         ?C0017?GPIO:
+000B7D 22                RET     
+----- FUNCTION _GPIO_SetOutput (END) -------
+
+
+----- FUNCTION backlight_led_process (BEGIN) -----
+ FILE: 'led.c'
+  150: void backlight_led_process()
+  151: {
+  152: 	g_variable.backlight_switch_timer++;
+  153: 	if((g_variable.backlight_switch_timer % g_variable.backlight_speed) == 0)
+000B7E 904D01            MOV     DPTR,#g_variable+042H
+000B81 E0                MOVX    A,@DPTR
+000B82 04                INC     A
+000B83 F0                MOVX    @DPTR,A
+000B84 7006              JNZ     ?C0102?LED
+000B86 904D00            MOV     DPTR,#g_variable+041H
+000B89 E0                MOVX    A,@DPTR
+000B8A 04                INC     A
+000B8B F0                MOVX    @DPTR,A
+000B8C         ?C0102?LED:
+  154: 	{
+000B8C 904CFE            MOV     DPTR,#g_variable+03FH
+000B8F E0                MOVX    A,@DPTR
+000B90 FD                MOV     R5,A
+000B91 7C00              MOV     R4,#00H
+000B93 904D00            MOV     DPTR,#g_variable+041H
+000B96 E0                MOVX    A,@DPTR
+000B97 FE                MOV     R6,A
+000B98 A3                INC     DPTR
+000B99 E0                MOVX    A,@DPTR
+000B9A FF                MOV     R7,A
+000B9B 12040E            LCALL   ?C?UIDIV
+000B9E ED                MOV     A,R5
+000B9F 4C                ORL     A,R4
+000BA0 6002              JZ      $ + 4H
+000BA2 C1C6              AJMP    ?C0101?LED
+  155: 		switch(g_variable.backlight_level)
+  156: 		{
+000BA4 904CFD            MOV     DPTR,#g_variable+03EH
+000BA7 E0                MOVX    A,@DPTR
+000BA8 B40800            CJNE    A,#08H,?C0103?LED
+000BAB         ?C0103?LED:
+000BAB 4002              JC      $ + 4H
+000BAD C1BA              AJMP    ?C0100?LED
+000BAF 900BB6            MOV     DPTR,#0BB6H
+000BB2 F8                MOV     R0,A
+000BB3 28                ADD     A,R0
+000BB4 28                ADD     A,R0
+000BB5 73                JMP     @A+DPTR
+000BB6         ?C0104?LED:
+000BB6 020BCE            LJMP    ?C0033?LED
+000BB9 020EC6            LJMP    ?C0101?LED
+000BBC 020BDB            LJMP    ?C0035?LED
+000BBF 020C69            LJMP    ?C0047?LED
+000BC2 020CF3            LJMP    ?C0059?LED
+000BC5 020D4F            LJMP    ?C0067?LED
+000BC8 020DAB            LJMP    ?C0075?LED
+000BCB 020E34            LJMP    ?C0087?LED
+  157: 			case BACKLIGHT_ON:
+  158: 				LED_device_line_control(LED_ON,LED_ON,LED_ON,LED_ON,LED_ON);
+000BCE         ?C0033?LED:
+  159: 				break;
+000BCE 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000BD1 7401              MOV     A,#01H
+000BD3 F0                MOVX    @DPTR,A
+000BD4 A3                INC     DPTR
+000BD5 F0                MOVX    @DPTR,A
+000BD6 FB                MOV     R3,A
+000BD7 FD                MOV     R5,A
+000BD8 FF                MOV     R7,A
+000BD9 6121              AJMP    _LED_device_line_control
+  160: 			case BACKLIGHT_BREATH:
+  161: 				break;
+  162: 			case BACKLIGHT_UP_TO_DOWN_ON:	// 1,1+2,1+2+3,1+2+3+4,1+2+3+4+5,0,
+  163: 				if(g_variable.backlight_step == BACLIGHT_ON_STEP_1)
+000BDB         ?C0035?LED:
+  164: 				{
+000BDB 904CFF            MOV     DPTR,#g_variable+040H
+000BDE E0                MOVX    A,@DPTR
+000BDF 700F              JNZ     ?C0036?LED
+  165: 					g_variable.backlight_step = BACLIGHT_ON_STEP_2;
+  166: 					LED_device_line_control(LED_ON,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+000BE1 04                INC     A
+000BE2 F0                MOVX    @DPTR,A
+  167: 				}
+000BE3 E4                CLR     A
+000BE4 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000BE7 F0                MOVX    @DPTR,A
+000BE8 A3                INC     DPTR
+000BE9 F0                MOVX    @DPTR,A
+000BEA FB                MOV     R3,A
+000BEB FD                MOV     R5,A
+000BEC 7F01              MOV     R7,#01H
+000BEE 6121              AJMP    _LED_device_line_control
+  168: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_2)
+000BF0         ?C0036?LED:
+  169: 				{
+000BF0 904CFF            MOV     DPTR,#g_variable+040H
+000BF3 E0                MOVX    A,@DPTR
+000BF4 B40111            CJNE    A,#01H,?C0038?LED
+  170: 					g_variable.backlight_step = BACLIGHT_ON_STEP_3;
+  171: 					LED_device_line_control(LED_ON,LED_ON,LED_OFF,LED_OFF,LED_OFF);
+000BF7 7402              MOV     A,#02H
+000BF9 F0                MOVX    @DPTR,A
+  172: 				}
+000BFA E4                CLR     A
+000BFB 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000BFE F0                MOVX    @DPTR,A
+000BFF A3                INC     DPTR
+000C00 F0                MOVX    @DPTR,A
+000C01 FB                MOV     R3,A
+000C02 7D01              MOV     R5,#01H
+000C04 7F01              MOV     R7,#01H
+000C06 6121              AJMP    _LED_device_line_control
+  173: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_3)
+000C08         ?C0038?LED:
+  174: 				{
+000C08 904CFF            MOV     DPTR,#g_variable+040H
+000C0B E0                MOVX    A,@DPTR
+000C0C B40212            CJNE    A,#02H,?C0040?LED
+  175: 					g_variable.backlight_step = BACLIGHT_ON_STEP_4;
+  176: 					LED_device_line_control(LED_ON,LED_ON,LED_ON,LED_OFF,LED_OFF);
+000C0F 7403              MOV     A,#03H
+000C11 F0                MOVX    @DPTR,A
+  177: 				}
+000C12 E4                CLR     A
+000C13 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000C16 F0                MOVX    @DPTR,A
+000C17 A3                INC     DPTR
+000C18 F0                MOVX    @DPTR,A
+000C19 7B01              MOV     R3,#01H
+000C1B 7D01              MOV     R5,#01H
+000C1D 7F01              MOV     R7,#01H
+000C1F 6121              AJMP    _LED_device_line_control
+  178: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_4)
+000C21         ?C0040?LED:
+  179: 				{
+000C21 904CFF            MOV     DPTR,#g_variable+040H
+000C24 E0                MOVX    A,@DPTR
+000C25 B40314            CJNE    A,#03H,?C0042?LED
+  180: 					g_variable.backlight_step = BACLIGHT_ON_STEP_5;
+  181: 					LED_device_line_control(LED_ON,LED_ON,LED_ON,LED_ON,LED_OFF);
+000C28 7404              MOV     A,#04H
+000C2A F0                MOVX    @DPTR,A
+  182: 				}
+000C2B 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000C2E 7401              MOV     A,#01H
+000C30 F0                MOVX    @DPTR,A
+000C31 E4                CLR     A
+000C32 A3                INC     DPTR
+000C33 F0                MOVX    @DPTR,A
+000C34 7B01              MOV     R3,#01H
+000C36 7D01              MOV     R5,#01H
+000C38 7F01              MOV     R7,#01H
+000C3A 6121              AJMP    _LED_device_line_control
+  183: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_5)
+000C3C         ?C0042?LED:
+  184: 				{
+000C3C 904CFF            MOV     DPTR,#g_variable+040H
+000C3F E0                MOVX    A,@DPTR
+000C40 B40410            CJNE    A,#04H,?C0044?LED
+  185: 					g_variable.backlight_step = BACLIGHT_ON_STEP_6;
+  186: 					LED_device_line_control(LED_ON,LED_ON,LED_ON,LED_ON,LED_ON);
+000C43 7405              MOV     A,#05H
+000C45 F0                MOVX    @DPTR,A
+  187: 				}
+000C46 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000C49 7401              MOV     A,#01H
+000C4B F0                MOVX    @DPTR,A
+000C4C A3                INC     DPTR
+000C4D F0                MOVX    @DPTR,A
+000C4E FB                MOV     R3,A
+000C4F FD                MOV     R5,A
+000C50 FF                MOV     R7,A
+000C51 6121              AJMP    _LED_device_line_control
+  188: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_6)
+000C53         ?C0044?LED:
+  189: 				{
+000C53 904CFF            MOV     DPTR,#g_variable+040H
+000C56 E0                MOVX    A,@DPTR
+000C57 6405              XRL     A,#05H
+000C59 6002              JZ      $ + 4H
+000C5B C1C6              AJMP    ?C0101?LED
+  190: 					g_variable.backlight_step = BACLIGHT_ON_STEP_1;
+  191: 					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+000C5D F0                MOVX    @DPTR,A
+  192: 				}
+000C5E 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000C61 F0                MOVX    @DPTR,A
+000C62 A3                INC     DPTR
+000C63 F0                MOVX    @DPTR,A
+000C64 FB                MOV     R3,A
+000C65 FD                MOV     R5,A
+000C66 FF                MOV     R7,A
+000C67 6121              AJMP    _LED_device_line_control
+  193: 				break;
+  194: 			case BACKLIGHT_DOWN_TO_UP_ON:
+  195: 				if(g_variable.backlight_step == BACLIGHT_ON_STEP_1)
+000C69         ?C0047?LED:
+  196: 				{
+000C69 904CFF            MOV     DPTR,#g_variable+040H
+000C6C E0                MOVX    A,@DPTR
+000C6D 7010              JNZ     ?C0048?LED
+  197: 					g_variable.backlight_step = BACLIGHT_ON_STEP_2;
+  198: 					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_ON);
+000C6F 04                INC     A
+000C70 F0                MOVX    @DPTR,A
+  199: 				}
+000C71 E4                CLR     A
+000C72 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000C75 F0                MOVX    @DPTR,A
+000C76 A3                INC     DPTR
+000C77 04                INC     A
+000C78 F0                MOVX    @DPTR,A
+000C79 E4                CLR     A
+000C7A FB                MOV     R3,A
+000C7B FD                MOV     R5,A
+000C7C FF                MOV     R7,A
+000C7D 6121              AJMP    _LED_device_line_control
+  200: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_2)
+000C7F         ?C0048?LED:
+  201: 				{
+000C7F 904CFF            MOV     DPTR,#g_variable+040H
+000C82 E0                MOVX    A,@DPTR
+000C83 B40110            CJNE    A,#01H,?C0050?LED
+  202: 					g_variable.backlight_step = BACLIGHT_ON_STEP_3;
+  203: 					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_ON,LED_ON);
+000C86 7402              MOV     A,#02H
+000C88 F0                MOVX    @DPTR,A
+  204: 				}
+000C89 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000C8C 14                DEC     A
+000C8D F0                MOVX    @DPTR,A
+000C8E A3                INC     DPTR
+000C8F F0                MOVX    @DPTR,A
+000C90 E4                CLR     A
+000C91 FB                MOV     R3,A
+000C92 FD                MOV     R5,A
+000C93 FF                MOV     R7,A
+000C94 6121              AJMP    _LED_device_line_control
+  205: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_3)
+000C96         ?C0050?LED:
+  206: 				{
+000C96 904CFF            MOV     DPTR,#g_variable+040H
+000C99 E0                MOVX    A,@DPTR
+000C9A B40211            CJNE    A,#02H,?C0052?LED
+  207: 					g_variable.backlight_step = BACLIGHT_ON_STEP_4;
+  208: 					LED_device_line_control(LED_OFF,LED_OFF,LED_ON,LED_ON,LED_ON);
+000C9D 7403              MOV     A,#03H
+000C9F F0                MOVX    @DPTR,A
+  209: 				}
+000CA0 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000CA3 7401              MOV     A,#01H
+000CA5 F0                MOVX    @DPTR,A
+000CA6 A3                INC     DPTR
+000CA7 F0                MOVX    @DPTR,A
+000CA8 FB                MOV     R3,A
+000CA9 E4                CLR     A
+000CAA FD                MOV     R5,A
+000CAB FF                MOV     R7,A
+000CAC 6121              AJMP    _LED_device_line_control
+  210: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_4)
+000CAE         ?C0052?LED:
+  211: 				{
+000CAE 904CFF            MOV     DPTR,#g_variable+040H
+000CB1 E0                MOVX    A,@DPTR
+000CB2 B40311            CJNE    A,#03H,?C0054?LED
+  212: 					g_variable.backlight_step = BACLIGHT_ON_STEP_5;
+  213: 					LED_device_line_control(LED_OFF,LED_ON,LED_ON,LED_ON,LED_ON);
+000CB5 7404              MOV     A,#04H
+000CB7 F0                MOVX    @DPTR,A
+  214: 				}
+000CB8 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000CBB 7401              MOV     A,#01H
+000CBD F0                MOVX    @DPTR,A
+000CBE A3                INC     DPTR
+000CBF F0                MOVX    @DPTR,A
+000CC0 FB                MOV     R3,A
+000CC1 FD                MOV     R5,A
+000CC2 E4                CLR     A
+000CC3 FF                MOV     R7,A
+000CC4 6121              AJMP    _LED_device_line_control
+  215: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_5)
+000CC6         ?C0054?LED:
+  216: 				{
+000CC6 904CFF            MOV     DPTR,#g_variable+040H
+000CC9 E0                MOVX    A,@DPTR
+000CCA B40410            CJNE    A,#04H,?C0056?LED
+  217: 					g_variable.backlight_step = BACLIGHT_ON_STEP_6;
+  218: 					LED_device_line_control(LED_ON,LED_ON,LED_ON,LED_ON,LED_ON);
+000CCD 7405              MOV     A,#05H
+000CCF F0                MOVX    @DPTR,A
+  219: 				}
+000CD0 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000CD3 7401              MOV     A,#01H
+000CD5 F0                MOVX    @DPTR,A
+000CD6 A3                INC     DPTR
+000CD7 F0                MOVX    @DPTR,A
+000CD8 FB                MOV     R3,A
+000CD9 FD                MOV     R5,A
+000CDA FF                MOV     R7,A
+000CDB 6121              AJMP    _LED_device_line_control
+  220: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_6)
+000CDD         ?C0056?LED:
+  221: 				{
+000CDD 904CFF            MOV     DPTR,#g_variable+040H
+000CE0 E0                MOVX    A,@DPTR
+000CE1 6405              XRL     A,#05H
+000CE3 6002              JZ      $ + 4H
+000CE5 C1C6              AJMP    ?C0101?LED
+  222: 					g_variable.backlight_step = BACLIGHT_ON_STEP_1;
+  223: 					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+000CE7 F0                MOVX    @DPTR,A
+  224: 				}
+000CE8 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000CEB F0                MOVX    @DPTR,A
+000CEC A3                INC     DPTR
+000CED F0                MOVX    @DPTR,A
+000CEE FB                MOV     R3,A
+000CEF FD                MOV     R5,A
+000CF0 FF                MOV     R7,A
+000CF1 6121              AJMP    _LED_device_line_control
+  225: 				break;
+  226: 			case BACKLIGHT_MIDDLE_TO_OUTSIDE:
+  227: 				if(g_variable.backlight_step == BACLIGHT_ON_STEP_1)
+000CF3         ?C0059?LED:
+  228: 				{
+000CF3 904CFF            MOV     DPTR,#g_variable+040H
+000CF6 E0                MOVX    A,@DPTR
+000CF7 700F              JNZ     ?C0060?LED
+  229: 					g_variable.backlight_step = BACLIGHT_ON_STEP_2;
+  230: 					LED_device_line_control(LED_OFF,LED_OFF,LED_ON,LED_OFF,LED_OFF);
+000CF9 04                INC     A
+000CFA F0                MOVX    @DPTR,A
+  231: 				}
+000CFB E4                CLR     A
+000CFC 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000CFF F0                MOVX    @DPTR,A
+000D00 A3                INC     DPTR
+000D01 F0                MOVX    @DPTR,A
+000D02 7B01              MOV     R3,#01H
+000D04 FD                MOV     R5,A
+000D05 FF                MOV     R7,A
+000D06 6121              AJMP    _LED_device_line_control
+  232: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_2)
+000D08         ?C0060?LED:
+  233: 				{
+000D08 904CFF            MOV     DPTR,#g_variable+040H
+000D0B E0                MOVX    A,@DPTR
+000D0C B40111            CJNE    A,#01H,?C0062?LED
+  234: 					g_variable.backlight_step = BACLIGHT_ON_STEP_3;
+  235: 					LED_device_line_control(LED_OFF,LED_ON,LED_OFF,LED_ON,LED_OFF);
+000D0F 7402              MOV     A,#02H
+000D11 F0                MOVX    @DPTR,A
+  236: 				}
+000D12 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000D15 14                DEC     A
+000D16 F0                MOVX    @DPTR,A
+000D17 E4                CLR     A
+000D18 A3                INC     DPTR
+000D19 F0                MOVX    @DPTR,A
+000D1A FB                MOV     R3,A
+000D1B 7D01              MOV     R5,#01H
+000D1D FF                MOV     R7,A
+000D1E 6121              AJMP    _LED_device_line_control
+  237: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_3)
+000D20         ?C0062?LED:
+  238: 				{
+000D20 904CFF            MOV     DPTR,#g_variable+040H
+000D23 E0                MOVX    A,@DPTR
+000D24 B40212            CJNE    A,#02H,?C0064?LED
+  239: 					g_variable.backlight_step = BACLIGHT_ON_STEP_4;
+  240: 					LED_device_line_control(LED_ON,LED_OFF,LED_OFF,LED_OFF,LED_ON);
+000D27 7403              MOV     A,#03H
+000D29 F0                MOVX    @DPTR,A
+  241: 				}
+000D2A E4                CLR     A
+000D2B 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000D2E F0                MOVX    @DPTR,A
+000D2F A3                INC     DPTR
+000D30 04                INC     A
+000D31 F0                MOVX    @DPTR,A
+000D32 E4                CLR     A
+000D33 FB                MOV     R3,A
+000D34 FD                MOV     R5,A
+000D35 7F01              MOV     R7,#01H
+000D37 6121              AJMP    _LED_device_line_control
+  242: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_4)
+000D39         ?C0064?LED:
+  243: 				{
+000D39 904CFF            MOV     DPTR,#g_variable+040H
+000D3C E0                MOVX    A,@DPTR
+000D3D 6403              XRL     A,#03H
+000D3F 6002              JZ      $ + 4H
+000D41 C1C6              AJMP    ?C0101?LED
+  244: 					g_variable.backlight_step = BACLIGHT_ON_STEP_1;
+  245: 					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+000D43 F0                MOVX    @DPTR,A
+  246: 				}
+000D44 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000D47 F0                MOVX    @DPTR,A
+000D48 A3                INC     DPTR
+000D49 F0                MOVX    @DPTR,A
+000D4A FB                MOV     R3,A
+000D4B FD                MOV     R5,A
+000D4C FF                MOV     R7,A
+000D4D 6121              AJMP    _LED_device_line_control
+  247: 				break;	
+  248: 			case BACKLIGHT_OUTSIDE_TO_MIDDLE:
+  249: 				if(g_variable.backlight_step == BACLIGHT_ON_STEP_1)
+000D4F         ?C0067?LED:
+  250: 				{
+000D4F 904CFF            MOV     DPTR,#g_variable+040H
+000D52 E0                MOVX    A,@DPTR
+000D53 7011              JNZ     ?C0068?LED
+  251: 					g_variable.backlight_step = BACLIGHT_ON_STEP_2;
+  252: 					LED_device_line_control(LED_ON,LED_OFF,LED_OFF,LED_OFF,LED_ON);
+000D55 04                INC     A
+000D56 F0                MOVX    @DPTR,A
+  253: 				}
+000D57 E4                CLR     A
+000D58 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000D5B F0                MOVX    @DPTR,A
+000D5C A3                INC     DPTR
+000D5D 04                INC     A
+000D5E F0                MOVX    @DPTR,A
+000D5F E4                CLR     A
+000D60 FB                MOV     R3,A
+000D61 FD                MOV     R5,A
+000D62 7F01              MOV     R7,#01H
+000D64 6121              AJMP    _LED_device_line_control
+  254: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_2)
+000D66         ?C0068?LED:
+  255: 				{
+000D66 904CFF            MOV     DPTR,#g_variable+040H
+000D69 E0                MOVX    A,@DPTR
+000D6A B40111            CJNE    A,#01H,?C0070?LED
+  256: 					g_variable.backlight_step = BACLIGHT_ON_STEP_3;
+  257: 					LED_device_line_control(LED_OFF,LED_ON,LED_OFF,LED_ON,LED_OFF);
+000D6D 7402              MOV     A,#02H
+000D6F F0                MOVX    @DPTR,A
+  258: 				}
+000D70 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000D73 14                DEC     A
+000D74 F0                MOVX    @DPTR,A
+000D75 E4                CLR     A
+000D76 A3                INC     DPTR
+000D77 F0                MOVX    @DPTR,A
+000D78 FB                MOV     R3,A
+000D79 7D01              MOV     R5,#01H
+000D7B FF                MOV     R7,A
+000D7C 6121              AJMP    _LED_device_line_control
+  259: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_3)
+000D7E         ?C0070?LED:
+  260: 				{
+000D7E 904CFF            MOV     DPTR,#g_variable+040H
+000D81 E0                MOVX    A,@DPTR
+000D82 B40210            CJNE    A,#02H,?C0072?LED
+  261: 					g_variable.backlight_step = BACLIGHT_ON_STEP_4;
+  262: 					LED_device_line_control(LED_OFF,LED_OFF,LED_ON,LED_OFF,LED_OFF);					
+000D85 7403              MOV     A,#03H
+000D87 F0                MOVX    @DPTR,A
+  263: 				}
+000D88 E4                CLR     A
+000D89 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000D8C F0                MOVX    @DPTR,A
+000D8D A3                INC     DPTR
+000D8E F0                MOVX    @DPTR,A
+000D8F 7B01              MOV     R3,#01H
+000D91 FD                MOV     R5,A
+000D92 FF                MOV     R7,A
+000D93 6121              AJMP    _LED_device_line_control
+  264: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_4)
+000D95         ?C0072?LED:
+  265: 				{
+000D95 904CFF            MOV     DPTR,#g_variable+040H
+000D98 E0                MOVX    A,@DPTR
+000D99 6403              XRL     A,#03H
+000D9B 6002              JZ      $ + 4H
+000D9D C1C6              AJMP    ?C0101?LED
+  266: 					g_variable.backlight_step = BACLIGHT_ON_STEP_1;
+  267: 					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+000D9F F0                MOVX    @DPTR,A
+  268: 				}
+000DA0 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000DA3 F0                MOVX    @DPTR,A
+000DA4 A3                INC     DPTR
+000DA5 F0                MOVX    @DPTR,A
+000DA6 FB                MOV     R3,A
+000DA7 FD                MOV     R5,A
+000DA8 FF                MOV     R7,A
+000DA9 6121              AJMP    _LED_device_line_control
+  269: 				break;
+  270: 			case BACKLIGHT_UP_TO_DOWN_ON_OFF:
+  271: 				if(g_variable.backlight_step == BACLIGHT_ON_STEP_1)
+000DAB         ?C0075?LED:
+  272: 				{
+000DAB 904CFF            MOV     DPTR,#g_variable+040H
+000DAE E0                MOVX    A,@DPTR
+000DAF 700F              JNZ     ?C0076?LED
+  273: 					g_variable.backlight_step = BACLIGHT_ON_STEP_2;
+  274: 					LED_device_line_control(LED_ON,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+000DB1 04                INC     A
+000DB2 F0                MOVX    @DPTR,A
+  275: 				}
+000DB3 E4                CLR     A
+000DB4 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000DB7 F0                MOVX    @DPTR,A
+000DB8 A3                INC     DPTR
+000DB9 F0                MOVX    @DPTR,A
+000DBA FB                MOV     R3,A
+000DBB FD                MOV     R5,A
+000DBC 7F01              MOV     R7,#01H
+000DBE 6121              AJMP    _LED_device_line_control
+  276: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_2)
+000DC0         ?C0076?LED:
+  277: 				{
+000DC0 904CFF            MOV     DPTR,#g_variable+040H
+000DC3 E0                MOVX    A,@DPTR
+000DC4 B40110            CJNE    A,#01H,?C0078?LED
+  278: 					g_variable.backlight_step = BACLIGHT_ON_STEP_3;
+  279: 					LED_device_line_control(LED_OFF,LED_ON,LED_OFF,LED_OFF,LED_OFF);
+000DC7 7402              MOV     A,#02H
+000DC9 F0                MOVX    @DPTR,A
+  280: 				}
+000DCA E4                CLR     A
+000DCB 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000DCE F0                MOVX    @DPTR,A
+000DCF A3                INC     DPTR
+000DD0 F0                MOVX    @DPTR,A
+000DD1 FB                MOV     R3,A
+000DD2 7D01              MOV     R5,#01H
+000DD4 FF                MOV     R7,A
+000DD5 6121              AJMP    _LED_device_line_control
+  281: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_3)
+000DD7         ?C0078?LED:
+  282: 				{
+000DD7 904CFF            MOV     DPTR,#g_variable+040H
+000DDA E0                MOVX    A,@DPTR
+000DDB B40210            CJNE    A,#02H,?C0080?LED
+  283: 					g_variable.backlight_step = BACLIGHT_ON_STEP_4;
+  284: 					LED_device_line_control(LED_OFF,LED_OFF,LED_ON,LED_OFF,LED_OFF);
+000DDE 7403              MOV     A,#03H
+000DE0 F0                MOVX    @DPTR,A
+  285: 				}
+000DE1 E4                CLR     A
+000DE2 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000DE5 F0                MOVX    @DPTR,A
+000DE6 A3                INC     DPTR
+000DE7 F0                MOVX    @DPTR,A
+000DE8 7B01              MOV     R3,#01H
+000DEA FD                MOV     R5,A
+000DEB FF                MOV     R7,A
+000DEC 6121              AJMP    _LED_device_line_control
+  286: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_4)
+000DEE         ?C0080?LED:
+  287: 				{
+000DEE 904CFF            MOV     DPTR,#g_variable+040H
+000DF1 E0                MOVX    A,@DPTR
+000DF2 B40311            CJNE    A,#03H,?C0082?LED
+  288: 					g_variable.backlight_step = BACLIGHT_ON_STEP_5;
+  289: 					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_ON,LED_OFF);
+000DF5 7404              MOV     A,#04H
+000DF7 F0                MOVX    @DPTR,A
+  290: 				}
+000DF8 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000DFB 7401              MOV     A,#01H
+000DFD F0                MOVX    @DPTR,A
+000DFE E4                CLR     A
+000DFF A3                INC     DPTR
+000E00 F0                MOVX    @DPTR,A
+000E01 FB                MOV     R3,A
+000E02 FD                MOV     R5,A
+000E03 FF                MOV     R7,A
+000E04 6121              AJMP    _LED_device_line_control
+  291: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_5)
+000E06         ?C0082?LED:
+  292: 				{
+000E06 904CFF            MOV     DPTR,#g_variable+040H
+000E09 E0                MOVX    A,@DPTR
+000E0A B40411            CJNE    A,#04H,?C0084?LED
+  293: 					g_variable.backlight_step = BACLIGHT_ON_STEP_6;
+  294: 					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_ON);
+000E0D 7405              MOV     A,#05H
+000E0F F0                MOVX    @DPTR,A
+  295: 				}
+000E10 E4                CLR     A
+000E11 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000E14 F0                MOVX    @DPTR,A
+000E15 A3                INC     DPTR
+000E16 04                INC     A
+000E17 F0                MOVX    @DPTR,A
+000E18 E4                CLR     A
+000E19 FB                MOV     R3,A
+000E1A FD                MOV     R5,A
+000E1B FF                MOV     R7,A
+000E1C 6121              AJMP    _LED_device_line_control
+  296: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_6)
+000E1E         ?C0084?LED:
+  297: 				{
+000E1E 904CFF            MOV     DPTR,#g_variable+040H
+000E21 E0                MOVX    A,@DPTR
+000E22 6405              XRL     A,#05H
+000E24 6002              JZ      $ + 4H
+000E26 C1C6              AJMP    ?C0101?LED
+  298: 					g_variable.backlight_step = BACLIGHT_ON_STEP_1;
+  299: 					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+000E28 F0                MOVX    @DPTR,A
+  300: 				}
+000E29 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000E2C F0                MOVX    @DPTR,A
+000E2D A3                INC     DPTR
+000E2E F0                MOVX    @DPTR,A
+000E2F FB                MOV     R3,A
+000E30 FD                MOV     R5,A
+000E31 FF                MOV     R7,A
+000E32 6121              AJMP    _LED_device_line_control
+  301: 				break;
+  302: 			case BACKLIGHT_DOWN_TO_UP_ON_OFF:
+  303: 				if(g_variable.backlight_step == BACLIGHT_ON_STEP_1)
+000E34         ?C0087?LED:
+  304: 				{
+000E34 904CFF            MOV     DPTR,#g_variable+040H
+000E37 E0                MOVX    A,@DPTR
+000E38 7010              JNZ     ?C0088?LED
+  305: 					g_variable.backlight_step = BACLIGHT_ON_STEP_2;
+  306: 					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_ON);					
+000E3A 04                INC     A
+000E3B F0                MOVX    @DPTR,A
+  307: 				}
+000E3C E4                CLR     A
+000E3D 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000E40 F0                MOVX    @DPTR,A
+000E41 A3                INC     DPTR
+000E42 04                INC     A
+000E43 F0                MOVX    @DPTR,A
+000E44 E4                CLR     A
+000E45 FB                MOV     R3,A
+000E46 FD                MOV     R5,A
+000E47 FF                MOV     R7,A
+000E48 6121              AJMP    _LED_device_line_control
+  308: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_2)
+000E4A         ?C0088?LED:
+  309: 				{
+000E4A 904CFF            MOV     DPTR,#g_variable+040H
+000E4D E0                MOVX    A,@DPTR
+000E4E B40110            CJNE    A,#01H,?C0090?LED
+  310: 					g_variable.backlight_step = BACLIGHT_ON_STEP_3;
+  311: 					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_ON,LED_OFF);					
+000E51 7402              MOV     A,#02H
+000E53 F0                MOVX    @DPTR,A
+  312: 				}
+000E54 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000E57 14                DEC     A
+000E58 F0                MOVX    @DPTR,A
+000E59 E4                CLR     A
+000E5A A3                INC     DPTR
+000E5B F0                MOVX    @DPTR,A
+000E5C FB                MOV     R3,A
+000E5D FD                MOV     R5,A
+000E5E FF                MOV     R7,A
+000E5F 6121              AJMP    _LED_device_line_control
+  313: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_3)
+000E61         ?C0090?LED:
+  314: 				{
+000E61 904CFF            MOV     DPTR,#g_variable+040H
+000E64 E0                MOVX    A,@DPTR
+000E65 B40210            CJNE    A,#02H,?C0092?LED
+  315: 					g_variable.backlight_step = BACLIGHT_ON_STEP_4;
+  316: 					LED_device_line_control(LED_OFF,LED_OFF,LED_ON,LED_OFF,LED_OFF);
+000E68 7403              MOV     A,#03H
+000E6A F0                MOVX    @DPTR,A
+  317: 				}
+000E6B E4                CLR     A
+000E6C 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000E6F F0                MOVX    @DPTR,A
+000E70 A3                INC     DPTR
+000E71 F0                MOVX    @DPTR,A
+000E72 7B01              MOV     R3,#01H
+000E74 FD                MOV     R5,A
+000E75 FF                MOV     R7,A
+000E76 6121              AJMP    _LED_device_line_control
+  318: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_4)
+000E78         ?C0092?LED:
+  319: 				{
+000E78 904CFF            MOV     DPTR,#g_variable+040H
+000E7B E0                MOVX    A,@DPTR
+000E7C B40310            CJNE    A,#03H,?C0094?LED
+  320: 					g_variable.backlight_step = BACLIGHT_ON_STEP_5;
+  321: 					LED_device_line_control(LED_OFF,LED_ON,LED_OFF,LED_OFF,LED_OFF);
+000E7F 7404              MOV     A,#04H
+000E81 F0                MOVX    @DPTR,A
+  322: 				}
+000E82 E4                CLR     A
+000E83 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000E86 F0                MOVX    @DPTR,A
+000E87 A3                INC     DPTR
+000E88 F0                MOVX    @DPTR,A
+000E89 FB                MOV     R3,A
+000E8A 7D01              MOV     R5,#01H
+000E8C FF                MOV     R7,A
+000E8D 6121              AJMP    _LED_device_line_control
+  323: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_5)
+000E8F         ?C0094?LED:
+  324: 				{
+000E8F 904CFF            MOV     DPTR,#g_variable+040H
+000E92 E0                MOVX    A,@DPTR
+000E93 B40410            CJNE    A,#04H,?C0096?LED
+  325: 					g_variable.backlight_step = BACLIGHT_ON_STEP_6;
+  326: 					LED_device_line_control(LED_ON,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+000E96 7405              MOV     A,#05H
+000E98 F0                MOVX    @DPTR,A
+  327: 				}
+000E99 E4                CLR     A
+000E9A 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000E9D F0                MOVX    @DPTR,A
+000E9E A3                INC     DPTR
+000E9F F0                MOVX    @DPTR,A
+000EA0 FB                MOV     R3,A
+000EA1 FD                MOV     R5,A
+000EA2 7F01              MOV     R7,#01H
+000EA4 6121              AJMP    _LED_device_line_control
+  328: 				else if(g_variable.backlight_step == BACLIGHT_ON_STEP_6)
+000EA6         ?C0096?LED:
+  329: 				{
+000EA6 904CFF            MOV     DPTR,#g_variable+040H
+000EA9 E0                MOVX    A,@DPTR
+000EAA 6405              XRL     A,#05H
+000EAC 7018              JNZ     ?C0101?LED
+  330: 					g_variable.backlight_step = BACLIGHT_ON_STEP_1;
+  331: 					LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+000EAE F0                MOVX    @DPTR,A
+  332: 				}
+000EAF 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000EB2 F0                MOVX    @DPTR,A
+000EB3 A3                INC     DPTR
+000EB4 F0                MOVX    @DPTR,A
+000EB5 FB                MOV     R3,A
+000EB6 FD                MOV     R5,A
+000EB7 FF                MOV     R7,A
+000EB8 6121              AJMP    _LED_device_line_control
+  333: 				break;
+  334: 			case BACKLIGHT_OFF:
+  335: 			default:
+  336: 				LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+000EBA         ?C0100?LED:
+  337: 				break;
+000EBA E4                CLR     A
+000EBB 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000EBE F0                MOVX    @DPTR,A
+000EBF A3                INC     DPTR
+000EC0 F0                MOVX    @DPTR,A
+000EC1 FB                MOV     R3,A
+000EC2 FD                MOV     R5,A
+000EC3 FF                MOV     R7,A
+000EC4 7121              ACALL   _LED_device_line_control
+  338: 				
+  339: 
+  340: 		}
+  341: 	}
+  342: }
+000EC6         ?C0101?LED:
+000EC6 22                RET     
+----- FUNCTION backlight_led_process (END) -------
+
+
+----- FUNCTION ?L?COM0001 (BEGIN) -----
+000EC7 F156              ACALL   YC_PWM_disable
+----- FUNCTION LED_all_shutdown (BEGIN) -----
+ FILE: 'led.c'
+    4: void LED_all_shutdown()
+    5: {
+    6: 	GPIO_SetOutput(CAPS_LED_GPIO,LED_OFF_1);
+    7: 	GPIO_SetOutput(WIN_LOCK_LED_GPIO,LED_OFF_1);
+000EC9 D206              SETB    ?_GPIO_SetOutput?BIT
+000ECB 7F1D              MOV     R7,#01DH
+000ECD 7160              ACALL   _GPIO_SetOutput
+    8: 	GPIO_SetOutput(LOWPOWER_LED_GPIO, LED_OFF_1);
+000ECF D206              SETB    ?_GPIO_SetOutput?BIT
+000ED1 7F1F              MOV     R7,#01FH
+000ED3 7160              ACALL   _GPIO_SetOutput
+    9: 	LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);	
+000ED5 D206              SETB    ?_GPIO_SetOutput?BIT
+000ED7 7F1C              MOV     R7,#01CH
+000ED9 7160              ACALL   _GPIO_SetOutput
+   10: }
+000EDB E4                CLR     A
+000EDC 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000EDF F0                MOVX    @DPTR,A
+000EE0 A3                INC     DPTR
+000EE1 F0                MOVX    @DPTR,A
+000EE2 FB                MOV     R3,A
+000EE3 FD                MOV     R5,A
+000EE4 FF                MOV     R7,A
+000EE5 6121              AJMP    _LED_device_line_control
+----- FUNCTION LED_all_shutdown (END) -------
+
+
+----- FUNCTION System_long_sleep (BEGIN) -----
+ FILE: 'sys.c'
+   77: void System_long_sleep()
+   78: { 
+   79: 	g_variable.g24_long_sleep_flag = 1;
+   80: #ifdef PC_SLEEP_STATUS_GET	
+000EE7 904D05            MOV     DPTR,#g_variable+046H
+000EEA 7401              MOV     A,#01H
+000EEC F0                MOVX    @DPTR,A
+   81: 	g_variable.sys_numlockled_on_timer = 0;
+000EED E4                CLR     A
+000EEE 904CE6            MOV     DPTR,#g_variable+027H
+000EF1 F0                MOVX    @DPTR,A
+   82: 	g_variable.sys_capslockled_on_timer = 0;
+000EF2 A3                INC     DPTR
+000EF3 F0                MOVX    @DPTR,A
+   83: 	g_variable.sys_scrolllockled_on_timer = 0;
+000EF4 A3                INC     DPTR
+000EF5 F0                MOVX    @DPTR,A
+   84: 	m_caps_num_lock = 0xf0;
+000EF6 904CB7            MOV     DPTR,#m_caps_num_lock
+000EF9 74F0              MOV     A,#0F0H
+000EFB F0                MOVX    @DPTR,A
+   85: 	m_caps_num_lock_last = 0xf0; 
+000EFC 904DE8            MOV     DPTR,#m_caps_num_lock_last
+000EFF F0                MOVX    @DPTR,A
+   86: #endif
+   87: 	g_variable.backlight_level = 0;
+000F00 E4                CLR     A
+000F01 904CFD            MOV     DPTR,#g_variable+03EH
+000F04 F0                MOVX    @DPTR,A
+   88: 	g_variable.battery_low_led_flash_flag = 0;
+000F05 904CF7            MOV     DPTR,#g_variable+038H
+000F08 F0                MOVX    @DPTR,A
+   89: 	g_variable.battery_low_led_flash_interval = 0;		
+000F09 904CE2            MOV     DPTR,#g_variable+023H
+000F0C F0                MOVX    @DPTR,A
+   90: 	m_24g_pairing_sm = 0xff;
+000F0D 904BEF            MOV     DPTR,#m_24g_pairing_sm
+000F10 74FF              MOV     A,#0FFH
+000F12 F0                MOVX    @DPTR,A
+   91: 	m_24g_enter_hibernate[0]	= 0xff;
+000F13 904D3D            MOV     DPTR,#m_24g_enter_hibernate
+000F16 F0                MOVX    @DPTR,A
+   92: 	m_24g_enter_hibernate[1]	= 0xff;
+000F17 A3                INC     DPTR
+000F18 F0                MOVX    @DPTR,A
+   93: 	m_24g_enter_hibernate[2]	= 0xff;
+000F19 A3                INC     DPTR
+000F1A F0                MOVX    @DPTR,A
+   94: 	m_24g_enter_hibernate[3]	= 0xff;
+000F1B A3                INC     DPTR
+000F1C F0                MOVX    @DPTR,A
+   95: 	YC_PWM_disable();
+000F1D 80A8              SJMP    ?L?COM0001
+   96: 	LED_all_shutdown();
+----- FUNCTION System_long_sleep (END) -------
+
+
+----- FUNCTION LED_timer500ms (BEGIN) -----
+ FILE: 'sys.c'
+  192: void LED_timer500ms()
+  193: {
+  194: 	if (power_on_flag != 2)
+  195: 		return;
+000F1F 904DF4            MOV     DPTR,#power_on_flag
+000F22 E0                MOVX    A,@DPTR
+000F23 6402              XRL     A,#02H
+000F25 702E              JNZ     ?C0024?SYS
+000F27         ?C0023?SYS:
+  196:  	if (g_variable.pairing_g24_timeout != 0)
+000F27 904CEE            MOV     DPTR,#g_variable+02FH
+000F2A E0                MOVX    A,@DPTR
+000F2B 6028              JZ      ?C0024?SYS
+  197: 	{
+  198: 		YC_PWM_disable();
+000F2D F156              ACALL   YC_PWM_disable
+  199: 		GPIO_SetOutput(BACKLIGHT_PWM_GPIO,LED_OFF);
+000F2F C206              CLR     ?_GPIO_SetOutput?BIT
+000F31 7F16              MOV     R7,#016H
+000F33 7160              ACALL   _GPIO_SetOutput
+  200: 		if(g_variable.pairing_g24_timeout & 0x01)
+000F35 904CEE            MOV     DPTR,#g_variable+02FH
+000F38 E0                MOVX    A,@DPTR
+000F39 30E00D            JNB     ACC.0,?C0026?SYS
+  201: 			LED_device_line_control(LED_ON,LED_ON,LED_ON,LED_ON,LED_ON);
+000F3C 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000F3F 7401              MOV     A,#01H
+000F41 F0                MOVX    @DPTR,A
+000F42 A3                INC     DPTR
+000F43 F0                MOVX    @DPTR,A
+000F44 FB                MOV     R3,A
+000F45 FD                MOV     R5,A
+000F46 FF                MOV     R7,A
+000F47 6121              AJMP    _LED_device_line_control
+000F49         ?C0026?SYS:
+  202: 		else
+  203: 			LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+000F49 E4                CLR     A
+000F4A 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+000F4D F0                MOVX    @DPTR,A
+000F4E A3                INC     DPTR
+000F4F F0                MOVX    @DPTR,A
+000F50 FB                MOV     R3,A
+000F51 FD                MOV     R5,A
+000F52 FF                MOV     R7,A
+000F53 7121              ACALL   _LED_device_line_control
+  204: 	}
+  205: }
+000F55         ?C0024?SYS:
+000F55 22                RET     
+----- FUNCTION LED_timer500ms (END) -------
+
+
+----- FUNCTION YC_PWM_disable (BEGIN) -----
+ FILE: 'pwm.c'
+   54: void YC_PWM_disable()
+   55: {
+   56: 	if((g_variable.pairing_timeout == 0) && (g_variable.pwm_lpm_mode_flag == 1))
+   57: 	{
+000F56 904CE9            MOV     DPTR,#g_variable+02AH
+000F59 E0                MOVX    A,@DPTR
+000F5A 700E              JNZ     ?C0012?PWM
+000F5C 904CFA            MOV     DPTR,#g_variable+03BH
+000F5F E0                MOVX    A,@DPTR
+000F60 B40107            CJNE    A,#01H,?C0012?PWM
+   58: 		g_variable.pwm_lpm_mode_flag = 0;
+   59: 		m_lpm_mode = 1;
+000F63 E4                CLR     A
+000F64 F0                MOVX    @DPTR,A
+   60: 	}
+000F65 904131            MOV     DPTR,#m_lpm_mode
+000F68 04                INC     A
+000F69 F0                MOVX    @DPTR,A
+   61: 	REG_CLK_OFF(1)  |= 0x20;	//turn on PWM clock
+000F6A         ?C0012?PWM:
+   62: 	REG_GPIO_SEL(2)  &= ~0x80;	//set gpio22 to PWM
+000F6A 908051            MOV     DPTR,#08051H
+000F6D E0                MOVX    A,@DPTR
+000F6E 4420              ORL     A,#020H
+000F70 F0                MOVX    @DPTR,A
+   63: 
+000F71 908082            MOV     DPTR,#08082H
+000F74 E0                MOVX    A,@DPTR
+000F75 547F              ANL     A,#07FH
+000F77 F0                MOVX    @DPTR,A
+   64: 	REG_PWM_ENABLE &= ~0x40;
+000F78 908085            MOV     DPTR,#08085H
+000F7B E0                MOVX    A,@DPTR
+000F7C 54BF              ANL     A,#0BFH
+000F7E F0                MOVX    @DPTR,A
+   65: }
+000F7F 22                RET     
+----- FUNCTION YC_PWM_disable (END) -------
+
+
+----- FUNCTION YC_System_Main (BEGIN) -----
+ FILE: 'sys.c'
+  424: void YC_System_Main(void)
+  425: {
+  426: 	kb_cb_init();
+  427: 	while(1) {
+000F80 122AE6            LCALL   kb_cb_init
+000F83         ?C0076?SYS:
+  428: 		IPC_DealSingleStep();
+  429: 		kb_need_keyscan();
+000F83 122C60            LCALL   IPC_DealSingleStep
+  430: 		YC_update_eeprom_data();
+000F86 12174D            LCALL   kb_need_keyscan
+  431: 		LED_handle();
+000F89 121010            LCALL   YC_update_eeprom_data
+  432: 
+000F8C 12074A            LCALL   LED_handle
+  433: 	#ifdef PC_SLEEP_STATUS_GET		
+  434: 		if(m_pc_sleep_flag)
+000F8F 904D76            MOV     DPTR,#m_pc_sleep_flag
+000F92 E0                MOVX    A,@DPTR
+000F93 6002              JZ      ?C0078?SYS
+  435: 		{
+  436: 			System_long_sleep();
+000F95 D1E7              ACALL   System_long_sleep
+  437: 		}
+000F97         ?C0078?SYS:
+  438: 	#endif	
+  439: 
+  440: 		
+  441: 		switch (current_task) {
+000F97 900B7E            MOV     DPTR,#current_task
+000F9A E0                MOVX    A,@DPTR
+000F9B 14                DEC     A
+000F9C 600F              JZ      ?C0083?SYS
+000F9E 24FE              ADD     A,#0FEH
+000FA0 70E1              JNZ     ?C0076?SYS
+  442: 		case FIX_ENTER_HIBERNATE:
+000FA2         ?C0080?SYS:
+  443: 			KS_Unistall();
+000FA2 122340            LCALL   KS_Unistall
+  444: 			//GPIO_SetWakeupByCurrentState(BT_BUTTON_GPIO);
+  445: 			YC_PWM_disable();
+000FA5 F156              ACALL   YC_PWM_disable
+  446: 			LED_all_shutdown();
+000FA7 D1C9              ACALL   LED_all_shutdown
+  447: 			IPC_WaitLpm();	/*<wait enter lpm,do nothing*/
+000FA9 F1D6              ACALL   IPC_WaitLpm
+000FAB         ?C0081?SYS:
+  448: 			while(1);
+000FAB 80FE              SJMP    ?C0081?SYS
+  449: 			break;
+  450: 			
+  451: 		case FIX_ENTER_LPM:
+000FAD         ?C0083?SYS:
+  452: 			if (g_variable.delay_enter_lpm_timer ||g_variable.lockLpm ||g_variable.one_key_press_wait_release_timer
+000FAD 904CEA            MOV     DPTR,#g_variable+02BH
+000FB0 E0                MOVX    A,@DPTR
+000FB1 700C              JNZ     ?C0085?SYS
+000FB3 904CEC            MOV     DPTR,#g_variable+02DH
+000FB6 E0                MOVX    A,@DPTR
+000FB7 7006              JNZ     ?C0085?SYS
+000FB9 904CF8            MOV     DPTR,#g_variable+039H
+000FBC E0                MOVX    A,@DPTR
+000FBD 6005              JZ      ?C0084?SYS
+000FBF         ?C0085?SYS:
+  453: 			) 
+  454: 			{
+  455: 				IPC_AbandonLpm();
+000FBF 122D2C            LCALL   IPC_AbandonLpm
+  456: 				break;
+000FC2 80BF              SJMP    ?C0076?SYS
+  457: 			}
+000FC4         ?C0084?SYS:
+  458: 			else
+  459: 			{
+  460: 				KS_Unistall();
+000FC4 122340            LCALL   KS_Unistall
+  461: 				if(g_variable.g24_long_sleep_flag)
+000FC7 904D05            MOV     DPTR,#g_variable+046H
+000FCA E0                MOVX    A,@DPTR
+000FCB 6002              JZ      ?C0087?SYS
+  462: 				{
+  463: 					YC_PWM_disable();
+000FCD D1C7              ACALL   ?L?COM0001
+  464: 					LED_all_shutdown();
+  465: 				}	
+000FCF         ?C0087?SYS:
+  466: 				IPC_WaitLpm();	/*<wait enter lpm,do nothing*/
+000FCF F1D6              ACALL   IPC_WaitLpm
+  467: 				break;
+000FD1 80B0              SJMP    ?C0076?SYS
+  468: 			}
+  469: 		}
+  470: 	}
+000FD3 80AE              SJMP    ?C0076?SYS
+000FD5 22                RET     
+----- FUNCTION YC_System_Main (END) -------
+
+
+----- FUNCTION IPC_WaitLpm (BEGIN) -----
+000FD6 E4                CLR     A
+000FD7 900B7F            MOV     DPTR,#lpm_flag
+000FDA F0                MOVX    @DPTR,A
+000FDB 900B7E            MOV     DPTR,#current_task
+000FDE F0                MOVX    @DPTR,A
+000FDF 7F01              MOV     R7,#01H
+000FE1 412D              AJMP    _Delay1ms
+----- FUNCTION IPC_WaitLpm (END) -------
+
+
+----- FUNCTION YC_clear_reconnect_flag (BEGIN) -----
+ FILE: 'bluetooth.c'
+   42: void YC_clear_reconnect_flag()  
+   43: {
+   44: 	g_variable.recon_count = 0;
+   45: }
+000FE3 E4                CLR     A
+000FE4 904CF0            MOV     DPTR,#g_variable+031H
+000FE7 F0                MOVX    @DPTR,A
+   46: 
+000FE8 22                RET     
+----- FUNCTION YC_clear_reconnect_flag (END) -------
+
+
+----- FUNCTION System_Hardware_init (BEGIN) -----
+ FILE: 'sys.c'
+   52: static void System_Hardware_init()
+   53: {
+   54: 	System_IIC_clk_setup();
+   55: 	KS_Initialize();
+000FE9 F1F2              ACALL   System_IIC_clk_setup
+   56: 	LED_all_shutdown();
+000FEB 122265            LCALL   KS_Initialize
+   57: }
+000FEE C1C9              AJMP    LED_all_shutdown
+----- FUNCTION System_Hardware_init (END) -------
+
+
+----- FUNCTION main (BEGIN) -----
+ FILE: 'ram.c'
+    5: void main()
+    6: {
+    7: 	YC_System_Main();
+    8: }
+000FF0 808E              SJMP    YC_System_Main
+----- FUNCTION main (END) -------
+
+
+----- FUNCTION System_IIC_clk_setup (BEGIN) -----
+ FILE: 'sys.c'
+   42: static void System_IIC_clk_setup()		// 400KHz
+   43: {
+   44: 	REG_IICD_SCL_LOW  =  0x0d;
+   45:    	REG_IICD_SCL_HIGH  =  0x0e;
+000FF2 908091            MOV     DPTR,#08091H
+000FF5 740D              MOV     A,#0DH
+000FF7 F0                MOVX    @DPTR,A
+   46:    	REG_IICD_START_SETUP  = 0x0e;
+000FF8 A3                INC     DPTR
+000FF9 04                INC     A
+000FFA F0                MOVX    @DPTR,A
+   47:    	REG_IICD_START_HOLD  = 0x0e;
+000FFB A3                INC     DPTR
+000FFC F0                MOVX    @DPTR,A
+   48:   	REG_IICD_STOP_SETUP  = 0x0e;
+000FFD A3                INC     DPTR
+000FFE F0                MOVX    @DPTR,A
+   49:    	REG_IICD_DATA_SETUP  = 0x0d;
+000FFF A3                INC     DPTR
+001000 F0                MOVX    @DPTR,A
+   50: }
+001001 A3                INC     DPTR
+001002 14                DEC     A
+001003 F0                MOVX    @DPTR,A
+   51: 
+001004 22                RET     
+----- FUNCTION System_IIC_clk_setup (END) -------
+
+
+----- FUNCTION YC_start_reconnect (BEGIN) -----
+ FILE: 'bluetooth.c'
+   60: void YC_start_reconnect()
+   61: {
+   62: 	power_on_flag = 2;
+   63: 	YC_key_action_handle(KEY_START_24G);
+001005 904DF4            MOV     DPTR,#power_on_flag
+001008 7402              MOV     A,#02H
+00100A F0                MOVX    @DPTR,A
+   64: }
+00100B 7F08              MOV     R7,#08H
+00100D 020825            LJMP    _YC_key_action_handle
+----- FUNCTION YC_start_reconnect (END) -------
+
+
+----- FUNCTION YC_update_eeprom_data (BEGIN) -----
+ FILE: 'bluetooth.c'
+   67: void YC_update_eeprom_data()
+   68: {
+   69: 	if (g_variable.update_eeprom_flag)				//bt3.0  bt4.2 record information save
+   70: 	{
+001010 904CBF            MOV     DPTR,#g_variable
+001013 E0                MOVX    A,@DPTR
+001014 603D              JZ      ?C0016?BLUETOOTH
+   71: 		#ifdef  ADC_ENABLE
+   72: 		if(m_adcCurrentValue < g_variable.battery_level_shutdown)
+001016 904CE0            MOV     DPTR,#g_variable+021H
+001019 E0                MOVX    A,@DPTR
+00101A FE                MOV     R6,A
+00101B A3                INC     DPTR
+00101C E0                MOVX    A,@DPTR
+00101D FF                MOV     R7,A
+00101E C3                CLR     C
+00101F 904C96            MOV     DPTR,#m_adcCurrentValue+01H
+001022 E0                MOVX    A,@DPTR
+001023 9F                SUBB    A,R7
+001024 904C95            MOV     DPTR,#m_adcCurrentValue
+001027 E0                MOVX    A,@DPTR
+001028 9E                SUBB    A,R6
+001029 4028              JC      ?C0016?BLUETOOTH
+00102B         ?C0015?BLUETOOTH:
+   73: 			return;
+   74: 		#endif
+   75: 		GPIO_Setout(EEPROM_WP_GPIO,0);
+00102B C201              CLR     ?_GPIO_Setout?BIT
+00102D 7FFF              MOV     R7,#0FFH
+00102F 1207DE            LCALL   _GPIO_Setout
+   76: 		IIC_WriteBlock(EEPROM_RECON_INFO_BASE_6,4 , (byte *)m_24g_addr);
+001032 7B01              MOV     R3,#01H
+001034 7A4C              MOV     R2,#HIGH m_24g_addr
+001036 7900              MOV     R1,#LOW m_24g_addr
+001038 7D04              MOV     R5,#04H
+00103A 7C00              MOV     R4,#00H
+00103C 7FF0              MOV     R7,#0F0H
+00103E 7E7F              MOV     R6,#07FH
+001040 1154              ACALL   _IIC_WriteBlock
+   77: 		GPIO_Setout(EEPROM_WP_GPIO,1);
+001042 D201              SETB    ?_GPIO_Setout?BIT
+001044 7FFF              MOV     R7,#0FFH
+001046 1207DE            LCALL   _GPIO_Setout
+   78: 		Delay1ms(10);
+001049 7F0A              MOV     R7,#0AH
+00104B 120A2D            LCALL   _Delay1ms
+   79: 		g_variable.update_eeprom_flag = 0;
+00104E E4                CLR     A
+00104F 904CBF            MOV     DPTR,#g_variable
+001052 F0                MOVX    @DPTR,A
+   80: 	}
+   81: }
+001053         ?C0016?BLUETOOTH:
+001053 22                RET     
+----- FUNCTION YC_update_eeprom_data (END) -------
+
+
+----- FUNCTION _IIC_WriteBlock (BEGIN) -----
+001054 904E3F            MOV     DPTR,#addr
+001057 EE                MOV     A,R6
+001058 F0                MOVX    @DPTR,A
+001059 A3                INC     DPTR
+00105A EF                MOV     A,R7
+00105B F0                MOVX    @DPTR,A
+00105C A3                INC     DPTR
+00105D EC                MOV     A,R4
+00105E F0                MOVX    @DPTR,A
+00105F A3                INC     DPTR
+001060 ED                MOV     A,R5
+001061 F0                MOVX    @DPTR,A
+001062 A3                INC     DPTR
+001063 EB                MOV     A,R3
+001064 F0                MOVX    @DPTR,A
+001065 A3                INC     DPTR
+001066 EA                MOV     A,R2
+001067 F0                MOVX    @DPTR,A
+001068 A3                INC     DPTR
+001069 E9                MOV     A,R1
+00106A F0                MOVX    @DPTR,A
+00106B         ?C0007?IIC:
+00106B 904E41            MOV     DPTR,#len
+00106E E0                MOVX    A,@DPTR
+00106F 7002              JNZ     ?C0012?IIC
+001071 A3                INC     DPTR
+001072 E0                MOVX    A,@DPTR
+001073         ?C0012?IIC:
+001073 7002              JNZ     $ + 4H
+001075 2101              AJMP    ?C0011?IIC
+001077 904E3F            MOV     DPTR,#addr
+00107A E0                MOVX    A,@DPTR
+00107B FE                MOV     R6,A
+00107C A3                INC     DPTR
+00107D E0                MOVX    A,@DPTR
+00107E FF                MOV     R7,A
+00107F 440F              ORL     A,#0FH
+001081 2401              ADD     A,#01H
+001083 FD                MOV     R5,A
+001084 E4                CLR     A
+001085 3E                ADDC    A,R6
+001086 FC                MOV     R4,A
+;---- Variable 'cris' assigned to Register 'R4/R5' ----
+001087 C3                CLR     C
+001088 ED                MOV     A,R5
+001089 9F                SUBB    A,R7
+00108A FF                MOV     R7,A
+00108B EC                MOV     A,R4
+00108C 9E                SUBB    A,R6
+00108D FE                MOV     R6,A
+00108E 904E46            MOV     DPTR,#curr_len
+001091 F0                MOVX    @DPTR,A
+001092 A3                INC     DPTR
+001093 EF                MOV     A,R7
+001094 F0                MOVX    @DPTR,A
+001095 904E41            MOV     DPTR,#len
+001098 E0                MOVX    A,@DPTR
+001099 FC                MOV     R4,A
+00109A A3                INC     DPTR
+00109B E0                MOVX    A,@DPTR
+00109C FD                MOV     R5,A
+00109D D3                SETB    C
+00109E 9F                SUBB    A,R7
+00109F EC                MOV     A,R4
+0010A0 9E                SUBB    A,R6
+0010A1 400A              JC      ?C0009?IIC
+0010A3 904E46            MOV     DPTR,#curr_len
+0010A6 E0                MOVX    A,@DPTR
+0010A7 FE                MOV     R6,A
+0010A8 A3                INC     DPTR
+0010A9 E0                MOVX    A,@DPTR
+0010AA FF                MOV     R7,A
+0010AB 8004              SJMP    ?C0010?IIC
+0010AD         ?C0009?IIC:
+0010AD AE04              MOV     R6,AR4
+0010AF AF05              MOV     R7,AR5
+0010B1         ?C0010?IIC:
+0010B1 904E46            MOV     DPTR,#curr_len
+0010B4 EE                MOV     A,R6
+0010B5 F0                MOVX    @DPTR,A
+0010B6 FC                MOV     R4,A
+0010B7 A3                INC     DPTR
+0010B8 EF                MOV     A,R7
+0010B9 F0                MOVX    @DPTR,A
+0010BA FD                MOV     R5,A
+0010BB C3                CLR     C
+0010BC 904E42            MOV     DPTR,#len+01H
+0010BF E0                MOVX    A,@DPTR
+0010C0 9D                SUBB    A,R5
+0010C1 F0                MOVX    @DPTR,A
+0010C2 904E41            MOV     DPTR,#len
+0010C5 E0                MOVX    A,@DPTR
+0010C6 9C                SUBB    A,R4
+0010C7 F0                MOVX    @DPTR,A
+0010C8 904E3F            MOV     DPTR,#addr
+0010CB E0                MOVX    A,@DPTR
+0010CC FE                MOV     R6,A
+0010CD A3                INC     DPTR
+0010CE E0                MOVX    A,@DPTR
+0010CF FF                MOV     R7,A
+0010D0 904E43            MOV     DPTR,#pbuff
+0010D3 E0                MOVX    A,@DPTR
+0010D4 FB                MOV     R3,A
+0010D5 A3                INC     DPTR
+0010D6 E0                MOVX    A,@DPTR
+0010D7 FA                MOV     R2,A
+0010D8 A3                INC     DPTR
+0010D9 E0                MOVX    A,@DPTR
+0010DA F9                MOV     R1,A
+0010DB 3102              ACALL   _IIC_write
+0010DD 7F0A              MOV     R7,#0AH
+0010DF 120A2D            LCALL   _Delay1ms
+0010E2 904E46            MOV     DPTR,#curr_len
+0010E5 E0                MOVX    A,@DPTR
+0010E6 FE                MOV     R6,A
+0010E7 A3                INC     DPTR
+0010E8 E0                MOVX    A,@DPTR
+0010E9 FF                MOV     R7,A
+0010EA 904E44            MOV     DPTR,#pbuff+01H
+0010ED EE                MOV     A,R6
+0010EE 8FF0              MOV     B,R7
+0010F0 120463            LCALL   ?C?IILDX
+0010F3 904E40            MOV     DPTR,#addr+01H
+0010F6 E0                MOVX    A,@DPTR
+0010F7 2F                ADD     A,R7
+0010F8 F0                MOVX    @DPTR,A
+0010F9 904E3F            MOV     DPTR,#addr
+0010FC E0                MOVX    A,@DPTR
+0010FD 3E                ADDC    A,R6
+0010FE F0                MOVX    @DPTR,A
+0010FF 016B              AJMP    ?C0007?IIC
+001101         ?C0011?IIC:
+001101 22                RET     
+----- FUNCTION _IIC_WriteBlock (END) -------
+
+
+----- FUNCTION _IIC_write (BEGIN) -----
+001102 904E5E            MOV     DPTR,#addr
+001105 EE                MOV     A,R6
+001106 F0                MOVX    @DPTR,A
+001107 A3                INC     DPTR
+001108 EF                MOV     A,R7
+001109 F0                MOVX    @DPTR,A
+00110A 904E62            MOV     DPTR,#pbuff
+00110D EB                MOV     A,R3
+00110E F0                MOVX    @DPTR,A
+00110F A3                INC     DPTR
+001110 EA                MOV     A,R2
+001111 F0                MOVX    @DPTR,A
+001112 A3                INC     DPTR
+001113 E9                MOV     A,R1
+001114 F0                MOVX    @DPTR,A
+001115 904E60            MOV     DPTR,#len
+001118 EC                MOV     A,R4
+001119 F0                MOVX    @DPTR,A
+00111A A3                INC     DPTR
+00111B ED                MOV     A,R5
+00111C F0                MOVX    @DPTR,A
+00111D A3                INC     DPTR
+00111E E0                MOVX    A,@DPTR
+00111F F9                MOV     R1,A
+001120 A3                INC     DPTR
+001121 E0                MOVX    A,@DPTR
+001122 FA                MOV     R2,A
+001123 A3                INC     DPTR
+001124 E0                MOVX    A,@DPTR
+001125 904E4B            MOV     DPTR,#?_dmemcpy?BYTE+03H
+001128 C9                XCH     A,R1
+001129 F0                MOVX    @DPTR,A
+00112A A3                INC     DPTR
+00112B EA                MOV     A,R2
+00112C F0                MOVX    @DPTR,A
+00112D A3                INC     DPTR
+00112E E9                MOV     A,R1
+00112F F0                MOVX    @DPTR,A
+001130 A3                INC     DPTR
+001131 EC                MOV     A,R4
+001132 F0                MOVX    @DPTR,A
+001133 A3                INC     DPTR
+001134 ED                MOV     A,R5
+001135 F0                MOVX    @DPTR,A
+001136 7B01              MOV     R3,#01H
+001138 7A0B              MOV     R2,#HIGH IIC_TempBuff+03H
+00113A 7986              MOV     R1,#LOW IIC_TempBuff+03H
+00113C 122D3F            LCALL   _dmemcpy
+00113F 900B83            MOV     DPTR,#IIC_TempBuff
+001142 74A0              MOV     A,#0A0H
+001144 F0                MOVX    @DPTR,A
+001145 904E5E            MOV     DPTR,#addr
+001148 E0                MOVX    A,@DPTR
+001149 FF                MOV     R7,A
+00114A A3                INC     DPTR
+00114B E0                MOVX    A,@DPTR
+00114C 900B84            MOV     DPTR,#IIC_TempBuff+01H
+00114F CF                XCH     A,R7
+001150 F0                MOVX    @DPTR,A
+001151 A3                INC     DPTR
+001152 EF                MOV     A,R7
+001153 F0                MOVX    @DPTR,A
+001154 904E61            MOV     DPTR,#len+01H
+001157 E0                MOVX    A,@DPTR
+001158 2403              ADD     A,#03H
+00115A FD                MOV     R5,A
+00115B 904E60            MOV     DPTR,#len
+00115E E0                MOVX    A,@DPTR
+00115F 3400              ADDC    A,#00H
+001161 FC                MOV     R4,A
+001162 ED                MOV     A,R5
+001163 FA                MOV     R2,A
+001164 EC                MOV     A,R4
+001165 FF                MOV     R7,A
+001166 EA                MOV     A,R2
+001167 FE                MOV     R6,A
+001168 EF                MOV     A,R7
+001169 908098            MOV     DPTR,#08098H
+00116C EE                MOV     A,R6
+00116D F0                MOVX    @DPTR,A
+00116E A3                INC     DPTR
+00116F EF                MOV     A,R7
+001170 F0                MOVX    @DPTR,A
+001171 7A0B              MOV     R2,#HIGH IIC_TempBuff
+001173 7983              MOV     R1,#LOW IIC_TempBuff
+001175 7E0B              MOV     R6,#HIGH IIC_TempBuff
+001177 7F83              MOV     R7,#LOW IIC_TempBuff
+001179 7483              MOV     A,#LOW IIC_TempBuff
+00117B FC                MOV     R4,A
+00117C 740B              MOV     A,#HIGH IIC_TempBuff
+00117E FF                MOV     R7,A
+00117F EC                MOV     A,R4
+001180 FE                MOV     R6,A
+001181 EF                MOV     A,R7
+001182 A3                INC     DPTR
+001183 EE                MOV     A,R6
+001184 F0                MOVX    @DPTR,A
+001185 A3                INC     DPTR
+001186 EF                MOV     A,R7
+001187 F0                MOVX    @DPTR,A
+001188 90809E            MOV     DPTR,#0809EH
+00118B E4                CLR     A
+00118C F0                MOVX    @DPTR,A
+00118D A3                INC     DPTR
+00118E F0                MOVX    @DPTR,A
+00118F 908090            MOV     DPTR,#08090H
+001192 04                INC     A
+001193 F0                MOVX    @DPTR,A
+001194 908006            MOV     DPTR,#08006H
+001197 E0                MOVX    A,@DPTR
+001198 4404              ORL     A,#04H
+00119A F0                MOVX    @DPTR,A
+;----                  JMP     IIcWaitDone
+----- FUNCTION _IIC_write (END) -------
+
+
+----- FUNCTION IIcWaitDone (BEGIN) -----
+00119B         ?C0001?IIC:
+00119B 90812C            MOV     DPTR,#0812CH
+00119E E0                MOVX    A,@DPTR
+00119F 30E5F9            JNB     ACC.5,?C0001?IIC
+0011A2 22                RET     
+----- FUNCTION IIcWaitDone (END) -------
+
+
+----- FUNCTION _IIC_Read (BEGIN) -----
+0011A3 904E80            MOV     DPTR,#len
+0011A6 EC                MOV     A,R4
+0011A7 F0                MOVX    @DPTR,A
+0011A8 A3                INC     DPTR
+0011A9 ED                MOV     A,R5
+0011AA F0                MOVX    @DPTR,A
+0011AB A3                INC     DPTR
+0011AC EB                MOV     A,R3
+0011AD F0                MOVX    @DPTR,A
+0011AE A3                INC     DPTR
+0011AF EA                MOV     A,R2
+0011B0 F0                MOVX    @DPTR,A
+0011B1 A3                INC     DPTR
+0011B2 E9                MOV     A,R1
+0011B3 F0                MOVX    @DPTR,A
+;---- Variable 'addr' assigned to Register 'R6/R7' ----
+;---- Variable 'mem_src' assigned to Register 'R6/R7' ----
+0011B4 908098            MOV     DPTR,#08098H
+0011B7 7404              MOV     A,#04H
+0011B9 F0                MOVX    @DPTR,A
+0011BA A3                INC     DPTR
+0011BB E4                CLR     A
+0011BC F0                MOVX    @DPTR,A
+0011BD 900CAF            MOV     DPTR,#YC_IICDTbuf
+0011C0 74A0              MOV     A,#0A0H
+0011C2 F0                MOVX    @DPTR,A
+0011C3 A3                INC     DPTR
+0011C4 EE                MOV     A,R6
+0011C5 F0                MOVX    @DPTR,A
+0011C6 A3                INC     DPTR
+0011C7 EF                MOV     A,R7
+0011C8 F0                MOVX    @DPTR,A
+0011C9 900CB2            MOV     DPTR,#YC_IICDTbuf+03H
+0011CC 74A1              MOV     A,#0A1H
+0011CE F0                MOVX    @DPTR,A
+0011CF 7A0C              MOV     R2,#HIGH YC_IICDTbuf
+0011D1 79AF              MOV     R1,#LOW YC_IICDTbuf
+0011D3 7E0C              MOV     R6,#HIGH YC_IICDTbuf
+0011D5 7FAF              MOV     R7,#LOW YC_IICDTbuf
+0011D7 74AF              MOV     A,#LOW YC_IICDTbuf
+0011D9 FC                MOV     R4,A
+0011DA 740C              MOV     A,#HIGH YC_IICDTbuf
+0011DC FF                MOV     R7,A
+0011DD EC                MOV     A,R4
+0011DE FE                MOV     R6,A
+0011DF EF                MOV     A,R7
+0011E0 90809A            MOV     DPTR,#0809AH
+0011E3 EE                MOV     A,R6
+0011E4 F0                MOVX    @DPTR,A
+0011E5 A3                INC     DPTR
+0011E6 EF                MOV     A,R7
+0011E7 F0                MOVX    @DPTR,A
+0011E8 904E80            MOV     DPTR,#len
+0011EB E0                MOVX    A,@DPTR
+0011EC FC                MOV     R4,A
+0011ED A3                INC     DPTR
+0011EE E0                MOVX    A,@DPTR
+0011EF FA                MOV     R2,A
+0011F0 EC                MOV     A,R4
+0011F1 FF                MOV     R7,A
+0011F2 EA                MOV     A,R2
+0011F3 FE                MOV     R6,A
+0011F4 EF                MOV     A,R7
+0011F5 90809E            MOV     DPTR,#0809EH
+0011F8 EE                MOV     A,R6
+0011F9 F0                MOVX    @DPTR,A
+0011FA A3                INC     DPTR
+0011FB EF                MOV     A,R7
+0011FC F0                MOVX    @DPTR,A
+0011FD 7A0B              MOV     R2,#HIGH IIC_TempBuff
+0011FF 7983              MOV     R1,#LOW IIC_TempBuff
+001201 7E0B              MOV     R6,#HIGH IIC_TempBuff
+001203 7F83              MOV     R7,#LOW IIC_TempBuff
+001205 7483              MOV     A,#LOW IIC_TempBuff
+001207 FC                MOV     R4,A
+001208 740B              MOV     A,#HIGH IIC_TempBuff
+00120A FF                MOV     R7,A
+00120B EC                MOV     A,R4
+00120C FE                MOV     R6,A
+00120D EF                MOV     A,R7
+00120E 90809C            MOV     DPTR,#0809CH
+001211 EE                MOV     A,R6
+001212 F0                MOVX    @DPTR,A
+001213 A3                INC     DPTR
+001214 EF                MOV     A,R7
+001215 F0                MOVX    @DPTR,A
+001216 908090            MOV     DPTR,#08090H
+001219 7402              MOV     A,#02H
+00121B F0                MOVX    @DPTR,A
+00121C 90809C            MOV     DPTR,#0809CH
+00121F A3                INC     DPTR
+001220 E0                MOVX    A,@DPTR
+001221 20E707            JB      ACC.7,?C0004?IIC
+001224 908090            MOV     DPTR,#08090H
+001227 E0                MOVX    A,@DPTR
+001228 4401              ORL     A,#01H
+00122A F0                MOVX    @DPTR,A
+00122B         ?C0004?IIC:
+00122B 908006            MOV     DPTR,#08006H
+00122E E0                MOVX    A,@DPTR
+00122F 4404              ORL     A,#04H
+001231 F0                MOVX    @DPTR,A
+001232 319B              ACALL   IIcWaitDone
+001234 904E82            MOV     DPTR,#pbuff
+001237 E0                MOVX    A,@DPTR
+001238 A3                INC     DPTR
+001239 E0                MOVX    A,@DPTR
+00123A FA                MOV     R2,A
+00123B A3                INC     DPTR
+00123C E0                MOVX    A,@DPTR
+00123D AE02              MOV     R6,AR2
+00123F FF                MOV     R7,A
+001240 7B01              MOV     R3,#01H
+001242 7A0B              MOV     R2,#HIGH IIC_TempBuff
+001244 7983              MOV     R1,#LOW IIC_TempBuff
+001246 904E80            MOV     DPTR,#len
+001249 E0                MOVX    A,@DPTR
+00124A A3                INC     DPTR
+00124B E0                MOVX    A,@DPTR
+00124C 904E70            MOV     DPTR,#?_xmemcpy?BYTE+05H
+00124F F0                MOVX    @DPTR,A
+;----                  JMP     _xmemcpy
+----- FUNCTION _IIC_Read (END) -------
+
+
+----- FUNCTION _xmemcpy (BEGIN) -----
+001250 904E6B            MOV     DPTR,#dest
+001253 EE                MOV     A,R6
+001254 F0                MOVX    @DPTR,A
+001255 A3                INC     DPTR
+001256 EF                MOV     A,R7
+001257 F0                MOVX    @DPTR,A
+001258 A3                INC     DPTR
+001259 EB                MOV     A,R3
+00125A F0                MOVX    @DPTR,A
+00125B A3                INC     DPTR
+00125C EA                MOV     A,R2
+00125D F0                MOVX    @DPTR,A
+00125E A3                INC     DPTR
+00125F E9                MOV     A,R1
+001260 F0                MOVX    @DPTR,A
+001261         ?C0002?UTILITIES:
+001261 904E70            MOV     DPTR,#len
+001264 E0                MOVX    A,@DPTR
+001265 FF                MOV     R7,A
+001266 14                DEC     A
+001267 F0                MOVX    @DPTR,A
+001268 EF                MOV     A,R7
+001269 6027              JZ      ?C0004?UTILITIES
+00126B 904E6D            MOV     DPTR,#src
+00126E E0                MOVX    A,@DPTR
+00126F FB                MOV     R3,A
+001270 A3                INC     DPTR
+001271 E4                CLR     A
+001272 75F001            MOV     B,#01H
+001275 120479            LCALL   ?C?ILDIX
+001278 A9F0              MOV     R1,B
+00127A FA                MOV     R2,A
+00127B 1203B6            LCALL   ?C?CLDPTR
+00127E FF                MOV     R7,A
+00127F 904E6B            MOV     DPTR,#dest
+001282 E4                CLR     A
+001283 75F001            MOV     B,#01H
+001286 120479            LCALL   ?C?ILDIX
+001289 85F082            MOV     DPL,B
+00128C F583              MOV     DPH,A
+00128E EF                MOV     A,R7
+00128F F0                MOVX    @DPTR,A
+001290 80CF              SJMP    ?C0002?UTILITIES
+001292         ?C0004?UTILITIES:
+001292 22                RET     
+----- FUNCTION _xmemcpy (END) -------
+
+
+----- FUNCTION _kb_motion_keyscan (BEGIN) -----
+ FILE: 'kb_process.c'
+  232: void kb_motion_keyscan(tKSEVENT *pEvt)
+  233: {
+001293 904E71            MOV     DPTR,#pEvt
+001296 EB                MOV     A,R3
+001297 F0                MOVX    @DPTR,A
+001298 A3                INC     DPTR
+001299 EA                MOV     A,R2
+00129A F0                MOVX    @DPTR,A
+00129B A3                INC     DPTR
+00129C E9                MOV     A,R1
+00129D F0                MOVX    @DPTR,A
+  234: 	byte temp = 0;
+  235: 	byte i=0;
+00129E E4                CLR     A
+00129F A3                INC     DPTR
+0012A0 F0                MOVX    @DPTR,A
+  236: 	
+0012A1 A3                INC     DPTR
+0012A2 F0                MOVX    @DPTR,A
+  237: 	fn_flag = 0;
+0012A3 904DEA            MOV     DPTR,#fn_flag
+0012A6 F0                MOVX    @DPTR,A
+  238: 	for(i=0; i < KS_BUFF_POLL_LEN-1; i++)
+0012A7 904E75            MOV     DPTR,#i
+0012AA F0                MOVX    @DPTR,A
+0012AB         ?C0051?KB_PROCESS:
+0012AB 904E75            MOV     DPTR,#i
+0012AE E0                MOVX    A,@DPTR
+0012AF FF                MOV     R7,A
+0012B0 C3                CLR     C
+0012B1 9405              SUBB    A,#05H
+0012B3 502C              JNC     ?C0052?KB_PROCESS
+  239: 	{
+  240: 		if (pEvt->ksPool[i] == HID_KEY_FN) 		// Fn key check
+0012B5 904E71            MOV     DPTR,#pEvt
+0012B8 E0                MOVX    A,@DPTR
+0012B9 FB                MOV     R3,A
+0012BA A3                INC     DPTR
+0012BB E0                MOVX    A,@DPTR
+0012BC FA                MOV     R2,A
+0012BD A3                INC     DPTR
+0012BE E0                MOVX    A,@DPTR
+0012BF 2401              ADD     A,#01H
+0012C1 F9                MOV     R1,A
+0012C2 E4                CLR     A
+0012C3 3A                ADDC    A,R2
+0012C4 FA                MOV     R2,A
+0012C5 7E00              MOV     R6,#00H
+0012C7 E9                MOV     A,R1
+0012C8 2F                ADD     A,R7
+0012C9 F9                MOV     R1,A
+0012CA EE                MOV     A,R6
+0012CB 3A                ADDC    A,R2
+0012CC FA                MOV     R2,A
+0012CD 1203B6            LCALL   ?C?CLDPTR
+0012D0 B47F06            CJNE    A,#07FH,?C0053?KB_PROCESS
+  241: 		{
+  242: 			fn_flag = 1;
+0012D3 904DEA            MOV     DPTR,#fn_flag
+0012D6 7401              MOV     A,#01H
+0012D8 F0                MOVX    @DPTR,A
+  243: 		}
+  244: 	}
+0012D9         ?C0053?KB_PROCESS:
+0012D9 904E75            MOV     DPTR,#i
+0012DC E0                MOVX    A,@DPTR
+0012DD 04                INC     A
+0012DE F0                MOVX    @DPTR,A
+0012DF 80CA              SJMP    ?C0051?KB_PROCESS
+0012E1         ?C0052?KB_PROCESS:
+  245: 	fn_flag_last = fn_flag;
+0012E1 904DEA            MOV     DPTR,#fn_flag
+0012E4 E0                MOVX    A,@DPTR
+0012E5 904DF3            MOV     DPTR,#fn_flag_last
+0012E8 F0                MOVX    @DPTR,A
+  246: 
+  247: 	
+  248: 	if (pEvt == NULL)
+0012E9 904E71            MOV     DPTR,#pEvt
+0012EC E0                MOVX    A,@DPTR
+0012ED A3                INC     DPTR
+0012EE E0                MOVX    A,@DPTR
+0012EF FA                MOV     R2,A
+0012F0 A3                INC     DPTR
+0012F1 E0                MOVX    A,@DPTR
+0012F2 4A                ORL     A,R2
+0012F3 7002              JNZ     $ + 4H
+0012F5 A1A1              AJMP    ?C0056?KB_PROCESS
+0012F7         ?C0055?KB_PROCESS:
+  249: 		return;
+  250: 
+  251: #ifdef PC_SLEEP_STATUS_GET
+  252: 	if(m_pc_sleep_flag)		// wake from pc sleep,get led status
+0012F7 904D76            MOV     DPTR,#m_pc_sleep_flag
+0012FA E0                MOVX    A,@DPTR
+0012FB 6008              JZ      ?C0057?KB_PROCESS
+  253: 	{
+  254: 		m_pc_sleep_flag = 0;
+0012FD E4                CLR     A
+0012FE F0                MOVX    @DPTR,A
+  255: 		m_24g_led_flag = KB_24G_LED_ACK_TYPE;	
+0012FF 904D47            MOV     DPTR,#m_24g_led_flag
+001302 7403              MOV     A,#03H
+001304 F0                MOVX    @DPTR,A
+  256: 	}
+001305         ?C0057?KB_PROCESS:
+  257: #endif
+  258: 
+  259: 
+  260: 	delayChgInvTimer = 10;
+001305 904DEF            MOV     DPTR,#delayChgInvTimer
+001308 740A              MOV     A,#0AH
+00130A F0                MOVX    @DPTR,A
+  261: 	g_variable.sleepTimer = 0;
+00130B E4                CLR     A
+00130C 904CE3            MOV     DPTR,#g_variable+024H
+00130F F0                MOVX    @DPTR,A
+001310 A3                INC     DPTR
+001311 F0                MOVX    @DPTR,A
+  262: 	g_variable.g24_long_sleep_flag = 0;
+001312 904D05            MOV     DPTR,#g_variable+046H
+001315 F0                MOVX    @DPTR,A
+  263: 	
+  264: 	if(g_variable.backlight_level != BACKLIGHT_OFF)
+001316 904CFD            MOV     DPTR,#g_variable+03EH
+001319 E0                MOVX    A,@DPTR
+00131A 6408              XRL     A,#08H
+00131C 6012              JZ      ?C0058?KB_PROCESS
+  265: 	{
+  266: 		m_24g_enter_hibernate[0]	= 0x00;
+00131E E4                CLR     A
+00131F 904D3D            MOV     DPTR,#m_24g_enter_hibernate
+001322 F0                MOVX    @DPTR,A
+  267: 		m_24g_enter_hibernate[1]	= 0x48;
+001323 A3                INC     DPTR
+001324 7448              MOV     A,#048H
+001326 F0                MOVX    @DPTR,A
+  268: 		m_24g_enter_hibernate[2]	= 0x12;		// 100ms
+001327 A3                INC     DPTR
+001328 7412              MOV     A,#012H
+00132A F0                MOVX    @DPTR,A
+  269: 		m_24g_enter_hibernate[3]	= 0x00;
+00132B E4                CLR     A
+00132C A3                INC     DPTR
+00132D F0                MOVX    @DPTR,A
+  270: 	}
+00132E 8010              SJMP    ?C0059?KB_PROCESS
+001330         ?C0058?KB_PROCESS:
+  271: 	else
+  272: 	{
+  273: 		m_24g_enter_hibernate[0]	= 0x00;
+001330 E4                CLR     A
+001331 904D3D            MOV     DPTR,#m_24g_enter_hibernate
+001334 F0                MOVX    @DPTR,A
+  274: 		m_24g_enter_hibernate[1]	= 0x48;
+001335 A3                INC     DPTR
+001336 7448              MOV     A,#048H
+001338 F0                MOVX    @DPTR,A
+  275: 		m_24g_enter_hibernate[2]   = 0x5d;		// 510ms
+001339 A3                INC     DPTR
+00133A 745D              MOV     A,#05DH
+00133C F0                MOVX    @DPTR,A
+  276: 		m_24g_enter_hibernate[3]	= 0x00;
+00133D E4                CLR     A
+00133E A3                INC     DPTR
+00133F F0                MOVX    @DPTR,A
+  277: 	}
+001340         ?C0059?KB_PROCESS:
+  278: 	xmemclear(hidBuff,9);
+001340 7B01              MOV     R3,#01H
+001342 7A48              MOV     R2,#HIGH hidBuff
+001344 7900              MOV     R1,#LOW hidBuff
+001346 7D09              MOV     R5,#09H
+001348 7C00              MOV     R4,#00H
+00134A D156              ACALL   _xmemclear
+  279: 	xmemclear(multikey,9);
+00134C 7B01              MOV     R3,#01H
+00134E 7A4D              MOV     R2,#HIGH multikey
+001350 79F8              MOV     R1,#LOW multikey
+001352 7D09              MOV     R5,#09H
+001354 7C00              MOV     R4,#00H
+001356 D156              ACALL   _xmemclear
+  280: 
+  281: 	////////////////////////////2.4g pairing////////////////////////////////////
+  282: 	if ((pEvt->ksPool[0]  == HID_KEY_FN && pEvt->ksPool[1]  == HID_KEY_V) 
+001358 904E71            MOV     DPTR,#pEvt
+00135B E0                MOVX    A,@DPTR
+00135C FB                MOV     R3,A
+00135D A3                INC     DPTR
+00135E E0                MOVX    A,@DPTR
+00135F FA                MOV     R2,A
+001360 A3                INC     DPTR
+001361 E0                MOVX    A,@DPTR
+001362 F9                MOV     R1,A
+001363 900001            MOV     DPTR,#01H
+001366 1203CF            LCALL   ?C?CLDOPTR
+001369 FF                MOV     R7,A
+00136A B47F0A            CJNE    A,#07FH,?C0062?KB_PROCESS
+00136D 900002            MOV     DPTR,#02H
+001370 1203CF            LCALL   ?C?CLDOPTR
+001373 6419              XRL     A,#019H
+001375 600E              JZ      ?C0061?KB_PROCESS
+001377         ?C0062?KB_PROCESS:
+001377 EF                MOV     A,R7
+001378 6419              XRL     A,#019H
+00137A 7023              JNZ     ?C0060?KB_PROCESS
+00137C 900002            MOV     DPTR,#02H
+00137F 1203CF            LCALL   ?C?CLDOPTR
+001382 B47F1A            CJNE    A,#07FH,?C0060?KB_PROCESS
+001385         ?C0061?KB_PROCESS:
+  283: 		||(pEvt->ksPool[0]  == HID_KEY_V && pEvt->ksPool[1]  == HID_KEY_FN) 
+  284: 		)
+  285: 	{
+  286: 		if (g_variable.g24_currentState != CHANGE_TO_24G_PAIRING)
+001385 904CC5            MOV     DPTR,#g_variable+06H
+001388 E0                MOVX    A,@DPTR
+001389 6401              XRL     A,#01H
+00138B 6009              JZ      ?C0063?KB_PROCESS
+  287: 		{
+  288: 			g_variable.button_flag |= KEY_FLAG_FN_24G_DEVICE_BUTTON;
+00138D 904CCE            MOV     DPTR,#g_variable+0FH
+001390 E0                MOVX    A,@DPTR
+001391 4410              ORL     A,#010H
+001393 F0                MOVX    @DPTR,A
+  289: 		}
+001394 8010              SJMP    ?C0065?KB_PROCESS
+001396         ?C0063?KB_PROCESS:
+  290: 		else
+  291: 		{
+  292: 			g_variable.button_flag &= ~KEY_FLAG_FN_24G_DEVICE_BUTTON;
+001396 904CCE            MOV     DPTR,#g_variable+0FH
+001399 E0                MOVX    A,@DPTR
+00139A 54EF              ANL     A,#0EFH
+00139C F0                MOVX    @DPTR,A
+  293: 		}
+  294: 	}
+00139D 8007              SJMP    ?C0065?KB_PROCESS
+00139F         ?C0060?KB_PROCESS:
+  295: 	else
+  296: 	{
+  297: 		g_variable.button_flag &= ~KEY_FLAG_FN_24G_DEVICE_BUTTON;
+00139F 904CCE            MOV     DPTR,#g_variable+0FH
+0013A2 E0                MOVX    A,@DPTR
+0013A3 54EF              ANL     A,#0EFH
+0013A5 F0                MOVX    @DPTR,A
+  298: 	}
+0013A6         ?C0065?KB_PROCESS:
+  299: 
+  300: 	m_power_on_flag = 1;
+0013A6 904CB6            MOV     DPTR,#m_power_on_flag
+0013A9 7401              MOV     A,#01H
+0013AB F0                MOVX    @DPTR,A
+  301: 	if( (g_variable.key_combination_step == CAMBINATION_KEY_PRESS) ||
+0013AC 904CF4            MOV     DPTR,#g_variable+035H
+0013AF E0                MOVX    A,@DPTR
+0013B0 FF                MOV     R7,A
+0013B1 6401              XRL     A,#01H
+0013B3 7002              JNZ     $ + 4H
+0013B5 A1A1              AJMP    ?C0056?KB_PROCESS
+0013B7 EF                MOV     A,R7
+0013B8 6404              XRL     A,#04H
+0013BA 7002              JNZ     $ + 4H
+0013BC A1A1              AJMP    ?C0056?KB_PROCESS
+0013BE EF                MOV     A,R7
+0013BF 6402              XRL     A,#02H
+0013C1 7002              JNZ     $ + 4H
+0013C3 A1A1              AJMP    ?C0056?KB_PROCESS
+  302: 	    (g_variable.key_combination_step == CAMBINATION_KEY_WAIT_RELEASE) ||
+  303: 	    (g_variable.key_combination_step == CAMBINATION_KEY_HOLD))
+  304: 	{
+  305: 		return;
+  306: 	}
+0013C5         ?C0066?KB_PROCESS:
+  307: 
+  308: 	// get 24g led status
+  309: 	if (g_variable.g24_currentState == CHANGE_TO_24G_CONNECTED)
+0013C5 904CC5            MOV     DPTR,#g_variable+06H
+0013C8 E0                MOVX    A,@DPTR
+0013C9 6403              XRL     A,#03H
+0013CB 7045              JNZ     ?C0068?KB_PROCESS
+  310: 	{
+  311: 		for(i=0; i < KS_BUFF_POLL_LEN-1; i++)
+0013CD 904E75            MOV     DPTR,#i
+0013D0 F0                MOVX    @DPTR,A
+0013D1         ?C0069?KB_PROCESS:
+0013D1 904E75            MOV     DPTR,#i
+0013D4 E0                MOVX    A,@DPTR
+0013D5 FF                MOV     R7,A
+0013D6 C3                CLR     C
+0013D7 9405              SUBB    A,#05H
+0013D9 5037              JNC     ?C0068?KB_PROCESS
+  312: 		{
+  313: 			if ((pEvt->ksPool[i] == HID_KEY_CAPS_LOCK) || (pEvt->ksPool[i] == HID_KEY_NUM_LOCK) 
+0013DB 904E71            MOV     DPTR,#pEvt
+0013DE E0                MOVX    A,@DPTR
+0013DF FB                MOV     R3,A
+0013E0 A3                INC     DPTR
+0013E1 E0                MOVX    A,@DPTR
+0013E2 FA                MOV     R2,A
+0013E3 A3                INC     DPTR
+0013E4 E0                MOVX    A,@DPTR
+0013E5 2401              ADD     A,#01H
+0013E7 F9                MOV     R1,A
+0013E8 E4                CLR     A
+0013E9 3A                ADDC    A,R2
+0013EA FA                MOV     R2,A
+0013EB 7E00              MOV     R6,#00H
+0013ED E9                MOV     A,R1
+0013EE 2F                ADD     A,R7
+0013EF F9                MOV     R1,A
+0013F0 EE                MOV     A,R6
+0013F1 3A                ADDC    A,R2
+0013F2 FA                MOV     R2,A
+0013F3 1203B6            LCALL   ?C?CLDPTR
+0013F6 FF                MOV     R7,A
+0013F7 6439              XRL     A,#039H
+0013F9 6009              JZ      ?C0073?KB_PROCESS
+0013FB EF                MOV     A,R7
+0013FC 6453              XRL     A,#053H
+0013FE 6004              JZ      ?C0073?KB_PROCESS
+001400 EF                MOV     A,R7
+001401 B44706            CJNE    A,#047H,?C0071?KB_PROCESS
+001404         ?C0073?KB_PROCESS:
+  314: 			|| (pEvt->ksPool[i] == HID_KEY_SCROLL_LOCK))
+  315: 			{
+  316: 				m_24g_led_flag = KB_24G_LED_ACK_TYPE;
+001404 904D47            MOV     DPTR,#m_24g_led_flag
+001407 7403              MOV     A,#03H
+001409 F0                MOVX    @DPTR,A
+  317: 
+  318: 			}
+  319: 		}
+00140A         ?C0071?KB_PROCESS:
+00140A 904E75            MOV     DPTR,#i
+00140D E0                MOVX    A,@DPTR
+00140E 04                INC     A
+00140F F0                MOVX    @DPTR,A
+001410 80BF              SJMP    ?C0069?KB_PROCESS
+  320: 	}
+001412         ?C0068?KB_PROCESS:
+  321: 
+  322: 	kb_multikey_setup(pEvt);
+001412 904E71            MOV     DPTR,#pEvt
+001415 E0                MOVX    A,@DPTR
+001416 FB                MOV     R3,A
+001417 A3                INC     DPTR
+001418 E0                MOVX    A,@DPTR
+001419 FA                MOV     R2,A
+00141A A3                INC     DPTR
+00141B E0                MOVX    A,@DPTR
+00141C F9                MOV     R1,A
+00141D 121818            LCALL   _kb_multikey_setup
+  323: 	
+  324: 	if (mult_key_status == KEY_MULIT_PRESS) 
+001420 904DF7            MOV     DPTR,#mult_key_status
+001423 E0                MOVX    A,@DPTR
+001424 B40111            CJNE    A,#01H,?C0074?KB_PROCESS
+  325: 	{
+  326: 		mult_key_status = KEY_WAIT_RELEASE;
+001427 7402              MOV     A,#02H
+001429 F0                MOVX    @DPTR,A
+  327: 		multikey[0] = HID_REPORTID_MEDIA_KEY;
+00142A 904DF8            MOV     DPTR,#multikey
+00142D F0                MOVX    @DPTR,A
+  328: 		IPC_TxHidData(multikey, 3);
+00142E 7B01              MOV     R3,#01H
+001430 7A4D              MOV     R2,#HIGH multikey
+001432 79F8              MOV     R1,#LOW multikey
+001434 7D03              MOV     R5,#03H
+001436 A1A2              AJMP    _IPC_TxHidData
+  329: 	}
+001438         ?C0074?KB_PROCESS:
+  330: #ifdef SYSTEM_CONTROL_ENABLE	
+  331: 	else if (mult_key_status == KEY_SYSTEM_PRESS) 
+001438 904DF7            MOV     DPTR,#mult_key_status
+00143B E0                MOVX    A,@DPTR
+00143C B40411            CJNE    A,#04H,?C0076?KB_PROCESS
+  332: 	{
+  333: 		mult_key_status = KEY_WAIT_RELEASE;
+00143F 7402              MOV     A,#02H
+001441 F0                MOVX    @DPTR,A
+  334: 		multikey[0] = HID_REPORTID_SYSTEM_CTRL;
+001442 904DF8            MOV     DPTR,#multikey
+001445 04                INC     A
+001446 F0                MOVX    @DPTR,A
+  335: 		IPC_TxHidData(multikey, 3);
+001447 7B01              MOV     R3,#01H
+001449 7A4D              MOV     R2,#HIGH multikey
+00144B 79F8              MOV     R1,#LOW multikey
+00144D FD                MOV     R5,A
+00144E A1A2              AJMP    _IPC_TxHidData
+  336: 	}
+001450         ?C0076?KB_PROCESS:
+  337: #endif	
+  338: 	else if((mult_key_status == KEY_RELEASE) || (mult_key_status == KEY_WAIT_RELEASE && (!keyCount)))
+001450 904DF7            MOV     DPTR,#mult_key_status
+001453 E0                MOVX    A,@DPTR
+001454 6403              XRL     A,#03H
+001456 600B              JZ      ?C0079?KB_PROCESS
+001458 E0                MOVX    A,@DPTR
+001459 6402              XRL     A,#02H
+00145B 702F              JNZ     ?C0078?KB_PROCESS
+00145D 904DED            MOV     DPTR,#keyCount
+001460 E0                MOVX    A,@DPTR
+001461 7029              JNZ     ?C0078?KB_PROCESS
+001463         ?C0079?KB_PROCESS:
+  339: 	{
+  340: 		mult_key_status = KEY_STANDBY;
+001463 E4                CLR     A
+001464 904DF7            MOV     DPTR,#mult_key_status
+001467 F0                MOVX    @DPTR,A
+  341: 		mult_key_value = 0;
+001468 904DF6            MOV     DPTR,#mult_key_value
+00146B F0                MOVX    @DPTR,A
+  342: #ifdef SYSTEM_CONTROL_ENABLE		
+  343: 		if(system_key_press)
+00146C 904DF2            MOV     DPTR,#system_key_press
+00146F E0                MOVX    A,@DPTR
+001470 600A              JZ      ?C0080?KB_PROCESS
+  344: 		{
+  345: 			system_key_press = 0;
+001472 E4                CLR     A
+001473 F0                MOVX    @DPTR,A
+  346: 			multikey[0] = HID_REPORTID_SYSTEM_CTRL;
+001474 904DF8            MOV     DPTR,#multikey
+001477 7403              MOV     A,#03H
+001479 F0                MOVX    @DPTR,A
+  347: 		}
+00147A 8006              SJMP    ?C0081?KB_PROCESS
+00147C         ?C0080?KB_PROCESS:
+  348: 		else
+  349: #endif		
+  350: 			multikey[0] = HID_REPORTID_MEDIA_KEY;
+00147C 904DF8            MOV     DPTR,#multikey
+00147F 7402              MOV     A,#02H
+001481 F0                MOVX    @DPTR,A
+001482         ?C0081?KB_PROCESS:
+  351: 		IPC_TxHidData(multikey, 3);
+001482 7B01              MOV     R3,#01H
+001484 7A4D              MOV     R2,#HIGH multikey
+001486 79F8              MOV     R1,#LOW multikey
+001488 7D03              MOV     R5,#03H
+00148A A1A2              AJMP    _IPC_TxHidData
+  352: 	}
+00148C         ?C0078?KB_PROCESS:
+  353: 	else 
+  354: 	{
+  355: 		if(!keyCount)
+00148C 904DED            MOV     DPTR,#keyCount
+00148F E0                MOVX    A,@DPTR
+001490 7031              JNZ     ?C0083?KB_PROCESS
+  356: 		{
+  357: 			xmemclear(pEvt->ksPool,6);
+001492 904E71            MOV     DPTR,#pEvt
+001495 E0                MOVX    A,@DPTR
+001496 FB                MOV     R3,A
+001497 A3                INC     DPTR
+001498 E0                MOVX    A,@DPTR
+001499 FA                MOV     R2,A
+00149A A3                INC     DPTR
+00149B E0                MOVX    A,@DPTR
+00149C 2401              ADD     A,#01H
+00149E F9                MOV     R1,A
+00149F E4                CLR     A
+0014A0 3A                ADDC    A,R2
+0014A1 FA                MOV     R2,A
+0014A2 7D06              MOV     R5,#06H
+0014A4 7C00              MOV     R4,#00H
+0014A6 D156              ACALL   _xmemclear
+  358: 			xmemclear(bitkey,15);
+0014A8 7B01              MOV     R3,#01H
+0014AA 7A4D              MOV     R2,#HIGH bitkey
+0014AC 79D0              MOV     R1,#LOW bitkey
+0014AE 7D0F              MOV     R5,#0FH
+0014B0 7C00              MOV     R4,#00H
+0014B2 D156              ACALL   _xmemclear
+  359: 			pEvt->standardSel = 0;
+0014B4 904E71            MOV     DPTR,#pEvt
+0014B7 E0                MOVX    A,@DPTR
+0014B8 FB                MOV     R3,A
+0014B9 A3                INC     DPTR
+0014BA E0                MOVX    A,@DPTR
+0014BB FA                MOV     R2,A
+0014BC A3                INC     DPTR
+0014BD E0                MOVX    A,@DPTR
+0014BE F9                MOV     R1,A
+0014BF E4                CLR     A
+0014C0 1203FC            LCALL   ?C?CSTPTR
+  360: 		}
+0014C3         ?C0083?KB_PROCESS:
+  361: 	
+  362: 		hidBuff[0] = HID_REPORTID_KEY_STANDARD;		// standard key send
+0014C3 904800            MOV     DPTR,#hidBuff
+0014C6 7401              MOV     A,#01H
+0014C8 F0                MOVX    @DPTR,A
+  363: 		hidBuff[1] = pEvt->standardSel;
+0014C9 904E71            MOV     DPTR,#pEvt
+0014CC E0                MOVX    A,@DPTR
+0014CD FB                MOV     R3,A
+0014CE A3                INC     DPTR
+0014CF E0                MOVX    A,@DPTR
+0014D0 FA                MOV     R2,A
+0014D1 A3                INC     DPTR
+0014D2 E0                MOVX    A,@DPTR
+0014D3 F9                MOV     R1,A
+0014D4 1203B6            LCALL   ?C?CLDPTR
+0014D7 904801            MOV     DPTR,#hidBuff+01H
+0014DA F0                MOVX    @DPTR,A
+  364: 		if (g_variable.g24_currentState == CHANGE_TO_24G_CONNECTED)
+0014DB 904CC5            MOV     DPTR,#g_variable+06H
+0014DE E0                MOVX    A,@DPTR
+0014DF B4030A            CJNE    A,#03H,?C0084?KB_PROCESS
+  365: 			hidBuff[2] = m_24g_led_flag;
+0014E2 904D47            MOV     DPTR,#m_24g_led_flag
+0014E5 E0                MOVX    A,@DPTR
+0014E6 904802            MOV     DPTR,#hidBuff+02H
+0014E9 F0                MOVX    @DPTR,A
+0014EA 8005              SJMP    ?C0085?KB_PROCESS
+0014EC         ?C0084?KB_PROCESS:
+  366: 		else
+  367: 			hidBuff[2] = 0;
+0014EC E4                CLR     A
+0014ED 904802            MOV     DPTR,#hidBuff+02H
+0014F0 F0                MOVX    @DPTR,A
+0014F1         ?C0085?KB_PROCESS:
+  368: 
+  369: 		standard_key_release_flag = 0;
+0014F1 E4                CLR     A
+0014F2 904DE7            MOV     DPTR,#standard_key_release_flag
+0014F5 F0                MOVX    @DPTR,A
+  370: 		if(!fast_connect_flag)
+0014F6 904E01            MOV     DPTR,#fast_connect_flag
+0014F9 E0                MOVX    A,@DPTR
+0014FA 706F              JNZ     ?C0086?KB_PROCESS
+  371: 		{
+  372: 			if (pEvt->ksPool[0] == HID_KEY_FN)
+0014FC 900001            MOV     DPTR,#01H
+0014FF 1203CF            LCALL   ?C?CLDOPTR
+001502 B47F15            CJNE    A,#07FH,?C0087?KB_PROCESS
+  373: 				xmemcpy(&hidBuff[3], &pEvt->ksPool[1], 5);
+001505 7E48              MOV     R6,#HIGH hidBuff+03H
+001507 7F03              MOV     R7,#LOW hidBuff+03H
+001509 E9                MOV     A,R1
+00150A 2402              ADD     A,#02H
+00150C F9                MOV     R1,A
+00150D E4                CLR     A
+00150E 3A                ADDC    A,R2
+00150F FA                MOV     R2,A
+001510 904E70            MOV     DPTR,#?_xmemcpy?BYTE+05H
+001513 7405              MOV     A,#05H
+001515 F0                MOVX    @DPTR,A
+001516 5150              ACALL   _xmemcpy
+001518 801C              SJMP    ?C0088?KB_PROCESS
+00151A         ?C0087?KB_PROCESS:
+  374: 			else
+  375: 				xmemcpy(&hidBuff[3], pEvt->ksPool, 6);
+00151A 7E48              MOV     R6,#HIGH hidBuff+03H
+00151C 7F03              MOV     R7,#LOW hidBuff+03H
+00151E 904E71            MOV     DPTR,#pEvt
+001521 E0                MOVX    A,@DPTR
+001522 FB                MOV     R3,A
+001523 A3                INC     DPTR
+001524 E0                MOVX    A,@DPTR
+001525 FA                MOV     R2,A
+001526 A3                INC     DPTR
+001527 E0                MOVX    A,@DPTR
+001528 2401              ADD     A,#01H
+00152A F9                MOV     R1,A
+00152B E4                CLR     A
+00152C 3A                ADDC    A,R2
+00152D FA                MOV     R2,A
+00152E 904E70            MOV     DPTR,#?_xmemcpy?BYTE+05H
+001531 7406              MOV     A,#06H
+001533 F0                MOVX    @DPTR,A
+001534 5150              ACALL   _xmemcpy
+001536         ?C0088?KB_PROCESS:
+  376: 			
+  377: 			for(i = 3; i<9;i++)
+001536 904E75            MOV     DPTR,#i
+001539 7403              MOV     A,#03H
+00153B F0                MOVX    @DPTR,A
+00153C         ?C0089?KB_PROCESS:
+00153C 904E75            MOV     DPTR,#i
+00153F E0                MOVX    A,@DPTR
+001540 FF                MOV     R7,A
+001541 C3                CLR     C
+001542 9409              SUBB    A,#09H
+001544 5041              JNC     ?C0093?KB_PROCESS
+  378: 			{
+  379: 				if (hidBuff[i] == HID_KEY_FN)
+001546 7400              MOV     A,#LOW hidBuff
+001548 2F                ADD     A,R7
+001549 F582              MOV     DPL,A
+00154B E4                CLR     A
+00154C 3448              ADDC    A,#HIGH hidBuff
+00154E F583              MOV     DPH,A
+001550 E0                MOVX    A,@DPTR
+001551 B47F0F            CJNE    A,#07FH,?C0091?KB_PROCESS
+  380: 					hidBuff[i] = 0;
+001554 904E75            MOV     DPTR,#i
+001557 E0                MOVX    A,@DPTR
+001558 2400              ADD     A,#LOW hidBuff
+00155A F582              MOV     DPL,A
+00155C E4                CLR     A
+00155D 3448              ADDC    A,#HIGH hidBuff
+00155F F583              MOV     DPH,A
+001561 E4                CLR     A
+001562 F0                MOVX    @DPTR,A
+  381: 			}
+001563         ?C0091?KB_PROCESS:
+001563 904E75            MOV     DPTR,#i
+001566 E0                MOVX    A,@DPTR
+001567 04                INC     A
+001568 F0                MOVX    @DPTR,A
+001569 80D1              SJMP    ?C0089?KB_PROCESS
+  382: 		}
+00156B         ?C0086?KB_PROCESS:
+  383: 		else	
+  384: 			xmemcpy(&hidBuff[3], pEvt->ksPool, 6);
+00156B 7E48              MOV     R6,#HIGH hidBuff+03H
+00156D 7F03              MOV     R7,#LOW hidBuff+03H
+00156F 904E71            MOV     DPTR,#pEvt
+001572 E0                MOVX    A,@DPTR
+001573 FB                MOV     R3,A
+001574 A3                INC     DPTR
+001575 E0                MOVX    A,@DPTR
+001576 FA                MOV     R2,A
+001577 A3                INC     DPTR
+001578 E0                MOVX    A,@DPTR
+001579 2401              ADD     A,#01H
+00157B F9                MOV     R1,A
+00157C E4                CLR     A
+00157D 3A                ADDC    A,R2
+00157E FA                MOV     R2,A
+00157F 904E70            MOV     DPTR,#?_xmemcpy?BYTE+05H
+001582 7406              MOV     A,#06H
+001584 F0                MOVX    @DPTR,A
+001585 5150              ACALL   _xmemcpy
+001587         ?C0093?KB_PROCESS:
+  385: 		IPC_TxHidData(hidBuff, 9);
+001587 7B01              MOV     R3,#01H
+001589 7A48              MOV     R2,#HIGH hidBuff
+00158B 7900              MOV     R1,#LOW hidBuff
+00158D 7D09              MOV     R5,#09H
+00158F B1A2              ACALL   _IPC_TxHidData
+  386: 		bitkey[0] = HID_REPORTID_GAME;
+001591 904DD0            MOV     DPTR,#bitkey
+001594 7408              MOV     A,#08H
+001596 F0                MOVX    @DPTR,A
+  387: 		IPC_TxHidData(bitkey, 15);
+001597 7B01              MOV     R3,#01H
+001599 7A4D              MOV     R2,#HIGH bitkey
+00159B 79D0              MOV     R1,#LOW bitkey
+00159D 7D0F              MOV     R5,#0FH
+00159F B1A2              ACALL   _IPC_TxHidData
+  388: 	}
+  389: 	return;
+  390: }
+0015A1         ?C0056?KB_PROCESS:
+0015A1 22                RET     
+----- FUNCTION _kb_motion_keyscan (END) -------
+
+
+----- FUNCTION _IPC_TxHidData (BEGIN) -----
+ FILE: 'kb_process.c'
+   56: void IPC_TxHidData(byte* dt, byte len)
+   57: {
+0015A2 904E26            MOV     DPTR,#dt
+0015A5 EB                MOV     A,R3
+0015A6 F0                MOVX    @DPTR,A
+0015A7 A3                INC     DPTR
+0015A8 EA                MOV     A,R2
+0015A9 F0                MOVX    @DPTR,A
+0015AA A3                INC     DPTR
+0015AB E9                MOV     A,R1
+0015AC F0                MOVX    @DPTR,A
+0015AD A3                INC     DPTR
+0015AE ED                MOV     A,R5
+0015AF F0                MOVX    @DPTR,A
+   58: 	xbyte tx_hid_buff[10];
+   59: 	byte i=0;
+;---- Variable 'i' assigned to Register 'R7' ----
+0015B0 E4                CLR     A
+0015B1 FF                MOV     R7,A
+   60: 
+   61: 	for(i==0; i< len; i++)
+0015B2         ?C0011?KB_PROCESS:
+0015B2 904E29            MOV     DPTR,#len
+0015B5 E0                MOVX    A,@DPTR
+0015B6 FE                MOV     R6,A
+0015B7 EF                MOV     A,R7
+0015B8 C3                CLR     C
+0015B9 9E                SUBB    A,R6
+0015BA 5023              JNC     ?C0012?KB_PROCESS
+   62: 	{
+   63: 		tx_hid_buff[i] = dt[i];
+0015BC 904E26            MOV     DPTR,#dt
+0015BF E0                MOVX    A,@DPTR
+0015C0 FB                MOV     R3,A
+0015C1 A3                INC     DPTR
+0015C2 E0                MOVX    A,@DPTR
+0015C3 FA                MOV     R2,A
+0015C4 A3                INC     DPTR
+0015C5 E0                MOVX    A,@DPTR
+0015C6 F9                MOV     R1,A
+0015C7 8F82              MOV     DPL,R7
+0015C9 758300            MOV     DPH,#00H
+0015CC 1203CF            LCALL   ?C?CLDOPTR
+0015CF FE                MOV     R6,A
+0015D0 742A              MOV     A,#LOW tx_hid_buff
+0015D2 2F                ADD     A,R7
+0015D3 F582              MOV     DPL,A
+0015D5 E4                CLR     A
+0015D6 344E              ADDC    A,#HIGH tx_hid_buff
+0015D8 F583              MOV     DPH,A
+0015DA EE                MOV     A,R6
+0015DB F0                MOVX    @DPTR,A
+   64: 	}
+0015DC 0F                INC     R7
+0015DD 80D3              SJMP    ?C0011?KB_PROCESS
+0015DF         ?C0012?KB_PROCESS:
+   65: 	
+   66: 	if(!YC_check_need_reconnected()) 
+0015DF 1207F0            LCALL   YC_check_need_reconnected
+0015E2 EF                MOV     A,R7
+0015E3 6070              JZ      ?C0015?KB_PROCESS
+0015E5         ?C0014?KB_PROCESS:
+   67: 		return;
+   68: 	if (g_variable.release_data)
+0015E5 904CEB            MOV     DPTR,#g_variable+02CH
+0015E8 E0                MOVX    A,@DPTR
+0015E9 706A              JNZ     ?C0015?KB_PROCESS
+0015EB         ?C0016?KB_PROCESS:
+   69: 		return;
+   70: 
+   71: 	if (g_variable.g24_currentState == CHANGE_TO_24G_CONNECTED)
+0015EB 904CC5            MOV     DPTR,#g_variable+06H
+0015EE E0                MOVX    A,@DPTR
+0015EF 6403              XRL     A,#03H
+0015F1 7062              JNZ     ?C0015?KB_PROCESS
+   72: 	{
+   73: 		if(tx_hid_buff[0] == HID_REPORTID_KEY_STANDARD)
+0015F3 904E2A            MOV     DPTR,#tx_hid_buff
+0015F6 E0                MOVX    A,@DPTR
+0015F7 6401              XRL     A,#01H
+0015F9 7023              JNZ     ?C0018?KB_PROCESS
+   74: 		{
+   75: 			tx_hid_buff[0] = 4;
+0015FB 7404              MOV     A,#04H
+0015FD F0                MOVX    @DPTR,A
+   76: 			if (tx_hid_buff[1] == 0 && tx_hid_buff[3] == 00 && tx_hid_buff[4] == 00 && tx_hid_buff[5] == 0)
+0015FE A3                INC     DPTR
+0015FF E0                MOVX    A,@DPTR
+001600 7014              JNZ     ?C0019?KB_PROCESS
+001602 904E2D            MOV     DPTR,#tx_hid_buff+03H
+001605 E0                MOVX    A,@DPTR
+001606 700E              JNZ     ?C0019?KB_PROCESS
+001608 A3                INC     DPTR
+001609 E0                MOVX    A,@DPTR
+00160A 700A              JNZ     ?C0019?KB_PROCESS
+00160C A3                INC     DPTR
+00160D E0                MOVX    A,@DPTR
+00160E 7006              JNZ     ?C0019?KB_PROCESS
+   77: 				repeat_send_24g = 0;
+001610 904DE5            MOV     DPTR,#repeat_send_24g
+001613 F0                MOVX    @DPTR,A
+001614 8032              SJMP    ?C0021?KB_PROCESS
+001616         ?C0019?KB_PROCESS:
+   78: 			else
+   79: 				repeat_send_24g = 1;			
+001616 904DE5            MOV     DPTR,#repeat_send_24g
+001619 7401              MOV     A,#01H
+00161B F0                MOVX    @DPTR,A
+   80: 		}
+00161C 802A              SJMP    ?C0021?KB_PROCESS
+00161E         ?C0018?KB_PROCESS:
+   81: 		else if(tx_hid_buff[0] == HID_REPORTID_MEDIA_KEY)
+00161E 904E2A            MOV     DPTR,#tx_hid_buff
+001621 E0                MOVX    A,@DPTR
+001622 B40219            CJNE    A,#02H,?C0022?KB_PROCESS
+   82: 		{
+   83: 			tx_hid_buff[0] = 5;
+001625 7405              MOV     A,#05H
+001627 F0                MOVX    @DPTR,A
+   84: 			if (tx_hid_buff[1] == 00 && tx_hid_buff[2] == 00)
+001628 A3                INC     DPTR
+001629 E0                MOVX    A,@DPTR
+00162A 700A              JNZ     ?C0023?KB_PROCESS
+00162C A3                INC     DPTR
+00162D E0                MOVX    A,@DPTR
+00162E 7006              JNZ     ?C0023?KB_PROCESS
+   85: 			{
+   86: 				repeat_send_24g = 0;
+001630 904DE5            MOV     DPTR,#repeat_send_24g
+001633 F0                MOVX    @DPTR,A
+   87: 			}
+001634 8012              SJMP    ?C0021?KB_PROCESS
+001636         ?C0023?KB_PROCESS:
+   88: 			else
+   89: 			{
+   90: 				repeat_send_24g = 1;
+001636 904DE5            MOV     DPTR,#repeat_send_24g
+001639 7401              MOV     A,#01H
+00163B F0                MOVX    @DPTR,A
+   91: 			}
+   92: 		}
+00163C 800A              SJMP    ?C0021?KB_PROCESS
+00163E         ?C0022?KB_PROCESS:
+   93: 		else if(tx_hid_buff[0] == HID_REPORTID_SYSTEM_CTRL)
+00163E 904E2A            MOV     DPTR,#tx_hid_buff
+001641 E0                MOVX    A,@DPTR
+001642 B40303            CJNE    A,#03H,?C0021?KB_PROCESS
+   94: 		{
+   95: 			tx_hid_buff[0] = 7;
+001645 7407              MOV     A,#07H
+001647 F0                MOVX    @DPTR,A
+   96: 		}
+001648         ?C0021?KB_PROCESS:
+   97: 		IPC_Tx24GData(tx_hid_buff,len);
+001648 7B01              MOV     R3,#01H
+00164A 7A4E              MOV     R2,#HIGH tx_hid_buff
+00164C 792A              MOV     R1,#LOW tx_hid_buff
+00164E 904E29            MOV     DPTR,#len
+001651 E0                MOVX    A,@DPTR
+001652 FD                MOV     R5,A
+001653 F1D1              ACALL   _IPC_Tx24GData
+   98: 	}
+   99: }
+001655         ?C0015?KB_PROCESS:
+001655 22                RET     
+----- FUNCTION _IPC_TxHidData (END) -------
+
+
+----- FUNCTION _xmemclear (BEGIN) -----
+001656 904EA0            MOV     DPTR,#dest
+001659 EB                MOV     A,R3
+00165A F0                MOVX    @DPTR,A
+00165B A3                INC     DPTR
+00165C EA                MOV     A,R2
+00165D F0                MOVX    @DPTR,A
+00165E A3                INC     DPTR
+00165F E9                MOV     A,R1
+001660 F0                MOVX    @DPTR,A
+;---- Variable 'len' assigned to Register 'R4/R5' ----
+001661         ?C0008?UTILITIES:
+001661 ED                MOV     A,R5
+001662 1D                DEC     R5
+001663 AE04              MOV     R6,AR4
+001665 7001              JNZ     ?C0026?UTILITIES
+001667 1C                DEC     R4
+001668         ?C0026?UTILITIES:
+001668 4E                ORL     A,R6
+001669 6016              JZ      ?C0010?UTILITIES
+00166B 904EA0            MOV     DPTR,#dest
+00166E E0                MOVX    A,@DPTR
+00166F FB                MOV     R3,A
+001670 A3                INC     DPTR
+001671 E4                CLR     A
+001672 75F001            MOV     B,#01H
+001675 120479            LCALL   ?C?ILDIX
+001678 A9F0              MOV     R1,B
+00167A FA                MOV     R2,A
+00167B E4                CLR     A
+00167C 1203FC            LCALL   ?C?CSTPTR
+00167F 80E0              SJMP    ?C0008?UTILITIES
+001681         ?C0010?UTILITIES:
+001681 22                RET     
+----- FUNCTION _xmemclear (END) -------
+
+
+----- FUNCTION System_clear_mem (BEGIN) -----
+ FILE: 'sys.c'
+   11: static void System_clear_mem()
+   12: {
+   13: 	xmemclear((byte *)&g_variable,sizeof(G_VARIABLE_MAP));
+   14: 	xmemclear(ksSelMapOld,KB_KSCAN_COL_NUM);
+001682 7B01              MOV     R3,#01H
+001684 7A4C              MOV     R2,#HIGH g_variable
+001686 79BF              MOV     R1,#LOW g_variable
+001688 7D48              MOV     R5,#048H
+00168A 7C00              MOV     R4,#00H
+00168C D156              ACALL   _xmemclear
+   15: 	xmemclear(ksSelMapCheck,KB_KSCAN_COL_NUM);
+00168E 7B01              MOV     R3,#01H
+001690 7A4D              MOV     R2,#HIGH ksSelMapOld
+001692 7993              MOV     R1,#LOW ksSelMapOld
+001694 7D14              MOV     R5,#014H
+001696 7C00              MOV     R4,#00H
+001698 D156              ACALL   _xmemclear
+   16: 	xmemclear(ksSelMapCurr,KB_KSCAN_COL_NUM);
+00169A 7B01              MOV     R3,#01H
+00169C 7A4D              MOV     R2,#HIGH ksSelMapCheck
+00169E 79A8              MOV     R1,#LOW ksSelMapCheck
+0016A0 7D14              MOV     R5,#014H
+0016A2 7C00              MOV     R4,#00H
+0016A4 D156              ACALL   _xmemclear
+   17: 	xmemclear(hidBuff,9);
+0016A6 7B01              MOV     R3,#01H
+0016A8 7A4D              MOV     R2,#HIGH ksSelMapCurr
+0016AA 79BC              MOV     R1,#LOW ksSelMapCurr
+0016AC 7D14              MOV     R5,#014H
+0016AE 7C00              MOV     R4,#00H
+0016B0 D156              ACALL   _xmemclear
+   18: 	xmemclear(multikey,9);
+0016B2 7B01              MOV     R3,#01H
+0016B4 7A48              MOV     R2,#HIGH hidBuff
+0016B6 7900              MOV     R1,#LOW hidBuff
+0016B8 7D09              MOV     R5,#09H
+0016BA 7C00              MOV     R4,#00H
+0016BC D156              ACALL   _xmemclear
+   19:  
+0016BE 7B01              MOV     R3,#01H
+0016C0 7A4D              MOV     R2,#HIGH multikey
+0016C2 79F8              MOV     R1,#LOW multikey
+0016C4 7D09              MOV     R5,#09H
+0016C6 7C00              MOV     R4,#00H
+0016C8 D156              ACALL   _xmemclear
+   20: 	delayChgInvTimer = 0;
+0016CA E4                CLR     A
+0016CB 904DEF            MOV     DPTR,#delayChgInvTimer
+0016CE F0                MOVX    @DPTR,A
+   21: 	action_timeout = 0;
+0016CF 904DF5            MOV     DPTR,#action_timeout
+0016D2 F0                MOVX    @DPTR,A
+   22: 
+   23: 
+   24: 	power_on_flag = 0;
+0016D3 904DF4            MOV     DPTR,#power_on_flag
+0016D6 F0                MOVX    @DPTR,A
+   25: 	repeat_send_24g = 0;
+0016D7 904DE5            MOV     DPTR,#repeat_send_24g
+0016DA F0                MOVX    @DPTR,A
+   26: 	get_24g_led_send = 0;
+0016DB 904DDF            MOV     DPTR,#get_24g_led_send
+0016DE F0                MOVX    @DPTR,A
+   27: 	press_long_time_flag = 0;
+0016DF 904DEB            MOV     DPTR,#press_long_time_flag
+0016E2 F0                MOVX    @DPTR,A
+   28: 	mult_key_status = 0;
+0016E3 904DF7            MOV     DPTR,#mult_key_status
+0016E6 F0                MOVX    @DPTR,A
+   29: 	long_press_flag = 0;
+0016E7 904DE4            MOV     DPTR,#long_press_flag
+0016EA F0                MOVX    @DPTR,A
+   30: 	standard_key_release_flag = 0;
+0016EB 904DE7            MOV     DPTR,#standard_key_release_flag
+0016EE F0                MOVX    @DPTR,A
+   31: 	fn_flag = 0;
+0016EF 904DEA            MOV     DPTR,#fn_flag
+0016F2 F0                MOVX    @DPTR,A
+   32: 	fn_flag_last = 0;
+0016F3 904DF3            MOV     DPTR,#fn_flag_last
+0016F6 F0                MOVX    @DPTR,A
+   33: 	fn_tx_flag = 0;
+0016F7 904DE2            MOV     DPTR,#fn_tx_flag
+0016FA F0                MOVX    @DPTR,A
+   34: 	fn_lock_flag = 0;
+0016FB 904DF0            MOV     DPTR,#fn_lock_flag
+0016FE F0                MOVX    @DPTR,A
+   35: 
+   36: 	mult_key_value = 0;
+0016FF 904DF6            MOV     DPTR,#mult_key_value
+001702 F0                MOVX    @DPTR,A
+   37: 	m_caps_num_lock = 0xf0;
+001703 904CB7            MOV     DPTR,#m_caps_num_lock
+001706 74F0              MOV     A,#0F0H
+001708 F0                MOVX    @DPTR,A
+   38: 	m_caps_num_lock_last = 0xf0; 
+001709 904DE8            MOV     DPTR,#m_caps_num_lock_last
+00170C F0                MOVX    @DPTR,A
+   39: 	m_reconnect_continue = 0;
+00170D E4                CLR     A
+00170E 904D38            MOV     DPTR,#m_reconnect_continue
+001711 F0                MOVX    @DPTR,A
+   40: }
+001712 22                RET     
+----- FUNCTION System_clear_mem (END) -------
+
+
+----- FUNCTION _kb_send_combination_key (BEGIN) -----
+ FILE: 'kb_process.c'
+  126: void kb_send_combination_key(byte ctrl_value,byte key_value)
+  127: {
+001713 904EA9            MOV     DPTR,#ctrl_value
+001716 EF                MOV     A,R7
+001717 F0                MOVX    @DPTR,A
+001718 A3                INC     DPTR
+001719 ED                MOV     A,R5
+00171A F0                MOVX    @DPTR,A
+  128: 	xmemclear(hidBuff,9);
+  129: 	hidBuff[0] = HID_REPORTID_KEY_STANDARD;
+00171B 7B01              MOV     R3,#01H
+00171D 7A48              MOV     R2,#HIGH hidBuff
+00171F 7900              MOV     R1,#LOW hidBuff
+001721 7D09              MOV     R5,#09H
+001723 7C00              MOV     R4,#00H
+001725 D156              ACALL   _xmemclear
+  130: 	hidBuff[1] |= ctrl_value;
+001727 904800            MOV     DPTR,#hidBuff
+00172A 7401              MOV     A,#01H
+00172C F0                MOVX    @DPTR,A
+  131: 	hidBuff[3] = key_value; 
+00172D A3                INC     DPTR
+00172E E0                MOVX    A,@DPTR
+00172F FF                MOV     R7,A
+001730 904EA9            MOV     DPTR,#ctrl_value
+001733 E0                MOVX    A,@DPTR
+001734 FE                MOV     R6,A
+001735 EF                MOV     A,R7
+001736 4E                ORL     A,R6
+001737 904801            MOV     DPTR,#hidBuff+01H
+00173A F0                MOVX    @DPTR,A
+  132: 	IPC_TxHidData(hidBuff, 9);
+00173B 904EAA            MOV     DPTR,#key_value
+00173E E0                MOVX    A,@DPTR
+00173F 904803            MOV     DPTR,#hidBuff+03H
+001742 F0                MOVX    @DPTR,A
+  133: }
+001743 7B01              MOV     R3,#01H
+001745 7A48              MOV     R2,#HIGH hidBuff
+001747 7900              MOV     R1,#LOW hidBuff
+001749 7D09              MOV     R5,#09H
+00174B A1A2              AJMP    _IPC_TxHidData
+----- FUNCTION _kb_send_combination_key (END) -------
+
+
+----- FUNCTION kb_need_keyscan (BEGIN) -----
+ FILE: 'kb_process.c'
+  190: void kb_need_keyscan()
+  191: {
+  192: 		if((g_variable.key_combination_step == CAMBINATION_KEY_FREE)
+  193: 		||(g_variable.key_combination_step == CAMBINATION_KEY_COMPLETE)
+00174D 904CF4            MOV     DPTR,#g_variable+035H
+001750 E0                MOVX    A,@DPTR
+001751 FF                MOV     R7,A
+001752 6008              JZ      ?C0039?KB_PROCESS
+001754 6403              XRL     A,#03H
+001756 6004              JZ      ?C0039?KB_PROCESS
+001758 EF                MOV     A,R7
+001759 B40503            CJNE    A,#05H,?C0038?KB_PROCESS
+00175C         ?C0039?KB_PROCESS:
+  194: 		|| (g_variable.key_combination_step == CAMBINATION_KEY_RELEASE)
+  195: 		)
+  196: 			kb_motion();
+00175C 021B1E            LJMP    kb_motion
+00175F         ?C0038?KB_PROCESS:
+  197: 		else
+  198: 		{
+  199: 			if(g_variable.key_combination_step == CAMBINATION_KEY_PRESS)
+00175F 904CF4            MOV     DPTR,#g_variable+035H
+001762 E0                MOVX    A,@DPTR
+001763 B4010E            CJNE    A,#01H,?C0041?KB_PROCESS
+  200: 			{
+  201: 				kb_send_combination_key(g_variable.key_combination_ctrl,0);
+001766 A3                INC     DPTR
+001767 E0                MOVX    A,@DPTR
+001768 FF                MOV     R7,A
+001769 E4                CLR     A
+00176A FD                MOV     R5,A
+00176B F113              ACALL   _kb_send_combination_key
+  202: 				g_variable.key_combination_step = CAMBINATION_KEY_HOLD;
+00176D 904CF4            MOV     DPTR,#g_variable+035H
+001770 7402              MOV     A,#02H
+001772 F0                MOVX    @DPTR,A
+  203: 			}
+001773 22                RET     
+001774         ?C0041?KB_PROCESS:
+  204: 			else if(g_variable.key_combination_step == CAMBINATION_KEY_HOLD)
+001774 904CF4            MOV     DPTR,#g_variable+035H
+001777 E0                MOVX    A,@DPTR
+001778 B4020B            CJNE    A,#02H,?C0043?KB_PROCESS
+  205: 			{	
+  206: 				g_variable.key_combination_step = CAMBINATION_KEY_COMPLETE;
+00177B 7403              MOV     A,#03H
+00177D F0                MOVX    @DPTR,A
+  207: 				kb_send_combination_key(g_variable.key_combination_ctrl,g_variable.key_combination_keyvalue);
+00177E A3                INC     DPTR
+00177F E0                MOVX    A,@DPTR
+001780 FF                MOV     R7,A
+001781 A3                INC     DPTR
+001782 E0                MOVX    A,@DPTR
+001783 FD                MOV     R5,A
+001784 808D              SJMP    _kb_send_combination_key
+  208: 			}
+001786         ?C0043?KB_PROCESS:
+  209: 			else if(g_variable.key_combination_step == CAMBINATION_KEY_WAIT_RELEASE)
+001786 904CF4            MOV     DPTR,#g_variable+035H
+001789 E0                MOVX    A,@DPTR
+00178A B40427            CJNE    A,#04H,?C0045?KB_PROCESS
+  210: 			{
+  211: 				g_variable.key_combination_keyvalue = 0;
+00178D E4                CLR     A
+00178E 904CF6            MOV     DPTR,#g_variable+037H
+001791 F0                MOVX    @DPTR,A
+  212: 				kb_send_combination_key(g_variable.key_combination_ctrl,g_variable.key_combination_keyvalue);
+001792 904CF5            MOV     DPTR,#g_variable+036H
+001795 E0                MOVX    A,@DPTR
+001796 FF                MOV     R7,A
+001797 E4                CLR     A
+001798 FD                MOV     R5,A
+001799 F113              ACALL   _kb_send_combination_key
+  213: 				g_variable.key_combination_ctrl = 0;
+00179B E4                CLR     A
+00179C 904CF5            MOV     DPTR,#g_variable+036H
+00179F F0                MOVX    @DPTR,A
+  214: 				if(!g_variable.one_key_press_wait_release_timer)
+0017A0 904CF8            MOV     DPTR,#g_variable+039H
+0017A3 E0                MOVX    A,@DPTR
+0017A4 7007              JNZ     ?C0046?KB_PROCESS
+  215: 					g_variable.key_combination_step = CAMBINATION_KEY_NULL;
+0017A6 904CF4            MOV     DPTR,#g_variable+035H
+0017A9 7406              MOV     A,#06H
+0017AB F0                MOVX    @DPTR,A
+0017AC 22                RET     
+0017AD         ?C0046?KB_PROCESS:
+  216: 				else
+  217: 					g_variable.key_combination_step = CAMBINATION_KEY_RELEASE;
+0017AD 904CF4            MOV     DPTR,#g_variable+035H
+0017B0 7405              MOV     A,#05H
+0017B2 F0                MOVX    @DPTR,A
+  218: 			}
+0017B3 22                RET     
+0017B4         ?C0045?KB_PROCESS:
+  219: 			else if(g_variable.key_combination_step == CAMBINATION_KEY_NULL)
+0017B4 904CF4            MOV     DPTR,#g_variable+035H
+0017B7 E0                MOVX    A,@DPTR
+0017B8 B40615            CJNE    A,#06H,?C0050?KB_PROCESS
+  220: 			{
+  221: 				g_variable.key_combination_keyvalue = 0;
+0017BB E4                CLR     A
+0017BC 904CF6            MOV     DPTR,#g_variable+037H
+0017BF F0                MOVX    @DPTR,A
+  222: 				g_variable.key_combination_ctrl = 0;
+0017C0 904CF5            MOV     DPTR,#g_variable+036H
+0017C3 F0                MOVX    @DPTR,A
+  223: 				kb_send_combination_key(g_variable.key_combination_ctrl,g_variable.key_combination_keyvalue);
+0017C4 A3                INC     DPTR
+0017C5 E0                MOVX    A,@DPTR
+0017C6 FD                MOV     R5,A
+0017C7 E4                CLR     A
+0017C8 FF                MOV     R7,A
+0017C9 F113              ACALL   _kb_send_combination_key
+  224: 				g_variable.key_combination_step = CAMBINATION_KEY_FREE;
+0017CB E4                CLR     A
+0017CC 904CF4            MOV     DPTR,#g_variable+035H
+0017CF F0                MOVX    @DPTR,A
+  225: 			}
+  226: 		}
+  227: 
+  228: }
+0017D0         ?C0050?KB_PROCESS:
+0017D0 22                RET     
+----- FUNCTION kb_need_keyscan (END) -------
+
+
+----- FUNCTION _IPC_Tx24GData (BEGIN) -----
+;---- Variable 'len' assigned to Register 'R5' ----
+;---- Variable 'dt' assigned to Register 'R1/R2/R3' ----
+0017D1 900BE7            MOV     DPTR,#ipcSendBuff
+0017D4 7406              MOV     A,#06H
+0017D6 F0                MOVX    @DPTR,A
+;----                  JMP     _IPC_TxData
+----- FUNCTION _IPC_Tx24GData (END) -------
+
+
+----- FUNCTION _IPC_TxData (BEGIN) -----
+0017D7 904EB6            MOV     DPTR,#len
+0017DA ED                MOV     A,R5
+0017DB F0                MOVX    @DPTR,A
+;---- Variable 'dt' assigned to Register 'R1/R2/R3' ----
+0017DC E0                MOVX    A,@DPTR
+0017DD FD                MOV     R5,A
+0017DE 900BE8            MOV     DPTR,#ipcSendBuff+01H
+0017E1 F0                MOVX    @DPTR,A
+0017E2 7E0B              MOV     R6,#HIGH ipcSendBuff+02H
+0017E4 7FE9              MOV     R7,#LOW ipcSendBuff+02H
+0017E6 904E70            MOV     DPTR,#?_xmemcpy?BYTE+05H
+0017E9 ED                MOV     A,R5
+0017EA F0                MOVX    @DPTR,A
+0017EB 5150              ACALL   _xmemcpy
+0017ED 7B01              MOV     R3,#01H
+0017EF 7A0B              MOV     R2,#HIGH ipcSendBuff
+0017F1 79E7              MOV     R1,#LOW ipcSendBuff
+0017F3 904EB6            MOV     DPTR,#len
+0017F6 E0                MOVX    A,@DPTR
+0017F7 2402              ADD     A,#02H
+0017F9 FD                MOV     R5,A
+0017FA 0208F6            LJMP    _ipcTx
+----- FUNCTION _IPC_TxData (END) -------
+
+
+----- FUNCTION _kb_set_multikey (BEGIN) -----
+ FILE: 'kb_process.c'
+  102: void kb_set_multikey(word multikey_value)
+  103: {
+;---- Variable 'multikey_value' assigned to Register 'R4/R5' ----
+0017FD AD07              MOV     R5,AR7
+0017FF AC06              MOV     R4,AR6
+  104: 	if(mult_key_status != KEY_WAIT_RELEASE)
+  105: 	{
+001801 904DF7            MOV     DPTR,#mult_key_status
+001804 E0                MOVX    A,@DPTR
+001805 6402              XRL     A,#02H
+001807 600E              JZ      ?C0028?KB_PROCESS
+  106: 		mult_key_status = KEY_MULIT_PRESS;
+  107: 		multikey[0] = HID_REPORTID_MEDIA_KEY;
+001809 7401              MOV     A,#01H
+00180B F0                MOVX    @DPTR,A
+  108: 		multikey[1] = (multikey_value&0xff);
+00180C 904DF8            MOV     DPTR,#multikey
+00180F 04                INC     A
+001810 F0                MOVX    @DPTR,A
+  109: 		multikey[2] = ((multikey_value>>8)&0xff);
+001811 EF                MOV     A,R7
+001812 A3                INC     DPTR
+001813 F0                MOVX    @DPTR,A
+  110: 	}
+001814 EE                MOV     A,R6
+001815 A3                INC     DPTR
+001816 F0                MOVX    @DPTR,A
+  111: }
+  112: 
+001817         ?C0028?KB_PROCESS:
+001817 22                RET     
+----- FUNCTION _kb_set_multikey (END) -------
+
+
+----- FUNCTION _kb_multikey_setup (BEGIN) -----
+ FILE: 'kb_process.c'
+  592: void kb_multikey_setup(tKSEVENT *pEvt)
+  593: {
+001818 904E85            MOV     DPTR,#pEvt
+00181B EB                MOV     A,R3
+00181C F0                MOVX    @DPTR,A
+00181D A3                INC     DPTR
+00181E EA                MOV     A,R2
+00181F F0                MOVX    @DPTR,A
+001820 A3                INC     DPTR
+001821 E9                MOV     A,R1
+001822 F0                MOVX    @DPTR,A
+  594: 	byte i = 0;
+  595: 	
+001823 E4                CLR     A
+001824 A3                INC     DPTR
+001825 F0                MOVX    @DPTR,A
+  596: 	for (i = 0;i < 6;i++)
+001826 F0                MOVX    @DPTR,A
+001827         ?C0158?KB_PROCESS:
+001827 904E88            MOV     DPTR,#i
+00182A E0                MOVX    A,@DPTR
+00182B FF                MOV     R7,A
+00182C C3                CLR     C
+00182D 9406              SUBB    A,#06H
+00182F 4002              JC      $ + 4H
+001831 41C4              AJMP    ?C0209?KB_PROCESS
+  597: 	{		
+  598: 		if ((pEvt->ksPool[i] &0xF0) == 0xf0 
+001833 904E85            MOV     DPTR,#pEvt
+001836 E0                MOVX    A,@DPTR
+001837 FB                MOV     R3,A
+001838 A3                INC     DPTR
+001839 E0                MOVX    A,@DPTR
+00183A FA                MOV     R2,A
+00183B A3                INC     DPTR
+00183C E0                MOVX    A,@DPTR
+00183D 2401              ADD     A,#01H
+00183F F9                MOV     R1,A
+001840 E4                CLR     A
+001841 3A                ADDC    A,R2
+001842 FA                MOV     R2,A
+001843 7E00              MOV     R6,#00H
+001845 E9                MOV     A,R1
+001846 2F                ADD     A,R7
+001847 F9                MOV     R1,A
+001848 EE                MOV     A,R6
+001849 3A                ADDC    A,R2
+00184A FA                MOV     R2,A
+00184B 1203B6            LCALL   ?C?CLDPTR
+00184E FF                MOV     R7,A
+00184F 54F0              ANL     A,#0F0H
+001851 64F0              XRL     A,#0F0H
+001853 6009              JZ      ?C0162?KB_PROCESS
+001855 EF                MOV     A,R7
+001856 54D0              ANL     A,#0D0H
+001858 64D0              XRL     A,#0D0H
+00185A 6002              JZ      $ + 4H
+00185C 41BC              AJMP    ?C0160?KB_PROCESS
+00185E         ?C0162?KB_PROCESS:
+  599: 			|| (pEvt->ksPool[i] &0xD0) == 0xD0)
+  600: 		{
+  601: 			
+  602: 			if (pEvt->ksPool[i] ==  HID_MULTIKEY_MEDIA) //media select
+00185E 1203B6            LCALL   ?C?CLDPTR
+001861 FB                MOV     R3,A
+001862 B4F109            CJNE    A,#0F1H,?C0163?KB_PROCESS
+  603: 			{
+  604: 				kb_set_multikey(0x0183); 
+001865 7F83              MOV     R7,#083H
+001867 7E01              MOV     R6,#01H
+001869 1217FD            LCALL   _kb_set_multikey
+  605: 			}
+00186C 4191              AJMP    ?C0164?KB_PROCESS
+00186E         ?C0163?KB_PROCESS:
+  606: 			else
+  607: 			if (pEvt->ksPool[i] ==  HID_MULTIKEY_PALY) //play / pause
+00186E EB                MOV     A,R3
+00186F B4F209            CJNE    A,#0F2H,?C0165?KB_PROCESS
+  608: 			{ 
+  609: 				kb_set_multikey(0x00cd);
+001872 7FCD              MOV     R7,#0CDH
+001874 7E00              MOV     R6,#00H
+001876 1217FD            LCALL   _kb_set_multikey
+  610: 			}
+001879 4191              AJMP    ?C0164?KB_PROCESS
+00187B         ?C0165?KB_PROCESS:
+  611: 			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_STOP)  //stop
+00187B 904E85            MOV     DPTR,#pEvt
+00187E E0                MOVX    A,@DPTR
+00187F FB                MOV     R3,A
+001880 A3                INC     DPTR
+001881 E0                MOVX    A,@DPTR
+001882 FA                MOV     R2,A
+001883 A3                INC     DPTR
+001884 E0                MOVX    A,@DPTR
+001885 2401              ADD     A,#01H
+001887 F9                MOV     R1,A
+001888 E4                CLR     A
+001889 3A                ADDC    A,R2
+00188A FA                MOV     R2,A
+00188B A3                INC     DPTR
+00188C E0                MOVX    A,@DPTR
+00188D 7E00              MOV     R6,#00H
+00188F 29                ADD     A,R1
+001890 F9                MOV     R1,A
+001891 EE                MOV     A,R6
+001892 3A                ADDC    A,R2
+001893 FA                MOV     R2,A
+001894 1203B6            LCALL   ?C?CLDPTR
+001897 FB                MOV     R3,A
+001898 B4F307            CJNE    A,#0F3H,?C0167?KB_PROCESS
+  612: 			{
+  613: 				kb_set_multikey(0x00b7);
+00189B 7FB7              MOV     R7,#0B7H
+00189D 1217FD            LCALL   _kb_set_multikey
+  614: 			}	
+0018A0 4191              AJMP    ?C0164?KB_PROCESS
+0018A2         ?C0167?KB_PROCESS:
+  615: 			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_PRE_TRACK) //pre Track
+0018A2 EB                MOV     A,R3
+0018A3 B4F409            CJNE    A,#0F4H,?C0169?KB_PROCESS
+  616: 			{
+  617: 				kb_set_multikey(0x00b6);
+0018A6 7FB6              MOV     R7,#0B6H
+0018A8 7E00              MOV     R6,#00H
+0018AA 1217FD            LCALL   _kb_set_multikey
+  618: 			}
+0018AD 4191              AJMP    ?C0164?KB_PROCESS
+0018AF         ?C0169?KB_PROCESS:
+  619: 			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_NEXT_TRACK) //next Track
+0018AF 904E85            MOV     DPTR,#pEvt
+0018B2 E0                MOVX    A,@DPTR
+0018B3 FB                MOV     R3,A
+0018B4 A3                INC     DPTR
+0018B5 E0                MOVX    A,@DPTR
+0018B6 FA                MOV     R2,A
+0018B7 A3                INC     DPTR
+0018B8 E0                MOVX    A,@DPTR
+0018B9 2401              ADD     A,#01H
+0018BB F9                MOV     R1,A
+0018BC E4                CLR     A
+0018BD 3A                ADDC    A,R2
+0018BE FA                MOV     R2,A
+0018BF A3                INC     DPTR
+0018C0 E0                MOVX    A,@DPTR
+0018C1 7E00              MOV     R6,#00H
+0018C3 29                ADD     A,R1
+0018C4 F9                MOV     R1,A
+0018C5 EE                MOV     A,R6
+0018C6 3A                ADDC    A,R2
+0018C7 FA                MOV     R2,A
+0018C8 1203B6            LCALL   ?C?CLDPTR
+0018CB FB                MOV     R3,A
+0018CC B4F507            CJNE    A,#0F5H,?C0171?KB_PROCESS
+  620: 			{
+  621: 				kb_set_multikey(0x00b5);
+0018CF 7FB5              MOV     R7,#0B5H
+0018D1 1217FD            LCALL   _kb_set_multikey
+  622: 			}
+0018D4 4191              AJMP    ?C0164?KB_PROCESS
+0018D6         ?C0171?KB_PROCESS:
+  623: 			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_VOL_DOWN) //vol-
+0018D6 EB                MOV     A,R3
+0018D7 B4F609            CJNE    A,#0F6H,?C0173?KB_PROCESS
+  624: 			{
+  625: 				kb_set_multikey(0x00ea);
+0018DA 7FEA              MOV     R7,#0EAH
+0018DC 7E00              MOV     R6,#00H
+0018DE 1217FD            LCALL   _kb_set_multikey
+  626: 			}
+0018E1 4191              AJMP    ?C0164?KB_PROCESS
+0018E3         ?C0173?KB_PROCESS:
+  627: 			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_VOL_UP) //vol+
+0018E3 904E85            MOV     DPTR,#pEvt
+0018E6 E0                MOVX    A,@DPTR
+0018E7 FB                MOV     R3,A
+0018E8 A3                INC     DPTR
+0018E9 E0                MOVX    A,@DPTR
+0018EA FA                MOV     R2,A
+0018EB A3                INC     DPTR
+0018EC E0                MOVX    A,@DPTR
+0018ED 2401              ADD     A,#01H
+0018EF F9                MOV     R1,A
+0018F0 E4                CLR     A
+0018F1 3A                ADDC    A,R2
+0018F2 FA                MOV     R2,A
+0018F3 A3                INC     DPTR
+0018F4 E0                MOVX    A,@DPTR
+0018F5 7E00              MOV     R6,#00H
+0018F7 29                ADD     A,R1
+0018F8 F9                MOV     R1,A
+0018F9 EE                MOV     A,R6
+0018FA 3A                ADDC    A,R2
+0018FB FA                MOV     R2,A
+0018FC 1203B6            LCALL   ?C?CLDPTR
+0018FF FB                MOV     R3,A
+001900 B4F707            CJNE    A,#0F7H,?C0175?KB_PROCESS
+  628: 			{
+  629: 				kb_set_multikey(0x00e9);
+001903 7FE9              MOV     R7,#0E9H
+001905 1217FD            LCALL   _kb_set_multikey
+  630: 			}
+001908 4191              AJMP    ?C0164?KB_PROCESS
+00190A         ?C0175?KB_PROCESS:
+  631: 			else	if (pEvt->ksPool[i] ==  HID_MULTIKEY_MUTE) //mute
+00190A EB                MOV     A,R3
+00190B B4F809            CJNE    A,#0F8H,?C0177?KB_PROCESS
+  632: 			{
+  633: 				kb_set_multikey(0x00e2);
+00190E 7FE2              MOV     R7,#0E2H
+001910 7E00              MOV     R6,#00H
+001912 1217FD            LCALL   _kb_set_multikey
+  634: 			}
+001915 4191              AJMP    ?C0164?KB_PROCESS
+001917         ?C0177?KB_PROCESS:
+  635: 			else	if (pEvt->ksPool[i] ==  HID_MULTIKEY_MY_COMPUTER) 
+001917 904E85            MOV     DPTR,#pEvt
+00191A E0                MOVX    A,@DPTR
+00191B FB                MOV     R3,A
+00191C A3                INC     DPTR
+00191D E0                MOVX    A,@DPTR
+00191E FA                MOV     R2,A
+00191F A3                INC     DPTR
+001920 E0                MOVX    A,@DPTR
+001921 2401              ADD     A,#01H
+001923 F9                MOV     R1,A
+001924 E4                CLR     A
+001925 3A                ADDC    A,R2
+001926 FA                MOV     R2,A
+001927 A3                INC     DPTR
+001928 E0                MOVX    A,@DPTR
+001929 7E00              MOV     R6,#00H
+00192B 29                ADD     A,R1
+00192C F9                MOV     R1,A
+00192D EE                MOV     A,R6
+00192E 3A                ADDC    A,R2
+00192F FA                MOV     R2,A
+001930 1203B6            LCALL   ?C?CLDPTR
+001933 FB                MOV     R3,A
+001934 B4F908            CJNE    A,#0F9H,?C0179?KB_PROCESS
+  636: 			{
+  637: 				kb_set_multikey(0x0194);
+001937 7F94              MOV     R7,#094H
+001939 0E                INC     R6
+00193A 1217FD            LCALL   _kb_set_multikey
+  638: 			}	
+00193D 4191              AJMP    ?C0164?KB_PROCESS
+00193F         ?C0179?KB_PROCESS:
+  639: 			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_MAIL)  //mail
+00193F EB                MOV     A,R3
+001940 B4FA09            CJNE    A,#0FAH,?C0181?KB_PROCESS
+  640: 			{
+  641: 				kb_set_multikey(0x018a);//mail
+001943 7F8A              MOV     R7,#08AH
+001945 7E01              MOV     R6,#01H
+001947 1217FD            LCALL   _kb_set_multikey
+  642: 			}
+00194A 4191              AJMP    ?C0164?KB_PROCESS
+00194C         ?C0181?KB_PROCESS:
+  643: 			else	if (pEvt->ksPool[i] ==  HID_MULTIKEY_CALCULATOR) //calculator
+00194C 904E85            MOV     DPTR,#pEvt
+00194F E0                MOVX    A,@DPTR
+001950 FB                MOV     R3,A
+001951 A3                INC     DPTR
+001952 E0                MOVX    A,@DPTR
+001953 FA                MOV     R2,A
+001954 A3                INC     DPTR
+001955 E0                MOVX    A,@DPTR
+001956 2401              ADD     A,#01H
+001958 F9                MOV     R1,A
+001959 E4                CLR     A
+00195A 3A                ADDC    A,R2
+00195B FA                MOV     R2,A
+00195C A3                INC     DPTR
+00195D E0                MOVX    A,@DPTR
+00195E 7E00              MOV     R6,#00H
+001960 29                ADD     A,R1
+001961 F9                MOV     R1,A
+001962 EE                MOV     A,R6
+001963 3A                ADDC    A,R2
+001964 FA                MOV     R2,A
+001965 1203B6            LCALL   ?C?CLDPTR
+001968 FB                MOV     R3,A
+001969 B4FB08            CJNE    A,#0FBH,?C0183?KB_PROCESS
+  644: 			{
+  645: 				kb_set_multikey(0x0192);
+00196C 7F92              MOV     R7,#092H
+00196E 0E                INC     R6
+00196F 1217FD            LCALL   _kb_set_multikey
+  646: 			}
+001972 4191              AJMP    ?C0164?KB_PROCESS
+001974         ?C0183?KB_PROCESS:
+  647: 			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_AC_FAVORITES) 
+001974 EB                MOV     A,R3
+001975 B4D009            CJNE    A,#0D0H,?C0185?KB_PROCESS
+  648: 			{
+  649: 				kb_set_multikey(0x022a);//www Favorites
+001978 7F2A              MOV     R7,#02AH
+00197A 7E02              MOV     R6,#02H
+00197C 1217FD            LCALL   _kb_set_multikey
+  650: 			}
+00197F 4191              AJMP    ?C0164?KB_PROCESS
+001981         ?C0185?KB_PROCESS:
+  651: 			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_AC_FORWARD)  
+001981 904E85            MOV     DPTR,#pEvt
+001984 E0                MOVX    A,@DPTR
+001985 FB                MOV     R3,A
+001986 A3                INC     DPTR
+001987 E0                MOVX    A,@DPTR
+001988 FA                MOV     R2,A
+001989 A3                INC     DPTR
+00198A E0                MOVX    A,@DPTR
+00198B 2401              ADD     A,#01H
+00198D F9                MOV     R1,A
+00198E E4                CLR     A
+00198F 3A                ADDC    A,R2
+001990 FA                MOV     R2,A
+001991 A3                INC     DPTR
+001992 E0                MOVX    A,@DPTR
+001993 7E00              MOV     R6,#00H
+001995 29                ADD     A,R1
+001996 F9                MOV     R1,A
+001997 EE                MOV     A,R6
+001998 3A                ADDC    A,R2
+001999 FA                MOV     R2,A
+00199A 1203B6            LCALL   ?C?CLDPTR
+00199D FB                MOV     R3,A
+00199E B4D109            CJNE    A,#0D1H,?C0187?KB_PROCESS
+  652: 			{
+  653: 				kb_set_multikey(0x0225);
+0019A1 7F25              MOV     R7,#025H
+0019A3 7E02              MOV     R6,#02H
+0019A5 1217FD            LCALL   _kb_set_multikey
+  654: 			}
+0019A8 4191              AJMP    ?C0164?KB_PROCESS
+0019AA         ?C0187?KB_PROCESS:
+  655: 			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_AC_STOP)  //www Stop
+0019AA EB                MOV     A,R3
+0019AB B4D309            CJNE    A,#0D3H,?C0189?KB_PROCESS
+  656: 			{
+  657: 				kb_set_multikey(0x0226);
+0019AE 7F26              MOV     R7,#026H
+0019B0 7E02              MOV     R6,#02H
+0019B2 1217FD            LCALL   _kb_set_multikey
+  658: 			}
+0019B5 4191              AJMP    ?C0164?KB_PROCESS
+0019B7         ?C0189?KB_PROCESS:
+  659: 			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_AC_BACK)  
+0019B7 904E85            MOV     DPTR,#pEvt
+0019BA E0                MOVX    A,@DPTR
+0019BB FB                MOV     R3,A
+0019BC A3                INC     DPTR
+0019BD E0                MOVX    A,@DPTR
+0019BE FA                MOV     R2,A
+0019BF A3                INC     DPTR
+0019C0 E0                MOVX    A,@DPTR
+0019C1 2401              ADD     A,#01H
+0019C3 F9                MOV     R1,A
+0019C4 E4                CLR     A
+0019C5 3A                ADDC    A,R2
+0019C6 FA                MOV     R2,A
+0019C7 A3                INC     DPTR
+0019C8 E0                MOVX    A,@DPTR
+0019C9 7E00              MOV     R6,#00H
+0019CB 29                ADD     A,R1
+0019CC F9                MOV     R1,A
+0019CD EE                MOV     A,R6
+0019CE 3A                ADDC    A,R2
+0019CF FA                MOV     R2,A
+0019D0 1203B6            LCALL   ?C?CLDPTR
+0019D3 FB                MOV     R3,A
+0019D4 B4D209            CJNE    A,#0D2H,?C0191?KB_PROCESS
+  660: 			{
+  661: 				kb_set_multikey(0x0224);
+0019D7 7F24              MOV     R7,#024H
+0019D9 7E02              MOV     R6,#02H
+0019DB 1217FD            LCALL   _kb_set_multikey
+  662: 			}
+0019DE 4191              AJMP    ?C0164?KB_PROCESS
+0019E0         ?C0191?KB_PROCESS:
+  663: 			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_AC_REFRESH) //www refresh
+0019E0 EB                MOV     A,R3
+0019E1 B4D409            CJNE    A,#0D4H,?C0193?KB_PROCESS
+  664: 			{
+  665: 				kb_set_multikey(0x0227);
+0019E4 7F27              MOV     R7,#027H
+0019E6 7E02              MOV     R6,#02H
+0019E8 1217FD            LCALL   _kb_set_multikey
+  666: 			}	
+0019EB 4191              AJMP    ?C0164?KB_PROCESS
+0019ED         ?C0193?KB_PROCESS:
+  667: 			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_AC_SEARCH)  //www search
+0019ED 904E85            MOV     DPTR,#pEvt
+0019F0 E0                MOVX    A,@DPTR
+0019F1 FB                MOV     R3,A
+0019F2 A3                INC     DPTR
+0019F3 E0                MOVX    A,@DPTR
+0019F4 FA                MOV     R2,A
+0019F5 A3                INC     DPTR
+0019F6 E0                MOVX    A,@DPTR
+0019F7 2401              ADD     A,#01H
+0019F9 F9                MOV     R1,A
+0019FA E4                CLR     A
+0019FB 3A                ADDC    A,R2
+0019FC FA                MOV     R2,A
+0019FD A3                INC     DPTR
+0019FE E0                MOVX    A,@DPTR
+0019FF 7E00              MOV     R6,#00H
+001A01 29                ADD     A,R1
+001A02 F9                MOV     R1,A
+001A03 EE                MOV     A,R6
+001A04 3A                ADDC    A,R2
+001A05 FA                MOV     R2,A
+001A06 1203B6            LCALL   ?C?CLDPTR
+001A09 FB                MOV     R3,A
+001A0A B4D509            CJNE    A,#0D5H,?C0195?KB_PROCESS
+  668: 			{
+  669: 				kb_set_multikey(0x0221);
+001A0D 7F21              MOV     R7,#021H
+001A0F 7E02              MOV     R6,#02H
+001A11 1217FD            LCALL   _kb_set_multikey
+  670: 			}
+001A14 807B              SJMP    ?C0164?KB_PROCESS
+001A16         ?C0195?KB_PROCESS:
+  671: 			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_AC_HOME)
+001A16 EB                MOV     A,R3
+001A17 B4D609            CJNE    A,#0D6H,?C0197?KB_PROCESS
+  672: 			{
+  673: 				kb_set_multikey(0x0223);
+001A1A 7F23              MOV     R7,#023H
+001A1C 7E02              MOV     R6,#02H
+001A1E 1217FD            LCALL   _kb_set_multikey
+  674: 			} 	
+001A21 806E              SJMP    ?C0164?KB_PROCESS
+001A23         ?C0197?KB_PROCESS:
+  675: 			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_LIGHT_DOWN)
+001A23 904E85            MOV     DPTR,#pEvt
+001A26 E0                MOVX    A,@DPTR
+001A27 FB                MOV     R3,A
+001A28 A3                INC     DPTR
+001A29 E0                MOVX    A,@DPTR
+001A2A FA                MOV     R2,A
+001A2B A3                INC     DPTR
+001A2C E0                MOVX    A,@DPTR
+001A2D 2401              ADD     A,#01H
+001A2F F9                MOV     R1,A
+001A30 E4                CLR     A
+001A31 3A                ADDC    A,R2
+001A32 FA                MOV     R2,A
+001A33 A3                INC     DPTR
+001A34 E0                MOVX    A,@DPTR
+001A35 7E00              MOV     R6,#00H
+001A37 29                ADD     A,R1
+001A38 F9                MOV     R1,A
+001A39 EE                MOV     A,R6
+001A3A 3A                ADDC    A,R2
+001A3B FA                MOV     R2,A
+001A3C 1203B6            LCALL   ?C?CLDPTR
+001A3F FB                MOV     R3,A
+001A40 B4D707            CJNE    A,#0D7H,?C0199?KB_PROCESS
+  676: 			{
+  677: 				kb_set_multikey(0x0070);
+001A43 7F70              MOV     R7,#070H
+001A45 1217FD            LCALL   _kb_set_multikey
+  678: 			}
+001A48 8047              SJMP    ?C0164?KB_PROCESS
+001A4A         ?C0199?KB_PROCESS:
+  679: 			else if (pEvt->ksPool[i] ==  HID_MULTIKEY_LIGHT_UP)
+001A4A EB                MOV     A,R3
+001A4B B4D809            CJNE    A,#0D8H,?C0201?KB_PROCESS
+  680: 			{
+  681: 				kb_set_multikey(0x006f);
+001A4E 7F6F              MOV     R7,#06FH
+001A50 7E00              MOV     R6,#00H
+001A52 1217FD            LCALL   _kb_set_multikey
+  682: 			}
+001A55 803A              SJMP    ?C0164?KB_PROCESS
+001A57         ?C0201?KB_PROCESS:
+  683: 		#ifdef SYSTEM_CONTROL_ENABLE
+  684: 		      	else if (pEvt->ksPool[i] ==  HID_SYSTEM_KEY_POWER_DOWN)
+001A57 904E85            MOV     DPTR,#pEvt
+001A5A E0                MOVX    A,@DPTR
+001A5B FB                MOV     R3,A
+001A5C A3                INC     DPTR
+001A5D E0                MOVX    A,@DPTR
+001A5E FA                MOV     R2,A
+001A5F A3                INC     DPTR
+001A60 E0                MOVX    A,@DPTR
+001A61 2401              ADD     A,#01H
+001A63 F9                MOV     R1,A
+001A64 E4                CLR     A
+001A65 3A                ADDC    A,R2
+001A66 FA                MOV     R2,A
+001A67 A3                INC     DPTR
+001A68 E0                MOVX    A,@DPTR
+001A69 7E00              MOV     R6,#00H
+001A6B 29                ADD     A,R1
+001A6C F9                MOV     R1,A
+001A6D EE                MOV     A,R6
+001A6E 3A                ADDC    A,R2
+001A6F FA                MOV     R2,A
+001A70 1203B6            LCALL   ?C?CLDPTR
+001A73 FE                MOV     R6,A
+001A74 B4DD06            CJNE    A,#0DDH,?C0203?KB_PROCESS
+  685: 		      	{
+  686: 		        	kb_set_systemkey(0x01);
+001A77 7F01              MOV     R7,#01H
+001A79 51C5              ACALL   _kb_set_systemkey
+  687: 		      	}
+001A7B 8014              SJMP    ?C0164?KB_PROCESS
+001A7D         ?C0203?KB_PROCESS:
+  688: 		      	else if (pEvt->ksPool[i] ==  HID_SYSTEM_KEY_SLEEP)
+001A7D EE                MOV     A,R6
+001A7E B4DE06            CJNE    A,#0DEH,?C0205?KB_PROCESS
+  689: 		      	{
+  690: 		        	kb_set_systemkey(0x02);
+001A81 7F02              MOV     R7,#02H
+001A83 51C5              ACALL   _kb_set_systemkey
+  691: 		      	}
+001A85 800A              SJMP    ?C0164?KB_PROCESS
+001A87         ?C0205?KB_PROCESS:
+  692: 		      	else if (pEvt->ksPool[i] ==  HID_SYSTEM_KEY_WAKE_UP)
+001A87 1203B6            LCALL   ?C?CLDPTR
+001A8A B4DF04            CJNE    A,#0DFH,?C0164?KB_PROCESS
+  693: 		      	{
+  694: 		        	kb_set_systemkey(0x04);
+001A8D 7F04              MOV     R7,#04H
+001A8F 51C5              ACALL   _kb_set_systemkey
+  695: 		      	}
+001A91         ?C0164?KB_PROCESS:
+  696: 		#endif
+  697: 			
+  698: 			if(mult_key_status == KEY_WAIT_RELEASE)
+001A91 904DF7            MOV     DPTR,#mult_key_status
+001A94 E0                MOVX    A,@DPTR
+001A95 B40224            CJNE    A,#02H,?C0160?KB_PROCESS
+  699: 			{
+  700: 				mult_key_value = pEvt->ksPool[i];
+001A98 904E85            MOV     DPTR,#pEvt
+001A9B E0                MOVX    A,@DPTR
+001A9C FB                MOV     R3,A
+001A9D A3                INC     DPTR
+001A9E E0                MOVX    A,@DPTR
+001A9F FA                MOV     R2,A
+001AA0 A3                INC     DPTR
+001AA1 E0                MOVX    A,@DPTR
+001AA2 2401              ADD     A,#01H
+001AA4 F9                MOV     R1,A
+001AA5 E4                CLR     A
+001AA6 3A                ADDC    A,R2
+001AA7 FA                MOV     R2,A
+001AA8 A3                INC     DPTR
+001AA9 E0                MOVX    A,@DPTR
+001AAA 7E00              MOV     R6,#00H
+001AAC 29                ADD     A,R1
+001AAD F9                MOV     R1,A
+001AAE EE                MOV     A,R6
+001AAF 3A                ADDC    A,R2
+001AB0 FA                MOV     R2,A
+001AB1 1203B6            LCALL   ?C?CLDPTR
+001AB4 904DF6            MOV     DPTR,#mult_key_value
+001AB7 F0                MOVX    @DPTR,A
+  701: 				pEvt->ksPool[i] = 0;
+001AB8 E4                CLR     A
+001AB9 1203FC            LCALL   ?C?CSTPTR
+  702: 			}
+  703: 		}
+  704: 	}
+001ABC         ?C0160?KB_PROCESS:
+001ABC 904E88            MOV     DPTR,#i
+001ABF E0                MOVX    A,@DPTR
+001AC0 04                INC     A
+001AC1 F0                MOVX    @DPTR,A
+001AC2 0127              AJMP    ?C0158?KB_PROCESS
+  705: }
+001AC4         ?C0209?KB_PROCESS:
+001AC4 22                RET     
+----- FUNCTION _kb_multikey_setup (END) -------
+
+
+----- FUNCTION _kb_set_systemkey (BEGIN) -----
+ FILE: 'kb_process.c'
+  114: void kb_set_systemkey(byte systemkey_value)
+  115: {
+;---- Variable 'systemkey_value' assigned to Register 'R7' ----
+  116: 	if(mult_key_status != KEY_WAIT_RELEASE)
+  117: 	{
+001AC5 904DF7            MOV     DPTR,#mult_key_status
+001AC8 E0                MOVX    A,@DPTR
+001AC9 6402              XRL     A,#02H
+001ACB 6012              JZ      ?C0030?KB_PROCESS
+  118: 		mult_key_status = KEY_SYSTEM_PRESS;
+  119: 		system_key_press = 1;
+001ACD 7404              MOV     A,#04H
+001ACF F0                MOVX    @DPTR,A
+  120: 		multikey[0] = HID_REPORTID_SYSTEM_CTRL;
+001AD0 904DF2            MOV     DPTR,#system_key_press
+001AD3 7401              MOV     A,#01H
+001AD5 F0                MOVX    @DPTR,A
+  121: 		multikey[1] = systemkey_value;
+001AD6 904DF8            MOV     DPTR,#multikey
+001AD9 7403              MOV     A,#03H
+001ADB F0                MOVX    @DPTR,A
+  122: 	}
+001ADC A3                INC     DPTR
+001ADD EF                MOV     A,R7
+001ADE F0                MOVX    @DPTR,A
+  123: }
+  124: #endif
+001ADF         ?C0030?KB_PROCESS:
+001ADF 22                RET     
+----- FUNCTION _kb_set_systemkey (END) -------
+
+
+----- FUNCTION kb_24g_get_led_status (BEGIN) -----
+ FILE: 'kb_process.c'
+  152: void kb_24g_get_led_status()		//get RF Ack for get numlock/capslock status
+  153: {
+  154: 	if((m_24g_led_flag)&& (repeat_send_24g == 0))
+  155: 	{
+001AE0 904D47            MOV     DPTR,#m_24g_led_flag
+001AE3 E0                MOVX    A,@DPTR
+001AE4 6037              JZ      ?C0034?KB_PROCESS
+001AE6 904DE5            MOV     DPTR,#repeat_send_24g
+001AE9 E0                MOVX    A,@DPTR
+001AEA 7031              JNZ     ?C0034?KB_PROCESS
+  156: 		if (g_variable.g24_currentState == CHANGE_TO_24G_CONNECTED)
+  157: 		{
+001AEC 904CC5            MOV     DPTR,#g_variable+06H
+001AEF E0                MOVX    A,@DPTR
+001AF0 B4032A            CJNE    A,#03H,?C0034?KB_PROCESS
+  158: 			xmemclear(hidBuff,9);
+  159: 
+001AF3 7B01              MOV     R3,#01H
+001AF5 7A48              MOV     R2,#HIGH hidBuff
+001AF7 7900              MOV     R1,#LOW hidBuff
+001AF9 7D09              MOV     R5,#09H
+001AFB 7C00              MOV     R4,#00H
+001AFD 121656            LCALL   _xmemclear
+  160: 			mult_key_status = 0;
+001B00 E4                CLR     A
+001B01 904DF7            MOV     DPTR,#mult_key_status
+001B04 F0                MOVX    @DPTR,A
+  161: 			hidBuff[0] = HID_REPORTID_KEY_STANDARD;		// standard key send
+001B05 904800            MOV     DPTR,#hidBuff
+001B08 04                INC     A
+001B09 F0                MOVX    @DPTR,A
+  162: 			hidBuff[2] = m_24g_led_flag;
+001B0A 904D47            MOV     DPTR,#m_24g_led_flag
+001B0D E0                MOVX    A,@DPTR
+001B0E 904802            MOV     DPTR,#hidBuff+02H
+001B11 F0                MOVX    @DPTR,A
+  163: 			IPC_TxHidData(hidBuff, 9);
+001B12 7B01              MOV     R3,#01H
+001B14 7A48              MOV     R2,#HIGH hidBuff
+001B16 7900              MOV     R1,#LOW hidBuff
+001B18 7D09              MOV     R5,#09H
+001B1A 1215A2            LCALL   _IPC_TxHidData
+  164: 		}	
+  165: 	}
+  166: 
+  167: }
+001B1D         ?C0034?KB_PROCESS:
+001B1D 22                RET     
+----- FUNCTION kb_24g_get_led_status (END) -------
+
+
+----- FUNCTION kb_motion (BEGIN) -----
+ FILE: 'kb_process.c'
+  171: static void kb_motion()
+  172: {
+  173: 	tKSEVENT *pEvt = NULL;
+  174: 	
+001B1E 904E91            MOV     DPTR,#pEvt
+001B21 E4                CLR     A
+001B22 F0                MOVX    @DPTR,A
+001B23 A3                INC     DPTR
+001B24 F0                MOVX    @DPTR,A
+001B25 A3                INC     DPTR
+001B26 F0                MOVX    @DPTR,A
+  175: 	if (!IPC_IsTxBuffEmpty())
+001B27 B1AB              ACALL   IPC_IsTxBuffEmpty
+001B29 5025              JNC     ?C0036?KB_PROCESS
+001B2B         ?C0035?KB_PROCESS:
+  176: 		return;
+  177: 	pEvt = KS_GetCurrentEvt();
+001B2B 7151              ACALL   KS_GetCurrentEvt
+001B2D 904E91            MOV     DPTR,#pEvt
+001B30 EB                MOV     A,R3
+001B31 F0                MOVX    @DPTR,A
+001B32 A3                INC     DPTR
+001B33 EA                MOV     A,R2
+001B34 F0                MOVX    @DPTR,A
+001B35 A3                INC     DPTR
+001B36 E9                MOV     A,R1
+001B37 F0                MOVX    @DPTR,A
+  178: 
+  179: 	if (pEvt == NULL)
+001B38 4A                ORL     A,R2
+001B39 7007              JNZ     ?C0037?KB_PROCESS
+  180: 	{
+  181: 		m_power_on_flag = 1;
+001B3B 904CB6            MOV     DPTR,#m_power_on_flag
+001B3E 04                INC     A
+001B3F F0                MOVX    @DPTR,A
+  182: 		kb_24g_get_led_status();
+001B40 809E              SJMP    kb_24g_get_led_status
+  183: 		return;
+  184: 	}
+001B42         ?C0037?KB_PROCESS:
+  185: 	kb_motion_keyscan(pEvt);
+001B42 904E91            MOV     DPTR,#pEvt
+001B45 E0                MOVX    A,@DPTR
+001B46 FB                MOV     R3,A
+001B47 A3                INC     DPTR
+001B48 E0                MOVX    A,@DPTR
+001B49 FA                MOV     R2,A
+001B4A A3                INC     DPTR
+001B4B E0                MOVX    A,@DPTR
+001B4C F9                MOV     R1,A
+001B4D 121293            LCALL   _kb_motion_keyscan
+  186: }
+001B50         ?C0036?KB_PROCESS:
+001B50 22                RET     
+----- FUNCTION kb_motion (END) -------
+
+
+----- FUNCTION KS_GetCurrentEvt (BEGIN) -----
+ FILE: 'keyscan.c'
+  239: tKSEVENT *KS_GetCurrentEvt()
+  240: {
+  241: 	//
+  242: 	byte i = 0;
+001B51 E4                CLR     A
+001B52 904E34            MOV     DPTR,#i
+001B55 F0                MOVX    @DPTR,A
+  243: 	byte j = 0;
+001B56 A3                INC     DPTR
+001B57 F0                MOVX    @DPTR,A
+  244: 	byte k = 0;
+001B58 A3                INC     DPTR
+001B59 F0                MOVX    @DPTR,A
+  245: 	byte temp = 0;
+001B5A A3                INC     DPTR
+001B5B F0                MOVX    @DPTR,A
+  246: 	byte flag = 0;
+001B5C A3                INC     DPTR
+001B5D F0                MOVX    @DPTR,A
+  247: 	byte offset = 0;
+001B5E A3                INC     DPTR
+001B5F F0                MOVX    @DPTR,A
+  248: 	byte state = 0;
+001B60 A3                INC     DPTR
+001B61 F0                MOVX    @DPTR,A
+  249: 	byte keyCounttemp = 0;
+001B62 A3                INC     DPTR
+001B63 F0                MOVX    @DPTR,A
+  250: 	byte key_value_temp = 0;
+001B64 A3                INC     DPTR
+001B65 F0                MOVX    @DPTR,A
+  251: 	byte ghost = 0;
+001B66 A3                INC     DPTR
+001B67 F0                MOVX    @DPTR,A
+  252: 	byte rawCount = 0;
+001B68 A3                INC     DPTR
+001B69 F0                MOVX    @DPTR,A
+  253: 	
+  254: 	KS_ScanMatrix();
+001B6A 12250C            LCALL   KS_ScanMatrix
+  255: 
+  256: 	if (compare_str(ksSelMapCurr,ksSelMapCheck,KB_KSCAN_COL_NUM) 
+001B6D 7A4D              MOV     R2,#HIGH ksSelMapCheck
+001B6F 79A8              MOV     R1,#LOW ksSelMapCheck
+001B71 904E5A            MOV     DPTR,#?_compare_str?BYTE+03H
+001B74 7401              MOV     A,#01H
+001B76 F0                MOVX    @DPTR,A
+001B77 A3                INC     DPTR
+001B78 744D              MOV     A,#HIGH ksSelMapCheck
+001B7A F0                MOVX    @DPTR,A
+001B7B A3                INC     DPTR
+001B7C 74A8              MOV     A,#LOW ksSelMapCheck
+001B7E F0                MOVX    @DPTR,A
+001B7F A3                INC     DPTR
+001B80 7414              MOV     A,#014H
+001B82 F0                MOVX    @DPTR,A
+001B83 7B01              MOV     R3,#01H
+001B85 7A4D              MOV     R2,#HIGH ksSelMapCurr
+001B87 79BC              MOV     R1,#LOW ksSelMapCurr
+001B89 B1F3              ACALL   _compare_str
+001B8B EF                MOV     A,R7
+001B8C 6016              JZ      ?C0066?KEYSCAN
+001B8E 7B01              MOV     R3,#01H
+001B90 7A4D              MOV     R2,#HIGH ksSelMapCurr
+001B92 79BC              MOV     R1,#LOW ksSelMapCurr
+001B94 7D14              MOV     R5,#014H
+001B96 B1C3              ACALL   _array_is_empty
+001B98 EF                MOV     A,R7
+001B99 7009              JNZ     ?C0066?KEYSCAN
+  257: 		&& !array_is_empty(ksSelMapCurr,KB_KSCAN_COL_NUM))
+  258: 	{
+  259: 		g_variable.button_flag |= 0x02;
+001B9B 904CCE            MOV     DPTR,#g_variable+0FH
+001B9E E0                MOVX    A,@DPTR
+001B9F 4402              ORL     A,#02H
+001BA1 F0                MOVX    @DPTR,A
+  260: 	}
+001BA2 800C              SJMP    ?C0067?KEYSCAN
+001BA4         ?C0066?KEYSCAN:
+  261: 	else
+  262: 	{	
+  263: 		g_variable.button_flag &= 0xFD;
+001BA4 904CCE            MOV     DPTR,#g_variable+0FH
+001BA7 E0                MOVX    A,@DPTR
+001BA8 54FD              ANL     A,#0FDH
+001BAA F0                MOVX    @DPTR,A
+  264: 		g_variable.button_timer[1] = 0;
+001BAB E4                CLR     A
+001BAC 904CD0            MOV     DPTR,#g_variable+011H
+001BAF F0                MOVX    @DPTR,A
+  265: 	}
+001BB0         ?C0067?KEYSCAN:
+  266: 
+  267: 	for (i=0; col[i]!=0; i++) 
+001BB0 E4                CLR     A
+001BB1 904E34            MOV     DPTR,#i
+001BB4 F0                MOVX    @DPTR,A
+001BB5         ?C0068?KEYSCAN:
+001BB5 904E34            MOV     DPTR,#i
+001BB8 E0                MOVX    A,@DPTR
+001BB9 FF                MOV     R7,A
+001BBA 900687            MOV     DPTR,#col
+001BBD 93                MOVC    A,@A+DPTR
+001BBE 7002              JNZ     $ + 4H
+001BC0 8182              AJMP    ?C0069?KEYSCAN
+  268: 	{
+  269: 		temp = ksSelMapCurr[i];
+001BC2 74BC              MOV     A,#LOW ksSelMapCurr
+001BC4 2F                ADD     A,R7
+001BC5 F582              MOV     DPL,A
+001BC7 E4                CLR     A
+001BC8 344D              ADDC    A,#HIGH ksSelMapCurr
+001BCA F583              MOV     DPH,A
+001BCC E0                MOVX    A,@DPTR
+001BCD 904E37            MOV     DPTR,#temp
+001BD0 F0                MOVX    @DPTR,A
+  270: 		rawCount = bit_count(temp);
+001BD1 E0                MOVX    A,@DPTR
+001BD2 FF                MOV     R7,A
+001BD3 B19D              ACALL   _bit_count
+001BD5 904E3E            MOV     DPTR,#rawCount
+001BD8 EF                MOV     A,R7
+001BD9 F0                MOVX    @DPTR,A
+  271: 		if(rawCount >= 2)		// col[i] has more than two key press
+001BDA C3                CLR     C
+001BDB 9402              SUBB    A,#02H
+001BDD 5002              JNC     $ + 4H
+001BDF 816B              AJMP    ?C0071?KEYSCAN
+  272: 		{
+  273: 			for(j=0 ; j<8 ;j++)
+001BE1 E4                CLR     A
+001BE2 904E35            MOV     DPTR,#j
+001BE5 F0                MOVX    @DPTR,A
+001BE6         ?C0072?KEYSCAN:
+001BE6 904E35            MOV     DPTR,#j
+001BE9 E0                MOVX    A,@DPTR
+001BEA FF                MOV     R7,A
+001BEB C3                CLR     C
+001BEC 9408              SUBB    A,#08H
+001BEE 507B              JNC     ?C0071?KEYSCAN
+  274: 			{
+  275: 				if(temp & (1<<j))	// Ci_Rj press
+001BF0 7401              MOV     A,#01H
+001BF2 7E00              MOV     R6,#00H
+001BF4 A807              MOV     R0,AR7
+001BF6 08                INC     R0
+001BF7 8005              SJMP    ?C0114?KEYSCAN
+001BF9         ?C0113?KEYSCAN:
+001BF9 C3                CLR     C
+001BFA 33                RLC     A
+001BFB CE                XCH     A,R6
+001BFC 33                RLC     A
+001BFD CE                XCH     A,R6
+001BFE         ?C0114?KEYSCAN:
+001BFE D8F9              DJNZ    R0,?C0113?KEYSCAN
+001C00 FF                MOV     R7,A
+001C01 904E37            MOV     DPTR,#temp
+001C04 E0                MOVX    A,@DPTR
+001C05 FD                MOV     R5,A
+001C06 E4                CLR     A
+001C07 EF                MOV     A,R7
+001C08 5D                ANL     A,R5
+001C09 6058              JZ      ?C0074?KEYSCAN
+  276: 				{
+  277: 					for(k=0 ; col[k]!=0; k++)
+001C0B E4                CLR     A
+001C0C 904E36            MOV     DPTR,#k
+001C0F F0                MOVX    @DPTR,A
+001C10         ?C0076?KEYSCAN:
+001C10 904E36            MOV     DPTR,#k
+001C13 E0                MOVX    A,@DPTR
+001C14 FF                MOV     R7,A
+001C15 900687            MOV     DPTR,#col
+001C18 93                MOVC    A,@A+DPTR
+001C19 6048              JZ      ?C0074?KEYSCAN
+  278: 					{
+  279: 						if(k!= i)
+001C1B 904E34            MOV     DPTR,#i
+001C1E E0                MOVX    A,@DPTR
+001C1F FE                MOV     R6,A
+001C20 EF                MOV     A,R7
+001C21 6E                XRL     A,R6
+001C22 6037              JZ      ?C0078?KEYSCAN
+  280: 						{
+  281: 							if(ksSelMapCurr[k] & (1<<j))	// R line has another key press
+001C24 904E36            MOV     DPTR,#k
+001C27 E0                MOVX    A,@DPTR
+001C28 24BC              ADD     A,#LOW ksSelMapCurr
+001C2A F582              MOV     DPL,A
+001C2C E4                CLR     A
+001C2D 344D              ADDC    A,#HIGH ksSelMapCurr
+001C2F F583              MOV     DPH,A
+001C31 E0                MOVX    A,@DPTR
+001C32 FD                MOV     R5,A
+001C33 7C00              MOV     R4,#00H
+001C35 904E35            MOV     DPTR,#j
+001C38 E0                MOVX    A,@DPTR
+001C39 FF                MOV     R7,A
+001C3A 7401              MOV     A,#01H
+001C3C 7E00              MOV     R6,#00H
+001C3E A807              MOV     R0,AR7
+001C40 08                INC     R0
+001C41 8005              SJMP    ?C0116?KEYSCAN
+001C43         ?C0115?KEYSCAN:
+001C43 C3                CLR     C
+001C44 33                RLC     A
+001C45 CE                XCH     A,R6
+001C46 33                RLC     A
+001C47 CE                XCH     A,R6
+001C48         ?C0116?KEYSCAN:
+001C48 D8F9              DJNZ    R0,?C0115?KEYSCAN
+001C4A FF                MOV     R7,A
+001C4B EE                MOV     A,R6
+001C4C 5C                ANL     A,R4
+001C4D FE                MOV     R6,A
+001C4E EF                MOV     A,R7
+001C4F 5D                ANL     A,R5
+001C50 4E                ORL     A,R6
+001C51 6008              JZ      ?C0078?KEYSCAN
+  282: 							{
+  283: 								ghost = 1;
+001C53 904E3D            MOV     DPTR,#ghost
+001C56 7401              MOV     A,#01H
+001C58 F0                MOVX    @DPTR,A
+  284: 								break;
+001C59 8008              SJMP    ?C0074?KEYSCAN
+  285: 							}	
+  286: 						}
+  287: 					}
+001C5B         ?C0078?KEYSCAN:
+001C5B 904E36            MOV     DPTR,#k
+001C5E E0                MOVX    A,@DPTR
+001C5F 04                INC     A
+001C60 F0                MOVX    @DPTR,A
+001C61 80AD              SJMP    ?C0076?KEYSCAN
+  288: 				}
+  289: 			}
+001C63         ?C0074?KEYSCAN:
+001C63 904E35            MOV     DPTR,#j
+001C66 E0                MOVX    A,@DPTR
+001C67 04                INC     A
+001C68 F0                MOVX    @DPTR,A
+001C69 61E6              AJMP    ?C0072?KEYSCAN
+  290: 		}
+001C6B         ?C0071?KEYSCAN:
+  291: 		
+  292: 		if (temp!=0)
+001C6B 904E37            MOV     DPTR,#temp
+001C6E E0                MOVX    A,@DPTR
+001C6F FF                MOV     R7,A
+001C70 6008              JZ      ?C0070?KEYSCAN
+  293: 		{
+  294: 			keyCounttemp += bit_count(temp);
+001C72 B19D              ACALL   _bit_count
+001C74 904E3B            MOV     DPTR,#keyCounttemp
+001C77 E0                MOVX    A,@DPTR
+001C78 2F                ADD     A,R7
+001C79 F0                MOVX    @DPTR,A
+  295: 		}
+  296: 	}
+001C7A         ?C0070?KEYSCAN:
+001C7A 904E34            MOV     DPTR,#i
+001C7D E0                MOVX    A,@DPTR
+001C7E 04                INC     A
+001C7F F0                MOVX    @DPTR,A
+001C80 61B5              AJMP    ?C0068?KEYSCAN
+001C82         ?C0069?KEYSCAN:
+  297: 	keyCount = keyCounttemp;
+001C82 904E3B            MOV     DPTR,#keyCounttemp
+001C85 E0                MOVX    A,@DPTR
+001C86 904DED            MOV     DPTR,#keyCount
+001C89 F0                MOVX    @DPTR,A
+  298: 	
+  299: 	for (i=0; col[i]!=0; i++)
+001C8A E4                CLR     A
+001C8B 904E34            MOV     DPTR,#i
+001C8E F0                MOVX    @DPTR,A
+001C8F         ?C0082?KEYSCAN:
+001C8F 904E34            MOV     DPTR,#i
+001C92 E0                MOVX    A,@DPTR
+001C93 FF                MOV     R7,A
+001C94 900687            MOV     DPTR,#col
+001C97 93                MOVC    A,@A+DPTR
+001C98 7002              JNZ     $ + 4H
+001C9A A171              AJMP    ?C0083?KEYSCAN
+  300: 	{
+  301: 		temp = ksSelMapCurr[i] ^ ksSelMapOld[i];
+001C9C 7493              MOV     A,#LOW ksSelMapOld
+001C9E 2F                ADD     A,R7
+001C9F F582              MOV     DPL,A
+001CA1 E4                CLR     A
+001CA2 344D              ADDC    A,#HIGH ksSelMapOld
+001CA4 F583              MOV     DPH,A
+001CA6 E0                MOVX    A,@DPTR
+001CA7 FE                MOV     R6,A
+001CA8 74BC              MOV     A,#LOW ksSelMapCurr
+001CAA 2F                ADD     A,R7
+001CAB F582              MOV     DPL,A
+001CAD E4                CLR     A
+001CAE 344D              ADDC    A,#HIGH ksSelMapCurr
+001CB0 F583              MOV     DPH,A
+001CB2 E0                MOVX    A,@DPTR
+001CB3 6E                XRL     A,R6
+001CB4 904E37            MOV     DPTR,#temp
+001CB7 F0                MOVX    @DPTR,A
+  302: 		state = ksSelMapCurr[i];
+001CB8 904E34            MOV     DPTR,#i
+001CBB E0                MOVX    A,@DPTR
+001CBC FF                MOV     R7,A
+001CBD 24BC              ADD     A,#LOW ksSelMapCurr
+001CBF F582              MOV     DPL,A
+001CC1 E4                CLR     A
+001CC2 344D              ADDC    A,#HIGH ksSelMapCurr
+001CC4 F583              MOV     DPH,A
+001CC6 E0                MOVX    A,@DPTR
+001CC7 904E3A            MOV     DPTR,#state
+001CCA F0                MOVX    @DPTR,A
+  303: 		if (temp == 0) 
+001CCB 904E37            MOV     DPTR,#temp
+001CCE E0                MOVX    A,@DPTR
+001CCF 7004              JNZ     ?C0085?KEYSCAN
+  304: 		{
+  305: 			continue;
+001CD1 A169              AJMP    ?C0084?KEYSCAN
+  306: 		}
+001CD3 A169              AJMP    ?C0084?KEYSCAN
+001CD5         ?C0085?KEYSCAN:
+  307: 		else 
+  308: 		{
+  309: 
+  310: 			if (ghost) 
+001CD5 904E3D            MOV     DPTR,#ghost
+001CD8 E0                MOVX    A,@DPTR
+001CD9 6007              JZ      ?C0087?KEYSCAN
+  311: 				return NULL;
+001CDB 7B00              MOV     R3,#00H
+001CDD 7A00              MOV     R2,#00H
+001CDF 7900              MOV     R1,#00H
+001CE1 22                RET     
+001CE2         ?C0087?KEYSCAN:
+  312: 			ksSelMapOld[i] = ksSelMapCurr[i];
+001CE2 74BC              MOV     A,#LOW ksSelMapCurr
+001CE4 2F                ADD     A,R7
+001CE5 F582              MOV     DPL,A
+001CE7 E4                CLR     A
+001CE8 344D              ADDC    A,#HIGH ksSelMapCurr
+001CEA F583              MOV     DPH,A
+001CEC E0                MOVX    A,@DPTR
+001CED FE                MOV     R6,A
+001CEE 7493              MOV     A,#LOW ksSelMapOld
+001CF0 2F                ADD     A,R7
+001CF1 F582              MOV     DPL,A
+001CF3 E4                CLR     A
+001CF4 344D              ADDC    A,#HIGH ksSelMapOld
+001CF6 F583              MOV     DPH,A
+001CF8 EE                MOV     A,R6
+001CF9 F0                MOVX    @DPTR,A
+  313: 			for (j = 0 ; j<8 ; j++) 
+001CFA E4                CLR     A
+001CFB 904E35            MOV     DPTR,#j
+001CFE F0                MOVX    @DPTR,A
+001CFF         ?C0089?KEYSCAN:
+001CFF 904E35            MOV     DPTR,#j
+001D02 E0                MOVX    A,@DPTR
+001D03 FF                MOV     R7,A
+001D04 C3                CLR     C
+001D05 9408              SUBB    A,#08H
+001D07 505A              JNC     ?C0090?KEYSCAN
+  314: 			{
+  315: 				if (temp&1)
+001D09 904E37            MOV     DPTR,#temp
+001D0C E0                MOVX    A,@DPTR
+001D0D 30E03B            JNB     ACC.0,?C0092?KEYSCAN
+  316: 				{
+  317: 					offset = i<<3 |j;
+001D10 904E34            MOV     DPTR,#i
+001D13 E0                MOVX    A,@DPTR
+001D14 FE                MOV     R6,A
+001D15 33                RLC     A
+001D16 33                RLC     A
+001D17 33                RLC     A
+001D18 54F8              ANL     A,#0F8H
+001D1A FE                MOV     R6,A
+001D1B EF                MOV     A,R7
+001D1C 4E                ORL     A,R6
+001D1D 904E39            MOV     DPTR,#offset
+001D20 F0                MOVX    @DPTR,A
+  318: 					key_value_temp = key_fn_function(state,ksMap[offset]);
+001D21 A3                INC     DPTR
+001D22 E0                MOVX    A,@DPTR
+001D23 FF                MOV     R7,A
+001D24 904E39            MOV     DPTR,#offset
+001D27 E0                MOVX    A,@DPTR
+001D28 90069C            MOV     DPTR,#ksMap
+001D2B 93                MOVC    A,@A+DPTR
+001D2C FD                MOV     R5,A
+001D2D F1FC              ACALL   _key_fn_function
+001D2F 904E3C            MOV     DPTR,#key_value_temp
+001D32 EF                MOV     A,R7
+001D33 F0                MOVX    @DPTR,A
+  319: 					if (state & 1)
+001D34 904E3A            MOV     DPTR,#state
+001D37 E0                MOVX    A,@DPTR
+001D38 30E009            JNB     ACC.0,?C0093?KEYSCAN
+  320: 					{
+  321: 						keyIn(key_value_temp);
+001D3B 904E3C            MOV     DPTR,#key_value_temp
+001D3E E0                MOVX    A,@DPTR
+001D3F FF                MOV     R7,A
+001D40 D13D              ACALL   _keyIn
+  322: 					}
+001D42 8007              SJMP    ?C0092?KEYSCAN
+001D44         ?C0093?KEYSCAN:
+  323: 					else
+  324: 					{
+  325: 						keyOut(key_value_temp);
+001D44 904E3C            MOV     DPTR,#key_value_temp
+001D47 E0                MOVX    A,@DPTR
+001D48 FF                MOV     R7,A
+001D49 D1F6              ACALL   _keyOut
+  326: 					}
+  327: 				}
+001D4B         ?C0092?KEYSCAN:
+  328: 				temp = temp >>1;
+001D4B 904E37            MOV     DPTR,#temp
+001D4E E0                MOVX    A,@DPTR
+001D4F FF                MOV     R7,A
+001D50 C3                CLR     C
+001D51 13                RRC     A
+001D52 F0                MOVX    @DPTR,A
+  329: 				state = state>>1;
+001D53 904E3A            MOV     DPTR,#state
+001D56 E0                MOVX    A,@DPTR
+001D57 FF                MOV     R7,A
+001D58 C3                CLR     C
+001D59 13                RRC     A
+001D5A F0                MOVX    @DPTR,A
+  330: 			}
+001D5B 904E35            MOV     DPTR,#j
+001D5E E0                MOVX    A,@DPTR
+001D5F 04                INC     A
+001D60 F0                MOVX    @DPTR,A
+001D61 809C              SJMP    ?C0089?KEYSCAN
+001D63         ?C0090?KEYSCAN:
+  331: 			flag = 1;
+001D63 904E38            MOV     DPTR,#flag
+001D66 7401              MOV     A,#01H
+001D68 F0                MOVX    @DPTR,A
+  332: 		}
+  333: 	}
+001D69         ?C0084?KEYSCAN:
+001D69 904E34            MOV     DPTR,#i
+001D6C E0                MOVX    A,@DPTR
+001D6D 04                INC     A
+001D6E F0                MOVX    @DPTR,A
+001D6F 818F              AJMP    ?C0082?KEYSCAN
+001D71         ?C0083?KEYSCAN:
+  334: 	
+  335: 	if((mult_key_status == KEY_RELEASE) && (standard_key_release_flag == 1))
+001D71 904DF7            MOV     DPTR,#mult_key_status
+001D74 E0                MOVX    A,@DPTR
+001D75 B4030A            CJNE    A,#03H,?C0095?KEYSCAN
+001D78 904DE7            MOV     DPTR,#standard_key_release_flag
+001D7B E0                MOVX    A,@DPTR
+001D7C B40103            CJNE    A,#01H,?C0095?KEYSCAN
+  336: 	{
+  337: 		standard_key_release_flag = 2;		//media key and standard key  release the same time
+001D7F 7402              MOV     A,#02H
+001D81 F0                MOVX    @DPTR,A
+  338: 	}
+001D82         ?C0095?KEYSCAN:
+  339: 
+  340: 	
+  341: 	if (flag || standard_key_release_flag == 2) 
+001D82 904E38            MOV     DPTR,#flag
+001D85 E0                MOVX    A,@DPTR
+001D86 7007              JNZ     ?C0097?KEYSCAN
+001D88 904DE7            MOV     DPTR,#standard_key_release_flag
+001D8B E0                MOVX    A,@DPTR
+001D8C B40207            CJNE    A,#02H,?C0096?KEYSCAN
+001D8F         ?C0097?KEYSCAN:
+  342: 	{
+  343: 		return &ksEvtPool;
+001D8F 7B01              MOV     R3,#01H
+001D91 7A4E              MOV     R2,#HIGH ksEvtPool
+001D93 7950              MOV     R1,#LOW ksEvtPool
+001D95 22                RET     
+  344: 	}
+001D96         ?C0096?KEYSCAN:
+  345: 	else
+  346: 	{
+  347: 		return NULL;
+001D96 7B00              MOV     R3,#00H
+001D98 7A00              MOV     R2,#00H
+001D9A 7900              MOV     R1,#00H
+  348: 	}
+  349: 	
+  350: 
+  351: }
+001D9C 22                RET     
+----- FUNCTION KS_GetCurrentEvt (END) -------
+
+
+----- FUNCTION _bit_count (BEGIN) -----
+ FILE: 'keyscan.c'
+   24: static byte bit_count(byte v)
+   25: {
+;---- Variable 'v' assigned to Register 'R7' ----
+   26: 	unsigned char c;
+   27: 	for (c = 0; v; c++) {
+;---- Variable 'c' assigned to Register 'R6' ----
+001D9D E4                CLR     A
+001D9E FE                MOV     R6,A
+001D9F         ?C0001?KEYSCAN:
+001D9F EF                MOV     A,R7
+001DA0 6006              JZ      ?C0002?KEYSCAN
+   28:     	v &= v - 1;
+001DA2 14                DEC     A
+001DA3 5F                ANL     A,R7
+001DA4 FF                MOV     R7,A
+   29:     }
+001DA5 0E                INC     R6
+001DA6 80F7              SJMP    ?C0001?KEYSCAN
+001DA8         ?C0002?KEYSCAN:
+   30:     return c;
+001DA8 AF06              MOV     R7,AR6
+   31: }
+001DAA 22                RET     
+----- FUNCTION _bit_count (END) -------
+
+
+----- FUNCTION IPC_IsTxBuffEmpty (BEGIN) -----
+001DAB 904B9C            MOV     DPTR,#ipcTxWritePtr
+001DAE E0                MOVX    A,@DPTR
+001DAF FE                MOV     R6,A
+001DB0 A3                INC     DPTR
+001DB1 E0                MOVX    A,@DPTR
+001DB2 FF                MOV     R7,A
+001DB3 904B9A            MOV     DPTR,#ipcTxReadPtr
+001DB6 E0                MOVX    A,@DPTR
+001DB7 B50607            CJNE    A,AR6,?C0021?IPC
+001DBA A3                INC     DPTR
+001DBB E0                MOVX    A,@DPTR
+001DBC B50702            CJNE    A,AR7,?C0021?IPC
+001DBF D3                SETB    C
+001DC0 22                RET     
+001DC1         ?C0021?IPC:
+001DC1 C3                CLR     C
+001DC2 22                RET     
+----- FUNCTION IPC_IsTxBuffEmpty (END) -------
+
+
+----- FUNCTION _array_is_empty (BEGIN) -----
+ FILE: 'keyscan.c'
+  227: byte array_is_empty(byte * str1,byte len)
+  228: {
+001DC3 904E97            MOV     DPTR,#str1
+001DC6 EB                MOV     A,R3
+001DC7 F0                MOVX    @DPTR,A
+001DC8 A3                INC     DPTR
+001DC9 EA                MOV     A,R2
+001DCA F0                MOVX    @DPTR,A
+001DCB A3                INC     DPTR
+001DCC E9                MOV     A,R1
+001DCD F0                MOVX    @DPTR,A
+;---- Variable 'len' assigned to Register 'R5' ----
+  229: 	byte i;
+  230: 	for (i=0;i < len;i++)
+;---- Variable 'i' assigned to Register 'R7' ----
+001DCE E4                CLR     A
+001DCF FF                MOV     R7,A
+001DD0         ?C0061?KEYSCAN:
+001DD0 EF                MOV     A,R7
+001DD1 C3                CLR     C
+001DD2 9D                SUBB    A,R5
+001DD3 501B              JNC     ?C0062?KEYSCAN
+  231: 	{
+  232: 		if (str1[i] != 0)
+001DD5 904E97            MOV     DPTR,#str1
+001DD8 E0                MOVX    A,@DPTR
+001DD9 FB                MOV     R3,A
+001DDA A3                INC     DPTR
+001DDB E0                MOVX    A,@DPTR
+001DDC FA                MOV     R2,A
+001DDD A3                INC     DPTR
+001DDE E0                MOVX    A,@DPTR
+001DDF F9                MOV     R1,A
+001DE0 8F82              MOV     DPL,R7
+001DE2 758300            MOV     DPH,#00H
+001DE5 1203CF            LCALL   ?C?CLDOPTR
+001DE8 6003              JZ      ?C0063?KEYSCAN
+  233: 			return 0x00;
+001DEA 7F00              MOV     R7,#00H
+001DEC 22                RET     
+  234: 	}
+001DED         ?C0063?KEYSCAN:
+001DED 0F                INC     R7
+001DEE 80E0              SJMP    ?C0061?KEYSCAN
+001DF0         ?C0062?KEYSCAN:
+  235: 	return 0x01;
+001DF0 7F01              MOV     R7,#01H
+  236: }
+001DF2 22                RET     
+----- FUNCTION _array_is_empty (END) -------
+
+
+----- FUNCTION _compare_str (BEGIN) -----
+001DF3 904E57            MOV     DPTR,#str1
+001DF6 EB                MOV     A,R3
+001DF7 F0                MOVX    @DPTR,A
+001DF8 A3                INC     DPTR
+001DF9 EA                MOV     A,R2
+001DFA F0                MOVX    @DPTR,A
+001DFB A3                INC     DPTR
+001DFC E9                MOV     A,R1
+001DFD F0                MOVX    @DPTR,A
+;---- Variable 'i' assigned to Register 'R7' ----
+001DFE E4                CLR     A
+001DFF FF                MOV     R7,A
+001E00         ?C0021?UTILITIES:
+001E00 904E5D            MOV     DPTR,#len
+001E03 E0                MOVX    A,@DPTR
+001E04 FE                MOV     R6,A
+001E05 EF                MOV     A,R7
+001E06 C3                CLR     C
+001E07 9E                SUBB    A,R6
+001E08 5030              JNC     ?C0022?UTILITIES
+001E0A 904E5A            MOV     DPTR,#str2
+001E0D E0                MOVX    A,@DPTR
+001E0E FB                MOV     R3,A
+001E0F A3                INC     DPTR
+001E10 E0                MOVX    A,@DPTR
+001E11 FA                MOV     R2,A
+001E12 A3                INC     DPTR
+001E13 E0                MOVX    A,@DPTR
+001E14 F9                MOV     R1,A
+001E15 8F82              MOV     DPL,R7
+001E17 758300            MOV     DPH,#00H
+001E1A 1203CF            LCALL   ?C?CLDOPTR
+001E1D FE                MOV     R6,A
+001E1E 904E57            MOV     DPTR,#str1
+001E21 E0                MOVX    A,@DPTR
+001E22 FB                MOV     R3,A
+001E23 A3                INC     DPTR
+001E24 E0                MOVX    A,@DPTR
+001E25 FA                MOV     R2,A
+001E26 A3                INC     DPTR
+001E27 E0                MOVX    A,@DPTR
+001E28 F9                MOV     R1,A
+001E29 8F82              MOV     DPL,R7
+001E2B 758300            MOV     DPH,#00H
+001E2E 1203CF            LCALL   ?C?CLDOPTR
+001E31 6E                XRL     A,R6
+001E32 6003              JZ      ?C0023?UTILITIES
+001E34 7F00              MOV     R7,#00H
+001E36 22                RET     
+001E37         ?C0023?UTILITIES:
+001E37 0F                INC     R7
+001E38 80C6              SJMP    ?C0021?UTILITIES
+001E3A         ?C0022?UTILITIES:
+001E3A 7F01              MOV     R7,#01H
+001E3C 22                RET     
+----- FUNCTION _compare_str (END) -------
+
+
+----- FUNCTION _keyIn (BEGIN) -----
+ FILE: 'keyscan.c'
+   35: static void keyIn(byte key)
+   36: {
+;---- Variable 'key' assigned to Register 'R7' ----
+   37: 	byte i = 0,full_flag = 0,full=0,temp_chu=0;
+   38: 
+;---- Variable 'i' assigned to Register 'R6' ----
+001E3D E4                CLR     A
+001E3E FE                MOV     R6,A
+;---- Variable 'full_flag' assigned to Register 'R5' ----
+001E3F FD                MOV     R5,A
+;---- Variable 'full' assigned to Register 'R1' ----
+001E40 F9                MOV     R1,A
+;---- Variable 'temp_chu' assigned to Register 'R4' ----
+001E41 FC                MOV     R4,A
+   39: 	if(key >= HID_KEY_LEFT_CTL && key <= HID_KEY_RIGHT_GUI)
+001E42 EF                MOV     A,R7
+001E43 C3                CLR     C
+001E44 94E0              SUBB    A,#0E0H
+001E46 4020              JC      ?C0005?KEYSCAN
+001E48 EF                MOV     A,R7
+001E49 D3                SETB    C
+001E4A 94E7              SUBB    A,#0E7H
+001E4C 501A              JNC     ?C0005?KEYSCAN
+   40: 	{
+   41: 		ksEvtPool.standardSel  |=  0x01 << (key & 0x07);
+001E4E 904E50            MOV     DPTR,#ksEvtPool
+001E51 E0                MOVX    A,@DPTR
+001E52 FE                MOV     R6,A
+001E53 EF                MOV     A,R7
+001E54 5407              ANL     A,#07H
+001E56 FF                MOV     R7,A
+001E57 7401              MOV     A,#01H
+001E59 A807              MOV     R0,AR7
+001E5B 08                INC     R0
+001E5C 8002              SJMP    ?C0100?KEYSCAN
+001E5E         ?C0099?KEYSCAN:
+001E5E C3                CLR     C
+001E5F 33                RLC     A
+001E60         ?C0100?KEYSCAN:
+001E60 D8FC              DJNZ    R0,?C0099?KEYSCAN
+001E62 4E                ORL     A,R6
+001E63 904E50            MOV     DPTR,#ksEvtPool
+001E66 F0                MOVX    @DPTR,A
+001E67 22                RET     
+   42: 		return;
+   43: 	}
+001E68         ?C0005?KEYSCAN:
+   44: 
+   45: 	for(i=0;i<6;i++)
+001E68 E4                CLR     A
+001E69 FE                MOV     R6,A
+001E6A         ?C0007?KEYSCAN:
+   46: 	{
+   47: 		if(ksEvtPool.ksPool[i] != 0)
+001E6A 7451              MOV     A,#LOW ksEvtPool+01H
+001E6C 2E                ADD     A,R6
+001E6D F582              MOV     DPL,A
+001E6F E4                CLR     A
+001E70 344E              ADDC    A,#HIGH ksEvtPool+01H
+001E72 F583              MOV     DPH,A
+001E74 E0                MOVX    A,@DPTR
+001E75 6001              JZ      ?C0009?KEYSCAN
+   48: 		{
+   49: 			full_flag++;
+001E77 0D                INC     R5
+   50: 		}
+   51: 	}
+001E78         ?C0009?KEYSCAN:
+001E78 0E                INC     R6
+001E79 EE                MOV     A,R6
+001E7A B406ED            CJNE    A,#06H,?C0007?KEYSCAN
+001E7D         ?C0008?KEYSCAN:
+   52: 
+   53: 
+   54: 	//special key
+   55: 
+   56: 	for (i=0 ; i<KS_BUFF_POLL_LEN ; i++) 
+001E7D E4                CLR     A
+001E7E FE                MOV     R6,A
+001E7F         ?C0011?KEYSCAN:
+   57: 	{
+   58: 		if (ksEvtPool.ksPool[i] == key && full_flag==6)
+001E7F 7451              MOV     A,#LOW ksEvtPool+01H
+001E81 2E                ADD     A,R6
+001E82 F582              MOV     DPL,A
+001E84 E4                CLR     A
+001E85 344E              ADDC    A,#HIGH ksEvtPool+01H
+001E87 F583              MOV     DPH,A
+001E89 E0                MOVX    A,@DPTR
+001E8A B50708            CJNE    A,AR7,?C0014?KEYSCAN
+001E8D ED                MOV     A,R5
+001E8E B40604            CJNE    A,#06H,?C0014?KEYSCAN
+   59: 		{
+   60: 			full=1;
+001E91 7901              MOV     R1,#01H
+   61: 			break;
+001E93 8027              SJMP    ?C0012?KEYSCAN
+   62: 		}
+001E95         ?C0014?KEYSCAN:
+   63: 		if (ksEvtPool.ksPool[i] == 0) 
+001E95 7451              MOV     A,#LOW ksEvtPool+01H
+001E97 2E                ADD     A,R6
+001E98 F582              MOV     DPL,A
+001E9A E4                CLR     A
+001E9B 344E              ADDC    A,#HIGH ksEvtPool+01H
+001E9D F583              MOV     DPH,A
+001E9F E0                MOVX    A,@DPTR
+001EA0 7015              JNZ     ?C0013?KEYSCAN
+   64: 		{
+   65: 			if(mult_key_value != key)
+001EA2 904DF6            MOV     DPTR,#mult_key_value
+001EA5 E0                MOVX    A,@DPTR
+001EA6 6F                XRL     A,R7
+001EA7 6013              JZ      ?C0012?KEYSCAN
+   66: 				ksEvtPool.ksPool[i] = key;
+001EA9 7451              MOV     A,#LOW ksEvtPool+01H
+001EAB 2E                ADD     A,R6
+001EAC F582              MOV     DPL,A
+001EAE E4                CLR     A
+001EAF 344E              ADDC    A,#HIGH ksEvtPool+01H
+001EB1 F583              MOV     DPH,A
+001EB3 EF                MOV     A,R7
+001EB4 F0                MOVX    @DPTR,A
+   67: 			break;
+001EB5 8005              SJMP    ?C0012?KEYSCAN
+   68: 		}
+   69: 	}
+001EB7         ?C0013?KEYSCAN:
+001EB7 0E                INC     R6
+001EB8 EE                MOV     A,R6
+001EB9 B406C3            CJNE    A,#06H,?C0011?KEYSCAN
+001EBC         ?C0012?KEYSCAN:
+   70: 
+   71: 
+   72: 	if(full_flag == 6 && full ==0)
+001EBC ED                MOV     A,R5
+001EBD 6406              XRL     A,#06H
+001EBF 7034              JNZ     ?C0006?KEYSCAN
+001EC1 E9                MOV     A,R1
+001EC2 7031              JNZ     ?C0006?KEYSCAN
+   73: 	{
+   74: 		if(key <= 112)
+001EC4 EF                MOV     A,R7
+001EC5 D3                SETB    C
+001EC6 9470              SUBB    A,#070H
+001EC8 502B              JNC     ?C0006?KEYSCAN
+   75: 		{
+   76: 			temp_chu = (key)/8;
+001ECA EF                MOV     A,R7
+001ECB 13                RRC     A
+001ECC 13                RRC     A
+001ECD 13                RRC     A
+001ECE 541F              ANL     A,#01FH
+001ED0 FC                MOV     R4,A
+   77: 			bitkey[temp_chu+1]  |=  (1<<((key)%8)); 
+001ED1 24D1              ADD     A,#LOW bitkey+01H
+001ED3 F582              MOV     DPL,A
+001ED5 E4                CLR     A
+001ED6 344D              ADDC    A,#HIGH bitkey+01H
+001ED8 F583              MOV     DPH,A
+001EDA C083              PUSH    DPH
+001EDC C082              PUSH    DPL
+001EDE E0                MOVX    A,@DPTR
+001EDF FE                MOV     R6,A
+001EE0 EF                MOV     A,R7
+001EE1 5407              ANL     A,#07H
+001EE3 FF                MOV     R7,A
+001EE4 7401              MOV     A,#01H
+001EE6 A807              MOV     R0,AR7
+001EE8 08                INC     R0
+001EE9 8002              SJMP    ?C0102?KEYSCAN
+001EEB         ?C0101?KEYSCAN:
+001EEB C3                CLR     C
+001EEC 33                RLC     A
+001EED         ?C0102?KEYSCAN:
+001EED D8FC              DJNZ    R0,?C0101?KEYSCAN
+001EEF 4E                ORL     A,R6
+001EF0 D082              POP     DPL
+001EF2 D083              POP     DPH
+001EF4 F0                MOVX    @DPTR,A
+   78: 		}
+   79: 	}
+   80: 	
+   81: }
+001EF5         ?C0006?KEYSCAN:
+001EF5 22                RET     
+----- FUNCTION _keyIn (END) -------
+
+
+----- FUNCTION _keyOut (BEGIN) -----
+ FILE: 'keyscan.c'
+   83: static void keyOut(byte key)
+   84: {
+;---- Variable 'key' assigned to Register 'R7' ----
+   85: 	byte i = 0,full_flag=0, temp_chu=0;
+   86: 	byte found = 0;
+;---- Variable 'i' assigned to Register 'R6' ----
+001EF6 E4                CLR     A
+001EF7 FE                MOV     R6,A
+001EF8 904EB1            MOV     DPTR,#full_flag
+001EFB F0                MOVX    @DPTR,A
+;---- Variable 'temp_chu' assigned to Register 'R5' ----
+001EFC FD                MOV     R5,A
+   87: 
+;---- Variable 'found' assigned to Register 'R4' ----
+001EFD FC                MOV     R4,A
+   88: 	if ((key &0xF0) == 0xf0 || (key &0xD0) == 0xD0)
+001EFE EF                MOV     A,R7
+001EFF 54F0              ANL     A,#0F0H
+001F01 64F0              XRL     A,#0F0H
+001F03 6007              JZ      ?C0020?KEYSCAN
+001F05 EF                MOV     A,R7
+001F06 54D0              ANL     A,#0D0H
+001F08 FB                MOV     R3,A
+001F09 BBD00C            CJNE    R3,#0D0H,?C0019?KEYSCAN
+001F0C         ?C0020?KEYSCAN:
+   89: 	{
+   90: 		if(mult_key_status == KEY_WAIT_RELEASE)
+001F0C 904DF7            MOV     DPTR,#mult_key_status
+001F0F E0                MOVX    A,@DPTR
+001F10 B4020B            CJNE    A,#02H,?C0022?KEYSCAN
+   91: 		{
+   92: 			mult_key_status = KEY_RELEASE;
+001F13 7403              MOV     A,#03H
+001F15 F0                MOVX    @DPTR,A
+   93: 		}
+   94: 	}
+001F16 8006              SJMP    ?C0022?KEYSCAN
+001F18         ?C0019?KEYSCAN:
+   95: 	else
+   96: 		standard_key_release_flag = 1;
+001F18 904DE7            MOV     DPTR,#standard_key_release_flag
+001F1B 7401              MOV     A,#01H
+001F1D F0                MOVX    @DPTR,A
+001F1E         ?C0022?KEYSCAN:
+   97: 
+   98: 	if(key >= HID_KEY_LEFT_CTL && key <= HID_KEY_RIGHT_GUI)
+001F1E EF                MOV     A,R7
+001F1F C3                CLR     C
+001F20 94E0              SUBB    A,#0E0H
+001F22 4021              JC      ?C0023?KEYSCAN
+001F24 EF                MOV     A,R7
+001F25 D3                SETB    C
+001F26 94E7              SUBB    A,#0E7H
+001F28 501B              JNC     ?C0023?KEYSCAN
+   99: 	{
+  100: 		ksEvtPool.standardSel  &= ~(0x01 << (key & 0x07));
+001F2A 904E50            MOV     DPTR,#ksEvtPool
+001F2D E0                MOVX    A,@DPTR
+001F2E FE                MOV     R6,A
+001F2F EF                MOV     A,R7
+001F30 5407              ANL     A,#07H
+001F32 FF                MOV     R7,A
+001F33 7401              MOV     A,#01H
+001F35 A807              MOV     R0,AR7
+001F37 08                INC     R0
+001F38 8002              SJMP    ?C0104?KEYSCAN
+001F3A         ?C0103?KEYSCAN:
+001F3A C3                CLR     C
+001F3B 33                RLC     A
+001F3C         ?C0104?KEYSCAN:
+001F3C D8FC              DJNZ    R0,?C0103?KEYSCAN
+001F3E F4                CPL     A
+001F3F 5E                ANL     A,R6
+001F40 904E50            MOV     DPTR,#ksEvtPool
+001F43 F0                MOVX    @DPTR,A
+001F44 22                RET     
+  101: 		return;
+  102: 	}
+001F45         ?C0023?KEYSCAN:
+  103: 	
+  104: 
+  105: 	for (i=0 ; i<KS_BUFF_POLL_LEN ; i++) 
+001F45 E4                CLR     A
+001F46 FE                MOV     R6,A
+001F47         ?C0025?KEYSCAN:
+  106: 	{
+  107: 		if (found == 0) 
+001F47 EC                MOV     A,R4
+001F48 7021              JNZ     ?C0028?KEYSCAN
+  108: 		{
+  109: 			if (ksEvtPool.ksPool[i] == key) {
+001F4A 7451              MOV     A,#LOW ksEvtPool+01H
+001F4C 2E                ADD     A,R6
+001F4D F582              MOV     DPL,A
+001F4F E4                CLR     A
+001F50 344E              ADDC    A,#HIGH ksEvtPool+01H
+001F52 F583              MOV     DPH,A
+001F54 E0                MOVX    A,@DPTR
+001F55 6F                XRL     A,R7
+001F56 7047              JNZ     ?C0027?KEYSCAN
+  110: 				if (i == KS_BUFF_POLL_LEN-1) {
+001F58 EE                MOV     A,R6
+001F59 B4050B            CJNE    A,#05H,?C0030?KEYSCAN
+  111: 					ksEvtPool.ksPool[i] = 0;
+001F5C 2451              ADD     A,#LOW ksEvtPool+01H
+001F5E F582              MOV     DPL,A
+001F60 E4                CLR     A
+001F61 344E              ADDC    A,#HIGH ksEvtPool+01H
+001F63 F583              MOV     DPH,A
+001F65 E4                CLR     A
+001F66 F0                MOVX    @DPTR,A
+  112: 				}
+001F67         ?C0030?KEYSCAN:
+  113: 				found = 1;
+001F67 7C01              MOV     R4,#01H
+  114: 			}
+  115: 		}
+001F69 8034              SJMP    ?C0027?KEYSCAN
+001F6B         ?C0028?KEYSCAN:
+  116: 		else 
+  117: 		{
+  118: 			ksEvtPool.ksPool[i-1] = ksEvtPool.ksPool[i];
+001F6B 7451              MOV     A,#LOW ksEvtPool+01H
+001F6D 2E                ADD     A,R6
+001F6E F582              MOV     DPL,A
+001F70 E4                CLR     A
+001F71 344E              ADDC    A,#HIGH ksEvtPool+01H
+001F73 F583              MOV     DPH,A
+001F75 E0                MOVX    A,@DPTR
+001F76 FB                MOV     R3,A
+001F77 7450              MOV     A,#LOW ksEvtPool
+001F79 2E                ADD     A,R6
+001F7A F582              MOV     DPL,A
+001F7C E4                CLR     A
+001F7D 344E              ADDC    A,#HIGH ksEvtPool
+001F7F F583              MOV     DPH,A
+001F81 EB                MOV     A,R3
+001F82 F0                MOVX    @DPTR,A
+  119: 			if (ksEvtPool.ksPool[i] == 0)
+001F83 7451              MOV     A,#LOW ksEvtPool+01H
+001F85 2E                ADD     A,R6
+001F86 F582              MOV     DPL,A
+001F88 E4                CLR     A
+001F89 344E              ADDC    A,#HIGH ksEvtPool+01H
+001F8B F583              MOV     DPH,A
+001F8D E0                MOVX    A,@DPTR
+001F8E 6014              JZ      ?C0026?KEYSCAN
+  120: 				break;
+001F90         ?C0032?KEYSCAN:
+  121: 			if (i == KS_BUFF_POLL_LEN-1) {
+001F90 EE                MOV     A,R6
+001F91 B4050B            CJNE    A,#05H,?C0027?KEYSCAN
+  122: 				ksEvtPool.ksPool[i] = 0;
+001F94 2451              ADD     A,#LOW ksEvtPool+01H
+001F96 F582              MOV     DPL,A
+001F98 E4                CLR     A
+001F99 344E              ADDC    A,#HIGH ksEvtPool+01H
+001F9B F583              MOV     DPH,A
+001F9D E4                CLR     A
+001F9E F0                MOVX    @DPTR,A
+  123: 			}
+  124: 		}
+  125: 	}
+001F9F         ?C0027?KEYSCAN:
+001F9F 0E                INC     R6
+001FA0 EE                MOV     A,R6
+001FA1 B406A3            CJNE    A,#06H,?C0025?KEYSCAN
+001FA4         ?C0026?KEYSCAN:
+  126: 
+  127: 
+  128: 	if(key <= 112)
+001FA4 EF                MOV     A,R7
+001FA5 D3                SETB    C
+001FA6 9470              SUBB    A,#070H
+001FA8 502C              JNC     ?C0024?KEYSCAN
+  129: 	{
+  130: 		temp_chu = (key)/8;
+001FAA EF                MOV     A,R7
+001FAB 13                RRC     A
+001FAC 13                RRC     A
+001FAD 13                RRC     A
+001FAE 541F              ANL     A,#01FH
+001FB0 FD                MOV     R5,A
+  131: 		bitkey[temp_chu+1]  &=  ~(1<<((key)%8)); 
+001FB1 24D1              ADD     A,#LOW bitkey+01H
+001FB3 F582              MOV     DPL,A
+001FB5 E4                CLR     A
+001FB6 344D              ADDC    A,#HIGH bitkey+01H
+001FB8 F583              MOV     DPH,A
+001FBA C083              PUSH    DPH
+001FBC C082              PUSH    DPL
+001FBE E0                MOVX    A,@DPTR
+001FBF FE                MOV     R6,A
+001FC0 EF                MOV     A,R7
+001FC1 5407              ANL     A,#07H
+001FC3 FF                MOV     R7,A
+001FC4 7401              MOV     A,#01H
+001FC6 A807              MOV     R0,AR7
+001FC8 08                INC     R0
+001FC9 8002              SJMP    ?C0106?KEYSCAN
+001FCB         ?C0105?KEYSCAN:
+001FCB C3                CLR     C
+001FCC 33                RLC     A
+001FCD         ?C0106?KEYSCAN:
+001FCD D8FC              DJNZ    R0,?C0105?KEYSCAN
+001FCF F4                CPL     A
+001FD0 5E                ANL     A,R6
+001FD1 D082              POP     DPL
+001FD3 D083              POP     DPH
+001FD5 F0                MOVX    @DPTR,A
+  132: 	}
+  133: 	
+  134: }
+001FD6         ?C0024?KEYSCAN:
+001FD6 22                RET     
+----- FUNCTION _keyOut (END) -------
+
+
+----- FUNCTION _kb_combination_key_press (BEGIN) -----
+ FILE: 'kb_process.c'
+  394: void kb_combination_key_press(byte press_state,byte special_key,byte standrad_key)
+  395: {
+;---- Variable 'press_state' assigned to Register 'R7' ----
+;---- Variable 'standrad_key' assigned to Register 'R3' ----
+;---- Variable 'special_key' assigned to Register 'R5' ----
+  396: 	g_variable.key_combination_ctrl = special_key;	
+  397: 	g_variable.key_combination_keyvalue = standrad_key;
+001FD7 904CF5            MOV     DPTR,#g_variable+036H
+001FDA ED                MOV     A,R5
+001FDB F0                MOVX    @DPTR,A
+  398: 
+001FDC A3                INC     DPTR
+001FDD EB                MOV     A,R3
+001FDE F0                MOVX    @DPTR,A
+  399: 	if(press_state & 1)
+001FDF EF                MOV     A,R7
+001FE0 30E012            JNB     ACC.0,?C0094?KB_PROCESS
+  400: 	{
+  401: 		if(g_variable.key_combination_step == CAMBINATION_KEY_COMPLETE) 
+001FE3 904CF4            MOV     DPTR,#g_variable+035H
+001FE6 E0                MOVX    A,@DPTR
+001FE7 B40304            CJNE    A,#03H,?C0095?KB_PROCESS
+  402: 			g_variable.key_combination_step = CAMBINATION_KEY_HOLD;
+001FEA 7402              MOV     A,#02H
+001FEC F0                MOVX    @DPTR,A
+001FED 22                RET     
+001FEE         ?C0095?KB_PROCESS:
+  403: 		else	
+  404: 			g_variable.key_combination_step = CAMBINATION_KEY_PRESS;
+001FEE 904CF4            MOV     DPTR,#g_variable+035H
+001FF1 7401              MOV     A,#01H
+001FF3 F0                MOVX    @DPTR,A
+  405: 	}
+001FF4 22                RET     
+001FF5         ?C0094?KB_PROCESS:
+  406: 	else
+  407: 	{
+  408: 		g_variable.key_combination_step = CAMBINATION_KEY_WAIT_RELEASE;
+001FF5 904CF4            MOV     DPTR,#g_variable+035H
+001FF8 7404              MOV     A,#04H
+001FFA F0                MOVX    @DPTR,A
+  409: 	}
+  410: 
+  411: }
+001FFB 22                RET     
+----- FUNCTION _kb_combination_key_press (END) -------
+
+
+----- FUNCTION _key_fn_function (BEGIN) -----
+ FILE: 'kb_process.c'
+  414: byte key_fn_function(byte state ,byte key_value)
+  415: {
+;---- Variable 'state' assigned to Register 'R7' ----
+;---- Variable 'key_value' assigned to Register 'R5' ----
+  416: 	byte temp = 0;
+  417: 
+001FFC E4                CLR     A
+001FFD 904EB0            MOV     DPTR,#temp
+002000 F0                MOVX    @DPTR,A
+  418: 	if(state & 1)
+002001 EF                MOV     A,R7
+002002 30E005            JNB     ACC.0,?C0099?KB_PROCESS
+  419: 		g_variable.one_key_press_wait_release_timer = 0;
+002005 E4                CLR     A
+002006 904CF8            MOV     DPTR,#g_variable+039H
+002009 F0                MOVX    @DPTR,A
+00200A         ?C0099?KB_PROCESS:
+  420: 
+  421: 	temp = key_value;
+00200A 904EB0            MOV     DPTR,#temp
+00200D ED                MOV     A,R5
+00200E F0                MOVX    @DPTR,A
+  422: 	if(fn_flag == 1)			// Fn lock
+00200F 904DEA            MOV     DPTR,#fn_flag
+002012 E0                MOVX    A,@DPTR
+002013 6401              XRL     A,#01H
+002015 6002              JZ      $ + 4H
+002017 4125              AJMP    ?C0100?KB_PROCESS
+  423: 	{
+  424: 		
+  425: 		switch (key_value)
+002019 ED                MOV     A,R5
+00201A 1205B9            LCALL   ?C?CCASE
+00201D 218F              DW      ?C0134?KB_PROCESS
+00201F 04                DB      04H
+002020 219F              DW      ?C0136?KB_PROCESS
+002022 07                DB      07H
+002023 21A7              DW      ?C0137?KB_PROCESS
+002025 09                DB      09H
+002026 21AF              DW      ?C0138?KB_PROCESS
+002028 0A                DB      0AH
+002029 21B7              DW      ?C0139?KB_PROCESS
+00202B 0B                DB      0BH
+00202C 21C7              DW      ?C0141?KB_PROCESS
+00202E 0C                DB      0CH
+00202F 21D7              DW      ?C0143?KB_PROCESS
+002031 0D                DB      0DH
+002032 21DF              DW      ?C0144?KB_PROCESS
+002034 0E                DB      0EH
+002035 21E7              DW      ?C0145?KB_PROCESS
+002037 0F                DB      0FH
+002038 21EF              DW      ?C0146?KB_PROCESS
+00203A 10                DB      010H
+00203B 21CF              DW      ?C0142?KB_PROCESS
+00203D 12                DB      012H
+00203E 2197              DW      ?C0135?KB_PROCESS
+002040 16                DB      016H
+002041 21BF              DW      ?C0140?KB_PROCESS
+002043 18                DB      018H
+002044 209E              DW      ?C0103?KB_PROCESS
+002046 1E                DB      01EH
+002047 20A6              DW      ?C0104?KB_PROCESS
+002049 1F                DB      01FH
+00204A 20AE              DW      ?C0105?KB_PROCESS
+00204C 20                DB      020H
+00204D 20B6              DW      ?C0106?KB_PROCESS
+00204F 21                DB      021H
+002050 20BE              DW      ?C0107?KB_PROCESS
+002052 22                DB      022H
+002053 20C6              DW      ?C0108?KB_PROCESS
+002055 23                DB      023H
+002056 20CE              DW      ?C0109?KB_PROCESS
+002058 24                DB      024H
+002059 20D6              DW      ?C0110?KB_PROCESS
+00205B 25                DB      025H
+00205C 20DE              DW      ?C0111?KB_PROCESS
+00205E 26                DB      026H
+00205F 20E6              DW      ?C0112?KB_PROCESS
+002061 27                DB      027H
+002062 2096              DW      ?C0102?KB_PROCESS
+002064 29                DB      029H
+002065 20FE              DW      ?C0115?KB_PROCESS
+002067 2A                DB      02AH
+002068 20EE              DW      ?C0113?KB_PROCESS
+00206A 2D                DB      02DH
+00206B 20F6              DW      ?C0114?KB_PROCESS
+00206D 2E                DB      02EH
+00206E 213D              DW      ?C0122?KB_PROCESS
+002070 2F                DB      02FH
+002071 2121              DW      ?C0119?KB_PROCESS
+002073 30                DB      030H
+002074 2167              DW      ?C0128?KB_PROCESS
+002076 33                DB      033H
+002077 2150              DW      ?C0125?KB_PROCESS
+002079 34                DB      034H
+00207A 21F7              DW      ?C0147?KB_PROCESS
+00207C 36                DB      036H
+00207D 21FF              DW      ?C0148?KB_PROCESS
+00207F 37                DB      037H
+002080 2207              DW      ?C0149?KB_PROCESS
+002082 38                DB      038H
+002083 221F              DW      ?C0152?KB_PROCESS
+002085 65                DB      065H
+002086 217E              DW      ?C0132?KB_PROCESS
+002088 E3                DB      0E3H
+002089 220F              DW      ?C0150?KB_PROCESS
+00208B E4                DB      0E4H
+00208C 2217              DW      ?C0151?KB_PROCESS
+00208E E6                DB      0E6H
+00208F 217E              DW      ?C0132?KB_PROCESS
+002091 E7                DB      0E7H
+002092 0000              DW      00H
+002094 2225              DW      ?C0100?KB_PROCESS
+  426: 		{ 
+  427: 			case HID_KEY_ESC:
+002096         ?C0102?KB_PROCESS:
+  428: 				temp = HID_KEY_TILDE;
+002096 904EB0            MOV     DPTR,#temp
+002099 7435              MOV     A,#035H
+00209B F0                MOVX    @DPTR,A
+  429: 				break;
+00209C 4125              AJMP    ?C0100?KB_PROCESS
+  430: 			case HID_KEY_1:
+00209E         ?C0103?KB_PROCESS:
+  431: 				temp = HID_KEY_F1;
+00209E 904EB0            MOV     DPTR,#temp
+0020A1 743A              MOV     A,#03AH
+0020A3 F0                MOVX    @DPTR,A
+  432: 				break;
+0020A4 4125              AJMP    ?C0100?KB_PROCESS
+  433: 			case HID_KEY_2:
+0020A6         ?C0104?KB_PROCESS:
+  434: 				temp = HID_KEY_F2;
+0020A6 904EB0            MOV     DPTR,#temp
+0020A9 743B              MOV     A,#03BH
+0020AB F0                MOVX    @DPTR,A
+  435: 				break;
+0020AC 4125              AJMP    ?C0100?KB_PROCESS
+  436: 			case HID_KEY_3:
+0020AE         ?C0105?KB_PROCESS:
+  437: 				temp = HID_KEY_F3;
+0020AE 904EB0            MOV     DPTR,#temp
+0020B1 743C              MOV     A,#03CH
+0020B3 F0                MOVX    @DPTR,A
+  438: 				break;	
+0020B4 4125              AJMP    ?C0100?KB_PROCESS
+  439: 			case HID_KEY_4:
+0020B6         ?C0106?KB_PROCESS:
+  440: 				temp = HID_KEY_F4;
+0020B6 904EB0            MOV     DPTR,#temp
+0020B9 743D              MOV     A,#03DH
+0020BB F0                MOVX    @DPTR,A
+  441: 				break;
+0020BC 4125              AJMP    ?C0100?KB_PROCESS
+  442: 			case HID_KEY_5:
+0020BE         ?C0107?KB_PROCESS:
+  443: 				temp = HID_KEY_F5;
+0020BE 904EB0            MOV     DPTR,#temp
+0020C1 743E              MOV     A,#03EH
+0020C3 F0                MOVX    @DPTR,A
+  444: 				break;
+0020C4 4125              AJMP    ?C0100?KB_PROCESS
+  445: 			case HID_KEY_6:
+0020C6         ?C0108?KB_PROCESS:
+  446: 				temp = HID_KEY_F6;
+0020C6 904EB0            MOV     DPTR,#temp
+0020C9 743F              MOV     A,#03FH
+0020CB F0                MOVX    @DPTR,A
+  447: 				break;
+0020CC 4125              AJMP    ?C0100?KB_PROCESS
+  448: 			case HID_KEY_7:
+0020CE         ?C0109?KB_PROCESS:
+  449: 				temp = HID_KEY_F7;
+0020CE 904EB0            MOV     DPTR,#temp
+0020D1 7440              MOV     A,#040H
+0020D3 F0                MOVX    @DPTR,A
+  450: 				break;
+0020D4 4125              AJMP    ?C0100?KB_PROCESS
+  451: 			case HID_KEY_8:
+0020D6         ?C0110?KB_PROCESS:
+  452: 				temp = HID_KEY_F8;
+0020D6 904EB0            MOV     DPTR,#temp
+0020D9 7441              MOV     A,#041H
+0020DB F0                MOVX    @DPTR,A
+  453: 				break;
+0020DC 4125              AJMP    ?C0100?KB_PROCESS
+  454: 			case HID_KEY_9:
+0020DE         ?C0111?KB_PROCESS:
+  455: 				temp = HID_KEY_F9;
+0020DE 904EB0            MOV     DPTR,#temp
+0020E1 7442              MOV     A,#042H
+0020E3 F0                MOVX    @DPTR,A
+  456: 				break;
+0020E4 4125              AJMP    ?C0100?KB_PROCESS
+  457: 			case HID_KEY_0:
+0020E6         ?C0112?KB_PROCESS:
+  458: 				temp = HID_KEY_F10;
+0020E6 904EB0            MOV     DPTR,#temp
+0020E9 7443              MOV     A,#043H
+0020EB F0                MOVX    @DPTR,A
+  459: 				break;
+0020EC 4125              AJMP    ?C0100?KB_PROCESS
+  460: 			case HID_KEY_MINUS:
+0020EE         ?C0113?KB_PROCESS:
+  461: 				temp = HID_KEY_F11;
+0020EE 904EB0            MOV     DPTR,#temp
+0020F1 7444              MOV     A,#044H
+0020F3 F0                MOVX    @DPTR,A
+  462: 				break;
+0020F4 4125              AJMP    ?C0100?KB_PROCESS
+  463: 			case HID_KEY_EQUAL:
+0020F6         ?C0114?KB_PROCESS:
+  464: 				temp = HID_KEY_F12;
+0020F6 904EB0            MOV     DPTR,#temp
+0020F9 7445              MOV     A,#045H
+0020FB F0                MOVX    @DPTR,A
+  465: 				break;
+0020FC 4125              AJMP    ?C0100?KB_PROCESS
+  466: 
+  467: 			case HID_KEY_BACKSPACE:	// switch
+0020FE         ?C0115?KB_PROCESS:
+  468: 				if(state & 1)
+0020FE EF                MOV     A,R7
+0020FF 30E018            JNB     ACC.0,?C0116?KB_PROCESS
+  469: 				{
+  470: 					if(g_variable.backlight_level < BACKLIGHT_OFF)
+002102 904CFD            MOV     DPTR,#g_variable+03EH
+002105 E0                MOVX    A,@DPTR
+002106 C3                CLR     C
+002107 9408              SUBB    A,#08H
+002109 5005              JNC     ?C0117?KB_PROCESS
+  471: 						g_variable.backlight_level++;
+00210B E0                MOVX    A,@DPTR
+00210C 04                INC     A
+00210D F0                MOVX    @DPTR,A
+00210E 8005              SJMP    ?C0118?KB_PROCESS
+002110         ?C0117?KB_PROCESS:
+  472: 					else
+  473: 						g_variable.backlight_level = BACKLIGHT_ON;
+002110 E4                CLR     A
+002111 904CFD            MOV     DPTR,#g_variable+03EH
+002114 F0                MOVX    @DPTR,A
+002115         ?C0118?KB_PROCESS:
+  474: 					g_variable.backlight_step = BACLIGHT_ON_STEP_1;	
+002115 E4                CLR     A
+002116 904CFF            MOV     DPTR,#g_variable+040H
+002119 F0                MOVX    @DPTR,A
+  475: 				}
+00211A         ?C0116?KB_PROCESS:
+  476: 				temp = HID_KEY_NULL;
+00211A E4                CLR     A
+00211B 904EB0            MOV     DPTR,#temp
+00211E F0                MOVX    @DPTR,A
+  477: 				break;
+00211F 4125              AJMP    ?C0100?KB_PROCESS
+  478: 			case HID_KEY_RIGHT_BRACKET:
+002121         ?C0119?KB_PROCESS:
+  479: 				if(state & 1)
+002121 EF                MOV     A,R7
+002122 30E011            JNB     ACC.0,?C0120?KB_PROCESS
+  480: 				{
+  481: 					if(g_variable.backlight_duty_level < BACKLIGHT_DUTY_LEVEL_100)
+002125 904D02            MOV     DPTR,#g_variable+043H
+002128 E0                MOVX    A,@DPTR
+002129 C3                CLR     C
+00212A 9404              SUBB    A,#04H
+00212C 5003              JNC     ?C0121?KB_PROCESS
+  482: 						g_variable.backlight_duty_level++;
+00212E E0                MOVX    A,@DPTR
+00212F 04                INC     A
+002130 F0                MOVX    @DPTR,A
+002131         ?C0121?KB_PROCESS:
+  483: 					g_variable.backlight_step = BACLIGHT_ON_STEP_1;	
+002131 E4                CLR     A
+002132 904CFF            MOV     DPTR,#g_variable+040H
+002135 F0                MOVX    @DPTR,A
+  484: 				}
+002136         ?C0120?KB_PROCESS:
+  485: 				temp = HID_KEY_NULL;
+002136 E4                CLR     A
+002137 904EB0            MOV     DPTR,#temp
+00213A F0                MOVX    @DPTR,A
+  486: 				break;
+00213B 4125              AJMP    ?C0100?KB_PROCESS
+  487: 			case HID_KEY_LEFT_BRACKET:
+00213D         ?C0122?KB_PROCESS:
+  488: 				if(state & 1)
+00213D EF                MOV     A,R7
+00213E 30E008            JNB     ACC.0,?C0123?KB_PROCESS
+  489: 				{
+  490: 					if(g_variable.backlight_duty_level != BACKLIGHT_DUTY_LEVEL_00)
+002141 904D02            MOV     DPTR,#g_variable+043H
+002144 E0                MOVX    A,@DPTR
+002145 6002              JZ      ?C0123?KB_PROCESS
+  491: 						g_variable.backlight_duty_level--;
+002147 14                DEC     A
+002148 F0                MOVX    @DPTR,A
+  492: 				}
+002149         ?C0123?KB_PROCESS:
+  493: 				temp = HID_KEY_NULL;
+002149 E4                CLR     A
+00214A 904EB0            MOV     DPTR,#temp
+00214D F0                MOVX    @DPTR,A
+  494: 				break;
+00214E 4125              AJMP    ?C0100?KB_PROCESS
+  495: 			case HID_KEY_QUOTE:			//++
+002150         ?C0125?KB_PROCESS:
+  496: 				if(state & 1)
+002150 EF                MOV     A,R7
+002151 30E00C            JNB     ACC.0,?C0126?KB_PROCESS
+  497: 				{
+  498: 					if(g_variable.backlight_speed > BACKLIGHT_SPEED_LEVEL_100MS)
+002154 904CFE            MOV     DPTR,#g_variable+03FH
+002157 E0                MOVX    A,@DPTR
+002158 D3                SETB    C
+002159 9401              SUBB    A,#01H
+00215B 4003              JC      ?C0126?KB_PROCESS
+  499: 						g_variable.backlight_speed--;
+00215D E0                MOVX    A,@DPTR
+00215E 14                DEC     A
+00215F F0                MOVX    @DPTR,A
+  500: 				}
+002160         ?C0126?KB_PROCESS:
+  501: 				temp = HID_KEY_NULL;
+002160 E4                CLR     A
+002161 904EB0            MOV     DPTR,#temp
+002164 F0                MOVX    @DPTR,A
+  502: 				break;	
+002165 4125              AJMP    ?C0100?KB_PROCESS
+  503: 			case HID_KEY_SEMICOLON:		// --
+002167         ?C0128?KB_PROCESS:
+  504: 				if(state & 1)
+002167 EF                MOV     A,R7
+002168 30E00C            JNB     ACC.0,?C0129?KB_PROCESS
+  505: 				{
+  506: 					if(g_variable.backlight_speed < BACKLIGHT_SPEED_LEVEL_500MS)
+00216B 904CFE            MOV     DPTR,#g_variable+03FH
+00216E E0                MOVX    A,@DPTR
+00216F C3                CLR     C
+002170 9405              SUBB    A,#05H
+002172 5003              JNC     ?C0129?KB_PROCESS
+  507: 						g_variable.backlight_speed++;
+002174 E0                MOVX    A,@DPTR
+002175 04                INC     A
+002176 F0                MOVX    @DPTR,A
+  508: 				}
+002177         ?C0129?KB_PROCESS:
+  509: 				temp = HID_KEY_NULL;
+002177 E4                CLR     A
+002178 904EB0            MOV     DPTR,#temp
+00217B F0                MOVX    @DPTR,A
+  510: 				break;
+00217C 4125              AJMP    ?C0100?KB_PROCESS
+  511: 			case HID_KEY_LEFT_GUI:
+  512: 			case HID_KEY_RIGHT_GUI:
+00217E         ?C0132?KB_PROCESS:
+  513: 				if(state & 1)
+00217E EF                MOV     A,R7
+00217F 30E006            JNB     ACC.0,?C0133?KB_PROCESS
+  514: 					g_variable.system_win_app_lock_flag = ~g_variable.system_win_app_lock_flag;
+002182 904CF9            MOV     DPTR,#g_variable+03AH
+002185 E0                MOVX    A,@DPTR
+002186 F4                CPL     A
+002187 F0                MOVX    @DPTR,A
+002188         ?C0133?KB_PROCESS:
+  515: 				temp = HID_KEY_NULL;
+002188 E4                CLR     A
+002189 904EB0            MOV     DPTR,#temp
+00218C F0                MOVX    @DPTR,A
+  516: 				break;
+00218D 4125              AJMP    ?C0100?KB_PROCESS
+  517: 			case HID_KEY_A:
+00218F         ?C0134?KB_PROCESS:
+  518: 				temp = HID_MULTIKEY_PALY;
+00218F 904EB0            MOV     DPTR,#temp
+002192 74F2              MOV     A,#0F2H
+002194 F0                MOVX    @DPTR,A
+  519: 				break;
+002195 4125              AJMP    ?C0100?KB_PROCESS
+  520: 			case HID_KEY_S:
+002197         ?C0135?KB_PROCESS:
+  521: 				temp = HID_MULTIKEY_PRE_TRACK;
+002197 904EB0            MOV     DPTR,#temp
+00219A 74F4              MOV     A,#0F4H
+00219C F0                MOVX    @DPTR,A
+  522: 				break;
+00219D 4125              AJMP    ?C0100?KB_PROCESS
+  523: 			case HID_KEY_D:
+00219F         ?C0136?KB_PROCESS:
+  524: 				temp = HID_MULTIKEY_NEXT_TRACK;
+00219F 904EB0            MOV     DPTR,#temp
+0021A2 74F5              MOV     A,#0F5H
+0021A4 F0                MOVX    @DPTR,A
+  525: 				break;	
+0021A5 807E              SJMP    ?C0100?KB_PROCESS
+  526: 			case HID_KEY_F:
+0021A7         ?C0137?KB_PROCESS:
+  527: 				temp = HID_MULTIKEY_VOL_DOWN;
+0021A7 904EB0            MOV     DPTR,#temp
+0021AA 74F6              MOV     A,#0F6H
+0021AC F0                MOVX    @DPTR,A
+  528: 				break;
+0021AD 8076              SJMP    ?C0100?KB_PROCESS
+  529: 			case HID_KEY_G:
+0021AF         ?C0138?KB_PROCESS:
+  530: 				temp = HID_MULTIKEY_VOL_UP;
+0021AF 904EB0            MOV     DPTR,#temp
+0021B2 74F7              MOV     A,#0F7H
+0021B4 F0                MOVX    @DPTR,A
+  531: 				break;
+0021B5 806E              SJMP    ?C0100?KB_PROCESS
+  532: 			case HID_KEY_H:
+0021B7         ?C0139?KB_PROCESS:
+  533: 				temp = HID_MULTIKEY_MUTE;
+0021B7 904EB0            MOV     DPTR,#temp
+0021BA 74F8              MOV     A,#0F8H
+0021BC F0                MOVX    @DPTR,A
+  534: 				break;
+0021BD 8066              SJMP    ?C0100?KB_PROCESS
+  535: 			case HID_KEY_U:
+0021BF         ?C0140?KB_PROCESS:
+  536: 				temp = HID_KEY_PRINT_SCREEN;
+0021BF 904EB0            MOV     DPTR,#temp
+0021C2 7446              MOV     A,#046H
+0021C4 F0                MOVX    @DPTR,A
+  537: 				break;
+0021C5 805E              SJMP    ?C0100?KB_PROCESS
+  538: 			case HID_KEY_I:
+0021C7         ?C0141?KB_PROCESS:
+  539: 				temp = HID_KEY_SCROLL_LOCK;
+0021C7 904EB0            MOV     DPTR,#temp
+0021CA 7447              MOV     A,#047H
+0021CC F0                MOVX    @DPTR,A
+  540: 				break;
+0021CD 8056              SJMP    ?C0100?KB_PROCESS
+  541: 			case HID_KEY_O:
+0021CF         ?C0142?KB_PROCESS:
+  542: 				temp = HID_KEY_PAUSE;
+0021CF 904EB0            MOV     DPTR,#temp
+0021D2 7448              MOV     A,#048H
+0021D4 F0                MOVX    @DPTR,A
+  543: 				break;
+0021D5 804E              SJMP    ?C0100?KB_PROCESS
+  544: 			case HID_KEY_J:
+0021D7         ?C0143?KB_PROCESS:
+  545: 				temp = HID_KEY_INSERT;
+0021D7 904EB0            MOV     DPTR,#temp
+0021DA 7449              MOV     A,#049H
+0021DC F0                MOVX    @DPTR,A
+  546: 				break;
+0021DD 8046              SJMP    ?C0100?KB_PROCESS
+  547: 			case HID_KEY_K:
+0021DF         ?C0144?KB_PROCESS:
+  548: 				temp = HID_KEY_HOME;
+0021DF 904EB0            MOV     DPTR,#temp
+0021E2 744A              MOV     A,#04AH
+0021E4 F0                MOVX    @DPTR,A
+  549: 				break;
+0021E5 803E              SJMP    ?C0100?KB_PROCESS
+  550: 			case HID_KEY_L:
+0021E7         ?C0145?KB_PROCESS:
+  551: 				temp = HID_KEY_PAGE_UP;
+0021E7 904EB0            MOV     DPTR,#temp
+0021EA 744B              MOV     A,#04BH
+0021EC F0                MOVX    @DPTR,A
+  552: 				break;
+0021ED 8036              SJMP    ?C0100?KB_PROCESS
+  553: 			case HID_KEY_M:
+0021EF         ?C0146?KB_PROCESS:
+  554: 				temp = HID_KEY_DELETE;
+0021EF 904EB0            MOV     DPTR,#temp
+0021F2 744C              MOV     A,#04CH
+0021F4 F0                MOVX    @DPTR,A
+  555: 				break;
+0021F5 802E              SJMP    ?C0100?KB_PROCESS
+  556: 			case HID_KEY_LESS_THAN:
+0021F7         ?C0147?KB_PROCESS:
+  557: 				temp = HID_KEY_END;
+0021F7 904EB0            MOV     DPTR,#temp
+0021FA 744D              MOV     A,#04DH
+0021FC F0                MOVX    @DPTR,A
+  558: 				break;
+0021FD 8026              SJMP    ?C0100?KB_PROCESS
+  559: 			case HID_KEY_GREAT_THAN:
+0021FF         ?C0148?KB_PROCESS:
+  560: 				temp = HID_KEY_PAGE_DOWN;
+0021FF 904EB0            MOV     DPTR,#temp
+002202 744E              MOV     A,#04EH
+002204 F0                MOVX    @DPTR,A
+  561: 				break;
+002205 801E              SJMP    ?C0100?KB_PROCESS
+  562: 			case HID_KEY_SLASH:
+002207         ?C0149?KB_PROCESS:
+  563: 				temp = HID_KEY_UP_ARROW;
+002207 904EB0            MOV     DPTR,#temp
+00220A 7452              MOV     A,#052H
+00220C F0                MOVX    @DPTR,A
+  564: 				break;
+00220D 8016              SJMP    ?C0100?KB_PROCESS
+  565: 			case HID_KEY_RIGHT_CTL:
+00220F         ?C0150?KB_PROCESS:
+  566: 				temp = HID_KEY_RIGHT_ARROW;
+00220F 904EB0            MOV     DPTR,#temp
+002212 744F              MOV     A,#04FH
+002214 F0                MOVX    @DPTR,A
+  567: 				break;
+002215 800E              SJMP    ?C0100?KB_PROCESS
+  568: 			case HID_KEY_RIGHT_ALT:
+002217         ?C0151?KB_PROCESS:
+  569: 				temp = HID_KEY_LEFT_ARROW;
+002217 904EB0            MOV     DPTR,#temp
+00221A 7450              MOV     A,#050H
+00221C F0                MOVX    @DPTR,A
+  570: 				break;				
+00221D 8006              SJMP    ?C0100?KB_PROCESS
+  571: 			case HID_KEY_APP:
+00221F         ?C0152?KB_PROCESS:
+  572: 				temp = HID_KEY_DOWN_ARROW;
+00221F 904EB0            MOV     DPTR,#temp
+002222 7451              MOV     A,#051H
+002224 F0                MOVX    @DPTR,A
+  573: 				break;	
+  574: 			default :
+  575: 				break;
+  576: 		}
+  577: 	}
+002225         ?C0100?KB_PROCESS:
+  578: 
+  579: 	if(g_variable.system_win_app_lock_flag)
+002225 904CF9            MOV     DPTR,#g_variable+03AH
+002228 E0                MOVX    A,@DPTR
+002229 6017              JZ      ?C0154?KB_PROCESS
+  580: 	{
+  581: 		if((temp == HID_KEY_APP) || (temp == HID_KEY_LEFT_GUI) ||(temp == HID_KEY_RIGHT_GUI))
+00222B 904EB0            MOV     DPTR,#temp
+00222E E0                MOVX    A,@DPTR
+00222F FF                MOV     R7,A
+002230 6465              XRL     A,#065H
+002232 6009              JZ      ?C0156?KB_PROCESS
+002234 EF                MOV     A,R7
+002235 64E3              XRL     A,#0E3H
+002237 6004              JZ      ?C0156?KB_PROCESS
+002239 EF                MOV     A,R7
+00223A B4E705            CJNE    A,#0E7H,?C0154?KB_PROCESS
+00223D         ?C0156?KB_PROCESS:
+  582: 			temp = HID_KEY_NULL;
+00223D E4                CLR     A
+00223E 904EB0            MOV     DPTR,#temp
+002241 F0                MOVX    @DPTR,A
+  583: 	}
+002242         ?C0154?KB_PROCESS:
+  584: 
+  585: 
+  586: 
+  587: 	return temp;
+002242 904EB0            MOV     DPTR,#temp
+002245 E0                MOVX    A,@DPTR
+002246 FF                MOV     R7,A
+  588: }
+002247 22                RET     
+----- FUNCTION _key_fn_function (END) -------
+
+
+----- FUNCTION ksRawInitialize (BEGIN) -----
+ FILE: 'keyscan.c'
+  136: static void ksRawInitialize()
+  137: {
+  138: 	byte i = 0;
+  139: 	
+002248 E4                CLR     A
+002249 904EB2            MOV     DPTR,#i
+00224C F0                MOVX    @DPTR,A
+  140: 	for (i=0; i<8; i++) {
+00224D F0                MOVX    @DPTR,A
+00224E         ?C0035?KEYSCAN:
+00224E 904EB2            MOV     DPTR,#i
+002251 E0                MOVX    A,@DPTR
+002252 FF                MOV     R7,A
+002253 C3                CLR     C
+002254 9408              SUBB    A,#08H
+002256 500C              JNC     ?C0038?KEYSCAN
+  141: 		GPIO_SetInput(i, 0);
+002258 C205              CLR     ?_GPIO_SetInput?BIT
+00225A 518E              ACALL   _GPIO_SetInput
+  142: 	}
+00225C 904EB2            MOV     DPTR,#i
+00225F E0                MOVX    A,@DPTR
+002260 04                INC     A
+002261 F0                MOVX    @DPTR,A
+002262 80EA              SJMP    ?C0035?KEYSCAN
+  143: }
+002264         ?C0038?KEYSCAN:
+002264 22                RET     
+----- FUNCTION ksRawInitialize (END) -------
+
+
+----- FUNCTION KS_Initialize (BEGIN) -----
+ FILE: 'keyscan.c'
+  153: void KS_Initialize()
+  154: {
+  155: 	REG_GPIO_SELECT(0) = 0;
+  156: 	REG_GPIO_SELECT(1) = 0;
+002265 908080            MOV     DPTR,#08080H
+002268 E4                CLR     A
+002269 F0                MOVX    @DPTR,A
+  157: 	REG_GPIO_SELECT(2) = 0;
+00226A A3                INC     DPTR
+00226B F0                MOVX    @DPTR,A
+  158: 	ksRawInitialize();
+00226C A3                INC     DPTR
+00226D F0                MOVX    @DPTR,A
+  159: 	ksColInitialize();
+00226E 5148              ACALL   ksRawInitialize
+;----                  JMP     ksColInitialize
+  160: }
+----- FUNCTION KS_Initialize (END) -------
+
+
+----- FUNCTION ksColInitialize (BEGIN) -----
+ FILE: 'keyscan.c'
+  145: static void ksColInitialize()
+  146: {
+  147: 	byte i = 0;
+  148: 	for (i=0; col[i]!=0; i++) {
+002270 E4                CLR     A
+002271 904EB3            MOV     DPTR,#i
+002274 F0                MOVX    @DPTR,A
+  149: 		GPIO_SetInput(col[i], 0);
+002275 F0                MOVX    @DPTR,A
+002276         ?C0039?KEYSCAN:
+002276 904EB3            MOV     DPTR,#i
+002279 E0                MOVX    A,@DPTR
+00227A 900687            MOV     DPTR,#col
+00227D 93                MOVC    A,@A+DPTR
+00227E FF                MOV     R7,A
+00227F 600C              JZ      ?C0042?KEYSCAN
+  150: 	}
+002281 C205              CLR     ?_GPIO_SetInput?BIT
+002283 518E              ACALL   _GPIO_SetInput
+  151: }
+002285 904EB3            MOV     DPTR,#i
+002288 E0                MOVX    A,@DPTR
+002289 04                INC     A
+00228A F0                MOVX    @DPTR,A
+00228B 80E9              SJMP    ?C0039?KEYSCAN
+  152: 
+00228D         ?C0042?KEYSCAN:
+00228D 22                RET     
+----- FUNCTION ksColInitialize (END) -------
+
+
+----- FUNCTION _GPIO_SetInput (BEGIN) -----
+;---- Variable 'gpio_num' assigned to Register 'R4' ----
+00228E AC07              MOV     R4,AR7
+002290 EC                MOV     A,R4
+002291 F4                CPL     A
+002292 6017              JZ      ?C0015?GPIO
+002294         ?C0014?GPIO:
+002294 AF04              MOV     R7,AR4
+002296 A205              MOV     C,st
+002298 9203              MOV     ?_GPIO_SetPd?BIT,C
+00229A 51BD              ACALL   _GPIO_SetPd
+00229C AF04              MOV     R7,AR4
+00229E A205              MOV     C,st
+0022A0 B3                CPL     C
+0022A1 9202              MOV     ?_GPIO_SetPu?BIT,C
+0022A3 51AC              ACALL   _GPIO_SetPu
+0022A5 AF04              MOV     R7,AR4
+0022A7 C204              CLR     ?_GPIO_Setoe?BIT
+0022A9 51CE              ACALL   _GPIO_Setoe
+0022AB         ?C0015?GPIO:
+0022AB 22                RET     
+----- FUNCTION _GPIO_SetInput (END) -------
+
+
+----- FUNCTION _GPIO_SetPu (BEGIN) -----
+;---- Variable 'gpio_num' assigned to Register 'R7' ----
+0022AC EF                MOV     A,R7
+0022AD F4                CPL     A
+0022AE 600C              JZ      ?C0009?GPIO
+0022B0         ?C0008?GPIO:
+0022B0 7B01              MOV     R3,#01H
+0022B2 7A80              MOV     R2,#080H
+0022B4 7978              MOV     R1,#078H
+0022B6 A202              MOV     C,bit_val
+0022B8 9200              MOV     ?_gpioSetBit?BIT,C
+0022BA 51DF              ACALL   _gpioSetBit
+0022BC         ?C0009?GPIO:
+0022BC 22                RET     
+----- FUNCTION _GPIO_SetPu (END) -------
+
+
+----- FUNCTION _GPIO_SetPd (BEGIN) -----
+;---- Variable 'gpio_num' assigned to Register 'R7' ----
+0022BD EF                MOV     A,R7
+0022BE F4                CPL     A
+0022BF 600C              JZ      ?C0011?GPIO
+0022C1         ?C0010?GPIO:
+0022C1 7B01              MOV     R3,#01H
+0022C3 7A80              MOV     R2,#080H
+0022C5 797C              MOV     R1,#07CH
+0022C7 A203              MOV     C,bit_val
+0022C9 9200              MOV     ?_gpioSetBit?BIT,C
+0022CB 51DF              ACALL   _gpioSetBit
+0022CD         ?C0011?GPIO:
+0022CD 22                RET     
+----- FUNCTION _GPIO_SetPd (END) -------
+
+
+----- FUNCTION _GPIO_Setoe (BEGIN) -----
+;---- Variable 'gpio_num' assigned to Register 'R7' ----
+0022CE EF                MOV     A,R7
+0022CF F4                CPL     A
+0022D0 600C              JZ      ?C0013?GPIO
+0022D2         ?C0012?GPIO:
+0022D2 7B01              MOV     R3,#01H
+0022D4 7A80              MOV     R2,#080H
+0022D6 7970              MOV     R1,#070H
+0022D8 A204              MOV     C,bit_val
+0022DA 9200              MOV     ?_gpioSetBit?BIT,C
+0022DC 51DF              ACALL   _gpioSetBit
+0022DE         ?C0013?GPIO:
+0022DE 22                RET     
+----- FUNCTION _GPIO_Setoe (END) -------
+
+
+----- FUNCTION _gpioSetBit (BEGIN) -----
+0022DF 904EA6            MOV     DPTR,#reg_base
+0022E2 EB                MOV     A,R3
+0022E3 F0                MOVX    @DPTR,A
+0022E4 A3                INC     DPTR
+0022E5 EA                MOV     A,R2
+0022E6 F0                MOVX    @DPTR,A
+0022E7 A3                INC     DPTR
+0022E8 E9                MOV     A,R1
+0022E9 F0                MOVX    @DPTR,A
+;---- Variable 'gpio_num' assigned to Register 'R7' ----
+;---- Variable 'queue' assigned to Register 'R6' ----
+0022EA E4                CLR     A
+0022EB FE                MOV     R6,A
+;---- Variable 'group' assigned to Register 'R5' ----
+0022EC FD                MOV     R5,A
+0022ED EF                MOV     A,R7
+0022EE 5407              ANL     A,#07H
+0022F0 FE                MOV     R6,A
+0022F1 EF                MOV     A,R7
+0022F2 13                RRC     A
+0022F3 13                RRC     A
+0022F4 13                RRC     A
+0022F5 5403              ANL     A,#03H
+0022F7 FD                MOV     R5,A
+0022F8 300022            JNB     bit_val,?C0001?GPIO
+0022FB 904EA6            MOV     DPTR,#reg_base
+0022FE E0                MOVX    A,@DPTR
+0022FF FB                MOV     R3,A
+002300 A3                INC     DPTR
+002301 E0                MOVX    A,@DPTR
+002302 FA                MOV     R2,A
+002303 A3                INC     DPTR
+002304 E0                MOVX    A,@DPTR
+002305 2D                ADD     A,R5
+002306 F9                MOV     R1,A
+002307 E4                CLR     A
+002308 3A                ADDC    A,R2
+002309 FA                MOV     R2,A
+00230A 1203B6            LCALL   ?C?CLDPTR
+00230D FF                MOV     R7,A
+00230E 7401              MOV     A,#01H
+002310 A806              MOV     R0,AR6
+002312 08                INC     R0
+002313 8002              SJMP    ?C0031?GPIO
+002315         ?C0030?GPIO:
+002315 C3                CLR     C
+002316 33                RLC     A
+002317         ?C0031?GPIO:
+002317 D8FC              DJNZ    R0,?C0030?GPIO
+002319 4F                ORL     A,R7
+00231A 0203FC            LJMP    ?C?CSTPTR
+00231D         ?C0001?GPIO:
+00231D 904EA6            MOV     DPTR,#reg_base
+002320 E0                MOVX    A,@DPTR
+002321 FB                MOV     R3,A
+002322 A3                INC     DPTR
+002323 E0                MOVX    A,@DPTR
+002324 FA                MOV     R2,A
+002325 A3                INC     DPTR
+002326 E0                MOVX    A,@DPTR
+002327 2D                ADD     A,R5
+002328 F9                MOV     R1,A
+002329 E4                CLR     A
+00232A 3A                ADDC    A,R2
+00232B FA                MOV     R2,A
+00232C 1203B6            LCALL   ?C?CLDPTR
+00232F FF                MOV     R7,A
+002330 7401              MOV     A,#01H
+002332 A806              MOV     R0,AR6
+002334 08                INC     R0
+002335 8002              SJMP    ?C0033?GPIO
+002337         ?C0032?GPIO:
+002337 C3                CLR     C
+002338 33                RLC     A
+002339         ?C0033?GPIO:
+002339 D8FC              DJNZ    R0,?C0032?GPIO
+00233B F4                CPL     A
+00233C 5F                ANL     A,R7
+00233D 0203FC            LJMP    ?C?CSTPTR
+----- FUNCTION _gpioSetBit (END) -------
+
+
+----- FUNCTION KS_Unistall (BEGIN) -----
+ FILE: 'keyscan.c'
+  162: void KS_Unistall()
+  163: {
+  164: 	byte i = 0;
+  165: 	byte temp = 0;
+;---- Variable 'i' assigned to Register 'R7' ----
+002340 E4                CLR     A
+002341 FF                MOV     R7,A
+  166: 	byte tgroup = 0;
+002342 904EB4            MOV     DPTR,#temp
+002345 F0                MOVX    @DPTR,A
+  167: 	byte tgpionum = 0;
+;---- Variable 'tgroup' assigned to Register 'R6' ----
+002346 FE                MOV     R6,A
+  168: 	for (i=0; col[i]!=0; i++) {
+;---- Variable 'tgpionum' assigned to Register 'R5' ----
+002347 FD                MOV     R5,A
+  169: 		tgroup = col[i]  >> 3;
+002348         ?C0044?KEYSCAN:
+002348 EF                MOV     A,R7
+002349 900687            MOV     DPTR,#col
+00234C 93                MOVC    A,@A+DPTR
+00234D 6049              JZ      ?C0045?KEYSCAN
+  170: 		tgpionum = 1 << (col[i] & 7);
+00234F EF                MOV     A,R7
+002350 93                MOVC    A,@A+DPTR
+002351 FD                MOV     R5,A
+002352 13                RRC     A
+002353 13                RRC     A
+002354 13                RRC     A
+002355 541F              ANL     A,#01FH
+002357 FE                MOV     R6,A
+  171: 		REG_GPIO_PUP (tgroup) &= ~tgpionum;
+002358 ED                MOV     A,R5
+002359 5407              ANL     A,#07H
+00235B FD                MOV     R5,A
+00235C 7401              MOV     A,#01H
+00235E A805              MOV     R0,AR5
+002360 08                INC     R0
+002361 8002              SJMP    ?C0108?KEYSCAN
+002363         ?C0107?KEYSCAN:
+002363 C3                CLR     C
+002364 33                RLC     A
+002365         ?C0108?KEYSCAN:
+002365 D8FC              DJNZ    R0,?C0107?KEYSCAN
+002367 FD                MOV     R5,A
+  172: 		REG_GPIO_OE(tgroup) |= tgpionum;
+002368 EE                MOV     A,R6
+002369 2478              ADD     A,#078H
+00236B FB                MOV     R3,A
+00236C E4                CLR     A
+00236D 3480              ADDC    A,#080H
+00236F 8B82              MOV     DPL,R3
+002371 F583              MOV     DPH,A
+002373 E0                MOVX    A,@DPTR
+002374 FC                MOV     R4,A
+002375 ED                MOV     A,R5
+002376 F4                CPL     A
+002377 FB                MOV     R3,A
+002378 EC                MOV     A,R4
+002379 5B                ANL     A,R3
+00237A F0                MOVX    @DPTR,A
+  173: 		REG_GPIO_OUT(tgroup) &= ~tgpionum;
+00237B EE                MOV     A,R6
+00237C 2470              ADD     A,#070H
+00237E F582              MOV     DPL,A
+002380 E4                CLR     A
+002381 3480              ADDC    A,#080H
+002383 F583              MOV     DPH,A
+002385 E0                MOVX    A,@DPTR
+002386 4D                ORL     A,R5
+002387 F0                MOVX    @DPTR,A
+  174: 	}
+002388 EE                MOV     A,R6
+002389 2474              ADD     A,#074H
+00238B F582              MOV     DPL,A
+00238D E4                CLR     A
+00238E 3480              ADDC    A,#080H
+002390 F583              MOV     DPH,A
+002392 E0                MOVX    A,@DPTR
+002393 5B                ANL     A,R3
+002394 F0                MOVX    @DPTR,A
+  175: 	
+002395 0F                INC     R7
+002396 80B0              SJMP    ?C0044?KEYSCAN
+002398         ?C0045?KEYSCAN:
+  176: 	GPIO_fillpd();
+002398 91D8              ACALL   GPIO_fillpd
+  177: 	
+  178: 	temp = REG_GPIO_IN(0);
+00239A 90811C            MOV     DPTR,#0811CH
+00239D E0                MOVX    A,@DPTR
+00239E 904EB4            MOV     DPTR,#temp
+0023A1 F0                MOVX    @DPTR,A
+  179: 
+  180: 	if(long_press_flag)
+0023A2 904DE4            MOV     DPTR,#long_press_flag
+0023A5 E0                MOVX    A,@DPTR
+0023A6 6020              JZ      ?C0047?KEYSCAN
+  181: 	{
+  182: 		GPIO_SetWakeupByCurrentState(0);
+0023A8 E4                CLR     A
+0023A9 FF                MOV     R7,A
+0023AA 71D8              ACALL   _GPIO_SetWakeupByCurrentState
+  183: 		GPIO_SetWakeupByCurrentState(1);
+0023AC 7F01              MOV     R7,#01H
+0023AE 71D8              ACALL   _GPIO_SetWakeupByCurrentState
+  184: 		GPIO_SetWakeupByCurrentState(2);
+0023B0 7F02              MOV     R7,#02H
+0023B2 71D8              ACALL   _GPIO_SetWakeupByCurrentState
+  185: 		GPIO_SetWakeupByCurrentState(3);
+0023B4 7F03              MOV     R7,#03H
+0023B6 71D8              ACALL   _GPIO_SetWakeupByCurrentState
+  186: 		GPIO_SetWakeupByCurrentState(4);
+0023B8 7F04              MOV     R7,#04H
+0023BA 71D8              ACALL   _GPIO_SetWakeupByCurrentState
+  187: 		GPIO_SetWakeupByCurrentState(5);
+0023BC 7F05              MOV     R7,#05H
+0023BE 71D8              ACALL   _GPIO_SetWakeupByCurrentState
+  188: 		GPIO_SetWakeupByCurrentState(6);
+0023C0 7F06              MOV     R7,#06H
+0023C2 71D8              ACALL   _GPIO_SetWakeupByCurrentState
+  189: 		GPIO_SetWakeupByCurrentState(7);
+0023C4 7F07              MOV     R7,#07H
+0023C6 8010              SJMP    _GPIO_SetWakeupByCurrentState
+  190: 	}
+0023C8         ?C0047?KEYSCAN:
+  191: 	else
+  192: 	{
+  193: 		YC_GPIOWakeupL[0] = temp;
+0023C8 904EB4            MOV     DPTR,#temp
+0023CB E0                MOVX    A,@DPTR
+0023CC FF                MOV     R7,A
+0023CD 9000A3            MOV     DPTR,#YC_GPIOWakeupL
+0023D0 F0                MOVX    @DPTR,A
+  194: 		YC_GPIOWakeupH[0] = ~temp;
+0023D1 EF                MOV     A,R7
+0023D2 F4                CPL     A
+0023D3 9000A7            MOV     DPTR,#YC_GPIOWakeupH
+0023D6 F0                MOVX    @DPTR,A
+  195: 	}
+  196: 
+  197: }
+0023D7 22                RET     
+----- FUNCTION KS_Unistall (END) -------
+
+
+----- FUNCTION _GPIO_SetWakeupByCurrentState (BEGIN) -----
+0023D8 904EB8            MOV     DPTR,#gpio_num
+0023DB EF                MOV     A,R7
+0023DC F0                MOVX    @DPTR,A
+0023DD 9177              ACALL   _GPIO_GetInputStatus
+0023DF 9208              MOV     st,C
+0023E1 904EB8            MOV     DPTR,#gpio_num
+0023E4 E0                MOVX    A,@DPTR
+0023E5 FF                MOV     R7,A
+0023E6 A208              MOV     C,st
+0023E8 B3                CPL     C
+0023E9 9207              MOV     ?_GPIO_SetWakeup?BIT,C
+;----                  JMP     _GPIO_SetWakeup
+----- FUNCTION _GPIO_SetWakeupByCurrentState (END) -------
+
+
+----- FUNCTION _GPIO_SetWakeup (BEGIN) -----
+;---- Variable 'gpio_num' assigned to Register 'R7' ----
+0023EB EF                MOV     A,R7
+0023EC F4                CPL     A
+0023ED 7002              JNZ     $ + 4H
+0023EF 8176              AJMP    ?C0019?GPIO
+0023F1         ?C0018?GPIO:
+0023F1 EF                MOV     A,R7
+0023F2 5407              ANL     A,#07H
+0023F4 FE                MOV     R6,A
+;---- Variable 'queue' assigned to Register 'R6' ----
+0023F5 EF                MOV     A,R7
+0023F6 13                RRC     A
+0023F7 13                RRC     A
+0023F8 13                RRC     A
+0023F9 5403              ANL     A,#03H
+0023FB FF                MOV     R7,A
+;---- Variable 'group' assigned to Register 'R7' ----
+0023FC 300743            JNB     st,?C0020?GPIO
+0023FF 24A3              ADD     A,#LOW YC_GPIOWakeupL
+002401 F582              MOV     DPL,A
+002403 E4                CLR     A
+002404 3400              ADDC    A,#HIGH YC_GPIOWakeupL
+002406 F583              MOV     DPH,A
+002408 C083              PUSH    DPH
+00240A C082              PUSH    DPL
+00240C E0                MOVX    A,@DPTR
+00240D FD                MOV     R5,A
+00240E 7401              MOV     A,#01H
+002410 A806              MOV     R0,AR6
+002412 08                INC     R0
+002413 8002              SJMP    ?C0037?GPIO
+002415         ?C0036?GPIO:
+002415 C3                CLR     C
+002416 33                RLC     A
+002417         ?C0037?GPIO:
+002417 D8FC              DJNZ    R0,?C0036?GPIO
+002419 F4                CPL     A
+00241A 5D                ANL     A,R5
+00241B D082              POP     DPL
+00241D D083              POP     DPH
+00241F F0                MOVX    @DPTR,A
+002420 74A7              MOV     A,#LOW YC_GPIOWakeupH
+002422 2F                ADD     A,R7
+002423 F582              MOV     DPL,A
+002425 E4                CLR     A
+002426 3400              ADDC    A,#HIGH YC_GPIOWakeupH
+002428 F583              MOV     DPH,A
+00242A C083              PUSH    DPH
+00242C C082              PUSH    DPL
+00242E E0                MOVX    A,@DPTR
+00242F FF                MOV     R7,A
+002430 7401              MOV     A,#01H
+002432 A806              MOV     R0,AR6
+002434 08                INC     R0
+002435 8002              SJMP    ?C0039?GPIO
+002437         ?C0038?GPIO:
+002437 C3                CLR     C
+002438 33                RLC     A
+002439         ?C0039?GPIO:
+002439 D8FC              DJNZ    R0,?C0038?GPIO
+00243B 4F                ORL     A,R7
+00243C D082              POP     DPL
+00243E D083              POP     DPH
+002440 F0                MOVX    @DPTR,A
+002441 22                RET     
+002442         ?C0020?GPIO:
+002442 74A3              MOV     A,#LOW YC_GPIOWakeupL
+002444 2F                ADD     A,R7
+002445 F582              MOV     DPL,A
+002447 E4                CLR     A
+002448 3400              ADDC    A,#HIGH YC_GPIOWakeupL
+00244A F583              MOV     DPH,A
+00244C C083              PUSH    DPH
+00244E C082              PUSH    DPL
+002450 E0                MOVX    A,@DPTR
+002451 FD                MOV     R5,A
+002452 7401              MOV     A,#01H
+002454 A806              MOV     R0,AR6
+002456 08                INC     R0
+002457 8002              SJMP    ?C0041?GPIO
+002459         ?C0040?GPIO:
+002459 C3                CLR     C
+00245A 33                RLC     A
+00245B         ?C0041?GPIO:
+00245B D8FC              DJNZ    R0,?C0040?GPIO
+00245D FC                MOV     R4,A
+00245E 4D                ORL     A,R5
+00245F D082              POP     DPL
+002461 D083              POP     DPH
+002463 F0                MOVX    @DPTR,A
+002464 74A7              MOV     A,#LOW YC_GPIOWakeupH
+002466 2F                ADD     A,R7
+002467 F582              MOV     DPL,A
+002469 E4                CLR     A
+00246A 3400              ADDC    A,#HIGH YC_GPIOWakeupH
+00246C F583              MOV     DPH,A
+00246E E0                MOVX    A,@DPTR
+00246F FF                MOV     R7,A
+002470 EC                MOV     A,R4
+002471 F4                CPL     A
+002472 FE                MOV     R6,A
+002473 EF                MOV     A,R7
+002474 5E                ANL     A,R6
+002475 F0                MOVX    @DPTR,A
+002476         ?C0019?GPIO:
+002476 22                RET     
+----- FUNCTION _GPIO_SetWakeup (END) -------
+
+
+----- FUNCTION _GPIO_GetInputStatus (BEGIN) -----
+;---- Variable 'gpio_num' assigned to Register 'R7' ----
+002477 7B01              MOV     R3,#01H
+002479 7A81              MOV     R2,#081H
+00247B 791C              MOV     R1,#01CH
+;----                  JMP     _gpioGetBit
+----- FUNCTION _GPIO_GetInputStatus (END) -------
+
+
+----- FUNCTION _gpioGetBit (BEGIN) -----
+;---- Variable 'gpio_num' assigned to Register 'R5' ----
+00247D AD07              MOV     R5,AR7
+;---- Variable 'reg_base' assigned to Register 'R1/R2/R3' ----
+00247F E4                CLR     A
+002480 904EB7            MOV     DPTR,#queue
+002483 F0                MOVX    @DPTR,A
+;---- Variable 'group' assigned to Register 'R6' ----
+002484 FE                MOV     R6,A
+002485 EF                MOV     A,R7
+002486 5407              ANL     A,#07H
+002488 F0                MOVX    @DPTR,A
+002489 EF                MOV     A,R7
+00248A 13                RRC     A
+00248B 13                RRC     A
+00248C 13                RRC     A
+00248D 5403              ANL     A,#03H
+00248F FE                MOV     R6,A
+002490 F582              MOV     DPL,A
+002492 758300            MOV     DPH,#00H
+002495 1203CF            LCALL   ?C?CLDOPTR
+002498 FD                MOV     R5,A
+002499 33                RLC     A
+00249A 95E0              SUBB    A,ACC
+00249C FC                MOV     R4,A
+00249D 904EB7            MOV     DPTR,#queue
+0024A0 E0                MOVX    A,@DPTR
+0024A1 FF                MOV     R7,A
+0024A2 7401              MOV     A,#01H
+0024A4 7E00              MOV     R6,#00H
+0024A6 A807              MOV     R0,AR7
+0024A8 08                INC     R0
+0024A9 8005              SJMP    ?C0035?GPIO
+0024AB         ?C0034?GPIO:
+0024AB C3                CLR     C
+0024AC 33                RLC     A
+0024AD CE                XCH     A,R6
+0024AE 33                RLC     A
+0024AF CE                XCH     A,R6
+0024B0         ?C0035?GPIO:
+0024B0 D8F9              DJNZ    R0,?C0034?GPIO
+0024B2 FF                MOV     R7,A
+0024B3 EE                MOV     A,R6
+0024B4 5C                ANL     A,R4
+0024B5 FE                MOV     R6,A
+0024B6 EF                MOV     A,R7
+0024B7 5D                ANL     A,R5
+0024B8 4E                ORL     A,R6
+0024B9 24FF              ADD     A,#0FFH
+0024BB 22                RET     
+----- FUNCTION _gpioGetBit (END) -------
+
+
+----- FUNCTION _GPIO_FlipOutBit (BEGIN) -----
+0024BC 904EB9            MOV     DPTR,#gpio_num
+0024BF EF                MOV     A,R7
+0024C0 F0                MOVX    @DPTR,A
+0024C1 7B01              MOV     R3,#01H
+0024C3 7A80              MOV     R2,#080H
+0024C5 7974              MOV     R1,#074H
+0024C7 917D              ACALL   _gpioGetBit
+0024C9 9209              MOV     st,C
+0024CB 904EB9            MOV     DPTR,#gpio_num
+0024CE E0                MOVX    A,@DPTR
+0024CF FF                MOV     R7,A
+0024D0 A209              MOV     C,st
+0024D2 B3                CPL     C
+0024D3 9201              MOV     ?_GPIO_Setout?BIT,C
+0024D5 0207DE            LJMP    _GPIO_Setout
+----- FUNCTION _GPIO_FlipOutBit (END) -------
+
+
+----- FUNCTION GPIO_fillpd (BEGIN) -----
+;---- Variable 'i' assigned to Register 'R7' ----
+0024D8 E4                CLR     A
+0024D9 FF                MOV     R7,A
+0024DA         ?C0026?GPIO:
+0024DA EF                MOV     A,R7
+0024DB FD                MOV     R5,A
+0024DC 7C00              MOV     R4,#00H
+0024DE 2478              ADD     A,#078H
+0024E0 FB                MOV     R3,A
+0024E1 EC                MOV     A,R4
+0024E2 3480              ADDC    A,#080H
+0024E4 8B82              MOV     DPL,R3
+0024E6 F583              MOV     DPH,A
+0024E8 E0                MOVX    A,@DPTR
+0024E9 FE                MOV     R6,A
+0024EA ED                MOV     A,R5
+0024EB 2470              ADD     A,#070H
+0024ED FD                MOV     R5,A
+0024EE EC                MOV     A,R4
+0024EF 3480              ADDC    A,#080H
+0024F1 8D82              MOV     DPL,R5
+0024F3 F583              MOV     DPH,A
+0024F5 E0                MOVX    A,@DPTR
+0024F6 4E                ORL     A,R6
+0024F7 F4                CPL     A
+0024F8 FE                MOV     R6,A
+0024F9 EF                MOV     A,R7
+0024FA 247C              ADD     A,#07CH
+0024FC FD                MOV     R5,A
+0024FD EC                MOV     A,R4
+0024FE 3480              ADDC    A,#080H
+002500 8D82              MOV     DPL,R5
+002502 F583              MOV     DPH,A
+002504 EE                MOV     A,R6
+002505 F0                MOVX    @DPTR,A
+002506 0F                INC     R7
+002507 EF                MOV     A,R7
+002508 B404CF            CJNE    A,#04H,?C0026?GPIO
+00250B 22                RET     
+----- FUNCTION GPIO_fillpd (END) -------
+
+
+----- FUNCTION KS_ScanMatrix (BEGIN) -----
+ FILE: 'keyscan.c'
+  200: void KS_ScanMatrix()
+  201: {
+  202: 	byte i = 0;
+  203: 	byte j = 0;
+;---- Variable 'i' assigned to Register 'R7' ----
+00250C E4                CLR     A
+00250D FF                MOV     R7,A
+  204: 	byte tgroup = 0;
+00250E 904E94            MOV     DPTR,#j
+002511 F0                MOVX    @DPTR,A
+  205: 	byte tgpionum = 0;
+;---- Variable 'tgroup' assigned to Register 'R6' ----
+002512 FE                MOV     R6,A
+  206: 	byte temp = 0;
+;---- Variable 'tgpionum' assigned to Register 'R5' ----
+002513 FD                MOV     R5,A
+  207: 	byte check = 0;
+002514 A3                INC     DPTR
+002515 F0                MOVX    @DPTR,A
+  208: 	for (i=0; col[i]!=0; i++) {
+002516 A3                INC     DPTR
+002517 F0                MOVX    @DPTR,A
+  209: 		tgroup = col[i]  >> 3;
+002518         ?C0050?KEYSCAN:
+002518 EF                MOV     A,R7
+002519 900687            MOV     DPTR,#col
+00251C 93                MOVC    A,@A+DPTR
+00251D 607C              JZ      ?C0051?KEYSCAN
+  210: 		tgpionum = 1 << (col[i] & 7);
+00251F EF                MOV     A,R7
+002520 93                MOVC    A,@A+DPTR
+002521 FD                MOV     R5,A
+002522 13                RRC     A
+002523 13                RRC     A
+002524 13                RRC     A
+002525 541F              ANL     A,#01FH
+002527 FE                MOV     R6,A
+  211: 		GET_RAW_KEY_SEL(ksSelMapCurr[i], tgroup, tgpionum);
+002528 ED                MOV     A,R5
+002529 5407              ANL     A,#07H
+00252B FD                MOV     R5,A
+00252C 7401              MOV     A,#01H
+00252E A805              MOV     R0,AR5
+002530 08                INC     R0
+002531 8002              SJMP    ?C0110?KEYSCAN
+002533         ?C0109?KEYSCAN:
+002533 C3                CLR     C
+002534 33                RLC     A
+002535         ?C0110?KEYSCAN:
+002535 D8FC              DJNZ    R0,?C0109?KEYSCAN
+002537 FD                MOV     R5,A
+  212: 	}
+002538 EE                MOV     A,R6
+002539 2478              ADD     A,#078H
+00253B FB                MOV     R3,A
+00253C E4                CLR     A
+00253D 3480              ADDC    A,#080H
+00253F 8B82              MOV     DPL,R3
+002541 F583              MOV     DPH,A
+002543 E0                MOVX    A,@DPTR
+002544 FC                MOV     R4,A
+002545 ED                MOV     A,R5
+002546 F4                CPL     A
+002547 FB                MOV     R3,A
+002548 EC                MOV     A,R4
+002549 5B                ANL     A,R3
+00254A F0                MOVX    @DPTR,A
+00254B EE                MOV     A,R6
+00254C 2470              ADD     A,#070H
+00254E F582              MOV     DPL,A
+002550 E4                CLR     A
+002551 3480              ADDC    A,#080H
+002553 F583              MOV     DPH,A
+002555 E0                MOVX    A,@DPTR
+002556 4D                ORL     A,R5
+002557 F0                MOVX    @DPTR,A
+002558 EE                MOV     A,R6
+002559 2474              ADD     A,#074H
+00255B F582              MOV     DPL,A
+00255D E4                CLR     A
+00255E 3480              ADDC    A,#080H
+002560 F583              MOV     DPH,A
+002562 E0                MOVX    A,@DPTR
+002563 5B                ANL     A,R3
+002564 F0                MOVX    @DPTR,A
+002565 90811C            MOV     DPTR,#0811CH
+002568 E0                MOVX    A,@DPTR
+002569 F4                CPL     A
+00256A FC                MOV     R4,A
+00256B 74BC              MOV     A,#LOW ksSelMapCurr
+00256D 2F                ADD     A,R7
+00256E F582              MOV     DPL,A
+002570 E4                CLR     A
+002571 344D              ADDC    A,#HIGH ksSelMapCurr
+002573 F583              MOV     DPH,A
+002575 EC                MOV     A,R4
+002576 F0                MOVX    @DPTR,A
+002577 EE                MOV     A,R6
+002578 2478              ADD     A,#078H
+00257A FB                MOV     R3,A
+00257B E4                CLR     A
+00257C 3480              ADDC    A,#080H
+00257E 8B82              MOV     DPL,R3
+002580 F583              MOV     DPH,A
+002582 E0                MOVX    A,@DPTR
+002583 4D                ORL     A,R5
+002584 F0                MOVX    @DPTR,A
+002585 EE                MOV     A,R6
+002586 2470              ADD     A,#070H
+002588 FB                MOV     R3,A
+002589 E4                CLR     A
+00258A 3480              ADDC    A,#080H
+00258C 8B82              MOV     DPL,R3
+00258E F583              MOV     DPH,A
+002590 E0                MOVX    A,@DPTR
+002591 FC                MOV     R4,A
+002592 ED                MOV     A,R5
+002593 F4                CPL     A
+002594 FB                MOV     R3,A
+002595 EC                MOV     A,R4
+002596 5B                ANL     A,R3
+002597 F0                MOVX    @DPTR,A
+  213: 
+002598 0F                INC     R7
+002599 A118              AJMP    ?C0050?KEYSCAN
+00259B         ?C0051?KEYSCAN:
+  214: 	for (i=0; col[i]!=0; i++) {
+00259B E4                CLR     A
+00259C FF                MOV     R7,A
+00259D         ?C0053?KEYSCAN:
+00259D EF                MOV     A,R7
+00259E 900687            MOV     DPTR,#col
+0025A1 93                MOVC    A,@A+DPTR
+0025A2 607C              JZ      ?C0054?KEYSCAN
+  215: 		tgroup = col[i]  >> 3;
+0025A4 EF                MOV     A,R7
+0025A5 93                MOVC    A,@A+DPTR
+0025A6 FD                MOV     R5,A
+0025A7 13                RRC     A
+0025A8 13                RRC     A
+0025A9 13                RRC     A
+0025AA 541F              ANL     A,#01FH
+0025AC FE                MOV     R6,A
+  216: 		tgpionum = 1 << (col[i] & 7);
+0025AD ED                MOV     A,R5
+0025AE 5407              ANL     A,#07H
+0025B0 FD                MOV     R5,A
+0025B1 7401              MOV     A,#01H
+0025B3 A805              MOV     R0,AR5
+0025B5 08                INC     R0
+0025B6 8002              SJMP    ?C0112?KEYSCAN
+0025B8         ?C0111?KEYSCAN:
+0025B8 C3                CLR     C
+0025B9 33                RLC     A
+0025BA         ?C0112?KEYSCAN:
+0025BA D8FC              DJNZ    R0,?C0111?KEYSCAN
+0025BC FD                MOV     R5,A
+  217: 		GET_RAW_KEY_SEL(ksSelMapCheck[i], tgroup, tgpionum);
+0025BD EE                MOV     A,R6
+0025BE 2478              ADD     A,#078H
+0025C0 FB                MOV     R3,A
+0025C1 E4                CLR     A
+0025C2 3480              ADDC    A,#080H
+0025C4 8B82              MOV     DPL,R3
+0025C6 F583              MOV     DPH,A
+0025C8 E0                MOVX    A,@DPTR
+0025C9 FC                MOV     R4,A
+0025CA ED                MOV     A,R5
+0025CB F4                CPL     A
+0025CC FB                MOV     R3,A
+0025CD EC                MOV     A,R4
+0025CE 5B                ANL     A,R3
+0025CF F0                MOVX    @DPTR,A
+0025D0 EE                MOV     A,R6
+0025D1 2470              ADD     A,#070H
+0025D3 F582              MOV     DPL,A
+0025D5 E4                CLR     A
+0025D6 3480              ADDC    A,#080H
+0025D8 F583              MOV     DPH,A
+0025DA E0                MOVX    A,@DPTR
+0025DB 4D                ORL     A,R5
+0025DC F0                MOVX    @DPTR,A
+0025DD EE                MOV     A,R6
+0025DE 2474              ADD     A,#074H
+0025E0 F582              MOV     DPL,A
+0025E2 E4                CLR     A
+0025E3 3480              ADDC    A,#080H
+0025E5 F583              MOV     DPH,A
+0025E7 E0                MOVX    A,@DPTR
+0025E8 5B                ANL     A,R3
+0025E9 F0                MOVX    @DPTR,A
+0025EA 90811C            MOV     DPTR,#0811CH
+0025ED E0                MOVX    A,@DPTR
+0025EE F4                CPL     A
+0025EF FC                MOV     R4,A
+0025F0 74A8              MOV     A,#LOW ksSelMapCheck
+0025F2 2F                ADD     A,R7
+0025F3 F582              MOV     DPL,A
+0025F5 E4                CLR     A
+0025F6 344D              ADDC    A,#HIGH ksSelMapCheck
+0025F8 F583              MOV     DPH,A
+0025FA EC                MOV     A,R4
+0025FB F0                MOVX    @DPTR,A
+0025FC EE                MOV     A,R6
+0025FD 2478              ADD     A,#078H
+0025FF FB                MOV     R3,A
+002600 E4                CLR     A
+002601 3480              ADDC    A,#080H
+002603 8B82              MOV     DPL,R3
+002605 F583              MOV     DPH,A
+002607 E0                MOVX    A,@DPTR
+002608 4D                ORL     A,R5
+002609 F0                MOVX    @DPTR,A
+00260A EE                MOV     A,R6
+00260B 2470              ADD     A,#070H
+00260D FB                MOV     R3,A
+00260E E4                CLR     A
+00260F 3480              ADDC    A,#080H
+002611 8B82              MOV     DPL,R3
+002613 F583              MOV     DPH,A
+002615 E0                MOVX    A,@DPTR
+002616 FC                MOV     R4,A
+002617 ED                MOV     A,R5
+002618 F4                CPL     A
+002619 FB                MOV     R3,A
+00261A EC                MOV     A,R4
+00261B 5B                ANL     A,R3
+00261C F0                MOVX    @DPTR,A
+  218: 	}
+00261D 0F                INC     R7
+00261E A19D              AJMP    ?C0053?KEYSCAN
+002620         ?C0054?KEYSCAN:
+  219: 
+  220: 	for (i=0; col[i]!=0; i++) {
+002620 E4                CLR     A
+002621 FF                MOV     R7,A
+002622         ?C0056?KEYSCAN:
+002622 EF                MOV     A,R7
+002623 900687            MOV     DPTR,#col
+002626 93                MOVC    A,@A+DPTR
+002627 6040              JZ      ?C0060?KEYSCAN
+  221: 		if (ksSelMapCheck[i]!=ksSelMapCurr[i]) {
+002629 74BC              MOV     A,#LOW ksSelMapCurr
+00262B 2F                ADD     A,R7
+00262C F582              MOV     DPL,A
+00262E E4                CLR     A
+00262F 344D              ADDC    A,#HIGH ksSelMapCurr
+002631 F583              MOV     DPH,A
+002633 E0                MOVX    A,@DPTR
+002634 FE                MOV     R6,A
+002635 74A8              MOV     A,#LOW ksSelMapCheck
+002637 2F                ADD     A,R7
+002638 F582              MOV     DPL,A
+00263A E4                CLR     A
+00263B 344D              ADDC    A,#HIGH ksSelMapCheck
+00263D F583              MOV     DPH,A
+00263F E0                MOVX    A,@DPTR
+002640 6E                XRL     A,R6
+002641 6023              JZ      ?C0058?KEYSCAN
+  222: 			ksSelMapCurr[i] &= ksSelMapCheck[i];
+002643 74BC              MOV     A,#LOW ksSelMapCurr
+002645 2F                ADD     A,R7
+002646 F582              MOV     DPL,A
+002648 E4                CLR     A
+002649 344D              ADDC    A,#HIGH ksSelMapCurr
+00264B F583              MOV     DPH,A
+00264D C083              PUSH    DPH
+00264F C082              PUSH    DPL
+002651 E0                MOVX    A,@DPTR
+002652 FE                MOV     R6,A
+002653 74A8              MOV     A,#LOW ksSelMapCheck
+002655 2F                ADD     A,R7
+002656 F582              MOV     DPL,A
+002658 E4                CLR     A
+002659 344D              ADDC    A,#HIGH ksSelMapCheck
+00265B F583              MOV     DPH,A
+00265D E0                MOVX    A,@DPTR
+00265E FD                MOV     R5,A
+00265F EE                MOV     A,R6
+002660 5D                ANL     A,R5
+002661 D082              POP     DPL
+002663 D083              POP     DPH
+002665 F0                MOVX    @DPTR,A
+  223: 		}
+  224: 	}
+002666         ?C0058?KEYSCAN:
+002666 0F                INC     R7
+002667 80B9              SJMP    ?C0056?KEYSCAN
+  225: }
+002669         ?C0060?KEYSCAN:
+002669 22                RET     
+----- FUNCTION KS_ScanMatrix (END) -------
+
+
+----- FUNCTION LED_backlight_breath (BEGIN) -----
+ FILE: 'led.c'
+   95: void LED_backlight_breath()
+   96: {
+   97: #ifdef PWM_ENABLE
+   98: 	if(m_customize_timer_last != m_customize_timer)
+00266A 904D52            MOV     DPTR,#m_customize_timer
+00266D E0                MOVX    A,@DPTR
+00266E FF                MOV     R7,A
+00266F 904DEC            MOV     DPTR,#m_customize_timer_last
+002672 E0                MOVX    A,@DPTR
+002673 6F                XRL     A,R7
+002674 7002              JNZ     $ + 4H
+002676 C1F9              AJMP    ?C0022?LED
+   99: 	{
+  100: 		m_customize_timer_last = m_customize_timer;
+002678 904D52            MOV     DPTR,#m_customize_timer
+00267B E0                MOVX    A,@DPTR
+00267C 904DEC            MOV     DPTR,#m_customize_timer_last
+00267F F0                MOVX    @DPTR,A
+  101: 		if((g_variable.battery_status != BAT_STATUS_NONE))
+002680 904CD5            MOV     DPTR,#g_variable+016H
+002683 E0                MOVX    A,@DPTR
+002684 6010              JZ      ?C0021?LED
+  102: 		{
+  103: 			YC_PWM_disable();
+002686 120F56            LCALL   YC_PWM_disable
+  104: 			LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+002689 E4                CLR     A
+00268A 904E79            MOV     DPTR,#?_LED_device_line_control?BYTE+03H
+00268D F0                MOVX    @DPTR,A
+00268E A3                INC     DPTR
+00268F F0                MOVX    @DPTR,A
+002690 FB                MOV     R3,A
+002691 FD                MOV     R5,A
+002692 FF                MOV     R7,A
+002693 020B21            LJMP    _LED_device_line_control
+  105: 			return;
+  106: 		}
+002696         ?C0021?LED:
+  107: 
+  108: 		
+  109: 		if(g_variable.backlight_level == BACKLIGHT_BREATH)
+002696 904CFD            MOV     DPTR,#g_variable+03EH
+002699 E0                MOVX    A,@DPTR
+00269A 6401              XRL     A,#01H
+00269C 7054              JNZ     ?C0023?LED
+  110: 		{
+  111: 			if(g_variable.backlight_breathe_flag)
+00269E 904D04            MOV     DPTR,#g_variable+045H
+0026A1 E0                MOVX    A,@DPTR
+0026A2 6015              JZ      ?C0024?LED
+  112: 			{
+  113: 				if(g_variable.backlight_breathe_step < 85)
+0026A4 904D03            MOV     DPTR,#g_variable+044H
+0026A7 E0                MOVX    A,@DPTR
+0026A8 C3                CLR     C
+0026A9 9455              SUBB    A,#055H
+0026AB 5005              JNC     ?C0025?LED
+  114: 					g_variable.backlight_breathe_step++;
+0026AD E0                MOVX    A,@DPTR
+0026AE 04                INC     A
+0026AF F0                MOVX    @DPTR,A
+0026B0 801B              SJMP    ?C0027?LED
+0026B2         ?C0025?LED:
+  115: 				else
+  116: 				{
+  117: 					g_variable.backlight_breathe_flag = 0;
+0026B2 E4                CLR     A
+0026B3 904D04            MOV     DPTR,#g_variable+045H
+0026B6 F0                MOVX    @DPTR,A
+  118: 				}
+  119: 			}
+0026B7 8014              SJMP    ?C0027?LED
+0026B9         ?C0024?LED:
+  120: 			else
+  121: 			{
+  122: 				if(g_variable.backlight_breathe_step > 5)
+0026B9 904D03            MOV     DPTR,#g_variable+044H
+0026BC E0                MOVX    A,@DPTR
+0026BD D3                SETB    C
+0026BE 9405              SUBB    A,#05H
+0026C0 4005              JC      ?C0028?LED
+  123: 					g_variable.backlight_breathe_step--;
+0026C2 E0                MOVX    A,@DPTR
+0026C3 14                DEC     A
+0026C4 F0                MOVX    @DPTR,A
+0026C5 8006              SJMP    ?C0027?LED
+0026C7         ?C0028?LED:
+  124: 				else
+  125: 				{
+  126: 					g_variable.backlight_breathe_flag = 1;
+0026C7 904D04            MOV     DPTR,#g_variable+045H
+0026CA 7401              MOV     A,#01H
+0026CC F0                MOVX    @DPTR,A
+  127: 				}
+  128: 
+  129: 			}
+0026CD         ?C0027?LED:
+  130: 			m_lpm_mode = 0;
+0026CD E4                CLR     A
+0026CE 904131            MOV     DPTR,#m_lpm_mode
+0026D1 F0                MOVX    @DPTR,A
+  131: 			g_variable.pwm_lpm_mode_flag = 1;
+0026D2 904CFA            MOV     DPTR,#g_variable+03BH
+0026D5 04                INC     A
+0026D6 F0                MOVX    @DPTR,A
+  132: 
+  133: 			YC_PWM_init();
+0026D7 F172              ACALL   YC_PWM_init
+  134: 			REG_PWM_PCOUNT(0) = g_variable.backlight_breathe_step;
+0026D9 904D03            MOV     DPTR,#g_variable+044H
+0026DC E0                MOVX    A,@DPTR
+0026DD FF                MOV     R7,A
+0026DE 9080A0            MOV     DPTR,#080A0H
+0026E1 F0                MOVX    @DPTR,A
+  135: 			REG_PWM_NCOUNT(0) = (100 - g_variable.backlight_breathe_step );
+0026E2 C3                CLR     C
+0026E3 7464              MOV     A,#064H
+0026E5 9F                SUBB    A,R7
+0026E6 9080A2            MOV     DPTR,#080A2H
+0026E9 F0                MOVX    @DPTR,A
+  136: 		
+  137: 			REG_PWM_ENABLE |= 0x40;
+0026EA 908085            MOV     DPTR,#08085H
+0026ED E0                MOVX    A,@DPTR
+0026EE 4440              ORL     A,#040H
+0026F0 F0                MOVX    @DPTR,A
+  138: 		}
+0026F1 22                RET     
+0026F2         ?C0023?LED:
+  139: 		else
+  140: 		{
+  141: 			YC_PWM_set_duty(g_variable.backlight_duty_level);	
+0026F2 904D02            MOV     DPTR,#g_variable+043H
+0026F5 E0                MOVX    A,@DPTR
+0026F6 FF                MOV     R7,A
+0026F7 D1FA              ACALL   _YC_PWM_set_duty
+  142: 		}
+  143: 	}
+  144: #endif	
+  145: 
+  146: 
+  147: }
+0026F9         ?C0022?LED:
+0026F9 22                RET     
+----- FUNCTION LED_backlight_breath (END) -------
+
+
+----- FUNCTION _YC_PWM_set_duty (BEGIN) -----
+ FILE: 'pwm.c'
+   17: void YC_PWM_set_duty(byte pwm_duty_level)
+   18: {
+0026FA 904E9A            MOV     DPTR,#pwm_duty_level
+0026FD EF                MOV     A,R7
+0026FE F0                MOVX    @DPTR,A
+   19: 	word pwm_duty;
+   20: 
+   21: 	if((pwm_duty_level == BACKLIGHT_DUTY_LEVEL_00)||(g_variable.battery_status != BAT_STATUS_NONE))
+0026FF 6006              JZ      ?C0003?PWM
+002701 904CD5            MOV     DPTR,#g_variable+016H
+002704 E0                MOVX    A,@DPTR
+002705 600A              JZ      ?C0002?PWM
+002707         ?C0003?PWM:
+   22: 	{
+   23: 		YC_PWM_disable();
+002707 120F56            LCALL   YC_PWM_disable
+   24: 		GPIO_SetOutput(BACKLIGHT_PWM_GPIO,LED_ON);
+00270A D206              SETB    ?_GPIO_SetOutput?BIT
+00270C 7F16              MOV     R7,#016H
+00270E 020B60            LJMP    _GPIO_SetOutput
+   25: 		return;
+   26: 	}
+002711         ?C0002?PWM:
+   27: 	else if(pwm_duty_level == BACKLIGHT_DUTY_LEVEL_100)
+002711 904E9A            MOV     DPTR,#pwm_duty_level
+002714 E0                MOVX    A,@DPTR
+002715 B4040A            CJNE    A,#04H,?C0006?PWM
+   28: 	{
+   29: 		YC_PWM_disable();
+002718 120F56            LCALL   YC_PWM_disable
+   30: 		GPIO_SetOutput(BACKLIGHT_PWM_GPIO,LED_OFF);
+00271B C206              CLR     ?_GPIO_SetOutput?BIT
+00271D 7F16              MOV     R7,#016H
+00271F 020B60            LJMP    _GPIO_SetOutput
+   31: 		return;
+   32: 	}
+002722         ?C0006?PWM:
+   33: 	else
+   34: 	{
+   35: 		if(pwm_duty_level == BACKLIGHT_DUTY_LEVEL_75)
+002722 904E9A            MOV     DPTR,#pwm_duty_level
+002725 E0                MOVX    A,@DPTR
+002726 FF                MOV     R7,A
+002727 B40309            CJNE    A,#03H,?C0008?PWM
+   36: 			pwm_duty = 25;
+00272A A3                INC     DPTR
+00272B E4                CLR     A
+00272C F0                MOVX    @DPTR,A
+00272D A3                INC     DPTR
+00272E 7419              MOV     A,#019H
+002730 F0                MOVX    @DPTR,A
+002731 8018              SJMP    ?C0005?PWM
+002733         ?C0008?PWM:
+   37: 		else if(pwm_duty_level == BACKLIGHT_DUTY_LEVEL_50)
+002733 EF                MOV     A,R7
+002734 B4020B            CJNE    A,#02H,?C0010?PWM
+   38: 			pwm_duty = 50;
+002737 904E9B            MOV     DPTR,#pwm_duty
+00273A E4                CLR     A
+00273B F0                MOVX    @DPTR,A
+00273C A3                INC     DPTR
+00273D 7432              MOV     A,#032H
+00273F F0                MOVX    @DPTR,A
+002740 8009              SJMP    ?C0005?PWM
+002742         ?C0010?PWM:
+   39: 		else
+   40: 			pwm_duty = 75;
+002742 904E9B            MOV     DPTR,#pwm_duty
+002745 E4                CLR     A
+002746 F0                MOVX    @DPTR,A
+002747 A3                INC     DPTR
+002748 744B              MOV     A,#04BH
+00274A F0                MOVX    @DPTR,A
+   41: 	}
+00274B         ?C0005?PWM:
+   42: 		
+   43: 	m_lpm_mode = 0;
+00274B E4                CLR     A
+00274C 904131            MOV     DPTR,#m_lpm_mode
+00274F F0                MOVX    @DPTR,A
+   44: 	g_variable.pwm_lpm_mode_flag = 1;
+002750 904CFA            MOV     DPTR,#g_variable+03BH
+002753 04                INC     A
+002754 F0                MOVX    @DPTR,A
+   45: 	YC_PWM_init();
+002755 F172              ACALL   YC_PWM_init
+   46: 	REG_PWM_PCOUNT(0) = pwm_duty;
+002757 904E9B            MOV     DPTR,#pwm_duty
+00275A E0                MOVX    A,@DPTR
+00275B A3                INC     DPTR
+00275C E0                MOVX    A,@DPTR
+00275D FF                MOV     R7,A
+00275E 9080A0            MOV     DPTR,#080A0H
+002761 F0                MOVX    @DPTR,A
+   47: 	REG_PWM_NCOUNT(0) = (100 - pwm_duty );
+002762 C3                CLR     C
+002763 7464              MOV     A,#064H
+002765 9F                SUBB    A,R7
+002766 9080A2            MOV     DPTR,#080A2H
+002769 F0                MOVX    @DPTR,A
+   48: 	
+   49: 	REG_PWM_ENABLE |= 0x40;
+00276A 908085            MOV     DPTR,#08085H
+00276D E0                MOVX    A,@DPTR
+00276E 4440              ORL     A,#040H
+002770 F0                MOVX    @DPTR,A
+   50: 		
+   51: }
+002771 22                RET     
+----- FUNCTION _YC_PWM_set_duty (END) -------
+
+
+----- FUNCTION YC_PWM_init (BEGIN) -----
+ FILE: 'pwm.c'
+    9: void YC_PWM_init()
+   10: {
+   11: 	REG_PWM_CLK_SEL |= 0x00;	// select system clock
+   12: 	REG_CLK_OFF(1)  &= ~0x20;	//turn on PWM clock
+002772 908042            MOV     DPTR,#08042H
+002775 E0                MOVX    A,@DPTR
+002776 F0                MOVX    @DPTR,A
+   13: 	REG_GPIO_SEL(2)  |= 0x80;	//set gpio22 to PWM
+002777 908051            MOV     DPTR,#08051H
+00277A E0                MOVX    A,@DPTR
+00277B 54DF              ANL     A,#0DFH
+00277D F0                MOVX    @DPTR,A
+   14: }
+00277E 908082            MOV     DPTR,#08082H
+002781 E0                MOVX    A,@DPTR
+002782 4480              ORL     A,#080H
+002784 F0                MOVX    @DPTR,A
+   15: 
+002785 22                RET     
+----- FUNCTION YC_PWM_init (END) -------
+
+
+----- FUNCTION System_Software_init (BEGIN) -----
+ FILE: 'sys.c'
+   60: void System_Software_init()
+   61: {
+   62: 	System_clear_mem();
+   63: 	YC_adc_init();
+002786 121682            LCALL   System_clear_mem
+   64: 	g_variable.release_data =1;
+002789 122AF9            LCALL   YC_adc_init
+   65: 	g_variable.recon_count = 0;
+00278C 904CEB            MOV     DPTR,#g_variable+02CH
+00278F 7401              MOV     A,#01H
+002791 F0                MOVX    @DPTR,A
+   66: 	g_variable.test_buff = 0xff;
+002792 E4                CLR     A
+002793 904CF0            MOV     DPTR,#g_variable+031H
+002796 F0                MOVX    @DPTR,A
+   67: 	g_variable.backlight_speed = BACKLIGHT_SPEED_LEVEL_500MS;
+002797 904D06            MOV     DPTR,#g_variable+047H
+00279A 74FF              MOV     A,#0FFH
+00279C F0                MOVX    @DPTR,A
+   68: 	g_variable.backlight_duty_level = BACKLIGHT_DUTY_LEVEL_100;
+00279D 904CFE            MOV     DPTR,#g_variable+03FH
+0027A0 7405              MOV     A,#05H
+0027A2 F0                MOVX    @DPTR,A
+   69: }
+0027A3 904D02            MOV     DPTR,#g_variable+043H
+0027A6 14                DEC     A
+0027A7 F0                MOVX    @DPTR,A
+   70: 
+0027A8 22                RET     
+----- FUNCTION System_Software_init (END) -------
+
+
+----- FUNCTION System_Hardware_reset (BEGIN) -----
+ FILE: 'sys.c'
+   71: static void System_Hardware_reset()
+   72: {
+   73: 	m_reset_reg = 1;
+   74: 	while(1);
+0027A9 908010            MOV     DPTR,#m_reset_reg
+0027AC 7401              MOV     A,#01H
+0027AE F0                MOVX    @DPTR,A
+0027AF         ?C0005?SYS:
+   75: }
+0027AF 80FE              SJMP    ?C0005?SYS
+0027B1 22                RET     
+----- FUNCTION System_Hardware_reset (END) -------
+
+
+----- FUNCTION System_Reset_Connect (BEGIN) -----
+ FILE: 'sys.c'
+   99: void System_Reset_Connect()
+  100: {
+  101: 	System_Hardware_reset();
+  102: }
+0027B2 80F5              SJMP    System_Hardware_reset
+----- FUNCTION System_Reset_Connect (END) -------
+
+
+----- FUNCTION _kb_cb_Hid (BEGIN) -----
+ FILE: 'sys.c'
+  109: static void kb_cb_Hid(byte *p,byte len) {
+  110: 	//p[0] is hid type,always is 1(kb) now
+0027B4 904EAB            MOV     DPTR,#len
+0027B7 ED                MOV     A,R5
+0027B8 F0                MOVX    @DPTR,A
+;---- Variable 'p' assigned to Register 'R1/R2/R3' ----
+  111: 	byte temp = p[1];
+0027B9 900001            MOV     DPTR,#01H
+0027BC 1203CF            LCALL   ?C?CLDOPTR
+0027BF 904EAC            MOV     DPTR,#temp
+0027C2 F0                MOVX    @DPTR,A
+  112: 
+  113: 	if (len<2) {
+  114: 		return;
+  115: 	}
+  116: }
+0027C3 22                RET     
+----- FUNCTION _kb_cb_Hid (END) -------
+
+
+----- FUNCTION YC_connect_timeout_500ms (BEGIN) -----
+ FILE: 'sys.c'
+  207: void YC_connect_timeout_500ms()
+  208: {
+  209: 	
+  210: //system long sleep timer
+  211: 	if(g_variable.g24_currentState == CHANGE_TO_24G_CONNECTED)
+0027C4 904CC5            MOV     DPTR,#g_variable+06H
+0027C7 E0                MOVX    A,@DPTR
+0027C8 6403              XRL     A,#03H
+0027CA 704E              JNZ     ?C0028?SYS
+  212: 	{
+  213: 		if((g_variable.sleepTimer == 10) && m_24g_led_flag)
+0027CC 904CE3            MOV     DPTR,#g_variable+024H
+0027CF E0                MOVX    A,@DPTR
+0027D0 FE                MOV     R6,A
+0027D1 A3                INC     DPTR
+0027D2 E0                MOVX    A,@DPTR
+0027D3 FF                MOV     R7,A
+0027D4 640A              XRL     A,#0AH
+0027D6 4E                ORL     A,R6
+0027D7 7008              JNZ     ?C0029?SYS
+0027D9 904D47            MOV     DPTR,#m_24g_led_flag
+0027DC E0                MOVX    A,@DPTR
+0027DD 6002              JZ      ?C0029?SYS
+  214: 		{
+  215: 			m_24g_led_flag = 0;
+0027DF E4                CLR     A
+0027E0 F0                MOVX    @DPTR,A
+  216: 		}
+0027E1         ?C0029?SYS:
+  217: 
+  218: 	#ifdef PC_SLEEP_STATUS_GET	
+  219: 		if((g_variable.sleepTimer & 0x1f) == 0x10) // search dongle each 8s
+0027E1 EF                MOV     A,R7
+0027E2 541F              ANL     A,#01FH
+0027E4 6410              XRL     A,#010H
+0027E6 7020              JNZ     ?C0030?SYS
+  220: 		{
+  221: 			xmemclear(hidBuff,9);
+0027E8 7B01              MOV     R3,#01H
+0027EA 7A48              MOV     R2,#HIGH hidBuff
+0027EC 7900              MOV     R1,#LOW hidBuff
+0027EE 7D09              MOV     R5,#09H
+0027F0 FC                MOV     R4,A
+0027F1 121656            LCALL   _xmemclear
+  222: 
+  223: 			mult_key_status = 0;
+0027F4 E4                CLR     A
+0027F5 904DF7            MOV     DPTR,#mult_key_status
+0027F8 F0                MOVX    @DPTR,A
+  224: 			hidBuff[0] = HID_REPORTID_KEY_STANDARD;		// standard key send
+0027F9 904800            MOV     DPTR,#hidBuff
+0027FC 04                INC     A
+0027FD F0                MOVX    @DPTR,A
+  225: 			IPC_TxHidData(hidBuff, 9);
+0027FE FB                MOV     R3,A
+0027FF 7A48              MOV     R2,#HIGH hidBuff
+002801 7900              MOV     R1,#LOW hidBuff
+002803 7D09              MOV     R5,#09H
+002805 1215A2            LCALL   _IPC_TxHidData
+  226: 		}
+002808         ?C0030?SYS:
+  227: 	#endif
+  228: 
+  229: 		if (g_variable.sleepTimer >= STANDBY_TIMER_10MIN)	
+002808 C3                CLR     C
+002809 904CE4            MOV     DPTR,#g_variable+025H
+00280C E0                MOVX    A,@DPTR
+00280D 94C0              SUBB    A,#0C0H
+00280F 904CE3            MOV     DPTR,#g_variable+024H
+002812 E0                MOVX    A,@DPTR
+002813 9403              SUBB    A,#03H
+002815 402E              JC      ?C0037?SYS
+  230: 			System_long_sleep();	// 2.4g long sleep  lpm will wakeup every 3min15s
+002817 020EE7            LJMP    System_long_sleep
+  231: 	}
+00281A         ?C0028?SYS:
+  232: 	else if(g_variable.g24_currentState == CHANGE_TO_24G_PAIRING)
+00281A 904CC5            MOV     DPTR,#g_variable+06H
+00281D E0                MOVX    A,@DPTR
+00281E B40112            CJNE    A,#01H,?C0033?SYS
+  233: 	{
+  234: 		if (g_variable.sleepTimer >= BT_PAIRING_TIME_OUT_1MIN)
+002821 C3                CLR     C
+002822 904CE4            MOV     DPTR,#g_variable+025H
+002825 E0                MOVX    A,@DPTR
+002826 9478              SUBB    A,#078H
+002828 904CE3            MOV     DPTR,#g_variable+024H
+00282B E0                MOVX    A,@DPTR
+00282C 9400              SUBB    A,#00H
+00282E 4015              JC      ?C0037?SYS
+  235: 		{
+  236: 			System_long_sleep();
+002830 020EE7            LJMP    System_long_sleep
+  237: 		}
+  238: 	}
+002833         ?C0033?SYS:
+  239: 	else
+  240: 	{
+  241: 		if (g_variable.sleepTimer >= RECONNECT_TIMER_10S)
+002833 C3                CLR     C
+002834 904CE4            MOV     DPTR,#g_variable+025H
+002837 E0                MOVX    A,@DPTR
+002838 9414              SUBB    A,#014H
+00283A 904CE3            MOV     DPTR,#g_variable+024H
+00283D E0                MOVX    A,@DPTR
+00283E 9400              SUBB    A,#00H
+002840 4003              JC      ?C0037?SYS
+  242: 		{
+  243: 			System_long_sleep();
+002842 120EE7            LCALL   System_long_sleep
+  244: 		}
+  245: 	}
+  246: }
+002845         ?C0037?SYS:
+002845 22                RET     
+----- FUNCTION YC_connect_timeout_500ms (END) -------
+
+
+----- FUNCTION YC_pairing_timerout_500ms (BEGIN) -----
+ FILE: 'sys.c'
+  250: void YC_pairing_timerout_500ms()
+  251: {
+  252: //pairing timer
+  253: 	if (g_variable.pairing_g24_timeout != 0)
+002846 904CEE            MOV     DPTR,#g_variable+02FH
+002849 E0                MOVX    A,@DPTR
+00284A 6018              JZ      ?C0040?SYS
+  254: 	{
+  255: 		g_variable.sleepTimer = 0;
+00284C E4                CLR     A
+00284D 904CE3            MOV     DPTR,#g_variable+024H
+002850 F0                MOVX    @DPTR,A
+002851 A3                INC     DPTR
+002852 F0                MOVX    @DPTR,A
+  256: 		g_variable.pairing_g24_timeout--;
+002853 904CEE            MOV     DPTR,#g_variable+02FH
+002856 E0                MOVX    A,@DPTR
+002857 14                DEC     A
+002858 F0                MOVX    @DPTR,A
+  257: 		if (g_variable.pairing_g24_timeout == 0)
+002859 E0                MOVX    A,@DPTR
+00285A 7008              JNZ     ?C0040?SYS
+  258: 		{
+  259: //			IPC_TxControlCmd(IPC_CMD_STOP_24G);
+  260: 			Delay1ms(10);
+00285C 7F0A              MOV     R7,#0AH
+00285E 120A2D            LCALL   _Delay1ms
+  261: 			System_long_sleep();
+002861 120EE7            LCALL   System_long_sleep
+  262: 		}
+  263: 	}
+  264: }
+002864         ?C0040?SYS:
+002864 22                RET     
+----- FUNCTION YC_pairing_timerout_500ms (END) -------
+
+
+----- FUNCTION kb_cb_Timer500ms (BEGIN) -----
+ FILE: 'sys.c'
+  318: static void kb_cb_Timer500ms()
+  319: {
+  320: 	LED_timer500ms();	
+  321: 
+002865 120F1F            LCALL   LED_timer500ms
+  322: 	g_variable.sleepTimer++;
+002868 904CE4            MOV     DPTR,#g_variable+025H
+00286B E0                MOVX    A,@DPTR
+00286C 04                INC     A
+00286D F0                MOVX    @DPTR,A
+00286E 7006              JNZ     ?C0089?SYS
+002870 904CE3            MOV     DPTR,#g_variable+024H
+002873 E0                MOVX    A,@DPTR
+002874 04                INC     A
+002875 F0                MOVX    @DPTR,A
+002876         ?C0089?SYS:
+  323: 
+  324: 	YC_adc_check_timer500ms();
+002876 1180              ACALL   YC_adc_check_timer500ms
+  325: 	YC_connect_timeout_500ms();
+002878 1227C4            LCALL   YC_connect_timeout_500ms
+  326: 	kb_button_press_timer500ms();
+00287B 1209A2            LCALL   kb_button_press_timer500ms
+  327: 	YC_pairing_timerout_500ms();
+00287E 80C6              SJMP    YC_pairing_timerout_500ms
+  328: 	
+  329: 	return;
+----- FUNCTION kb_cb_Timer500ms (END) -------
+
+
+----- FUNCTION YC_adc_check_timer500ms (BEGIN) -----
+ FILE: 'adc.c'
+   82: void YC_adc_check_timer500ms()
+   83: {
+   84: #ifdef  ADC_ENABLE
+   85: 	// adc check timer	
+   86: 	if (g_variable.battery_check_interval)
+002880 904CD3            MOV     DPTR,#g_variable+014H
+002883 E0                MOVX    A,@DPTR
+002884 600A              JZ      ?C0017?ADC
+   87: 	{
+   88: 		g_variable.battery_check_interval--;
+002886 14                DEC     A
+002887 F0                MOVX    @DPTR,A
+   89: 		if (g_variable.battery_check_interval == 0)
+002888 E0                MOVX    A,@DPTR
+002889 7005              JNZ     ?C0017?ADC
+   90: 		{
+   91: 			g_variable.battery_check_interval = BATTERY_CHECK_INTERVAL;
+00288B 7405              MOV     A,#05H
+00288D F0                MOVX    @DPTR,A
+   92: 			YC_adc_check();
+00288E 1191              ACALL   YC_adc_check
+   93: 		}
+   94: 	}
+   95: #endif	
+   96: }
+002890         ?C0017?ADC:
+002890 22                RET     
+----- FUNCTION YC_adc_check_timer500ms (END) -------
+
+
+----- FUNCTION YC_adc_check (BEGIN) -----
+ FILE: 'adc.c'
+   41: void YC_adc_check() 
+   42: {
+   43: #ifdef  ADC_ENABLE
+   44: 	byte i;
+   45: 	ulong batValue = 0;
+002891 904E7C            MOV     DPTR,#batValue
+002894 120588            LCALL   ?C?LSTKXDATA
+002897 00                DB      00H
+002898 00                DB      00H
+002899 00                DB      00H
+00289A 00                DB      00H
+   46: 
+   47: 	if(!m_adcCurrentValue)
+00289B 904C95            MOV     DPTR,#m_adcCurrentValue
+00289E E0                MOVX    A,@DPTR
+00289F 7002              JNZ     ?C0018?ADC
+0028A1 A3                INC     DPTR
+0028A2 E0                MOVX    A,@DPTR
+0028A3         ?C0018?ADC:
+0028A3 7002              JNZ     $ + 4H
+0028A5 412C              AJMP    ?C0006?ADC
+0028A7         ?C0005?ADC:
+   48: 		return;
+   49: 
+   50: 	g_variable.battery_value[g_variable.battery_value_index++] = m_adcCurrentValue;
+0028A7 904C95            MOV     DPTR,#m_adcCurrentValue
+0028AA E0                MOVX    A,@DPTR
+0028AB FE                MOV     R6,A
+0028AC A3                INC     DPTR
+0028AD E0                MOVX    A,@DPTR
+0028AE FF                MOV     R7,A
+0028AF 904CD4            MOV     DPTR,#g_variable+015H
+0028B2 E0                MOVX    A,@DPTR
+0028B3 FD                MOV     R5,A
+0028B4 04                INC     A
+0028B5 F0                MOVX    @DPTR,A
+0028B6 ED                MOV     A,R5
+0028B7 25E0              ADD     A,ACC
+0028B9 24D6              ADD     A,#LOW g_variable+017H
+0028BB F582              MOV     DPL,A
+0028BD E4                CLR     A
+0028BE 344C              ADDC    A,#HIGH g_variable+017H
+0028C0 F583              MOV     DPH,A
+0028C2 EE                MOV     A,R6
+0028C3 F0                MOVX    @DPTR,A
+0028C4 A3                INC     DPTR
+0028C5 EF                MOV     A,R7
+0028C6 F0                MOVX    @DPTR,A
+   51: 	if (g_variable.battery_value_index >= BAT_ARRAY_LEN)
+0028C7 904CD4            MOV     DPTR,#g_variable+015H
+0028CA E0                MOVX    A,@DPTR
+0028CB C3                CLR     C
+0028CC 9404              SUBB    A,#04H
+0028CE 4002              JC      ?C0007?ADC
+   52: 		g_variable.battery_value_index = 0;
+0028D0 E4                CLR     A
+0028D1 F0                MOVX    @DPTR,A
+0028D2         ?C0007?ADC:
+   53: 	for (i = 0; i < BAT_ARRAY_LEN; i++)
+0028D2 E4                CLR     A
+0028D3 904E7B            MOV     DPTR,#i
+0028D6 F0                MOVX    @DPTR,A
+0028D7         ?C0008?ADC:
+   54: 	{
+   55: 		batValue += g_variable.battery_value[i];
+0028D7 904E7C            MOV     DPTR,#batValue
+0028DA E0                MOVX    A,@DPTR
+0028DB F8                MOV     R0,A
+0028DC A3                INC     DPTR
+0028DD E0                MOVX    A,@DPTR
+0028DE F9                MOV     R1,A
+0028DF A3                INC     DPTR
+0028E0 E0                MOVX    A,@DPTR
+0028E1 FA                MOV     R2,A
+0028E2 A3                INC     DPTR
+0028E3 E0                MOVX    A,@DPTR
+0028E4 FB                MOV     R3,A
+0028E5 904E7B            MOV     DPTR,#i
+0028E8 E0                MOVX    A,@DPTR
+0028E9 25E0              ADD     A,ACC
+0028EB 24D6              ADD     A,#LOW g_variable+017H
+0028ED F582              MOV     DPL,A
+0028EF E4                CLR     A
+0028F0 344C              ADDC    A,#HIGH g_variable+017H
+0028F2 F583              MOV     DPH,A
+0028F4 E0                MOVX    A,@DPTR
+0028F5 FE                MOV     R6,A
+0028F6 A3                INC     DPTR
+0028F7 E0                MOVX    A,@DPTR
+0028F8 FF                MOV     R7,A
+0028F9 E4                CLR     A
+0028FA FC                MOV     R4,A
+0028FB FD                MOV     R5,A
+0028FC EB                MOV     A,R3
+0028FD 2F                ADD     A,R7
+0028FE FF                MOV     R7,A
+0028FF EA                MOV     A,R2
+002900 3E                ADDC    A,R6
+002901 FE                MOV     R6,A
+002902 ED                MOV     A,R5
+002903 39                ADDC    A,R1
+002904 FD                MOV     R5,A
+002905 EC                MOV     A,R4
+002906 38                ADDC    A,R0
+002907 FC                MOV     R4,A
+002908 904E7C            MOV     DPTR,#batValue
+00290B 12057C            LCALL   ?C?LSTXDATA
+   56: 	}
+00290E 904E7B            MOV     DPTR,#i
+002911 E0                MOVX    A,@DPTR
+002912 04                INC     A
+002913 F0                MOVX    @DPTR,A
+002914 E0                MOVX    A,@DPTR
+002915 B404BF            CJNE    A,#04H,?C0008?ADC
+002918         ?C0009?ADC:
+   57: 	batValue = batValue/BAT_ARRAY_LEN;
+002918 904E7C            MOV     DPTR,#batValue
+00291B E0                MOVX    A,@DPTR
+00291C FC                MOV     R4,A
+00291D A3                INC     DPTR
+00291E E0                MOVX    A,@DPTR
+00291F FD                MOV     R5,A
+002920 A3                INC     DPTR
+002921 E0                MOVX    A,@DPTR
+002922 FE                MOV     R6,A
+002923 A3                INC     DPTR
+002924 E0                MOVX    A,@DPTR
+002925 FF                MOV     R7,A
+002926 E4                CLR     A
+002927 7B04              MOV     R3,#04H
+002929 FA                MOV     R2,A
+00292A F9                MOV     R1,A
+00292B F8                MOV     R0,A
+00292C 1204CB            LCALL   ?C?ULDIV
+00292F 904E7C            MOV     DPTR,#batValue
+002932 12057C            LCALL   ?C?LSTXDATA
+   58: 
+   59: 	if(batValue < g_variable.battery_level_shutdown)
+002935 904CE0            MOV     DPTR,#g_variable+021H
+002938 E0                MOVX    A,@DPTR
+002939 FE                MOV     R6,A
+00293A A3                INC     DPTR
+00293B E0                MOVX    A,@DPTR
+00293C FF                MOV     R7,A
+00293D E4                CLR     A
+00293E FC                MOV     R4,A
+00293F FD                MOV     R5,A
+002940 904E7C            MOV     DPTR,#batValue
+002943 E0                MOVX    A,@DPTR
+002944 F8                MOV     R0,A
+002945 A3                INC     DPTR
+002946 E0                MOVX    A,@DPTR
+002947 F9                MOV     R1,A
+002948 A3                INC     DPTR
+002949 E0                MOVX    A,@DPTR
+00294A FA                MOV     R2,A
+00294B A3                INC     DPTR
+00294C E0                MOVX    A,@DPTR
+00294D FB                MOV     R3,A
+00294E C3                CLR     C
+00294F 12056B            LCALL   ?C?ULCMP
+002952 5008              JNC     ?C0011?ADC
+   60: 	{
+   61: 		g_variable.battery_status = BAT_STATUS_SHUT_DOWN;
+002954 904CD5            MOV     DPTR,#g_variable+016H
+002957 7402              MOV     A,#02H
+002959 F0                MOVX    @DPTR,A
+   62: 	}
+00295A 4124              AJMP    ?C0012?ADC
+00295C         ?C0011?ADC:
+   63: 	else
+   64: 	{	
+   65: 		if (batValue < g_variable.battery_level_low)
+00295C 904CDE            MOV     DPTR,#g_variable+01FH
+00295F E0                MOVX    A,@DPTR
+002960 FE                MOV     R6,A
+002961 A3                INC     DPTR
+002962 E0                MOVX    A,@DPTR
+002963 FF                MOV     R7,A
+002964 E4                CLR     A
+002965 FC                MOV     R4,A
+002966 FD                MOV     R5,A
+002967 904E7C            MOV     DPTR,#batValue
+00296A E0                MOVX    A,@DPTR
+00296B F8                MOV     R0,A
+00296C A3                INC     DPTR
+00296D E0                MOVX    A,@DPTR
+00296E F9                MOV     R1,A
+00296F A3                INC     DPTR
+002970 E0                MOVX    A,@DPTR
+002971 FA                MOV     R2,A
+002972 A3                INC     DPTR
+002973 E0                MOVX    A,@DPTR
+002974 FB                MOV     R3,A
+002975 C3                CLR     C
+002976 12056B            LCALL   ?C?ULCMP
+002979 5056              JNC     ?C0013?ADC
+   66: 		{
+   67: 			g_variable.battery_status = BAT_STATUS_LOW;
+00297B 904CD5            MOV     DPTR,#g_variable+016H
+00297E 7401              MOV     A,#01H
+002980 F0                MOVX    @DPTR,A
+   68: 			g_variable.battery_level_low = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_3V3+m_adc0vBase;
+002981 904C91            MOV     DPTR,#m_adc0vBase
+002984 E0                MOVX    A,@DPTR
+002985 FE                MOV     R6,A
+002986 A3                INC     DPTR
+002987 E0                MOVX    A,@DPTR
+002988 FF                MOV     R7,A
+002989 C3                CLR     C
+00298A 904C94            MOV     DPTR,#m_adc3vValue+01H
+00298D E0                MOVX    A,@DPTR
+00298E 9F                SUBB    A,R7
+00298F FD                MOV     R5,A
+002990 904C93            MOV     DPTR,#m_adc3vValue
+002993 E0                MOVX    A,@DPTR
+002994 9E                SUBB    A,R6
+002995 FC                MOV     R4,A
+002996 E4                CLR     A
+002997 120206            LCALL   ?C?FCASTI
+00299A 7B7B              MOV     R3,#07BH
+00299C 7A14              MOV     R2,#014H
+00299E 798E              MOV     R1,#08EH
+0029A0 783F              MOV     R0,#03FH
+0029A2 1200FB            LCALL   ?C?FPMUL
+0029A5 C004              PUSH    AR4
+0029A7 C005              PUSH    AR5
+0029A9 C006              PUSH    AR6
+0029AB C007              PUSH    AR7
+0029AD 904C91            MOV     DPTR,#m_adc0vBase
+0029B0 E0                MOVX    A,@DPTR
+0029B1 FC                MOV     R4,A
+0029B2 A3                INC     DPTR
+0029B3 E0                MOVX    A,@DPTR
+0029B4 FD                MOV     R5,A
+0029B5 E4                CLR     A
+0029B6 120206            LCALL   ?C?FCASTI
+0029B9 D003              POP     AR3
+0029BB D002              POP     AR2
+0029BD D001              POP     AR1
+0029BF D000              POP     AR0
+0029C1 12000A            LCALL   ?C?FPADD
+0029C4 12023F            LCALL   ?C?CASTF
+0029C7 904CDE            MOV     DPTR,#g_variable+01FH
+0029CA EE                MOV     A,R6
+0029CB F0                MOVX    @DPTR,A
+0029CC A3                INC     DPTR
+0029CD EF                MOV     A,R7
+0029CE F0                MOVX    @DPTR,A
+   69: 		}
+0029CF 8053              SJMP    ?C0012?ADC
+0029D1         ?C0013?ADC:
+   70: 		else
+   71: 		{
+   72: 			g_variable.battery_status = BAT_STATUS_NONE;
+0029D1 E4                CLR     A
+0029D2 904CD5            MOV     DPTR,#g_variable+016H
+0029D5 F0                MOVX    @DPTR,A
+   73: 			g_variable.battery_level_low = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_3V1+m_adc0vBase;
+0029D6 904C91            MOV     DPTR,#m_adc0vBase
+0029D9 E0                MOVX    A,@DPTR
+0029DA FE                MOV     R6,A
+0029DB A3                INC     DPTR
+0029DC E0                MOVX    A,@DPTR
+0029DD FF                MOV     R7,A
+0029DE C3                CLR     C
+0029DF 904C94            MOV     DPTR,#m_adc3vValue+01H
+0029E2 E0                MOVX    A,@DPTR
+0029E3 9F                SUBB    A,R7
+0029E4 FD                MOV     R5,A
+0029E5 904C93            MOV     DPTR,#m_adc3vValue
+0029E8 E0                MOVX    A,@DPTR
+0029E9 9E                SUBB    A,R6
+0029EA FC                MOV     R4,A
+0029EB E4                CLR     A
+0029EC 120206            LCALL   ?C?FCASTI
+0029EF 7BB8              MOV     R3,#0B8H
+0029F1 7A1E              MOV     R2,#01EH
+0029F3 7985              MOV     R1,#085H
+0029F5 783F              MOV     R0,#03FH
+0029F7 1200FB            LCALL   ?C?FPMUL
+0029FA C004              PUSH    AR4
+0029FC C005              PUSH    AR5
+0029FE C006              PUSH    AR6
+002A00 C007              PUSH    AR7
+002A02 904C91            MOV     DPTR,#m_adc0vBase
+002A05 E0                MOVX    A,@DPTR
+002A06 FC                MOV     R4,A
+002A07 A3                INC     DPTR
+002A08 E0                MOVX    A,@DPTR
+002A09 FD                MOV     R5,A
+002A0A E4                CLR     A
+002A0B 120206            LCALL   ?C?FCASTI
+002A0E D003              POP     AR3
+002A10 D002              POP     AR2
+002A12 D001              POP     AR1
+002A14 D000              POP     AR0
+002A16 12000A            LCALL   ?C?FPADD
+002A19 12023F            LCALL   ?C?CASTF
+002A1C 904CDE            MOV     DPTR,#g_variable+01FH
+002A1F EE                MOV     A,R6
+002A20 F0                MOVX    @DPTR,A
+002A21 A3                INC     DPTR
+002A22 EF                MOV     A,R7
+002A23 F0                MOVX    @DPTR,A
+   74: 		}
+   75: 	}
+002A24         ?C0012?ADC:
+   76: 
+   77: 	g_variable.last_battery_status = g_variable.battery_status;
+002A24 904CD5            MOV     DPTR,#g_variable+016H
+002A27 E0                MOVX    A,@DPTR
+002A28 904CFC            MOV     DPTR,#g_variable+03DH
+002A2B F0                MOVX    @DPTR,A
+   78: #endif	
+   79: }
+002A2C         ?C0006?ADC:
+002A2C 22                RET     
+----- FUNCTION YC_adc_check (END) -------
+
+
+----- FUNCTION kb_cb_Timer100ms (BEGIN) -----
+ FILE: 'sys.c'
+  333: static void kb_cb_Timer100ms()
+  334: {
+  335: 	if(!g_variable.g24_long_sleep_flag && !g_variable.pairing_g24_timeout && (g_variable.battery_status != BAT_STATU
+>> S_LOW))
+  336: 		backlight_led_process();	
+002A2D 904D05            MOV     DPTR,#g_variable+046H
+002A30 E0                MOVX    A,@DPTR
+002A31 7011              JNZ     ?C0056?SYS
+002A33 904CEE            MOV     DPTR,#g_variable+02FH
+002A36 E0                MOVX    A,@DPTR
+002A37 700B              JNZ     ?C0056?SYS
+002A39 904CD5            MOV     DPTR,#g_variable+016H
+002A3C E0                MOVX    A,@DPTR
+002A3D 6401              XRL     A,#01H
+002A3F 6003              JZ      ?C0056?SYS
+  337: 
+002A41 120B7E            LCALL   backlight_led_process
+002A44         ?C0056?SYS:
+  338: 
+  339: 	if (g_variable.delay_enter_lpm_timer) 
+002A44 904CEA            MOV     DPTR,#g_variable+02BH
+002A47 E0                MOVX    A,@DPTR
+002A48 6002              JZ      ?C0057?SYS
+  340: 	{
+  341: 		g_variable.delay_enter_lpm_timer --;
+002A4A 14                DEC     A
+002A4B F0                MOVX    @DPTR,A
+  342: 	}
+002A4C         ?C0057?SYS:
+  343: 
+  344: 	if(g_variable.recon_delay)
+002A4C 904CEF            MOV     DPTR,#g_variable+030H
+002A4F E0                MOVX    A,@DPTR
+002A50 6002              JZ      ?C0058?SYS
+  345: 		g_variable.recon_delay--;
+002A52 14                DEC     A
+002A53 F0                MOVX    @DPTR,A
+002A54         ?C0058?SYS:
+  346: 
+  347: 
+  348: 	if(g_variable.one_key_press_wait_release_timer)
+002A54 904CF8            MOV     DPTR,#g_variable+039H
+002A57 E0                MOVX    A,@DPTR
+002A58 600B              JZ      ?C0059?SYS
+  349: 	{
+  350: 		g_variable.one_key_press_wait_release_timer--;
+002A5A 14                DEC     A
+002A5B F0                MOVX    @DPTR,A
+  351: 		if(!g_variable.one_key_press_wait_release_timer)
+002A5C E0                MOVX    A,@DPTR
+002A5D 7006              JNZ     ?C0059?SYS
+  352: 			g_variable.key_combination_step = CAMBINATION_KEY_NULL;
+002A5F 904CF4            MOV     DPTR,#g_variable+035H
+002A62 7406              MOV     A,#06H
+002A64 F0                MOVX    @DPTR,A
+  353: 	}
+002A65         ?C0059?SYS:
+  354: 
+  355: 
+  356: 	if (g_variable.pairing_g24_timeout == 0) //bt  pairing
+002A65 904CEE            MOV     DPTR,#g_variable+02FH
+002A68 E0                MOVX    A,@DPTR
+002A69 7035              JNZ     ?C0061?SYS
+  357: 	{
+  358: 		if(g_variable.battery_low_led_flash_interval)
+002A6B 904CE2            MOV     DPTR,#g_variable+023H
+002A6E E0                MOVX    A,@DPTR
+002A6F 602F              JZ      ?C0061?SYS
+  359: 		{
+  360: 			g_variable.battery_low_led_flash_interval--;
+002A71 14                DEC     A
+002A72 F0                MOVX    @DPTR,A
+  361: 			if(g_variable.battery_low_led_flash_interval < 8)
+002A73 E0                MOVX    A,@DPTR
+002A74 FF                MOV     R7,A
+002A75 C3                CLR     C
+002A76 9408              SUBB    A,#08H
+002A78 5016              JNC     ?C0063?SYS
+  362: 			{
+  363: 				if(g_variable.battery_low_led_flash_interval & 0x02)
+002A7A EF                MOV     A,R7
+002A7B 30E109            JNB     ACC.1,?C0064?SYS
+  364: 				{
+  365: 					GPIO_Setout(LOWPOWER_LED_GPIO, LED_ON_0);
+002A7E C201              CLR     ?_GPIO_Setout?BIT
+002A80 7F1C              MOV     R7,#01CH
+002A82 1207DE            LCALL   _GPIO_Setout
+  366: 				}
+002A85 8010              SJMP    ?C0066?SYS
+002A87         ?C0064?SYS:
+  367: 				else
+  368: 				{
+  369: 					GPIO_Setout(LOWPOWER_LED_GPIO, LED_OFF_1);	
+002A87 D201              SETB    ?_GPIO_Setout?BIT
+002A89 7F1C              MOV     R7,#01CH
+002A8B 1207DE            LCALL   _GPIO_Setout
+  370: 				}	
+  371: 			}
+002A8E 8007              SJMP    ?C0066?SYS
+002A90         ?C0063?SYS:
+  372: 			else
+  373: 				GPIO_Setout(LOWPOWER_LED_GPIO, LED_OFF_1);
+002A90 D201              SETB    ?_GPIO_Setout?BIT
+002A92 7F1C              MOV     R7,#01CH
+002A94 1207DE            LCALL   _GPIO_Setout
+002A97         ?C0066?SYS:
+  374: 			if(!g_variable.battery_low_led_flash_interval)
+002A97 904CE2            MOV     DPTR,#g_variable+023H
+002A9A E0                MOVX    A,@DPTR
+002A9B 7003              JNZ     ?C0061?SYS
+  375: 				g_variable.battery_low_led_flash_interval = LOW_BATTERY_FLASH_INTERVAL;
+002A9D 7418              MOV     A,#018H
+002A9F F0                MOVX    @DPTR,A
+  376: 		}
+  377: 	}
+002AA0         ?C0061?SYS:
+  378: 	
+  379: // The dongle must receive data within 200ms, otherwise it will be forced to lift
+  380: 	if(!long_press_flag)
+002AA0 904DE4            MOV     DPTR,#long_press_flag
+002AA3 E0                MOVX    A,@DPTR
+002AA4 7036              JNZ     ?C0068?SYS
+  381: 	{
+  382: 		if (repeat_send_24g == 1)
+002AA6 904DE5            MOV     DPTR,#repeat_send_24g
+002AA9 E0                MOVX    A,@DPTR
+002AAA 6401              XRL     A,#01H
+002AAC 702E              JNZ     ?C0068?SYS
+  383: 		{
+  384: 			g_variable.sleepTimer = 0;
+002AAE 904CE3            MOV     DPTR,#g_variable+024H
+002AB1 F0                MOVX    @DPTR,A
+002AB2 A3                INC     DPTR
+002AB3 F0                MOVX    @DPTR,A
+  385: 			repeat_send_24g = 0;
+002AB4 904DE5            MOV     DPTR,#repeat_send_24g
+002AB7 F0                MOVX    @DPTR,A
+  386: 
+  387: 			 if (multikey[0] != 0)
+002AB8 904DF8            MOV     DPTR,#multikey
+002ABB E0                MOVX    A,@DPTR
+002ABC 600D              JZ      ?C0070?SYS
+  388: 			{
+  389: 				IPC_TxHidData(multikey, 3);
+002ABE 7B01              MOV     R3,#01H
+002AC0 7A4D              MOV     R2,#HIGH multikey
+002AC2 79F8              MOV     R1,#LOW multikey
+002AC4 7D03              MOV     R5,#03H
+002AC6 1215A2            LCALL   _IPC_TxHidData
+  390: 			}
+002AC9 8011              SJMP    ?C0068?SYS
+002ACB         ?C0070?SYS:
+  391: 			else if (hidBuff[0] != 0)
+002ACB 904800            MOV     DPTR,#hidBuff
+002ACE E0                MOVX    A,@DPTR
+002ACF 600B              JZ      ?C0068?SYS
+  392: 			{
+  393: 
+  394: 				IPC_TxHidData(hidBuff,9);
+002AD1 7B01              MOV     R3,#01H
+002AD3 7A48              MOV     R2,#HIGH hidBuff
+002AD5 7900              MOV     R1,#LOW hidBuff
+002AD7 7D09              MOV     R5,#09H
+002AD9 1215A2            LCALL   _IPC_TxHidData
+  395: 			}
+  396: 		}
+  397: 	}
+002ADC         ?C0068?SYS:
+  398: 
+  399: 	if (delayChgInvTimer != 0)
+002ADC 904DEF            MOV     DPTR,#delayChgInvTimer
+002ADF E0                MOVX    A,@DPTR
+002AE0 6003              JZ      ?C0074?SYS
+  400: 	{
+  401: 		delayChgInvTimer--;
+002AE2 E0                MOVX    A,@DPTR
+002AE3 14                DEC     A
+002AE4 F0                MOVX    @DPTR,A
+  402: 	}
+  403: }
+002AE5         ?C0074?SYS:
+002AE5 22                RET     
+----- FUNCTION kb_cb_Timer100ms (END) -------
+
+
+----- FUNCTION kb_cb_init (BEGIN) -----
+ FILE: 'sys.c'
+  417: static void kb_cb_init()
+  418: {
+  419: 	IPC_Initialize(&cb);
+  420: }
+002AE6 7B01              MOV     R3,#01H
+002AE8 7A4E              MOV     R2,#HIGH cb
+002AEA 7902              MOV     R1,#LOW cb
+;----                  JMP     _IPC_Initialize
+----- FUNCTION kb_cb_init (END) -------
+
+
+----- FUNCTION _IPC_Initialize (BEGIN) -----
+;---- Variable 'cb' assigned to Register 'R1/R2/R3' ----
+002AEC 7814              MOV     R0,#LOW ipcCb
+002AEE 7C4E              MOV     R4,#HIGH ipcCb
+002AF0 7D01              MOV     R5,#01H
+002AF2 7E00              MOV     R6,#00H
+002AF4 7F12              MOV     R7,#012H
+002AF6 020390            LJMP    ?C?COPY
+----- FUNCTION _IPC_Initialize (END) -------
+
+
+----- FUNCTION YC_adc_init (BEGIN) -----
+ FILE: 'adc.c'
+    3: void YC_adc_init()
+    4: {
+    5: #ifdef  ADC_ENABLE
+    6: 	byte i;
+    7: 	
+    8: 	g_variable.battery_check_interval = BATTERY_CHECK_INTERVAL;
+002AF9 904CD3            MOV     DPTR,#g_variable+014H
+002AFC 7405              MOV     A,#05H
+002AFE F0                MOVX    @DPTR,A
+    9: 	g_variable.battery_value_index = 0;
+002AFF E4                CLR     A
+002B00 A3                INC     DPTR
+002B01 F0                MOVX    @DPTR,A
+   10: 
+   11: #ifdef ADC_TYPE_HVIN 	
+   12: 	for (i = 0; i < BAT_ARRAY_LEN; i++)
+;---- Variable 'i' assigned to Register 'R7' ----
+002B02 FF                MOV     R7,A
+002B03         ?C0001?ADC:
+   13: 	{
+   14: 		g_variable.battery_value[i] = INIT_BATTERY_VALUE;
+002B03 EF                MOV     A,R7
+002B04 25E0              ADD     A,ACC
+002B06 24D6              ADD     A,#LOW g_variable+017H
+002B08 F582              MOV     DPL,A
+002B0A E4                CLR     A
+002B0B 344C              ADDC    A,#HIGH g_variable+017H
+002B0D F583              MOV     DPH,A
+002B0F 7454              MOV     A,#054H
+002B11 F0                MOVX    @DPTR,A
+002B12 A3                INC     DPTR
+002B13 F0                MOVX    @DPTR,A
+   15: 	}
+002B14 0F                INC     R7
+002B15 EF                MOV     A,R7
+002B16 B404EA            CJNE    A,#04H,?C0001?ADC
+002B19         ?C0002?ADC:
+   16: //	g_variable.battery_level_full = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_3V7+m_adc0vBase;
+   17: 	g_variable.battery_level_low = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_3V1+m_adc0vBase;
+002B19 904C91            MOV     DPTR,#m_adc0vBase
+002B1C E0                MOVX    A,@DPTR
+002B1D FE                MOV     R6,A
+002B1E A3                INC     DPTR
+002B1F E0                MOVX    A,@DPTR
+002B20 FF                MOV     R7,A
+002B21 C3                CLR     C
+002B22 904C94            MOV     DPTR,#m_adc3vValue+01H
+002B25 E0                MOVX    A,@DPTR
+002B26 9F                SUBB    A,R7
+002B27 FD                MOV     R5,A
+002B28 904C93            MOV     DPTR,#m_adc3vValue
+002B2B E0                MOVX    A,@DPTR
+002B2C 9E                SUBB    A,R6
+002B2D FC                MOV     R4,A
+002B2E E4                CLR     A
+002B2F 120206            LCALL   ?C?FCASTI
+002B32 7BB8              MOV     R3,#0B8H
+002B34 7A1E              MOV     R2,#01EH
+002B36 7985              MOV     R1,#085H
+002B38 783F              MOV     R0,#03FH
+002B3A 1200FB            LCALL   ?C?FPMUL
+002B3D C004              PUSH    AR4
+002B3F C005              PUSH    AR5
+002B41 C006              PUSH    AR6
+002B43 C007              PUSH    AR7
+002B45 904C91            MOV     DPTR,#m_adc0vBase
+002B48 E0                MOVX    A,@DPTR
+002B49 FC                MOV     R4,A
+002B4A A3                INC     DPTR
+002B4B E0                MOVX    A,@DPTR
+002B4C FD                MOV     R5,A
+002B4D E4                CLR     A
+002B4E 120206            LCALL   ?C?FCASTI
+002B51 D003              POP     AR3
+002B53 D002              POP     AR2
+002B55 D001              POP     AR1
+002B57 D000              POP     AR0
+002B59 12000A            LCALL   ?C?FPADD
+002B5C 12023F            LCALL   ?C?CASTF
+002B5F 904CDE            MOV     DPTR,#g_variable+01FH
+002B62 EE                MOV     A,R6
+002B63 F0                MOVX    @DPTR,A
+002B64 A3                INC     DPTR
+002B65 EF                MOV     A,R7
+002B66 F0                MOVX    @DPTR,A
+   18: 	g_variable.battery_level_shutdown = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_2V9+m_adc0vBase;
+002B67 904C91            MOV     DPTR,#m_adc0vBase
+002B6A E0                MOVX    A,@DPTR
+002B6B FE                MOV     R6,A
+002B6C A3                INC     DPTR
+002B6D E0                MOVX    A,@DPTR
+002B6E FF                MOV     R7,A
+002B6F C3                CLR     C
+002B70 904C94            MOV     DPTR,#m_adc3vValue+01H
+002B73 E0                MOVX    A,@DPTR
+002B74 9F                SUBB    A,R7
+002B75 FD                MOV     R5,A
+002B76 904C93            MOV     DPTR,#m_adc3vValue
+002B79 E0                MOVX    A,@DPTR
+002B7A 9E                SUBB    A,R6
+002B7B FC                MOV     R4,A
+002B7C E4                CLR     A
+002B7D 120206            LCALL   ?C?FCASTI
+002B80 7B48              MOV     R3,#048H
+002B82 7AE1              MOV     R2,#0E1H
+002B84 797A              MOV     R1,#07AH
+002B86 783F              MOV     R0,#03FH
+002B88 1200FB            LCALL   ?C?FPMUL
+002B8B C004              PUSH    AR4
+002B8D C005              PUSH    AR5
+002B8F C006              PUSH    AR6
+002B91 C007              PUSH    AR7
+002B93 904C91            MOV     DPTR,#m_adc0vBase
+002B96 E0                MOVX    A,@DPTR
+002B97 FC                MOV     R4,A
+002B98 A3                INC     DPTR
+002B99 E0                MOVX    A,@DPTR
+002B9A FD                MOV     R5,A
+002B9B E4                CLR     A
+002B9C 120206            LCALL   ?C?FCASTI
+002B9F D003              POP     AR3
+002BA1 D002              POP     AR2
+002BA3 D001              POP     AR1
+002BA5 D000              POP     AR0
+002BA7 12000A            LCALL   ?C?FPADD
+002BAA 12023F            LCALL   ?C?CASTF
+002BAD 904CE0            MOV     DPTR,#g_variable+021H
+002BB0 EE                MOV     A,R6
+002BB1 F0                MOVX    @DPTR,A
+002BB2 A3                INC     DPTR
+002BB3 EF                MOV     A,R7
+002BB4 F0                MOVX    @DPTR,A
+   19: 
+   20: #endif
+   21: #ifdef ADC_TYPE_VINLPM
+   22: 		for (i = 0; i < BAT_ARRAY_LEN; i++)
+   23: 		{
+   24: 			g_variable.battery_value[i] = INIT_BATTERY_VALUE_VINLPM;
+   25: 		}
+   26: 		g_variable.battery_level_low = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_2V2+m_adc0vBase;
+   27: 		g_variable.battery_level_shutdown = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_2V0+m_adc0vBase;
+   28: #endif
+   29: #ifdef ADC_TYPE_GPIO
+   30: 	m_adc_channel = ADC_CHANNEL;
+   31: 	for (i = 0; i < BAT_ARRAY_LEN; i++)
+   32: 	{
+   33: 		g_variable.battery_value[i] = INIT_BATTERY_VALUE_GPIO;
+   34: 	}
+   35: 		g_variable.battery_level_low = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_1V1+m_adc0vBase;
+   36: 		g_variable.battery_level_shutdown = (m_adc3vValue - m_adc0vBase)*LOW_BATTER_COEFFICIENT_0V9+m_adc0vBase;
+   37: #endif	
+   38: #endif
+   39: }
+002BB5 22                RET     
+----- FUNCTION YC_adc_init (END) -------
+
+
+----- FUNCTION _bufsize (BEGIN) -----
+002BB6 904E89            MOV     DPTR,#rptr
+002BB9 EE                MOV     A,R6
+002BBA F0                MOVX    @DPTR,A
+002BBB A3                INC     DPTR
+002BBC EF                MOV     A,R7
+002BBD F0                MOVX    @DPTR,A
+002BBE 904E8B            MOV     DPTR,#wptr
+002BC1 EC                MOV     A,R4
+002BC2 F0                MOVX    @DPTR,A
+002BC3 A3                INC     DPTR
+002BC4 ED                MOV     A,R5
+002BC5 F0                MOVX    @DPTR,A
+;---- Variable 'buflen' assigned to Register 'R3' ----
+002BC6 904E8B            MOV     DPTR,#wptr
+002BC9 E0                MOVX    A,@DPTR
+002BCA FE                MOV     R6,A
+002BCB A3                INC     DPTR
+002BCC E0                MOVX    A,@DPTR
+002BCD FF                MOV     R7,A
+002BCE D3                SETB    C
+002BCF 904E8A            MOV     DPTR,#rptr+01H
+002BD2 E0                MOVX    A,@DPTR
+002BD3 9F                SUBB    A,R7
+002BD4 904E89            MOV     DPTR,#rptr
+002BD7 E0                MOVX    A,@DPTR
+002BD8 9E                SUBB    A,R6
+002BD9 4016              JC      ?C0001?IPC
+002BDB 904E8B            MOV     DPTR,#wptr
+002BDE E0                MOVX    A,@DPTR
+002BDF FE                MOV     R6,A
+002BE0 A3                INC     DPTR
+002BE1 E0                MOVX    A,@DPTR
+002BE2 FF                MOV     R7,A
+002BE3 904E8A            MOV     DPTR,#rptr+01H
+002BE6 E0                MOVX    A,@DPTR
+002BE7 9F                SUBB    A,R7
+002BE8 FF                MOV     R7,A
+002BE9 904E89            MOV     DPTR,#rptr
+002BEC E0                MOVX    A,@DPTR
+002BED 9E                SUBB    A,R6
+002BEE FE                MOV     R6,A
+002BEF 801E              SJMP    ?C0002?IPC
+002BF1         ?C0001?IPC:
+002BF1 904E89            MOV     DPTR,#rptr
+002BF4 E0                MOVX    A,@DPTR
+002BF5 FE                MOV     R6,A
+002BF6 A3                INC     DPTR
+002BF7 E0                MOVX    A,@DPTR
+002BF8 FF                MOV     R7,A
+002BF9 C3                CLR     C
+002BFA 904E8C            MOV     DPTR,#wptr+01H
+002BFD E0                MOVX    A,@DPTR
+002BFE 9F                SUBB    A,R7
+002BFF FF                MOV     R7,A
+002C00 904E8B            MOV     DPTR,#wptr
+002C03 E0                MOVX    A,@DPTR
+002C04 9E                SUBB    A,R6
+002C05 FE                MOV     R6,A
+002C06 AD03              MOV     R5,AR3
+002C08 C3                CLR     C
+002C09 EB                MOV     A,R3
+002C0A 9F                SUBB    A,R7
+002C0B FF                MOV     R7,A
+002C0C E4                CLR     A
+002C0D 9E                SUBB    A,R6
+002C0E FE                MOV     R6,A
+002C0F         ?C0002?IPC:
+002C0F 22                RET     
+----- FUNCTION _bufsize (END) -------
+
+
+----- FUNCTION _ipcRx (BEGIN) -----
+002C10 904EAD            MOV     DPTR,#dest
+002C13 EE                MOV     A,R6
+002C14 F0                MOVX    @DPTR,A
+002C15 A3                INC     DPTR
+002C16 EF                MOV     A,R7
+002C17 F0                MOVX    @DPTR,A
+;---- Variable 'len' assigned to Register 'R1' ----
+002C18 A905              MOV     R1,AR5
+002C1A 904B9E            MOV     DPTR,#ipcRxReadPtr
+002C1D E0                MOVX    A,@DPTR
+002C1E FE                MOV     R6,A
+002C1F A3                INC     DPTR
+002C20 E0                MOVX    A,@DPTR
+002C21 FF                MOV     R7,A
+;---- Variable 'src' assigned to Register 'R6/R7' ----
+002C22         ?C0004?IPC:
+002C22 AD01              MOV     R5,AR1
+002C24 19                DEC     R1
+002C25 ED                MOV     A,R5
+002C26 602F              JZ      ?C0005?IPC
+002C28 0F                INC     R7
+002C29 EF                MOV     A,R7
+002C2A AC06              MOV     R4,AR6
+002C2C 7001              JNZ     ?C0036?IPC
+002C2E 0E                INC     R6
+002C2F         ?C0036?IPC:
+002C2F 14                DEC     A
+002C30 F582              MOV     DPL,A
+002C32 8C83              MOV     DPH,R4
+002C34 E0                MOVX    A,@DPTR
+002C35 FD                MOV     R5,A
+002C36 904EAD            MOV     DPTR,#dest
+002C39 E4                CLR     A
+002C3A 75F001            MOV     B,#01H
+002C3D 120479            LCALL   ?C?ILDIX
+002C40 85F082            MOV     DPL,B
+002C43 F583              MOV     DPH,A
+002C45 ED                MOV     A,R5
+002C46 F0                MOVX    @DPTR,A
+002C47 AD07              MOV     R5,AR7
+002C49 AC06              MOV     R4,AR6
+002C4B BC4BD4            CJNE    R4,#04BH,?C0004?IPC
+002C4E BD9AD1            CJNE    R5,#09AH,?C0004?IPC
+002C51 7E4B              MOV     R6,#04BH
+002C53 7F36              MOV     R7,#036H
+002C55 80CB              SJMP    ?C0004?IPC
+002C57         ?C0005?IPC:
+002C57 904B9E            MOV     DPTR,#ipcRxReadPtr
+002C5A EE                MOV     A,R6
+002C5B F0                MOVX    @DPTR,A
+002C5C A3                INC     DPTR
+002C5D EF                MOV     A,R7
+002C5E F0                MOVX    @DPTR,A
+002C5F 22                RET     
+----- FUNCTION _ipcRx (END) -------
+
+
+----- FUNCTION IPC_DealSingleStep (BEGIN) -----
+002C60 7A0C              MOV     R2,#HIGH ipcReadBuff
+002C62 794B              MOV     R1,#LOW ipcReadBuff
+002C64 904E9D            MOV     DPTR,#pbuff
+002C67 7401              MOV     A,#01H
+002C69 F0                MOVX    @DPTR,A
+002C6A A3                INC     DPTR
+002C6B 740C              MOV     A,#HIGH ipcReadBuff
+002C6D F0                MOVX    @DPTR,A
+002C6E A3                INC     DPTR
+002C6F 744B              MOV     A,#LOW ipcReadBuff
+002C71 F0                MOVX    @DPTR,A
+002C72 904BA0            MOV     DPTR,#ipcRxWritePtr
+002C75 E0                MOVX    A,@DPTR
+002C76 FE                MOV     R6,A
+002C77 A3                INC     DPTR
+002C78 E0                MOVX    A,@DPTR
+002C79 FF                MOV     R7,A
+002C7A 904B9E            MOV     DPTR,#ipcRxReadPtr
+002C7D E0                MOVX    A,@DPTR
+002C7E 6E                XRL     A,R6
+002C7F 7003              JNZ     ?C0038?IPC
+002C81 A3                INC     DPTR
+002C82 E0                MOVX    A,@DPTR
+002C83 6F                XRL     A,R7
+002C84         ?C0038?IPC:
+002C84 6046              JZ      ?C0029?IPC
+002C86         ?C0023?IPC:
+002C86 7E0C              MOV     R6,#HIGH ipcReadBuff
+002C88 7F4B              MOV     R7,#LOW ipcReadBuff
+002C8A 7D03              MOV     R5,#03H
+002C8C 9110              ACALL   _ipcRx
+002C8E 904E9D            MOV     DPTR,#pbuff
+002C91 E0                MOVX    A,@DPTR
+002C92 FB                MOV     R3,A
+002C93 A3                INC     DPTR
+002C94 E0                MOVX    A,@DPTR
+002C95 FA                MOV     R2,A
+002C96 A3                INC     DPTR
+002C97 E0                MOVX    A,@DPTR
+002C98 F9                MOV     R1,A
+002C99 1203B6            LCALL   ?C?CLDPTR
+002C9C B4022B            CJNE    A,#02H,?C0027?IPC
+002C9F 904E9E            MOV     DPTR,#pbuff+01H
+002CA2 E4                CLR     A
+002CA3 75F002            MOV     B,#02H
+002CA6 120463            LCALL   ?C?IILDX
+002CA9 904E9D            MOV     DPTR,#pbuff
+002CAC E0                MOVX    A,@DPTR
+002CAD FB                MOV     R3,A
+002CAE A3                INC     DPTR
+002CAF E0                MOVX    A,@DPTR
+002CB0 FA                MOV     R2,A
+002CB1 A3                INC     DPTR
+002CB2 E0                MOVX    A,@DPTR
+002CB3 F9                MOV     R1,A
+002CB4 1203B6            LCALL   ?C?CLDPTR
+002CB7 FF                MOV     R7,A
+002CB8 904E14            MOV     DPTR,#ipcCb
+002CBB E0                MOVX    A,@DPTR
+002CBC A3                INC     DPTR
+002CBD E0                MOVX    A,@DPTR
+002CBE FA                MOV     R2,A
+002CBF A3                INC     DPTR
+002CC0 E0                MOVX    A,@DPTR
+002CC1 F582              MOV     DPL,A
+002CC3 8A83              MOV     DPH,R2
+002CC5 1205E3            LCALL   ?C?ICALL2
+002CC8 8002              SJMP    ?C0029?IPC
+002CCA         ?C0027?IPC:
+002CCA 80FE              SJMP    ?C0027?IPC
+002CCC         IPC_TIMER:
+002CCC         ?C0029?IPC:
+002CCC 904BA5            MOV     DPTR,#bttimer
+002CCF E0                MOVX    A,@DPTR
+002CD0 FE                MOV     R6,A
+002CD1 A3                INC     DPTR
+002CD2 E0                MOVX    A,@DPTR
+002CD3 FF                MOV     R7,A
+002CD4 904C5E            MOV     DPTR,#c51timer
+002CD7 E0                MOVX    A,@DPTR
+002CD8 6E                XRL     A,R6
+002CD9 7003              JNZ     ?C0039?IPC
+002CDB A3                INC     DPTR
+002CDC E0                MOVX    A,@DPTR
+002CDD 6F                XRL     A,R7
+002CDE         ?C0039?IPC:
+002CDE 6022              JZ      ?C0033?IPC
+002CE0 904E1A            MOV     DPTR,#ipcCb+06H
+002CE3 E0                MOVX    A,@DPTR
+002CE4 FB                MOV     R3,A
+002CE5 A3                INC     DPTR
+002CE6 E0                MOVX    A,@DPTR
+002CE7 FA                MOV     R2,A
+002CE8 A3                INC     DPTR
+002CE9 E0                MOVX    A,@DPTR
+002CEA F9                MOV     R1,A
+002CEB 4A                ORL     A,R2
+002CEC 6037              JZ      ?C0032?IPC
+002CEE         ?C0031?IPC:
+002CEE 1205DF            LCALL   ?C?ICALL
+002CF1 904BA5            MOV     DPTR,#bttimer
+002CF4 E0                MOVX    A,@DPTR
+002CF5 FF                MOV     R7,A
+002CF6 A3                INC     DPTR
+002CF7 E0                MOVX    A,@DPTR
+002CF8 904C5E            MOV     DPTR,#c51timer
+002CFB CF                XCH     A,R7
+002CFC F0                MOVX    @DPTR,A
+002CFD A3                INC     DPTR
+002CFE EF                MOV     A,R7
+002CFF F0                MOVX    @DPTR,A
+002D00 80CA              SJMP    ?C0029?IPC
+002D02         ?C0033?IPC:
+002D02 904C8D            MOV     DPTR,#btstimer
+002D05 E0                MOVX    A,@DPTR
+002D06 FF                MOV     R7,A
+002D07 A3                INC     DPTR
+002D08 E0                MOVX    A,@DPTR
+002D09 6F                XRL     A,R7
+002D0A 6019              JZ      ?C0032?IPC
+002D0C 904E1D            MOV     DPTR,#ipcCb+09H
+002D0F E0                MOVX    A,@DPTR
+002D10 FB                MOV     R3,A
+002D11 A3                INC     DPTR
+002D12 E0                MOVX    A,@DPTR
+002D13 FA                MOV     R2,A
+002D14 A3                INC     DPTR
+002D15 E0                MOVX    A,@DPTR
+002D16 F9                MOV     R1,A
+002D17 4A                ORL     A,R2
+002D18 600B              JZ      ?C0032?IPC
+002D1A         ?C0035?IPC:
+002D1A 1205DF            LCALL   ?C?ICALL
+002D1D 904C8D            MOV     DPTR,#btstimer
+002D20 E0                MOVX    A,@DPTR
+002D21 A3                INC     DPTR
+002D22 F0                MOVX    @DPTR,A
+002D23 80DD              SJMP    ?C0033?IPC
+002D25         ?C0032?IPC:
+002D25 22                RET     
+----- FUNCTION IPC_DealSingleStep (END) -------
+
+
+----- FUNCTION IPC_GetBBDIsconnectReason (BEGIN) -----
+002D26 900446            MOV     DPTR,#bbDisReason
+002D29 E0                MOVX    A,@DPTR
+002D2A FF                MOV     R7,A
+002D2B 22                RET     
+----- FUNCTION IPC_GetBBDIsconnectReason (END) -------
+
+
+----- FUNCTION IPC_AbandonLpm (BEGIN) -----
+002D2C 900B7F            MOV     DPTR,#lpm_flag
+002D2F 7401              MOV     A,#01H
+002D31 F0                MOVX    @DPTR,A
+002D32 E4                CLR     A
+002D33 900B7E            MOV     DPTR,#current_task
+002D36 F0                MOVX    @DPTR,A
+002D37 22                RET     
+----- FUNCTION IPC_AbandonLpm (END) -------
+
+
+----- FUNCTION YC_Ice_break (BEGIN) -----
+002D38 908280            MOV     DPTR,#08280H
+002D3B 7401              MOV     A,#01H
+002D3D F0                MOVX    @DPTR,A
+002D3E 22                RET     
+----- FUNCTION YC_Ice_break (END) -------
+
+
+----- FUNCTION _dmemcpy (BEGIN) -----
+002D3F 904E48            MOV     DPTR,#dest
+002D42 EB                MOV     A,R3
+002D43 F0                MOVX    @DPTR,A
+002D44 A3                INC     DPTR
+002D45 EA                MOV     A,R2
+002D46 F0                MOVX    @DPTR,A
+002D47 A3                INC     DPTR
+002D48 E9                MOV     A,R1
+002D49 F0                MOVX    @DPTR,A
+002D4A         ?C0005?UTILITIES:
+002D4A 904E4E            MOV     DPTR,#len
+002D4D 74FF              MOV     A,#0FFH
+002D4F F5F0              MOV     B,A
+002D51 120479            LCALL   ?C?ILDIX
+002D54 45F0              ORL     A,B
+002D56 602A              JZ      ?C0007?UTILITIES
+002D58 904E4B            MOV     DPTR,#src
+002D5B E0                MOVX    A,@DPTR
+002D5C FB                MOV     R3,A
+002D5D A3                INC     DPTR
+002D5E E4                CLR     A
+002D5F 75F001            MOV     B,#01H
+002D62 120479            LCALL   ?C?ILDIX
+002D65 A9F0              MOV     R1,B
+002D67 FA                MOV     R2,A
+002D68 1203B6            LCALL   ?C?CLDPTR
+002D6B FF                MOV     R7,A
+002D6C 904E48            MOV     DPTR,#dest
+002D6F E0                MOVX    A,@DPTR
+002D70 FB                MOV     R3,A
+002D71 A3                INC     DPTR
+002D72 E4                CLR     A
+002D73 75F001            MOV     B,#01H
+002D76 120479            LCALL   ?C?ILDIX
+002D79 A9F0              MOV     R1,B
+002D7B FA                MOV     R2,A
+002D7C EF                MOV     A,R7
+002D7D 1203FC            LCALL   ?C?CSTPTR
+002D80 80C8              SJMP    ?C0005?UTILITIES
+002D82         ?C0007?UTILITIES:
+002D82 22                RET     
+----- FUNCTION _dmemcpy (END) -------
+
+
+----- FUNCTION _xmemclear_ff (BEGIN) -----
+002D83 904EA3            MOV     DPTR,#dest
+002D86 EB                MOV     A,R3
+002D87 F0                MOVX    @DPTR,A
+002D88 A3                INC     DPTR
+002D89 EA                MOV     A,R2
+002D8A F0                MOVX    @DPTR,A
+002D8B A3                INC     DPTR
+002D8C E9                MOV     A,R1
+002D8D F0                MOVX    @DPTR,A
+;---- Variable 'len' assigned to Register 'R4/R5' ----
+002D8E         ?C0011?UTILITIES:
+002D8E ED                MOV     A,R5
+002D8F 1D                DEC     R5
+002D90 AE04              MOV     R6,AR4
+002D92 7001              JNZ     ?C0027?UTILITIES
+002D94 1C                DEC     R4
+002D95         ?C0027?UTILITIES:
+002D95 4E                ORL     A,R6
+002D96 6017              JZ      ?C0013?UTILITIES
+002D98 904EA3            MOV     DPTR,#dest
+002D9B E0                MOVX    A,@DPTR
+002D9C FB                MOV     R3,A
+002D9D A3                INC     DPTR
+002D9E E4                CLR     A
+002D9F 75F001            MOV     B,#01H
+002DA2 120479            LCALL   ?C?ILDIX
+002DA5 A9F0              MOV     R1,B
+002DA7 FA                MOV     R2,A
+002DA8 74FF              MOV     A,#0FFH
+002DAA 1203FC            LCALL   ?C?CSTPTR
+002DAD 80DF              SJMP    ?C0011?UTILITIES
+002DAF         ?C0013?UTILITIES:
+002DAF 22                RET     
+----- FUNCTION _xmemclear_ff (END) -------
+
+
+----- FUNCTION _GPIO_ClearWakeup (BEGIN) -----
+;---- Variable 'gpio_num' assigned to Register 'R7' ----
+002DB0 EF                MOV     A,R7
+002DB1 F4                CPL     A
+002DB2 603A              JZ      ?C0023?GPIO
+002DB4         ?C0022?GPIO:
+002DB4 EF                MOV     A,R7
+002DB5 5407              ANL     A,#07H
+002DB7 FE                MOV     R6,A
+;---- Variable 'queue' assigned to Register 'R6' ----
+002DB8 EF                MOV     A,R7
+002DB9 13                RRC     A
+002DBA 13                RRC     A
+002DBB 13                RRC     A
+002DBC 5403              ANL     A,#03H
+002DBE FF                MOV     R7,A
+;---- Variable 'group' assigned to Register 'R7' ----
+002DBF 24A3              ADD     A,#LOW YC_GPIOWakeupL
+002DC1 F582              MOV     DPL,A
+002DC3 E4                CLR     A
+002DC4 3400              ADDC    A,#HIGH YC_GPIOWakeupL
+002DC6 F583              MOV     DPH,A
+002DC8 C083              PUSH    DPH
+002DCA C082              PUSH    DPL
+002DCC E0                MOVX    A,@DPTR
+002DCD FD                MOV     R5,A
+002DCE 7401              MOV     A,#01H
+002DD0 A806              MOV     R0,AR6
+002DD2 08                INC     R0
+002DD3 8002              SJMP    ?C0043?GPIO
+002DD5         ?C0042?GPIO:
+002DD5 C3                CLR     C
+002DD6 33                RLC     A
+002DD7         ?C0043?GPIO:
+002DD7 D8FC              DJNZ    R0,?C0042?GPIO
+002DD9 F4                CPL     A
+002DDA FC                MOV     R4,A
+002DDB 5D                ANL     A,R5
+002DDC D082              POP     DPL
+002DDE D083              POP     DPH
+002DE0 F0                MOVX    @DPTR,A
+002DE1 74A7              MOV     A,#LOW YC_GPIOWakeupH
+002DE3 2F                ADD     A,R7
+002DE4 F582              MOV     DPL,A
+002DE6 E4                CLR     A
+002DE7 3400              ADDC    A,#HIGH YC_GPIOWakeupH
+002DE9 F583              MOV     DPH,A
+002DEB E0                MOVX    A,@DPTR
+002DEC 5C                ANL     A,R4
+002DED F0                MOVX    @DPTR,A
+002DEE         ?C0023?GPIO:
+002DEE 22                RET     
+----- FUNCTION _GPIO_ClearWakeup (END) -------
+
+
Index: output/FW.HTM
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/FW.HTM	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/FW.HTM	(working copy)
@@ -0,0 +1,1109 @@
+<!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 (BLUETOOTH)</h1>
+
+<p class="TinyT">
+Created from: <b>LX51 LINKER/LOCATER V4.41</b><br>
+Creation time: <b>03/24/2022  19:13:33</b><p>
+
+<hr>
+
+
+<h2><a name="S6"></a>?PR?YC_START_RECONNECT?BLUETOOTH (C:001005H - C:00100FH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S44">?PR?_YC_KEY_ACTION_HANDLE?KB_PROCESS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S44">?PR?_YC_KEY_ACTION_HANDLE?KB_PROCESS</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S96">?PR?_KB_CB_EVENT?SYS</a></li>
+</ul>
+
+<h2><a name="S69"></a>?PR?KSCOLINITIALIZE?KEYSCAN (C:002270H - C:00228DH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=8 Bytes (<a href="#S178">?PR?_GPIO_SETINPUT?GPIO</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S178">?PR?_GPIO_SETINPUT?GPIO</a></li>
+</ul>
+
+<h2><a name="S91"></a>?PR?SYSTEM_HARDWARE_RESET?SYS (C:0027A9H - C:0027B1H)</h2>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S93">?PR?SYSTEM_RESET_CONNECT?SYS</a></li>
+</ul>
+
+<h2><a name="S93"></a>?PR?SYSTEM_RESET_CONNECT?SYS (C:0027B2H - C:0027B3H)</h2>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S91">?PR?SYSTEM_HARDWARE_RESET?SYS</a></li>
+</ul>
+
+<h2><a name="S94"></a>?PR?_KB_CB_HID?SYS (C:0027B4H - C:0027C3H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S203">?C?LIB_CODE</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+</ul>
+
+<h2><a name="S96"></a>?PR?_KB_CB_EVENT?SYS (C:000A45H - C:000B20H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=14 Bytes (<a href="#S89">?PR?SYSTEM_HARDWARE_INIT?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S161">?PR?_DELAY1MS?UTILITIES</a></li>
+<li><a href="#S180">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+<li><a href="#S195">?PR?_IIC_READ?IIC</a></li>
+<li><a href="#S82">?PR?_LED_DEVICE_LINE_CONTROL?LED</a></li>
+<li><a href="#S44">?PR?_YC_KEY_ACTION_HANDLE?KB_PROCESS</a></li>
+<li><a href="#S71">?PR?KS_INITIALIZE?KEYSCAN</a></li>
+<li><a href="#S89">?PR?SYSTEM_HARDWARE_INIT?SYS</a></li>
+<li><a href="#S88">?PR?SYSTEM_IIC_CLK_SETUP?SYS</a></li>
+<li><a href="#S92">?PR?SYSTEM_LONG_SLEEP?SYS</a></li>
+<li><a href="#S90">?PR?SYSTEM_SOFTWARE_INIT?SYS</a></li>
+<li><a href="#S4">?PR?YC_CLEAR_RECONNECT_FLAG?BLUETOOTH</a></li>
+<li><a href="#S6">?PR?YC_START_RECONNECT?BLUETOOTH</a></li>
+<li><a href="#S7">?PR?YC_UPDATE_EEPROM_DATA?BLUETOOTH</a></li>
+</ul>
+
+<h2><a name="S100"></a>?PR?YC_PAIRING_TIMEROUT_500MS?SYS (C:002846H - C:002864H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=10 Bytes (<a href="#S92">?PR?SYSTEM_LONG_SLEEP?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S161">?PR?_DELAY1MS?UTILITIES</a></li>
+<li><a href="#S92">?PR?SYSTEM_LONG_SLEEP?SYS</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S102">?PR?KB_CB_TIMER500MS?SYS</a></li>
+</ul>
+
+<h2><a name="S102"></a>?PR?KB_CB_TIMER500MS?SYS (C:002865H - C:00287FH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=14 Bytes (<a href="#S99">?PR?YC_CONNECT_TIMEOUT_500MS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S101">?PR?KB_BUTTON_PRESS_TIMER500MS?SYS</a></li>
+<li><a href="#S98">?PR?LED_TIMER500MS?SYS</a></li>
+<li><a href="#S111">?PR?YC_ADC_CHECK_TIMER500MS?ADC</a></li>
+<li><a href="#S99">?PR?YC_CONNECT_TIMEOUT_500MS?SYS</a></li>
+<li><a href="#S100">?PR?YC_PAIRING_TIMEROUT_500MS?SYS</a></li>
+</ul>
+
+<h2><a name="S103"></a>?PR?KB_CB_TIMER100MS?SYS (C:002A2DH - C:002AE5H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=12 Bytes (<a href="#S86">?PR?BACKLIGHT_LED_PROCESS?LED</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S170">?PR?_GPIO_SETOUT?GPIO</a></li>
+<li><a href="#S46">?PR?_IPC_TXHIDDATA?KB_PROCESS</a></li>
+<li><a href="#S86">?PR?BACKLIGHT_LED_PROCESS?LED</a></li>
+</ul>
+
+<h2><a name="S105"></a>?PR?YC_SYSTEM_MAIN?SYS (C:000F80H - C:000FD5H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=16 Bytes (<a href="#S55">?PR?KB_NEED_KEYSCAN?KB_PROCESS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S131">?PR?IPC_ABANDONLPM?IPC</a></li>
+<li><a href="#S133">?PR?IPC_DEALSINGLESTEP?IPC</a></li>
+<li><a href="#S130">?PR?IPC_WAITLPM?IPC</a></li>
+<li><a href="#S104">?PR?KB_CB_INIT?SYS</a></li>
+<li><a href="#S55">?PR?KB_NEED_KEYSCAN?KB_PROCESS</a></li>
+<li><a href="#S72">?PR?KS_UNISTALL?KEYSCAN</a></li>
+<li><a href="#S81">?PR?LED_ALL_SHUTDOWN?LED</a></li>
+<li><a href="#S84">?PR?LED_HANDLE?LED</a></li>
+<li><a href="#S92">?PR?SYSTEM_LONG_SLEEP?SYS</a></li>
+<li><a href="#S116">?PR?YC_PWM_DISABLE?PWM</a></li>
+<li><a href="#S7">?PR?YC_UPDATE_EEPROM_DATA?BLUETOOTH</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S112">?PR?MAIN?RAM</a></li>
+</ul>
+
+<h2><a name="S112"></a>?PR?MAIN?RAM (C:000FF0H - C:000FF1H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=16 Bytes (<a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S121"></a>?PR?_IPCTX?IPC (C:0008F6H - C:00098AH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S117">?PR?_BUFSIZE?IPC</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+<li><a href="#S117">?PR?_BUFSIZE?IPC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S125">?PR?_IPC_TXDATA?IPC</a></li>
+</ul>
+
+<h2><a name="S125"></a>?PR?_IPC_TXDATA?IPC (C:0017D7H - C:0017FCH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S153">?PR?_XMEMCPY?UTILITIES</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S121">?PR?_IPCTX?IPC</a></li>
+<li><a href="#S153">?PR?_XMEMCPY?UTILITIES</a></li>
+</ul>
+
+<h2><a name="S129"></a>?PR?_IPC_INITIALIZE?IPC (C:002AECH - C:002AF8H)</h2>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+</ul>
+
+<h2><a name="S159"></a>?PR?_XMEMCLEAR_FF?UTILITIES (C:002D83H - C:002DAFH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S203">?C?LIB_CODE</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+</ul>
+
+<h2><a name="S188"></a>?PR?_GPIO_FLIPOUTBIT?GPIO (C:0024BCH - C:0024D7H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S167">?PR?_GPIOGETBIT?GPIO</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S170">?PR?_GPIO_SETOUT?GPIO</a></li>
+<li><a href="#S167">?PR?_GPIOGETBIT?GPIO</a></li>
+</ul>
+
+<h2><a name="S2"></a>?PR?YC_CHECK_IS_CONNECTED?BLUETOOTH (C:00073DH - C:000749H)</h2>
+<p><br><b>Maximum Stack:</b> Top=4 Bytes (<a href="#S84">?PR?LED_HANDLE?LED</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S84">?PR?LED_HANDLE?LED</a></li>
+</ul>
+
+<h2><a name="S3"></a>?PR?YC_CHECK_NEED_RECONNECTED?BLUETOOTH (C:0007F0H - C:000824H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=8 Bytes (<a href="#S44">?PR?_YC_KEY_ACTION_HANDLE?KB_PROCESS</a>) Top=8 Bytes (<a href="#S46">?PR?_IPC_TXHIDDATA?KB_PROCESS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S44">?PR?_YC_KEY_ACTION_HANDLE?KB_PROCESS</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S46">?PR?_IPC_TXHIDDATA?KB_PROCESS</a></li>
+</ul>
+
+<h2><a name="S4"></a>?PR?YC_CLEAR_RECONNECT_FLAG?BLUETOOTH (C:000FE3H - C:000FE8H)</h2>
+<p><br><b>Maximum Stack:</b> Top=2 Bytes (<a href="#S96">?PR?_KB_CB_EVENT?SYS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S96">?PR?_KB_CB_EVENT?SYS</a></li>
+</ul>
+
+<h2><a name="S5"></a>?PR?YC_DISCONNECT_ALL_LINK?BLUETOOTH (C:00098BH - C:0009A1H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S123">?PR?_IPC_TXCONTROLCMD?IPC</a>) Top=12 Bytes (<a href="#S44">?PR?_YC_KEY_ACTION_HANDLE?KB_PROCESS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S123">?PR?_IPC_TXCONTROLCMD?IPC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S44">?PR?_YC_KEY_ACTION_HANDLE?KB_PROCESS</a></li>
+<li><a href="#S101">?PR?KB_BUTTON_PRESS_TIMER500MS?SYS</a></li>
+</ul>
+
+<h2><a name="S7"></a>?PR?YC_UPDATE_EEPROM_DATA?BLUETOOTH (C:001010H - C:001053H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=8 Bytes (<a href="#S199">?PR?_IIC_WRITEBLOCK?IIC</a>) Top=2 Bytes (<a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S161">?PR?_DELAY1MS?UTILITIES</a></li>
+<li><a href="#S170">?PR?_GPIO_SETOUT?GPIO</a></li>
+<li><a href="#S199">?PR?_IIC_WRITEBLOCK?IIC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S96">?PR?_KB_CB_EVENT?SYS</a></li>
+<li><a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S44"></a>?PR?_YC_KEY_ACTION_HANDLE?KB_PROCESS (C:000825H - C:0008CDH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S5">?PR?YC_DISCONNECT_ALL_LINK?BLUETOOTH</a>) Top=10 Bytes (<a href="#S3">?PR?YC_CHECK_NEED_RECONNECTED?BLUETOOTH</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S161">?PR?_DELAY1MS?UTILITIES</a></li>
+<li><a href="#S195">?PR?_IIC_READ?IIC</a></li>
+<li><a href="#S123">?PR?_IPC_TXCONTROLCMD?IPC</a></li>
+<li><a href="#S5">?PR?YC_DISCONNECT_ALL_LINK?BLUETOOTH</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S96">?PR?_KB_CB_EVENT?SYS</a></li>
+<li><a href="#S101">?PR?KB_BUTTON_PRESS_TIMER500MS?SYS</a></li>
+<li><a href="#S3">?PR?YC_CHECK_NEED_RECONNECTED?BLUETOOTH</a></li>
+<li><a href="#S6">?PR?YC_START_RECONNECT?BLUETOOTH</a></li>
+</ul>
+
+<h2><a name="S46"></a>?PR?_IPC_TXHIDDATA?KB_PROCESS (C:0015A2H - C:001655H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=10 Bytes (<a href="#S3">?PR?YC_CHECK_NEED_RECONNECTED?BLUETOOTH</a>) Top=6 Bytes (<a href="#S56">?PR?_KB_MOTION_KEYSCAN?KB_PROCESS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+<li><a href="#S127">?PR?_IPC_TX24GDATA?IPC</a></li>
+<li><a href="#S3">?PR?YC_CHECK_NEED_RECONNECTED?BLUETOOTH</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S56">?PR?_KB_MOTION_KEYSCAN?KB_PROCESS</a></li>
+<li><a href="#S50">?PR?_KB_SEND_COMBINATION_KEY?KB_PROCESS</a></li>
+<li><a href="#S52">?PR?KB_24G_GET_LED_STATUS?KB_PROCESS</a></li>
+<li><a href="#S103">?PR?KB_CB_TIMER100MS?SYS</a></li>
+<li><a href="#S99">?PR?YC_CONNECT_TIMEOUT_500MS?SYS</a></li>
+</ul>
+
+<h2><a name="S48"></a>?PR?_KB_SET_MULTIKEY?KB_PROCESS (C:0017FDH - C:001817H)</h2>
+<p><br><b>Maximum Stack:</b> Top=8 Bytes (<a href="#S61">?PR?_KB_MULTIKEY_SETUP?KB_PROCESS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S61">?PR?_KB_MULTIKEY_SETUP?KB_PROCESS</a></li>
+</ul>
+
+<h2><a name="S49"></a>?PR?_KB_SET_SYSTEMKEY?KB_PROCESS (C:001AC5H - C:001ADFH)</h2>
+<p><br><b>Maximum Stack:</b> Top=8 Bytes (<a href="#S61">?PR?_KB_MULTIKEY_SETUP?KB_PROCESS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S61">?PR?_KB_MULTIKEY_SETUP?KB_PROCESS</a></li>
+</ul>
+
+<h2><a name="S50"></a>?PR?_KB_SEND_COMBINATION_KEY?KB_PROCESS (C:001713H - C:00174CH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=10 Bytes (<a href="#S46">?PR?_IPC_TXHIDDATA?KB_PROCESS</a>) Top=4 Bytes (<a href="#S55">?PR?KB_NEED_KEYSCAN?KB_PROCESS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S46">?PR?_IPC_TXHIDDATA?KB_PROCESS</a></li>
+<li><a href="#S157">?PR?_XMEMCLEAR?UTILITIES</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S55">?PR?KB_NEED_KEYSCAN?KB_PROCESS</a></li>
+</ul>
+
+<h2><a name="S52"></a>?PR?KB_24G_GET_LED_STATUS?KB_PROCESS (C:001AE0H - C:001B1DH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=12 Bytes (<a href="#S46">?PR?_IPC_TXHIDDATA?KB_PROCESS</a>) Top=2 Bytes (<a href="#S53">?PR?KB_MOTION?KB_PROCESS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S46">?PR?_IPC_TXHIDDATA?KB_PROCESS</a></li>
+<li><a href="#S157">?PR?_XMEMCLEAR?UTILITIES</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S53">?PR?KB_MOTION?KB_PROCESS</a></li>
+</ul>
+
+<h2><a name="S53"></a>?PR?KB_MOTION?KB_PROCESS (C:001B1EH - C:001B50H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=14 Bytes (<a href="#S56">?PR?_KB_MOTION_KEYSCAN?KB_PROCESS</a>) Top=2 Bytes (<a href="#S55">?PR?KB_NEED_KEYSCAN?KB_PROCESS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S56">?PR?_KB_MOTION_KEYSCAN?KB_PROCESS</a></li>
+<li><a href="#S132">?PR?IPC_ISTXBUFFEMPTY?IPC</a></li>
+<li><a href="#S52">?PR?KB_24G_GET_LED_STATUS?KB_PROCESS</a></li>
+<li><a href="#S78">?PR?KS_GETCURRENTEVT?KEYSCAN</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S55">?PR?KB_NEED_KEYSCAN?KB_PROCESS</a></li>
+</ul>
+
+<h2><a name="S55"></a>?PR?KB_NEED_KEYSCAN?KB_PROCESS (C:00174DH - C:0017D0H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=14 Bytes (<a href="#S53">?PR?KB_MOTION?KB_PROCESS</a>) Top=2 Bytes (<a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S50">?PR?_KB_SEND_COMBINATION_KEY?KB_PROCESS</a></li>
+<li><a href="#S53">?PR?KB_MOTION?KB_PROCESS</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S56"></a>?PR?_KB_MOTION_KEYSCAN?KB_PROCESS (C:001293H - C:0015A1H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=12 Bytes (<a href="#S46">?PR?_IPC_TXHIDDATA?KB_PROCESS</a>) Top=4 Bytes (<a href="#S53">?PR?KB_MOTION?KB_PROCESS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+<li><a href="#S46">?PR?_IPC_TXHIDDATA?KB_PROCESS</a></li>
+<li><a href="#S61">?PR?_KB_MULTIKEY_SETUP?KB_PROCESS</a></li>
+<li><a href="#S157">?PR?_XMEMCLEAR?UTILITIES</a></li>
+<li><a href="#S153">?PR?_XMEMCPY?UTILITIES</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S53">?PR?KB_MOTION?KB_PROCESS</a></li>
+</ul>
+
+<h2><a name="S59"></a>?PR?_KEY_FN_FUNCTION?KB_PROCESS (C:001FFCH - C:002247H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S203">?C?LIB_CODE</a>) Top=6 Bytes (<a href="#S78">?PR?KS_GETCURRENTEVT?KEYSCAN</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S78">?PR?KS_GETCURRENTEVT?KEYSCAN</a></li>
+</ul>
+
+<h2><a name="S61"></a>?PR?_KB_MULTIKEY_SETUP?KB_PROCESS (C:001818H - C:001AC4H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S203">?C?LIB_CODE</a>) Top=6 Bytes (<a href="#S56">?PR?_KB_MOTION_KEYSCAN?KB_PROCESS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+<li><a href="#S48">?PR?_KB_SET_MULTIKEY?KB_PROCESS</a></li>
+<li><a href="#S49">?PR?_KB_SET_SYSTEMKEY?KB_PROCESS</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S56">?PR?_KB_MOTION_KEYSCAN?KB_PROCESS</a></li>
+</ul>
+
+<h2><a name="S63"></a>?PR?_BIT_COUNT?KEYSCAN (C:001D9DH - C:001DAAH)</h2>
+<p><br><b>Maximum Stack:</b> Top=6 Bytes (<a href="#S78">?PR?KS_GETCURRENTEVT?KEYSCAN</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S78">?PR?KS_GETCURRENTEVT?KEYSCAN</a></li>
+</ul>
+
+<h2><a name="S64"></a>?PR?_KEYIN?KEYSCAN (C:001E3DH - C:001EF5H)</h2>
+<p><br><b>Maximum Stack:</b> Top=6 Bytes (<a href="#S78">?PR?KS_GETCURRENTEVT?KEYSCAN</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S78">?PR?KS_GETCURRENTEVT?KEYSCAN</a></li>
+</ul>
+
+<h2><a name="S65"></a>?PR?_KEYOUT?KEYSCAN (C:001EF6H - C:001FD6H)</h2>
+<p><br><b>Maximum Stack:</b> Top=6 Bytes (<a href="#S78">?PR?KS_GETCURRENTEVT?KEYSCAN</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S78">?PR?KS_GETCURRENTEVT?KEYSCAN</a></li>
+</ul>
+
+<h2><a name="S67"></a>?PR?KSRAWINITIALIZE?KEYSCAN (C:002248H - C:002264H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=8 Bytes (<a href="#S178">?PR?_GPIO_SETINPUT?GPIO</a>) Top=6 Bytes (<a href="#S71">?PR?KS_INITIALIZE?KEYSCAN</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S178">?PR?_GPIO_SETINPUT?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S71">?PR?KS_INITIALIZE?KEYSCAN</a></li>
+</ul>
+
+<h2><a name="S71"></a>?PR?KS_INITIALIZE?KEYSCAN (C:002265H - C:00226FH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=10 Bytes (<a href="#S67">?PR?KSRAWINITIALIZE?KEYSCAN</a>) Top=4 Bytes (<a href="#S89">?PR?SYSTEM_HARDWARE_INIT?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S67">?PR?KSRAWINITIALIZE?KEYSCAN</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S96">?PR?_KB_CB_EVENT?SYS</a></li>
+<li><a href="#S89">?PR?SYSTEM_HARDWARE_INIT?SYS</a></li>
+</ul>
+
+<h2><a name="S72"></a>?PR?KS_UNISTALL?KEYSCAN (C:002340H - C:0023D7H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S185">?PR?_GPIO_SETWAKEUPBYCURRENTSTATE?GPIO</a>) Top=2 Bytes (<a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S185">?PR?_GPIO_SETWAKEUPBYCURRENTSTATE?GPIO</a></li>
+<li><a href="#S191">?PR?GPIO_FILLPD?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S74"></a>?PR?KS_SCANMATRIX?KEYSCAN (C:00250CH - C:002669H)</h2>
+<p><br><b>Maximum Stack:</b> Top=6 Bytes (<a href="#S78">?PR?KS_GETCURRENTEVT?KEYSCAN</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S78">?PR?KS_GETCURRENTEVT?KEYSCAN</a></li>
+</ul>
+
+<h2><a name="S76"></a>?PR?_ARRAY_IS_EMPTY?KEYSCAN (C:001DC3H - C:001DF2H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S203">?C?LIB_CODE</a>) Top=6 Bytes (<a href="#S78">?PR?KS_GETCURRENTEVT?KEYSCAN</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S78">?PR?KS_GETCURRENTEVT?KEYSCAN</a></li>
+</ul>
+
+<h2><a name="S78"></a>?PR?KS_GETCURRENTEVT?KEYSCAN (C:001B51H - C:001D9CH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S74">?PR?KS_SCANMATRIX?KEYSCAN</a>) Top=4 Bytes (<a href="#S53">?PR?KB_MOTION?KB_PROCESS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S76">?PR?_ARRAY_IS_EMPTY?KEYSCAN</a></li>
+<li><a href="#S63">?PR?_BIT_COUNT?KEYSCAN</a></li>
+<li><a href="#S162">?PR?_COMPARE_STR?UTILITIES</a></li>
+<li><a href="#S59">?PR?_KEY_FN_FUNCTION?KB_PROCESS</a></li>
+<li><a href="#S64">?PR?_KEYIN?KEYSCAN</a></li>
+<li><a href="#S65">?PR?_KEYOUT?KEYSCAN</a></li>
+<li><a href="#S74">?PR?KS_SCANMATRIX?KEYSCAN</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S53">?PR?KB_MOTION?KB_PROCESS</a></li>
+</ul>
+
+<h2><a name="S81"></a>?PR?LED_ALL_SHUTDOWN?LED (C:000EC7H - C:000EE6H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=8 Bytes (<a href="#S180">?PR?_GPIO_SETOUTPUT?GPIO</a>) Top=4 Bytes (<a href="#S92">?PR?SYSTEM_LONG_SLEEP?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S180">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+<li><a href="#S82">?PR?_LED_DEVICE_LINE_CONTROL?LED</a></li>
+<li><a href="#S116">?PR?YC_PWM_DISABLE?PWM</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S89">?PR?SYSTEM_HARDWARE_INIT?SYS</a></li>
+<li><a href="#S92">?PR?SYSTEM_LONG_SLEEP?SYS</a></li>
+<li><a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S82"></a>?PR?_LED_DEVICE_LINE_CONTROL?LED (C:000B21H - C:000B5FH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=8 Bytes (<a href="#S180">?PR?_GPIO_SETOUTPUT?GPIO</a>) Top=4 Bytes (<a href="#S98">?PR?LED_TIMER500MS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S180">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S96">?PR?_KB_CB_EVENT?SYS</a></li>
+<li><a href="#S86">?PR?BACKLIGHT_LED_PROCESS?LED</a></li>
+<li><a href="#S81">?PR?LED_ALL_SHUTDOWN?LED</a></li>
+<li><a href="#S85">?PR?LED_BACKLIGHT_BREATH?LED</a></li>
+<li><a href="#S98">?PR?LED_TIMER500MS?SYS</a></li>
+</ul>
+
+<h2><a name="S84"></a>?PR?LED_HANDLE?LED (C:00074AH - C:0007DDH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=10 Bytes (<a href="#S85">?PR?LED_BACKLIGHT_BREATH?LED</a>) Top=2 Bytes (<a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S170">?PR?_GPIO_SETOUT?GPIO</a></li>
+<li><a href="#S180">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+<li><a href="#S85">?PR?LED_BACKLIGHT_BREATH?LED</a></li>
+<li><a href="#S92">?PR?SYSTEM_LONG_SLEEP?SYS</a></li>
+<li><a href="#S2">?PR?YC_CHECK_IS_CONNECTED?BLUETOOTH</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S85"></a>?PR?LED_BACKLIGHT_BREATH?LED (C:00266AH - C:0026F9H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=8 Bytes (<a href="#S82">?PR?_LED_DEVICE_LINE_CONTROL?LED</a>) Top=4 Bytes (<a href="#S84">?PR?LED_HANDLE?LED</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S82">?PR?_LED_DEVICE_LINE_CONTROL?LED</a></li>
+<li><a href="#S114">?PR?_YC_PWM_SET_DUTY?PWM</a></li>
+<li><a href="#S116">?PR?YC_PWM_DISABLE?PWM</a></li>
+<li><a href="#S113">?PR?YC_PWM_INIT?PWM</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S84">?PR?LED_HANDLE?LED</a></li>
+</ul>
+
+<h2><a name="S86"></a>?PR?BACKLIGHT_LED_PROCESS?LED (C:000B7EH - C:000EC6H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=10 Bytes (<a href="#S82">?PR?_LED_DEVICE_LINE_CONTROL?LED</a>) Top=2 Bytes (<a href="#S103">?PR?KB_CB_TIMER100MS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+<li><a href="#S82">?PR?_LED_DEVICE_LINE_CONTROL?LED</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S103">?PR?KB_CB_TIMER100MS?SYS</a></li>
+</ul>
+
+<h2><a name="S87"></a>?PR?SYSTEM_CLEAR_MEM?SYS (C:001682H - C:001712H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S157">?PR?_XMEMCLEAR?UTILITIES</a>) Top=4 Bytes (<a href="#S90">?PR?SYSTEM_SOFTWARE_INIT?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S157">?PR?_XMEMCLEAR?UTILITIES</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S90">?PR?SYSTEM_SOFTWARE_INIT?SYS</a></li>
+</ul>
+
+<h2><a name="S88"></a>?PR?SYSTEM_IIC_CLK_SETUP?SYS (C:000FF2H - C:001004H)</h2>
+<p><br><b>Maximum Stack:</b> Top=4 Bytes (<a href="#S89">?PR?SYSTEM_HARDWARE_INIT?SYS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S96">?PR?_KB_CB_EVENT?SYS</a></li>
+<li><a href="#S89">?PR?SYSTEM_HARDWARE_INIT?SYS</a></li>
+</ul>
+
+<h2><a name="S89"></a>?PR?SYSTEM_HARDWARE_INIT?SYS (C:000FE9H - C:000FEFH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=12 Bytes (<a href="#S71">?PR?KS_INITIALIZE?KEYSCAN</a>) Top=2 Bytes (<a href="#S96">?PR?_KB_CB_EVENT?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S71">?PR?KS_INITIALIZE?KEYSCAN</a></li>
+<li><a href="#S81">?PR?LED_ALL_SHUTDOWN?LED</a></li>
+<li><a href="#S88">?PR?SYSTEM_IIC_CLK_SETUP?SYS</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S96">?PR?_KB_CB_EVENT?SYS</a></li>
+</ul>
+
+<h2><a name="S90"></a>?PR?SYSTEM_SOFTWARE_INIT?SYS (C:002786H - C:0027A8H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=8 Bytes (<a href="#S108">?PR?YC_ADC_INIT?ADC</a>) Top=2 Bytes (<a href="#S96">?PR?_KB_CB_EVENT?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S87">?PR?SYSTEM_CLEAR_MEM?SYS</a></li>
+<li><a href="#S108">?PR?YC_ADC_INIT?ADC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S96">?PR?_KB_CB_EVENT?SYS</a></li>
+</ul>
+
+<h2><a name="S92"></a>?PR?SYSTEM_LONG_SLEEP?SYS (C:000EE7H - C:000F1EH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=8 Bytes (<a href="#S81">?PR?LED_ALL_SHUTDOWN?LED</a>) Top=4 Bytes (<a href="#S99">?PR?YC_CONNECT_TIMEOUT_500MS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S81">?PR?LED_ALL_SHUTDOWN?LED</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S96">?PR?_KB_CB_EVENT?SYS</a></li>
+<li><a href="#S101">?PR?KB_BUTTON_PRESS_TIMER500MS?SYS</a></li>
+<li><a href="#S84">?PR?LED_HANDLE?LED</a></li>
+<li><a href="#S99">?PR?YC_CONNECT_TIMEOUT_500MS?SYS</a></li>
+<li><a href="#S100">?PR?YC_PAIRING_TIMEROUT_500MS?SYS</a></li>
+<li><a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S98"></a>?PR?LED_TIMER500MS?SYS (C:000F1FH - C:000F55H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=10 Bytes (<a href="#S82">?PR?_LED_DEVICE_LINE_CONTROL?LED</a>) Top=2 Bytes (<a href="#S102">?PR?KB_CB_TIMER500MS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S180">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+<li><a href="#S82">?PR?_LED_DEVICE_LINE_CONTROL?LED</a></li>
+<li><a href="#S116">?PR?YC_PWM_DISABLE?PWM</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S102">?PR?KB_CB_TIMER500MS?SYS</a></li>
+</ul>
+
+<h2><a name="S99"></a>?PR?YC_CONNECT_TIMEOUT_500MS?SYS (C:0027C4H - C:002845H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=12 Bytes (<a href="#S46">?PR?_IPC_TXHIDDATA?KB_PROCESS</a>) Top=2 Bytes (<a href="#S102">?PR?KB_CB_TIMER500MS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S46">?PR?_IPC_TXHIDDATA?KB_PROCESS</a></li>
+<li><a href="#S157">?PR?_XMEMCLEAR?UTILITIES</a></li>
+<li><a href="#S92">?PR?SYSTEM_LONG_SLEEP?SYS</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S102">?PR?KB_CB_TIMER500MS?SYS</a></li>
+</ul>
+
+<h2><a name="S101"></a>?PR?KB_BUTTON_PRESS_TIMER500MS?SYS (C:0009A2H - C:000A2CH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=10 Bytes (<a href="#S92">?PR?SYSTEM_LONG_SLEEP?SYS</a>) Top=2 Bytes (<a href="#S102">?PR?KB_CB_TIMER500MS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S161">?PR?_DELAY1MS?UTILITIES</a></li>
+<li><a href="#S44">?PR?_YC_KEY_ACTION_HANDLE?KB_PROCESS</a></li>
+<li><a href="#S92">?PR?SYSTEM_LONG_SLEEP?SYS</a></li>
+<li><a href="#S5">?PR?YC_DISCONNECT_ALL_LINK?BLUETOOTH</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S102">?PR?KB_CB_TIMER500MS?SYS</a></li>
+</ul>
+
+<h2><a name="S104"></a>?PR?KB_CB_INIT?SYS (C:002AE6H - C:002AEBH)</h2>
+<p><br><b>Maximum Stack:</b> Top=2 Bytes (<a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S108"></a>?PR?YC_ADC_INIT?ADC (C:002AF9H - C:002BB5H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S203">?C?LIB_CODE</a>) Top=4 Bytes (<a href="#S90">?PR?SYSTEM_SOFTWARE_INIT?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S90">?PR?SYSTEM_SOFTWARE_INIT?SYS</a></li>
+</ul>
+
+<h2><a name="S109"></a>?PR?YC_ADC_CHECK?ADC (C:002891H - C:002A2CH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S203">?C?LIB_CODE</a>) Top=4 Bytes (<a href="#S111">?PR?YC_ADC_CHECK_TIMER500MS?ADC</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S111">?PR?YC_ADC_CHECK_TIMER500MS?ADC</a></li>
+</ul>
+
+<h2><a name="S111"></a>?PR?YC_ADC_CHECK_TIMER500MS?ADC (C:002880H - C:002890H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=8 Bytes (<a href="#S109">?PR?YC_ADC_CHECK?ADC</a>) Top=2 Bytes (<a href="#S102">?PR?KB_CB_TIMER500MS?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S109">?PR?YC_ADC_CHECK?ADC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S102">?PR?KB_CB_TIMER500MS?SYS</a></li>
+</ul>
+
+<h2><a name="S113"></a>?PR?YC_PWM_INIT?PWM (C:002772H - C:002785H)</h2>
+<p><br><b>Maximum Stack:</b> Top=8 Bytes (<a href="#S114">?PR?_YC_PWM_SET_DUTY?PWM</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S114">?PR?_YC_PWM_SET_DUTY?PWM</a></li>
+<li><a href="#S85">?PR?LED_BACKLIGHT_BREATH?LED</a></li>
+</ul>
+
+<h2><a name="S114"></a>?PR?_YC_PWM_SET_DUTY?PWM (C:0026FAH - C:002771H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S180">?PR?_GPIO_SETOUTPUT?GPIO</a>) Top=6 Bytes (<a href="#S85">?PR?LED_BACKLIGHT_BREATH?LED</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S180">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+<li><a href="#S116">?PR?YC_PWM_DISABLE?PWM</a></li>
+<li><a href="#S113">?PR?YC_PWM_INIT?PWM</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S85">?PR?LED_BACKLIGHT_BREATH?LED</a></li>
+</ul>
+
+<h2><a name="S116"></a>?PR?YC_PWM_DISABLE?PWM (C:000F56H - C:000F7FH)</h2>
+<p><br><b>Maximum Stack:</b> Top=8 Bytes (<a href="#S114">?PR?_YC_PWM_SET_DUTY?PWM</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S114">?PR?_YC_PWM_SET_DUTY?PWM</a></li>
+<li><a href="#S81">?PR?LED_ALL_SHUTDOWN?LED</a></li>
+<li><a href="#S85">?PR?LED_BACKLIGHT_BREATH?LED</a></li>
+<li><a href="#S98">?PR?LED_TIMER500MS?SYS</a></li>
+<li><a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S117"></a>?PR?_BUFSIZE?IPC (C:002BB6H - C:002C0FH)</h2>
+<p><br><b>Maximum Stack:</b> Top=2 Bytes (<a href="#S121">?PR?_IPCTX?IPC</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S121">?PR?_IPCTX?IPC</a></li>
+</ul>
+
+<h2><a name="S119"></a>?PR?_IPCRX?IPC (C:002C10H - C:002C5FH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S203">?C?LIB_CODE</a>) Top=4 Bytes (<a href="#S133">?PR?IPC_DEALSINGLESTEP?IPC</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S133">?PR?IPC_DEALSINGLESTEP?IPC</a></li>
+</ul>
+
+<h2><a name="S123"></a>?PR?_IPC_TXCONTROLCMD?IPC (C:0008CEH - C:0008F5H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S203">?C?LIB_CODE</a>) Top=14 Bytes (<a href="#S5">?PR?YC_DISCONNECT_ALL_LINK?BLUETOOTH</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S44">?PR?_YC_KEY_ACTION_HANDLE?KB_PROCESS</a></li>
+<li><a href="#S5">?PR?YC_DISCONNECT_ALL_LINK?BLUETOOTH</a></li>
+</ul>
+
+<h2><a name="S127"></a>?PR?_IPC_TX24GDATA?IPC (C:0017D1H - C:0017D6H)</h2>
+<p><br><b>Maximum Stack:</b> Top=8 Bytes (<a href="#S46">?PR?_IPC_TXHIDDATA?KB_PROCESS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S46">?PR?_IPC_TXHIDDATA?KB_PROCESS</a></li>
+</ul>
+
+<h2><a name="S130"></a>?PR?IPC_WAITLPM?IPC (C:000FD6H - C:000FE2H)</h2>
+<p><br><b>Maximum Stack:</b> Top=2 Bytes (<a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S161">?PR?_DELAY1MS?UTILITIES</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S131"></a>?PR?IPC_ABANDONLPM?IPC (C:002D2CH - C:002D37H)</h2>
+<p><br><b>Maximum Stack:</b> Top=2 Bytes (<a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S132"></a>?PR?IPC_ISTXBUFFEMPTY?IPC (C:001DABH - C:001DC2H)</h2>
+<p><br><b>Maximum Stack:</b> Top=4 Bytes (<a href="#S53">?PR?KB_MOTION?KB_PROCESS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S53">?PR?KB_MOTION?KB_PROCESS</a></li>
+</ul>
+
+<h2><a name="S133"></a>?PR?IPC_DEALSINGLESTEP?IPC (C:002C60H - C:002D25H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S119">?PR?_IPCRX?IPC</a>) Top=2 Bytes (<a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+<li><a href="#S119">?PR?_IPCRX?IPC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S105">?PR?YC_SYSTEM_MAIN?SYS</a></li>
+</ul>
+
+<h2><a name="S153"></a>?PR?_XMEMCPY?UTILITIES (C:001250H - C:001292H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S203">?C?LIB_CODE</a>) Top=6 Bytes (<a href="#S56">?PR?_KB_MOTION_KEYSCAN?KB_PROCESS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S125">?PR?_IPC_TXDATA?IPC</a></li>
+<li><a href="#S56">?PR?_KB_MOTION_KEYSCAN?KB_PROCESS</a></li>
+</ul>
+
+<h2><a name="S155"></a>?PR?_DMEMCPY?UTILITIES (C:002D3FH - C:002D82H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S203">?C?LIB_CODE</a>) Top=8 Bytes (<a href="#S197">?PR?_IIC_WRITE?IIC</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S197">?PR?_IIC_WRITE?IIC</a></li>
+</ul>
+
+<h2><a name="S157"></a>?PR?_XMEMCLEAR?UTILITIES (C:001656H - C:001681H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S203">?C?LIB_CODE</a>) Top=6 Bytes (<a href="#S87">?PR?SYSTEM_CLEAR_MEM?SYS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S56">?PR?_KB_MOTION_KEYSCAN?KB_PROCESS</a></li>
+<li><a href="#S50">?PR?_KB_SEND_COMBINATION_KEY?KB_PROCESS</a></li>
+<li><a href="#S52">?PR?KB_24G_GET_LED_STATUS?KB_PROCESS</a></li>
+<li><a href="#S87">?PR?SYSTEM_CLEAR_MEM?SYS</a></li>
+<li><a href="#S99">?PR?YC_CONNECT_TIMEOUT_500MS?SYS</a></li>
+</ul>
+
+<h2><a name="S161"></a>?PR?_DELAY1MS?UTILITIES (C:000A2DH - C:000A44H)</h2>
+<p><br><b>Maximum Stack:</b> Top=12 Bytes (<a href="#S44">?PR?_YC_KEY_ACTION_HANDLE?KB_PROCESS</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S199">?PR?_IIC_WRITEBLOCK?IIC</a></li>
+<li><a href="#S96">?PR?_KB_CB_EVENT?SYS</a></li>
+<li><a href="#S44">?PR?_YC_KEY_ACTION_HANDLE?KB_PROCESS</a></li>
+<li><a href="#S130">?PR?IPC_WAITLPM?IPC</a></li>
+<li><a href="#S101">?PR?KB_BUTTON_PRESS_TIMER500MS?SYS</a></li>
+<li><a href="#S100">?PR?YC_PAIRING_TIMEROUT_500MS?SYS</a></li>
+<li><a href="#S7">?PR?YC_UPDATE_EEPROM_DATA?BLUETOOTH</a></li>
+</ul>
+
+<h2><a name="S162"></a>?PR?_COMPARE_STR?UTILITIES (C:001DF3H - C:001E3CH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S203">?C?LIB_CODE</a>) Top=6 Bytes (<a href="#S78">?PR?KS_GETCURRENTEVT?KEYSCAN</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S78">?PR?KS_GETCURRENTEVT?KEYSCAN</a></li>
+</ul>
+
+<h2><a name="S164"></a>?PR?_GPIOSETBIT?GPIO (C:0022DFH - C:00233FH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S203">?C?LIB_CODE</a>) Top=12 Bytes (<a href="#S174">?PR?_GPIO_SETPD?GPIO</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S176">?PR?_GPIO_SETOE?GPIO</a></li>
+<li><a href="#S170">?PR?_GPIO_SETOUT?GPIO</a></li>
+<li><a href="#S174">?PR?_GPIO_SETPD?GPIO</a></li>
+<li><a href="#S172">?PR?_GPIO_SETPU?GPIO</a></li>
+</ul>
+
+<h2><a name="S167"></a>?PR?_GPIOGETBIT?GPIO (C:00247DH - C:0024BBH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S203">?C?LIB_CODE</a>) Top=2 Bytes (<a href="#S188">?PR?_GPIO_FLIPOUTBIT?GPIO</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S188">?PR?_GPIO_FLIPOUTBIT?GPIO</a></li>
+</ul>
+
+<h2><a name="S169"></a>?PR?_GPIO_GETINPUTSTATUS?GPIO (C:002477H - C:00247CH)</h2>
+<p><br><b>Maximum Stack:</b> Top=6 Bytes (<a href="#S185">?PR?_GPIO_SETWAKEUPBYCURRENTSTATE?GPIO</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S185">?PR?_GPIO_SETWAKEUPBYCURRENTSTATE?GPIO</a></li>
+</ul>
+
+<h2><a name="S170"></a>?PR?_GPIO_SETOUT?GPIO (C:0007DEH - C:0007EFH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S164">?PR?_GPIOSETBIT?GPIO</a>) Top=8 Bytes (<a href="#S180">?PR?_GPIO_SETOUTPUT?GPIO</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S164">?PR?_GPIOSETBIT?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S188">?PR?_GPIO_FLIPOUTBIT?GPIO</a></li>
+<li><a href="#S180">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+<li><a href="#S103">?PR?KB_CB_TIMER100MS?SYS</a></li>
+<li><a href="#S84">?PR?LED_HANDLE?LED</a></li>
+<li><a href="#S7">?PR?YC_UPDATE_EEPROM_DATA?BLUETOOTH</a></li>
+</ul>
+
+<h2><a name="S172"></a>?PR?_GPIO_SETPU?GPIO (C:0022ACH - C:0022BCH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S164">?PR?_GPIOSETBIT?GPIO</a>) Top=10 Bytes (<a href="#S178">?PR?_GPIO_SETINPUT?GPIO</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S164">?PR?_GPIOSETBIT?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S178">?PR?_GPIO_SETINPUT?GPIO</a></li>
+<li><a href="#S180">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+</ul>
+
+<h2><a name="S174"></a>?PR?_GPIO_SETPD?GPIO (C:0022BDH - C:0022CDH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S164">?PR?_GPIOSETBIT?GPIO</a>) Top=10 Bytes (<a href="#S178">?PR?_GPIO_SETINPUT?GPIO</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S164">?PR?_GPIOSETBIT?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S178">?PR?_GPIO_SETINPUT?GPIO</a></li>
+</ul>
+
+<h2><a name="S176"></a>?PR?_GPIO_SETOE?GPIO (C:0022CEH - C:0022DEH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S164">?PR?_GPIOSETBIT?GPIO</a>) Top=10 Bytes (<a href="#S178">?PR?_GPIO_SETINPUT?GPIO</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S164">?PR?_GPIOSETBIT?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S178">?PR?_GPIO_SETINPUT?GPIO</a></li>
+<li><a href="#S180">?PR?_GPIO_SETOUTPUT?GPIO</a></li>
+</ul>
+
+<h2><a name="S178"></a>?PR?_GPIO_SETINPUT?GPIO (C:00228EH - C:0022ABH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S174">?PR?_GPIO_SETPD?GPIO</a>) Top=8 Bytes (<a href="#S67">?PR?KSRAWINITIALIZE?KEYSCAN</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S176">?PR?_GPIO_SETOE?GPIO</a></li>
+<li><a href="#S174">?PR?_GPIO_SETPD?GPIO</a></li>
+<li><a href="#S172">?PR?_GPIO_SETPU?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S69">?PR?KSCOLINITIALIZE?KEYSCAN</a></li>
+<li><a href="#S67">?PR?KSRAWINITIALIZE?KEYSCAN</a></li>
+</ul>
+
+<h2><a name="S180"></a>?PR?_GPIO_SETOUTPUT?GPIO (C:000B60H - C:000B7DH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S176">?PR?_GPIO_SETOE?GPIO</a>) Top=6 Bytes (<a href="#S82">?PR?_LED_DEVICE_LINE_CONTROL?LED</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S176">?PR?_GPIO_SETOE?GPIO</a></li>
+<li><a href="#S170">?PR?_GPIO_SETOUT?GPIO</a></li>
+<li><a href="#S172">?PR?_GPIO_SETPU?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S96">?PR?_KB_CB_EVENT?SYS</a></li>
+<li><a href="#S82">?PR?_LED_DEVICE_LINE_CONTROL?LED</a></li>
+<li><a href="#S114">?PR?_YC_PWM_SET_DUTY?PWM</a></li>
+<li><a href="#S81">?PR?LED_ALL_SHUTDOWN?LED</a></li>
+<li><a href="#S84">?PR?LED_HANDLE?LED</a></li>
+<li><a href="#S98">?PR?LED_TIMER500MS?SYS</a></li>
+</ul>
+
+<h2><a name="S185"></a>?PR?_GPIO_SETWAKEUPBYCURRENTSTATE?GPIO (C:0023D8H - C:0023EAH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S169">?PR?_GPIO_GETINPUTSTATUS?GPIO</a>) Top=4 Bytes (<a href="#S72">?PR?KS_UNISTALL?KEYSCAN</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S169">?PR?_GPIO_GETINPUTSTATUS?GPIO</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S72">?PR?KS_UNISTALL?KEYSCAN</a></li>
+</ul>
+
+<h2><a name="S191"></a>?PR?GPIO_FILLPD?GPIO (C:0024D8H - C:00250BH)</h2>
+<p><br><b>Maximum Stack:</b> Top=4 Bytes (<a href="#S72">?PR?KS_UNISTALL?KEYSCAN</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S72">?PR?KS_UNISTALL?KEYSCAN</a></li>
+</ul>
+
+<h2><a name="S194"></a>?PR?IICWAITDONE?IIC (C:00119BH - C:0011A2H)</h2>
+<p><br><b>Maximum Stack:</b> Top=14 Bytes (<a href="#S195">?PR?_IIC_READ?IIC</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S195">?PR?_IIC_READ?IIC</a></li>
+</ul>
+
+<h2><a name="S195"></a>?PR?_IIC_READ?IIC (C:0011A3H - C:00124FH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=2 Bytes (<a href="#S194">?PR?IICWAITDONE?IIC</a>) Top=12 Bytes (<a href="#S44">?PR?_YC_KEY_ACTION_HANDLE?KB_PROCESS</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S194">?PR?IICWAITDONE?IIC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S96">?PR?_KB_CB_EVENT?SYS</a></li>
+<li><a href="#S44">?PR?_YC_KEY_ACTION_HANDLE?KB_PROCESS</a></li>
+</ul>
+
+<h2><a name="S197"></a>?PR?_IIC_WRITE?IIC (C:001102H - C:00119AH)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=4 Bytes (<a href="#S155">?PR?_DMEMCPY?UTILITIES</a>) Top=6 Bytes (<a href="#S199">?PR?_IIC_WRITEBLOCK?IIC</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S155">?PR?_DMEMCPY?UTILITIES</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S199">?PR?_IIC_WRITEBLOCK?IIC</a></li>
+</ul>
+
+<h2><a name="S199"></a>?PR?_IIC_WRITEBLOCK?IIC (C:001054H - C:001101H)</h2>
+<p><br><b>Maximum Stack:</b> Bottom=6 Bytes (<a href="#S197">?PR?_IIC_WRITE?IIC</a>) Top=4 Bytes (<a href="#S7">?PR?YC_UPDATE_EEPROM_DATA?BLUETOOTH</a>)<p>
+<p><br><b>Calls to:</b></p>
+<ul>
+<li><a href="#S203">?C?LIB_CODE</a></li>
+<li><a href="#S161">?PR?_DELAY1MS?UTILITIES</a></li>
+<li><a href="#S197">?PR?_IIC_WRITE?IIC</a></li>
+</ul>
+
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S7">?PR?YC_UPDATE_EEPROM_DATA?BLUETOOTH</a></li>
+</ul>
+
+<h2><a name="S203"></a>?C?LIB_CODE (C:000003H - C:0005E4H)</h2>
+<p><br><b>Maximum Stack:</b> Top=16 Bytes (<a href="#S123">?PR?_IPC_TXCONTROLCMD?IPC</a>)<p>
+<p><br><b>Called from:</b></p>
+<ul>
+<li><a href="#S76">?PR?_ARRAY_IS_EMPTY?KEYSCAN</a></li>
+<li><a href="#S162">?PR?_COMPARE_STR?UTILITIES</a></li>
+<li><a href="#S155">?PR?_DMEMCPY?UTILITIES</a></li>
+<li><a href="#S167">?PR?_GPIOGETBIT?GPIO</a></li>
+<li><a href="#S164">?PR?_GPIOSETBIT?GPIO</a></li>
+<li><a href="#S199">?PR?_IIC_WRITEBLOCK?IIC</a></li>
+<li><a href="#S129">?PR?_IPC_INITIALIZE?IPC</a></li>
+<li><a href="#S123">?PR?_IPC_TXCONTROLCMD?IPC</a></li>
+<li><a href="#S46">?PR?_IPC_TXHIDDATA?KB_PROCESS</a></li>
+<li><a href="#S119">?PR?_IPCRX?IPC</a></li>
+<li><a href="#S121">?PR?_IPCTX?IPC</a></li>
+<li><a href="#S94">?PR?_KB_CB_HID?SYS</a></li>
+<li><a href="#S56">?PR?_KB_MOTION_KEYSCAN?KB_PROCESS</a></li>
+<li><a href="#S61">?PR?_KB_MULTIKEY_SETUP?KB_PROCESS</a></li>
+<li><a href="#S59">?PR?_KEY_FN_FUNCTION?KB_PROCESS</a></li>
+<li><a href="#S157">?PR?_XMEMCLEAR?UTILITIES</a></li>
+<li><a href="#S159">?PR?_XMEMCLEAR_FF?UTILITIES</a></li>
+<li><a href="#S153">?PR?_XMEMCPY?UTILITIES</a></li>
+<li><a href="#S86">?PR?BACKLIGHT_LED_PROCESS?LED</a></li>
+<li><a href="#S133">?PR?IPC_DEALSINGLESTEP?IPC</a></li>
+<li><a href="#S109">?PR?YC_ADC_CHECK?ADC</a></li>
+<li><a href="#S108">?PR?YC_ADC_INIT?ADC</a></li>
+</ul>
+
+</body>
+</html>
Index: output/FW.MAP
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/FW.MAP	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/FW.MAP	(working copy)
@@ -0,0 +1,3129 @@
+LX51 LINKER/LOCATER V4.41                                                               03/24/2022  19:13:33  PAGE 1
+
+
+LX51 LINKER/LOCATER V4.41, INVOKED BY:
+H:\KEIL\C51\BIN\LX51.EXE OUTPUT/BLUETOOTH.OBJ, OUTPUT/GLOBAL_VARIABLE.OBJ, OUTPUT/KB_PROCESS.OBJ, OUTPUT/KEYSCAN.OBJ, OU
+>> TPUT/LED.OBJ, OUTPUT/SYS.OBJ, OUTPUT/ADC.OBJ, OUTPUT/RAM.OBJ, OUTPUT/PWM.OBJ, OUTPUT/..\PATCH\IPC.OBJ, OUTPUT/..\PATC
+>> H\UTILITIES.OBJ, OUTPUT/..\PATCH\GPIO.OBJ, OUTPUT/..\PATCH\IIC.OBJ TO OUTPUT\FW CLASSES (XDATA (X:0X4DD0-X:0X4F40), C
+>> ODE (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 WITH FLOATING POINT ARITHMETIC
+
+
+INPUT MODULES INCLUDED:
+  OUTPUT/BLUETOOTH.OBJ (BLUETOOTH)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/GLOBAL_VARIABLE.OBJ (GLOBAL_VARIABLE)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/KB_PROCESS.OBJ (KB_PROCESS)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/KEYSCAN.OBJ (KEYSCAN)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/LED.OBJ (LED)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/SYS.OBJ (SYS)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/ADC.OBJ (ADC)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/RAM.OBJ (RAM)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/PWM.OBJ (PWM)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/..\PATCH\IPC.OBJ (IPC)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/..\PATCH\UTILITIES.OBJ (UTILITIES)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/..\PATCH\GPIO.OBJ (GPIO)
+         COMMENT TYPE 0: C51 V9.00
+  OUTPUT/..\PATCH\IIC.OBJ (IIC)
+         COMMENT TYPE 0: C51 V9.00
+  H:\KEIL\C51\LIB\C51FPL.LIB (?C?FPADD)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51FPL.LIB (?C?FPMUL)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51FPL.LIB (?C?FCAST)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51FPL.LIB (?C?CASTF)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51FPL.LIB (?C?FPGETOPN)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51L.LIB (?C_STARTUP)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51L.LIB (?C?COPY)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51L.LIB (?C?CLDPTR)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51L.LIB (?C?CLDOPTR)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51L.LIB (?C?CSTPTR)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51L.LIB (?C?UIDIV)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51L.LIB (?C?IILDX)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51L.LIB (?C?ILDIX)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51L.LIB (?C?ULDIV)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51L.LIB (?C?LNEG)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51L.LIB (?C?ULCMP)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51L.LIB (?C?LSTXDATA)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51L.LIB (?C?LSTKXDATA)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51L.LIB (?C?CCASE)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51L.LIB (?C?ICALL)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+  H:\KEIL\C51\LIB\C51L.LIB (?C_INIT)
+         COMMENT TYPE 1: A51 / ASM51 Assembler
+
+
+ACTIVE MEMORY CLASSES OF MODULE:  OUTPUT\FW (BLUETOOTH)
+
+BASE        START       END         USED      MEMORY CLASS
+==========================================================
+X:000000H   X:004DD0H   X:004F40H   000331H   XDATA
+C:000000H   C:000000H   C:00FFFFH   002D39H   CODE
+I:000000H   I:000010H   I:00007FH   000008H   DATA
+I:000000H   I:000080H   I:0000CFH   000001H   IDATA
+C:000000H   C:000000H   C:00FFFFH   0000B6H   CONST
+I:000020H.0 I:000020H.0 I:00002FH.7 000001H.2 BIT
+
+
+MEMORY MAP OF MODULE:  OUTPUT\FW (BLUETOOTH)
+
+
+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?_GPIOSETBIT?GPIO
+000020H.1 000020H.1 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_SETOUT?GPIO
+000020H.2 000020H.2 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_SETPU?GPIO
+000020H.3 000020H.3 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_SETPD?GPIO
+000020H.4 000020H.4 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_SETOE?GPIO
+000020H.5 000020H.5 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_SETINPUT?GPIO
+000020H.6 000020H.6 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_SETOUTPUT?GPIO
+000020H.7 000020H.7 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_SETWAKEUP?GPIO
+000021H.0 000021H.0 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_SETWAKEUPBYCURRENTSTATE?GPIO
+000021H.1 000021H.1 000000H.1 BIT    UNIT     BIT            ?BI?_GPIO_FLIPOUTBIT?GPIO
+000021H.2 0000CFH   0000AEH.6 ---    ---      **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   0005E4H   0005E2H   BYTE   UNIT     CODE           ?C?LIB_CODE
+0005E5H   000670H   00008CH   BYTE   UNIT     CODE           ?C_C51STARTUP
+000671H   000686H   000016H   BYTE   UNIT     CODE           ?C_INITSEG
+000687H   000739H   0000B3H   BYTE   UNIT     CONST          ?CO?GLOBAL_VARIABLE
+00073AH   00073CH   000003H   BYTE   UNIT     CONST          ?CO?IPC
+00073DH   000749H   00000DH   BYTE   UNIT     CODE           ?PR?YC_CHECK_IS_CONNECTED?BLUETOOTH
+00074AH   0007DDH   000094H   BYTE   UNIT     CODE           ?PR?LED_HANDLE?LED
+0007DEH   0007EFH   000012H   BYTE   UNIT     CODE           ?PR?_GPIO_SETOUT?GPIO
+0007F0H   000824H   000035H   BYTE   UNIT     CODE           ?PR?YC_CHECK_NEED_RECONNECTED?BLUETOOTH
+000825H   0008CDH   0000A9H   BYTE   UNIT     CODE           ?PR?_YC_KEY_ACTION_HANDLE?KB_PROCESS
+0008CEH   0008F5H   000028H   BYTE   UNIT     CODE           ?PR?_IPC_TXCONTROLCMD?IPC
+0008F6H   00098AH   000095H   BYTE   UNIT     CODE           ?PR?_IPCTX?IPC
+00098BH   0009A1H   000017H   BYTE   UNIT     CODE           ?PR?YC_DISCONNECT_ALL_LINK?BLUETOOTH
+0009A2H   000A2CH   00008BH   BYTE   UNIT     CODE           ?PR?KB_BUTTON_PRESS_TIMER500MS?SYS
+000A2DH   000A44H   000018H   BYTE   UNIT     CODE           ?PR?_DELAY1MS?UTILITIES
+000A45H   000B20H   0000DCH   BYTE   UNIT     CODE           ?PR?_KB_CB_EVENT?SYS
+000B21H   000B5FH   00003FH   BYTE   UNIT     CODE           ?PR?_LED_DEVICE_LINE_CONTROL?LED
+000B60H   000B7DH   00001EH   BYTE   UNIT     CODE           ?PR?_GPIO_SETOUTPUT?GPIO
+000B7EH   000EC6H   000349H   BYTE   UNIT     CODE           ?PR?BACKLIGHT_LED_PROCESS?LED
+000EC7H   000EE6H   000020H   BYTE   UNIT     CODE           ?PR?LED_ALL_SHUTDOWN?LED
+000EE7H   000F1EH   000038H   BYTE   UNIT     CODE           ?PR?SYSTEM_LONG_SLEEP?SYS
+000F1FH   000F55H   000037H   BYTE   UNIT     CODE           ?PR?LED_TIMER500MS?SYS
+000F56H   000F7FH   00002AH   BYTE   UNIT     CODE           ?PR?YC_PWM_DISABLE?PWM
+000F80H   000FD5H   000056H   BYTE   UNIT     CODE           ?PR?YC_SYSTEM_MAIN?SYS
+000FD6H   000FE2H   00000DH   BYTE   UNIT     CODE           ?PR?IPC_WAITLPM?IPC
+000FE3H   000FE8H   000006H   BYTE   UNIT     CODE           ?PR?YC_CLEAR_RECONNECT_FLAG?BLUETOOTH
+000FE9H   000FEFH   000007H   BYTE   UNIT     CODE           ?PR?SYSTEM_HARDWARE_INIT?SYS
+000FF0H   000FF1H   000002H   BYTE   UNIT     CODE           ?PR?MAIN?RAM
+000FF2H   001004H   000013H   BYTE   UNIT     CODE           ?PR?SYSTEM_IIC_CLK_SETUP?SYS
+001005H   00100FH   00000BH   BYTE   UNIT     CODE           ?PR?YC_START_RECONNECT?BLUETOOTH
+001010H   001053H   000044H   BYTE   UNIT     CODE           ?PR?YC_UPDATE_EEPROM_DATA?BLUETOOTH
+001054H   001101H   0000AEH   BYTE   UNIT     CODE           ?PR?_IIC_WRITEBLOCK?IIC
+001102H   00119AH   000099H   BYTE   UNIT     CODE           ?PR?_IIC_WRITE?IIC
+00119BH   0011A2H   000008H   BYTE   UNIT     CODE           ?PR?IICWAITDONE?IIC
+0011A3H   00124FH   0000ADH   BYTE   UNIT     CODE           ?PR?_IIC_READ?IIC
+001250H   001292H   000043H   BYTE   UNIT     CODE           ?PR?_XMEMCPY?UTILITIES
+001293H   0015A1H   00030FH   BYTE   UNIT     CODE           ?PR?_KB_MOTION_KEYSCAN?KB_PROCESS
+0015A2H   001655H   0000B4H   BYTE   UNIT     CODE           ?PR?_IPC_TXHIDDATA?KB_PROCESS
+001656H   001681H   00002CH   BYTE   UNIT     CODE           ?PR?_XMEMCLEAR?UTILITIES
+001682H   001712H   000091H   BYTE   UNIT     CODE           ?PR?SYSTEM_CLEAR_MEM?SYS
+001713H   00174CH   00003AH   BYTE   UNIT     CODE           ?PR?_KB_SEND_COMBINATION_KEY?KB_PROCESS
+00174DH   0017D0H   000084H   BYTE   UNIT     CODE           ?PR?KB_NEED_KEYSCAN?KB_PROCESS
+0017D1H   0017D6H   000006H   BYTE   UNIT     CODE           ?PR?_IPC_TX24GDATA?IPC
+0017D7H   0017FCH   000026H   BYTE   UNIT     CODE           ?PR?_IPC_TXDATA?IPC
+0017FDH   001817H   00001BH   BYTE   UNIT     CODE           ?PR?_KB_SET_MULTIKEY?KB_PROCESS
+001818H   001AC4H   0002ADH   BYTE   UNIT     CODE           ?PR?_KB_MULTIKEY_SETUP?KB_PROCESS
+001AC5H   001ADFH   00001BH   BYTE   UNIT     CODE           ?PR?_KB_SET_SYSTEMKEY?KB_PROCESS
+001AE0H   001B1DH   00003EH   BYTE   UNIT     CODE           ?PR?KB_24G_GET_LED_STATUS?KB_PROCESS
+001B1EH   001B50H   000033H   BYTE   UNIT     CODE           ?PR?KB_MOTION?KB_PROCESS
+001B51H   001D9CH   00024CH   BYTE   UNIT     CODE           ?PR?KS_GETCURRENTEVT?KEYSCAN
+001D9DH   001DAAH   00000EH   BYTE   UNIT     CODE           ?PR?_BIT_COUNT?KEYSCAN
+001DABH   001DC2H   000018H   BYTE   UNIT     CODE           ?PR?IPC_ISTXBUFFEMPTY?IPC
+001DC3H   001DF2H   000030H   BYTE   UNIT     CODE           ?PR?_ARRAY_IS_EMPTY?KEYSCAN
+001DF3H   001E3CH   00004AH   BYTE   UNIT     CODE           ?PR?_COMPARE_STR?UTILITIES
+001E3DH   001EF5H   0000B9H   BYTE   UNIT     CODE           ?PR?_KEYIN?KEYSCAN
+001EF6H   001FD6H   0000E1H   BYTE   UNIT     CODE           ?PR?_KEYOUT?KEYSCAN
+001FD7H   001FFBH   000025H   BYTE   UNIT     CODE           ?PR?_KB_COMBINATION_KEY_PRESS?KB_PROCESS
+001FFCH   002247H   00024CH   BYTE   UNIT     CODE           ?PR?_KEY_FN_FUNCTION?KB_PROCESS
+002248H   002264H   00001DH   BYTE   UNIT     CODE           ?PR?KSRAWINITIALIZE?KEYSCAN
+002265H   00226FH   00000BH   BYTE   UNIT     CODE           ?PR?KS_INITIALIZE?KEYSCAN
+002270H   00228DH   00001EH   BYTE   UNIT     CODE           ?PR?KSCOLINITIALIZE?KEYSCAN
+00228EH   0022ABH   00001EH   BYTE   UNIT     CODE           ?PR?_GPIO_SETINPUT?GPIO
+0022ACH   0022BCH   000011H   BYTE   UNIT     CODE           ?PR?_GPIO_SETPU?GPIO
+0022BDH   0022CDH   000011H   BYTE   UNIT     CODE           ?PR?_GPIO_SETPD?GPIO
+0022CEH   0022DEH   000011H   BYTE   UNIT     CODE           ?PR?_GPIO_SETOE?GPIO
+0022DFH   00233FH   000061H   BYTE   UNIT     CODE           ?PR?_GPIOSETBIT?GPIO
+002340H   0023D7H   000098H   BYTE   UNIT     CODE           ?PR?KS_UNISTALL?KEYSCAN
+0023D8H   0023EAH   000013H   BYTE   UNIT     CODE           ?PR?_GPIO_SETWAKEUPBYCURRENTSTATE?GPIO
+0023EBH   002476H   00008CH   BYTE   UNIT     CODE           ?PR?_GPIO_SETWAKEUP?GPIO
+002477H   00247CH   000006H   BYTE   UNIT     CODE           ?PR?_GPIO_GETINPUTSTATUS?GPIO
+00247DH   0024BBH   00003FH   BYTE   UNIT     CODE           ?PR?_GPIOGETBIT?GPIO
+0024BCH   0024D7H   00001CH   BYTE   UNIT     CODE           ?PR?_GPIO_FLIPOUTBIT?GPIO
+0024D8H   00250BH   000034H   BYTE   UNIT     CODE           ?PR?GPIO_FILLPD?GPIO
+00250CH   002669H   00015EH   BYTE   UNIT     CODE           ?PR?KS_SCANMATRIX?KEYSCAN
+00266AH   0026F9H   000090H   BYTE   UNIT     CODE           ?PR?LED_BACKLIGHT_BREATH?LED
+0026FAH   002771H   000078H   BYTE   UNIT     CODE           ?PR?_YC_PWM_SET_DUTY?PWM
+002772H   002785H   000014H   BYTE   UNIT     CODE           ?PR?YC_PWM_INIT?PWM
+002786H   0027A8H   000023H   BYTE   UNIT     CODE           ?PR?SYSTEM_SOFTWARE_INIT?SYS
+0027A9H   0027B1H   000009H   BYTE   UNIT     CODE           ?PR?SYSTEM_HARDWARE_RESET?SYS
+0027B2H   0027B3H   000002H   BYTE   UNIT     CODE           ?PR?SYSTEM_RESET_CONNECT?SYS
+0027B4H   0027C3H   000010H   BYTE   UNIT     CODE           ?PR?_KB_CB_HID?SYS
+0027C4H   002845H   000082H   BYTE   UNIT     CODE           ?PR?YC_CONNECT_TIMEOUT_500MS?SYS
+002846H   002864H   00001FH   BYTE   UNIT     CODE           ?PR?YC_PAIRING_TIMEROUT_500MS?SYS
+002865H   00287FH   00001BH   BYTE   UNIT     CODE           ?PR?KB_CB_TIMER500MS?SYS
+002880H   002890H   000011H   BYTE   UNIT     CODE           ?PR?YC_ADC_CHECK_TIMER500MS?ADC
+002891H   002A2CH   00019CH   BYTE   UNIT     CODE           ?PR?YC_ADC_CHECK?ADC
+002A2DH   002AE5H   0000B9H   BYTE   UNIT     CODE           ?PR?KB_CB_TIMER100MS?SYS
+002AE6H   002AEBH   000006H   BYTE   UNIT     CODE           ?PR?KB_CB_INIT?SYS
+002AECH   002AF8H   00000DH   BYTE   UNIT     CODE           ?PR?_IPC_INITIALIZE?IPC
+002AF9H   002BB5H   0000BDH   BYTE   UNIT     CODE           ?PR?YC_ADC_INIT?ADC
+002BB6H   002C0FH   00005AH   BYTE   UNIT     CODE           ?PR?_BUFSIZE?IPC
+002C10H   002C5FH   000050H   BYTE   UNIT     CODE           ?PR?_IPCRX?IPC
+002C60H   002D25H   0000C6H   BYTE   UNIT     CODE           ?PR?IPC_DEALSINGLESTEP?IPC
+002D26H   002D2BH   000006H   BYTE   UNIT     CODE           ?PR?IPC_GETBBDISCONNECTREASON?IPC
+002D2CH   002D37H   00000CH   BYTE   UNIT     CODE           ?PR?IPC_ABANDONLPM?IPC
+002D38H   002D3EH   000007H   BYTE   UNIT     CODE           ?PR?YC_ICE_BREAK?UTILITIES
+002D3FH   002D82H   000044H   BYTE   UNIT     CODE           ?PR?_DMEMCPY?UTILITIES
+002D83H   002DAFH   00002DH   BYTE   UNIT     CODE           ?PR?_XMEMCLEAR_FF?UTILITIES
+002DB0H   002DEEH   00003FH   BYTE   UNIT     CODE           ?PR?_GPIO_CLEARWAKEUP?GPIO
+
+* * * * * * * * * * *  X D A T A   M E M O R Y  * * * * * * * * * * * * *
+000040H   000045H   000006H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?29
+000046H   0000A2H   00005DH   ---    ---      **GAP**
+0000A3H   0000A6H   000004H   BYTE   OFFS..   XDATA          ?XD?GPIO?1
+0000A7H   0000AAH   000004H   BYTE   OFFS..   XDATA          ?XD?GPIO?0
+0000ABH   0003CFH   000325H   ---    ---      **GAP**
+0003D0H   0003D5H   000006H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?2
+0003D6H   000445H   000070H   ---    ---      **GAP**
+000446H   000446H   000001H   BYTE   OFFS..   XDATA          ?XD?IPC?9
+000447H   00054EH   000108H   ---    ---      **GAP**
+00054FH   00054FH   000001H   BYTE   OFFS..   XDATA          ?XD?IPC?1
+000550H   00055FH   000010H   BYTE   OFFS..   XDATA          ?XD?IPC?11
+000560H   000B7DH   00061EH   ---    ---      **GAP**
+000B7EH   000B7EH   000001H   BYTE   OFFS..   XDATA          ?XD?IPC?0
+000B7FH   000B7FH   000001H   BYTE   OFFS..   XDATA          ?XD?IPC?5
+000B80H   000B80H   000001H   ---    ---      **GAP**
+000B81H   000B81H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?8
+000B82H   000B82H   000001H   ---    ---      **GAP**
+000B83H   000BE6H   000064H   BYTE   OFFS..   XDATA          ?XD?IIC?1
+000BE7H   000C4AH   000064H   BYTE   OFFS..   XDATA          ?XD?IPC?6
+000C4BH   000CAEH   000064H   BYTE   OFFS..   XDATA          ?XD?IPC?3
+000CAFH   000CB2H   000004H   BYTE   OFFS..   XDATA          ?XD?IIC?0
+000CB3H   004130H   00347EH   ---    ---      **GAP**
+004131H   004131H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?10
+004132H   004212H   0000E1H   ---    ---      **GAP**
+004213H   004213H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?32
+004214H   00425DH   00004AH   ---    ---      **GAP**
+00425EH   00425EH   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?13
+00425FH   004261H   000003H   ---    ---      **GAP**
+004262H   004271H   000010H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?24
+004272H   004273H   000002H   ---    ---      **GAP**
+004274H   004279H   000006H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?28
+00427AH   00447AH   000201H   ---    ---      **GAP**
+00447BH   00448AH   000010H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?25
+00448BH   00448BH   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?9
+00448CH   0044F8H   00006DH   ---    ---      **GAP**
+0044F9H   0044FEH   000006H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?21
+0044FFH   0047F3H   0002F5H   ---    ---      **GAP**
+0047F4H   0047F5H   000002H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?27
+0047F6H   0047FFH   00000AH   ---    ---      **GAP**
+004800H   004809H   00000AH   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?20
+00480AH   004B99H   000390H   ---    ---      **GAP**
+004B9AH   004B9BH   000002H   BYTE   OFFS..   XDATA          ?XD?IPC?4
+004B9CH   004B9DH   000002H   BYTE   OFFS..   XDATA          ?XD?IPC?8
+004B9EH   004B9FH   000002H   BYTE   OFFS..   XDATA          ?XD?IPC?2
+004BA0H   004BA1H   000002H   BYTE   OFFS..   XDATA          ?XD?IPC?7
+004BA2H   004BA4H   000003H   ---    ---      **GAP**
+004BA5H   004BA6H   000002H   BYTE   OFFS..   XDATA          ?XD?IPC?14
+004BA7H   004BEAH   000044H   ---    ---      **GAP**
+004BEBH   004BEEH   000004H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?0
+004BEFH   004BEFH   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?12
+004BF0H   004BFFH   000010H   ---    ---      **GAP**
+004C00H   004C03H   000004H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?5
+004C04H   004C5DH   00005AH   ---    ---      **GAP**
+004C5EH   004C5FH   000002H   BYTE   OFFS..   XDATA          ?XD?IPC?12
+004C60H   004C8CH   00002DH   ---    ---      **GAP**
+004C8DH   004C8DH   000001H   BYTE   OFFS..   XDATA          ?XD?IPC?13
+004C8EH   004C8EH   000001H   BYTE   OFFS..   XDATA          ?XD?IPC?10
+004C8FH   004C8FH   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?26
+004C90H   004C90H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?15
+004C91H   004C92H   000002H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?7
+004C93H   004C94H   000002H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?11
+004C95H   004C96H   000002H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?31
+004C97H   004CB5H   00001FH   ---    ---      **GAP**
+004CB6H   004CB6H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?18
+004CB7H   004CB7H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?16
+004CB8H   004CBEH   000007H   ---    ---      **GAP**
+004CBFH   004D06H   000048H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?3
+004D07H   004D37H   000031H   ---    ---      **GAP**
+004D38H   004D38H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?30
+004D39H   004D3CH   000004H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?33
+004D3DH   004D40H   000004H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?17
+004D41H   004D46H   000006H   ---    ---      **GAP**
+004D47H   004D47H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?14
+004D48H   004D51H   00000AH   ---    ---      **GAP**
+004D52H   004D52H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?19
+004D53H   004D75H   000023H   ---    ---      **GAP**
+004D76H   004D76H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?6
+004D77H   004D92H   00001CH   ---    ---      **GAP**
+004D93H   004DA6H   000014H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?23
+004DA7H   004DA7H   000001H   ---    ---      **GAP**
+004DA8H   004DBBH   000014H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?1
+004DBCH   004DCFH   000014H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?22
+004DD0H   004E01H   000032H   BYTE   UNIT     XDATA          ?XD?GLOBAL_VARIABLE
+004E02H   004E13H   000012H   BYTE   UNIT     XDATA          ?XD?SYS
+004E14H   004E25H   000012H   BYTE   UNIT     XDATA          ?XD?IPC
+004E26H   004E33H   00000EH   BYTE   UNIT     XDATA          ?XD?_IPC_TXHIDDATA?KB_PROCESS
+004E34H   004E3EH   00000BH   BYTE   UNIT     XDATA          ?XD?KS_GETCURRENTEVT?KEYSCAN
+004E3FH   004E47H   000009H   BYTE   UNIT     XDATA          ?XD?_IIC_WRITEBLOCK?IIC
+004E48H   004E4FH   000008H   BYTE   UNIT     XDATA          ?XD?_DMEMCPY?UTILITIES
+004E50H   004E56H   000007H   BYTE   UNIT     XDATA          ?XD?KEYSCAN
+004E57H   004E5DH   000007H   BYTE   UNIT     XDATA          ?XD?_COMPARE_STR?UTILITIES
+004E5EH   004E64H   000007H   BYTE   UNIT     XDATA          ?XD?_IIC_WRITE?IIC
+004E65H   004E6AH   000006H   BYTE   UNIT     XDATA          ?XD?_IPCTX?IPC
+004E6BH   004E70H   000006H   BYTE   UNIT     XDATA          ?XD?_XMEMCPY?UTILITIES
+004E71H   004E75H   000005H   BYTE   UNIT     XDATA          ?XD?_KB_MOTION_KEYSCAN?KB_PROCESS
+004E76H   004E7AH   000005H   BYTE   UNIT     XDATA          ?XD?_LED_DEVICE_LINE_CONTROL?LED
+004E7BH   004E7FH   000005H   BYTE   UNIT     XDATA          ?XD?YC_ADC_CHECK?ADC
+004E80H   004E84H   000005H   BYTE   UNIT     XDATA          ?XD?_IIC_READ?IIC
+004E85H   004E88H   000004H   BYTE   UNIT     XDATA          ?XD?_KB_MULTIKEY_SETUP?KB_PROCESS
+004E89H   004E8CH   000004H   BYTE   UNIT     XDATA          ?XD?_BUFSIZE?IPC
+004E8DH   004E90H   000004H   BYTE   UNIT     XDATA          ?XD?_IPC_TXCONTROLCMD?IPC
+004E91H   004E93H   000003H   BYTE   UNIT     XDATA          ?XD?KB_MOTION?KB_PROCESS
+004E94H   004E96H   000003H   BYTE   UNIT     XDATA          ?XD?KS_SCANMATRIX?KEYSCAN
+004E97H   004E99H   000003H   BYTE   UNIT     XDATA          ?XD?_ARRAY_IS_EMPTY?KEYSCAN
+004E9AH   004E9CH   000003H   BYTE   UNIT     XDATA          ?XD?_YC_PWM_SET_DUTY?PWM
+004E9DH   004E9FH   000003H   BYTE   UNIT     XDATA          ?XD?IPC_DEALSINGLESTEP?IPC
+004EA0H   004EA2H   000003H   BYTE   UNIT     XDATA          ?XD?_XMEMCLEAR?UTILITIES
+004EA3H   004EA5H   000003H   BYTE   UNIT     XDATA          ?XD?_XMEMCLEAR_FF?UTILITIES
+004EA6H   004EA8H   000003H   BYTE   UNIT     XDATA          ?XD?_GPIOSETBIT?GPIO
+004EA9H   004EAAH   000002H   BYTE   UNIT     XDATA          ?XD?_KB_SEND_COMBINATION_KEY?KB_PROCESS
+004EABH   004EACH   000002H   BYTE   UNIT     XDATA          ?XD?_KB_CB_HID?SYS
+004EADH   004EAEH   000002H   BYTE   UNIT     XDATA          ?XD?_IPCRX?IPC
+004EAFH   004EAFH   000001H   BYTE   UNIT     XDATA          ?XD?_YC_KEY_ACTION_HANDLE?KB_PROCESS
+004EB0H   004EB0H   000001H   BYTE   UNIT     XDATA          ?XD?_KEY_FN_FUNCTION?KB_PROCESS
+004EB1H   004EB1H   000001H   BYTE   UNIT     XDATA          ?XD?_KEYOUT?KEYSCAN
+004EB2H   004EB2H   000001H   BYTE   UNIT     XDATA          ?XD?KSRAWINITIALIZE?KEYSCAN
+004EB3H   004EB3H   000001H   BYTE   UNIT     XDATA          ?XD?KSCOLINITIALIZE?KEYSCAN
+004EB4H   004EB4H   000001H   BYTE   UNIT     XDATA          ?XD?KS_UNISTALL?KEYSCAN
+004EB5H   004EB5H   000001H   BYTE   UNIT     XDATA          ?XD?_KB_CB_EVENT?SYS
+004EB6H   004EB6H   000001H   BYTE   UNIT     XDATA          ?XD?_IPC_TXDATA?IPC
+004EB7H   004EB7H   000001H   BYTE   UNIT     XDATA          ?XD?_GPIOGETBIT?GPIO
+004EB8H   004EB8H   000001H   BYTE   UNIT     XDATA          ?XD?_GPIO_SETWAKEUPBYCURRENTSTATE?GPIO
+004EB9H   004EB9H   000001H   BYTE   UNIT     XDATA          ?XD?_GPIO_FLIPOUTBIT?GPIO
+004EBAH   00800FH   003156H   ---    ---      **GAP**
+008010H   008010H   000001H   BYTE   OFFS..   XDATA          ?XD?GLOBAL_VARIABLE?4
+
+
+
+PUBLIC SYMBOLS OF MODULE:  OUTPUT\FW (BLUETOOTH)
+
+
+      VALUE       CLASS    TYPE      PUBLIC SYMBOL NAME
+      =================================================
+      02004E57H   XDATA    BYTE      ?_compare_str?BYTE
+      02004E48H   XDATA    BYTE      ?_dmemcpy?BYTE
+      00000020H.5 BIT      BIT       ?_GPIO_SetInput?BIT
+      00000020H.4 BIT      BIT       ?_GPIO_Setoe?BIT
+      00000020H.1 BIT      BIT       ?_GPIO_Setout?BIT
+      00000020H.6 BIT      BIT       ?_GPIO_SetOutput?BIT
+      00000020H.3 BIT      BIT       ?_GPIO_SetPd?BIT
+      00000020H.2 BIT      BIT       ?_GPIO_SetPu?BIT
+      00000020H.7 BIT      BIT       ?_GPIO_SetWakeup?BIT
+      02004E76H   XDATA    BYTE      ?_LED_device_line_control?BYTE
+      02004E6BH   XDATA    BYTE      ?_xmemcpy?BYTE
+      0100023FH   CODE     ---       ?C?CASTF
+      010005B9H   CODE     ---       ?C?CCASE
+      010003CFH   CODE     ---       ?C?CLDOPTR
+      010003B6H   CODE     ---       ?C?CLDPTR
+      00000000H   NUMBER   ---       ?C?CODESEG
+      01000390H   CODE     ---       ?C?COPY
+      010003FCH   CODE     ---       ?C?CSTPTR
+      0100020BH   CODE     ---       ?C?FCASTC
+      01000206H   CODE     ---       ?C?FCASTI
+      01000201H   CODE     ---       ?C?FCASTL
+      0100000AH   CODE     ---       ?C?FPADD
+      01000276H   CODE     ---       ?C?FPGETOPN2
+      010000FBH   CODE     ---       ?C?FPMUL
+      010002ABH   CODE     ---       ?C?FPNANRESULT
+      010002B5H   CODE     ---       ?C?FPOVERFLOW
+      0100028DH   CODE     ---       ?C?FPRESULT
+      010002A1H   CODE     ---       ?C?FPRESULT2
+      01000006H   CODE     ---       ?C?FPSUB
+      010002B2H   CODE     ---       ?C?FPUNDERFLOW
+      010005DFH   CODE     ---       ?C?ICALL
+      010005E3H   CODE     ---       ?C?ICALL2
+      01000463H   CODE     ---       ?C?IILDX
+      01000479H   CODE     ---       ?C?ILDIX
+      0100055DH   CODE     ---       ?C?LNEG
+      01000588H   CODE     ---       ?C?LSTKXDATA
+      0100057CH   CODE     ---       ?C?LSTXDATA
+      0100040EH   CODE     ---       ?C?UIDIV
+      0100056BH   CODE     ---       ?C?ULCMP
+      010004CBH   CODE     ---       ?C?ULDIV
+      00000000H   NUMBER   ---       ?C?XDATASEG
+      0100062CH   CODE     ---       ?C_START
+      01000000H   CODE     ---       ?C_STARTUP
+      01001DC3H   CODE     ---       _array_is_empty
+      01001DF3H   CODE     ---       _compare_str
+      01000A2DH   CODE     ---       _Delay1ms
+      01002D3FH   CODE     ---       _dmemcpy
+      01002DB0H   CODE     ---       _GPIO_ClearWakeup
+      010024BCH   CODE     ---       _GPIO_FlipOutBit
+      01002477H   CODE     ---       _GPIO_GetInputStatus
+      0100228EH   CODE     ---       _GPIO_SetInput
+      010022CEH   CODE     ---       _GPIO_Setoe
+      010007DEH   CODE     ---       _GPIO_Setout
+      01000B60H   CODE     ---       _GPIO_SetOutput
+      010022BDH   CODE     ---       _GPIO_SetPd
+      010022ACH   CODE     ---       _GPIO_SetPu
+      010023EBH   CODE     ---       _GPIO_SetWakeup
+      010023D8H   CODE     ---       _GPIO_SetWakeupByCurrentState
+      010011A3H   CODE     ---       _IIC_Read
+      01001102H   CODE     ---       _IIC_write
+      01001054H   CODE     ---       _IIC_WriteBlock
+      01002AECH   CODE     ---       _IPC_Initialize
+      010017D1H   CODE     ---       _IPC_Tx24GData
+      010008CEH   CODE     ---       _IPC_TxControlCmd
+      010017D7H   CODE     ---       _IPC_TxData
+      010015A2H   CODE     ---       _IPC_TxHidData
+      01001FD7H   CODE     ---       _kb_combination_key_press
+      01001293H   CODE     ---       _kb_motion_keyscan
+      01001818H   CODE     ---       _kb_multikey_setup
+      01001713H   CODE     ---       _kb_send_combination_key
+      010017FDH   CODE     ---       _kb_set_multikey
+      01001AC5H   CODE     ---       _kb_set_systemkey
+      01001FFCH   CODE     ---       _key_fn_function
+      01000B21H   CODE     ---       _LED_device_line_control
+      01001656H   CODE     ---       _xmemclear
+      01002D83H   CODE     ---       _xmemclear_ff
+      01001250H   CODE     ---       _xmemcpy
+      01000825H   CODE     ---       _YC_key_action_handle
+      010026FAH   CODE     ---       _YC_PWM_set_duty
+      02004DF5H   XDATA    BYTE      action_timeout
+      01000B7EH   CODE     ---       backlight_led_process
+      02004DD0H   XDATA    ---       bitkey
+      02004DEEH   XDATA    BYTE      ble_reconnect_flag
+      02004C8DH   XDATA    BYTE      btstimer
+      02004BA5H   XDATA    WORD      bttimer
+      02004C8EH   XDATA    BYTE      c51stimer
+      02004C5EH   XDATA    WORD      c51timer
+      01000687H   CONST    ---       col
+      02000B7EH   XDATA    BYTE      current_task
+      02004DEFH   XDATA    BYTE      delayChgInvTimer
+      02004E01H   XDATA    BYTE      fast_connect_flag
+      02004DEAH   XDATA    BYTE      fn_flag
+      02004DF3H   XDATA    BYTE      fn_flag_last
+      02004DF0H   XDATA    BYTE      fn_lock_flag
+      02004DE2H   XDATA    BYTE      fn_tx_flag
+      02004CBFH   XDATA    ---       g_variable
+      02004DDFH   XDATA    BYTE      get_24g_led_send
+      010024D8H   CODE     ---       GPIO_fillpd
+      02004800H   XDATA    ---       hidBuff
+      02004DE9H   XDATA    BYTE      iOS_rec_pinCode
+      01002D2CH   CODE     ---       IPC_AbandonLpm
+      01002C60H   CODE     ---       IPC_DealSingleStep
+      01002D26H   CODE     ---       IPC_GetBBDIsconnectReason
+      01001DABH   CODE     ---       IPC_IsTxBuffEmpty
+      01000FD6H   CODE     ---       IPC_WaitLpm
+      02000550H   XDATA    ---       ipcPin
+      0200054FH   XDATA    BYTE      ipcPinlen
+      02000C4BH   XDATA    ---       ipcReadBuff
+      02000BE7H   XDATA    ---       ipcSendBuff
+      01001AE0H   CODE     ---       kb_24g_get_led_status
+      010009A2H   CODE     ---       kb_button_press_timer500ms
+      0100174DH   CODE     ---       kb_need_keyscan
+      02004DF1H   XDATA    BYTE      key_value_temp
+      02004DEDH   XDATA    BYTE      keyCount
+      01001B51H   CODE     ---       KS_GetCurrentEvt
+      01002265H   CODE     ---       KS_Initialize
+      0100250CH   CODE     ---       KS_ScanMatrix
+      01002340H   CODE     ---       KS_Unistall
+      02004213H   XDATA    BYTE      kscurrmult
+      02004E50H   XDATA    ---       ksEvtPool
+      0100069CH   CONST    ---       ksMap
+      02004DA8H   XDATA    ---       ksSelMapCheck
+      02004DBCH   XDATA    ---       ksSelMapCurr
+      02004D93H   XDATA    ---       ksSelMapOld
+      02004D39H   XDATA    DWORD     le_pin_code
+      02004DE1H   XDATA    BYTE      le_pin_code_len
+      01000EC9H   CODE     ---       LED_all_shutdown
+      0100266AH   CODE     ---       LED_backlight_breath
+      0100074AH   CODE     ---       LED_handle
+      01000F1FH   CODE     ---       LED_timer500ms
+      02004DE4H   XDATA    BYTE      long_press_flag
+      02000B7FH   XDATA    BYTE      lpm_flag
+      02004C00H   XDATA    ---       m_24g_addr
+      02004D3DH   XDATA    ---       m_24g_enter_hibernate
+      02004D47H   XDATA    BYTE      m_24g_led_flag
+      02004BEFH   XDATA    BYTE      m_24g_pairing_sm
+      02004BEBH   XDATA    ---       m_24g_paring_addr
+      02004C91H   XDATA    WORD      m_adc0vBase
+      02004C93H   XDATA    WORD      m_adc3vValue
+      02004C90H   XDATA    BYTE      m_adc_channel
+      02004C8FH   XDATA    BYTE      m_adc_config_flag
+      02004C95H   XDATA    WORD      m_adcCurrentValue
+      02004CB7H   XDATA    BYTE      m_caps_num_lock
+      02004DE8H   XDATA    BYTE      m_caps_num_lock_last
+      02004D52H   XDATA    BYTE      m_customize_timer
+      02004DECH   XDATA    BYTE      m_customize_timer_last
+      020044F9H   XDATA    ---       m_le_lap
+      0200447BH   XDATA    ---       m_le_ltk
+      0200425EH   XDATA    BYTE      m_link_key_exists
+      02004262H   XDATA    ---       m_linkkey
+      02004131H   XDATA    BYTE      m_lpm_mode
+      0200448BH   XDATA    BYTE      m_ltk_exists
+      02004D76H   XDATA    BYTE      m_pc_sleep_flag
+      02004CB6H   XDATA    BYTE      m_power_on_flag
+      02004274H   XDATA    ---       m_reconn_addr
+      02004D38H   XDATA    BYTE      m_reconnect_continue
+      02000040H   XDATA    ---       m_remote_addr
+      020003D0H   XDATA    ---       m_remote_le_addr
+      02008010H   XDATA    BYTE      m_reset_reg
+      020047F4H   XDATA    WORD      m_ui_state_map
+      02000B81H   XDATA    BYTE      m_wakup_from_power_flag
+      01000FF0H   CODE     ---       main
+      02004DF7H   XDATA    BYTE      mult_key_status
+      02004DF6H   XDATA    BYTE      mult_key_value
+      02004DF8H   XDATA    ---       multikey
+      02004DE6H   XDATA    BYTE      pinCode_flag
+      02004DF4H   XDATA    BYTE      power_on_flag
+      02004DEBH   XDATA    BYTE      press_long_time_flag
+      02004DE0H   XDATA    BYTE      recon_index
+      02004DE5H   XDATA    BYTE      repeat_send_24g
+      02004DE7H   XDATA    BYTE      standard_key_release_flag
+      02004DE3H   XDATA    BYTE      switch_role_timer
+      02004DF2H   XDATA    BYTE      system_key_press
+      01000EE7H   CODE     ---       System_long_sleep
+      010027B2H   CODE     ---       System_Reset_Connect
+      01002786H   CODE     ---       System_Software_init
+      01002891H   CODE     ---       YC_adc_check
+      01002880H   CODE     ---       YC_adc_check_timer500ms
+      01002AF9H   CODE     ---       YC_adc_init
+      0100073DH   CODE     ---       YC_check_is_connected
+      010007F0H   CODE     ---       YC_check_need_reconnected
+      01000FE3H   CODE     ---       YC_clear_reconnect_flag
+      010027C4H   CODE     ---       YC_connect_timeout_500ms
+      0100098BH   CODE     ---       YC_disconnect_all_link
+      020000A7H   XDATA    ---       YC_GPIOWakeupH
+      020000A3H   XDATA    ---       YC_GPIOWakeupL
+      01002D38H   CODE     ---       YC_Ice_break
+      01002846H   CODE     ---       YC_pairing_timerout_500ms
+      01000F56H   CODE     ---       YC_PWM_disable
+      01002772H   CODE     ---       YC_PWM_init
+      01001005H   CODE     ---       YC_start_reconnect
+      01000F80H   CODE     ---       YC_System_Main
+      01001010H   CODE     ---       YC_update_eeprom_data
+
+
+
+SYMBOL TABLE OF MODULE:  OUTPUT\FW (BLUETOOTH)
+
+      VALUE       REP       CLASS    TYPE      SYMBOL NAME
+      ====================================================
+      ---         MODULE    ---      ---       BLUETOOTH
+      01001010H   PUBLIC    CODE     ---       YC_update_eeprom_data
+      01001005H   PUBLIC    CODE     ---       YC_start_reconnect
+      0100098BH   PUBLIC    CODE     ---       YC_disconnect_all_link
+      01000FE3H   PUBLIC    CODE     ---       YC_clear_reconnect_flag
+      010007F0H   PUBLIC    CODE     ---       YC_check_need_reconnected
+      0100073DH   PUBLIC    CODE     ---       YC_check_is_connected
+
+      0100073DH   BLOCK     CODE     ---       LVL=0
+      0100073DH   LINE      ---      ---       #4
+      0100073DH   LINE      ---      ---       #5
+      0100073DH   LINE      ---      ---       #6
+      01000744H   LINE      ---      ---       #7
+      01000744H   LINE      ---      ---       #8
+      01000747H   LINE      ---      ---       #9
+      01000747H   LINE      ---      ---       #10
+      01000749H   LINE      ---      ---       #11
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010007F0H   BLOCK     CODE     ---       LVL=0
+      010007F0H   LINE      ---      ---       #13
+      010007F0H   LINE      ---      ---       #14
+      010007F0H   BLOCK     CODE     NEAR LAB  LVL=1
+      010007F0H   LINE      ---      ---       #15
+      010007F2H   LINE      ---      ---       #17
+      010007F8H   LINE      ---      ---       #18
+      010007F9H   LINE      ---      ---       #20
+      01000801H   LINE      ---      ---       #21
+      01000801H   LINE      ---      ---       #22
+      01000807H   LINE      ---      ---       #23
+      01000807H   LINE      ---      ---       #24
+      0100080AH   LINE      ---      ---       #25
+      01000815H   LINE      ---      ---       #27
+      01000815H   LINE      ---      ---       #28
+      01000819H   LINE      ---      ---       #29
+      0100081BH   LINE      ---      ---       #30
+      0100081BH   LINE      ---      ---       #31
+      0100081BH   LINE      ---      ---       #32
+      0100081DH   LINE      ---      ---       #34
+      0100081DH   LINE      ---      ---       #35
+      01000822H   LINE      ---      ---       #36
+      01000824H   LINE      ---      ---       #37
+      01000824H   LINE      ---      ---       #38
+      01000824H   LINE      ---      ---       #39
+      00000007H   SYMBOL    DATA     VOID      return_val
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01000FE3H   BLOCK     CODE     ---       LVL=0
+      01000FE3H   LINE      ---      ---       #42
+      01000FE3H   LINE      ---      ---       #43
+      01000FE3H   LINE      ---      ---       #44
+      01000FE8H   LINE      ---      ---       #45
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      0100098BH   BLOCK     CODE     ---       LVL=0
+      0100098BH   LINE      ---      ---       #48
+      0100098BH   LINE      ---      ---       #49
+      0100098BH   LINE      ---      ---       #50
+      01000998H   LINE      ---      ---       #52
+      01000998H   LINE      ---      ---       #53
+      0100099CH   LINE      ---      ---       #54
+      0100099FH   LINE      ---      ---       #55
+      0100099FH   LINE      ---      ---       #56
+      010009A1H   LINE      ---      ---       #57
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001005H   BLOCK     CODE     ---       LVL=0
+      01001005H   LINE      ---      ---       #60
+      01001005H   LINE      ---      ---       #61
+      01001005H   LINE      ---      ---       #62
+      0100100BH   LINE      ---      ---       #63
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001010H   BLOCK     CODE     ---       LVL=0
+      01001010H   LINE      ---      ---       #67
+      01001010H   LINE      ---      ---       #68
+      01001010H   LINE      ---      ---       #69
+      01001016H   LINE      ---      ---       #70
+      01001016H   LINE      ---      ---       #72
+      0100102BH   LINE      ---      ---       #75
+      01001032H   LINE      ---      ---       #76
+      01001042H   LINE      ---      ---       #77
+      01001049H   LINE      ---      ---       #78
+      0100104EH   LINE      ---      ---       #79
+      01001053H   LINE      ---      ---       #80
+      01001053H   LINE      ---      ---       #81
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       GLOBAL_VARIABLE
+      02004E01H   PUBLIC    XDATA    BYTE      fast_connect_flag
+      02004DF8H   PUBLIC    XDATA    ---       multikey
+      02004DF7H   PUBLIC    XDATA    BYTE      mult_key_status
+      02004D39H   PUBLIC    XDATA    DWORD     le_pin_code
+      02004DF6H   PUBLIC    XDATA    BYTE      mult_key_value
+      02004DF5H   PUBLIC    XDATA    BYTE      action_timeout
+      02004DF4H   PUBLIC    XDATA    BYTE      power_on_flag
+      02004DF3H   PUBLIC    XDATA    BYTE      fn_flag_last
+      02004DF2H   PUBLIC    XDATA    BYTE      system_key_press
+      02004DF1H   PUBLIC    XDATA    BYTE      key_value_temp
+      02004213H   PUBLIC    XDATA    BYTE      kscurrmult
+      02004C95H   PUBLIC    XDATA    WORD      m_adcCurrentValue
+      02004D38H   PUBLIC    XDATA    BYTE      m_reconnect_continue
+      02004DF0H   PUBLIC    XDATA    BYTE      fn_lock_flag
+      02000040H   PUBLIC    XDATA    ---       m_remote_addr
+      02004DEFH   PUBLIC    XDATA    BYTE      delayChgInvTimer
+      02004DEEH   PUBLIC    XDATA    BYTE      ble_reconnect_flag
+      02004DEDH   PUBLIC    XDATA    BYTE      keyCount
+      02004274H   PUBLIC    XDATA    ---       m_reconn_addr
+      02004DECH   PUBLIC    XDATA    BYTE      m_customize_timer_last
+      02004DEBH   PUBLIC    XDATA    BYTE      press_long_time_flag
+      02004DEAH   PUBLIC    XDATA    BYTE      fn_flag
+      020047F4H   PUBLIC    XDATA    WORD      m_ui_state_map
+      02004DE9H   PUBLIC    XDATA    BYTE      iOS_rec_pinCode
+      02004C8FH   PUBLIC    XDATA    BYTE      m_adc_config_flag
+      02004DE8H   PUBLIC    XDATA    BYTE      m_caps_num_lock_last
+      0200447BH   PUBLIC    XDATA    ---       m_le_ltk
+      02004262H   PUBLIC    XDATA    ---       m_linkkey
+      02004D93H   PUBLIC    XDATA    ---       ksSelMapOld
+      02004DE7H   PUBLIC    XDATA    BYTE      standard_key_release_flag
+      02004DBCH   PUBLIC    XDATA    ---       ksSelMapCurr
+      02004DE6H   PUBLIC    XDATA    BYTE      pinCode_flag
+      02004DE5H   PUBLIC    XDATA    BYTE      repeat_send_24g
+      02004DE4H   PUBLIC    XDATA    BYTE      long_press_flag
+      020044F9H   PUBLIC    XDATA    ---       m_le_lap
+      02004800H   PUBLIC    XDATA    ---       hidBuff
+      02004D52H   PUBLIC    XDATA    BYTE      m_customize_timer
+      02004CB6H   PUBLIC    XDATA    BYTE      m_power_on_flag
+      02004D3DH   PUBLIC    XDATA    ---       m_24g_enter_hibernate
+      02004CB7H   PUBLIC    XDATA    BYTE      m_caps_num_lock
+      02004C90H   PUBLIC    XDATA    BYTE      m_adc_channel
+      02004DE3H   PUBLIC    XDATA    BYTE      switch_role_timer
+      02004D47H   PUBLIC    XDATA    BYTE      m_24g_led_flag
+      0200425EH   PUBLIC    XDATA    BYTE      m_link_key_exists
+      02004BEFH   PUBLIC    XDATA    BYTE      m_24g_pairing_sm
+      02004C93H   PUBLIC    XDATA    WORD      m_adc3vValue
+      02004131H   PUBLIC    XDATA    BYTE      m_lpm_mode
+      02004DE2H   PUBLIC    XDATA    BYTE      fn_tx_flag
+      0200448BH   PUBLIC    XDATA    BYTE      m_ltk_exists
+      02000B81H   PUBLIC    XDATA    BYTE      m_wakup_from_power_flag
+      02004C91H   PUBLIC    XDATA    WORD      m_adc0vBase
+      02004D76H   PUBLIC    XDATA    BYTE      m_pc_sleep_flag
+      02004DE1H   PUBLIC    XDATA    BYTE      le_pin_code_len
+      02004C00H   PUBLIC    XDATA    ---       m_24g_addr
+      02004DE0H   PUBLIC    XDATA    BYTE      recon_index
+      02004DDFH   PUBLIC    XDATA    BYTE      get_24g_led_send
+      02008010H   PUBLIC    XDATA    BYTE      m_reset_reg
+      02004CBFH   PUBLIC    XDATA    ---       g_variable
+      020003D0H   PUBLIC    XDATA    ---       m_remote_le_addr
+      02004DD0H   PUBLIC    XDATA    ---       bitkey
+      02004DA8H   PUBLIC    XDATA    ---       ksSelMapCheck
+      02004BEBH   PUBLIC    XDATA    ---       m_24g_paring_addr
+      0100069CH   PUBLIC    CONST    ---       ksMap
+      01000687H   PUBLIC    CONST    ---       col
+
+      ---         MODULE    ---      ---       KB_PROCESS
+      01001818H   PUBLIC    CODE     ---       _kb_multikey_setup
+      01001FFCH   PUBLIC    CODE     ---       _key_fn_function
+      01001FD7H   PUBLIC    CODE     ---       _kb_combination_key_press
+      01001293H   PUBLIC    CODE     ---       _kb_motion_keyscan
+      0100174DH   PUBLIC    CODE     ---       kb_need_keyscan
+      01001AE0H   PUBLIC    CODE     ---       kb_24g_get_led_status
+      01001713H   PUBLIC    CODE     ---       _kb_send_combination_key
+      01001AC5H   PUBLIC    CODE     ---       _kb_set_systemkey
+      010017FDH   PUBLIC    CODE     ---       _kb_set_multikey
+      010015A2H   PUBLIC    CODE     ---       _IPC_TxHidData
+      01000825H   PUBLIC    CODE     ---       _YC_key_action_handle
+
+      01000825H   BLOCK     CODE     ---       LVL=0
+      01000825H   LINE      ---      ---       #3
+      0100082AH   LINE      ---      ---       #4
+      0100082AH   LINE      ---      ---       #5
+      01000837H   LINE      ---      ---       #6
+      01000837H   LINE      ---      ---       #7
+      01000837H   LINE      ---      ---       #8
+      01000837H   LINE      ---      ---       #9
+      0100083CH   LINE      ---      ---       #11
+      0100084CH   LINE      ---      ---       #12
+      01000850H   LINE      ---      ---       #13
+      01000855H   LINE      ---      ---       #14
+      0100086BH   LINE      ---      ---       #15
+      0100086BH   LINE      ---      ---       #16
+      01000871H   LINE      ---      ---       #17
+      01000873H   LINE      ---      ---       #18
+      01000875H   LINE      ---      ---       #19
+      01000877H   LINE      ---      ---       #20
+      0100087DH   LINE      ---      ---       #21
+      0100087DH   LINE      ---      ---       #22
+      01000881H   LINE      ---      ---       #24
+      01000887H   LINE      ---      ---       #25
+      0100088AH   LINE      ---      ---       #26
+      0100088EH   LINE      ---      ---       #28
+      0100088FH   LINE      ---      ---       #29
+      0100088FH   LINE      ---      ---       #30
+      01000894H   LINE      ---      ---       #31
+      01000899H   LINE      ---      ---       #32
+      01000899H   LINE      ---      ---       #33
+      010008A1H   LINE      ---      ---       #34
+      010008A2H   LINE      ---      ---       #36
+      010008A2H   LINE      ---      ---       #37
+      010008AAH   LINE      ---      ---       #38
+      010008AAH   LINE      ---      ---       #39
+      010008AEH   LINE      ---      ---       #40
+      010008B4H   LINE      ---      ---       #41
+      010008B7H   LINE      ---      ---       #42
+      010008BDH   LINE      ---      ---       #43
+      010008C2H   LINE      ---      ---       #44
+      010008C2H   LINE      ---      ---       #45
+      010008C7H   LINE      ---      ---       #46
+      010008C7H   LINE      ---      ---       #47
+      010008C8H   LINE      ---      ---       #48
+      010008C8H   LINE      ---      ---       #49
+      010008CDH   LINE      ---      ---       #50
+      010008CDH   LINE      ---      ---       #51
+      010008CDH   LINE      ---      ---       #52
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010015A2H   BLOCK     CODE     ---       LVL=0
+      010015A2H   LINE      ---      ---       #56
+      010015B0H   LINE      ---      ---       #57
+      010015B0H   BLOCK     CODE     NEAR LAB  LVL=1
+      010015B0H   LINE      ---      ---       #59
+      010015B2H   LINE      ---      ---       #61
+      010015BCH   LINE      ---      ---       #62
+      010015BCH   LINE      ---      ---       #63
+      010015DCH   LINE      ---      ---       #64
+      010015DFH   LINE      ---      ---       #66
+      010015E5H   LINE      ---      ---       #68
+      010015EBH   LINE      ---      ---       #71
+      010015F3H   LINE      ---      ---       #72
+      010015F3H   LINE      ---      ---       #73
+      010015FBH   LINE      ---      ---       #74
+      010015FBH   LINE      ---      ---       #75
+      010015FEH   LINE      ---      ---       #76
+      01001610H   LINE      ---      ---       #77
+      01001616H   LINE      ---      ---       #79
+      0100161CH   LINE      ---      ---       #80
+      0100161EH   LINE      ---      ---       #81
+      01001625H   LINE      ---      ---       #82
+      01001625H   LINE      ---      ---       #83
+      01001628H   LINE      ---      ---       #84
+      01001630H   LINE      ---      ---       #85
+      01001630H   LINE      ---      ---       #86
+      01001634H   LINE      ---      ---       #87
+      01001636H   LINE      ---      ---       #89
+      01001636H   LINE      ---      ---       #90
+      0100163CH   LINE      ---      ---       #91
+      0100163CH   LINE      ---      ---       #92
+      0100163EH   LINE      ---      ---       #93
+      01001645H   LINE      ---      ---       #94
+      01001645H   LINE      ---      ---       #95
+      01001648H   LINE      ---      ---       #96
+      01001648H   LINE      ---      ---       #97
+      01001655H   LINE      ---      ---       #98
+      01001655H   LINE      ---      ---       #99
+      02004E2AH   SYMBOL    XDATA    VOID      tx_hid_buff
+      00000007H   SYMBOL    DATA     VOID      i
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      010017FDH   BLOCK     CODE     ---       LVL=0
+      010017FDH   LINE      ---      ---       #102
+      01001801H   LINE      ---      ---       #103
+      01001801H   LINE      ---      ---       #104
+      01001809H   LINE      ---      ---       #105
+      01001809H   LINE      ---      ---       #106
+      0100180CH   LINE      ---      ---       #107
+      01001811H   LINE      ---      ---       #108
+      01001814H   LINE      ---      ---       #109
+      01001817H   LINE      ---      ---       #110
+      01001817H   LINE      ---      ---       #111
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001AC5H   BLOCK     CODE     ---       LVL=0
+      01001AC5H   LINE      ---      ---       #114
+      01001AC5H   LINE      ---      ---       #115
+      01001AC5H   LINE      ---      ---       #116
+      01001ACDH   LINE      ---      ---       #117
+      01001ACDH   LINE      ---      ---       #118
+      01001AD0H   LINE      ---      ---       #119
+      01001AD6H   LINE      ---      ---       #120
+      01001ADCH   LINE      ---      ---       #121
+      01001ADFH   LINE      ---      ---       #122
+      01001ADFH   LINE      ---      ---       #123
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001713H   BLOCK     CODE     ---       LVL=0
+      01001713H   LINE      ---      ---       #126
+      0100171BH   LINE      ---      ---       #127
+      0100171BH   LINE      ---      ---       #128
+      01001727H   LINE      ---      ---       #129
+      0100172DH   LINE      ---      ---       #130
+      0100173BH   LINE      ---      ---       #131
+      01001743H   LINE      ---      ---       #132
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001AE0H   BLOCK     CODE     ---       LVL=0
+      01001AE0H   LINE      ---      ---       #152
+      01001AE0H   LINE      ---      ---       #153
+      01001AE0H   LINE      ---      ---       #154
+      01001AECH   LINE      ---      ---       #155
+      01001AECH   LINE      ---      ---       #156
+      01001AF3H   LINE      ---      ---       #157
+      01001AF3H   LINE      ---      ---       #158
+      01001B00H   LINE      ---      ---       #160
+      01001B05H   LINE      ---      ---       #161
+      01001B0AH   LINE      ---      ---       #162
+      01001B12H   LINE      ---      ---       #163
+      01001B1DH   LINE      ---      ---       #164
+      01001B1DH   LINE      ---      ---       #165
+      01001B1DH   LINE      ---      ---       #167
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001B1EH   BLOCK     CODE     ---       LVL=0
+      01001B1EH   LINE      ---      ---       #171
+      01001B1EH   LINE      ---      ---       #172
+      01001B1EH   BLOCK     CODE     NEAR LAB  LVL=1
+      01001B1EH   LINE      ---      ---       #173
+      01001B27H   LINE      ---      ---       #175
+      01001B2BH   LINE      ---      ---       #177
+      01001B38H   LINE      ---      ---       #179
+      01001B3BH   LINE      ---      ---       #180
+      01001B3BH   LINE      ---      ---       #181
+      01001B40H   LINE      ---      ---       #182
+      01001B42H   LINE      ---      ---       #184
+      01001B42H   LINE      ---      ---       #185
+      01001B50H   LINE      ---      ---       #186
+      02004E91H   SYMBOL    XDATA    VOID      pEvt
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      0100174DH   BLOCK     CODE     ---       LVL=0
+      0100174DH   LINE      ---      ---       #190
+      0100174DH   LINE      ---      ---       #191
+      0100174DH   LINE      ---      ---       #192
+      0100175CH   LINE      ---      ---       #196
+      0100175FH   LINE      ---      ---       #198
+      0100175FH   LINE      ---      ---       #199
+      01001766H   LINE      ---      ---       #200
+      01001766H   LINE      ---      ---       #201
+      0100176DH   LINE      ---      ---       #202
+      01001773H   LINE      ---      ---       #203
+      01001774H   LINE      ---      ---       #204
+      0100177BH   LINE      ---      ---       #205
+      0100177BH   LINE      ---      ---       #206
+      0100177EH   LINE      ---      ---       #207
+      01001786H   LINE      ---      ---       #208
+      01001786H   LINE      ---      ---       #209
+      0100178DH   LINE      ---      ---       #210
+      0100178DH   LINE      ---      ---       #211
+      01001792H   LINE      ---      ---       #212
+      0100179BH   LINE      ---      ---       #213
+      010017A0H   LINE      ---      ---       #214
+      010017A6H   LINE      ---      ---       #215
+      010017ADH   LINE      ---      ---       #217
+      010017B3H   LINE      ---      ---       #218
+      010017B4H   LINE      ---      ---       #219
+      010017BBH   LINE      ---      ---       #220
+      010017BBH   LINE      ---      ---       #221
+      010017C0H   LINE      ---      ---       #222
+      010017C4H   LINE      ---      ---       #223
+      010017CBH   LINE      ---      ---       #224
+      010017D0H   LINE      ---      ---       #225
+      010017D0H   LINE      ---      ---       #226
+      010017D0H   LINE      ---      ---       #228
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001293H   BLOCK     CODE     ---       LVL=0
+      01001293H   LINE      ---      ---       #232
+      0100129EH   LINE      ---      ---       #233
+      0100129EH   BLOCK     CODE     NEAR LAB  LVL=1
+      0100129EH   LINE      ---      ---       #234
+      010012A1H   LINE      ---      ---       #235
+      010012A3H   LINE      ---      ---       #237
+      010012A7H   LINE      ---      ---       #238
+      010012B5H   LINE      ---      ---       #239
+      010012B5H   LINE      ---      ---       #240
+      010012D3H   LINE      ---      ---       #241
+      010012D3H   LINE      ---      ---       #242
+      010012D9H   LINE      ---      ---       #243
+      010012D9H   LINE      ---      ---       #244
+      010012E1H   LINE      ---      ---       #245
+      010012E9H   LINE      ---      ---       #248
+      010012F7H   LINE      ---      ---       #252
+      010012FDH   LINE      ---      ---       #253
+      010012FDH   LINE      ---      ---       #254
+      010012FFH   LINE      ---      ---       #255
+      01001305H   LINE      ---      ---       #256
+      01001305H   LINE      ---      ---       #260
+      0100130BH   LINE      ---      ---       #261
+      01001312H   LINE      ---      ---       #262
+      01001316H   LINE      ---      ---       #264
+      0100131EH   LINE      ---      ---       #265
+      0100131EH   LINE      ---      ---       #266
+      01001323H   LINE      ---      ---       #267
+      01001327H   LINE      ---      ---       #268
+      0100132BH   LINE      ---      ---       #269
+      0100132EH   LINE      ---      ---       #270
+      01001330H   LINE      ---      ---       #272
+      01001330H   LINE      ---      ---       #273
+      01001335H   LINE      ---      ---       #274
+      01001339H   LINE      ---      ---       #275
+      0100133DH   LINE      ---      ---       #276
+      01001340H   LINE      ---      ---       #277
+      01001340H   LINE      ---      ---       #278
+      0100134CH   LINE      ---      ---       #279
+      01001358H   LINE      ---      ---       #282
+      01001385H   LINE      ---      ---       #285
+      01001385H   LINE      ---      ---       #286
+      0100138DH   LINE      ---      ---       #287
+      0100138DH   LINE      ---      ---       #288
+      01001394H   LINE      ---      ---       #289
+      01001396H   LINE      ---      ---       #291
+      01001396H   LINE      ---      ---       #292
+      0100139DH   LINE      ---      ---       #293
+      0100139DH   LINE      ---      ---       #294
+      0100139FH   LINE      ---      ---       #296
+      0100139FH   LINE      ---      ---       #297
+      010013A6H   LINE      ---      ---       #298
+      010013A6H   LINE      ---      ---       #300
+      010013ACH   LINE      ---      ---       #301
+      010013C5H   LINE      ---      ---       #304
+      010013C5H   LINE      ---      ---       #306
+      010013C5H   LINE      ---      ---       #309
+      010013CDH   LINE      ---      ---       #310
+      010013CDH   LINE      ---      ---       #311
+      010013DBH   LINE      ---      ---       #312
+      010013DBH   LINE      ---      ---       #313
+      01001404H   LINE      ---      ---       #315
+      01001404H   LINE      ---      ---       #316
+      0100140AH   LINE      ---      ---       #318
+      0100140AH   LINE      ---      ---       #319
+      01001412H   LINE      ---      ---       #320
+      01001412H   LINE      ---      ---       #322
+      01001420H   LINE      ---      ---       #324
+      01001427H   LINE      ---      ---       #325
+      01001427H   LINE      ---      ---       #326
+      0100142AH   LINE      ---      ---       #327
+      0100142EH   LINE      ---      ---       #328
+      01001438H   LINE      ---      ---       #329
+      01001438H   LINE      ---      ---       #331
+      0100143FH   LINE      ---      ---       #332
+      0100143FH   LINE      ---      ---       #333
+      01001442H   LINE      ---      ---       #334
+      01001447H   LINE      ---      ---       #335
+      01001450H   LINE      ---      ---       #336
+      01001450H   LINE      ---      ---       #338
+      01001463H   LINE      ---      ---       #339
+      01001463H   LINE      ---      ---       #340
+      01001468H   LINE      ---      ---       #341
+      0100146CH   LINE      ---      ---       #343
+      01001472H   LINE      ---      ---       #344
+      01001472H   LINE      ---      ---       #345
+      01001474H   LINE      ---      ---       #346
+      0100147AH   LINE      ---      ---       #347
+      0100147CH   LINE      ---      ---       #350
+      01001482H   LINE      ---      ---       #351
+      0100148CH   LINE      ---      ---       #352
+      0100148CH   LINE      ---      ---       #354
+      0100148CH   LINE      ---      ---       #355
+      01001492H   LINE      ---      ---       #356
+      01001492H   LINE      ---      ---       #357
+      010014A8H   LINE      ---      ---       #358
+      010014B4H   LINE      ---      ---       #359
+      010014C3H   LINE      ---      ---       #360
+      010014C3H   LINE      ---      ---       #362
+      010014C9H   LINE      ---      ---       #363
+      010014DBH   LINE      ---      ---       #364
+      010014E2H   LINE      ---      ---       #365
+      010014ECH   LINE      ---      ---       #367
+      010014F1H   LINE      ---      ---       #369
+      010014F6H   LINE      ---      ---       #370
+      010014FCH   LINE      ---      ---       #371
+      010014FCH   LINE      ---      ---       #372
+      01001505H   LINE      ---      ---       #373
+      0100151AH   LINE      ---      ---       #375
+      01001536H   LINE      ---      ---       #377
+      01001546H   LINE      ---      ---       #378
+      01001546H   LINE      ---      ---       #379
+      01001554H   LINE      ---      ---       #380
+      01001563H   LINE      ---      ---       #381
+      0100156BH   LINE      ---      ---       #382
+      0100156BH   LINE      ---      ---       #384
+      01001587H   LINE      ---      ---       #385
+      01001591H   LINE      ---      ---       #386
+      01001597H   LINE      ---      ---       #387
+      010015A1H   LINE      ---      ---       #388
+      010015A1H   LINE      ---      ---       #390
+      02004E74H   SYMBOL    XDATA    VOID      temp
+      02004E75H   SYMBOL    XDATA    VOID      i
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01001FD7H   BLOCK     CODE     ---       LVL=0
+      01001FD7H   LINE      ---      ---       #394
+      01001FD7H   LINE      ---      ---       #395
+      01001FD7H   LINE      ---      ---       #396
+      01001FDCH   LINE      ---      ---       #397
+      01001FDFH   LINE      ---      ---       #399
+      01001FE3H   LINE      ---      ---       #400
+      01001FE3H   LINE      ---      ---       #401
+      01001FEAH   LINE      ---      ---       #402
+      01001FEEH   LINE      ---      ---       #404
+      01001FF4H   LINE      ---      ---       #405
+      01001FF5H   LINE      ---      ---       #407
+      01001FF5H   LINE      ---      ---       #408
+      01001FFBH   LINE      ---      ---       #409
+      01001FFBH   LINE      ---      ---       #411
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001FFCH   BLOCK     CODE     ---       LVL=0
+      01001FFCH   LINE      ---      ---       #414
+      01001FFCH   LINE      ---      ---       #415
+      01001FFCH   BLOCK     CODE     NEAR LAB  LVL=1
+      01001FFCH   LINE      ---      ---       #416
+      01002001H   LINE      ---      ---       #418
+      01002005H   LINE      ---      ---       #419
+      0100200AH   LINE      ---      ---       #421
+      0100200FH   LINE      ---      ---       #422
+      01002019H   LINE      ---      ---       #423
+      01002019H   LINE      ---      ---       #425
+      01002096H   LINE      ---      ---       #426
+      01002096H   LINE      ---      ---       #427
+      01002096H   LINE      ---      ---       #428
+      0100209CH   LINE      ---      ---       #429
+      0100209EH   LINE      ---      ---       #430
+      0100209EH   LINE      ---      ---       #431
+      010020A4H   LINE      ---      ---       #432
+      010020A6H   LINE      ---      ---       #433
+      010020A6H   LINE      ---      ---       #434
+      010020ACH   LINE      ---      ---       #435
+      010020AEH   LINE      ---      ---       #436
+      010020AEH   LINE      ---      ---       #437
+      010020B4H   LINE      ---      ---       #438
+      010020B6H   LINE      ---      ---       #439
+      010020B6H   LINE      ---      ---       #440
+      010020BCH   LINE      ---      ---       #441
+      010020BEH   LINE      ---      ---       #442
+      010020BEH   LINE      ---      ---       #443
+      010020C4H   LINE      ---      ---       #444
+      010020C6H   LINE      ---      ---       #445
+      010020C6H   LINE      ---      ---       #446
+      010020CCH   LINE      ---      ---       #447
+      010020CEH   LINE      ---      ---       #448
+      010020CEH   LINE      ---      ---       #449
+      010020D4H   LINE      ---      ---       #450
+      010020D6H   LINE      ---      ---       #451
+      010020D6H   LINE      ---      ---       #452
+      010020DCH   LINE      ---      ---       #453
+      010020DEH   LINE      ---      ---       #454
+      010020DEH   LINE      ---      ---       #455
+      010020E4H   LINE      ---      ---       #456
+      010020E6H   LINE      ---      ---       #457
+      010020E6H   LINE      ---      ---       #458
+      010020ECH   LINE      ---      ---       #459
+      010020EEH   LINE      ---      ---       #460
+      010020EEH   LINE      ---      ---       #461
+      010020F4H   LINE      ---      ---       #462
+      010020F6H   LINE      ---      ---       #463
+      010020F6H   LINE      ---      ---       #464
+      010020FCH   LINE      ---      ---       #465
+      010020FEH   LINE      ---      ---       #467
+      010020FEH   LINE      ---      ---       #468
+      01002102H   LINE      ---      ---       #469
+      01002102H   LINE      ---      ---       #470
+      0100210BH   LINE      ---      ---       #471
+      01002110H   LINE      ---      ---       #473
+      01002115H   LINE      ---      ---       #474
+      0100211AH   LINE      ---      ---       #475
+      0100211AH   LINE      ---      ---       #476
+      0100211FH   LINE      ---      ---       #477
+      01002121H   LINE      ---      ---       #478
+      01002121H   LINE      ---      ---       #479
+      01002125H   LINE      ---      ---       #480
+      01002125H   LINE      ---      ---       #481
+      0100212EH   LINE      ---      ---       #482
+      01002131H   LINE      ---      ---       #483
+      01002136H   LINE      ---      ---       #484
+      01002136H   LINE      ---      ---       #485
+      0100213BH   LINE      ---      ---       #486
+      0100213DH   LINE      ---      ---       #487
+      0100213DH   LINE      ---      ---       #488
+      01002141H   LINE      ---      ---       #489
+      01002141H   LINE      ---      ---       #490
+      01002147H   LINE      ---      ---       #491
+      01002149H   LINE      ---      ---       #492
+      01002149H   LINE      ---      ---       #493
+      0100214EH   LINE      ---      ---       #494
+      01002150H   LINE      ---      ---       #495
+      01002150H   LINE      ---      ---       #496
+      01002154H   LINE      ---      ---       #497
+      01002154H   LINE      ---      ---       #498
+      0100215DH   LINE      ---      ---       #499
+      01002160H   LINE      ---      ---       #500
+      01002160H   LINE      ---      ---       #501
+      01002165H   LINE      ---      ---       #502
+      01002167H   LINE      ---      ---       #503
+      01002167H   LINE      ---      ---       #504
+      0100216BH   LINE      ---      ---       #505
+      0100216BH   LINE      ---      ---       #506
+      01002174H   LINE      ---      ---       #507
+      01002177H   LINE      ---      ---       #508
+      01002177H   LINE      ---      ---       #509
+      0100217CH   LINE      ---      ---       #510
+      0100217EH   LINE      ---      ---       #511
+      0100217EH   LINE      ---      ---       #512
+      0100217EH   LINE      ---      ---       #513
+      01002182H   LINE      ---      ---       #514
+      01002188H   LINE      ---      ---       #515
+      0100218DH   LINE      ---      ---       #516
+      0100218FH   LINE      ---      ---       #517
+      0100218FH   LINE      ---      ---       #518
+      01002195H   LINE      ---      ---       #519
+      01002197H   LINE      ---      ---       #520
+      01002197H   LINE      ---      ---       #521
+      0100219DH   LINE      ---      ---       #522
+      0100219FH   LINE      ---      ---       #523
+      0100219FH   LINE      ---      ---       #524
+      010021A5H   LINE      ---      ---       #525
+      010021A7H   LINE      ---      ---       #526
+      010021A7H   LINE      ---      ---       #527
+      010021ADH   LINE      ---      ---       #528
+      010021AFH   LINE      ---      ---       #529
+      010021AFH   LINE      ---      ---       #530
+      010021B5H   LINE      ---      ---       #531
+      010021B7H   LINE      ---      ---       #532
+      010021B7H   LINE      ---      ---       #533
+      010021BDH   LINE      ---      ---       #534
+      010021BFH   LINE      ---      ---       #535
+      010021BFH   LINE      ---      ---       #536
+      010021C5H   LINE      ---      ---       #537
+      010021C7H   LINE      ---      ---       #538
+      010021C7H   LINE      ---      ---       #539
+      010021CDH   LINE      ---      ---       #540
+      010021CFH   LINE      ---      ---       #541
+      010021CFH   LINE      ---      ---       #542
+      010021D5H   LINE      ---      ---       #543
+      010021D7H   LINE      ---      ---       #544
+      010021D7H   LINE      ---      ---       #545
+      010021DDH   LINE      ---      ---       #546
+      010021DFH   LINE      ---      ---       #547
+      010021DFH   LINE      ---      ---       #548
+      010021E5H   LINE      ---      ---       #549
+      010021E7H   LINE      ---      ---       #550
+      010021E7H   LINE      ---      ---       #551
+      010021EDH   LINE      ---      ---       #552
+      010021EFH   LINE      ---      ---       #553
+      010021EFH   LINE      ---      ---       #554
+      010021F5H   LINE      ---      ---       #555
+      010021F7H   LINE      ---      ---       #556
+      010021F7H   LINE      ---      ---       #557
+      010021FDH   LINE      ---      ---       #558
+      010021FFH   LINE      ---      ---       #559
+      010021FFH   LINE      ---      ---       #560
+      01002205H   LINE      ---      ---       #561
+      01002207H   LINE      ---      ---       #562
+      01002207H   LINE      ---      ---       #563
+      0100220DH   LINE      ---      ---       #564
+      0100220FH   LINE      ---      ---       #565
+      0100220FH   LINE      ---      ---       #566
+      01002215H   LINE      ---      ---       #567
+      01002217H   LINE      ---      ---       #568
+      01002217H   LINE      ---      ---       #569
+      0100221DH   LINE      ---      ---       #570
+      0100221FH   LINE      ---      ---       #571
+      0100221FH   LINE      ---      ---       #572
+      01002225H   LINE      ---      ---       #573
+      01002225H   LINE      ---      ---       #574
+      01002225H   LINE      ---      ---       #575
+      01002225H   LINE      ---      ---       #576
+      01002225H   LINE      ---      ---       #577
+      01002225H   LINE      ---      ---       #579
+      0100222BH   LINE      ---      ---       #580
+      0100222BH   LINE      ---      ---       #581
+      0100223DH   LINE      ---      ---       #582
+      01002242H   LINE      ---      ---       #583
+      01002242H   LINE      ---      ---       #587
+      01002247H   LINE      ---      ---       #588
+      02004EB0H   SYMBOL    XDATA    VOID      temp
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01001818H   BLOCK     CODE     ---       LVL=0
+      01001818H   LINE      ---      ---       #592
+      01001823H   LINE      ---      ---       #593
+      01001823H   BLOCK     CODE     NEAR LAB  LVL=1
+      01001823H   LINE      ---      ---       #594
+      01001826H   LINE      ---      ---       #596
+      01001833H   LINE      ---      ---       #597
+      01001833H   LINE      ---      ---       #598
+      0100185EH   LINE      ---      ---       #600
+      0100185EH   LINE      ---      ---       #602
+      01001865H   LINE      ---      ---       #603
+      01001865H   LINE      ---      ---       #604
+      0100186CH   LINE      ---      ---       #605
+      0100186EH   LINE      ---      ---       #607
+      01001872H   LINE      ---      ---       #608
+      01001872H   LINE      ---      ---       #609
+      01001879H   LINE      ---      ---       #610
+      0100187BH   LINE      ---      ---       #611
+      0100189BH   LINE      ---      ---       #612
+      0100189BH   LINE      ---      ---       #613
+      010018A0H   LINE      ---      ---       #614
+      010018A2H   LINE      ---      ---       #615
+      010018A6H   LINE      ---      ---       #616
+      010018A6H   LINE      ---      ---       #617
+      010018ADH   LINE      ---      ---       #618
+      010018AFH   LINE      ---      ---       #619
+      010018CFH   LINE      ---      ---       #620
+      010018CFH   LINE      ---      ---       #621
+      010018D4H   LINE      ---      ---       #622
+      010018D6H   LINE      ---      ---       #623
+      010018DAH   LINE      ---      ---       #624
+      010018DAH   LINE      ---      ---       #625
+      010018E1H   LINE      ---      ---       #626
+      010018E3H   LINE      ---      ---       #627
+      01001903H   LINE      ---      ---       #628
+      01001903H   LINE      ---      ---       #629
+      01001908H   LINE      ---      ---       #630
+      0100190AH   LINE      ---      ---       #631
+      0100190EH   LINE      ---      ---       #632
+      0100190EH   LINE      ---      ---       #633
+      01001915H   LINE      ---      ---       #634
+      01001917H   LINE      ---      ---       #635
+      01001937H   LINE      ---      ---       #636
+      01001937H   LINE      ---      ---       #637
+      0100193DH   LINE      ---      ---       #638
+      0100193FH   LINE      ---      ---       #639
+      01001943H   LINE      ---      ---       #640
+      01001943H   LINE      ---      ---       #641
+      0100194AH   LINE      ---      ---       #642
+      0100194CH   LINE      ---      ---       #643
+      0100196CH   LINE      ---      ---       #644
+      0100196CH   LINE      ---      ---       #645
+      01001972H   LINE      ---      ---       #646
+      01001974H   LINE      ---      ---       #647
+      01001978H   LINE      ---      ---       #648
+      01001978H   LINE      ---      ---       #649
+      0100197FH   LINE      ---      ---       #650
+      01001981H   LINE      ---      ---       #651
+      010019A1H   LINE      ---      ---       #652
+      010019A1H   LINE      ---      ---       #653
+      010019A8H   LINE      ---      ---       #654
+      010019AAH   LINE      ---      ---       #655
+      010019AEH   LINE      ---      ---       #656
+      010019AEH   LINE      ---      ---       #657
+      010019B5H   LINE      ---      ---       #658
+      010019B7H   LINE      ---      ---       #659
+      010019D7H   LINE      ---      ---       #660
+      010019D7H   LINE      ---      ---       #661
+      010019DEH   LINE      ---      ---       #662
+      010019E0H   LINE      ---      ---       #663
+      010019E4H   LINE      ---      ---       #664
+      010019E4H   LINE      ---      ---       #665
+      010019EBH   LINE      ---      ---       #666
+      010019EDH   LINE      ---      ---       #667
+      01001A0DH   LINE      ---      ---       #668
+      01001A0DH   LINE      ---      ---       #669
+      01001A14H   LINE      ---      ---       #670
+      01001A16H   LINE      ---      ---       #671
+      01001A1AH   LINE      ---      ---       #672
+      01001A1AH   LINE      ---      ---       #673
+      01001A21H   LINE      ---      ---       #674
+      01001A23H   LINE      ---      ---       #675
+      01001A43H   LINE      ---      ---       #676
+      01001A43H   LINE      ---      ---       #677
+      01001A48H   LINE      ---      ---       #678
+      01001A4AH   LINE      ---      ---       #679
+      01001A4EH   LINE      ---      ---       #680
+      01001A4EH   LINE      ---      ---       #681
+      01001A55H   LINE      ---      ---       #682
+      01001A57H   LINE      ---      ---       #684
+      01001A77H   LINE      ---      ---       #685
+      01001A77H   LINE      ---      ---       #686
+      01001A7BH   LINE      ---      ---       #687
+      01001A7DH   LINE      ---      ---       #688
+      01001A81H   LINE      ---      ---       #689
+      01001A81H   LINE      ---      ---       #690
+      01001A85H   LINE      ---      ---       #691
+      01001A87H   LINE      ---      ---       #692
+      01001A8DH   LINE      ---      ---       #693
+      01001A8DH   LINE      ---      ---       #694
+      01001A91H   LINE      ---      ---       #695
+      01001A91H   LINE      ---      ---       #698
+      01001A98H   LINE      ---      ---       #699
+      01001A98H   LINE      ---      ---       #700
+      01001AB8H   LINE      ---      ---       #701
+      01001ABCH   LINE      ---      ---       #702
+      01001ABCH   LINE      ---      ---       #703
+      01001ABCH   LINE      ---      ---       #704
+      01001AC4H   LINE      ---      ---       #705
+      02004E88H   SYMBOL    XDATA    VOID      i
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      ---         MODULE    ---      ---       KEYSCAN
+      02004E50H   PUBLIC    XDATA    ---       ksEvtPool
+      01001B51H   PUBLIC    CODE     ---       KS_GetCurrentEvt
+      01001DC3H   PUBLIC    CODE     ---       _array_is_empty
+      0100250CH   PUBLIC    CODE     ---       KS_ScanMatrix
+      01002340H   PUBLIC    CODE     ---       KS_Unistall
+      01002265H   PUBLIC    CODE     ---       KS_Initialize
+
+      01001D9DH   BLOCK     CODE     ---       LVL=0
+      01001D9DH   LINE      ---      ---       #24
+      01001D9DH   LINE      ---      ---       #25
+      01001D9DH   BLOCK     CODE     NEAR LAB  LVL=1
+      01001D9DH   LINE      ---      ---       #27
+      01001DA2H   LINE      ---      ---       #28
+      01001DA5H   LINE      ---      ---       #29
+      01001DA8H   LINE      ---      ---       #30
+      01001DAAH   LINE      ---      ---       #31
+      00000006H   SYMBOL    DATA     VOID      c
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01001E3DH   BLOCK     CODE     ---       LVL=0
+      01001E3DH   LINE      ---      ---       #35
+      01001E3DH   LINE      ---      ---       #36
+      01001E3DH   BLOCK     CODE     NEAR LAB  LVL=1
+      01001E3DH   LINE      ---      ---       #37
+      01001E42H   LINE      ---      ---       #39
+      01001E4EH   LINE      ---      ---       #40
+      01001E4EH   LINE      ---      ---       #41
+      01001E68H   LINE      ---      ---       #43
+      01001E68H   LINE      ---      ---       #45
+      01001E6AH   LINE      ---      ---       #46
+      01001E6AH   LINE      ---      ---       #47
+      01001E77H   LINE      ---      ---       #48
+      01001E77H   LINE      ---      ---       #49
+      01001E78H   LINE      ---      ---       #50
+      01001E78H   LINE      ---      ---       #51
+      01001E7DH   LINE      ---      ---       #56
+      01001E7FH   LINE      ---      ---       #57
+      01001E7FH   LINE      ---      ---       #58
+      01001E91H   LINE      ---      ---       #59
+      01001E91H   LINE      ---      ---       #60
+      01001E93H   LINE      ---      ---       #61
+      01001E95H   LINE      ---      ---       #62
+      01001E95H   LINE      ---      ---       #63
+      01001EA2H   LINE      ---      ---       #64
+      01001EA2H   LINE      ---      ---       #65
+      01001EA9H   LINE      ---      ---       #66
+      01001EB5H   LINE      ---      ---       #67
+      01001EB7H   LINE      ---      ---       #68
+      01001EB7H   LINE      ---      ---       #69
+      01001EBCH   LINE      ---      ---       #72
+      01001EC4H   LINE      ---      ---       #73
+      01001EC4H   LINE      ---      ---       #74
+      01001ECAH   LINE      ---      ---       #75
+      01001ECAH   LINE      ---      ---       #76
+      01001ED1H   LINE      ---      ---       #77
+      01001EF5H   LINE      ---      ---       #78
+      01001EF5H   LINE      ---      ---       #79
+      01001EF5H   LINE      ---      ---       #81
+      00000006H   SYMBOL    DATA     VOID      i
+      00000005H   SYMBOL    DATA     VOID      full_flag
+      00000001H   SYMBOL    DATA     VOID      full
+      00000004H   SYMBOL    DATA     VOID      temp_chu
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01001EF6H   BLOCK     CODE     ---       LVL=0
+      01001EF6H   LINE      ---      ---       #83
+      01001EF6H   LINE      ---      ---       #84
+      01001EF6H   BLOCK     CODE     NEAR LAB  LVL=1
+      01001EF6H   LINE      ---      ---       #85
+      01001EFDH   LINE      ---      ---       #86
+      01001EFEH   LINE      ---      ---       #88
+      01001F0CH   LINE      ---      ---       #89
+      01001F0CH   LINE      ---      ---       #90
+      01001F13H   LINE      ---      ---       #91
+      01001F13H   LINE      ---      ---       #92
+      01001F16H   LINE      ---      ---       #93
+      01001F16H   LINE      ---      ---       #94
+      01001F18H   LINE      ---      ---       #96
+      01001F1EH   LINE      ---      ---       #98
+      01001F2AH   LINE      ---      ---       #99
+      01001F2AH   LINE      ---      ---       #100
+      01001F45H   LINE      ---      ---       #102
+      01001F45H   LINE      ---      ---       #105
+      01001F47H   LINE      ---      ---       #106
+      01001F47H   LINE      ---      ---       #107
+      01001F4AH   LINE      ---      ---       #108
+      01001F4AH   LINE      ---      ---       #109
+      01001F58H   LINE      ---      ---       #110
+      01001F5CH   LINE      ---      ---       #111
+      01001F67H   LINE      ---      ---       #112
+      01001F67H   LINE      ---      ---       #113
+      01001F69H   LINE      ---      ---       #114
+      01001F69H   LINE      ---      ---       #115
+      01001F6BH   LINE      ---      ---       #117
+      01001F6BH   LINE      ---      ---       #118
+      01001F83H   LINE      ---      ---       #119
+      01001F90H   LINE      ---      ---       #120
+      01001F90H   LINE      ---      ---       #121
+      01001F94H   LINE      ---      ---       #122
+      01001F9FH   LINE      ---      ---       #123
+      01001F9FH   LINE      ---      ---       #124
+      01001F9FH   LINE      ---      ---       #125
+      01001FA4H   LINE      ---      ---       #128
+      01001FAAH   LINE      ---      ---       #129
+      01001FAAH   LINE      ---      ---       #130
+      01001FB1H   LINE      ---      ---       #131
+      01001FD6H   LINE      ---      ---       #132
+      01001FD6H   LINE      ---      ---       #134
+      00000006H   SYMBOL    DATA     VOID      i
+      02004EB1H   SYMBOL    XDATA    VOID      full_flag
+      00000005H   SYMBOL    DATA     VOID      temp_chu
+      00000004H   SYMBOL    DATA     VOID      found
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01002248H   BLOCK     CODE     ---       LVL=0
+      01002248H   LINE      ---      ---       #136
+      01002248H   LINE      ---      ---       #137
+      01002248H   BLOCK     CODE     NEAR LAB  LVL=1
+      01002248H   LINE      ---      ---       #138
+      0100224DH   LINE      ---      ---       #140
+      01002258H   LINE      ---      ---       #141
+      0100225CH   LINE      ---      ---       #142
+      01002264H   LINE      ---      ---       #143
+      02004EB2H   SYMBOL    XDATA    VOID      i
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01002270H   BLOCK     CODE     ---       LVL=0
+      01002270H   LINE      ---      ---       #145
+      01002270H   LINE      ---      ---       #146
+      01002270H   BLOCK     CODE     NEAR LAB  LVL=1
+      01002270H   LINE      ---      ---       #147
+      01002275H   LINE      ---      ---       #148
+      01002281H   LINE      ---      ---       #149
+      01002285H   LINE      ---      ---       #150
+      0100228DH   LINE      ---      ---       #151
+      02004EB3H   SYMBOL    XDATA    VOID      i
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01002265H   BLOCK     CODE     ---       LVL=0
+      01002265H   LINE      ---      ---       #153
+      01002265H   LINE      ---      ---       #154
+      01002265H   LINE      ---      ---       #155
+      0100226AH   LINE      ---      ---       #156
+      0100226CH   LINE      ---      ---       #157
+      0100226EH   LINE      ---      ---       #158
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01002340H   BLOCK     CODE     ---       LVL=0
+      01002340H   LINE      ---      ---       #162
+      01002340H   LINE      ---      ---       #163
+      01002340H   BLOCK     CODE     NEAR LAB  LVL=1
+      01002340H   LINE      ---      ---       #164
+      01002342H   LINE      ---      ---       #165
+      01002346H   LINE      ---      ---       #166
+      01002347H   LINE      ---      ---       #167
+      01002348H   LINE      ---      ---       #168
+      0100234FH   LINE      ---      ---       #169
+      01002358H   LINE      ---      ---       #170
+      01002368H   LINE      ---      ---       #171
+      0100237BH   LINE      ---      ---       #172
+      01002388H   LINE      ---      ---       #173
+      01002395H   LINE      ---      ---       #174
+      01002398H   LINE      ---      ---       #176
+      0100239AH   LINE      ---      ---       #178
+      010023A2H   LINE      ---      ---       #180
+      010023A8H   LINE      ---      ---       #181
+      010023A8H   LINE      ---      ---       #182
+      010023ACH   LINE      ---      ---       #183
+      010023B0H   LINE      ---      ---       #184
+      010023B4H   LINE      ---      ---       #185
+      010023B8H   LINE      ---      ---       #186
+      010023BCH   LINE      ---      ---       #187
+      010023C0H   LINE      ---      ---       #188
+      010023C4H   LINE      ---      ---       #189
+      010023C8H   LINE      ---      ---       #190
+      010023C8H   LINE      ---      ---       #192
+      010023C8H   LINE      ---      ---       #193
+      010023D1H   LINE      ---      ---       #194
+      010023D7H   LINE      ---      ---       #195
+      010023D7H   LINE      ---      ---       #197
+      00000007H   SYMBOL    DATA     VOID      i
+      02004EB4H   SYMBOL    XDATA    VOID      temp
+      00000006H   SYMBOL    DATA     VOID      tgroup
+      00000005H   SYMBOL    DATA     VOID      tgpionum
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      0100250CH   BLOCK     CODE     ---       LVL=0
+      0100250CH   LINE      ---      ---       #200
+      0100250CH   LINE      ---      ---       #201
+      0100250CH   BLOCK     CODE     NEAR LAB  LVL=1
+      0100250CH   LINE      ---      ---       #202
+      0100250EH   LINE      ---      ---       #203
+      01002512H   LINE      ---      ---       #204
+      01002513H   LINE      ---      ---       #205
+      01002514H   LINE      ---      ---       #206
+      01002516H   LINE      ---      ---       #207
+      01002518H   LINE      ---      ---       #208
+      0100251FH   LINE      ---      ---       #209
+      01002528H   LINE      ---      ---       #210
+      01002538H   LINE      ---      ---       #211
+      01002598H   LINE      ---      ---       #212
+      0100259BH   LINE      ---      ---       #214
+      010025A4H   LINE      ---      ---       #215
+      010025ADH   LINE      ---      ---       #216
+      010025BDH   LINE      ---      ---       #217
+      0100261DH   LINE      ---      ---       #218
+      01002620H   LINE      ---      ---       #220
+      01002629H   LINE      ---      ---       #221
+      01002643H   LINE      ---      ---       #222
+      01002666H   LINE      ---      ---       #223
+      01002666H   LINE      ---      ---       #224
+      01002669H   LINE      ---      ---       #225
+      00000007H   SYMBOL    DATA     VOID      i
+      02004E94H   SYMBOL    XDATA    VOID      j
+      00000006H   SYMBOL    DATA     VOID      tgroup
+      00000005H   SYMBOL    DATA     VOID      tgpionum
+      02004E95H   SYMBOL    XDATA    VOID      temp
+      02004E96H   SYMBOL    XDATA    VOID      check
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01001DC3H   BLOCK     CODE     ---       LVL=0
+      01001DC3H   LINE      ---      ---       #227
+      01001DCEH   LINE      ---      ---       #228
+      01001DCEH   BLOCK     CODE     NEAR LAB  LVL=1
+      01001DCEH   LINE      ---      ---       #230
+      01001DD5H   LINE      ---      ---       #231
+      01001DD5H   LINE      ---      ---       #232
+      01001DEAH   LINE      ---      ---       #233
+      01001DEDH   LINE      ---      ---       #234
+      01001DF0H   LINE      ---      ---       #235
+      01001DF2H   LINE      ---      ---       #236
+      00000007H   SYMBOL    DATA     VOID      i
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01001B51H   BLOCK     CODE     ---       LVL=0
+      01001B51H   LINE      ---      ---       #239
+      01001B51H   LINE      ---      ---       #240
+      01001B51H   BLOCK     CODE     NEAR LAB  LVL=1
+      01001B51H   LINE      ---      ---       #242
+      01001B56H   LINE      ---      ---       #243
+      01001B58H   LINE      ---      ---       #244
+      01001B5AH   LINE      ---      ---       #245
+      01001B5CH   LINE      ---      ---       #246
+      01001B5EH   LINE      ---      ---       #247
+      01001B60H   LINE      ---      ---       #248
+      01001B62H   LINE      ---      ---       #249
+      01001B64H   LINE      ---      ---       #250
+      01001B66H   LINE      ---      ---       #251
+      01001B68H   LINE      ---      ---       #252
+      01001B6AH   LINE      ---      ---       #254
+      01001B6DH   LINE      ---      ---       #256
+      01001B9BH   LINE      ---      ---       #258
+      01001B9BH   LINE      ---      ---       #259
+      01001BA2H   LINE      ---      ---       #260
+      01001BA4H   LINE      ---      ---       #262
+      01001BA4H   LINE      ---      ---       #263
+      01001BABH   LINE      ---      ---       #264
+      01001BB0H   LINE      ---      ---       #265
+      01001BB0H   LINE      ---      ---       #267
+      01001BC2H   LINE      ---      ---       #268
+      01001BC2H   LINE      ---      ---       #269
+      01001BD1H   LINE      ---      ---       #270
+      01001BDAH   LINE      ---      ---       #271
+      01001BE1H   LINE      ---      ---       #272
+      01001BE1H   LINE      ---      ---       #273
+      01001BF0H   LINE      ---      ---       #274
+      01001BF0H   LINE      ---      ---       #275
+      01001C0BH   LINE      ---      ---       #276
+      01001C0BH   LINE      ---      ---       #277
+      01001C1BH   LINE      ---      ---       #278
+      01001C1BH   LINE      ---      ---       #279
+      01001C24H   LINE      ---      ---       #280
+      01001C24H   LINE      ---      ---       #281
+      01001C53H   LINE      ---      ---       #282
+      01001C53H   LINE      ---      ---       #283
+      01001C59H   LINE      ---      ---       #284
+      01001C5BH   LINE      ---      ---       #285
+      01001C5BH   LINE      ---      ---       #286
+      01001C5BH   LINE      ---      ---       #287
+      01001C63H   LINE      ---      ---       #288
+      01001C63H   LINE      ---      ---       #289
+      01001C6BH   LINE      ---      ---       #290
+      01001C6BH   LINE      ---      ---       #292
+      01001C72H   LINE      ---      ---       #293
+      01001C72H   LINE      ---      ---       #294
+      01001C7AH   LINE      ---      ---       #295
+      01001C7AH   LINE      ---      ---       #296
+      01001C82H   LINE      ---      ---       #297
+      01001C8AH   LINE      ---      ---       #299
+      01001C9CH   LINE      ---      ---       #300
+      01001C9CH   LINE      ---      ---       #301
+      01001CB8H   LINE      ---      ---       #302
+      01001CCBH   LINE      ---      ---       #303
+      01001CD1H   LINE      ---      ---       #304
+      01001CD1H   LINE      ---      ---       #305
+      01001CD3H   LINE      ---      ---       #306
+      01001CD5H   LINE      ---      ---       #308
+      01001CD5H   LINE      ---      ---       #310
+      01001CDBH   LINE      ---      ---       #311
+      01001CE2H   LINE      ---      ---       #312
+      01001CFAH   LINE      ---      ---       #313
+      01001D09H   LINE      ---      ---       #314
+      01001D09H   LINE      ---      ---       #315
+      01001D10H   LINE      ---      ---       #316
+      01001D10H   LINE      ---      ---       #317
+      01001D21H   LINE      ---      ---       #318
+      01001D34H   LINE      ---      ---       #319
+      01001D3BH   LINE      ---      ---       #320
+      01001D3BH   LINE      ---      ---       #321
+      01001D42H   LINE      ---      ---       #322
+      01001D44H   LINE      ---      ---       #324
+      01001D44H   LINE      ---      ---       #325
+      01001D4BH   LINE      ---      ---       #326
+      01001D4BH   LINE      ---      ---       #327
+      01001D4BH   LINE      ---      ---       #328
+      01001D53H   LINE      ---      ---       #329
+      01001D5BH   LINE      ---      ---       #330
+      01001D63H   LINE      ---      ---       #331
+      01001D69H   LINE      ---      ---       #332
+      01001D69H   LINE      ---      ---       #333
+      01001D71H   LINE      ---      ---       #335
+      01001D7FH   LINE      ---      ---       #336
+      01001D7FH   LINE      ---      ---       #337
+      01001D82H   LINE      ---      ---       #338
+      01001D82H   LINE      ---      ---       #341
+      01001D8FH   LINE      ---      ---       #342
+      01001D8FH   LINE      ---      ---       #343
+      01001D96H   LINE      ---      ---       #344
+      01001D96H   LINE      ---      ---       #346
+      01001D96H   LINE      ---      ---       #347
+      01001D9CH   LINE      ---      ---       #348
+      01001D9CH   LINE      ---      ---       #351
+      02004E34H   SYMBOL    XDATA    VOID      i
+      02004E35H   SYMBOL    XDATA    VOID      j
+      02004E36H   SYMBOL    XDATA    VOID      k
+      02004E37H   SYMBOL    XDATA    VOID      temp
+      02004E38H   SYMBOL    XDATA    VOID      flag
+      02004E39H   SYMBOL    XDATA    VOID      offset
+      02004E3AH   SYMBOL    XDATA    VOID      state
+      02004E3BH   SYMBOL    XDATA    VOID      keyCounttemp
+      02004E3CH   SYMBOL    XDATA    VOID      key_value_temp
+      02004E3DH   SYMBOL    XDATA    VOID      ghost
+      02004E3EH   SYMBOL    XDATA    VOID      rawCount
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      ---         MODULE    ---      ---       LED
+      01000B7EH   PUBLIC    CODE     ---       backlight_led_process
+      0100266AH   PUBLIC    CODE     ---       LED_backlight_breath
+      0100074AH   PUBLIC    CODE     ---       LED_handle
+      02004E76H   PUBLIC    XDATA    BYTE      ?_LED_device_line_control?BYTE
+      01000B21H   PUBLIC    CODE     ---       _LED_device_line_control
+      01000EC9H   PUBLIC    CODE     ---       LED_all_shutdown
+
+      01000EC7H   BLOCK     CODE     ---       LVL=0
+      01000EC9H   LINE      ---      ---       #4
+      01000EC9H   LINE      ---      ---       #5
+      01000EC9H   LINE      ---      ---       #6
+      01000ECFH   LINE      ---      ---       #7
+      01000ED5H   LINE      ---      ---       #8
+      01000EDBH   LINE      ---      ---       #9
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000B21H   BLOCK     CODE     ---       LVL=0
+      01000B21H   LINE      ---      ---       #13
+      01000B29H   LINE      ---      ---       #14
+      01000B29H   LINE      ---      ---       #15
+      01000B32H   LINE      ---      ---       #16
+      01000B3EH   LINE      ---      ---       #17
+      01000B4AH   LINE      ---      ---       #18
+      01000B56H   LINE      ---      ---       #19
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      0100074AH   BLOCK     CODE     ---       LVL=0
+      0100074AH   LINE      ---      ---       #23
+      0100074AH   LINE      ---      ---       #24
+      0100074AH   LINE      ---      ---       #25
+      01000754H   LINE      ---      ---       #28
+      0100075AH   LINE      ---      ---       #29
+      01000763H   LINE      ---      ---       #31
+      0100076AH   LINE      ---      ---       #34
+      01000776H   LINE      ---      ---       #35
+      01000776H   LINE      ---      ---       #36
+      0100077CH   LINE      ---      ---       #37
+      0100077FH   LINE      ---      ---       #40
+      01000786H   LINE      ---      ---       #41
+      01000786H   LINE      ---      ---       #42
+      01000789H   LINE      ---      ---       #43
+      0100078BH   LINE      ---      ---       #44
+      01000792H   LINE      ---      ---       #45
+      01000792H   LINE      ---      ---       #46
+      01000798H   LINE      ---      ---       #47
+      01000798H   LINE      ---      ---       #48
+      0100079EH   LINE      ---      ---       #49
+      010007A4H   LINE      ---      ---       #50
+      010007A4H   LINE      ---      ---       #51
+      010007A6H   LINE      ---      ---       #53
+      010007A6H   LINE      ---      ---       #54
+      010007ADH   LINE      ---      ---       #55
+      010007ADH   LINE      ---      ---       #56
+      010007AFH   LINE      ---      ---       #57
+      010007B3H   LINE      ---      ---       #58
+      010007B9H   LINE      ---      ---       #59
+      010007B9H   LINE      ---      ---       #60
+      010007B9H   LINE      ---      ---       #63
+      010007BEH   LINE      ---      ---       #64
+      010007BEH   LINE      ---      ---       #66
+      010007BEH   LINE      ---      ---       #67
+      010007C5H   LINE      ---      ---       #68
+      010007C5H   LINE      ---      ---       #69
+      010007CBH   LINE      ---      ---       #70
+      010007CBH   LINE      ---      ---       #72
+      010007CBH   LINE      ---      ---       #73
+      010007D1H   LINE      ---      ---       #74
+      010007D1H   LINE      ---      ---       #75
+      010007D1H   LINE      ---      ---       #80
+      010007D1H   LINE      ---      ---       #82
+      010007D1H   LINE      ---      ---       #83
+      010007D7H   LINE      ---      ---       #84
+      010007D7H   LINE      ---      ---       #85
+      010007D7H   LINE      ---      ---       #87
+      010007D7H   LINE      ---      ---       #88
+      010007DDH   LINE      ---      ---       #89
+      010007DDH   LINE      ---      ---       #91
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      0100266AH   BLOCK     CODE     ---       LVL=0
+      0100266AH   LINE      ---      ---       #95
+      0100266AH   LINE      ---      ---       #96
+      0100266AH   LINE      ---      ---       #98
+      01002678H   LINE      ---      ---       #99
+      01002678H   LINE      ---      ---       #100
+      01002680H   LINE      ---      ---       #101
+      01002686H   LINE      ---      ---       #102
+      01002686H   LINE      ---      ---       #103
+      01002689H   LINE      ---      ---       #104
+      01002696H   LINE      ---      ---       #106
+      01002696H   LINE      ---      ---       #109
+      0100269EH   LINE      ---      ---       #110
+      0100269EH   LINE      ---      ---       #111
+      010026A4H   LINE      ---      ---       #112
+      010026A4H   LINE      ---      ---       #113
+      010026ADH   LINE      ---      ---       #114
+      010026B2H   LINE      ---      ---       #116
+      010026B2H   LINE      ---      ---       #117
+      010026B7H   LINE      ---      ---       #118
+      010026B7H   LINE      ---      ---       #119
+      010026B9H   LINE      ---      ---       #121
+      010026B9H   LINE      ---      ---       #122
+      010026C2H   LINE      ---      ---       #123
+      010026C7H   LINE      ---      ---       #125
+      010026C7H   LINE      ---      ---       #126
+      010026CDH   LINE      ---      ---       #127
+      010026CDH   LINE      ---      ---       #129
+      010026CDH   LINE      ---      ---       #130
+      010026D2H   LINE      ---      ---       #131
+      010026D7H   LINE      ---      ---       #133
+      010026D9H   LINE      ---      ---       #134
+      010026E2H   LINE      ---      ---       #135
+      010026EAH   LINE      ---      ---       #137
+      010026F1H   LINE      ---      ---       #138
+      010026F2H   LINE      ---      ---       #140
+      010026F2H   LINE      ---      ---       #141
+      010026F9H   LINE      ---      ---       #142
+      010026F9H   LINE      ---      ---       #143
+      010026F9H   LINE      ---      ---       #147
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000B7EH   BLOCK     CODE     ---       LVL=0
+      01000B7EH   LINE      ---      ---       #150
+      01000B7EH   LINE      ---      ---       #151
+      01000B7EH   LINE      ---      ---       #152
+      01000B8CH   LINE      ---      ---       #153
+      01000BA4H   LINE      ---      ---       #154
+      01000BA4H   LINE      ---      ---       #155
+      01000BCEH   LINE      ---      ---       #156
+      01000BCEH   LINE      ---      ---       #157
+      01000BCEH   LINE      ---      ---       #158
+      01000BDBH   LINE      ---      ---       #159
+      01000BDBH   LINE      ---      ---       #160
+      01000BDBH   LINE      ---      ---       #161
+      01000BDBH   LINE      ---      ---       #162
+      01000BDBH   LINE      ---      ---       #163
+      01000BE1H   LINE      ---      ---       #164
+      01000BE1H   LINE      ---      ---       #165
+      01000BE3H   LINE      ---      ---       #166
+      01000BF0H   LINE      ---      ---       #167
+      01000BF0H   LINE      ---      ---       #168
+      01000BF7H   LINE      ---      ---       #169
+      01000BF7H   LINE      ---      ---       #170
+      01000BFAH   LINE      ---      ---       #171
+      01000C08H   LINE      ---      ---       #172
+      01000C08H   LINE      ---      ---       #173
+      01000C0FH   LINE      ---      ---       #174
+      01000C0FH   LINE      ---      ---       #175
+      01000C12H   LINE      ---      ---       #176
+      01000C21H   LINE      ---      ---       #177
+      01000C21H   LINE      ---      ---       #178
+      01000C28H   LINE      ---      ---       #179
+      01000C28H   LINE      ---      ---       #180
+      01000C2BH   LINE      ---      ---       #181
+      01000C3CH   LINE      ---      ---       #182
+      01000C3CH   LINE      ---      ---       #183
+      01000C43H   LINE      ---      ---       #184
+      01000C43H   LINE      ---      ---       #185
+      01000C46H   LINE      ---      ---       #186
+      01000C53H   LINE      ---      ---       #187
+      01000C53H   LINE      ---      ---       #188
+      01000C5DH   LINE      ---      ---       #189
+      01000C5DH   LINE      ---      ---       #190
+      01000C5EH   LINE      ---      ---       #191
+      01000C69H   LINE      ---      ---       #192
+      01000C69H   LINE      ---      ---       #193
+      01000C69H   LINE      ---      ---       #194
+      01000C69H   LINE      ---      ---       #195
+      01000C6FH   LINE      ---      ---       #196
+      01000C6FH   LINE      ---      ---       #197
+      01000C71H   LINE      ---      ---       #198
+      01000C7FH   LINE      ---      ---       #199
+      01000C7FH   LINE      ---      ---       #200
+      01000C86H   LINE      ---      ---       #201
+      01000C86H   LINE      ---      ---       #202
+      01000C89H   LINE      ---      ---       #203
+      01000C96H   LINE      ---      ---       #204
+      01000C96H   LINE      ---      ---       #205
+      01000C9DH   LINE      ---      ---       #206
+      01000C9DH   LINE      ---      ---       #207
+      01000CA0H   LINE      ---      ---       #208
+      01000CAEH   LINE      ---      ---       #209
+      01000CAEH   LINE      ---      ---       #210
+      01000CB5H   LINE      ---      ---       #211
+      01000CB5H   LINE      ---      ---       #212
+      01000CB8H   LINE      ---      ---       #213
+      01000CC6H   LINE      ---      ---       #214
+      01000CC6H   LINE      ---      ---       #215
+      01000CCDH   LINE      ---      ---       #216
+      01000CCDH   LINE      ---      ---       #217
+      01000CD0H   LINE      ---      ---       #218
+      01000CDDH   LINE      ---      ---       #219
+      01000CDDH   LINE      ---      ---       #220
+      01000CE7H   LINE      ---      ---       #221
+      01000CE7H   LINE      ---      ---       #222
+      01000CE8H   LINE      ---      ---       #223
+      01000CF3H   LINE      ---      ---       #224
+      01000CF3H   LINE      ---      ---       #225
+      01000CF3H   LINE      ---      ---       #226
+      01000CF3H   LINE      ---      ---       #227
+      01000CF9H   LINE      ---      ---       #228
+      01000CF9H   LINE      ---      ---       #229
+      01000CFBH   LINE      ---      ---       #230
+      01000D08H   LINE      ---      ---       #231
+      01000D08H   LINE      ---      ---       #232
+      01000D0FH   LINE      ---      ---       #233
+      01000D0FH   LINE      ---      ---       #234
+      01000D12H   LINE      ---      ---       #235
+      01000D20H   LINE      ---      ---       #236
+      01000D20H   LINE      ---      ---       #237
+      01000D27H   LINE      ---      ---       #238
+      01000D27H   LINE      ---      ---       #239
+      01000D2AH   LINE      ---      ---       #240
+      01000D39H   LINE      ---      ---       #241
+      01000D39H   LINE      ---      ---       #242
+      01000D43H   LINE      ---      ---       #243
+      01000D43H   LINE      ---      ---       #244
+      01000D44H   LINE      ---      ---       #245
+      01000D4FH   LINE      ---      ---       #246
+      01000D4FH   LINE      ---      ---       #247
+      01000D4FH   LINE      ---      ---       #248
+      01000D4FH   LINE      ---      ---       #249
+      01000D55H   LINE      ---      ---       #250
+      01000D55H   LINE      ---      ---       #251
+      01000D57H   LINE      ---      ---       #252
+      01000D66H   LINE      ---      ---       #253
+      01000D66H   LINE      ---      ---       #254
+      01000D6DH   LINE      ---      ---       #255
+      01000D6DH   LINE      ---      ---       #256
+      01000D70H   LINE      ---      ---       #257
+      01000D7EH   LINE      ---      ---       #258
+      01000D7EH   LINE      ---      ---       #259
+      01000D85H   LINE      ---      ---       #260
+      01000D85H   LINE      ---      ---       #261
+      01000D88H   LINE      ---      ---       #262
+      01000D95H   LINE      ---      ---       #263
+      01000D95H   LINE      ---      ---       #264
+      01000D9FH   LINE      ---      ---       #265
+      01000D9FH   LINE      ---      ---       #266
+      01000DA0H   LINE      ---      ---       #267
+      01000DABH   LINE      ---      ---       #268
+      01000DABH   LINE      ---      ---       #269
+      01000DABH   LINE      ---      ---       #270
+      01000DABH   LINE      ---      ---       #271
+      01000DB1H   LINE      ---      ---       #272
+      01000DB1H   LINE      ---      ---       #273
+      01000DB3H   LINE      ---      ---       #274
+      01000DC0H   LINE      ---      ---       #275
+      01000DC0H   LINE      ---      ---       #276
+      01000DC7H   LINE      ---      ---       #277
+      01000DC7H   LINE      ---      ---       #278
+      01000DCAH   LINE      ---      ---       #279
+      01000DD7H   LINE      ---      ---       #280
+      01000DD7H   LINE      ---      ---       #281
+      01000DDEH   LINE      ---      ---       #282
+      01000DDEH   LINE      ---      ---       #283
+      01000DE1H   LINE      ---      ---       #284
+      01000DEEH   LINE      ---      ---       #285
+      01000DEEH   LINE      ---      ---       #286
+      01000DF5H   LINE      ---      ---       #287
+      01000DF5H   LINE      ---      ---       #288
+      01000DF8H   LINE      ---      ---       #289
+      01000E06H   LINE      ---      ---       #290
+      01000E06H   LINE      ---      ---       #291
+      01000E0DH   LINE      ---      ---       #292
+      01000E0DH   LINE      ---      ---       #293
+      01000E10H   LINE      ---      ---       #294
+      01000E1EH   LINE      ---      ---       #295
+      01000E1EH   LINE      ---      ---       #296
+      01000E28H   LINE      ---      ---       #297
+      01000E28H   LINE      ---      ---       #298
+      01000E29H   LINE      ---      ---       #299
+      01000E34H   LINE      ---      ---       #300
+      01000E34H   LINE      ---      ---       #301
+      01000E34H   LINE      ---      ---       #302
+      01000E34H   LINE      ---      ---       #303
+      01000E3AH   LINE      ---      ---       #304
+      01000E3AH   LINE      ---      ---       #305
+      01000E3CH   LINE      ---      ---       #306
+      01000E4AH   LINE      ---      ---       #307
+      01000E4AH   LINE      ---      ---       #308
+      01000E51H   LINE      ---      ---       #309
+      01000E51H   LINE      ---      ---       #310
+      01000E54H   LINE      ---      ---       #311
+      01000E61H   LINE      ---      ---       #312
+      01000E61H   LINE      ---      ---       #313
+      01000E68H   LINE      ---      ---       #314
+      01000E68H   LINE      ---      ---       #315
+      01000E6BH   LINE      ---      ---       #316
+      01000E78H   LINE      ---      ---       #317
+      01000E78H   LINE      ---      ---       #318
+      01000E7FH   LINE      ---      ---       #319
+      01000E7FH   LINE      ---      ---       #320
+      01000E82H   LINE      ---      ---       #321
+      01000E8FH   LINE      ---      ---       #322
+      01000E8FH   LINE      ---      ---       #323
+      01000E96H   LINE      ---      ---       #324
+      01000E96H   LINE      ---      ---       #325
+      01000E99H   LINE      ---      ---       #326
+      01000EA6H   LINE      ---      ---       #327
+      01000EA6H   LINE      ---      ---       #328
+      01000EAEH   LINE      ---      ---       #329
+      01000EAEH   LINE      ---      ---       #330
+      01000EAFH   LINE      ---      ---       #331
+      01000EBAH   LINE      ---      ---       #332
+      01000EBAH   LINE      ---      ---       #333
+      01000EBAH   LINE      ---      ---       #334
+      01000EBAH   LINE      ---      ---       #335
+      01000EBAH   LINE      ---      ---       #336
+      01000EC6H   LINE      ---      ---       #337
+      01000EC6H   LINE      ---      ---       #340
+      01000EC6H   LINE      ---      ---       #341
+      01000EC6H   LINE      ---      ---       #342
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       SYS
+      01000F80H   PUBLIC    CODE     ---       YC_System_Main
+      010009A2H   PUBLIC    CODE     ---       kb_button_press_timer500ms
+      01002846H   PUBLIC    CODE     ---       YC_pairing_timerout_500ms
+      010027C4H   PUBLIC    CODE     ---       YC_connect_timeout_500ms
+      01000F1FH   PUBLIC    CODE     ---       LED_timer500ms
+      010027B2H   PUBLIC    CODE     ---       System_Reset_Connect
+      01000EE7H   PUBLIC    CODE     ---       System_long_sleep
+      01002786H   PUBLIC    CODE     ---       System_Software_init
+
+      01001682H   BLOCK     CODE     ---       LVL=0
+      01001682H   LINE      ---      ---       #11
+      01001682H   LINE      ---      ---       #12
+      01001682H   LINE      ---      ---       #13
+      0100168EH   LINE      ---      ---       #14
+      0100169AH   LINE      ---      ---       #15
+      010016A6H   LINE      ---      ---       #16
+      010016B2H   LINE      ---      ---       #17
+      010016BEH   LINE      ---      ---       #18
+      010016CAH   LINE      ---      ---       #20
+      010016CFH   LINE      ---      ---       #21
+      010016D3H   LINE      ---      ---       #24
+      010016D7H   LINE      ---      ---       #25
+      010016DBH   LINE      ---      ---       #26
+      010016DFH   LINE      ---      ---       #27
+      010016E3H   LINE      ---      ---       #28
+      010016E7H   LINE      ---      ---       #29
+      010016EBH   LINE      ---      ---       #30
+      010016EFH   LINE      ---      ---       #31
+      010016F3H   LINE      ---      ---       #32
+      010016F7H   LINE      ---      ---       #33
+      010016FBH   LINE      ---      ---       #34
+      010016FFH   LINE      ---      ---       #36
+      01001703H   LINE      ---      ---       #37
+      01001709H   LINE      ---      ---       #38
+      0100170DH   LINE      ---      ---       #39
+      01001712H   LINE      ---      ---       #40
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000FF2H   BLOCK     CODE     ---       LVL=0
+      01000FF2H   LINE      ---      ---       #42
+      01000FF2H   LINE      ---      ---       #43
+      01000FF2H   LINE      ---      ---       #44
+      01000FF8H   LINE      ---      ---       #45
+      01000FFBH   LINE      ---      ---       #46
+      01000FFDH   LINE      ---      ---       #47
+      01000FFFH   LINE      ---      ---       #48
+      01001001H   LINE      ---      ---       #49
+      01001004H   LINE      ---      ---       #50
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000FE9H   BLOCK     CODE     ---       LVL=0
+      01000FE9H   LINE      ---      ---       #52
+      01000FE9H   LINE      ---      ---       #53
+      01000FE9H   LINE      ---      ---       #54
+      01000FEBH   LINE      ---      ---       #55
+      01000FEEH   LINE      ---      ---       #56
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01002786H   BLOCK     CODE     ---       LVL=0
+      01002786H   LINE      ---      ---       #60
+      01002786H   LINE      ---      ---       #61
+      01002786H   LINE      ---      ---       #62
+      01002789H   LINE      ---      ---       #63
+      0100278CH   LINE      ---      ---       #64
+      01002792H   LINE      ---      ---       #65
+      01002797H   LINE      ---      ---       #66
+      0100279DH   LINE      ---      ---       #67
+      010027A3H   LINE      ---      ---       #68
+      010027A8H   LINE      ---      ---       #69
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010027A9H   BLOCK     CODE     ---       LVL=0
+      010027A9H   LINE      ---      ---       #71
+      010027A9H   LINE      ---      ---       #72
+      010027A9H   LINE      ---      ---       #73
+      010027AFH   LINE      ---      ---       #74
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000EE7H   BLOCK     CODE     ---       LVL=0
+      01000EE7H   LINE      ---      ---       #77
+      01000EE7H   LINE      ---      ---       #78
+      01000EE7H   LINE      ---      ---       #79
+      01000EEDH   LINE      ---      ---       #81
+      01000EF2H   LINE      ---      ---       #82
+      01000EF4H   LINE      ---      ---       #83
+      01000EF6H   LINE      ---      ---       #84
+      01000EFCH   LINE      ---      ---       #85
+      01000F00H   LINE      ---      ---       #87
+      01000F05H   LINE      ---      ---       #88
+      01000F09H   LINE      ---      ---       #89
+      01000F0DH   LINE      ---      ---       #90
+      01000F13H   LINE      ---      ---       #91
+      01000F17H   LINE      ---      ---       #92
+      01000F19H   LINE      ---      ---       #93
+      01000F1BH   LINE      ---      ---       #94
+      01000F1DH   LINE      ---      ---       #95
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010027B2H   BLOCK     CODE     ---       LVL=0
+      010027B2H   LINE      ---      ---       #99
+      010027B2H   LINE      ---      ---       #100
+      010027B2H   LINE      ---      ---       #101
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010027B4H   BLOCK     CODE     ---       LVL=0
+      010027B4H   LINE      ---      ---       #109
+      010027B9H   BLOCK     CODE     NEAR LAB  LVL=1
+      010027B9H   LINE      ---      ---       #111
+      010027C3H   LINE      ---      ---       #113
+      010027C3H   LINE      ---      ---       #115
+      010027C3H   LINE      ---      ---       #116
+      02004EACH   SYMBOL    XDATA    VOID      temp
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01000A45H   BLOCK     CODE     ---       LVL=0
+      01000A45H   LINE      ---      ---       #118
+      01000A4AH   LINE      ---      ---       #119
+      01000A4AH   LINE      ---      ---       #120
+      01000A63H   LINE      ---      ---       #121
+      01000A63H   LINE      ---      ---       #122
+      01000A63H   LINE      ---      ---       #126
+      01000A63H   LINE      ---      ---       #127
+      01000A65H   LINE      ---      ---       #128
+      01000A68H   LINE      ---      ---       #130
+      01000A79H   LINE      ---      ---       #131
+      01000A7DH   LINE      ---      ---       #132
+      01000A91H   LINE      ---      ---       #133
+      01000A95H   LINE      ---      ---       #135
+      01000A9BH   LINE      ---      ---       #136
+      01000AA8H   LINE      ---      ---       #137
+      01000AABH   LINE      ---      ---       #138
+      01000AABH   LINE      ---      ---       #139
+      01000AABH   LINE      ---      ---       #140
+      01000AADH   LINE      ---      ---       #141
+      01000AB0H   LINE      ---      ---       #142
+      01000AB5H   LINE      ---      ---       #143
+      01000AB6H   LINE      ---      ---       #147
+      01000AB6H   LINE      ---      ---       #148
+      01000AB6H   LINE      ---      ---       #149
+      01000ABCH   LINE      ---      ---       #150
+      01000ABFH   LINE      ---      ---       #151
+      01000AC1H   LINE      ---      ---       #152
+      01000AC6H   LINE      ---      ---       #153
+      01000ACAH   LINE      ---      ---       #154
+      01000AD0H   LINE      ---      ---       #155
+      01000AD4H   LINE      ---      ---       #156
+      01000ADAH   LINE      ---      ---       #157
+      01000AE0H   LINE      ---      ---       #159
+      01000AE8H   LINE      ---      ---       #160
+      01000AE8H   LINE      ---      ---       #161
+      01000AECH   LINE      ---      ---       #162
+      01000AF1H   LINE      ---      ---       #163
+      01000AF4H   LINE      ---      ---       #164
+      01000AF4H   LINE      ---      ---       #166
+      01000AF4H   LINE      ---      ---       #168
+      01000AF4H   LINE      ---      ---       #169
+      01000AF9H   LINE      ---      ---       #170
+      01000AFBH   LINE      ---      ---       #171
+      01000B01H   LINE      ---      ---       #172
+      01000B06H   LINE      ---      ---       #174
+      01000B0CH   LINE      ---      ---       #175
+      01000B0CH   LINE      ---      ---       #176
+      01000B0EH   LINE      ---      ---       #177
+      01000B15H   LINE      ---      ---       #178
+      01000B15H   LINE      ---      ---       #179
+      01000B15H   LINE      ---      ---       #181
+      01000B1CH   LINE      ---      ---       #182
+      01000B1CH   LINE      ---      ---       #183
+      01000B1EH   LINE      ---      ---       #184
+      01000B20H   LINE      ---      ---       #185
+      01000B20H   LINE      ---      ---       #186
+      01000B20H   LINE      ---      ---       #187
+      01000B20H   LINE      ---      ---       #188
+      01000B20H   LINE      ---      ---       #189
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000F1FH   BLOCK     CODE     ---       LVL=0
+      01000F1FH   LINE      ---      ---       #192
+      01000F1FH   LINE      ---      ---       #193
+      01000F1FH   LINE      ---      ---       #194
+      01000F27H   LINE      ---      ---       #196
+      01000F2DH   LINE      ---      ---       #197
+      01000F2DH   LINE      ---      ---       #198
+      01000F2FH   LINE      ---      ---       #199
+      01000F35H   LINE      ---      ---       #200
+      01000F3CH   LINE      ---      ---       #201
+      01000F49H   LINE      ---      ---       #203
+      01000F55H   LINE      ---      ---       #204
+      01000F55H   LINE      ---      ---       #205
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010027C4H   BLOCK     CODE     ---       LVL=0
+      010027C4H   LINE      ---      ---       #207
+      010027C4H   LINE      ---      ---       #208
+      010027C4H   LINE      ---      ---       #211
+      010027CCH   LINE      ---      ---       #212
+      010027CCH   LINE      ---      ---       #213
+      010027DFH   LINE      ---      ---       #214
+      010027DFH   LINE      ---      ---       #215
+      010027E1H   LINE      ---      ---       #216
+      010027E1H   LINE      ---      ---       #219
+      010027E8H   LINE      ---      ---       #220
+      010027E8H   LINE      ---      ---       #221
+      010027F4H   LINE      ---      ---       #223
+      010027F9H   LINE      ---      ---       #224
+      010027FEH   LINE      ---      ---       #225
+      01002808H   LINE      ---      ---       #226
+      01002808H   LINE      ---      ---       #229
+      01002817H   LINE      ---      ---       #230
+      0100281AH   LINE      ---      ---       #231
+      0100281AH   LINE      ---      ---       #232
+      01002821H   LINE      ---      ---       #233
+      01002821H   LINE      ---      ---       #234
+      01002830H   LINE      ---      ---       #235
+      01002830H   LINE      ---      ---       #236
+      01002833H   LINE      ---      ---       #237
+      01002833H   LINE      ---      ---       #238
+      01002833H   LINE      ---      ---       #240
+      01002833H   LINE      ---      ---       #241
+      01002842H   LINE      ---      ---       #242
+      01002842H   LINE      ---      ---       #243
+      01002845H   LINE      ---      ---       #244
+      01002845H   LINE      ---      ---       #245
+      01002845H   LINE      ---      ---       #246
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01002846H   BLOCK     CODE     ---       LVL=0
+      01002846H   LINE      ---      ---       #250
+      01002846H   LINE      ---      ---       #251
+      01002846H   LINE      ---      ---       #253
+      0100284CH   LINE      ---      ---       #254
+      0100284CH   LINE      ---      ---       #255
+      01002853H   LINE      ---      ---       #256
+      01002859H   LINE      ---      ---       #257
+      0100285CH   LINE      ---      ---       #258
+      0100285CH   LINE      ---      ---       #260
+      01002861H   LINE      ---      ---       #261
+      01002864H   LINE      ---      ---       #262
+      01002864H   LINE      ---      ---       #263
+      01002864H   LINE      ---      ---       #264
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010009A2H   BLOCK     CODE     ---       LVL=0
+      010009A2H   LINE      ---      ---       #266
+      010009A2H   LINE      ---      ---       #267
+      010009A2H   LINE      ---      ---       #270
+      010009A9H   LINE      ---      ---       #271
+      010009A9H   LINE      ---      ---       #272
+      010009B2H   LINE      ---      ---       #273
+      010009B5H   LINE      ---      ---       #274
+      010009BDH   LINE      ---      ---       #275
+      010009BDH   LINE      ---      ---       #276
+      010009C3H   LINE      ---      ---       #277
+      010009C9H   LINE      ---      ---       #278
+      010009C9H   LINE      ---      ---       #279
+      010009CEH   LINE      ---      ---       #280
+      010009D0H   LINE      ---      ---       #281
+      010009D7H   LINE      ---      ---       #282
+      010009D7H   LINE      ---      ---       #283
+      010009DDH   LINE      ---      ---       #284
+      010009E2H   LINE      ---      ---       #285
+      010009E4H   LINE      ---      ---       #286
+      010009E4H   LINE      ---      ---       #287
+      010009E4H   LINE      ---      ---       #288
+      010009E6H   LINE      ---      ---       #290
+      010009E6H   LINE      ---      ---       #291
+      010009EBH   LINE      ---      ---       #292
+      010009EFH   LINE      ---      ---       #293
+      010009F3H   LINE      ---      ---       #294
+      010009F3H   LINE      ---      ---       #296
+      010009FAH   LINE      ---      ---       #297
+      010009FAH   LINE      ---      ---       #298
+      01000A00H   LINE      ---      ---       #299
+      01000A09H   LINE      ---      ---       #300
+      01000A0CH   LINE      ---      ---       #301
+      01000A13H   LINE      ---      ---       #302
+      01000A13H   LINE      ---      ---       #303
+      01000A1DH   LINE      ---      ---       #304
+      01000A1DH   LINE      ---      ---       #305
+      01000A1FH   LINE      ---      ---       #306
+      01000A23H   LINE      ---      ---       #307
+      01000A27H   LINE      ---      ---       #308
+      01000A27H   LINE      ---      ---       #309
+      01000A27H   LINE      ---      ---       #310
+      01000A27H   LINE      ---      ---       #312
+      01000A2CH   LINE      ---      ---       #314
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01002865H   BLOCK     CODE     ---       LVL=0
+      01002865H   LINE      ---      ---       #318
+      01002865H   LINE      ---      ---       #319
+      01002865H   LINE      ---      ---       #320
+      01002868H   LINE      ---      ---       #322
+      01002876H   LINE      ---      ---       #324
+      01002878H   LINE      ---      ---       #325
+      0100287BH   LINE      ---      ---       #326
+      0100287EH   LINE      ---      ---       #327
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01002A2DH   BLOCK     CODE     ---       LVL=0
+      01002A2DH   LINE      ---      ---       #333
+      01002A2DH   LINE      ---      ---       #334
+      01002A2DH   LINE      ---      ---       #335
+      01002A41H   LINE      ---      ---       #336
+      01002A44H   LINE      ---      ---       #339
+      01002A4AH   LINE      ---      ---       #340
+      01002A4AH   LINE      ---      ---       #341
+      01002A4CH   LINE      ---      ---       #342
+      01002A4CH   LINE      ---      ---       #344
+      01002A52H   LINE      ---      ---       #345
+      01002A54H   LINE      ---      ---       #348
+      01002A5AH   LINE      ---      ---       #349
+      01002A5AH   LINE      ---      ---       #350
+      01002A5CH   LINE      ---      ---       #351
+      01002A5FH   LINE      ---      ---       #352
+      01002A65H   LINE      ---      ---       #353
+      01002A65H   LINE      ---      ---       #356
+      01002A6BH   LINE      ---      ---       #357
+      01002A6BH   LINE      ---      ---       #358
+      01002A71H   LINE      ---      ---       #359
+      01002A71H   LINE      ---      ---       #360
+      01002A73H   LINE      ---      ---       #361
+      01002A7AH   LINE      ---      ---       #362
+      01002A7AH   LINE      ---      ---       #363
+      01002A7EH   LINE      ---      ---       #364
+      01002A7EH   LINE      ---      ---       #365
+      01002A85H   LINE      ---      ---       #366
+      01002A87H   LINE      ---      ---       #368
+      01002A87H   LINE      ---      ---       #369
+      01002A8EH   LINE      ---      ---       #370
+      01002A8EH   LINE      ---      ---       #371
+      01002A90H   LINE      ---      ---       #373
+      01002A97H   LINE      ---      ---       #374
+      01002A9DH   LINE      ---      ---       #375
+      01002AA0H   LINE      ---      ---       #376
+      01002AA0H   LINE      ---      ---       #377
+      01002AA0H   LINE      ---      ---       #380
+      01002AA6H   LINE      ---      ---       #381
+      01002AA6H   LINE      ---      ---       #382
+      01002AAEH   LINE      ---      ---       #383
+      01002AAEH   LINE      ---      ---       #384
+      01002AB4H   LINE      ---      ---       #385
+      01002AB8H   LINE      ---      ---       #387
+      01002ABEH   LINE      ---      ---       #388
+      01002ABEH   LINE      ---      ---       #389
+      01002AC9H   LINE      ---      ---       #390
+      01002ACBH   LINE      ---      ---       #391
+      01002AD1H   LINE      ---      ---       #392
+      01002AD1H   LINE      ---      ---       #394
+      01002ADCH   LINE      ---      ---       #395
+      01002ADCH   LINE      ---      ---       #396
+      01002ADCH   LINE      ---      ---       #397
+      01002ADCH   LINE      ---      ---       #399
+      01002AE2H   LINE      ---      ---       #400
+      01002AE2H   LINE      ---      ---       #401
+      01002AE5H   LINE      ---      ---       #402
+      01002AE5H   LINE      ---      ---       #403
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01002AE6H   BLOCK     CODE     ---       LVL=0
+      01002AE6H   LINE      ---      ---       #417
+      01002AE6H   LINE      ---      ---       #418
+      01002AE6H   LINE      ---      ---       #419
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000F80H   BLOCK     CODE     ---       LVL=0
+      01000F80H   LINE      ---      ---       #424
+      01000F80H   LINE      ---      ---       #425
+      01000F80H   LINE      ---      ---       #426
+      01000F83H   LINE      ---      ---       #427
+      01000F83H   LINE      ---      ---       #428
+      01000F86H   LINE      ---      ---       #429
+      01000F89H   LINE      ---      ---       #430
+      01000F8CH   LINE      ---      ---       #431
+      01000F8FH   LINE      ---      ---       #434
+      01000F95H   LINE      ---      ---       #435
+      01000F95H   LINE      ---      ---       #436
+      01000F97H   LINE      ---      ---       #437
+      01000F97H   LINE      ---      ---       #441
+      01000FA2H   LINE      ---      ---       #442
+      01000FA2H   LINE      ---      ---       #443
+      01000FA5H   LINE      ---      ---       #445
+      01000FA7H   LINE      ---      ---       #446
+      01000FA9H   LINE      ---      ---       #447
+      01000FABH   LINE      ---      ---       #448
+      01000FADH   LINE      ---      ---       #449
+      01000FADH   LINE      ---      ---       #451
+      01000FADH   LINE      ---      ---       #452
+      01000FBFH   LINE      ---      ---       #454
+      01000FBFH   LINE      ---      ---       #455
+      01000FC2H   LINE      ---      ---       #456
+      01000FC4H   LINE      ---      ---       #457
+      01000FC4H   LINE      ---      ---       #459
+      01000FC4H   LINE      ---      ---       #460
+      01000FC7H   LINE      ---      ---       #461
+      01000FCDH   LINE      ---      ---       #462
+      01000FCDH   LINE      ---      ---       #463
+      01000FCFH   LINE      ---      ---       #465
+      01000FCFH   LINE      ---      ---       #466
+      01000FD1H   LINE      ---      ---       #467
+      01000FD3H   LINE      ---      ---       #468
+      01000FD3H   LINE      ---      ---       #469
+      01000FD3H   LINE      ---      ---       #470
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       ADC
+      01002880H   PUBLIC    CODE     ---       YC_adc_check_timer500ms
+      01002891H   PUBLIC    CODE     ---       YC_adc_check
+      01002AF9H   PUBLIC    CODE     ---       YC_adc_init
+
+      01002AF9H   BLOCK     CODE     ---       LVL=0
+      01002AF9H   LINE      ---      ---       #3
+      01002AF9H   LINE      ---      ---       #4
+      01002AF9H   BLOCK     CODE     NEAR LAB  LVL=1
+      01002AF9H   LINE      ---      ---       #8
+      01002AFFH   LINE      ---      ---       #9
+      01002B02H   LINE      ---      ---       #12
+      01002B03H   LINE      ---      ---       #13
+      01002B03H   LINE      ---      ---       #14
+      01002B14H   LINE      ---      ---       #15
+      01002B19H   LINE      ---      ---       #17
+      01002B67H   LINE      ---      ---       #18
+      01002BB5H   LINE      ---      ---       #39
+      00000007H   SYMBOL    DATA     VOID      i
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01002891H   BLOCK     CODE     ---       LVL=0
+      01002891H   LINE      ---      ---       #41
+      01002891H   LINE      ---      ---       #42
+      01002891H   BLOCK     CODE     NEAR LAB  LVL=1
+      01002891H   LINE      ---      ---       #45
+      0100289BH   LINE      ---      ---       #47
+      010028A7H   LINE      ---      ---       #50
+      010028C7H   LINE      ---      ---       #51
+      010028D0H   LINE      ---      ---       #52
+      010028D2H   LINE      ---      ---       #53
+      010028D7H   LINE      ---      ---       #54
+      010028D7H   LINE      ---      ---       #55
+      0100290EH   LINE      ---      ---       #56
+      01002918H   LINE      ---      ---       #57
+      01002935H   LINE      ---      ---       #59
+      01002954H   LINE      ---      ---       #60
+      01002954H   LINE      ---      ---       #61
+      0100295AH   LINE      ---      ---       #62
+      0100295CH   LINE      ---      ---       #64
+      0100295CH   LINE      ---      ---       #65
+      0100297BH   LINE      ---      ---       #66
+      0100297BH   LINE      ---      ---       #67
+      01002981H   LINE      ---      ---       #68
+      010029CFH   LINE      ---      ---       #69
+      010029D1H   LINE      ---      ---       #71
+      010029D1H   LINE      ---      ---       #72
+      010029D6H   LINE      ---      ---       #73
+      01002A24H   LINE      ---      ---       #74
+      01002A24H   LINE      ---      ---       #75
+      01002A24H   LINE      ---      ---       #77
+      01002A2CH   LINE      ---      ---       #79
+      02004E7BH   SYMBOL    XDATA    VOID      i
+      02004E7CH   SYMBOL    XDATA    VOID      batValue
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01002880H   BLOCK     CODE     ---       LVL=0
+      01002880H   LINE      ---      ---       #82
+      01002880H   LINE      ---      ---       #83
+      01002880H   LINE      ---      ---       #86
+      01002886H   LINE      ---      ---       #87
+      01002886H   LINE      ---      ---       #88
+      01002888H   LINE      ---      ---       #89
+      0100288BH   LINE      ---      ---       #90
+      0100288BH   LINE      ---      ---       #91
+      0100288EH   LINE      ---      ---       #92
+      01002890H   LINE      ---      ---       #93
+      01002890H   LINE      ---      ---       #94
+      01002890H   LINE      ---      ---       #96
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       RAM
+      01000FF0H   PUBLIC    CODE     ---       main
+
+      01000FF0H   BLOCK     CODE     ---       LVL=0
+      01000FF0H   LINE      ---      ---       #5
+      01000FF0H   LINE      ---      ---       #6
+      01000FF0H   LINE      ---      ---       #7
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       PWM
+      01000F56H   PUBLIC    CODE     ---       YC_PWM_disable
+      010026FAH   PUBLIC    CODE     ---       _YC_PWM_set_duty
+      01002772H   PUBLIC    CODE     ---       YC_PWM_init
+
+      01002772H   BLOCK     CODE     ---       LVL=0
+      01002772H   LINE      ---      ---       #9
+      01002772H   LINE      ---      ---       #10
+      01002772H   LINE      ---      ---       #11
+      01002777H   LINE      ---      ---       #12
+      0100277EH   LINE      ---      ---       #13
+      01002785H   LINE      ---      ---       #14
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010026FAH   BLOCK     CODE     ---       LVL=0
+      010026FAH   LINE      ---      ---       #17
+      010026FFH   LINE      ---      ---       #18
+      010026FFH   BLOCK     CODE     NEAR LAB  LVL=1
+      010026FFH   LINE      ---      ---       #21
+      01002707H   LINE      ---      ---       #22
+      01002707H   LINE      ---      ---       #23
+      0100270AH   LINE      ---      ---       #24
+      01002711H   LINE      ---      ---       #26
+      01002711H   LINE      ---      ---       #27
+      01002718H   LINE      ---      ---       #28
+      01002718H   LINE      ---      ---       #29
+      0100271BH   LINE      ---      ---       #30
+      01002722H   LINE      ---      ---       #32
+      01002722H   LINE      ---      ---       #34
+      01002722H   LINE      ---      ---       #35
+      0100272AH   LINE      ---      ---       #36
+      01002733H   LINE      ---      ---       #37
+      01002737H   LINE      ---      ---       #38
+      01002742H   LINE      ---      ---       #40
+      0100274BH   LINE      ---      ---       #41
+      0100274BH   LINE      ---      ---       #43
+      01002750H   LINE      ---      ---       #44
+      01002755H   LINE      ---      ---       #45
+      01002757H   LINE      ---      ---       #46
+      01002762H   LINE      ---      ---       #47
+      0100276AH   LINE      ---      ---       #49
+      01002771H   LINE      ---      ---       #51
+      02004E9BH   SYMBOL    XDATA    VOID      pwm_duty
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01000F56H   BLOCK     CODE     ---       LVL=0
+      01000F56H   LINE      ---      ---       #54
+      01000F56H   LINE      ---      ---       #55
+      01000F56H   LINE      ---      ---       #56
+      01000F63H   LINE      ---      ---       #57
+      01000F63H   LINE      ---      ---       #58
+      01000F65H   LINE      ---      ---       #59
+      01000F6AH   LINE      ---      ---       #60
+      01000F6AH   LINE      ---      ---       #61
+      01000F71H   LINE      ---      ---       #62
+      01000F78H   LINE      ---      ---       #64
+      01000F7FH   LINE      ---      ---       #65
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      ---         MODULE    ---      ---       IPC
+      02004BA5H   PUBLIC    XDATA    WORD      bttimer
+      02004C8DH   PUBLIC    XDATA    BYTE      btstimer
+      02004C5EH   PUBLIC    XDATA    WORD      c51timer
+      02000550H   PUBLIC    XDATA    ---       ipcPin
+      02004C8EH   PUBLIC    XDATA    BYTE      c51stimer
+      02000BE7H   PUBLIC    XDATA    ---       ipcSendBuff
+      02000B7FH   PUBLIC    XDATA    BYTE      lpm_flag
+      02000C4BH   PUBLIC    XDATA    ---       ipcReadBuff
+      0200054FH   PUBLIC    XDATA    BYTE      ipcPinlen
+      02000B7EH   PUBLIC    XDATA    BYTE      current_task
+      01002C60H   PUBLIC    CODE     ---       IPC_DealSingleStep
+      01001DABH   PUBLIC    CODE     ---       IPC_IsTxBuffEmpty
+      01002D2CH   PUBLIC    CODE     ---       IPC_AbandonLpm
+      01000FD6H   PUBLIC    CODE     ---       IPC_WaitLpm
+      01002AECH   PUBLIC    CODE     ---       _IPC_Initialize
+      01002D26H   PUBLIC    CODE     ---       IPC_GetBBDIsconnectReason
+      010017D1H   PUBLIC    CODE     ---       _IPC_Tx24GData
+      010017D7H   PUBLIC    CODE     ---       _IPC_TxData
+      010008CEH   PUBLIC    CODE     ---       _IPC_TxControlCmd
+
+      01002BB6H   BLOCK     CODE     ---       LVL=0
+      01002BB6H   LINE      ---      ---       #44
+      01002BC6H   LINE      ---      ---       #45
+      01002BC6H   LINE      ---      ---       #46
+      01002C0FH   LINE      ---      ---       #47
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01002C10H   BLOCK     CODE     ---       LVL=0
+      01002C10H   LINE      ---      ---       #49
+      01002C1AH   LINE      ---      ---       #50
+      01002C1AH   BLOCK     CODE     NEAR LAB  LVL=1
+      01002C1AH   LINE      ---      ---       #51
+      01002C22H   LINE      ---      ---       #52
+      01002C28H   LINE      ---      ---       #53
+      01002C47H   LINE      ---      ---       #54
+      01002C51H   LINE      ---      ---       #55
+      01002C55H   LINE      ---      ---       #56
+      01002C55H   LINE      ---      ---       #57
+      01002C57H   LINE      ---      ---       #58
+      01002C5FH   LINE      ---      ---       #59
+      00000006H   SYMBOL    DATA     VOID      src
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      010008F6H   BLOCK     CODE     ---       LVL=0
+      010008F6H   LINE      ---      ---       #61
+      01000904H   LINE      ---      ---       #62
+      01000904H   BLOCK     CODE     NEAR LAB  LVL=1
+      01000904H   LINE      ---      ---       #63
+      01000913H   LINE      ---      ---       #64
+      01000932H   LINE      ---      ---       #65
+      0100093CH   LINE      ---      ---       #66
+      01000961H   LINE      ---      ---       #67
+      0100096FH   LINE      ---      ---       #68
+      01000979H   LINE      ---      ---       #69
+      01000979H   LINE      ---      ---       #70
+      0100097BH   LINE      ---      ---       #71
+      0100098AH   LINE      ---      ---       #72
+      02004E69H   SYMBOL    XDATA    VOID      dest
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      010008CEH   BLOCK     CODE     ---       LVL=0
+      010008CEH   LINE      ---      ---       #74
+      010008D3H   LINE      ---      ---       #75
+      010008D3H   BLOCK     CODE     NEAR LAB  LVL=1
+      010008D3H   LINE      ---      ---       #76
+      010008E6H   LINE      ---      ---       #79
+      010008EEH   LINE      ---      ---       #80
+      02004E8EH   SYMBOL    XDATA    VOID      cmdBuff
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      010017D7H   BLOCK     CODE     ---       LVL=0
+      010017D7H   LINE      ---      ---       #83
+      010017DCH   LINE      ---      ---       #84
+      010017DCH   LINE      ---      ---       #85
+      010017E2H   LINE      ---      ---       #86
+      010017EDH   LINE      ---      ---       #87
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010017D1H   BLOCK     CODE     ---       LVL=0
+      010017D1H   LINE      ---      ---       #90
+      010017D1H   LINE      ---      ---       #91
+      010017D1H   LINE      ---      ---       #92
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01002D26H   BLOCK     CODE     ---       LVL=0
+      01002D26H   LINE      ---      ---       #98
+      01002D26H   LINE      ---      ---       #99
+      01002D26H   LINE      ---      ---       #100
+      01002D2BH   LINE      ---      ---       #101
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01002AECH   BLOCK     CODE     ---       LVL=0
+      01002AECH   LINE      ---      ---       #103
+      01002AECH   LINE      ---      ---       #104
+      01002AECH   LINE      ---      ---       #105
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000FD6H   BLOCK     CODE     ---       LVL=0
+      01000FD6H   LINE      ---      ---       #108
+      01000FD6H   LINE      ---      ---       #109
+      01000FD6H   LINE      ---      ---       #110
+      01000FDBH   LINE      ---      ---       #111
+      01000FDFH   LINE      ---      ---       #112
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01002D2CH   BLOCK     CODE     ---       LVL=0
+      01002D2CH   LINE      ---      ---       #115
+      01002D2CH   LINE      ---      ---       #116
+      01002D2CH   LINE      ---      ---       #117
+      01002D32H   LINE      ---      ---       #118
+      01002D37H   LINE      ---      ---       #119
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001DABH   BLOCK     CODE     ---       LVL=0
+      01001DABH   LINE      ---      ---       #121
+      01001DABH   LINE      ---      ---       #122
+      01001DABH   LINE      ---      ---       #123
+      01001DBFH   LINE      ---      ---       #124
+      01001DC1H   LINE      ---      ---       #125
+      01001DC2H   LINE      ---      ---       #126
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01002C60H   BLOCK     CODE     ---       LVL=0
+      01002C60H   LINE      ---      ---       #129
+      01002C60H   LINE      ---      ---       #130
+      01002C60H   BLOCK     CODE     NEAR LAB  LVL=1
+      01002C60H   LINE      ---      ---       #131
+      01002C72H   LINE      ---      ---       #132
+      01002C86H   LINE      ---      ---       #133
+      01002C86H   LINE      ---      ---       #134
+      01002C8EH   LINE      ---      ---       #135
+      01002C9FH   LINE      ---      ---       #136
+      01002CA9H   LINE      ---      ---       #137
+      01002CC8H   LINE      ---      ---       #138
+      01002CCAH   LINE      ---      ---       #139
+      01002CCAH   LINE      ---      ---       #140
+      01002CCCH   LINE      ---      ---       #141
+      01002CCCH   LINE      ---      ---       #142
+      01002CCCH   LINE      ---      ---       #143
+      01002CE0H   LINE      ---      ---       #144
+      01002CEEH   LINE      ---      ---       #146
+      01002CF1H   LINE      ---      ---       #148
+      01002D00H   LINE      ---      ---       #149
+      01002D02H   LINE      ---      ---       #150
+      01002D0CH   LINE      ---      ---       #151
+      01002D1AH   LINE      ---      ---       #153
+      01002D1DH   LINE      ---      ---       #155
+      01002D23H   LINE      ---      ---       #156
+      01002D25H   LINE      ---      ---       #158
+      01002CCCH   SYMBOL    ---      ---       IPC_TIMERingleStep
+      02004E9DH   SYMBOL    XDATA    VOID      pbuff
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      ---         MODULE    ---      ---       UTILITIES
+      02004E57H   PUBLIC    XDATA    BYTE      ?_compare_str?BYTE
+      01001DF3H   PUBLIC    CODE     ---       _compare_str
+      01000A2DH   PUBLIC    CODE     ---       _Delay1ms
+      01002D83H   PUBLIC    CODE     ---       _xmemclear_ff
+      01001656H   PUBLIC    CODE     ---       _xmemclear
+      02004E48H   PUBLIC    XDATA    BYTE      ?_dmemcpy?BYTE
+      01002D3FH   PUBLIC    CODE     ---       _dmemcpy
+      02004E6BH   PUBLIC    XDATA    BYTE      ?_xmemcpy?BYTE
+      01001250H   PUBLIC    CODE     ---       _xmemcpy
+      01002D38H   PUBLIC    CODE     ---       YC_Ice_break
+
+      01002D38H   BLOCK     CODE     ---       LVL=0
+      01002D38H   LINE      ---      ---       #3
+      01002D38H   LINE      ---      ---       #4
+      01002D38H   LINE      ---      ---       #5
+      01002D3EH   LINE      ---      ---       #7
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001250H   BLOCK     CODE     ---       LVL=0
+      01001250H   LINE      ---      ---       #9
+      01001261H   LINE      ---      ---       #10
+      01001261H   LINE      ---      ---       #11
+      0100126BH   LINE      ---      ---       #12
+      01001292H   LINE      ---      ---       #14
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01002D3FH   BLOCK     CODE     ---       LVL=0
+      01002D3FH   LINE      ---      ---       #16
+      01002D4AH   LINE      ---      ---       #17
+      01002D4AH   LINE      ---      ---       #18
+      01002D58H   LINE      ---      ---       #19
+      01002D82H   LINE      ---      ---       #21
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001656H   BLOCK     CODE     ---       LVL=0
+      01001656H   LINE      ---      ---       #23
+      01001661H   LINE      ---      ---       #24
+      01001661H   LINE      ---      ---       #25
+      0100166BH   LINE      ---      ---       #26
+      01001681H   LINE      ---      ---       #28
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01002D83H   BLOCK     CODE     ---       LVL=0
+      01002D83H   LINE      ---      ---       #30
+      01002D8EH   LINE      ---      ---       #31
+      01002D8EH   LINE      ---      ---       #32
+      01002D98H   LINE      ---      ---       #33
+      01002DAFH   LINE      ---      ---       #35
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000A2DH   BLOCK     CODE     ---       LVL=0
+      01000A2DH   LINE      ---      ---       #46
+      01000A2DH   LINE      ---      ---       #47
+      01000A2DH   BLOCK     CODE     NEAR LAB  LVL=1
+      01000A2DH   LINE      ---      ---       #49
+      01000A33H   LINE      ---      ---       #50
+      01000A41H   LINE      ---      ---       #51
+      01000A44H   LINE      ---      ---       #52
+      00000004H   SYMBOL    DATA     VOID      j
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01001DF3H   BLOCK     CODE     ---       LVL=0
+      01001DF3H   LINE      ---      ---       #54
+      01001DFEH   LINE      ---      ---       #55
+      01001DFEH   BLOCK     CODE     NEAR LAB  LVL=1
+      01001DFEH   LINE      ---      ---       #57
+      01001E0AH   LINE      ---      ---       #58
+      01001E34H   LINE      ---      ---       #59
+      01001E37H   LINE      ---      ---       #60
+      01001E3AH   LINE      ---      ---       #61
+      01001E3CH   LINE      ---      ---       #62
+      00000007H   SYMBOL    DATA     VOID      i
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      ---         MODULE    ---      ---       GPIO
+      020000A3H   PUBLIC    XDATA    ---       YC_GPIOWakeupL
+      020000A7H   PUBLIC    XDATA    ---       YC_GPIOWakeupH
+      010024D8H   PUBLIC    CODE     ---       GPIO_fillpd
+      010024BCH   PUBLIC    CODE     ---       _GPIO_FlipOutBit
+      010023D8H   PUBLIC    CODE     ---       _GPIO_SetWakeupByCurrentState
+      01002DB0H   PUBLIC    CODE     ---       _GPIO_ClearWakeup
+      00000020H.7 PUBLIC    BIT      BIT       ?_GPIO_SetWakeup?BIT
+      010023EBH   PUBLIC    CODE     ---       _GPIO_SetWakeup
+      00000020H.6 PUBLIC    BIT      BIT       ?_GPIO_SetOutput?BIT
+      01000B60H   PUBLIC    CODE     ---       _GPIO_SetOutput
+      00000020H.5 PUBLIC    BIT      BIT       ?_GPIO_SetInput?BIT
+      0100228EH   PUBLIC    CODE     ---       _GPIO_SetInput
+      00000020H.4 PUBLIC    BIT      BIT       ?_GPIO_Setoe?BIT
+      010022CEH   PUBLIC    CODE     ---       _GPIO_Setoe
+      00000020H.3 PUBLIC    BIT      BIT       ?_GPIO_SetPd?BIT
+      010022BDH   PUBLIC    CODE     ---       _GPIO_SetPd
+      00000020H.2 PUBLIC    BIT      BIT       ?_GPIO_SetPu?BIT
+      010022ACH   PUBLIC    CODE     ---       _GPIO_SetPu
+      00000020H.1 PUBLIC    BIT      BIT       ?_GPIO_Setout?BIT
+      010007DEH   PUBLIC    CODE     ---       _GPIO_Setout
+      01002477H   PUBLIC    CODE     ---       _GPIO_GetInputStatus
+
+      010022DFH   BLOCK     CODE     ---       LVL=0
+      010022DFH   LINE      ---      ---       #9
+      010022EAH   LINE      ---      ---       #10
+      010022EAH   BLOCK     CODE     NEAR LAB  LVL=1
+      010022EAH   LINE      ---      ---       #11
+      010022ECH   LINE      ---      ---       #12
+      010022EDH   LINE      ---      ---       #14
+      010022F1H   LINE      ---      ---       #15
+      010022F8H   LINE      ---      ---       #17
+      010022FBH   LINE      ---      ---       #18
+      0100231DH   LINE      ---      ---       #19
+      0100231DH   LINE      ---      ---       #21
+      0100231DH   LINE      ---      ---       #22
+      00000006H   SYMBOL    DATA     VOID      queue
+      00000005H   SYMBOL    DATA     VOID      group
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      0100247DH   BLOCK     CODE     ---       LVL=0
+      0100247DH   LINE      ---      ---       #26
+      0100247FH   LINE      ---      ---       #27
+      0100247FH   BLOCK     CODE     NEAR LAB  LVL=1
+      0100247FH   LINE      ---      ---       #28
+      01002484H   LINE      ---      ---       #29
+      01002485H   LINE      ---      ---       #31
+      01002489H   LINE      ---      ---       #32
+      01002490H   LINE      ---      ---       #33
+      010024BBH   LINE      ---      ---       #35
+      02004EB7H   SYMBOL    XDATA    VOID      queue
+      00000006H   SYMBOL    DATA     VOID      group
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01002477H   BLOCK     CODE     ---       LVL=0
+      01002477H   LINE      ---      ---       #37
+      01002477H   LINE      ---      ---       #38
+      01002477H   LINE      ---      ---       #39
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010007DEH   BLOCK     CODE     ---       LVL=0
+      010007DEH   LINE      ---      ---       #42
+      010007DEH   LINE      ---      ---       #43
+      010007DEH   LINE      ---      ---       #44
+      010007E2H   LINE      ---      ---       #46
+      010007EFH   LINE      ---      ---       #47
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010022ACH   BLOCK     CODE     ---       LVL=0
+      010022ACH   LINE      ---      ---       #49
+      010022ACH   LINE      ---      ---       #50
+      010022ACH   LINE      ---      ---       #51
+      010022B0H   LINE      ---      ---       #53
+      010022BCH   LINE      ---      ---       #54
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010022BDH   BLOCK     CODE     ---       LVL=0
+      010022BDH   LINE      ---      ---       #56
+      010022BDH   LINE      ---      ---       #57
+      010022BDH   LINE      ---      ---       #58
+      010022C1H   LINE      ---      ---       #60
+      010022CDH   LINE      ---      ---       #61
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010022CEH   BLOCK     CODE     ---       LVL=0
+      010022CEH   LINE      ---      ---       #63
+      010022CEH   LINE      ---      ---       #64
+      010022CEH   LINE      ---      ---       #65
+      010022D2H   LINE      ---      ---       #67
+      010022DEH   LINE      ---      ---       #68
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      0100228EH   BLOCK     CODE     ---       LVL=0
+      0100228EH   LINE      ---      ---       #70
+      01002290H   LINE      ---      ---       #71
+      01002290H   LINE      ---      ---       #72
+      01002294H   LINE      ---      ---       #74
+      0100229CH   LINE      ---      ---       #75
+      010022A5H   LINE      ---      ---       #76
+      010022ABH   LINE      ---      ---       #77
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01000B60H   BLOCK     CODE     ---       LVL=0
+      01000B60H   LINE      ---      ---       #79
+      01000B62H   LINE      ---      ---       #80
+      01000B62H   LINE      ---      ---       #81
+      01000B66H   LINE      ---      ---       #83
+      01000B6DH   LINE      ---      ---       #84
+      01000B76H   LINE      ---      ---       #85
+      01000B7DH   LINE      ---      ---       #86
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010023EBH   BLOCK     CODE     ---       LVL=0
+      010023EBH   LINE      ---      ---       #88
+      010023EBH   LINE      ---      ---       #89
+      010023EBH   BLOCK     CODE     NEAR LAB  LVL=1
+      010023EBH   LINE      ---      ---       #92
+      010023F1H   LINE      ---      ---       #94
+      010023F5H   LINE      ---      ---       #95
+      010023FCH   LINE      ---      ---       #96
+      010023FFH   LINE      ---      ---       #97
+      01002420H   LINE      ---      ---       #98
+      01002441H   LINE      ---      ---       #99
+      01002442H   LINE      ---      ---       #101
+      01002442H   LINE      ---      ---       #102
+      01002464H   LINE      ---      ---       #103
+      01002476H   LINE      ---      ---       #104
+      01002476H   LINE      ---      ---       #105
+      00000006H   SYMBOL    DATA     VOID      queue
+      00000007H   SYMBOL    DATA     VOID      group
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01002DB0H   BLOCK     CODE     ---       LVL=0
+      01002DB0H   LINE      ---      ---       #107
+      01002DB0H   LINE      ---      ---       #108
+      01002DB0H   BLOCK     CODE     NEAR LAB  LVL=1
+      01002DB0H   LINE      ---      ---       #111
+      01002DB4H   LINE      ---      ---       #113
+      01002DB8H   LINE      ---      ---       #114
+      01002DBFH   LINE      ---      ---       #115
+      01002DE1H   LINE      ---      ---       #116
+      01002DEEH   LINE      ---      ---       #117
+      00000006H   SYMBOL    DATA     VOID      queue
+      00000007H   SYMBOL    DATA     VOID      group
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      010023D8H   BLOCK     CODE     ---       LVL=0
+      010023D8H   LINE      ---      ---       #119
+      010023DDH   LINE      ---      ---       #120
+      010023DDH   BLOCK     CODE     NEAR LAB  LVL=1
+      010023DDH   LINE      ---      ---       #121
+      010023E1H   LINE      ---      ---       #122
+      00000021H.0 SYMBOL    BIT      VOID      st
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      010024BCH   BLOCK     CODE     ---       LVL=0
+      010024BCH   LINE      ---      ---       #125
+      010024C1H   LINE      ---      ---       #126
+      010024C1H   BLOCK     CODE     NEAR LAB  LVL=1
+      010024C1H   LINE      ---      ---       #127
+      010024CBH   LINE      ---      ---       #128
+      00000021H.1 SYMBOL    BIT      VOID      st
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      010024D8H   BLOCK     CODE     ---       LVL=0
+      010024D8H   LINE      ---      ---       #131
+      010024D8H   LINE      ---      ---       #132
+      010024D8H   BLOCK     CODE     NEAR LAB  LVL=1
+      010024D8H   LINE      ---      ---       #134
+      010024DAH   LINE      ---      ---       #135
+      0100250BH   LINE      ---      ---       #136
+      00000007H   SYMBOL    DATA     VOID      i
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      ---         MODULE    ---      ---       IIC
+      01001054H   PUBLIC    CODE     ---       _IIC_WriteBlock
+      01001102H   PUBLIC    CODE     ---       _IIC_write
+      010011A3H   PUBLIC    CODE     ---       _IIC_Read
+
+      0100119BH   BLOCK     CODE     ---       LVL=0
+      0100119BH   LINE      ---      ---       #11
+      0100119BH   LINE      ---      ---       #12
+      0100119BH   LINE      ---      ---       #13
+      010011A2H   LINE      ---      ---       #14
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      010011A3H   BLOCK     CODE     ---       LVL=0
+      010011A3H   LINE      ---      ---       #16
+      010011B4H   LINE      ---      ---       #17
+      010011B4H   BLOCK     CODE     NEAR LAB  LVL=1
+      010011B4H   LINE      ---      ---       #18
+      010011B4H   LINE      ---      ---       #19
+      010011BDH   LINE      ---      ---       #20
+      010011C3H   LINE      ---      ---       #21
+      010011C9H   LINE      ---      ---       #22
+      010011CFH   LINE      ---      ---       #23
+      010011E8H   LINE      ---      ---       #24
+      010011FDH   LINE      ---      ---       #25
+      01001216H   LINE      ---      ---       #26
+      0100121CH   LINE      ---      ---       #27
+      01001224H   LINE      ---      ---       #28
+      0100122BH   LINE      ---      ---       #29
+      0100122BH   LINE      ---      ---       #30
+      01001232H   LINE      ---      ---       #31
+      01001234H   LINE      ---      ---       #32
+      00000006H   SYMBOL    DATA     VOID      mem_src
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      01001102H   BLOCK     CODE     ---       LVL=0
+      01001102H   LINE      ---      ---       #35
+      0100111DH   LINE      ---      ---       #36
+      0100111DH   LINE      ---      ---       #37
+      0100113FH   LINE      ---      ---       #38
+      01001145H   LINE      ---      ---       #39
+      01001154H   LINE      ---      ---       #40
+      01001171H   LINE      ---      ---       #41
+      01001188H   LINE      ---      ---       #42
+      0100118FH   LINE      ---      ---       #43
+      01001194H   LINE      ---      ---       #44
+      ---         BLOCKEND  ---      ---       LVL=0
+
+      01001054H   BLOCK     CODE     ---       LVL=0
+      01001054H   LINE      ---      ---       #48
+      0100106BH   LINE      ---      ---       #49
+      0100106BH   BLOCK     CODE     NEAR LAB  LVL=1
+      0100106BH   LINE      ---      ---       #51
+      01001077H   LINE      ---      ---       #52
+      01001087H   LINE      ---      ---       #53
+      01001095H   LINE      ---      ---       #54
+      010010BBH   LINE      ---      ---       #55
+      010010C8H   LINE      ---      ---       #56
+      010010DDH   LINE      ---      ---       #57
+      010010E2H   LINE      ---      ---       #58
+      010010F3H   LINE      ---      ---       #59
+      010010FFH   LINE      ---      ---       #60
+      01001101H   LINE      ---      ---       #61
+      00000004H   SYMBOL    DATA     VOID      cris
+      02004E46H   SYMBOL    XDATA    VOID      curr_len
+      ---         BLOCKEND  CODE     ---       LVL=1
+      ---         BLOCKEND  CODE     ---       LVL=0
+
+      ---         MODULE    ---      ---       ?C?FPADD
+      0100000AH   PUBLIC    CODE     ---       ?C?FPADD
+      01000006H   PUBLIC    CODE     ---       ?C?FPSUB
+
+      ---         MODULE    ---      ---       ?C?FPMUL
+      010000FBH   PUBLIC    CODE     ---       ?C?FPMUL
+
+      ---         MODULE    ---      ---       ?C?FCAST
+      0100020BH   PUBLIC    CODE     ---       ?C?FCASTC
+      01000206H   PUBLIC    CODE     ---       ?C?FCASTI
+      01000201H   PUBLIC    CODE     ---       ?C?FCASTL
+
+      ---         MODULE    ---      ---       ?C?CASTF
+      0100023FH   PUBLIC    CODE     ---       ?C?CASTF
+
+      ---         MODULE    ---      ---       ?C?FPGETOPN
+      01000276H   PUBLIC    CODE     ---       ?C?FPGETOPN2
+      010002ABH   PUBLIC    CODE     ---       ?C?FPNANRESULT
+      010002B5H   PUBLIC    CODE     ---       ?C?FPOVERFLOW
+      0100028DH   PUBLIC    CODE     ---       ?C?FPRESULT
+      010002A1H   PUBLIC    CODE     ---       ?C?FPRESULT2
+      010002B2H   PUBLIC    CODE     ---       ?C?FPUNDERFLOW
+
+      ---         MODULE    ---      ---       ?C_STARTUP
+      01000000H   PUBLIC    CODE     ---       ?C_STARTUP
+
+      ---         MODULE    ---      ---       ?C?COPY
+      01000390H   PUBLIC    CODE     ---       ?C?COPY
+
+      ---         MODULE    ---      ---       ?C?CLDPTR
+      010003B6H   PUBLIC    CODE     ---       ?C?CLDPTR
+
+      ---         MODULE    ---      ---       ?C?CLDOPTR
+      010003CFH   PUBLIC    CODE     ---       ?C?CLDOPTR
+
+      ---         MODULE    ---      ---       ?C?CSTPTR
+      010003FCH   PUBLIC    CODE     ---       ?C?CSTPTR
+
+      ---         MODULE    ---      ---       ?C?UIDIV
+      0100040EH   PUBLIC    CODE     ---       ?C?UIDIV
+
+      ---         MODULE    ---      ---       ?C?IILDX
+      01000463H   PUBLIC    CODE     ---       ?C?IILDX
+
+      ---         MODULE    ---      ---       ?C?ILDIX
+      01000479H   PUBLIC    CODE     ---       ?C?ILDIX
+
+      ---         MODULE    ---      ---       ?C?ULDIV
+      010004CBH   PUBLIC    CODE     ---       ?C?ULDIV
+
+      ---         MODULE    ---      ---       ?C?LNEG
+      0100055DH   PUBLIC    CODE     ---       ?C?LNEG
+
+      ---         MODULE    ---      ---       ?C?ULCMP
+      0100056BH   PUBLIC    CODE     ---       ?C?ULCMP
+
+      ---         MODULE    ---      ---       ?C?LSTXDATA
+      0100057CH   PUBLIC    CODE     ---       ?C?LSTXDATA
+
+      ---         MODULE    ---      ---       ?C?LSTKXDATA
+      01000588H   PUBLIC    CODE     ---       ?C?LSTKXDATA
+
+      ---         MODULE    ---      ---       ?C?CCASE
+      010005B9H   PUBLIC    CODE     ---       ?C?CCASE
+
+      ---         MODULE    ---      ---       ?C?ICALL
+      010005DFH   PUBLIC    CODE     ---       ?C?ICALL
+      010005E3H   PUBLIC    CODE     ---       ?C?ICALL2
+
+      ---         MODULE    ---      ---       ?C_INIT
+      0100062CH   PUBLIC    CODE     ---       ?C_START
+
+Program Size: data=10.2 xdata=817 const=182 code=11577
+LX51 RUN COMPLETE.  0 WARNING(S),  0 ERROR(S)
Index: output/FW.SBR
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: output/FW.SBR
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: output/eeprom.dat
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/eeprom.dat	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/eeprom.dat	(working copy)
@@ -0,0 +1,32768 @@
+00
+02
+aa
+55
+76
+0e
+c5
+12
+80
+0f
+c0
+00
+00
+17
+c0
+01
+80
+1b
+c0
+02
+80
+1f
+c0
+48
+01
+61
+c0
+49
+01
+27
+c0
+4a
+01
+2d
+c0
+4a
+81
+17
+c0
+58
+00
+d9
+c0
+58
+80
+db
+c0
+59
+00
+ef
+c0
+59
+81
+09
+c0
+5b
+01
+12
+c0
+5c
+80
+e3
+20
+20
+3b
+f1
+c0
+1f
+01
+d4
+c0
+1f
+81
+d8
+c0
+43
+80
+b7
+c0
+46
+81
+ea
+c0
+47
+81
+dc
+c0
+66
+81
+6b
+c0
+68
+00
+c3
+20
+20
+3b
+f1
+68
+10
+81
+3b
+60
+00
+8b
+81
+70
+80
+06
+08
+20
+20
+30
+03
+20
+40
+00
+51
+20
+40
+00
+43
+20
+40
+00
+24
+20
+20
+30
+15
+20
+40
+33
+92
+20
+40
+34
+07
+20
+40
+30
+24
+20
+40
+01
+fd
+20
+20
+30
+22
+20
+40
+00
+b2
+20
+74
+00
+00
+1f
+f0
+fe
+00
+1f
+e2
+0c
+00
+20
+40
+00
+93
+60
+00
+cb
+a7
+c0
+00
+80
+37
+c0
+03
+00
+41
+1f
+e2
+04
+00
+18
+c2
+22
+00
+68
+00
+c0
+40
+c3
+00
+00
+34
+1a
+22
+0c
+00
+c6
+84
+80
+00
+18
+42
+7e
+00
+20
+60
+00
+00
+1a
+22
+0c
+00
+d8
+a0
+00
+f8
+20
+20
+00
+8b
+20
+40
+00
+93
+20
+40
+00
+93
+60
+00
+8b
+7d
+20
+40
+00
+3c
+20
+20
+7c
+33
+20
+40
+00
+96
+18
+c2
+04
+00
+18
+50
+84
+00
+60
+09
+4b
+9a
+20
+60
+00
+00
+d8
+a0
+4d
+57
+20
+20
+00
+8b
+68
+0a
+4d
+4c
+1c
+42
+7e
+00
+98
+46
+7e
+00
+68
+09
+4d
+50
+98
+46
+fc
+00
+20
+40
+7e
+fd
+18
+07
+fe
+00
+20
+7a
+00
+00
+1c
+42
+04
+00
+60
+0a
+4d
+4c
+68
+00
+cd
+52
+1f
+e0
+fe
+01
+60
+00
+cd
+52
+20
+60
+00
+00
+68
+0a
+4c
+59
+1c
+42
+7e
+00
+98
+46
+7e
+00
+d8
+40
+06
+40
+98
+46
+fc
+00
+20
+40
+7e
+fd
+18
+07
+fe
+00
+20
+7a
+00
+00
+1c
+42
+04
+00
+60
+0a
+4c
+59
+68
+09
+4b
+a5
+18
+50
+84
+00
+98
+40
+fe
+00
+1f
+f0
+fe
+00
+60
+01
+4b
+a5
+1f
+f0
+fe
+00
+1f
+e1
+7e
+03
+c1
+80
+00
+00
+68
+00
+cc
+8f
+c2
+80
+00
+6e
+c2
+80
+80
+70
+da
+20
+00
+00
+20
+40
+00
+82
+70
+89
+71
+8f
+68
+00
+cc
+90
+60
+10
+89
+73
+20
+40
+00
+71
+da
+20
+00
+01
+20
+20
+00
+82
+70
+89
+71
+bf
+20
+20
+00
+71
+70
+89
+71
+af
+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
+74
+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
+4c
+95
+20
+60
+00
+00
+d8
+40
+00
+21
+68
+00
+cc
+90
+98
+46
+04
+00
+1a
+22
+7e
+00
+79
+20
+04
+07
+24
+3a
+00
+89
+79
+3f
+84
+07
+d8
+a0
+80
+78
+20
+20
+69
+f4
+20
+40
+00
+93
+1f
+e2
+72
+00
+20
+40
+00
+8f
+20
+20
+00
+3c
+20
+40
+00
+93
+e0
+a0
+80
+00
+c2
+00
+00
+8f
+20
+60
+00
+00
+20
+40
+00
+96
+e8
+c0
+80
+00
+20
+60
+00
+00
+58
+00
+4b
+36
+98
+c6
+7c
+00
+24
+62
+80
+00
+d8
+c0
+4a
+a0
+20
+60
+00
+00
+df
+20
+00
+03
+d8
+c0
+4b
+a2
+18
+c2
+22
+00
+68
+01
+4b
+a0
+1f
+f0
+fe
+00
+1f
+e2
+0a
+00
+1a
+22
+0c
+00
+e8
+c0
+80
+00
+e0
+a0
+80
+00
+20
+40
+00
+aa
+c2
+00
+00
+a2
+18
+a2
+7e
+00
+1f
+f0
+fe
+00
+60
+01
+4b
+a0
+20
+60
+00
+00
+58
+00
+4b
+9a
+98
+a6
+7c
+00
+24
+62
+80
+00
+d8
+a0
+4b
+36
+20
+60
+00
+00
+68
+01
+4b
+9e
+68
+09
+4b
+a0
+20
+20
+00
+b4
+68
+01
+4b
+9a
+68
+09
+4b
+9c
+98
+46
+7c
+00
+20
+22
+e9
+b1
+20
+20
+32
+0b
+1c
+42
+7e
+00
+60
+02
+4d
+48
+68
+08
+c7
+ef
+68
+00
+cd
+4b
+98
+46
+7c
+00
+24
+41
+00
+be
+20
+20
+7c
+06
+68
+0a
+4d
+48
+60
+0a
+47
+ec
+60
+0a
+4c
+59
+60
+0a
+4d
+4c
+20
+60
+00
+00
+60
+08
+82
+59
+68
+00
+cc
+8d
+1f
+e0
+fe
+01
+60
+00
+cc
+8d
+68
+00
+82
+59
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+82
+59
+20
+40
+00
+cd
+20
+20
+00
+c7
+68
+00
+cc
+15
+20
+7a
+00
+00
+1f
+e0
+ff
+ff
+60
+00
+cc
+15
+20
+60
+00
+00
+1a
+62
+7e
+00
+1f
+e1
+7e
+f0
+c1
+28
+00
+00
+1a
+62
+7e
+00
+20
+7a
+00
+00
+60
+00
+cb
+a4
+20
+20
+00
+9b
+20
+40
+3b
+36
+20
+20
+3c
+dc
+70
+41
+6e
+7f
+20
+40
+3c
+f3
+68
+00
+cc
+97
+20
+7a
+00
+00
+70
+4c
+97
+00
+1c
+42
+7e
+00
+60
+02
+4c
+59
+20
+60
+00
+00
+68
+00
+c2
+19
+24
+7a
+00
+00
+70
+80
+42
+06
+58
+00
+0f
+0c
+20
+40
+3d
+a7
+58
+03
+0d
+40
+20
+40
+3b
+f3
+37
+d9
+82
+00
+1e
+22
+60
+00
+20
+40
+3b
+36
+20
+00
+13
+88
+20
+20
+3d
+9d
+c6
+11
+80
+00
+68
+01
+47
+f4
+c2
+84
+bd
+1e
+20
+40
+3c
+ab
+68
+01
+c2
+10
+20
+7a
+00
+00
+68
+00
+c1
+31
+20
+7a
+00
+00
+20
+40
+52
+7e
+24
+7a
+00
+00
+20
+40
+3d
+ca
+24
+7a
+00
+00
+20
+40
+3b
+36
+68
+00
+c7
+dc
+20
+3a
+3d
+25
+68
+00
+c7
+93
+20
+7a
+00
+00
+20
+20
+3d
+25
+20
+40
+00
+b2
+24
+74
+00
+00
+20
+40
+00
+af
+24
+74
+00
+00
+70
+0b
+7f
+01
+70
+0b
+7e
+01
+20
+40
+01
+0e
+20
+20
+00
+b2
+20
+40
+01
+01
+24
+74
+00
+00
+68
+00
+8b
+7f
+24
+7a
+00
+00
+20
+20
+3d
+2d
+68
+00
+8b
+7e
+20
+00
+00
+0a
+c0
+80
+01
+0e
+20
+60
+00
+00
+20
+40
+01
+01
+24
+74
+00
+00
+68
+00
+8b
+7f
+24
+7a
+00
+00
+20
+20
+3d
+4f
+20
+40
+01
+19
+20
+20
+3a
+af
+68
+00
+c2
+19
+24
+3a
+01
+1f
+20
+40
+3d
+91
+20
+00
+75
+30
+20
+00
+75
+30
+20
+00
+75
+30
+20
+40
+3b
+0a
+70
+80
+42
+04
+68
+10
+89
+6b
+1f
+e1
+7e
+cf
+60
+10
+89
+6b
+1f
+e1
+fe
+30
+60
+10
+89
+6b
+20
+60
+00
+00
+60
+08
+80
+17
+18
+40
+a2
+04
+20
+20
+3a
+86
+60
+08
+80
+17
+18
+40
+a2
+00
+20
+20
+3a
+b6
+20
+40
+01
+2a
+58
+00
+05
+00
+20
+40
+3b
+f3
+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
+7d
+68
+00
+cb
+ef
+c0
+ff
+81
+45
+68
+02
+ca
+91
+e0
+a2
+80
+00
+e8
+c2
+80
+00
+e0
+a2
+80
+00
+70
+89
+56
+df
+20
+40
+01
+50
+70
+89
+55
+df
+20
+60
+00
+00
+68
+02
+ca
+87
+e0
+a2
+80
+00
+e8
+c2
+80
+00
+e0
+a2
+80
+00
+68
+00
+cc
+7d
+20
+5a
+01
+4e
+60
+10
+89
+56
+70
+89
+55
+d0
+20
+60
+00
+00
+58
+00
+00
+c2
+20
+60
+00
+00
+20
+00
+00
+04
+70
+89
+55
+d1
+20
+00
+00
+04
+70
+89
+55
+d2
+20
+00
+00
+04
+70
+89
+55
+d4
+20
+00
+00
+04
+20
+60
+00
+00
+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
+c0
+20
+60
+00
+00
+20
+30
+ba
+6f
+20
+40
+01
+58
+20
+20
+3a
+6f
+78
+34
+7c
+00
+68
+12
+01
+38
+79
+34
+7e
+1a
+60
+12
+00
+4c
+20
+40
+3d
+b0
+70
+00
+a2
+01
+20
+60
+00
+00
+70
+0b
+7e
+00
+70
+01
+77
+06
+20
+40
+3f
+a4
+58
+00
+01
+6a
+60
+01
+42
+8a
+58
+00
+00
+d2
+60
+01
+42
+92
+58
+00
+01
+db
+60
+01
+42
+90
+58
+00
+00
+24
+60
+01
+42
+8c
+58
+00
+01
+64
+60
+01
+42
+88
+58
+00
+4a
+a0
+1f
+f0
+fe
+00
+60
+01
+4b
+9a
+60
+01
+4b
+9c
+20
+40
+3e
+0b
+58
+00
+4b
+36
+1f
+f0
+fe
+00
+60
+01
+4b
+9e
+60
+01
+4b
+a0
+68
+00
+cc
+97
+c0
+2d
+01
+99
+20
+35
+81
+97
+68
+01
+4c
+91
+1f
+f0
+fe
+00
+60
+01
+4c
+91
+68
+01
+4c
+93
+1f
+f0
+fe
+00
+60
+01
+4c
+93
+20
+40
+01
+a4
+68
+04
+02
+a0
+24
+3a
+01
+91
+68
+01
+4a
+d4
+1f
+f0
+fe
+00
+20
+3a
+01
+91
+60
+01
+4c
+93
+20
+40
+01
+fa
+70
+4b
+a4
+2f
+20
+40
+00
+9b
+70
+4c
+97
+00
+70
+82
+80
+03
+20
+60
+00
+00
+70
+4b
+a4
+30
+20
+20
+01
+93
+1c
+e2
+7e
+00
+20
+3a
+01
+e2
+20
+40
+5b
+63
+20
+40
+4d
+99
+58
+00
+00
+00
+60
+04
+40
+40
+60
+01
+47
+f4
+1c
+42
+7e
+00
+60
+02
+4c
+59
+70
+4b
+a4
+33
+20
+20
+01
+93
+20
+40
+68
+8a
+58
+00
+07
+e2
+da
+20
+02
+a0
+d8
+40
+00
+0c
+20
+40
+68
+d3
+20
+40
+68
+8d
+68
+04
+02
+a0
+20
+7a
+00
+00
+68
+00
+cc
+8f
+c2
+80
+01
+b6
+c2
+80
+81
+c4
+68
+01
+02
+a0
+1f
+f0
+fe
+00
+60
+01
+4c
+91
+68
+01
+02
+a6
+1f
+f0
+fe
+00
+60
+01
+4c
+93
+20
+60
+00
+00
+68
+09
+02
+a4
+68
+01
+02
+aa
+18
+42
+24
+00
+1f
+e2
+22
+00
+1f
+f0
+fe
+00
+60
+01
+4c
+93
+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
+4c
+91
+20
+60
+00
+00
+68
+09
+02
+a2
+68
+01
+02
+a8
+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
+4c
+91
+1a
+63
+a6
+00
+1a
+22
+7e
+00
+9a
+66
+7e
+00
+1f
+f0
+fe
+00
+60
+01
+4c
+93
+20
+60
+00
+00
+70
+00
+16
+27
+70
+89
+0f
+36
+70
+89
+0b
+5f
+20
+20
+53
+d4
+70
+89
+0f
+2e
+70
+89
+0b
+ff
+20
+20
+53
+d9
+20
+60
+00
+00
+68
+01
+4b
+a0
+60
+01
+4b
+9e
+68
+01
+4b
+9c
+60
+01
+4b
+9a
+70
+0b
+7e
+03
+20
+40
+01
+0e
+70
+4c
+97
+5a
+20
+40
+3d
+b8
+68
+12
+01
+38
+79
+3f
+fe
+0f
+60
+12
+00
+4c
+20
+40
+3d
+b0
+d8
+5f
+ff
+ff
+20
+20
+3c
+da
+20
+40
+7c
+20
+da
+20
+47
+e4
+20
+40
+7f
+9f
+1f
+e2
+04
+00
+20
+40
+7c
+24
+18
+42
+7e
+00
+20
+7a
+00
+00
+c0
+10
+81
+f5
+c0
+11
+01
+f7
+c0
+11
+82
+92
+20
+20
+7c
+5a
+70
+4b
+ef
+ff
+20
+20
+02
+c5
+79
+3f
+80
+23
+70
+4b
+ef
+ff
+20
+20
+02
+7d
+58
+00
+00
+00
+60
+02
+4b
+a9
+20
+60
+00
+00
+c6
+91
+80
+00
+68
+02
+4d
+3d
+60
+02
+4d
+6b
+20
+40
+02
+23
+24
+34
+02
+16
+70
+4c
+15
+0a
+20
+40
+02
+49
+68
+00
+cb
+ef
+c1
+ff
+80
+00
+70
+4c
+3d
+02
+68
+00
+cd
+46
+24
+7a
+00
+00
+20
+40
+01
+01
+24
+74
+00
+00
+68
+00
+8b
+7f
+24
+7a
+00
+00
+20
+40
+3c
+ab
+68
+01
+c2
+10
+20
+7a
+00
+00
+68
+00
+c1
+31
+20
+7a
+00
+00
+68
+01
+cd
+73
+20
+40
+7e
+8a
+60
+0a
+41
+fc
+20
+20
+3c
+da
+20
+40
+01
+01
+24
+74
+00
+00
+68
+00
+8b
+7f
+24
+7a
+00
+00
+20
+40
+3c
+ab
+68
+01
+c2
+10
+20
+7a
+00
+00
+68
+00
+c1
+31
+20
+7a
+00
+00
+68
+00
+cc
+15
+24
+3a
+02
+12
+68
+02
+4d
+6b
+20
+20
+02
+13
+68
+00
+cb
+ef
+c0
+ff
+82
+9b
+20
+40
+02
+2a
+20
+54
+02
+45
+20
+54
+03
+05
+70
+4b
+e6
+01
+20
+60
+00
+00
+78
+54
+7c
+00
+70
+4b
+e2
+02
+68
+00
+cd
+57
+c0
+02
+02
+35
+c0
+02
+82
+3b
+c0
+03
+02
+41
+c0
+03
+82
+3e
+c0
+04
+02
+38
+68
+00
+cd
+46
+24
+5a
+34
+df
+20
+60
+00
+00
+70
+4d
+57
+00
+70
+4b
+e1
+0a
+20
+20
+02
+43
+70
+4d
+57
+08
+70
+4b
+e1
+10
+20
+20
+02
+43
+70
+4d
+57
+03
+70
+4b
+e1
+04
+20
+20
+02
+43
+70
+4d
+57
+02
+70
+4b
+e1
+03
+20
+20
+02
+43
+70
+4b
+e2
+01
+70
+4b
+e1
+08
+70
+4b
+e7
+00
+20
+20
+34
+df
+d8
+a0
+0c
+d5
+d8
+c0
+4d
+57
+df
+20
+00
+14
+20
+20
+7e
+45
+70
+4b
+e8
+00
+d9
+60
+0d
+00
+34
+73
+02
+00
+20
+40
+02
+70
+24
+37
+82
+59
+20
+40
+02
+80
+68
+00
+cb
+e0
+1f
+e0
+fe
+01
+60
+00
+cb
+e0
+70
+4d
+46
+00
+68
+00
+cb
+ef
+c0
+ff
+82
+6f
+20
+40
+02
+6b
+70
+4b
+e7
+00
+70
+4b
+e6
+00
+20
+60
+00
+00
+70
+4d
+46
+01
+68
+00
+cb
+e7
+1f
+e0
+fe
+01
+60
+00
+cb
+e7
+68
+00
+cb
+ef
+c0
+ff
+82
+7b
+68
+00
+cb
+e7
+c0
+7f
+82
+7d
+68
+00
+cb
+e7
+d8
+40
+00
+10
+98
+46
+7c
+00
+20
+21
+03
+24
+68
+00
+cb
+e8
+1f
+e0
+fe
+01
+60
+00
+cb
+e8
+20
+00
+00
+0a
+c0
+83
+82
+4a
+20
+20
+03
+24
+58
+00
+00
+00
+60
+02
+0c
+d5
+60
+02
+4d
+57
+20
+60
+00
+00
+20
+20
+02
+b5
+78
+57
+fc
+00
+20
+40
+03
+7c
+18
+00
+2a
+00
+68
+02
+4c
+00
+98
+00
+12
+00
+68
+08
+80
+17
+20
+40
+3a
+82
+20
+40
+3a
+87
+20
+40
+03
+3c
+20
+57
+83
+76
+20
+60
+00
+00
+70
+4d
+46
+00
+20
+60
+00
+00
+70
+4d
+46
+00
+70
+0b
+7d
+32
+20
+20
+7c
+27
+20
+40
+02
+ea
+68
+00
+8c
+b3
+c1
+81
+00
+00
+68
+00
+cb
+df
+20
+7a
+00
+00
+98
+00
+72
+00
+d8
+c0
+0c
+b5
+d8
+a0
+0d
+17
+20
+40
+7e
+45
+68
+00
+8c
+b4
+2f
+e1
+f0
+08
+24
+60
+80
+00
+68
+00
+8c
+b5
+c0
+7f
+82
+90
+60
+00
+cc
+b7
+20
+60
+00
+00
+70
+4d
+76
+01
+20
+60
+00
+00
+79
+20
+00
+23
+20
+40
+02
+97
+20
+40
+02
+55
+70
+4b
+ef
+01
+20
+60
+00
+00
+70
+4b
+e0
+00
+70
+4b
+e9
+4e
+68
+02
+4b
+eb
+20
+20
+02
+f7
+20
+40
+02
+97
+68
+00
+cb
+e6
+c0
+00
+b4
+df
+68
+00
+cb
+ef
+c0
+00
+82
+a3
+c0
+01
+02
+a6
+c0
+01
+82
+a9
+20
+20
+3b
+f1
+70
+4b
+ef
+11
+70
+0d
+37
+aa
+20
+20
+02
+ab
+70
+4b
+ef
+12
+70
+0d
+37
+55
+20
+20
+02
+ab
+70
+4b
+ef
+13
+70
+0d
+37
+22
+70
+0d
+38
+02
+68
+02
+4c
+06
+60
+02
+0d
+39
+70
+0d
+3d
+00
+da
+20
+0d
+37
+d8
+40
+00
+07
+20
+40
+02
+e5
+20
+40
+03
+05
+20
+40
+02
+28
+20
+20
+34
+df
+68
+00
+cb
+ef
+c1
+7f
+80
+00
+c0
+08
+82
+bb
+c0
+09
+02
+bd
+c0
+09
+82
+bf
+20
+60
+00
+00
+70
+4b
+ef
+02
+20
+20
+02
+55
+70
+4b
+ef
+03
+20
+20
+02
+55
+70
+4b
+ef
+ff
+70
+0b
+7d
+31
+20
+40
+7c
+27
+68
+02
+0d
+19
+20
+40
+02
+f7
+20
+20
+02
+55
+79
+20
+00
+23
+20
+40
+02
+f8
+20
+40
+03
+24
+68
+00
+cb
+ef
+c1
+ff
+80
+00
+20
+40
+02
+d7
+58
+00
+00
+00
+60
+01
+4c
+04
+20
+40
+3c
+ab
+20
+00
+07
+d0
+68
+00
+cc
+04
+c0
+7f
+82
+7d
+20
+40
+02
+70
+24
+37
+82
+e0
+20
+40
+02
+6b
+79
+20
+00
+23
+70
+0b
+7d
+3c
+20
+20
+7c
+27
+70
+0d
+37
+ff
+68
+00
+cb
+e2
+60
+00
+8d
+38
+68
+02
+4c
+06
+60
+02
+0d
+39
+d8
+40
+00
+06
+da
+20
+0d
+37
+20
+40
+02
+e5
+20
+20
+03
+05
+68
+01
+4c
+04
+1f
+e0
+fe
+01
+60
+01
+4c
+04
+20
+40
+03
+24
+20
+20
+02
+cd
+60
+08
+cb
+e1
+18
+42
+72
+00
+d8
+a0
+0c
+d5
+1a
+22
+0c
+00
+20
+20
+7e
+45
+68
+00
+8c
+b4
+1f
+e9
+7e
+00
+60
+00
+cb
+df
+20
+60
+00
+00
+68
+08
+cc
+3c
+58
+00
+4c
+2b
+98
+40
+8a
+00
+1a
+22
+7e
+00
+e0
+a0
+80
+00
+18
+40
+84
+01
+18
+41
+04
+07
+60
+08
+cc
+3c
+20
+60
+00
+00
+60
+02
+4c
+00
+da
+20
+00
+00
+df
+20
+00
+04
+d8
+c0
+4c
+00
+e8
+c0
+80
+00
+9a
+20
+a2
+00
+c2
+00
+02
+fb
+1a
+22
+7e
+00
+60
+01
+4c
+16
+68
+00
+cc
+16
+68
+08
+cc
+17
+98
+40
+fe
+00
+60
+00
+cc
+18
+20
+60
+00
+00
+68
+00
+cb
+e1
+1f
+e0
+fe
+02
+60
+00
+cb
+e3
+68
+00
+cb
+e2
+60
+00
+8c
+f5
+68
+00
+cb
+e1
+1f
+e9
+fe
+00
+68
+08
+cb
+e0
+18
+41
+04
+03
+18
+43
+84
+00
+98
+41
+fe
+00
+68
+08
+cc
+0a
+98
+40
+fe
+00
+e0
+a0
+80
+00
+68
+00
+cb
+ef
+c0
+ff
+83
+17
+68
+00
+cb
+e2
+e0
+a0
+80
+00
+68
+00
+cb
+e1
+98
+00
+72
+00
+68
+00
+cb
+e2
+c0
+00
+83
+22
+d8
+c0
+0c
+d5
+20
+40
+7e
+45
+68
+00
+8c
+d5
+c0
+01
+83
+20
+20
+60
+00
+00
+70
+0c
+d5
+02
+20
+60
+00
+00
+d8
+c0
+0c
+d6
+20
+20
+7e
+45
+68
+08
+cb
+ea
+20
+40
+03
+2a
+18
+40
+84
+01
+18
+41
+04
+03
+60
+08
+cb
+ea
+20
+60
+00
+00
+68
+00
+cc
+00
+1f
+e1
+7e
+03
+1f
+ef
+a2
+04
+58
+00
+4b
+f0
+9a
+20
+fe
+00
+98
+40
+8c
+00
+e8
+c0
+80
+00
+60
+00
+cb
+e9
+20
+60
+00
+00
+78
+44
+fc
+00
+78
+43
+fc
+00
+58
+55
+55
+55
+98
+00
+1e
+00
+68
+00
+cb
+e9
+1f
+ed
+84
+00
+79
+20
+04
+01
+18
+43
+1c
+00
+20
+60
+00
+00
+20
+40
+03
+33
+78
+26
+fc
+00
+78
+30
+fc
+00
+78
+50
+7c
+00
+78
+28
+7c
+00
+68
+01
+4b
+e4
+98
+00
+36
+00
+37
+c1
+84
+00
+24
+2c
+03
+76
+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
+cc
+19
+68
+08
+cc
+18
+98
+46
+7c
+00
+24
+22
+83
+76
+09
+80
+00
+08
+19
+89
+7e
+00
+60
+00
+8c
+b3
+68
+00
+8c
+b3
+68
+08
+cb
+e2
+a8
+40
+0e
+00
+24
+20
+83
+76
+09
+80
+00
+08
+19
+89
+7e
+00
+e0
+a0
+80
+00
+1f
+e9
+7e
+00
+1f
+e1
+72
+1f
+20
+22
+83
+60
+09
+80
+00
+08
+19
+89
+7e
+00
+e0
+a0
+80
+00
+c2
+00
+03
+5c
+18
+a2
+22
+00
+09
+80
+00
+08
+19
+89
+7e
+00
+60
+00
+cc
+2a
+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
+03
+76
+78
+37
+fc
+00
+68
+00
+80
+17
+1f
+e0
+a2
+00
+20
+40
+3a
+b6
+78
+46
+fc
+00
+20
+40
+3a
+7a
+68
+00
+cc
+2a
+1f
+e2
+22
+00
+20
+20
+02
+ee
+78
+4d
+fc
+00
+78
+45
+fc
+00
+20
+20
+37
+5c
+20
+40
+3a
+7a
+68
+08
+cb
+e9
+20
+20
+3a
+91
+20
+40
+53
+d2
+68
+02
+4c
+00
+98
+00
+12
+00
+20
+40
+03
+33
+20
+40
+03
+79
+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
+cc
+18
+08
+00
+86
+08
+68
+00
+cb
+e3
+98
+00
+72
+00
+d8
+c0
+0c
+f5
+e8
+c0
+80
+00
+08
+00
+86
+08
+c2
+00
+03
+92
+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
+20
+3a
+7a
+df
+e0
+aa
+55
+f1
+2d
+02
+05
+e5
+02
+02
+ab
+e8
+64
+80
+f8
+e9
+33
+e8
+33
+60
+11
+04
+60
+f0
+ed
+33
+ec
+33
+70
+09
+e8
+fc
+e9
+fd
+ea
+fe
+eb
+ff
+22
+04
+60
+de
+d3
+eb
+9f
+ea
+9e
+e9
+9d
+e8
+c2
+e7
+8c
+f0
+c2
+f7
+95
+f0
+40
+0c
+e8
+cc
+f8
+e9
+cd
+f9
+ea
+ce
+fa
+eb
+cf
+fb
+12
+02
+76
+85
+d0
+f0
+58
+04
+70
+03
+20
+d5
+b3
+e8
+04
+70
+07
+50
+02
+b2
+d5
+02
+02
+b5
+92
+d5
+ec
+04
+60
+f7
+e4
+cc
+c0
+e0
+c3
+98
+f8
+60
+3b
+94
+18
+60
+08
+40
+0d
+d0
+e0
+fb
+02
+02
+8d
+e4
+fb
+fa
+c9
+fc
+80
+28
+e8
+30
+e4
+06
+e4
+c9
+fb
+e4
+ca
+fc
+e8
+30
+e3
+05
+e4
+c9
+ca
+cb
+fc
+e8
+54
+07
+60
+10
+f8
+c3
+e9
+13
+f9
+ea
+13
+fa
+eb
+13
+fb
+ec
+13
+fc
+d8
+f1
+30
+f5
+2f
+c3
+e4
+9c
+fc
+ef
+9b
+ff
+ee
+9a
+fe
+ed
+99
+fd
+d0
+e0
+fb
+ef
+4e
+4d
+4c
+70
+12
+22
+db
+03
+02
+02
+b2
+ec
+2c
+fc
+ef
+33
+ff
+ee
+33
+fe
+ed
+33
+fd
+ed
+30
+e7
+eb
+02
+02
+8d
+ef
+2b
+ff
+ee
+3a
+fe
+ed
+39
+fd
+d0
+e0
+fb
+50
+13
+0b
+bb
+00
+03
+02
+02
+b5
+ed
+13
+fd
+ee
+13
+fe
+ef
+13
+ff
+ec
+13
+fc
+02
+02
+8d
+ec
+4d
+60
+11
+e8
+49
+70
+17
+ed
+33
+ec
+33
+04
+60
+0d
+e4
+fc
+ff
+fe
+fd
+22
+e9
+33
+e8
+33
+04
+70
+f8
+02
+02
+ab
+12
+02
+76
+58
+04
+60
+09
+e4
+cc
+24
+81
+50
+06
+28
+50
+09
+02
+02
+b5
+28
+40
+03
+02
+02
+b2
+c0
+e0
+eb
+4a
+70
+44
+b9
+80
+06
+d0
+e0
+fb
+02
+02
+a1
+ef
+4e
+70
+1c
+bd
+80
+08
+eb
+ff
+ea
+fe
+e9
+fd
+80
+eb
+e9
+8d
+f0
+a4
+fe
+e5
+f0
+02
+01
+e4
+e9
+cd
+f9
+ea
+fe
+eb
+ff
+ef
+89
+f0
+a4
+fc
+e5
+f0
+ce
+89
+f0
+a4
+2e
+ff
+e4
+35
+f0
+cd
+89
+f0
+a4
+2d
+fe
+e4
+35
+f0
+80
+67
+ef
+4e
+70
+05
+bd
+80
+d7
+80
+c3
+ef
+8b
+f0
+a4
+ac
+f0
+ee
+8b
+f0
+a4
+2c
+fc
+e4
+35
+f0
+f8
+ef
+8a
+f0
+a4
+2c
+e5
+f0
+38
+fc
+e4
+33
+cb
+8d
+f0
+a4
+2c
+fc
+e5
+f0
+3b
+f8
+ee
+8a
+f0
+a4
+2c
+fc
+e5
+f0
+38
+f8
+e4
+33
+cf
+89
+f0
+a4
+2c
+fc
+e5
+f0
+38
+cf
+34
+00
+ce
+89
+f0
+a4
+2f
+ff
+e5
+f0
+3e
+fe
+e4
+33
+c9
+8d
+f0
+a4
+2e
+fe
+e5
+f0
+39
+cd
+8a
+f0
+a4
+2f
+ff
+e5
+f0
+3e
+fe
+e4
+3d
+fd
+33
+d0
+e0
+fb
+50
+07
+0b
+bb
+00
+0f
+02
+02
+b5
+ec
+2c
+fc
+ef
+33
+ff
+ee
+33
+fe
+ed
+33
+fd
+02
+02
+8d
+75
+f0
+20
+80
+0e
+75
+f0
+10
+80
+05
+75
+f0
+08
+7d
+00
+7e
+00
+7f
+00
+33
+92
+d5
+30
+d5
+03
+12
+05
+5d
+ec
+33
+40
+10
+ef
+33
+ff
+ee
+33
+fe
+ed
+33
+fd
+ec
+33
+fc
+d5
+f0
+ed
+22
+e5
+f0
+24
+7e
+a2
+d5
+13
+cc
+92
+e7
+cd
+ce
+ff
+22
+ed
+d2
+e7
+cd
+33
+ec
+33
+92
+d5
+24
+81
+40
+06
+e4
+ff
+fe
+fd
+fc
+22
+fc
+e4
+cf
+ce
+cd
+cc
+24
+e0
+50
+11
+74
+ff
+80
+ed
+c3
+cc
+13
+cc
+cd
+13
+cd
+ce
+13
+ce
+cf
+13
+cf
+04
+70
+f0
+30
+d5
+de
+02
+05
+5d
+e9
+d2
+e7
+c9
+33
+e8
+33
+f8
+92
+d5
+ed
+d2
+e7
+cd
+33
+ec
+33
+fc
+50
+02
+b2
+d5
+22
+ec
+30
+e7
+10
+0f
+bf
+00
+0c
+0e
+be
+00
+08
+0d
+bd
+00
+04
+0b
+eb
+60
+14
+a2
+d5
+eb
+13
+fc
+ed
+92
+e7
+fd
+22
+74
+ff
+fc
+fd
+fe
+ff
+22
+e4
+80
+f8
+a2
+d5
+74
+ff
+13
+fc
+7d
+80
+e4
+80
+ef
+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
+03
+10
+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
+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
+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
+75
+f0
+08
+75
+82
+00
+ef
+2f
+ff
+ee
+33
+fe
+cd
+33
+cd
+cc
+33
+cc
+c5
+82
+33
+c5
+82
+9b
+ed
+9a
+ec
+99
+e5
+82
+98
+40
+0c
+f5
+82
+ee
+9b
+fe
+ed
+9a
+fd
+ec
+99
+fc
+0f
+d5
+f0
+d6
+e4
+ce
+fb
+e4
+cd
+fa
+e4
+cc
+f9
+a8
+82
+22
+b8
+00
+c1
+b9
+00
+59
+ba
+00
+2d
+ec
+8b
+f0
+84
+cf
+ce
+cd
+fc
+e5
+f0
+cb
+f9
+78
+18
+ef
+2f
+ff
+ee
+33
+fe
+ed
+33
+fd
+ec
+33
+fc
+eb
+33
+fb
+10
+d7
+03
+99
+40
+04
+eb
+99
+fb
+0f
+d8
+e5
+e4
+f9
+fa
+22
+78
+18
+ef
+2f
+ff
+ee
+33
+fe
+ed
+33
+fd
+ec
+33
+fc
+c9
+33
+c9
+10
+d7
+05
+9b
+e9
+9a
+40
+07
+ec
+9b
+fc
+e9
+9a
+f9
+0f
+d8
+e0
+e4
+c9
+fa
+e4
+cc
+fb
+22
+75
+f0
+10
+ef
+2f
+ff
+ee
+33
+fe
+ed
+33
+fd
+cc
+33
+cc
+c8
+33
+c8
+10
+d7
+07
+9b
+ec
+9a
+e8
+99
+40
+0a
+ed
+9b
+fd
+ec
+9a
+fc
+e8
+99
+f8
+0f
+d5
+f0
+da
+e4
+cd
+fb
+e4
+cc
+fa
+e4
+c8
+f9
+22
+c3
+e4
+9f
+ff
+e4
+9e
+fe
+e4
+9d
+fd
+e4
+9c
+fc
+22
+eb
+9f
+f5
+f0
+ea
+9e
+42
+f0
+e9
+9d
+42
+f0
+e8
+9c
+45
+f0
+22
+ec
+f0
+a3
+ed
+f0
+a3
+ee
+f0
+a3
+ef
+f0
+22
+a8
+82
+85
+83
+f0
+d0
+83
+d0
+82
+12
+05
+9f
+12
+05
+9f
+12
+05
+9f
+12
+05
+9f
+e4
+73
+e4
+93
+a3
+c5
+83
+c5
+f0
+c5
+83
+c8
+c5
+82
+c8
+f0
+a3
+c5
+83
+c5
+f0
+c5
+83
+c8
+c5
+82
+c8
+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
+06
+2c
+02
+0f
+f0
+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
+06
+71
+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
+4e
+02
+ff
+0a
+45
+00
+00
+00
+ff
+28
+65
+ff
+2a
+2d
+00
+00
+00
+ff
+27
+b4
+00
+1a
+08
+09
+0a
+0b
+0c
+0d
+0e
+19
+18
+17
+12
+11
+10
+0f
+00
+00
+00
+00
+00
+00
+29
+00
+00
+00
+39
+00
+00
+00
+2b
+14
+1a
+04
+00
+2c
+1d
+e2
+00
+1e
+1f
+00
+e1
+00
+00
+00
+00
+20
+00
+e3
+16
+00
+00
+00
+00
+21
+00
+00
+08
+00
+00
+00
+00
+22
+00
+00
+09
+00
+00
+00
+00
+23
+1c
+00
+1b
+00
+00
+00
+00
+24
+18
+0b
+05
+11
+e4
+00
+00
+25
+0c
+0d
+10
+65
+87
+00
+00
+26
+12
+0e
+07
+36
+37
+4a
+00
+27
+13
+0f
+0a
+e6
+38
+4d
+00
+2d
+2f
+33
+17
+7f
+06
+4b
+00
+2e
+30
+34
+15
+00
+64
+4e
+00
+49
+28
+31
+19
+e5
+4d
+52
+00
+2a
+4c
+32
+e0
+50
+51
+4f
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+01
+01
+00
+90
+4c
+c5
+e0
+b4
+03
+03
+7f
+01
+22
+7f
+00
+22
+90
+4d
+f4
+e0
+64
+02
+60
+02
+e1
+dd
+90
+4c
+f9
+e0
+60
+09
+d2
+06
+7f
+1f
+12
+0b
+60
+80
+07
+c2
+06
+7f
+1f
+12
+0b
+60
+90
+4c
+e9
+e0
+70
+67
+90
+4c
+ee
+e0
+70
+61
+90
+4d
+05
+e0
+70
+03
+12
+26
+6a
+90
+4c
+d5
+e0
+b4
+02
+05
+12
+0e
+e7
+80
+2e
+90
+4c
+d5
+e0
+b4
+01
+14
+90
+4c
+f7
+e0
+70
+21
+90
+4c
+e2
+74
+18
+f0
+90
+4c
+f7
+74
+01
+f0
+80
+13
+90
+4c
+f7
+e0
+b4
+01
+0c
+e4
+f0
+90
+4c
+e2
+f0
+d2
+01
+7f
+1c
+f1
+de
+f1
+3d
+ef
+60
+13
+90
+4c
+b7
+e0
+30
+e1
+06
+c2
+01
+7f
+1d
+80
+13
+d2
+01
+7f
+1d
+80
+0d
+d2
+01
+7f
+1d
+80
+07
+d2
+01
+7f
+1d
+f1
+de
+22
+ef
+f4
+60
+0d
+7b
+01
+7a
+80
+79
+74
+a2
+01
+92
+00
+12
+22
+df
+22
+e4
+ff
+90
+4c
+ee
+e0
+60
+01
+22
+90
+4c
+c5
+e0
+64
+03
+60
+1c
+90
+4c
+ef
+e0
+70
+1d
+74
+0a
+f0
+a3
+e0
+70
+16
+90
+4d
+f4
+e0
+b4
+02
+0f
+7f
+09
+11
+25
+7f
+01
+80
+07
+e4
+90
+4c
+eb
+f0
+7f
+01
+22
+90
+4e
+af
+ef
+f0
+24
+f7
+60
+09
+14
+60
+5e
+24
+02
+60
+02
+01
+c8
+e4
+90
+4c
+f0
+f0
+7b
+01
+7a
+4c
+79
+00
+7d
+04
+fc
+7f
+f0
+7e
+7f
+12
+11
+a3
+7f
+0a
+51
+2d
+e4
+90
+4e
+01
+f0
+90
+4c
+00
+e0
+f4
+70
+21
+a3
+e0
+b4
+ff
+1c
+a3
+e0
+b4
+ff
+17
+a3
+e0
+b4
+ff
+12
+90
+4c
+00
+74
+0f
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+90
+4e
+01
+74
+01
+f0
+7f
+21
+11
+ce
+90
+4c
+c5
+74
+02
+f0
+e4
+a3
+f0
+90
+4c
+ed
+f0
+22
+e4
+90
+4c
+f0
+f0
+31
+8b
+ef
+60
+09
+90
+4e
+af
+e0
+90
+4c
+ed
+f0
+22
+90
+4c
+c5
+e0
+64
+01
+60
+18
+7f
+23
+11
+ce
+90
+4c
+c5
+74
+01
+f0
+e4
+a3
+f0
+90
+4c
+ee
+74
+78
+f0
+e4
+90
+4c
+e9
+f0
+e4
+90
+4c
+ed
+f0
+22
+e4
+90
+4c
+ed
+f0
+22
+90
+4e
+8d
+ef
+f0
+78
+8e
+7c
+4e
+7d
+01
+7b
+ff
+7a
+07
+79
+3a
+7e
+00
+7f
+03
+12
+03
+90
+90
+4e
+8d
+e0
+90
+4e
+90
+f0
+7b
+01
+7a
+4e
+79
+8e
+7d
+03
+90
+4e
+65
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+a3
+ed
+f0
+90
+4b
+9c
+e0
+ff
+a3
+e0
+90
+4e
+69
+cf
+f0
+a3
+ef
+f0
+90
+4b
+9a
+e0
+fe
+a3
+e0
+ff
+90
+4b
+9c
+e0
+fc
+a3
+e0
+fd
+7b
+64
+12
+2b
+b6
+90
+4e
+68
+e0
+fe
+ef
+c3
+9e
+40
+e1
+90
+4e
+68
+e0
+ff
+14
+f0
+ef
+60
+3f
+90
+4e
+65
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+04
+79
+a9
+f0
+fa
+12
+03
+b6
+ff
+90
+4e
+69
+e4
+75
+f0
+01
+12
+04
+79
+85
+f0
+82
+f5
+83
+ef
+f0
+90
+4e
+69
+e0
+fe
+a3
+e0
+ff
+be
+4b
+c6
+bf
+36
+c3
+90
+4e
+69
+74
+4a
+f0
+a3
+74
+a0
+f0
+80
+b7
+90
+4e
+69
+e0
+ff
+a3
+e0
+90
+4b
+9c
+cf
+f0
+a3
+ef
+f0
+22
+90
+4c
+c5
+e0
+ff
+64
+03
+60
+04
+ef
+b4
+02
+07
+7f
+22
+11
+ce
+7f
+01
+22
+7f
+00
+22
+90
+4c
+ce
+e0
+30
+e1
+3d
+90
+4c
+d0
+e0
+c3
+94
+fa
+50
+03
+e0
+04
+f0
+90
+4c
+d0
+e0
+64
+b4
+70
+36
+90
+4d
+eb
+e0
+04
+f0
+e0
+d3
+94
+02
+50
+07
+e4
+90
+4c
+d0
+f0
+80
+23
+90
+4d
+eb
+e0
+b4
+03
+1c
+90
+4d
+e4
+74
+01
+f0
+e4
+90
+4c
+d0
+f0
+d1
+e7
+80
+0d
+e4
+90
+4d
+eb
+f0
+90
+4d
+e4
+f0
+90
+4c
+d0
+f0
+90
+4c
+ce
+e0
+30
+e4
+2d
+90
+4c
+ea
+74
+0a
+f0
+90
+4c
+d1
+e0
+c3
+94
+fa
+50
+03
+e0
+04
+f0
+90
+4c
+d1
+e0
+b4
+06
+19
+90
+4c
+c3
+e0
+ff
+60
+03
+b4
+fe
+0f
+31
+8b
+7f
+0a
+51
+2d
+7f
+0a
+01
+25
+e4
+90
+4c
+d1
+f0
+22
+ef
+d3
+94
+00
+40
+11
+e4
+fd
+fc
+0d
+bd
+00
+01
+0c
+bc
+04
+f8
+bd
+a6
+f5
+1f
+80
+e9
+22
+90
+4e
+b5
+ef
+f0
+24
+d0
+60
+5d
+14
+60
+65
+14
+70
+02
+41
+f4
+14
+60
+0a
+24
+f7
+60
+59
+24
+0d
+60
+02
+61
+20
+f1
+e9
+12
+27
+86
+7b
+01
+7a
+4c
+79
+00
+7d
+04
+7c
+00
+7f
+f0
+7e
+7f
+12
+11
+a3
+7f
+0a
+51
+2d
+90
+4c
+c1
+e0
+f9
+7a
+00
+7b
+00
+7d
+01
+7c
+00
+7f
+f8
+7e
+7f
+12
+11
+a3
+7f
+0a
+51
+2d
+d2
+06
+7f
+16
+71
+60
+90
+4e
+79
+74
+01
+f0
+a3
+f0
+fb
+fd
+ff
+71
+21
+02
+10
+05
+f1
+f2
+12
+22
+65
+e4
+90
+4d
+05
+f0
+22
+90
+4c
+c5
+74
+03
+f0
+e4
+a3
+f0
+f1
+e3
+e4
+90
+4c
+ee
+f0
+90
+4c
+eb
+f0
+90
+4c
+c0
+74
+fe
+f0
+90
+4c
+c3
+f0
+90
+4d
+47
+74
+03
+f0
+90
+4d
+ef
+74
+0a
+f0
+90
+4e
+b5
+e0
+64
+31
+70
+38
+90
+4e
+01
+f0
+90
+4c
+bf
+04
+f0
+02
+10
+10
+e4
+90
+4c
+c5
+f0
+a3
+f0
+90
+4c
+e3
+f0
+a3
+f0
+90
+4c
+eb
+04
+f0
+90
+4c
+ed
+e0
+60
+09
+f1
+e3
+90
+4c
+ed
+e0
+ff
+01
+25
+90
+4c
+ec
+e0
+b4
+01
+04
+e4
+f0
+d1
+e7
+22
+90
+4e
+77
+ed
+f0
+a3
+eb
+f0
+ef
+24
+ff
+92
+06
+7f
+13
+71
+60
+90
+4e
+77
+e0
+24
+ff
+92
+06
+7f
+14
+71
+60
+90
+4e
+78
+e0
+24
+ff
+92
+06
+7f
+15
+71
+60
+90
+4e
+79
+e0
+24
+ff
+92
+06
+7f
+1e
+71
+60
+90
+4e
+7a
+e0
+24
+ff
+92
+06
+7f
+1b
+ac
+07
+ec
+f4
+60
+17
+af
+04
+d2
+04
+12
+22
+ce
+af
+04
+a2
+06
+92
+01
+12
+07
+de
+af
+04
+c2
+02
+12
+22
+ac
+22
+90
+4d
+01
+e0
+04
+f0
+70
+06
+90
+4d
+00
+e0
+04
+f0
+90
+4c
+fe
+e0
+fd
+7c
+00
+90
+4d
+00
+e0
+fe
+a3
+e0
+ff
+12
+04
+0e
+ed
+4c
+60
+02
+c1
+c6
+90
+4c
+fd
+e0
+b4
+08
+00
+40
+02
+c1
+ba
+90
+0b
+b6
+f8
+28
+28
+73
+02
+0b
+ce
+02
+0e
+c6
+02
+0b
+db
+02
+0c
+69
+02
+0c
+f3
+02
+0d
+4f
+02
+0d
+ab
+02
+0e
+34
+90
+4e
+79
+74
+01
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+70
+0f
+04
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+7f
+01
+61
+21
+90
+4c
+ff
+e0
+b4
+01
+11
+74
+02
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+7d
+01
+7f
+01
+61
+21
+90
+4c
+ff
+e0
+b4
+02
+12
+74
+03
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+7b
+01
+7d
+01
+7f
+01
+61
+21
+90
+4c
+ff
+e0
+b4
+03
+14
+74
+04
+f0
+90
+4e
+79
+74
+01
+f0
+e4
+a3
+f0
+7b
+01
+7d
+01
+7f
+01
+61
+21
+90
+4c
+ff
+e0
+b4
+04
+10
+74
+05
+f0
+90
+4e
+79
+74
+01
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+64
+05
+60
+02
+c1
+c6
+f0
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+70
+10
+04
+f0
+e4
+90
+4e
+79
+f0
+a3
+04
+f0
+e4
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+01
+10
+74
+02
+f0
+90
+4e
+79
+14
+f0
+a3
+f0
+e4
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+02
+11
+74
+03
+f0
+90
+4e
+79
+74
+01
+f0
+a3
+f0
+fb
+e4
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+03
+11
+74
+04
+f0
+90
+4e
+79
+74
+01
+f0
+a3
+f0
+fb
+fd
+e4
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+04
+10
+74
+05
+f0
+90
+4e
+79
+74
+01
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+64
+05
+60
+02
+c1
+c6
+f0
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+70
+0f
+04
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+7b
+01
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+01
+11
+74
+02
+f0
+90
+4e
+79
+14
+f0
+e4
+a3
+f0
+fb
+7d
+01
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+02
+12
+74
+03
+f0
+e4
+90
+4e
+79
+f0
+a3
+04
+f0
+e4
+fb
+fd
+7f
+01
+61
+21
+90
+4c
+ff
+e0
+64
+03
+60
+02
+c1
+c6
+f0
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+70
+11
+04
+f0
+e4
+90
+4e
+79
+f0
+a3
+04
+f0
+e4
+fb
+fd
+7f
+01
+61
+21
+90
+4c
+ff
+e0
+b4
+01
+11
+74
+02
+f0
+90
+4e
+79
+14
+f0
+e4
+a3
+f0
+fb
+7d
+01
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+02
+10
+74
+03
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+7b
+01
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+64
+03
+60
+02
+c1
+c6
+f0
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+70
+0f
+04
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+7f
+01
+61
+21
+90
+4c
+ff
+e0
+b4
+01
+10
+74
+02
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+7d
+01
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+02
+10
+74
+03
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+7b
+01
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+03
+11
+74
+04
+f0
+90
+4e
+79
+74
+01
+f0
+e4
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+04
+11
+74
+05
+f0
+e4
+90
+4e
+79
+f0
+a3
+04
+f0
+e4
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+64
+05
+60
+02
+c1
+c6
+f0
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+70
+10
+04
+f0
+e4
+90
+4e
+79
+f0
+a3
+04
+f0
+e4
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+01
+10
+74
+02
+f0
+90
+4e
+79
+14
+f0
+e4
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+02
+10
+74
+03
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+7b
+01
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+03
+10
+74
+04
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+7d
+01
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+04
+10
+74
+05
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+7f
+01
+61
+21
+90
+4c
+ff
+e0
+64
+05
+70
+18
+f0
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+71
+21
+22
+f1
+56
+d2
+06
+7f
+1d
+71
+60
+d2
+06
+7f
+1f
+71
+60
+d2
+06
+7f
+1c
+71
+60
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4d
+05
+74
+01
+f0
+e4
+90
+4c
+e6
+f0
+a3
+f0
+a3
+f0
+90
+4c
+b7
+74
+f0
+f0
+90
+4d
+e8
+f0
+e4
+90
+4c
+fd
+f0
+90
+4c
+f7
+f0
+90
+4c
+e2
+f0
+90
+4b
+ef
+74
+ff
+f0
+90
+4d
+3d
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+80
+a8
+90
+4d
+f4
+e0
+64
+02
+70
+2e
+90
+4c
+ee
+e0
+60
+28
+f1
+56
+c2
+06
+7f
+16
+71
+60
+90
+4c
+ee
+e0
+30
+e0
+0d
+90
+4e
+79
+74
+01
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+71
+21
+22
+90
+4c
+e9
+e0
+70
+0e
+90
+4c
+fa
+e0
+b4
+01
+07
+e4
+f0
+90
+41
+31
+04
+f0
+90
+80
+51
+e0
+44
+20
+f0
+90
+80
+82
+e0
+54
+7f
+f0
+90
+80
+85
+e0
+54
+bf
+f0
+22
+12
+2a
+e6
+12
+2c
+60
+12
+17
+4d
+12
+10
+10
+12
+07
+4a
+90
+4d
+76
+e0
+60
+02
+d1
+e7
+90
+0b
+7e
+e0
+14
+60
+0f
+24
+fe
+70
+e1
+12
+23
+40
+f1
+56
+d1
+c9
+f1
+d6
+80
+fe
+90
+4c
+ea
+e0
+70
+0c
+90
+4c
+ec
+e0
+70
+06
+90
+4c
+f8
+e0
+60
+05
+12
+2d
+2c
+80
+bf
+12
+23
+40
+90
+4d
+05
+e0
+60
+02
+d1
+c7
+f1
+d6
+80
+b0
+80
+ae
+22
+e4
+90
+0b
+7f
+f0
+90
+0b
+7e
+f0
+7f
+01
+41
+2d
+e4
+90
+4c
+f0
+f0
+22
+f1
+f2
+12
+22
+65
+c1
+c9
+80
+8e
+90
+80
+91
+74
+0d
+f0
+a3
+04
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+14
+f0
+22
+90
+4d
+f4
+74
+02
+f0
+7f
+08
+02
+08
+25
+90
+4c
+bf
+e0
+60
+3d
+90
+4c
+e0
+e0
+fe
+a3
+e0
+ff
+c3
+90
+4c
+96
+e0
+9f
+90
+4c
+95
+e0
+9e
+40
+28
+c2
+01
+7f
+ff
+12
+07
+de
+7b
+01
+7a
+4c
+79
+00
+7d
+04
+7c
+00
+7f
+f0
+7e
+7f
+11
+54
+d2
+01
+7f
+ff
+12
+07
+de
+7f
+0a
+12
+0a
+2d
+e4
+90
+4c
+bf
+f0
+22
+90
+4e
+3f
+ee
+f0
+a3
+ef
+f0
+a3
+ec
+f0
+a3
+ed
+f0
+a3
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+4e
+41
+e0
+70
+02
+a3
+e0
+70
+02
+21
+01
+90
+4e
+3f
+e0
+fe
+a3
+e0
+ff
+44
+0f
+24
+01
+fd
+e4
+3e
+fc
+c3
+ed
+9f
+ff
+ec
+9e
+fe
+90
+4e
+46
+f0
+a3
+ef
+f0
+90
+4e
+41
+e0
+fc
+a3
+e0
+fd
+d3
+9f
+ec
+9e
+40
+0a
+90
+4e
+46
+e0
+fe
+a3
+e0
+ff
+80
+04
+ae
+04
+af
+05
+90
+4e
+46
+ee
+f0
+fc
+a3
+ef
+f0
+fd
+c3
+90
+4e
+42
+e0
+9d
+f0
+90
+4e
+41
+e0
+9c
+f0
+90
+4e
+3f
+e0
+fe
+a3
+e0
+ff
+90
+4e
+43
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+31
+02
+7f
+0a
+12
+0a
+2d
+90
+4e
+46
+e0
+fe
+a3
+e0
+ff
+90
+4e
+44
+ee
+8f
+f0
+12
+04
+63
+90
+4e
+40
+e0
+2f
+f0
+90
+4e
+3f
+e0
+3e
+f0
+01
+6b
+22
+90
+4e
+5e
+ee
+f0
+a3
+ef
+f0
+90
+4e
+62
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+4e
+60
+ec
+f0
+a3
+ed
+f0
+a3
+e0
+f9
+a3
+e0
+fa
+a3
+e0
+90
+4e
+4b
+c9
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+a3
+ec
+f0
+a3
+ed
+f0
+7b
+01
+7a
+0b
+79
+86
+12
+2d
+3f
+90
+0b
+83
+74
+a0
+f0
+90
+4e
+5e
+e0
+ff
+a3
+e0
+90
+0b
+84
+cf
+f0
+a3
+ef
+f0
+90
+4e
+61
+e0
+24
+03
+fd
+90
+4e
+60
+e0
+34
+00
+fc
+ed
+fa
+ec
+ff
+ea
+fe
+ef
+90
+80
+98
+ee
+f0
+a3
+ef
+f0
+7a
+0b
+79
+83
+7e
+0b
+7f
+83
+74
+83
+fc
+74
+0b
+ff
+ec
+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
+80
+ec
+f0
+a3
+ed
+f0
+a3
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+80
+98
+74
+04
+f0
+a3
+e4
+f0
+90
+0c
+af
+74
+a0
+f0
+a3
+ee
+f0
+a3
+ef
+f0
+90
+0c
+b2
+74
+a1
+f0
+7a
+0c
+79
+af
+7e
+0c
+7f
+af
+74
+af
+fc
+74
+0c
+ff
+ec
+fe
+ef
+90
+80
+9a
+ee
+f0
+a3
+ef
+f0
+90
+4e
+80
+e0
+fc
+a3
+e0
+fa
+ec
+ff
+ea
+fe
+ef
+90
+80
+9e
+ee
+f0
+a3
+ef
+f0
+7a
+0b
+79
+83
+7e
+0b
+7f
+83
+74
+83
+fc
+74
+0b
+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
+31
+9b
+90
+4e
+82
+e0
+a3
+e0
+fa
+a3
+e0
+ae
+02
+ff
+7b
+01
+7a
+0b
+79
+83
+90
+4e
+80
+e0
+a3
+e0
+90
+4e
+70
+f0
+90
+4e
+6b
+ee
+f0
+a3
+ef
+f0
+a3
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+4e
+70
+e0
+ff
+14
+f0
+ef
+60
+27
+90
+4e
+6d
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+04
+79
+a9
+f0
+fa
+12
+03
+b6
+ff
+90
+4e
+6b
+e4
+75
+f0
+01
+12
+04
+79
+85
+f0
+82
+f5
+83
+ef
+f0
+80
+cf
+22
+90
+4e
+71
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+e4
+a3
+f0
+a3
+f0
+90
+4d
+ea
+f0
+90
+4e
+75
+f0
+90
+4e
+75
+e0
+ff
+c3
+94
+05
+50
+2c
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+7e
+00
+e9
+2f
+f9
+ee
+3a
+fa
+12
+03
+b6
+b4
+7f
+06
+90
+4d
+ea
+74
+01
+f0
+90
+4e
+75
+e0
+04
+f0
+80
+ca
+90
+4d
+ea
+e0
+90
+4d
+f3
+f0
+90
+4e
+71
+e0
+a3
+e0
+fa
+a3
+e0
+4a
+70
+02
+a1
+a1
+90
+4d
+76
+e0
+60
+08
+e4
+f0
+90
+4d
+47
+74
+03
+f0
+90
+4d
+ef
+74
+0a
+f0
+e4
+90
+4c
+e3
+f0
+a3
+f0
+90
+4d
+05
+f0
+90
+4c
+fd
+e0
+64
+08
+60
+12
+e4
+90
+4d
+3d
+f0
+a3
+74
+48
+f0
+a3
+74
+12
+f0
+e4
+a3
+f0
+80
+10
+e4
+90
+4d
+3d
+f0
+a3
+74
+48
+f0
+a3
+74
+5d
+f0
+e4
+a3
+f0
+7b
+01
+7a
+48
+79
+00
+7d
+09
+7c
+00
+d1
+56
+7b
+01
+7a
+4d
+79
+f8
+7d
+09
+7c
+00
+d1
+56
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+90
+00
+01
+12
+03
+cf
+ff
+b4
+7f
+0a
+90
+00
+02
+12
+03
+cf
+64
+19
+60
+0e
+ef
+64
+19
+70
+23
+90
+00
+02
+12
+03
+cf
+b4
+7f
+1a
+90
+4c
+c5
+e0
+64
+01
+60
+09
+90
+4c
+ce
+e0
+44
+10
+f0
+80
+10
+90
+4c
+ce
+e0
+54
+ef
+f0
+80
+07
+90
+4c
+ce
+e0
+54
+ef
+f0
+90
+4c
+b6
+74
+01
+f0
+90
+4c
+f4
+e0
+ff
+64
+01
+70
+02
+a1
+a1
+ef
+64
+04
+70
+02
+a1
+a1
+ef
+64
+02
+70
+02
+a1
+a1
+90
+4c
+c5
+e0
+64
+03
+70
+45
+90
+4e
+75
+f0
+90
+4e
+75
+e0
+ff
+c3
+94
+05
+50
+37
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+7e
+00
+e9
+2f
+f9
+ee
+3a
+fa
+12
+03
+b6
+ff
+64
+39
+60
+09
+ef
+64
+53
+60
+04
+ef
+b4
+47
+06
+90
+4d
+47
+74
+03
+f0
+90
+4e
+75
+e0
+04
+f0
+80
+bf
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+18
+18
+90
+4d
+f7
+e0
+b4
+01
+11
+74
+02
+f0
+90
+4d
+f8
+f0
+7b
+01
+7a
+4d
+79
+f8
+7d
+03
+a1
+a2
+90
+4d
+f7
+e0
+b4
+04
+11
+74
+02
+f0
+90
+4d
+f8
+04
+f0
+7b
+01
+7a
+4d
+79
+f8
+fd
+a1
+a2
+90
+4d
+f7
+e0
+64
+03
+60
+0b
+e0
+64
+02
+70
+2f
+90
+4d
+ed
+e0
+70
+29
+e4
+90
+4d
+f7
+f0
+90
+4d
+f6
+f0
+90
+4d
+f2
+e0
+60
+0a
+e4
+f0
+90
+4d
+f8
+74
+03
+f0
+80
+06
+90
+4d
+f8
+74
+02
+f0
+7b
+01
+7a
+4d
+79
+f8
+7d
+03
+a1
+a2
+90
+4d
+ed
+e0
+70
+31
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+7d
+06
+7c
+00
+d1
+56
+7b
+01
+7a
+4d
+79
+d0
+7d
+0f
+7c
+00
+d1
+56
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+e4
+12
+03
+fc
+90
+48
+00
+74
+01
+f0
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+03
+b6
+90
+48
+01
+f0
+90
+4c
+c5
+e0
+b4
+03
+0a
+90
+4d
+47
+e0
+90
+48
+02
+f0
+80
+05
+e4
+90
+48
+02
+f0
+e4
+90
+4d
+e7
+f0
+90
+4e
+01
+e0
+70
+6f
+90
+00
+01
+12
+03
+cf
+b4
+7f
+15
+7e
+48
+7f
+03
+e9
+24
+02
+f9
+e4
+3a
+fa
+90
+4e
+70
+74
+05
+f0
+51
+50
+80
+1c
+7e
+48
+7f
+03
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+90
+4e
+70
+74
+06
+f0
+51
+50
+90
+4e
+75
+74
+03
+f0
+90
+4e
+75
+e0
+ff
+c3
+94
+09
+50
+41
+74
+00
+2f
+f5
+82
+e4
+34
+48
+f5
+83
+e0
+b4
+7f
+0f
+90
+4e
+75
+e0
+24
+00
+f5
+82
+e4
+34
+48
+f5
+83
+e4
+f0
+90
+4e
+75
+e0
+04
+f0
+80
+d1
+7e
+48
+7f
+03
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+90
+4e
+70
+74
+06
+f0
+51
+50
+7b
+01
+7a
+48
+79
+00
+7d
+09
+b1
+a2
+90
+4d
+d0
+74
+08
+f0
+7b
+01
+7a
+4d
+79
+d0
+7d
+0f
+b1
+a2
+22
+90
+4e
+26
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+a3
+ed
+f0
+e4
+ff
+90
+4e
+29
+e0
+fe
+ef
+c3
+9e
+50
+23
+90
+4e
+26
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+8f
+82
+75
+83
+00
+12
+03
+cf
+fe
+74
+2a
+2f
+f5
+82
+e4
+34
+4e
+f5
+83
+ee
+f0
+0f
+80
+d3
+12
+07
+f0
+ef
+60
+70
+90
+4c
+eb
+e0
+70
+6a
+90
+4c
+c5
+e0
+64
+03
+70
+62
+90
+4e
+2a
+e0
+64
+01
+70
+23
+74
+04
+f0
+a3
+e0
+70
+14
+90
+4e
+2d
+e0
+70
+0e
+a3
+e0
+70
+0a
+a3
+e0
+70
+06
+90
+4d
+e5
+f0
+80
+32
+90
+4d
+e5
+74
+01
+f0
+80
+2a
+90
+4e
+2a
+e0
+b4
+02
+19
+74
+05
+f0
+a3
+e0
+70
+0a
+a3
+e0
+70
+06
+90
+4d
+e5
+f0
+80
+12
+90
+4d
+e5
+74
+01
+f0
+80
+0a
+90
+4e
+2a
+e0
+b4
+03
+03
+74
+07
+f0
+7b
+01
+7a
+4e
+79
+2a
+90
+4e
+29
+e0
+fd
+f1
+d1
+22
+90
+4e
+a0
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+ed
+1d
+ae
+04
+70
+01
+1c
+4e
+60
+16
+90
+4e
+a0
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+04
+79
+a9
+f0
+fa
+e4
+12
+03
+fc
+80
+e0
+22
+7b
+01
+7a
+4c
+79
+bf
+7d
+48
+7c
+00
+d1
+56
+7b
+01
+7a
+4d
+79
+93
+7d
+14
+7c
+00
+d1
+56
+7b
+01
+7a
+4d
+79
+a8
+7d
+14
+7c
+00
+d1
+56
+7b
+01
+7a
+4d
+79
+bc
+7d
+14
+7c
+00
+d1
+56
+7b
+01
+7a
+48
+79
+00
+7d
+09
+7c
+00
+d1
+56
+7b
+01
+7a
+4d
+79
+f8
+7d
+09
+7c
+00
+d1
+56
+e4
+90
+4d
+ef
+f0
+90
+4d
+f5
+f0
+90
+4d
+f4
+f0
+90
+4d
+e5
+f0
+90
+4d
+df
+f0
+90
+4d
+eb
+f0
+90
+4d
+f7
+f0
+90
+4d
+e4
+f0
+90
+4d
+e7
+f0
+90
+4d
+ea
+f0
+90
+4d
+f3
+f0
+90
+4d
+e2
+f0
+90
+4d
+f0
+f0
+90
+4d
+f6
+f0
+90
+4c
+b7
+74
+f0
+f0
+90
+4d
+e8
+f0
+e4
+90
+4d
+38
+f0
+22
+90
+4e
+a9
+ef
+f0
+a3
+ed
+f0
+7b
+01
+7a
+48
+79
+00
+7d
+09
+7c
+00
+d1
+56
+90
+48
+00
+74
+01
+f0
+a3
+e0
+ff
+90
+4e
+a9
+e0
+fe
+ef
+4e
+90
+48
+01
+f0
+90
+4e
+aa
+e0
+90
+48
+03
+f0
+7b
+01
+7a
+48
+79
+00
+7d
+09
+a1
+a2
+90
+4c
+f4
+e0
+ff
+60
+08
+64
+03
+60
+04
+ef
+b4
+05
+03
+02
+1b
+1e
+90
+4c
+f4
+e0
+b4
+01
+0e
+a3
+e0
+ff
+e4
+fd
+f1
+13
+90
+4c
+f4
+74
+02
+f0
+22
+90
+4c
+f4
+e0
+b4
+02
+0b
+74
+03
+f0
+a3
+e0
+ff
+a3
+e0
+fd
+80
+8d
+90
+4c
+f4
+e0
+b4
+04
+27
+e4
+90
+4c
+f6
+f0
+90
+4c
+f5
+e0
+ff
+e4
+fd
+f1
+13
+e4
+90
+4c
+f5
+f0
+90
+4c
+f8
+e0
+70
+07
+90
+4c
+f4
+74
+06
+f0
+22
+90
+4c
+f4
+74
+05
+f0
+22
+90
+4c
+f4
+e0
+b4
+06
+15
+e4
+90
+4c
+f6
+f0
+90
+4c
+f5
+f0
+a3
+e0
+fd
+e4
+ff
+f1
+13
+e4
+90
+4c
+f4
+f0
+22
+90
+0b
+e7
+74
+06
+f0
+90
+4e
+b6
+ed
+f0
+e0
+fd
+90
+0b
+e8
+f0
+7e
+0b
+7f
+e9
+90
+4e
+70
+ed
+f0
+51
+50
+7b
+01
+7a
+0b
+79
+e7
+90
+4e
+b6
+e0
+24
+02
+fd
+02
+08
+f6
+ad
+07
+ac
+06
+90
+4d
+f7
+e0
+64
+02
+60
+0e
+74
+01
+f0
+90
+4d
+f8
+04
+f0
+ef
+a3
+f0
+ee
+a3
+f0
+22
+90
+4e
+85
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+e4
+a3
+f0
+f0
+90
+4e
+88
+e0
+ff
+c3
+94
+06
+40
+02
+41
+c4
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+7e
+00
+e9
+2f
+f9
+ee
+3a
+fa
+12
+03
+b6
+ff
+54
+f0
+64
+f0
+60
+09
+ef
+54
+d0
+64
+d0
+60
+02
+41
+bc
+12
+03
+b6
+fb
+b4
+f1
+09
+7f
+83
+7e
+01
+12
+17
+fd
+41
+91
+eb
+b4
+f2
+09
+7f
+cd
+7e
+00
+12
+17
+fd
+41
+91
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+f3
+07
+7f
+b7
+12
+17
+fd
+41
+91
+eb
+b4
+f4
+09
+7f
+b6
+7e
+00
+12
+17
+fd
+41
+91
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+f5
+07
+7f
+b5
+12
+17
+fd
+41
+91
+eb
+b4
+f6
+09
+7f
+ea
+7e
+00
+12
+17
+fd
+41
+91
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+f7
+07
+7f
+e9
+12
+17
+fd
+41
+91
+eb
+b4
+f8
+09
+7f
+e2
+7e
+00
+12
+17
+fd
+41
+91
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+f9
+08
+7f
+94
+0e
+12
+17
+fd
+41
+91
+eb
+b4
+fa
+09
+7f
+8a
+7e
+01
+12
+17
+fd
+41
+91
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+fb
+08
+7f
+92
+0e
+12
+17
+fd
+41
+91
+eb
+b4
+d0
+09
+7f
+2a
+7e
+02
+12
+17
+fd
+41
+91
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+d1
+09
+7f
+25
+7e
+02
+12
+17
+fd
+41
+91
+eb
+b4
+d3
+09
+7f
+26
+7e
+02
+12
+17
+fd
+41
+91
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+d2
+09
+7f
+24
+7e
+02
+12
+17
+fd
+41
+91
+eb
+b4
+d4
+09
+7f
+27
+7e
+02
+12
+17
+fd
+41
+91
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+d5
+09
+7f
+21
+7e
+02
+12
+17
+fd
+80
+7b
+eb
+b4
+d6
+09
+7f
+23
+7e
+02
+12
+17
+fd
+80
+6e
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+d7
+07
+7f
+70
+12
+17
+fd
+80
+47
+eb
+b4
+d8
+09
+7f
+6f
+7e
+00
+12
+17
+fd
+80
+3a
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fe
+b4
+dd
+06
+7f
+01
+51
+c5
+80
+14
+ee
+b4
+de
+06
+7f
+02
+51
+c5
+80
+0a
+12
+03
+b6
+b4
+df
+04
+7f
+04
+51
+c5
+90
+4d
+f7
+e0
+b4
+02
+24
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+90
+4d
+f6
+f0
+e4
+12
+03
+fc
+90
+4e
+88
+e0
+04
+f0
+01
+27
+22
+90
+4d
+f7
+e0
+64
+02
+60
+12
+74
+04
+f0
+90
+4d
+f2
+74
+01
+f0
+90
+4d
+f8
+74
+03
+f0
+a3
+ef
+f0
+22
+90
+4d
+47
+e0
+60
+37
+90
+4d
+e5
+e0
+70
+31
+90
+4c
+c5
+e0
+b4
+03
+2a
+7b
+01
+7a
+48
+79
+00
+7d
+09
+7c
+00
+12
+16
+56
+e4
+90
+4d
+f7
+f0
+90
+48
+00
+04
+f0
+90
+4d
+47
+e0
+90
+48
+02
+f0
+7b
+01
+7a
+48
+79
+00
+7d
+09
+12
+15
+a2
+22
+90
+4e
+91
+e4
+f0
+a3
+f0
+a3
+f0
+b1
+ab
+50
+25
+71
+51
+90
+4e
+91
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+4a
+70
+07
+90
+4c
+b6
+04
+f0
+80
+9e
+90
+4e
+91
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+12
+93
+22
+e4
+90
+4e
+34
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+12
+25
+0c
+7a
+4d
+79
+a8
+90
+4e
+5a
+74
+01
+f0
+a3
+74
+4d
+f0
+a3
+74
+a8
+f0
+a3
+74
+14
+f0
+7b
+01
+7a
+4d
+79
+bc
+b1
+f3
+ef
+60
+16
+7b
+01
+7a
+4d
+79
+bc
+7d
+14
+b1
+c3
+ef
+70
+09
+90
+4c
+ce
+e0
+44
+02
+f0
+80
+0c
+90
+4c
+ce
+e0
+54
+fd
+f0
+e4
+90
+4c
+d0
+f0
+e4
+90
+4e
+34
+f0
+90
+4e
+34
+e0
+ff
+90
+06
+87
+93
+70
+02
+81
+82
+74
+bc
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+90
+4e
+37
+f0
+e0
+ff
+b1
+9d
+90
+4e
+3e
+ef
+f0
+c3
+94
+02
+50
+02
+81
+6b
+e4
+90
+4e
+35
+f0
+90
+4e
+35
+e0
+ff
+c3
+94
+08
+50
+7b
+74
+01
+7e
+00
+a8
+07
+08
+80
+05
+c3
+33
+ce
+33
+ce
+d8
+f9
+ff
+90
+4e
+37
+e0
+fd
+e4
+ef
+5d
+60
+58
+e4
+90
+4e
+36
+f0
+90
+4e
+36
+e0
+ff
+90
+06
+87
+93
+60
+48
+90
+4e
+34
+e0
+fe
+ef
+6e
+60
+37
+90
+4e
+36
+e0
+24
+bc
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+fd
+7c
+00
+90
+4e
+35
+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
+60
+08
+90
+4e
+3d
+74
+01
+f0
+80
+08
+90
+4e
+36
+e0
+04
+f0
+80
+ad
+90
+4e
+35
+e0
+04
+f0
+61
+e6
+90
+4e
+37
+e0
+ff
+60
+08
+b1
+9d
+90
+4e
+3b
+e0
+2f
+f0
+90
+4e
+34
+e0
+04
+f0
+61
+b5
+90
+4e
+3b
+e0
+90
+4d
+ed
+f0
+e4
+90
+4e
+34
+f0
+90
+4e
+34
+e0
+ff
+90
+06
+87
+93
+70
+02
+a1
+71
+74
+93
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+fe
+74
+bc
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+6e
+90
+4e
+37
+f0
+90
+4e
+34
+e0
+ff
+24
+bc
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+90
+4e
+3a
+f0
+90
+4e
+37
+e0
+70
+04
+a1
+69
+a1
+69
+90
+4e
+3d
+e0
+60
+07
+7b
+00
+7a
+00
+79
+00
+22
+74
+bc
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+fe
+74
+93
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+ee
+f0
+e4
+90
+4e
+35
+f0
+90
+4e
+35
+e0
+ff
+c3
+94
+08
+50
+5a
+90
+4e
+37
+e0
+30
+e0
+3b
+90
+4e
+34
+e0
+fe
+33
+33
+33
+54
+f8
+fe
+ef
+4e
+90
+4e
+39
+f0
+a3
+e0
+ff
+90
+4e
+39
+e0
+90
+06
+9c
+93
+fd
+f1
+fc
+90
+4e
+3c
+ef
+f0
+90
+4e
+3a
+e0
+30
+e0
+09
+90
+4e
+3c
+e0
+ff
+d1
+3d
+80
+07
+90
+4e
+3c
+e0
+ff
+d1
+f6
+90
+4e
+37
+e0
+ff
+c3
+13
+f0
+90
+4e
+3a
+e0
+ff
+c3
+13
+f0
+90
+4e
+35
+e0
+04
+f0
+80
+9c
+90
+4e
+38
+74
+01
+f0
+90
+4e
+34
+e0
+04
+f0
+81
+8f
+90
+4d
+f7
+e0
+b4
+03
+0a
+90
+4d
+e7
+e0
+b4
+01
+03
+74
+02
+f0
+90
+4e
+38
+e0
+70
+07
+90
+4d
+e7
+e0
+b4
+02
+07
+7b
+01
+7a
+4e
+79
+50
+22
+7b
+00
+7a
+00
+79
+00
+22
+e4
+fe
+ef
+60
+06
+14
+5f
+ff
+0e
+80
+f7
+af
+06
+22
+90
+4b
+9c
+e0
+fe
+a3
+e0
+ff
+90
+4b
+9a
+e0
+b5
+06
+07
+a3
+e0
+b5
+07
+02
+d3
+22
+c3
+22
+90
+4e
+97
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+e4
+ff
+ef
+c3
+9d
+50
+1b
+90
+4e
+97
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+8f
+82
+75
+83
+00
+12
+03
+cf
+60
+03
+7f
+00
+22
+0f
+80
+e0
+7f
+01
+22
+90
+4e
+57
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+e4
+ff
+90
+4e
+5d
+e0
+fe
+ef
+c3
+9e
+50
+30
+90
+4e
+5a
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+8f
+82
+75
+83
+00
+12
+03
+cf
+fe
+90
+4e
+57
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+8f
+82
+75
+83
+00
+12
+03
+cf
+6e
+60
+03
+7f
+00
+22
+0f
+80
+c6
+7f
+01
+22
+e4
+fe
+fd
+f9
+fc
+ef
+c3
+94
+e0
+40
+20
+ef
+d3
+94
+e7
+50
+1a
+90
+4e
+50
+e0
+fe
+ef
+54
+07
+ff
+74
+01
+a8
+07
+08
+80
+02
+c3
+33
+d8
+fc
+4e
+90
+4e
+50
+f0
+22
+e4
+fe
+74
+51
+2e
+f5
+82
+e4
+34
+4e
+f5
+83
+e0
+60
+01
+0d
+0e
+ee
+b4
+06
+ed
+e4
+fe
+74
+51
+2e
+f5
+82
+e4
+34
+4e
+f5
+83
+e0
+b5
+07
+08
+ed
+b4
+06
+04
+79
+01
+80
+27
+74
+51
+2e
+f5
+82
+e4
+34
+4e
+f5
+83
+e0
+70
+15
+90
+4d
+f6
+e0
+6f
+60
+13
+74
+51
+2e
+f5
+82
+e4
+34
+4e
+f5
+83
+ef
+f0
+80
+05
+0e
+ee
+b4
+06
+c3
+ed
+64
+06
+70
+34
+e9
+70
+31
+ef
+d3
+94
+70
+50
+2b
+ef
+13
+13
+13
+54
+1f
+fc
+24
+d1
+f5
+82
+e4
+34
+4d
+f5
+83
+c0
+83
+c0
+82
+e0
+fe
+ef
+54
+07
+ff
+74
+01
+a8
+07
+08
+80
+02
+c3
+33
+d8
+fc
+4e
+d0
+82
+d0
+83
+f0
+22
+e4
+fe
+90
+4e
+b1
+f0
+fd
+fc
+ef
+54
+f0
+64
+f0
+60
+07
+ef
+54
+d0
+fb
+bb
+d0
+0c
+90
+4d
+f7
+e0
+b4
+02
+0b
+74
+03
+f0
+80
+06
+90
+4d
+e7
+74
+01
+f0
+ef
+c3
+94
+e0
+40
+21
+ef
+d3
+94
+e7
+50
+1b
+90
+4e
+50
+e0
+fe
+ef
+54
+07
+ff
+74
+01
+a8
+07
+08
+80
+02
+c3
+33
+d8
+fc
+f4
+5e
+90
+4e
+50
+f0
+22
+e4
+fe
+ec
+70
+21
+74
+51
+2e
+f5
+82
+e4
+34
+4e
+f5
+83
+e0
+6f
+70
+47
+ee
+b4
+05
+0b
+24
+51
+f5
+82
+e4
+34
+4e
+f5
+83
+e4
+f0
+7c
+01
+80
+34
+74
+51
+2e
+f5
+82
+e4
+34
+4e
+f5
+83
+e0
+fb
+74
+50
+2e
+f5
+82
+e4
+34
+4e
+f5
+83
+eb
+f0
+74
+51
+2e
+f5
+82
+e4
+34
+4e
+f5
+83
+e0
+60
+14
+ee
+b4
+05
+0b
+24
+51
+f5
+82
+e4
+34
+4e
+f5
+83
+e4
+f0
+0e
+ee
+b4
+06
+a3
+ef
+d3
+94
+70
+50
+2c
+ef
+13
+13
+13
+54
+1f
+fd
+24
+d1
+f5
+82
+e4
+34
+4d
+f5
+83
+c0
+83
+c0
+82
+e0
+fe
+ef
+54
+07
+ff
+74
+01
+a8
+07
+08
+80
+02
+c3
+33
+d8
+fc
+f4
+5e
+d0
+82
+d0
+83
+f0
+22
+90
+4c
+f5
+ed
+f0
+a3
+eb
+f0
+ef
+30
+e0
+12
+90
+4c
+f4
+e0
+b4
+03
+04
+74
+02
+f0
+22
+90
+4c
+f4
+74
+01
+f0
+22
+90
+4c
+f4
+74
+04
+f0
+22
+e4
+90
+4e
+b0
+f0
+ef
+30
+e0
+05
+e4
+90
+4c
+f8
+f0
+90
+4e
+b0
+ed
+f0
+90
+4d
+ea
+e0
+64
+01
+60
+02
+41
+25
+ed
+12
+05
+b9
+21
+8f
+04
+21
+9f
+07
+21
+a7
+09
+21
+af
+0a
+21
+b7
+0b
+21
+c7
+0c
+21
+d7
+0d
+21
+df
+0e
+21
+e7
+0f
+21
+ef
+10
+21
+cf
+12
+21
+97
+16
+21
+bf
+18
+20
+9e
+1e
+20
+a6
+1f
+20
+ae
+20
+20
+b6
+21
+20
+be
+22
+20
+c6
+23
+20
+ce
+24
+20
+d6
+25
+20
+de
+26
+20
+e6
+27
+20
+96
+29
+20
+fe
+2a
+20
+ee
+2d
+20
+f6
+2e
+21
+3d
+2f
+21
+21
+30
+21
+67
+33
+21
+50
+34
+21
+f7
+36
+21
+ff
+37
+22
+07
+38
+22
+1f
+65
+21
+7e
+e3
+22
+0f
+e4
+22
+17
+e6
+21
+7e
+e7
+00
+00
+22
+25
+90
+4e
+b0
+74
+35
+f0
+41
+25
+90
+4e
+b0
+74
+3a
+f0
+41
+25
+90
+4e
+b0
+74
+3b
+f0
+41
+25
+90
+4e
+b0
+74
+3c
+f0
+41
+25
+90
+4e
+b0
+74
+3d
+f0
+41
+25
+90
+4e
+b0
+74
+3e
+f0
+41
+25
+90
+4e
+b0
+74
+3f
+f0
+41
+25
+90
+4e
+b0
+74
+40
+f0
+41
+25
+90
+4e
+b0
+74
+41
+f0
+41
+25
+90
+4e
+b0
+74
+42
+f0
+41
+25
+90
+4e
+b0
+74
+43
+f0
+41
+25
+90
+4e
+b0
+74
+44
+f0
+41
+25
+90
+4e
+b0
+74
+45
+f0
+41
+25
+ef
+30
+e0
+18
+90
+4c
+fd
+e0
+c3
+94
+08
+50
+05
+e0
+04
+f0
+80
+05
+e4
+90
+4c
+fd
+f0
+e4
+90
+4c
+ff
+f0
+e4
+90
+4e
+b0
+f0
+41
+25
+ef
+30
+e0
+11
+90
+4d
+02
+e0
+c3
+94
+04
+50
+03
+e0
+04
+f0
+e4
+90
+4c
+ff
+f0
+e4
+90
+4e
+b0
+f0
+41
+25
+ef
+30
+e0
+08
+90
+4d
+02
+e0
+60
+02
+14
+f0
+e4
+90
+4e
+b0
+f0
+41
+25
+ef
+30
+e0
+0c
+90
+4c
+fe
+e0
+d3
+94
+01
+40
+03
+e0
+14
+f0
+e4
+90
+4e
+b0
+f0
+41
+25
+ef
+30
+e0
+0c
+90
+4c
+fe
+e0
+c3
+94
+05
+50
+03
+e0
+04
+f0
+e4
+90
+4e
+b0
+f0
+41
+25
+ef
+30
+e0
+06
+90
+4c
+f9
+e0
+f4
+f0
+e4
+90
+4e
+b0
+f0
+41
+25
+90
+4e
+b0
+74
+f2
+f0
+41
+25
+90
+4e
+b0
+74
+f4
+f0
+41
+25
+90
+4e
+b0
+74
+f5
+f0
+80
+7e
+90
+4e
+b0
+74
+f6
+f0
+80
+76
+90
+4e
+b0
+74
+f7
+f0
+80
+6e
+90
+4e
+b0
+74
+f8
+f0
+80
+66
+90
+4e
+b0
+74
+46
+f0
+80
+5e
+90
+4e
+b0
+74
+47
+f0
+80
+56
+90
+4e
+b0
+74
+48
+f0
+80
+4e
+90
+4e
+b0
+74
+49
+f0
+80
+46
+90
+4e
+b0
+74
+4a
+f0
+80
+3e
+90
+4e
+b0
+74
+4b
+f0
+80
+36
+90
+4e
+b0
+74
+4c
+f0
+80
+2e
+90
+4e
+b0
+74
+4d
+f0
+80
+26
+90
+4e
+b0
+74
+4e
+f0
+80
+1e
+90
+4e
+b0
+74
+52
+f0
+80
+16
+90
+4e
+b0
+74
+4f
+f0
+80
+0e
+90
+4e
+b0
+74
+50
+f0
+80
+06
+90
+4e
+b0
+74
+51
+f0
+90
+4c
+f9
+e0
+60
+17
+90
+4e
+b0
+e0
+ff
+64
+65
+60
+09
+ef
+64
+e3
+60
+04
+ef
+b4
+e7
+05
+e4
+90
+4e
+b0
+f0
+90
+4e
+b0
+e0
+ff
+22
+e4
+90
+4e
+b2
+f0
+f0
+90
+4e
+b2
+e0
+ff
+c3
+94
+08
+50
+0c
+c2
+05
+51
+8e
+90
+4e
+b2
+e0
+04
+f0
+80
+ea
+22
+90
+80
+80
+e4
+f0
+a3
+f0
+a3
+f0
+51
+48
+e4
+90
+4e
+b3
+f0
+f0
+90
+4e
+b3
+e0
+90
+06
+87
+93
+ff
+60
+0c
+c2
+05
+51
+8e
+90
+4e
+b3
+e0
+04
+f0
+80
+e9
+22
+ac
+07
+ec
+f4
+60
+17
+af
+04
+a2
+05
+92
+03
+51
+bd
+af
+04
+a2
+05
+b3
+92
+02
+51
+ac
+af
+04
+c2
+04
+51
+ce
+22
+ef
+f4
+60
+0c
+7b
+01
+7a
+80
+79
+78
+a2
+02
+92
+00
+51
+df
+22
+ef
+f4
+60
+0c
+7b
+01
+7a
+80
+79
+7c
+a2
+03
+92
+00
+51
+df
+22
+ef
+f4
+60
+0c
+7b
+01
+7a
+80
+79
+70
+a2
+04
+92
+00
+51
+df
+22
+90
+4e
+a6
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+e4
+fe
+fd
+ef
+54
+07
+fe
+ef
+13
+13
+13
+54
+03
+fd
+30
+00
+22
+90
+4e
+a6
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+2d
+f9
+e4
+3a
+fa
+12
+03
+b6
+ff
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+4f
+02
+03
+fc
+90
+4e
+a6
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+2d
+f9
+e4
+3a
+fa
+12
+03
+b6
+ff
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+f4
+5f
+02
+03
+fc
+e4
+ff
+90
+4e
+b4
+f0
+fe
+fd
+ef
+90
+06
+87
+93
+60
+49
+ef
+93
+fd
+13
+13
+13
+54
+1f
+fe
+ed
+54
+07
+fd
+74
+01
+a8
+05
+08
+80
+02
+c3
+33
+d8
+fc
+fd
+ee
+24
+78
+fb
+e4
+34
+80
+8b
+82
+f5
+83
+e0
+fc
+ed
+f4
+fb
+ec
+5b
+f0
+ee
+24
+70
+f5
+82
+e4
+34
+80
+f5
+83
+e0
+4d
+f0
+ee
+24
+74
+f5
+82
+e4
+34
+80
+f5
+83
+e0
+5b
+f0
+0f
+80
+b0
+91
+d8
+90
+81
+1c
+e0
+90
+4e
+b4
+f0
+90
+4d
+e4
+e0
+60
+20
+e4
+ff
+71
+d8
+7f
+01
+71
+d8
+7f
+02
+71
+d8
+7f
+03
+71
+d8
+7f
+04
+71
+d8
+7f
+05
+71
+d8
+7f
+06
+71
+d8
+7f
+07
+80
+10
+90
+4e
+b4
+e0
+ff
+90
+00
+a3
+f0
+ef
+f4
+90
+00
+a7
+f0
+22
+90
+4e
+b8
+ef
+f0
+91
+77
+92
+08
+90
+4e
+b8
+e0
+ff
+a2
+08
+b3
+92
+07
+ef
+f4
+70
+02
+81
+76
+ef
+54
+07
+fe
+ef
+13
+13
+13
+54
+03
+ff
+30
+07
+43
+24
+a3
+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
+a7
+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
+a3
+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
+a7
+2f
+f5
+82
+e4
+34
+00
+f5
+83
+e0
+ff
+ec
+f4
+fe
+ef
+5e
+f0
+22
+7b
+01
+7a
+81
+79
+1c
+ad
+07
+e4
+90
+4e
+b7
+f0
+fe
+ef
+54
+07
+f0
+ef
+13
+13
+13
+54
+03
+fe
+f5
+82
+75
+83
+00
+12
+03
+cf
+fd
+33
+95
+e0
+fc
+90
+4e
+b7
+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
+4e
+b9
+ef
+f0
+7b
+01
+7a
+80
+79
+74
+91
+7d
+92
+09
+90
+4e
+b9
+e0
+ff
+a2
+09
+b3
+92
+01
+02
+07
+de
+e4
+ff
+ef
+fd
+7c
+00
+24
+78
+fb
+ec
+34
+80
+8b
+82
+f5
+83
+e0
+fe
+ed
+24
+70
+fd
+ec
+34
+80
+8d
+82
+f5
+83
+e0
+4e
+f4
+fe
+ef
+24
+7c
+fd
+ec
+34
+80
+8d
+82
+f5
+83
+ee
+f0
+0f
+ef
+b4
+04
+cf
+22
+e4
+ff
+90
+4e
+94
+f0
+fe
+fd
+a3
+f0
+a3
+f0
+ef
+90
+06
+87
+93
+60
+7c
+ef
+93
+fd
+13
+13
+13
+54
+1f
+fe
+ed
+54
+07
+fd
+74
+01
+a8
+05
+08
+80
+02
+c3
+33
+d8
+fc
+fd
+ee
+24
+78
+fb
+e4
+34
+80
+8b
+82
+f5
+83
+e0
+fc
+ed
+f4
+fb
+ec
+5b
+f0
+ee
+24
+70
+f5
+82
+e4
+34
+80
+f5
+83
+e0
+4d
+f0
+ee
+24
+74
+f5
+82
+e4
+34
+80
+f5
+83
+e0
+5b
+f0
+90
+81
+1c
+e0
+f4
+fc
+74
+bc
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+ec
+f0
+ee
+24
+78
+fb
+e4
+34
+80
+8b
+82
+f5
+83
+e0
+4d
+f0
+ee
+24
+70
+fb
+e4
+34
+80
+8b
+82
+f5
+83
+e0
+fc
+ed
+f4
+fb
+ec
+5b
+f0
+0f
+a1
+18
+e4
+ff
+ef
+90
+06
+87
+93
+60
+7c
+ef
+93
+fd
+13
+13
+13
+54
+1f
+fe
+ed
+54
+07
+fd
+74
+01
+a8
+05
+08
+80
+02
+c3
+33
+d8
+fc
+fd
+ee
+24
+78
+fb
+e4
+34
+80
+8b
+82
+f5
+83
+e0
+fc
+ed
+f4
+fb
+ec
+5b
+f0
+ee
+24
+70
+f5
+82
+e4
+34
+80
+f5
+83
+e0
+4d
+f0
+ee
+24
+74
+f5
+82
+e4
+34
+80
+f5
+83
+e0
+5b
+f0
+90
+81
+1c
+e0
+f4
+fc
+74
+a8
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+ec
+f0
+ee
+24
+78
+fb
+e4
+34
+80
+8b
+82
+f5
+83
+e0
+4d
+f0
+ee
+24
+70
+fb
+e4
+34
+80
+8b
+82
+f5
+83
+e0
+fc
+ed
+f4
+fb
+ec
+5b
+f0
+0f
+a1
+9d
+e4
+ff
+ef
+90
+06
+87
+93
+60
+40
+74
+bc
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+fe
+74
+a8
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+6e
+60
+23
+74
+bc
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+c0
+83
+c0
+82
+e0
+fe
+74
+a8
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+fd
+ee
+5d
+d0
+82
+d0
+83
+f0
+0f
+80
+b9
+22
+90
+4d
+52
+e0
+ff
+90
+4d
+ec
+e0
+6f
+70
+02
+c1
+f9
+90
+4d
+52
+e0
+90
+4d
+ec
+f0
+90
+4c
+d5
+e0
+60
+10
+12
+0f
+56
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+02
+0b
+21
+90
+4c
+fd
+e0
+64
+01
+70
+54
+90
+4d
+04
+e0
+60
+15
+90
+4d
+03
+e0
+c3
+94
+55
+50
+05
+e0
+04
+f0
+80
+1b
+e4
+90
+4d
+04
+f0
+80
+14
+90
+4d
+03
+e0
+d3
+94
+05
+40
+05
+e0
+14
+f0
+80
+06
+90
+4d
+04
+74
+01
+f0
+e4
+90
+41
+31
+f0
+90
+4c
+fa
+04
+f0
+f1
+72
+90
+4d
+03
+e0
+ff
+90
+80
+a0
+f0
+c3
+74
+64
+9f
+90
+80
+a2
+f0
+90
+80
+85
+e0
+44
+40
+f0
+22
+90
+4d
+02
+e0
+ff
+d1
+fa
+22
+90
+4e
+9a
+ef
+f0
+60
+06
+90
+4c
+d5
+e0
+60
+0a
+12
+0f
+56
+d2
+06
+7f
+16
+02
+0b
+60
+90
+4e
+9a
+e0
+b4
+04
+0a
+12
+0f
+56
+c2
+06
+7f
+16
+02
+0b
+60
+90
+4e
+9a
+e0
+ff
+b4
+03
+09
+a3
+e4
+f0
+a3
+74
+19
+f0
+80
+18
+ef
+b4
+02
+0b
+90
+4e
+9b
+e4
+f0
+a3
+74
+32
+f0
+80
+09
+90
+4e
+9b
+e4
+f0
+a3
+74
+4b
+f0
+e4
+90
+41
+31
+f0
+90
+4c
+fa
+04
+f0
+f1
+72
+90
+4e
+9b
+e0
+a3
+e0
+ff
+90
+80
+a0
+f0
+c3
+74
+64
+9f
+90
+80
+a2
+f0
+90
+80
+85
+e0
+44
+40
+f0
+22
+90
+80
+42
+e0
+f0
+90
+80
+51
+e0
+54
+df
+f0
+90
+80
+82
+e0
+44
+80
+f0
+22
+12
+16
+82
+12
+2a
+f9
+90
+4c
+eb
+74
+01
+f0
+e4
+90
+4c
+f0
+f0
+90
+4d
+06
+74
+ff
+f0
+90
+4c
+fe
+74
+05
+f0
+90
+4d
+02
+14
+f0
+22
+90
+80
+10
+74
+01
+f0
+80
+fe
+22
+80
+f5
+90
+4e
+ab
+ed
+f0
+90
+00
+01
+12
+03
+cf
+90
+4e
+ac
+f0
+22
+90
+4c
+c5
+e0
+64
+03
+70
+4e
+90
+4c
+e3
+e0
+fe
+a3
+e0
+ff
+64
+0a
+4e
+70
+08
+90
+4d
+47
+e0
+60
+02
+e4
+f0
+ef
+54
+1f
+64
+10
+70
+20
+7b
+01
+7a
+48
+79
+00
+7d
+09
+fc
+12
+16
+56
+e4
+90
+4d
+f7
+f0
+90
+48
+00
+04
+f0
+fb
+7a
+48
+79
+00
+7d
+09
+12
+15
+a2
+c3
+90
+4c
+e4
+e0
+94
+c0
+90
+4c
+e3
+e0
+94
+03
+40
+2e
+02
+0e
+e7
+90
+4c
+c5
+e0
+b4
+01
+12
+c3
+90
+4c
+e4
+e0
+94
+78
+90
+4c
+e3
+e0
+94
+00
+40
+15
+02
+0e
+e7
+c3
+90
+4c
+e4
+e0
+94
+14
+90
+4c
+e3
+e0
+94
+00
+40
+03
+12
+0e
+e7
+22
+90
+4c
+ee
+e0
+60
+18
+e4
+90
+4c
+e3
+f0
+a3
+f0
+90
+4c
+ee
+e0
+14
+f0
+e0
+70
+08
+7f
+0a
+12
+0a
+2d
+12
+0e
+e7
+22
+12
+0f
+1f
+90
+4c
+e4
+e0
+04
+f0
+70
+06
+90
+4c
+e3
+e0
+04
+f0
+11
+80
+12
+27
+c4
+12
+09
+a2
+80
+c6
+90
+4c
+d3
+e0
+60
+0a
+14
+f0
+e0
+70
+05
+74
+05
+f0
+11
+91
+22
+90
+4e
+7c
+12
+05
+88
+00
+00
+00
+00
+90
+4c
+95
+e0
+70
+02
+a3
+e0
+70
+02
+41
+2c
+90
+4c
+95
+e0
+fe
+a3
+e0
+ff
+90
+4c
+d4
+e0
+fd
+04
+f0
+ed
+25
+e0
+24
+d6
+f5
+82
+e4
+34
+4c
+f5
+83
+ee
+f0
+a3
+ef
+f0
+90
+4c
+d4
+e0
+c3
+94
+04
+40
+02
+e4
+f0
+e4
+90
+4e
+7b
+f0
+90
+4e
+7c
+e0
+f8
+a3
+e0
+f9
+a3
+e0
+fa
+a3
+e0
+fb
+90
+4e
+7b
+e0
+25
+e0
+24
+d6
+f5
+82
+e4
+34
+4c
+f5
+83
+e0
+fe
+a3
+e0
+ff
+e4
+fc
+fd
+eb
+2f
+ff
+ea
+3e
+fe
+ed
+39
+fd
+ec
+38
+fc
+90
+4e
+7c
+12
+05
+7c
+90
+4e
+7b
+e0
+04
+f0
+e0
+b4
+04
+bf
+90
+4e
+7c
+e0
+fc
+a3
+e0
+fd
+a3
+e0
+fe
+a3
+e0
+ff
+e4
+7b
+04
+fa
+f9
+f8
+12
+04
+cb
+90
+4e
+7c
+12
+05
+7c
+90
+4c
+e0
+e0
+fe
+a3
+e0
+ff
+e4
+fc
+fd
+90
+4e
+7c
+e0
+f8
+a3
+e0
+f9
+a3
+e0
+fa
+a3
+e0
+fb
+c3
+12
+05
+6b
+50
+08
+90
+4c
+d5
+74
+02
+f0
+41
+24
+90
+4c
+de
+e0
+fe
+a3
+e0
+ff
+e4
+fc
+fd
+90
+4e
+7c
+e0
+f8
+a3
+e0
+f9
+a3
+e0
+fa
+a3
+e0
+fb
+c3
+12
+05
+6b
+50
+56
+90
+4c
+d5
+74
+01
+f0
+90
+4c
+91
+e0
+fe
+a3
+e0
+ff
+c3
+90
+4c
+94
+e0
+9f
+fd
+90
+4c
+93
+e0
+9e
+fc
+e4
+12
+02
+06
+7b
+7b
+7a
+14
+79
+8e
+78
+3f
+12
+00
+fb
+c0
+04
+c0
+05
+c0
+06
+c0
+07
+90
+4c
+91
+e0
+fc
+a3
+e0
+fd
+e4
+12
+02
+06
+d0
+03
+d0
+02
+d0
+01
+d0
+00
+12
+00
+0a
+12
+02
+3f
+90
+4c
+de
+ee
+f0
+a3
+ef
+f0
+80
+53
+e4
+90
+4c
+d5
+f0
+90
+4c
+91
+e0
+fe
+a3
+e0
+ff
+c3
+90
+4c
+94
+e0
+9f
+fd
+90
+4c
+93
+e0
+9e
+fc
+e4
+12
+02
+06
+7b
+b8
+7a
+1e
+79
+85
+78
+3f
+12
+00
+fb
+c0
+04
+c0
+05
+c0
+06
+c0
+07
+90
+4c
+91
+e0
+fc
+a3
+e0
+fd
+e4
+12
+02
+06
+d0
+03
+d0
+02
+d0
+01
+d0
+00
+12
+00
+0a
+12
+02
+3f
+90
+4c
+de
+ee
+f0
+a3
+ef
+f0
+90
+4c
+d5
+e0
+90
+4c
+fc
+f0
+22
+90
+4d
+05
+e0
+70
+11
+90
+4c
+ee
+e0
+70
+0b
+90
+4c
+d5
+e0
+64
+01
+60
+03
+12
+0b
+7e
+90
+4c
+ea
+e0
+60
+02
+14
+f0
+90
+4c
+ef
+e0
+60
+02
+14
+f0
+90
+4c
+f8
+e0
+60
+0b
+14
+f0
+e0
+70
+06
+90
+4c
+f4
+74
+06
+f0
+90
+4c
+ee
+e0
+70
+35
+90
+4c
+e2
+e0
+60
+2f
+14
+f0
+e0
+ff
+c3
+94
+08
+50
+16
+ef
+30
+e1
+09
+c2
+01
+7f
+1c
+12
+07
+de
+80
+10
+d2
+01
+7f
+1c
+12
+07
+de
+80
+07
+d2
+01
+7f
+1c
+12
+07
+de
+90
+4c
+e2
+e0
+70
+03
+74
+18
+f0
+90
+4d
+e4
+e0
+70
+36
+90
+4d
+e5
+e0
+64
+01
+70
+2e
+90
+4c
+e3
+f0
+a3
+f0
+90
+4d
+e5
+f0
+90
+4d
+f8
+e0
+60
+0d
+7b
+01
+7a
+4d
+79
+f8
+7d
+03
+12
+15
+a2
+80
+11
+90
+48
+00
+e0
+60
+0b
+7b
+01
+7a
+48
+79
+00
+7d
+09
+12
+15
+a2
+90
+4d
+ef
+e0
+60
+03
+e0
+14
+f0
+22
+7b
+01
+7a
+4e
+79
+02
+78
+14
+7c
+4e
+7d
+01
+7e
+00
+7f
+12
+02
+03
+90
+90
+4c
+d3
+74
+05
+f0
+e4
+a3
+f0
+ff
+ef
+25
+e0
+24
+d6
+f5
+82
+e4
+34
+4c
+f5
+83
+74
+54
+f0
+a3
+f0
+0f
+ef
+b4
+04
+ea
+90
+4c
+91
+e0
+fe
+a3
+e0
+ff
+c3
+90
+4c
+94
+e0
+9f
+fd
+90
+4c
+93
+e0
+9e
+fc
+e4
+12
+02
+06
+7b
+b8
+7a
+1e
+79
+85
+78
+3f
+12
+00
+fb
+c0
+04
+c0
+05
+c0
+06
+c0
+07
+90
+4c
+91
+e0
+fc
+a3
+e0
+fd
+e4
+12
+02
+06
+d0
+03
+d0
+02
+d0
+01
+d0
+00
+12
+00
+0a
+12
+02
+3f
+90
+4c
+de
+ee
+f0
+a3
+ef
+f0
+90
+4c
+91
+e0
+fe
+a3
+e0
+ff
+c3
+90
+4c
+94
+e0
+9f
+fd
+90
+4c
+93
+e0
+9e
+fc
+e4
+12
+02
+06
+7b
+48
+7a
+e1
+79
+7a
+78
+3f
+12
+00
+fb
+c0
+04
+c0
+05
+c0
+06
+c0
+07
+90
+4c
+91
+e0
+fc
+a3
+e0
+fd
+e4
+12
+02
+06
+d0
+03
+d0
+02
+d0
+01
+d0
+00
+12
+00
+0a
+12
+02
+3f
+90
+4c
+e0
+ee
+f0
+a3
+ef
+f0
+22
+90
+4e
+89
+ee
+f0
+a3
+ef
+f0
+90
+4e
+8b
+ec
+f0
+a3
+ed
+f0
+90
+4e
+8b
+e0
+fe
+a3
+e0
+ff
+d3
+90
+4e
+8a
+e0
+9f
+90
+4e
+89
+e0
+9e
+40
+16
+90
+4e
+8b
+e0
+fe
+a3
+e0
+ff
+90
+4e
+8a
+e0
+9f
+ff
+90
+4e
+89
+e0
+9e
+fe
+80
+1e
+90
+4e
+89
+e0
+fe
+a3
+e0
+ff
+c3
+90
+4e
+8c
+e0
+9f
+ff
+90
+4e
+8b
+e0
+9e
+fe
+ad
+03
+c3
+eb
+9f
+ff
+e4
+9e
+fe
+22
+90
+4e
+ad
+ee
+f0
+a3
+ef
+f0
+a9
+05
+90
+4b
+9e
+e0
+fe
+a3
+e0
+ff
+ad
+01
+19
+ed
+60
+2f
+0f
+ef
+ac
+06
+70
+01
+0e
+14
+f5
+82
+8c
+83
+e0
+fd
+90
+4e
+ad
+e4
+75
+f0
+01
+12
+04
+79
+85
+f0
+82
+f5
+83
+ed
+f0
+ad
+07
+ac
+06
+bc
+4b
+d4
+bd
+9a
+d1
+7e
+4b
+7f
+36
+80
+cb
+90
+4b
+9e
+ee
+f0
+a3
+ef
+f0
+22
+7a
+0c
+79
+4b
+90
+4e
+9d
+74
+01
+f0
+a3
+74
+0c
+f0
+a3
+74
+4b
+f0
+90
+4b
+a0
+e0
+fe
+a3
+e0
+ff
+90
+4b
+9e
+e0
+6e
+70
+03
+a3
+e0
+6f
+60
+46
+7e
+0c
+7f
+4b
+7d
+03
+91
+10
+90
+4e
+9d
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+03
+b6
+b4
+02
+2b
+90
+4e
+9e
+e4
+75
+f0
+02
+12
+04
+63
+90
+4e
+9d
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+03
+b6
+ff
+90
+4e
+14
+e0
+a3
+e0
+fa
+a3
+e0
+f5
+82
+8a
+83
+12
+05
+e3
+80
+02
+80
+fe
+90
+4b
+a5
+e0
+fe
+a3
+e0
+ff
+90
+4c
+5e
+e0
+6e
+70
+03
+a3
+e0
+6f
+60
+22
+90
+4e
+1a
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+4a
+60
+37
+12
+05
+df
+90
+4b
+a5
+e0
+ff
+a3
+e0
+90
+4c
+5e
+cf
+f0
+a3
+ef
+f0
+80
+ca
+90
+4c
+8d
+e0
+ff
+a3
+e0
+6f
+60
+19
+90
+4e
+1d
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+4a
+60
+0b
+12
+05
+df
+90
+4c
+8d
+e0
+a3
+f0
+80
+dd
+22
+90
+04
+46
+e0
+ff
+22
+90
+0b
+7f
+74
+01
+f0
+e4
+90
+0b
+7e
+f0
+22
+90
+82
+80
+74
+01
+f0
+22
+90
+4e
+48
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+4e
+4e
+74
+ff
+f5
+f0
+12
+04
+79
+45
+f0
+60
+2a
+90
+4e
+4b
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+04
+79
+a9
+f0
+fa
+12
+03
+b6
+ff
+90
+4e
+48
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+04
+79
+a9
+f0
+fa
+ef
+12
+03
+fc
+80
+c8
+22
+90
+4e
+a3
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+ed
+1d
+ae
+04
+70
+01
+1c
+4e
+60
+17
+90
+4e
+a3
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+04
+79
+a9
+f0
+fa
+74
+ff
+12
+03
+fc
+80
+df
+22
+ef
+f4
+60
+3a
+ef
+54
+07
+fe
+ef
+13
+13
+13
+54
+03
+ff
+24
+a3
+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
+a7
+2f
+f5
+82
+e4
+34
+00
+f5
+83
+e0
+5c
+f0
+22
+aa
+c5
+aa
+55
+40
+00
+00
+40
+29
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+35
+00
+00
+00
+4f
+02
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+c0
+00
+00
+00
+00
+00
+00
+00
+00
+80
+a0
+00
+00
+00
+00
+00
+00
+00
+20
+01
+00
+00
+00
+00
+00
+aa
+55
+02
+00
+50
+4d
+50
+00
+aa
+55
+01
+00
+31
+41
+01
+aa
+55
+02
+00
+13
+42
+40
+03
+aa
+55
+01
+00
+f7
+41
+0a
+aa
+55
+02
+00
+f5
+41
+10
+00
+aa
+55
+01
+00
+33
+41
+00
+aa
+55
+02
+00
+b1
+4c
+00
+00
+aa
+55
+03
+00
+4a
+41
+40
+25
+00
+aa
+55
+06
+00
+40
+41
+36
+08
+c2
+08
+66
+22
+aa
+55
+0f
+00
+02
+47
+0e
+42
+54
+33
+2e
+30
+20
+4b
+65
+79
+62
+6f
+61
+72
+64
+aa
+55
+03
+00
+80
+42
+0e
+00
+01
+aa
+55
+01
+00
+84
+42
+01
+aa
+55
+01
+00
+47
+47
+0a
+aa
+55
+01
+00
+dc
+47
+00
+aa
+55
+01
+00
+f6
+47
+01
+aa
+55
+01
+00
+72
+41
+01
+aa
+55
+0e
+00
+5b
+47
+06
+03
+11
+00
+00
+01
+02
+10
+24
+11
+00
+12
+01
+00
+aa
+55
+01
+00
+71
+47
+00
+aa
+55
+76
+02
+11
+48
+04
+00
+11
+01
+00
+10
+02
+11
+24
+00
+01
+00
+00
+36
+01
+b6
+09
+00
+00
+0a
+00
+01
+00
+00
+09
+00
+01
+35
+03
+19
+11
+24
+09
+00
+04
+35
+0d
+35
+06
+19
+01
+00
+09
+00
+11
+35
+03
+19
+00
+11
+09
+00
+05
+35
+03
+19
+10
+02
+09
+00
+06
+35
+09
+09
+65
+6e
+09
+00
+6a
+09
+01
+00
+09
+00
+09
+35
+08
+35
+06
+19
+11
+24
+09
+01
+00
+09
+00
+0d
+35
+0f
+35
+0d
+35
+06
+19
+01
+00
+09
+00
+13
+35
+03
+19
+00
+11
+09
+01
+00
+25
+3d
+42
+72
+6f
+61
+64
+63
+6f
+6d
+20
+42
+6c
+75
+65
+74
+6f
+6f
+74
+68
+20
+57
+69
+72
+65
+6c
+65
+73
+73
+20
+20
+4b
+65
+79
+62
+6f
+61
+72
+64
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+20
+09
+01
+01
+25
+08
+4b
+65
+79
+62
+6f
+61
+72
+64
+09
+01
+02
+25
+10
+42
+72
+6f
+61
+64
+63
+6f
+6d
+20
+43
+6f
+72
+70
+2e
+20
+20
+09
+02
+00
+09
+01
+00
+09
+02
+01
+09
+01
+11
+09
+02
+02
+08
+40
+09
+02
+03
+08
+21
+09
+02
+04
+28
+01
+09
+02
+05
+28
+01
+09
+02
+06
+35
+a5
+35
+a3
+08
+22
+25
+9f
+05
+01
+09
+06
+a1
+01
+85
+01
+75
+01
+95
+08
+05
+07
+19
+e0
+29
+e7
+15
+00
+25
+01
+81
+02
+95
+01
+75
+08
+81
+03
+95
+05
+75
+01
+05
+08
+19
+01
+29
+05
+91
+02
+95
+01
+75
+03
+91
+03
+95
+06
+75
+08
+15
+00
+25
+ff
+05
+07
+19
+00
+29
+ff
+81
+00
+c0
+05
+0c
+09
+01
+a1
+01
+85
+02
+19
+00
+2a
+ff
+03
+15
+00
+26
+ff
+03
+95
+01
+75
+10
+81
+00
+c0
+05
+01
+09
+02
+a1
+01
+85
+03
+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
+80
+26
+ff
+7f
+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
+09
+02
+07
+35
+08
+35
+06
+09
+04
+09
+09
+01
+00
+09
+02
+0b
+09
+01
+00
+09
+02
+0c
+09
+0c
+80
+09
+02
+0d
+28
+00
+09
+02
+0e
+28
+01
+09
+02
+0f
+09
+03
+18
+09
+02
+10
+09
+00
+00
+03
+10
+02
+12
+00
+00
+01
+00
+01
+00
+01
+36
+00
+a1
+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
+06
+35
+09
+09
+65
+6e
+09
+00
+6a
+09
+01
+00
+09
+00
+09
+35
+08
+35
+06
+19
+12
+00
+09
+01
+00
+09
+01
+00
+25
+2f
+42
+72
+6f
+61
+64
+63
+6f
+6d
+20
+42
+6c
+75
+65
+74
+6f
+6f
+74
+68
+20
+57
+69
+72
+65
+6c
+65
+73
+73
+20
+4b
+65
+79
+62
+6f
+61
+72
+64
+20
+50
+6e
+50
+20
+53
+65
+72
+76
+65
+72
+09
+01
+01
+25
+08
+4b
+65
+79
+62
+6f
+61
+72
+64
+09
+02
+00
+09
+01
+03
+09
+02
+01
+09
+04
+e8
+09
+02
+02
+09
+70
+21
+09
+02
+03
+09
+00
+01
+09
+02
+04
+28
+01
+09
+02
+05
+09
+00
+02
+00
+aa
+55
+02
+00
+59
+47
+11
+48
+aa
+55
+01
+00
+32
+41
+43
+aa
+55
+01
+00
+fb
+41
+00
+aa
+55
+08
+00
+38
+41
+ff
+ff
+8f
+f8
+83
+9d
+59
+82
+aa
+55
+01
+00
+dc
+07
+00
+aa
+55
+01
+00
+a2
+00
+00
+aa
+55
+01
+00
+dd
+07
+00
+aa
+55
+01
+00
+16
+00
+27
+aa
+55
+01
+00
+fd
+47
+ff
+aa
+55
+01
+00
+f7
+47
+ff
+aa
+55
+01
+00
+6e
+41
+80
+aa
+55
+02
+00
+a2
+4b
+02
+01
+aa
+55
+dd
+01
+04
+45
+01
+00
+00
+28
+02
+01
+18
+02
+00
+03
+28
+01
+20
+03
+00
+05
+2a
+01
+00
+04
+00
+02
+29
+02
+00
+00
+05
+00
+00
+28
+02
+00
+18
+06
+00
+03
+28
+01
+02
+07
+00
+00
+2a
+0e
+42
+54
+34
+2e
+32
+20
+4b
+65
+79
+62
+6f
+61
+72
+64
+08
+00
+03
+28
+01
+02
+09
+00
+01
+2a
+02
+c1
+03
+0a
+00
+03
+28
+01
+02
+0b
+00
+04
+2a
+08
+06
+00
+06
+00
+64
+00
+2c
+01
+0c
+00
+00
+28
+02
+0a
+18
+0d
+00
+03
+28
+01
+02
+0e
+00
+50
+2a
+07
+02
+e8
+04
+21
+70
+01
+00
+0f
+00
+00
+28
+02
+12
+18
+10
+00
+03
+28
+01
+06
+11
+00
+4e
+2a
+01
+01
+12
+00
+03
+28
+01
+12
+13
+00
+4d
+2a
+08
+00
+00
+00
+00
+00
+00
+00
+00
+14
+00
+02
+29
+02
+00
+00
+15
+00
+08
+29
+02
+01
+01
+16
+00
+03
+28
+01
+12
+17
+00
+4d
+2a
+02
+00
+00
+18
+00
+02
+29
+02
+00
+00
+19
+00
+08
+29
+02
+02
+01
+1a
+00
+03
+28
+01
+12
+1b
+00
+4d
+2a
+05
+00
+00
+00
+00
+00
+1c
+00
+02
+29
+02
+00
+00
+1d
+00
+08
+29
+02
+03
+01
+1e
+00
+03
+28
+01
+0e
+1f
+00
+4d
+2a
+02
+00
+00
+20
+00
+02
+29
+02
+00
+00
+21
+00
+08
+29
+02
+01
+02
+22
+00
+03
+28
+01
+0a
+23
+00
+4b
+2a
+a0
+05
+01
+09
+06
+a1
+01
+85
+01
+75
+01
+95
+08
+05
+07
+19
+e0
+29
+e7
+15
+00
+25
+01
+81
+02
+95
+01
+75
+08
+81
+03
+95
+05
+75
+01
+05
+08
+19
+01
+29
+05
+91
+02
+95
+01
+75
+03
+91
+03
+95
+06
+75
+08
+15
+00
+26
+ff
+00
+05
+07
+19
+00
+29
+ff
+81
+00
+c0
+05
+0c
+09
+01
+a1
+01
+85
+02
+19
+00
+2a
+ff
+03
+15
+00
+26
+ff
+03
+95
+01
+75
+10
+81
+00
+c0
+05
+01
+09
+02
+a1
+01
+85
+03
+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
+80
+26
+ff
+7f
+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
+24
+00
+03
+28
+01
+02
+25
+00
+4a
+2a
+04
+11
+01
+00
+01
+26
+00
+03
+28
+01
+04
+27
+00
+4c
+2a
+01
+00
+28
+00
+00
+28
+02
+0f
+18
+29
+00
+03
+28
+01
+12
+2a
+00
+19
+2a
+01
+64
+2b
+00
+02
+29
+02
+00
+00
+00
+00
+aa
+55
+01
+00
+6a
+4c
+17
+aa
+55
+01
+00
+f9
+46
+50
+aa
+55
+01
+00
+c2
+44
+14
+aa
+55
+06
+00
+f9
+44
+11
+46
+34
+54
+77
+dd
+aa
+55
+01
+00
+7e
+4c
+00
+aa
+55
+06
+00
+b8
+4c
+13
+00
+17
+00
+1b
+00
+aa
+55
+01
+00
+60
+4c
+50
+aa
+55
+10
+00
+6c
+4c
+0c
+00
+05
+00
+12
+b4
+08
+00
+10
+00
+10
+00
+00
+00
+2c
+01
+aa
+55
+0f
+00
+19
+44
+0e
+42
+54
+34
+2e
+32
+20
+4b
+65
+79
+62
+6f
+61
+72
+64
+aa
+55
+01
+00
+e4
+44
+07
+aa
+55
+01
+00
+dd
+44
+01
+aa
+55
+1c
+00
+d9
+43
+1f
+02
+01
+05
+03
+19
+c1
+03
+03
+03
+12
+18
+0f
+09
+42
+54
+34
+2e
+32
+20
+4b
+65
+79
+62
+6f
+61
+72
+64
+aa
+55
+11
+00
+f9
+43
+1f
+0f
+09
+42
+54
+34
+2e
+32
+20
+4b
+65
+79
+62
+6f
+61
+72
+64
+aa
+55
+04
+00
+53
+4d
+20
+21
+08
+12
+aa
+55
+04
+00
+91
+4c
+9f
+3e
+cd
+4d
+aa
+55
+01
+00
+8f
+4c
+02
+aa
+55
+01
+00
+10
+4c
+01
+aa
+55
+01
+00
+e2
+4b
+02
+aa
+55
+01
+00
+0f
+4c
+40
+aa
+55
+01
+00
+0a
+4c
+00
+aa
+55
+02
+00
+e4
+4b
+c0
+12
+aa
+55
+10
+00
+f0
+4b
+00
+13
+2c
+42
+06
+15
+36
+48
+0f
+1a
+3a
+4c
+11
+23
+31
+4d
+aa
+55
+01
+00
+ef
+4b
+ff
+aa
+55
+04
+00
+eb
+4b
+20
+15
+10
+05
+aa
+55
+01
+00
+7d
+4c
+c2
+aa
+55
+0a
+00
+37
+0d
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+aa
+55
+08
+00
+3d
+4d
+00
+48
+5d
+00
+00
+00
+00
+00
+aa
+55
+07
+00
+6f
+4d
+ff
+ff
+ff
+ff
+e8
+fd
+00
+aa
+55
+08
+00
+16
+42
+8f
+10
+ce
+00
+0a
+0b
+ef
+0f
+aa
+55
+01
+00
+f8
+41
+00
+aa
+55
+08
+00
+a3
+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
+03
+00
+06
+aa
+55
+02
+00
+98
+4c
+00
+13
+aa
+55
+02
+00
+9b
+42
+30
+3f
+aa
+55
+01
+00
+aa
+42
+20
+aa
+55
+7f
+00
+70
+4f
+07
+ff
+0a
+fb
+0b
+ff
+1a
+fb
+1b
+fb
+1c
+fb
+1d
+f6
+1e
+f2
+1f
+ee
+20
+ea
+21
+e6
+22
+e2
+23
+de
+24
+da
+25
+d6
+26
+d2
+27
+ce
+28
+ca
+29
+c6
+2a
+c2
+2b
+bd
+2c
+b9
+2d
+b5
+2e
+b1
+2f
+ad
+30
+a9
+31
+80
+32
+80
+33
+80
+34
+c0
+35
+c1
+36
+c2
+37
+c3
+38
+c4
+39
+c5
+3a
+c6
+3b
+c7
+3c
+06
+3d
+07
+3e
+46
+3f
+85
+40
+86
+41
+87
+42
+c6
+43
+c7
+44
+d6
+45
+d7
+46
+e6
+47
+f5
+48
+00
+49
+f8
+4a
+7f
+4e
+ec
+4f
+5e
+55
+d0
+56
+c0
+57
+4c
+58
+6c
+59
+50
+68
+e4
+69
+00
+6a
+00
+6b
+30
+ff
+aa
+55
+02
+00
+63
+41
+70
+4f
+aa
+55
+00
+00
+ee
+46
+aa
+55
+0a
+00
+91
+4a
+55
+d0
+56
+c0
+57
+4c
+58
+6c
+59
+50
+aa
+55
+0a
+00
+87
+4a
+55
+d0
+56
+c0
+57
+4c
+58
+6c
+59
+50
+f3
+ad
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+ff
+31
+5b
Index: output/fw.hex
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/fw.hex	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/fw.hex	(working copy)
@@ -0,0 +1,736 @@
+:100000000205E50202ABE86480F8E933E8336011E9
+:100010000460F0ED33EC337009E8FCE9FDEAFEEB37
+:10002000FF220460DED3EB9FEA9EE99DE8C2E78CE5
+:10003000F0C2F795F0400CE8CCF8E9CDF9EACEFA39
+:10004000EBCFFB12027685D0F05804700320D5B3B5
+:10005000E80470075002B2D50202B592D5EC0460F4
+:10006000F7E4CCC0E0C398F8603B94186008400DFA
+:10007000D0E0FB02028DE4FBFAC9FC8028E830E402
+:1000800006E4C9FBE4CAFCE830E305E4C9CACBFCDA
+:10009000E854076010F8C3E913F9EA13FAEB13FB0D
+:1000A000EC13FCD8F130F52FC3E49CFCEF9BFFEE82
+:1000B0009AFEED99FDD0E0FBEF4E4D4C701222DB25
+:1000C000030202B2EC2CFCEF33FFEE33FEED33FD06
+:1000D000ED30E7EB02028DEF2BFFEE3AFEED39FD3E
+:1000E000D0E0FB50130BBB00030202B5ED13FDEE95
+:1000F00013FEEF13FFEC13FC02028DEC4D6011E8D0
+:10010000497017ED33EC3304600DE4FCFFFEFD2273
+:10011000E933E8330470F80202AB12027658046047
+:1001200009E4CC248150062850090202B528400376
+:100130000202B2C0E0EB4A7044B98006D0E0FB0294
+:1001400002A1EF4E701CBD8008EBFFEAFEE9FD80C6
+:10015000EBE98DF0A4FEE5F00201E4E9CDF9EAFE59
+:10016000EBFFEF89F0A4FCE5F0CE89F0A42EFFE4CC
+:1001700035F0CD89F0A42DFEE435F08067EF4E70A8
+:1001800005BD80D780C3EF8BF0A4ACF0EE8BF0A45C
+:100190002CFCE435F0F8EF8AF0A42CE5F038FCE410
+:1001A00033CB8DF0A42CFCE5F03BF8EE8AF0A42CC8
+:1001B000FCE5F038F8E433CF89F0A42CFCE5F03806
+:1001C000CF3400CE89F0A42FFFE5F03EFEE433C922
+:1001D0008DF0A42EFEE5F039CD8AF0A42FFFE5F0D6
+:1001E0003EFEE43DFD33D0E0FB50070BBB000F02A9
+:1001F00002B5EC2CFCEF33FFEE33FEED33FD0202D3
+:100200008D75F020800E75F010800575F0087D006A
+:100210007E007F003392D530D50312055DEC33406C
+:1002200010EF33FFEE33FEED33FDEC33FCD5F0ED94
+:1002300022E5F0247EA2D513CC92E7CDCEFF22EDAD
+:10024000D2E7CD33EC3392D524814006E4FFFEFDA6
+:10025000FC22FCE4CFCECDCC24E0501174FF80ED25
+:10026000C3CC13CCCD13CDCE13CECF13CF0470F0AF
+:1002700030D5DE02055DE9D2E7C933E833F892D51F
+:10028000EDD2E7CD33EC33FC5002B2D522EC30E7AF
+:10029000100FBF000C0EBE00080DBD00040BEB607C
+:1002A00014A2D5EB13FCED92E7FD2274FFFCFDFEDA
+:1002B000FF22E480F8A2D574FF13FC7D80E480EF78
+:1002C000E709F608DFFA8046E709F208DFFA803E20
+:1002D00088828C83E709F0A3DFFA8032E309F6080D
+:1002E000DFFA8078E309F208DFFA807088828C8375
+:1002F000E309F0A3DFFA806489828A83E0A3F60829
+:10030000DFFA805889828A83E0A3F208DFFA804C02
+:1003100080D280FA80C680D4806980F280338010D9
+:1003200080A680EA809A80A880DA80E280CA803342
+:1003300089828A83ECFAE493A3C8C582C8CCC583BA
+:10034000CCF0A3C8C582C8CCC583CCDFE9DEE7808A
+:100350000D89828A83E493A3F608DFF9ECFAA9F009
+:10036000EDFB2289828A83ECFAE0A3C8C582C8CC5F
+:10037000C583CCF0A3C8C582C8CCC583CCDFEADE78
+:10038000E880DB89828A83E493A3F208DFF980CCDA
+:1003900088F0EF60010E4E60C388F0ED2402B404D3
+:1003A0000050B9F582EB2402B4040050AF2323457A
+:1003B000822390031073BB010689828A83E0225056
+:1003C00002E722BBFE02E32289828A83E49322BBF6
+:1003D000010CE58229F582E5833AF583E022500697
+:1003E000E92582F8E622BBFE06E92582F8E222E54D
+:1003F0008229F582E5833AF583E49322BB010689DD
+:10040000828A83F0225002F722BBFE01F322BC0055
+:100410000BBE0029EF8DF084FFADF022E4CCF8751F
+:10042000F008EF2FFFEE33FEEC33FCEE9DEC98402E
+:1004300005FCEE9DFE0FD5F0E9E4CEFD22EDF8F5CA
+:10044000F0EE8420D21CFEADF075F008EF2FFFED2A
+:1004500033FD4007985006D5F0F222C398FD0FD522
+:10046000F0EA22C5F0F8A3E028F0C5F0F8E582151F
+:100470008270021583E038F022A3F8E0C5F025F081
+:10048000F0E582158270021583E0C838F0E8227525
+:10049000F008758200EF2FFFEE33FECD33CDCC3365
+:1004A000CCC58233C5829BED9AEC99E58298400CCD
+:1004B000F582EE9BFEED9AFDEC99FC0FD5F0D6E4AB
+:1004C000CEFBE4CDFAE4CCF9A88222B800C1B90091
+:1004D00059BA002DEC8BF084CFCECDFCE5F0CBF9F2
+:1004E0007818EF2FFFEE33FEED33FDEC33FCEB33EA
+:1004F000FB10D703994004EB99FB0FD8E5E4F9FA18
+:10050000227818EF2FFFEE33FEED33FDEC33FCC9FC
+:1005100033C910D7059BE99A4007EC9BFCE99AF98F
+:100520000FD8E0E4C9FAE4CCFB2275F010EF2FFFFE
+:10053000EE33FEED33FDCC33CCC833C810D7079B68
+:10054000EC9AE899400AED9BFDEC9AFCE899F80FCB
+:10055000D5F0DAE4CDFBE4CCFAE4C8F922C3E49F99
+:10056000FFE49EFEE49DFDE49CFC22EB9FF5F0EA97
+:100570009E42F0E99D42F0E89C45F022ECF0A3EDAC
+:10058000F0A3EEF0A3EFF022A8828583F0D083D011
+:100590008212059F12059F12059F12059FE473E4C6
+:1005A00093A3C583C5F0C583C8C582C8F0A3C5831E
+:1005B000C5F0C583C8C582C822D083D082F8E49331
+:1005C0007012740193700DA3A393F8740193F582D4
+:1005D0008883E4737402936860EFA3A3A380DF8A27
+:1005E000838982E473787FE4F6D8FD7581CF0206B3
+:1005F0002C020FF0E493A3F8E493A34003F68001E8
+:10060000F208DFF48029E493A3F85407240CC8C34C
+:1006100033C4540F4420C8834004F456800146F686
+:10062000DFE4800B0102040810204080900671E492
+:100630007E019360BCA3FF543F30E509541FFEE4E4
+:1006400093A360010ECF54C025E060A840B8E493A6
+:10065000A3FAE493A3F8E493A3C8C582C8CAC583E8
+:10066000CAF0A3C8C582C8CAC583CADFE9DEE7806D
+:10067000BE524E02FF0A45000000FF2865FF2A2DEA
+:10068000000000FF27B4001A08090A0B0C0D0E1910
+:1006900018171211100F00000000000029000000C0
+:1006A000390000002B141A04002C1DE2001E1F004C
+:1006B000E1000000002000E316000000002100001F
+:1006C00008000000002200000900000000231C00B8
+:1006D0001B0000000024180B0511E40000250C0D80
+:1006E000106587000026120E0736374A0027130FC1
+:1006F0000AE6384D002D2F33177F064B002E30347D
+:100700001500644E0049283119E54D52002A4C323B
+:10071000E050514F00000000000000000000000009
+:1007200000000000000000000000000000000000C9
+:1007300000000000000000000000010100904CC516
+:10074000E0B403037F01227F0022904DF4E06402B5
+:100750006002E1DD904CF9E06009D2067F1F120BC8
+:10076000608007C2067F1F120B60904CE9E0706743
+:10077000904CEEE07061904D05E0700312266A9097
+:100780004CD5E0B40205120EE7802E904CD5E0B4B3
+:100790000114904CF7E07021904CE27418F0904CEA
+:1007A000F77401F08013904CF7E0B4010CE4F09082
+:1007B0004CE2F0D2017F1CF1DEF13DEF6013904C72
+:1007C000B7E030E106C2017F1D8013D2017F1D809A
+:1007D0000DD2017F1D8007D2017F1DF1DE22EFF4D3
+:1007E000600D7B017A807974A20192001222DF22CF
+:1007F000E4FF904CEEE0600122904CC5E0640360A1
+:100800001C904CEFE0701D740AF0A3E07016904D40
+:10081000F4E0B4020F7F0911257F018007E4904CBA
+:10082000EBF07F0122904EAFEFF024F760091460E7
+:100830005E2402600201C8E4904CF0F07B017A4C27
+:1008400079007D04FC7FF07E7F1211A37F0A512D79
+:10085000E4904E01F0904C00E0F47021A3E0B4FF6E
+:100860001CA3E0B4FF17A3E0B4FF12904C00740F78
+:10087000F0A3F0A3F0A3F0904E017401F07F2111DA
+:10088000CE904CC57402F0E4A3F0904CEDF022E45D
+:10089000904CF0F0318BEF6009904EAFE0904CED52
+:1008A000F022904CC5E0640160187F2311CE904C7B
+:1008B000C57401F0E4A3F0904CEE7478F0E4904C31
+:1008C000E9F0E4904CEDF022E4904CEDF022904EF3
+:1008D0008DEFF0788E7C4E7D017BFF7A07793A7E32
+:1008E000007F03120390904E8DE0904E90F07B01BC
+:1008F0007A4E798E7D03904E65EBF0A3EAF0A3E982
+:10090000F0A3EDF0904B9CE0FFA3E0904E69CFF098
+:10091000A3EFF0904B9AE0FEA3E0FF904B9CE0FC2D
+:10092000A3E0FD7B64122BB6904E68E0FEEFC39E01
+:1009300040E1904E68E0FF14F0EF603F904E65E0BC
+:10094000FBA3E475F001120479A9F0FA1203B6FFD3
+:10095000904E69E475F00112047985F082F583EF19
+:10096000F0904E69E0FEA3E0FFBE4BC6BF36C390D9
+:100970004E69744AF0A374A0F080B7904E69E0FF0E
+:10098000A3E0904B9CCFF0A3EFF022904CC5E0FF8A
+:1009900064036004EFB402077F2211CE7F01227F3F
+:1009A0000022904CCEE030E13D904CD0E0C394FA70
+:1009B0005003E004F0904CD0E064B47036904DEBFE
+:1009C000E004F0E0D394025007E4904CD0F0802390
+:1009D000904DEBE0B4031C904DE47401F0E4904CB6
+:1009E000D0F0D1E7800DE4904DEBF0904DE4F09025
+:1009F0004CD0F0904CCEE030E42D904CEA740AF0EC
+:100A0000904CD1E0C394FA5003E004F0904CD1E054
+:100A1000B40619904CC3E0FF6003B4FE0F318B7F26
+:100A20000A512D7F0A0125E4904CD1F022EFD39496
+:100A3000004011E4FDFC0DBD00010CBC04F8BDA696
+:100A4000F51F80E922904EB5EFF024D0605D146070
+:100A50006514700241F414600A24F76059240D6093
+:100A6000026120F1E91227867B017A4C79007D042E
+:100A70007C007FF07E7F1211A37F0A512D904CC124
+:100A8000E0F97A007B007D017C007FF87E7F121107
+:100A9000A37F0A512DD2067F167160904E797401A2
+:100AA000F0A3F0FBFDFF7121021005F1F2122265A7
+:100AB000E4904D05F022904CC57403F0E4A3F0F1EE
+:100AC000E3E4904CEEF0904CEBF0904CC074FEF0F0
+:100AD000904CC3F0904D477403F0904DEF740AF0C2
+:100AE000904EB5E064317038904E01F0904CBF04E8
+:100AF000F0021010E4904CC5F0A3F0904CE3F0A38A
+:100B0000F0904CEB04F0904CEDE06009F1E3904C78
+:100B1000EDE0FF0125904CECE0B40104E4F0D1E7F6
+:100B200022904E77EDF0A3EBF0EF24FF92067F13B7
+:100B30007160904E77E024FF92067F147160904EB2
+:100B400078E024FF92067F157160904E79E024FFD3
+:100B500092067F1E7160904E7AE024FF92067F1B02
+:100B6000AC07ECF46017AF04D2041222CEAF04A29B
+:100B70000692011207DEAF04C2021222AC22904D8F
+:100B800001E004F07006904D00E004F0904CFEE0AF
+:100B9000FD7C00904D00E0FEA3E0FF12040EED4C42
+:100BA0006002C1C6904CFDE0B408004002C1BA909A
+:100BB0000BB6F8282873020BCE020EC6020BDB021E
+:100BC0000C69020CF3020D4F020DAB020E34904E75
+:100BD000797401F0A3F0FBFDFF6121904CFFE07000
+:100BE0000F04F0E4904E79F0A3F0FBFD7F0161214A
+:100BF000904CFFE0B401117402F0E4904E79F0A340
+:100C0000F0FB7D017F016121904CFFE0B402127482
+:100C100003F0E4904E79F0A3F07B017D017F016148
+:100C200021904CFFE0B403147404F0904E797401E9
+:100C3000F0E4A3F07B017D017F016121904CFFE096
+:100C4000B404107405F0904E797401F0A3F0FBFD2C
+:100C5000FF6121904CFFE064056002C1C6F0904E38
+:100C600079F0A3F0FBFDFF6121904CFFE0701004D0
+:100C7000F0E4904E79F0A304F0E4FBFDFF612190D5
+:100C80004CFFE0B401107402F0904E7914F0A3F020
+:100C9000E4FBFDFF6121904CFFE0B402117403F00E
+:100CA000904E797401F0A3F0FBE4FDFF6121904CBC
+:100CB000FFE0B403117404F0904E797401F0A3F0D6
+:100CC000FBFDE4FF6121904CFFE0B404107405F0DB
+:100CD000904E797401F0A3F0FBFDFF6121904CFF71
+:100CE000E064056002C1C6F0904E79F0A3F0FBFD10
+:100CF000FF6121904CFFE0700F04F0E4904E79F01A
+:100D0000A3F07B01FDFF6121904CFFE0B401117461
+:100D100002F0904E7914F0E4A3F0FB7D01FF612115
+:100D2000904CFFE0B402127403F0E4904E79F0A30B
+:100D300004F0E4FBFD7F016121904CFFE06403605F
+:100D400002C1C6F0904E79F0A3F0FBFDFF61219047
+:100D50004CFFE0701104F0E4904E79F0A304F0E44D
+:100D6000FBFD7F016121904CFFE0B401117402F0A2
+:100D7000904E7914F0E4A3F0FB7D01FF6121904CCB
+:100D8000FFE0B402107403F0E4904E79F0A3F07B1E
+:100D900001FDFF6121904CFFE064036002C1C6F0D9
+:100DA000904E79F0A3F0FBFDFF6121904CFFE070C5
+:100DB0000F04F0E4904E79F0A3F0FBFD7F01612178
+:100DC000904CFFE0B401107402F0E4904E79F0A36F
+:100DD000F0FB7D01FF6121904CFFE0B40210740331
+:100DE000F0E4904E79F0A3F07B01FDFF6121904C7F
+:100DF000FFE0B403117404F0904E797401F0E4A3A1
+:100E0000F0FBFDFF6121904CFFE0B404117405F08C
+:100E1000E4904E79F0A304F0E4FBFDFF6121904CD7
+:100E2000FFE064056002C1C6F0904E79F0A3F0FBCC
+:100E3000FDFF6121904CFFE0701004F0E4904E79CA
+:100E4000F0A304F0E4FBFDFF6121904CFFE0B4014E
+:100E5000107402F0904E7914F0E4A3F0FBFDFF61F2
+:100E600021904CFFE0B402107403F0E4904E79F04E
+:100E7000A3F07B01FDFF6121904CFFE0B4031074EF
+:100E800004F0E4904E79F0A3F0FB7D01FF61219026
+:100E90004CFFE0B404107405F0E4904E79F0A3F038
+:100EA000FBFD7F016121904CFFE064057018F0901C
+:100EB0004E79F0A3F0FBFDFF6121E4904E79F0A3A1
+:100EC000F0FBFDFF712122F156D2067F1D7160D229
+:100ED000067F1F7160D2067F1C7160E4904E79F02E
+:100EE000A3F0FBFDFF6121904D057401F0E4904CEF
+:100EF000E6F0A3F0A3F0904CB774F0F0904DE8F05A
+:100F0000E4904CFDF0904CF7F0904CE2F0904BEFF9
+:100F100074FFF0904D3DF0A3F0A3F0A3F080A890F3
+:100F20004DF4E06402702E904CEEE06028F156C261
+:100F3000067F167160904CEEE030E00D904E7974B3
+:100F400001F0A3F0FBFDFF6121E4904E79F0A3F0E6
+:100F5000FBFDFF712122904CE9E0700E904CFAE00D
+:100F6000B40107E4F090413104F0908051E0442056
+:100F7000F0908082E0547FF0908085E054BFF022B2
+:100F8000122AE6122C6012174D12101012074A9006
+:100F90004D76E06002D1E7900B7EE014600F24FEF6
+:100FA00070E1122340F156D1C9F1D680FE904CEA8F
+:100FB000E0700C904CECE07006904CF8E06005128C
+:100FC0002D2C80BF122340904D05E06002D1C7F167
+:100FD000D680B080AE22E4900B7FF0900B7EF07F45
+:100FE00001412DE4904CF0F022F1F2122265C1C9CA
+:100FF000808E908091740DF0A304F0A3F0A3F0A371
+:10100000F0A314F022904DF47402F07F080208253A
+:10101000904CBFE0603D904CE0E0FEA3E0FFC39049
+:101020004C96E09F904C95E09E4028C2017FFF12B5
+:1010300007DE7B017A4C79007D047C007FF07E7FA7
+:101040001154D2017FFF1207DE7F0A120A2DE490AD
+:101050004CBFF022904E3FEEF0A3EFF0A3ECF0A3D4
+:10106000EDF0A3EBF0A3EAF0A3E9F0904E41E070BD
+:1010700002A3E070022101904E3FE0FEA3E0FF4496
+:101080000F2401FDE43EFCC3ED9FFFEC9EFE904E5D
+:1010900046F0A3EFF0904E41E0FCA3E0FDD39FECBF
+:1010A0009E400A904E46E0FEA3E0FF8004AE04AFEF
+:1010B00005904E46EEF0FCA3EFF0FDC3904E42E0EB
+:1010C0009DF0904E41E09CF0904E3FE0FEA3E0FF8B
+:1010D000904E43E0FBA3E0FAA3E0F931027F0A124D
+:1010E0000A2D904E46E0FEA3E0FF904E44EE8FF0B6
+:1010F000120463904E40E02FF0904E3FE03EF0012E
+:101100006B22904E5EEEF0A3EFF0904E62EBF0A3F8
+:10111000EAF0A3E9F0904E60ECF0A3EDF0A3E0F963
+:10112000A3E0FAA3E0904E4BC9F0A3EAF0A3E9F0E4
+:10113000A3ECF0A3EDF07B017A0B7986122D3F90A2
+:101140000B8374A0F0904E5EE0FFA3E0900B84CF81
+:10115000F0A3EFF0904E61E02403FD904E60E03488
+:1011600000FCEDFAECFFEAFEEF908098EEF0A3EFC2
+:10117000F07A0B79837E0B7F837483FC740BFFEC16
+:10118000FEEFA3EEF0A3EFF090809EE4F0A3F090CA
+:10119000809004F0908006E04404F090812CE030D0
+:1011A000E5F922904E80ECF0A3EDF0A3EBF0A3EA7A
+:1011B000F0A3E9F09080987404F0A3E4F0900CAFF1
+:1011C00074A0F0A3EEF0A3EFF0900CB274A1F07A4B
+:1011D0000C79AF7E0C7FAF74AFFC740CFFECFEEFAC
+:1011E00090809AEEF0A3EFF0904E80E0FCA3E0FA3E
+:1011F000ECFFEAFEEF90809EEEF0A3EFF07A0B7921
+:10120000837E0B7F837483FC740BFFECFEEF908076
+:101210009CEEF0A3EFF09080907402F090809CA37D
+:10122000E020E707908090E04401F0908006E044E1
+:1012300004F0319B904E82E0A3E0FAA3E0AE02FFFF
+:101240007B017A0B7983904E80E0A3E0904E70F0A2
+:10125000904E6BEEF0A3EFF0A3EBF0A3EAF0A3E95E
+:10126000F0904E70E0FF14F0EF6027904E6DE0FBC1
+:10127000A3E475F001120479A9F0FA1203B6FF9005
+:101280004E6BE475F00112047985F082F583EFF07E
+:1012900080CF22904E71EBF0A3EAF0A3E9F0E4A333
+:1012A000F0A3F0904DEAF0904E75F0904E75E0FF8F
+:1012B000C39405502C904E71E0FBA3E0FAA3E02408
+:1012C00001F9E43AFA7E00E92FF9EE3AFA1203B690
+:1012D000B47F06904DEA7401F0904E75E004F08002
+:1012E000CA904DEAE0904DF3F0904E71E0A3E0FA21
+:1012F000A3E04A7002A1A1904D76E06008E4F0906E
+:101300004D477403F0904DEF740AF0E4904CE3F015
+:10131000A3F0904D05F0904CFDE064086012E4905D
+:101320004D3DF0A37448F0A37412F0E4A3F08010D4
+:10133000E4904D3DF0A37448F0A3745DF0E4A3F095
+:101340007B017A4879007D097C00D1567B017A4D7A
+:1013500079F87D097C00D156904E71E0FBA3E0FA4C
+:10136000A3E0F99000011203CFFFB47F0A900002BE
+:101370001203CF6419600EEF6419702390000212FB
+:1013800003CFB47F1A904CC5E064016009904CCE45
+:10139000E04410F08010904CCEE054EFF0800790C5
+:1013A0004CCEE054EFF0904CB67401F0904CF4E069
+:1013B000FF64017002A1A1EF64047002A1A1EF64B7
+:1013C000027002A1A1904CC5E064037045904E7577
+:1013D000F0904E75E0FFC394055037904E71E0FBDE
+:1013E000A3E0FAA3E02401F9E43AFA7E00E92FF938
+:1013F000EE3AFA1203B6FF64396009EF64536004F1
+:10140000EFB44706904D477403F0904E75E004F03A
+:1014100080BF904E71E0FBA3E0FAA3E0F912181828
+:10142000904DF7E0B401117402F0904DF8F07B019B
+:101430007A4D79F87D03A1A2904DF7E0B4041174C0
+:1014400002F0904DF804F07B017A4D79F8FDA1A2ED
+:10145000904DF7E06403600BE06402702F904DED57
+:10146000E07029E4904DF7F0904DF6F0904DF2E0E9
+:10147000600AE4F0904DF87403F08006904DF87423
+:1014800002F07B017A4D79F87D03A1A2904DEDE049
+:101490007031904E71E0FBA3E0FAA3E02401F9E47F
+:1014A0003AFA7D067C00D1567B017A4D79D07D0FCA
+:1014B0007C00D156904E71E0FBA3E0FAA3E0F9E482
+:1014C0001203FC9048007401F0904E71E0FBA3E021
+:1014D000FAA3E0F91203B6904801F0904CC5E0B4CD
+:1014E000030A904D47E0904802F08005E4904802DE
+:1014F000F0E4904DE7F0904E01E0706F9000011223
+:1015000003CFB47F157E487F03E92402F9E43AFA59
+:10151000904E707405F05150801C7E487F03904EB1
+:1015200071E0FBA3E0FAA3E02401F9E43AFA904E5B
+:10153000707406F05150904E757403F0904E75E043
+:10154000FFC39409504174002FF582E43448F583B9
+:10155000E0B47F0F904E75E02400F582E43448F546
+:1015600083E4F0904E75E004F080D17E487F0390D4
+:101570004E71E0FBA3E0FAA3E02401F9E43AFA900B
+:101580004E707406F051507B017A4879007D09B1A4
+:10159000A2904DD07408F07B017A4D79D07D0FB1C7
+:1015A000A222904E26EBF0A3EAF0A3E9F0A3EDF01F
+:1015B000E4FF904E29E0FEEFC39E5023904E26E0BC
+:1015C000FBA3E0FAA3E0F98F827583001203CFFE3C
+:1015D000742A2FF582E4344EF583EEF00F80D31297
+:1015E00007F0EF6070904CEBE0706A904CC5E064DF
+:1015F000037062904E2AE0640170237404F0A3E04B
+:101600007014904E2DE0700EA3E0700AA3E07006F7
+:10161000904DE5F08032904DE57401F0802A904EB7
+:101620002AE0B402197405F0A3E0700AA3E0700682
+:10163000904DE5F08012904DE57401F0800A904ED7
+:101640002AE0B403037407F07B017A4E792A904EA6
+:1016500029E0FDF1D122904EA0EBF0A3EAF0A3E93E
+:10166000F0ED1DAE0470011C4E6016904EA0E0FB24
+:10167000A3E475F001120479A9F0FAE41203FC80E6
+:10168000E0227B017A4C79BF7D487C00D1567B01FA
+:101690007A4D79937D147C00D1567B017A4D79A8DF
+:1016A0007D147C00D1567B017A4D79BC7D147C0081
+:1016B000D1567B017A4879007D097C00D1567B01A7
+:1016C0007A4D79F87D097C00D156E4904DEFF09089
+:1016D0004DF5F0904DF4F0904DE5F0904DDFF09029
+:1016E0004DEBF0904DF7F0904DE4F0904DE7F09019
+:1016F0004DEAF0904DF3F0904DE2F0904DF0F09007
+:101700004DF6F0904CB774F0F0904DE8F0E4904D49
+:1017100038F022904EA9EFF0A3EDF07B017A4879E2
+:10172000007D097C00D1569048007401F0A3E0FFD1
+:10173000904EA9E0FEEF4E904801F0904EAAE09046
+:101740004803F07B017A4879007D09A1A2904CF40E
+:10175000E0FF600864036004EFB40503021B1E9001
+:101760004CF4E0B4010EA3E0FFE4FDF113904CF45F
+:101770007402F022904CF4E0B4020B7403F0A3E086
+:10178000FFA3E0FD808D904CF4E0B40427E4904C7E
+:10179000F6F0904CF5E0FFE4FDF113E4904CF5F029
+:1017A000904CF8E07007904CF47406F022904CF4E2
+:1017B0007405F022904CF4E0B40615E4904CF6F079
+:1017C000904CF5F0A3E0FDE4FFF113E4904CF4F04D
+:1017D00022900BE77406F0904EB6EDF0E0FD900B12
+:1017E000E8F07E0B7FE9904E70EDF051507B017A6E
+:1017F0000B79E7904EB6E02402FD0208F6AD07AC87
+:1018000006904DF7E06402600E7401F0904DF8040C
+:10181000F0EFA3F0EEA3F022904E85EBF0A3EAF0F8
+:10182000A3E9F0E4A3F0F0904E88E0FFC3940640F3
+:101830000241C4904E85E0FBA3E0FAA3E02401F945
+:10184000E43AFA7E00E92FF9EE3AFA1203B6FF54B1
+:10185000F064F06009EF54D064D0600241BC120320
+:10186000B6FBB4F1097F837E011217FD4191EBB401
+:10187000F2097FCD7E001217FD4191904E85E0FB6D
+:10188000A3E0FAA3E02401F9E43AFAA3E07E0029F8
+:10189000F9EE3AFA1203B6FBB4F3077FB71217FD5D
+:1018A0004191EBB4F4097FB67E001217FD4191908F
+:1018B0004E85E0FBA3E0FAA3E02401F9E43AFAA3A1
+:1018C000E07E0029F9EE3AFA1203B6FBB4F5077F81
+:1018D000B51217FD4191EBB4F6097FEA7E001217AD
+:1018E000FD4191904E85E0FBA3E0FAA3E02401F9CD
+:1018F000E43AFAA3E07E0029F9EE3AFA1203B6FBC5
+:10190000B4F7077FE91217FD4191EBB4F8097FE2C4
+:101910007E001217FD4191904E85E0FBA3E0FAA3F3
+:10192000E02401F9E43AFAA3E07E0029F9EE3AFA5C
+:101930001203B6FBB4F9087F940E1217FD4191EB28
+:10194000B4FA097F8A7E011217FD4191904E85E01D
+:10195000FBA3E0FAA3E02401F9E43AFAA3E07E0055
+:1019600029F9EE3AFA1203B6FBB4FB087F920E1285
+:1019700017FD4191EBB4D0097F2A7E021217FD4179
+:1019800091904E85E0FBA3E0FAA3E02401F9E43A4C
+:10199000FAA3E07E0029F9EE3AFA1203B6FBB4D1BD
+:1019A000097F257E021217FD4191EBB4D3097F26F2
+:1019B0007E021217FD4191904E85E0FBA3E0FAA351
+:1019C000E02401F9E43AFAA3E07E0029F9EE3AFABC
+:1019D0001203B6FBB4D2097F247E021217FD419197
+:1019E000EBB4D4097F277E021217FD4191904E85FA
+:1019F000E0FBA3E0FAA3E02401F9E43AFAA3E07ED5
+:101A00000029F9EE3AFA1203B6FBB4D5097F217E1C
+:101A1000021217FD807BEBB4D6097F237E021217DA
+:101A2000FD806E904E85E0FBA3E0FAA3E02401F96F
+:101A3000E43AFAA3E07E0029F9EE3AFA1203B6FB83
+:101A4000B4D7077F701217FD8047EBB4D8097F6FBA
+:101A50007E001217FD803A904E85E0FBA3E0FAA3CA
+:101A6000E02401F9E43AFAA3E07E0029F9EE3AFA1B
+:101A70001203B6FEB4DD067F0151C58014EEB4DE5C
+:101A8000067F0251C5800A1203B6B4DF047F0451F9
+:101A9000C5904DF7E0B40224904E85E0FBA3E0FA38
+:101AA000A3E02401F9E43AFAA3E07E0029F9EE3A32
+:101AB000FA1203B6904DF6F0E41203FC904E88E063
+:101AC00004F0012722904DF7E0640260127404F0E4
+:101AD000904DF27401F0904DF87403F0A3EFF022F2
+:101AE000904D47E06037904DE5E07031904CC5E097
+:101AF000B4032A7B017A4879007D097C00121656CE
+:101B0000E4904DF7F090480004F0904D47E0904885
+:101B100002F07B017A4879007D091215A222904ECD
+:101B200091E4F0A3F0A3F0B1AB50257151904E9128
+:101B3000EBF0A3EAF0A3E9F04A7007904CB604F08A
+:101B4000809E904E91E0FBA3E0FAA3E0F91212937D
+:101B500022E4904E34F0A3F0A3F0A3F0A3F0A3F09E
+:101B6000A3F0A3F0A3F0A3F0A3F012250C7A4D7913
+:101B7000A8904E5A7401F0A3744DF0A374A8F0A37A
+:101B80007414F07B017A4D79BCB1F3EF60167B01E0
+:101B90007A4D79BC7D14B1C3EF7009904CCEE0440E
+:101BA00002F0800C904CCEE054FDF0E4904CD0F06C
+:101BB000E4904E34F0904E34E0FF9006879370022C
+:101BC000818274BC2FF582E4344DF583E0904E376A
+:101BD000F0E0FFB19D904E3EEFF0C39402500281C1
+:101BE0006BE4904E35F0904E35E0FFC39408507B87
+:101BF00074017E00A807088005C333CE33CED8F920
+:101C0000FF904E37E0FDE4EF5D6058E4904E36F013
+:101C1000904E36E0FF900687936048904E34E0FE89
+:101C2000EF6E6037904E36E024BCF582E4344DF51B
+:101C300083E0FD7C00904E35E0FF74017E00A80734
+:101C4000088005C333CE33CED8F9FFEE5CFEEF5DDE
+:101C50004E6008904E3D7401F08008904E36E004CE
+:101C6000F080AD904E35E004F061E6904E37E0FF35
+:101C70006008B19D904E3BE02FF0904E34E004F0B0
+:101C800061B5904E3BE0904DEDF0E4904E34F09015
+:101C90004E34E0FF900687937002A17174932FF584
+:101CA00082E4344DF583E0FE74BC2FF582E4344DBC
+:101CB000F583E06E904E37F0904E34E0FF24BCF593
+:101CC00082E4344DF583E0904E3AF0904E37E07068
+:101CD00004A169A169904E3DE060077B007A00791C
+:101CE000002274BC2FF582E4344DF583E0FE74933A
+:101CF0002FF582E4344DF583EEF0E4904E35F0900C
+:101D00004E35E0FFC39408505A904E37E030E03B28
+:101D1000904E34E0FE33333354F8FEEF4E904E399C
+:101D2000F0A3E0FF904E39E090069C93FDF1FC900B
+:101D30004E3CEFF0904E3AE030E009904E3CE0FF30
+:101D4000D13D8007904E3CE0FFD1F6904E37E0FF4A
+:101D5000C313F0904E3AE0FFC313F0904E35E00409
+:101D6000F0809C904E387401F0904E34E004F08185
+:101D70008F904DF7E0B4030A904DE7E0B40103748F
+:101D800002F0904E38E07007904DE7E0B402077B18
+:101D9000017A4E7950227B007A00790022E4FEEF2E
+:101DA0006006145FFF0E80F7AF0622904B9CE0FEAA
+:101DB000A3E0FF904B9AE0B50607A3E0B50702D376
+:101DC00022C322904E97EBF0A3EAF0A3E9F0E4FFE0
+:101DD000EFC39D501B904E97E0FBA3E0FAA3E0F900
+:101DE0008F827583001203CF60037F00220F80E093
+:101DF0007F0122904E57EBF0A3EAF0A3E9F0E4FF55
+:101E0000904E5DE0FEEFC39E5030904E5AE0FBA333
+:101E1000E0FAA3E0F98F827583001203CFFE904EA3
+:101E200057E0FBA3E0FAA3E0F98F82758300120369
+:101E3000CF6E60037F00220F80C67F0122E4FEFD8B
+:101E4000F9FCEFC394E04020EFD394E7501A904E92
+:101E500050E0FEEF5407FF7401A807088002C33367
+:101E6000D8FC4E904E50F022E4FE74512EF582E4E0
+:101E7000344EF583E060010D0EEEB406EDE4FE7421
+:101E8000512EF582E4344EF583E0B50708EDB40633
+:101E9000047901802774512EF582E4344EF583E0F5
+:101EA0007015904DF6E06F601374512EF582E43496
+:101EB0004EF583EFF080050EEEB406C3ED640670B8
+:101EC00034E97031EFD39470502BEF131313541F78
+:101ED000FC24D1F582E4344DF583C083C082E0FE5A
+:101EE000EF5407FF7401A807088002C333D8FC4EE3
+:101EF000D082D083F022E4FE904EB1F0FDFCEF548E
+:101F0000F064F06007EF54D0FBBBD00C904DF7E0CD
+:101F1000B4020B7403F08006904DE77401F0EFC338
+:101F200094E04021EFD394E7501B904E50E0FEEF39
+:101F30005407FF7401A807088002C333D8FCF45E7D
+:101F4000904E50F022E4FEEC702174512EF582E4A4
+:101F5000344EF583E06F7047EEB4050B2451F582E3
+:101F6000E4344EF583E4F07C01803474512EF58224
+:101F7000E4344EF583E0FB74502EF582E4344EF5E4
+:101F800083EBF074512EF582E4344EF583E0601457
+:101F9000EEB4050B2451F582E4344EF583E4F00EE3
+:101FA000EEB406A3EFD39470502CEF131313541F09
+:101FB000FD24D1F582E4344DF583C083C082E0FE78
+:101FC000EF5407FF7401A807088002C333D8FCF45C
+:101FD0005ED082D083F022904CF5EDF0A3EBF0EFD1
+:101FE00030E012904CF4E0B403047402F022904C00
+:101FF000F47401F022904CF47404F022E4904EB09A
+:10200000F0EF30E005E4904CF8F0904EB0EDF09039
+:102010004DEAE0640160024125ED1205B9218F040B
+:10202000219F0721A70921AF0A21B70B21C70C2146
+:10203000D70D21DF0E21E70F21EF1021CF122197BD
+:102040001621BF18209E1E20A61F20AE2020B621DC
+:1020500020BE2220C62320CE2420D62520DE262006
+:10206000E62720962920FE2A20EE2D20F62E213D5F
+:102070002F21213021673321503421F73621FF37BA
+:10208000220738221F65217EE3220FE42217E62172
+:102090007EE700002225904EB07435F04125904E29
+:1020A000B0743AF04125904EB0743BF04125904E0B
+:1020B000B0743CF04125904EB0743DF04125904EF7
+:1020C000B0743EF04125904EB0743FF04125904EE3
+:1020D000B07440F04125904EB07441F04125904ECF
+:1020E000B07442F04125904EB07443F04125904EBB
+:1020F000B07444F04125904EB07445F04125EF3066
+:10210000E018904CFDE0C394085005E004F0800511
+:10211000E4904CFDF0E4904CFFF0E4904EB0F041C0
+:1021200025EF30E011904D02E0C394045003E00429
+:10213000F0E4904CFFF0E4904EB0F04125EF30E039
+:1021400008904D02E0600214F0E4904EB0F041259A
+:10215000EF30E00C904CFEE0D394014003E014F02B
+:10216000E4904EB0F04125EF30E00C904CFEE0C31F
+:1021700094055003E004F0E4904EB0F04125EF30B8
+:10218000E006904CF9E0F4F0E4904EB0F041259078
+:102190004EB074F2F04125904EB074F4F0412590A9
+:1021A0004EB074F5F0807E904EB074F6F08076906C
+:1021B0004EB074F7F0806E904EB074F8F080669078
+:1021C0004EB07446F0805E904EB07447F0805690EA
+:1021D0004EB07448F0804E904EB07449F0804690F6
+:1021E0004EB0744AF0803E904EB0744BF080369002
+:1021F0004EB0744CF0802E904EB0744DF08026900E
+:102200004EB0744EF0801E904EB07452F080169016
+:102210004EB0744FF0800E904EB07450F080069027
+:102220004EB07451F0904CF9E06017904EB0E0FF62
+:1022300064656009EF64E36004EFB4E705E4904E81
+:10224000B0F0904EB0E0FF22E4904EB2F0F0904E2D
+:10225000B2E0FFC39408500CC205518E904EB2E01C
+:1022600004F080EA22908080E4F0A3F0A3F05148CB
+:10227000E4904EB3F0F0904EB3E090068793FF6089
+:102280000CC205518E904EB3E004F080E922AC07F9
+:10229000ECF46017AF04A205920351BDAF04A20590
+:1022A000B3920251ACAF04C20451CE22EFF4600CE1
+:1022B0007B017A807978A202920051DF22EFF460EC
+:1022C0000C7B017A80797CA203920051DF22EFF42B
+:1022D000600C7B017A807970A204920051DF229019
+:1022E0004EA6EBF0A3EAF0A3E9F0E4FEFDEF5407FD
+:1022F000FEEF1313135403FD300022904EA6E0FBB3
+:10230000A3E0FAA3E02DF9E43AFA1203B6FF740150
+:10231000A806088002C333D8FC4F0203FC904EA6E7
+:10232000E0FBA3E0FAA3E02DF9E43AFA1203B6FFCA
+:102330007401A806088002C333D8FCF45F0203FCD2
+:10234000E4FF904EB4F0FEFDEF900687936049EFF6
+:1023500093FD131313541FFEED5407FD7401A805DC
+:10236000088002C333D8FCFDEE2478FBE434808B74
+:1023700082F583E0FCEDF4FBEC5BF0EE2470F5827B
+:10238000E43480F583E04DF0EE2474F582E434808B
+:10239000F583E05BF00F80B091D890811CE0904E07
+:1023A000B4F0904DE4E06020E4FF71D87F0171D873
+:1023B0007F0271D87F0371D87F0471D87F0571D8EF
+:1023C0007F0671D87F078010904EB4E0FF9000A385
+:1023D000F0EFF49000A7F022904EB8EFF0917792D2
+:1023E00008904EB8E0FFA208B39207EFF4700281A4
+:1023F00076EF5407FEEF1313135403FF3007432403
+:10240000A3F582E43400F583C083C082E0FD74014B
+:10241000A806088002C333D8FCF45DD082D083F0D4
+:1024200074A72FF582E43400F583C083C082E0FFF7
+:102430007401A806088002C333D8FC4FD082D08331
+:10244000F02274A32FF582E43400F583C083C082A8
+:10245000E0FD7401A806088002C333D8FCFC4DD00F
+:1024600082D083F074A72FF582E43400F583E0FF77
+:10247000ECF4FEEF5EF0227B017A81791CAD07E47B
+:10248000904EB7F0FEEF5407F0EF1313135403FE12
+:10249000F5827583001203CFFD3395E0FC904EB7B3
+:1024A000E0FF74017E00A807088005C333CE33CE59
+:1024B000D8F9FFEE5CFEEF5D4E24FF22904EB9EF9F
+:1024C000F07B017A807974917D9209904EB9E0FF9A
+:1024D000A209B392010207DEE4FFEFFD7C0024783D
+:1024E000FBEC34808B82F583E0FEED2470FDEC3450
+:1024F000808D82F583E04EF4FEEF247CFDEC348089
+:102500008D82F583EEF00FEFB404CF22E4FF904EFE
+:1025100094F0FEFDA3F0A3F0EF90068793607CEFAC
+:1025200093FD131313541FFEED5407FD7401A8050A
+:10253000088002C333D8FCFDEE2478FBE434808BA2
+:1025400082F583E0FCEDF4FBEC5BF0EE2470F582A9
+:10255000E43480F583E04DF0EE2474F582E43480B9
+:10256000F583E05BF090811CE0F4FC74BC2FF582F5
+:10257000E4344DF583ECF0EE2478FBE434808B8278
+:10258000F583E04DF0EE2470FBE434808B82F5831C
+:10259000E0FCEDF4FBEC5BF00FA118E4FFEF90061C
+:1025A0008793607CEF93FD131313541FFEED5407C4
+:1025B000FD7401A805088002C333D8FCFDEE247821
+:1025C000FBE434808B82F583E0FCEDF4FBEC5BF004
+:1025D000EE2470F582E43480F583E04DF0EE24744F
+:1025E000F582E43480F583E05BF090811CE0F4FC3C
+:1025F00074A82FF582E4344DF583ECF0EE2478FBDB
+:10260000E434808B82F583E04DF0EE2470FBE434FB
+:10261000808B82F583E0FCEDF4FBEC5BF00FA19D79
+:10262000E4FFEF90068793604074BC2FF582E4349A
+:102630004DF583E0FE74A82FF582E4344DF583E078
+:102640006E602374BC2FF582E4344DF583C083C0E3
+:1026500082E0FE74A82FF582E4344DF583E0FDEEB0
+:102660005DD082D083F00F80B922904D52E0FF9070
+:102670004DECE06F7002C1F9904D52E0904DECF0DE
+:10268000904CD5E06010120F56E4904E79F0A3F014
+:10269000FBFDFF020B21904CFDE064017054904D56
+:1026A00004E06015904D03E0C394555005E004F03C
+:1026B000801BE4904D04F08014904D03E0D394050A
+:1026C0004005E014F08006904D047401F0E4904160
+:1026D00031F0904CFA04F0F172904D03E0FF9080DD
+:1026E000A0F0C374649F9080A2F0908085E0444085
+:1026F000F022904D02E0FFD1FA22904E9AEFF06066
+:1027000006904CD5E0600A120F56D2067F16020BD7
+:1027100060904E9AE0B4040A120F56C2067F160269
+:102720000B60904E9AE0FFB40309A3E4F0A3741980
+:10273000F08018EFB4020B904E9BE4F0A37432F0DB
+:102740008009904E9BE4F0A3744BF0E4904131F08B
+:10275000904CFA04F0F172904E9BE0A3E0FF908061
+:10276000A0F0C374649F9080A2F0908085E0444004
+:10277000F022908042E0F0908051E054DFF09080B1
+:1027800082E04480F022121682122AF9904CEB74F7
+:1027900001F0E4904CF0F0904D0674FFF0904CFE88
+:1027A0007405F0904D0214F0229080107401F080B6
+:1027B000FE2280F5904EABEDF09000011203CF9019
+:1027C0004EACF022904CC5E06403704E904CE3E0B8
+:1027D000FEA3E0FF640A4E7008904D47E06002E4FB
+:1027E000F0EF541F641070207B017A4879007D0956
+:1027F000FC121656E4904DF7F090480004F0FB7A76
+:102800004879007D091215A2C3904CE4E094C09071
+:102810004CE3E09403402E020EE7904CC5E0B40177
+:1028200012C3904CE4E09478904CE3E0940040159F
+:10283000020EE7C3904CE4E09414904CE3E0940063
+:102840004003120EE722904CEEE06018E4904CE357
+:10285000F0A3F0904CEEE014F0E070087F0A120A4A
+:102860002D120EE722120F1F904CE4E004F07006C8
+:10287000904CE3E004F011801227C41209A280C634
+:10288000904CD3E0600A14F0E070057405F01191EB
+:1028900022904E7C12058800000000904C95E0705C
+:1028A00002A3E07002412C904C95E0FEA3E0FF9063
+:1028B0004CD4E0FD04F0ED25E024D6F582E4344C60
+:1028C000F583EEF0A3EFF0904CD4E0C39404400203
+:1028D000E4F0E4904E7BF0904E7CE0F8A3E0F9A3A6
+:1028E000E0FAA3E0FB904E7BE025E024D6F582E4FD
+:1028F000344CF583E0FEA3E0FFE4FCFDEB2FFFEAA0
+:102900003EFEED39FDEC38FC904E7C12057C904E7D
+:102910007BE004F0E0B404BF904E7CE0FCA3E0FD5B
+:10292000A3E0FEA3E0FFE47B04FAF9F81204CB90E5
+:102930004E7C12057C904CE0E0FEA3E0FFE4FCFD41
+:10294000904E7CE0F8A3E0F9A3E0FAA3E0FBC31209
+:10295000056B5008904CD57402F04124904CDEE099
+:10296000FEA3E0FFE4FCFD904E7CE0F8A3E0F9A3B9
+:10297000E0FAA3E0FBC312056B5056904CD57401EE
+:10298000F0904C91E0FEA3E0FFC3904C94E09FFDDB
+:10299000904C93E09EFCE41202067B7B7A14798EC5
+:1029A000783F1200FBC004C005C006C007904C91E0
+:1029B000E0FCA3E0FDE4120206D003D002D001D077
+:1029C0000012000A12023F904CDEEEF0A3EFF080FE
+:1029D00053E4904CD5F0904C91E0FEA3E0FFC390FF
+:1029E0004C94E09FFD904C93E09EFCE41202067B29
+:1029F000B87A1E7985783F1200FBC004C005C00676
+:102A0000C007904C91E0FCA3E0FDE4120206D00365
+:102A1000D002D001D00012000A12023F904CDEEE2C
+:102A2000F0A3EFF0904CD5E0904CFCF022904D05D7
+:102A3000E07011904CEEE0700B904CD5E0640160BA
+:102A400003120B7E904CEAE0600214F0904CEFE031
+:102A5000600214F0904CF8E0600B14F0E070069007
+:102A60004CF47406F0904CEEE07035904CE2E0606F
+:102A70002F14F0E0FFC394085016EF30E109C201B3
+:102A80007F1C1207DE8010D2017F1C1207DE800738
+:102A9000D2017F1C1207DE904CE2E070037418F044
+:102AA000904DE4E07036904DE5E06401702E904C5E
+:102AB000E3F0A3F0904DE5F0904DF8E0600D7B0160
+:102AC0007A4D79F87D031215A28011904800E060DC
+:102AD0000B7B017A4879007D091215A2904DEFE039
+:102AE0006003E014F0227B017A4E790278147C4E68
+:102AF0007D017E007F12020390904CD37405F0E4B8
+:102B0000A3F0FFEF25E024D6F582E4344CF583747E
+:102B100054F0A3F00FEFB404EA904C91E0FEA3E070
+:102B2000FFC3904C94E09FFD904C93E09EFCE41218
+:102B300002067BB87A1E7985783F1200FBC004C07C
+:102B400005C006C007904C91E0FCA3E0FDE4120232
+:102B500006D003D002D001D00012000A12023F902A
+:102B60004CDEEEF0A3EFF0904C91E0FEA3E0FFC34B
+:102B7000904C94E09FFD904C93E09EFCE412020682
+:102B80007B487AE1797A783F1200FBC004C005C027
+:102B900006C007904C91E0FCA3E0FDE4120206D0D1
+:102BA00003D002D001D00012000A12023F904CE084
+:102BB000EEF0A3EFF022904E89EEF0A3EFF0904EEE
+:102BC0008BECF0A3EDF0904E8BE0FEA3E0FFD390F2
+:102BD0004E8AE09F904E89E09E4016904E8BE0FE1C
+:102BE000A3E0FF904E8AE09FFF904E89E09EFE801A
+:102BF0001E904E89E0FEA3E0FFC3904E8CE09FFF45
+:102C0000904E8BE09EFEAD03C3EB9FFFE49EFE2241
+:102C1000904EADEEF0A3EFF0A905904B9EE0FEA321
+:102C2000E0FFAD0119ED602F0FEFAC0670010E143F
+:102C3000F5828C83E0FD904EADE475F001120479CD
+:102C400085F082F583EDF0AD07AC06BC4BD4BD9AA0
+:102C5000D17E4B7F3680CB904B9EEEF0A3EFF022DF
+:102C60007A0C794B904E9D7401F0A3740CF0A37410
+:102C70004BF0904BA0E0FEA3E0FF904B9EE06E7007
+:102C800003A3E06F60467E0C7F4B7D039110904E56
+:102C90009DE0FBA3E0FAA3E0F91203B6B4022B9087
+:102CA0004E9EE475F002120463904E9DE0FBA3E09B
+:102CB000FAA3E0F91203B6FF904E14E0A3E0FAA3E2
+:102CC000E0F5828A831205E3800280FE904BA5E046
+:102CD000FEA3E0FF904C5EE06E7003A3E06F602205
+:102CE000904E1AE0FBA3E0FAA3E0F94A6037120520
+:102CF000DF904BA5E0FFA3E0904C5ECFF0A3EFF098
+:102D000080CA904C8DE0FFA3E06F6019904E1DE0EB
+:102D1000FBA3E0FAA3E0F94A600B1205DF904C8DAB
+:102D2000E0A3F080DD22900446E0FF22900B7F7448
+:102D300001F0E4900B7EF0229082807401F02290EA
+:102D40004E48EBF0A3EAF0A3E9F0904E4E74FFF585
+:102D5000F012047945F0602A904E4BE0FBA3E47535
+:102D6000F001120479A9F0FA1203B6FF904E48E080
+:102D7000FBA3E475F001120479A9F0FAEF1203FC49
+:102D800080C822904EA3EBF0A3EAF0A3E9F0ED1D7A
+:102D9000AE0470011C4E6017904EA3E0FBA3E475D7
+:102DA000F001120479A9F0FA74FF1203FC80DF220B
+:102DB000EFF4603AEF5407FEEF1313135403FF24AC
+:102DC000A3F582E43400F583C083C082E0FD740182
+:102DD000A806088002C333D8FCF4FC5DD082D083FF
+:0F2DE000F074A72FF582E43400F583E05CF02255
+:00000001FF
Index: output/fwram.rom
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/fwram.rom	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/fwram.rom	(working copy)
@@ -0,0 +1,11759 @@
+02
+05
+e5
+02
+02
+ab
+e8
+64
+80
+f8
+e9
+33
+e8
+33
+60
+11
+04
+60
+f0
+ed
+33
+ec
+33
+70
+09
+e8
+fc
+e9
+fd
+ea
+fe
+eb
+ff
+22
+04
+60
+de
+d3
+eb
+9f
+ea
+9e
+e9
+9d
+e8
+c2
+e7
+8c
+f0
+c2
+f7
+95
+f0
+40
+0c
+e8
+cc
+f8
+e9
+cd
+f9
+ea
+ce
+fa
+eb
+cf
+fb
+12
+02
+76
+85
+d0
+f0
+58
+04
+70
+03
+20
+d5
+b3
+e8
+04
+70
+07
+50
+02
+b2
+d5
+02
+02
+b5
+92
+d5
+ec
+04
+60
+f7
+e4
+cc
+c0
+e0
+c3
+98
+f8
+60
+3b
+94
+18
+60
+08
+40
+0d
+d0
+e0
+fb
+02
+02
+8d
+e4
+fb
+fa
+c9
+fc
+80
+28
+e8
+30
+e4
+06
+e4
+c9
+fb
+e4
+ca
+fc
+e8
+30
+e3
+05
+e4
+c9
+ca
+cb
+fc
+e8
+54
+07
+60
+10
+f8
+c3
+e9
+13
+f9
+ea
+13
+fa
+eb
+13
+fb
+ec
+13
+fc
+d8
+f1
+30
+f5
+2f
+c3
+e4
+9c
+fc
+ef
+9b
+ff
+ee
+9a
+fe
+ed
+99
+fd
+d0
+e0
+fb
+ef
+4e
+4d
+4c
+70
+12
+22
+db
+03
+02
+02
+b2
+ec
+2c
+fc
+ef
+33
+ff
+ee
+33
+fe
+ed
+33
+fd
+ed
+30
+e7
+eb
+02
+02
+8d
+ef
+2b
+ff
+ee
+3a
+fe
+ed
+39
+fd
+d0
+e0
+fb
+50
+13
+0b
+bb
+00
+03
+02
+02
+b5
+ed
+13
+fd
+ee
+13
+fe
+ef
+13
+ff
+ec
+13
+fc
+02
+02
+8d
+ec
+4d
+60
+11
+e8
+49
+70
+17
+ed
+33
+ec
+33
+04
+60
+0d
+e4
+fc
+ff
+fe
+fd
+22
+e9
+33
+e8
+33
+04
+70
+f8
+02
+02
+ab
+12
+02
+76
+58
+04
+60
+09
+e4
+cc
+24
+81
+50
+06
+28
+50
+09
+02
+02
+b5
+28
+40
+03
+02
+02
+b2
+c0
+e0
+eb
+4a
+70
+44
+b9
+80
+06
+d0
+e0
+fb
+02
+02
+a1
+ef
+4e
+70
+1c
+bd
+80
+08
+eb
+ff
+ea
+fe
+e9
+fd
+80
+eb
+e9
+8d
+f0
+a4
+fe
+e5
+f0
+02
+01
+e4
+e9
+cd
+f9
+ea
+fe
+eb
+ff
+ef
+89
+f0
+a4
+fc
+e5
+f0
+ce
+89
+f0
+a4
+2e
+ff
+e4
+35
+f0
+cd
+89
+f0
+a4
+2d
+fe
+e4
+35
+f0
+80
+67
+ef
+4e
+70
+05
+bd
+80
+d7
+80
+c3
+ef
+8b
+f0
+a4
+ac
+f0
+ee
+8b
+f0
+a4
+2c
+fc
+e4
+35
+f0
+f8
+ef
+8a
+f0
+a4
+2c
+e5
+f0
+38
+fc
+e4
+33
+cb
+8d
+f0
+a4
+2c
+fc
+e5
+f0
+3b
+f8
+ee
+8a
+f0
+a4
+2c
+fc
+e5
+f0
+38
+f8
+e4
+33
+cf
+89
+f0
+a4
+2c
+fc
+e5
+f0
+38
+cf
+34
+00
+ce
+89
+f0
+a4
+2f
+ff
+e5
+f0
+3e
+fe
+e4
+33
+c9
+8d
+f0
+a4
+2e
+fe
+e5
+f0
+39
+cd
+8a
+f0
+a4
+2f
+ff
+e5
+f0
+3e
+fe
+e4
+3d
+fd
+33
+d0
+e0
+fb
+50
+07
+0b
+bb
+00
+0f
+02
+02
+b5
+ec
+2c
+fc
+ef
+33
+ff
+ee
+33
+fe
+ed
+33
+fd
+02
+02
+8d
+75
+f0
+20
+80
+0e
+75
+f0
+10
+80
+05
+75
+f0
+08
+7d
+00
+7e
+00
+7f
+00
+33
+92
+d5
+30
+d5
+03
+12
+05
+5d
+ec
+33
+40
+10
+ef
+33
+ff
+ee
+33
+fe
+ed
+33
+fd
+ec
+33
+fc
+d5
+f0
+ed
+22
+e5
+f0
+24
+7e
+a2
+d5
+13
+cc
+92
+e7
+cd
+ce
+ff
+22
+ed
+d2
+e7
+cd
+33
+ec
+33
+92
+d5
+24
+81
+40
+06
+e4
+ff
+fe
+fd
+fc
+22
+fc
+e4
+cf
+ce
+cd
+cc
+24
+e0
+50
+11
+74
+ff
+80
+ed
+c3
+cc
+13
+cc
+cd
+13
+cd
+ce
+13
+ce
+cf
+13
+cf
+04
+70
+f0
+30
+d5
+de
+02
+05
+5d
+e9
+d2
+e7
+c9
+33
+e8
+33
+f8
+92
+d5
+ed
+d2
+e7
+cd
+33
+ec
+33
+fc
+50
+02
+b2
+d5
+22
+ec
+30
+e7
+10
+0f
+bf
+00
+0c
+0e
+be
+00
+08
+0d
+bd
+00
+04
+0b
+eb
+60
+14
+a2
+d5
+eb
+13
+fc
+ed
+92
+e7
+fd
+22
+74
+ff
+fc
+fd
+fe
+ff
+22
+e4
+80
+f8
+a2
+d5
+74
+ff
+13
+fc
+7d
+80
+e4
+80
+ef
+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
+03
+10
+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
+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
+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
+75
+f0
+08
+75
+82
+00
+ef
+2f
+ff
+ee
+33
+fe
+cd
+33
+cd
+cc
+33
+cc
+c5
+82
+33
+c5
+82
+9b
+ed
+9a
+ec
+99
+e5
+82
+98
+40
+0c
+f5
+82
+ee
+9b
+fe
+ed
+9a
+fd
+ec
+99
+fc
+0f
+d5
+f0
+d6
+e4
+ce
+fb
+e4
+cd
+fa
+e4
+cc
+f9
+a8
+82
+22
+b8
+00
+c1
+b9
+00
+59
+ba
+00
+2d
+ec
+8b
+f0
+84
+cf
+ce
+cd
+fc
+e5
+f0
+cb
+f9
+78
+18
+ef
+2f
+ff
+ee
+33
+fe
+ed
+33
+fd
+ec
+33
+fc
+eb
+33
+fb
+10
+d7
+03
+99
+40
+04
+eb
+99
+fb
+0f
+d8
+e5
+e4
+f9
+fa
+22
+78
+18
+ef
+2f
+ff
+ee
+33
+fe
+ed
+33
+fd
+ec
+33
+fc
+c9
+33
+c9
+10
+d7
+05
+9b
+e9
+9a
+40
+07
+ec
+9b
+fc
+e9
+9a
+f9
+0f
+d8
+e0
+e4
+c9
+fa
+e4
+cc
+fb
+22
+75
+f0
+10
+ef
+2f
+ff
+ee
+33
+fe
+ed
+33
+fd
+cc
+33
+cc
+c8
+33
+c8
+10
+d7
+07
+9b
+ec
+9a
+e8
+99
+40
+0a
+ed
+9b
+fd
+ec
+9a
+fc
+e8
+99
+f8
+0f
+d5
+f0
+da
+e4
+cd
+fb
+e4
+cc
+fa
+e4
+c8
+f9
+22
+c3
+e4
+9f
+ff
+e4
+9e
+fe
+e4
+9d
+fd
+e4
+9c
+fc
+22
+eb
+9f
+f5
+f0
+ea
+9e
+42
+f0
+e9
+9d
+42
+f0
+e8
+9c
+45
+f0
+22
+ec
+f0
+a3
+ed
+f0
+a3
+ee
+f0
+a3
+ef
+f0
+22
+a8
+82
+85
+83
+f0
+d0
+83
+d0
+82
+12
+05
+9f
+12
+05
+9f
+12
+05
+9f
+12
+05
+9f
+e4
+73
+e4
+93
+a3
+c5
+83
+c5
+f0
+c5
+83
+c8
+c5
+82
+c8
+f0
+a3
+c5
+83
+c5
+f0
+c5
+83
+c8
+c5
+82
+c8
+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
+06
+2c
+02
+0f
+f0
+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
+06
+71
+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
+4e
+02
+ff
+0a
+45
+00
+00
+00
+ff
+28
+65
+ff
+2a
+2d
+00
+00
+00
+ff
+27
+b4
+00
+1a
+08
+09
+0a
+0b
+0c
+0d
+0e
+19
+18
+17
+12
+11
+10
+0f
+00
+00
+00
+00
+00
+00
+29
+00
+00
+00
+39
+00
+00
+00
+2b
+14
+1a
+04
+00
+2c
+1d
+e2
+00
+1e
+1f
+00
+e1
+00
+00
+00
+00
+20
+00
+e3
+16
+00
+00
+00
+00
+21
+00
+00
+08
+00
+00
+00
+00
+22
+00
+00
+09
+00
+00
+00
+00
+23
+1c
+00
+1b
+00
+00
+00
+00
+24
+18
+0b
+05
+11
+e4
+00
+00
+25
+0c
+0d
+10
+65
+87
+00
+00
+26
+12
+0e
+07
+36
+37
+4a
+00
+27
+13
+0f
+0a
+e6
+38
+4d
+00
+2d
+2f
+33
+17
+7f
+06
+4b
+00
+2e
+30
+34
+15
+00
+64
+4e
+00
+49
+28
+31
+19
+e5
+4d
+52
+00
+2a
+4c
+32
+e0
+50
+51
+4f
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+00
+01
+01
+00
+90
+4c
+c5
+e0
+b4
+03
+03
+7f
+01
+22
+7f
+00
+22
+90
+4d
+f4
+e0
+64
+02
+60
+02
+e1
+dd
+90
+4c
+f9
+e0
+60
+09
+d2
+06
+7f
+1f
+12
+0b
+60
+80
+07
+c2
+06
+7f
+1f
+12
+0b
+60
+90
+4c
+e9
+e0
+70
+67
+90
+4c
+ee
+e0
+70
+61
+90
+4d
+05
+e0
+70
+03
+12
+26
+6a
+90
+4c
+d5
+e0
+b4
+02
+05
+12
+0e
+e7
+80
+2e
+90
+4c
+d5
+e0
+b4
+01
+14
+90
+4c
+f7
+e0
+70
+21
+90
+4c
+e2
+74
+18
+f0
+90
+4c
+f7
+74
+01
+f0
+80
+13
+90
+4c
+f7
+e0
+b4
+01
+0c
+e4
+f0
+90
+4c
+e2
+f0
+d2
+01
+7f
+1c
+f1
+de
+f1
+3d
+ef
+60
+13
+90
+4c
+b7
+e0
+30
+e1
+06
+c2
+01
+7f
+1d
+80
+13
+d2
+01
+7f
+1d
+80
+0d
+d2
+01
+7f
+1d
+80
+07
+d2
+01
+7f
+1d
+f1
+de
+22
+ef
+f4
+60
+0d
+7b
+01
+7a
+80
+79
+74
+a2
+01
+92
+00
+12
+22
+df
+22
+e4
+ff
+90
+4c
+ee
+e0
+60
+01
+22
+90
+4c
+c5
+e0
+64
+03
+60
+1c
+90
+4c
+ef
+e0
+70
+1d
+74
+0a
+f0
+a3
+e0
+70
+16
+90
+4d
+f4
+e0
+b4
+02
+0f
+7f
+09
+11
+25
+7f
+01
+80
+07
+e4
+90
+4c
+eb
+f0
+7f
+01
+22
+90
+4e
+af
+ef
+f0
+24
+f7
+60
+09
+14
+60
+5e
+24
+02
+60
+02
+01
+c8
+e4
+90
+4c
+f0
+f0
+7b
+01
+7a
+4c
+79
+00
+7d
+04
+fc
+7f
+f0
+7e
+7f
+12
+11
+a3
+7f
+0a
+51
+2d
+e4
+90
+4e
+01
+f0
+90
+4c
+00
+e0
+f4
+70
+21
+a3
+e0
+b4
+ff
+1c
+a3
+e0
+b4
+ff
+17
+a3
+e0
+b4
+ff
+12
+90
+4c
+00
+74
+0f
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+90
+4e
+01
+74
+01
+f0
+7f
+21
+11
+ce
+90
+4c
+c5
+74
+02
+f0
+e4
+a3
+f0
+90
+4c
+ed
+f0
+22
+e4
+90
+4c
+f0
+f0
+31
+8b
+ef
+60
+09
+90
+4e
+af
+e0
+90
+4c
+ed
+f0
+22
+90
+4c
+c5
+e0
+64
+01
+60
+18
+7f
+23
+11
+ce
+90
+4c
+c5
+74
+01
+f0
+e4
+a3
+f0
+90
+4c
+ee
+74
+78
+f0
+e4
+90
+4c
+e9
+f0
+e4
+90
+4c
+ed
+f0
+22
+e4
+90
+4c
+ed
+f0
+22
+90
+4e
+8d
+ef
+f0
+78
+8e
+7c
+4e
+7d
+01
+7b
+ff
+7a
+07
+79
+3a
+7e
+00
+7f
+03
+12
+03
+90
+90
+4e
+8d
+e0
+90
+4e
+90
+f0
+7b
+01
+7a
+4e
+79
+8e
+7d
+03
+90
+4e
+65
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+a3
+ed
+f0
+90
+4b
+9c
+e0
+ff
+a3
+e0
+90
+4e
+69
+cf
+f0
+a3
+ef
+f0
+90
+4b
+9a
+e0
+fe
+a3
+e0
+ff
+90
+4b
+9c
+e0
+fc
+a3
+e0
+fd
+7b
+64
+12
+2b
+b6
+90
+4e
+68
+e0
+fe
+ef
+c3
+9e
+40
+e1
+90
+4e
+68
+e0
+ff
+14
+f0
+ef
+60
+3f
+90
+4e
+65
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+04
+79
+a9
+f0
+fa
+12
+03
+b6
+ff
+90
+4e
+69
+e4
+75
+f0
+01
+12
+04
+79
+85
+f0
+82
+f5
+83
+ef
+f0
+90
+4e
+69
+e0
+fe
+a3
+e0
+ff
+be
+4b
+c6
+bf
+36
+c3
+90
+4e
+69
+74
+4a
+f0
+a3
+74
+a0
+f0
+80
+b7
+90
+4e
+69
+e0
+ff
+a3
+e0
+90
+4b
+9c
+cf
+f0
+a3
+ef
+f0
+22
+90
+4c
+c5
+e0
+ff
+64
+03
+60
+04
+ef
+b4
+02
+07
+7f
+22
+11
+ce
+7f
+01
+22
+7f
+00
+22
+90
+4c
+ce
+e0
+30
+e1
+3d
+90
+4c
+d0
+e0
+c3
+94
+fa
+50
+03
+e0
+04
+f0
+90
+4c
+d0
+e0
+64
+b4
+70
+36
+90
+4d
+eb
+e0
+04
+f0
+e0
+d3
+94
+02
+50
+07
+e4
+90
+4c
+d0
+f0
+80
+23
+90
+4d
+eb
+e0
+b4
+03
+1c
+90
+4d
+e4
+74
+01
+f0
+e4
+90
+4c
+d0
+f0
+d1
+e7
+80
+0d
+e4
+90
+4d
+eb
+f0
+90
+4d
+e4
+f0
+90
+4c
+d0
+f0
+90
+4c
+ce
+e0
+30
+e4
+2d
+90
+4c
+ea
+74
+0a
+f0
+90
+4c
+d1
+e0
+c3
+94
+fa
+50
+03
+e0
+04
+f0
+90
+4c
+d1
+e0
+b4
+06
+19
+90
+4c
+c3
+e0
+ff
+60
+03
+b4
+fe
+0f
+31
+8b
+7f
+0a
+51
+2d
+7f
+0a
+01
+25
+e4
+90
+4c
+d1
+f0
+22
+ef
+d3
+94
+00
+40
+11
+e4
+fd
+fc
+0d
+bd
+00
+01
+0c
+bc
+04
+f8
+bd
+a6
+f5
+1f
+80
+e9
+22
+90
+4e
+b5
+ef
+f0
+24
+d0
+60
+5d
+14
+60
+65
+14
+70
+02
+41
+f4
+14
+60
+0a
+24
+f7
+60
+59
+24
+0d
+60
+02
+61
+20
+f1
+e9
+12
+27
+86
+7b
+01
+7a
+4c
+79
+00
+7d
+04
+7c
+00
+7f
+f0
+7e
+7f
+12
+11
+a3
+7f
+0a
+51
+2d
+90
+4c
+c1
+e0
+f9
+7a
+00
+7b
+00
+7d
+01
+7c
+00
+7f
+f8
+7e
+7f
+12
+11
+a3
+7f
+0a
+51
+2d
+d2
+06
+7f
+16
+71
+60
+90
+4e
+79
+74
+01
+f0
+a3
+f0
+fb
+fd
+ff
+71
+21
+02
+10
+05
+f1
+f2
+12
+22
+65
+e4
+90
+4d
+05
+f0
+22
+90
+4c
+c5
+74
+03
+f0
+e4
+a3
+f0
+f1
+e3
+e4
+90
+4c
+ee
+f0
+90
+4c
+eb
+f0
+90
+4c
+c0
+74
+fe
+f0
+90
+4c
+c3
+f0
+90
+4d
+47
+74
+03
+f0
+90
+4d
+ef
+74
+0a
+f0
+90
+4e
+b5
+e0
+64
+31
+70
+38
+90
+4e
+01
+f0
+90
+4c
+bf
+04
+f0
+02
+10
+10
+e4
+90
+4c
+c5
+f0
+a3
+f0
+90
+4c
+e3
+f0
+a3
+f0
+90
+4c
+eb
+04
+f0
+90
+4c
+ed
+e0
+60
+09
+f1
+e3
+90
+4c
+ed
+e0
+ff
+01
+25
+90
+4c
+ec
+e0
+b4
+01
+04
+e4
+f0
+d1
+e7
+22
+90
+4e
+77
+ed
+f0
+a3
+eb
+f0
+ef
+24
+ff
+92
+06
+7f
+13
+71
+60
+90
+4e
+77
+e0
+24
+ff
+92
+06
+7f
+14
+71
+60
+90
+4e
+78
+e0
+24
+ff
+92
+06
+7f
+15
+71
+60
+90
+4e
+79
+e0
+24
+ff
+92
+06
+7f
+1e
+71
+60
+90
+4e
+7a
+e0
+24
+ff
+92
+06
+7f
+1b
+ac
+07
+ec
+f4
+60
+17
+af
+04
+d2
+04
+12
+22
+ce
+af
+04
+a2
+06
+92
+01
+12
+07
+de
+af
+04
+c2
+02
+12
+22
+ac
+22
+90
+4d
+01
+e0
+04
+f0
+70
+06
+90
+4d
+00
+e0
+04
+f0
+90
+4c
+fe
+e0
+fd
+7c
+00
+90
+4d
+00
+e0
+fe
+a3
+e0
+ff
+12
+04
+0e
+ed
+4c
+60
+02
+c1
+c6
+90
+4c
+fd
+e0
+b4
+08
+00
+40
+02
+c1
+ba
+90
+0b
+b6
+f8
+28
+28
+73
+02
+0b
+ce
+02
+0e
+c6
+02
+0b
+db
+02
+0c
+69
+02
+0c
+f3
+02
+0d
+4f
+02
+0d
+ab
+02
+0e
+34
+90
+4e
+79
+74
+01
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+70
+0f
+04
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+7f
+01
+61
+21
+90
+4c
+ff
+e0
+b4
+01
+11
+74
+02
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+7d
+01
+7f
+01
+61
+21
+90
+4c
+ff
+e0
+b4
+02
+12
+74
+03
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+7b
+01
+7d
+01
+7f
+01
+61
+21
+90
+4c
+ff
+e0
+b4
+03
+14
+74
+04
+f0
+90
+4e
+79
+74
+01
+f0
+e4
+a3
+f0
+7b
+01
+7d
+01
+7f
+01
+61
+21
+90
+4c
+ff
+e0
+b4
+04
+10
+74
+05
+f0
+90
+4e
+79
+74
+01
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+64
+05
+60
+02
+c1
+c6
+f0
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+70
+10
+04
+f0
+e4
+90
+4e
+79
+f0
+a3
+04
+f0
+e4
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+01
+10
+74
+02
+f0
+90
+4e
+79
+14
+f0
+a3
+f0
+e4
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+02
+11
+74
+03
+f0
+90
+4e
+79
+74
+01
+f0
+a3
+f0
+fb
+e4
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+03
+11
+74
+04
+f0
+90
+4e
+79
+74
+01
+f0
+a3
+f0
+fb
+fd
+e4
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+04
+10
+74
+05
+f0
+90
+4e
+79
+74
+01
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+64
+05
+60
+02
+c1
+c6
+f0
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+70
+0f
+04
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+7b
+01
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+01
+11
+74
+02
+f0
+90
+4e
+79
+14
+f0
+e4
+a3
+f0
+fb
+7d
+01
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+02
+12
+74
+03
+f0
+e4
+90
+4e
+79
+f0
+a3
+04
+f0
+e4
+fb
+fd
+7f
+01
+61
+21
+90
+4c
+ff
+e0
+64
+03
+60
+02
+c1
+c6
+f0
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+70
+11
+04
+f0
+e4
+90
+4e
+79
+f0
+a3
+04
+f0
+e4
+fb
+fd
+7f
+01
+61
+21
+90
+4c
+ff
+e0
+b4
+01
+11
+74
+02
+f0
+90
+4e
+79
+14
+f0
+e4
+a3
+f0
+fb
+7d
+01
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+02
+10
+74
+03
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+7b
+01
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+64
+03
+60
+02
+c1
+c6
+f0
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+70
+0f
+04
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+7f
+01
+61
+21
+90
+4c
+ff
+e0
+b4
+01
+10
+74
+02
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+7d
+01
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+02
+10
+74
+03
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+7b
+01
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+03
+11
+74
+04
+f0
+90
+4e
+79
+74
+01
+f0
+e4
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+04
+11
+74
+05
+f0
+e4
+90
+4e
+79
+f0
+a3
+04
+f0
+e4
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+64
+05
+60
+02
+c1
+c6
+f0
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+70
+10
+04
+f0
+e4
+90
+4e
+79
+f0
+a3
+04
+f0
+e4
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+01
+10
+74
+02
+f0
+90
+4e
+79
+14
+f0
+e4
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+02
+10
+74
+03
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+7b
+01
+fd
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+03
+10
+74
+04
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+7d
+01
+ff
+61
+21
+90
+4c
+ff
+e0
+b4
+04
+10
+74
+05
+f0
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+7f
+01
+61
+21
+90
+4c
+ff
+e0
+64
+05
+70
+18
+f0
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+71
+21
+22
+f1
+56
+d2
+06
+7f
+1d
+71
+60
+d2
+06
+7f
+1f
+71
+60
+d2
+06
+7f
+1c
+71
+60
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+90
+4d
+05
+74
+01
+f0
+e4
+90
+4c
+e6
+f0
+a3
+f0
+a3
+f0
+90
+4c
+b7
+74
+f0
+f0
+90
+4d
+e8
+f0
+e4
+90
+4c
+fd
+f0
+90
+4c
+f7
+f0
+90
+4c
+e2
+f0
+90
+4b
+ef
+74
+ff
+f0
+90
+4d
+3d
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+80
+a8
+90
+4d
+f4
+e0
+64
+02
+70
+2e
+90
+4c
+ee
+e0
+60
+28
+f1
+56
+c2
+06
+7f
+16
+71
+60
+90
+4c
+ee
+e0
+30
+e0
+0d
+90
+4e
+79
+74
+01
+f0
+a3
+f0
+fb
+fd
+ff
+61
+21
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+71
+21
+22
+90
+4c
+e9
+e0
+70
+0e
+90
+4c
+fa
+e0
+b4
+01
+07
+e4
+f0
+90
+41
+31
+04
+f0
+90
+80
+51
+e0
+44
+20
+f0
+90
+80
+82
+e0
+54
+7f
+f0
+90
+80
+85
+e0
+54
+bf
+f0
+22
+12
+2a
+e6
+12
+2c
+60
+12
+17
+4d
+12
+10
+10
+12
+07
+4a
+90
+4d
+76
+e0
+60
+02
+d1
+e7
+90
+0b
+7e
+e0
+14
+60
+0f
+24
+fe
+70
+e1
+12
+23
+40
+f1
+56
+d1
+c9
+f1
+d6
+80
+fe
+90
+4c
+ea
+e0
+70
+0c
+90
+4c
+ec
+e0
+70
+06
+90
+4c
+f8
+e0
+60
+05
+12
+2d
+2c
+80
+bf
+12
+23
+40
+90
+4d
+05
+e0
+60
+02
+d1
+c7
+f1
+d6
+80
+b0
+80
+ae
+22
+e4
+90
+0b
+7f
+f0
+90
+0b
+7e
+f0
+7f
+01
+41
+2d
+e4
+90
+4c
+f0
+f0
+22
+f1
+f2
+12
+22
+65
+c1
+c9
+80
+8e
+90
+80
+91
+74
+0d
+f0
+a3
+04
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+14
+f0
+22
+90
+4d
+f4
+74
+02
+f0
+7f
+08
+02
+08
+25
+90
+4c
+bf
+e0
+60
+3d
+90
+4c
+e0
+e0
+fe
+a3
+e0
+ff
+c3
+90
+4c
+96
+e0
+9f
+90
+4c
+95
+e0
+9e
+40
+28
+c2
+01
+7f
+ff
+12
+07
+de
+7b
+01
+7a
+4c
+79
+00
+7d
+04
+7c
+00
+7f
+f0
+7e
+7f
+11
+54
+d2
+01
+7f
+ff
+12
+07
+de
+7f
+0a
+12
+0a
+2d
+e4
+90
+4c
+bf
+f0
+22
+90
+4e
+3f
+ee
+f0
+a3
+ef
+f0
+a3
+ec
+f0
+a3
+ed
+f0
+a3
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+4e
+41
+e0
+70
+02
+a3
+e0
+70
+02
+21
+01
+90
+4e
+3f
+e0
+fe
+a3
+e0
+ff
+44
+0f
+24
+01
+fd
+e4
+3e
+fc
+c3
+ed
+9f
+ff
+ec
+9e
+fe
+90
+4e
+46
+f0
+a3
+ef
+f0
+90
+4e
+41
+e0
+fc
+a3
+e0
+fd
+d3
+9f
+ec
+9e
+40
+0a
+90
+4e
+46
+e0
+fe
+a3
+e0
+ff
+80
+04
+ae
+04
+af
+05
+90
+4e
+46
+ee
+f0
+fc
+a3
+ef
+f0
+fd
+c3
+90
+4e
+42
+e0
+9d
+f0
+90
+4e
+41
+e0
+9c
+f0
+90
+4e
+3f
+e0
+fe
+a3
+e0
+ff
+90
+4e
+43
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+31
+02
+7f
+0a
+12
+0a
+2d
+90
+4e
+46
+e0
+fe
+a3
+e0
+ff
+90
+4e
+44
+ee
+8f
+f0
+12
+04
+63
+90
+4e
+40
+e0
+2f
+f0
+90
+4e
+3f
+e0
+3e
+f0
+01
+6b
+22
+90
+4e
+5e
+ee
+f0
+a3
+ef
+f0
+90
+4e
+62
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+4e
+60
+ec
+f0
+a3
+ed
+f0
+a3
+e0
+f9
+a3
+e0
+fa
+a3
+e0
+90
+4e
+4b
+c9
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+a3
+ec
+f0
+a3
+ed
+f0
+7b
+01
+7a
+0b
+79
+86
+12
+2d
+3f
+90
+0b
+83
+74
+a0
+f0
+90
+4e
+5e
+e0
+ff
+a3
+e0
+90
+0b
+84
+cf
+f0
+a3
+ef
+f0
+90
+4e
+61
+e0
+24
+03
+fd
+90
+4e
+60
+e0
+34
+00
+fc
+ed
+fa
+ec
+ff
+ea
+fe
+ef
+90
+80
+98
+ee
+f0
+a3
+ef
+f0
+7a
+0b
+79
+83
+7e
+0b
+7f
+83
+74
+83
+fc
+74
+0b
+ff
+ec
+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
+80
+ec
+f0
+a3
+ed
+f0
+a3
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+80
+98
+74
+04
+f0
+a3
+e4
+f0
+90
+0c
+af
+74
+a0
+f0
+a3
+ee
+f0
+a3
+ef
+f0
+90
+0c
+b2
+74
+a1
+f0
+7a
+0c
+79
+af
+7e
+0c
+7f
+af
+74
+af
+fc
+74
+0c
+ff
+ec
+fe
+ef
+90
+80
+9a
+ee
+f0
+a3
+ef
+f0
+90
+4e
+80
+e0
+fc
+a3
+e0
+fa
+ec
+ff
+ea
+fe
+ef
+90
+80
+9e
+ee
+f0
+a3
+ef
+f0
+7a
+0b
+79
+83
+7e
+0b
+7f
+83
+74
+83
+fc
+74
+0b
+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
+31
+9b
+90
+4e
+82
+e0
+a3
+e0
+fa
+a3
+e0
+ae
+02
+ff
+7b
+01
+7a
+0b
+79
+83
+90
+4e
+80
+e0
+a3
+e0
+90
+4e
+70
+f0
+90
+4e
+6b
+ee
+f0
+a3
+ef
+f0
+a3
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+4e
+70
+e0
+ff
+14
+f0
+ef
+60
+27
+90
+4e
+6d
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+04
+79
+a9
+f0
+fa
+12
+03
+b6
+ff
+90
+4e
+6b
+e4
+75
+f0
+01
+12
+04
+79
+85
+f0
+82
+f5
+83
+ef
+f0
+80
+cf
+22
+90
+4e
+71
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+e4
+a3
+f0
+a3
+f0
+90
+4d
+ea
+f0
+90
+4e
+75
+f0
+90
+4e
+75
+e0
+ff
+c3
+94
+05
+50
+2c
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+7e
+00
+e9
+2f
+f9
+ee
+3a
+fa
+12
+03
+b6
+b4
+7f
+06
+90
+4d
+ea
+74
+01
+f0
+90
+4e
+75
+e0
+04
+f0
+80
+ca
+90
+4d
+ea
+e0
+90
+4d
+f3
+f0
+90
+4e
+71
+e0
+a3
+e0
+fa
+a3
+e0
+4a
+70
+02
+a1
+a1
+90
+4d
+76
+e0
+60
+08
+e4
+f0
+90
+4d
+47
+74
+03
+f0
+90
+4d
+ef
+74
+0a
+f0
+e4
+90
+4c
+e3
+f0
+a3
+f0
+90
+4d
+05
+f0
+90
+4c
+fd
+e0
+64
+08
+60
+12
+e4
+90
+4d
+3d
+f0
+a3
+74
+48
+f0
+a3
+74
+12
+f0
+e4
+a3
+f0
+80
+10
+e4
+90
+4d
+3d
+f0
+a3
+74
+48
+f0
+a3
+74
+5d
+f0
+e4
+a3
+f0
+7b
+01
+7a
+48
+79
+00
+7d
+09
+7c
+00
+d1
+56
+7b
+01
+7a
+4d
+79
+f8
+7d
+09
+7c
+00
+d1
+56
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+90
+00
+01
+12
+03
+cf
+ff
+b4
+7f
+0a
+90
+00
+02
+12
+03
+cf
+64
+19
+60
+0e
+ef
+64
+19
+70
+23
+90
+00
+02
+12
+03
+cf
+b4
+7f
+1a
+90
+4c
+c5
+e0
+64
+01
+60
+09
+90
+4c
+ce
+e0
+44
+10
+f0
+80
+10
+90
+4c
+ce
+e0
+54
+ef
+f0
+80
+07
+90
+4c
+ce
+e0
+54
+ef
+f0
+90
+4c
+b6
+74
+01
+f0
+90
+4c
+f4
+e0
+ff
+64
+01
+70
+02
+a1
+a1
+ef
+64
+04
+70
+02
+a1
+a1
+ef
+64
+02
+70
+02
+a1
+a1
+90
+4c
+c5
+e0
+64
+03
+70
+45
+90
+4e
+75
+f0
+90
+4e
+75
+e0
+ff
+c3
+94
+05
+50
+37
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+7e
+00
+e9
+2f
+f9
+ee
+3a
+fa
+12
+03
+b6
+ff
+64
+39
+60
+09
+ef
+64
+53
+60
+04
+ef
+b4
+47
+06
+90
+4d
+47
+74
+03
+f0
+90
+4e
+75
+e0
+04
+f0
+80
+bf
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+18
+18
+90
+4d
+f7
+e0
+b4
+01
+11
+74
+02
+f0
+90
+4d
+f8
+f0
+7b
+01
+7a
+4d
+79
+f8
+7d
+03
+a1
+a2
+90
+4d
+f7
+e0
+b4
+04
+11
+74
+02
+f0
+90
+4d
+f8
+04
+f0
+7b
+01
+7a
+4d
+79
+f8
+fd
+a1
+a2
+90
+4d
+f7
+e0
+64
+03
+60
+0b
+e0
+64
+02
+70
+2f
+90
+4d
+ed
+e0
+70
+29
+e4
+90
+4d
+f7
+f0
+90
+4d
+f6
+f0
+90
+4d
+f2
+e0
+60
+0a
+e4
+f0
+90
+4d
+f8
+74
+03
+f0
+80
+06
+90
+4d
+f8
+74
+02
+f0
+7b
+01
+7a
+4d
+79
+f8
+7d
+03
+a1
+a2
+90
+4d
+ed
+e0
+70
+31
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+7d
+06
+7c
+00
+d1
+56
+7b
+01
+7a
+4d
+79
+d0
+7d
+0f
+7c
+00
+d1
+56
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+e4
+12
+03
+fc
+90
+48
+00
+74
+01
+f0
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+03
+b6
+90
+48
+01
+f0
+90
+4c
+c5
+e0
+b4
+03
+0a
+90
+4d
+47
+e0
+90
+48
+02
+f0
+80
+05
+e4
+90
+48
+02
+f0
+e4
+90
+4d
+e7
+f0
+90
+4e
+01
+e0
+70
+6f
+90
+00
+01
+12
+03
+cf
+b4
+7f
+15
+7e
+48
+7f
+03
+e9
+24
+02
+f9
+e4
+3a
+fa
+90
+4e
+70
+74
+05
+f0
+51
+50
+80
+1c
+7e
+48
+7f
+03
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+90
+4e
+70
+74
+06
+f0
+51
+50
+90
+4e
+75
+74
+03
+f0
+90
+4e
+75
+e0
+ff
+c3
+94
+09
+50
+41
+74
+00
+2f
+f5
+82
+e4
+34
+48
+f5
+83
+e0
+b4
+7f
+0f
+90
+4e
+75
+e0
+24
+00
+f5
+82
+e4
+34
+48
+f5
+83
+e4
+f0
+90
+4e
+75
+e0
+04
+f0
+80
+d1
+7e
+48
+7f
+03
+90
+4e
+71
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+90
+4e
+70
+74
+06
+f0
+51
+50
+7b
+01
+7a
+48
+79
+00
+7d
+09
+b1
+a2
+90
+4d
+d0
+74
+08
+f0
+7b
+01
+7a
+4d
+79
+d0
+7d
+0f
+b1
+a2
+22
+90
+4e
+26
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+a3
+ed
+f0
+e4
+ff
+90
+4e
+29
+e0
+fe
+ef
+c3
+9e
+50
+23
+90
+4e
+26
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+8f
+82
+75
+83
+00
+12
+03
+cf
+fe
+74
+2a
+2f
+f5
+82
+e4
+34
+4e
+f5
+83
+ee
+f0
+0f
+80
+d3
+12
+07
+f0
+ef
+60
+70
+90
+4c
+eb
+e0
+70
+6a
+90
+4c
+c5
+e0
+64
+03
+70
+62
+90
+4e
+2a
+e0
+64
+01
+70
+23
+74
+04
+f0
+a3
+e0
+70
+14
+90
+4e
+2d
+e0
+70
+0e
+a3
+e0
+70
+0a
+a3
+e0
+70
+06
+90
+4d
+e5
+f0
+80
+32
+90
+4d
+e5
+74
+01
+f0
+80
+2a
+90
+4e
+2a
+e0
+b4
+02
+19
+74
+05
+f0
+a3
+e0
+70
+0a
+a3
+e0
+70
+06
+90
+4d
+e5
+f0
+80
+12
+90
+4d
+e5
+74
+01
+f0
+80
+0a
+90
+4e
+2a
+e0
+b4
+03
+03
+74
+07
+f0
+7b
+01
+7a
+4e
+79
+2a
+90
+4e
+29
+e0
+fd
+f1
+d1
+22
+90
+4e
+a0
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+ed
+1d
+ae
+04
+70
+01
+1c
+4e
+60
+16
+90
+4e
+a0
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+04
+79
+a9
+f0
+fa
+e4
+12
+03
+fc
+80
+e0
+22
+7b
+01
+7a
+4c
+79
+bf
+7d
+48
+7c
+00
+d1
+56
+7b
+01
+7a
+4d
+79
+93
+7d
+14
+7c
+00
+d1
+56
+7b
+01
+7a
+4d
+79
+a8
+7d
+14
+7c
+00
+d1
+56
+7b
+01
+7a
+4d
+79
+bc
+7d
+14
+7c
+00
+d1
+56
+7b
+01
+7a
+48
+79
+00
+7d
+09
+7c
+00
+d1
+56
+7b
+01
+7a
+4d
+79
+f8
+7d
+09
+7c
+00
+d1
+56
+e4
+90
+4d
+ef
+f0
+90
+4d
+f5
+f0
+90
+4d
+f4
+f0
+90
+4d
+e5
+f0
+90
+4d
+df
+f0
+90
+4d
+eb
+f0
+90
+4d
+f7
+f0
+90
+4d
+e4
+f0
+90
+4d
+e7
+f0
+90
+4d
+ea
+f0
+90
+4d
+f3
+f0
+90
+4d
+e2
+f0
+90
+4d
+f0
+f0
+90
+4d
+f6
+f0
+90
+4c
+b7
+74
+f0
+f0
+90
+4d
+e8
+f0
+e4
+90
+4d
+38
+f0
+22
+90
+4e
+a9
+ef
+f0
+a3
+ed
+f0
+7b
+01
+7a
+48
+79
+00
+7d
+09
+7c
+00
+d1
+56
+90
+48
+00
+74
+01
+f0
+a3
+e0
+ff
+90
+4e
+a9
+e0
+fe
+ef
+4e
+90
+48
+01
+f0
+90
+4e
+aa
+e0
+90
+48
+03
+f0
+7b
+01
+7a
+48
+79
+00
+7d
+09
+a1
+a2
+90
+4c
+f4
+e0
+ff
+60
+08
+64
+03
+60
+04
+ef
+b4
+05
+03
+02
+1b
+1e
+90
+4c
+f4
+e0
+b4
+01
+0e
+a3
+e0
+ff
+e4
+fd
+f1
+13
+90
+4c
+f4
+74
+02
+f0
+22
+90
+4c
+f4
+e0
+b4
+02
+0b
+74
+03
+f0
+a3
+e0
+ff
+a3
+e0
+fd
+80
+8d
+90
+4c
+f4
+e0
+b4
+04
+27
+e4
+90
+4c
+f6
+f0
+90
+4c
+f5
+e0
+ff
+e4
+fd
+f1
+13
+e4
+90
+4c
+f5
+f0
+90
+4c
+f8
+e0
+70
+07
+90
+4c
+f4
+74
+06
+f0
+22
+90
+4c
+f4
+74
+05
+f0
+22
+90
+4c
+f4
+e0
+b4
+06
+15
+e4
+90
+4c
+f6
+f0
+90
+4c
+f5
+f0
+a3
+e0
+fd
+e4
+ff
+f1
+13
+e4
+90
+4c
+f4
+f0
+22
+90
+0b
+e7
+74
+06
+f0
+90
+4e
+b6
+ed
+f0
+e0
+fd
+90
+0b
+e8
+f0
+7e
+0b
+7f
+e9
+90
+4e
+70
+ed
+f0
+51
+50
+7b
+01
+7a
+0b
+79
+e7
+90
+4e
+b6
+e0
+24
+02
+fd
+02
+08
+f6
+ad
+07
+ac
+06
+90
+4d
+f7
+e0
+64
+02
+60
+0e
+74
+01
+f0
+90
+4d
+f8
+04
+f0
+ef
+a3
+f0
+ee
+a3
+f0
+22
+90
+4e
+85
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+e4
+a3
+f0
+f0
+90
+4e
+88
+e0
+ff
+c3
+94
+06
+40
+02
+41
+c4
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+7e
+00
+e9
+2f
+f9
+ee
+3a
+fa
+12
+03
+b6
+ff
+54
+f0
+64
+f0
+60
+09
+ef
+54
+d0
+64
+d0
+60
+02
+41
+bc
+12
+03
+b6
+fb
+b4
+f1
+09
+7f
+83
+7e
+01
+12
+17
+fd
+41
+91
+eb
+b4
+f2
+09
+7f
+cd
+7e
+00
+12
+17
+fd
+41
+91
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+f3
+07
+7f
+b7
+12
+17
+fd
+41
+91
+eb
+b4
+f4
+09
+7f
+b6
+7e
+00
+12
+17
+fd
+41
+91
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+f5
+07
+7f
+b5
+12
+17
+fd
+41
+91
+eb
+b4
+f6
+09
+7f
+ea
+7e
+00
+12
+17
+fd
+41
+91
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+f7
+07
+7f
+e9
+12
+17
+fd
+41
+91
+eb
+b4
+f8
+09
+7f
+e2
+7e
+00
+12
+17
+fd
+41
+91
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+f9
+08
+7f
+94
+0e
+12
+17
+fd
+41
+91
+eb
+b4
+fa
+09
+7f
+8a
+7e
+01
+12
+17
+fd
+41
+91
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+fb
+08
+7f
+92
+0e
+12
+17
+fd
+41
+91
+eb
+b4
+d0
+09
+7f
+2a
+7e
+02
+12
+17
+fd
+41
+91
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+d1
+09
+7f
+25
+7e
+02
+12
+17
+fd
+41
+91
+eb
+b4
+d3
+09
+7f
+26
+7e
+02
+12
+17
+fd
+41
+91
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+d2
+09
+7f
+24
+7e
+02
+12
+17
+fd
+41
+91
+eb
+b4
+d4
+09
+7f
+27
+7e
+02
+12
+17
+fd
+41
+91
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+d5
+09
+7f
+21
+7e
+02
+12
+17
+fd
+80
+7b
+eb
+b4
+d6
+09
+7f
+23
+7e
+02
+12
+17
+fd
+80
+6e
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fb
+b4
+d7
+07
+7f
+70
+12
+17
+fd
+80
+47
+eb
+b4
+d8
+09
+7f
+6f
+7e
+00
+12
+17
+fd
+80
+3a
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+fe
+b4
+dd
+06
+7f
+01
+51
+c5
+80
+14
+ee
+b4
+de
+06
+7f
+02
+51
+c5
+80
+0a
+12
+03
+b6
+b4
+df
+04
+7f
+04
+51
+c5
+90
+4d
+f7
+e0
+b4
+02
+24
+90
+4e
+85
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+24
+01
+f9
+e4
+3a
+fa
+a3
+e0
+7e
+00
+29
+f9
+ee
+3a
+fa
+12
+03
+b6
+90
+4d
+f6
+f0
+e4
+12
+03
+fc
+90
+4e
+88
+e0
+04
+f0
+01
+27
+22
+90
+4d
+f7
+e0
+64
+02
+60
+12
+74
+04
+f0
+90
+4d
+f2
+74
+01
+f0
+90
+4d
+f8
+74
+03
+f0
+a3
+ef
+f0
+22
+90
+4d
+47
+e0
+60
+37
+90
+4d
+e5
+e0
+70
+31
+90
+4c
+c5
+e0
+b4
+03
+2a
+7b
+01
+7a
+48
+79
+00
+7d
+09
+7c
+00
+12
+16
+56
+e4
+90
+4d
+f7
+f0
+90
+48
+00
+04
+f0
+90
+4d
+47
+e0
+90
+48
+02
+f0
+7b
+01
+7a
+48
+79
+00
+7d
+09
+12
+15
+a2
+22
+90
+4e
+91
+e4
+f0
+a3
+f0
+a3
+f0
+b1
+ab
+50
+25
+71
+51
+90
+4e
+91
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+4a
+70
+07
+90
+4c
+b6
+04
+f0
+80
+9e
+90
+4e
+91
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+12
+93
+22
+e4
+90
+4e
+34
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+a3
+f0
+12
+25
+0c
+7a
+4d
+79
+a8
+90
+4e
+5a
+74
+01
+f0
+a3
+74
+4d
+f0
+a3
+74
+a8
+f0
+a3
+74
+14
+f0
+7b
+01
+7a
+4d
+79
+bc
+b1
+f3
+ef
+60
+16
+7b
+01
+7a
+4d
+79
+bc
+7d
+14
+b1
+c3
+ef
+70
+09
+90
+4c
+ce
+e0
+44
+02
+f0
+80
+0c
+90
+4c
+ce
+e0
+54
+fd
+f0
+e4
+90
+4c
+d0
+f0
+e4
+90
+4e
+34
+f0
+90
+4e
+34
+e0
+ff
+90
+06
+87
+93
+70
+02
+81
+82
+74
+bc
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+90
+4e
+37
+f0
+e0
+ff
+b1
+9d
+90
+4e
+3e
+ef
+f0
+c3
+94
+02
+50
+02
+81
+6b
+e4
+90
+4e
+35
+f0
+90
+4e
+35
+e0
+ff
+c3
+94
+08
+50
+7b
+74
+01
+7e
+00
+a8
+07
+08
+80
+05
+c3
+33
+ce
+33
+ce
+d8
+f9
+ff
+90
+4e
+37
+e0
+fd
+e4
+ef
+5d
+60
+58
+e4
+90
+4e
+36
+f0
+90
+4e
+36
+e0
+ff
+90
+06
+87
+93
+60
+48
+90
+4e
+34
+e0
+fe
+ef
+6e
+60
+37
+90
+4e
+36
+e0
+24
+bc
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+fd
+7c
+00
+90
+4e
+35
+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
+60
+08
+90
+4e
+3d
+74
+01
+f0
+80
+08
+90
+4e
+36
+e0
+04
+f0
+80
+ad
+90
+4e
+35
+e0
+04
+f0
+61
+e6
+90
+4e
+37
+e0
+ff
+60
+08
+b1
+9d
+90
+4e
+3b
+e0
+2f
+f0
+90
+4e
+34
+e0
+04
+f0
+61
+b5
+90
+4e
+3b
+e0
+90
+4d
+ed
+f0
+e4
+90
+4e
+34
+f0
+90
+4e
+34
+e0
+ff
+90
+06
+87
+93
+70
+02
+a1
+71
+74
+93
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+fe
+74
+bc
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+6e
+90
+4e
+37
+f0
+90
+4e
+34
+e0
+ff
+24
+bc
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+90
+4e
+3a
+f0
+90
+4e
+37
+e0
+70
+04
+a1
+69
+a1
+69
+90
+4e
+3d
+e0
+60
+07
+7b
+00
+7a
+00
+79
+00
+22
+74
+bc
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+fe
+74
+93
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+ee
+f0
+e4
+90
+4e
+35
+f0
+90
+4e
+35
+e0
+ff
+c3
+94
+08
+50
+5a
+90
+4e
+37
+e0
+30
+e0
+3b
+90
+4e
+34
+e0
+fe
+33
+33
+33
+54
+f8
+fe
+ef
+4e
+90
+4e
+39
+f0
+a3
+e0
+ff
+90
+4e
+39
+e0
+90
+06
+9c
+93
+fd
+f1
+fc
+90
+4e
+3c
+ef
+f0
+90
+4e
+3a
+e0
+30
+e0
+09
+90
+4e
+3c
+e0
+ff
+d1
+3d
+80
+07
+90
+4e
+3c
+e0
+ff
+d1
+f6
+90
+4e
+37
+e0
+ff
+c3
+13
+f0
+90
+4e
+3a
+e0
+ff
+c3
+13
+f0
+90
+4e
+35
+e0
+04
+f0
+80
+9c
+90
+4e
+38
+74
+01
+f0
+90
+4e
+34
+e0
+04
+f0
+81
+8f
+90
+4d
+f7
+e0
+b4
+03
+0a
+90
+4d
+e7
+e0
+b4
+01
+03
+74
+02
+f0
+90
+4e
+38
+e0
+70
+07
+90
+4d
+e7
+e0
+b4
+02
+07
+7b
+01
+7a
+4e
+79
+50
+22
+7b
+00
+7a
+00
+79
+00
+22
+e4
+fe
+ef
+60
+06
+14
+5f
+ff
+0e
+80
+f7
+af
+06
+22
+90
+4b
+9c
+e0
+fe
+a3
+e0
+ff
+90
+4b
+9a
+e0
+b5
+06
+07
+a3
+e0
+b5
+07
+02
+d3
+22
+c3
+22
+90
+4e
+97
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+e4
+ff
+ef
+c3
+9d
+50
+1b
+90
+4e
+97
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+8f
+82
+75
+83
+00
+12
+03
+cf
+60
+03
+7f
+00
+22
+0f
+80
+e0
+7f
+01
+22
+90
+4e
+57
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+e4
+ff
+90
+4e
+5d
+e0
+fe
+ef
+c3
+9e
+50
+30
+90
+4e
+5a
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+8f
+82
+75
+83
+00
+12
+03
+cf
+fe
+90
+4e
+57
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+8f
+82
+75
+83
+00
+12
+03
+cf
+6e
+60
+03
+7f
+00
+22
+0f
+80
+c6
+7f
+01
+22
+e4
+fe
+fd
+f9
+fc
+ef
+c3
+94
+e0
+40
+20
+ef
+d3
+94
+e7
+50
+1a
+90
+4e
+50
+e0
+fe
+ef
+54
+07
+ff
+74
+01
+a8
+07
+08
+80
+02
+c3
+33
+d8
+fc
+4e
+90
+4e
+50
+f0
+22
+e4
+fe
+74
+51
+2e
+f5
+82
+e4
+34
+4e
+f5
+83
+e0
+60
+01
+0d
+0e
+ee
+b4
+06
+ed
+e4
+fe
+74
+51
+2e
+f5
+82
+e4
+34
+4e
+f5
+83
+e0
+b5
+07
+08
+ed
+b4
+06
+04
+79
+01
+80
+27
+74
+51
+2e
+f5
+82
+e4
+34
+4e
+f5
+83
+e0
+70
+15
+90
+4d
+f6
+e0
+6f
+60
+13
+74
+51
+2e
+f5
+82
+e4
+34
+4e
+f5
+83
+ef
+f0
+80
+05
+0e
+ee
+b4
+06
+c3
+ed
+64
+06
+70
+34
+e9
+70
+31
+ef
+d3
+94
+70
+50
+2b
+ef
+13
+13
+13
+54
+1f
+fc
+24
+d1
+f5
+82
+e4
+34
+4d
+f5
+83
+c0
+83
+c0
+82
+e0
+fe
+ef
+54
+07
+ff
+74
+01
+a8
+07
+08
+80
+02
+c3
+33
+d8
+fc
+4e
+d0
+82
+d0
+83
+f0
+22
+e4
+fe
+90
+4e
+b1
+f0
+fd
+fc
+ef
+54
+f0
+64
+f0
+60
+07
+ef
+54
+d0
+fb
+bb
+d0
+0c
+90
+4d
+f7
+e0
+b4
+02
+0b
+74
+03
+f0
+80
+06
+90
+4d
+e7
+74
+01
+f0
+ef
+c3
+94
+e0
+40
+21
+ef
+d3
+94
+e7
+50
+1b
+90
+4e
+50
+e0
+fe
+ef
+54
+07
+ff
+74
+01
+a8
+07
+08
+80
+02
+c3
+33
+d8
+fc
+f4
+5e
+90
+4e
+50
+f0
+22
+e4
+fe
+ec
+70
+21
+74
+51
+2e
+f5
+82
+e4
+34
+4e
+f5
+83
+e0
+6f
+70
+47
+ee
+b4
+05
+0b
+24
+51
+f5
+82
+e4
+34
+4e
+f5
+83
+e4
+f0
+7c
+01
+80
+34
+74
+51
+2e
+f5
+82
+e4
+34
+4e
+f5
+83
+e0
+fb
+74
+50
+2e
+f5
+82
+e4
+34
+4e
+f5
+83
+eb
+f0
+74
+51
+2e
+f5
+82
+e4
+34
+4e
+f5
+83
+e0
+60
+14
+ee
+b4
+05
+0b
+24
+51
+f5
+82
+e4
+34
+4e
+f5
+83
+e4
+f0
+0e
+ee
+b4
+06
+a3
+ef
+d3
+94
+70
+50
+2c
+ef
+13
+13
+13
+54
+1f
+fd
+24
+d1
+f5
+82
+e4
+34
+4d
+f5
+83
+c0
+83
+c0
+82
+e0
+fe
+ef
+54
+07
+ff
+74
+01
+a8
+07
+08
+80
+02
+c3
+33
+d8
+fc
+f4
+5e
+d0
+82
+d0
+83
+f0
+22
+90
+4c
+f5
+ed
+f0
+a3
+eb
+f0
+ef
+30
+e0
+12
+90
+4c
+f4
+e0
+b4
+03
+04
+74
+02
+f0
+22
+90
+4c
+f4
+74
+01
+f0
+22
+90
+4c
+f4
+74
+04
+f0
+22
+e4
+90
+4e
+b0
+f0
+ef
+30
+e0
+05
+e4
+90
+4c
+f8
+f0
+90
+4e
+b0
+ed
+f0
+90
+4d
+ea
+e0
+64
+01
+60
+02
+41
+25
+ed
+12
+05
+b9
+21
+8f
+04
+21
+9f
+07
+21
+a7
+09
+21
+af
+0a
+21
+b7
+0b
+21
+c7
+0c
+21
+d7
+0d
+21
+df
+0e
+21
+e7
+0f
+21
+ef
+10
+21
+cf
+12
+21
+97
+16
+21
+bf
+18
+20
+9e
+1e
+20
+a6
+1f
+20
+ae
+20
+20
+b6
+21
+20
+be
+22
+20
+c6
+23
+20
+ce
+24
+20
+d6
+25
+20
+de
+26
+20
+e6
+27
+20
+96
+29
+20
+fe
+2a
+20
+ee
+2d
+20
+f6
+2e
+21
+3d
+2f
+21
+21
+30
+21
+67
+33
+21
+50
+34
+21
+f7
+36
+21
+ff
+37
+22
+07
+38
+22
+1f
+65
+21
+7e
+e3
+22
+0f
+e4
+22
+17
+e6
+21
+7e
+e7
+00
+00
+22
+25
+90
+4e
+b0
+74
+35
+f0
+41
+25
+90
+4e
+b0
+74
+3a
+f0
+41
+25
+90
+4e
+b0
+74
+3b
+f0
+41
+25
+90
+4e
+b0
+74
+3c
+f0
+41
+25
+90
+4e
+b0
+74
+3d
+f0
+41
+25
+90
+4e
+b0
+74
+3e
+f0
+41
+25
+90
+4e
+b0
+74
+3f
+f0
+41
+25
+90
+4e
+b0
+74
+40
+f0
+41
+25
+90
+4e
+b0
+74
+41
+f0
+41
+25
+90
+4e
+b0
+74
+42
+f0
+41
+25
+90
+4e
+b0
+74
+43
+f0
+41
+25
+90
+4e
+b0
+74
+44
+f0
+41
+25
+90
+4e
+b0
+74
+45
+f0
+41
+25
+ef
+30
+e0
+18
+90
+4c
+fd
+e0
+c3
+94
+08
+50
+05
+e0
+04
+f0
+80
+05
+e4
+90
+4c
+fd
+f0
+e4
+90
+4c
+ff
+f0
+e4
+90
+4e
+b0
+f0
+41
+25
+ef
+30
+e0
+11
+90
+4d
+02
+e0
+c3
+94
+04
+50
+03
+e0
+04
+f0
+e4
+90
+4c
+ff
+f0
+e4
+90
+4e
+b0
+f0
+41
+25
+ef
+30
+e0
+08
+90
+4d
+02
+e0
+60
+02
+14
+f0
+e4
+90
+4e
+b0
+f0
+41
+25
+ef
+30
+e0
+0c
+90
+4c
+fe
+e0
+d3
+94
+01
+40
+03
+e0
+14
+f0
+e4
+90
+4e
+b0
+f0
+41
+25
+ef
+30
+e0
+0c
+90
+4c
+fe
+e0
+c3
+94
+05
+50
+03
+e0
+04
+f0
+e4
+90
+4e
+b0
+f0
+41
+25
+ef
+30
+e0
+06
+90
+4c
+f9
+e0
+f4
+f0
+e4
+90
+4e
+b0
+f0
+41
+25
+90
+4e
+b0
+74
+f2
+f0
+41
+25
+90
+4e
+b0
+74
+f4
+f0
+41
+25
+90
+4e
+b0
+74
+f5
+f0
+80
+7e
+90
+4e
+b0
+74
+f6
+f0
+80
+76
+90
+4e
+b0
+74
+f7
+f0
+80
+6e
+90
+4e
+b0
+74
+f8
+f0
+80
+66
+90
+4e
+b0
+74
+46
+f0
+80
+5e
+90
+4e
+b0
+74
+47
+f0
+80
+56
+90
+4e
+b0
+74
+48
+f0
+80
+4e
+90
+4e
+b0
+74
+49
+f0
+80
+46
+90
+4e
+b0
+74
+4a
+f0
+80
+3e
+90
+4e
+b0
+74
+4b
+f0
+80
+36
+90
+4e
+b0
+74
+4c
+f0
+80
+2e
+90
+4e
+b0
+74
+4d
+f0
+80
+26
+90
+4e
+b0
+74
+4e
+f0
+80
+1e
+90
+4e
+b0
+74
+52
+f0
+80
+16
+90
+4e
+b0
+74
+4f
+f0
+80
+0e
+90
+4e
+b0
+74
+50
+f0
+80
+06
+90
+4e
+b0
+74
+51
+f0
+90
+4c
+f9
+e0
+60
+17
+90
+4e
+b0
+e0
+ff
+64
+65
+60
+09
+ef
+64
+e3
+60
+04
+ef
+b4
+e7
+05
+e4
+90
+4e
+b0
+f0
+90
+4e
+b0
+e0
+ff
+22
+e4
+90
+4e
+b2
+f0
+f0
+90
+4e
+b2
+e0
+ff
+c3
+94
+08
+50
+0c
+c2
+05
+51
+8e
+90
+4e
+b2
+e0
+04
+f0
+80
+ea
+22
+90
+80
+80
+e4
+f0
+a3
+f0
+a3
+f0
+51
+48
+e4
+90
+4e
+b3
+f0
+f0
+90
+4e
+b3
+e0
+90
+06
+87
+93
+ff
+60
+0c
+c2
+05
+51
+8e
+90
+4e
+b3
+e0
+04
+f0
+80
+e9
+22
+ac
+07
+ec
+f4
+60
+17
+af
+04
+a2
+05
+92
+03
+51
+bd
+af
+04
+a2
+05
+b3
+92
+02
+51
+ac
+af
+04
+c2
+04
+51
+ce
+22
+ef
+f4
+60
+0c
+7b
+01
+7a
+80
+79
+78
+a2
+02
+92
+00
+51
+df
+22
+ef
+f4
+60
+0c
+7b
+01
+7a
+80
+79
+7c
+a2
+03
+92
+00
+51
+df
+22
+ef
+f4
+60
+0c
+7b
+01
+7a
+80
+79
+70
+a2
+04
+92
+00
+51
+df
+22
+90
+4e
+a6
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+e4
+fe
+fd
+ef
+54
+07
+fe
+ef
+13
+13
+13
+54
+03
+fd
+30
+00
+22
+90
+4e
+a6
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+2d
+f9
+e4
+3a
+fa
+12
+03
+b6
+ff
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+4f
+02
+03
+fc
+90
+4e
+a6
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+2d
+f9
+e4
+3a
+fa
+12
+03
+b6
+ff
+74
+01
+a8
+06
+08
+80
+02
+c3
+33
+d8
+fc
+f4
+5f
+02
+03
+fc
+e4
+ff
+90
+4e
+b4
+f0
+fe
+fd
+ef
+90
+06
+87
+93
+60
+49
+ef
+93
+fd
+13
+13
+13
+54
+1f
+fe
+ed
+54
+07
+fd
+74
+01
+a8
+05
+08
+80
+02
+c3
+33
+d8
+fc
+fd
+ee
+24
+78
+fb
+e4
+34
+80
+8b
+82
+f5
+83
+e0
+fc
+ed
+f4
+fb
+ec
+5b
+f0
+ee
+24
+70
+f5
+82
+e4
+34
+80
+f5
+83
+e0
+4d
+f0
+ee
+24
+74
+f5
+82
+e4
+34
+80
+f5
+83
+e0
+5b
+f0
+0f
+80
+b0
+91
+d8
+90
+81
+1c
+e0
+90
+4e
+b4
+f0
+90
+4d
+e4
+e0
+60
+20
+e4
+ff
+71
+d8
+7f
+01
+71
+d8
+7f
+02
+71
+d8
+7f
+03
+71
+d8
+7f
+04
+71
+d8
+7f
+05
+71
+d8
+7f
+06
+71
+d8
+7f
+07
+80
+10
+90
+4e
+b4
+e0
+ff
+90
+00
+a3
+f0
+ef
+f4
+90
+00
+a7
+f0
+22
+90
+4e
+b8
+ef
+f0
+91
+77
+92
+08
+90
+4e
+b8
+e0
+ff
+a2
+08
+b3
+92
+07
+ef
+f4
+70
+02
+81
+76
+ef
+54
+07
+fe
+ef
+13
+13
+13
+54
+03
+ff
+30
+07
+43
+24
+a3
+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
+a7
+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
+a3
+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
+a7
+2f
+f5
+82
+e4
+34
+00
+f5
+83
+e0
+ff
+ec
+f4
+fe
+ef
+5e
+f0
+22
+7b
+01
+7a
+81
+79
+1c
+ad
+07
+e4
+90
+4e
+b7
+f0
+fe
+ef
+54
+07
+f0
+ef
+13
+13
+13
+54
+03
+fe
+f5
+82
+75
+83
+00
+12
+03
+cf
+fd
+33
+95
+e0
+fc
+90
+4e
+b7
+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
+4e
+b9
+ef
+f0
+7b
+01
+7a
+80
+79
+74
+91
+7d
+92
+09
+90
+4e
+b9
+e0
+ff
+a2
+09
+b3
+92
+01
+02
+07
+de
+e4
+ff
+ef
+fd
+7c
+00
+24
+78
+fb
+ec
+34
+80
+8b
+82
+f5
+83
+e0
+fe
+ed
+24
+70
+fd
+ec
+34
+80
+8d
+82
+f5
+83
+e0
+4e
+f4
+fe
+ef
+24
+7c
+fd
+ec
+34
+80
+8d
+82
+f5
+83
+ee
+f0
+0f
+ef
+b4
+04
+cf
+22
+e4
+ff
+90
+4e
+94
+f0
+fe
+fd
+a3
+f0
+a3
+f0
+ef
+90
+06
+87
+93
+60
+7c
+ef
+93
+fd
+13
+13
+13
+54
+1f
+fe
+ed
+54
+07
+fd
+74
+01
+a8
+05
+08
+80
+02
+c3
+33
+d8
+fc
+fd
+ee
+24
+78
+fb
+e4
+34
+80
+8b
+82
+f5
+83
+e0
+fc
+ed
+f4
+fb
+ec
+5b
+f0
+ee
+24
+70
+f5
+82
+e4
+34
+80
+f5
+83
+e0
+4d
+f0
+ee
+24
+74
+f5
+82
+e4
+34
+80
+f5
+83
+e0
+5b
+f0
+90
+81
+1c
+e0
+f4
+fc
+74
+bc
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+ec
+f0
+ee
+24
+78
+fb
+e4
+34
+80
+8b
+82
+f5
+83
+e0
+4d
+f0
+ee
+24
+70
+fb
+e4
+34
+80
+8b
+82
+f5
+83
+e0
+fc
+ed
+f4
+fb
+ec
+5b
+f0
+0f
+a1
+18
+e4
+ff
+ef
+90
+06
+87
+93
+60
+7c
+ef
+93
+fd
+13
+13
+13
+54
+1f
+fe
+ed
+54
+07
+fd
+74
+01
+a8
+05
+08
+80
+02
+c3
+33
+d8
+fc
+fd
+ee
+24
+78
+fb
+e4
+34
+80
+8b
+82
+f5
+83
+e0
+fc
+ed
+f4
+fb
+ec
+5b
+f0
+ee
+24
+70
+f5
+82
+e4
+34
+80
+f5
+83
+e0
+4d
+f0
+ee
+24
+74
+f5
+82
+e4
+34
+80
+f5
+83
+e0
+5b
+f0
+90
+81
+1c
+e0
+f4
+fc
+74
+a8
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+ec
+f0
+ee
+24
+78
+fb
+e4
+34
+80
+8b
+82
+f5
+83
+e0
+4d
+f0
+ee
+24
+70
+fb
+e4
+34
+80
+8b
+82
+f5
+83
+e0
+fc
+ed
+f4
+fb
+ec
+5b
+f0
+0f
+a1
+9d
+e4
+ff
+ef
+90
+06
+87
+93
+60
+40
+74
+bc
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+fe
+74
+a8
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+6e
+60
+23
+74
+bc
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+c0
+83
+c0
+82
+e0
+fe
+74
+a8
+2f
+f5
+82
+e4
+34
+4d
+f5
+83
+e0
+fd
+ee
+5d
+d0
+82
+d0
+83
+f0
+0f
+80
+b9
+22
+90
+4d
+52
+e0
+ff
+90
+4d
+ec
+e0
+6f
+70
+02
+c1
+f9
+90
+4d
+52
+e0
+90
+4d
+ec
+f0
+90
+4c
+d5
+e0
+60
+10
+12
+0f
+56
+e4
+90
+4e
+79
+f0
+a3
+f0
+fb
+fd
+ff
+02
+0b
+21
+90
+4c
+fd
+e0
+64
+01
+70
+54
+90
+4d
+04
+e0
+60
+15
+90
+4d
+03
+e0
+c3
+94
+55
+50
+05
+e0
+04
+f0
+80
+1b
+e4
+90
+4d
+04
+f0
+80
+14
+90
+4d
+03
+e0
+d3
+94
+05
+40
+05
+e0
+14
+f0
+80
+06
+90
+4d
+04
+74
+01
+f0
+e4
+90
+41
+31
+f0
+90
+4c
+fa
+04
+f0
+f1
+72
+90
+4d
+03
+e0
+ff
+90
+80
+a0
+f0
+c3
+74
+64
+9f
+90
+80
+a2
+f0
+90
+80
+85
+e0
+44
+40
+f0
+22
+90
+4d
+02
+e0
+ff
+d1
+fa
+22
+90
+4e
+9a
+ef
+f0
+60
+06
+90
+4c
+d5
+e0
+60
+0a
+12
+0f
+56
+d2
+06
+7f
+16
+02
+0b
+60
+90
+4e
+9a
+e0
+b4
+04
+0a
+12
+0f
+56
+c2
+06
+7f
+16
+02
+0b
+60
+90
+4e
+9a
+e0
+ff
+b4
+03
+09
+a3
+e4
+f0
+a3
+74
+19
+f0
+80
+18
+ef
+b4
+02
+0b
+90
+4e
+9b
+e4
+f0
+a3
+74
+32
+f0
+80
+09
+90
+4e
+9b
+e4
+f0
+a3
+74
+4b
+f0
+e4
+90
+41
+31
+f0
+90
+4c
+fa
+04
+f0
+f1
+72
+90
+4e
+9b
+e0
+a3
+e0
+ff
+90
+80
+a0
+f0
+c3
+74
+64
+9f
+90
+80
+a2
+f0
+90
+80
+85
+e0
+44
+40
+f0
+22
+90
+80
+42
+e0
+f0
+90
+80
+51
+e0
+54
+df
+f0
+90
+80
+82
+e0
+44
+80
+f0
+22
+12
+16
+82
+12
+2a
+f9
+90
+4c
+eb
+74
+01
+f0
+e4
+90
+4c
+f0
+f0
+90
+4d
+06
+74
+ff
+f0
+90
+4c
+fe
+74
+05
+f0
+90
+4d
+02
+14
+f0
+22
+90
+80
+10
+74
+01
+f0
+80
+fe
+22
+80
+f5
+90
+4e
+ab
+ed
+f0
+90
+00
+01
+12
+03
+cf
+90
+4e
+ac
+f0
+22
+90
+4c
+c5
+e0
+64
+03
+70
+4e
+90
+4c
+e3
+e0
+fe
+a3
+e0
+ff
+64
+0a
+4e
+70
+08
+90
+4d
+47
+e0
+60
+02
+e4
+f0
+ef
+54
+1f
+64
+10
+70
+20
+7b
+01
+7a
+48
+79
+00
+7d
+09
+fc
+12
+16
+56
+e4
+90
+4d
+f7
+f0
+90
+48
+00
+04
+f0
+fb
+7a
+48
+79
+00
+7d
+09
+12
+15
+a2
+c3
+90
+4c
+e4
+e0
+94
+c0
+90
+4c
+e3
+e0
+94
+03
+40
+2e
+02
+0e
+e7
+90
+4c
+c5
+e0
+b4
+01
+12
+c3
+90
+4c
+e4
+e0
+94
+78
+90
+4c
+e3
+e0
+94
+00
+40
+15
+02
+0e
+e7
+c3
+90
+4c
+e4
+e0
+94
+14
+90
+4c
+e3
+e0
+94
+00
+40
+03
+12
+0e
+e7
+22
+90
+4c
+ee
+e0
+60
+18
+e4
+90
+4c
+e3
+f0
+a3
+f0
+90
+4c
+ee
+e0
+14
+f0
+e0
+70
+08
+7f
+0a
+12
+0a
+2d
+12
+0e
+e7
+22
+12
+0f
+1f
+90
+4c
+e4
+e0
+04
+f0
+70
+06
+90
+4c
+e3
+e0
+04
+f0
+11
+80
+12
+27
+c4
+12
+09
+a2
+80
+c6
+90
+4c
+d3
+e0
+60
+0a
+14
+f0
+e0
+70
+05
+74
+05
+f0
+11
+91
+22
+90
+4e
+7c
+12
+05
+88
+00
+00
+00
+00
+90
+4c
+95
+e0
+70
+02
+a3
+e0
+70
+02
+41
+2c
+90
+4c
+95
+e0
+fe
+a3
+e0
+ff
+90
+4c
+d4
+e0
+fd
+04
+f0
+ed
+25
+e0
+24
+d6
+f5
+82
+e4
+34
+4c
+f5
+83
+ee
+f0
+a3
+ef
+f0
+90
+4c
+d4
+e0
+c3
+94
+04
+40
+02
+e4
+f0
+e4
+90
+4e
+7b
+f0
+90
+4e
+7c
+e0
+f8
+a3
+e0
+f9
+a3
+e0
+fa
+a3
+e0
+fb
+90
+4e
+7b
+e0
+25
+e0
+24
+d6
+f5
+82
+e4
+34
+4c
+f5
+83
+e0
+fe
+a3
+e0
+ff
+e4
+fc
+fd
+eb
+2f
+ff
+ea
+3e
+fe
+ed
+39
+fd
+ec
+38
+fc
+90
+4e
+7c
+12
+05
+7c
+90
+4e
+7b
+e0
+04
+f0
+e0
+b4
+04
+bf
+90
+4e
+7c
+e0
+fc
+a3
+e0
+fd
+a3
+e0
+fe
+a3
+e0
+ff
+e4
+7b
+04
+fa
+f9
+f8
+12
+04
+cb
+90
+4e
+7c
+12
+05
+7c
+90
+4c
+e0
+e0
+fe
+a3
+e0
+ff
+e4
+fc
+fd
+90
+4e
+7c
+e0
+f8
+a3
+e0
+f9
+a3
+e0
+fa
+a3
+e0
+fb
+c3
+12
+05
+6b
+50
+08
+90
+4c
+d5
+74
+02
+f0
+41
+24
+90
+4c
+de
+e0
+fe
+a3
+e0
+ff
+e4
+fc
+fd
+90
+4e
+7c
+e0
+f8
+a3
+e0
+f9
+a3
+e0
+fa
+a3
+e0
+fb
+c3
+12
+05
+6b
+50
+56
+90
+4c
+d5
+74
+01
+f0
+90
+4c
+91
+e0
+fe
+a3
+e0
+ff
+c3
+90
+4c
+94
+e0
+9f
+fd
+90
+4c
+93
+e0
+9e
+fc
+e4
+12
+02
+06
+7b
+7b
+7a
+14
+79
+8e
+78
+3f
+12
+00
+fb
+c0
+04
+c0
+05
+c0
+06
+c0
+07
+90
+4c
+91
+e0
+fc
+a3
+e0
+fd
+e4
+12
+02
+06
+d0
+03
+d0
+02
+d0
+01
+d0
+00
+12
+00
+0a
+12
+02
+3f
+90
+4c
+de
+ee
+f0
+a3
+ef
+f0
+80
+53
+e4
+90
+4c
+d5
+f0
+90
+4c
+91
+e0
+fe
+a3
+e0
+ff
+c3
+90
+4c
+94
+e0
+9f
+fd
+90
+4c
+93
+e0
+9e
+fc
+e4
+12
+02
+06
+7b
+b8
+7a
+1e
+79
+85
+78
+3f
+12
+00
+fb
+c0
+04
+c0
+05
+c0
+06
+c0
+07
+90
+4c
+91
+e0
+fc
+a3
+e0
+fd
+e4
+12
+02
+06
+d0
+03
+d0
+02
+d0
+01
+d0
+00
+12
+00
+0a
+12
+02
+3f
+90
+4c
+de
+ee
+f0
+a3
+ef
+f0
+90
+4c
+d5
+e0
+90
+4c
+fc
+f0
+22
+90
+4d
+05
+e0
+70
+11
+90
+4c
+ee
+e0
+70
+0b
+90
+4c
+d5
+e0
+64
+01
+60
+03
+12
+0b
+7e
+90
+4c
+ea
+e0
+60
+02
+14
+f0
+90
+4c
+ef
+e0
+60
+02
+14
+f0
+90
+4c
+f8
+e0
+60
+0b
+14
+f0
+e0
+70
+06
+90
+4c
+f4
+74
+06
+f0
+90
+4c
+ee
+e0
+70
+35
+90
+4c
+e2
+e0
+60
+2f
+14
+f0
+e0
+ff
+c3
+94
+08
+50
+16
+ef
+30
+e1
+09
+c2
+01
+7f
+1c
+12
+07
+de
+80
+10
+d2
+01
+7f
+1c
+12
+07
+de
+80
+07
+d2
+01
+7f
+1c
+12
+07
+de
+90
+4c
+e2
+e0
+70
+03
+74
+18
+f0
+90
+4d
+e4
+e0
+70
+36
+90
+4d
+e5
+e0
+64
+01
+70
+2e
+90
+4c
+e3
+f0
+a3
+f0
+90
+4d
+e5
+f0
+90
+4d
+f8
+e0
+60
+0d
+7b
+01
+7a
+4d
+79
+f8
+7d
+03
+12
+15
+a2
+80
+11
+90
+48
+00
+e0
+60
+0b
+7b
+01
+7a
+48
+79
+00
+7d
+09
+12
+15
+a2
+90
+4d
+ef
+e0
+60
+03
+e0
+14
+f0
+22
+7b
+01
+7a
+4e
+79
+02
+78
+14
+7c
+4e
+7d
+01
+7e
+00
+7f
+12
+02
+03
+90
+90
+4c
+d3
+74
+05
+f0
+e4
+a3
+f0
+ff
+ef
+25
+e0
+24
+d6
+f5
+82
+e4
+34
+4c
+f5
+83
+74
+54
+f0
+a3
+f0
+0f
+ef
+b4
+04
+ea
+90
+4c
+91
+e0
+fe
+a3
+e0
+ff
+c3
+90
+4c
+94
+e0
+9f
+fd
+90
+4c
+93
+e0
+9e
+fc
+e4
+12
+02
+06
+7b
+b8
+7a
+1e
+79
+85
+78
+3f
+12
+00
+fb
+c0
+04
+c0
+05
+c0
+06
+c0
+07
+90
+4c
+91
+e0
+fc
+a3
+e0
+fd
+e4
+12
+02
+06
+d0
+03
+d0
+02
+d0
+01
+d0
+00
+12
+00
+0a
+12
+02
+3f
+90
+4c
+de
+ee
+f0
+a3
+ef
+f0
+90
+4c
+91
+e0
+fe
+a3
+e0
+ff
+c3
+90
+4c
+94
+e0
+9f
+fd
+90
+4c
+93
+e0
+9e
+fc
+e4
+12
+02
+06
+7b
+48
+7a
+e1
+79
+7a
+78
+3f
+12
+00
+fb
+c0
+04
+c0
+05
+c0
+06
+c0
+07
+90
+4c
+91
+e0
+fc
+a3
+e0
+fd
+e4
+12
+02
+06
+d0
+03
+d0
+02
+d0
+01
+d0
+00
+12
+00
+0a
+12
+02
+3f
+90
+4c
+e0
+ee
+f0
+a3
+ef
+f0
+22
+90
+4e
+89
+ee
+f0
+a3
+ef
+f0
+90
+4e
+8b
+ec
+f0
+a3
+ed
+f0
+90
+4e
+8b
+e0
+fe
+a3
+e0
+ff
+d3
+90
+4e
+8a
+e0
+9f
+90
+4e
+89
+e0
+9e
+40
+16
+90
+4e
+8b
+e0
+fe
+a3
+e0
+ff
+90
+4e
+8a
+e0
+9f
+ff
+90
+4e
+89
+e0
+9e
+fe
+80
+1e
+90
+4e
+89
+e0
+fe
+a3
+e0
+ff
+c3
+90
+4e
+8c
+e0
+9f
+ff
+90
+4e
+8b
+e0
+9e
+fe
+ad
+03
+c3
+eb
+9f
+ff
+e4
+9e
+fe
+22
+90
+4e
+ad
+ee
+f0
+a3
+ef
+f0
+a9
+05
+90
+4b
+9e
+e0
+fe
+a3
+e0
+ff
+ad
+01
+19
+ed
+60
+2f
+0f
+ef
+ac
+06
+70
+01
+0e
+14
+f5
+82
+8c
+83
+e0
+fd
+90
+4e
+ad
+e4
+75
+f0
+01
+12
+04
+79
+85
+f0
+82
+f5
+83
+ed
+f0
+ad
+07
+ac
+06
+bc
+4b
+d4
+bd
+9a
+d1
+7e
+4b
+7f
+36
+80
+cb
+90
+4b
+9e
+ee
+f0
+a3
+ef
+f0
+22
+7a
+0c
+79
+4b
+90
+4e
+9d
+74
+01
+f0
+a3
+74
+0c
+f0
+a3
+74
+4b
+f0
+90
+4b
+a0
+e0
+fe
+a3
+e0
+ff
+90
+4b
+9e
+e0
+6e
+70
+03
+a3
+e0
+6f
+60
+46
+7e
+0c
+7f
+4b
+7d
+03
+91
+10
+90
+4e
+9d
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+03
+b6
+b4
+02
+2b
+90
+4e
+9e
+e4
+75
+f0
+02
+12
+04
+63
+90
+4e
+9d
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+12
+03
+b6
+ff
+90
+4e
+14
+e0
+a3
+e0
+fa
+a3
+e0
+f5
+82
+8a
+83
+12
+05
+e3
+80
+02
+80
+fe
+90
+4b
+a5
+e0
+fe
+a3
+e0
+ff
+90
+4c
+5e
+e0
+6e
+70
+03
+a3
+e0
+6f
+60
+22
+90
+4e
+1a
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+4a
+60
+37
+12
+05
+df
+90
+4b
+a5
+e0
+ff
+a3
+e0
+90
+4c
+5e
+cf
+f0
+a3
+ef
+f0
+80
+ca
+90
+4c
+8d
+e0
+ff
+a3
+e0
+6f
+60
+19
+90
+4e
+1d
+e0
+fb
+a3
+e0
+fa
+a3
+e0
+f9
+4a
+60
+0b
+12
+05
+df
+90
+4c
+8d
+e0
+a3
+f0
+80
+dd
+22
+90
+04
+46
+e0
+ff
+22
+90
+0b
+7f
+74
+01
+f0
+e4
+90
+0b
+7e
+f0
+22
+90
+82
+80
+74
+01
+f0
+22
+90
+4e
+48
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+90
+4e
+4e
+74
+ff
+f5
+f0
+12
+04
+79
+45
+f0
+60
+2a
+90
+4e
+4b
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+04
+79
+a9
+f0
+fa
+12
+03
+b6
+ff
+90
+4e
+48
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+04
+79
+a9
+f0
+fa
+ef
+12
+03
+fc
+80
+c8
+22
+90
+4e
+a3
+eb
+f0
+a3
+ea
+f0
+a3
+e9
+f0
+ed
+1d
+ae
+04
+70
+01
+1c
+4e
+60
+17
+90
+4e
+a3
+e0
+fb
+a3
+e4
+75
+f0
+01
+12
+04
+79
+a9
+f0
+fa
+74
+ff
+12
+03
+fc
+80
+df
+22
+ef
+f4
+60
+3a
+ef
+54
+07
+fe
+ef
+13
+13
+13
+54
+03
+ff
+24
+a3
+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
+a7
+2f
+f5
+82
+e4
+34
+00
+f5
+83
+e0
+5c
+f0
+22
Index: output/geneep.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: output/geneep.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: output/otp.dat
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/otp.dat	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/otp.dat	(working copy)
@@ -0,0 +1,12 @@
+00
+02
+aa
+55
+00
+00
+aa
+55
+00
+00
+82
+78
Index: output/ramcode.rom
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/ramcode.rom	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/ramcode.rom	(working copy)
@@ -0,0 +1,925 @@
+c512800f
+c0000017
+c001801b
+c002801f
+c0480161
+c0490127
+c04a012d
+c04a8117
+c05800d9
+c05880db
+c05900ef
+c0598109
+c05b0112
+c05c80e3
+20203bf1
+c01f01d4
+c01f81d8
+c04380b7
+c04681ea
+c04781dc
+c066816b
+c06800c3
+20203bf1
+6810813b
+60008b81
+70800608
+20203003
+20400051
+20400043
+20400024
+20203015
+20403392
+20403407
+20403024
+204001fd
+20203022
+204000b2
+20740000
+1ff0fe00
+1fe20c00
+20400093
+6000cba7
+c0008037
+c0030041
+1fe20400
+18c22200
+6800c040
+c3000034
+1a220c00
+c6848000
+18427e00
+20600000
+1a220c00
+d8a000f8
+2020008b
+20400093
+20400093
+60008b7d
+2040003c
+20207c33
+20400096
+18c20400
+18508400
+60094b9a
+20600000
+d8a04d57
+2020008b
+680a4d4c
+1c427e00
+98467e00
+68094d50
+9846fc00
+20407efd
+1807fe00
+207a0000
+1c420400
+600a4d4c
+6800cd52
+1fe0fe01
+6000cd52
+20600000
+680a4c59
+1c427e00
+98467e00
+d8400640
+9846fc00
+20407efd
+1807fe00
+207a0000
+1c420400
+600a4c59
+68094ba5
+18508400
+9840fe00
+1ff0fe00
+60014ba5
+1ff0fe00
+1fe17e03
+c1800000
+6800cc8f
+c280006e
+c2808070
+da200000
+20400082
+7089718f
+6800cc90
+60108973
+20400071
+da200001
+20200082
+708971bf
+20200071
+708971af
+68108053
+79207e07
+60108053
+68108973
+1fe1fe30
+60108973
+70890674
+7089067c
+708972aa
+20001388
+68190150
+68108053
+793ffe07
+60108053
+18508400
+60094c95
+20600000
+d8400021
+6800cc90
+98460400
+1a227e00
+79200407
+243a0089
+793f8407
+d8a08078
+202069f4
+20400093
+1fe27200
+2040008f
+2020003c
+20400093
+e0a08000
+c200008f
+20600000
+20400096
+e8c08000
+20600000
+58004b36
+98c67c00
+24628000
+d8c04aa0
+20600000
+df200003
+d8c04ba2
+18c22200
+68014ba0
+1ff0fe00
+1fe20a00
+1a220c00
+e8c08000
+e0a08000
+204000aa
+c20000a2
+18a27e00
+1ff0fe00
+60014ba0
+20600000
+58004b9a
+98a67c00
+24628000
+d8a04b36
+20600000
+68014b9e
+68094ba0
+202000b4
+68014b9a
+68094b9c
+98467c00
+2022e9b1
+2020320b
+1c427e00
+60024d48
+6808c7ef
+6800cd4b
+98467c00
+244100be
+20207c06
+680a4d48
+600a47ec
+600a4c59
+600a4d4c
+20600000
+60088259
+6800cc8d
+1fe0fe01
+6000cc8d
+68008259
+207a0000
+1fe0ffff
+60008259
+204000cd
+202000c7
+6800cc15
+207a0000
+1fe0ffff
+6000cc15
+20600000
+1a627e00
+1fe17ef0
+c1280000
+1a627e00
+207a0000
+6000cba4
+2020009b
+20403b36
+20203cdc
+70416e7f
+20403cf3
+6800cc97
+207a0000
+704c9700
+1c427e00
+60024c59
+20600000
+6800c219
+247a0000
+70804206
+58000f0c
+20403da7
+58030d40
+20403bf3
+37d98200
+1e226000
+20403b36
+20001388
+20203d9d
+c6118000
+680147f4
+c284bd1e
+20403cab
+6801c210
+207a0000
+6800c131
+207a0000
+2040527e
+247a0000
+20403dca
+247a0000
+20403b36
+6800c7dc
+203a3d25
+6800c793
+207a0000
+20203d25
+204000b2
+24740000
+204000af
+24740000
+700b7f01
+700b7e01
+2040010e
+202000b2
+20400101
+24740000
+68008b7f
+247a0000
+20203d2d
+68008b7e
+2000000a
+c080010e
+20600000
+20400101
+24740000
+68008b7f
+247a0000
+20203d4f
+20400119
+20203aaf
+6800c219
+243a011f
+20403d91
+20007530
+20007530
+20007530
+20403b0a
+70804204
+6810896b
+1fe17ecf
+6010896b
+1fe1fe30
+6010896b
+20600000
+60088017
+1840a204
+20203a86
+60088017
+1840a200
+20203ab6
+2040012a
+58000500
+20403bf3
+70890601
+7089003c
+708901e0
+70896d12
+2000000a
+70890201
+7089023d
+2000000a
+708903b7
+2000000a
+7089027d
+6800cbef
+c0ff8145
+6802ca91
+e0a28000
+e8c28000
+e0a28000
+708956df
+20400150
+708955df
+20600000
+6802ca87
+e0a28000
+e8c28000
+e0a28000
+6800cc7d
+205a014e
+60108956
+708955d0
+20600000
+580000c2
+20600000
+20000004
+708955d1
+20000004
+708955d2
+20000004
+708955d4
+20000004
+20600000
+708955d4
+20000004
+708955d2
+20000004
+708955d1
+20000004
+708955d0
+708956c0
+20600000
+2030ba6f
+20400158
+20203a6f
+78347c00
+68120138
+79347e1a
+6012004c
+20403db0
+7000a201
+20600000
+700b7e00
+70017706
+20403fa4
+5800016a
+6001428a
+580000d2
+60014292
+580001db
+60014290
+58000024
+6001428c
+58000164
+60014288
+58004aa0
+1ff0fe00
+60014b9a
+60014b9c
+20403e0b
+58004b36
+1ff0fe00
+60014b9e
+60014ba0
+6800cc97
+c02d0199
+20358197
+68014c91
+1ff0fe00
+60014c91
+68014c93
+1ff0fe00
+60014c93
+204001a4
+680402a0
+243a0191
+68014ad4
+1ff0fe00
+203a0191
+60014c93
+204001fa
+704ba42f
+2040009b
+704c9700
+70828003
+20600000
+704ba430
+20200193
+1ce27e00
+203a01e2
+20405b63
+20404d99
+58000000
+60044040
+600147f4
+1c427e00
+60024c59
+704ba433
+20200193
+2040688a
+580007e2
+da2002a0
+d840000c
+204068d3
+2040688d
+680402a0
+207a0000
+6800cc8f
+c28001b6
+c28081c4
+680102a0
+1ff0fe00
+60014c91
+680102a6
+1ff0fe00
+60014c93
+20600000
+680902a4
+680102aa
+18422400
+1fe22200
+1ff0fe00
+60014c93
+1a227e00
+98462600
+1a63a600
+1a427e00
+9a667e00
+1ff0fe00
+60014c91
+20600000
+680902a2
+680102a8
+18422400
+1fe22200
+98462600
+1a6b2600
+1a427e00
+9a667e00
+1ff0fe00
+60014c91
+1a63a600
+1a227e00
+9a667e00
+1ff0fe00
+60014c93
+20600000
+70001627
+70890f36
+70890b5f
+202053d4
+70890f2e
+70890bff
+202053d9
+20600000
+68014ba0
+60014b9e
+68014b9c
+60014b9a
+700b7e03
+2040010e
+704c975a
+20403db8
+68120138
+793ffe0f
+6012004c
+20403db0
+d85fffff
+20203cda
+20407c20
+da2047e4
+20407f9f
+1fe20400
+20407c24
+18427e00
+207a0000
+c01081f5
+c01101f7
+c0118292
+20207c5a
+704befff
+202002c5
+793f8023
+704befff
+2020027d
+58000000
+60024ba9
+20600000
+c6918000
+68024d3d
+60024d6b
+20400223
+24340216
+704c150a
+20400249
+6800cbef
+c1ff8000
+704c3d02
+6800cd46
+247a0000
+20400101
+24740000
+68008b7f
+247a0000
+20403cab
+6801c210
+207a0000
+6800c131
+207a0000
+6801cd73
+20407e8a
+600a41fc
+20203cda
+20400101
+24740000
+68008b7f
+247a0000
+20403cab
+6801c210
+207a0000
+6800c131
+207a0000
+6800cc15
+243a0212
+68024d6b
+20200213
+6800cbef
+c0ff829b
+2040022a
+20540245
+20540305
+704be601
+20600000
+78547c00
+704be202
+6800cd57
+c0020235
+c002823b
+c0030241
+c003823e
+c0040238
+6800cd46
+245a34df
+20600000
+704d5700
+704be10a
+20200243
+704d5708
+704be110
+20200243
+704d5703
+704be104
+20200243
+704d5702
+704be103
+20200243
+704be201
+704be108
+704be700
+202034df
+d8a00cd5
+d8c04d57
+df200014
+20207e45
+704be800
+d9600d00
+34730200
+20400270
+24378259
+20400280
+6800cbe0
+1fe0fe01
+6000cbe0
+704d4600
+6800cbef
+c0ff826f
+2040026b
+704be700
+704be600
+20600000
+704d4601
+6800cbe7
+1fe0fe01
+6000cbe7
+6800cbef
+c0ff827b
+6800cbe7
+c07f827d
+6800cbe7
+d8400010
+98467c00
+20210324
+6800cbe8
+1fe0fe01
+6000cbe8
+2000000a
+c083824a
+20200324
+58000000
+60020cd5
+60024d57
+20600000
+202002b5
+7857fc00
+2040037c
+18002a00
+68024c00
+98001200
+68088017
+20403a82
+20403a87
+2040033c
+20578376
+20600000
+704d4600
+20600000
+704d4600
+700b7d32
+20207c27
+204002ea
+68008cb3
+c1810000
+6800cbdf
+207a0000
+98007200
+d8c00cb5
+d8a00d17
+20407e45
+68008cb4
+2fe1f008
+24608000
+68008cb5
+c07f8290
+6000ccb7
+20600000
+704d7601
+20600000
+79200023
+20400297
+20400255
+704bef01
+20600000
+704be000
+704be94e
+68024beb
+202002f7
+20400297
+6800cbe6
+c000b4df
+6800cbef
+c00082a3
+c00102a6
+c00182a9
+20203bf1
+704bef11
+700d37aa
+202002ab
+704bef12
+700d3755
+202002ab
+704bef13
+700d3722
+700d3802
+68024c06
+60020d39
+700d3d00
+da200d37
+d8400007
+204002e5
+20400305
+20400228
+202034df
+6800cbef
+c17f8000
+c00882bb
+c00902bd
+c00982bf
+20600000
+704bef02
+20200255
+704bef03
+20200255
+704befff
+700b7d31
+20407c27
+68020d19
+204002f7
+20200255
+79200023
+204002f8
+20400324
+6800cbef
+c1ff8000
+204002d7
+58000000
+60014c04
+20403cab
+200007d0
+6800cc04
+c07f827d
+20400270
+243782e0
+2040026b
+79200023
+700b7d3c
+20207c27
+700d37ff
+6800cbe2
+60008d38
+68024c06
+60020d39
+d8400006
+da200d37
+204002e5
+20200305
+68014c04
+1fe0fe01
+60014c04
+20400324
+202002cd
+6008cbe1
+18427200
+d8a00cd5
+1a220c00
+20207e45
+68008cb4
+1fe97e00
+6000cbdf
+20600000
+6808cc3c
+58004c2b
+98408a00
+1a227e00
+e0a08000
+18408401
+18410407
+6008cc3c
+20600000
+60024c00
+da200000
+df200004
+d8c04c00
+e8c08000
+9a20a200
+c20002fb
+1a227e00
+60014c16
+6800cc16
+6808cc17
+9840fe00
+6000cc18
+20600000
+6800cbe1
+1fe0fe02
+6000cbe3
+6800cbe2
+60008cf5
+6800cbe1
+1fe9fe00
+6808cbe0
+18410403
+18438400
+9841fe00
+6808cc0a
+9840fe00
+e0a08000
+6800cbef
+c0ff8317
+6800cbe2
+e0a08000
+6800cbe1
+98007200
+6800cbe2
+c0008322
+d8c00cd5
+20407e45
+68008cd5
+c0018320
+20600000
+700cd502
+20600000
+d8c00cd6
+20207e45
+6808cbea
+2040032a
+18408401
+18410403
+6008cbea
+20600000
+6800cc00
+1fe17e03
+1fefa204
+58004bf0
+9a20fe00
+98408c00
+e8c08000
+6000cbe9
+20600000
+7844fc00
+7843fc00
+58555555
+98001e00
+6800cbe9
+1fed8400
+79200401
+18431c00
+20600000
+20400333
+7826fc00
+7830fc00
+78507c00
+78287c00
+68014be4
+98003600
+37c18400
+242c0376
+7846fc00
+7825fc00
+7823fc00
+7824fc00
+09800008
+19897e00
+6000cc19
+6808cc18
+98467c00
+24228376
+09800008
+19897e00
+60008cb3
+68008cb3
+6808cbe2
+a8400e00
+24208376
+09800008
+19897e00
+e0a08000
+1fe97e00
+1fe1721f
+20228360
+09800008
+19897e00
+e0a08000
+c200035c
+18a22200
+09800008
+19897e00
+6000cc2a
+1a220a00
+09800018
+78287c00
+db600664
+1fef7e00
+1ff17e00
+e0a18000
+7845fc00
+20230376
+7837fc00
+68008017
+1fe0a200
+20403ab6
+7846fc00
+20403a7a
+6800cc2a
+1fe22200
+202002ee
+784dfc00
+7845fc00
+2020375c
+20403a7a
+6808cbe9
+20203a91
+204053d2
+68024c00
+98001200
+20400333
+20400379
+79202a00
+782efc00
+78307c00
+7850fc00
+19317e00
+1fecfe00
+1ff1fe00
+08008628
+784efc00
+782dfc00
+7823fc00
+7824fc00
+6800cc18
+08008608
+6800cbe3
+98007200
+d8c00cf5
+e8c08000
+08008608
+c2000392
+78247c00
+08008618
+78447c00
+37d38200
+20000064
+784efc00
+784dfc00
+20203a7a
Index: output/sched.rom
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/sched.rom	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/output/sched.rom	(working copy)
@@ -0,0 +1,678 @@
+4000:
+29   #mem_patch00
+00   #mem_patch01
+00   #mem_patch02
+00   #mem_patch03
+00   #mem_patch04
+00   #mem_patch05
+00   #mem_patch06
+00   #mem_patch07
+00   #mem_patch08
+00   #mem_patch09
+00   #mem_patch0A
+00   #mem_patch0B
+00   #mem_patch0C
+00   #mem_patch0D
+00   #mem_patch0E
+00   #mem_patch0F
+00   #mem_patch10
+00   #mem_patch11
+35   #mem_patch12
+00   #mem_patch13
+00   #mem_patch14
+00   #mem_patch15
+4f   #mem_patch16
+02   #mem_patch17
+00   #mem_patch18
+00   #mem_patch19
+00   #mem_patch1A
+00   #mem_patch1B
+00   #mem_patch1C
+00   #mem_patch1D
+00   #mem_patch1E
+00   #mem_patch1F
+00   #mem_patch20
+00   #mem_patch21
+00   #mem_patch22
+00   #mem_patch23
+00   #mem_patch24
+00   #mem_patch25
+00   #mem_patch26
+c0   #mem_patch27
+00   #mem_patch28
+00   #mem_patch29
+00   #mem_patch2A
+00   #mem_patch2B
+00   #mem_patch2C
+00  #mem_patch2D
+00   #mem_patch2E
+00   #mem_patch2F
+80   #mem_patch30
+a0   #mem_patch31
+00   #mem_patch32
+00   #mem_patch33
+00   #mem_patch34
+00   #mem_patch35
+00   #mem_patch36
+00   #mem_patch37
+00   #mem_patch38
+20   #mem_patch39
+01   #mem_patch3A
+00   #mem_patch3B
+00   #mem_patch3C
+00   #mem_patch3D
+00   #mem_patch3E
+00   #mem_patch3F
+
+
+4d50:   50 00		# 20:10ms  30:15ms
+
+4131:01
+4213:40
+4214:03
+41f7:0a
+41f5:10 00
+4133:00
+4cb1:00 00
+
+414a: 40 25 00
+
+4140:36 08 c2 08 66 22    
+4702:
+'BT3.0 Keyboard
+4280:0e 00
+4282:01
+4284:01
+4747:0a
+47dc:00
+47f6:01
+
+4172:01
+
+475b:
+06
+03#Type: Complete list of 16-bit UUIDs
+1100 0001 0210 2411  0012  0100
+
+4771:00
+
+#keyboard uuid
+4811:
+#uuids
+04 0011 0100 1002 1124
+
+#handle
+00010000
+
+#total length
+3601b6
+
+#attribute start, first 4 digit is attribute ID
+090000 0a 00010000
+090001 3503 191124
+090004 350d 3506 190100 090011 3503 190011
+090005 3503 191002
+090006 3509 09656e 09006a 090100
+090009 3508 3506 191124 090100
+09000d 350f 350d 3506 190100 090013 3503 190011
+
+#Service Name
+#090100 2517
+#'Apple Wireless Keyboard
+#41 70 70 6c 65 20 57 69 72 65 6c 65 73 73 20 4b 65 79 62 6f 61 72 64
+#Service Name
+090100 253d
+#'Broadcom Bluetooth Wireless  Keyboard                        
+4272 6f61 6463 6f6d 2042 6c75 6574 6f6f 7468 2057 6972 656c 6573 7320 204b 6579 626f 6172 6420 
+2020 2020 2020 2020 2020 2020 2020 2020 2020 2020 2020 20
+
+#Service Description
+090101 2508
+#'Keyboard
+4b6579626f617264
+
+#Provider Name
+#090102 250a
+#'Apple Inc.
+#41 70 70 6c 65 20 49 6e 63 2e
+#Provider Name
+090102 2510
+#'Broadcom Corp.  
+4272 6f61 6463 6f6d 2043 6f72 702e 2020
+
+090200 090100
+090201 090111
+090202 0840
+090203 0821
+090204 2801
+090205 2801
+090206 35a5 35a3 0822 259f
+
+# hid descriptor
+0501 # Usage Page(Generic Desktop)
+0906 # Usage(Keyboard)
+a101 # Collection(Application)
+8501 # Report ID(1)
+7501 # Report Size(1)
+9508 # Report Count(8)
+0507 # Usage Page(Keyboard/Keypad)
+19e0 # Usage Minimum(224)
+29e7 # Usage Maximum(231)
+1500 # Logical Minimum(0)
+2501 # Logical Maximum(1)
+8102 # Input(Data Variable Absolute) ; Modifier byte
+9501 # Report Count(1)
+7508 # Report Size(8)
+8103 # Input(Constant Variable Absolute) ; 
+9505 # Report Count(5)
+7501 # Report Size(1)
+0508 # Usage Page(LEDs)
+1901 # Usage Minimum(1)
+2905 # Usage Maximum(5)
+9102 # Output(Data Variable Absolute) ; LED report
+9501 # Report Count(1)
+7503 # Report Size(3)
+9103 # Output(Constant Variable Absolute) ; 
+9506 # Report Count(6)
+7508 # Report Size(8)
+1500 # Logical Minimum(0)
+25ff # Logical Maximum(255)
+0507 # Usage Page(Keyboard/Keypad)
+1900 # Usage Minimum(0)
+29ff # Usage Maximum(255)
+8100 # Input(Data Array) ; Key arrarys 6 bytes
+c0 # End Collection
+
+05 0c  		
+09 01  		
+a1 01	
+85 02			
+19 00  		
+2a ff 03 
+15 00 
+26 ff 03		
+95 01  		
+75 10  			
+81 00  		
+c0
+
+#29
+#05 01
+#09 80
+#A1 01
+#85 03
+#15 00
+#25 01
+#75 01
+#95 03
+#19 81
+#29 83
+#81 02
+#95 01
+#75 05
+#81 03
+#C0
+
+#69
+05 01 # Usage Page(Generic Desktop)
+09 02 # Usage(Mouse)
+a1 01 # Collection(Application)
+85 03 # Report ID(3)
+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 80  #Logical Minimum (-32767)
+26 FF 7F #Logical Maximum (32767) 
+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 Devices)
+0a 38 02
+95 01   #REPORT_COUNT (1)	
+81 06  #INPUT (Data,Var,Rel)
+
+c0 # End Collection
+c0 # End Collection
+
+090207 3508 3506 090409 090100
+09020b 090100
+09020c 090c80
+09020d 2800
+09020e 2801
+09020f 090318
+090210 090000
+#attribute end
+
+#uuids for pnpInformation	
+03 1002 1200 0001
+
+#handle
+00010001
+
+#total length 90 bytes
+3600a1
+
+#attribute list
+090000 0a00010001
+090001 3503 191200
+090004 350d 3506 190100 090001 3503 190001
+090006 3509 09656e 09006a 090100
+090009 3508 3506 191200 090100
+090100 252f42726f6164636f6d20426c7565746f6f746820576972656c657373204b6579626f61726420506e5020536572766572
+090101 25084b6579626f617264
+090200 090103
+090201# VendorID
+0904e8
+090202#ProductID
+097021
+090203 090001
+090204 2801
+090205 090002
+
+#attribute end
+00
+
+#Auto reconnection after power on
+
+4759:11 48
+#Auto reconnection after power on
+4132:43
+41fb:0
+4138:
+ff
+ff
+8f
+f8	#fe--EDR  F8--BR
+83	#AFHclose 83
+9d
+59
+82
+
+#bluetootch param init
+07dc:00
+00a2:00
+07dd:00
+0016:27
+
+47fd:ff
+47f7:ff
+
+416e:80
+
+
+4ba2:02 01
+
+
+
+
+#attribute list: handle 2bytes, uuid 2bytes, length 1bytes, attribute Nbytes
+4504:
+
+#Primary service: GATT
+01 00 00 28 02 01 18
+#Characteristic: Service changed
+02 00 03 28 01 20
+03 00 05 2a 01 00
+#Client Characteristic Configuration
+04 00 02 29 02 00 00
+
+#Primary Service: GAP
+05 00 00 28 02 00 18 
+#Characteristic: Device Name
+06 00 03 28 01 02 
+07 00 00 2a 
+'BT4.2 Keyboard
+
+#Characteristic: Appearance
+08 00 03 28 01 02 
+09 00 01 2a 02 c1 03 
+#Characteristic: Peripheral Preferred Connection Parameters
+0a 00 03 28 01 02
+0b 00 04 2a 08 06 00 06 00 64 00 2c 01 # interval 6ms, latency 100, timeout 300
+
+#Primary Service: Device Information
+0c 00 00 28 02 0a 18 
+#Characteristic: pnp id
+0d 00 03 28 01 02
+0e 00 50 2a 07 02 e8 04 21 70 01 00		# SAMSUNG soft keyboard,setup shortcuts
+
+#Primary service: HID
+0f 00 00 28 02 12 18
+#Characteristic:Protocol mode
+10 00 03 28 01 06
+11 00 4e 2a 01 01
+#Characteristic: hid report
+12 00 03 28 01 12   
+13 00 4d 2a 08 00 00 00 00 00 00 00 00	#hid report	led handle write
+14 00 02 29 02 00 00	
+15 00 08 29 02 01 01	#Report ID: 1	Report Type: Input
+#Characteristic:hid report
+16 00 03 28 01 12   
+17 00 4d 2a 02 00 00 	#hid report	led handle write
+18 00 02 29 02 00 00	
+19 00 08 29 02 02 01	#Report ID: 2	Report Type: Input
+
+#Characteristic:hid report
+1a 00 03 28 01 12  
+1b 00 4d 2a 05 00 00 00 00 00
+1c 00 02 29 02 00 00
+1d 00 08 29 02 03 01	#Report ID: 3	Report Type: Input
+
+#Characteristic:hid report
+1e 00 03 28 01 0e   
+1f 00 4d 2a 02 00	00	#hid report	led handle write
+20 00 02 29 02 00 00	
+21 00 08 29 02 01 02	#Report ID: 1	Report Type: Output
+
+#Characteristic:Report map
+22 00 03 28 01 0a
+23 00 4b 2a a0
+#66
+05 01
+09 06
+a1 01
+85 01
+75 01 
+95 08
+05 07
+19 e0 
+29 e7 
+15 00
+25 01
+81 02
+95 01 
+75 08
+81 03 
+95 05
+75 01
+05 08
+19 01
+29 05  
+91 02 
+95 01  
+75 03  
+91 03
+95 06 
+75 08 
+15 00 
+26 ff 00
+05 07
+19 00
+29 ff 
+81 00
+c0 
+
+#25
+05 0c  		
+09 01  		
+a1 01	
+85 02			
+19 00  		
+2a ff 03 
+15 00 
+26 ff 03		
+95 01  		
+75 10  			
+81 00  		
+c0
+
+#29
+#05 01
+#09 80
+#A1 01
+#85 03
+#15 00
+#25 01
+#75 01
+#95 03
+#19 81
+#29 83
+#81 02
+#95 01
+#75 05
+#81 03
+#C0
+
+#60
+05 01 # Usage Page(Generic Desktop)
+09 02 # Usage(Mouse)
+a1 01 # Collection(Application)
+85 03 # Report ID(3)
+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 80  #Logical Minimum (-32767)
+26 FF 7F #Logical Maximum (32767) 
+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 Devices)
+0a 38 02
+95 01   #REPORT_COUNT (1)	
+81 06  #INPUT (Data,Var,Rel)
+
+c0 # End Collection
+c0 # End Collection
+
+#Characteristic:Hid information
+24 00 03 28 01 02
+25 00 4a 2a 04 11 01 00 01        
+#Characteristic
+26 00 03 28 01 04
+27 00 4c 2a 01 00
+
+#Primary Service: BAS
+28 00 00 28 02 0f 18 
+#Characteristic: Battery Level
+29 00 03 28 01 12 
+2a 00 19 2a 01 64 
+#Client Characteristic Configuration
+2b 00 02 29 02 00 00 
+#End of Attribute list
+00 00
+
+
+4c6a:17
+46f9:50
+44c2:14
+44f9:11 46 34 54 77 dd
+
+
+4c7e:00
+4cb8:13 00
+4cba:17 00
+4cbc:1b 00
+4c60:50
+
+4c6c:
+0c 00 #Length
+05 00 #CID
+12 b4 
+08 00 
+10 00 #min interval
+10 00 #max interval
+00 00 #latency
+2c 01 #timeout
+
+4419:
+'BT4.2 Keyboard
+
+44e4:07 
+44dd:01
+#mem_le_adv_interval_max:00 01
+43d9:1f
+43da:
+#02 01 05 05 02 12 18 0f 18 03 19 c1 03
+02 01 05 03 19 c1 03 03 03 12 18
+'\09BT4.2 Keyboard
+
+43f9:1f
+43fa:
+'\09BT4.2 Keyboard
+
+4d53:20 21 08 12		#version data 20210409
+
+4c91:9f 3e
+4c93:cd 4d
+4c8f:02    #01 VINLPM      #02 HVIN      #04 GPIO
+
+#24g init
+4c10:01#tx
+4be2:02        #mouse 1,kb 2
+4c0f:4#max tx retry
+4c0a:00#with ack
+4be4:c0 12     #400us 
+4bf0:00 13 2c 42
+4bf4:06 15 36 48
+4bf8:0f 1a 3a 4c
+4bfc:11 23 31 4d
+4bef:ff
+4beb:20 15 10 05
+4c7d:c2
+0d37:00 00 00 00 00 00 00 00 00 00
+4d3d:00 48 5d 00 00 00 00 00#10 min
+4d6f:ff ff ff ff
+4d73:e8 fd 00 #00 00 0a
+
+4216:8f 10 ce
+4219:00 0a 0b ef 0f
+41f8:00
+00a3: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 03
+4161:00 06
+4c98:00 13
+
+429b:30 3f
+42aa:20
+#pointers to tail space of mem_le_att_list
+4f70:
+07 ff #2M_IF
+0a fb
+0b ff 
+
+#agc table
+1a fb
+1b fb
+1c fb
+1d f6
+1e f2
+1f ee
+20 ea
+21 e6
+22 e2
+23 de
+24 da
+25 d6
+26 d2
+27 ce
+28 ca
+29 c6
+2a c2
+2b bd
+2c b9
+2d b5
+2e b1
+2f ad
+30 a9
+31 80
+32 80
+33 80
+34 c0
+35 c1
+36 c2
+37 c3
+38 c4
+39 c5
+3a c6
+3b c7
+3c 06
+3d 07
+3e 46
+3f 85
+40 86
+41 87
+42 c6
+43 c7
+44 d6
+45 d7
+46 e6
+47 f5
+48 00
+49 f8
+4a 7f
+4e ec
+4f 5e
+
+# tx power
+55 d0
+56 c0
+57 4c
+58 6c
+59 50
+
+#dpll
+68 e4
+69 00
+6a 00
+6b 30
+ff
+4163:70 4f
+
+46ee:
+4a91:
+55 d0
+56 c0
+57 4c
+58 6c
+59 50
+
+4a87:
+55 d0
+56 c0
+57 4c
+58 6c
+59 50
+
Index: patch/adc.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: patch/adc.obj
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: patch/bluetooth.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: patch/bluetooth.obj
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: patch/geneep.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: patch/geneep.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: patch/global_variable.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: patch/global_variable.obj
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: patch/gpio.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: patch/gpio.obj
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: patch/iic.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: patch/iic.obj
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: patch/ipc.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: patch/ipc.obj
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: patch/kb.dat
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/patch/kb.dat	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/patch/kb.dat	(working copy)
@@ -0,0 +1,570 @@
+mem_patch00:
+29   #mem_patch00
+00   #mem_patch01
+00   #mem_patch02
+00   #mem_patch03
+00   #mem_patch04
+00   #mem_patch05
+00   #mem_patch06
+00   #mem_patch07
+00   #mem_patch08
+00   #mem_patch09
+00   #mem_patch0A
+00   #mem_patch0B
+00   #mem_patch0C
+00   #mem_patch0D
+00   #mem_patch0E
+00   #mem_patch0F
+00   #mem_patch10
+00   #mem_patch11
+35   #mem_patch12
+00   #mem_patch13
+00   #mem_patch14
+00   #mem_patch15
+4f   #mem_patch16
+02   #mem_patch17
+00   #mem_patch18
+00   #mem_patch19
+00   #mem_patch1A
+00   #mem_patch1B
+00   #mem_patch1C
+00   #mem_patch1D
+00   #mem_patch1E
+00   #mem_patch1F
+00   #mem_patch20
+00   #mem_patch21
+00   #mem_patch22
+00   #mem_patch23
+00   #mem_patch24
+00   #mem_patch25
+00   #mem_patch26
+c0   #mem_patch27
+00   #mem_patch28
+00   #mem_patch29
+00   #mem_patch2A
+00   #mem_patch2B
+00   #mem_patch2C
+00  #mem_patch2D
+00   #mem_patch2E
+00   #mem_patch2F
+80   #mem_patch30
+a0   #mem_patch31
+00   #mem_patch32
+00   #mem_patch33
+00   #mem_patch34
+00   #mem_patch35
+00   #mem_patch36
+00   #mem_patch37
+00   #mem_patch38
+20   #mem_patch39
+01   #mem_patch3A
+00   #mem_patch3B
+00   #mem_patch3C
+00   #mem_patch3D
+00   #mem_patch3E
+00   #mem_patch3F
+
+
+mem_customize_timer_setup:   50 00		# 20:10ms  30:15ms
+
+mem_lpm_mode:01
+mem_lpm_mult:40
+mem_lpm_mult_timeout:03
+mem_lpm_overhead:0a
+mem_lpm_interval:10 00
+mem_scan_mode:00
+mem_test:00 00
+
+mem_class: 40 25 00
+
+mem_lap:36 08 c2 08 66 22    
+mem_local_name_length:
+'BT3.0 Keyboard
+mem_sniff_param_interval:0e 00
+mem_sniff_param_attempt:01
+mem_sniff_param_timeout:01
+mem_unsniff2sniff_timer:0a
+mem_ssp_enable:00
+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
+
+#keyboard uuid
+mem_kb_uuid_list:
+#uuids
+04 0011 0100 1002 1124
+
+#handle
+00010000
+
+#total length
+3601b6
+
+#attribute start, first 4 digit is attribute ID
+090000 0a 00010000
+090001 3503 191124
+090004 350d 3506 190100 090011 3503 190011
+090005 3503 191002
+090006 3509 09656e 09006a 090100
+090009 3508 3506 191124 090100
+09000d 350f 350d 3506 190100 090013 3503 190011
+
+#Service Name
+#090100 2517
+#'Apple Wireless Keyboard
+#41 70 70 6c 65 20 57 69 72 65 6c 65 73 73 20 4b 65 79 62 6f 61 72 64
+#Service Name
+090100 253d
+#'Broadcom Bluetooth Wireless  Keyboard                        
+4272 6f61 6463 6f6d 2042 6c75 6574 6f6f 7468 2057 6972 656c 6573 7320 204b 6579 626f 6172 6420 
+2020 2020 2020 2020 2020 2020 2020 2020 2020 2020 2020 20
+
+#Service Description
+090101 2508
+#'Keyboard
+4b6579626f617264
+
+#Provider Name
+#090102 250a
+#'Apple Inc.
+#41 70 70 6c 65 20 49 6e 63 2e
+#Provider Name
+090102 2510
+#'Broadcom Corp.  
+4272 6f61 6463 6f6d 2043 6f72 702e 2020
+
+090200 090100
+090201 090111
+090202 0840
+090203 0821
+090204 2801
+090205 2801
+090206 35a5 35a3 0822 259f
+
+# hid descriptor
+0501 # Usage Page(Generic Desktop)
+0906 # Usage(Keyboard)
+a101 # Collection(Application)
+8501 # Report ID(1)
+7501 # Report Size(1)
+9508 # Report Count(8)
+0507 # Usage Page(Keyboard/Keypad)
+19e0 # Usage Minimum(224)
+29e7 # Usage Maximum(231)
+1500 # Logical Minimum(0)
+2501 # Logical Maximum(1)
+8102 # Input(Data Variable Absolute) ; Modifier byte
+9501 # Report Count(1)
+7508 # Report Size(8)
+8103 # Input(Constant Variable Absolute) ; 
+9505 # Report Count(5)
+7501 # Report Size(1)
+0508 # Usage Page(LEDs)
+1901 # Usage Minimum(1)
+2905 # Usage Maximum(5)
+9102 # Output(Data Variable Absolute) ; LED report
+9501 # Report Count(1)
+7503 # Report Size(3)
+9103 # Output(Constant Variable Absolute) ; 
+9506 # Report Count(6)
+7508 # Report Size(8)
+1500 # Logical Minimum(0)
+25ff # Logical Maximum(255)
+0507 # Usage Page(Keyboard/Keypad)
+1900 # Usage Minimum(0)
+29ff # Usage Maximum(255)
+8100 # Input(Data Array) ; Key arrarys 6 bytes
+c0 # End Collection
+
+05 0c  		
+09 01  		
+a1 01	
+85 02			
+19 00  		
+2a ff 03 
+15 00 
+26 ff 03		
+95 01  		
+75 10  			
+81 00  		
+c0
+
+#29
+#05 01
+#09 80
+#A1 01
+#85 03
+#15 00
+#25 01
+#75 01
+#95 03
+#19 81
+#29 83
+#81 02
+#95 01
+#75 05
+#81 03
+#C0
+
+#69
+05 01 # Usage Page(Generic Desktop)
+09 02 # Usage(Mouse)
+a1 01 # Collection(Application)
+85 03 # Report ID(3)
+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 80  #Logical Minimum (-32767)
+26 FF 7F #Logical Maximum (32767) 
+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 Devices)
+0a 38 02
+95 01   #REPORT_COUNT (1)	
+81 06  #INPUT (Data,Var,Rel)
+
+c0 # End Collection
+c0 # End Collection
+
+090207 3508 3506 090409 090100
+09020b 090100
+09020c 090c80
+09020d 2800
+09020e 2801
+09020f 090318
+090210 090000
+#attribute end
+
+#uuids for pnpInformation	
+03 1002 1200 0001
+
+#handle
+00010001
+
+#total length 90 bytes
+3600a1
+
+#attribute list
+090000 0a00010001
+090001 3503 191200
+090004 350d 3506 190100 090001 3503 190001
+090006 3509 09656e 09006a 090100
+090009 3508 3506 191200 090100
+090100 252f42726f6164636f6d20426c7565746f6f746820576972656c657373204b6579626f61726420506e5020536572766572
+090101 25084b6579626f617264
+090200 090103
+090201# VendorID
+0904e8
+090202#ProductID
+097021
+090203 090001
+090204 2801
+090205 090002
+
+#attribute end
+00
+
+#Auto reconnection after power on
+
+memui_uuid_table:mem_kb_uuid_list
+#Auto reconnection after power on
+mem_device_option:43
+mem_ptt:0
+mem_features:
+ff
+ff
+8f
+f8	#fe--EDR  F8--BR
+83	#AFHclose 83
+9d
+59
+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
+
+mem_seqi:80
+
+
+mem_ipc_tx_evt_buff:02 01
+
+
+
+
+#attribute list: handle 2bytes, uuid 2bytes, length 1bytes, attribute Nbytes
+mem_le_att_list:
+
+#Primary service: GATT
+01 00 00 28 02 01 18
+#Characteristic: Service changed
+02 00 03 28 01 20
+03 00 05 2a 01 00
+#Client Characteristic Configuration
+04 00 02 29 02 00 00
+
+#Primary Service: GAP
+05 00 00 28 02 00 18 
+#Characteristic: Device Name
+06 00 03 28 01 02 
+07 00 00 2a 
+'BT4.2 Keyboard
+
+#Characteristic: Appearance
+08 00 03 28 01 02 
+09 00 01 2a 02 c1 03 
+#Characteristic: Peripheral Preferred Connection Parameters
+0a 00 03 28 01 02
+0b 00 04 2a 08 06 00 06 00 64 00 2c 01 # interval 6ms, latency 100, timeout 300
+
+#Primary Service: Device Information
+0c 00 00 28 02 0a 18 
+#Characteristic: pnp id
+0d 00 03 28 01 02
+0e 00 50 2a 07 02 e8 04 21 70 01 00		# SAMSUNG soft keyboard,setup shortcuts
+
+#Primary service: HID
+0f 00 00 28 02 12 18
+#Characteristic:Protocol mode
+10 00 03 28 01 06
+11 00 4e 2a 01 01
+#Characteristic: hid report
+12 00 03 28 01 12   
+13 00 4d 2a 08 00 00 00 00 00 00 00 00	#hid report	led handle write
+14 00 02 29 02 00 00	
+15 00 08 29 02 01 01	#Report ID: 1	Report Type: Input
+#Characteristic:hid report
+16 00 03 28 01 12   
+17 00 4d 2a 02 00 00 	#hid report	led handle write
+18 00 02 29 02 00 00	
+19 00 08 29 02 02 01	#Report ID: 2	Report Type: Input
+
+#Characteristic:hid report
+1a 00 03 28 01 12  
+1b 00 4d 2a 05 00 00 00 00 00
+1c 00 02 29 02 00 00
+1d 00 08 29 02 03 01	#Report ID: 3	Report Type: Input
+
+#Characteristic:hid report
+1e 00 03 28 01 0e   
+1f 00 4d 2a 02 00	00	#hid report	led handle write
+20 00 02 29 02 00 00	
+21 00 08 29 02 01 02	#Report ID: 1	Report Type: Output
+
+#Characteristic:Report map
+22 00 03 28 01 0a
+23 00 4b 2a a0
+#66
+05 01
+09 06
+a1 01
+85 01
+75 01 
+95 08
+05 07
+19 e0 
+29 e7 
+15 00
+25 01
+81 02
+95 01 
+75 08
+81 03 
+95 05
+75 01
+05 08
+19 01
+29 05  
+91 02 
+95 01  
+75 03  
+91 03
+95 06 
+75 08 
+15 00 
+26 ff 00
+05 07
+19 00
+29 ff 
+81 00
+c0 
+
+#25
+05 0c  		
+09 01  		
+a1 01	
+85 02			
+19 00  		
+2a ff 03 
+15 00 
+26 ff 03		
+95 01  		
+75 10  			
+81 00  		
+c0
+
+#29
+#05 01
+#09 80
+#A1 01
+#85 03
+#15 00
+#25 01
+#75 01
+#95 03
+#19 81
+#29 83
+#81 02
+#95 01
+#75 05
+#81 03
+#C0
+
+#60
+05 01 # Usage Page(Generic Desktop)
+09 02 # Usage(Mouse)
+a1 01 # Collection(Application)
+85 03 # Report ID(3)
+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 80  #Logical Minimum (-32767)
+26 FF 7F #Logical Maximum (32767) 
+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 Devices)
+0a 38 02
+95 01   #REPORT_COUNT (1)	
+81 06  #INPUT (Data,Var,Rel)
+
+c0 # End Collection
+c0 # End Collection
+
+#Characteristic:Hid information
+24 00 03 28 01 02
+25 00 4a 2a 04 11 01 00 01        
+#Characteristic
+26 00 03 28 01 04
+27 00 4c 2a 01 00
+
+#Primary Service: BAS
+28 00 00 28 02 0f 18 
+#Characteristic: Battery Level
+29 00 03 28 01 12 
+2a 00 19 2a 01 64 
+#Client Characteristic Configuration
+2b 00 02 29 02 00 00 
+#End of Attribute list
+00 00
+
+
+mem_le_local_mtu:17
+mem_le_transmit_window:50
+mem_le_notify_handle:14
+mem_le_lap:11 46 34 54 77 dd
+
+
+mem_empty_count:00
+mem_att_report1:13 00
+mem_att_report2:17 00
+mem_att_report3:1b 00
+mem_le_rx_window:50
+
+mem_le_connection_updata_param:
+0c 00 #Length
+05 00 #CID
+12 b4 
+08 00 
+10 00 #min interval
+10 00 #max interval
+00 00 #latency
+2c 01 #timeout
+
+mem_le_name_len:
+'BT4.2 Keyboard
+
+mem_le_adv_channel_map:07 
+mem_le_adv_direct_addr_type:01
+#mem_le_adv_interval_max:00 01
+mem_le_adv_data_len:1f
+mem_le_adv_data:
+#02 01 05 05 02 12 18 0f 18 03 19 c1 03
+02 01 05 03 19 c1 03 03 03 12 18
+'\09BT4.2 Keyboard
+
+mem_le_scan_data_len:1f
+mem_le_scan_data:
+'\09BT4.2 Keyboard
+
+mem_version_yy_mm_dd:20 21 08 12		#version data 20210409
+
+mem_adc_0v:9f 3e
+mem_adc_3v:cd 4d
+mem_adc_config_flag:02    #01 VINLPM      #02 HVIN      #04 GPIO
+
+#24g init
+mem_24g_mode:01#tx
+mem_24g_data_type:02        #mouse 1,kb 2
+mem_24g_max_retry:4#max tx retry
+mem_24g_no_ack:00#with ack
+mem_24g_rx_window:c0 12     #400us 
+mem_24g_ch_map1:00 13 2c 42
+mem_24g_ch_map2:06 15 36 48
+mem_24g_ch_map3:0f 1a 3a 4c
+mem_24g_ch_map4:11 23 31 4d
+mem_24g_pairing_sm:ff
+mem_24g_paring_addr:20 15 10 05
+mem_pair_state:c2
+mem_24g_common_temp:00 00 00 00 00 00 00 00 00 00
+mem_24g_enter_hibernate:00 48 5d 00 00 00 00 00#10 min
+mem_24g_enter_hibernate_max:ff ff ff ff
+mem_24g_short_sleep_counter:e8 fd 00 #00 00 0a
+
Index: patch/kb_process.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: patch/kb_process.obj
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: patch/keyboard.format
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/patch/keyboard.format	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/patch/keyboard.format	(working copy)
@@ -0,0 +1,339 @@
+
+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
+0 mem_kb_map
+630 mem_kb_uuid_list
+
+// patch area
+10 mem_24g_paring_tx_power_param
+10 mem_5db_tx_power_param
+
+//c51
+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
+100 mem_ipc_2C51_fifo_head
+0	mem_ipc_2C51_fifo_end
+2	mem_ipc_2bt_read_index
+2	mem_ipc_2bt_write_index
+2	mem_ipc_2C51_read_index
+2	mem_ipc_2C51_write_index
+
+2 mem_ipc_tx_evt_buff
+1 mem_ipc_tx_evt
+
+2 mem_ipc_bt_timer
+1 mem_ipc_rx_type
+
+0 mem_rfcomm_tx_buff
+
+1 mem_queue_ele_num
+2 mem_queue_write
+2 mem_queue_read
+0 mem_queue_start
+12 mem_uart_packet
+12 mem_data_ele0
+12 mem_data_ele1
+12 mem_data_ele2
+0 mem_queue_end
+2 mem_queue_temp
+
+
+// patch allocated
+1 mem_24g_rxdata_length
+1 mem_24g_pid
+1 mem_24g_datalen
+1 mem_24g_data_type
+1 mem_24g_txlen
+2 mem_24g_rx_window
+1 mem_24g_ensure
+1 mem_24g_get_ack_fail
+1 mem_24g_retry
+1 mem_24g_ch
+1 mem_24g_current_ch_number
+4 mem_24g_paring_addr
+1 mem_24g_pairing_sm
+4 mem_24g_ch_map1
+4 mem_24g_ch_map2
+4 mem_24g_ch_map3
+4 mem_24g_ch_map4
+4 mem_24g_addr
+2 mem_24g_check_dongle_times
+4 mem_24g_device_addr
+1 mem_24g_no_ack
+3 mem_24g_sta_crc
+1 mem_24g_sta_pid
+1 mem_24g_max_retry
+1 mem_24g_mode
+1 mem_24g_hop_pac_retry
+1 mem_24g_idle_timeout
+1 mem_24g_idle_cnt
+1 mem_24g_auto_paring_switch
+1 mem_24g_enter_lpm_timer
+2 mem_24g_syncword
+1 mem_24g_syncword_crc8
+1 mem_24g_get_syncword_crc8
+2 mem_24g_discard_cnt
+2 mem_cb_24g_data
+9 mem_24g_lasttx
+
+1 mem_power_ctrl_pac_succ_cnt
+1 mem_power_ctrl_level
+
+1 mem_rssi_avg_received
+1 mem_rssi_hex_received
+8 mem_rssi_signal_buf
+8 mem_rssi_noise_buf
+1 mem_rssi_noise_index
+1 mem_rssi_signal_index
+
+1 mem_tx_power
+1 mem_tx_power_temp
+3 mem_cnt
+1 mem_last_txlch
+2 mem_last_txlen
+20 mem_last_txdata
+
+//le
+4 mem_ipc_last_check_timer
+1 mem_prepare_write_len
+2 mem_ipc_c51_timer
+1 mem_le_rx_window
+2 mem_le_find_type_value_start_handle
+2 mem_le_find_type_value_end_handle
+2 mem_le_cur_att_type
+1 mem_le_search_len
+1 mem_le_ll_unknown_type
+1 mem_le_pairing_state
+2 mem_le_local_mtu
+16 mem_le_connection_updata_param
+1 mem_ltk_states
+1 mem_pair_state
+1 mem_empty_count
+1 mem_shutter_find_type_value_flag
+
+1 mem_le51_payload_len
+1 mem_le51_cmd
+
+1 mem_le51_tx_length
+1 mem_le51_txbuff_inuse
+9 mem_le51_txbuf
+
+1 mem_ipc_bt_100ms_timer
+1 mem_ipc_c51_100ms_timer
+
+1 mem_adc_config_flag
+1 mem_adc_channel
+2 mem_adc_0v
+2 mem_adc_3v
+2 mem_adc_current_value
+
+1 mem_hibernate_flag
+2 mem_new_supervision_to
+1 mem_kb_wake_timer
+20 mem_kb_last_data
+1 mem_kb_keycount
+1 mem_led_cap_delay_timer
+3 mem_test
+1 mem_seq
+1 mem_recon_index
+1 mem_power_on_flag
+1 mem_caps_num_lock
+2 mem_att_report1
+2 mem_att_report2
+2 mem_att_report3
+1 mem_suspend_flag
+120 mem_32asm_data_end
+1 mem_store_ltk_timer
+1 mem_reconnect_continue
+4 mem_le_pin_code
+8 mem_24g_enter_hibernate
+1 mem_24g_txfail_cnt
+1 mem_mouse_retry_flag
+1 mem_24g_led_flag
+4 mem_ui_timer_last_btclk_temp
+4 mem_ui_check_timer_setup
+2 mem_customize_timer_setup
+1 mem_customize_timer
+4 mem_version_yy_mm_dd
+20 mem_24g_txbuf_new
+4 mem_24g_enter_hibernate_setup
+4 mem_24g_enter_hibernate_max
+3 mem_24g_short_sleep_counter
+1 mem_pc_sleep_flag
+)
+
+//C51 synchronous task
+(
+3 START_C51_CORE
+)
+
+(
+0 ADC_CONFIG_VINLPM
+1 ADC_CONFIG_HVIN
+2 ADC_CONFIG_GPIO
+)
+
+(
+0 P24G_PAIRING_REQ_HEAD
+1 P24G_PAIRING_COMPLETE_HEAD
+)
+
+(
+0 ENSURE_OFF_24G
+1 ENSURE_ON_24G
+0x4e G24_PAIR_CH
+)
+
+(
+7 RSSI_BUF_LEN_SIGNAL
+255 RSSI_BUF_LEN_NOISE
+0x50 RSSI_THRESH_NOISE
+
+0x77 RSSI_DIS_MIN_24G
+0x82 RSSI_DIS_MAX_24G
+
+0x75 RSSI_DIS_MIN_BLE
+0x80 RSSI_DIS_MAX_BLE
+)
+
+(//bluetooth tx power
+0 TX_POWER_0DB
+1 TX_POWER_3DB
+2 TX_POWER_5DB
+3 TX_POWER_f3DB
+4 TX_POWER_f5DB
+)
+
+/* 24g */
+(
+6 dlen_24g
+14 plen_24g
+90 blen_tx_24g
+106 blen_rx_24g
+42 blen_txack_24g
+58 blen_rxack_24g
+7 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
+)
+
+(
+0 disable_24g
+1 tx_24g
+2 rx_24g
+
+0 bit_ack_24g
+)
+
+
+//mem_24g_data_type
+(
+0x07 bits_data
+//0-2 data type
+3 bit_abort
+4 bit_hop
+5 bit_sync
+//6-7 channel offset
+)
+
+// ble
+(
+0 FLAG_LE_PAIRING_NULL
+1 FLAG_LE_PAIRING_START
+2 FLAG_LE_PAIRING_AFTER_AUTH
+3 FLAG_LE_PAIRING_END
+)
+
+(
+0 PAIR_UNKNOWN
+1 PAIR_ING
+2 PAIR_DONE
+)
+
+(
+0 DEFAULT_STATES
+1 IPHONE_LOST_LTK
+2 MODULE_LOST_LTK
+3 LTK_NOT_LOST
+)
+
+(
+3 QUEUE_ELE_COUNT
+12 QUEUE_ELE_LENGTH
+)
+
+
+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
+
+)
+
+
+/* special key codes */
+(
+0x1d KB_KCODE_1_M1
+0x27 KB_KCODE_0
+0x28 KB_KCODE_ENTER
+0x2a KB_KCODE_BKSP
+)
+
+
+0x01 HID_REPORTID_1
+0x02 HID_REPORTID_2
+0x03 HID_REPORTID_3
+0x04 HID_REPORTID_4
+
+/*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
+
+
+
Index: patch/keyscan.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: patch/keyscan.obj
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: patch/led.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: patch/led.obj
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: patch/memmap.format
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/patch/memmap.format	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/patch/memmap.format	(working copy)
@@ -0,0 +1,1119 @@
+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_tx_lch
+0x0091 mem_tx_len
+0x0093 mem_subsniff_instant
+0x0097 mem_subsniff_rate
+0x0098 mem_subsniff_tcmax
+0x009a mem_subsniff_tsniff
+0x009b mem_lpm_adjust
+0x009c mem_sync_clke
+0x00a2 mem_lpm_current_mult
+0x00a3 mem_gpio_wakeup_low
+0x00a7 mem_gpio_wakeup_high
+0x00ab mem_air_mode
+0x00ac mem_sco_asso_handle
+0x00ad mem_sco_handle
+0x00af mem_esco_desco
+0x00b0 mem_esco_type
+0x00b1 mem_neogotiation_state
+0x00b2 mem_saved_amaddr
+0x00b3 mem_esco_arq
+0x00b4 mem_esco_saved_arq
+0x00b5 mem_sco_obuf
+0x00d3 mem_sco_ibuf
+0x00f1 mem_sco_poll
+0x00f2 mem_npage_index
+0x00f3 mem_page_mode
+0x00f4 mem_page_clk
+0x00f8 mem_tst_pktcnt_sync
+0x00fa mem_tst_pktcnt_hec
+0x00fc mem_tst_pktcnt_crc
+0x00fe mem_tst_pktcnt_dmh
+0x0100 mem_tmp_buffer_head
+0x0103 mem_tmp_buffer
+0x0153 mem_tester_emulate
+0x0154 mem_temp_payload
+0x0154 test_mode_scenario
+0x0155 test_mode_hopping_mode
+0x0156 test_mode_tx_freq
+0x0157 test_mode_rx_freq
+0x0158 test_mode_power_mode
+0x0159 test_mode_poll_period
+0x015a test_mode_packet_type
+0x015b test_mode_data_length
+0x015d mem_test_mode_old_debug_config
+0x015e mem_tester_cnt
+0x015f mem_temp_am_addr
+0x0160 mem_temp_arq
+0x0161 mem_pdatatemp
+0x0169 mem_len
+0x016b mem_clkn_bt
+0x016f mem_clke_bt
+0x0173 mem_dpll_clkn
+0x0177 mem_connection_options
+0x0178 mem_nameres_cnt
+0x0179 mem_txptr
+0x017b mem_slot_offset
+0x017d extm_fhs_misc
+0x017e extm_newconn_am_addr
+0x017f extm_class
+0x0182 extm_lap
+0x0185 extm_uap
+0x0186 extm_nap
+0x0189 mem_debug_config
+0x018a mem_lch_code
+0x018b mem_fhs_am_addr
+0x018c mem_dpll_error
+0x018e mem_bdaddr_list_buff
+0x01b2 mem_select_list_item
+0x01b3 mem_temp_reconn_record
+0x01b3 mem_record_bt_mode
+0x01b4 mem_temp_lap
+0x01ba mem_list_item_ptr
+0x01bc mem_eir
+0x0220 mem_ucode_status
+0x0221 mem_otp_ucode_flag
+0x0223 mem_spid_tbuf/* spid buf: 03 addr[23:16] addr[15:8] addr[7:0] */
+0x0224 mem_iicd_tbuf/* iicd buf: iic_adr addr[15:8] addr[7:0] iic_adr */
+0x0224 mem_addr_hi
+0x0225 mem_addr_mi
+0x0226 mem_addr_lo
+0x0227 mem_iicd_addr
+0x0228 mem_spid_rbuf
+0x022c mem_ucode_buf
+0x022e mem_ucode_len
+0x0230 mem_sched_addr
+0x0232 mem_ucode_ptr
+0x0234 mem_ucode_keybuf
+0x0244 mem_check_plap_temp
+0x0256 mem_sensor_id
+0x0257 mem_reconnect_flag
+0x0258 mem_switch_fail_master_count
+0x0259 mem_app_evt_timer_count
+0x025a mem_dongle_count
+0x025b mem_le_addr_slave1
+0x0261 mem_le_addr_slave2
+0x0267 mem_le_peer_state
+0x0268 mem_app_peer_addr
+0x026e mem_dongle_peers
+0x026f mem_dongle_pairing_cnt
+0x0270 mem_dongle_signature
+0x0272 mem_h5rx_ackcnt
+0x0273 mem_check_err_acl_cont
+0x0274 mem_rp_packets
+0x0275 mem_packet_type
+0x0277 mem_hci_sniff_conn_handle
+0x0279 mem_hci_sniff_max_interval
+0x027b mem_hci_sniff_min_interval
+0x027d mem_hci_sniff_attempt
+0x027f mem_hci_sniff_timeout
+0x0281 mem_voice_setting
+0x0283 mem_retransmission_effort
+0x0284 mem_sco_ptype
+0x0286 mem_extm_uap_restore
+0x0289 mem_h5rx_rptr
+0x028b mem_h5rx_ack
+0x028c mem_h5tx_ack
+0x028d mem_h5tx_rptr
+0x028f mem_h5tx_wptr
+0x0291 mem_h5tx_free
+0x0293 mem_h5rx_tmp
+0x0294 mem_h5tx_seq
+0x0295 mem_hci_acl_queue_wptr
+0x0297 mem_hci_acl_queue_rptr
+0x0299 mem_hci_acl_queue_end
+0x029b mem_hci_acl_queue_wcnt
+0x029c mem_hci_acl_cnt
+0x029d mem_hci_acl_tx_trigger_wptr//tx via uart
+0x029f mem_ucode_id_local
+0x02a0 mem_temp//8 bytes
+0x02a8 mem_timeup// 4 bytes
+0x02ac mem_rega//4 bytes
+0x02b0 mem_regb//4 bytes
+0x02b4 mem_regc//3 bytes
+0x02b7 mem_contr//2 bytes
+0x02b9 mem_contw//2 bytes
+0x02bb mem_ucode_id_remote
+0x02bc mem_check_sum
+0x02bd mem_ucode_temp
+0x02be mem_ucode_temp1
+0x02bf mem_lock_in_enc//boolean
+0x02c0 mem_hci_disconn_reason
+0x02c1 mem_hci_curr_len
+0x02c2 mem_hci_curr_target
+0x02c4 mem_l2cap_mem_start
+0x02c4 mem_l2cap_rxbuff1_len
+0x02c6 mem_l2cap_rxbuff2_len
+0x02c8 mem_l2cap_rxbuff_new
+0x02ca mem_l2cap_rxbuff_inuse
+0x02cb mem_l2cap_payload_ptr
+0x02cd mem_l2cap_rx_pkt_length
+0x02cf mem_l2cap_rx_cid
+0x02d1 mem_l2cap_rx_done
+0x02d2 mem_l2cap_signal_tx_buff_ptr
+0x02d4 mem_l2cap_signal_tx_payload_ptr
+0x02d6 mem_l2cap_signal_tx_length
+0x02d8 mem_sdp_tx_buff_ptr
+0x02da mem_sdp_tx_payload_ptr
+0x02dc mem_sdp_tx_pkt_length
+0x02de mem_rfcomm_tx_buff_ptr
+0x02e0 mem_rfcomm_tx_payload_ptr
+0x02e2 mem_rfcomm_tx_pkt_length
+0x02e4 memL2CAP_T1
+0x02e6 mem_CONTROL_tasks
+0x02e7 mem_send_config_req
+0x02e8 mem_config_identifier
+0x02e9 mem_config_req_dest_CID
+0x02eb mem_rfcomm_malloc_fail_flag
+0x02ec mem_message_to_uppersm
+0x02ed mem_upper_sm_remote_page
+0x02ee mem_upper_sm_reconn
+0x02ef mem_upper_sm_ss
+0x02f0 mem_tx_malloc_log
+0x0330 mem_l2cap_mem_end
+0x0330 mem_scid
+0x0332 mem_cmd_length
+0x0334 mem_tt2
+0x0336 mem_tt3
+0x0338 mem_id
+0x033a mem_psm
+0x033c mem_l2cap_sdpres_delay_time
+0x0340 mem_le_rxbuf
+0x0378 mem_le_mic
+0x037c mem_le_peer_mic
+0x0380 mem_le_skdm
+0x0388 mem_le_skds
+0x0390 mem_le_peer_ltk
+0x03a0 mem_le_my_ltk
+0x03b0 mem_le_mrand
+0x03c0 mem_le_state
+0x03c1 mem_le_mode
+0x03c2 mem_le_tsniff
+0x03c4 mem_le_anchor
+0x03c8 mem_le_clk_offset
+0x03ce mem_le_receive_window
+0x03d0 mem_le_plap
+0x03d6 mem_le_conn_handle
+0x03d7 mem_le_arq
+0x03d8 mem_le_ch
+0x03d9 mem_le_hop
+0x03da mem_le_event_count
+0x03dc mem_le_supervision_timer
+0x03e0 mem_le_instant
+0x03e2 mem_le_channels
+0x03e3 mem_le_conn_sm
+0x03e4 mem_le_op
+0x03e5 mem_le_access
+0x03e9 mem_le_crcinit
+0x03ec mem_le_window_size
+0x03ed mem_le_slave_latency
+0x03ef mem_le_superto
+0x03f1 mem_le_channel_map
+0x03f6 mem_le_no_using
+0x03f8 mem_le_peer_sca
+0x03f9 mem_le_att_opcode
+0x03fa mem_le_att_handle
+0x03fc mem_le_err_code
+0x03fd mem_le_sk
+0x040d mem_le_testtype
+0x040e mem_le_test_sync
+0x0410 mem_le_test_pcnt
+0x0412 mem_le_rxon_ts
+0x0418 mem_le_rx_ll_opcode
+0x0419 mem_le_notify_attr_start
+0x041b mem_le_notify_len
+0x041c mem_cmd_le_create_conn
+0x041d mem_le_adv_temp
+0x0431 mem_24g_id
+0x0432 mem_lmo_header_length
+0x0433 mem_lmo_header_opcode
+0x0434 mem_lmo_payload
+0x0445 mem_lmi_accepted_opcode
+0x0446 mem_disconn_reason_send
+0x0447 mem_tx_fixed_freq
+0x0448 mem_rx_fixed_freq
+0x0449 mem_ext_features_page
+0x044a mem_lmpext_ssp_enable
+0x044c mem_remote_sppcap
+0x044d mem_lmp_conn_state
+0x044e mem_soft_timer
+0x0450 mem_pincode_state
+0x0451 mem_sres_tid
+0x0452 mem_accptsco_tid
+0x0453 mem_auth_enable
+0x0454 mem_wait_encryption
+0x0455 mem_sniff_payload
+0x0465 mem_aurand_send_delay_time
+0x0469 mem_module_temp_len
+0x046b mem_init_cnt
+0x046d mem_prcp_data
+0x0481 mem_prcp
+0x0482 mem_prcp_tx_len
+0x0483 rx_buf_data_ptr
+0x0485 memRemoteRPNBitRate
+0x0486 memRemotePRNDataBits
+0x0487 memRemotePRNStopBit
+0x0488 memRemotePRNParity
+0x0489 memRemotePRNFlowControl
+0x048a memRemotePRNXon
+0x048b memRemotePRNXoff
+0x048c mem_mod2div_temp
+0x048f mem_contw_temp
+0x0491 mem_attrib_list
+0x0493 mem_current_adss
+0x0494 mem_current_channel
+0x0495 mem_current_frame_type
+0x0496 mem_current_fcs
+0x0497 mem_current_length
+0x0499 mem_rfcomm_uih_payload_ptr
+0x049b mem_uih_cmd_type
+0x049c mem_uih_length
+0x049e mem_param_payload_ptr
+0x04a0 mem_ms_param
+0x04a1 mem_pn_credit_flow_type_info
+0x04a2 mem_pn_priority
+0x04a3 mem_pn_acknowledg_timer
+0x04a4 mem_pn_max_retrans
+0x04a5 mem_rfcomm_send_adss
+0x04a6 mem_rfcomm_send_frame_type
+0x04a7 mem_rfcomm_send_fcs
+0x04a8 mem_rfcomm_send_offset
+0x04a9 mem_sdp_mem_start
+0x04a9 mem_uuid_search_pat
+0x04ad mem_sdp_continue_byte
+0x04af mem_sdp_pduid
+0x04b0 mem_sdp_transactionid
+0x04b2 mem_sdp_attribute_maxbyte
+0x04b4 mem_sdp_record_maxcnt
+0x04b6 mem_sdp_error_code
+0x04be mem_sdp_record_handle
+0x04c2 mem_sdp_search_failed
+0x04c3 mem_sdp_LACAP_found
+0x04c4 mem_sdp_RFCOMM_found
+0x04c5 mem_handle_list
+0x04dd mem_handle_humber
+0x04de mem_sdp_mem_end
+0x04de mem_rxbuf
+0x04ef mem_random_number
+0x04ff mem_round_key
+0x050f mem_kinit
+0x051f mem_input_store
+0x052f mem_x
+0x053f mem_y
+0x054e mem_y15
+0x054f mem_pin_length
+0x0550 mem_pin
+0x0560 mem_key_store
+0x0571 mem_key_store_end
+0x0572 memp_ar_key
+0x0574 memp_ar_input
+0x0576 mem_ar_hround
+0x0580 mem_ec_infinite
+0x0581 mem_ec_loopc
+0x0582 memdat
+0x0582 mem_ax
+0x059a mem_ay
+0x05b2 mem_az
+0x05ca mem_bx
+0x05e2 mem_by
+0x05fa mem_bz
+0x0612 mem_cx
+0x062a mem_cy
+0x0641 mem_cy5
+0x0642 mem_cz
+0x065a mem_k
+0x0672 mem_align
+0x0682 mem_tmp1
+0x0682 memahbak
+0x069a mem_tmp5
+0x06a2 memahsave
+0x06b2 mem_tmp2
+0x06c2 memahsave_end
+0x06c2 mem_addr_padding
+0x06c3 mem_addr_value/* 12 bytes     */ 
+0x06ca mem_tmp3
+0x06ca mem_t1
+0x06cf mem_addr_value_end
+0x06d2 mem_addr_iocap_end
+0x06e2 mem_tmp0
+0x06e2 mem_t0
+0x06ea mem_tmp0a
+0x06fa mem_t2
+0x0712 mem_t3
+0x072a mem_t7
+0x0742 mem_p
+0x075a mem_a
+0x0772 mem_b
+0x078a mem_gx
+0x07a2 mem_gy
+0x07ba memh0
+0x07da mem_sp_state_start
+0x07da mem_sp_state
+0x07db mem_master_sp_state
+0x07dc mem_sp_flag
+0x07dd mem_master_sp_flag
+0x07de mem_sp_calc
+0x07df mem_sp_dh_ready
+0x07e0 mem_sp_localsm
+0x07e1 mem_pairing_auth
+0x07e2 mem_sp_flag_start
+0x07e2 mem_sp_local_key_send_count
+0x07e3 mem_sp_remote_key_recv_count
+0x07e4 mem_sp_remote_key_invalid
+0x07e5 mem_sp_dhkey_invalid
+0x07e6 mem_sp_iocap_local
+0x07e9 mem_sp_iocap_remote
+0x07ec mem_sp_gkey
+0x07f0 mem_sp_pubkey_remote
+0x07f0 mem_sp_pubkey_remote_x
+0x0808 mem_sp_pubkey_remote_x_end
+0x0808 mem_sp_pubkey_remote_y
+0x0820 mem_sp_dhkey
+0x0838 mem_sp_dhkey_end
+0x0838 mem_sp_random_local
+0x0848 mem_sp_random_local_end
+0x0848 mem_sp_random_remote
+0x0858 mem_sp_random_remote_end
+0x0858 memresult
+0x0858 mem_sp_calc_result
+0x0858 memh
+0x085c memg
+0x0860 memf
+0x0864 meme
+0x0868 mem_sp_calc_result_high
+0x0868 memd
+0x086c memc
+0x0870 memb
+0x0874 mema
+0x0878 mem_sp_check_result
+0x0888 mem_sp_confirm_remote
+0x0898 mem_sp_prarm_stack
+0x08a8 mem_UI_data_txbuff_length
+0x08aa mem_ipc_skip_continue_proc
+0x08ab mem_ui_timer_temp//length 4
+0x08ab mem_ipc_rega_temp
+0x08af mem_usb_status
+0x08b0 mem_usb_fifo_empty
+0x08b1 mem_usb_read_len
+0x08b2 mem_usb_rxbuf
+0x08f2 mem_usb_cnt
+0x08f4 mem_usb_tx_enable
+0x08f5 mem_usb_tx_count
+0x08f6 mem_usb_set_protocol_count
+0x08f7 mem_usb_desc
+0x08f8 mem_usb_state
+0x08f9 mem_usb_idle_cnt
+0x08fb mem_usb_idle_timeout
+0x08fd mem_usb_trig_timeout
+0x08ff mem_usb_setup
+0x08ff mem_usb_setup_bmRequestType
+0x0900 mem_usb_setup_bRequest
+0x0901 mem_usb_setup_bValue
+0x0902 mem_usb_setup_bValueH
+0x0903 mem_usb_setup_wIndex
+0x0905 mem_usb_setup_bLength
+0x0906 mem_usb_setup_bLengthH
+0x0907 mem_usb0_setup
+0x090f mem_bufptr
+0x0911 mem_remain
+0x0912 mem_devicedesc
+0x0926 mem_hidreportdesc_kb
+0x09ee mem_hidreportdesc_m
+0x0ab6 mem_confdesc
+0x0b1a mem_string0
+0x0b1f mem_string1
+0x0b3d mem_string2
+0x0b5b mem_string3
+0x0b79 mem_hold_contr
+0x0b7b mem_hold_contw
+0x0b7d mem_fifo_temp
+0x0b7e mem_c51_flag
+0x0b7f mem_c51_lpm_lock
+0x0b80 mem_c51_wait_lpm
+0x0b81 mem_wakup_from_power_flag
+0x0b82 mem_lmp_bb_disconnect_reason
+0x0b83 mem_c51_eeprom_buf
+0x0be7 mem_c51_ipc_txbuf
+0x0c4b mem_c51_ipc_rxbuf
+0x0caf mem_c51_iicd_buf
+0x0cb3 mem_24g_rxbuf
+0x0cd5 mem_24g_txbuf
+0x0cf5 mem_24g_txpayload
+0x0d17 mem_24g_rxpayload
+0x0d37 mem_24g_common_temp
+0x0d57 mem_packet_length_temp
+0x0d58 mem_le_cur_handle_start
+0x0d5a mem_le_cur_handle_end
+0x0d5c mem_le_search_res
+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_seqi
+0x416f mem_rf_rccal
+0x4170 mem_handle_num
+0x4171 mem_max_slot
+0x4172 mem_eir_enable
+0x4173 mem_afh_instant
+0x4177 mem_afh_error_total
+0x4179 mem_afh_cfg
+0x417a mem_afh_new_mod
+0x417b mem_afh_map_lo
+0x4180 mem_afh_map_hi
+0x4185 mem_afh_used
+0x4186 mem_afh_index
+0x4188 mem_afh_map_new
+0x4193 mem_afh_map
+0x41e3 mem_afh_timer
+0x41e7 mem_afh_classify_channel_map
+0x41f1 mem_chip_functions
+0x41f3 mem_lpm_wake_lock
+0x41f5 mem_lpm_interval
+0x41f7 mem_lpm_overhead
+0x41f8 mem_lpm_hibernate_switch
+0x41f9 mem_esco_addr
+0x41fa mem_sniff_unint_lost
+0x41fb mem_ptt
+0x41fc mem_sleep_counter//should be 0x41fc in REVC
+0x4200 mem_sleep_counter_all
+0x4204 mem_sleep_clkn
+0x420a mem_sniff_rcv
+0x420d mem_sniff_lost
+0x4210 mem_clks_per_lpo
+0x4213 mem_lpm_mult
+0x4214 mem_lpm_mult_timeout
+0x4215 mem_lpm_mult_cnt
+0x4216 mem_lpm_config
+0x4219 mem_lpm_xtalcnt
+0x421a mem_lpm_buckcnt
+0x421b mem_lpm_ldocnt
+0x421c mem_lpm_isogate
+0x421d mem_lpm_isogate_final
+0x421e mem_saved_gpio// should be 0x421e in REVC
+0x422e mem_saved_gsel
+0x4231 mem_saved_mark
+0x4239 mem_saved_spidctrl
+0x423a mem_patch_ptr
+0x423c mem_patch_len
+0x423e mem_timers
+0x425e mem_link_key_exists
+0x425f mem_link_key_eeprom_head
+0x4262 mem_link_key
+0x4272 mem_hci_cmd
+0x4273 mem_hci_conn_handle
+0x4274 mem_hci_plap
+0x4277 mem_hci_puap
+0x4278 mem_hci_pnap
+0x427a mem_uartd_rxitems_got_data
+0x427b mem_uartd_rxitems_threshold
+0x427c mem_uartd_rx_timeout
+0x427e mem_app_state
+0x427f mem_app_handshake_flag
+0x4280 mem_sniff_param_interval
+0x4282 mem_sniff_param_attempt
+0x4284 mem_sniff_param_timeout
+0x4286 mem_cb_check_wakelock
+0x4288 mem_cb_before_hibernate
+0x428a mem_cb_before_lpm
+0x428c mem_cb_le_process
+0x428e mem_cb_bt_process
+0x4290 mem_cb_idle_process
+0x4292 mem_cb_bb_event_process
+0x4294 mem_cb_discovry_timeout
+0x4296 mem_cb_att_write
+0x4298 mem_cb_update_notify_value
+0x429a mem_device_nums
+0x429b mem_eeprom_base
+0x429d mem_unsniff2sniff_timer_count
+0x429e mem_wake_up_delay_timer
+0x429f mem_app_connection_options
+0x42a0 mem_app_disconn_reason
+0x42a2 mem_app_disconn_reason_flag
+0x42a4 mem_at_using_flag
+0x42a5 mem_lpm_delay_after_sniff
+0x42a9 mem_xrecord_mode
+0x42aa mem_eeprom_block_size
+0x42ac mem_baud
+0x42ae mem_hci_lt_rx_state
+0x42af mem_l2cap_xmem_start
+0x42af mem_l2cap_tx_multi_offset//0 means single packet
+0x42b1 mem_sdp_remote_cid
+0x42b3 mem_rfcomm_remote_cid
+0x42b5 mem_hid_ctrl_remote_cid
+0x42b7 mem_hid_int_remote_cid
+0x42b9 mem_sdp_state
+0x42ba mem_rfcomm_state
+0x42bb mem_hid_control_state
+0x42bc mem_hid_interrupt_state
+0x42bd mem_spp_state
+0x42be mem_ML2CAP_comm_id
+0x42bf mem_used_map
+0x42c0 mem_tx_fifo0
+0x42c0 mem_tx_fifo0_map
+0x42c1 mem_tx_fifo0_ptr
+0x42c3 mem_tx_fifo1
+0x42c3 mem_tx_fifo1_map
+0x42c4 mem_tx_fifo1_ptr
+0x42c6 mem_tx_fifo2
+0x42c6 mem_tx_fifo2_map
+0x42c7 mem_tx_fifo2_ptr
+0x42c9 mem_tx_fifo3
+0x42c9 mem_tx_fifo3_map
+0x42ca mem_tx_fifo3_ptr
+0x42cc mem_tx_fifo_end
+0x42cc mem_l2cap_lpm_txbuf
+0x43cc mem_l2cap_flow_ctrl_flag
+0x43cd mem_l2cap_pending_item
+0x43ce mem_l2cap_xmem_end
+0x43ce mem_le_dsniff
+0x43d0 mem_le_conn_interval
+0x43d2 mem_le_scan_enable
+0x43d3 mem_le_scan_interval
+0x43d5 mem_le_scan_window
+0x43d7 mem_le_adv_led
+0x43d8 mem_le_adv_enable
+0x43d9 mem_le_adv_data_len
+0x43da mem_le_adv_data
+0x43f9 mem_le_scan_data_len
+0x43fa mem_le_scan_data
+0x4419 mem_le_name_len
+0x441a mem_le_name
+0x442e mem_le_led_on_time
+0x442f mem_le_new_map
+0x4434 mem_le_new_param
+0x4434 mem_le_new_window
+0x4435 mem_le_new_offset
+0x4437 mem_le_new_interval
+0x4439 mem_le_new_latency
+0x443b mem_le_new_timeout
+0x443d mem_le_temp
+0x443e mem_le_txheader
+0x443f mem_le_txlen
+0x4440 mem_le_txpayload
+0x4442 mem_le_txcid
+0x4444 mem_le_l2cap
+0x4445 mem_le_l2cap_response
+0x4446 mem_le_txbdy
+0x4465 mem_le_pcnt_tx
+0x446a mem_le_pcnt_rx
+0x446f mem_le_last_mic
+0x4473 mem_le_ivm
+0x4477 mem_le_ivs
+0x447b mem_le_ltk
+0x448b mem_ltk_exists
+0x448c mem_le_rconfirm
+0x449c mem_le_srand
+0x44ac mem_le_iat
+0x44ad mem_le_rat
+0x44ae mem_le_preq
+0x44b5 mem_le_pres
+0x44bc mem_le_search_handle_start
+0x44be mem_le_search_handle_end
+0x44c0 mem_le_att_offset
+0x44c0 mem_le_search_att_type
+0x44c2 mem_le_notify_handle
+0x44c4 mem_le_uuid
+0x44c6 mem_le_handle_data_len
+0x44c7 mem_le_handle_data
+0x44d7 mem_le_adv_param
+0x44d7 mem_le_adv_interval_min
+0x44d9 mem_le_adv_interval_max
+0x44db mem_le_adv_type
+0x44dc mem_le_adv_own_addr_type
+0x44dd mem_le_adv_direct_addr_type
+0x44de mem_le_adv_direct_addr
+0x44e4 mem_le_adv_channel_map
+0x44e5 mem_le_adv_filter_policy
+0x44e6 mem_le_conn_param
+0x44e6 mem_le_conn_peer_addr_type
+0x44e7 mem_le_conn_peer_addr
+0x44ed mem_le_conn_own_addr_type
+0x44ee mem_le_conn_interval_min
+0x44f0 mem_le_conn_interval_max
+0x44f2 mem_le_conn_latency
+0x44f4 mem_le_conn_superto
+0x44f6 mem_le_scan_params
+0x44f6 mem_le_scan_type
+0x44f7 mem_le_scan_own_addr_type
+0x44f8 mem_le_scan_filter_policy
+0x44f9 mem_le_lap
+0x44fc mem_le_uap
+0x44fd mem_le_nap
+0x44ff mem_le_xtype_fifo
+0x4504 mem_le_att_list
+0x46f8 mem_le_switch_send_data
+0x46f9 mem_le_transmit_window
+0x46fd mem_lmp_version
+0x4700 mem_lmp_subversion
+0x4702 mem_local_name_length
+0x4703 mem_local_name
+0x4706 mem_local_name2
+0x4746 mem_local_name_end
+0x4747 mem_unsniff2sniff_timer
+0x4748 mem_switch_flag
+0x4749 mem_eeprom_ota_base_addr/*the start- writing addr in eeprom  */
+0x474b mem_pn_dlci
+0x474c mem_pn_max_frame_size
+0x474e memFCStemp1
+0x474f memFCStemp2
+0x4750 memFCStemp3
+0x4751 mem_rfcomm_initiator
+0x4752 mem_remote_spp_channel
+0x4753 mem_HIUfcs_SPP
+0x4754 mem_HIUfcs_SPP_WCredits
+0x4755 mem_rfcomm_send_more_pkt
+0x4756 mem_remote_credits
+0x4757 mem_credit_given
+0x4758 mem_ms_channel
+0x4759 memui_uuid_table
+0x475b mem_all_uuid_16bits
+0x4771 mem_all_uuid_128bits
+0x4793 mem_sp_local_key_invalid
+0x4794 mem_sp_private_key
+0x47ac mem_sp_pubkey_local
+0x47ac mem_sp_pubkey_local_x
+0x47c4 mem_sp_pubkey_local_x_end
+0x47c4 mem_sp_pubkey_local_y
+0x47dc mem_ssp_enable
+0x47dd mem_ipc_lock_bt
+0x47de mem_ipc_lock_c51
+0x47df mem_ipc_fifo_bt2c51
+0x47e4 mem_ipc_fifo_c512bt
+0x47e9 mem_led_switch
+0x47ea mem_ui_button_timer
+0x47eb mem_ui_button_last_state
+0x47ec mem_ui_timer_last_btclk
+0x47f0 mem_discovery_timeout_timer_count
+0x47f2 mem_hid_handshake_timer_count
+0x47f3 memui_reconnect_mode
+0x47f4 mem_ui_state_map
+0x47f6 mem_ui_profile_supported
+0x47f7 mem_led_gpio
+0x47f8 mem_led_dark_time
+0x47fa mem_led_light_time
+0x47fc mem_ui_button_timeout
+0x47fd mem_ui_button_gpio
+0x47fe mem_discovery_timeout
+0x4800 mem_ir_ptr
+0x4802 mem_ir_type
+0x4803 mem_ir_cmd
+0x4804 mem_ir_play_count
+0x4805 mem_ir_report_len
+0x4807 mem_ir_pulse_zero
+0x4808 mem_ir_pulse_one
+0x4809 mem_ir_pulses
+0x4825 mem_ir_sequence_len
+0x4826 mem_ir_sequence
+0x4800 mem_acl_credits
+0x4802 mem_allow_switch
+0x4803 mem_hci_acl_queue_start/*param_acl_pktcnt+2 byte*/
+0x4807 mem_hci_wake_clk
+0x4800 mem_kb_state
+0x4802 mem_kb_report_data
+0x4808 mem_kb_keys
+0x4809 mem_kb_rcv_led_data
+0x480a mem_kb_fast_wake_last
+0x480e mem_led_cap_gpio
+0x480f mem_led_num_gpio
+0x4810 mem_led_scl_gpio
+0x4811 mem_kb_map
+0x4811 mem_kb_uuid_list
+0x4a87 mem_24g_paring_tx_power_param
+0x4a91 mem_5db_tx_power_param
+0x4a9b mem_current_event
+0x4a9c mem_ipc_lock_rx_data_bt
+0x4a9d mem_ipc_lock_rx_data_c51
+0x4a9e mem_ipc_lock_tx_data_bt
+0x4a9f mem_ipc_lock_tx_data_c51
+0x4aa0 mem_ipc_2bt_fifo_head
+0x4b36 mem_ipc_2bt_fifo_end
+0x4b36 mem_ipc_2C51_fifo_head
+0x4b9a mem_ipc_2C51_fifo_end
+0x4b9a mem_ipc_2bt_read_index
+0x4b9c mem_ipc_2bt_write_index
+0x4b9e mem_ipc_2C51_read_index
+0x4ba0 mem_ipc_2C51_write_index
+0x4ba2 mem_ipc_tx_evt_buff
+0x4ba4 mem_ipc_tx_evt
+0x4ba5 mem_ipc_bt_timer
+0x4ba7 mem_ipc_rx_type
+0x4ba8 mem_rfcomm_tx_buff
+0x4ba8 mem_queue_ele_num
+0x4ba9 mem_queue_write
+0x4bab mem_queue_read
+0x4bad mem_queue_start
+0x4bad mem_uart_packet
+0x4bb9 mem_data_ele0
+0x4bc5 mem_data_ele1
+0x4bd1 mem_data_ele2
+0x4bdd mem_queue_end
+0x4bdd mem_queue_temp
+0x4bdf mem_24g_rxdata_length
+0x4be0 mem_24g_pid
+0x4be1 mem_24g_datalen
+0x4be2 mem_24g_data_type
+0x4be3 mem_24g_txlen
+0x4be4 mem_24g_rx_window
+0x4be6 mem_24g_ensure
+0x4be7 mem_24g_get_ack_fail
+0x4be8 mem_24g_retry
+0x4be9 mem_24g_ch
+0x4bea mem_24g_current_ch_number
+0x4beb mem_24g_paring_addr
+0x4bef mem_24g_pairing_sm
+0x4bf0 mem_24g_ch_map1
+0x4bf4 mem_24g_ch_map2
+0x4bf8 mem_24g_ch_map3
+0x4bfc mem_24g_ch_map4
+0x4c00 mem_24g_addr
+0x4c04 mem_24g_check_dongle_times
+0x4c06 mem_24g_device_addr
+0x4c0a mem_24g_no_ack
+0x4c0b mem_24g_sta_crc
+0x4c0e mem_24g_sta_pid
+0x4c0f mem_24g_max_retry
+0x4c10 mem_24g_mode
+0x4c11 mem_24g_hop_pac_retry
+0x4c12 mem_24g_idle_timeout
+0x4c13 mem_24g_idle_cnt
+0x4c14 mem_24g_auto_paring_switch
+0x4c15 mem_24g_enter_lpm_timer
+0x4c16 mem_24g_syncword
+0x4c18 mem_24g_syncword_crc8
+0x4c19 mem_24g_get_syncword_crc8
+0x4c1a mem_24g_discard_cnt
+0x4c1c mem_cb_24g_data
+0x4c1e mem_24g_lasttx
+0x4c27 mem_power_ctrl_pac_succ_cnt
+0x4c28 mem_power_ctrl_level
+0x4c29 mem_rssi_avg_received
+0x4c2a mem_rssi_hex_received
+0x4c2b mem_rssi_signal_buf
+0x4c33 mem_rssi_noise_buf
+0x4c3b mem_rssi_noise_index
+0x4c3c mem_rssi_signal_index
+0x4c3d mem_tx_power
+0x4c3e mem_tx_power_temp
+0x4c3f mem_cnt
+0x4c42 mem_last_txlch
+0x4c43 mem_last_txlen
+0x4c45 mem_last_txdata
+0x4c59 mem_ipc_last_check_timer
+0x4c5d mem_prepare_write_len
+0x4c5e mem_ipc_c51_timer
+0x4c60 mem_le_rx_window
+0x4c61 mem_le_find_type_value_start_handle
+0x4c63 mem_le_find_type_value_end_handle
+0x4c65 mem_le_cur_att_type
+0x4c67 mem_le_search_len
+0x4c68 mem_le_ll_unknown_type
+0x4c69 mem_le_pairing_state
+0x4c6a mem_le_local_mtu
+0x4c6c mem_le_connection_updata_param
+0x4c7c mem_ltk_states
+0x4c7d mem_pair_state
+0x4c7e mem_empty_count
+0x4c7f mem_shutter_find_type_value_flag
+0x4c80 mem_le51_payload_len
+0x4c81 mem_le51_cmd
+0x4c82 mem_le51_tx_length
+0x4c83 mem_le51_txbuff_inuse
+0x4c84 mem_le51_txbuf
+0x4c8d mem_ipc_bt_100ms_timer
+0x4c8e mem_ipc_c51_100ms_timer
+0x4c8f mem_adc_config_flag
+0x4c90 mem_adc_channel
+0x4c91 mem_adc_0v
+0x4c93 mem_adc_3v
+0x4c95 mem_adc_current_value
+0x4c97 mem_hibernate_flag
+0x4c98 mem_new_supervision_to
+0x4c9a mem_kb_wake_timer
+0x4c9b mem_kb_last_data
+0x4caf mem_kb_keycount
+0x4cb0 mem_led_cap_delay_timer
+0x4cb1 mem_test
+0x4cb4 mem_seq
+0x4cb5 mem_recon_index
+0x4cb6 mem_power_on_flag
+0x4cb7 mem_caps_num_lock
+0x4cb8 mem_att_report1
+0x4cba mem_att_report2
+0x4cbc mem_att_report3
+0x4cbe mem_suspend_flag
+0x4cbf mem_32asm_data_end
+0x4d37 mem_store_ltk_timer
+0x4d38 mem_reconnect_continue
+0x4d39 mem_le_pin_code
+0x4d3d mem_24g_enter_hibernate
+0x4d45 mem_24g_txfail_cnt
+0x4d46 mem_mouse_retry_flag
+0x4d47 mem_24g_led_flag
+0x4d48 mem_ui_timer_last_btclk_temp
+0x4d4c mem_ui_check_timer_setup
+0x4d50 mem_customize_timer_setup
+0x4d52 mem_customize_timer
+0x4d53 mem_version_yy_mm_dd
+0x4d57 mem_24g_txbuf_new
+0x4d6b mem_24g_enter_hibernate_setup
+0x4d6f mem_24g_enter_hibernate_max
+0x4d73 mem_24g_short_sleep_counter
+0x4d76 mem_pc_sleep_flag
+0x4800 mem_at_gpio
+0x4801 mem_module_wake_up_gpio
+0x4802 mem_module_state_gpio
+0x4803 mem_module_connect_state_gpio
+0x4804 mem_module_version
+0x480a mem_last_uart_clock
+0x480e mem_current_packet_length
+0x4810 mem_module_prepare_tx_len
+0x4812 mem_module_state
+0x4813 mem_module_task
+0x4814 mem_cmode_addr
+0x481a mem_at_scan_time
+0x481c mem_prarm_pswd
+0x4820 mem_prarm_uart
+0x4824 mem_prarm_blename
+0x4827 mem_prarm_name
+0x482b mem_prarm_bleadss
+0x482e mem_prarm_adss
+0x4832 mem_prarm_vers
+0x4836 mem_prarm_class
+0x483b mem_prarm_clrflg
+0x4841 mem_prarm_reconn
+0x4847 mem_prarm_bledis
+0x4849 mem_prarm_dis
+0x484c mem_prarm_stsn
+0x4850 mem_prarm_atp
+0x4853 mem_prarm_list
+0x4857 mem_prarm_role
+0x485b mem_prarm_sniff
+0x4860 mem_prarm_ldev
+0x4864 mem_prarm_rssi
+0x4868 mem_prarm_cdev
+0x486c mem_prarm_bleinqr
+0x486f mem_prarm_inqr
+0x4873 mem_prarm_cmode
+0x4878 mem_prarm_mode
+0x487c mem_prarm_dmstate
+0x4883 mem_prarm_discov
+0x4889 mem_prarm_ota
+0x488c mem_prarm_bleconn
+0x488e mem_prarm_conn
+0x4892 mem_prarm_pageout
+0x4899 mem_prarm_recfail
+0x48a0 mem_module_uuid_list
+0x4800 mem_mouse_x
+0x4802 mem_mouse_y
+0x4804 mem_mouse_z
+0x4805 mem_mouse_key
+0x4806 mem_mouse_z_last
+0x4807 mem_mouse_z_before
+0x4808 mem_mouse_z_now
+0x4809 mem_mouse_z_data
+0x480a mem_mouse_move_flag
+0x480b mem_reconnect_timeout
+0x480c mem_mouse_direct_timeout
+0x480e mem_mouse_no_data_timeout
+0x4810 mem_mouse_blank_data_timeout
+0x4812 mem_mouse_discovery_timer
+0x4814 mem_mouse_direct_timer
+0x4816 mem_mouse_no_data_timer
+0x4818 mem_mouse_blank_data_timer
+0x481a mem_mouse_send_blank_timer
+0x481b mem_mouse_dpi
+0x481c mem_mouse_dpi_button_state
+0x481d mem_mouse_test_cnt
+0x481e mem_le_hibernate_timer
+0x4820 mem_mouse_mode_state
+0x4821 mem_sensor_type
+0x4822 mem_lbutton_gpio
+0x4823 mem_rbutton_gpio
+0x4824 mem_mbutton_gpio
+0x4825 mem_dpi_button_gpio
+0x4826 mem_sensor_data_gpio
+0x4827 mem_whee_a_data_gpio
+0x4828 mem_whee_b_data_gpio
+0x4829 mem_conn_cnt
+0x482a mem_mouse_uuid_list
+0x4800 mem_shutter_send_data
+0x4804 mem_shutter_key_temp
+0x4805 mem_shutter_send_length
+0x4806 mem_shutter_clkn_bt_last
+0x480a mem_shutter_key
+0x480b mem_shutter_flag
+0x480c mem_shutter_cable_unplug_conut
+0x480d mem_shutter_hid_disconn_count
+0x480e mem_shutter_1key_send_sm
+0x480f mem_shutter_iphonekey_gpio
+0x4810 mem_shutter_androidkey_gpio
+0x4811 mem_shutter_key_number
+0x4812 mem_shutter_uuid_list
Index: patch/pwm.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: patch/pwm.obj
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: patch/ram.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: patch/ram.obj
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: patch/ramcode.rom
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/patch/ramcode.rom	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/patch/ramcode.rom	(working copy)
@@ -0,0 +1,925 @@
+c512800f
+c0000017
+c001801b
+c002801f
+c0480161
+c0490127
+c04a012d
+c04a8117
+c05800d9
+c05880db
+c05900ef
+c0598109
+c05b0112
+c05c80e3
+20203bf1
+c01f01d4
+c01f81d8
+c04380b7
+c04681ea
+c04781dc
+c066816b
+c06800c3
+20203bf1
+6810813b
+60008b81
+70800608
+20203003
+20400051
+20400043
+20400024
+20203015
+20403392
+20403407
+20403024
+204001fd
+20203022
+204000b2
+20740000
+1ff0fe00
+1fe20c00
+20400093
+6000cba7
+c0008037
+c0030041
+1fe20400
+18c22200
+6800c040
+c3000034
+1a220c00
+c6848000
+18427e00
+20600000
+1a220c00
+d8a000f8
+2020008b
+20400093
+20400093
+60008b7d
+2040003c
+20207c33
+20400096
+18c20400
+18508400
+60094b9a
+20600000
+d8a04d57
+2020008b
+680a4d4c
+1c427e00
+98467e00
+68094d50
+9846fc00
+20407efd
+1807fe00
+207a0000
+1c420400
+600a4d4c
+6800cd52
+1fe0fe01
+6000cd52
+20600000
+680a4c59
+1c427e00
+98467e00
+d8400640
+9846fc00
+20407efd
+1807fe00
+207a0000
+1c420400
+600a4c59
+68094ba5
+18508400
+9840fe00
+1ff0fe00
+60014ba5
+1ff0fe00
+1fe17e03
+c1800000
+6800cc8f
+c280006e
+c2808070
+da200000
+20400082
+7089718f
+6800cc90
+60108973
+20400071
+da200001
+20200082
+708971bf
+20200071
+708971af
+68108053
+79207e07
+60108053
+68108973
+1fe1fe30
+60108973
+70890674
+7089067c
+708972aa
+20001388
+68190150
+68108053
+793ffe07
+60108053
+18508400
+60094c95
+20600000
+d8400021
+6800cc90
+98460400
+1a227e00
+79200407
+243a0089
+793f8407
+d8a08078
+202069f4
+20400093
+1fe27200
+2040008f
+2020003c
+20400093
+e0a08000
+c200008f
+20600000
+20400096
+e8c08000
+20600000
+58004b36
+98c67c00
+24628000
+d8c04aa0
+20600000
+df200003
+d8c04ba2
+18c22200
+68014ba0
+1ff0fe00
+1fe20a00
+1a220c00
+e8c08000
+e0a08000
+204000aa
+c20000a2
+18a27e00
+1ff0fe00
+60014ba0
+20600000
+58004b9a
+98a67c00
+24628000
+d8a04b36
+20600000
+68014b9e
+68094ba0
+202000b4
+68014b9a
+68094b9c
+98467c00
+2022e9b1
+2020320b
+1c427e00
+60024d48
+6808c7ef
+6800cd4b
+98467c00
+244100be
+20207c06
+680a4d48
+600a47ec
+600a4c59
+600a4d4c
+20600000
+60088259
+6800cc8d
+1fe0fe01
+6000cc8d
+68008259
+207a0000
+1fe0ffff
+60008259
+204000cd
+202000c7
+6800cc15
+207a0000
+1fe0ffff
+6000cc15
+20600000
+1a627e00
+1fe17ef0
+c1280000
+1a627e00
+207a0000
+6000cba4
+2020009b
+20403b36
+20203cdc
+70416e7f
+20403cf3
+6800cc97
+207a0000
+704c9700
+1c427e00
+60024c59
+20600000
+6800c219
+247a0000
+70804206
+58000f0c
+20403da7
+58030d40
+20403bf3
+37d98200
+1e226000
+20403b36
+20001388
+20203d9d
+c6118000
+680147f4
+c284bd1e
+20403cab
+6801c210
+207a0000
+6800c131
+207a0000
+2040527e
+247a0000
+20403dca
+247a0000
+20403b36
+6800c7dc
+203a3d25
+6800c793
+207a0000
+20203d25
+204000b2
+24740000
+204000af
+24740000
+700b7f01
+700b7e01
+2040010e
+202000b2
+20400101
+24740000
+68008b7f
+247a0000
+20203d2d
+68008b7e
+2000000a
+c080010e
+20600000
+20400101
+24740000
+68008b7f
+247a0000
+20203d4f
+20400119
+20203aaf
+6800c219
+243a011f
+20403d91
+20007530
+20007530
+20007530
+20403b0a
+70804204
+6810896b
+1fe17ecf
+6010896b
+1fe1fe30
+6010896b
+20600000
+60088017
+1840a204
+20203a86
+60088017
+1840a200
+20203ab6
+2040012a
+58000500
+20403bf3
+70890601
+7089003c
+708901e0
+70896d12
+2000000a
+70890201
+7089023d
+2000000a
+708903b7
+2000000a
+7089027d
+6800cbef
+c0ff8145
+6802ca91
+e0a28000
+e8c28000
+e0a28000
+708956df
+20400150
+708955df
+20600000
+6802ca87
+e0a28000
+e8c28000
+e0a28000
+6800cc7d
+205a014e
+60108956
+708955d0
+20600000
+580000c2
+20600000
+20000004
+708955d1
+20000004
+708955d2
+20000004
+708955d4
+20000004
+20600000
+708955d4
+20000004
+708955d2
+20000004
+708955d1
+20000004
+708955d0
+708956c0
+20600000
+2030ba6f
+20400158
+20203a6f
+78347c00
+68120138
+79347e1a
+6012004c
+20403db0
+7000a201
+20600000
+700b7e00
+70017706
+20403fa4
+5800016a
+6001428a
+580000d2
+60014292
+580001db
+60014290
+58000024
+6001428c
+58000164
+60014288
+58004aa0
+1ff0fe00
+60014b9a
+60014b9c
+20403e0b
+58004b36
+1ff0fe00
+60014b9e
+60014ba0
+6800cc97
+c02d0199
+20358197
+68014c91
+1ff0fe00
+60014c91
+68014c93
+1ff0fe00
+60014c93
+204001a4
+680402a0
+243a0191
+68014ad4
+1ff0fe00
+203a0191
+60014c93
+204001fa
+704ba42f
+2040009b
+704c9700
+70828003
+20600000
+704ba430
+20200193
+1ce27e00
+203a01e2
+20405b63
+20404d99
+58000000
+60044040
+600147f4
+1c427e00
+60024c59
+704ba433
+20200193
+2040688a
+580007e2
+da2002a0
+d840000c
+204068d3
+2040688d
+680402a0
+207a0000
+6800cc8f
+c28001b6
+c28081c4
+680102a0
+1ff0fe00
+60014c91
+680102a6
+1ff0fe00
+60014c93
+20600000
+680902a4
+680102aa
+18422400
+1fe22200
+1ff0fe00
+60014c93
+1a227e00
+98462600
+1a63a600
+1a427e00
+9a667e00
+1ff0fe00
+60014c91
+20600000
+680902a2
+680102a8
+18422400
+1fe22200
+98462600
+1a6b2600
+1a427e00
+9a667e00
+1ff0fe00
+60014c91
+1a63a600
+1a227e00
+9a667e00
+1ff0fe00
+60014c93
+20600000
+70001627
+70890f36
+70890b5f
+202053d4
+70890f2e
+70890bff
+202053d9
+20600000
+68014ba0
+60014b9e
+68014b9c
+60014b9a
+700b7e03
+2040010e
+704c975a
+20403db8
+68120138
+793ffe0f
+6012004c
+20403db0
+d85fffff
+20203cda
+20407c20
+da2047e4
+20407f9f
+1fe20400
+20407c24
+18427e00
+207a0000
+c01081f5
+c01101f7
+c0118292
+20207c5a
+704befff
+202002c5
+793f8023
+704befff
+2020027d
+58000000
+60024ba9
+20600000
+c6918000
+68024d3d
+60024d6b
+20400223
+24340216
+704c150a
+20400249
+6800cbef
+c1ff8000
+704c3d02
+6800cd46
+247a0000
+20400101
+24740000
+68008b7f
+247a0000
+20403cab
+6801c210
+207a0000
+6800c131
+207a0000
+6801cd73
+20407e8a
+600a41fc
+20203cda
+20400101
+24740000
+68008b7f
+247a0000
+20403cab
+6801c210
+207a0000
+6800c131
+207a0000
+6800cc15
+243a0212
+68024d6b
+20200213
+6800cbef
+c0ff829b
+2040022a
+20540245
+20540305
+704be601
+20600000
+78547c00
+704be202
+6800cd57
+c0020235
+c002823b
+c0030241
+c003823e
+c0040238
+6800cd46
+245a34df
+20600000
+704d5700
+704be10a
+20200243
+704d5708
+704be110
+20200243
+704d5703
+704be104
+20200243
+704d5702
+704be103
+20200243
+704be201
+704be108
+704be700
+202034df
+d8a00cd5
+d8c04d57
+df200014
+20207e45
+704be800
+d9600d00
+34730200
+20400270
+24378259
+20400280
+6800cbe0
+1fe0fe01
+6000cbe0
+704d4600
+6800cbef
+c0ff826f
+2040026b
+704be700
+704be600
+20600000
+704d4601
+6800cbe7
+1fe0fe01
+6000cbe7
+6800cbef
+c0ff827b
+6800cbe7
+c07f827d
+6800cbe7
+d8400010
+98467c00
+20210324
+6800cbe8
+1fe0fe01
+6000cbe8
+2000000a
+c083824a
+20200324
+58000000
+60020cd5
+60024d57
+20600000
+202002b5
+7857fc00
+2040037c
+18002a00
+68024c00
+98001200
+68088017
+20403a82
+20403a87
+2040033c
+20578376
+20600000
+704d4600
+20600000
+704d4600
+700b7d32
+20207c27
+204002ea
+68008cb3
+c1810000
+6800cbdf
+207a0000
+98007200
+d8c00cb5
+d8a00d17
+20407e45
+68008cb4
+2fe1f008
+24608000
+68008cb5
+c07f8290
+6000ccb7
+20600000
+704d7601
+20600000
+79200023
+20400297
+20400255
+704bef01
+20600000
+704be000
+704be94e
+68024beb
+202002f7
+20400297
+6800cbe6
+c000b4df
+6800cbef
+c00082a3
+c00102a6
+c00182a9
+20203bf1
+704bef11
+700d37aa
+202002ab
+704bef12
+700d3755
+202002ab
+704bef13
+700d3722
+700d3802
+68024c06
+60020d39
+700d3d00
+da200d37
+d8400007
+204002e5
+20400305
+20400228
+202034df
+6800cbef
+c17f8000
+c00882bb
+c00902bd
+c00982bf
+20600000
+704bef02
+20200255
+704bef03
+20200255
+704befff
+700b7d31
+20407c27
+68020d19
+204002f7
+20200255
+79200023
+204002f8
+20400324
+6800cbef
+c1ff8000
+204002d7
+58000000
+60014c04
+20403cab
+200007d0
+6800cc04
+c07f827d
+20400270
+243782e0
+2040026b
+79200023
+700b7d3c
+20207c27
+700d37ff
+6800cbe2
+60008d38
+68024c06
+60020d39
+d8400006
+da200d37
+204002e5
+20200305
+68014c04
+1fe0fe01
+60014c04
+20400324
+202002cd
+6008cbe1
+18427200
+d8a00cd5
+1a220c00
+20207e45
+68008cb4
+1fe97e00
+6000cbdf
+20600000
+6808cc3c
+58004c2b
+98408a00
+1a227e00
+e0a08000
+18408401
+18410407
+6008cc3c
+20600000
+60024c00
+da200000
+df200004
+d8c04c00
+e8c08000
+9a20a200
+c20002fb
+1a227e00
+60014c16
+6800cc16
+6808cc17
+9840fe00
+6000cc18
+20600000
+6800cbe1
+1fe0fe02
+6000cbe3
+6800cbe2
+60008cf5
+6800cbe1
+1fe9fe00
+6808cbe0
+18410403
+18438400
+9841fe00
+6808cc0a
+9840fe00
+e0a08000
+6800cbef
+c0ff8317
+6800cbe2
+e0a08000
+6800cbe1
+98007200
+6800cbe2
+c0008322
+d8c00cd5
+20407e45
+68008cd5
+c0018320
+20600000
+700cd502
+20600000
+d8c00cd6
+20207e45
+6808cbea
+2040032a
+18408401
+18410403
+6008cbea
+20600000
+6800cc00
+1fe17e03
+1fefa204
+58004bf0
+9a20fe00
+98408c00
+e8c08000
+6000cbe9
+20600000
+7844fc00
+7843fc00
+58555555
+98001e00
+6800cbe9
+1fed8400
+79200401
+18431c00
+20600000
+20400333
+7826fc00
+7830fc00
+78507c00
+78287c00
+68014be4
+98003600
+37c18400
+242c0376
+7846fc00
+7825fc00
+7823fc00
+7824fc00
+09800008
+19897e00
+6000cc19
+6808cc18
+98467c00
+24228376
+09800008
+19897e00
+60008cb3
+68008cb3
+6808cbe2
+a8400e00
+24208376
+09800008
+19897e00
+e0a08000
+1fe97e00
+1fe1721f
+20228360
+09800008
+19897e00
+e0a08000
+c200035c
+18a22200
+09800008
+19897e00
+6000cc2a
+1a220a00
+09800018
+78287c00
+db600664
+1fef7e00
+1ff17e00
+e0a18000
+7845fc00
+20230376
+7837fc00
+68008017
+1fe0a200
+20403ab6
+7846fc00
+20403a7a
+6800cc2a
+1fe22200
+202002ee
+784dfc00
+7845fc00
+2020375c
+20403a7a
+6808cbe9
+20203a91
+204053d2
+68024c00
+98001200
+20400333
+20400379
+79202a00
+782efc00
+78307c00
+7850fc00
+19317e00
+1fecfe00
+1ff1fe00
+08008628
+784efc00
+782dfc00
+7823fc00
+7824fc00
+6800cc18
+08008608
+6800cbe3
+98007200
+d8c00cf5
+e8c08000
+08008608
+c2000392
+78247c00
+08008618
+78447c00
+37d38200
+20000064
+784efc00
+784dfc00
+20203a7a
Index: patch/rf.dat
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/patch/rf.dat	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/patch/rf.dat	(working copy)
@@ -0,0 +1,108 @@
+mem_lpm_config:8f 10 ce
+mem_lpm_xtalcnt:00 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 03
+mem_rx_window_sniff:00 06
+mem_new_supervision_to:00 13
+
+mem_eeprom_base:30 3f
+mem_eeprom_block_size:20
+#pointers to tail space of mem_le_att_list
+4f70:
+07 ff #2M_IF
+0a fb
+0b ff 
+
+#agc table
+1a fb
+1b fb
+1c fb
+1d f6
+1e f2
+1f ee
+20 ea
+21 e6
+22 e2
+23 de
+24 da
+25 d6
+26 d2
+27 ce
+28 ca
+29 c6
+2a c2
+2b bd
+2c b9
+2d b5
+2e b1
+2f ad
+30 a9
+31 80
+32 80
+33 80
+34 c0
+35 c1
+36 c2
+37 c3
+38 c4
+39 c5
+3a c6
+3b c7
+3c 06
+3d 07
+3e 46
+3f 85
+40 86
+41 87
+42 c6
+43 c7
+44 d6
+45 d7
+46 e6
+47 f5
+48 00
+49 f8
+4a 7f
+4e ec
+4f 5e
+
+# tx power
+55 d0
+56 c0
+57 4c
+58 6c
+59 50
+
+#dpll
+68 e4
+69 00
+6a 00
+6b 30
+ff
+mem_rf_init_ptr:70 4f
+
+mem_le_att_list+490:
+mem_5db_tx_power_param:
+55 d0
+56 c0
+57 4c
+58 6c
+59 50
+
+mem_24g_paring_tx_power_param:
+55 d0
+56 c0
+57 4c
+58 6c
+59 50
+
Index: patch/sch.rom
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/patch/sch.rom	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/patch/sch.rom	(working copy)
@@ -0,0 +1,678 @@
+mem_patch00:
+29   #mem_patch00
+00   #mem_patch01
+00   #mem_patch02
+00   #mem_patch03
+00   #mem_patch04
+00   #mem_patch05
+00   #mem_patch06
+00   #mem_patch07
+00   #mem_patch08
+00   #mem_patch09
+00   #mem_patch0A
+00   #mem_patch0B
+00   #mem_patch0C
+00   #mem_patch0D
+00   #mem_patch0E
+00   #mem_patch0F
+00   #mem_patch10
+00   #mem_patch11
+35   #mem_patch12
+00   #mem_patch13
+00   #mem_patch14
+00   #mem_patch15
+4f   #mem_patch16
+02   #mem_patch17
+00   #mem_patch18
+00   #mem_patch19
+00   #mem_patch1A
+00   #mem_patch1B
+00   #mem_patch1C
+00   #mem_patch1D
+00   #mem_patch1E
+00   #mem_patch1F
+00   #mem_patch20
+00   #mem_patch21
+00   #mem_patch22
+00   #mem_patch23
+00   #mem_patch24
+00   #mem_patch25
+00   #mem_patch26
+c0   #mem_patch27
+00   #mem_patch28
+00   #mem_patch29
+00   #mem_patch2A
+00   #mem_patch2B
+00   #mem_patch2C
+00  #mem_patch2D
+00   #mem_patch2E
+00   #mem_patch2F
+80   #mem_patch30
+a0   #mem_patch31
+00   #mem_patch32
+00   #mem_patch33
+00   #mem_patch34
+00   #mem_patch35
+00   #mem_patch36
+00   #mem_patch37
+00   #mem_patch38
+20   #mem_patch39
+01   #mem_patch3A
+00   #mem_patch3B
+00   #mem_patch3C
+00   #mem_patch3D
+00   #mem_patch3E
+00   #mem_patch3F
+
+
+mem_customize_timer_setup:   50 00		# 20:10ms  30:15ms
+
+mem_lpm_mode:01
+mem_lpm_mult:40
+mem_lpm_mult_timeout:03
+mem_lpm_overhead:0a
+mem_lpm_interval:10 00
+mem_scan_mode:00
+mem_test:00 00
+
+mem_class: 40 25 00
+
+mem_lap:36 08 c2 08 66 22    
+mem_local_name_length:
+'BT3.0 Keyboard
+mem_sniff_param_interval:0e 00
+mem_sniff_param_attempt:01
+mem_sniff_param_timeout:01
+mem_unsniff2sniff_timer:0a
+mem_ssp_enable:00
+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
+
+#keyboard uuid
+mem_kb_uuid_list:
+#uuids
+04 0011 0100 1002 1124
+
+#handle
+00010000
+
+#total length
+3601b6
+
+#attribute start, first 4 digit is attribute ID
+090000 0a 00010000
+090001 3503 191124
+090004 350d 3506 190100 090011 3503 190011
+090005 3503 191002
+090006 3509 09656e 09006a 090100
+090009 3508 3506 191124 090100
+09000d 350f 350d 3506 190100 090013 3503 190011
+
+#Service Name
+#090100 2517
+#'Apple Wireless Keyboard
+#41 70 70 6c 65 20 57 69 72 65 6c 65 73 73 20 4b 65 79 62 6f 61 72 64
+#Service Name
+090100 253d
+#'Broadcom Bluetooth Wireless  Keyboard                        
+4272 6f61 6463 6f6d 2042 6c75 6574 6f6f 7468 2057 6972 656c 6573 7320 204b 6579 626f 6172 6420 
+2020 2020 2020 2020 2020 2020 2020 2020 2020 2020 2020 20
+
+#Service Description
+090101 2508
+#'Keyboard
+4b6579626f617264
+
+#Provider Name
+#090102 250a
+#'Apple Inc.
+#41 70 70 6c 65 20 49 6e 63 2e
+#Provider Name
+090102 2510
+#'Broadcom Corp.  
+4272 6f61 6463 6f6d 2043 6f72 702e 2020
+
+090200 090100
+090201 090111
+090202 0840
+090203 0821
+090204 2801
+090205 2801
+090206 35a5 35a3 0822 259f
+
+# hid descriptor
+0501 # Usage Page(Generic Desktop)
+0906 # Usage(Keyboard)
+a101 # Collection(Application)
+8501 # Report ID(1)
+7501 # Report Size(1)
+9508 # Report Count(8)
+0507 # Usage Page(Keyboard/Keypad)
+19e0 # Usage Minimum(224)
+29e7 # Usage Maximum(231)
+1500 # Logical Minimum(0)
+2501 # Logical Maximum(1)
+8102 # Input(Data Variable Absolute) ; Modifier byte
+9501 # Report Count(1)
+7508 # Report Size(8)
+8103 # Input(Constant Variable Absolute) ; 
+9505 # Report Count(5)
+7501 # Report Size(1)
+0508 # Usage Page(LEDs)
+1901 # Usage Minimum(1)
+2905 # Usage Maximum(5)
+9102 # Output(Data Variable Absolute) ; LED report
+9501 # Report Count(1)
+7503 # Report Size(3)
+9103 # Output(Constant Variable Absolute) ; 
+9506 # Report Count(6)
+7508 # Report Size(8)
+1500 # Logical Minimum(0)
+25ff # Logical Maximum(255)
+0507 # Usage Page(Keyboard/Keypad)
+1900 # Usage Minimum(0)
+29ff # Usage Maximum(255)
+8100 # Input(Data Array) ; Key arrarys 6 bytes
+c0 # End Collection
+
+05 0c  		
+09 01  		
+a1 01	
+85 02			
+19 00  		
+2a ff 03 
+15 00 
+26 ff 03		
+95 01  		
+75 10  			
+81 00  		
+c0
+
+#29
+#05 01
+#09 80
+#A1 01
+#85 03
+#15 00
+#25 01
+#75 01
+#95 03
+#19 81
+#29 83
+#81 02
+#95 01
+#75 05
+#81 03
+#C0
+
+#69
+05 01 # Usage Page(Generic Desktop)
+09 02 # Usage(Mouse)
+a1 01 # Collection(Application)
+85 03 # Report ID(3)
+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 80  #Logical Minimum (-32767)
+26 FF 7F #Logical Maximum (32767) 
+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 Devices)
+0a 38 02
+95 01   #REPORT_COUNT (1)	
+81 06  #INPUT (Data,Var,Rel)
+
+c0 # End Collection
+c0 # End Collection
+
+090207 3508 3506 090409 090100
+09020b 090100
+09020c 090c80
+09020d 2800
+09020e 2801
+09020f 090318
+090210 090000
+#attribute end
+
+#uuids for pnpInformation	
+03 1002 1200 0001
+
+#handle
+00010001
+
+#total length 90 bytes
+3600a1
+
+#attribute list
+090000 0a00010001
+090001 3503 191200
+090004 350d 3506 190100 090001 3503 190001
+090006 3509 09656e 09006a 090100
+090009 3508 3506 191200 090100
+090100 252f42726f6164636f6d20426c7565746f6f746820576972656c657373204b6579626f61726420506e5020536572766572
+090101 25084b6579626f617264
+090200 090103
+090201# VendorID
+0904e8
+090202#ProductID
+097021
+090203 090001
+090204 2801
+090205 090002
+
+#attribute end
+00
+
+#Auto reconnection after power on
+
+memui_uuid_table:mem_kb_uuid_list
+#Auto reconnection after power on
+mem_device_option:43
+mem_ptt:0
+mem_features:
+ff
+ff
+8f
+f8	#fe--EDR  F8--BR
+83	#AFHclose 83
+9d
+59
+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
+
+mem_seqi:80
+
+
+mem_ipc_tx_evt_buff:02 01
+
+
+
+
+#attribute list: handle 2bytes, uuid 2bytes, length 1bytes, attribute Nbytes
+mem_le_att_list:
+
+#Primary service: GATT
+01 00 00 28 02 01 18
+#Characteristic: Service changed
+02 00 03 28 01 20
+03 00 05 2a 01 00
+#Client Characteristic Configuration
+04 00 02 29 02 00 00
+
+#Primary Service: GAP
+05 00 00 28 02 00 18 
+#Characteristic: Device Name
+06 00 03 28 01 02 
+07 00 00 2a 
+'BT4.2 Keyboard
+
+#Characteristic: Appearance
+08 00 03 28 01 02 
+09 00 01 2a 02 c1 03 
+#Characteristic: Peripheral Preferred Connection Parameters
+0a 00 03 28 01 02
+0b 00 04 2a 08 06 00 06 00 64 00 2c 01 # interval 6ms, latency 100, timeout 300
+
+#Primary Service: Device Information
+0c 00 00 28 02 0a 18 
+#Characteristic: pnp id
+0d 00 03 28 01 02
+0e 00 50 2a 07 02 e8 04 21 70 01 00		# SAMSUNG soft keyboard,setup shortcuts
+
+#Primary service: HID
+0f 00 00 28 02 12 18
+#Characteristic:Protocol mode
+10 00 03 28 01 06
+11 00 4e 2a 01 01
+#Characteristic: hid report
+12 00 03 28 01 12   
+13 00 4d 2a 08 00 00 00 00 00 00 00 00	#hid report	led handle write
+14 00 02 29 02 00 00	
+15 00 08 29 02 01 01	#Report ID: 1	Report Type: Input
+#Characteristic:hid report
+16 00 03 28 01 12   
+17 00 4d 2a 02 00 00 	#hid report	led handle write
+18 00 02 29 02 00 00	
+19 00 08 29 02 02 01	#Report ID: 2	Report Type: Input
+
+#Characteristic:hid report
+1a 00 03 28 01 12  
+1b 00 4d 2a 05 00 00 00 00 00
+1c 00 02 29 02 00 00
+1d 00 08 29 02 03 01	#Report ID: 3	Report Type: Input
+
+#Characteristic:hid report
+1e 00 03 28 01 0e   
+1f 00 4d 2a 02 00	00	#hid report	led handle write
+20 00 02 29 02 00 00	
+21 00 08 29 02 01 02	#Report ID: 1	Report Type: Output
+
+#Characteristic:Report map
+22 00 03 28 01 0a
+23 00 4b 2a a0
+#66
+05 01
+09 06
+a1 01
+85 01
+75 01 
+95 08
+05 07
+19 e0 
+29 e7 
+15 00
+25 01
+81 02
+95 01 
+75 08
+81 03 
+95 05
+75 01
+05 08
+19 01
+29 05  
+91 02 
+95 01  
+75 03  
+91 03
+95 06 
+75 08 
+15 00 
+26 ff 00
+05 07
+19 00
+29 ff 
+81 00
+c0 
+
+#25
+05 0c  		
+09 01  		
+a1 01	
+85 02			
+19 00  		
+2a ff 03 
+15 00 
+26 ff 03		
+95 01  		
+75 10  			
+81 00  		
+c0
+
+#29
+#05 01
+#09 80
+#A1 01
+#85 03
+#15 00
+#25 01
+#75 01
+#95 03
+#19 81
+#29 83
+#81 02
+#95 01
+#75 05
+#81 03
+#C0
+
+#60
+05 01 # Usage Page(Generic Desktop)
+09 02 # Usage(Mouse)
+a1 01 # Collection(Application)
+85 03 # Report ID(3)
+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 80  #Logical Minimum (-32767)
+26 FF 7F #Logical Maximum (32767) 
+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 Devices)
+0a 38 02
+95 01   #REPORT_COUNT (1)	
+81 06  #INPUT (Data,Var,Rel)
+
+c0 # End Collection
+c0 # End Collection
+
+#Characteristic:Hid information
+24 00 03 28 01 02
+25 00 4a 2a 04 11 01 00 01        
+#Characteristic
+26 00 03 28 01 04
+27 00 4c 2a 01 00
+
+#Primary Service: BAS
+28 00 00 28 02 0f 18 
+#Characteristic: Battery Level
+29 00 03 28 01 12 
+2a 00 19 2a 01 64 
+#Client Characteristic Configuration
+2b 00 02 29 02 00 00 
+#End of Attribute list
+00 00
+
+
+mem_le_local_mtu:17
+mem_le_transmit_window:50
+mem_le_notify_handle:14
+mem_le_lap:11 46 34 54 77 dd
+
+
+mem_empty_count:00
+mem_att_report1:13 00
+mem_att_report2:17 00
+mem_att_report3:1b 00
+mem_le_rx_window:50
+
+mem_le_connection_updata_param:
+0c 00 #Length
+05 00 #CID
+12 b4 
+08 00 
+10 00 #min interval
+10 00 #max interval
+00 00 #latency
+2c 01 #timeout
+
+mem_le_name_len:
+'BT4.2 Keyboard
+
+mem_le_adv_channel_map:07 
+mem_le_adv_direct_addr_type:01
+#mem_le_adv_interval_max:00 01
+mem_le_adv_data_len:1f
+mem_le_adv_data:
+#02 01 05 05 02 12 18 0f 18 03 19 c1 03
+02 01 05 03 19 c1 03 03 03 12 18
+'\09BT4.2 Keyboard
+
+mem_le_scan_data_len:1f
+mem_le_scan_data:
+'\09BT4.2 Keyboard
+
+mem_version_yy_mm_dd:20 21 08 12		#version data 20210409
+
+mem_adc_0v:9f 3e
+mem_adc_3v:cd 4d
+mem_adc_config_flag:02    #01 VINLPM      #02 HVIN      #04 GPIO
+
+#24g init
+mem_24g_mode:01#tx
+mem_24g_data_type:02        #mouse 1,kb 2
+mem_24g_max_retry:4#max tx retry
+mem_24g_no_ack:00#with ack
+mem_24g_rx_window:c0 12     #400us 
+mem_24g_ch_map1:00 13 2c 42
+mem_24g_ch_map2:06 15 36 48
+mem_24g_ch_map3:0f 1a 3a 4c
+mem_24g_ch_map4:11 23 31 4d
+mem_24g_pairing_sm:ff
+mem_24g_paring_addr:20 15 10 05
+mem_pair_state:c2
+mem_24g_common_temp:00 00 00 00 00 00 00 00 00 00
+mem_24g_enter_hibernate:00 48 5d 00 00 00 00 00#10 min
+mem_24g_enter_hibernate_max:ff ff ff ff
+mem_24g_short_sleep_counter:e8 fd 00 #00 00 0a
+
+mem_lpm_config:8f 10 ce
+mem_lpm_xtalcnt:00 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 03
+mem_rx_window_sniff:00 06
+mem_new_supervision_to:00 13
+
+mem_eeprom_base:30 3f
+mem_eeprom_block_size:20
+#pointers to tail space of mem_le_att_list
+4f70:
+07 ff #2M_IF
+0a fb
+0b ff 
+
+#agc table
+1a fb
+1b fb
+1c fb
+1d f6
+1e f2
+1f ee
+20 ea
+21 e6
+22 e2
+23 de
+24 da
+25 d6
+26 d2
+27 ce
+28 ca
+29 c6
+2a c2
+2b bd
+2c b9
+2d b5
+2e b1
+2f ad
+30 a9
+31 80
+32 80
+33 80
+34 c0
+35 c1
+36 c2
+37 c3
+38 c4
+39 c5
+3a c6
+3b c7
+3c 06
+3d 07
+3e 46
+3f 85
+40 86
+41 87
+42 c6
+43 c7
+44 d6
+45 d7
+46 e6
+47 f5
+48 00
+49 f8
+4a 7f
+4e ec
+4f 5e
+
+# tx power
+55 d0
+56 c0
+57 4c
+58 6c
+59 50
+
+#dpll
+68 e4
+69 00
+6a 00
+6b 30
+ff
+mem_rf_init_ptr:70 4f
+
+mem_le_att_list+490:
+mem_5db_tx_power_param:
+55 d0
+56 c0
+57 4c
+58 6c
+59 50
+
+mem_24g_paring_tx_power_param:
+55 d0
+56 c0
+57 4c
+58 6c
+59 50
+
Index: patch/sched.rom
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/patch/sched.rom	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/patch/sched.rom	(working copy)
@@ -0,0 +1,678 @@
+mem_patch00:
+29   #mem_patch00
+00   #mem_patch01
+00   #mem_patch02
+00   #mem_patch03
+00   #mem_patch04
+00   #mem_patch05
+00   #mem_patch06
+00   #mem_patch07
+00   #mem_patch08
+00   #mem_patch09
+00   #mem_patch0A
+00   #mem_patch0B
+00   #mem_patch0C
+00   #mem_patch0D
+00   #mem_patch0E
+00   #mem_patch0F
+00   #mem_patch10
+00   #mem_patch11
+35   #mem_patch12
+00   #mem_patch13
+00   #mem_patch14
+00   #mem_patch15
+4f   #mem_patch16
+02   #mem_patch17
+00   #mem_patch18
+00   #mem_patch19
+00   #mem_patch1A
+00   #mem_patch1B
+00   #mem_patch1C
+00   #mem_patch1D
+00   #mem_patch1E
+00   #mem_patch1F
+00   #mem_patch20
+00   #mem_patch21
+00   #mem_patch22
+00   #mem_patch23
+00   #mem_patch24
+00   #mem_patch25
+00   #mem_patch26
+c0   #mem_patch27
+00   #mem_patch28
+00   #mem_patch29
+00   #mem_patch2A
+00   #mem_patch2B
+00   #mem_patch2C
+00  #mem_patch2D
+00   #mem_patch2E
+00   #mem_patch2F
+80   #mem_patch30
+a0   #mem_patch31
+00   #mem_patch32
+00   #mem_patch33
+00   #mem_patch34
+00   #mem_patch35
+00   #mem_patch36
+00   #mem_patch37
+00   #mem_patch38
+20   #mem_patch39
+01   #mem_patch3A
+00   #mem_patch3B
+00   #mem_patch3C
+00   #mem_patch3D
+00   #mem_patch3E
+00   #mem_patch3F
+
+
+mem_customize_timer_setup:   50 00		# 20:10ms  30:15ms
+
+mem_lpm_mode:01
+mem_lpm_mult:40
+mem_lpm_mult_timeout:03
+mem_lpm_overhead:0a
+mem_lpm_interval:10 00
+mem_scan_mode:00
+mem_test:00 00
+
+mem_class: 40 25 00
+
+mem_lap:36 08 c2 08 66 22    
+mem_local_name_length:
+'BT3.0 Keyboard
+mem_sniff_param_interval:0e 00
+mem_sniff_param_attempt:01
+mem_sniff_param_timeout:01
+mem_unsniff2sniff_timer:0a
+mem_ssp_enable:00
+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
+
+#keyboard uuid
+mem_kb_uuid_list:
+#uuids
+04 0011 0100 1002 1124
+
+#handle
+00010000
+
+#total length
+3601b6
+
+#attribute start, first 4 digit is attribute ID
+090000 0a 00010000
+090001 3503 191124
+090004 350d 3506 190100 090011 3503 190011
+090005 3503 191002
+090006 3509 09656e 09006a 090100
+090009 3508 3506 191124 090100
+09000d 350f 350d 3506 190100 090013 3503 190011
+
+#Service Name
+#090100 2517
+#'Apple Wireless Keyboard
+#41 70 70 6c 65 20 57 69 72 65 6c 65 73 73 20 4b 65 79 62 6f 61 72 64
+#Service Name
+090100 253d
+#'Broadcom Bluetooth Wireless  Keyboard                        
+4272 6f61 6463 6f6d 2042 6c75 6574 6f6f 7468 2057 6972 656c 6573 7320 204b 6579 626f 6172 6420 
+2020 2020 2020 2020 2020 2020 2020 2020 2020 2020 2020 20
+
+#Service Description
+090101 2508
+#'Keyboard
+4b6579626f617264
+
+#Provider Name
+#090102 250a
+#'Apple Inc.
+#41 70 70 6c 65 20 49 6e 63 2e
+#Provider Name
+090102 2510
+#'Broadcom Corp.  
+4272 6f61 6463 6f6d 2043 6f72 702e 2020
+
+090200 090100
+090201 090111
+090202 0840
+090203 0821
+090204 2801
+090205 2801
+090206 35a5 35a3 0822 259f
+
+# hid descriptor
+0501 # Usage Page(Generic Desktop)
+0906 # Usage(Keyboard)
+a101 # Collection(Application)
+8501 # Report ID(1)
+7501 # Report Size(1)
+9508 # Report Count(8)
+0507 # Usage Page(Keyboard/Keypad)
+19e0 # Usage Minimum(224)
+29e7 # Usage Maximum(231)
+1500 # Logical Minimum(0)
+2501 # Logical Maximum(1)
+8102 # Input(Data Variable Absolute) ; Modifier byte
+9501 # Report Count(1)
+7508 # Report Size(8)
+8103 # Input(Constant Variable Absolute) ; 
+9505 # Report Count(5)
+7501 # Report Size(1)
+0508 # Usage Page(LEDs)
+1901 # Usage Minimum(1)
+2905 # Usage Maximum(5)
+9102 # Output(Data Variable Absolute) ; LED report
+9501 # Report Count(1)
+7503 # Report Size(3)
+9103 # Output(Constant Variable Absolute) ; 
+9506 # Report Count(6)
+7508 # Report Size(8)
+1500 # Logical Minimum(0)
+25ff # Logical Maximum(255)
+0507 # Usage Page(Keyboard/Keypad)
+1900 # Usage Minimum(0)
+29ff # Usage Maximum(255)
+8100 # Input(Data Array) ; Key arrarys 6 bytes
+c0 # End Collection
+
+05 0c  		
+09 01  		
+a1 01	
+85 02			
+19 00  		
+2a ff 03 
+15 00 
+26 ff 03		
+95 01  		
+75 10  			
+81 00  		
+c0
+
+#29
+#05 01
+#09 80
+#A1 01
+#85 03
+#15 00
+#25 01
+#75 01
+#95 03
+#19 81
+#29 83
+#81 02
+#95 01
+#75 05
+#81 03
+#C0
+
+#69
+05 01 # Usage Page(Generic Desktop)
+09 02 # Usage(Mouse)
+a1 01 # Collection(Application)
+85 03 # Report ID(3)
+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 80  #Logical Minimum (-32767)
+26 FF 7F #Logical Maximum (32767) 
+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 Devices)
+0a 38 02
+95 01   #REPORT_COUNT (1)	
+81 06  #INPUT (Data,Var,Rel)
+
+c0 # End Collection
+c0 # End Collection
+
+090207 3508 3506 090409 090100
+09020b 090100
+09020c 090c80
+09020d 2800
+09020e 2801
+09020f 090318
+090210 090000
+#attribute end
+
+#uuids for pnpInformation	
+03 1002 1200 0001
+
+#handle
+00010001
+
+#total length 90 bytes
+3600a1
+
+#attribute list
+090000 0a00010001
+090001 3503 191200
+090004 350d 3506 190100 090001 3503 190001
+090006 3509 09656e 09006a 090100
+090009 3508 3506 191200 090100
+090100 252f42726f6164636f6d20426c7565746f6f746820576972656c657373204b6579626f61726420506e5020536572766572
+090101 25084b6579626f617264
+090200 090103
+090201# VendorID
+0904e8
+090202#ProductID
+097021
+090203 090001
+090204 2801
+090205 090002
+
+#attribute end
+00
+
+#Auto reconnection after power on
+
+memui_uuid_table:mem_kb_uuid_list
+#Auto reconnection after power on
+mem_device_option:43
+mem_ptt:0
+mem_features:
+ff
+ff
+8f
+f8	#fe--EDR  F8--BR
+83	#AFHclose 83
+9d
+59
+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
+
+mem_seqi:80
+
+
+mem_ipc_tx_evt_buff:02 01
+
+
+
+
+#attribute list: handle 2bytes, uuid 2bytes, length 1bytes, attribute Nbytes
+mem_le_att_list:
+
+#Primary service: GATT
+01 00 00 28 02 01 18
+#Characteristic: Service changed
+02 00 03 28 01 20
+03 00 05 2a 01 00
+#Client Characteristic Configuration
+04 00 02 29 02 00 00
+
+#Primary Service: GAP
+05 00 00 28 02 00 18 
+#Characteristic: Device Name
+06 00 03 28 01 02 
+07 00 00 2a 
+'BT4.2 Keyboard
+
+#Characteristic: Appearance
+08 00 03 28 01 02 
+09 00 01 2a 02 c1 03 
+#Characteristic: Peripheral Preferred Connection Parameters
+0a 00 03 28 01 02
+0b 00 04 2a 08 06 00 06 00 64 00 2c 01 # interval 6ms, latency 100, timeout 300
+
+#Primary Service: Device Information
+0c 00 00 28 02 0a 18 
+#Characteristic: pnp id
+0d 00 03 28 01 02
+0e 00 50 2a 07 02 e8 04 21 70 01 00		# SAMSUNG soft keyboard,setup shortcuts
+
+#Primary service: HID
+0f 00 00 28 02 12 18
+#Characteristic:Protocol mode
+10 00 03 28 01 06
+11 00 4e 2a 01 01
+#Characteristic: hid report
+12 00 03 28 01 12   
+13 00 4d 2a 08 00 00 00 00 00 00 00 00	#hid report	led handle write
+14 00 02 29 02 00 00	
+15 00 08 29 02 01 01	#Report ID: 1	Report Type: Input
+#Characteristic:hid report
+16 00 03 28 01 12   
+17 00 4d 2a 02 00 00 	#hid report	led handle write
+18 00 02 29 02 00 00	
+19 00 08 29 02 02 01	#Report ID: 2	Report Type: Input
+
+#Characteristic:hid report
+1a 00 03 28 01 12  
+1b 00 4d 2a 05 00 00 00 00 00
+1c 00 02 29 02 00 00
+1d 00 08 29 02 03 01	#Report ID: 3	Report Type: Input
+
+#Characteristic:hid report
+1e 00 03 28 01 0e   
+1f 00 4d 2a 02 00	00	#hid report	led handle write
+20 00 02 29 02 00 00	
+21 00 08 29 02 01 02	#Report ID: 1	Report Type: Output
+
+#Characteristic:Report map
+22 00 03 28 01 0a
+23 00 4b 2a a0
+#66
+05 01
+09 06
+a1 01
+85 01
+75 01 
+95 08
+05 07
+19 e0 
+29 e7 
+15 00
+25 01
+81 02
+95 01 
+75 08
+81 03 
+95 05
+75 01
+05 08
+19 01
+29 05  
+91 02 
+95 01  
+75 03  
+91 03
+95 06 
+75 08 
+15 00 
+26 ff 00
+05 07
+19 00
+29 ff 
+81 00
+c0 
+
+#25
+05 0c  		
+09 01  		
+a1 01	
+85 02			
+19 00  		
+2a ff 03 
+15 00 
+26 ff 03		
+95 01  		
+75 10  			
+81 00  		
+c0
+
+#29
+#05 01
+#09 80
+#A1 01
+#85 03
+#15 00
+#25 01
+#75 01
+#95 03
+#19 81
+#29 83
+#81 02
+#95 01
+#75 05
+#81 03
+#C0
+
+#60
+05 01 # Usage Page(Generic Desktop)
+09 02 # Usage(Mouse)
+a1 01 # Collection(Application)
+85 03 # Report ID(3)
+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 80  #Logical Minimum (-32767)
+26 FF 7F #Logical Maximum (32767) 
+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 Devices)
+0a 38 02
+95 01   #REPORT_COUNT (1)	
+81 06  #INPUT (Data,Var,Rel)
+
+c0 # End Collection
+c0 # End Collection
+
+#Characteristic:Hid information
+24 00 03 28 01 02
+25 00 4a 2a 04 11 01 00 01        
+#Characteristic
+26 00 03 28 01 04
+27 00 4c 2a 01 00
+
+#Primary Service: BAS
+28 00 00 28 02 0f 18 
+#Characteristic: Battery Level
+29 00 03 28 01 12 
+2a 00 19 2a 01 64 
+#Client Characteristic Configuration
+2b 00 02 29 02 00 00 
+#End of Attribute list
+00 00
+
+
+mem_le_local_mtu:17
+mem_le_transmit_window:50
+mem_le_notify_handle:14
+mem_le_lap:11 46 34 54 77 dd
+
+
+mem_empty_count:00
+mem_att_report1:13 00
+mem_att_report2:17 00
+mem_att_report3:1b 00
+mem_le_rx_window:50
+
+mem_le_connection_updata_param:
+0c 00 #Length
+05 00 #CID
+12 b4 
+08 00 
+10 00 #min interval
+10 00 #max interval
+00 00 #latency
+2c 01 #timeout
+
+mem_le_name_len:
+'BT4.2 Keyboard
+
+mem_le_adv_channel_map:07 
+mem_le_adv_direct_addr_type:01
+#mem_le_adv_interval_max:00 01
+mem_le_adv_data_len:1f
+mem_le_adv_data:
+#02 01 05 05 02 12 18 0f 18 03 19 c1 03
+02 01 05 03 19 c1 03 03 03 12 18
+'\09BT4.2 Keyboard
+
+mem_le_scan_data_len:1f
+mem_le_scan_data:
+'\09BT4.2 Keyboard
+
+mem_version_yy_mm_dd:20 21 08 12		#version data 20210409
+
+mem_adc_0v:9f 3e
+mem_adc_3v:cd 4d
+mem_adc_config_flag:02    #01 VINLPM      #02 HVIN      #04 GPIO
+
+#24g init
+mem_24g_mode:01#tx
+mem_24g_data_type:02        #mouse 1,kb 2
+mem_24g_max_retry:4#max tx retry
+mem_24g_no_ack:00#with ack
+mem_24g_rx_window:c0 12     #400us 
+mem_24g_ch_map1:00 13 2c 42
+mem_24g_ch_map2:06 15 36 48
+mem_24g_ch_map3:0f 1a 3a 4c
+mem_24g_ch_map4:11 23 31 4d
+mem_24g_pairing_sm:ff
+mem_24g_paring_addr:20 15 10 05
+mem_pair_state:c2
+mem_24g_common_temp:00 00 00 00 00 00 00 00 00 00
+mem_24g_enter_hibernate:00 48 5d 00 00 00 00 00#10 min
+mem_24g_enter_hibernate_max:ff ff ff ff
+mem_24g_short_sleep_counter:e8 fd 00 #00 00 0a
+
+mem_lpm_config:8f 10 ce
+mem_lpm_xtalcnt:00 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 03
+mem_rx_window_sniff:00 06
+mem_new_supervision_to:00 13
+
+mem_eeprom_base:30 3f
+mem_eeprom_block_size:20
+#pointers to tail space of mem_le_att_list
+4f70:
+07 ff #2M_IF
+0a fb
+0b ff 
+
+#agc table
+1a fb
+1b fb
+1c fb
+1d f6
+1e f2
+1f ee
+20 ea
+21 e6
+22 e2
+23 de
+24 da
+25 d6
+26 d2
+27 ce
+28 ca
+29 c6
+2a c2
+2b bd
+2c b9
+2d b5
+2e b1
+2f ad
+30 a9
+31 80
+32 80
+33 80
+34 c0
+35 c1
+36 c2
+37 c3
+38 c4
+39 c5
+3a c6
+3b c7
+3c 06
+3d 07
+3e 46
+3f 85
+40 86
+41 87
+42 c6
+43 c7
+44 d6
+45 d7
+46 e6
+47 f5
+48 00
+49 f8
+4a 7f
+4e ec
+4f 5e
+
+# tx power
+55 d0
+56 c0
+57 4c
+58 6c
+59 50
+
+#dpll
+68 e4
+69 00
+6a 00
+6b 30
+ff
+mem_rf_init_ptr:70 4f
+
+mem_le_att_list+490:
+mem_5db_tx_power_param:
+55 d0
+56 c0
+57 4c
+58 6c
+59 50
+
+mem_24g_paring_tx_power_param:
+55 d0
+56 c0
+57 4c
+58 6c
+59 50
+
Index: patch/sys.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: patch/sys.obj
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: patch/utilities.obj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: patch/utilities.obj
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: pwm.h
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/pwm.h	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/pwm.h	(working copy)
@@ -0,0 +1,16 @@
+#ifndef _PWM_H
+#define _PWM_H
+#include "common.h"
+
+#define PWM_ENABLE
+
+
+void YC_PWM_init();
+void YC_PWM_set_duty(byte pwm_duty);
+void YC_PWM_disable();
+
+
+
+#endif /* YC_PWM_H */
+
+
Index: pwm.c
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/pwm.c	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/pwm.c	(working copy)
@@ -0,0 +1,67 @@
+#include "pwm.h"
+
+/*
+			0x00:select system clock 12M;
+			0x40:select undivied system clock 24M/48M;
+			0x80:select lpo clock:33K
+*/			
+
+void YC_PWM_init()
+{
+	REG_PWM_CLK_SEL |= 0x00;	// select system clock
+	REG_CLK_OFF(1)  &= ~0x20;	//turn on PWM clock
+	REG_GPIO_SEL(2)  |= 0x80;	//set gpio22 to PWM
+}
+
+
+void YC_PWM_set_duty(byte pwm_duty_level)
+{
+	word pwm_duty;
+
+	if((pwm_duty_level == BACKLIGHT_DUTY_LEVEL_00)||(g_variable.battery_status != BAT_STATUS_NONE))
+	{
+		YC_PWM_disable();
+		GPIO_SetOutput(BACKLIGHT_PWM_GPIO,LED_ON);
+		return;
+	}
+	else if(pwm_duty_level == BACKLIGHT_DUTY_LEVEL_100)
+	{
+		YC_PWM_disable();
+		GPIO_SetOutput(BACKLIGHT_PWM_GPIO,LED_OFF);
+		return;
+	}
+	else
+	{
+		if(pwm_duty_level == BACKLIGHT_DUTY_LEVEL_75)
+			pwm_duty = 25;
+		else if(pwm_duty_level == BACKLIGHT_DUTY_LEVEL_50)
+			pwm_duty = 50;
+		else
+			pwm_duty = 75;
+	}
+		
+	m_lpm_mode = 0;
+	g_variable.pwm_lpm_mode_flag = 1;
+	YC_PWM_init();
+	REG_PWM_PCOUNT(0) = pwm_duty;
+	REG_PWM_NCOUNT(0) = (100 - pwm_duty );
+	
+	REG_PWM_ENABLE |= 0x40;
+		
+}
+
+
+void YC_PWM_disable()
+{
+	if((g_variable.pairing_timeout == 0) && (g_variable.pwm_lpm_mode_flag == 1))
+	{
+		g_variable.pwm_lpm_mode_flag = 0;
+		m_lpm_mode = 1;
+	}
+	REG_CLK_OFF(1)  |= 0x20;	//turn on PWM clock
+	REG_GPIO_SEL(2)  &= ~0x80;	//set gpio22 to PWM
+
+	REG_PWM_ENABLE &= ~0x40;
+}
+
+
Index: ram.c
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/ram.c	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/ram.c	(working copy)
@@ -0,0 +1,8 @@
+
+extern void YC_System_Main(void);
+
+
+void main()
+{
+	YC_System_Main();
+}
Index: sys.h
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/sys.h	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/sys.h	(working copy)
@@ -0,0 +1,73 @@
+#ifndef _YC_SYSTEM_H_
+#define _YC_SYSTEM_H_
+#include "common.h"
+
+#define PC_SLEEP_STATUS_GET
+
+#define SYSTEM_CONTROL_ENABLE
+#define STANDBY_TIMER_30MIN				3600		// 500ms*3600 = 30min
+#define STANDBY_TIMER_10MIN				960		// 500ms*1200 = 10min
+#define RECONNECT_TIMER_5S				10			// 500ms*10 = 5s
+#define RECONNECT_TIMER_10S			20			// 500ms*20 = 10s
+
+#define BT_PAIRING_TIME_OUT_2MIN		240			// 500ms*240 = 2min
+#define BT_PAIRING_TIME_OUT_1MIN		120			// 500ms*120 = 1min
+#define G24_PAIRING_TIME_OUT_20S		60			// 500ms*40 = 20s
+
+#define KB_NUM_CAPS_LED_ON_TIMER    	20			// 500ms*12 = 6s
+
+#define KB_POWERON_LED_ON_TIMER		30			// 100ms*30 = 3s
+
+
+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;
+
+void System_long_sleep();
+void System_Reset_Connect();
+void YC_adc_init();
+
+
+#endif
Index: sys.c
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/sys.c	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/sys.c	(working copy)
@@ -0,0 +1,472 @@
+#include "sys.h"
+#include "gpio.h"
+#include "kbhid.h"
+#include "ipc.h"
+#include "iic.h"
+#include "keyscan.h"
+#include "global_variable.h"
+#include "kb_process.h"
+
+/////////////////////////////////////////////////////////////////
+static void System_clear_mem()
+{
+	xmemclear((byte *)&g_variable,sizeof(G_VARIABLE_MAP));
+	xmemclear(ksSelMapOld,KB_KSCAN_COL_NUM);
+	xmemclear(ksSelMapCheck,KB_KSCAN_COL_NUM);
+	xmemclear(ksSelMapCurr,KB_KSCAN_COL_NUM);
+	xmemclear(hidBuff,9);
+	xmemclear(multikey,9);
+ 
+	delayChgInvTimer = 0;
+	action_timeout = 0;
+
+
+	power_on_flag = 0;
+	repeat_send_24g = 0;
+	get_24g_led_send = 0;
+	press_long_time_flag = 0;
+	mult_key_status = 0;
+	long_press_flag = 0;
+	standard_key_release_flag = 0;
+	fn_flag = 0;
+	fn_flag_last = 0;
+	fn_tx_flag = 0;
+	fn_lock_flag = 0;
+
+	mult_key_value = 0;
+	m_caps_num_lock = 0xf0;
+	m_caps_num_lock_last = 0xf0; 
+	m_reconnect_continue = 0;
+}
+
+static void System_IIC_clk_setup()		// 400KHz
+{
+	REG_IICD_SCL_LOW  =  0x0d;
+   	REG_IICD_SCL_HIGH  =  0x0e;
+   	REG_IICD_START_SETUP  = 0x0e;
+   	REG_IICD_START_HOLD  = 0x0e;
+  	REG_IICD_STOP_SETUP  = 0x0e;
+   	REG_IICD_DATA_SETUP  = 0x0d;
+}
+
+static void System_Hardware_init()
+{
+	System_IIC_clk_setup();
+	KS_Initialize();
+	LED_all_shutdown();
+}
+
+
+void System_Software_init()
+{
+	System_clear_mem();
+	YC_adc_init();
+	g_variable.release_data =1;
+	g_variable.recon_count = 0;
+	g_variable.test_buff = 0xff;
+	g_variable.backlight_speed = BACKLIGHT_SPEED_LEVEL_500MS;
+	g_variable.backlight_duty_level = BACKLIGHT_DUTY_LEVEL_100;
+}
+
+static void System_Hardware_reset()
+{
+	m_reset_reg = 1;
+	while(1);
+}
+
+void System_long_sleep()
+{ 
+	g_variable.g24_long_sleep_flag = 1;
+#ifdef PC_SLEEP_STATUS_GET	
+	g_variable.sys_numlockled_on_timer = 0;
+	g_variable.sys_capslockled_on_timer = 0;
+	g_variable.sys_scrolllockled_on_timer = 0;
+	m_caps_num_lock = 0xf0;
+	m_caps_num_lock_last = 0xf0; 
+#endif
+	g_variable.backlight_level = 0;
+	g_variable.battery_low_led_flash_flag = 0;
+	g_variable.battery_low_led_flash_interval = 0;		
+	m_24g_pairing_sm = 0xff;
+	m_24g_enter_hibernate[0]	= 0xff;
+	m_24g_enter_hibernate[1]	= 0xff;
+	m_24g_enter_hibernate[2]	= 0xff;
+	m_24g_enter_hibernate[3]	= 0xff;
+	YC_PWM_disable();
+	LED_all_shutdown();
+}
+
+void System_Reset_Connect()
+{
+	System_Hardware_reset();
+}
+/////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////
+static void kb_cb_Hid(byte *p,byte len) {
+	//p[0] is hid type,always is 1(kb) now
+	byte temp = p[1];
+
+	if (len<2) {
+		return;
+	}
+}
+
+static void kb_cb_event(byte evt)
+{
+	switch (evt) 
+	{
+	case IPC_EVT_HIBERNATE_WAKE:
+//		System_Hardware_init();
+//		System_Software_init();
+//		break;	
+	case IPC_EVT_RESET:
+		System_Hardware_init();
+		System_Software_init();
+		
+		IIC_Read(EEPROM_RECON_INFO_BASE_6,4 , (byte *)m_24g_addr);
+		Delay1ms(10);
+		IIC_Read(EEPROM_RECON_INFO_SYTEM_MODE,1 , (byte *)g_variable.system_mode);
+		Delay1ms(10);
+
+		GPIO_SetOutput(BACKLIGHT_PWM_GPIO,LED_ON);
+		LED_device_line_control(LED_ON,LED_ON,LED_ON,LED_ON,LED_ON);
+		YC_start_reconnect();
+		break;
+	case IPC_EVT_WAKEUP:
+		System_IIC_clk_setup();
+		KS_Initialize();
+		g_variable.g24_long_sleep_flag = 0;
+		break;
+
+		
+// 2.4G event	
+	case IPC_EVT_24G_PAIRING_COMPLETE:
+	case IPC_EVT_24G_ATTEMPT_SUCCESS:
+		g_variable.g24_currentState =  CHANGE_TO_24G_CONNECTED;
+		g_variable.g24_currentSubState = CHANGE_TO_24G_SUB_NONE;
+		YC_clear_reconnect_flag();
+		g_variable.pairing_g24_timeout = 0;
+		g_variable.release_data = 0;
+		g_variable.last_device_num = 0xfe;
+		g_variable.current_device_num = 0xfe;
+		m_24g_led_flag = KB_24G_LED_ACK_TYPE;
+		delayChgInvTimer = 10;
+
+		if(evt == IPC_EVT_24G_PAIRING_COMPLETE)
+		{
+			fast_connect_flag = 0;
+			g_variable.update_eeprom_flag = 1;
+			YC_update_eeprom_data();
+		}
+		
+		break;
+	
+	case IPC_EVT_24G_ATTEMPT_FAIL:		
+		g_variable.g24_currentState =  CHANGE_TO_24G_DISCONNECTED;
+		g_variable.g24_currentSubState = CHANGE_TO_24G_SUB_NONE;
+		g_variable.sleepTimer = 0;
+		g_variable.release_data = 1;
+
+		if (g_variable.key_action != KEY_NONE)
+		{
+			YC_clear_reconnect_flag();
+			YC_key_action_handle(g_variable.key_action);
+			break;
+		}
+
+		if (g_variable.lockLpm == 1)
+		{
+			g_variable.lockLpm =0;
+			System_long_sleep();
+			break;
+		}
+		break;
+	}
+}
+
+
+void LED_timer500ms()
+{
+	if (power_on_flag != 2)
+		return;
+ 	if (g_variable.pairing_g24_timeout != 0)
+	{
+		YC_PWM_disable();
+		GPIO_SetOutput(BACKLIGHT_PWM_GPIO,LED_OFF);
+		if(g_variable.pairing_g24_timeout & 0x01)
+			LED_device_line_control(LED_ON,LED_ON,LED_ON,LED_ON,LED_ON);
+		else
+			LED_device_line_control(LED_OFF,LED_OFF,LED_OFF,LED_OFF,LED_OFF);
+	}
+}
+
+void YC_connect_timeout_500ms()
+{
+	
+//system long sleep timer
+	if(g_variable.g24_currentState == CHANGE_TO_24G_CONNECTED)
+	{
+		if((g_variable.sleepTimer == 10) && m_24g_led_flag)
+		{
+			m_24g_led_flag = 0;
+		}
+
+	#ifdef PC_SLEEP_STATUS_GET	
+		if((g_variable.sleepTimer & 0x1f) == 0x10) // search dongle each 8s
+		{
+			xmemclear(hidBuff,9);
+
+			mult_key_status = 0;
+			hidBuff[0] = HID_REPORTID_KEY_STANDARD;		// standard key send
+			IPC_TxHidData(hidBuff, 9);
+		}
+	#endif
+
+		if (g_variable.sleepTimer >= STANDBY_TIMER_10MIN)	
+			System_long_sleep();	// 2.4g long sleep  lpm will wakeup every 3min15s
+	}
+	else if(g_variable.g24_currentState == CHANGE_TO_24G_PAIRING)
+	{
+		if (g_variable.sleepTimer >= BT_PAIRING_TIME_OUT_1MIN)
+		{
+			System_long_sleep();
+		}
+	}
+	else
+	{
+		if (g_variable.sleepTimer >= RECONNECT_TIMER_10S)
+		{
+			System_long_sleep();
+		}
+	}
+}
+
+
+
+void YC_pairing_timerout_500ms()
+{
+//pairing timer
+	if (g_variable.pairing_g24_timeout != 0)
+	{
+		g_variable.sleepTimer = 0;
+		g_variable.pairing_g24_timeout--;
+		if (g_variable.pairing_g24_timeout == 0)
+		{
+//			IPC_TxControlCmd(IPC_CMD_STOP_24G);
+			Delay1ms(10);
+			System_long_sleep();
+		}
+	}
+}
+
+void kb_button_press_timer500ms()
+{
+	
+//key status 
+	if (g_variable.button_flag & KEY_FLAG_SAME_KEY_PRESS)
+	{
+		if (g_variable.button_timer[1] < 250)
+			g_variable.button_timer[1]++;
+		if (g_variable.button_timer[1] == 180)			// 500ms*180*3 = 4min30s
+		{
+			press_long_time_flag++;
+			if(press_long_time_flag <= 2)
+			{
+				g_variable.button_timer[1] = 0;
+			}
+			else if(press_long_time_flag == 3)
+			{
+				long_press_flag = 1;
+				g_variable.button_timer[1] = 0;
+				System_long_sleep();
+			}
+		}
+	}
+	else
+	{
+		press_long_time_flag = 0;
+		long_press_flag = 0;
+		g_variable.button_timer[1] = 0;
+	}
+		
+	if (g_variable.button_flag & KEY_FLAG_FN_24G_DEVICE_BUTTON)		// G24 pairing
+	{
+		g_variable.delay_enter_lpm_timer = 10;
+		if (g_variable.button_timer[2] < 250)
+			g_variable.button_timer[2]++;
+		if (g_variable.button_timer[2] == 6)
+		{
+			if( !g_variable.current_device_num || (g_variable.current_device_num == 0xfe))
+			{
+				YC_disconnect_all_link();
+				Delay1ms(10);
+				YC_key_action_handle(KEY_PAIRING_24G);
+			}
+		}
+	}
+	else
+		g_variable.button_timer[2] = 0;
+	
+}
+
+
+
+static void kb_cb_Timer500ms()
+{
+	LED_timer500ms();	
+
+	g_variable.sleepTimer++;
+
+	YC_adc_check_timer500ms();
+	YC_connect_timeout_500ms();
+	kb_button_press_timer500ms();
+	YC_pairing_timerout_500ms();
+	
+	return;
+}
+
+
+static void kb_cb_Timer100ms()
+{
+	if(!g_variable.g24_long_sleep_flag && !g_variable.pairing_g24_timeout && (g_variable.battery_status != BAT_STATUS_LOW))
+		backlight_led_process();	
+
+
+	if (g_variable.delay_enter_lpm_timer) 
+	{
+		g_variable.delay_enter_lpm_timer --;
+	}
+
+	if(g_variable.recon_delay)
+		g_variable.recon_delay--;
+
+
+	if(g_variable.one_key_press_wait_release_timer)
+	{
+		g_variable.one_key_press_wait_release_timer--;
+		if(!g_variable.one_key_press_wait_release_timer)
+			g_variable.key_combination_step = CAMBINATION_KEY_NULL;
+	}
+
+
+	if (g_variable.pairing_g24_timeout == 0) //bt  pairing
+	{
+		if(g_variable.battery_low_led_flash_interval)
+		{
+			g_variable.battery_low_led_flash_interval--;
+			if(g_variable.battery_low_led_flash_interval < 8)
+			{
+				if(g_variable.battery_low_led_flash_interval & 0x02)
+				{
+					GPIO_Setout(LOWPOWER_LED_GPIO, LED_ON_0);
+				}
+				else
+				{
+					GPIO_Setout(LOWPOWER_LED_GPIO, LED_OFF_1);	
+				}	
+			}
+			else
+				GPIO_Setout(LOWPOWER_LED_GPIO, LED_OFF_1);
+			if(!g_variable.battery_low_led_flash_interval)
+				g_variable.battery_low_led_flash_interval = LOW_BATTERY_FLASH_INTERVAL;
+		}
+	}
+	
+// The dongle must receive data within 200ms, otherwise it will be forced to lift
+	if(!long_press_flag)
+	{
+		if (repeat_send_24g == 1)
+		{
+			g_variable.sleepTimer = 0;
+			repeat_send_24g = 0;
+
+			 if (multikey[0] != 0)
+			{
+				IPC_TxHidData(multikey, 3);
+			}
+			else if (hidBuff[0] != 0)
+			{
+
+				IPC_TxHidData(hidBuff,9);
+			}
+		}
+	}
+
+	if (delayChgInvTimer != 0)
+	{
+		delayChgInvTimer--;
+	}
+}
+
+
+
+static tIPCControlBlock cb = 
+{
+	kb_cb_event,
+	NULL,
+	kb_cb_Timer500ms,
+	kb_cb_Timer100ms,
+	NULL,
+	kb_cb_Hid
+};
+
+static void kb_cb_init()
+{
+	IPC_Initialize(&cb);
+}
+/////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////
+void YC_System_Main(void)
+{
+	kb_cb_init();
+	while(1) {
+		IPC_DealSingleStep();
+		kb_need_keyscan();
+		YC_update_eeprom_data();
+		LED_handle();
+
+	#ifdef PC_SLEEP_STATUS_GET		
+		if(m_pc_sleep_flag)
+		{
+			System_long_sleep();
+		}
+	#endif	
+
+		
+		switch (current_task) {
+		case FIX_ENTER_HIBERNATE:
+			KS_Unistall();
+			//GPIO_SetWakeupByCurrentState(BT_BUTTON_GPIO);
+			YC_PWM_disable();
+			LED_all_shutdown();
+			IPC_WaitLpm();	/*<wait enter lpm,do nothing*/
+			while(1);
+			break;
+			
+		case FIX_ENTER_LPM:
+			if (g_variable.delay_enter_lpm_timer ||g_variable.lockLpm ||g_variable.one_key_press_wait_release_timer
+			) 
+			{
+				IPC_AbandonLpm();
+				break;
+			}
+			else
+			{
+				KS_Unistall();
+				if(g_variable.g24_long_sleep_flag)
+				{
+					YC_PWM_disable();
+					LED_all_shutdown();
+				}	
+				IPC_WaitLpm();	/*<wait enter lpm,do nothing*/
+				break;
+			}
+		}
+	}
+}
+
Index: type.h
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/type.h	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/type.h	(working copy)
@@ -0,0 +1,25 @@
+#ifndef _YC_DEFINE_H_
+#define _YC_DEFINE_H_
+
+#define PUBLIC 
+#define LOCAL static
+
+typedef unsigned char byte;
+typedef unsigned char idata ibyte;
+typedef volatile unsigned char xdata xbyte;
+typedef volatile unsigned short xdata xword;
+typedef unsigned char xdata * pxbyte;
+typedef unsigned char xdata * data pxdbyte;
+typedef unsigned   short   word;
+typedef unsigned   long    ulong;
+typedef signed     long    s32_t;
+typedef bit bool;
+
+#define true 1
+#define false 0
+#ifndef NULL
+#define NULL (0)
+#endif
+
+#endif
+
Index: util/DeleteNote.pl
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/util/DeleteNote.pl	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/util/DeleteNote.pl	(working copy)
@@ -0,0 +1,27 @@
+
+#print "输入注释的标志:";
+
+#chomp ($text = <STDIN>);
+
+#print $text;
+
+###########################
+#该脚本的功能为删除，#为注释的注释代码。
+
+$Sched_path=$ARGV[0];
+
+open(Sched,$Sched_path)||die("Cannot open files\n");
+@sched=<Sched>;
+close(Sched);
+
+foreach $sched(@sched)
+{
+	$sched_begin = $sched;
+	@Sched = split(/[#]+/, $sched);
+	chomp @Sched[0];
+	$sched = @Sched[0]."\n";
+}
+
+open(Sched,">$Sched_path")||die("Cannot open files\n");
+print Sched @sched;
+close(Sched);
Index: util/crc16.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: util/crc16.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: util/crc16.pl
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/util/crc16.pl	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/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: util/eeprom2bin.pl
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/util/eeprom2bin.pl	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/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: util/eeprom2fulleeprom.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: util/eeprom2fulleeprom.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: util/eeprom2fulleeprom.pl
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/util/eeprom2fulleeprom.pl	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/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: util/hex2mif.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: util/hex2mif.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: util/hex2mif.pl
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/util/hex2mif.pl	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/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: util/memalloc.pl
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/util/memalloc.pl	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/util/memalloc.pl	(working copy)
@@ -0,0 +1,74 @@
+#!/usr/bin/perl
+$path="output/bt_format.meta";
+open file, $path;
+@f = <file>;
+close file;
+open file, ">$path";
+$path =~ s/\/.*//;
+open file1, ">output/memmap.format";
+$xaddr = 0x4000;
+$addr = 0;
+if($#ARGV == 1) {
+	$addr = hex($ARGV[0]);
+	$xaddr = hex($ARGV[1]);
+}
+for($i = 0;$i < @f;$i++) { $cmalloc[$i] = (); }
+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*$/);
+	$start = 10 + $1 if(/^\s*cmemalloc\s+([0-9])\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*$/) {
+			if(@ostr > 0) {
+				if($start == 3) {
+					push @omalloc,[@ostr];
+				} elsif($start > 9) {
+					$j = $start - 10;
+					push @{$cmalloc[$j]},@ostr;
+				} 
+			}
+			$start = 0;
+			@ostr = ();
+		}
+	} else {
+		$sstr .= $_;
+	}
+}
+for($i = 0;$i <= $#cmalloc;$i++) {
+	push @omalloc,$cmalloc[$i];
+#	for($j = 0;$j <= $#{$cmalloc[$i]};$j++) {		print $cmalloc[$i][$j];	}
+}
+
+$xend = $xaddr;
+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: util/mergepatch.pl
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/util/mergepatch.pl	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/util/mergepatch.pl	(working copy)
@@ -0,0 +1,44 @@
+#!/usr/bin/perl
+$defs = "";
+$fmt = 0;
+
+
+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 =~ /(^|\s)$1(\s|$)/ ? 1 : 0) & $valid[$#valid];
+		} elsif(/^ifndef\s+(\w+)\s*/) {
+			push @valid, ($defs =~ /(^|\s)$1(\s|$)/ ? 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 {
+				print file $_;
+			}
+		}
+	}
+	close file;
+}
+
+parseif("output/bt_program23.meta");
+$fmt = 1;
+parseif("output/bt_format.meta");
+
+
Index: util/sortsched.pl
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/util/sortsched.pl	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/util/sortsched.pl	(working copy)
@@ -0,0 +1,163 @@
+
+
+$Sched_path=$ARGV[0];
+$Sched_test_path=$ARGV[1];
+
+open(Sched,"$Sched_path")||die("Cannot open files1\n");
+@sched=<Sched>;
+@sched[-1] = "";
+close(Sched);
+#open(Sched_test,">ResultsFile.rom")||die("Cannot open files2\n");
+#print Sched_test ("");
+#close (Sched_test);
+#open(Sched_test,">ResultsFile.rom")||die("Cannot open file3s\n");
+open(Sched_test1,">$Sched_test_path")||die("Cannot open files4\n");
+#@Sched_test=<Sched_test>;
+@Data[0]="";
+$Data_num=0;
+@Address_num;
+@OriginalRecord;
+foreach $sched (@sched)
+{
+	if($sched=~/[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]:/)
+	{
+		#$lap_flag = 0;
+		#$le_lap_flag = 0;
+		#if($sched=~/40a0:/)
+		#{
+		#	$lap_data = $sched;
+		#	$lap_flag = 1;
+		#}
+		#elsif($sched =~ /44a0:/)
+		#{
+		#	$le_lap_data = $sched;
+		#	$le_lap_flag = 1;
+		#}
+		#else
+		#{
+			$Data_num++;
+			@OriginalRecord[$Data_num]=$sched;
+			@snap_variable=split(/[#\n]/,$sched);
+			@Data[$Data_num]=@snap_variable[0]."\n";
+		#}
+	}
+	else
+	{
+		#if($lap_flag == 1)
+		#{
+		#	$lap_data .= $sched;
+		#}
+		#elsif($le_lap_flag == 1)
+		#{
+		#	$le_lap_data .= $sched;
+		#}
+		#else
+		#{
+			@OriginalRecord[$Data_num].=$sched;
+			@snap_variable=split(/[#\n]/,$sched);
+			@Data[$Data_num].=@snap_variable[0]."\n";
+		#}
+	}
+}
+@sort_Data = sort(@Data);
+@OriginalRecord=sort(@OriginalRecord);
+$PreviousADDR=0;
+$CurrentADDR=0;
+$PreviousData="";
+$CurrentData="";
+$I=0;
+$len_sort_Data=@sort_Data;
+$NextADDR="";
+for($i=0;$i<$len_sort_Data;$i++)
+{
+	$sort_Data=@sort_Data[$i];
+	@snap_variable=split(/:/,$sort_Data);
+	$WData=@snap_variable[1];
+	
+	if($WData =~ /[1-9a-fA-F]/ && hex(@snap_variable[0]) >= 16384){
+	$WADDR=@snap_variable[0];
+	@sort_Data[$i]=@OriginalRecord[$i];
+	@LLL[$i]=0;
+	if($NextADDR eq $WADDR){
+		@snap_variable=split(/[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]:/,@OriginalRecord[$i]);
+		@sort_Data[$i]=@snap_variable[1];
+		@LLL[$i]=1;
+	}
+	if(@LLL[$i]==0 && hex($PreviousADDR)+6>hex($WADDR)){
+		$LEN=hex($WADDR) - hex($NextADDR);
+		#print $LEN;
+		for($j=0;$j<$LEN;$j++)
+		{
+			@sort_Data[$i-1].="00 "
+		}
+		@sort_Data[$i-1].="\n";
+		@snap_variable=split(/[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]:/,@OriginalRecord[$i]);
+		@sort_Data[$i]=@snap_variable[1];
+		@LLL[$i]=1;
+	}
+	if($PreviousADDR eq $WADDR){
+		@sort_Data[$i-1]="";
+		if(@LLL[$i-1]==1){
+			@snap_variable=split(/[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]:/,@OriginalRecord[$i]);
+			@sort_Data[$i]=@snap_variable[1];
+			@LLL[$i]=1;
+		}
+	}
+	else{
+		@DataNum=split(/[0-9a-fA-F][0-9a-fA-F]/,$WData);
+		$DataNum=@DataNum;
+		$PreviousADDR=$WADDR;
+		#@sort_Data[$i].="      ".$DataNum."\n";
+		$NextADDR = &hex_add($WADDR,$DataNum);
+	}
+	}
+	else{
+		if(hex(@snap_variable[0]) >= 16384)
+		{
+			@sort_Data[$i]="";
+		}
+	}
+	#@sort_Data[$i].="      ".$NextADDR."\n";
+	#$sort_Data =~ s/\n//;
+	#$sort_Data.="\n";
+}
+#print Sched_test @OriginalRecord;
+#print Sched_test1 $lap_data;
+#print Sched_test1 $le_lap_data;
+print Sched_test1 @sort_Data;
+#print  $lap_data;
+#print  $le_lap_data;
+#for($i=0;$i<$len_sort_Data;$i++)
+#foreach $sort_Data (@sort_Data)
+#{	
+	#$sort_Data=@sort_Data[$i];
+	#print Sched_test $PreviousData;
+	#@snap_variable=split(/:/,$sort_Data);
+	#$CurrentADDR=@snap_variable[0];
+	#$CurrentData=$sort_Data;
+	#print ($CurrentADDR);
+	#if($CurrentADDR-$PreviousADDR==1)
+	#{
+	#	$CurrentVal=@snap_variable[1];
+	#	@snap_variable=split(/\n/,$PreviousData);
+		
+	#	$PreviousData.=" ".$CurrentVal;
+	#	$CurrentData=$PreviousData;
+	#	@sort_Data[$i]="";
+	#	@sort_Data[$i-1]=$CurrentData;
+		#print ($CurrentData."\n");
+	#}
+	#$PreviousADDR=$CurrentADDR;
+	#$PreviousData=$CurrentData;
+	#print Sched_test $CurrentData;
+#}
+#print Sched_test @sort_Data;
+#close(Sched_test);
+close(Sched_test1);
+
+sub hex_add{
+	my($ADDR,$Len)=@_;
+	$data=hex($ADDR);
+	$data=$data+$Len-1;
+	return(sprintf("%04x",$data));
+}
\ No newline at end of file
Index: util/transform_memmap2btreg.pl
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/util/transform_memmap2btreg.pl	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/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: util/transform_name2addr.exe
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: util/transform_name2addr.exe
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: util/transform_name2addr.pl
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/util/transform_name2addr.pl	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/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: utilities.h
===================================================================
--- /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/utilities.h	(nonexistent)
+++ /YJX_KB_Project/1026_KB/Mechanical Keyboard/mk_61/c51/utilities.h	(working copy)
@@ -0,0 +1,24 @@
+#ifndef _YC_UTILITIES_H_
+#define _YC_UTILITIES_H_
+#include "common.h"
+
+#define MAX(a,b) ((a)>(b)?(a):(b))
+
+/*==============Set a breakpoint function
+no input:
+no output
+====================*/
+void YC_Ice_break();
+
+void dmemcpy(byte *dest, byte* src, word len) ;
+
+void xmemcpy(pxbyte dest, byte* src, byte len);
+
+void Delay1ms(byte Time);
+
+void YC_DelayNOP(byte num);
+
+void xmemclear(byte *dest, word len);
+void xmemclear_ff(byte *dest, word len);
+byte compare_str(byte * str1,byte * str2,byte len);
+#endif
