; Archelon URCC C 3.17 2004/01/12
; MSP430 CIF 2003/10/23
; Compiled "E:\mmcrfio\levparse.c" Fri Feb 20 18:03:35 2004
; 
	.dbgseg dbg_syms
	.align 0x2
	.long 0x6c69662e
	.long 0x65
	.long 0x1
	.long 0x0
	.long 0x167fffe
	.long 0x0
	.long DBG5
	.long 0x0
	.long 0x0
	.long 0x0
; typedef unsigned int size_t;
; size_t size 2
; typedef void *va_list;
; va_list size 2
; typedef struct {
; 	unsigned char *_base;
; 	unsigned char *_end;
; 	unsigned char *_ptr;
; 	long int       _seek;
; 	int            _cnt;
; 	short          _flag;
; 	char           _file;
; 	unsigned char  _nbf;
; } FILE;
; FILE size 16
; int    sprintf( char *, const char *, ... );
; int    sscanf( const char *, const char *, ... );
; int    vsprintf( char *, const char *, va_list );
; typedef int wchar_t;
; wchar_t size 2
; typedef struct {
; 	int rem;
; 	int quot;
; } div_t;
; div_t size 4
; typedef struct {
; 	long rem;
; 	long quot;
; } ldiv_t;
; ldiv_t size 8
; double atof( const char * );
; int atoi( const char * );
; long int atol( const char * );
; double strtod( const char *, char ** );
; long int strtol( const char *, char **, int );
; unsigned long int strtoul( const char *, char **, int );
; int rand( void );
; void srand( unsigned int );
; int system( const char * );
; void *bsearch( const void *, const void *, size_t, size_t,
; 	int (*)(const void *, const void *) );
; void qsort( void *, size_t, size_t, int (*)(const void *, const void *) );
; int abs( int );
; div_t div( int, int );
; long int labs( long int );
; ldiv_t ldiv( long int, long int );
; int mblen( const char *, size_t );
; int mbtowc( wchar_t *, const char *, size_t );
; int wctomb( char *, wchar_t );
; size_t mbstowcs( wchar_t *, const char *, size_t );
; size_t wcstombs( char *, const wchar_t *, size_t );
; void *memcpy( void *, const void *, size_t );
; void *memmove( void *, const void *, size_t );
; char *strcpy( char *, const char * );
; char *strncpy( char *, const char *, size_t );
; char *strcat( char *, const char * );
; char *strncat( char *, const char *, size_t );
; int memcmp( const void *, const void *, size_t );
; int strcmp( const char *, const char * );
; int strcoll( const char *, const char * );
; int strncmp( const char *, const char *, size_t );
; size_t strxfrm( char *, const char *, size_t );
; void *memchr( const void *, int, size_t );
; char *strchr( const char *, int );
; size_t strcspn( const char *, const char * );
; char *strpbrk( const char *, const char * );
; char *strrchr( const char *, int );
; size_t strspn( const char *, const char * );
; char *strstr( const char *, const char * );
; char *strtok( char *, const char * );
; void *memset( void *, int, size_t );
; char *strerror( int );
; size_t strlen( const char * );
; extern const char _ctype [];
; int isalnum( int );
; int isalpha( int );
; int iscntrl( int );
; int isdigit( int );
; int isgraph( int );
; int islower( int );
; int isprint( int );
; int ispunct( int );
; int isspace( int );
; int isupper( int );
; int isxdigit( int );
; int tolower( int );
; int toupper( int );
; typedef int boolean;
; boolean size 2
; enum {false = 0, true = 1};
; enum {error = -1, success = 0};
; char * errnumGetDesc(int errNum);
; typedef int (*sensorSampleMethod)(float *);
; sensorSampleMethod size 2
; typedef struct {
;   unsigned char curState;
;   unsigned char prevState;
;   unsigned char flags;
;   float levelHi;
;   float levelLo;
;   float lastValue;
;   sensorSampleMethod method;
; } sensorState;
; sensorState size 18
; int sensorInit(void);
; int sensorRegisterSampleMethod(int sensorId, unsigned char flags, sensorSampleMethod method);
; int sensorGetData(int sensorId, float * pValue);
; int sensorGetLevel(int levelId, float * pLevel);
; int sensorSetLevel(int levelId, float level);
; int sensorTriggerAlarm(int sensorId);
; void clearString(char *s, int len);
; void eatWhiteSpace(char **s);
; int grabArgument(char **srcStr, char *dstStr, int dstLen);
; extern const char * sensorCode[];
; extern const char * levelCode[];
; void eatWhiteSpace(char **);
; int grabArgument(char **, char *, int);
; void clearString(char *, int);
; static char keyword[16];
; static char prefix[5];
; int levparseSetLevels(char * cmdStr)
DBG3:
	.long 0x0
	.long DBG10
	.long _levparseSetLevels
	.long 0x44
	.long 0x1020001
	.long DBG1
	.long DBG7-DBG8
	.long DBG9
	.long DBG6
	.long 0x0
	.pseg levparse_code
