user: What would the C source look like for the assembly code provided here:

```asm
<isNumber>:
  endbr64
  test   %rdi,%rdi
  je     L319
  movzbl (%rdi),%eax
  test   %al,%al
  je     L319
L339:
  cmp    $0x20,%al
  je     L140
  cmp    $0x2e,%al
  je     L544
  lea    -0x2b(%rax),%edx
  and    $0xfd,%edx
  jne    L184
  movzbl 0x1(%rdi),%eax
  test   %al,%al
  je     L319
  cmp    $0x2e,%al
  je     L293
  sub    $0x30,%eax
  cmp    $0x9,%al
  ja     L319
  movzbl 0x2(%rdi),%edx
  lea    0x2(%rdi),%rax
  test   %dl,%dl
  je     L163
L86:
  lea    -0x30(%rdx),%ecx
  cmp    $0x9,%cl
  ja     L211
  movzbl 0x1(%rax),%edx
  add    $0x1,%rax
  test   %dl,%dl
  jne    L86
L163:
  mov    $0x1,%eax
  ret
  nopl   0x0(%rax,%rax,1)
L211:
  cmp    $0x2e,%dl
  je     L205
  cmp    $0x65,%dl
  je     L516
  cmp    $0x20,%dl
  jne    L319
  lea    0x1(%rax),%rdx
  movzbl 0x1(%rax),%eax
  test   %al,%al
  jne    L318
  jmp    L163
  nopl   (%rax)
L293:
  movzbl 0x2(%rdi),%eax
  lea    0x2(%rdi),%rdx
  test   %al,%al
  je     L319
L306:
  sub    $0x30,%eax
  cmp    $0x9,%al
  ja     L319
  movzbl 0x1(%rdx),%eax
  lea    0x1(%rdx),%rcx
  test   %al,%al
  je     L163
L103:
  lea    -0x30(%rax),%edx
  cmp    $0x9,%dl
  ja     L558
L418:
  movzbl 0x1(%rcx),%eax
  add    $0x1,%rcx
  test   %al,%al
  je     L163
  lea    -0x30(%rax),%edx
  cmp    $0x9,%dl
  jbe    L418
L558:
  cmp    $0x65,%al
  je     L422
L468:
  cmp    $0x20,%al
  jne    L319
  movzbl 0x1(%rcx),%eax
  lea    0x1(%rcx),%rdx
  test   %al,%al
  jne    L318
  jmp    L163
L50:
  movzbl 0x1(%rdx),%eax
  add    $0x1,%rdx
  test   %al,%al
  je     L163
L318:
  cmp    $0x20,%al
  je     L50
L319:
  xor    %eax,%eax
  ret
  nopw   0x0(%rax,%rax,1)
L544:
  movzbl 0x1(%rdi),%eax
  lea    0x1(%rdi),%rdx
  test   %al,%al
  jne    L306
  jmp    L319
  xchg   %ax,%ax
L140:
  movzbl 0x1(%rdi),%eax
  add    $0x1,%rdi
  test   %al,%al
  jne    L339
  jmp    L319
  nopw   0x0(%rax,%rax,1)
L184:
  sub    $0x30,%eax
  cmp    $0x9,%al
  ja     L319
  movzbl 0x1(%rdi),%edx
  lea    0x1(%rdi),%rax
  test   %dl,%dl
  jne    L86
  jmp    L163
  nopl   0x0(%rax)
L516:
  lea    0x1(%rax),%rdx
  movzbl 0x1(%rax),%eax
  test   %al,%al
  je     L319
  nopl   0x0(%rax)
L87:
  lea    -0x2b(%rax),%ecx
  and    $0xfd,%ecx
  jne    L210
  movzbl 0x1(%rdx),%eax
  test   %al,%al
  je     L319
  sub    $0x30,%eax
  cmp    $0x9,%al
  ja     L319
  movzbl 0x2(%rdx),%eax
  lea    0x2(%rdx),%rcx
  test   %al,%al
  je     L163
L432:
  lea    -0x30(%rax),%edx
  cmp    $0x9,%dl
  ja     L468
  movzbl 0x1(%rcx),%eax
  add    $0x1,%rcx
  test   %al,%al
  jne    L432
  jmp    L163
  nop
L210:
  sub    $0x30,%eax
  cmp    $0x9,%al
  ja     L319
  movzbl 0x1(%rdx),%eax
  lea    0x1(%rdx),%rcx
  test   %al,%al
  jne    L432
  jmp    L163
  nopl   0x0(%rax)
L205:
  movzbl 0x1(%rax),%edx
  test   %dl,%dl
  je     L163
  lea    -0x30(%rdx),%ecx
  cmp    $0x9,%cl
  ja     L17
  lea    0x2(%rax),%rcx
  movzbl 0x2(%rax),%eax
  test   %al,%al
  jne    L103
  jmp    L163
  nopl   0x0(%rax)
L17:
  cmp    $0x20,%dl
  je     L415
  cmp    $0x65,%dl
  jne    L319
  lea    0x2(%rax),%rdx
  movzbl 0x2(%rax),%eax
  test   %al,%al
  jne    L87
  jmp    L319
  nopl   0x0(%rax,%rax,1)
L422:
  movzbl 0x1(%rcx),%eax
  lea    0x1(%rcx),%rdx
  test   %al,%al
  jne    L87
  jmp    L319
  nopl   (%rax)
L415:
  lea    0x2(%rax),%rdx
  movzbl 0x2(%rax),%eax
  test   %al,%al
  jne    L318
  jmp    L163
```

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;
}
```