///////////////////////////////////////////////////////////////////////////////
//                                                                            /
// IAR 8051 C/C++ Compiler V7.30B/W32                   12/Sep/2010  21:57:30 /
// Copyright 2004-2007 IAR Systems. All rights reserved.                      /
//                                                                            /
//    Core               =  plain                                             /
//    Code model         =  banked                                            /
//    Data model         =  large                                             /
//    Calling convention =  xdata reentrant                                   /
//    Constant location  =  data                                              /
//    Dptr setup         =  1,16                                              /
//    Source file        =  C:\Texas Instruments 33\ZStack-1.4.3-1.2.1\Compon /
//                          ents\hal\target\CC2430BB\hal_uart.c               /
//    Command line       =  -f "C:\Texas Instruments                          /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\Tools\CC2430DB\f8wRouter. /
//                          cfg" (-DCPU32MHZ -DFORCE_MAC_NEAR                 /
//                          -DROOT=__near_func -DMAC_CFG_APP_PENDING_QUEUE=TR /
//                          UE -DRTR_NWK -DBLINK_LEDS "-DCONST=const __code"  /
//                          -DGENERIC=__generic) -f "C:\Texas Instruments     /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\Tools\CC2430DB\f8wConfig. /
//                          cfg" (-DSECURE=1 -DDEFAULT_CHANLIST=0x04000000    /
//                          -DZDAPP_CONFIG_PAN_ID=0x00FF                      /
//                          -DNWK_START_DELAY=100 -DEXTENDED_JOINING_RANDOM_M /
//                          ASK=0x007F -DBEACON_REQUEST_DELAY=100             /
//                          -DBEACON_REQ_DELAY_MASK=0x00FF                    /
//                          -DROUTE_EXPIRY_TIME=30 -DAPSC_ACK_WAIT_DURATION_P /
//                          OLLED=3000 -DNWK_INDIRECT_MSG_TIMEOUT=7           /
//                          -DMAX_RREQ_ENTRIES=10 -DAPSC_MAX_FRAME_RETRIES=3  /
//                          -DNWK_MAX_DATA_RETRIES=2                          /
//                          -DMAX_POLL_FAILURE_RETRIES=2 -DMAX_BCAST=9        /
//                          -DAPS_MAX_GROUPS=16 -DMAX_RTG_ENTRIES=20          /
//                          -DNWK_MAX_BINDING_ENTRIES=10                      /
//                          -DMAX_BINDING_CLUSTER_IDS=5                       /
//                          "-DDEFAULT_KEY={0x02, 0x03, 0x05, 0x07, 0x09,     /
//                          0x0B, 0x0D, 0x0F, 0x00, 0x02, 0x04, 0x06, 0x08,   /
//                          0x0A, 0x0C, 0x0D}" -DRFD_RCVC_ALWAYS_ON=FALSE     /
//                          -DPOLL_RATE=1000 -DQUEUED_POLL_RATE=100           /
//                          -DRESPONSE_POLL_RATE=100) -DREJOIN_POLL_RATE=440  /
//                          "C:\Texas Instruments 33\ZStack-1.4.3-1.2.1\Compo /
//                          nents\hal\target\CC2430BB\hal_uart.c" -D          /
//                          CC2430EB -D LOCATION_REFNODE -D xNV_RESTORE -D    /
//                          ZTOOL_P1 -D MT_TASK -D POWER_SAVING -D            /
//                          HAL_UART_BIG_TX_BUF=1 -D                          /
//                          SPI_MGR_DEFAULT_MAX_TX_BUFF=1024 -D               /
//                          SPI_MGR_DEFAULT_OVERFLOW=1 -lC "C:\Texas          /
//                          Instruments 33\ZStack-1.4.3-1.2.1\Projects\zstack /
//                          \Project\Location\CC2430DB\RefNode\List\" -lA     /
//                          "C:\Texas Instruments 33\ZStack-1.4.3-1.2.1\Proje /
//                          cts\zstack\Project\Location\CC2430DB\RefNode\List /
//                          \" --diag_suppress Pe001,Pa010 --diag_remark      /
//                          pe550 -o "C:\Texas Instruments                    /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\RefNode\Obj\" -e                   /
//                          --require_prototypes -z9 --no_code_motion         /
//                          --debug --core=plain --dptr=16,1                  /
//                          --data_model=large --code_model=banked            /
//                          --calling_convention=xdata_reentrant              /
//                          --place_constants=data --nr_virtual_regs 8 -I     /
//                          "C:\Texas Instruments 33\ZStack-1.4.3-1.2.1\Proje /
//                          cts\zstack\Project\Location\CC2430DB\" -I         /
//                          "C:\Texas Instruments 33\ZStack-1.4.3-1.2.1\Proje /
//                          cts\zstack\Project\Location\CC2430DB\..\SOURCE\"  /
//                          -I "C:\Texas Instruments                          /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\ZMAIN\TI2430DB\" -I       /
//                          "C:\Texas Instruments 33\ZStack-1.4.3-1.2.1\Proje /
//                          cts\zstack\Project\Location\CC2430DB\..\..\..\..\ /
//                          ..\COMPONENTS\MT\" -I "C:\Texas Instruments       /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\..\..\COMPONENTS\HAL\INCL /
//                          UDE\" -I "C:\Texas Instruments                    /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\..\..\COMPONENTS\HAL\TARG /
//                          ET\CC2430BB\" -I "C:\Texas Instruments            /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\..\..\COMPONENTS\OSAL\MCU /
//                          \CCSOC\" -I "C:\Texas Instruments                 /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\..\..\COMPONENTS\OSAL\INC /
//                          LUDE\" -I "C:\Texas Instruments                   /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\..\..\COMPONENTS\STACK\AF /
//                          \" -I "C:\Texas Instruments                       /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\..\..\COMPONENTS\STACK\NW /
//                          K\" -I "C:\Texas Instruments                      /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\..\..\COMPONENTS\STACK\SE /
//                          C\" -I "C:\Texas Instruments                      /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\..\..\COMPONENTS\STACK\SY /
//                          S\" -I "C:\Texas Instruments                      /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\..\..\COMPONENTS\STACK\ZD /
//                          O\" -I "C:\Texas Instruments                      /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\..\..\COMPONENTS\ZMAC\F8W /
//                          \" -I "C:\Texas Instruments                       /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\..\..\COMPONENTS\ZMAC\"   /
//                          -I "C:\Texas Instruments                          /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\..\..\COMPONENTS\SERVICES /
//                          \SADDR\" -I "C:\Texas Instruments                 /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\..\..\COMPONENTS\SERVICES /
//                          \SDATA\" -I "C:\Texas Instruments                 /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\..\..\COMPONENTS\MAC\INCL /
//                          UDE\" -I "C:\Texas Instruments                    /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\..\..\COMPONENTS\MAC\HIGH /
//                          _LEVEL\" -I "C:\Texas Instruments                 /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\..\..\COMPONENTS\MAC\LOW_ /
//                          LEVEL\SRF03\" -I "C:\Texas Instruments            /
//                          33\ZStack-1.4.3-1.2.1\Projects\zstack\Project\Loc /
//                          ation\CC2430DB\..\..\..\..\..\COMPONENTS\MAC\LOW_ /
//                          LEVEL\SRF03\SINGLE_CHIP\" -I "C:\Program          /
//                          Files\IAR Systems\Embedded Workbench 4.0          /
//                          Evaluation version\8051\INC\" -I "C:\Program      /
//                          Files\IAR Systems\Embedded Workbench 4.0          /
//                          Evaluation version\8051\INC\CLIB\"                /
//    List file          =  C:\Texas Instruments 33\ZStack-1.4.3-1.2.1\Projec /
//                          ts\zstack\Project\Location\CC2430DB\RefNode\List\ /
//                          hal_uart.s51                                      /
//                                                                            /
//                                                                            /
///////////////////////////////////////////////////////////////////////////////

        NAME hal_uart

        RTMODEL "__calling_convention", "xdata_reentrant"
        RTMODEL "__code_model", "banked"
        RTMODEL "__core", "plain"
        RTMODEL "__data_model", "large"
        RTMODEL "__dptr_size", "16"
        RTMODEL "__extended_stack", "disabled"
        RTMODEL "__location_for_constants", "data"
        RTMODEL "__number_of_dptrs", "1"
        RTMODEL "__rt_version", "1"

        RSEG DOVERLAY:DATA:NOROOT(0)
        RSEG IOVERLAY:IDATA:NOROOT(0)
        RSEG ISTACK:IDATA:NOROOT(0)
        RSEG PSTACK:XDATA:NOROOT(0)
        RSEG XSTACK:XDATA:NOROOT(0)

        EXTERN ??pollDMA?relay
        EXTERN ?ALLOC_XSTACK8
        EXTERN ?BANKED_ENTER_XDATA
        EXTERN ?BANKED_LEAVE_XDATA
        EXTERN ?BDISPATCH
        EXTERN ?BRET
        EXTERN ?CALL_IND
        EXTERN ?DEALLOC_XSTACK8
        EXTERN ?V0
        EXTERN ?XSP
        EXTERN __INIT_XDATA_Z

        PUBLIC ??HalUARTClose?relay
        FUNCTION ??HalUARTClose?relay,0203H
        PUBLIC ??HalUARTInit?relay
        FUNCTION ??HalUARTInit?relay,0203H
        PUBLIC ??HalUARTOpen?relay
        FUNCTION ??HalUARTOpen?relay,0203H
        PUBLIC ??HalUARTPoll?relay
        FUNCTION ??HalUARTPoll?relay,0203H
        PUBLIC ??HalUARTRead?relay
        FUNCTION ??HalUARTRead?relay,0203H
        PUBLIC ??HalUARTWrite?relay
        FUNCTION ??HalUARTWrite?relay,0203H
        PUBLIC ??Hal_UART_RxBufLen?relay
        FUNCTION ??Hal_UART_RxBufLen?relay,0203H
        FUNCTION ??pollDMA?relay,0203H
        PUBWEAK ADCCFG
        PUBWEAK DMAARM
        PUBWEAK DMAIRQ
        PUBWEAK DMAREQ
        PUBLIC HalUARTClose
        FUNCTION HalUARTClose,0203H
        ARGFRAME XSTACK, 0, STACK
        PUBLIC HalUARTInit
        FUNCTION HalUARTInit,0203H
        ARGFRAME XSTACK, 0, STACK
        LOCFRAME ISTACK, 2, STACK
        PUBLIC HalUARTOpen
        FUNCTION HalUARTOpen,021203H
        ARGFRAME XSTACK, 0, STACK
        LOCFRAME ISTACK, 1, STACK
        LOCFRAME XSTACK, 15, STACK
        PUBLIC HalUARTPoll
        FUNCTION HalUARTPoll,021203H
        ARGFRAME XSTACK, 0, STACK
        LOCFRAME ISTACK, 1, STACK
        LOCFRAME XSTACK, 9, STACK
        PUBLIC HalUARTRead
        FUNCTION HalUARTRead,0203H
        ARGFRAME XSTACK, 0, STACK
        LOCFRAME ISTACK, 1, STACK
        LOCFRAME XSTACK, 12, STACK
        PUBLIC HalUARTWrite
        FUNCTION HalUARTWrite,0203H
        ARGFRAME XSTACK, 0, STACK
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 12, STACK
        PUBLIC Hal_UART_RxBufLen
        FUNCTION Hal_UART_RxBufLen,0203H
        ARGFRAME XSTACK, 0, STACK
        LOCFRAME ISTACK, 3, STACK
        PUBWEAK P0DIR
        PUBWEAK P0SEL
        PUBWEAK P2DIR
        PUBWEAK PERCFG
        PUBWEAK ST0
        PUBWEAK U0BAUD
        PUBWEAK U0CSR
        PUBWEAK U0DBUF
        PUBWEAK U0GCR
        PUBWEAK U0UCR
        PUBWEAK _A_P0
        PUBWEAK _A_P1
        FUNCTION pollDMA,021203H
        ARGFRAME XSTACK, 9, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        LOCFRAME ISTACK, 2, STACK
        LOCFRAME XSTACK, 11, STACK
        
        CFI Names cfiNames0
        CFI StackFrame CFA_SP SP DATA
        CFI StackFrame CFA_PSP16 PSP16 XDATA
        CFI StackFrame CFA_XSP16 XSP16 XDATA
        CFI StaticOverlayFrame CFA_IOVERLAY IOVERLAY
        CFI StaticOverlayFrame CFA_DOVERLAY DOVERLAY
        CFI Resource `PSW.CY`:1, `B.BR0`:1, `B.BR1`:1, `B.BR2`:1, `B.BR3`:1
        CFI Resource `B.BR4`:1, `B.BR5`:1, `B.BR6`:1, `B.BR7`:1, `VB.BR8`:1
        CFI Resource `VB.BR9`:1, `VB.BR10`:1, `VB.BR11`:1, `VB.BR12`:1
        CFI Resource `VB.BR13`:1, `VB.BR14`:1, `VB.BR15`:1, VB:8, B:8, A:8
        CFI Resource PSW:8, DPL0:8, DPH0:8, R0:8, R1:8, R2:8, R3:8, R4:8, R5:8
        CFI Resource R6:8, R7:8, V0:8, V1:8, V2:8, V3:8, V4:8, V5:8, V6:8, V7:8
        CFI Resource SP:8, PSPH:8, PSPL:8, PSP16:16, XSPH:8, XSPL:8, XSP16:16
        CFI VirtualResource ?RET:24
        CFI Resource ?BRET_EXT:8
        CFI VirtualResource ?RET_HIGH:8, ?RET_LOW:8
        CFI ResourceParts PSP16 PSPH, PSPL
        CFI ResourceParts XSP16 XSPH, XSPL
        CFI ResourceParts ?RET ?BRET_EXT, ?RET_HIGH, ?RET_LOW
        CFI EndNames cfiNames0
        
        CFI Common cfiCommon0 Using cfiNames0
        CFI CodeAlign 1
        CFI DataAlign -1
        CFI ReturnAddress ?RET CODE
        CFI CFA_DOVERLAY Used
        CFI CFA_IOVERLAY Used
        CFI CFA_SP SP+-3
        CFI CFA_PSP16 PSP16+0
        CFI CFA_XSP16 XSP16+0
        CFI `PSW.CY` SameValue
        CFI `B.BR0` SameValue
        CFI `B.BR1` SameValue
        CFI `B.BR2` SameValue
        CFI `B.BR3` SameValue
        CFI `B.BR4` SameValue
        CFI `B.BR5` SameValue
        CFI `B.BR6` SameValue
        CFI `B.BR7` SameValue
        CFI `VB.BR8` SameValue
        CFI `VB.BR9` SameValue
        CFI `VB.BR10` SameValue
        CFI `VB.BR11` SameValue
        CFI `VB.BR12` SameValue
        CFI `VB.BR13` SameValue
        CFI `VB.BR14` SameValue
        CFI `VB.BR15` SameValue
        CFI VB SameValue
        CFI B Undefined
        CFI A Undefined
        CFI PSW SameValue
        CFI DPL0 SameValue
        CFI DPH0 SameValue
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 Undefined
        CFI R5 Undefined
        CFI R6 SameValue
        CFI R7 SameValue
        CFI V0 SameValue
        CFI V1 SameValue
        CFI V2 SameValue
        CFI V3 SameValue
        CFI V4 SameValue
        CFI V5 SameValue
        CFI V6 SameValue
        CFI V7 SameValue
        CFI PSPH Undefined
        CFI PSPL Undefined
        CFI XSPH Undefined
        CFI XSPL Undefined
        CFI ?RET Concat
        CFI ?BRET_EXT Frame(CFA_SP, 3)
        CFI ?RET_HIGH Frame(CFA_SP, 2)
        CFI ?RET_LOW Frame(CFA_SP, 1)
        CFI EndCommon cfiCommon0
        
        
        CFI Common cfiCommon1 Using cfiNames0
        CFI CodeAlign 1
        CFI DataAlign -1
        CFI ReturnAddress ?RET CODE
        CFI CFA_DOVERLAY Used
        CFI CFA_IOVERLAY Used
        CFI CFA_SP SP+-2
        CFI CFA_PSP16 PSP16+0
        CFI CFA_XSP16 XSP16+0
        CFI `PSW.CY` SameValue
        CFI `B.BR0` SameValue
        CFI `B.BR1` SameValue
        CFI `B.BR2` SameValue
        CFI `B.BR3` SameValue
        CFI `B.BR4` SameValue
        CFI `B.BR5` SameValue
        CFI `B.BR6` SameValue
        CFI `B.BR7` SameValue
        CFI `VB.BR8` SameValue
        CFI `VB.BR9` SameValue
        CFI `VB.BR10` SameValue
        CFI `VB.BR11` SameValue
        CFI `VB.BR12` SameValue
        CFI `VB.BR13` SameValue
        CFI `VB.BR14` SameValue
        CFI `VB.BR15` SameValue
        CFI VB SameValue
        CFI B SameValue
        CFI A SameValue
        CFI PSW SameValue
        CFI DPL0 SameValue
        CFI DPH0 SameValue
        CFI R0 SameValue
        CFI R1 SameValue
        CFI R2 SameValue
        CFI R3 SameValue
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI V0 SameValue
        CFI V1 SameValue
        CFI V2 SameValue
        CFI V3 SameValue
        CFI V4 SameValue
        CFI V5 SameValue
        CFI V6 SameValue
        CFI V7 SameValue
        CFI PSPH Undefined
        CFI PSPL Undefined
        CFI XSPH Undefined
        CFI XSPL Undefined
        CFI ?RET Concat
        CFI ?BRET_EXT SameValue
        CFI ?RET_HIGH Frame(CFA_SP, 2)
        CFI ?RET_LOW Frame(CFA_SP, 1)
        CFI EndCommon cfiCommon1
        
osal_memset         SYMBOL "osal_memset"
osal_mem_alloc      SYMBOL "osal_mem_alloc"
??osal_mem_alloc?relay SYMBOL "?relay", osal_mem_alloc
??osal_memset?relay SYMBOL "?relay", osal_memset
HalUARTClose        SYMBOL "HalUARTClose"
??HalUARTClose?relay SYMBOL "?relay", HalUARTClose
HalUARTInit         SYMBOL "HalUARTInit"
??HalUARTInit?relay SYMBOL "?relay", HalUARTInit
HalUARTOpen         SYMBOL "HalUARTOpen"
??HalUARTOpen?relay SYMBOL "?relay", HalUARTOpen
HalUARTPoll         SYMBOL "HalUARTPoll"
??HalUARTPoll?relay SYMBOL "?relay", HalUARTPoll
HalUARTRead         SYMBOL "HalUARTRead"
??HalUARTRead?relay SYMBOL "?relay", HalUARTRead
HalUARTWrite        SYMBOL "HalUARTWrite"
??HalUARTWrite?relay SYMBOL "?relay", HalUARTWrite
Hal_UART_RxBufLen   SYMBOL "Hal_UART_RxBufLen"
??Hal_UART_RxBufLen?relay SYMBOL "?relay", Hal_UART_RxBufLen

        EXTERN osal_memset
        FUNCTION osal_memset,0202H
        ARGFRAME ISTACK, 0, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 15, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        EXTERN osal_mem_alloc
        FUNCTION osal_mem_alloc,0202H
        ARGFRAME ISTACK, 0, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 15, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        EXTERN ??osal_mem_alloc?relay
        FUNCTION ??osal_mem_alloc?relay,00H
        EXTERN ??osal_memset?relay
        FUNCTION ??osal_memset?relay,00H
        EXTERN dmaCh1234

// C:\Texas Instruments 33\ZStack-1.4.3-1.2.1\Components\hal\target\CC2430BB\hal_uart.c
//    1 /**************************************************************************************************
//    2   Filename:       _hal_uart.c
//    3   Revised:        $Date: 2007-11-01 08:44:53 -0700 (Thu, 01 Nov 2007) $
//    4   Revision:       $Revision: 15821 $
//    5 
//    6   Description: This file contains the interface to the H/W UART driver.
//    7 
//    8 
//    9   Copyright 2006-2007 Texas Instruments Incorporated. All rights reserved.
//   10 
//   11   IMPORTANT: Your use of this Software is limited to those specific rights
//   12   granted under the terms of a software license agreement between the user
//   13   who downloaded the software, his/her employer (which must be your employer)
//   14   and Texas Instruments Incorporated (the "License").  You may not use this
//   15   Software unless you agree to abide by the terms of the License. The License
//   16   limits your use, and you acknowledge, that the Software may not be modified,
//   17   copied or distributed unless embedded on a Texas Instruments microcontroller
//   18   or used solely and exclusively in conjunction with a Texas Instruments radio
//   19   frequency transceiver, which is integrated into your product.  Other than for
//   20   the foregoing purpose, you may not use, reproduce, copy, prepare derivative
//   21   works of, modify, distribute, perform, display or sell this Software and/or
//   22   its documentation for any purpose.
//   23 
//   24   YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
//   25   PROVIDED “AS IS?WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, 
//   26   INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE, 
//   27   NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL
//   28   TEXAS INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
//   29   NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER
//   30   LEGAL EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES
//   31   INCLUDING BUT NOT LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE
//   32   OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT
//   33   OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES
//   34   (INCLUDING BUT NOT LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
//   35 
//   36   Should you have any questions regarding your right to use this Software,
//   37   contact Texas Instruments Incorporated at www.TI.com. 
//   38 **************************************************************************************************/
//   39 
//   40 /*********************************************************************
//   41  * INCLUDES
//   42  */
//   43 
//   44 #include "hal_types.h"
//   45 #include "hal_assert.h"
//   46 #include "hal_board.h"

        ASEGN SFR_AN:DATA:NOROOT,080H