DBG8:
	.dbgseg dbg_syms
DBG1:
	.long 0x66622e
	.long 0x0
	.long DBG8
	.long 0x0
	.long 0x1650001
	.long 0x0
	.long 0x17
	.long 0x0
	.long DBG11
	.long 0x0
	.dbgseg dbg_line
	.align 0x2
DBG9:
	.long DBG3
	.long 0x0
	.long _levparseSetLevels
	.long 0x1
	.long DBG13
	.long 0x2
	.long DBG14
	.long 0x9
	.long DBG15
	.long 0xa
	.long DBG16
	.long 0xc
	.long DBG17
	.long 0xd
	.long DBG18
	.long 0xf
	.long DBG20
	.long 0x14
	.long DBG21
	.long 0x15
	.long DBG22
	.long 0x16
	.long DBG23
	.long 0x18
	.long DBG24
	.long 0x19
	.long DBG25
	.long 0x1b
	.long DBG26
	.long 0x1c
	.long DBG27
	.long 0x20
	.long DBG29
	.long 0x21
	.long DBG30
	.long 0x22
	.long DBG31
	.long 0x23
	.long DBG32
	.long 0x26
	.long DBG33
	.long 0x27
	.long DBG35
	.long 0x28
	.long DBG37
	.long 0x29
	.long DBG38
	.long 0x2a
	.long DBG39
	.long 0x2b
	.long DBG40
	.long 0x2c
	.long DBG42
	.long 0x2e
	.long DBG44
	.long 0x2f
	.long DBG45
	.long 0x30
	.long DBG46
	.long 0x31
	.long DBG47
	.long 0x32
	.long DBG49
	.long 0x34
	.long DBG50
	.long 0x35
	.pseg levparse_code
	.global _levparseSetLevels
_levparseSetLevels:
	push	r4
	push	r5
	push	r6
	sub	#0x2,sp
DBG12:
; ENTRY
	mov	r12,0(sp)
