// File: /workspace/github_c_makefile_star2_O2/hkshenSmart[P]ONVIF-discovery_cs/stdsoap2.c
// Function: soap_element_end_in
SOAP_FMAC2
soap_element_end_in(struct soap *soap, const char *tag)
{ register soap_wchar c;
  register char *s;
  register int n = 0;
  if (tag && *tag == '-')
    return SOAP_OK;
  if (soap->error == SOAP_NO_TAG)
    soap->error = SOAP_OK;
#ifdef WITH_DOM
  /* this whitespace or mixed content is significant for DOM */
  if ((soap->mode & SOAP_XML_DOM) && soap->dom)
  { if (!soap->peeked && !soap_string_in(soap, 3, -1, -1))
      return soap->error;
    if (soap->dom->prnt)
      soap->dom = soap->dom->prnt;
  }
#endif
  if (soap->peeked)
  { if (*soap->tag)
      n++;
    soap->peeked = 0;
  }
  do
  { while (((c = soap_get(soap)) != SOAP_TT))
    { if ((int)c == EOF)
        return soap->error = SOAP_EOF;
      if (c == SOAP_LT)
        n++;
      else if (c == '/')
      { c = soap_get(soap);
        if (c == SOAP_GT)
          n--;
        else
          soap_unget(soap, c);
      }
    }
  } while (n--);
  s = soap->tag;
  n = sizeof(soap->tag);
  while (soap_notblank(c = soap_get(soap)))
  { if (--n > 0)
      *s++ = (char)c;
  }
  *s = '\0';
  if ((int)c == EOF)
    return soap->error = SOAP_EOF;
  while (soap_blank(c))
    c = soap_get(soap);
  if (c != SOAP_GT)
    return soap->error = SOAP_SYNTAX_ERROR;
#ifndef WITH_LEAN
#ifdef WITH_DOM
  if (soap->feltendin)
  { soap->level--;
    return soap->error = soap->feltendin(soap, soap->tag, tag);
  }
#endif
  if (tag && (soap->mode & SOAP_XML_STRICT))
  { soap_pop_namespace(soap);
    if (soap_match_tag(soap, soap->tag, tag))
    { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End element tag '%s' does not match '%s'\n", soap->tag, tag?tag:SOAP_STR_EOS));
      return soap->error = SOAP_SYNTAX_ERROR;
    }
  }
#endif
  DBGLOG(TEST, SOAP_MESSAGE(fdebug, "End element found (level=%u) '%s'='%s'\n", soap->level, soap->tag, tag?tag:SOAP_STR_EOS));
  soap->level--;
  return SOAP_OK;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
testq %rsi, %rsi
je 0x121b0
xorl %eax, %eax
cmpb $0x2d, (%r14)
je 0x12238
cmpl $0x6, 0x1f274(%rbx)
jne 0x121c0
andl $0x0, 0x1f274(%rbx)
cmpw $0x0, 0x1e5f6(%rbx)
je 0x121e2
xorl %r15d, %r15d
cmpb $0x0, 0x1c998(%rbx)
setne %r15b
andw $0x0, 0x1e5f6(%rbx)
jmp 0x12212
xorl %r15d, %r15d
jmp 0x12212
movq %rbx, %rdi
callq 0x10248
cmpl $-0x4, %eax
je 0x1220f
movl %eax, 0xc160(%rbx)
jmp 0x12212
leal -0x1(%r15), %eax
testl %r15d, %r15d
movl %eax, %r15d
jne 0x12212
jmp 0x12242
incl %r15d
jmp 0x12212
decl %r15d
movq %rbx, %rdi
callq 0x10248
cmpl $0x2f, %eax
je 0x121e7
cmpl $-0x3, %eax
je 0x121fc
cmpl $-0x2, %eax
je 0x1220a
cmpl $-0x1, %eax
jne 0x12212
orl $-0x1, 0x1f274(%rbx)
pushq $-0x1
popq %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
leaq 0x1c998(%rbx), %r15
movl $0x400, %ecx            # imm = 0x400
movq %r15, %r12
movl %ecx, %r13d
movq %rbx, %rdi
callq 0x10248
cmpl $0x21, %eax
jl 0x12277
leal -0x1(%r13), %ecx
cmpl $0x2, %r13d
movl %ecx, %r13d
jl 0x12254
movb %al, (%r12)
incq %r12
jmp 0x12251
movb $0x0, (%r12)
cmpl $-0x1, %eax
jne 0x1228b
jmp 0x1222e
movq %rbx, %rdi
callq 0x10248
cmpl $0x20, %eax
jbe 0x12283
cmpl $-0x4, %eax
jne 0x122ba
testq %r14, %r14
je 0x122cb
testb $0x10, 0x5(%rbx)
je 0x122cb
movq %rbx, %rdi
callq 0x12f44
movq %rbx, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x13169
testl %eax, %eax
je 0x122cb
movl $0x5, 0x1f274(%rbx)
pushq $0x5
jmp 0x12237
decl 0xc168(%rbx)
xorl %eax, %eax
jmp 0x12238