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

```asm
<isNumber>:
  endbr64
  test   %rdi,%rdi
  je     L57
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rsi
  mov    $0x0,%ecx
  lea    D0(%rip),%rdi
  mov    $0x7,%ebp
  mov    $0x4,%r10d
  mov    $0x3,%r9d
  mov    $0x9,%r8d
  mov    $0x8,%r12d
  mov    $0xa,%r14d
  mov    $0x6,%r11d
  mov    $0x2,%ebx
  mov    $0x5,%r13d
  jmp    L26
  cmp    $0x20,%dl
  je     L530
  mov    $0x1,%ecx
  jmp    L26
L530:
  add    $0x1,%rsi
  jmp    L26
  cmp    $0x2e,%dl
  je     L236
  lea    -0x2b(%rdx),%eax
  test   $0xfd,%al
  jne    L212
  add    $0x1,%rsi
  mov    %r13d,%ecx
  jmp    L26
L236:
  add    $0x1,%rsi
  mov    %ebx,%ecx
  jmp    L26
L212:
  sub    $0x30,%edx
  cmp    $0x9,%dl
  ja     L4
  add    $0x1,%rsi
  mov    %r11d,%ecx
  jmp    L26
  sub    $0x30,%edx
  cmp    $0x9,%dl
  ja     L97
  add    $0x1,%rsi
  mov    %r9d,%ecx
L26:
  movzbl (%rsi),%edx
L343:
  test   %dl,%dl
  je     L405
  cmp    $0xa,%cl
  ja     L343
  movzbl %cl,%eax
  movslq (%rdi,%rax,4),%rax
  add    %rdi,%rax
  notrack jmp *%rax
  lea    -0x30(%rdx),%eax
  cmp    $0x9,%al
  ja     L395
  add    $0x1,%rsi
  jmp    L26
L395:
  cmp    $0x65,%dl
  je     L21
  cmp    $0x20,%dl
  jne    L245
  add    $0x1,%rsi
  mov    %r10d,%ecx
  jmp    L26
L21:
  add    $0x1,%rsi
  mov    %ebp,%ecx
  jmp    L26
  cmp    $0x20,%dl
  jne    L494
  add    $0x1,%rsi
  jmp    L26
  cmp    $0x2e,%dl
  je     L47
  sub    $0x30,%edx
  cmp    $0x9,%dl
  ja     L304
  add    $0x1,%rsi
  mov    %r11d,%ecx
  jmp    L26
L47:
  add    $0x1,%rsi
  mov    %ebx,%ecx
  jmp    L26
  lea    -0x30(%rdx),%eax
  cmp    $0x9,%al
  ja     L181
  add    $0x1,%rsi
  jmp    L26
L181:
  cmp    $0x2e,%dl
  je     L366
  cmp    $0x65,%dl
  je     L379
  cmp    $0x20,%dl
  jne    L248
  add    $0x1,%rsi
  mov    %r10d,%ecx
  jmp    L26
L366:
  add    $0x1,%rsi
  mov    %r14d,%ecx
  jmp    L26
L379:
  add    $0x1,%rsi
  mov    %ebp,%ecx
  jmp    L26
  lea    -0x2b(%rdx),%eax
  test   $0xfd,%al
  jne    L585
  add    $0x1,%rsi
  mov    %r12d,%ecx
  jmp    L26
L585:
  sub    $0x30,%edx
  cmp    $0x9,%dl
  ja     L359
  add    $0x1,%rsi
  mov    %r8d,%ecx
  jmp    L26
  sub    $0x30,%edx
  cmp    $0x9,%dl
  ja     L589
  add    $0x1,%rsi
  mov    %r8d,%ecx
  jmp    L26
  lea    -0x30(%rdx),%eax
  cmp    $0x9,%al
  ja     L495
  add    $0x1,%rsi
  jmp    L26
L495:
  cmp    $0x20,%dl
  jne    L360
  add    $0x1,%rsi
  mov    %r10d,%ecx
  jmp    L26
  lea    -0x30(%rdx),%eax
  cmp    $0x9,%al
  ja     L59
  add    $0x1,%rsi
  mov    %r9d,%ecx
  jmp    L26
L59:
  cmp    $0x20,%dl
  je     L192
  cmp    $0x65,%dl
  jne    L462
  add    $0x1,%rsi
  mov    %ebp,%ecx
  jmp    L26
L192:
  add    $0x1,%rsi
  mov    %r10d,%ecx
  jmp    L26
L405:
  mov    $0x1,%eax
  cmp    $0xa,%cl
  ja     L5
  mov    $0x658,%eax
  shr    %cl,%rax
  xor    $0x1,%rax
  and    $0x1,%eax
L5:
  xor    $0x1,%eax
  movzbl %al,%eax
L203:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
L57:
  mov    $0x0,%eax
  ret
L4:
  mov    $0x0,%eax
  jmp    L203
L97:
  mov    $0x0,%eax
  jmp    L203
L245:
  mov    $0x0,%eax
  jmp    L203
L494:
  mov    $0x0,%eax
  jmp    L203
L304:
  mov    $0x0,%eax
  jmp    L203
L248:
  mov    $0x0,%eax
  jmp    L203
L359:
  mov    $0x0,%eax
  jmp    L203
L589:
  mov    $0x0,%eax
  jmp    L203
L360:
  mov    $0x0,%eax
  jmp    L203
L462:
  mov    $0x0,%eax
  jmp    L203
```

