
_main:

;subamp452.c,20 :: 		void main()
;subamp452.c,22 :: 		init_system();
	CALL        _init_system+0, 0
;subamp452.c,23 :: 		rotary_value = 0;
	CLRF        _rotary_value+0 
;subamp452.c,24 :: 		draw_homescreen();
	CALL        _draw_homescreen+0, 0
;subamp452.c,25 :: 		}
L_end_main:
	GOTO        $+0
; end of _main

_update_tone_control:

;subamp452.c,28 :: 		void update_tone_control(unsigned char tone_command)
;subamp452.c,30 :: 		I2C1_Start();
	CALL        _I2C1_Start+0, 0
;subamp452.c,31 :: 		I2C1_Wr(0x80);
	MOVLW       128
	MOVWF       FARG_I2C1_Wr_data_+0 
	CALL        _I2C1_Wr+0, 0
;subamp452.c,32 :: 		I2C1_Wr(tone_command);
	MOVF        FARG_update_tone_control_tone_command+0, 0 
	MOVWF       FARG_I2C1_Wr_data_+0 
	CALL        _I2C1_Wr+0, 0
;subamp452.c,33 :: 		I2C1_Stop();
	CALL        _I2C1_Stop+0, 0
;subamp452.c,34 :: 		return;
;subamp452.c,35 :: 		}
L_end_update_tone_control:
	RETURN      0
; end of _update_tone_control

_update_bass_processor:

;subamp452.c,38 :: 		void update_bass_processor(unsigned char bass_command)
;subamp452.c,40 :: 		unsigned char port_b_state, pos = 8;
	MOVLW       8
	MOVWF       update_bass_processor_pos_L0+0 
;subamp452.c,41 :: 		while(pos > 0)
L_update_bass_processor0:
	MOVF        update_bass_processor_pos_L0+0, 0 
	SUBLW       0
	BTFSC       STATUS+0, 0 
	GOTO        L_update_bass_processor1
;subamp452.c,43 :: 		port_b_state = (0x1F & PORTB);
	MOVLW       31
	ANDWF       PORTB+0, 0 
	MOVWF       R4 
;subamp452.c,44 :: 		port_b_state |= (bass_command & (1 << (pos -1))) > 0 ? 0x40 : 0x00;
	DECF        update_bass_processor_pos_L0+0, 0 
	MOVWF       R0 
	CLRF        R1 
	MOVLW       0
	SUBWFB      R1, 1 
	MOVF        R0, 0 
	MOVWF       R2 
	MOVLW       1
	MOVWF       R0 
	MOVLW       0
	MOVWF       R1 
	MOVF        R2, 0 
L__update_bass_processor164:
	BZ          L__update_bass_processor165
	RLCF        R0, 1 
	BCF         R0, 0 
	RLCF        R1, 1 
	ADDLW       255
	GOTO        L__update_bass_processor164
L__update_bass_processor165:
	MOVF        R0, 0 
	ANDWF       FARG_update_bass_processor_bass_command+0, 0 
	MOVWF       R2 
	MOVLW       0
	ANDWF       R1, 0 
	MOVWF       R3 
	MOVLW       128
	MOVWF       R0 
	MOVLW       128
	XORWF       R3, 0 
	SUBWF       R0, 0 
	BTFSS       STATUS+0, 2 
	GOTO        L__update_bass_processor166
	MOVF        R2, 0 
	SUBLW       0
L__update_bass_processor166:
	BTFSC       STATUS+0, 0 
	GOTO        L_update_bass_processor2
	MOVLW       64
	MOVWF       R0 
	GOTO        L_update_bass_processor3
L_update_bass_processor2:
	CLRF        R0 
L_update_bass_processor3:
	MOVF        R4, 0 
	IORWF       R0, 1 
	MOVF        R0, 0 
	MOVWF       R4 
;subamp452.c,45 :: 		PORTB = port_b_state;
	MOVF        R0, 0 
	MOVWF       PORTB+0 
;subamp452.c,46 :: 		Delay_ms(5);
	MOVLW       13
	MOVWF       R12, 0
	MOVLW       251
	MOVWF       R13, 0
L_update_bass_processor4:
	DECFSZ      R13, 1, 1
	BRA         L_update_bass_processor4
	DECFSZ      R12, 1, 1
	BRA         L_update_bass_processor4
	NOP
	NOP
;subamp452.c,48 :: 		port_b_state |= 0x20;
	MOVLW       32
	IORWF       R4, 0 
	MOVWF       R0 
	MOVF        R0, 0 
	MOVWF       R4 
;subamp452.c,49 :: 		PORTB = port_b_state;
	MOVF        R0, 0 
	MOVWF       PORTB+0 
;subamp452.c,50 :: 		Delay_ms(5);
	MOVLW       13
	MOVWF       R12, 0
	MOVLW       251
	MOVWF       R13, 0
L_update_bass_processor5:
	DECFSZ      R13, 1, 1
	BRA         L_update_bass_processor5
	DECFSZ      R12, 1, 1
	BRA         L_update_bass_processor5
	NOP
	NOP
;subamp452.c,52 :: 		pos--;
	DECF        update_bass_processor_pos_L0+0, 1 
;subamp452.c,53 :: 		}
	GOTO        L_update_bass_processor0
L_update_bass_processor1:
;subamp452.c,55 :: 		PORTB = (PORTB & 0x1F) | 0xA0;
	MOVLW       31
	ANDWF       PORTB+0, 0 
	MOVWF       R0 
	MOVLW       160
	IORWF       R0, 0 
	MOVWF       PORTB+0 
;subamp452.c,56 :: 		return;
;subamp452.c,57 :: 		}
L_end_update_bass_processor:
	RETURN      0
; end of _update_bass_processor

_update_mute_state:

;subamp452.c,60 :: 		void update_mute_state(unsigned char is_mute)
;subamp452.c,62 :: 		update_tone_control((is_mute == TRUE) ? 0x9F : 0x80);
	MOVF        FARG_update_mute_state_is_mute+0, 0 
	XORLW       255
	BTFSS       STATUS+0, 2 
	GOTO        L_update_mute_state6
	MOVLW       159
	MOVWF       R0 
	GOTO        L_update_mute_state7
L_update_mute_state6:
	MOVLW       128
	MOVWF       R0 
L_update_mute_state7:
	MOVF        R0, 0 
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,63 :: 		asm nop;
	NOP
;subamp452.c,64 :: 		update_tone_control((is_mute == TRUE) ? 0xBF : 0xA0);
	MOVF        FARG_update_mute_state_is_mute+0, 0 
	XORLW       255
	BTFSS       STATUS+0, 2 
	GOTO        L_update_mute_state8
	MOVLW       191
	MOVWF       R0 
	GOTO        L_update_mute_state9
L_update_mute_state8:
	MOVLW       160
	MOVWF       R0 
L_update_mute_state9:
	MOVF        R0, 0 
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,65 :: 		}
L_end_update_mute_state:
	RETURN      0
; end of _update_mute_state

_draw_system_volume:

;subamp452.c,67 :: 		void draw_system_volume()
;subamp452.c,69 :: 		if(audio_mute == TRUE)
	MOVF        _audio_mute+0, 0 
	XORLW       255
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_system_volume10
;subamp452.c,70 :: 		Lcd_Out(1, 1, "   Audio Mute   ");
	MOVLW       1
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       1
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr1_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr1_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
	GOTO        L_draw_system_volume11
L_draw_system_volume10:
;subamp452.c,73 :: 		Lcd_Out(1, 1, "Volume: ");
	MOVLW       1
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       1
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr2_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr2_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,74 :: 		lcd_print_value(1, 9, (MAX_VOLUME_LIMIT - vol_lvl));
	MOVLW       1
	MOVWF       FARG_lcd_print_value_row+0 
	MOVLW       9
	MOVWF       FARG_lcd_print_value_col+0 
	MOVF        _vol_lvl+0, 0 
	SUBLW       63
	MOVWF       FARG_lcd_print_value_value+0 
	CALL        _lcd_print_value+0, 0
;subamp452.c,75 :: 		}
L_draw_system_volume11:
;subamp452.c,76 :: 		}
L_end_draw_system_volume:
	RETURN      0
; end of _draw_system_volume

_lcd_print_value:

;subamp452.c,79 :: 		void lcd_print_value(char row, char col, unsigned char value)
;subamp452.c,81 :: 		char output_buffer[9], scan_pos = 0;
	CLRF        lcd_print_value_scan_pos_L0+0 
;subamp452.c,82 :: 		ByteToStr(value, output_buffer);
	MOVF        FARG_lcd_print_value_value+0, 0 
	MOVWF       FARG_ByteToStr_input+0 
	MOVLW       lcd_print_value_output_buffer_L0+0
	MOVWF       FARG_ByteToStr_output+0 
	MOVLW       hi_addr(lcd_print_value_output_buffer_L0+0)
	MOVWF       FARG_ByteToStr_output+1 
	CALL        _ByteToStr+0, 0
;subamp452.c,83 :: 		while(scan_pos < 9)
L_lcd_print_value12:
	MOVLW       9
	SUBWF       lcd_print_value_scan_pos_L0+0, 0 
	BTFSC       STATUS+0, 0 
	GOTO        L_lcd_print_value13
;subamp452.c,86 :: 		if(scan_pos >= 0x03)
	MOVLW       3
	SUBWF       lcd_print_value_scan_pos_L0+0, 0 
	BTFSS       STATUS+0, 0 
	GOTO        L_lcd_print_value14
;subamp452.c,87 :: 		output_buffer[scan_pos] = 0x20;
	MOVLW       lcd_print_value_output_buffer_L0+0
	MOVWF       FSR1 
	MOVLW       hi_addr(lcd_print_value_output_buffer_L0+0)
	MOVWF       FSR1H 
	MOVF        lcd_print_value_scan_pos_L0+0, 0 
	ADDWF       FSR1, 1 
	BTFSC       STATUS+0, 0 
	INCF        FSR1H, 1 
	MOVLW       32
	MOVWF       POSTINC1+0 
L_lcd_print_value14:
;subamp452.c,88 :: 		scan_pos++;
	INCF        lcd_print_value_scan_pos_L0+0, 1 
;subamp452.c,89 :: 		}
	GOTO        L_lcd_print_value12
L_lcd_print_value13:
;subamp452.c,91 :: 		Lcd_Out(row, col, output_buffer);
	MOVF        FARG_lcd_print_value_row+0, 0 
	MOVWF       FARG_Lcd_Out_row+0 
	MOVF        FARG_lcd_print_value_col+0, 0 
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       lcd_print_value_output_buffer_L0+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(lcd_print_value_output_buffer_L0+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,92 :: 		return;
;subamp452.c,93 :: 		}
L_end_lcd_print_value:
	RETURN      0
; end of _lcd_print_value

_draw_homescreen:

;subamp452.c,95 :: 		void draw_homescreen()
;subamp452.c,97 :: 		unsigned char portb_state = (PORTB & 0xFC), tmp_mute;
	MOVLW       252
	ANDWF       PORTB+0, 0 
	MOVWF       draw_homescreen_portb_state_L0+0 