// union <unnamed> volatile __sfr _A_P0
_A_P0:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,086H
// unsigned char volatile __sfr U0CSR
U0CSR:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,090H
// union <unnamed> volatile __sfr _A_P1
_A_P1:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,095H
// unsigned char volatile __sfr ST0
ST0:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0c1H
// unsigned char volatile __sfr U0DBUF
U0DBUF:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0c2H
// unsigned char volatile __sfr U0BAUD
U0BAUD:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0c4H
// unsigned char volatile __sfr U0UCR
U0UCR:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0c5H
// unsigned char volatile __sfr U0GCR
U0GCR:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0d1H
// unsigned char volatile __sfr DMAIRQ
DMAIRQ:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0d6H
// unsigned char volatile __sfr DMAARM
DMAARM:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0d7H
// unsigned char volatile __sfr DMAREQ
DMAREQ:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0f1H
// unsigned char volatile __sfr PERCFG
PERCFG:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0f2H
// unsigned char volatile __sfr ADCCFG
ADCCFG:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0f3H
// unsigned char volatile __sfr P0SEL
P0SEL:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0fdH
// unsigned char volatile __sfr P0DIR
P0DIR:
        DS 1

        ASEGN SFR_AN:DATA:NOROOT,0ffH
// unsigned char volatile __sfr P2DIR
P2DIR:
        DS 1
//   47 #include "hal_defs.h"
//   48 #if defined( HAL_UART_DMA ) && HAL_UART_DMA
//   49   #include "hal_dma.h"
//   50 #endif
//   51 #include "hal_mcu.h"
//   52 #include "hal_uart.h"
//   53 #include "osal.h"
//   54 
//   55 /*********************************************************************
//   56  * MACROS
//   57  */
//   58 
//   59 #if !defined ( HAL_UART_DEBUG )
//   60   #define HAL_UART_DEBUG  FALSE
//   61 #endif
//   62 
//   63 #if !defined ( HAL_UART_CLOSE )
//   64   #define HAL_UART_CLOSE  FALSE
//   65 #endif
//   66 
//   67 #if !defined ( HAL_UART_BIG_TX_BUF )
//   68   #define HAL_UART_BIG_TX_BUF  FALSE
//   69 #endif
//   70 
//   71 /*
//   72  *  The MAC_ASSERT macro is for use during debugging.
//   73  *  The given expression must evaluate as "true" or else fatal error occurs.
//   74  *  At that point, the call stack feature of the debugger can pinpoint where
//   75  *  the problem occurred.
//   76  *
//   77  *  To disable this feature and save code size, the project should define
//   78  *  HAL_UART_DEBUG to FALSE.
//   79  */
//   80 #if ( HAL_UART_DEBUG )
//   81   #define HAL_UART_ASSERT( expr)        HAL_ASSERT( expr )
//   82 #else
//   83   #define HAL_UART_ASSERT( expr )
//   84 #endif
//   85 
//   86 #define P2DIR_PRIPO               0xC0
//   87 #if HAL_UART_0_ENABLE
//   88   #define HAL_UART_PRIPO          0x00
//   89 #else
//   90   #define HAL_UART_PRIPO          0x40
//   91 #endif
//   92 
//   93 #define HAL_UART_0_PERCFG_BIT     0x01  // USART0 on P0, so clear this bit.
//   94 //#define HAL_UART_0_P0_RX_TX       0x0c  // Peripheral I/O Select for Rx/Tx.
//   95 #if defined ( LOCATION_REFNODE )
//   96   #define HAL_UART_0_P0_RX_TX       0x10  // Peripheral I/O Select for Rx/Tx.
//   97 #endif
//   98 #if defined ( LOCATION_DONGLE )
//   99   #define HAL_UART_0_P0_RX_TX       0x0c  // Peripheral I/O Select for Rx/Tx.
//  100 #endif
//  101 #define HAL_UART_0_P0_RTS         0x10  // Peripheral I/O Select for RTS.
//  102 #define HAL_UART_0_P0_CTS         0x20  // Peripheral I/O Select for CTS.
//  103 
//  104 #define HAL_UART_1_PERCFG_BIT     0x02  // USART1 on P1, so set this bit.
//  105 #define HAL_UART_1_P1_RTS         0x10  // Peripheral I/O Select for RTS.
//  106 #define HAL_UART_1_P1_CTS         0x20  // Peripheral I/O Select for CTS.
//  107 #define HAL_UART_1_P1_RX_TX       0xC0  // Peripheral I/O Select for Rx/Tx.
//  108 
//  109 #define TX_AVAIL( cfg ) \ 
//  110   ((cfg->txTail == cfg->txHead) ? (cfg->txMax-1) : \ 
//  111   ((cfg->txTail >  cfg->txHead) ? (cfg->txTail - cfg->txHead - 1) : \ 
//  112                      (cfg->txMax - cfg->txHead + cfg->txTail)))
//  113 
//  114 #define RX0_FLOW_ON  ( P0 &= ~HAL_UART_0_P0_CTS )
//  115 #define RX0_FLOW_OFF ( P0 |= HAL_UART_0_P0_CTS )
//  116 #define RX1_FLOW_ON  ( P1 &= ~HAL_UART_1_P1_CTS)
//  117 #define RX1_FLOW_OFF ( P1 |= HAL_UART_1_P1_CTS )
//  118 
//  119 #define RX_STOP_FLOW( cfg ) { \ 
//  120   if ( !(cfg->flag & UART_CFG_U1F) ) \ 
//  121   { \ 
//  122     RX0_FLOW_OFF; \ 
//  123   } \ 
//  124   else \ 
//  125   { \ 
//  126     RX1_FLOW_OFF; \ 
//  127   } \ 
//  128   if ( cfg->flag & UART_CFG_DMA ) \ 
//  129   { \ 
//  130     cfg->rxTick = DMA_RX_DLY; \ 
//  131   } \ 
//  132   cfg->flag |= UART_CFG_RXF; \ 
//  133 }
//  134 
//  135 #define RX_STRT_FLOW( cfg ) { \ 
//  136   if ( !(cfg->flag & UART_CFG_U1F) ) \ 
//  137   { \ 
//  138     RX0_FLOW_ON; \ 
//  139   } \ 
//  140   else \ 
//  141   { \ 
//  142     RX1_FLOW_ON; \ 
//  143   } \ 
//  144   cfg->flag &= ~UART_CFG_RXF; \ 
//  145 }
//  146 
//  147 #define UART_RX_AVAIL( cfg ) \ 
//  148   ( (cfg->rxHead >= cfg->rxTail) ? (cfg->rxHead - cfg->rxTail) : \ 
//  149                                    (cfg->rxMax - cfg->rxTail + cfg->rxHead +1 ) )
//  150 
//  151 /* Need to leave enough of the Rx buffer free to handle the incoming bytes
//  152  * after asserting flow control, but before the transmitter has obeyed it.
//  153  * At the max expected baud rate of 115.2k, 16 bytes will only take ~1.3 msecs,
//  154  * but at the min expected baud rate of 38.4k, they could take ~4.2 msecs.
//  155  * SAFE_RX_MIN and DMA_RX_DLY must both be consistent according to
//  156  * the min & max expected baud rate.
//  157  */
//  158 #if !defined( SAFE_RX_MIN )
//  159   #define SAFE_RX_MIN  48  // bytes - max expected per poll @ 115.2k
//  160   // 16 bytes @ 38.4 kBaud -> 4.16 msecs -> 138 32-kHz ticks.
//  161   #define DMA_RX_DLY  140
//  162   //  2 bytes @ 38.4 kBaud -> 0.52 msecs ->  17 32-kHz ticks.
//  163   #define DMA_TX_DLY   20
//  164 #endif
//  165 
//  166 // The timeout tick is at 32-kHz, so multiply msecs by 33.
//  167 #define RX_MSECS_TO_TICKS  33
//  168 
//  169 // The timeout only supports 1 byte.
//  170 #if !defined( HAL_UART_RX_IDLE )
//  171   #define HAL_UART_RX_IDLE  (6 * RX_MSECS_TO_TICKS)
//  172 #endif
//  173 
//  174 // Only supporting 1 of the 2 USART modules to be driven by DMA at a time.
//  175 #if HAL_UART_DMA == 1
//  176   #define DMATRIG_RX  HAL_DMA_TRIG_URX0
//  177   #define DMATRIG_TX  HAL_DMA_TRIG_UTX0
//  178   #define DMA_UDBUF   HAL_DMA_U0DBUF
//  179   #define DMA_PAD     U0BAUD
//  180 #elif HAL_UART_DMA == 2
//  181   #define DMATRIG_RX  HAL_DMA_TRIG_URX1
//  182   #define DMATRIG_TX  HAL_DMA_TRIG_UTX1
//  183   #define DMA_UDBUF   HAL_DMA_U1DBUF
//  184   #define DMA_PAD     U1BAUD
//  185 #endif
//  186 
//  187 #define DMA_RX( cfg ) { \ 
//  188   volatile uint8 ft2430 = U0DBUF; \ 
//  189   \ 
//  190   halDMADesc_t *ch = HAL_DMA_GET_DESC1234( HAL_DMA_CH_RX ); \ 
//  191   \ 
//  192   HAL_DMA_SET_DEST( ch, cfg->rxBuf ); \ 
//  193   \ 
//  194   HAL_DMA_SET_LEN( ch, cfg->rxMax ); \ 
//  195   \ 
//  196   HAL_DMA_CLEAR_IRQ( HAL_DMA_CH_RX ); \ 
//  197   \ 
//  198   HAL_DMA_ARM_CH( HAL_DMA_CH_RX ); \ 
//  199 }
//  200 
//  201 #define DMA_TX( cfg ) { \ 
//  202   halDMADesc_t *ch = HAL_DMA_GET_DESC1234( HAL_DMA_CH_TX ); \ 
//  203   \ 
//  204   HAL_DMA_SET_SOURCE( ch, (cfg->txBuf + cfg->txTail) ); \ 
//  205   \ 
//  206   HAL_DMA_SET_LEN( ch, cfg->txCnt ); \ 
//  207   \ 
//  208   HAL_DMA_CLEAR_IRQ( HAL_DMA_CH_TX ); \ 
//  209   \ 
//  210   HAL_DMA_ARM_CH( HAL_DMA_CH_TX ); \ 
//  211   \ 
//  212   HAL_DMA_START_CH( HAL_DMA_CH_TX ); \ 
//  213 }
//  214 
//  215 /*********************************************************************
//  216  * TYPEDEFS
//  217  */
//  218 
//  219 typedef struct
//  220 {
//  221   uint8 *rxBuf;
//  222   uint8 rxHead;
//  223   uint8 rxTail;
//  224   uint8 rxMax;
//  225   uint8 rxCnt;
//  226   uint8 rxTick;
//  227   uint8 rxHigh;
//  228 
//  229   uint8 *txBuf;
//  230 #if HAL_UART_BIG_TX_BUF
//  231   uint16 txHead;
//  232   uint16 txTail;
//  233   uint16 txMax;
//  234   uint16 txCnt;
//  235 #else
//  236   uint8 txHead;
//  237   uint8 txTail;
//  238   uint8 txMax;
//  239   uint8 txCnt;
//  240 #endif
//  241   uint8 txTick;
//  242 
//  243   uint8 flag;
//  244 
//  245   halUARTCBack_t rxCB;
//  246 } uartCfg_t;
//  247 
//  248 /*********************************************************************
//  249  * CONSTANTS
//  250  */
//  251 
//  252 // Used by DMA macros to shift 1 to create a mask for DMA registers.
//  253 #define HAL_DMA_CH_TX    3
//  254 #define HAL_DMA_CH_RX    4
//  255 
//  256 #define HAL_DMA_U0DBUF  0xDFC1
//  257 #define HAL_DMA_U1DBUF  0xDFF9
//  258 
//  259 // UxCSR - USART Control and Status Register.
//  260 #define CSR_MODE      0x80
//  261 #define CSR_RE        0x40
//  262 #define CSR_SLAVE     0x20
//  263 #define CSR_FE        0x10
//  264 #define CSR_ERR       0x08
//  265 #define CSR_RX_BYTE   0x04
//  266 #define CSR_TX_BYTE   0x02
//  267 #define CSR_ACTIVE    0x01
//  268 
//  269 // UxUCR - USART UART Control Register.
//  270 #define UCR_FLUSH     0x80
//  271 #define UCR_FLOW      0x40
//  272 #define UCR_D9        0x20
//  273 #define UCR_BIT9      0x10
//  274 #define UCR_PARITY    0x08
//  275 #define UCR_SPB       0x04
//  276 #define UCR_STOP      0x02
//  277 #define UCR_START     0x01
//  278 
//  279 #define UTX0IE        0x04
//  280 #define UTX1IE        0x08
//  281 
//  282 #define UART_CFG_U1F  0x80  // USART1 flag bit.
//  283 #define UART_CFG_DMA  0x40  // Port is using DMA.
//  284 #define UART_CFG_FLW  0x20  // Port is using flow control.
//  285 #define UART_CFG_SP4  0x10
//  286 #define UART_CFG_SP3  0x08
//  287 #define UART_CFG_SP2  0x04
//  288 #define UART_CFG_RXF  0x02  // Rx flow is disabled.
//  289 #define UART_CFG_TXF  0x01  // Tx is in process.
//  290 
//  291 /*********************************************************************
//  292  * GLOBAL VARIABLES
//  293  */
//  294 
//  295 /*********************************************************************
//  296  * GLOBAL FUNCTIONS
//  297  */
//  298 
//  299 /*********************************************************************
//  300  * LOCAL VARIABLES
//  301  */
//  302 
//  303 #if HAL_UART_0_ENABLE

        RSEG XDATA_Z:XDATA:NOROOT(0)
//  304 static uartCfg_t *cfg0;
cfg0:
        DS 2
        REQUIRE __INIT_XDATA_Z
//  305 #endif
//  306 #if HAL_UART_1_ENABLE
//  307 static uartCfg_t *cfg1;
//  308 #endif
//  309 
//  310 /*********************************************************************
//  311  * LOCAL FUNCTIONS
//  312  */
//  313 
//  314 #if HAL_UART_DMA
//  315 static void pollDMA( uartCfg_t *cfg );
//  316 #endif
//  317 #if HAL_UART_ISR
//  318 static void pollISR( uartCfg_t *cfg );
//  319 #endif
//  320 
//  321 #if HAL_UART_DMA
//  322 /******************************************************************************
//  323  * @fn      pollDMA
//  324  *
//  325  * @brief   Poll a USART module implemented by DMA.
//  326  *
//  327  * @param   cfg - USART configuration structure.
//  328  *
//  329  * @return  none
//  330  *****************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  331 static void pollDMA( uartCfg_t *cfg )
pollDMA:
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function pollDMA
//  332 {
        FUNCALL pollDMA, osal_memset
        LOCFRAME ISTACK, 0, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 11, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 0, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 11, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        MOV     A,#-0xa
        LCALL   ?BANKED_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 10)
        ; Saved register size: 10
        ; Auto size: 1
        MOV     A,#-0x1
        LCALL   ?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 11)
        MOV     A,R2
        MOV     R6,A
        MOV     A,R3
        MOV     R7,A
//  333   const uint8 cnt = cfg->rxHead;
        MOV     A,R6
        ADD     A,#0x2
        INC     R2
        INC     R2
        LCALL   ?Subroutine6 & 0xFFFF
//  334   uint8 *pad = cfg->rxBuf+(cfg->rxHead*2);
??CrossCallReturnLabel_33:
        CLR     C
        RLC     A
        MOV     R0,A
        CLR     A
        RLC     A
        MOV     R1,A
        MOV     DPL,R6
        MOV     DPH,R7
        MOVX    A,@DPTR
        ADD     A,R0
        MOV     R0,A
        INC     DPTR
        MOVX    A,@DPTR
        ADDC    A,R1
        SJMP    ??pollDMA_0
//  335 
//  336   // Pack the received bytes to the front of the queue.
//  337   while ( (*pad == DMA_PAD) && (cfg->rxHead < cfg->rxMax) )
//  338   {
//  339     cfg->rxBuf[cfg->rxHead++] = *(pad+1);
??pollDMA_1:
        MOV     A,R6
        ADD     A,#0x2
        MOV     R2,A
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        MOVX    A,@DPTR
        PUSH    A
        CFI CFA_SP SP+-1
        MOV     DPL,R2
        MOV     DPH,R3
        MOVX    A,@DPTR
        MOV     ?V0 + 0,A
        MOV     DPL,R6
        MOV     DPH,R7
        MOVX    A,@DPTR
        ADD     A,?V0 + 0
        MOV     R5,A
        INC     DPTR
        MOVX    A,@DPTR
        ADDC    A,#0x0
        MOV     DPL,R5
        MOV     DPH,A
        POP     A
        CFI CFA_SP SP+0
        MOVX    @DPTR,A
        MOV     DPL,R2
        MOV     DPH,R3
        MOVX    A,@DPTR
        INC     A
        MOVX    @DPTR,A
//  340     pad += 2;
        MOV     A,R0
        ADD     A,#0x2
        INC     R0
        INC     R0
        MOV     A,R1
        ADDC    A,#0x0
??pollDMA_0:
        MOV     R1,A
//  341   }
        MOV     DPL,R0
        MOV     DPH,R1
        MOVX    A,@DPTR
        XRL     A,0xc2
        JNZ     ??pollDMA_2
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        PUSH    A
        CFI CFA_SP SP+-1
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R2,A
        POP     A
        CFI CFA_SP SP+0
        CLR     C
        SUBB    A,R2
        JC      ??pollDMA_1
//  342 
//  343   if ( !(cfg->flag & UART_CFG_RXF) )
??pollDMA_2:
        LCALL   ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_16:
        MOV     C,0xE0 /* A   */.1
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        JC      ??pollDMA_3
//  344   {
//  345     /* It is necessary to stop Rx flow and wait for H/W-enqueued bytes still
//  346      * incoming to stop before resetting the DMA Rx engine. If DMA Rx is
//  347      * aborted during incoming data, a byte may be lost inside the engine
//  348      * during the 2-step transfer process of read/write.
//  349      */
//  350     if ( cfg->rxHead >= (cfg->rxMax - SAFE_RX_MIN) )
        MOVX    A,@DPTR
        MOV     R2,A
        LCALL   ?Subroutine3 & 0xFFFF
??CrossCallReturnLabel_11:
        JC      ??pollDMA_4
//  351     {
//  352       RX_STOP_FLOW( cfg );
        LCALL   ?Subroutine4 & 0xFFFF
??CrossCallReturnLabel_13:
        JC      ??pollDMA_5
        SETB    0x80.5
        SJMP    ??pollDMA_6
??pollDMA_5:
        SETB    0x90.5
??pollDMA_6:
        MOV     C,0xE0 /* A   */.6
        JNC     ??pollDMA_7
        MOV     A,#-0x74
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    @DPTR,A
??pollDMA_7:
        LCALL   ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_17:
        SETB    0xE0 /* A   */.1
        SJMP    ??pollDMA_8
//  353     }
//  354     // If anything received, reset the Rx idle timer.
//  355     else if ( cfg->rxHead != cnt )
??pollDMA_4:
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        XRL     A,R4
        JZ      ??pollDMA_9
//  356     {
//  357       cfg->rxTick = HAL_UART_RX_IDLE;
        MOV     A,#-0x3a
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        SJMP    ??pollDMA_8
//  358     }
//  359   }
//  360   else if ( !cfg->rxTick && (cfg->rxHead == cfg->rxTail) )
??pollDMA_3:
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        JNZ     ??pollDMA_9
        LCALL   ?Subroutine12 & 0xFFFF
??CrossCallReturnLabel_51:
        JNZ     ??pollDMA_9
//  361   {
//  362     HAL_DMA_ABORT_CH( HAL_DMA_CH_RX );
        MOV     0xd6,#-0x70
//  363     cfg->rxHead = cfg->rxTail = 0;
        LCALL   ?Subroutine18 & 0xFFFF
//  364     osal_memset( cfg->rxBuf, ~DMA_PAD, cfg->rxMax*2 );
??CrossCallReturnLabel_63:
        ADD     A,#0x4
        MOV     ?V0 + 0,A
        MOV     A,R7
        ADDC    A,#0x0
        MOV     ?V0 + 1,A
        ; Setup parameters for call to function osal_memset
        MOV     DPL,?V0 + 0
        MOV     DPH,A
        LCALL   ?Subroutine10 & 0xFFFF
??CrossCallReturnLabel_47:
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R3,A
        LCALL   ?Subroutine11 & 0xFFFF
//  365     DMA_RX( cfg );
??CrossCallReturnLabel_49:
        MOV     DPL,?V0 + 0
        MOV     DPH,?V0 + 1
        LCALL   ?Subroutine9 & 0xFFFF
//  366     RX_STRT_FLOW( cfg );
??CrossCallReturnLabel_45:
        LCALL   ?Subroutine4 & 0xFFFF
??CrossCallReturnLabel_14:
        JC      ??pollDMA_10
        CLR     0x80.5
        SJMP    ??pollDMA_11
??pollDMA_10:
        CLR     0x90.5
??pollDMA_11:
        CLR     0xE0 /* A   */.1
??pollDMA_8:
        MOVX    @DPTR,A
//  367   }
//  368 
//  369   if ( HAL_DMA_CHECK_IRQ( HAL_DMA_CH_TX ) )
??pollDMA_9:
        MOV     A,0xd1
        MOV     C,0xE0 /* A   */.3
        JNC     ??pollDMA_12
//  370   {
//  371     HAL_DMA_CLEAR_IRQ( HAL_DMA_CH_TX );
        ANL     0xd1,#0xf7
//  372     cfg->flag &= ~UART_CFG_TXF;
        LCALL   ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_18:
        CLR     0xE0 /* A   */.0
        MOVX    @DPTR,A
//  373     cfg->txTick = DMA_TX_DLY;
        MOV     A,R6
        ADD     A,#0x12
        LCALL   ??Subroutine8_0 & 0xFFFF
??CrossCallReturnLabel_37:
        MOV     A,#0x14
        MOVX    @DPTR,A
//  374 
//  375     if ( (cfg->txMax - cfg->txCnt) < cfg->txTail )
        LCALL   ?Subroutine8 & 0xFFFF
??CrossCallReturnLabel_38:
        PUSH    DPL
        CFI CFA_SP SP+-1
        PUSH    DPH
        CFI CFA_SP SP+-2
        MOV     A,R6
        ADD     A,#0x10
        LCALL   ??Subroutine1_0 & 0xFFFF
??CrossCallReturnLabel_3:
        POP     DPH
        CFI CFA_SP SP+-1
        POP     DPL
        CFI CFA_SP SP+0
        MOVX    A,@DPTR
        CLR     C
        SUBB    A,R0
        MOV     R2,A
        INC     DPTR
        MOVX    A,@DPTR
        SUBB    A,R1
        MOV     R3,A
        LCALL   ?Subroutine1 & 0xFFFF