DBG14:
DBG13:
; cmdStr at stkloc 0 (0x0) size 2
; i in reg  size 2
; cp in reg  size 2
; cp2 in reg  size 2
; prefixFound in reg  size 2
; levelConv in reg  size 4
; {
;   int i;
;   char * cp, * cp2;
;   boolean prefixFound;
;   double levelConv;
;   eatWhiteSpace(&cmdStr);
	mov	sp,r12
	call	#_eatWhiteSpace
DBG15:
;   grabArgument(&cmdStr, keyword, 16);
	mov	#0x10,r4
	mov	r4,r14
	mov	#_keyword,r5
	mov	r5,r13
	mov	sp,r12
	call	#_grabArgument
DBG16:
;   if (strcmp(keyword, "$PALEVEL") != 0)
	mov	#levparse_V3,r13
	mov	r5,r12
	call	#_strcmp
	cmp	#0x0,r12
	jeq	levparseSetLevels_L1
DBG17:
;     return (2) ;
	mov	#0x2,r12
	jmp	levparseSetLevels_LL2
DBG18:
levparseSetLevels_L1:
;   for (i=0;((i<( (8) <<1)) && (*cmdStr != '\0'));i++) {
	mov	#0x0,r12
	cmp	r4,r12
	jge	levparseSetLevels_L2
	mov	0x0(sp),r12
	cmp.b	#0x0,0(r12)
	jeq	levparseSetLevels_L2
levparseSetLevels_L3:
DBG19:
;     while (*cmdStr != ',') cmdStr++; 
DBG20:
levparseSetLevels_L4:
	mov	0x0(sp),r12
	cmp.b	#0x2c,0(r12)
	jeq	levparseSetLevels_L5
	add	#0x1,0(sp)
	jmp	levparseSetLevels_L4
levparseSetLevels_L5:
;     cmdStr++; 
DBG21:
	add	#0x1,0(sp)
DBG22:
;     eatWhiteSpace(&cmdStr); 
	mov	sp,r12
	call	#_eatWhiteSpace
DBG23:
;     clearString(keyword,16);
	mov	#0x10,r4
	mov	r4,r13
	mov	#_keyword,r6
	mov	r6,r12
	call	#_clearString
DBG24:
;     grabArgument(&cmdStr, keyword, 16); 
	mov	r4,r14
	mov	r6,r13
	mov	sp,r12
	call	#_grabArgument
DBG25:
;     clearString(prefix,5);
	mov	#0x5,r13
	mov	#_prefix,r4
	mov	r4,r12
	call	#_clearString
DBG27:
DBG26:
;     cp = prefix; cp2 = keyword;
;     while( ( _ctype [((int)(*cp2)) + 1] & ( 0x01  | 0x02 ))  != 0) {
levparseSetLevels_L6:
	mov.b	@r6,r12
	sxt	r12
	add	#__ctype+0x1,r12
	bit.b	#0x3,0(r12)
	jeq	levparseSetLevels_L7
DBG29:
DBG28:
;       *cp++ = *cp2++;
	mov	r4,r12
	add	#0x1,r4
	mov.b	@r6+,0(r12)
DBG30:
	jmp	levparseSetLevels_L6
levparseSetLevels_L7:
;     }
;     *cp = '\0';
DBG31:
	mov.b	#0x0,0(r4)
DBG32:
;     prefixFound = false;
	mov	#0x0,r5
DBG33:
;     for(i=0; (i<( (8)  << 1)); i++) {
	mov	#0x0,r4
levparseSetLevels_L8:
DBG34:
;       if (strcmp(prefix, levelCode[i]) == 0) {
DBG35:
	mov	r4,r12
	rla	r12
	mov	_levelCode(r12),r13
	mov	#_prefix,r12
	call	#_strcmp
	cmp	#0x0,r12
	jne	levparseSetLevels_L9
DBG37:
DBG36:
; 	prefixFound = true;
	mov	#0x1,r5
DBG38:
; 	break;
	jmp	levparseSetLevels_L10
DBG40:
DBG39:
;       }
levparseSetLevels_L9:
DBG41:
	add	#0x1,r4
	cmp	#0x10,r4
	jl	levparseSetLevels_L8
levparseSetLevels_L10:
;     }
;     if (prefixFound == true) {
DBG42:
	cmp	#0x1,r5
	jne	levparseSetLevels_L11
DBG44:
DBG43:
;         levelConv = atof(cp2);
	mov	r6,r12
	call	#_atof
DBG45:
; 	sensorSetLevel(i, ((float)levelConv));
	mov	r13,r14
	mov	r12,r13
	mov	r4,r12
	call	#_sensorSetLevel
DBG47:
DBG46:
;     } 
levparseSetLevels_L11:
DBG48:
	add	#0x1,r4
	cmp	#0x10,r4
	jge	levparseSetLevels_L12
	mov	0x0(sp),r12
	cmp.b	#0x0,0(r12)
	jne	levparseSetLevels_L3
levparseSetLevels_L12:
levparseSetLevels_L2:
;   } 
;   return 0;
DBG49:
	mov	#0x0,r12
DBG50:
levparseSetLevels_LL2:
; EXIT
; .temp0 at stkloc 2 (0x2) size 6
DBG51:
	add	#0x2,sp
	pop	r6
	pop	r5
	pop	r4
	ret
	.dbgseg dbg_syms
	.long 0x0
	.long DBG52
	.long 0x8
	.long 0x0
	.long 0x10002
	.long 0x0
	.long DBG53
	.long 0x2
	.long 0x0
	.long 0x10002
	.long 0x53646d63
	.long 0x7274
	.long 0x0
	.long 0x22
	.long 0x10002
DBG2:
	.long 0x62622e
	.long 0x0
	.long DBG28
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x20
	.long 0x0
	.long DBG54
	.long 0x0
	.long 0x327063
	.long 0x0
	.long 0x60102
	.long 0x22
	.long 0x4ffff
DBG54:
	.long 0x62622e
	.long 0x0
	.long DBG30
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x22
	.long 0x0
	.long DBG55
	.long 0x0
	.long 0x7063
	.long 0x0
	.long 0x40102
	.long 0x22
	.long 0x4ffff
DBG55:
	.long 0x62622e
	.long 0x0
	.long DBG33
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x27
	.long 0x0
	.long DBG56
	.long 0x0
	.long 0x0
	.long DBG57
	.long 0x50102
	.long 0x4
	.long 0x4ffff
	.long 0x62652e
	.long 0x0
	.long DBG34
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x27
	.long 0x0
	.long 0x0
	.long 0x0
	.long 0x62652e
	.long 0x0
	.long DBG34
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x27
	.long 0x0
	.long 0x0
	.long 0x0
DBG56:
	.long 0x62622e
	.long 0x0
	.long DBG34
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x27
	.long 0x0
	.long DBG58
	.long 0x0
	.long 0x0
	.long DBG57
	.long 0x50102
	.long 0x4
	.long 0x4ffff
	.long 0x69
	.long 0x0
	.long 0x40102
	.long 0x4
	.long 0x4ffff
DBG58:
	.long 0x62622e
	.long 0x0
	.long DBG45
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x30
	.long 0x0
	.long DBG59
	.long 0x0
	.long 0x0
	.long DBG60
	.long 0x200
	.long 0x6
	.long 0x204ffff
	.long 0x0
	.long DBG60
	.long 0xc0102
	.long 0x6
	.long 0x104ffff
	.long 0x0
	.long DBG60
	.long 0xd0102
	.long 0x6
	.long 0x4ffff
	.long 0x62652e
	.long 0x0
	.long DBG46
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x31
	.long 0x0
	.long 0x0
	.long 0x0
	.long 0x62652e
	.long 0x0
	.long DBG50
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x35
	.long 0x0
	.long 0x0
	.long 0x0
	.long 0x62652e
	.long 0x0
	.long DBG50
	.long 0x0
	.long 0x1640001
	.long 0x0
	.long 0x35
	.long 0x0
	.long 0x0
	.long 0x0
	.long 0x66652e
	.long 0x0
	.long DBG51
	.long 0x0
	.long 0x1650001
	.long 0x0
	.long 0x4b
	.long 0x0
	.long 0x0
	.long 0x0
	.pseg levparse_code
DBG7:
	.dbgseg dbg_syms
	.long 0x0
	.long DBG10
	.long DBG7
	.long 0x0
	.long 0xff0001
; }
	.dseg	levparse_bss
	.align 0x2