;subamp452.c,99 :: 		timeout_counter = TIMEOUT_LIMIT;
	MOVLW       0
	MOVWF       _timeout_counter+0 
	MOVLW       3
	MOVWF       _timeout_counter+1 
;subamp452.c,100 :: 		rotary_value = last_rotary_value = vol_lvl;
	MOVF        _vol_lvl+0, 0 
	MOVWF       _last_rotary_value+0 
	MOVF        _vol_lvl+0, 0 
	MOVWF       _rotary_value+0 
;subamp452.c,101 :: 		Lcd_Cmd(_LCD_CLEAR);
	MOVLW       1
	MOVWF       FARG_Lcd_Cmd_out_char+0 
	CALL        _Lcd_Cmd+0, 0
;subamp452.c,103 :: 		while(1)
L_draw_homescreen15:
;subamp452.c,105 :: 		if(((PORTB & 0x08) == 0x08) && ((portb_state & 0x08) == 0x00))
	MOVLW       8
	ANDWF       PORTB+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       8
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_homescreen19
	MOVLW       8
	ANDWF       draw_homescreen_portb_state_L0+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       0
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_homescreen19
L__draw_homescreen157:
;subamp452.c,108 :: 		if((sys_state & 0x01) == 0x01)
	MOVLW       1
	ANDWF       _sys_state+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       1
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_homescreen20
;subamp452.c,111 :: 		update_mute_state(TRUE);
	MOVLW       255
	MOVWF       FARG_update_mute_state_is_mute+0 
	CALL        _update_mute_state+0, 0
;subamp452.c,112 :: 		Delay_ms(100);
	MOVLW       2
	MOVWF       R11, 0
	MOVLW       4
	MOVWF       R12, 0
	MOVLW       186
	MOVWF       R13, 0
L_draw_homescreen21:
	DECFSZ      R13, 1, 1
	BRA         L_draw_homescreen21
	DECFSZ      R12, 1, 1
	BRA         L_draw_homescreen21
	DECFSZ      R11, 1, 1
	BRA         L_draw_homescreen21
	NOP
;subamp452.c,114 :: 		PORTC = 0x00;
	CLRF        PORTC+0 
;subamp452.c,115 :: 		sys_state = 0x00;
	CLRF        _sys_state+0 
;subamp452.c,117 :: 		Lcd_Cmd(_LCD_CLEAR);
	MOVLW       1
	MOVWF       FARG_Lcd_Cmd_out_char+0 
	CALL        _Lcd_Cmd+0, 0
;subamp452.c,118 :: 		}
	GOTO        L_draw_homescreen22
L_draw_homescreen20:
;subamp452.c,122 :: 		update_mute_state(TRUE);
	MOVLW       255
	MOVWF       FARG_update_mute_state_is_mute+0 
	CALL        _update_mute_state+0, 0
;subamp452.c,123 :: 		Delay_ms(100);
	MOVLW       2
	MOVWF       R11, 0
	MOVLW       4
	MOVWF       R12, 0
	MOVLW       186
	MOVWF       R13, 0
L_draw_homescreen23:
	DECFSZ      R13, 1, 1
	BRA         L_draw_homescreen23
	DECFSZ      R12, 1, 1
	BRA         L_draw_homescreen23
	DECFSZ      R11, 1, 1
	BRA         L_draw_homescreen23
	NOP
;subamp452.c,125 :: 		PORTC = 0x03;
	MOVLW       3
	MOVWF       PORTC+0 
;subamp452.c,126 :: 		timeout_counter = TIMEOUT_LIMIT;
	MOVLW       0
	MOVWF       _timeout_counter+0 
	MOVLW       3
	MOVWF       _timeout_counter+1 
;subamp452.c,127 :: 		sys_state = 0x01;
	MOVLW       1
	MOVWF       _sys_state+0 
;subamp452.c,128 :: 		Delay_ms(500);
	MOVLW       6
	MOVWF       R11, 0
	MOVLW       19
	MOVWF       R12, 0
	MOVLW       173
	MOVWF       R13, 0
L_draw_homescreen24:
	DECFSZ      R13, 1, 1
	BRA         L_draw_homescreen24
	DECFSZ      R12, 1, 1
	BRA         L_draw_homescreen24
	DECFSZ      R11, 1, 1
	BRA         L_draw_homescreen24
	NOP
	NOP
;subamp452.c,130 :: 		audio_mute = FALSE;
	CLRF        _audio_mute+0 
;subamp452.c,131 :: 		update_mute_state(audio_mute);
	CLRF        FARG_update_mute_state_is_mute+0 
	CALL        _update_mute_state+0, 0
;subamp452.c,132 :: 		draw_system_volume();
	CALL        _draw_system_volume+0, 0
;subamp452.c,133 :: 		}
L_draw_homescreen22:
;subamp452.c,135 :: 		Delay_ms(50);
	MOVLW       130
	MOVWF       R12, 0
	MOVLW       221
	MOVWF       R13, 0
L_draw_homescreen25:
	DECFSZ      R13, 1, 1
	BRA         L_draw_homescreen25
	DECFSZ      R12, 1, 1
	BRA         L_draw_homescreen25
	NOP
	NOP
;subamp452.c,136 :: 		}
L_draw_homescreen19:
;subamp452.c,138 :: 		if((sys_state & 0x01) ==  0x01)
	MOVLW       1
	ANDWF       _sys_state+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       1
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_homescreen26
;subamp452.c,140 :: 		if(((PORTB & 0x04) == 0x04) && ((portb_state & 0x04) == 0x00))
	MOVLW       4
	ANDWF       PORTB+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       4
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_homescreen29
	MOVLW       4
	ANDWF       draw_homescreen_portb_state_L0+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       0
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_homescreen29
L__draw_homescreen156:
;subamp452.c,143 :: 		timeout_counter = TIMEOUT_LIMIT;
	MOVLW       0
	MOVWF       _timeout_counter+0 
	MOVLW       3
	MOVWF       _timeout_counter+1 
;subamp452.c,144 :: 		PORTC |= 0x02;
	BSF         PORTC+0, 1 
;subamp452.c,145 :: 		sys_state &= 0xFD;
	MOVLW       253
	ANDWF       _sys_state+0, 1 
;subamp452.c,146 :: 		Delay_ms(10);
	MOVLW       26
	MOVWF       R12, 0
	MOVLW       248
	MOVWF       R13, 0
L_draw_homescreen30:
	DECFSZ      R13, 1, 1
	BRA         L_draw_homescreen30
	DECFSZ      R12, 1, 1
	BRA         L_draw_homescreen30
	NOP
;subamp452.c,148 :: 		draw_setupscreen();
	CALL        _draw_setupscreen+0, 0
;subamp452.c,150 :: 		timeout_counter = TIMEOUT_LIMIT;
	MOVLW       0
	MOVWF       _timeout_counter+0 
	MOVLW       3
	MOVWF       _timeout_counter+1 
;subamp452.c,151 :: 		Lcd_Cmd(_LCD_CLEAR);
	MOVLW       1
	MOVWF       FARG_Lcd_Cmd_out_char+0 
	CALL        _Lcd_Cmd+0, 0
;subamp452.c,152 :: 		draw_system_volume();
	CALL        _draw_system_volume+0, 0
;subamp452.c,153 :: 		}
L_draw_homescreen29:
;subamp452.c,155 :: 		if(((PORTB & 0x10) == 0x10) && ((portb_state & 0x10) == 0x00))
	MOVLW       16
	ANDWF       PORTB+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       16
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_homescreen33
	MOVLW       16
	ANDWF       draw_homescreen_portb_state_L0+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       0
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_homescreen33
L__draw_homescreen155:
;subamp452.c,158 :: 		audio_mute = ~audio_mute;
	COMF        _audio_mute+0, 0 
	MOVWF       R0 
	MOVF        R0, 0 
	MOVWF       _audio_mute+0 
;subamp452.c,159 :: 		update_mute_state(audio_mute);
	MOVF        R0, 0 
	MOVWF       FARG_update_mute_state_is_mute+0 
	CALL        _update_mute_state+0, 0
;subamp452.c,160 :: 		PORTC |= 0x02;
	BSF         PORTC+0, 1 
;subamp452.c,161 :: 		timeout_counter = TIMEOUT_LIMIT;
	MOVLW       0
	MOVWF       _timeout_counter+0 
	MOVLW       3
	MOVWF       _timeout_counter+1 
;subamp452.c,162 :: 		sys_state &= 0xFD;
	MOVLW       253
	ANDWF       _sys_state+0, 1 
;subamp452.c,163 :: 		Delay_ms(10);
	MOVLW       26
	MOVWF       R12, 0
	MOVLW       248
	MOVWF       R13, 0
L_draw_homescreen34:
	DECFSZ      R13, 1, 1
	BRA         L_draw_homescreen34
	DECFSZ      R12, 1, 1
	BRA         L_draw_homescreen34
	NOP
;subamp452.c,165 :: 		Lcd_Cmd(_LCD_CLEAR);
	MOVLW       1
	MOVWF       FARG_Lcd_Cmd_out_char+0 
	CALL        _Lcd_Cmd+0, 0
;subamp452.c,166 :: 		draw_system_volume();
	CALL        _draw_system_volume+0, 0
;subamp452.c,167 :: 		}
L_draw_homescreen33:
;subamp452.c,169 :: 		if(rotary_value != last_rotary_value)
	MOVF        _rotary_value+0, 0 
	XORWF       _last_rotary_value+0, 0 
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_homescreen35
;subamp452.c,171 :: 		PORTC |= 0x02;
	BSF         PORTC+0, 1 
;subamp452.c,172 :: 		sys_state &= 0xFD;
	MOVLW       253
	ANDWF       _sys_state+0, 1 
;subamp452.c,173 :: 		timeout_counter = TIMEOUT_LIMIT;
	MOVLW       0
	MOVWF       _timeout_counter+0 
	MOVLW       3
	MOVWF       _timeout_counter+1 
;subamp452.c,176 :: 		if(rotary_value > MAX_VOLUME_LIMIT)
	MOVF        _rotary_value+0, 0 
	SUBLW       63
	BTFSC       STATUS+0, 0 
	GOTO        L_draw_homescreen36
;subamp452.c,177 :: 		rotary_value = MAX_VOLUME_LIMIT;
	MOVLW       63
	MOVWF       _rotary_value+0 
L_draw_homescreen36:
;subamp452.c,179 :: 		update_tone_control(rotary_value & MAX_VOLUME_LIMIT);
	MOVLW       63
	ANDWF       _rotary_value+0, 0 
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,180 :: 		last_rotary_value = rotary_value;
	MOVF        _rotary_value+0, 0 
	MOVWF       _last_rotary_value+0 
;subamp452.c,181 :: 		vol_lvl = rotary_value;
	MOVF        _rotary_value+0, 0 
	MOVWF       _vol_lvl+0 
;subamp452.c,182 :: 		EEPROM_Write(0x00, vol_lvl);
	CLRF        FARG_EEPROM_Write_address+0 
	MOVF        _rotary_value+0, 0 
	MOVWF       FARG_EEPROM_Write_data_+0 
	CALL        _EEPROM_Write+0, 0
