// File: /workspace/github_cpp_makefile_star2_O2/thierry7100[P]CutOptim/include/nanosvg.h
// Function: nsvg__parseXML(char*, void (*)(void*, char const*, char const**), void (*)(void*, char const*), void (*)(void*, char const*), void*)
int nsvg__parseXML(char* input,
				   void (*startelCb)(void* ud, const char* el, const char** attr),
				   void (*endelCb)(void* ud, const char* el),
				   void (*contentCb)(void* ud, const char* s),
				   void* ud)
{
	char* s = input;
	char* mark = s;
	int state = NSVG_XML_CONTENT;
	while (*s) {
		if (*s == '<' && state == NSVG_XML_CONTENT) {
			// Start of a tag
			*s++ = '\0';
			nsvg__parseContent(mark, contentCb, ud);
			mark = s;
			state = NSVG_XML_TAG;
		} else if (*s == '>' && state == NSVG_XML_TAG) {
			// Start of a content or new tag.
			*s++ = '\0';
			nsvg__parseElement(mark, startelCb, endelCb, ud);
			mark = s;
			state = NSVG_XML_CONTENT;
		} else {
			s++;
		}
	}

	return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x838, %rsp            # imm = 0x838
movq %r8, %rbx
movq %rcx, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq %rdi, %r12
pushq $0x2
popq %rax
pushq $0x1
popq %r14
movq %r12, %rbp
movb (%rbp), %cl
testb %cl, %cl
je 0x253ae
cmpl $0x2, %eax
setne %dl
cmpb $0x3c, %cl
setne %sil
orb %dl, %sil
je 0x251a6
cmpl $0x1, %eax
setne %dl
cmpb $0x3e, %cl
setne %cl
incq %rbp
orb %dl, %cl
jne 0x25174
jmp 0x251e9
movb $0x0, (%rbp)
incq %rbp
movq %r12, %r13
movb (%r13), %al
testb %al, %al
je 0x251e1
movsbl %al, %edi
callq 0x30174
testl %eax, %eax
je 0x251c9
incq %r13
jmp 0x251b0
movq %rbp, %r12
movl %r14d, %eax
cmpq $0x0, 0x18(%rsp)
je 0x25171
movq %rbx, %rdi
movq %r13, %rsi
callq *0x18(%rsp)
movq %rbp, %r12
movl %r14d, %eax
jmp 0x25171
movb $0x0, -0x1(%rbp)
leaq 0x1(%r12), %r15
movb (%r12), %r13b
testb %r13b, %r13b
je 0x25210
movsbl %r13b, %edi
callq 0x30174
testl %eax, %eax
je 0x25210
incq %r12
incq %r15
jmp 0x251f2
xorl %ecx, %ecx
cmpb $0x2f, %r13b
setne %r14b
sete %cl
movzbl (%r12,%rcx), %eax
cmpq $0x3f, %rax
ja 0x25240
movabsq $-0x7ffffffdffffffff, %rdx # imm = 0x8000000200000001
btq %rax, %rdx
jae 0x25240
movq %rbp, %r12
jmp 0x2516a
movq %rbx, 0x28(%rsp)
leaq (%r12,%rcx), %rbx
addq %rcx, %r15
movq %rbx, 0x20(%rsp)
testb %al, %al
je 0x2526c
movsbl %al, %edi
callq 0x30174
testl %eax, %eax
jne 0x25271
incq %rbx
movb (%r15), %al
incq %r15
jmp 0x25251
movq %rbx, %r15
jmp 0x25274
movb $0x0, (%rbx)
movq $0x0, (%rsp)
movb $0x1, %cl
testb $0x1, %r14b
je 0x25352
movb (%r15), %bl
xorl %ecx, %ecx
testb %bl, %bl
je 0x25352
cmpq $0xfc, (%rsp)
ja 0x25352
leaq 0x1(%r15), %r14
testb %bl, %bl
je 0x25350
movsbl %bl, %edi
callq 0x30174
testl %eax, %eax
je 0x252c7
movb 0x1(%r15), %bl
incq %r15
incq %r14
jmp 0x252a7
movb $0x1, %cl
cmpb $0x2f, %bl
je 0x25352
testb %bl, %bl
je 0x252ef
movsbl %bl, %edi
callq 0x30174
cmpb $0x3d, %bl
je 0x252f4
testl %eax, %eax
jne 0x252f4
movb (%r14), %bl
incq %r14
jmp 0x252d2
decq %r14
jmp 0x252f9
movb $0x0, -0x1(%r14)
incq %r14
movzbl -0x1(%r14), %ecx
testl %ecx, %ecx
je 0x25350
cmpl $0x22, %ecx
je 0x2530f
cmpl $0x27, %ecx
jne 0x252f9
movq %r14, %rax
movb (%rax), %dl
incq %rax
testb %dl, %dl
je 0x2531f
cmpb %cl, %dl
jne 0x25312
leaq -0x1(%rax), %rcx
testb %dl, %dl
je 0x2532c
movb $0x0, (%rcx)
jmp 0x2532f
movq %rcx, %rax
movq (%rsp), %rcx
movq %r15, 0x30(%rsp,%rcx,8)
movq %r14, 0x38(%rsp,%rcx,8)
addq $0x2, %rcx
movq %rcx, (%rsp)
movb $0x1, %r14b
movq %rax, %r15
jmp 0x2527c
xorl %ecx, %ecx
movq (%rsp), %rax
andl $-0x2, %eax
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp,%rax,8)
cmpq $0x0, 0x8(%rsp)
movq 0x28(%rsp), %rbx
je 0x25389
cmpb $0x2f, %r13b
je 0x25389
movq %rbx, %rdi
movq %r12, %rsi
leaq 0x30(%rsp), %rdx
movl %ecx, %r14d
callq *0x8(%rsp)
movl %r14d, %ecx
cmpq $0x0, 0x10(%rsp)
sete %al
xorb $0x1, %cl
orb %al, %cl
jne 0x25238
movq %rbx, %rdi
movq 0x20(%rsp), %rsi
callq *0x10(%rsp)
jmp 0x25238
pushq $0x1
popq %rax
addq $0x838, %rsp            # imm = 0x838
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq