; Listing generated by Microsoft (R) Optimizing Compiler Version 14.00.50727.762 

	TITLE	d:\Source Code\NC lib\regex\pcre_newline.c
	.686P
	.XMM
	include listing.inc
	.model	flat

INCLUDELIB LIBCMTD
INCLUDELIB OLDNAMES

PUBLIC	__pcre_is_newline
; Function compile flags: /Ogtpy
; File d:\source code\nc lib\regex\pcre_newline.c
;	COMDAT __pcre_is_newline
_TEXT	SEGMENT
_ptr$ = 8						; size = 4
_type$ = 12						; size = 4
_endptr$ = 16						; size = 4
_lenptr$ = 20						; size = 4
_utf8$ = 24						; size = 4
__pcre_is_newline PROC					; COMDAT

; 76   : int c;
; 77   : if (utf8) { GETCHAR(c, ptr); } else c = *ptr;
; 78   : 
; 79   : if (type == NLTYPE_ANYCRLF) switch(c)

	cmp	DWORD PTR _type$[esp-4], 2
	mov	ecx, DWORD PTR _ptr$[esp-4]
	mov	edx, DWORD PTR _utf8$[esp-4]
	movzx	eax, BYTE PTR [ecx]
	jne	SHORT $LN14@pcre_is_ne
	cmp	eax, 10					; 0000000aH
	je	SHORT $LN11@pcre_is_ne
	cmp	eax, 13					; 0000000dH

; 84   :   default: return FALSE;

	jne	$LN1@pcre_is_ne
	mov	eax, DWORD PTR _endptr$[esp-4]
	add	eax, -1
	cmp	ecx, eax
	jae	SHORT $LN19@pcre_is_ne
	cmp	BYTE PTR [ecx+1], 10			; 0000000aH
	mov	eax, 2
	je	SHORT $LN20@pcre_is_ne
$LN19@pcre_is_ne:

; 82   :   case 0x000d: *lenptr = (ptr < endptr - 1 && ptr[1] == 0x0a)? 2 : 1;

	mov	eax, 1
$LN20@pcre_is_ne:
	mov	ecx, DWORD PTR _lenptr$[esp-4]
	mov	DWORD PTR [ecx], eax

; 83   :                return TRUE;                          /* CR */

	mov	eax, 1

; 100  :   }
; 101  : }

	ret	0
$LN11@pcre_is_ne:

; 80   :   {
; 81   :   case 0x000a: *lenptr = 1; return TRUE;             /* LF */

	mov	edx, DWORD PTR _lenptr$[esp-4]
	mov	DWORD PTR [edx], 1
	mov	eax, 1

; 100  :   }
; 101  : }

	ret	0
$LN14@pcre_is_ne:

; 85   :   }
; 86   : 
; 87   : /* NLTYPE_ANY */
; 88   : 
; 89   : else switch(c)

	cmp	eax, 133				; 00000085H
	jg	SHORT $LN23@pcre_is_ne
	je	SHORT $LN3@pcre_is_ne
	cmp	eax, 10					; 0000000aH
	jl	SHORT $LN1@pcre_is_ne
	cmp	eax, 12					; 0000000cH
	jle	SHORT $LN11@pcre_is_ne
	cmp	eax, 13					; 0000000dH
	jne	SHORT $LN1@pcre_is_ne

; 90   :   {
; 91   :   case 0x000a:                                       /* LF */
; 92   :   case 0x000b:                                       /* VT */
; 93   :   case 0x000c: *lenptr = 1; return TRUE;             /* FF */
; 94   :   case 0x000d: *lenptr = (ptr < endptr - 1 && ptr[1] == 0x0a)? 2 : 1;

	mov	eax, DWORD PTR _endptr$[esp-4]
	add	eax, -1
	cmp	ecx, eax
	jae	SHORT $LN21@pcre_is_ne
	cmp	BYTE PTR [ecx+1], 10			; 0000000aH
	mov	eax, 2
	je	SHORT $LN22@pcre_is_ne
$LN21@pcre_is_ne:
	mov	eax, 1
$LN22@pcre_is_ne:
	mov	ecx, DWORD PTR _lenptr$[esp-4]
	mov	DWORD PTR [ecx], eax

; 95   :                return TRUE;                          /* CR */

	mov	eax, 1

; 100  :   }
; 101  : }

	ret	0
$LN3@pcre_is_ne:

; 96   :   case 0x0085: *lenptr = utf8? 2 : 1; return TRUE;   /* NEL */

	mov	ecx, DWORD PTR _lenptr$[esp-4]
	xor	eax, eax
	test	edx, edx
	setne	al
	add	eax, 1
	mov	DWORD PTR [ecx], eax
	mov	eax, 1

; 100  :   }
; 101  : }

	ret	0
$LN23@pcre_is_ne:

; 85   :   }
; 86   : 
; 87   : /* NLTYPE_ANY */
; 88   : 
; 89   : else switch(c)

	cmp	eax, 8232				; 00002028H
	jl	SHORT $LN1@pcre_is_ne
	cmp	eax, 8233				; 00002029H
	jg	SHORT $LN1@pcre_is_ne

; 97   :   case 0x2028:                                       /* LS */
; 98   :   case 0x2029: *lenptr = 3; return TRUE;             /* PS */

	mov	edx, DWORD PTR _lenptr$[esp-4]
	mov	DWORD PTR [edx], 3
	mov	eax, 1

; 100  :   }
; 101  : }

	ret	0
$LN1@pcre_is_ne:

; 99   :   default: return FALSE;

	xor	eax, eax

; 100  :   }
; 101  : }

	ret	0