;subamp452.c,183 :: 		draw_system_volume();
	CALL        _draw_system_volume+0, 0
;subamp452.c,184 :: 		}
L_draw_homescreen35:
;subamp452.c,186 :: 		}
L_draw_homescreen26:
;subamp452.c,189 :: 		if(timeout_counter > 0)
	MOVLW       0
	MOVWF       R0 
	MOVF        _timeout_counter+1, 0 
	SUBWF       R0, 0 
	BTFSS       STATUS+0, 2 
	GOTO        L__draw_homescreen171
	MOVF        _timeout_counter+0, 0 
	SUBLW       0
L__draw_homescreen171:
	BTFSC       STATUS+0, 0 
	GOTO        L_draw_homescreen37
;subamp452.c,191 :: 		if((--timeout_counter) == 0x00)
	MOVLW       1
	SUBWF       _timeout_counter+0, 1 
	MOVLW       0
	SUBWFB      _timeout_counter+1, 1 
	MOVLW       0
	XORWF       _timeout_counter+1, 0 
	BTFSS       STATUS+0, 2 
	GOTO        L__draw_homescreen172
	MOVLW       0
	XORWF       _timeout_counter+0, 0 
L__draw_homescreen172:
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_homescreen38
;subamp452.c,193 :: 		Lcd_Cmd(_LCD_CLEAR);
	MOVLW       1
	MOVWF       FARG_Lcd_Cmd_out_char+0 
	CALL        _Lcd_Cmd+0, 0
;subamp452.c,194 :: 		PORTC &= 0xFD;
	MOVLW       253
	ANDWF       PORTC+0, 1 
;subamp452.c,195 :: 		sys_state |= 0x02;
	BSF         _sys_state+0, 1 
;subamp452.c,196 :: 		}
L_draw_homescreen38:
;subamp452.c,197 :: 		}
L_draw_homescreen37:
;subamp452.c,199 :: 		portb_state = (PORTB & 0xFC);
	MOVLW       252
	ANDWF       PORTB+0, 0 
	MOVWF       draw_homescreen_portb_state_L0+0 
;subamp452.c,200 :: 		Delay_ms(10);
	MOVLW       26
	MOVWF       R12, 0
	MOVLW       248
	MOVWF       R13, 0
L_draw_homescreen39:
	DECFSZ      R13, 1, 1
	BRA         L_draw_homescreen39
	DECFSZ      R12, 1, 1
	BRA         L_draw_homescreen39
	NOP
;subamp452.c,201 :: 		}
	GOTO        L_draw_homescreen15
;subamp452.c,204 :: 		}
L_end_draw_homescreen:
	RETURN      0
; end of _draw_homescreen

_draw_setupscreen:

;subamp452.c,206 :: 		void draw_setupscreen()
;subamp452.c,208 :: 		unsigned char portb_state = (PORTB & 0xFC);
	MOVLW       252
	ANDWF       PORTB+0, 0 
	MOVWF       draw_setupscreen_portb_state_L0+0 
;subamp452.c,209 :: 		unsigned char is_in_menu = TRUE, menu_pos, menu_control = 0x1;
	MOVLW       255
	MOVWF       draw_setupscreen_is_in_menu_L0+0 
	MOVLW       1
	MOVWF       draw_setupscreen_menu_control_L0+0 
;subamp452.c,211 :: 		timeout_counter = TIMEOUT_LIMIT;
	MOVLW       0
	MOVWF       _timeout_counter+0 
	MOVLW       3
	MOVWF       _timeout_counter+1 
;subamp452.c,212 :: 		Lcd_Cmd(_LCD_CLEAR);
	MOVLW       1
	MOVWF       FARG_Lcd_Cmd_out_char+0 
	CALL        _Lcd_Cmd+0, 0
;subamp452.c,215 :: 		menu_pos = rotary_value = 0;
	CLRF        _rotary_value+0 
	CLRF        draw_setupscreen_menu_pos_L0+0 
;subamp452.c,216 :: 		last_rotary_value = rotary_value + 1;
	MOVLW       1
	MOVWF       _last_rotary_value+0 
;subamp452.c,218 :: 		Lcd_Out(1, 1, "> System Options");
	MOVLW       1
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       1
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr3_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr3_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,220 :: 		while(menu_control)
L_draw_setupscreen40:
	MOVF        draw_setupscreen_menu_control_L0+0, 1 
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen41
;subamp452.c,223 :: 		if(((PORTB & 0x08) == 0x08) && ((portb_state & 0x08) == 0x00))
	MOVLW       8
	ANDWF       PORTB+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       8
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen44
	MOVLW       8
	ANDWF       draw_setupscreen_portb_state_L0+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       0
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen44
L__draw_setupscreen160:
;subamp452.c,226 :: 		update_mute_state(TRUE);
	MOVLW       255
	MOVWF       FARG_update_mute_state_is_mute+0 
	CALL        _update_mute_state+0, 0
;subamp452.c,227 :: 		Delay_ms(100);
	MOVLW       2
	MOVWF       R11, 0
	MOVLW       4
	MOVWF       R12, 0
	MOVLW       186
	MOVWF       R13, 0
L_draw_setupscreen45:
	DECFSZ      R13, 1, 1
	BRA         L_draw_setupscreen45
	DECFSZ      R12, 1, 1
	BRA         L_draw_setupscreen45
	DECFSZ      R11, 1, 1
	BRA         L_draw_setupscreen45
	NOP
;subamp452.c,229 :: 		PORTC = 0x00;
	CLRF        PORTC+0 
;subamp452.c,230 :: 		sys_state = 0x00;
	CLRF        _sys_state+0 
;subamp452.c,231 :: 		Lcd_Cmd(_LCD_CLEAR);
	MOVLW       1
	MOVWF       FARG_Lcd_Cmd_out_char+0 
	CALL        _Lcd_Cmd+0, 0
;subamp452.c,232 :: 		break;
	GOTO        L_draw_setupscreen41
;subamp452.c,233 :: 		}
L_draw_setupscreen44:
;subamp452.c,236 :: 		if(((PORTB & 0x10) == 0x10) && ((portb_state & 0x10) == 0x00))
	MOVLW       16
	ANDWF       PORTB+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       16
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen48
	MOVLW       16
	ANDWF       draw_setupscreen_portb_state_L0+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       0
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen48
L__draw_setupscreen159:
;subamp452.c,238 :: 		timeout_counter = TIMEOUT_LIMIT;
	MOVLW       0
	MOVWF       _timeout_counter+0 
	MOVLW       3
	MOVWF       _timeout_counter+1 
;subamp452.c,239 :: 		audio_mute = ~audio_mute;
	COMF        _audio_mute+0, 0 
	MOVWF       R0 
	MOVF        R0, 0 
	MOVWF       _audio_mute+0 
;subamp452.c,240 :: 		update_mute_state(audio_mute);
	MOVF        R0, 0 
	MOVWF       FARG_update_mute_state_is_mute+0 
	CALL        _update_mute_state+0, 0
;subamp452.c,241 :: 		Delay_ms(20);
	MOVLW       52
	MOVWF       R12, 0
	MOVLW       241
	MOVWF       R13, 0
L_draw_setupscreen49:
	DECFSZ      R13, 1, 1
	BRA         L_draw_setupscreen49
	DECFSZ      R12, 1, 1
	BRA         L_draw_setupscreen49
	NOP
	NOP
;subamp452.c,242 :: 		}
L_draw_setupscreen48:
;subamp452.c,245 :: 		INTCON &= 0x7F;
	MOVLW       127
	ANDWF       INTCON+0, 1 
;subamp452.c,247 :: 		if(last_rotary_value != rotary_value)
	MOVF        _last_rotary_value+0, 0 
	XORWF       _rotary_value+0, 0 
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen50
;subamp452.c,249 :: 		timeout_counter = TIMEOUT_LIMIT;
	MOVLW       0
	MOVWF       _timeout_counter+0 
	MOVLW       3
	MOVWF       _timeout_counter+1 
;subamp452.c,251 :: 		if(is_in_menu == TRUE)
	MOVF        draw_setupscreen_is_in_menu_L0+0, 0 
	XORLW       255
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen51
;subamp452.c,253 :: 		if(rotary_value > 8)
	MOVF        _rotary_value+0, 0 
	SUBLW       8
	BTFSC       STATUS+0, 0 
	GOTO        L_draw_setupscreen52
;subamp452.c,254 :: 		rotary_value = 8;
	MOVLW       8
	MOVWF       _rotary_value+0 
L_draw_setupscreen52:
;subamp452.c,257 :: 		switch(rotary_value)
	GOTO        L_draw_setupscreen53