levparse_V4:
_keyword:
	.bss 0x10
; keyword size 16
_prefix:
	.bss 0x5
; prefix size 5
	.extern __ctype
	.extern _eatWhiteSpace
	.extern _atof
	.extern _levelCode
	.extern _strcmp
	.extern _clearString
	.extern _sensorSetLevel
	.extern _grabArgument
	.dbgseg dbg_syms
.0fake_1:
DBG4:
	.long 0x6166302e
	.long 0x315f656b
	.long 0x0
	.long 0x8
	.long 0x10afffe
	.long 0x0
	.long 0x100000
	.long 0x0
	.long DBG61
	.long 0x0
	.long 0x7361625f
	.long 0x65
	.long 0x0
	.long 0x2c
	.long 0x8ffff
	.long 0x646e655f
	.long 0x0
	.long 0x2
	.long 0x2c
	.long 0x8ffff
	.long 0x7274705f
	.long 0x0
	.long 0x4
	.long 0x2c
	.long 0x8ffff
	.long 0x6565735f
	.long 0x6b
	.long 0x6
	.long 0x5
	.long 0x8ffff
	.long 0x746e635f
	.long 0x0
	.long 0xa
	.long 0x4
	.long 0x8ffff
	.long 0x616c665f
	.long 0x67
	.long 0xc
	.long 0x3
	.long 0x8ffff
	.long 0x6c69665f
	.long 0x65
	.long 0xe
	.long 0x2
	.long 0x8ffff
	.long 0x66626e5f
	.long 0x0
	.long 0xf
	.long 0xc
	.long 0x8ffff
	.long 0x736f652e
	.long 0x0
	.long 0x10
	.long 0x0
	.long 0x166ffff
	.long DBG4
	.long 0x100000
	.long 0x0
	.long 0x0
	.long 0x0
