// File: /workspace/github_c_makefile_star2_O1/hkshenSmart[P]ONVIF-discovery_cs/stdsoap2.c
// Function: soap_send_fault
SOAP_FMAC2
soap_send_fault(struct soap *soap)
{ register int status = soap->error;
  if (status == SOAP_STOP)
    return soap_closesock(soap);
  DBGLOG(TEST,SOAP_MESSAGE(fdebug, "Sending back fault struct for error code %d\n", soap->error));
  soap->keep_alive = 0; /* to terminate connection */
  soap_set_fault(soap);
  if (soap->error < 200 && soap->error != SOAP_FAULT)
    soap->header = NULL;
  if (status != SOAP_EOF || (!soap->recv_timeout && !soap->send_timeout))
  { int r = 1;
#ifndef WITH_NOIO
    if (soap->fpoll && soap->fpoll(soap))
      r = 0;
#ifndef WITH_LEAN
    else if (soap_valid_socket(soap->socket))
    { r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_SND, 0);
      if (r > 0)
      { if (!(r & SOAP_TCP_SELECT_SND)
         || ((r & SOAP_TCP_SELECT_RCV)
          && recv(soap->socket, soap->tmpbuf, 1, MSG_PEEK) < 0))
          r = 0;
      }
    }
#endif
#endif
    if (r > 0)
    { soap->error = SOAP_OK;
      soap_serializeheader(soap);
      soap_serializefault(soap);
      soap_begin_count(soap);
      if (soap->mode & SOAP_IO_LENGTH)
      { soap_envelope_begin_out(soap);
        soap_putheader(soap);
        soap_body_begin_out(soap);
        soap_putfault(soap);
        soap_body_end_out(soap);
        soap_envelope_end_out(soap);
      }
      soap_end_count(soap);
      if (soap_response(soap, status)
       || soap_envelope_begin_out(soap)
       || soap_putheader(soap)
       || soap_body_begin_out(soap)
       || soap_putfault(soap)
       || soap_body_end_out(soap)
       || soap_envelope_end_out(soap))
        return soap_closesock(soap);
      soap_end_send(soap);
    }
  }
  soap->error = status;
  return soap_closesock(soap);
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
movl 0x1f274(%rdi), %ebp
cmpl $0x3e8, %ebp            # imm = 0x3E8
je 0x22b58
movw $0x0, 0x1f22c(%rbx)
movq %rbx, %rdi
callq 0x23e58
movl 0x1f274(%rbx), %eax
cmpl $0xc8, %eax
setge %cl
cmpl $0xc, %eax
sete %al
orb %cl, %al
jne 0x229f1
movq $0x0, 0xbf30(%rbx)
cmpl $-0x1, %ebp
je 0x22a40
movq 0xc038(%rbx), %rax
testq %rax, %rax
je 0x22a10
movq %rbx, %rdi
callq *%rax
testl %eax, %eax
je 0x22a10
movb $0x1, %r14b
jmp 0x22a3b
movl 0xc134(%rbx), %esi
cmpl $-0x1, %esi
je 0x22a7b
movq %rbx, %rdi
movl $0x3, %edx
xorl %ecx, %ecx
callq 0x14afd
testl %eax, %eax
setle %cl
testb $0x2, %al
sete %dl
orb %cl, %dl
movb $0x1, %r14b
je 0x22a56
jmp 0x22b4d
cmpl $0x0, 0x50(%rbx)
jne 0x22b52
cmpl $0x0, 0x54(%rbx)
jne 0x22b52
jmp 0x229f6
testb $0x1, %al
je 0x22a7b
movl 0xc134(%rbx), %edi
leaq 0x1c598(%rbx), %rsi
movl $0x1, %edx
movl $0x2, %ecx
callq 0x3040
testq %rax, %rax
js 0x22a3b
movl $0x0, 0x1f274(%rbx)
movq %rbx, %rdi
callq 0x3694
movq %rbx, %rdi
callq 0x3eb7
movq %rbx, %rdi
callq 0x17fdd
testb $0x8, 0x4(%rbx)
je 0x22ae7
movq %rbx, %rdi
callq 0x22da7
movq %rbx, %rdi
callq 0x3715
movq %rbx, %rdi
callq 0x23145
movq %rbx, %rdi
callq 0x3f5d
leaq 0x3e53(%rip), %rsi      # 0x2691d
movq %rbx, %rdi
callq 0x18a90
testl %eax, %eax
jne 0x22adf
movw $0x7, 0x1e5f0(%rbx)
movq %rbx, %rdi
callq 0x22eef
testb $0x8, 0x4(%rbx)
je 0x22b04
movq 0xc0a8(%rbx), %rax
testq %rax, %rax
je 0x22b04
movq %rbx, %rdi
callq *%rax
movl %eax, 0x1f274(%rbx)
movq %rbx, %rdi
movl %ebp, %esi
callq 0x177b6
testl %eax, %eax
jne 0x22b42
movq %rbx, %rdi
callq 0x22da7
testl %eax, %eax
jne 0x22b42
movq %rbx, %rdi
callq 0x3715
testl %eax, %eax
jne 0x22b42
movq %rbx, %rdi
callq 0x23145
testl %eax, %eax
jne 0x22b42
movq %rbx, %rdi
callq 0x3f5d
testl %eax, %eax
je 0x22b69
movq %rbx, %rdi
callq 0x1495d
xorl %r14d, %r14d
testb %r14b, %r14b
je 0x22b64
movl %ebp, 0x1f274(%rbx)
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x1495d
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x3dad(%rip), %rsi      # 0x2691d
movq %rbx, %rdi
callq 0x18a90
testl %eax, %eax
je 0x22b87
cmpl $0x0, 0x1f274(%rbx)
jne 0x22b42
jmp 0x22b90
movw $0x7, 0x1e5f0(%rbx)
movq %rbx, %rdi
callq 0x22eef
testl %eax, %eax
jne 0x22b42
movq %rbx, %rdi
callq 0x19441
jmp 0x22a0b