;subamp452.c,259 :: 		case 0:
L_draw_setupscreen55:
;subamp452.c,260 :: 		Lcd_Out(2, 1, "  Bass:    ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       1
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr4_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr4_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,261 :: 		lcd_print_value(2, 8, bass_lvl);
	MOVLW       2
	MOVWF       FARG_lcd_print_value_row+0 
	MOVLW       8
	MOVWF       FARG_lcd_print_value_col+0 
	MOVF        _bass_lvl+0, 0 
	MOVWF       FARG_lcd_print_value_value+0 
	CALL        _lcd_print_value+0, 0
;subamp452.c,262 :: 		Lcd_Out(2, 11, "     ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       11
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr5_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr5_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,263 :: 		break;
	GOTO        L_draw_setupscreen54
;subamp452.c,264 :: 		case 1:
L_draw_setupscreen56:
;subamp452.c,265 :: 		Lcd_Out(2, 1, "  Tribble: ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       1
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr6_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr6_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,266 :: 		lcd_print_value(2, 11, trib_lvl);
	MOVLW       2
	MOVWF       FARG_lcd_print_value_row+0 
	MOVLW       11
	MOVWF       FARG_lcd_print_value_col+0 
	MOVF        _trib_lvl+0, 0 
	MOVWF       FARG_lcd_print_value_value+0 
	CALL        _lcd_print_value+0, 0
;subamp452.c,267 :: 		break;
	GOTO        L_draw_setupscreen54
;subamp452.c,268 :: 		case 2:
L_draw_setupscreen57:
;subamp452.c,269 :: 		Lcd_Out(2, 1, "  Loudness: ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       1
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr7_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr7_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,270 :: 		Lcd_Out(2, 13, (loudness == 0x00) ? "On " : "Off ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       13
	MOVWF       FARG_Lcd_Out_column+0 
	MOVF        _loudness+0, 0 
	XORLW       0
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen58
	MOVLW       ?lstr8_subamp452+0
	MOVWF       R0 
	MOVLW       hi_addr(?lstr8_subamp452+0)
	MOVWF       R1 
	GOTO        L_draw_setupscreen59
L_draw_setupscreen58:
	MOVLW       ?lstr9_subamp452+0
	MOVWF       R0 
	MOVLW       hi_addr(?lstr9_subamp452+0)
	MOVWF       R1 
L_draw_setupscreen59:
	MOVF        R0, 0 
	MOVWF       FARG_Lcd_Out_text+0 
	MOVF        R1, 0 
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,271 :: 		break;
	GOTO        L_draw_setupscreen54
;subamp452.c,272 :: 		case 3:
L_draw_setupscreen60:
;subamp452.c,273 :: 		Lcd_Out(2, 1, "  Balance: ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       1
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr10_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr10_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,274 :: 		switch(bal_lvl)
	GOTO        L_draw_setupscreen61
;subamp452.c,276 :: 		case 0x00:
L_draw_setupscreen63:
;subamp452.c,277 :: 		Lcd_Out(2, 12, "L      ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       12
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr11_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr11_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,278 :: 		break;
	GOTO        L_draw_setupscreen62
;subamp452.c,279 :: 		case 0x02:
L_draw_setupscreen64:
;subamp452.c,280 :: 		Lcd_Out(2, 12, "R      ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       12
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr12_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr12_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,281 :: 		break;
	GOTO        L_draw_setupscreen62
;subamp452.c,282 :: 		default:
L_draw_setupscreen65:
;subamp452.c,283 :: 		Lcd_Out(2, 12, "L+R    ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       12
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr13_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr13_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,284 :: 		}
	GOTO        L_draw_setupscreen62
L_draw_setupscreen61:
	MOVF        _bal_lvl+0, 0 
	XORLW       0
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen63
	MOVF        _bal_lvl+0, 0 
	XORLW       2
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen64
	GOTO        L_draw_setupscreen65
L_draw_setupscreen62:
;subamp452.c,285 :: 		break;
	GOTO        L_draw_setupscreen54
;subamp452.c,286 :: 		case 4:
L_draw_setupscreen66:
;subamp452.c,287 :: 		Lcd_Out(2, 1, "  Subwoofer: ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       1
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr14_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr14_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,288 :: 		Lcd_Out(2, 14, ((base_param & 0x80) == 0x80) ? "On " : "Off ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       14
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       128
	ANDWF       _base_param+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       128
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen67
	MOVLW       ?lstr15_subamp452+0
	MOVWF       R0 
	MOVLW       hi_addr(?lstr15_subamp452+0)
	MOVWF       R1 
	GOTO        L_draw_setupscreen68
L_draw_setupscreen67:
	MOVLW       ?lstr16_subamp452+0
	MOVWF       R0 
	MOVLW       hi_addr(?lstr16_subamp452+0)
	MOVWF       R1 
L_draw_setupscreen68:
	MOVF        R0, 0 
	MOVWF       FARG_Lcd_Out_text+0 
	MOVF        R1, 0 
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,289 :: 		break;
	GOTO        L_draw_setupscreen54
;subamp452.c,290 :: 		case 5:
L_draw_setupscreen69:
;subamp452.c,291 :: 		Lcd_Out(2, 1, "  Bass Mix: ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       1
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr17_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr17_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,292 :: 		Lcd_Out(2, 13, ((base_param & 0x20) == 0x20) ? "On " : "Off ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       13
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       32
	ANDWF       _base_param+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       32
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen70
	MOVLW       ?lstr18_subamp452+0
	MOVWF       R0 
	MOVLW       hi_addr(?lstr18_subamp452+0)
	MOVWF       R1 
	GOTO        L_draw_setupscreen71
L_draw_setupscreen70:
	MOVLW       ?lstr19_subamp452+0
	MOVWF       R0 
	MOVLW       hi_addr(?lstr19_subamp452+0)
	MOVWF       R1 
L_draw_setupscreen71:
	MOVF        R0, 0 
	MOVWF       FARG_Lcd_Out_text+0 
	MOVF        R1, 0 
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,293 :: 		break;
	GOTO        L_draw_setupscreen54
;subamp452.c,294 :: 		case 6:
L_draw_setupscreen72:
;subamp452.c,295 :: 		Lcd_Out(2, 1, "  Sub Gain: ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       1
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr20_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr20_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,296 :: 		lcd_print_value(2, 13, base_gain);
	MOVLW       2
	MOVWF       FARG_lcd_print_value_row+0 
	MOVLW       13
	MOVWF       FARG_lcd_print_value_col+0 
	MOVF        _base_gain+0, 0 
	MOVWF       FARG_lcd_print_value_value+0 
	CALL        _lcd_print_value+0, 0
;subamp452.c,297 :: 		break;
	GOTO        L_draw_setupscreen54
;subamp452.c,298 :: 		case 7:
L_draw_setupscreen73:
;subamp452.c,299 :: 		Lcd_Out(2, 1, "  Base Add: ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       1
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr21_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr21_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,300 :: 		lcd_print_value(2, 13, bass_add);
	MOVLW       2
	MOVWF       FARG_lcd_print_value_row+0 
	MOVLW       13
	MOVWF       FARG_lcd_print_value_col+0 
	MOVF        _bass_add+0, 0 
	MOVWF       FARG_lcd_print_value_value+0 
	CALL        _lcd_print_value+0, 0
;subamp452.c,301 :: 		break;
	GOTO        L_draw_setupscreen54
;subamp452.c,302 :: 		case 8:
L_draw_setupscreen74:
;subamp452.c,303 :: 		Lcd_Out(2, 1, "  Return       ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       1
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr22_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr22_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,304 :: 		break;
	GOTO        L_draw_setupscreen54
;subamp452.c,305 :: 		}
L_draw_setupscreen53:
	MOVF        _rotary_value+0, 0 
	XORLW       0
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen55
	MOVF        _rotary_value+0, 0 
	XORLW       1
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen56
	MOVF        _rotary_value+0, 0 
	XORLW       2
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen57
	MOVF        _rotary_value+0, 0 
	XORLW       3
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen60
	MOVF        _rotary_value+0, 0 
	XORLW       4
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen66
	MOVF        _rotary_value+0, 0 
	XORLW       5
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen69
	MOVF        _rotary_value+0, 0 
	XORLW       6
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen72
	MOVF        _rotary_value+0, 0 
	XORLW       7
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen73
	MOVF        _rotary_value+0, 0 
	XORLW       8
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen74
L_draw_setupscreen54:
;subamp452.c,307 :: 		menu_pos = rotary_value;
	MOVF        _rotary_value+0, 0 
	MOVWF       draw_setupscreen_menu_pos_L0+0 
;subamp452.c,308 :: 		}
	GOTO        L_draw_setupscreen75
L_draw_setupscreen51:
;subamp452.c,312 :: 		switch(menu_pos)
	GOTO        L_draw_setupscreen76
;subamp452.c,315 :: 		case 0:
L_draw_setupscreen78:
;subamp452.c,317 :: 		if(rotary_value > 0x0F)
	MOVF        _rotary_value+0, 0 
	SUBLW       15
	BTFSC       STATUS+0, 0 
	GOTO        L_draw_setupscreen79
;subamp452.c,318 :: 		rotary_value = 0x0F;
	MOVLW       15
	MOVWF       _rotary_value+0 
L_draw_setupscreen79:
;subamp452.c,319 :: 		update_tone_control(0x60 | ((rotary_value > 7) ? (rotary_value & 0x08) | ((~rotary_value) & 0x07) : rotary_value));
	MOVF        _rotary_value+0, 0 
	SUBLW       7
	BTFSC       STATUS+0, 0 
	GOTO        L_draw_setupscreen80
	MOVLW       8
	ANDWF       _rotary_value+0, 0 
	MOVWF       R1 
	COMF        _rotary_value+0, 0 
	MOVWF       R0 
	MOVLW       7
	ANDWF       R0, 1 
	MOVF        R1, 0 
	IORWF       R0, 1 
	GOTO        L_draw_setupscreen81
L_draw_setupscreen80:
	MOVF        _rotary_value+0, 0 
	MOVWF       R0 
L_draw_setupscreen81:
	MOVLW       96
	IORWF       R0, 0 
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,320 :: 		bass_lvl = rotary_value;
	MOVF        _rotary_value+0, 0 
	MOVWF       _bass_lvl+0 
;subamp452.c,321 :: 		lcd_print_value(2, 8, bass_lvl);
	MOVLW       2
	MOVWF       FARG_lcd_print_value_row+0 
	MOVLW       8
	MOVWF       FARG_lcd_print_value_col+0 
	MOVF        _rotary_value+0, 0 
	MOVWF       FARG_lcd_print_value_value+0 
	CALL        _lcd_print_value+0, 0
;subamp452.c,322 :: 		EEPROM_Write(0x01, bass_lvl);
	MOVLW       1
	MOVWF       FARG_EEPROM_Write_address+0 
	MOVF        _bass_lvl+0, 0 
	MOVWF       FARG_EEPROM_Write_data_+0 
	CALL        _EEPROM_Write+0, 0
;subamp452.c,323 :: 		break;
	GOTO        L_draw_setupscreen77
;subamp452.c,325 :: 		case 1:
L_draw_setupscreen82:
;subamp452.c,327 :: 		if(rotary_value > 0x0F)
	MOVF        _rotary_value+0, 0 
	SUBLW       15
	BTFSC       STATUS+0, 0 
	GOTO        L_draw_setupscreen83
;subamp452.c,328 :: 		rotary_value = 0x0F;
	MOVLW       15
	MOVWF       _rotary_value+0 
L_draw_setupscreen83:
;subamp452.c,329 :: 		update_tone_control(0x70 | ((rotary_value > 7) ? (rotary_value & 0x08) | ((~rotary_value) & 0x07) : rotary_value));
	MOVF        _rotary_value+0, 0 
	SUBLW       7
	BTFSC       STATUS+0, 0 
	GOTO        L_draw_setupscreen84
	MOVLW       8
	ANDWF       _rotary_value+0, 0 
	MOVWF       R1 
	COMF        _rotary_value+0, 0 
	MOVWF       R0 
	MOVLW       7
	ANDWF       R0, 1 
	MOVF        R1, 0 
	IORWF       R0, 1 
	GOTO        L_draw_setupscreen85
L_draw_setupscreen84:
	MOVF        _rotary_value+0, 0 
	MOVWF       R0 
L_draw_setupscreen85:
	MOVLW       112
	IORWF       R0, 0 
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,330 :: 		trib_lvl = rotary_value;
	MOVF        _rotary_value+0, 0 
	MOVWF       _trib_lvl+0 
;subamp452.c,331 :: 		EEPROM_Write(0x02, trib_lvl);
	MOVLW       2
	MOVWF       FARG_EEPROM_Write_address+0 
	MOVF        _rotary_value+0, 0 
	MOVWF       FARG_EEPROM_Write_data_+0 
	CALL        _EEPROM_Write+0, 0
;subamp452.c,332 :: 		lcd_print_value(2, 11, trib_lvl);
	MOVLW       2
	MOVWF       FARG_lcd_print_value_row+0 
	MOVLW       11
	MOVWF       FARG_lcd_print_value_col+0 
	MOVF        _trib_lvl+0, 0 
	MOVWF       FARG_lcd_print_value_value+0 
	CALL        _lcd_print_value+0, 0
;subamp452.c,333 :: 		break;
	GOTO        L_draw_setupscreen77
;subamp452.c,335 :: 		case 2:
L_draw_setupscreen86:
;subamp452.c,336 :: 		loudness = (loudness > 0) ? 0x00 : 0x04;
	MOVF        _loudness+0, 0 
	SUBLW       0
	BTFSC       STATUS+0, 0 
	GOTO        L_draw_setupscreen87
	CLRF        R0 
	GOTO        L_draw_setupscreen88
L_draw_setupscreen87:
	MOVLW       4
	MOVWF       R0 
L_draw_setupscreen88:
	MOVF        R0, 0 
	MOVWF       _loudness+0 
;subamp452.c,337 :: 		update_tone_control(0x40 | loudness);
	MOVLW       64
	IORWF       R0, 0 
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,338 :: 		if(rotary_value == 0xFF)
	MOVF        _rotary_value+0, 0 
	XORLW       255
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen89
;subamp452.c,339 :: 		rotary_value = 0;
	CLRF        _rotary_value+0 
L_draw_setupscreen89:
;subamp452.c,340 :: 		EEPROM_Write(0x03, loudness);
	MOVLW       3
	MOVWF       FARG_EEPROM_Write_address+0 
	MOVF        _loudness+0, 0 
	MOVWF       FARG_EEPROM_Write_data_+0 
	CALL        _EEPROM_Write+0, 0
;subamp452.c,341 :: 		Lcd_Out(2, 13, (loudness == 0x00) ? "On " : "Off ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       13
	MOVWF       FARG_Lcd_Out_column+0 
	MOVF        _loudness+0, 0 
	XORLW       0
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen90
	MOVLW       ?lstr23_subamp452+0
	MOVWF       R0 
	MOVLW       hi_addr(?lstr23_subamp452+0)
	MOVWF       R1 
	GOTO        L_draw_setupscreen91
L_draw_setupscreen90:
	MOVLW       ?lstr24_subamp452+0
	MOVWF       R0 
	MOVLW       hi_addr(?lstr24_subamp452+0)
	MOVWF       R1 
L_draw_setupscreen91:
	MOVF        R0, 0 
	MOVWF       FARG_Lcd_Out_text+0 
	MOVF        R1, 0 
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,342 :: 		break;
	GOTO        L_draw_setupscreen77
;subamp452.c,344 :: 		case 3:
L_draw_setupscreen92:
;subamp452.c,345 :: 		if(rotary_value > 0x03)
	MOVF        _rotary_value+0, 0 
	SUBLW       3
	BTFSC       STATUS+0, 0 
	GOTO        L_draw_setupscreen93
;subamp452.c,346 :: 		rotary_value = 0x03;
	MOVLW       3
	MOVWF       _rotary_value+0 
L_draw_setupscreen93:
;subamp452.c,347 :: 		switch(rotary_value)
	GOTO        L_draw_setupscreen94
;subamp452.c,350 :: 		case 0:
L_draw_setupscreen96:
;subamp452.c,351 :: 		update_tone_control(0x80);
	MOVLW       128
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,352 :: 		asm nop;
	NOP
;subamp452.c,353 :: 		update_tone_control(0xBF);
	MOVLW       191
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,354 :: 		Lcd_Out(2, 12, "L      ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       12
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr25_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr25_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,355 :: 		break;
	GOTO        L_draw_setupscreen95
;subamp452.c,357 :: 		case 2:
L_draw_setupscreen97:
;subamp452.c,358 :: 		update_tone_control(0xA0);
	MOVLW       160
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,359 :: 		asm nop;
	NOP
;subamp452.c,360 :: 		update_tone_control(0x9F);
	MOVLW       159
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,361 :: 		Lcd_Out(2, 12 , "R     ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       12
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr26_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr26_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,362 :: 		break;
	GOTO        L_draw_setupscreen95
;subamp452.c,364 :: 		default:
L_draw_setupscreen98:
;subamp452.c,365 :: 		update_tone_control(0xA0);
	MOVLW       160
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,366 :: 		asm nop;
	NOP
;subamp452.c,367 :: 		update_tone_control(0x80);
	MOVLW       128
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,368 :: 		Lcd_Out(2, 12, "L+R    ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       12
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       ?lstr27_subamp452+0
	MOVWF       FARG_Lcd_Out_text+0 
	MOVLW       hi_addr(?lstr27_subamp452+0)
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,369 :: 		}
	GOTO        L_draw_setupscreen95
L_draw_setupscreen94:
	MOVF        _rotary_value+0, 0 
	XORLW       0
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen96
	MOVF        _rotary_value+0, 0 
	XORLW       2
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen97
	GOTO        L_draw_setupscreen98
L_draw_setupscreen95:
;subamp452.c,370 :: 		bal_lvl = rotary_value;
	MOVF        _rotary_value+0, 0 
	MOVWF       _bal_lvl+0 
;subamp452.c,371 :: 		EEPROM_Write(0x04, bal_lvl);
	MOVLW       4
	MOVWF       FARG_EEPROM_Write_address+0 
	MOVF        _rotary_value+0, 0 
	MOVWF       FARG_EEPROM_Write_data_+0 
	CALL        _EEPROM_Write+0, 0
;subamp452.c,372 :: 		break;
	GOTO        L_draw_setupscreen77
;subamp452.c,374 :: 		case 4:
L_draw_setupscreen99:
;subamp452.c,375 :: 		base_param = ((base_param & 0x80) == 0x80) ? (base_param & 0x7F) : (base_param | 0x80);
	MOVLW       128
	ANDWF       _base_param+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       128
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen100
	MOVLW       127
	ANDWF       _base_param+0, 0 
	MOVWF       R0 
	MOVF        R0, 0 
	MOVWF       R1 
	GOTO        L_draw_setupscreen101
L_draw_setupscreen100:
	MOVLW       128
	IORWF       _base_param+0, 0 
	MOVWF       R0 
	MOVF        R0, 0 
	MOVWF       R1 
L_draw_setupscreen101:
	MOVF        R1, 0 
	MOVWF       _base_param+0 
;subamp452.c,376 :: 		update_bass_processor(base_param | bass_add | (base_gain << 3));
	MOVF        _bass_add+0, 0 
	IORWF       R1, 0 
	MOVWF       FARG_update_bass_processor_bass_command+0 
	MOVLW       3
	MOVWF       R2 
	MOVF        _base_gain+0, 0 
	MOVWF       R0 
	MOVLW       0
	MOVWF       R1 
	MOVF        R2, 0 
L__draw_setupscreen174:
	BZ          L__draw_setupscreen175
	RLCF        R0, 1 
	BCF         R0, 0 
	RLCF        R1, 1 
	ADDLW       255
	GOTO        L__draw_setupscreen174
L__draw_setupscreen175:
	MOVF        R0, 0 
	IORWF       FARG_update_bass_processor_bass_command+0, 1 
	CALL        _update_bass_processor+0, 0
;subamp452.c,377 :: 		if(rotary_value == 0xFF)
	MOVF        _rotary_value+0, 0 
	XORLW       255
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen102
;subamp452.c,378 :: 		rotary_value = 0;
	CLRF        _rotary_value+0 
L_draw_setupscreen102:
;subamp452.c,379 :: 		EEPROM_Write(0x07, base_param);
	MOVLW       7
	MOVWF       FARG_EEPROM_Write_address+0 
	MOVF        _base_param+0, 0 
	MOVWF       FARG_EEPROM_Write_data_+0 
	CALL        _EEPROM_Write+0, 0
;subamp452.c,380 :: 		Lcd_Out(2, 14, ((base_param & 0x80) == 0x80) ? "On " : "Off ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       14
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       128
	ANDWF       _base_param+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       128
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen103
	MOVLW       ?lstr28_subamp452+0
	MOVWF       R0 
	MOVLW       hi_addr(?lstr28_subamp452+0)
	MOVWF       R1 
	GOTO        L_draw_setupscreen104
L_draw_setupscreen103:
	MOVLW       ?lstr29_subamp452+0
	MOVWF       R0 
	MOVLW       hi_addr(?lstr29_subamp452+0)
	MOVWF       R1 
L_draw_setupscreen104:
	MOVF        R0, 0 
	MOVWF       FARG_Lcd_Out_text+0 
	MOVF        R1, 0 
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,381 :: 		break;
	GOTO        L_draw_setupscreen77
;subamp452.c,383 :: 		case 5:
L_draw_setupscreen105:
;subamp452.c,384 :: 		base_param = ((base_param & 0x20) == 0x20) ? (base_param & 0xDF) : (base_param | 0x20);
	MOVLW       32
	ANDWF       _base_param+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       32
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen106
	MOVLW       223
	ANDWF       _base_param+0, 0 
	MOVWF       R0 
	MOVF        R0, 0 
	MOVWF       R1 
	GOTO        L_draw_setupscreen107
L_draw_setupscreen106:
	MOVLW       32
	IORWF       _base_param+0, 0 
	MOVWF       R0 
	MOVF        R0, 0 
	MOVWF       R1 
L_draw_setupscreen107:
	MOVF        R1, 0 
	MOVWF       _base_param+0 
;subamp452.c,385 :: 		update_bass_processor(base_param | bass_add | (base_gain << 3));
	MOVF        _bass_add+0, 0 
	IORWF       R1, 0 
	MOVWF       FARG_update_bass_processor_bass_command+0 
	MOVLW       3
	MOVWF       R2 
	MOVF        _base_gain+0, 0 
	MOVWF       R0 
	MOVLW       0
	MOVWF       R1 
	MOVF        R2, 0 
L__draw_setupscreen176:
	BZ          L__draw_setupscreen177
	RLCF        R0, 1 
	BCF         R0, 0 
	RLCF        R1, 1 
	ADDLW       255
	GOTO        L__draw_setupscreen176
L__draw_setupscreen177:
	MOVF        R0, 0 
	IORWF       FARG_update_bass_processor_bass_command+0, 1 
	CALL        _update_bass_processor+0, 0
;subamp452.c,386 :: 		if(rotary_value == 0xFF)
	MOVF        _rotary_value+0, 0 
	XORLW       255
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen108
;subamp452.c,387 :: 		rotary_value = 0;
	CLRF        _rotary_value+0 
L_draw_setupscreen108:
;subamp452.c,388 :: 		EEPROM_Write(0x07, base_param);
	MOVLW       7
	MOVWF       FARG_EEPROM_Write_address+0 
	MOVF        _base_param+0, 0 
	MOVWF       FARG_EEPROM_Write_data_+0 
	CALL        _EEPROM_Write+0, 0
;subamp452.c,389 :: 		Lcd_Out(2, 13, ((base_param & 0x20) == 0x20) ? "On " : "Off ");
	MOVLW       2
	MOVWF       FARG_Lcd_Out_row+0 
	MOVLW       13
	MOVWF       FARG_Lcd_Out_column+0 
	MOVLW       32
	ANDWF       _base_param+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       32
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen109
	MOVLW       ?lstr30_subamp452+0
	MOVWF       R0 
	MOVLW       hi_addr(?lstr30_subamp452+0)
	MOVWF       R1 
	GOTO        L_draw_setupscreen110
L_draw_setupscreen109:
	MOVLW       ?lstr31_subamp452+0
	MOVWF       R0 
	MOVLW       hi_addr(?lstr31_subamp452+0)
	MOVWF       R1 
L_draw_setupscreen110:
	MOVF        R0, 0 
	MOVWF       FARG_Lcd_Out_text+0 
	MOVF        R1, 0 
	MOVWF       FARG_Lcd_Out_text+1 
	CALL        _Lcd_Out+0, 0
;subamp452.c,390 :: 		break;
	GOTO        L_draw_setupscreen77
;subamp452.c,392 :: 		case 6:
L_draw_setupscreen111:
;subamp452.c,394 :: 		if(rotary_value > 0x03)
	MOVF        _rotary_value+0, 0 
	SUBLW       3
	BTFSC       STATUS+0, 0 
	GOTO        L_draw_setupscreen112
;subamp452.c,395 :: 		rotary_value = 0x03;
	MOVLW       3
	MOVWF       _rotary_value+0 
L_draw_setupscreen112:
;subamp452.c,396 :: 		update_bass_processor(base_param | bass_add | (rotary_value << 3));
	MOVF        _bass_add+0, 0 
	IORWF       _base_param+0, 0 
	MOVWF       FARG_update_bass_processor_bass_command+0 
	MOVLW       3
	MOVWF       R2 
	MOVF        _rotary_value+0, 0 
	MOVWF       R0 
	MOVLW       0
	MOVWF       R1 
	MOVF        R2, 0 
L__draw_setupscreen178:
	BZ          L__draw_setupscreen179
	RLCF        R0, 1 
	BCF         R0, 0 
	RLCF        R1, 1 
	ADDLW       255
	GOTO        L__draw_setupscreen178
L__draw_setupscreen179:
	MOVF        R0, 0 
	IORWF       FARG_update_bass_processor_bass_command+0, 1 
	CALL        _update_bass_processor+0, 0
;subamp452.c,397 :: 		lcd_print_value(2, 13, rotary_value);
	MOVLW       2
	MOVWF       FARG_lcd_print_value_row+0 
	MOVLW       13
	MOVWF       FARG_lcd_print_value_col+0 
	MOVF        _rotary_value+0, 0 
	MOVWF       FARG_lcd_print_value_value+0 
	CALL        _lcd_print_value+0, 0
;subamp452.c,398 :: 		base_gain = rotary_value;
	MOVF        _rotary_value+0, 0 
	MOVWF       _base_gain+0 
;subamp452.c,399 :: 		EEPROM_Write(0x06, base_gain);
	MOVLW       6
	MOVWF       FARG_EEPROM_Write_address+0 
	MOVF        _rotary_value+0, 0 
	MOVWF       FARG_EEPROM_Write_data_+0 
	CALL        _EEPROM_Write+0, 0
;subamp452.c,400 :: 		break;
	GOTO        L_draw_setupscreen77
;subamp452.c,402 :: 		case 7:
L_draw_setupscreen113:
;subamp452.c,404 :: 		if(rotary_value > 0x07)
	MOVF        _rotary_value+0, 0 
	SUBLW       7
	BTFSC       STATUS+0, 0 
	GOTO        L_draw_setupscreen114
;subamp452.c,405 :: 		rotary_value = 0x07;
	MOVLW       7
	MOVWF       _rotary_value+0 
L_draw_setupscreen114:
;subamp452.c,406 :: 		update_bass_processor(base_param | rotary_value | (base_gain << 3));
	MOVF        _rotary_value+0, 0 
	IORWF       _base_param+0, 0 
	MOVWF       FARG_update_bass_processor_bass_command+0 
	MOVLW       3
	MOVWF       R2 
	MOVF        _base_gain+0, 0 
	MOVWF       R0 
	MOVLW       0
	MOVWF       R1 
	MOVF        R2, 0 
L__draw_setupscreen180:
	BZ          L__draw_setupscreen181
	RLCF        R0, 1 
	BCF         R0, 0 
	RLCF        R1, 1 
	ADDLW       255
	GOTO        L__draw_setupscreen180
L__draw_setupscreen181:
	MOVF        R0, 0 
	IORWF       FARG_update_bass_processor_bass_command+0, 1 
	CALL        _update_bass_processor+0, 0
;subamp452.c,407 :: 		lcd_print_value(2, 13, rotary_value);
	MOVLW       2
	MOVWF       FARG_lcd_print_value_row+0 
	MOVLW       13
	MOVWF       FARG_lcd_print_value_col+0 
	MOVF        _rotary_value+0, 0 
	MOVWF       FARG_lcd_print_value_value+0 
	CALL        _lcd_print_value+0, 0
;subamp452.c,408 :: 		bass_add = rotary_value;
	MOVF        _rotary_value+0, 0 
	MOVWF       _bass_add+0 
;subamp452.c,409 :: 		EEPROM_Write(0x05, bass_add);
	MOVLW       5
	MOVWF       FARG_EEPROM_Write_address+0 
	MOVF        _rotary_value+0, 0 
	MOVWF       FARG_EEPROM_Write_data_+0 
	CALL        _EEPROM_Write+0, 0
;subamp452.c,410 :: 		break;
	GOTO        L_draw_setupscreen77
;subamp452.c,411 :: 		}
L_draw_setupscreen76:
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	XORLW       0
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen78
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	XORLW       1
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen82
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	XORLW       2
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen86
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	XORLW       3
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen92
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	XORLW       4
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen99
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	XORLW       5
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen105
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	XORLW       6
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen111
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	XORLW       7
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen113
L_draw_setupscreen77:
;subamp452.c,412 :: 		}
L_draw_setupscreen75:
;subamp452.c,414 :: 		last_rotary_value = rotary_value;
	MOVF        _rotary_value+0, 0 
	MOVWF       _last_rotary_value+0 
;subamp452.c,415 :: 		}
L_draw_setupscreen50:
;subamp452.c,418 :: 		if(((PORTB & 0x04) == 0x04) && ((portb_state & 0x04) == 0x00))
	MOVLW       4
	ANDWF       PORTB+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       4
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen117
	MOVLW       4
	ANDWF       draw_setupscreen_portb_state_L0+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       0
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen117
L__draw_setupscreen158:
;subamp452.c,420 :: 		timeout_counter = TIMEOUT_LIMIT;
	MOVLW       0
	MOVWF       _timeout_counter+0 
	MOVLW       3
	MOVWF       _timeout_counter+1 
;subamp452.c,422 :: 		if(is_in_menu == TRUE)
	MOVF        draw_setupscreen_is_in_menu_L0+0, 0 
	XORLW       255
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen118
;subamp452.c,425 :: 		is_in_menu = FALSE;
	CLRF        draw_setupscreen_is_in_menu_L0+0 
;subamp452.c,426 :: 		switch(menu_pos)
	GOTO        L_draw_setupscreen119
;subamp452.c,428 :: 		case 0:
L_draw_setupscreen121:
;subamp452.c,429 :: 		rotary_value = bass_lvl;
	MOVF        _bass_lvl+0, 0 
	MOVWF       _rotary_value+0 
;subamp452.c,430 :: 		break;
	GOTO        L_draw_setupscreen120
;subamp452.c,431 :: 		case 1:
L_draw_setupscreen122:
;subamp452.c,432 :: 		rotary_value = trib_lvl;
	MOVF        _trib_lvl+0, 0 
	MOVWF       _rotary_value+0 
;subamp452.c,433 :: 		break;
	GOTO        L_draw_setupscreen120
;subamp452.c,434 :: 		case 4:
L_draw_setupscreen123:
;subamp452.c,435 :: 		case 5:
L_draw_setupscreen124:
;subamp452.c,436 :: 		case 2:
L_draw_setupscreen125:
;subamp452.c,437 :: 		rotary_value = 0x04;
	MOVLW       4
	MOVWF       _rotary_value+0 
;subamp452.c,438 :: 		break;
	GOTO        L_draw_setupscreen120
;subamp452.c,439 :: 		case 3:
L_draw_setupscreen126:
;subamp452.c,440 :: 		rotary_value = bal_lvl;
	MOVF        _bal_lvl+0, 0 
	MOVWF       _rotary_value+0 
;subamp452.c,441 :: 		break;
	GOTO        L_draw_setupscreen120
;subamp452.c,442 :: 		case 6:
L_draw_setupscreen127:
;subamp452.c,443 :: 		rotary_value = base_gain;
	MOVF        _base_gain+0, 0 
	MOVWF       _rotary_value+0 
;subamp452.c,444 :: 		break;
	GOTO        L_draw_setupscreen120
;subamp452.c,445 :: 		case 7:
L_draw_setupscreen128:
;subamp452.c,446 :: 		rotary_value = bass_add;
	MOVF        _bass_add+0, 0 
	MOVWF       _rotary_value+0 
;subamp452.c,447 :: 		break;
	GOTO        L_draw_setupscreen120
;subamp452.c,448 :: 		case 8:
L_draw_setupscreen129:
;subamp452.c,450 :: 		menu_control = 0;
	CLRF        draw_setupscreen_menu_control_L0+0 
;subamp452.c,451 :: 		break;
	GOTO        L_draw_setupscreen120
;subamp452.c,452 :: 		}
L_draw_setupscreen119:
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	XORLW       0
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen121
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	XORLW       1
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen122
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	XORLW       4
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen123
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	XORLW       5
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen124
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	XORLW       2
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen125
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	XORLW       3
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen126
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	XORLW       6
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen127
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	XORLW       7
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen128
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	XORLW       8
	BTFSC       STATUS+0, 2 
	GOTO        L_draw_setupscreen129
L_draw_setupscreen120:
;subamp452.c,454 :: 		last_rotary_value = rotary_value;
	MOVF        _rotary_value+0, 0 
	MOVWF       _last_rotary_value+0 
;subamp452.c,455 :: 		Lcd_Chr(1,1, ' ');
	MOVLW       1
	MOVWF       FARG_Lcd_Chr_row+0 
	MOVLW       1
	MOVWF       FARG_Lcd_Chr_column+0 
	MOVLW       32
	MOVWF       FARG_Lcd_Chr_out_char+0 
	CALL        _Lcd_Chr+0, 0
;subamp452.c,456 :: 		Lcd_Chr(2,1, '>');
	MOVLW       2
	MOVWF       FARG_Lcd_Chr_row+0 
	MOVLW       1
	MOVWF       FARG_Lcd_Chr_column+0 
	MOVLW       62
	MOVWF       FARG_Lcd_Chr_out_char+0 
	CALL        _Lcd_Chr+0, 0
;subamp452.c,457 :: 		}
	GOTO        L_draw_setupscreen130
L_draw_setupscreen118:
;subamp452.c,461 :: 		is_in_menu = TRUE;
	MOVLW       255
	MOVWF       draw_setupscreen_is_in_menu_L0+0 
;subamp452.c,462 :: 		rotary_value = menu_pos;
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	MOVWF       _rotary_value+0 
;subamp452.c,463 :: 		last_rotary_value = rotary_value + 1;
	MOVF        draw_setupscreen_menu_pos_L0+0, 0 
	ADDLW       1
	MOVWF       _last_rotary_value+0 
;subamp452.c,464 :: 		Lcd_Chr(2,1, ' ');
	MOVLW       2
	MOVWF       FARG_Lcd_Chr_row+0 
	MOVLW       1
	MOVWF       FARG_Lcd_Chr_column+0 
	MOVLW       32
	MOVWF       FARG_Lcd_Chr_out_char+0 
	CALL        _Lcd_Chr+0, 0
;subamp452.c,465 :: 		Lcd_Chr(1,1, '>');
	MOVLW       1
	MOVWF       FARG_Lcd_Chr_row+0 
	MOVLW       1
	MOVWF       FARG_Lcd_Chr_column+0 
	MOVLW       62
	MOVWF       FARG_Lcd_Chr_out_char+0 
	CALL        _Lcd_Chr+0, 0
;subamp452.c,466 :: 		}
L_draw_setupscreen130:
;subamp452.c,467 :: 		}
L_draw_setupscreen117:
;subamp452.c,470 :: 		INTCON |= 0x80;
	BSF         INTCON+0, 7 
;subamp452.c,471 :: 		portb_state = (PORTB & 0xFC);
	MOVLW       252
	ANDWF       PORTB+0, 0 
	MOVWF       draw_setupscreen_portb_state_L0+0 
;subamp452.c,472 :: 		Delay_ms(20);
	MOVLW       52
	MOVWF       R12, 0
	MOVLW       241
	MOVWF       R13, 0
L_draw_setupscreen131:
	DECFSZ      R13, 1, 1
	BRA         L_draw_setupscreen131
	DECFSZ      R12, 1, 1
	BRA         L_draw_setupscreen131
	NOP
	NOP
;subamp452.c,475 :: 		if(timeout_counter > 0)
	MOVLW       0
	MOVWF       R0 
	MOVF        _timeout_counter+1, 0 
	SUBWF       R0, 0 
	BTFSS       STATUS+0, 2 
	GOTO        L__draw_setupscreen182
	MOVF        _timeout_counter+0, 0 
	SUBLW       0
L__draw_setupscreen182:
	BTFSC       STATUS+0, 0 
	GOTO        L_draw_setupscreen132
;subamp452.c,477 :: 		if((--timeout_counter) == 0x00)
	MOVLW       1
	SUBWF       _timeout_counter+0, 1 
	MOVLW       0
	SUBWFB      _timeout_counter+1, 1 
	MOVLW       0
	XORWF       _timeout_counter+1, 0 
	BTFSS       STATUS+0, 2 
	GOTO        L__draw_setupscreen183
	MOVLW       0
	XORWF       _timeout_counter+0, 0 
L__draw_setupscreen183:
	BTFSS       STATUS+0, 2 
	GOTO        L_draw_setupscreen133
;subamp452.c,479 :: 		timeout_counter = TIMEOUT_LIMIT;
	MOVLW       0
	MOVWF       _timeout_counter+0 
	MOVLW       3
	MOVWF       _timeout_counter+1 
;subamp452.c,480 :: 		break;
	GOTO        L_draw_setupscreen41
;subamp452.c,481 :: 		}
L_draw_setupscreen133:
;subamp452.c,482 :: 		}
L_draw_setupscreen132:
;subamp452.c,483 :: 		}
	GOTO        L_draw_setupscreen40
L_draw_setupscreen41:
;subamp452.c,486 :: 		rotary_value = vol_lvl;
	MOVF        _vol_lvl+0, 0 
	MOVWF       _rotary_value+0 
;subamp452.c,487 :: 		last_rotary_value = rotary_value;
	MOVF        _vol_lvl+0, 0 
	MOVWF       _last_rotary_value+0 
;subamp452.c,488 :: 		return;
;subamp452.c,489 :: 		}
L_end_draw_setupscreen:
	RETURN      0
; end of _draw_setupscreen

_init_system:

;subamp452.c,491 :: 		void init_system()
;subamp452.c,494 :: 		ADCON1 |= 0x0F;
	MOVLW       15
	IORWF       ADCON1+0, 1 
;subamp452.c,495 :: 		TRISC = 0x00;
	CLRF        TRISC+0 
;subamp452.c,496 :: 		PORTC = 0x00;
	CLRF        PORTC+0 
;subamp452.c,497 :: 		TRISB = 0x1F;
	MOVLW       31
	MOVWF       TRISB+0 
;subamp452.c,498 :: 		INTCON3 = 0x04;
	MOVLW       4
	MOVWF       INTCON3+0 
;subamp452.c,499 :: 		INTCON2 = 0x40;
	MOVLW       64
	MOVWF       INTCON2+0 
;subamp452.c,500 :: 		INTCON = 0xD0;
	MOVLW       208
	MOVWF       INTCON+0 
;subamp452.c,501 :: 		PORTB = 0xA0;
	MOVLW       160
	MOVWF       PORTB+0 
;subamp452.c,504 :: 		Delay_ms(100);
	MOVLW       2
	MOVWF       R11, 0
	MOVLW       4
	MOVWF       R12, 0
	MOVLW       186
	MOVWF       R13, 0
L_init_system134:
	DECFSZ      R13, 1, 1
	BRA         L_init_system134
	DECFSZ      R12, 1, 1
	BRA         L_init_system134
	DECFSZ      R11, 1, 1
	BRA         L_init_system134
	NOP
;subamp452.c,505 :: 		Lcd_Init();
	CALL        _Lcd_Init+0, 0
;subamp452.c,506 :: 		Lcd_Cmd(_LCD_CLEAR);
	MOVLW       1
	MOVWF       FARG_Lcd_Cmd_out_char+0 
	CALL        _Lcd_Cmd+0, 0
;subamp452.c,507 :: 		Lcd_Cmd(_LCD_CURSOR_OFF);
	MOVLW       12
	MOVWF       FARG_Lcd_Cmd_out_char+0 
	CALL        _Lcd_Cmd+0, 0
;subamp452.c,510 :: 		I2C1_Init(100000);
	MOVLW       20
	MOVWF       SSPADD+0 
	CALL        _I2C1_Init+0, 0
;subamp452.c,511 :: 		Delay_ms(100);
	MOVLW       2
	MOVWF       R11, 0
	MOVLW       4
	MOVWF       R12, 0
	MOVLW       186
	MOVWF       R13, 0
L_init_system135:
	DECFSZ      R13, 1, 1
	BRA         L_init_system135
	DECFSZ      R12, 1, 1
	BRA         L_init_system135
	DECFSZ      R11, 1, 1
	BRA         L_init_system135
	NOP
;subamp452.c,514 :: 		if((PORTC & 0x04) == 0x04)
	MOVLW       4
	ANDWF       PORTC+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	XORLW       4
	BTFSS       STATUS+0, 2 
	GOTO        L_init_system136
;subamp452.c,517 :: 		reset_system();
	CALL        _reset_system+0, 0
;subamp452.c,518 :: 		EEPROM_Write(0x00, vol_lvl);
	CLRF        FARG_EEPROM_Write_address+0 
	MOVF        _vol_lvl+0, 0 
	MOVWF       FARG_EEPROM_Write_data_+0 
	CALL        _EEPROM_Write+0, 0
;subamp452.c,519 :: 		EEPROM_Write(0x01, bass_lvl);
	MOVLW       1
	MOVWF       FARG_EEPROM_Write_address+0 
	MOVF        _bass_lvl+0, 0 
	MOVWF       FARG_EEPROM_Write_data_+0 
	CALL        _EEPROM_Write+0, 0
;subamp452.c,520 :: 		EEPROM_Write(0x02, trib_lvl);
	MOVLW       2
	MOVWF       FARG_EEPROM_Write_address+0 
	MOVF        _trib_lvl+0, 0 
	MOVWF       FARG_EEPROM_Write_data_+0 
	CALL        _EEPROM_Write+0, 0
;subamp452.c,521 :: 		EEPROM_Write(0x03, loudness);
	MOVLW       3
	MOVWF       FARG_EEPROM_Write_address+0 
	MOVF        _loudness+0, 0 
	MOVWF       FARG_EEPROM_Write_data_+0 
	CALL        _EEPROM_Write+0, 0
;subamp452.c,522 :: 		EEPROM_Write(0x04, bal_lvl);
	MOVLW       4
	MOVWF       FARG_EEPROM_Write_address+0 
	MOVF        _bal_lvl+0, 0 
	MOVWF       FARG_EEPROM_Write_data_+0 
	CALL        _EEPROM_Write+0, 0
;subamp452.c,523 :: 		EEPROM_Write(0x05, bass_add);
	MOVLW       5
	MOVWF       FARG_EEPROM_Write_address+0 
	MOVF        _bass_add+0, 0 
	MOVWF       FARG_EEPROM_Write_data_+0 
	CALL        _EEPROM_Write+0, 0
;subamp452.c,524 :: 		EEPROM_Write(0x06, base_gain);
	MOVLW       6
	MOVWF       FARG_EEPROM_Write_address+0 
	MOVF        _base_gain+0, 0 
	MOVWF       FARG_EEPROM_Write_data_+0 
	CALL        _EEPROM_Write+0, 0
;subamp452.c,525 :: 		EEPROM_Write(0x07, base_param);
	MOVLW       7
	MOVWF       FARG_EEPROM_Write_address+0 
	MOVF        _base_param+0, 0 
	MOVWF       FARG_EEPROM_Write_data_+0 
	CALL        _EEPROM_Write+0, 0
;subamp452.c,526 :: 		}
	GOTO        L_init_system137
L_init_system136:
;subamp452.c,530 :: 		vol_lvl = EEPROM_Read(0x00);
	CLRF        FARG_EEPROM_Read_address+0 
	CALL        _EEPROM_Read+0, 0
	MOVF        R0, 0 
	MOVWF       _vol_lvl+0 
;subamp452.c,531 :: 		bass_lvl = EEPROM_Read(0x01);
	MOVLW       1
	MOVWF       FARG_EEPROM_Read_address+0 
	CALL        _EEPROM_Read+0, 0
	MOVF        R0, 0 
	MOVWF       _bass_lvl+0 
;subamp452.c,532 :: 		trib_lvl = EEPROM_Read(0x02);
	MOVLW       2
	MOVWF       FARG_EEPROM_Read_address+0 
	CALL        _EEPROM_Read+0, 0
	MOVF        R0, 0 
	MOVWF       _trib_lvl+0 
;subamp452.c,533 :: 		loudness = EEPROM_Read(0x03);
	MOVLW       3
	MOVWF       FARG_EEPROM_Read_address+0 
	CALL        _EEPROM_Read+0, 0
	MOVF        R0, 0 
	MOVWF       _loudness+0 
;subamp452.c,534 :: 		bal_lvl = EEPROM_Read(0x04);
	MOVLW       4
	MOVWF       FARG_EEPROM_Read_address+0 
	CALL        _EEPROM_Read+0, 0
	MOVF        R0, 0 
	MOVWF       _bal_lvl+0 
;subamp452.c,535 :: 		bass_add = EEPROM_Read(0x05);
	MOVLW       5
	MOVWF       FARG_EEPROM_Read_address+0 
	CALL        _EEPROM_Read+0, 0
	MOVF        R0, 0 
	MOVWF       _bass_add+0 
;subamp452.c,536 :: 		base_gain = EEPROM_Read(0x06);
	MOVLW       6
	MOVWF       FARG_EEPROM_Read_address+0 
	CALL        _EEPROM_Read+0, 0
	MOVF        R0, 0 
	MOVWF       _base_gain+0 
;subamp452.c,537 :: 		base_param = EEPROM_Read(0x07);
	MOVLW       7
	MOVWF       FARG_EEPROM_Read_address+0 
	CALL        _EEPROM_Read+0, 0
	MOVF        R0, 0 
	MOVWF       _base_param+0 
;subamp452.c,538 :: 		recall_system();
	CALL        _recall_system+0, 0
;subamp452.c,539 :: 		}
L_init_system137:
;subamp452.c,541 :: 		return;
;subamp452.c,542 :: 		}
L_end_init_system:
	RETURN      0
; end of _init_system

_reset_system:

;subamp452.c,544 :: 		void reset_system()
;subamp452.c,547 :: 		update_tone_control(DEFAULT_VOLUME);
	MOVLW       63
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,549 :: 		update_tone_control(0x80);
	MOVLW       128
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,550 :: 		asm nop;
	NOP
;subamp452.c,551 :: 		update_tone_control(0xA0);
	MOVLW       160
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,553 :: 		update_tone_control(0x40);
	MOVLW       64
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,555 :: 		update_tone_control(0x6F);
	MOVLW       111
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,556 :: 		asm nop;
	NOP
;subamp452.c,557 :: 		update_tone_control(0x7F);
	MOVLW       127
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,559 :: 		Delay_ms(350);
	MOVLW       4
	MOVWF       R11, 0
	MOVLW       142
	MOVWF       R12, 0
	MOVLW       18
	MOVWF       R13, 0
L_reset_system138:
	DECFSZ      R13, 1, 1
	BRA         L_reset_system138
	DECFSZ      R12, 1, 1
	BRA         L_reset_system138
	DECFSZ      R11, 1, 1
	BRA         L_reset_system138
	NOP
;subamp452.c,560 :: 		update_bass_processor(0x00);
	CLRF        FARG_update_bass_processor_bass_command+0 
	CALL        _update_bass_processor+0, 0
;subamp452.c,561 :: 		return;
;subamp452.c,562 :: 		}
L_end_reset_system:
	RETURN      0
; end of _reset_system

_recall_system:

;subamp452.c,564 :: 		void recall_system()
;subamp452.c,566 :: 		update_tone_control(0x40 | loudness);
	MOVLW       64
	IORWF       _loudness+0, 0 
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,567 :: 		asm nop;
	NOP
;subamp452.c,568 :: 		update_tone_control(0x70 | ((trib_lvl > 7) ? (trib_lvl & 0x08) | ((~trib_lvl) & 0x07) : trib_lvl));
	MOVF        _trib_lvl+0, 0 
	SUBLW       7
	BTFSC       STATUS+0, 0 
	GOTO        L_recall_system139
	MOVLW       8
	ANDWF       _trib_lvl+0, 0 
	MOVWF       R1 
	COMF        _trib_lvl+0, 0 
	MOVWF       R0 
	MOVLW       7
	ANDWF       R0, 1 
	MOVF        R1, 0 
	IORWF       R0, 1 
	GOTO        L_recall_system140
L_recall_system139:
	MOVF        _trib_lvl+0, 0 
	MOVWF       R0 
L_recall_system140:
	MOVLW       112
	IORWF       R0, 0 
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,569 :: 		asm nop;
	NOP
;subamp452.c,570 :: 		update_tone_control(0x60 | ((bass_lvl > 7) ? (bass_lvl & 0x08) | ((~bass_lvl) & 0x07) : bass_lvl));
	MOVF        _bass_lvl+0, 0 
	SUBLW       7
	BTFSC       STATUS+0, 0 
	GOTO        L_recall_system141
	MOVLW       8
	ANDWF       _bass_lvl+0, 0 
	MOVWF       R1 
	COMF        _bass_lvl+0, 0 
	MOVWF       R0 
	MOVLW       7
	ANDWF       R0, 1 
	MOVF        R1, 0 
	IORWF       R0, 1 
	GOTO        L_recall_system142
L_recall_system141:
	MOVF        _bass_lvl+0, 0 
	MOVWF       R0 
L_recall_system142:
	MOVLW       96
	IORWF       R0, 0 
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,571 :: 		asm nop;
	NOP
;subamp452.c,572 :: 		switch(bal_lvl)
	GOTO        L_recall_system143
;subamp452.c,575 :: 		case 0:
L_recall_system145:
;subamp452.c,576 :: 		update_tone_control(0x80);
	MOVLW       128
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,577 :: 		asm nop;
	NOP
;subamp452.c,578 :: 		update_tone_control(0xBF);
	MOVLW       191
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,579 :: 		break;
	GOTO        L_recall_system144
;subamp452.c,581 :: 		case 2:
L_recall_system146:
;subamp452.c,582 :: 		update_tone_control(0xA0);
	MOVLW       160
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,583 :: 		asm nop;
	NOP
;subamp452.c,584 :: 		update_tone_control(0x9F);
	MOVLW       159
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,585 :: 		break;
	GOTO        L_recall_system144
;subamp452.c,587 :: 		default:
L_recall_system147:
;subamp452.c,588 :: 		update_tone_control(0xA0);
	MOVLW       160
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,589 :: 		asm nop;
	NOP
;subamp452.c,590 :: 		update_tone_control(0x80);
	MOVLW       128
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,591 :: 		}
	GOTO        L_recall_system144
L_recall_system143:
	MOVF        _bal_lvl+0, 0 
	XORLW       0
	BTFSC       STATUS+0, 2 
	GOTO        L_recall_system145
	MOVF        _bal_lvl+0, 0 
	XORLW       2
	BTFSC       STATUS+0, 2 
	GOTO        L_recall_system146
	GOTO        L_recall_system147
L_recall_system144:
;subamp452.c,593 :: 		Delay_ms(350);
	MOVLW       4
	MOVWF       R11, 0
	MOVLW       142
	MOVWF       R12, 0
	MOVLW       18
	MOVWF       R13, 0
L_recall_system148:
	DECFSZ      R13, 1, 1
	BRA         L_recall_system148
	DECFSZ      R12, 1, 1
	BRA         L_recall_system148
	DECFSZ      R11, 1, 1
	BRA         L_recall_system148
	NOP
;subamp452.c,595 :: 		update_bass_processor(base_param | bass_add | (base_gain << 3));
	MOVF        _bass_add+0, 0 
	IORWF       _base_param+0, 0 
	MOVWF       FARG_update_bass_processor_bass_command+0 
	MOVLW       3
	MOVWF       R2 
	MOVF        _base_gain+0, 0 
	MOVWF       R0 
	MOVLW       0
	MOVWF       R1 
	MOVF        R2, 0 
L__recall_system187:
	BZ          L__recall_system188
	RLCF        R0, 1 
	BCF         R0, 0 
	RLCF        R1, 1 
	ADDLW       255
	GOTO        L__recall_system187
L__recall_system188:
	MOVF        R0, 0 
	IORWF       FARG_update_bass_processor_bass_command+0, 1 
	CALL        _update_bass_processor+0, 0
;subamp452.c,596 :: 		asm nop;
	NOP
;subamp452.c,597 :: 		update_tone_control(vol_lvl);
	MOVF        _vol_lvl+0, 0 
	MOVWF       FARG_update_tone_control_tone_command+0 
	CALL        _update_tone_control+0, 0
;subamp452.c,598 :: 		return;
;subamp452.c,599 :: 		}
L_end_recall_system:
	RETURN      0