.2fake_2:
DBG61:
	.long 0x6166322e
	.long 0x325f656b
	.long 0x0
	.long 0x8
	.long 0x10afffe
	.long 0x0
	.long 0x80000
	.long 0x0
	.long DBG62
	.long 0x0
	.long 0x6d6572
	.long 0x0
	.long 0x0
	.long 0x5
	.long 0x8ffff
	.long 0x746f7571
	.long 0x0
	.long 0x4
	.long 0x5
	.long 0x8ffff
	.long 0x736f652e
	.long 0x0
	.long 0x8
	.long 0x0
	.long 0x166ffff
	.long DBG61
	.long 0x80000
	.long 0x0
	.long 0x0
	.long 0x0
.1fake_3:
DBG62:
	.long 0x6166312e
	.long 0x335f656b
	.long 0x0
	.long 0x8
	.long 0x10afffe
	.long 0x0
	.long 0x40000
	.long 0x0
	.long DBG63
	.long 0x0
	.long 0x6d6572
	.long 0x0
	.long 0x0
	.long 0x4
	.long 0x8ffff
	.long 0x746f7571
	.long 0x0
	.long 0x2
	.long 0x4
	.long 0x8ffff
	.long 0x736f652e
	.long 0x0
	.long 0x4
	.long 0x0
	.long 0x166ffff
	.long DBG62
	.long 0x40000
	.long 0x0
	.long 0x0
	.long 0x0
.5fake_4:
DBG63:
	.long 0x6166352e
	.long 0x345f656b
	.long 0x0
	.long 0x8
	.long 0x10afffe
	.long 0x0
	.long 0x120000
	.long 0x0
	.long DBG64
	.long 0x0
	.long 0x53727563
	.long 0x65746174
	.long 0x0
	.long 0xc
	.long 0x8ffff
	.long 0x0
	.long DBG65
	.long 0x1
	.long 0xc
	.long 0x8ffff
	.long 0x67616c66
	.long 0x73
	.long 0x2
	.long 0xc
	.long 0x8ffff
	.long 0x6576656c
	.long 0x69486c
	.long 0x4
	.long 0x6
	.long 0x8ffff
	.long 0x6576656c
	.long 0x6f4c6c
	.long 0x8
	.long 0x6
	.long 0x8ffff
	.long 0x0
	.long DBG66
	.long 0xc
	.long 0x6
	.long 0x8ffff
	.long 0x6874656d
	.long 0x646f
	.long 0x10
	.long 0x2a4
	.long 0x8ffff
	.long 0x736f652e
	.long 0x0
	.long 0x12
	.long 0x0
	.long 0x166ffff
	.long DBG63
	.long 0x120000
	.long 0x0
	.long 0x0
	.long 0x0