assistant: ```c
bool isNumber(char *s) {
  double i = 3.;
  if (s == NULL) {
    return false;
  }
  char state = 0;
  while (*s) {
    switch (state) {
    case 0:
      if (*s == ' ') {
        s++;
      } else {
        state = 1;
      }
      break;
    case 1:
      if (*s == '.') {
        state = 2;
        s++;
      } else if (*s == '+' || *s == '-') {
        state = 5;
        s++;
      } else if (*s >= '0' && *s <= '9') {
        state = 6;
        s++;
      } else {
        return false;
      }
      break;
    case 2:
      if (*s >= '0' && *s <= '9') {
        state = 3;
        s++;
      } else {
        return false;
      }
      break;
    case 3:
      if (*s >= '0' && *s <= '9') {
        s++;
      } else if (*s == 'e') {
        state = 7;
        s++;
      } else if (*s == ' ') {
        state = 4;
        s++;
      } else {
        return false;
      }
      break;
    case 4:
      if (*s == ' ') {
        s++;
      } else {
        return false;
      }
      break;
    case 5:
      if (*s == '.') {
        state = 2;
        s++;
      } else if (*s >= '0' && *s <= '9') {
        state = 6;
        s++;
      } else {
        return false;
      }
      break;
    case 6:
      if (*s >= '0' && *s <= '9') {
        s++;
      } else if (*s == '.') {
        state = 10;
        s++;
      } else if (*s == 'e') {
        state = 7;
        s++;
      } else if (*s == ' ') {
        state = 4;
        s++;
      } else {
        return false;
      }
      break;
    case 7:
      if (*s == '+' || *s == '-') {
        state = 8;
        s++;
      } else if (*s >= '0' && *s <= '9') {
        state = 9;
        s++;
      } else {
        return false;
      }
      break;
    case 8:
      if (*s >= '0' && *s <= '9') {
        state = 9;
        s++;
      } else {
        return false;
      }
      break;
    case 9:
      if (*s >= '0' && *s <= '9') {
        s++;
      } else if (*s == ' ') {
        state = 4;
        s++;
      } else {
        return false;
      }
      break;
    case 10:
      if (*s >= '0' && *s <= '9') {
        state = 3;
        s++;
      } else if (*s == ' ') {
        state = 4;
        s++;
      } else if (*s == 'e') {
        state = 7;
        s++;
      } else {
        return false;
      }
      break;
    }
  }
  if (state == 3 || state == 4 || state == 6 || state == 9 || state == 10) {
    return true;
  }
  return false;
}
```