??CrossCallReturnLabel_4:
        CLR     C
        MOV     A,R2
        SUBB    A,R0
        MOV     A,R3
        SUBB    A,R1
        MOV     A,R6
        JNC     ??pollDMA_13
//  376     {
//  377       cfg->txTail = 0;  // DMA can only run to the end of the Tx buffer.
        ADD     A,#0xc
        LCALL   ??Subroutine8_0 & 0xFFFF
??CrossCallReturnLabel_39:
        CLR     A
        MOVX    @DPTR,A
        INC     DPTR
??pollDMA_14:
        MOVX    @DPTR,A
        LJMP    ??pollDMA_15 & 0xFFFF
//  378     }
//  379     else
//  380     {
//  381       cfg->txTail += cfg->txCnt;
??pollDMA_13:
        ADD     A,#0x10
        MOV     DPL,A
        MOV     A,R7
        LCALL   ??Subroutine0_0 & 0xFFFF
??CrossCallReturnLabel_0:
        ADD     A,#0xc
        LCALL   ??Subroutine5_0 & 0xFFFF
??CrossCallReturnLabel_19:
        ADD     A,R0
        MOVX    @DPTR,A
        INC     DPTR
        MOVX    A,@DPTR
        ADDC    A,R1
        SJMP    ??pollDMA_14
//  382     }
//  383   }
//  384   else if ( !(cfg->flag & UART_CFG_TXF) && !cfg->txTick )
??pollDMA_12:
        LCALL   ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_20:
        MOV     C,0xE0 /* A   */.0
        JNC     $+5
        LJMP    ??pollDMA_15 & 0xFFFF
        MOV     A,R6
        ADD     A,#0x12
        LCALL   ??Subroutine5_0 & 0xFFFF
??CrossCallReturnLabel_21:
        JZ      $+5
        LJMP    ??pollDMA_15 & 0xFFFF
//  385   {
//  386     if ( cfg->txTail != cfg->txHead )
        LCALL   ?Subroutine1 & 0xFFFF
??CrossCallReturnLabel_5:
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        XRL     A,R0
        JNZ     ??pollDMA_16
        INC     DPTR
        MOVX    A,@DPTR
        XRL     A,R1
??pollDMA_16:
        JNZ     $+5
        LJMP    ??pollDMA_15 & 0xFFFF
//  387     {
//  388       if ( cfg->txTail < cfg->txHead )
        MOV     A,R6
        ADD     A,#0xc
        LCALL   ??Subroutine8_0 & 0xFFFF
??CrossCallReturnLabel_40:
        PUSH    DPL
        CFI CFA_SP SP+-1
        PUSH    DPH
        CFI CFA_SP SP+-2
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        LCALL   ?Subroutine24 & 0xFFFF
??CrossCallReturnLabel_82:
        POP     DPH
        CFI CFA_SP SP+-1
        POP     DPL
        CFI CFA_SP SP+0
        CLR     C
        MOVX    A,@DPTR
        SUBB    A,R0
        INC     DPTR
        MOVX    A,@DPTR
        SUBB    A,R1
        JNC     ??pollDMA_17
//  389       {
//  390         cfg->txCnt = cfg->txHead - cfg->txTail;
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        PUSH    DPL
        CFI CFA_SP SP+-1
        PUSH    DPH
        CFI CFA_SP SP+-2
        LCALL   ?Subroutine1 & 0xFFFF
??CrossCallReturnLabel_6:
        POP     DPH
        CFI CFA_SP SP+-1
        POP     DPL
        CFI CFA_SP SP+0
        MOVX    A,@DPTR
        CLR     C
        SUBB    A,R0
        MOV     R0,A
        INC     DPTR
        MOVX    A,@DPTR
        SUBB    A,R1
        SJMP    ??pollDMA_18
//  391       }
//  392       else  // Can only run DMA engine up to max, then restart at zero.
//  393       {
//  394         cfg->txCnt = cfg->txMax - cfg->txTail + 1;
??pollDMA_17:
        LCALL   ?Subroutine8 & 0xFFFF
??CrossCallReturnLabel_41:
        PUSH    DPL
        CFI CFA_SP SP+-1
        PUSH    DPH
        CFI CFA_SP SP+-2
        LCALL   ?Subroutine1 & 0xFFFF
??CrossCallReturnLabel_7:
        POP     DPH
        CFI CFA_SP SP+-1
        POP     DPL
        CFI CFA_SP SP+0
        MOVX    A,@DPTR
        CLR     C
        SUBB    A,R0
        MOV     R0,A
        INC     DPTR
        MOVX    A,@DPTR
        SUBB    A,R1
        MOV     R1,A
        MOV     A,#0x1
        ADD     A,R0
        INC     R0
        CLR     A
        ADDC    A,R1
??pollDMA_18:
        MOV     R1,A
        MOV     A,R6
        ADD     A,#0x10
        LCALL   ?Subroutine2 & 0xFFFF
//  395       }
//  396 
//  397       cfg->flag |= UART_CFG_TXF;
??CrossCallReturnLabel_8:
        LCALL   ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_22:
        SETB    0xE0 /* A   */.0
        MOVX    @DPTR,A
//  398       DMA_TX( cfg );
        MOV     A,R6
        ADD     A,#0x8
        MOV     R0,A
        MOV     A,R7
        ADDC    A,#0x0
        MOV     R1,A
        MOV     A,R6
        ADD     A,#0xc
        MOV     R2,A
        LCALL   ?Subroutine6 & 0xFFFF
??CrossCallReturnLabel_34:
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R5,A
        MOV     DPL,R0
        MOV     DPH,R1
        MOVX    A,@DPTR
        ADD     A,R4
        INC     DPTR
        MOVX    A,@DPTR
        ADDC    A,R5
        MOV     DPTR,#(dmaCh1234 + 16)
        MOVX    @DPTR,A
        MOV     DPL,R2
        MOV     DPH,R3
        MOVX    A,@DPTR
        MOV     R2,A
        MOV     DPL,R0
        MOV     DPH,R1
        MOVX    A,@DPTR
        ADD     A,R2
        MOV     DPTR,#(dmaCh1234 + 17)
        MOVX    @DPTR,A
        MOV     A,R6
        ADD     A,#0x10
        MOV     R0,A
        MOV     A,R7
        ADDC    A,#0x0
        MOV     R1,A
        MOV     DPL,R0
        MOV     DPH,R1
        MOVX    A,@DPTR
        MOV     DPTR,#(dmaCh1234 + 21)
        MOVX    @DPTR,A
        MOV     DPTR,#(dmaCh1234 + 20)
        MOVX    A,@DPTR
        ANL     A,#0xe0
        MOVX    @DPTR,A
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R0,A
        MOV     DPTR,#(dmaCh1234 + 20)
        MOVX    A,@DPTR
        ORL     A,R0
        MOVX    @DPTR,A
        ANL     0xd1,#0xf7
        MOV     0xd6,#0x8
        MOV     0xd7,#0x8
//  399     }
//  400   }
//  401 }
??pollDMA_15:
        MOV     A,#0x1
        LCALL   ?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 10)
        MOV     R7,#0x2
        LJMP    ?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock0
        REQUIRE _A_P0
        REQUIRE _A_P1
        REQUIRE U0DBUF
        REQUIRE U0BAUD
        REQUIRE DMAIRQ
        REQUIRE DMAARM
        REQUIRE DMAREQ

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine8:
        CFI Block cfiCond1 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_38
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond2 Using cfiCommon0
        CFI (cfiCond2) NoFunction
        CFI (cfiCond2) Conditional ??CrossCallReturnLabel_41
        CFI (cfiCond2) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond2) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond2) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond2) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond2) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond2) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond2) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond2) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond2) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond2) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond2) CFA_SP SP+0
        CFI (cfiCond2) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiPicker3 Using cfiCommon1
        CFI (cfiPicker3) NoFunction
        CFI (cfiPicker3) Picker
        MOV     A,R6
        ADD     A,#0xe
        CFI Block cfiCond4 Using cfiCommon0
        CFI (cfiCond4) NoFunction
        CFI (cfiCond4) Conditional ??CrossCallReturnLabel_37
        CFI (cfiCond4) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond4) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond4) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond4) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond4) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond4) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond4) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond4) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond4) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond4) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond4) CFA_SP SP+0
        CFI (cfiCond4) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond5 Using cfiCommon0
        CFI (cfiCond5) NoFunction
        CFI (cfiCond5) Conditional ??CrossCallReturnLabel_39
        CFI (cfiCond5) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond5) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond5) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond5) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond5) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond5) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond5) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond5) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond5) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond5) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond5) CFA_SP SP+0
        CFI (cfiCond5) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond6 Using cfiCommon0
        CFI (cfiCond6) NoFunction
        CFI (cfiCond6) Conditional ??CrossCallReturnLabel_40
        CFI (cfiCond6) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond6) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond6) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond6) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond6) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond6) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond6) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond6) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond6) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond6) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond6) CFA_SP SP+0
        CFI (cfiCond6) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond7 Using cfiCommon0
        CFI (cfiCond7) NoFunction
        CFI (cfiCond7) Conditional ??CrossCallReturnLabel_42
        CFI (cfiCond7) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond7) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond7) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond7) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond7) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond7) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond7) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond7) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond7) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond7) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond7) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond7) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond7) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond7) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond7) CFA_SP SP+0
        CFI (cfiCond7) CFA_XSP16 add(XSP16, 15)
??Subroutine8_0:
        MOV     DPL,A
        MOV     A,R7
        CFI Block cfiCond8 Using cfiCommon0
        CFI (cfiCond8) NoFunction
        CFI (cfiCond8) Conditional ??CrossCallReturnLabel_43
        CFI (cfiCond8) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond8) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond8) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond8) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond8) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond8) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond8) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond8) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond8) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond8) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond8) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond8) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond8) CFA_SP SP+0
        CFI (cfiCond8) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond9 Using cfiCommon0
        CFI (cfiCond9) NoFunction
        CFI (cfiCond9) Conditional ??CrossCallReturnLabel_44
        CFI (cfiCond9) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond9) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond9) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond9) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond9) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond9) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond9) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond9) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond9) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond9) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond9) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond9) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond9) CFA_SP SP+0
        CFI (cfiCond9) CFA_XSP16 add(XSP16, 12)
??Subroutine8_1:
        LCALL   ??Subroutine23_0 & 0xFFFF
??CrossCallReturnLabel_80:
        RET
        CFI EndBlock cfiCond1
        CFI EndBlock cfiCond2
        CFI EndBlock cfiPicker3
        CFI EndBlock cfiCond4
        CFI EndBlock cfiCond5
        CFI EndBlock cfiCond6
        CFI EndBlock cfiCond7
        CFI EndBlock cfiCond8
        CFI EndBlock cfiCond9

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine6:
        CFI Block cfiCond10 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_33
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond11 Using cfiCommon0
        CFI (cfiCond11) NoFunction
        CFI (cfiCond11) Conditional ??CrossCallReturnLabel_34
        CFI (cfiCond11) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond11) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond11) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond11) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond11) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond11) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond11) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond11) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond11) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond11) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond11) CFA_SP SP+0
        CFI (cfiCond11) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiPicker12 Using cfiCommon1
        CFI (cfiPicker12) NoFunction
        CFI (cfiPicker12) Picker
        MOV     A,R7
        ADDC    A,#0x0
        MOV     R3,A
        MOV     DPL,R2
        MOV     DPH,R3
        MOVX    A,@DPTR
        MOV     R4,A
        RET
        CFI EndBlock cfiCond10
        CFI EndBlock cfiCond11
        CFI EndBlock cfiPicker12

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine5:
        CFI Block cfiCond13 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_16
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond14 Using cfiCommon0
        CFI (cfiCond14) NoFunction
        CFI (cfiCond14) Conditional ??CrossCallReturnLabel_17
        CFI (cfiCond14) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond14) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond14) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond14) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond14) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond14) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond14) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond14) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond14) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond14) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond14) CFA_SP SP+0
        CFI (cfiCond14) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond15 Using cfiCommon0
        CFI (cfiCond15) NoFunction
        CFI (cfiCond15) Conditional ??CrossCallReturnLabel_18
        CFI (cfiCond15) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond15) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond15) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond15) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond15) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond15) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond15) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond15) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond15) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond15) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond15) CFA_SP SP+0
        CFI (cfiCond15) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond16 Using cfiCommon0
        CFI (cfiCond16) NoFunction
        CFI (cfiCond16) Conditional ??CrossCallReturnLabel_20
        CFI (cfiCond16) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond16) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond16) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond16) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond16) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond16) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond16) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond16) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond16) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond16) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond16) CFA_SP SP+0
        CFI (cfiCond16) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond17 Using cfiCommon0
        CFI (cfiCond17) NoFunction
        CFI (cfiCond17) Conditional ??CrossCallReturnLabel_22
        CFI (cfiCond17) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond17) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond17) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond17) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond17) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond17) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond17) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond17) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond17) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond17) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond17) CFA_SP SP+0
        CFI (cfiCond17) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond18 Using cfiCommon0
        CFI (cfiCond18) NoFunction
        CFI (cfiCond18) Conditional ??CrossCallReturnLabel_23
        CFI (cfiCond18) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond18) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond18) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond18) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond18) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond18) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond18) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond18) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond18) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond18) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond18) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond18) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond18) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond18) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond18) CFA_SP SP+0
        CFI (cfiCond18) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiPicker19 Using cfiCommon1
        CFI (cfiPicker19) NoFunction
        CFI (cfiPicker19) Picker
        MOV     A,R6
        ADD     A,#0x13
        CFI Block cfiCond20 Using cfiCommon0
        CFI (cfiCond20) NoFunction
        CFI (cfiCond20) Conditional ??CrossCallReturnLabel_19
        CFI (cfiCond20) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond20) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond20) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond20) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond20) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond20) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond20) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond20) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond20) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond20) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond20) CFA_SP SP+0
        CFI (cfiCond20) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond21 Using cfiCommon0
        CFI (cfiCond21) NoFunction
        CFI (cfiCond21) Conditional ??CrossCallReturnLabel_21
        CFI (cfiCond21) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond21) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond21) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond21) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond21) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond21) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond21) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond21) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond21) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond21) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond21) CFA_SP SP+0
        CFI (cfiCond21) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond22 Using cfiCommon0
        CFI (cfiCond22) NoFunction
        CFI (cfiCond22) Conditional ??CrossCallReturnLabel_24
        CFI (cfiCond22) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond22) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond22) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond22) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond22) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond22) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond22) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond22) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond22) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond22) CFA_SP SP+0
        CFI (cfiCond22) CFA_XSP16 add(XSP16, 9)
        CFI Block cfiCond23 Using cfiCommon0
        CFI (cfiCond23) NoFunction
        CFI (cfiCond23) Conditional ??CrossCallReturnLabel_25
        CFI (cfiCond23) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond23) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond23) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond23) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond23) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond23) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond23) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond23) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond23) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond23) CFA_SP SP+0
        CFI (cfiCond23) CFA_XSP16 add(XSP16, 9)
        CFI Block cfiCond24 Using cfiCommon0
        CFI (cfiCond24) NoFunction
        CFI (cfiCond24) Conditional ??CrossCallReturnLabel_26
        CFI (cfiCond24) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond24) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond24) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond24) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond24) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond24) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond24) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond24) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond24) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond24) CFA_SP SP+0
        CFI (cfiCond24) CFA_XSP16 add(XSP16, 9)
??Subroutine5_0:
        MOV     DPL,A
        MOV     A,R7
        CFI Block cfiCond25 Using cfiCommon0
        CFI (cfiCond25) NoFunction
        CFI (cfiCond25) Conditional ??CrossCallReturnLabel_27
        CFI (cfiCond25) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond25) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond25) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond25) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond25) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond25) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond25) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond25) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond25) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond25) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond25) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond25) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond25) CFA_SP SP+0
        CFI (cfiCond25) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond26 Using cfiCommon0
        CFI (cfiCond26) NoFunction
        CFI (cfiCond26) Conditional ??CrossCallReturnLabel_28
        CFI (cfiCond26) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond26) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond26) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond26) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond26) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond26) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond26) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond26) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond26) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond26) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond26) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond26) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond26) CFA_SP SP+0
        CFI (cfiCond26) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond27 Using cfiCommon0
        CFI (cfiCond27) NoFunction
        CFI (cfiCond27) Conditional ??CrossCallReturnLabel_29
        CFI (cfiCond27) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond27) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond27) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond27) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond27) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond27) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond27) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond27) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond27) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond27) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond27) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond27) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond27) CFA_SP SP+0
        CFI (cfiCond27) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond28 Using cfiCommon0
        CFI (cfiCond28) NoFunction
        CFI (cfiCond28) Conditional ??CrossCallReturnLabel_30
        CFI (cfiCond28) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond28) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond28) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond28) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond28) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond28) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond28) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond28) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond28) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond28) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond28) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond28) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond28) CFA_SP SP+-2
        CFI (cfiCond28) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond29 Using cfiCommon0
        CFI (cfiCond29) NoFunction
        CFI (cfiCond29) Conditional ??CrossCallReturnLabel_31
        CFI (cfiCond29) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond29) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond29) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond29) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond29) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond29) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond29) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond29) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond29) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond29) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond29) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond29) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond29) CFA_SP SP+0
        CFI (cfiCond29) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond30 Using cfiCommon0
        CFI (cfiCond30) NoFunction
        CFI (cfiCond30) Conditional ??CrossCallReturnLabel_32
        CFI (cfiCond30) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond30) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond30) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond30) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond30) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond30) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond30) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond30) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond30) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond30) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond30) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond30) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond30) CFA_SP SP+0
        CFI (cfiCond30) CFA_XSP16 add(XSP16, 12)
??Subroutine5_1:
        LCALL   ??Subroutine23_0 & 0xFFFF
??CrossCallReturnLabel_78:
        MOVX    A,@DPTR
        RET
        CFI EndBlock cfiCond13
        CFI EndBlock cfiCond14
        CFI EndBlock cfiCond15
        CFI EndBlock cfiCond16
        CFI EndBlock cfiCond17
        CFI EndBlock cfiCond18
        CFI EndBlock cfiPicker19
        CFI EndBlock cfiCond20
        CFI EndBlock cfiCond21
        CFI EndBlock cfiCond22
        CFI EndBlock cfiCond23
        CFI EndBlock cfiCond24
        CFI EndBlock cfiCond25
        CFI EndBlock cfiCond26
        CFI EndBlock cfiCond27
        CFI EndBlock cfiCond28
        CFI EndBlock cfiCond29
        CFI EndBlock cfiCond30

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine1:
        CFI Block cfiCond31 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_4
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond32 Using cfiCommon0
        CFI (cfiCond32) NoFunction
        CFI (cfiCond32) Conditional ??CrossCallReturnLabel_5
        CFI (cfiCond32) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond32) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond32) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond32) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond32) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond32) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond32) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond32) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond32) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond32) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond32) CFA_SP SP+0
        CFI (cfiCond32) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond33 Using cfiCommon0
        CFI (cfiCond33) NoFunction
        CFI (cfiCond33) Conditional ??CrossCallReturnLabel_6
        CFI (cfiCond33) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond33) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond33) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond33) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond33) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond33) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond33) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond33) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond33) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond33) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond33) CFA_SP SP+-2
        CFI (cfiCond33) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond34 Using cfiCommon0
        CFI (cfiCond34) NoFunction
        CFI (cfiCond34) Conditional ??CrossCallReturnLabel_7
        CFI (cfiCond34) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond34) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond34) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond34) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond34) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond34) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond34) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond34) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond34) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond34) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond34) CFA_SP SP+-2
        CFI (cfiCond34) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiPicker35 Using cfiCommon1
        CFI (cfiPicker35) NoFunction
        CFI (cfiPicker35) Picker
        MOV     A,R6
        ADD     A,#0xc
        CFI Block cfiCond36 Using cfiCommon0
        CFI (cfiCond36) NoFunction
        CFI (cfiCond36) Conditional ??CrossCallReturnLabel_3
        CFI (cfiCond36) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond36) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond36) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond36) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond36) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond36) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond36) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond36) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond36) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond36) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond36) CFA_SP SP+-2
        CFI (cfiCond36) CFA_XSP16 add(XSP16, 11)
??Subroutine1_0:
        MOV     DPL,A
        MOV     A,R7
        LCALL   ?Subroutine22 & 0xFFFF