; end of _recall_system

_interrupt:

;subamp452.c,601 :: 		void interrupt()
;subamp452.c,603 :: 		INTCON &= 0x7F;
	MOVLW       127
	ANDWF       INTCON+0, 1 
;subamp452.c,606 :: 		if((INTCON & 0x02) > 0x00)
	MOVLW       2
	ANDWF       INTCON+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	SUBLW       0
	BTFSC       STATUS+0, 0 
	GOTO        L_interrupt149
;subamp452.c,608 :: 		if(((PORTB & 0x01) << 1) == (PORTB & 0x02))
	MOVLW       1
	ANDWF       PORTB+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	MOVWF       R2 
	MOVLW       0
	MOVWF       R3 
	RLCF        R2, 1 
	BCF         R2, 0 
	RLCF        R3, 1 
	MOVLW       2
	ANDWF       PORTB+0, 0 
	MOVWF       R1 
	MOVLW       0
	XORWF       R3, 0 
	BTFSS       STATUS+0, 2 
	GOTO        L__interrupt191
	MOVF        R1, 0 
	XORWF       R2, 0 
L__interrupt191:
	BTFSS       STATUS+0, 2 
	GOTO        L_interrupt150
;subamp452.c,609 :: 		rotary_value++;
	INCF        _rotary_value+0, 1 
	GOTO        L_interrupt151