__pcre_is_newline ENDP
_TEXT	ENDS
PUBLIC	__pcre_was_newline
; Function compile flags: /Ogtpy
;	COMDAT __pcre_was_newline
_TEXT	SEGMENT
_ptr$ = 8						; size = 4
_type$ = 12						; size = 4
_startptr$ = 16						; size = 4
_lenptr$ = 20						; size = 4
_utf8$ = 24						; size = 4
__pcre_was_newline PROC					; COMDAT

; 126  : int c;
; 127  : ptr--;

	mov	ecx, DWORD PTR _ptr$[esp-4]

; 128  : #ifdef SUPPORT_UTF8
; 129  : if (utf8)
; 130  :   {
; 131  :   BACKCHAR(ptr);
; 132  :   GETCHAR(c, ptr);
; 133  :   }
; 134  : else c = *ptr;
; 135  : #else   /* no UTF-8 support */
; 136  : c = *ptr;

	movzx	eax, BYTE PTR [ecx-1]
	sub	ecx, 1

; 137  : #endif  /* SUPPORT_UTF8 */
; 138  : 
; 139  : if (type == NLTYPE_ANYCRLF) switch(c)

	cmp	DWORD PTR _type$[esp-4], 2
	jne	SHORT $LN14@pcre_was_n
	cmp	eax, 10					; 0000000aH
	je	SHORT $LN11@pcre_was_n
	cmp	eax, 13					; 0000000dH

; 143  :   case 0x000d: *lenptr = 1; return TRUE;            /* CR */
; 144  :   default: return FALSE;

	jne	$LN1@pcre_was_n
	mov	eax, DWORD PTR _lenptr$[esp-4]
	mov	DWORD PTR [eax], 1
	mov	eax, 1

; 158  :   }
; 159  : }

	ret	0
$LN11@pcre_was_n:

; 140  :   {
; 141  :   case 0x000a: *lenptr = (ptr > startptr && ptr[-1] == 0x0d)? 2 : 1;

	cmp	ecx, DWORD PTR _startptr$[esp-4]
	jbe	SHORT $LN17@pcre_was_n
	cmp	BYTE PTR [ecx-1], 13			; 0000000dH
	mov	eax, 2
	je	SHORT $LN18@pcre_was_n
$LN17@pcre_was_n:
	mov	eax, 1
$LN18@pcre_was_n:
	mov	ecx, DWORD PTR _lenptr$[esp-4]
	mov	DWORD PTR [ecx], eax

; 142  :                return TRUE;                         /* LF */

	mov	eax, 1

; 158  :   }
; 159  : }

	ret	0
$LN14@pcre_was_n:

; 145  :   }
; 146  : 
; 147  : else switch(c)

	cmp	eax, 133				; 00000085H
	jg	SHORT $LN21@pcre_was_n
	je	SHORT $LN3@pcre_was_n
	cmp	eax, 10					; 0000000aH
	je	SHORT $LN5@pcre_was_n
	jle	SHORT $LN1@pcre_was_n
	cmp	eax, 13					; 0000000dH
	jg	SHORT $LN1@pcre_was_n

; 151  :   case 0x000b:                                      /* VT */
; 152  :   case 0x000c:                                      /* FF */
; 153  :   case 0x000d: *lenptr = 1; return TRUE;            /* CR */

	mov	edx, DWORD PTR _lenptr$[esp-4]
	mov	DWORD PTR [edx], 1
	mov	eax, 1

; 158  :   }
; 159  : }

	ret	0
$LN5@pcre_was_n:

; 148  :   {
; 149  :   case 0x000a: *lenptr = (ptr > startptr && ptr[-1] == 0x0d)? 2 : 1;

	cmp	ecx, DWORD PTR _startptr$[esp-4]
	jbe	SHORT $LN19@pcre_was_n
	cmp	BYTE PTR [ecx-1], 13			; 0000000dH
	mov	eax, 2
	je	SHORT $LN20@pcre_was_n
$LN19@pcre_was_n:
	mov	eax, 1
$LN20@pcre_was_n:
	mov	ecx, DWORD PTR _lenptr$[esp-4]
	mov	DWORD PTR [ecx], eax

; 150  :                return TRUE;                         /* LF */

	mov	eax, 1

; 158  :   }
; 159  : }

	ret	0
$LN3@pcre_was_n:

; 154  :   case 0x0085: *lenptr = utf8? 2 : 1; return TRUE;  /* NEL */

	mov	eax, DWORD PTR _lenptr$[esp-4]
	xor	edx, edx
	cmp	DWORD PTR _utf8$[esp-4], edx
	setne	dl
	add	edx, 1
	mov	DWORD PTR [eax], edx
	mov	eax, 1

; 158  :   }
; 159  : }

	ret	0
$LN21@pcre_was_n:

; 145  :   }
; 146  : 
; 147  : else switch(c)

	cmp	eax, 8232				; 00002028H
	jl	SHORT $LN1@pcre_was_n
	cmp	eax, 8233				; 00002029H
	jg	SHORT $LN1@pcre_was_n

; 155  :   case 0x2028:                                      /* LS */
; 156  :   case 0x2029: *lenptr = 3; return TRUE;            /* PS */

	mov	ecx, DWORD PTR _lenptr$[esp-4]
	mov	DWORD PTR [ecx], 3
	mov	eax, 1

; 158  :   }
; 159  : }

	ret	0
$LN1@pcre_was_n:

; 157  :   default: return FALSE;

	xor	eax, eax

; 158  :   }
; 159  : }

	ret	0
__pcre_was_newline ENDP
_TEXT	ENDS
END