??CrossCallReturnLabel_87:
        RET
        CFI EndBlock cfiCond31
        CFI EndBlock cfiCond32
        CFI EndBlock cfiCond33
        CFI EndBlock cfiCond34
        CFI EndBlock cfiPicker35
        CFI EndBlock cfiCond36

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine22:
        CFI Block cfiCond37 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_87, ??CrossCallReturnLabel_4
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond38 Using cfiCommon0
        CFI (cfiCond38) NoFunction
        CFI (cfiCond38) Conditional ??CrossCallReturnLabel_87, ??CrossCallReturnLabel_5
        CFI (cfiCond38) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond38) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond38) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond38) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond38) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond38) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond38) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond38) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond38) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond38) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond38) CFA_SP SP+0
        CFI (cfiCond38) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond39 Using cfiCommon0
        CFI (cfiCond39) NoFunction
        CFI (cfiCond39) Conditional ??CrossCallReturnLabel_87, ??CrossCallReturnLabel_6
        CFI (cfiCond39) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond39) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond39) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond39) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond39) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond39) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond39) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond39) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond39) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond39) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond39) CFA_SP SP+-2
        CFI (cfiCond39) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond40 Using cfiCommon0
        CFI (cfiCond40) NoFunction
        CFI (cfiCond40) Conditional ??CrossCallReturnLabel_87, ??CrossCallReturnLabel_7
        CFI (cfiCond40) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond40) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond40) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond40) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond40) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond40) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond40) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond40) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond40) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond40) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond40) CFA_SP SP+-2
        CFI (cfiCond40) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond41 Using cfiCommon0
        CFI (cfiCond41) NoFunction
        CFI (cfiCond41) Conditional ??CrossCallReturnLabel_87, ??CrossCallReturnLabel_3
        CFI (cfiCond41) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond41) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond41) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond41) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond41) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond41) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond41) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond41) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond41) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond41) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond41) CFA_SP SP+-2
        CFI (cfiCond41) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond42 Using cfiCommon0
        CFI (cfiCond42) NoFunction
        CFI (cfiCond42) Conditional ??CrossCallReturnLabel_86, ??CrossCallReturnLabel_1
        CFI (cfiCond42) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond42) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond42) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond42) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond42) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond42) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond42) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond42) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond42) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond42) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond42) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond42) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond42) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond42) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond42) CFA_SP SP+0
        CFI (cfiCond42) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiCond43 Using cfiCommon0
        CFI (cfiCond43) NoFunction
        CFI (cfiCond43) Conditional ??CrossCallReturnLabel_86, ??CrossCallReturnLabel_2
        CFI (cfiCond43) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond43) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond43) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond43) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond43) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond43) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond43) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond43) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond43) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond43) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond43) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond43) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond43) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond43) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond43) CFA_SP SP+0
        CFI (cfiCond43) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiCond44 Using cfiCommon0
        CFI (cfiCond44) NoFunction
        CFI (cfiCond44) Conditional ??CrossCallReturnLabel_86, ??CrossCallReturnLabel_0
        CFI (cfiCond44) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond44) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond44) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond44) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond44) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond44) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond44) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond44) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond44) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond44) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond44) CFA_SP SP+0
        CFI (cfiCond44) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiPicker45 Using cfiCommon1
        CFI (cfiPicker45) NoFunction
        CFI (cfiPicker45) Picker
        LCALL   ??Subroutine23_0 & 0xFFFF
        CFI EndBlock cfiCond37
        CFI EndBlock cfiCond38
        CFI EndBlock cfiCond39
        CFI EndBlock cfiCond40
        CFI EndBlock cfiCond41
        CFI EndBlock cfiCond42
        CFI EndBlock cfiCond43
        CFI EndBlock cfiCond44
        CFI EndBlock cfiPicker45
??CrossCallReturnLabel_81:
        REQUIRE ?Subroutine24
        ; // Fall through to label ?Subroutine24

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine24:
        CFI Block cfiCond46 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_87, ??CrossCallReturnLabel_4
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond47 Using cfiCommon0
        CFI (cfiCond47) NoFunction
        CFI (cfiCond47) Conditional ??CrossCallReturnLabel_87, ??CrossCallReturnLabel_5
        CFI (cfiCond47) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond47) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond47) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond47) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond47) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond47) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond47) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond47) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond47) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond47) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond47) CFA_SP SP+0
        CFI (cfiCond47) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond48 Using cfiCommon0
        CFI (cfiCond48) NoFunction
        CFI (cfiCond48) Conditional ??CrossCallReturnLabel_87, ??CrossCallReturnLabel_6
        CFI (cfiCond48) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond48) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond48) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond48) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond48) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond48) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond48) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond48) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond48) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond48) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond48) CFA_SP SP+-2
        CFI (cfiCond48) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond49 Using cfiCommon0
        CFI (cfiCond49) NoFunction
        CFI (cfiCond49) Conditional ??CrossCallReturnLabel_87, ??CrossCallReturnLabel_7
        CFI (cfiCond49) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond49) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond49) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond49) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond49) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond49) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond49) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond49) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond49) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond49) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond49) CFA_SP SP+-2
        CFI (cfiCond49) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond50 Using cfiCommon0
        CFI (cfiCond50) NoFunction
        CFI (cfiCond50) Conditional ??CrossCallReturnLabel_87, ??CrossCallReturnLabel_3
        CFI (cfiCond50) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond50) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond50) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond50) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond50) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond50) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond50) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond50) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond50) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond50) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond50) CFA_SP SP+-2
        CFI (cfiCond50) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond51 Using cfiCommon0
        CFI (cfiCond51) NoFunction
        CFI (cfiCond51) Conditional ??CrossCallReturnLabel_86, ??CrossCallReturnLabel_1
        CFI (cfiCond51) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond51) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond51) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond51) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond51) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond51) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond51) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond51) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond51) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond51) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond51) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond51) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond51) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond51) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond51) CFA_SP SP+0
        CFI (cfiCond51) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiCond52 Using cfiCommon0
        CFI (cfiCond52) NoFunction
        CFI (cfiCond52) Conditional ??CrossCallReturnLabel_86, ??CrossCallReturnLabel_2
        CFI (cfiCond52) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond52) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond52) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond52) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond52) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond52) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond52) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond52) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond52) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond52) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond52) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond52) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond52) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond52) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond52) CFA_SP SP+0
        CFI (cfiCond52) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiCond53 Using cfiCommon0
        CFI (cfiCond53) NoFunction
        CFI (cfiCond53) Conditional ??CrossCallReturnLabel_86, ??CrossCallReturnLabel_0
        CFI (cfiCond53) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond53) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond53) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond53) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond53) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond53) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond53) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond53) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond53) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond53) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond53) CFA_SP SP+0
        CFI (cfiCond53) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond54 Using cfiCommon0
        CFI (cfiCond54) NoFunction
        CFI (cfiCond54) Conditional ??CrossCallReturnLabel_83
        CFI (cfiCond54) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond54) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond54) CFA_SP SP+-5
        CFI Block cfiCond55 Using cfiCommon0
        CFI (cfiCond55) NoFunction
        CFI (cfiCond55) Conditional ??CrossCallReturnLabel_84
        CFI (cfiCond55) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond55) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond55) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond55) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond55) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond55) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond55) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond55) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond55) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond55) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond55) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond55) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond55) CFA_SP SP+0
        CFI (cfiCond55) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond56 Using cfiCommon0
        CFI (cfiCond56) NoFunction
        CFI (cfiCond56) Conditional ??CrossCallReturnLabel_85
        CFI (cfiCond56) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond56) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond56) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond56) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond56) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond56) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond56) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond56) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond56) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond56) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond56) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond56) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond56) CFA_SP SP+0
        CFI (cfiCond56) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond57 Using cfiCommon0
        CFI (cfiCond57) NoFunction
        CFI (cfiCond57) Conditional ??CrossCallReturnLabel_82
        CFI (cfiCond57) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond57) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond57) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond57) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond57) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond57) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond57) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond57) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond57) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond57) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond57) CFA_SP SP+-2
        CFI (cfiCond57) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiPicker58 Using cfiCommon1
        CFI (cfiPicker58) NoFunction
        CFI (cfiPicker58) Picker
        MOVX    A,@DPTR
        MOV     R0,A
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R1,A
        RET
        CFI EndBlock cfiCond46
        CFI EndBlock cfiCond47
        CFI EndBlock cfiCond48
        CFI EndBlock cfiCond49
        CFI EndBlock cfiCond50
        CFI EndBlock cfiCond51
        CFI EndBlock cfiCond52
        CFI EndBlock cfiCond53
        CFI EndBlock cfiCond54
        CFI EndBlock cfiCond55
        CFI EndBlock cfiCond56
        CFI EndBlock cfiCond57
        CFI EndBlock cfiPicker58
//  402 #endif
//  403 
//  404 #if HAL_UART_ISR
//  405 /******************************************************************************
//  406  * @fn      pollISR
//  407  *
//  408  * @brief   Poll a USART module implemented by ISR.
//  409  *
//  410  * @param   cfg - USART configuration structure.
//  411  *
//  412  * @return  none
//  413  *****************************************************************************/
//  414 static void pollISR( uartCfg_t *cfg )
//  415 {
//  416   uint8 cnt = UART_RX_AVAIL( cfg );
//  417 
//  418   if ( !(cfg->flag & UART_CFG_RXF) )
//  419   {
//  420     // If anything received, reset the Rx idle timer.
//  421     if ( cfg->rxCnt != cnt )
//  422     {
//  423       cfg->rxTick = HAL_UART_RX_IDLE;
//  424       cfg->rxCnt = cnt;
//  425     }
//  426 
//  427     /* It is necessary to stop Rx flow in advance of a full Rx buffer because
//  428      * bytes can keep coming while sending H/W fifo flushes.
//  429      */
//  430     if ( cfg->rxCnt >= (cfg->rxMax - SAFE_RX_MIN) )
//  431     {
//  432       RX_STOP_FLOW( cfg );
//  433     }
//  434   }
//  435 }
//  436 #endif
//  437 
//  438 /******************************************************************************
//  439  * @fn      HalUARTInit
//  440  *
//  441  * @brief   Initialize the UART
//  442  *
//  443  * @param   none
//  444  *
//  445  * @return  none
//  446  *****************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  447 void HalUARTInit( void )
HalUARTInit:
        CFI Block cfiBlock59 Using cfiCommon0
        CFI Function HalUARTInit
//  448 {
        PUSH    DPL
        CFI DPL0 Frame(CFA_SP, 4)
        CFI CFA_SP SP+-4
        PUSH    DPH
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        ; Saved register size: 2
        ; Auto size: 0
//  449 #if HAL_UART_DMA
//  450   halDMADesc_t *ch;
//  451 #endif
//  452 
//  453   // Set P2 priority - USART0 over USART1 if both are defined.
//  454   P2DIR &= ~P2DIR_PRIPO;
        ANL     0xff,#0x3f
        MOV     A,0xff
//  455   P2DIR |= HAL_UART_PRIPO;
        MOV     0xff,0xff
//  456 
//  457 #if HAL_UART_0_ENABLE
//  458   // Set UART0 I/O location to P0.
//  459   PERCFG &= ~HAL_UART_0_PERCFG_BIT;
        ANL     0xf1,#0xfe
//  460 
//  461   /* Enable Tx and Rx on P0 */
//  462   P0SEL |= HAL_UART_0_P0_RX_TX;
        ORL     0xf3,#0x10
//  463 
//  464   /* Make sure ADC doesnt use this */
//  465   ADCCFG &= ~HAL_UART_0_P0_RX_TX;
        ANL     0xf2,#0xef
//  466 
//  467   /* Mode is UART Mode */
//  468   U0CSR = CSR_MODE;
        MOV     0x86,#-0x80
//  469 
//  470   /* Flush it */
//  471   U0UCR = UCR_FLUSH;
        MOV     0xc4,#-0x80
//  472 #endif
//  473 
//  474 #if HAL_UART_1_ENABLE
//  475   // Set UART1 I/O location to P1.
//  476   PERCFG |= HAL_UART_1_PERCFG_BIT;
//  477 
//  478   /* Enable Tx and Rx on P1 */
//  479   P1SEL  |= HAL_UART_1_P1_RX_TX;
//  480 
//  481   /* Make sure ADC doesnt use this */
//  482   ADCCFG &= ~HAL_UART_1_P1_RX_TX;
//  483 
//  484   /* Mode is UART Mode */
//  485   U1CSR = CSR_MODE;
//  486 
//  487   /* Flush it */
//  488   U1UCR = UCR_FLUSH;
//  489 #endif
//  490 
//  491 #if HAL_UART_DMA
//  492   // Setup Tx by DMA.
//  493   ch = HAL_DMA_GET_DESC1234( HAL_DMA_CH_TX );
//  494 
//  495   // The start address of the destination.
//  496   HAL_DMA_SET_DEST( ch, DMA_UDBUF );
        MOV     A,#-0x21
        MOV     DPTR,#(dmaCh1234 + 18)
        MOVX    @DPTR,A
        MOV     A,#-0x3f
        MOV     DPTR,#(dmaCh1234 + 19)
        MOVX    @DPTR,A
//  497 
//  498   // Using the length field to determine how many bytes to transfer.
//  499   HAL_DMA_SET_VLEN( ch, HAL_DMA_VLEN_USE_LEN );
        MOV     DPTR,#(dmaCh1234 + 20)
        MOVX    A,@DPTR
        ANL     A,#0x1f
        MOVX    @DPTR,A
//  500 
//  501   // One byte is transferred each time.
//  502   HAL_DMA_SET_WORD_SIZE( ch, HAL_DMA_WORDSIZE_BYTE );
//  503 
//  504   // The bytes are transferred 1-by-1 on Tx Complete trigger.
//  505   HAL_DMA_SET_TRIG_MODE( ch, HAL_DMA_TMODE_SINGLE );
//  506   HAL_DMA_SET_TRIG_SRC( ch, DMATRIG_TX );
        MOV     A,#0xf
        MOV     DPTR,#(dmaCh1234 + 22)
        MOVX    @DPTR,A
//  507 
//  508   // The source address is decremented by 1 byte after each transfer.
//  509   HAL_DMA_SET_SRC_INC( ch, HAL_DMA_SRCINC_1 );
//  510 
//  511   // The destination address is constant - the Tx Data Buffer.
//  512   HAL_DMA_SET_DST_INC( ch, HAL_DMA_DSTINC_0 );
//  513 
//  514   // The DMA is to be polled and shall not issue an IRQ upon completion.
//  515   HAL_DMA_SET_IRQ( ch, HAL_DMA_IRQMASK_DISABLE );
//  516 
//  517   // Xfer all 8 bits of a byte xfer.
//  518   HAL_DMA_SET_M8( ch, HAL_DMA_M8_USE_8_BITS );
//  519 
//  520   // DMA Tx has shared priority for memory access - every other one.
//  521   HAL_DMA_SET_PRIORITY( ch, HAL_DMA_PRI_HIGH );
        MOV     A,#0x42
        MOV     DPTR,#(dmaCh1234 + 23)
        MOVX    @DPTR,A
//  522 
//  523   // Setup Rx by DMA.
//  524   ch = HAL_DMA_GET_DESC1234( HAL_DMA_CH_RX );
//  525 
//  526   // The start address of the source.
//  527   HAL_DMA_SET_SOURCE( ch, DMA_UDBUF );
        MOV     A,#-0x21
        MOV     DPTR,#(dmaCh1234 + 24)
        MOVX    @DPTR,A
        MOV     A,#-0x3f
        MOV     DPTR,#(dmaCh1234 + 25)
        MOVX    @DPTR,A
//  528 
//  529   // Using the length field to determine how many bytes to transfer.
//  530   HAL_DMA_SET_VLEN( ch, HAL_DMA_VLEN_USE_LEN );
        MOV     DPTR,#(dmaCh1234 + 28)
        MOVX    A,@DPTR
        ANL     A,#0x1f
        MOVX    @DPTR,A
//  531 
//  532   /* The trick is to cfg DMA to xfer 2 bytes for every 1 byte of Rx.
//  533    * The byte after the Rx Data Buffer is the Baud Cfg Register,
//  534    * which always has a known value. So init Rx buffer to inverse of that
//  535    * known value. DMA word xfer will flip the bytes, so every valid Rx byte
//  536    * in the Rx buffer will be preceded by a DMA_PAD char equal to the
//  537    * Baud Cfg Register value.
//  538    */
//  539   HAL_DMA_SET_WORD_SIZE( ch, HAL_DMA_WORDSIZE_WORD );
//  540 
//  541   // The bytes are transferred 1-by-1 on Rx Complete trigger.
//  542   HAL_DMA_SET_TRIG_MODE( ch, HAL_DMA_TMODE_SINGLE );
//  543   HAL_DMA_SET_TRIG_SRC( ch, DMATRIG_RX );
        MOV     A,#-0x72
        MOV     DPTR,#(dmaCh1234 + 30)
        MOVX    @DPTR,A
//  544 
//  545   // The source address is constant - the Rx Data Buffer.
//  546   HAL_DMA_SET_SRC_INC( ch, HAL_DMA_SRCINC_0 );
//  547 
//  548   // The destination address is incremented by 1 word after each transfer.
//  549   HAL_DMA_SET_DST_INC( ch, HAL_DMA_DSTINC_1 );
//  550 
//  551   // The DMA is to be polled and shall not issue an IRQ upon completion.
//  552   HAL_DMA_SET_IRQ( ch, HAL_DMA_IRQMASK_DISABLE );
//  553 
//  554   // Xfer all 8 bits of a byte xfer.
//  555   HAL_DMA_SET_M8( ch, HAL_DMA_M8_USE_8_BITS );
//  556 
//  557   // DMA has highest priority for memory access.
//  558   HAL_DMA_SET_PRIORITY( ch, HAL_DMA_PRI_HIGH );
        MOV     A,#0x12
        MOV     DPTR,#(dmaCh1234 + 31)
        MOVX    @DPTR,A
        CFI EndBlock cfiBlock59
//  559 #endif
//  560 }
        REQUIRE ?Subroutine25
        REQUIRE U0CSR
        REQUIRE U0UCR
        REQUIRE PERCFG
        REQUIRE ADCCFG
        REQUIRE P0SEL
        REQUIRE P2DIR
        ; // Fall through to label ?Subroutine25

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine25:
        CFI Block cfiBlock60 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+-5
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        POP     DPH
        CFI CFA_SP SP+-4
        CFI DPH0 SameValue
        POP     DPL
        CFI CFA_SP SP+-3
        CFI DPL0 SameValue
        LJMP    ?BRET
        CFI EndBlock cfiBlock60
//  561 
//  562 /******************************************************************************
//  563  * @fn      HalUARTOpen
//  564  *
//  565  * @brief   Open a port according tp the configuration specified by parameter.
//  566  *
//  567  * @param   port   - UART port
//  568  *          config - contains configuration information
//  569  *
//  570  * @return  Status of the function call
//  571  *****************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  572 uint8 HalUARTOpen( uint8 port, halUARTCfg_t *config )
HalUARTOpen:
        CFI Block cfiBlock61 Using cfiCommon0
        CFI Function HalUARTOpen
//  573 {
        FUNCALL HalUARTOpen, osal_mem_alloc
        LOCFRAME ISTACK, 0, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 15, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 0, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 15, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL HalUARTOpen, osal_mem_alloc
        LOCFRAME ISTACK, 0, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 15, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 0, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 15, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL HalUARTOpen, osal_mem_alloc
        LOCFRAME ISTACK, 0, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 15, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 0, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 15, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        FUNCALL HalUARTOpen, osal_memset
        LOCFRAME ISTACK, 0, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 15, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 0, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 15, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        MOV     A,#-0xe
        LCALL   ?BANKED_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 14)
        ; Saved register size: 14
        ; Auto size: 1
        MOV     A,#-0x1
        LCALL   ?ALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 15)
        MOV     ?V0 + 2,R1
        MOV     ?V0 + 0,R2
        MOV     ?V0 + 1,R3
//  574   uartCfg_t **cfgPP = NULL;
        MOV     R6,#0x0
        MOV     R7,#0x0
//  575   uartCfg_t *cfg;
//  576 
//  577 #if HAL_UART_0_ENABLE
//  578   if ( port == HAL_UART_PORT_0 )
        MOV     A,R1
        JNZ     ??HalUARTOpen_0
//  579   {
//  580     cfgPP = &cfg0;
        MOV     R6,#(cfg0 & 0xff)
        MOV     R7,#((cfg0 >> 8) & 0xff)
//  581   }
//  582 #endif
//  583 
//  584 #if HAL_UART_1_ENABLE
//  585   if ( port == HAL_UART_PORT_1 )
//  586   {
//  587     cfgPP = &cfg1;
//  588   }
//  589 #endif
//  590 
//  591   HAL_UART_ASSERT( cfgPP );
//  592 
//  593 #if HAL_UART_CLOSE
//  594   // Protect against user re-opening port before closing it.
//  595   HalUARTClose( port );
//  596 #else
//  597   HAL_UART_ASSERT( *cfgPP == NULL );
//  598 #endif
//  599 
//  600   HAL_UART_ASSERT( (config->baudRate == HAL_UART_BR_38400) ||
//  601                    (config->baudRate == HAL_UART_BR_115200) );
//  602 
//  603   /* Whereas runtime heap alloc can be expected to fail - one-shot system
//  604    * initialization must succeed, so no check for alloc fail.
//  605    */
//  606   *cfgPP = (uartCfg_t *)osal_mem_alloc( sizeof( uartCfg_t ) );
??HalUARTOpen_0:
        ; Setup parameters for call to function osal_mem_alloc
        MOV     R2,#0x16
        MOV     R3,#0x0
        LCALL   ?Subroutine19 & 0xFFFF
//  607   cfg = *cfgPP;
??CrossCallReturnLabel_65:
        MOV     DPL,R6
        MOV     DPH,R7
        MOVX    A,@DPTR
        MOV     R6,A
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R7,A
//  608   HAL_UART_ASSERT( cfg );
//  609 
//  610   cfg->rxMax = config->rx.maxBufSize;
        MOV     A,?V0 + 0
        ADD     A,#0xa
        MOV     ?V0 + 4,A
        MOV     A,?V0 + 1
        ADDC    A,#0x0
        MOV     ?V0 + 5,A
        MOV     DPL,?V0 + 4
        MOV     DPH,A
        MOVX    A,@DPTR
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    @DPTR,A
//  611 
//  612 #if !HAL_UART_BIG_TX_BUF
//  613   HAL_UART_ASSERT( (config->tx.maxBufSize < 256) );
//  614 #endif
//  615   cfg->txMax = config->tx.maxBufSize;
        MOV     A,?V0 + 0
        ADD     A,#0x12
        LCALL   ?Subroutine0 & 0xFFFF
??CrossCallReturnLabel_1:
        ADD     A,#0xe
        LCALL   ?Subroutine2 & 0xFFFF
