
# OStrCmpNC(r3:PTR TO CHAR,r4:PTR TO CHAR,r5=-1:LONG)

	.text
	.global	_OStrCmpNC

_OStrCmpNC:
	subi	r3,r3,1
	subi	r4,r4,1
.loop:	lbzu	r7,1(r3)
	lbzu	r6,1(r4)

	cmplwi	r7,91
	bgt	.next1
	cmplwi	r7,65
	blt	.next1
	addi	r7,r7,32
.next1:
	cmplwi	r6,91
	bgt	.next2
	cmplwi	r6,65
	blt	.next2
	addi	r6,r6,32
.next2:
	cmpw	r6,r7
	bne	.nosame		# strings are different
	mr.	r7,r7		# zero (eos) byte?
	beq	.same
	subi	r5,r5,1
	mr.	r5,r5
	bne	.loop

.same:	li	r3,0
	blr
.nosame:	cmpw	r6,r7
	bgt	.greater
	li	r3,-1
	blr
.greater:	li	r3,1
	blr

	.type	_OStrCmpNC,@function
	.size	_OStrCmpNC,$-_OStrCmpNC
