// File: /workspace/github_c_makefile_star2_O3/hkshenSmart[P]ONVIF-discovery_cs/stdsoap2.c
// Function: soap_recv_fault
SOAP_FMAC2
soap_recv_fault(struct soap *soap, int check)
{ register int status = soap->error;
  DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Check if receiving SOAP Fault\n"));
  if (!check)
  { /* try getfault when no tag or tag mismatched at level 2, otherwise ret */
    if (soap->error != SOAP_NO_TAG
     && (soap->error != SOAP_TAG_MISMATCH || soap->level != 2))
      return soap->error;
  }
  soap->error = SOAP_OK;
  if (soap_getfault(soap))
  { /* check flag set: check if SOAP Fault is present, if not just return */
    if (check && soap->error == SOAP_TAG_MISMATCH && soap->level == 2)
      return soap->error = SOAP_OK;
    DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Error: soap_get_soapfault() failed at level %u tag '%s'\n", soap->level, soap->tag));
    *soap_faultcode(soap) = (soap->version == 2 ? "SOAP-ENV:Sender" : "SOAP-ENV:Client");
    soap->error = status;
    soap_set_fault(soap);
  }
  else
  { register const char *s = *soap_faultcode(soap);
    if (!soap_match_tag(soap, s, "SOAP-ENV:Server") || !soap_match_tag(soap, s, "SOAP-ENV:Receiver"))
      status = SOAP_SVR_FAULT;
    else if (!soap_match_tag(soap, s, "SOAP-ENV:Client") || !soap_match_tag(soap, s, "SOAP-ENV:Sender"))
      status = SOAP_CLI_FAULT;
    else if (!soap_match_tag(soap, s, "SOAP-ENV:MustUnderstand"))
      status = SOAP_MUSTUNDERSTAND;
    else if (!soap_match_tag(soap, s, "SOAP-ENV:VersionMismatch"))
      status = SOAP_VERSIONMISMATCH;
    else
    { DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Received SOAP Fault code %s\n", s));
      status = SOAP_FAULT;
    }
    if (!soap_body_end_in(soap))
      soap_envelope_end_in(soap);
  }
  soap_end_recv(soap);
  soap->error = status;
  return soap_closesock(soap);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
movl 0x1f274(%rdi), %r15d
testl %esi, %esi
setne %al
cmpl $0x6, %r15d
sete %cl
orb %al, %cl
je 0x23a43
movl $0x0, 0x1f274(%rbx)
movq %rbx, %rdi
callq 0x4037
testl %eax, %eax
je 0x23a9d
testl %ebp, %ebp
je 0x23a59
cmpl $0x3, 0x1f274(%rbx)
jne 0x23a59
cmpl $0x2, 0xc168(%rbx)
jne 0x23a59
movl $0x0, 0x1f274(%rbx)
xorl %eax, %eax
jmp 0x23a92
cmpl $0x3, %r15d
jne 0x23a8f
movl $0x3, %eax
cmpl $0x2, 0xc168(%rbx)
je 0x23a09
jmp 0x23a92
cmpw $0x2, 0x2(%rbx)
leaq 0x2fa6(%rip), %rax      # 0x26a0b
leaq 0x2faf(%rip), %r14      # 0x26a1b
cmoveq %rax, %r14
movq %rbx, %rdi
callq 0x4094
movq %r14, (%rax)
movl %r15d, 0x1f274(%rbx)
movq %rbx, %rdi
callq 0x23491
jmp 0x23b9b
movl %r15d, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rbx, %rdi
callq 0x4094
movq (%rax), %r14
leaq 0x3584(%rip), %rdx      # 0x27033
movq %rbx, %rdi
movq %r14, %rsi
callq 0x140fd
movl $0x2, %r15d
testl %eax, %eax
je 0x23b51
leaq 0x3574(%rip), %rdx      # 0x27043
movq %rbx, %rdi
movq %r14, %rsi
callq 0x140fd
testl %eax, %eax
je 0x23b51
leaq 0x2f36(%rip), %rdx      # 0x26a1b
movq %rbx, %rdi
movq %r14, %rsi
callq 0x140fd
movl $0x1, %r15d
testl %eax, %eax
je 0x23b51
leaq 0x2f0a(%rip), %rdx      # 0x26a0b
movq %rbx, %rdi
movq %r14, %rsi
callq 0x140fd
testl %eax, %eax
je 0x23b51
leaq 0x2f8f(%rip), %rdx      # 0x26aa6
movq %rbx, %rdi
movq %r14, %rsi
callq 0x140fd
testl %eax, %eax
je 0x23b4b
leaq 0x2fd3(%rip), %rdx      # 0x26b00
movq %rbx, %rdi
movq %r14, %rsi
callq 0x140fd
testl %eax, %eax
movl $0x27, %eax
movl $0xc, %r15d
cmovel %eax, %r15d
jmp 0x23b51
movl $0x8, %r15d
cmpw $0x5, 0x1e5f0(%rbx)
jne 0x23b67
movl $0x0, 0x1f274(%rbx)
jmp 0x23b83
movw $0x7, 0x1e5f0(%rbx)
leaq 0x2da6(%rip), %rsi      # 0x2691d
movq %rbx, %rdi
callq 0x13038
testl %eax, %eax
jne 0x23b9b
movw $0x8, 0x1e5f0(%rbx)
leaq 0x2d78(%rip), %rsi      # 0x2690b
movq %rbx, %rdi
callq 0x13038
movq %rbx, %rdi
callq 0x196e4
movl %r15d, 0x1f274(%rbx)
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x14730