//  616   cfg->txBuf = osal_mem_alloc( cfg->txMax+1 );
??CrossCallReturnLabel_9:
        ; Setup parameters for call to function osal_mem_alloc
        MOV     A,#0x1
        ADD     A,R0
        MOV     R2,A
        CLR     A
        ADDC    A,R1
        MOV     R3,A
        LCALL   ??osal_mem_alloc?relay
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOV     A,R2
        MOVX    @DPTR,A
        INC     DPTR
        MOV     A,R3
        MOVX    @DPTR,A
//  617 
//  618   cfg->rxHead = cfg->rxTail = 0;
        LCALL   ?Subroutine18 & 0xFFFF
//  619   cfg->txHead = cfg->txTail = 0;
??CrossCallReturnLabel_64:
        ADD     A,#0xc
        MOV     DPL,A
        MOV     A,R7
        LCALL   ?Subroutine7 & 0xFFFF
??CrossCallReturnLabel_35:
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    @DPTR,A
        INC     DPTR
        MOVX    @DPTR,A
//  620   cfg->rxHigh = config->rx.maxBufSize - config->flowControlThreshold;
        MOV     DPL,?V0 + 0
        MOV     DPH,?V0 + 1
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R0,A
        MOV     DPL,?V0 + 4
        MOV     DPH,?V0 + 5
        MOVX    A,@DPTR
        CLR     C
        SUBB    A,R0
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    @DPTR,A
//  621   cfg->rxCB = config->callBackFunc;
        MOV     A,?V0 + 0
        ADD     A,#0x1b
        LCALL   ?Subroutine0 & 0xFFFF
??CrossCallReturnLabel_2:
        ADD     A,#0x14
        LCALL   ?Subroutine2 & 0xFFFF
//  622 
//  623 #if HAL_UART_0_ENABLE
//  624   if ( port == HAL_UART_PORT_0 )
??CrossCallReturnLabel_10:
        MOV     A,?V0 + 2
        JZ      $+5
        LJMP    ??HalUARTOpen_1 & 0xFFFF
//  625   {
//  626     // Only supporting 38400 or 115200 for code size - other is possible.
//  627     U0BAUD = (config->baudRate == HAL_UART_BR_38400) ? 59 : 216;
        MOV     DPL,?V0 + 0
        MOV     DPH,?V0 + 1
        INC     DPTR
        MOVX    A,@DPTR
        XRL     A,#0x6
        JNZ     ??HalUARTOpen_2
        MOV     R2,#0x3b
        SJMP    ??HalUARTOpen_3
??HalUARTOpen_2:
        MOV     R2,#-0x28
??HalUARTOpen_3:
        MOV     0xc2,R2
//  628     U0GCR = (config->baudRate == HAL_UART_BR_38400) ? 10 : 11;
        MOV     DPL,?V0 + 0
        MOV     DPH,?V0 + 1
        INC     DPTR
        MOVX    A,@DPTR
        XRL     A,#0x6
        JNZ     ??HalUARTOpen_4
        MOV     R2,#0xa
        SJMP    ??HalUARTOpen_5
??HalUARTOpen_4:
        MOV     R2,#0xb
??HalUARTOpen_5:
        MOV     0xc5,R2
//  629 
//  630     U0CSR |= CSR_RE;
        ORL     0x86,#0x40
//  631 
//  632 #if HAL_UART_DMA == 1
//  633     cfg->flag = UART_CFG_DMA;
        MOV     A,R6
        ADD     A,#0x13
        LCALL   ??Subroutine8_0 & 0xFFFF
??CrossCallReturnLabel_42:
        MOV     A,#0x40
        MOVX    @DPTR,A
//  634     HAL_UART_ASSERT( (config->rx.maxBufSize <= 128) );
//  635     HAL_UART_ASSERT( (config->rx.maxBufSize > SAFE_RX_MIN) );
//  636     cfg->rxBuf = osal_mem_alloc( cfg->rxMax*2 );
        MOV     A,R6
        ADD     A,#0x4
        MOV     ?V0 + 2,A
        MOV     A,R7
        ADDC    A,#0x0
        MOV     ?V0 + 3,A
        ; Setup parameters for call to function osal_mem_alloc
        MOV     DPL,?V0 + 2
        MOV     DPH,A
        MOVX    A,@DPTR
        CLR     C
        RLC     A
        MOV     R2,A
        CLR     A
        RLC     A
        MOV     R3,A
        LCALL   ?Subroutine19 & 0xFFFF
//  637     osal_memset( cfg->rxBuf, ~DMA_PAD, cfg->rxMax*2 );
??CrossCallReturnLabel_66:
        ; Setup parameters for call to function osal_memset
        MOV     DPL,?V0 + 2
        MOV     DPH,?V0 + 3
        LCALL   ?Subroutine10 & 0xFFFF
??CrossCallReturnLabel_48:
        LCALL   ?Subroutine11 & 0xFFFF
//  638     DMA_RX( cfg );
??CrossCallReturnLabel_50:
        MOV     DPL,?V0 + 2
        MOV     DPH,?V0 + 3
        LCALL   ?Subroutine9 & 0xFFFF
//  639 #else
//  640     cfg->flag = 0;
//  641     HAL_UART_ASSERT( (config->rx.maxBufSize < 256) );
//  642     cfg->rxBuf = osal_mem_alloc( cfg->rxMax+1 );
//  643     URX0IE = 1;
//  644     IEN2 |= UTX0IE;
//  645 #endif
//  646 
//  647     // 8 bits/char; no parity; 1 stop bit; stop bit hi.
//  648     if ( config->flowControl )
??CrossCallReturnLabel_46:
        MOV     DPL,?V0 + 0
        MOV     DPH,?V0 + 1
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        JZ      ??HalUARTOpen_6
//  649     {
//  650       cfg->flag |= UART_CFG_FLW;
        LCALL   ?Subroutine5 & 0xFFFF
??CrossCallReturnLabel_23:
        SETB    0xE0 /* A   */.5
        MOVX    @DPTR,A
//  651       U0UCR = UCR_FLOW | UCR_STOP;
        MOV     0xc4,#0x42
//  652       // Must rely on H/W for RTS (i.e. Tx stops when receiver negates CTS.)
//  653       P0SEL |= HAL_UART_0_P0_RTS;
        ORL     0xf3,#0x10
//  654       // Cannot use H/W for CTS as DMA does not clear the Rx bytes properly.
//  655       P0DIR |= HAL_UART_0_P0_CTS;
        ORL     0xfd,#0x20
//  656       RX0_FLOW_ON;
        CLR     0x80.5
        SJMP    ??HalUARTOpen_1
//  657     }
//  658     else
//  659     {
//  660       U0UCR = UCR_STOP;
??HalUARTOpen_6:
        MOV     0xc4,#0x2
//  661     }
//  662     }
//  663 #endif
//  664 
//  665 #if HAL_UART_1_ENABLE
//  666   if ( port == HAL_UART_PORT_1 )
//  667   {
//  668     // Only supporting 38400 or 115200 for code size - other is possible.
//  669     U1BAUD = (config->baudRate == HAL_UART_BR_38400) ? 59 : 216;
//  670     U1GCR = (config->baudRate == HAL_UART_BR_38400) ? 10 : 11;
//  671 
//  672     U1CSR |= CSR_RE;
//  673 
//  674 #if HAL_UART_DMA == 2
//  675     cfg->flag = (UART_CFG_U1F | UART_CFG_DMA);
//  676     HAL_UART_ASSERT( (config->rx.maxBufSize <= 128) );
//  677     HAL_UART_ASSERT( (config->rx.maxBufSize > SAFE_RX_MIN) );
//  678     cfg->rxBuf = osal_mem_alloc( cfg->rxMax*2 );
//  679     osal_memset( cfg->rxBuf, ~DMA_PAD, cfg->rxMax*2 );
//  680     DMA_RX( cfg );
//  681 #else
//  682     cfg->flag = UART_CFG_U1F;
//  683     HAL_UART_ASSERT( (config->rx.maxBufSize < 256) );
//  684     cfg->rxBuf = osal_mem_alloc( cfg->rxMax+1 );
//  685     URX1IE = 1;
//  686     IEN2 |= UTX1IE;
//  687 #endif
//  688 
//  689     // 8 bits/char; no parity; 1 stop bit; stop bit hi.
//  690     if ( config->flowControl )
//  691     {
//  692       cfg->flag |= UART_CFG_FLW;
//  693       U1UCR = UCR_FLOW | UCR_STOP;
//  694       // Must rely on H/W for RTS (i.e. Tx stops when receiver negates CTS.)
//  695       P1SEL |= HAL_UART_1_P1_RTS;
//  696       // Cannot use H/W for CTS as DMA does not clear the Rx bytes properly.
//  697       P1DIR |= HAL_UART_1_P1_CTS;
//  698       RX1_FLOW_ON;
//  699     }
//  700     else
//  701     {
//  702       U1UCR = UCR_STOP;
//  703     }
//  704   }
//  705 #endif
//  706 
//  707   return HAL_UART_SUCCESS;
??HalUARTOpen_1:
        MOV     R1,#0x0
        MOV     A,#0x1
        LCALL   ?DEALLOC_XSTACK8
        CFI CFA_XSP16 add(XSP16, 14)
        MOV     R7,#0x6
        LJMP    ?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock61
        REQUIRE _A_P0
        REQUIRE U0CSR
        REQUIRE U0DBUF
        REQUIRE U0BAUD
        REQUIRE U0UCR
        REQUIRE U0GCR
        REQUIRE DMAIRQ
        REQUIRE DMAARM
        REQUIRE P0SEL
        REQUIRE P0DIR
//  708 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine19:
        CFI Block cfiCond62 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_65
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 15)
        CFI Block cfiCond63 Using cfiCommon0
        CFI (cfiCond63) NoFunction
        CFI (cfiCond63) Conditional ??CrossCallReturnLabel_66
        CFI (cfiCond63) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond63) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond63) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond63) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond63) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond63) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond63) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond63) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond63) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond63) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond63) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond63) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond63) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond63) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond63) CFA_SP SP+0
        CFI (cfiCond63) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiPicker64 Using cfiCommon1
        CFI (cfiPicker64) NoFunction
        CFI (cfiPicker64) Picker
        LCALL   ??osal_mem_alloc?relay
        MOV     DPL,R6
        MOV     DPH,R7
        MOV     A,R2
        MOVX    @DPTR,A
        INC     DPTR
        MOV     A,R3
        MOVX    @DPTR,A
        RET
        CFI EndBlock cfiCond62
        CFI EndBlock cfiCond63
        CFI EndBlock cfiPicker64

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine18:
        CFI Block cfiCond65 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_63
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond66 Using cfiCommon0
        CFI (cfiCond66) NoFunction
        CFI (cfiCond66) Conditional ??CrossCallReturnLabel_64
        CFI (cfiCond66) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond66) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond66) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond66) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond66) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond66) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond66) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond66) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond66) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond66) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond66) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond66) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond66) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond66) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond66) CFA_SP SP+0
        CFI (cfiCond66) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiPicker67 Using cfiCommon1
        CFI (cfiPicker67) NoFunction
        CFI (cfiPicker67) Picker
        CLR     A
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        LCALL   ?Subroutine21 & 0xFFFF
??CrossCallReturnLabel_75:
        INC     DPTR
        MOVX    @DPTR,A
        MOV     A,R6
        RET
        CFI EndBlock cfiCond65
        CFI EndBlock cfiCond66
        CFI EndBlock cfiPicker67

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine11:
        CFI Block cfiCond68 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_49
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond69 Using cfiCommon0
        CFI (cfiCond69) NoFunction
        CFI (cfiCond69) Conditional ??CrossCallReturnLabel_50
        CFI (cfiCond69) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond69) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond69) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond69) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond69) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond69) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond69) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond69) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond69) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond69) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond69) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond69) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond69) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond69) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond69) CFA_SP SP+0
        CFI (cfiCond69) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiPicker70 Using cfiCommon1
        CFI (cfiPicker70) NoFunction
        CFI (cfiPicker70) Picker
        LCALL   ??osal_memset?relay
        MOV     A,0xc1
        MOV     DPL,?XSP + 0
        MOV     DPH,?XSP + 1
        LCALL   ?Subroutine21 & 0xFFFF
??CrossCallReturnLabel_72:
        MOVX    A,@DPTR
        MOV     DPTR,#(dmaCh1234 + 26)
        MOVX    @DPTR,A
        MOV     DPL,R6
        MOV     DPH,R7
        MOVX    A,@DPTR
        MOV     DPTR,#(dmaCh1234 + 27)
        MOVX    @DPTR,A
        RET
        CFI EndBlock cfiCond68
        CFI EndBlock cfiCond69
        CFI EndBlock cfiPicker70

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine10:
        CFI Block cfiCond71 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_47
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond72 Using cfiCommon0
        CFI (cfiCond72) NoFunction
        CFI (cfiCond72) Conditional ??CrossCallReturnLabel_48
        CFI (cfiCond72) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond72) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond72) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond72) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond72) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond72) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond72) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond72) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond72) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond72) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond72) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond72) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond72) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond72) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond72) CFA_SP SP+0
        CFI (cfiCond72) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiPicker73 Using cfiCommon1
        CFI (cfiPicker73) NoFunction
        CFI (cfiPicker73) Picker
        MOVX    A,@DPTR
        CLR     C
        RLC     A
        MOV     R4,A
        CLR     A
        RLC     A
        MOV     R5,A
        MOV     A,0xc2
        CPL     A
        MOV     R1,A
        MOV     DPL,R6
        MOV     DPH,R7
        MOVX    A,@DPTR
        MOV     R2,A
        RET
        CFI EndBlock cfiCond71
        CFI EndBlock cfiCond72
        CFI EndBlock cfiPicker73

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine9:
        CFI Block cfiCond74 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_45
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond75 Using cfiCommon0
        CFI (cfiCond75) NoFunction
        CFI (cfiCond75) Conditional ??CrossCallReturnLabel_46
        CFI (cfiCond75) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond75) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond75) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond75) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond75) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond75) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond75) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond75) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond75) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond75) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond75) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond75) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond75) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond75) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond75) CFA_SP SP+0
        CFI (cfiCond75) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiPicker76 Using cfiCommon1
        CFI (cfiPicker76) NoFunction
        CFI (cfiPicker76) Picker
        MOVX    A,@DPTR
        MOV     DPTR,#(dmaCh1234 + 29)
        MOVX    @DPTR,A
        MOV     DPTR,#(dmaCh1234 + 28)
        MOVX    A,@DPTR
        ANL     A,#0xe0
        MOVX    @DPTR,A
        ANL     0xd1,#0xef
        MOV     0xd6,#0x10
        RET
        CFI EndBlock cfiCond74
        CFI EndBlock cfiCond75
        CFI EndBlock cfiPicker76

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine2:
        CFI Block cfiCond77 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_8
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond78 Using cfiCommon0
        CFI (cfiCond78) NoFunction
        CFI (cfiCond78) Conditional ??CrossCallReturnLabel_9
        CFI (cfiCond78) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond78) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond78) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond78) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond78) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond78) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond78) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond78) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond78) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond78) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond78) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond78) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond78) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond78) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond78) CFA_SP SP+0
        CFI (cfiCond78) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiCond79 Using cfiCommon0
        CFI (cfiCond79) NoFunction
        CFI (cfiCond79) Conditional ??CrossCallReturnLabel_10
        CFI (cfiCond79) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond79) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond79) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond79) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond79) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond79) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond79) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond79) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond79) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond79) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond79) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond79) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond79) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond79) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond79) CFA_SP SP+0
        CFI (cfiCond79) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiPicker80 Using cfiCommon1
        CFI (cfiPicker80) NoFunction
        CFI (cfiPicker80) Picker
        LCALL   ?Subroutine23 & 0xFFFF
??CrossCallReturnLabel_76:
        MOV     A,R0
        MOVX    @DPTR,A
        INC     DPTR
        MOV     A,R1
        MOVX    @DPTR,A
        RET
        CFI EndBlock cfiCond77
        CFI EndBlock cfiCond78
        CFI EndBlock cfiCond79
        CFI EndBlock cfiPicker80

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine0:
        CFI Block cfiCond81 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_1
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 15)
        CFI Block cfiCond82 Using cfiCommon0
        CFI (cfiCond82) NoFunction
        CFI (cfiCond82) Conditional ??CrossCallReturnLabel_2
        CFI (cfiCond82) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond82) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond82) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond82) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond82) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond82) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond82) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond82) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond82) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond82) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond82) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond82) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond82) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond82) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond82) CFA_SP SP+0
        CFI (cfiCond82) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiPicker83 Using cfiCommon1
        CFI (cfiPicker83) NoFunction
        CFI (cfiPicker83) Picker
        MOV     DPL,A
        MOV     A,?V0 + 1
        CFI Block cfiCond84 Using cfiCommon0
        CFI (cfiCond84) NoFunction
        CFI (cfiCond84) Conditional ??CrossCallReturnLabel_0
        CFI (cfiCond84) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond84) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond84) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond84) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond84) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond84) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond84) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond84) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond84) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond84) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond84) CFA_SP SP+0
        CFI (cfiCond84) CFA_XSP16 add(XSP16, 11)
??Subroutine0_0:
        LCALL   ?Subroutine22 & 0xFFFF
??CrossCallReturnLabel_86:
        MOV     A,R6
        RET
        CFI EndBlock cfiCond81
        CFI EndBlock cfiCond82
        CFI EndBlock cfiPicker83
        CFI EndBlock cfiCond84
//  709 
//  710 /******************************************************************************
//  711  * @fn      HalUARTClose
//  712  *
//  713  * @brief   Close the UART
//  714  *
//  715  * @param   port - UART port
//  716  *
//  717  * @return  none
//  718  *****************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  719 void HalUARTClose( uint8 port )
HalUARTClose:
        CFI Block cfiBlock85 Using cfiCommon0
        CFI Function HalUARTClose
//  720 {
        ; Saved register size: 0
        ; Auto size: 0
//  721 #if HAL_UART_CLOSE
//  722   uartCfg_t *cfg;
//  723 
//  724 #if HAL_UART_0_ENABLE
//  725   if ( port == HAL_UART_PORT_0 )
//  726   {
//  727     U0CSR &= ~CSR_RE;
//  728 #if HAL_UART_DMA == 1
//  729     HAL_DMA_ABORT_CH( HAL_DMA_CH_RX );
//  730     HAL_DMA_ABORT_CH( HAL_DMA_CH_TX );
//  731 #else
//  732     URX0IE = 0;
//  733 #endif
//  734     cfg = cfg0;
//  735     cfg0 = NULL;
//  736   }
//  737 #endif
//  738 #if HAL_UART_1_ENABLE
//  739   if ( port == HAL_UART_PORT_1 )
//  740   {
//  741     U1CSR &= ~CSR_RE;
//  742 #if HAL_UART_DMA == 2
//  743     HAL_DMA_ABORT_CH( HAL_DMA_CH_RX );
//  744     HAL_DMA_ABORT_CH( HAL_DMA_CH_TX );
//  745 #else
//  746     URX1IE = 0;
//  747 #endif
//  748     cfg = cfg1;
//  749     cfg1 = NULL;
//  750   }
//  751 #endif
//  752 
//  753   if ( cfg )
//  754   {
//  755     if ( cfg->rxBuf )
//  756     {
//  757       osal_mem_free( cfg->rxBuf );
//  758     }
//  759     if ( cfg->txBuf )
//  760     {
//  761       osal_mem_free( cfg->txBuf );
//  762     }
//  763     osal_mem_free( cfg );
//  764   }
//  765 #endif
//  766 }
        LJMP    ?BRET
        CFI EndBlock cfiBlock85
//  767 
//  768 /******************************************************************************
//  769  * @fn      HalUARTPoll
//  770  *
//  771  * @brief   Poll the UART.
//  772  *
//  773  * @param   none
//  774  *
//  775  * @return  none
//  776  *****************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  777 void HalUARTPoll( void )
HalUARTPoll:
        CFI Block cfiBlock86 Using cfiCommon0
        CFI Function HalUARTPoll
//  778 {
        FUNCALL HalUARTPoll, pollDMA
        LOCFRAME ISTACK, 0, STACK
        LOCFRAME PSTACK, 0, STACK
        LOCFRAME XSTACK, 9, STACK
        LOCFRAME IOVERLAY, 0, STATIC
        LOCFRAME DOVERLAY, 0, STATIC
        ARGFRAME ISTACK, 0, STACK
        ARGFRAME PSTACK, 0, STACK
        ARGFRAME XSTACK, 9, STACK
        ARGFRAME IOVERLAY, 0, STATIC
        ARGFRAME DOVERLAY, 0, STATIC
        MOV     A,#-0x9
        LCALL   ?BANKED_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 9)
        ; Saved register size: 9
        ; Auto size: 0
//  779 #if ( HAL_UART_0_ENABLE | HAL_UART_1_ENABLE )
//  780   static uint8 tickShdw;
//  781   uartCfg_t *cfg;
//  782   uint8 tick;
//  783 
//  784 #if HAL_UART_0_ENABLE
//  785   if ( cfg0 )
        MOV     DPTR,#cfg0
        MOVX    A,@DPTR
        JNZ     ??HalUARTPoll_0
        INC     DPTR
        MOVX    A,@DPTR
??HalUARTPoll_0:
        JZ      ??HalUARTPoll_1
//  786   {
//  787     cfg = cfg0;
        MOV     DPTR,#cfg0
        MOVX    A,@DPTR
        MOV     R6,A
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R7,A
//  788   }
//  789 #endif
//  790 #if HAL_UART_1_ENABLE
//  791   if ( cfg1 )
//  792   {
//  793     cfg = cfg1;
//  794   }
//  795 #endif
//  796 
//  797   // Use the LSB of the sleep timer (ST0 must be read first anyway).
//  798   tick = ST0 - tickShdw;
??HalUARTPoll_1:
        MOV     DPTR,#??tickShdw
        MOVX    A,@DPTR
        MOV     R2,A
        MOV     A,0x95
        CLR     C
        SUBB    A,R2
        MOV     R2,A
