user: What is the c source code of the assembly code below?

```asm
<isNumber>:
  endbr64
  movzbl (%rdi),%eax
  push   %r12
  push   %rbp
  mov    %rsi,%rbp
  sub    $0x2b,%eax
  push   %rbx
  mov    %rdi,%rbx
  and    $0xfffffffd,%eax
  cmp    $0x1,%al
  adc    $0x0,%rbx
  xor    %eax,%eax
  call   <__ctype_b_loc@plt>
  movsbq (%rbx),%rdx
  mov    (%rax),%rax
  testb  $0x8,0x1(%rax,%rdx,2)
  je     L61
  add    $0x1,%rbx
  test   %rbp,%rbp
  je     L112
  movl   $0x0,0x0(%rbp)
  jmp    L112
  nopl   0x0(%rax)
L71:
  add    $0x1,%rbx
L112:
  xor    %eax,%eax
  call   <__ctype_b_loc@plt>
  movsbq (%rbx),%rcx
  mov    %rax,%r8
  mov    (%r8),%rdx
  mov    %rcx,%rax
  testb  $0x8,0x1(%rdx,%rcx,2)
  jne    L71
  cmp    $0x2e,%cl
  je     L20
L137:
  mov    %eax,%edx
  and    $0xffffffdf,%edx
  cmp    $0x45,%dl
  jne    L89
  movzbl 0x1(%rbx),%eax
  lea    0x2(%rbx),%r12
  cmp    $0x2b,%al
  je     L22
  xor    %r12d,%r12d
  cmp    $0x2d,%al
  sete   %r12b
  lea    0x1(%rbx,%r12,1),%r12
L22:
  xor    %eax,%eax
  call   <__ctype_b_loc@plt>
  movsbq (%r12),%rdx
  mov    (%rax),%rax
  testb  $0x8,0x1(%rax,%rdx,2)
  jne    L37
L61:
  pop    %rbx
  xor    %eax,%eax
  pop    %rbp
  pop    %r12
  ret
  nopl   0x0(%rax)
L55:
  add    $0x1,%r12
L37:
  xor    %eax,%eax
  call   <__ctype_b_loc@plt>
  movsbq (%r12),%rcx
  mov    %rax,%r8
  mov    (%r8),%rdx
  mov    %rcx,%rax
  testb  $0x8,0x1(%rdx,%rcx,2)
  jne    L55
  test   %rbp,%rbp
  je     L89
  movl   $0x1,0x0(%rbp)
  movzbl (%r12),%eax
L89:
  test   %al,%al
  pop    %rbx
  pop    %rbp
  sete   %al
  pop    %r12
  movzbl %al,%eax
  ret
  cs nopw 0x0(%rax,%rax,1)
L20:
  xor    %eax,%eax
  call   <__ctype_b_loc@plt>
  movsbq 0x1(%rbx),%rdx
  mov    (%rax),%rax
  testb  $0x8,0x1(%rax,%rdx,2)
  je     L61
  cs nopw 0x0(%rax,%rax,1)
L123:
  xor    %eax,%eax
  add    $0x1,%rbx
  call   <__ctype_b_loc@plt>
  movsbq (%rbx),%rcx
  mov    %rax,%r8
  mov    (%r8),%rdx
  mov    %rcx,%rax
  testb  $0x8,0x1(%rdx,%rcx,2)
  jne    L123
  test   %rbp,%rbp
  je     L137
  movl   $0x1,0x0(%rbp)
  movzbl (%rbx),%eax
  jmp    L137
```

