LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_s2byte
SOAP_FMAC2
soap_s2byte(struct soap *soap, const char *s, char *p)
{ if (s)
  { long n;
    char *r;
    n = soap_strtol(s, &r, 10);
    if (s == r || *r || n < -128 || n > 127)
      soap->error = SOAP_TYPE;
    *p = (char)n;
  }
  return soap->error;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
testq %rsi, %rsi
je 0x407be
movq %rdx, %r14
movq %rsi, %r15
movq %rsp, %r12
pushq $0xa
popq %rdx
movq %rsi, %rdi
movq %r12, %rsi
callq 0x3230
movq (%r12), %rcx
cmpq %r15, %rcx
je 0x407b1
cmpb $0x0, (%rcx)
setne %cl
movsbq %al, %rdx
cmpq %rax, %rdx
setne %dl
orb %cl, %dl
cmpb $0x1, %dl
jne 0x407bb
movl $0x4, 0x19214(%rbx)
movb %al, (%r14)
movl 0x19214(%rbx), %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_inbyte
SOAP_FMAC1
char *
SOAP_FMAC2
soap_inbyte(struct soap *soap, const char *tag, char *p, const char *type, int t)
{ if (soap_element_begin_in(soap, tag, 0, NULL))
    return NULL;
#ifndef WITH_LEAN
  if (*soap->type
   && soap_match_tag(soap, soap->type, type)
   && soap_match_tag(soap, soap->type, ":byte"))
  { soap->error = SOAP_TYPE;
    soap_revert(soap);
    return NULL;
  }
#endif
  p = (char*)soap_id_enter(soap, soap->id, p, t, sizeof(char), 0, NULL, NULL, NULL);
  if (*soap->href)
    p = (char*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(char), 0, NULL);
  else if (p)
  { if (soap_s2byte(soap, soap_value(soap), p))
      return NULL;
  }
  if (soap->body && soap_element_end_in(soap, tag))
    return NULL;
  return p;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %r8d, %ebp
movq %rcx, %r13
movq %rdx, %r12
movq %rsi, %r14
movq %rdi, %rbx
xorl %r15d, %r15d
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x36f8a
testl %eax, %eax
jne 0x408f1
cmpb $0x0, 0x17538(%rbx)
je 0x40850
leaq 0x17538(%rbx), %r15
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x380f0
testl %eax, %eax
je 0x40850
leaq 0xb388(%rip), %rdx      # 0x4bbb2
movq %rbx, %rdi
movq %r15, %rsi
callq 0x380f0
testl %eax, %eax
je 0x40850
movl $0x4, 0x19214(%rbx)
movq %rbx, %rdi
callq 0x3ed4a
jmp 0x408ee
leaq 0x16d38(%rbx), %rsi
xorps %xmm0, %xmm0
movups %xmm0, (%rsp)
andq $0x0, 0x10(%rsp)
pushq $0x1
popq %r8
movq %rbx, %rdi
movq %r12, %rdx
movl %ebp, %ecx
xorl %r9d, %r9d
callq 0x3c1b5
movq %rax, %r15
cmpb $0x0, 0x17138(%rbx)
je 0x408cf
leaq 0x17138(%rbx), %rsi
andq $0x0, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
movq $0x1, (%rsp)
movq %rbx, %rdi
movq %r15, %rdx
xorl %ecx, %ecx
movl %ebp, %r8d
xorl %r9d, %r9d
callq 0x3c06d
movq %rax, %r15
cmpw $0x0, 0x6106(%rbx)
je 0x408f1
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3713c
testl %eax, %eax
jne 0x408ee
jmp 0x408f1
testq %r15, %r15
je 0x40903
movq %rbx, %rdi
callq 0x4010f
movq %rbx, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x4076a
testl %eax, %eax
je 0x408b4
xorl %r15d, %r15d
movq %r15, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r15d, %r15d
jmp 0x408b4
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_outshort
SOAP_FMAC2
soap_outshort(struct soap *soap, const char *tag, int id, const short *p, const char *type, int n)
{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type)
   || soap_string_out(soap, soap_long2s(soap, (long)*p), 0))
    return soap->error;
  return soap_element_end_out(soap, tag);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %r8, %r12
movq %rcx, %r15
movq %rsi, %rbx
movq %rdi, %r14
movl %edx, %esi
movq %rcx, %rdx
movl %r9d, %ecx
callq 0x3b587
movq %r14, %rdi
movq %rbx, %rsi
movl %eax, %edx
movq %r12, %rcx
callq 0x3b9c9
testl %eax, %eax
jne 0x40962
movswq (%r15), %rsi
movq %r14, %rdi
callq 0x3fe9b
movq %r14, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x3e651
testl %eax, %eax
je 0x40975
movl 0x19214(%r14), %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %r14, %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x3ba46
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_s2short
SOAP_FMAC2
soap_s2short(struct soap *soap, const char *s, short *p)
{ if (s)
  { long n;
    char *r;
    n = soap_strtol(s, &r, 10);
    if (s == r || *r || n < -32768 || n > 32767)
      soap->error = SOAP_TYPE;
    *p = (short)n;
  }
  return soap->error;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
testq %rsi, %rsi
je 0x409e0
movq %rdx, %r14
movq %rsi, %r15
movq %rsp, %r12
pushq $0xa
popq %rdx
movq %rsi, %rdi
movq %r12, %rsi
callq 0x3230
movq (%r12), %rcx
cmpq %r15, %rcx
je 0x409d2
cmpb $0x0, (%rcx)
setne %cl
movswq %ax, %rdx
cmpq %rax, %rdx
setne %dl
orb %cl, %dl
cmpb $0x1, %dl
jne 0x409dc
movl $0x4, 0x19214(%rbx)
movw %ax, (%r14)
movl 0x19214(%rbx), %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_inshort
SOAP_FMAC1
short *
SOAP_FMAC2
soap_inshort(struct soap *soap, const char *tag, short *p, const char *type, int t)
{ if (soap_element_begin_in(soap, tag, 0, NULL))
    return NULL;
#ifndef WITH_LEAN
  if (*soap->type
   && soap_match_tag(soap, soap->type, type)
   && soap_match_tag(soap, soap->type, ":short")
   && soap_match_tag(soap, soap->type, ":byte"))
  { soap->error = SOAP_TYPE;
    soap_revert(soap);
    return NULL;
  }
#endif
  p = (short*)soap_id_enter(soap, soap->id, p, t, sizeof(short), 0, NULL, NULL, NULL);
  if (*soap->href)
    p = (short*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(short), 0, NULL);
  else if (p)
  { if (soap_s2short(soap, soap_value(soap), p))
      return NULL;
  }
  if (soap->body && soap_element_end_in(soap, tag))
    return NULL;
  return p;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %r8d, %ebp
movq %rcx, %r13
movq %rdx, %r12
movq %rsi, %r14
movq %rdi, %rbx
xorl %r15d, %r15d
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x36f8a
testl %eax, %eax
jne 0x40b29
cmpb $0x0, 0x17538(%rbx)
je 0x40a88
leaq 0x17538(%rbx), %r15
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x380f0
testl %eax, %eax
je 0x40a88
leaq 0xcce7(%rip), %rdx      # 0x4d733
movq %rbx, %rdi
movq %r15, %rsi
callq 0x380f0
testl %eax, %eax
je 0x40a88
leaq 0xb150(%rip), %rdx      # 0x4bbb2
movq %rbx, %rdi
movq %r15, %rsi
callq 0x380f0
testl %eax, %eax
je 0x40a88
movl $0x4, 0x19214(%rbx)
movq %rbx, %rdi
callq 0x3ed4a
jmp 0x40b26
leaq 0x16d38(%rbx), %rsi
xorps %xmm0, %xmm0
movups %xmm0, (%rsp)
andq $0x0, 0x10(%rsp)
pushq $0x2
popq %r8
movq %rbx, %rdi
movq %r12, %rdx
movl %ebp, %ecx
xorl %r9d, %r9d
callq 0x3c1b5
movq %rax, %r15
cmpb $0x0, 0x17138(%rbx)
je 0x40b07
leaq 0x17138(%rbx), %rsi
andq $0x0, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
movq $0x2, (%rsp)
movq %rbx, %rdi
movq %r15, %rdx
xorl %ecx, %ecx
movl %ebp, %r8d
xorl %r9d, %r9d
callq 0x3c06d
movq %rax, %r15
cmpw $0x0, 0x6106(%rbx)
je 0x40b29
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3713c
testl %eax, %eax
jne 0x40b26
jmp 0x40b29
testq %r15, %r15
je 0x40b3b
movq %rbx, %rdi
callq 0x4010f
movq %rbx, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x4098b
testl %eax, %eax
je 0x40aec
xorl %r15d, %r15d
movq %r15, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r15d, %r15d
jmp 0x40aec
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_float2s
SOAP_FMAC1
const char*
SOAP_FMAC2
soap_float2s(struct soap *soap, float n)
{ char *s;
  if (soap_isnan((double)n))
    return "NaN";
  if (soap_ispinff(n))
    return "INF";
  if (soap_isninff(n))
    return "-INF";
  s = soap->tmpbuf;
#if defined(HAVE_SPRINTF_L)
  sprintf_l(s, soap->c_locale, soap->float_format, n);
#else
  sprintf(s, soap->float_format, n);
  s = strchr(s, ',');	/* convert decimal comma to DP */
  if (s)
    *s = '.';
#endif
  return soap->tmpbuf;
}

// Assembly:
pushq %rbx
ucomiss %xmm0, %xmm0
jp 0x40ba2
ucomiss 0xc6bb(%rip), %xmm0     # 0x4d208
jb 0x40b58
leaq 0xcc4b(%rip), %rbx      # 0x4d7a1
jmp 0x40b9d
movss 0xc6ac(%rip), %xmm1     # 0x4d20c
ucomiss %xmm0, %xmm1
jb 0x40b6e
leaq 0xcc2f(%rip), %rbx      # 0x4d79b
jmp 0x40b9d
movq %rdi, %rbx
cvtss2sd %xmm0, %xmm0
movq 0x10(%rdi), %rsi
addq $0x16538, %rbx          # imm = 0x16538
movq %rbx, %rdi
movb $0x1, %al
callq 0x3370
pushq $0x2c
popq %rsi
movq %rbx, %rdi
callq 0x3130
testq %rax, %rax
je 0x40b9d
movb $0x2e, (%rax)
movq %rbx, %rax
popq %rbx
retq
leaq 0xcbee(%rip), %rbx      # 0x4d797
jmp 0x40b9d
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_outfloat
SOAP_FMAC2
soap_outfloat(struct soap *soap, const char *tag, int id, const float *p, const char *type, int n)
{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type)
   || soap_string_out(soap, soap_float2s(soap, *p), 0))
    return soap->error;
  return soap_element_end_out(soap, tag);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %r8, %r12
movq %rcx, %r15
movq %rsi, %rbx
movq %rdi, %r14
movl %edx, %esi
movq %rcx, %rdx
movl %r9d, %ecx
callq 0x3b587
movq %r14, %rdi
movq %rbx, %rsi
movl %eax, %edx
movq %r12, %rcx
callq 0x3b9c9
testl %eax, %eax
jne 0x40bfe
movss (%r15), %xmm0
movq %r14, %rdi
callq 0x40b40
movq %r14, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x3e651
testl %eax, %eax
je 0x40c11
movl 0x19214(%r14), %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %r14, %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x3ba46
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_s2float
SOAP_FMAC2
soap_s2float(struct soap *soap, const char *s, float *p)
{ if (s)
  { if (!*s)
      return soap->error = SOAP_TYPE;
    if (!soap_tag_cmp(s, "INF"))
      *p = FLT_PINFTY;
    else if (!soap_tag_cmp(s, "+INF"))
      *p = FLT_PINFTY;
    else if (!soap_tag_cmp(s, "-INF"))
      *p = FLT_NINFTY;
    else if (!soap_tag_cmp(s, "NaN"))
      *p = FLT_NAN;
    else
    {
/* On some systems strtof requires -std=c99 or does not even link: so we try to use strtod first */
#if defined(HAVE_STRTOD_L)
      char *r;
      *p = (float)strtod_l(s, &r, soap->c_locale);
      if (*r)
#elif defined(HAVE_STRTOD)
      char *r;
      *p = (float)strtod(s, &r);
      if (*r)
#elif defined(HAVE_STRTOF_L)
      char *r;
      *p = strtof_l((char*)s, &r, soap->c_locale);
      if (*r)
#elif defined(HAVE_STRTOF)
      char *r;
      *p = strtof((char*)s, &r);
      if (*r)
#endif
      {
#if defined(HAVE_SSCANF_L) && !defined(HAVE_STRTOF_L) && !defined(HAVE_STRTOD_L)
        if (sscanf_l(s, soap->c_locale, "%g", p) != 1)
          soap->error = SOAP_TYPE;
#elif defined(HAVE_SSCANF)
        if (sscanf(s, "%g", p) != 1)
          soap->error = SOAP_TYPE;
#else
        soap->error = SOAP_TYPE;
#endif
      }
    }
  }
  return soap->error;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
testq %rsi, %rsi
je 0x40cea
movq %rsi, %r15
cmpb $0x0, (%rsi)
je 0x40cf2
movq %rdx, %r14
leaq 0xcb50(%rip), %rsi      # 0x4d7a1
movq %r15, %rdi
callq 0x3507f
testl %eax, %eax
je 0x40ce3
leaq 0xcb38(%rip), %rsi      # 0x4d7a0
movq %r15, %rdi
callq 0x3507f
testl %eax, %eax
je 0x40ce3
leaq 0xcb20(%rip), %rsi      # 0x4d79b
movq %r15, %rdi
callq 0x3507f
testl %eax, %eax
je 0x40d0b
leaq 0xcb05(%rip), %rsi      # 0x4d797
movq %r15, %rdi
callq 0x3507f
testl %eax, %eax
je 0x40d14
movq %rsp, %r12
movq %r15, %rdi
movq %r12, %rsi
callq 0x30b0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, (%r14)
movq (%r12), %rax
cmpb $0x0, (%rax)
je 0x40cea
leaq 0xcae0(%rip), %rsi      # 0x4d7a5
movq %r15, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x32a0
cmpl $0x1, %eax
je 0x40cea
movl $0x4, 0x19214(%rbx)
jmp 0x40cea
movl $0x7f800000, (%r14)     # imm = 0x7F800000
movl 0x19214(%rbx), %eax
jmp 0x40cff
movl $0x4, 0x19214(%rbx)
pushq $0x4
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movl $0xff800000, (%r14)     # imm = 0xFF800000
jmp 0x40cea
orl $-0x1, (%r14)
jmp 0x40cea
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_infloat
SOAP_FMAC1
float *
SOAP_FMAC2
soap_infloat(struct soap *soap, const char *tag, float *p, const char *type, int t)
{ if (soap_element_begin_in(soap, tag, 0, NULL))
    return NULL;
#ifndef WITH_LEAN
  if (*soap->type != '\0' && soap_isnumeric(soap, type))
    return NULL;
#endif
  p = (float*)soap_id_enter(soap, soap->id, p, t, sizeof(float), 0, NULL, NULL, NULL);
  if (*soap->href)
    p = (float*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(float), 0, NULL);
  else if (p)
  { if (soap_s2float(soap, soap_value(soap), p))
      return NULL;
  }
  if (soap->body && soap_element_end_in(soap, tag))
    return NULL;
  return p;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %r8d, %ebp
movq %rcx, %r13
movq %rdx, %r12
movq %rsi, %rbx
movq %rdi, %r14
xorl %r15d, %r15d
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x36f8a
testl %eax, %eax
jne 0x40e0b
cmpb $0x0, 0x17538(%r14)
je 0x40d68
movq %r14, %rdi
movq %r13, %rsi
callq 0x40e22
testl %eax, %eax
jne 0x40e08
leaq 0x16d38(%r14), %rsi
xorps %xmm0, %xmm0
movups %xmm0, (%rsp)
andq $0x0, 0x10(%rsp)
pushq $0x4
popq %r8
movq %r14, %rdi
movq %r12, %rdx
movl %ebp, %ecx
xorl %r9d, %r9d
callq 0x3c1b5
movq %rax, %r15
cmpb $0x0, 0x17138(%r14)
je 0x40de9
leaq 0x17138(%r14), %rsi
andq $0x0, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
movq $0x4, (%rsp)
movq %r14, %rdi
movq %r15, %rdx
xorl %ecx, %ecx
movl %ebp, %r8d
xorl %r9d, %r9d
callq 0x3c06d
movq %rax, %r15
cmpw $0x0, 0x6106(%r14)
je 0x40e0b
movq %r14, %rdi
movq %rbx, %rsi
callq 0x3713c
testl %eax, %eax
jne 0x40e08
jmp 0x40e0b
testq %r15, %r15
je 0x40e1d
movq %r14, %rdi
callq 0x4010f
movq %r14, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x40c27
testl %eax, %eax
je 0x40dcd
xorl %r15d, %r15d
movq %r15, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r15d, %r15d
jmp 0x40dcd
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_double2s
SOAP_FMAC1
const char*
SOAP_FMAC2
soap_double2s(struct soap *soap, double n)
{ char *s;
  if (soap_isnan(n))
    return "NaN";
  if (soap_ispinfd(n))
    return "INF";
  if (soap_isninfd(n))
    return "-INF";
  s = soap->tmpbuf;
#if defined(HAVE_SPRINTF_L)
  sprintf_l(s, soap->c_locale, soap->double_format, n);
#else
  sprintf(s, soap->double_format, n);
  s = strchr(s, ',');	/* convert decimal comma to DP */
  if (s)
    *s = '.';
#endif
  return soap->tmpbuf;
}

// Assembly:
pushq %rbx
ucomisd %xmm0, %xmm0
jp 0x41051
ucomisd 0xc211(%rip), %xmm0     # 0x4d210
jb 0x4100a
leaq 0xc799(%rip), %rbx      # 0x4d7a1
jmp 0x4104c
movsd 0xc206(%rip), %xmm1     # 0x4d218
ucomisd %xmm0, %xmm1
jb 0x41021
leaq 0xc77c(%rip), %rbx      # 0x4d79b
jmp 0x4104c
movq %rdi, %rbx
movq 0x18(%rdi), %rsi
addq $0x16538, %rbx          # imm = 0x16538
movq %rbx, %rdi
movb $0x1, %al
callq 0x3370
pushq $0x2c
popq %rsi
movq %rbx, %rdi
callq 0x3130
testq %rax, %rax
je 0x4104c
movb $0x2e, (%rax)
movq %rbx, %rax
popq %rbx
retq
leaq 0xc73f(%rip), %rbx      # 0x4d797
jmp 0x4104c
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_outdouble
SOAP_FMAC2
soap_outdouble(struct soap *soap, const char *tag, int id, const double *p, const char *type, int n)
{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type)
   || soap_string_out(soap, soap_double2s(soap, *p), 0))
    return soap->error;
  return soap_element_end_out(soap, tag);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %r8, %r12
movq %rcx, %r15
movq %rsi, %rbx
movq %rdi, %r14
movl %edx, %esi
movq %rcx, %rdx
movl %r9d, %ecx
callq 0x3b587
movq %r14, %rdi
movq %rbx, %rsi
movl %eax, %edx
movq %r12, %rcx
callq 0x3b9c9
testl %eax, %eax
jne 0x410ad
movsd (%r15), %xmm0
movq %r14, %rdi
callq 0x40ff0
movq %r14, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x3e651
testl %eax, %eax
je 0x410c0
movl 0x19214(%r14), %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %r14, %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x3ba46
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_s2double
SOAP_FMAC2
soap_s2double(struct soap *soap, const char *s, double *p)
{ if (s)
  { if (!*s)
      return soap->error = SOAP_TYPE;
    if (!soap_tag_cmp(s, "INF"))
      *p = DBL_PINFTY;
    else if (!soap_tag_cmp(s, "+INF"))
      *p = DBL_PINFTY;
    else if (!soap_tag_cmp(s, "-INF"))
      *p = DBL_NINFTY;
    else if (!soap_tag_cmp(s, "NaN"))
      *p = DBL_NAN;
    else
    {
#if defined(HAVE_STRTOD_L)
      char *r;
      *p = strtod_l(s, &r, soap->c_locale);
      if (*r)
#elif defined(HAVE_STRTOD)
      char *r;
      *p = strtod(s, &r);
      if (*r)
#endif
      {
#if defined(HAVE_SSCANF_L) && !defined(HAVE_STRTOF_L) && !defined(HAVE_STRTOD_L)
        if (sscanf_l(s, soap->c_locale, "%lg", p) != 1)
          soap->error = SOAP_TYPE;
#elif defined(HAVE_SSCANF)
        if (sscanf(s, "%lg", p) != 1)
          soap->error = SOAP_TYPE;
#else
        soap->error = SOAP_TYPE;
#endif
      }
    }
  }
  return soap->error;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
testq %rsi, %rsi
je 0x41197
movq %rsi, %r15
cmpb $0x0, (%rsi)
je 0x4119f
movq %rdx, %r14
leaq 0xc6a1(%rip), %rsi      # 0x4d7a1
movq %r15, %rdi
callq 0x3507f
testl %eax, %eax
je 0x4118a
leaq 0xc68d(%rip), %rsi      # 0x4d7a0
movq %r15, %rdi
callq 0x3507f
testl %eax, %eax
je 0x4118a
leaq 0xc675(%rip), %rsi      # 0x4d79b
movq %r15, %rdi
callq 0x3507f
testl %eax, %eax
je 0x411b8
leaq 0xc65a(%rip), %rsi      # 0x4d797
movq %r15, %rdi
callq 0x3507f
testl %eax, %eax
je 0x411c4
movq %rsp, %r12
movq %r15, %rdi
movq %r12, %rsi
callq 0x30b0
movsd %xmm0, (%r14)
movq (%r12), %rax
cmpb $0x0, (%rax)
je 0x41197
leaq 0xc63c(%rip), %rsi      # 0x4d7a8
movq %r15, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x32a0
cmpl $0x1, %eax
je 0x41197
movl $0x4, 0x19214(%rbx)
jmp 0x41197
movabsq $0x7ff0000000000000, %rax # imm = 0x7FF0000000000000
movq %rax, (%r14)
movl 0x19214(%rbx), %eax
jmp 0x411ac
movl $0x4, 0x19214(%rbx)
pushq $0x4
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movabsq $-0x10000000000000, %rax # imm = 0xFFF0000000000000
jmp 0x41194
orq $-0x1, (%r14)
jmp 0x41197
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_indouble
SOAP_FMAC1
double *
SOAP_FMAC2
soap_indouble(struct soap *soap, const char *tag, double *p, const char *type, int t)
{ if (soap_element_begin_in(soap, tag, 0, NULL))
    return NULL;
#ifndef WITH_LEAN
  if (*soap->type != '\0' && soap_isnumeric(soap, type))
    return NULL;
#endif
  p = (double*)soap_id_enter(soap, soap->id, p, t, sizeof(double), 0, NULL, NULL, NULL);
  if (*soap->href)
    p = (double*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(double), 0, NULL);
  else if (p)
  { if (soap_s2double(soap, soap_value(soap), p))
      return NULL;
  }
  if (soap->body && soap_element_end_in(soap, tag))
    return NULL;
  return p;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %r8d, %ebp
movq %rcx, %r13
movq %rdx, %r12
movq %rsi, %rbx
movq %rdi, %r14
xorl %r15d, %r15d
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x36f8a
testl %eax, %eax
jne 0x412bb
cmpb $0x0, 0x17538(%r14)
je 0x41218
movq %r14, %rdi
movq %r13, %rsi
callq 0x40e22
testl %eax, %eax
jne 0x412b8
leaq 0x16d38(%r14), %rsi
xorps %xmm0, %xmm0
movups %xmm0, (%rsp)
andq $0x0, 0x10(%rsp)
pushq $0x8
popq %r8
movq %r14, %rdi
movq %r12, %rdx
movl %ebp, %ecx
xorl %r9d, %r9d
callq 0x3c1b5
movq %rax, %r15
cmpb $0x0, 0x17138(%r14)
je 0x41299
leaq 0x17138(%r14), %rsi
andq $0x0, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
movq $0x8, (%rsp)
movq %r14, %rdi
movq %r15, %rdx
xorl %ecx, %ecx
movl %ebp, %r8d
xorl %r9d, %r9d
callq 0x3c06d
movq %rax, %r15
cmpw $0x0, 0x6106(%r14)
je 0x412bb
movq %r14, %rdi
movq %rbx, %rsi
callq 0x3713c
testl %eax, %eax
jne 0x412b8
jmp 0x412bb
testq %r15, %r15
je 0x412cd
movq %r14, %rdi
callq 0x4010f
movq %r14, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x410d6
testl %eax, %eax
je 0x4127d
xorl %r15d, %r15d
movq %r15, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r15d, %r15d
jmp 0x4127d
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_outunsignedByte
SOAP_FMAC2
soap_outunsignedByte(struct soap *soap, const char *tag, int id, const unsigned char *p, const char *type, int n)
{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type)
   || soap_string_out(soap, soap_unsignedLong2s(soap, (unsigned long)*p), 0))
    return soap->error;
  return soap_element_end_out(soap, tag);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %r8, %r12
movq %rcx, %r15
movq %rsi, %rbx
movq %rdi, %r14
movl %edx, %esi
movq %rcx, %rdx
movl %r9d, %ecx
callq 0x3b587
movq %r14, %rdi
movq %rbx, %rsi
movl %eax, %edx
movq %r12, %rcx
callq 0x3b9c9
testl %eax, %eax
jne 0x4134c
movzbl (%r15), %esi
movq %r14, %rdi
callq 0x412d9
movq %r14, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x3e651
testl %eax, %eax
je 0x4135f
movl 0x19214(%r14), %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %r14, %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x3ba46
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_s2unsignedByte
SOAP_FMAC2
soap_s2unsignedByte(struct soap *soap, const char *s, unsigned char *p)
{ if (s)
  { unsigned long n;
    char *r;
    n = soap_strtoul(s, &r, 10);
    if (s == r || *r || n > 255)
      soap->error = SOAP_TYPE;
    *p = (unsigned char)n;
  }
  return soap->error;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
testq %rsi, %rsi
je 0x413c8
movq %rdx, %r14
movq %rsi, %r15
movq %rsp, %r12
pushq $0xa
popq %rdx
movq %rsi, %rdi
movq %r12, %rsi
callq 0x3350
movq (%r12), %rcx
cmpq %r15, %rcx
je 0x413bb
cmpb $0x0, (%rcx)
setne %cl
cmpq $0x100, %rax            # imm = 0x100
setae %dl
orb %cl, %dl
cmpb $0x1, %dl
jne 0x413c5
movl $0x4, 0x19214(%rbx)
movb %al, (%r14)
movl 0x19214(%rbx), %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_inunsignedByte
SOAP_FMAC1
unsigned char *
SOAP_FMAC2
soap_inunsignedByte(struct soap *soap, const char *tag, unsigned char *p, const char *type, int t)
{ if (soap_element_begin_in(soap, tag, 0, NULL))
    return NULL;
#ifndef WITH_LEAN
  if (*soap->type
   && soap_match_tag(soap, soap->type, type)
   && soap_match_tag(soap, soap->type, ":unsignedByte"))
  { soap->error = SOAP_TYPE;
    soap_revert(soap);
    return NULL;
  }
#endif
  p = (unsigned char*)soap_id_enter(soap, soap->id, p, t, sizeof(unsigned char), 0, NULL, NULL, NULL);
  if (*soap->href)
    p = (unsigned char*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(unsigned char), 0, NULL);
  else if (p)
  { if (soap_s2unsignedByte(soap, soap_value(soap), p))
      return NULL;
  }
  if (soap->body && soap_element_end_in(soap, tag))
    return NULL;
  return p;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %r8d, %ebp
movq %rcx, %r13
movq %rdx, %r12
movq %rsi, %r14
movq %rdi, %rbx
xorl %r15d, %r15d
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x36f8a
testl %eax, %eax
jne 0x414fb
cmpb $0x0, 0x17538(%rbx)
je 0x4145a
leaq 0x17538(%rbx), %r15
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x380f0
testl %eax, %eax
je 0x4145a
leaq 0xc378(%rip), %rdx      # 0x4d7ac
movq %rbx, %rdi
movq %r15, %rsi
callq 0x380f0
testl %eax, %eax
je 0x4145a
movl $0x4, 0x19214(%rbx)
movq %rbx, %rdi
callq 0x3ed4a
jmp 0x414f8
leaq 0x16d38(%rbx), %rsi
xorps %xmm0, %xmm0
movups %xmm0, (%rsp)
andq $0x0, 0x10(%rsp)
pushq $0x1
popq %r8
movq %rbx, %rdi
movq %r12, %rdx
movl %ebp, %ecx
xorl %r9d, %r9d
callq 0x3c1b5
movq %rax, %r15
cmpb $0x0, 0x17138(%rbx)
je 0x414d9
leaq 0x17138(%rbx), %rsi
andq $0x0, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
movq $0x1, (%rsp)
movq %rbx, %rdi
movq %r15, %rdx
xorl %ecx, %ecx
movl %ebp, %r8d
xorl %r9d, %r9d
callq 0x3c06d
movq %rax, %r15
cmpw $0x0, 0x6106(%rbx)
je 0x414fb
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3713c
testl %eax, %eax
jne 0x414f8
jmp 0x414fb
testq %r15, %r15
je 0x4150d
movq %rbx, %rdi
callq 0x4010f
movq %rbx, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x41375
testl %eax, %eax
je 0x414be
xorl %r15d, %r15d
movq %r15, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r15d, %r15d
jmp 0x414be
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_outunsignedShort
SOAP_FMAC2
soap_outunsignedShort(struct soap *soap, const char *tag, int id, const unsigned short *p, const char *type, int n)
{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type)
   || soap_string_out(soap, soap_unsignedLong2s(soap, (unsigned long)*p), 0))
    return soap->error;
  return soap_element_end_out(soap, tag);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %r8, %r12
movq %rcx, %r15
movq %rsi, %rbx
movq %rdi, %r14
movl %edx, %esi
movq %rcx, %rdx
movl %r9d, %ecx
callq 0x3b587
movq %r14, %rdi
movq %rbx, %rsi
movl %eax, %edx
movq %r12, %rcx
callq 0x3b9c9
testl %eax, %eax
jne 0x4156b
movzwl (%r15), %esi
movq %r14, %rdi
callq 0x412d9
movq %r14, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x3e651
testl %eax, %eax
je 0x4157e
movl 0x19214(%r14), %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %r14, %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x3ba46
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_s2unsignedShort
SOAP_FMAC2
soap_s2unsignedShort(struct soap *soap, const char *s, unsigned short *p)
{ if (s)
  { unsigned long n;
    char *r;
    n = soap_strtoul(s, &r, 10);
    if (s == r || *r || n > 65535)
      soap->error = SOAP_TYPE;
    *p = (unsigned short)n;
  }
  return soap->error;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
testq %rsi, %rsi
je 0x415e8
movq %rdx, %r14
movq %rsi, %r15
movq %rsp, %r12
pushq $0xa
popq %rdx
movq %rsi, %rdi
movq %r12, %rsi
callq 0x3350
movq (%r12), %rcx
cmpq %r15, %rcx
je 0x415da
cmpb $0x0, (%rcx)
setne %cl
cmpq $0x10000, %rax          # imm = 0x10000
setae %dl
orb %cl, %dl
cmpb $0x1, %dl
jne 0x415e4
movl $0x4, 0x19214(%rbx)
movw %ax, (%r14)
movl 0x19214(%rbx), %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_inunsignedShort
SOAP_FMAC1
unsigned short *
SOAP_FMAC2
soap_inunsignedShort(struct soap *soap, const char *tag, unsigned short *p, const char *type, int t)
{ if (soap_element_begin_in(soap, tag, 0, NULL))
    return NULL;
#ifndef WITH_LEAN
  if (*soap->type
   && soap_match_tag(soap, soap->type, type)
   && soap_match_tag(soap, soap->type, ":unsignedShort")
   && soap_match_tag(soap, soap->type, ":unsignedByte"))
  { soap->error = SOAP_TYPE;
    soap_revert(soap);
    return NULL;
  }
#endif
  p = (unsigned short*)soap_id_enter(soap, soap->id, p, t, sizeof(unsigned short), 0, NULL, NULL, NULL);
  if (*soap->href)
    p = (unsigned short*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(unsigned short), 0, NULL);
  else if (p)
  { if (soap_s2unsignedShort(soap, soap_value(soap), p))
      return NULL;
  }
  if (soap->body && soap_element_end_in(soap, tag))
    return NULL;
  return p;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %r8d, %ebp
movq %rcx, %r13
movq %rdx, %r12
movq %rsi, %r14
movq %rdi, %rbx
xorl %r15d, %r15d
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x36f8a
testl %eax, %eax
jne 0x41731
cmpb $0x0, 0x17538(%rbx)
je 0x41690
leaq 0x17538(%rbx), %r15
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x380f0
testl %eax, %eax
je 0x41690
leaq 0xc166(%rip), %rdx      # 0x4d7ba
movq %rbx, %rdi
movq %r15, %rsi
callq 0x380f0
testl %eax, %eax
je 0x41690
leaq 0xc142(%rip), %rdx      # 0x4d7ac
movq %rbx, %rdi
movq %r15, %rsi
callq 0x380f0
testl %eax, %eax
je 0x41690
movl $0x4, 0x19214(%rbx)
movq %rbx, %rdi
callq 0x3ed4a
jmp 0x4172e
leaq 0x16d38(%rbx), %rsi
xorps %xmm0, %xmm0
movups %xmm0, (%rsp)
andq $0x0, 0x10(%rsp)
pushq $0x2
popq %r8
movq %rbx, %rdi
movq %r12, %rdx
movl %ebp, %ecx
xorl %r9d, %r9d
callq 0x3c1b5
movq %rax, %r15
cmpb $0x0, 0x17138(%rbx)
je 0x4170f
leaq 0x17138(%rbx), %rsi
andq $0x0, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
movq $0x2, (%rsp)
movq %rbx, %rdi
movq %r15, %rdx
xorl %ecx, %ecx
movl %ebp, %r8d
xorl %r9d, %r9d
callq 0x3c06d
movq %rax, %r15
cmpw $0x0, 0x6106(%rbx)
je 0x41731
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3713c
testl %eax, %eax
jne 0x4172e
jmp 0x41731
testq %r15, %r15
je 0x41743
movq %rbx, %rdi
callq 0x4010f
movq %rbx, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x41594
testl %eax, %eax
je 0x416f4
xorl %r15d, %r15d
movq %r15, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r15d, %r15d
jmp 0x416f4
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_s2unsignedInt
SOAP_FMAC2
soap_s2unsignedInt(struct soap *soap, const char *s, unsigned int *p)
{ if (s)
  { char *r;
#ifndef WITH_NOIO
#ifndef WITH_LEAN
    soap_reset_errno;
#endif
#endif
    *p = (unsigned int)soap_strtoul(s, &r, 10);
    if ((s == r && (soap->mode & SOAP_XML_STRICT)) || *r
#ifndef WITH_NOIO
#ifndef WITH_LEAN
     || soap_errno == SOAP_ERANGE
#endif
#endif
    )
      soap->error = SOAP_TYPE;
  }
  return soap->error;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
testq %rsi, %rsi
je 0x4182a
movq %rdx, %r12
movq %rsi, %r15
callq 0x3060
movq %rax, %r14
andl $0x0, (%rax)
leaq 0x8(%rsp), %r13
pushq $0xa
popq %rdx
movq %r15, %rdi
movq %r13, %rsi
callq 0x3350
movl %eax, (%r12)
movq (%r13), %rax
cmpq %r15, %rax
jne 0x41815
testb $0x10, 0x5(%rbx)
jne 0x41820
cmpb $0x0, (%rax)
jne 0x41820
cmpl $0x22, (%r14)
jne 0x4182a
movl $0x4, 0x19214(%rbx)
movl 0x19214(%rbx), %eax
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_inunsignedInt
SOAP_FMAC1
unsigned int *
SOAP_FMAC2
soap_inunsignedInt(struct soap *soap, const char *tag, unsigned int *p, const char *type, int t)
{ if (soap_element_begin_in(soap, tag, 0, NULL))
    return NULL;
#ifndef WITH_LEAN
  if (*soap->type
   && soap_match_tag(soap, soap->type, type)
   && soap_match_tag(soap, soap->type, ":unsignedInt")
   && soap_match_tag(soap, soap->type, ":unsignedShort")
   && soap_match_tag(soap, soap->type, ":unsignedByte"))
  { soap->error = SOAP_TYPE;
    soap_revert(soap);
    return NULL;
  }
#endif
  p = (unsigned int*)soap_id_enter(soap, soap->id, p, t, sizeof(unsigned int), 0, NULL, NULL, NULL);
  if (*soap->href)
    p = (unsigned int*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(unsigned int), 0, NULL);
  else if (p)
  { if (soap_s2unsignedInt(soap, soap_value(soap), p))
      return NULL;
  }
  if (soap->body && soap_element_end_in(soap, tag))
    return NULL;
  return p;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %r8d, %ebp
movq %rcx, %r13
movq %rdx, %r12
movq %rsi, %r14
movq %rdi, %rbx
xorl %r15d, %r15d
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x36f8a
testl %eax, %eax
jne 0x4198b
cmpb $0x0, 0x17538(%rbx)
je 0x418ea
leaq 0x17538(%rbx), %r15
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x380f0
testl %eax, %eax
je 0x418ea
leaq 0xbf31(%rip), %rdx      # 0x4d7c9
movq %rbx, %rdi
movq %r15, %rsi
callq 0x380f0
testl %eax, %eax
je 0x418ea
leaq 0xbf0c(%rip), %rdx      # 0x4d7ba
movq %rbx, %rdi
movq %r15, %rsi
callq 0x380f0
testl %eax, %eax
je 0x418ea
leaq 0xbee8(%rip), %rdx      # 0x4d7ac
movq %rbx, %rdi
movq %r15, %rsi
callq 0x380f0
testl %eax, %eax
je 0x418ea
movl $0x4, 0x19214(%rbx)
movq %rbx, %rdi
callq 0x3ed4a
jmp 0x41988
leaq 0x16d38(%rbx), %rsi
xorps %xmm0, %xmm0
movups %xmm0, (%rsp)
andq $0x0, 0x10(%rsp)
pushq $0x4
popq %r8
movq %rbx, %rdi
movq %r12, %rdx
movl %ebp, %ecx
xorl %r9d, %r9d
callq 0x3c1b5
movq %rax, %r15
cmpb $0x0, 0x17138(%rbx)
je 0x41969
leaq 0x17138(%rbx), %rsi
andq $0x0, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
movq $0x4, (%rsp)
movq %rbx, %rdi
movq %r15, %rdx
xorl %ecx, %ecx
movl %ebp, %r8d
xorl %r9d, %r9d
callq 0x3c06d
movq %rax, %r15
cmpw $0x0, 0x6106(%rbx)
je 0x4198b
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3713c
testl %eax, %eax
jne 0x41988
jmp 0x4198b
testq %r15, %r15
je 0x4199d
movq %rbx, %rdi
callq 0x4010f
movq %rbx, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x417c9
testl %eax, %eax
je 0x4194e
xorl %r15d, %r15d
movq %r15, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r15d, %r15d
jmp 0x4194e
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_outunsignedLong
SOAP_FMAC2
soap_outunsignedLong(struct soap *soap, const char *tag, int id, const unsigned long *p, const char *type, int n)
{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type)
   || soap_string_out(soap, soap_unsignedLong2s(soap, *p), 0))
    return soap->error;
  return soap_element_end_out(soap, tag);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %r8, %r12
movq %rcx, %r15
movq %rsi, %rbx
movq %rdi, %r14
movl %edx, %esi
movq %rcx, %rdx
movl %r9d, %ecx
callq 0x3b587
movq %r14, %rdi
movq %rbx, %rsi
movl %eax, %edx
movq %r12, %rcx
callq 0x3b9c9
testl %eax, %eax
jne 0x419f3
movq (%r15), %rsi
movq %r14, %rdi
callq 0x412d9
movq %r14, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x3e651
testl %eax, %eax
je 0x41a06
movl 0x19214(%r14), %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %r14, %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x3ba46
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_s2unsignedLong
SOAP_FMAC2
soap_s2unsignedLong(struct soap *soap, const char *s, unsigned long *p)
{ if (s)
  { char *r;
#ifndef WITH_NOIO
#ifndef WITH_LEAN
    soap_reset_errno;
#endif
#endif
    *p = soap_strtoul(s, &r, 10);
    if ((s == r && (soap->mode & SOAP_XML_STRICT)) || *r
#ifndef WITH_NOIO
#ifndef WITH_LEAN
     || soap_errno == SOAP_ERANGE
#endif
#endif
    )
      soap->error = SOAP_TYPE;
  }
  return soap->error;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
testq %rsi, %rsi
je 0x41a7d
movq %rdx, %r12
movq %rsi, %r15
callq 0x3060
movq %rax, %r14
andl $0x0, (%rax)
leaq 0x8(%rsp), %r13
pushq $0xa
popq %rdx
movq %r15, %rdi
movq %r13, %rsi
callq 0x3350
movq %rax, (%r12)
movq (%r13), %rax
cmpq %r15, %rax
jne 0x41a68
testb $0x10, 0x5(%rbx)
jne 0x41a73
cmpb $0x0, (%rax)
jne 0x41a73
cmpl $0x22, (%r14)
jne 0x41a7d
movl $0x4, 0x19214(%rbx)
movl 0x19214(%rbx), %eax
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_inunsignedLong
SOAP_FMAC1
unsigned long *
SOAP_FMAC2
soap_inunsignedLong(struct soap *soap, const char *tag, unsigned long *p, const char *type, int t)
{ if (soap_element_begin_in(soap, tag, 0, NULL))
    return NULL;
#ifndef WITH_LEAN
  if (*soap->type
   && soap_match_tag(soap, soap->type, type)
   && soap_match_tag(soap, soap->type, ":unsignedInt")
   && soap_match_tag(soap, soap->type, ":unsignedShort")
   && soap_match_tag(soap, soap->type, ":unsignedByte"))
  { soap->error = SOAP_TYPE;
    soap_revert(soap);
    return NULL;
  }
#endif
  p = (unsigned long*)soap_id_enter(soap, soap->id, p, t, sizeof(unsigned long), 0, NULL, NULL, NULL);
  if (*soap->href)
    p = (unsigned long*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(unsigned long), 0, NULL);
  else if (p)
  { if (soap_s2unsignedLong(soap, soap_value(soap), p))
      return NULL;
  }
  if (soap->body && soap_element_end_in(soap, tag))
    return NULL;
  return p;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %r8d, %ebp
movq %rcx, %r13
movq %rdx, %r12
movq %rsi, %r14
movq %rdi, %rbx
xorl %r15d, %r15d
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x36f8a
testl %eax, %eax
jne 0x41bde
cmpb $0x0, 0x17538(%rbx)
je 0x41b3d
leaq 0x17538(%rbx), %r15
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x380f0
testl %eax, %eax
je 0x41b3d
leaq 0xbcde(%rip), %rdx      # 0x4d7c9
movq %rbx, %rdi
movq %r15, %rsi
callq 0x380f0
testl %eax, %eax
je 0x41b3d
leaq 0xbcb9(%rip), %rdx      # 0x4d7ba
movq %rbx, %rdi
movq %r15, %rsi
callq 0x380f0
testl %eax, %eax
je 0x41b3d
leaq 0xbc95(%rip), %rdx      # 0x4d7ac
movq %rbx, %rdi
movq %r15, %rsi
callq 0x380f0
testl %eax, %eax
je 0x41b3d
movl $0x4, 0x19214(%rbx)
movq %rbx, %rdi
callq 0x3ed4a
jmp 0x41bdb
leaq 0x16d38(%rbx), %rsi
xorps %xmm0, %xmm0
movups %xmm0, (%rsp)
andq $0x0, 0x10(%rsp)
pushq $0x8
popq %r8
movq %rbx, %rdi
movq %r12, %rdx
movl %ebp, %ecx
xorl %r9d, %r9d
callq 0x3c1b5
movq %rax, %r15
cmpb $0x0, 0x17138(%rbx)
je 0x41bbc
leaq 0x17138(%rbx), %rsi
andq $0x0, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
movq $0x8, (%rsp)
movq %rbx, %rdi
movq %r15, %rdx
xorl %ecx, %ecx
movl %ebp, %r8d
xorl %r9d, %r9d
callq 0x3c06d
movq %rax, %r15
cmpw $0x0, 0x6106(%rbx)
je 0x41bde
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3713c
testl %eax, %eax
jne 0x41bdb
jmp 0x41bde
testq %r15, %r15
je 0x41bf0
movq %rbx, %rdi
callq 0x4010f
movq %rbx, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x41a1c
testl %eax, %eax
je 0x41ba1
xorl %r15d, %r15d
movq %r15, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r15d, %r15d
jmp 0x41ba1
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_outULONG64
SOAP_FMAC2
soap_outULONG64(struct soap *soap, const char *tag, int id, const ULONG64 *p, const char *type, int n)
{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, p, n), type)
   || soap_string_out(soap, soap_ULONG642s(soap, *p), 0))
    return soap->error;
  return soap_element_end_out(soap, tag);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %r8, %r12
movq %rcx, %r15
movq %rsi, %rbx
movq %rdi, %r14
movl %edx, %esi
movq %rcx, %rdx
movl %r9d, %ecx
callq 0x3b587
movq %r14, %rdi
movq %rbx, %rsi
movl %eax, %edx
movq %r12, %rcx
callq 0x3b9c9
testl %eax, %eax
jne 0x41c67
movq (%r15), %rsi
movq %r14, %rdi
callq 0x41bf5
movq %r14, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x3e651
testl %eax, %eax
je 0x41c7a
movl 0x19214(%r14), %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %r14, %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x3ba46
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_inULONG64
SOAP_FMAC1
ULONG64 *
SOAP_FMAC2
soap_inULONG64(struct soap *soap, const char *tag, ULONG64 *p, const char *type, int t)
{ if (soap_element_begin_in(soap, tag, 0, NULL))
    return NULL;
  if (*soap->type
   && soap_match_tag(soap, soap->type, type)
   && soap_match_tag(soap, soap->type, ":positiveInteger")
   && soap_match_tag(soap, soap->type, ":nonNegativeInteger")
   && soap_match_tag(soap, soap->type, ":unsignedLong")
   && soap_match_tag(soap, soap->type, ":unsignedInt")
   && soap_match_tag(soap, soap->type, ":unsignedShort")
   && soap_match_tag(soap, soap->type, ":unsignedByte"))
  { soap->error = SOAP_TYPE;
    soap_revert(soap);
    return NULL;
  }
  p = (ULONG64*)soap_id_enter(soap, soap->id, p, t, sizeof(ULONG64), 0, NULL, NULL, NULL);
  if (*soap->href)
    p = (ULONG64*)soap_id_forward(soap, soap->href, p, 0, t, 0, sizeof(ULONG64), 0, NULL);
  else if (p)
  { if (soap_s2ULONG64(soap, soap_value(soap), p))
      return NULL;
  }
  if (soap->body && soap_element_end_in(soap, tag))
    return NULL;
  return p;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %r8d, %ebp
movq %rcx, %r13
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
xorl %r12d, %r12d
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x36f8a
testl %eax, %eax
jne 0x41e5f
cmpb $0x0, 0x17538(%rbx)
je 0x41dbe
leaq 0x17538(%rbx), %r12
movq %rbx, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x380f0
testl %eax, %eax
je 0x41dbe
leaq 0xba21(%rip), %rdx      # 0x4d747
movq %rbx, %rdi
movq %r12, %rsi
callq 0x380f0
testl %eax, %eax
je 0x41dbe
leaq 0xba3d(%rip), %rdx      # 0x4d77d
movq %rbx, %rdi
movq %r12, %rsi
callq 0x380f0
testl %eax, %eax
je 0x41dbe
leaq 0xba84(%rip), %rdx      # 0x4d7da
movq %rbx, %rdi
movq %r12, %rsi
callq 0x380f0
testl %eax, %eax
je 0x41dbe
leaq 0xba5d(%rip), %rdx      # 0x4d7c9
movq %rbx, %rdi
movq %r12, %rsi
callq 0x380f0
testl %eax, %eax
je 0x41dbe
leaq 0xba38(%rip), %rdx      # 0x4d7ba
movq %rbx, %rdi
movq %r12, %rsi
callq 0x380f0
testl %eax, %eax
je 0x41dbe
leaq 0xba14(%rip), %rdx      # 0x4d7ac
movq %rbx, %rdi
movq %r12, %rsi
callq 0x380f0
testl %eax, %eax
je 0x41dbe
movl $0x4, 0x19214(%rbx)
movq %rbx, %rdi
callq 0x3ed4a
jmp 0x41e5c
leaq 0x16d38(%rbx), %rsi
xorps %xmm0, %xmm0
movups %xmm0, (%rsp)
andq $0x0, 0x10(%rsp)
pushq $0x8
popq %r8
movq %rbx, %rdi
movq %r15, %rdx
movl %ebp, %ecx
xorl %r9d, %r9d
callq 0x3c1b5
movq %rax, %r12
cmpb $0x0, 0x17138(%rbx)
je 0x41e3d
leaq 0x17138(%rbx), %rsi
andq $0x0, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
movq $0x8, (%rsp)
movq %rbx, %rdi
movq %r12, %rdx
xorl %ecx, %ecx
movl %ebp, %r8d
xorl %r9d, %r9d
callq 0x3c06d
movq %rax, %r12
cmpw $0x0, 0x6106(%rbx)
je 0x41e5f
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3713c
testl %eax, %eax
jne 0x41e5c
jmp 0x41e5f
testq %r12, %r12
je 0x41e71
movq %rbx, %rdi
callq 0x4010f
movq %rbx, %rdi
movq %rax, %rsi
movq %r12, %rdx
callq 0x41c90
testl %eax, %eax
je 0x41e22
xorl %r12d, %r12d
movq %r12, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r12d, %r12d
jmp 0x41e22
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_s2string
SOAP_FMAC2
soap_s2string(struct soap *soap, const char *s, char **t, long minlen, long maxlen)
{ if (s)
  { long l = (long)strlen(s);
    if ((maxlen >= 0 && l > maxlen) || l < minlen)
      return soap->error = SOAP_LENGTH;
    if (!(*t = soap_strdup(soap, s)))
      return soap->error = SOAP_EOM;
    if (!(soap->mode & (SOAP_ENC_LATIN | SOAP_C_UTFSTRING)))
    { char *r = *t;
      /* remove non-ASCII chars */
      for (s = *t; *s; s++)
        if (!(*s & 0x80))
	  *r++ = *s;
      *r = '\0';
    }
  }
  return soap->error;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdi, %rbx
testq %rsi, %rsi
je 0x41f06
movq %r8, %r13
movq %rcx, %r12
movq %rdx, %r14
movq %rsi, %r15
movq %rsi, %rdi
callq 0x3110
testq %r13, %r13
setns %cl
cmpq %r13, %rax
setg %dl
andb %cl, %dl
cmpq %r12, %rax
setl %al
orb %dl, %al
cmpb $0x1, %al
jne 0x41ec3
movl $0x2d, 0x19214(%rbx)
pushq $0x2d
jmp 0x41f00
movq %rbx, %rdi
movq %r15, %rsi
callq 0x37284
movq %rax, (%r14)
testq %rax, %rax
je 0x41ef4
testl $0x200020, 0x4(%rbx)    # imm = 0x200020
jne 0x41f06
movq %rax, %rcx
movb (%rax), %dl
testb %dl, %dl
je 0x41f03
js 0x41eef
movb %dl, (%rcx)
incq %rcx
incq %rax
jmp 0x41ee2
movl $0x14, 0x19214(%rbx)
pushq $0x14
popq %rax
jmp 0x41f0c
movb $0x0, (%rcx)
movl 0x19214(%rbx), %eax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_wchar2s
SOAP_FMAC1
const char*
SOAP_FMAC2
soap_wchar2s(struct soap *soap, const wchar_t *s)
{ register soap_wchar c;
  register char *r, *t;
  const wchar_t *q = s;
  size_t n = 0;
  while ((c = *q++))
  { if (c > 0 && c < 0x80)
      n++;
    else
      n += 6;
  }
  r = t = (char*)soap_malloc(soap, n + 1);
  if (r)
  { /* Convert wchar to UTF8 */
    while ((c = *s++))
    { if (c > 0 && c < 0x80)
        *t++ = (char)c;
      else
      { if (c < 0x0800)
          *t++ = (char)(0xC0 | ((c >> 6) & 0x1F));
        else
        { if (c < 0x010000)
            *t++ = (char)(0xE0 | ((c >> 12) & 0x0F));
          else
          { if (c < 0x200000)
              *t++ = (char)(0xF0 | ((c >> 18) & 0x07));
            else
            { if (c < 0x04000000)
                *t++ = (char)(0xF8 | ((c >> 24) & 0x03));
              else
              { *t++ = (char)(0xFC | ((c >> 30) & 0x01));
                *t++ = (char)(0x80 | ((c >> 24) & 0x3F));
              }
              *t++ = (char)(0x80 | ((c >> 18) & 0x3F));
            }     
            *t++ = (char)(0x80 | ((c >> 12) & 0x3F));
          }
          *t++ = (char)(0x80 | ((c >> 6) & 0x3F));
        }
        *t++ = (char)(0x80 | (c & 0x3F));
      }
    }
    *t = '\0';
  }
  return r;
}

// Assembly:
pushq %rbx
movq %rsi, %rbx
xorl %esi, %esi
movq %rbx, %rax
movl (%rax), %ecx
testl %ecx, %ecx
je 0x422e2
addq $0x4, %rax
xorl %edx, %edx
cmpl $0x7f, %ecx
seta %dl
leaq (%rdx,%rdx,4), %rcx
addq %rcx, %rsi
incq %rsi
jmp 0x422c4
incq %rsi
callq 0x35f17
testq %rax, %rax
je 0x423dc
movq %rax, %rcx
movl (%rbx), %edx
testl %edx, %edx
je 0x423d9
addq $0x4, %rbx
cmpl $0x7f, %edx
ja 0x42310
movb %dl, (%rcx)
incq %rcx
jmp 0x422f6
cmpl $0x800, %edx            # imm = 0x800
jge 0x42323
movb $-0x40, %sil
movb $0x1f, %dil
jmp 0x423b7
cmpl $0xffff, %edx           # imm = 0xFFFF
ja 0x4233c
movl %edx, %esi
shrl $0xc, %esi
orb $-0x20, %sil
movb %sil, (%rcx)
incq %rcx
jmp 0x423b1
cmpl $0x1fffff, %edx         # imm = 0x1FFFFF
ja 0x42352
movl %edx, %esi
shrl $0x12, %esi
orb $-0x10, %sil
movb %sil, (%rcx)
jmp 0x4239c
cmpl $0x3ffffff, %edx        # imm = 0x3FFFFFF
ja 0x42369
leaq 0x1(%rcx), %rdi
movl %edx, %esi
shrl $0x18, %esi
orb $-0x8, %sil
jmp 0x42389
movl %edx, %esi
shrl $0x1e, %esi
orb $-0x4, %sil
movl %edx, %r8d
shrl $0x18, %r8d
andb $0x3f, %r8b
orb $-0x80, %r8b
leaq 0x2(%rcx), %rdi
movb %r8b, 0x1(%rcx)
movb %sil, (%rcx)
movl %edx, %ecx
shrl $0x12, %ecx
andb $0x3f, %cl
orb $-0x80, %cl
movb %cl, (%rdi)
movq %rdi, %rcx
movl %edx, %esi
shrl $0xc, %esi
andb $0x3f, %sil
orb $-0x80, %sil
movb %sil, 0x1(%rcx)
addq $0x2, %rcx
movb $-0x80, %sil
movb $0x3f, %dil
movl %edx, %r8d
shrl $0x6, %r8d
andb %dil, %r8b
orb %sil, %r8b
movb %r8b, (%rcx)
andb $0x3f, %dl
orb $-0x80, %dl
movb %dl, 0x1(%rcx)
addq $0x2, %rcx
jmp 0x422f6
movb $0x0, (%rcx)
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/loversmile[P]sugarcrm/sugar_stdsoap2.c
// Function: soap_outstring
SOAP_FMAC2
soap_outstring(struct soap *soap, const char *tag, int id, char *const*p, const char *type, int n) 
{ id = soap_element_id(soap, tag, id, *p, NULL, 0, type, n);
  if (id < 0)
    return soap->error;
  if (!**p && (soap->mode & SOAP_C_NILSTRING))
    return soap_element_null(soap, tag, id, type);
  if (soap_element_begin_out(soap, tag, id, type)
   || soap_string_out(soap, *p, 0)
   || soap_element_end_out(soap, tag))
    return soap->error;
  return SOAP_OK;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movl %r9d, %eax
movq %r8, %r12
movq %rcx, %r15
movq %rsi, %r14
movq %rdi, %rbx
movq (%rcx), %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
pushq %rax
pushq %r12
callq 0x3b8f6
addq $0x10, %rsp
testl %eax, %eax
js 0x42452
movq (%r15), %rcx
cmpb $0x0, (%rcx)
jne 0x4241c
testb $-0x80, 0x6(%rbx)
jne 0x42463
movq %rbx, %rdi
movq %r14, %rsi
movl %eax, %edx
movq %r12, %rcx
callq 0x3b9c9
testl %eax, %eax
jne 0x42452
movq (%r15), %rsi
xorl %ebp, %ebp
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3e651
testl %eax, %eax
jne 0x42452
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3ba46
testl %eax, %eax
je 0x42458
movl 0x19214(%rbx), %ebp
movl %ebp, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rbx, %rdi
movq %r14, %rsi
movl %eax, %edx
movq %r12, %rcx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x3e8c0