//  799   tickShdw = ST0;
        MOV     A,0x95
        MOVX    @DPTR,A
//  800 
//  801   do
//  802   {
//  803     if ( cfg->txTick > tick )
        MOV     A,R6
        ADD     A,#0x12
        LCALL   ??Subroutine5_0 & 0xFFFF
??CrossCallReturnLabel_24:
        MOV     R3,A
        MOV     A,R2
        CLR     C
        SUBB    A,R3
        JNC     ??HalUARTPoll_2
//  804     {
//  805       cfg->txTick -= tick;
        MOVX    A,@DPTR
        CLR     C
        SUBB    A,R2
        SJMP    ??HalUARTPoll_3
//  806     }
//  807     else
//  808     {
//  809       cfg->txTick = 0;
??HalUARTPoll_2:
        CLR     A
??HalUARTPoll_3:
        LCALL   ?Subroutine21 & 0xFFFF
//  810     }
//  811 
//  812     if ( cfg->rxTick > tick )
??CrossCallReturnLabel_73:
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R3,A
        MOV     A,R2
        CLR     C
        SUBB    A,R3
        JNC     ??HalUARTPoll_4
//  813     {
//  814       cfg->rxTick -= tick;
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        CLR     C
        SUBB    A,R2
        SJMP    ??HalUARTPoll_5
//  815     }
//  816     else
//  817     {
//  818       cfg->rxTick = 0;
??HalUARTPoll_4:
        CLR     A
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
??HalUARTPoll_5:
        MOVX    @DPTR,A
//  819     }
//  820 
//  821 #if HAL_UART_ISR
//  822 #if HAL_UART_DMA
//  823     if ( cfg->flag & UART_CFG_DMA )
//  824     {
//  825       pollDMA( cfg );
//  826     }
//  827     else
//  828 #endif
//  829       {
//  830       pollISR( cfg );
//  831       }
//  832 #elif HAL_UART_DMA
//  833     pollDMA( cfg );
        ; Setup parameters for call to function pollDMA
        MOV     A,R6
        MOV     R2,A
        MOV     A,R7
        MOV     R3,A
        LCALL   ??pollDMA?relay
//  834 #endif
//  835 
//  836     /* The following logic makes continuous callbacks on any eligible flag
//  837      * until the condition corresponding to the flag is rectified.
//  838      * So even if new data is not received, continuous callbacks are made.
//  839      */
//  840       if ( cfg->rxHead != cfg->rxTail )
        LCALL   ?Subroutine12 & 0xFFFF
??CrossCallReturnLabel_52:
        JZ      ??HalUARTPoll_6
//  841       {
//  842       uint8 evt;
//  843 
//  844       if ( cfg->rxHead >= (cfg->rxMax - SAFE_RX_MIN) )
        LCALL   ?Subroutine3 & 0xFFFF
??CrossCallReturnLabel_12:
        JC      ??HalUARTPoll_7
//  845       {
//  846         evt = HAL_UART_RX_FULL;
        MOV     R2,#0x1
        SJMP    ??HalUARTPoll_8
//  847       }
//  848       else if ( cfg->rxHigh && (cfg->rxHead >= cfg->rxHigh) )
??HalUARTPoll_7:
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        JZ      ??HalUARTPoll_9
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        PUSH    A
        CFI CFA_SP SP+-1
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R2,A
        POP     A
        CFI CFA_SP SP+0
        CLR     C
        SUBB    A,R2
        JC      ??HalUARTPoll_9
//  849       {
//  850         evt = HAL_UART_RX_ABOUT_FULL;
        MOV     R2,#0x2
        SJMP    ??HalUARTPoll_8
//  851     }
//  852       else if ( cfg->rxTick == 0 )
??HalUARTPoll_9:
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        JNZ     ??HalUARTPoll_6
//  853     {
//  854         evt = HAL_UART_RX_TIMEOUT;
        MOV     R2,#0x4
??HalUARTPoll_8:
        MOV     A,R6
        ADD     A,#0x14
        LCALL   ??Subroutine5_0 & 0xFFFF
??CrossCallReturnLabel_25:
        JNZ     ??HalUARTPoll_10
        INC     DPTR
        MOVX    A,@DPTR
??HalUARTPoll_10:
        JZ      ??HalUARTPoll_6
//  855     }
//  856     else
//  857     {
//  858         evt = 0;
//  859     }
//  860 
//  861     if ( evt && cfg->rxCB )
//  862     {
//  863         cfg->rxCB( ((cfg->flag & UART_CFG_U1F)!=0), evt );
        ; Setup parameters for indirect call
        LCALL   ?Subroutine4 & 0xFFFF
??CrossCallReturnLabel_15:
        CLR     A
        MOV     0xE0 /* A   */.0,C
        MOV     R1,A
        MOV     A,R6
        ADD     A,#0x14
        LCALL   ??Subroutine5_0 & 0xFFFF
??CrossCallReturnLabel_26:
        MOV     R0,A
        INC     DPTR
        MOVX    A,@DPTR
        MOV     DPH,A
        MOV     DPL,R0
        LCALL   ?CALL_IND
//  864     }
//  865     }
//  866 
//  867 #if HAL_UART_0_ENABLE
//  868     if ( cfg == cfg0 )
//  869     {
//  870 #if HAL_UART_1_ENABLE
//  871       if ( cfg1 )
//  872       {
//  873         cfg = cfg1;
//  874       }
//  875       else
//  876 #endif
//  877         break;
//  878     }
//  879     else
//  880 #endif
//  881       break;
//  882 
//  883   } while ( TRUE );
//  884 #else
//  885   return;
//  886 #endif
//  887 }
??HalUARTPoll_6:
        MOV     R7,#0x1
        LJMP    ?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock86
        REQUIRE ST0

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine21:
        CFI Block cfiCond87 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_75, ??CrossCallReturnLabel_63
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond88 Using cfiCommon0
        CFI (cfiCond88) NoFunction
        CFI (cfiCond88) Conditional ??CrossCallReturnLabel_75, ??CrossCallReturnLabel_64
        CFI (cfiCond88) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond88) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond88) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond88) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond88) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond88) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond88) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond88) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond88) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond88) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond88) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond88) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond88) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond88) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond88) CFA_SP SP+0
        CFI (cfiCond88) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiCond89 Using cfiCommon0
        CFI (cfiCond89) NoFunction
        CFI (cfiCond89) Conditional ??CrossCallReturnLabel_72, ??CrossCallReturnLabel_49
        CFI (cfiCond89) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond89) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond89) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond89) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond89) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond89) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond89) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond89) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond89) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond89) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond89) CFA_SP SP+0
        CFI (cfiCond89) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond90 Using cfiCommon0
        CFI (cfiCond90) NoFunction
        CFI (cfiCond90) Conditional ??CrossCallReturnLabel_72, ??CrossCallReturnLabel_50
        CFI (cfiCond90) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond90) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond90) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond90) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond90) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond90) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond90) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond90) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond90) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond90) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond90) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond90) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond90) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond90) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond90) CFA_SP SP+0
        CFI (cfiCond90) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiCond91 Using cfiCommon0
        CFI (cfiCond91) NoFunction
        CFI (cfiCond91) Conditional ??CrossCallReturnLabel_73
        CFI (cfiCond91) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond91) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond91) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond91) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond91) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond91) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond91) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond91) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond91) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond91) CFA_SP SP+0
        CFI (cfiCond91) CFA_XSP16 add(XSP16, 9)
        CFI Block cfiCond92 Using cfiCommon0
        CFI (cfiCond92) NoFunction
        CFI (cfiCond92) Conditional ??CrossCallReturnLabel_74
        CFI (cfiCond92) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond92) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond92) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond92) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond92) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond92) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond92) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond92) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond92) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond92) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond92) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond92) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond92) CFA_SP SP+0
        CFI (cfiCond92) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiPicker93 Using cfiCommon1
        CFI (cfiPicker93) NoFunction
        CFI (cfiPicker93) Picker
        MOVX    @DPTR,A
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        RET
        CFI EndBlock cfiCond87
        CFI EndBlock cfiCond88
        CFI EndBlock cfiCond89
        CFI EndBlock cfiCond90
        CFI EndBlock cfiCond91
        CFI EndBlock cfiCond92
        CFI EndBlock cfiPicker93

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine12:
        CFI Block cfiCond94 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_51
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond95 Using cfiCommon0
        CFI (cfiCond95) NoFunction
        CFI (cfiCond95) Conditional ??CrossCallReturnLabel_52
        CFI (cfiCond95) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond95) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond95) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond95) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond95) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond95) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond95) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond95) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond95) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond95) CFA_SP SP+0
        CFI (cfiCond95) CFA_XSP16 add(XSP16, 9)
        CFI Block cfiPicker96 Using cfiCommon1
        CFI (cfiPicker96) NoFunction
        CFI (cfiPicker96) Picker
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R2,A
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        XRL     A,R2
        RET
        CFI EndBlock cfiCond94
        CFI EndBlock cfiCond95
        CFI EndBlock cfiPicker96

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine4:
        CFI Block cfiCond97 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_13
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond98 Using cfiCommon0
        CFI (cfiCond98) NoFunction
        CFI (cfiCond98) Conditional ??CrossCallReturnLabel_14
        CFI (cfiCond98) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond98) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond98) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond98) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond98) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond98) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond98) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond98) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond98) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond98) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond98) CFA_SP SP+0
        CFI (cfiCond98) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond99 Using cfiCommon0
        CFI (cfiCond99) NoFunction
        CFI (cfiCond99) Conditional ??CrossCallReturnLabel_15
        CFI (cfiCond99) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond99) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond99) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond99) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond99) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond99) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond99) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond99) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond99) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond99) CFA_SP SP+0
        CFI (cfiCond99) CFA_XSP16 add(XSP16, 9)
        CFI Block cfiPicker100 Using cfiCommon1
        CFI (cfiPicker100) NoFunction
        CFI (cfiPicker100) Picker
        MOV     A,R6
        ADD     A,#0x13
        LCALL   ?Subroutine23 & 0xFFFF
??CrossCallReturnLabel_77:
        MOVX    A,@DPTR
        MOV     C,0xE0 /* A   */.7
        RET
        CFI EndBlock cfiCond97
        CFI EndBlock cfiCond98
        CFI EndBlock cfiCond99
        CFI EndBlock cfiPicker100

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine3:
        CFI Block cfiCond101 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_11
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond102 Using cfiCommon0
        CFI (cfiCond102) NoFunction
        CFI (cfiCond102) Conditional ??CrossCallReturnLabel_12
        CFI (cfiCond102) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond102) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond102) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond102) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond102) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond102) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond102) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond102) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond102) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond102) CFA_SP SP+0
        CFI (cfiCond102) CFA_XSP16 add(XSP16, 9)
        CFI Block cfiPicker103 Using cfiCommon1
        CFI (cfiPicker103) NoFunction
        CFI (cfiPicker103) Picker
        MOV     DPL,R6
        MOV     DPH,R7
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R0,A
        MOV     A,#-0x30
        ADD     A,R0
        MOV     R0,A
        MOV     A,#-0x1
        ADDC    A,#0x0
        MOV     R1,A
        CLR     C
        MOV     A,R2
        SUBB    A,R0
        CLR     A
        SUBB    A,R1
        MOV     C,0xD0 /* PSW */.2
        XRL     A,PSW
        RLC     A
        RET
        CFI EndBlock cfiCond101
        CFI EndBlock cfiCond102
        CFI EndBlock cfiPicker103

        RSEG XDATA_Z:XDATA:NOROOT(0)
??tickShdw:
        DS 1
        REQUIRE __INIT_XDATA_Z
//  888 
//  889 /**************************************************************************************************
//  890  * @fn      Hal_UART_RxBufLen()
//  891  *
//  892  * @brief   Calculate Rx Buffer length - the number of bytes in the buffer.
//  893  *
//  894  * @param   port - UART port
//  895  *
//  896  * @return  length of current Rx Buffer
//  897  **************************************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  898 uint16 Hal_UART_RxBufLen( uint8 port )
Hal_UART_RxBufLen:
        CFI Block cfiBlock104 Using cfiCommon0
        CFI Function Hal_UART_RxBufLen
//  899 {
        PUSH    DPL
        CFI DPL0 Frame(CFA_SP, 4)
        CFI CFA_SP SP+-4
        PUSH    DPH
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        ; Saved register size: 2
        ; Auto size: 0
        MOV     A,R1
//  900   uartCfg_t *cfg = NULL;
        MOV     R0,#0x0
        MOV     R1,#0x0
//  901 
//  902 #if HAL_UART_0_ENABLE
//  903   if ( port == HAL_UART_PORT_0 )
        JNZ     ??CrossCallReturnLabel_83
//  904   {
//  905     cfg = cfg0;
        LCALL   ?Subroutine14 & 0xFFFF
//  906   }
//  907 #endif
//  908 #if HAL_UART_1_ENABLE
//  909   if ( port == HAL_UART_PORT_1 )
//  910   {
//  911     cfg = cfg1;
//  912   }
//  913 #endif
//  914 
//  915   HAL_UART_ASSERT( cfg );
//  916 
//  917   return UART_RX_AVAIL( cfg );
??CrossCallReturnLabel_83:
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        PUSH    A
        CFI CFA_SP SP+-6
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R2,A
        POP     A
        CFI CFA_SP SP+-5
        CLR     C
        SUBB    A,R2
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        INC     DPTR
        JC      ??Hal_UART_RxBufLen_0
        LCALL   ?Subroutine13 & 0xFFFF
??CrossCallReturnLabel_53:
        MOV     R0,A
        MOV     A,R2
        CLR     C
        SUBB    A,R0
        MOV     R2,A
        CLR     A
        SUBB    A,#0x0
        SJMP    ??Hal_UART_RxBufLen_1
??Hal_UART_RxBufLen_0:
        INC     DPTR
        INC     DPTR
        LCALL   ?Subroutine13 & 0xFFFF
??CrossCallReturnLabel_54:
        MOV     R4,A
        MOV     A,R2
        CLR     C
        SUBB    A,R4
        MOV     R2,A
        CLR     A
        SUBB    A,#0x0
        MOV     R3,A
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        ADD     A,R2
        MOV     R0,A
        CLR     A
        ADDC    A,R3
        MOV     R1,A
        MOV     A,#0x1
        ADD     A,R0
        MOV     R2,A
        CLR     A
        ADDC    A,R1
??Hal_UART_RxBufLen_1:
        MOV     R3,A
        LJMP    ?Subroutine25 & 0xFFFF
        CFI EndBlock cfiBlock104
//  918 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine13:
        CFI Block cfiCond105 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_53
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        CFI Block cfiCond106 Using cfiCommon0
        CFI (cfiCond106) NoFunction
        CFI (cfiCond106) Conditional ??CrossCallReturnLabel_54
        CFI (cfiCond106) DPL0 Frame(CFA_SP, 4)
        CFI (cfiCond106) DPH0 Frame(CFA_SP, 5)
        CFI (cfiCond106) CFA_SP SP+-5
        CFI Block cfiPicker107 Using cfiCommon1
        CFI (cfiPicker107) NoFunction
        CFI (cfiPicker107) Picker
        MOVX    A,@DPTR
        MOV     R2,A
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        RET
        CFI EndBlock cfiCond105
        CFI EndBlock cfiCond106
        CFI EndBlock cfiPicker107
//  919 
//  920 /*****************************************************************************
//  921  * @fn      HalUARTRead
//  922  *
//  923  * @brief   Read a buffer from the UART
//  924  *
//  925  * @param   port - USART module designation
//  926  *          buf  - valid data buffer at least 'len' bytes in size
//  927  *          len  - max length number of bytes to copy to 'buf'
//  928  *
//  929  * @return  length of buffer that was read
//  930  *****************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
//  931 uint16 HalUARTRead( uint8 port, uint8 *buf, uint16 len )
HalUARTRead:
        CFI Block cfiBlock108 Using cfiCommon0
        CFI Function HalUARTRead
//  932 {
        MOV     A,#-0xc
        LCALL   ?BANKED_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 12)
        ; Saved register size: 12
        ; Auto size: 0
        MOV     A,R1
//  933   uartCfg_t *cfg = NULL;
        MOV     R0,#0x0
        MOV     R1,#0x0
//  934   uint8 cnt = 0;
        MOV     ?V0 + 2,R0
//  935 
//  936 #if HAL_UART_0_ENABLE
//  937   if ( port == HAL_UART_PORT_0 )
        JNZ     ??HalUARTRead_0
//  938   {
//  939     cfg = cfg0;
        LCALL   ?Subroutine14 & 0xFFFF
??CrossCallReturnLabel_84:
        SJMP    ??HalUARTRead_0
//  940   }
//  941 #endif
//  942 #if HAL_UART_1_ENABLE
//  943   if ( port == HAL_UART_PORT_1 )
//  944   {
//  945     cfg = cfg1;
//  946   }
//  947 #endif
//  948 
//  949   HAL_UART_ASSERT( cfg );
//  950 
//  951   while ( (cfg->rxTail != cfg->rxHead) && (cnt < len) )
//  952   {
//  953     *buf++ = cfg->rxBuf[cfg->rxTail];
//  954     if ( cfg->rxTail == cfg->rxMax )
//  955     {
//  956       cfg->rxTail = 0;
//  957     }
//  958     else
//  959     {
//  960       cfg->rxTail++;
??HalUARTRead_1:
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        INC     A
??HalUARTRead_2:
        MOVX    @DPTR,A
//  961     }
//  962     cnt++;
        INC     ?V0 + 2
??HalUARTRead_0:
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        INC     DPTR
        INC     DPTR
        LCALL   ?Subroutine17 & 0xFFFF
??CrossCallReturnLabel_61:
        MOVX    A,@DPTR
        XRL     A,R6
        JZ      ??HalUARTRead_3
        MOV     ?V0 + 0,?V0 + 2
        CLR     C
        MOV     A,?V0 + 0
        SUBB    A,R4
        CLR     A
        SUBB    A,R5
        JNC     ??HalUARTRead_3
        MOV     A,R0
        ADD     A,#0x3
        MOV     R6,A
        MOV     A,R1
        ADDC    A,#0x0
        MOV     R7,A
        MOV     DPL,R6
        MOV     DPH,R7
        MOVX    A,@DPTR
        MOV     ?V0 + 0,A
        MOV     DPL,R0
        MOV     DPH,R1
        MOVX    A,@DPTR
        ADD     A,?V0 + 0
        MOV     ?V0 + 3,A
        INC     DPTR
        MOVX    A,@DPTR
        ADDC    A,#0x0
        MOV     DPL,?V0 + 3
        MOV     DPH,A
        MOVX    A,@DPTR
        MOV     DPL,R2
        MOV     DPH,R3
        MOVX    @DPTR,A
        INC     DPTR
        MOV     R2,DPL
        MOV     R3,DPH
        MOV     DPL,R6
        MOV     DPH,R7
        LCALL   ?Subroutine17 & 0xFFFF
??CrossCallReturnLabel_62:
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        XRL     A,R6
        JNZ     ??HalUARTRead_1
        CLR     A
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        INC     DPTR
        INC     DPTR
        SJMP    ??HalUARTRead_2
//  963   }
//  964 
//  965 #if HAL_UART_DMA
//  966   #if HAL_UART_ISR
//  967   if ( cfg->flag & UART_CFG_DMA )
//  968   #endif
//  969   {
//  970     /* If there is no flow control on a DMA-driven UART, the Rx Head & Tail
//  971      * pointers must be reset to zero after every read in order to preserve the
//  972      * full length of the Rx buffer. This implies that every Read must read all
//  973      * of the Rx bytes available, or the pointers will not be reset and the
//  974      * next incoming packet may not fit in the Rx buffer space remaining - thus
//  975      * the end portion of the incoming packet that does not fit would be lost.
//  976      */
//  977     if ( !(cfg->flag & UART_CFG_FLW) )
??HalUARTRead_3:
        MOV     A,R0
        ADD     A,#0x13
        MOV     DPL,A
        MOV     A,R1
        LCALL   ??Subroutine5_1 & 0xFFFF
??CrossCallReturnLabel_27:
        MOV     C,0xE0 /* A   */.5
        JC      ??HalUARTRead_4
//  978     {
//  979       // This is a trick to trigger the DMA abort and restart logic in pollDMA.
//  980       cfg->flag |= UART_CFG_RXF;
        SETB    0xE0 /* A   */.1
        MOVX    @DPTR,A
//  981     }
//  982   }
//  983 #endif
//  984 
//  985 #if HAL_UART_ISR
//  986   #if HAL_UART_DMA
//  987   if ( !(cfg->flag & UART_CFG_DMA) )
//  988   #endif
//  989   {
//  990     cfg->rxCnt = UART_RX_AVAIL( cfg );
//  991 
//  992     if ( cfg->flag & UART_CFG_RXF )
//  993     {
//  994       if ( cfg->rxCnt < (cfg->rxMax - SAFE_RX_MIN) )
//  995       {
//  996         RX_STRT_FLOW( cfg );
//  997       }
//  998     }
//  999   }
// 1000 #endif
// 1001 
// 1002   return cnt;
??HalUARTRead_4:
        MOV     R2,?V0 + 2
        MOV     R3,#0x0
        CFI EndBlock cfiBlock108
        REQUIRE ?Subroutine26
        ; // Fall through to label ?Subroutine26