assistant: ```c
int isNumber(char const *z, int *realnum) {
  unsigned short const **tmp;
  unsigned short const **tmp___0;
  unsigned short const **tmp___1;
  unsigned short const **tmp___2;
  unsigned short const **tmp___3;
  unsigned short const **tmp___4;
  char __cil_tmp9;
  int __cil_tmp10;
  char __cil_tmp11;
  int __cil_tmp12;
  char __cil_tmp13;
  int __cil_tmp14;
  unsigned short const *__cil_tmp15;
  unsigned short const *__cil_tmp16;
  unsigned short __cil_tmp17;
  int __cil_tmp18;
  char __cil_tmp19;
  int __cil_tmp20;
  unsigned short const *__cil_tmp21;
  unsigned short const *__cil_tmp22;
  unsigned short __cil_tmp23;
  int __cil_tmp24;
  char __cil_tmp25;
  int __cil_tmp26;
  char __cil_tmp27;
  int __cil_tmp28;
  unsigned short const *__cil_tmp29;
  unsigned short const *__cil_tmp30;
  unsigned short __cil_tmp31;
  int __cil_tmp32;
  char __cil_tmp33;
  int __cil_tmp34;
  unsigned short const *__cil_tmp35;
  unsigned short const *__cil_tmp36;
  unsigned short __cil_tmp37;
  int __cil_tmp38;
  char __cil_tmp39;
  int __cil_tmp40;
  char __cil_tmp41;
  int __cil_tmp42;
  char __cil_tmp43;
  int __cil_tmp44;
  char __cil_tmp45;
  int __cil_tmp46;
  char __cil_tmp47;
  int __cil_tmp48;
  unsigned short const *__cil_tmp49;
  unsigned short const *__cil_tmp50;
  unsigned short __cil_tmp51;
  int __cil_tmp52;
  char __cil_tmp53;
  int __cil_tmp54;
  unsigned short const *__cil_tmp55;
  unsigned short const *__cil_tmp56;
  unsigned short __cil_tmp57;
  int __cil_tmp58;
  char __cil_tmp59;
  int __cil_tmp60;
  {
    {
      __cil_tmp9 = *z;
      __cil_tmp10 = (int const)__cil_tmp9;
      if (__cil_tmp10 == 45) {
        z = z + 1;
      } else {
        {
          __cil_tmp11 = *z;
          __cil_tmp12 = (int const)__cil_tmp11;
          if (__cil_tmp12 == 43) {
            z = z + 1;
          } else {
          }
        }
      }
    }
    { tmp = __ctype_b_loc(); }
    {
      __cil_tmp13 = *z;
      __cil_tmp14 = (int)__cil_tmp13;
      __cil_tmp15 = *tmp;
      __cil_tmp16 = __cil_tmp15 + __cil_tmp14;
      __cil_tmp17 = *__cil_tmp16;
      __cil_tmp18 = (int const)__cil_tmp17;
      if (__cil_tmp18 & 2048) {
      } else {
        return (0);
      }
    }
    z = z + 1;
    if (realnum) {
      *realnum = 0;
    } else {
    }
    {
      while (1) {
      while_0_continue:;
        { tmp___0 = __ctype_b_loc(); }
        {
          __cil_tmp19 = *z;
          __cil_tmp20 = (int)__cil_tmp19;
          __cil_tmp21 = *tmp___0;
          __cil_tmp22 = __cil_tmp21 + __cil_tmp20;
          __cil_tmp23 = *__cil_tmp22;
          __cil_tmp24 = (int const)__cil_tmp23;
          if (__cil_tmp24 & 2048) {
          } else {
            goto while_0_break;
          }
        }
        z = z + 1;
      }
    while_0_break:;
    }
    {
      __cil_tmp25 = *z;
      __cil_tmp26 = (int const)__cil_tmp25;
      if (__cil_tmp26 == 46) {
        {
          z = z + 1;
          tmp___1 = __ctype_b_loc();
        }
        {
          __cil_tmp27 = *z;
          __cil_tmp28 = (int)__cil_tmp27;
          __cil_tmp29 = *tmp___1;
          __cil_tmp30 = __cil_tmp29 + __cil_tmp28;
          __cil_tmp31 = *__cil_tmp30;
          __cil_tmp32 = (int const)__cil_tmp31;
          if (__cil_tmp32 & 2048) {
          } else {
            return (0);
          }
        }
        {
          while (1) {
          while_1_continue:;
            { tmp___2 = __ctype_b_loc(); }
            {
              __cil_tmp33 = *z;
              __cil_tmp34 = (int)__cil_tmp33;
              __cil_tmp35 = *tmp___2;
              __cil_tmp36 = __cil_tmp35 + __cil_tmp34;
              __cil_tmp37 = *__cil_tmp36;
              __cil_tmp38 = (int const)__cil_tmp37;
              if (__cil_tmp38 & 2048) {
              } else {
                goto while_1_break;
              }
            }
            z = z + 1;
          }
        while_1_break:;
        }
        if (realnum) {
          *realnum = 1;
        } else {
        }
      } else {
      }
    }
    {
      __cil_tmp39 = *z;
      __cil_tmp40 = (int const)__cil_tmp39;
      if (__cil_tmp40 == 101) {
        goto _L;
      } else {
        {
          __cil_tmp41 = *z;
          __cil_tmp42 = (int const)__cil_tmp41;
          if (__cil_tmp42 == 69) {
          _L:
            z = z + 1;
            {
              __cil_tmp43 = *z;
              __cil_tmp44 = (int const)__cil_tmp43;
              if (__cil_tmp44 == 43) {
                z = z + 1;
              } else {
                {
                  __cil_tmp45 = *z;
                  __cil_tmp46 = (int const)__cil_tmp45;
                  if (__cil_tmp46 == 45) {
                    z = z + 1;
                  } else {
                  }
                }
              }
            }
            { tmp___3 = __ctype_b_loc(); }
            {
              __cil_tmp47 = *z;
              __cil_tmp48 = (int)__cil_tmp47;
              __cil_tmp49 = *tmp___3;
              __cil_tmp50 = __cil_tmp49 + __cil_tmp48;
              __cil_tmp51 = *__cil_tmp50;
              __cil_tmp52 = (int const)__cil_tmp51;
              if (__cil_tmp52 & 2048) {
              } else {
                return (0);
              }
            }
            {
              while (1) {
              while_2_continue:;
                { tmp___4 = __ctype_b_loc(); }
                {
                  __cil_tmp53 = *z;
                  __cil_tmp54 = (int)__cil_tmp53;
                  __cil_tmp55 = *tmp___4;
                  __cil_tmp56 = __cil_tmp55 + __cil_tmp54;
                  __cil_tmp57 = *__cil_tmp56;
                  __cil_tmp58 = (int const)__cil_tmp57;
                  if (__cil_tmp58 & 2048) {
                  } else {
                    goto while_2_break;
                  }
                }
                z = z + 1;
              }
            while_2_break:;
            }
            if (realnum) {
              *realnum = 1;
            } else {
            }
          } else {
          }
        }
      }
    }
    {
      __cil_tmp59 = *z;
      __cil_tmp60 = (int const)__cil_tmp59;
      return (__cil_tmp60 == 0);
    }
  }
}
```