L_interrupt150:
;subamp452.c,611 :: 		rotary_value--;
	DECF        _rotary_value+0, 1 
L_interrupt151:
;subamp452.c,612 :: 		}
L_interrupt149:
;subamp452.c,615 :: 		if((INTCON3 & 0x01) > 0x01)
	MOVLW       1
	ANDWF       INTCON3+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	SUBLW       1
	BTFSC       STATUS+0, 0 
	GOTO        L_interrupt152
;subamp452.c,617 :: 		if(((PORTB & 0x01) << 1) == (PORTB & 0x02))
	MOVLW       1
	ANDWF       PORTB+0, 0 
	MOVWF       R1 
	MOVF        R1, 0 
	MOVWF       R2 
	MOVLW       0
	MOVWF       R3 
	RLCF        R2, 1 
	BCF         R2, 0 
	RLCF        R3, 1 
	MOVLW       2
	ANDWF       PORTB+0, 0 
	MOVWF       R1 
	MOVLW       0
	XORWF       R3, 0 
	BTFSS       STATUS+0, 2 
	GOTO        L__interrupt192
	MOVF        R1, 0 
	XORWF       R2, 0 
L__interrupt192:
	BTFSS       STATUS+0, 2 
	GOTO        L_interrupt153
;subamp452.c,618 :: 		rotary_value--;
	DECF        _rotary_value+0, 1 
	GOTO        L_interrupt154
L_interrupt153:
;subamp452.c,620 :: 		rotary_value++;
	INCF        _rotary_value+0, 1 
L_interrupt154:
;subamp452.c,621 :: 		}
L_interrupt152:
;subamp452.c,624 :: 		INTCON &= 0xFD;
	MOVLW       253
	ANDWF       INTCON+0, 1 
;subamp452.c,625 :: 		INTCON3 &= 0xFE;
	MOVLW       254
	ANDWF       INTCON3+0, 1 
;subamp452.c,626 :: 		asm nop;
	NOP
;subamp452.c,627 :: 		INTCON |= 0x80;
	BSF         INTCON+0, 7 
;subamp452.c,628 :: 		return;
;subamp452.c,629 :: 		}
L_end_interrupt:
L__interrupt190:
	RETFIE      1
; end of _interrupt