// 1003 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine26:
        CFI Block cfiBlock109 Using cfiCommon0
        CFI NoFunction
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 12)
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        MOV     R7,#0x4
        LJMP    ?BANKED_LEAVE_XDATA
        CFI EndBlock cfiBlock109

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine17:
        CFI Block cfiCond110 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_61
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond111 Using cfiCommon0
        CFI (cfiCond111) NoFunction
        CFI (cfiCond111) Conditional ??CrossCallReturnLabel_62
        CFI (cfiCond111) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond111) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond111) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond111) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond111) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond111) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond111) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond111) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond111) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond111) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond111) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond111) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond111) CFA_SP SP+0
        CFI (cfiCond111) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiPicker112 Using cfiCommon1
        CFI (cfiPicker112) NoFunction
        CFI (cfiPicker112) Picker
        MOVX    A,@DPTR
        MOV     R6,A
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        INC     DPTR
        RET
        CFI EndBlock cfiCond110
        CFI EndBlock cfiCond111
        CFI EndBlock cfiPicker112

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine14:
        CFI Block cfiCond113 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_83
        CFI DPL0 Frame(CFA_SP, 4)
        CFI DPH0 Frame(CFA_SP, 5)
        CFI CFA_SP SP+-5
        CFI Block cfiCond114 Using cfiCommon0
        CFI (cfiCond114) NoFunction
        CFI (cfiCond114) Conditional ??CrossCallReturnLabel_84
        CFI (cfiCond114) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond114) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond114) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond114) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond114) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond114) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond114) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond114) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond114) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond114) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond114) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond114) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond114) CFA_SP SP+0
        CFI (cfiCond114) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond115 Using cfiCommon0
        CFI (cfiCond115) NoFunction
        CFI (cfiCond115) Conditional ??CrossCallReturnLabel_85
        CFI (cfiCond115) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond115) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond115) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond115) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond115) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond115) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond115) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond115) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond115) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond115) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond115) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond115) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond115) CFA_SP SP+0
        CFI (cfiCond115) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiPicker116 Using cfiCommon1
        CFI (cfiPicker116) NoFunction
        CFI (cfiPicker116) Picker
        MOV     DPTR,#cfg0
        LJMP    ?Subroutine24 & 0xFFFF
        CFI EndBlock cfiCond113
        CFI EndBlock cfiCond114
        CFI EndBlock cfiCond115
        CFI EndBlock cfiPicker116
// 1004 
// 1005 /******************************************************************************
// 1006  * @fn      HalUARTWrite
// 1007  *
// 1008  * @brief   Write a buffer to the UART.
// 1009  *
// 1010  * @param   port    - UART port
// 1011  *          pBuffer - pointer to the buffer that will be written, not freed
// 1012  *          length  - length of
// 1013  *
// 1014  * @return  length of the buffer that was sent
// 1015  *****************************************************************************/

        RSEG BANKED_CODE:CODE:NOROOT(0)
// 1016 uint16 HalUARTWrite( uint8 port, uint8 *buf, uint16 len )
HalUARTWrite:
        CFI Block cfiBlock117 Using cfiCommon0
        CFI Function HalUARTWrite
// 1017 {
        MOV     A,#-0xc
        LCALL   ?BANKED_ENTER_XDATA
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 12)
        ; Saved register size: 12
        ; Auto size: 0
        MOV     ?V0 + 0,R1
        MOV     A,R2
        MOV     R6,A
        MOV     A,R3
        MOV     R7,A
        MOV     A,R4
        MOV     R2,A
        MOV     A,R5
        MOV     R3,A
// 1018   uartCfg_t *cfg = NULL;
        MOV     R0,#0x0
        MOV     R1,#0x0
// 1019   uint8 cnt;
// 1020 
// 1021 #if HAL_UART_0_ENABLE
// 1022   if ( port == HAL_UART_PORT_0 )
        MOV     A,?V0 + 0
        JNZ     ??CrossCallReturnLabel_85
// 1023   {
// 1024     cfg = cfg0;
        LCALL   ?Subroutine14 & 0xFFFF
// 1025   }
// 1026 #endif
// 1027 #if HAL_UART_1_ENABLE
// 1028   if ( port == HAL_UART_PORT_1 )
// 1029   {
// 1030     cfg = cfg1;
// 1031   }
// 1032 #endif
// 1033 
// 1034   HAL_UART_ASSERT( cfg );
// 1035 
// 1036   if ( cfg->txHead == cfg->txTail )
??CrossCallReturnLabel_85:
        LCALL   ?Subroutine15 & 0xFFFF
??CrossCallReturnLabel_55:
        LCALL   ?Subroutine20 & 0xFFFF
??CrossCallReturnLabel_67:
        LCALL   ??Subroutine5_1 & 0xFFFF
??CrossCallReturnLabel_28:
        XRL     A,R4
        JNZ     ??HalUARTWrite_0
        INC     DPTR
        MOVX    A,@DPTR
        XRL     A,R5
??HalUARTWrite_0:
        JNZ     ??HalUARTWrite_1
// 1037   {
// 1038 #if HAL_UART_DMA
// 1039     // When pointers are equal, reset to zero to get max len w/out wrapping.
// 1040     cfg->txHead = cfg->txTail = 0;
        LCALL   ?Subroutine20 & 0xFFFF
??CrossCallReturnLabel_68:
        LCALL   ?Subroutine7 & 0xFFFF
??CrossCallReturnLabel_36:
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    @DPTR,A
        INC     DPTR
        MOVX    @DPTR,A
        MOV     A,R0
        ADD     A,#0xe
        MOV     DPL,A
        MOV     A,R1
        LCALL   ??Subroutine5_1 & 0xFFFF
??CrossCallReturnLabel_29:
        ADD     A,#-0x1
        MOV     R4,A
        INC     DPTR
        MOVX    A,@DPTR
        ADDC    A,#-0x1
        SJMP    ??HalUARTWrite_2
// 1041 #endif
// 1042 #if HAL_UART_ISR
// 1043 #if HAL_UART_DMA
// 1044     if ( !(cfg->flag & UART_CFG_DMA) )
// 1045 #endif
// 1046     {
// 1047       cfg->flag &= ~UART_CFG_TXF;
// 1048     }
// 1049 #endif
// 1050   }
// 1051 
// 1052   // Accept "all-or-none" on write request.
// 1053   if ( TX_AVAIL( cfg ) < len )
??HalUARTWrite_1:
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        PUSH    DPL
        CFI CFA_SP SP+-1
        PUSH    DPH
        CFI CFA_SP SP+-2
        LCALL   ?Subroutine20 & 0xFFFF
??CrossCallReturnLabel_69:
        LCALL   ??Subroutine5_1 & 0xFFFF
??CrossCallReturnLabel_30:
        MOV     R4,A
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R5,A
        POP     DPH
        CFI CFA_SP SP+-1
        POP     DPL
        CFI CFA_SP SP+0
        CLR     C
        MOVX    A,@DPTR
        SUBB    A,R4
        INC     DPTR
        MOVX    A,@DPTR
        SUBB    A,R5
        MOV     A,R0
        JNC     ??HalUARTWrite_3
        LCALL   ??Subroutine20_0 & 0xFFFF
??CrossCallReturnLabel_70:
        LCALL   ??Subroutine8_1 & 0xFFFF
??CrossCallReturnLabel_43:
        PUSH    DPL
        CFI CFA_SP SP+-1
        PUSH    DPH
        CFI CFA_SP SP+-2
        LCALL   ?Subroutine15 & 0xFFFF
??CrossCallReturnLabel_56:
        POP     DPH
        CFI CFA_SP SP+-1
        POP     DPL
        CFI CFA_SP SP+0
        LCALL   ?Subroutine16 & 0xFFFF
??CrossCallReturnLabel_59:
        MOV     A,#-0x1
        ADD     A,R4
        DEC     R4
        MOV     A,#-0x1
        SJMP    ??HalUARTWrite_4
??HalUARTWrite_3:
        ADD     A,#0xe
        MOV     DPL,A
        MOV     A,R1
        LCALL   ??Subroutine8_1 & 0xFFFF
??CrossCallReturnLabel_44:
        PUSH    DPL
        CFI CFA_SP SP+-1
        PUSH    DPH
        CFI CFA_SP SP+-2
        LCALL   ?Subroutine15 & 0xFFFF
??CrossCallReturnLabel_57:
        POP     DPH
        CFI CFA_SP SP+-1
        POP     DPL
        CFI CFA_SP SP+0
        LCALL   ?Subroutine16 & 0xFFFF
??CrossCallReturnLabel_60:
        LCALL   ?Subroutine20 & 0xFFFF
??CrossCallReturnLabel_71:
        LCALL   ??Subroutine5_1 & 0xFFFF
??CrossCallReturnLabel_31:
        ADD     A,R4
        MOV     R4,A
        INC     DPTR
        MOVX    A,@DPTR
??HalUARTWrite_4:
        ADDC    A,R5
??HalUARTWrite_2:
        MOV     R5,A
        CLR     C
        MOV     A,R4
        SUBB    A,R2
        MOV     A,R5
        SUBB    A,R3
        JNC     ??HalUARTWrite_5
// 1054   {
// 1055     return 0;
        MOV     R2,#0x0
        MOV     R3,#0x0
        SJMP    ??HalUARTWrite_6
// 1056   }
// 1057 
// 1058   for ( cnt = len; cnt; cnt-- )
??HalUARTWrite_5:
        MOV     A,R2
        MOV     ?V0 + 3,A
        SJMP    ??HalUARTWrite_7
// 1059   {
// 1060     cfg->txBuf[ cfg->txHead ] = *buf++;
// 1061 
// 1062     if ( cfg->txHead == cfg->txMax )
// 1063     {
// 1064       cfg->txHead = 0;
// 1065     }
// 1066     else
// 1067     {
// 1068       cfg->txHead++;
??HalUARTWrite_8:
        MOVX    A,@DPTR
        ADD     A,#0x1
        MOVX    @DPTR,A
        INC     DPTR
        MOVX    A,@DPTR
        ADDC    A,#0x0
??HalUARTWrite_9:
        MOVX    @DPTR,A
// 1069     }
        DEC     ?V0 + 3
??HalUARTWrite_7:
        MOV     A,?V0 + 3
        JZ      ??HalUARTWrite_6
        MOV     A,R0
        ADD     A,#0xa
        MOV     R4,A
        MOV     A,R1
        ADDC    A,#0x0
        MOV     R5,A
        MOV     DPL,R6
        MOV     DPH,R7
        MOVX    A,@DPTR
        PUSH    A
        CFI CFA_SP SP+-1
        MOV     DPL,R4
        MOV     DPH,R5
        MOVX    A,@DPTR
        MOV     ?V0 + 0,A
        INC     DPTR
        MOVX    A,@DPTR
        MOV     ?V0 + 1,A
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        MOVX    A,@DPTR
        ADD     A,?V0 + 0
        MOV     ?V0 + 2,A
        INC     DPTR
        MOVX    A,@DPTR
        ADDC    A,?V0 + 1
        MOV     DPL,?V0 + 2
        MOV     DPH,A
        POP     A
        CFI CFA_SP SP+0
        LCALL   ?Subroutine21 & 0xFFFF
??CrossCallReturnLabel_74:
        MOV     R6,DPL
        MOV     R7,DPH
        MOV     DPL,R4
        MOV     DPH,R5
        LCALL   ??Subroutine15_0 & 0xFFFF
??CrossCallReturnLabel_58:
        MOV     A,R0
        ADD     A,#0xe
        MOV     DPL,A
        MOV     A,R1
        LCALL   ??Subroutine5_1 & 0xFFFF
??CrossCallReturnLabel_32:
        XRL     A,R4
        JNZ     ??HalUARTWrite_10
        INC     DPTR
        MOVX    A,@DPTR
        XRL     A,R5
??HalUARTWrite_10:
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        JNZ     ??HalUARTWrite_8
        CLR     A
        MOVX    @DPTR,A
        INC     DPTR
        SJMP    ??HalUARTWrite_9
// 1070   }
// 1071 
// 1072 #if HAL_UART_ISR
// 1073 #if HAL_UART_DMA
// 1074   if ( !(cfg->flag & UART_CFG_DMA) )
// 1075 #endif
// 1076   {
// 1077     if ( !(cfg->flag & UART_CFG_TXF) && len )
// 1078     {
// 1079       cfg->flag |= UART_CFG_TXF;
// 1080       if ( !(cfg->flag & UART_CFG_U1F) )
// 1081       {
// 1082         U0DBUF = cfg->txBuf[cfg->txTail];
// 1083       }
// 1084       else
// 1085       {
// 1086         U1DBUF = cfg->txBuf[cfg->txTail];
// 1087       }
// 1088     }
// 1089   }
// 1090 #endif
// 1091 
// 1092   return len;
??HalUARTWrite_6:
        LJMP    ?Subroutine26 & 0xFFFF
        CFI EndBlock cfiBlock117
// 1093 }

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine20:
        CFI Block cfiCond118 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_67
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond119 Using cfiCommon0
        CFI (cfiCond119) NoFunction
        CFI (cfiCond119) Conditional ??CrossCallReturnLabel_68
        CFI (cfiCond119) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond119) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond119) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond119) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond119) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond119) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond119) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond119) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond119) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond119) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond119) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond119) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond119) CFA_SP SP+0
        CFI (cfiCond119) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond120 Using cfiCommon0
        CFI (cfiCond120) NoFunction
        CFI (cfiCond120) Conditional ??CrossCallReturnLabel_69
        CFI (cfiCond120) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond120) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond120) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond120) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond120) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond120) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond120) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond120) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond120) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond120) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond120) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond120) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond120) CFA_SP SP+-2
        CFI (cfiCond120) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond121 Using cfiCommon0
        CFI (cfiCond121) NoFunction
        CFI (cfiCond121) Conditional ??CrossCallReturnLabel_71
        CFI (cfiCond121) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond121) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond121) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond121) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond121) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond121) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond121) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond121) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond121) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond121) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond121) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond121) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond121) CFA_SP SP+0
        CFI (cfiCond121) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiPicker122 Using cfiCommon1
        CFI (cfiPicker122) NoFunction
        CFI (cfiPicker122) Picker
        MOV     A,R0
        CFI Block cfiCond123 Using cfiCommon0
        CFI (cfiCond123) NoFunction
        CFI (cfiCond123) Conditional ??CrossCallReturnLabel_70
        CFI (cfiCond123) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond123) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond123) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond123) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond123) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond123) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond123) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond123) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond123) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond123) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond123) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond123) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond123) CFA_SP SP+0
        CFI (cfiCond123) CFA_XSP16 add(XSP16, 12)
??Subroutine20_0:
        ADD     A,#0xc
        MOV     DPL,A
        MOV     A,R1
        RET
        CFI EndBlock cfiCond118
        CFI EndBlock cfiCond119
        CFI EndBlock cfiCond120
        CFI EndBlock cfiCond121
        CFI EndBlock cfiPicker122
        CFI EndBlock cfiCond123

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine16:
        CFI Block cfiCond124 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_59
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond125 Using cfiCommon0
        CFI (cfiCond125) NoFunction
        CFI (cfiCond125) Conditional ??CrossCallReturnLabel_60
        CFI (cfiCond125) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond125) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond125) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond125) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond125) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond125) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond125) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond125) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond125) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond125) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond125) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond125) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond125) CFA_SP SP+0
        CFI (cfiCond125) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiPicker126 Using cfiCommon1
        CFI (cfiPicker126) NoFunction
        CFI (cfiPicker126) Picker
        MOVX    A,@DPTR
        CLR     C
        SUBB    A,R4
        MOV     R4,A
        INC     DPTR
        MOVX    A,@DPTR
        SUBB    A,R5
        MOV     R5,A
        RET
        CFI EndBlock cfiCond124
        CFI EndBlock cfiCond125
        CFI EndBlock cfiPicker126

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine15:
        CFI Block cfiCond127 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_55
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond128 Using cfiCommon0
        CFI (cfiCond128) NoFunction
        CFI (cfiCond128) Conditional ??CrossCallReturnLabel_56
        CFI (cfiCond128) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond128) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond128) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond128) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond128) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond128) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond128) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond128) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond128) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond128) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond128) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond128) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond128) CFA_SP SP+-2
        CFI (cfiCond128) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond129 Using cfiCommon0
        CFI (cfiCond129) NoFunction
        CFI (cfiCond129) Conditional ??CrossCallReturnLabel_57
        CFI (cfiCond129) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond129) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond129) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond129) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond129) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond129) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond129) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond129) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond129) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond129) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond129) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond129) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond129) CFA_SP SP+-2
        CFI (cfiCond129) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiPicker130 Using cfiCommon1
        CFI (cfiPicker130) NoFunction
        CFI (cfiPicker130) Picker
        MOV     DPL,R0
        MOV     DPH,R1
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        INC     DPTR
        CFI Block cfiCond131 Using cfiCommon0
        CFI (cfiCond131) NoFunction
        CFI (cfiCond131) Conditional ??CrossCallReturnLabel_58
        CFI (cfiCond131) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond131) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond131) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond131) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond131) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond131) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond131) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond131) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond131) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond131) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond131) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond131) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond131) CFA_SP SP+0
        CFI (cfiCond131) CFA_XSP16 add(XSP16, 12)
??Subroutine15_0:
        MOVX    A,@DPTR
        MOV     R4,A
        INC     DPTR
        MOVX    A,@DPTR
        MOV     R5,A
        RET
        CFI EndBlock cfiCond127
        CFI EndBlock cfiCond128
        CFI EndBlock cfiCond129
        CFI EndBlock cfiPicker130
        CFI EndBlock cfiCond131

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine7:
        CFI Block cfiCond132 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_35
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 15)
        CFI Block cfiCond133 Using cfiCommon0
        CFI (cfiCond133) NoFunction
        CFI (cfiCond133) Conditional ??CrossCallReturnLabel_36
        CFI (cfiCond133) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond133) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond133) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond133) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond133) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond133) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond133) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond133) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond133) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond133) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond133) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond133) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond133) CFA_SP SP+0
        CFI (cfiCond133) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiPicker134 Using cfiCommon1
        CFI (cfiPicker134) NoFunction
        CFI (cfiPicker134) Picker
        LCALL   ??Subroutine23_0 & 0xFFFF
??CrossCallReturnLabel_79:
        CLR     A
        MOVX    @DPTR,A
        INC     DPTR
        MOVX    @DPTR,A
        RET
        CFI EndBlock cfiCond132
        CFI EndBlock cfiCond133
        CFI EndBlock cfiPicker134

        RSEG BANKED_CODE:CODE:NOROOT(0)