DBG11:
DBG59:
DBG6:
DBG64:
	.long 0x7073
	.long 0x0
	.long 0x1
	.long 0x0
	.long 0x16cfffe
	.long 0x0
	.long 0x100001
	.long 0x0
	.long 0x0
	.long 0x0
	.long 0x52
	.long 0x0
	.long 0x2
	.long 0x0
	.long 0x16cfffe
	.long 0x0
	.long 0x100010
	.long 0x0
	.long 0x0
	.long 0x0
	.long 0x7779656b
	.long 0x64726f
	.long _keyword
	.long 0x62
	.long 0x1030002
	.long 0x0
	.long 0x100071
	.long 0x10
	.long 0x0
	.long 0x0
	.long 0x66657270
	.long 0x7869
	.long _prefix
	.long 0x62
	.long 0x1030002
	.long 0x0
	.long 0x50071
	.long 0x5
	.long 0x0
	.long 0x0
	.long 0x6c6f6f62
	.long 0x6e6165
	.long 0x0
	.long 0x4
	.long 0xdfffe
	.long 0x454c4946
	.long 0x0
	.long 0x0
	.long 0x8
	.long 0x10dfffe
	.long .0fake_1
	.long 0x10
	.long 0x0
	.long 0x0
	.long 0x0
	.long 0x7669646c
	.long 0x745f
	.long 0x0
	.long 0x8
	.long 0x10dfffe
	.long .2fake_2
	.long 0x8
	.long 0x0
	.long 0x0
	.long 0x0
	.long 0x61686377
	.long 0x745f72
	.long 0x0
	.long 0x4
	.long 0xdfffe
	.long 0x657a6973
	.long 0x745f
	.long 0x0
	.long 0xe
	.long 0xdfffe
	.long 0x6c5f6176
	.long 0x747369
	.long 0x0
	.long 0x20
	.long 0xdfffe
	.long 0x5f766964
	.long 0x74
	.long 0x0
	.long 0x8
	.long 0x10dfffe
	.long .1fake_3
	.long 0x4
	.long 0x0
	.long 0x0
	.long 0x0
	.long 0x0
	.long DBG67
	.long 0x0
	.long 0x8
	.long 0x10dfffe
	.long .5fake_4
	.long 0x12
	.long 0x0
	.long 0x0
	.long 0x0
	.long 0x0
	.long DBG68
	.long 0x0
	.long 0x2a4
	.long 0xdfffe
	.iseg levparse_istrings_const
levparse_V3:
	.byte 0x24
	.byte 0x50
	.byte 0x41
	.byte 0x4c
	.byte 0x45
	.byte 0x56
	.byte 0x45
	.byte 0x4c
	.byte 0x0
	.dbgseg dbg_syms
	.long 0x666f652e
	.long 0x0
	.long 0x0
	.long 0x0
	.long 0x67fffe
	.dbgseg dbg_strs
	.align 0x2
	.long 0xa0
DBG52:
	.long 0x5f5f4652
	.long 0x414d4553
	.long 0x495a4500
DBG57:
	.long 0x70726566
	.long 0x6978466f
	.long 0x756e6400
DBG60:
	.long 0x6c657665
	.long 0x6c436f6e
	.long 0x76000000
DBG66:
	.long 0x6c617374
	.long 0x56616c75
	.long 0x65000000
DBG53:
	.long 0x5f5f5341
	.long 0x5645445f
	.long 0x41524753
	.long 0x5f53495a
	.long 0x45000000
DBG5:
	.long 0x453a5c6d
	.long 0x6d637266
	.long 0x696f5c6c
	.long 0x65767061
	.long 0x7273652e
	.long 0x63000000
DBG10:
	.long 0x6c657670
	.long 0x61727365
	.long 0x5365744c
	.long 0x6576656c
	.long 0x73000000
DBG67:
	.long 0x73656e73
	.long 0x6f725374
	.long 0x61746500
DBG68:
	.long 0x73656e73
	.long 0x6f725361
	.long 0x6d706c65
	.long 0x4d657468
	.long 0x6f640000
DBG65:
	.long 0x70726576
	.long 0x53746174
	.long 0x65000000
	.iseg _idesc
	.align 0x2
	.data 0x0
	.data levparse_V4
	.data 0x15
