// File: /workspace/github_c_makefile_star2_O0/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_match_tag
SOAP_FMAC2
soap_match_tag(struct soap *soap, const char *tag1, const char *tag2)
{ register const char *s, *t;
  register int err;
  if (!tag1 || !tag2 || !*tag2)
    return SOAP_OK;
  s = strchr(tag1, ':');
  t = strchr(tag2, ':');
  if (t)
  { if (s)
    { if (t[1] && SOAP_STRCMP(s + 1, t + 1))
        return SOAP_TAG_MISMATCH;
      if (t != tag2 && (err = soap_match_namespace(soap, tag1, tag2, s - tag1, t - tag2)))
      { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Tags '%s' and '%s' match but namespaces differ\n", tag1, tag2));
        if (err == SOAP_NAMESPACE)
          return SOAP_TAG_MISMATCH;
        return err;
      }
    } 
    else if (SOAP_STRCMP(tag1, t + 1))
    { return SOAP_TAG_MISMATCH;
    }
    else if (t != tag2 && (err = soap_match_namespace(soap, tag1, tag2, 0, t - tag2)))
    { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Tags '%s' and '%s' match but namespaces differ\n", tag1, tag2));
      if (err == SOAP_NAMESPACE)
        return SOAP_TAG_MISMATCH;
      return err;
    }
    DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Tags and (default) namespaces match: '%s' '%s'\n", tag1, tag2));
    return SOAP_OK;
  }
  if (s)
  { if (SOAP_STRCMP(s + 1, tag2))
      return SOAP_TAG_MISMATCH;
  }
  else if (SOAP_STRCMP(tag1, tag2))
    return SOAP_TAG_MISMATCH;
  DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Tags match: '%s' '%s'\n", tag1, tag2));
  return SOAP_OK;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x5553b
cmpq $0x0, -0x20(%rbp)
je 0x5553b
movq -0x20(%rbp), %rax
cmpb $0x0, (%rax)
jne 0x55547
movl $0x0, -0x4(%rbp)
jmp 0x556d0
movq -0x18(%rbp), %rdi
movl $0x3a, %esi
callq 0x3130
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rdi
movl $0x3a, %esi
callq 0x3130
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x55684
cmpq $0x0, -0x28(%rbp)
je 0x5560c
movq -0x30(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x0, %eax
je 0x555b4
movq -0x28(%rbp), %rdi
addq $0x1, %rdi
movq -0x30(%rbp), %rsi
addq $0x1, %rsi
callq 0x3210
cmpl $0x0, %eax
je 0x555b4
movl $0x3, -0x4(%rbp)
jmp 0x556d0
movq -0x30(%rbp), %rax
cmpq -0x20(%rbp), %rax
je 0x5560a
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x18(%rbp), %rax
subq %rax, %rcx
movq -0x30(%rbp), %r8
movq -0x20(%rbp), %rax
subq %rax, %r8
callq 0x55190
movl %eax, -0x34(%rbp)
cmpl $0x0, %eax
je 0x5560a
cmpl $0x9, -0x34(%rbp)
jne 0x555ff
movl $0x3, -0x4(%rbp)
jmp 0x556d0
movl -0x34(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x556d0
jmp 0x5567b
movq -0x18(%rbp), %rdi
movq -0x30(%rbp), %rsi
addq $0x1, %rsi
callq 0x3210
cmpl $0x0, %eax
je 0x5562e
movl $0x3, -0x4(%rbp)
jmp 0x556d0
movq -0x30(%rbp), %rax
cmpq -0x20(%rbp), %rax
je 0x55677
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x30(%rbp), %r8
movq -0x20(%rbp), %rax
subq %rax, %r8
xorl %eax, %eax
movl %eax, %ecx
callq 0x55190
movl %eax, -0x34(%rbp)
cmpl $0x0, %eax
je 0x55677
cmpl $0x9, -0x34(%rbp)
jne 0x5566f
movl $0x3, -0x4(%rbp)
jmp 0x556d0
movl -0x34(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x556d0
jmp 0x55679
jmp 0x5567b
movl $0x0, -0x4(%rbp)
jmp 0x556d0
cmpq $0x0, -0x28(%rbp)
je 0x556ac
movq -0x28(%rbp), %rdi
addq $0x1, %rdi
movq -0x20(%rbp), %rsi
callq 0x3210
cmpl $0x0, %eax
je 0x556aa
movl $0x3, -0x4(%rbp)
jmp 0x556d0
jmp 0x556c9
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x3210
cmpl $0x0, %eax
je 0x556c7
movl $0x3, -0x4(%rbp)
jmp 0x556d0
jmp 0x556c9
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)