?Subroutine23:
        CFI Block cfiCond135 Using cfiCommon0
        CFI NoFunction
        CFI Conditional ??CrossCallReturnLabel_76, ??CrossCallReturnLabel_8
        CFI R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI CFA_SP SP+0
        CFI CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond136 Using cfiCommon0
        CFI (cfiCond136) NoFunction
        CFI (cfiCond136) Conditional ??CrossCallReturnLabel_76, ??CrossCallReturnLabel_9
        CFI (cfiCond136) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond136) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond136) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond136) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond136) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond136) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond136) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond136) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond136) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond136) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond136) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond136) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond136) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond136) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond136) CFA_SP SP+0
        CFI (cfiCond136) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiCond137 Using cfiCommon0
        CFI (cfiCond137) NoFunction
        CFI (cfiCond137) Conditional ??CrossCallReturnLabel_76, ??CrossCallReturnLabel_10
        CFI (cfiCond137) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond137) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond137) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond137) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond137) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond137) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond137) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond137) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond137) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond137) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond137) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond137) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond137) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond137) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond137) CFA_SP SP+0
        CFI (cfiCond137) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiCond138 Using cfiCommon0
        CFI (cfiCond138) NoFunction
        CFI (cfiCond138) Conditional ??CrossCallReturnLabel_77, ??CrossCallReturnLabel_13
        CFI (cfiCond138) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond138) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond138) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond138) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond138) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond138) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond138) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond138) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond138) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond138) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond138) CFA_SP SP+0
        CFI (cfiCond138) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond139 Using cfiCommon0
        CFI (cfiCond139) NoFunction
        CFI (cfiCond139) Conditional ??CrossCallReturnLabel_77, ??CrossCallReturnLabel_14
        CFI (cfiCond139) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond139) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond139) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond139) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond139) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond139) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond139) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond139) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond139) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond139) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond139) CFA_SP SP+0
        CFI (cfiCond139) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond140 Using cfiCommon0
        CFI (cfiCond140) NoFunction
        CFI (cfiCond140) Conditional ??CrossCallReturnLabel_77, ??CrossCallReturnLabel_15
        CFI (cfiCond140) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond140) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond140) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond140) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond140) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond140) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond140) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond140) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond140) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond140) CFA_SP SP+0
        CFI (cfiCond140) CFA_XSP16 add(XSP16, 9)
        CFI Block cfiPicker141 Using cfiCommon1
        CFI (cfiPicker141) NoFunction
        CFI (cfiPicker141) Picker
        MOV     DPL,A
        MOV     A,R7
        CFI Block cfiCond142 Using cfiCommon0
        CFI (cfiCond142) NoFunction
        CFI (cfiCond142) Conditional ??CrossCallReturnLabel_80, ??CrossCallReturnLabel_38
        CFI (cfiCond142) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond142) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond142) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond142) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond142) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond142) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond142) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond142) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond142) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond142) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond142) CFA_SP SP+0
        CFI (cfiCond142) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond143 Using cfiCommon0
        CFI (cfiCond143) NoFunction
        CFI (cfiCond143) Conditional ??CrossCallReturnLabel_80, ??CrossCallReturnLabel_41
        CFI (cfiCond143) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond143) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond143) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond143) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond143) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond143) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond143) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond143) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond143) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond143) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond143) CFA_SP SP+0
        CFI (cfiCond143) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond144 Using cfiCommon0
        CFI (cfiCond144) NoFunction
        CFI (cfiCond144) Conditional ??CrossCallReturnLabel_80, ??CrossCallReturnLabel_37
        CFI (cfiCond144) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond144) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond144) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond144) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond144) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond144) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond144) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond144) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond144) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond144) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond144) CFA_SP SP+0
        CFI (cfiCond144) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond145 Using cfiCommon0
        CFI (cfiCond145) NoFunction
        CFI (cfiCond145) Conditional ??CrossCallReturnLabel_80, ??CrossCallReturnLabel_39
        CFI (cfiCond145) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond145) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond145) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond145) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond145) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond145) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond145) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond145) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond145) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond145) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond145) CFA_SP SP+0
        CFI (cfiCond145) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond146 Using cfiCommon0
        CFI (cfiCond146) NoFunction
        CFI (cfiCond146) Conditional ??CrossCallReturnLabel_80, ??CrossCallReturnLabel_40
        CFI (cfiCond146) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond146) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond146) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond146) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond146) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond146) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond146) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond146) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond146) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond146) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond146) CFA_SP SP+0
        CFI (cfiCond146) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond147 Using cfiCommon0
        CFI (cfiCond147) NoFunction
        CFI (cfiCond147) Conditional ??CrossCallReturnLabel_80, ??CrossCallReturnLabel_42
        CFI (cfiCond147) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond147) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond147) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond147) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond147) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond147) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond147) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond147) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond147) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond147) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond147) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond147) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond147) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond147) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond147) CFA_SP SP+0
        CFI (cfiCond147) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiCond148 Using cfiCommon0
        CFI (cfiCond148) NoFunction
        CFI (cfiCond148) Conditional ??CrossCallReturnLabel_80, ??CrossCallReturnLabel_43
        CFI (cfiCond148) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond148) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond148) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond148) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond148) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond148) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond148) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond148) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond148) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond148) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond148) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond148) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond148) CFA_SP SP+0
        CFI (cfiCond148) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond149 Using cfiCommon0
        CFI (cfiCond149) NoFunction
        CFI (cfiCond149) Conditional ??CrossCallReturnLabel_80, ??CrossCallReturnLabel_44
        CFI (cfiCond149) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond149) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond149) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond149) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond149) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond149) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond149) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond149) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond149) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond149) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond149) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond149) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond149) CFA_SP SP+0
        CFI (cfiCond149) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond150 Using cfiCommon0
        CFI (cfiCond150) NoFunction
        CFI (cfiCond150) Conditional ??CrossCallReturnLabel_78, ??CrossCallReturnLabel_16
        CFI (cfiCond150) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond150) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond150) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond150) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond150) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond150) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond150) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond150) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond150) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond150) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond150) CFA_SP SP+0
        CFI (cfiCond150) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond151 Using cfiCommon0
        CFI (cfiCond151) NoFunction
        CFI (cfiCond151) Conditional ??CrossCallReturnLabel_78, ??CrossCallReturnLabel_17
        CFI (cfiCond151) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond151) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond151) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond151) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond151) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond151) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond151) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond151) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond151) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond151) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond151) CFA_SP SP+0
        CFI (cfiCond151) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond152 Using cfiCommon0
        CFI (cfiCond152) NoFunction
        CFI (cfiCond152) Conditional ??CrossCallReturnLabel_78, ??CrossCallReturnLabel_18
        CFI (cfiCond152) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond152) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond152) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond152) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond152) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond152) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond152) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond152) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond152) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond152) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond152) CFA_SP SP+0
        CFI (cfiCond152) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond153 Using cfiCommon0
        CFI (cfiCond153) NoFunction
        CFI (cfiCond153) Conditional ??CrossCallReturnLabel_78, ??CrossCallReturnLabel_20
        CFI (cfiCond153) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond153) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond153) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond153) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond153) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond153) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond153) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond153) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond153) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond153) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond153) CFA_SP SP+0
        CFI (cfiCond153) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond154 Using cfiCommon0
        CFI (cfiCond154) NoFunction
        CFI (cfiCond154) Conditional ??CrossCallReturnLabel_78, ??CrossCallReturnLabel_22
        CFI (cfiCond154) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond154) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond154) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond154) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond154) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond154) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond154) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond154) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond154) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond154) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond154) CFA_SP SP+0
        CFI (cfiCond154) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond155 Using cfiCommon0
        CFI (cfiCond155) NoFunction
        CFI (cfiCond155) Conditional ??CrossCallReturnLabel_78, ??CrossCallReturnLabel_23
        CFI (cfiCond155) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond155) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond155) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond155) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond155) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond155) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond155) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond155) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond155) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond155) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond155) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond155) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond155) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond155) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond155) CFA_SP SP+0
        CFI (cfiCond155) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiCond156 Using cfiCommon0
        CFI (cfiCond156) NoFunction
        CFI (cfiCond156) Conditional ??CrossCallReturnLabel_78, ??CrossCallReturnLabel_19
        CFI (cfiCond156) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond156) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond156) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond156) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond156) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond156) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond156) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond156) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond156) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond156) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond156) CFA_SP SP+0
        CFI (cfiCond156) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond157 Using cfiCommon0
        CFI (cfiCond157) NoFunction
        CFI (cfiCond157) Conditional ??CrossCallReturnLabel_78, ??CrossCallReturnLabel_21
        CFI (cfiCond157) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond157) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond157) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond157) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond157) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond157) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond157) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond157) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond157) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond157) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond157) CFA_SP SP+0
        CFI (cfiCond157) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond158 Using cfiCommon0
        CFI (cfiCond158) NoFunction
        CFI (cfiCond158) Conditional ??CrossCallReturnLabel_78, ??CrossCallReturnLabel_24
        CFI (cfiCond158) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond158) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond158) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond158) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond158) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond158) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond158) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond158) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond158) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond158) CFA_SP SP+0
        CFI (cfiCond158) CFA_XSP16 add(XSP16, 9)
        CFI Block cfiCond159 Using cfiCommon0
        CFI (cfiCond159) NoFunction
        CFI (cfiCond159) Conditional ??CrossCallReturnLabel_78, ??CrossCallReturnLabel_25
        CFI (cfiCond159) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond159) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond159) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond159) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond159) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond159) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond159) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond159) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond159) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond159) CFA_SP SP+0
        CFI (cfiCond159) CFA_XSP16 add(XSP16, 9)
        CFI Block cfiCond160 Using cfiCommon0
        CFI (cfiCond160) NoFunction
        CFI (cfiCond160) Conditional ??CrossCallReturnLabel_78, ??CrossCallReturnLabel_26
        CFI (cfiCond160) R6 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond160) VB load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond160) V0 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond160) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond160) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond160) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond160) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond160) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond160) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond160) CFA_SP SP+0
        CFI (cfiCond160) CFA_XSP16 add(XSP16, 9)
        CFI Block cfiCond161 Using cfiCommon0
        CFI (cfiCond161) NoFunction
        CFI (cfiCond161) Conditional ??CrossCallReturnLabel_78, ??CrossCallReturnLabel_27
        CFI (cfiCond161) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond161) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond161) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond161) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond161) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond161) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond161) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond161) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond161) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond161) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond161) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond161) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond161) CFA_SP SP+0
        CFI (cfiCond161) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond162 Using cfiCommon0
        CFI (cfiCond162) NoFunction
        CFI (cfiCond162) Conditional ??CrossCallReturnLabel_78, ??CrossCallReturnLabel_28
        CFI (cfiCond162) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond162) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond162) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond162) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond162) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond162) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond162) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond162) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond162) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond162) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond162) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond162) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond162) CFA_SP SP+0
        CFI (cfiCond162) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond163 Using cfiCommon0
        CFI (cfiCond163) NoFunction
        CFI (cfiCond163) Conditional ??CrossCallReturnLabel_78, ??CrossCallReturnLabel_29
        CFI (cfiCond163) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond163) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond163) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond163) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond163) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond163) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond163) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond163) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond163) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond163) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond163) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond163) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond163) CFA_SP SP+0
        CFI (cfiCond163) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond164 Using cfiCommon0
        CFI (cfiCond164) NoFunction
        CFI (cfiCond164) Conditional ??CrossCallReturnLabel_78, ??CrossCallReturnLabel_30
        CFI (cfiCond164) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond164) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond164) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond164) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond164) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond164) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond164) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond164) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond164) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond164) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond164) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond164) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond164) CFA_SP SP+-2
        CFI (cfiCond164) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond165 Using cfiCommon0
        CFI (cfiCond165) NoFunction
        CFI (cfiCond165) Conditional ??CrossCallReturnLabel_78, ??CrossCallReturnLabel_31
        CFI (cfiCond165) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond165) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond165) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond165) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond165) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond165) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond165) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond165) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond165) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond165) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond165) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond165) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond165) CFA_SP SP+0
        CFI (cfiCond165) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond166 Using cfiCommon0
        CFI (cfiCond166) NoFunction
        CFI (cfiCond166) Conditional ??CrossCallReturnLabel_78, ??CrossCallReturnLabel_32
        CFI (cfiCond166) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond166) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond166) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond166) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond166) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond166) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond166) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond166) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond166) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond166) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond166) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond166) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond166) CFA_SP SP+0
        CFI (cfiCond166) CFA_XSP16 add(XSP16, 12)
        CFI Block cfiCond167 Using cfiCommon0
        CFI (cfiCond167) NoFunction
        CFI (cfiCond167) Conditional ??CrossCallReturnLabel_81, ??CrossCallReturnLabel_87, ??CrossCallReturnLabel_4
        CFI (cfiCond167) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond167) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond167) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond167) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond167) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond167) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond167) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond167) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond167) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond167) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond167) CFA_SP SP+0
        CFI (cfiCond167) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond168 Using cfiCommon0
        CFI (cfiCond168) NoFunction
        CFI (cfiCond168) Conditional ??CrossCallReturnLabel_81, ??CrossCallReturnLabel_87, ??CrossCallReturnLabel_5
        CFI (cfiCond168) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond168) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond168) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond168) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond168) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond168) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond168) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond168) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond168) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond168) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond168) CFA_SP SP+0
        CFI (cfiCond168) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond169 Using cfiCommon0
        CFI (cfiCond169) NoFunction
        CFI (cfiCond169) Conditional ??CrossCallReturnLabel_81, ??CrossCallReturnLabel_87, ??CrossCallReturnLabel_6
        CFI (cfiCond169) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond169) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond169) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond169) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond169) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond169) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond169) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond169) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond169) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond169) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond169) CFA_SP SP+-2
        CFI (cfiCond169) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond170 Using cfiCommon0
        CFI (cfiCond170) NoFunction
        CFI (cfiCond170) Conditional ??CrossCallReturnLabel_81, ??CrossCallReturnLabel_87, ??CrossCallReturnLabel_7
        CFI (cfiCond170) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond170) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond170) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond170) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond170) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond170) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond170) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond170) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond170) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond170) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond170) CFA_SP SP+-2
        CFI (cfiCond170) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond171 Using cfiCommon0
        CFI (cfiCond171) NoFunction
        CFI (cfiCond171) Conditional ??CrossCallReturnLabel_81, ??CrossCallReturnLabel_87, ??CrossCallReturnLabel_3
        CFI (cfiCond171) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond171) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond171) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond171) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond171) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond171) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond171) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond171) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond171) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond171) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond171) CFA_SP SP+-2
        CFI (cfiCond171) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond172 Using cfiCommon0
        CFI (cfiCond172) NoFunction
        CFI (cfiCond172) Conditional ??CrossCallReturnLabel_81, ??CrossCallReturnLabel_86, ??CrossCallReturnLabel_1
        CFI (cfiCond172) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond172) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond172) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond172) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond172) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond172) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond172) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond172) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond172) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond172) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond172) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond172) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond172) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond172) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond172) CFA_SP SP+0
        CFI (cfiCond172) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiCond173 Using cfiCommon0
        CFI (cfiCond173) NoFunction
        CFI (cfiCond173) Conditional ??CrossCallReturnLabel_81, ??CrossCallReturnLabel_86, ??CrossCallReturnLabel_2
        CFI (cfiCond173) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond173) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond173) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond173) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond173) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond173) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond173) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond173) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond173) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond173) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond173) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond173) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond173) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond173) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond173) CFA_SP SP+0
        CFI (cfiCond173) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiCond174 Using cfiCommon0
        CFI (cfiCond174) NoFunction
        CFI (cfiCond174) Conditional ??CrossCallReturnLabel_81, ??CrossCallReturnLabel_86, ??CrossCallReturnLabel_0
        CFI (cfiCond174) R6 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond174) VB load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond174) V0 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond174) V1 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond174) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond174) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond174) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond174) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond174) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond174) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond174) CFA_SP SP+0
        CFI (cfiCond174) CFA_XSP16 add(XSP16, 11)
        CFI Block cfiCond175 Using cfiCommon0
        CFI (cfiCond175) NoFunction
        CFI (cfiCond175) Conditional ??CrossCallReturnLabel_79, ??CrossCallReturnLabel_35
        CFI (cfiCond175) R6 load(1, XDATA, add(CFA_XSP16, literal(-14)))
        CFI (cfiCond175) VB load(1, XDATA, add(CFA_XSP16, literal(-13)))
        CFI (cfiCond175) V0 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond175) V1 load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond175) V2 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond175) V3 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond175) V4 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond175) V5 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond175) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond175) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond175) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond175) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond175) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond175) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond175) CFA_SP SP+0
        CFI (cfiCond175) CFA_XSP16 add(XSP16, 15)
        CFI Block cfiCond176 Using cfiCommon0
        CFI (cfiCond176) NoFunction
        CFI (cfiCond176) Conditional ??CrossCallReturnLabel_79, ??CrossCallReturnLabel_36
        CFI (cfiCond176) R6 load(1, XDATA, add(CFA_XSP16, literal(-12)))
        CFI (cfiCond176) VB load(1, XDATA, add(CFA_XSP16, literal(-11)))
        CFI (cfiCond176) V0 load(1, XDATA, add(CFA_XSP16, literal(-10)))
        CFI (cfiCond176) V1 load(1, XDATA, add(CFA_XSP16, literal(-9)))
        CFI (cfiCond176) V2 load(1, XDATA, add(CFA_XSP16, literal(-8)))
        CFI (cfiCond176) V3 load(1, XDATA, add(CFA_XSP16, literal(-7)))
        CFI (cfiCond176) R7 load(1, XDATA, add(CFA_XSP16, literal(-6)))
        CFI (cfiCond176) ?RET_LOW load(1, XDATA, add(CFA_XSP16, literal(-5)))
        CFI (cfiCond176) ?RET_HIGH load(1, XDATA, add(CFA_XSP16, literal(-4)))
        CFI (cfiCond176) ?BRET_EXT load(1, XDATA, add(CFA_XSP16, literal(-3)))
        CFI (cfiCond176) DPL0 load(1, XDATA, add(CFA_XSP16, literal(-2)))
        CFI (cfiCond176) DPH0 load(1, XDATA, add(CFA_XSP16, literal(-1)))
        CFI (cfiCond176) CFA_SP SP+0
        CFI (cfiCond176) CFA_XSP16 add(XSP16, 12)
??Subroutine23_0:
        ADDC    A,#0x0
        MOV     DPH,A
        RET
        CFI EndBlock cfiCond135
        CFI EndBlock cfiCond136
        CFI EndBlock cfiCond137
        CFI EndBlock cfiCond138
        CFI EndBlock cfiCond139
        CFI EndBlock cfiCond140
        CFI EndBlock cfiPicker141
        CFI EndBlock cfiCond142
        CFI EndBlock cfiCond143
        CFI EndBlock cfiCond144
        CFI EndBlock cfiCond145
        CFI EndBlock cfiCond146
        CFI EndBlock cfiCond147
        CFI EndBlock cfiCond148
        CFI EndBlock cfiCond149
        CFI EndBlock cfiCond150
        CFI EndBlock cfiCond151
        CFI EndBlock cfiCond152
        CFI EndBlock cfiCond153
        CFI EndBlock cfiCond154
        CFI EndBlock cfiCond155
        CFI EndBlock cfiCond156
        CFI EndBlock cfiCond157
        CFI EndBlock cfiCond158
        CFI EndBlock cfiCond159
        CFI EndBlock cfiCond160
        CFI EndBlock cfiCond161
        CFI EndBlock cfiCond162
        CFI EndBlock cfiCond163
        CFI EndBlock cfiCond164
        CFI EndBlock cfiCond165
        CFI EndBlock cfiCond166
        CFI EndBlock cfiCond167
        CFI EndBlock cfiCond168
        CFI EndBlock cfiCond169
        CFI EndBlock cfiCond170
        CFI EndBlock cfiCond171
        CFI EndBlock cfiCond172
        CFI EndBlock cfiCond173
        CFI EndBlock cfiCond174
        CFI EndBlock cfiCond175
        CFI EndBlock cfiCond176

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??pollDMA?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    pollDMA

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??HalUARTInit?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    HalUARTInit

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??HalUARTOpen?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    HalUARTOpen

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??HalUARTClose?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    HalUARTClose

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??HalUARTPoll?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    HalUARTPoll

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??Hal_UART_RxBufLen?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    Hal_UART_RxBufLen

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??HalUARTRead?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    HalUARTRead

        RSEG BANK_RELAYS:CODE:REORDER:NOROOT(0)
??HalUARTWrite?relay:
        LCALL   ?BDISPATCH
        DATA
        DC24    HalUARTWrite

        END
// 1094 
// 1095 #if HAL_UART_ISR
// 1096 /***************************************************************************************************
// 1097  * @fn      halUart0RxIsr
// 1098  *
// 1099  * @brief   UART0 Receive Interrupt
// 1100  *
// 1101  * @param   None
// 1102  *
// 1103  * @return  None
// 1104  ***************************************************************************************************/
// 1105 #if HAL_UART_0_ENABLE
// 1106 HAL_ISR_FUNCTION( halUart0RxIsr, URX0_VECTOR )
// 1107 {
// 1108   cfg0->rxBuf[cfg0->rxHead] = U0DBUF;
// 1109 
// 1110   if ( cfg0->rxHead == cfg0->rxMax )
// 1111   {
// 1112     cfg0->rxHead = 0;
// 1113   }
// 1114   else
// 1115   {
// 1116     cfg0->rxHead++;
// 1117   }
// 1118 }
// 1119 #endif
// 1120 
// 1121 /***************************************************************************************************
// 1122  * @fn      halUart1RxIsr
// 1123  *
// 1124  * @brief   UART1 Receive Interrupt
// 1125  *
// 1126  * @param   None
// 1127  *
// 1128  * @return  None
// 1129  ***************************************************************************************************/
// 1130 #if HAL_UART_1_ENABLE
// 1131 HAL_ISR_FUNCTION( halUart1RxIsr, URX1_VECTOR )
// 1132 {
// 1133   cfg1->rxBuf[cfg1->rxHead] = U1DBUF;
// 1134 
// 1135   if ( cfg1->rxHead == cfg1->rxMax )
// 1136   {
// 1137     cfg1->rxHead = 0;
// 1138   }
// 1139   else
// 1140   {
// 1141     cfg1->rxHead++;
// 1142   }
// 1143 }
// 1144 #endif
// 1145 
// 1146 /***************************************************************************************************
// 1147  * @fn      halUart0TxIsr
// 1148  *
// 1149  * @brief   UART0 Transmit Interrupt
// 1150  *
// 1151  * @param   None
// 1152  *
// 1153  * @return  None
// 1154  ***************************************************************************************************/
// 1155 #if HAL_UART_0_ENABLE
// 1156 HAL_ISR_FUNCTION( halUart0TxIsr, UTX0_VECTOR )
// 1157 {
// 1158   UTX0IF = 0;
// 1159 
// 1160   if ( cfg0->txTail == cfg0->txMax )
// 1161   {
// 1162     cfg0->txTail = 0;
// 1163   }
// 1164   else
// 1165   {
// 1166     cfg0->txTail++;
// 1167   }
// 1168 
// 1169   if ( cfg0->txTail != cfg0->txHead )
// 1170   {
// 1171     U0DBUF = cfg0->txBuf[cfg0->txTail];
// 1172   }
// 1173 }
// 1174 #endif
// 1175 
// 1176 /***************************************************************************************************
// 1177  * @fn      halUart1TxIsr
// 1178  *
// 1179  * @brief   UART1 Transmit Interrupt
// 1180  *
// 1181  * @param   None
// 1182  *
// 1183  * @return  None
// 1184  ***************************************************************************************************/
// 1185 #if HAL_UART_1_ENABLE
// 1186 HAL_ISR_FUNCTION( halUart1TxIsr, UTX1_VECTOR )
// 1187 {
// 1188   UTX1IF = 0;
// 1189   U1CSR &= ~CSR_TX_BYTE;  // Rev-D does not require, older does.
// 1190 
// 1191   if ( cfg1->txTail == cfg1->txMax )
// 1192   {
// 1193     cfg1->txTail = 0;
// 1194   }
// 1195   else
// 1196   {
// 1197     cfg1->txTail++;
// 1198   }
// 1199 
// 1200   if ( cfg1->txTail != cfg1->txHead )
// 1201   {
// 1202     U1DBUF = cfg1->txBuf[cfg1->txTail];
// 1203   }
// 1204 }
// 1205 #endif
// 1206 #endif
// 1207 
// 1208 /******************************************************************************
// 1209 ******************************************************************************/
// 
// 2 152 bytes in segment BANKED_CODE
//    48 bytes in segment BANK_RELAYS
//    16 bytes in segment SFR_AN
//     3 bytes in segment XDATA_Z
// 
// 2 200 bytes of CODE  memory
//     0 bytes of DATA  memory (+ 16 bytes shared)
//     3 bytes of XDATA memory
//
//Errors: none
//Warnings: none
