user: 这段汇编代码用C语言表示是什么样的？

```asm
<get_next_number>:
  endbr64
  mov    %rdi,%rcx
  mov    %rsi,%r8
  mov    %rdx,%r9
  movzbl (%rdi),%edx
  cmp    $0x20,%dl
  je     L409
  cmp    $0x9,%dl
  jne    L184
L409:
  mov    $0x1,%eax
L390:
  mov    %eax,%esi
  movzbl (%rcx,%rax,1),%edx
  add    $0x1,%rax
  cmp    $0x20,%dl
  je     L390
  cmp    $0x9,%dl
  je     L390
L373:
  mov    $0x1,%edi
  test   %dl,%dl
  je     L79
  lea    -0x30(%rdx),%eax
  cmp    $0x9,%al
  ja     L202
  movslq %esi,%rdi
  movzbl (%rcx,%rdi,1),%edx
  lea    -0x30(%rdx),%eax
  cmp    $0x9,%al
  jbe    L336
  lea    -0x41(%rdx),%eax
  cmp    $0x27,%al
  ja     L442
  movabs $0xbf000000bf,%rdx
  bt     %rax,%rdx
  jb     L156
  mov    $0x1,%edi
  jmp    L79
L184:
  mov    $0x0,%esi
  jmp    L373
L336:
  lea    0x1(%rcx,%rdi,1),%r10
L215:
  movzbl (%r10),%eax
  add    $0x1,%r10
  lea    -0x30(%rax),%r11d
  cmp    $0x9,%r11b
  jbe    L215
  sub    $0x41,%eax
  cmp    $0x27,%al
  ja     L224
  movabs $0xbf000000bf,%r10
  bt     %rax,%r10
  jb     L369
L224:
  lea    0x1(%rsi),%edi
  movslq %edi,%rdi
  mov    $0x0,%eax
L325:
  lea    (%rax,%rax,4),%eax
  movsbl %dl,%edx
  lea    -0x30(%rdx,%rax,2),%eax
  mov    %edi,%esi
  movzbl (%rcx,%rdi,1),%edx
  add    $0x1,%rdi
  lea    -0x30(%rdx),%r10d
  cmp    $0x9,%r10b
  jbe    L325
L330:
  test   $0xdf,%dl
  je     L16
  cmp    $0x9,%dl
  je     L16
  mov    $0x1,%edi
  jmp    L79
L369:
  mov    $0x0,%eax
  jmp    L15
L156:
  mov    $0x0,%eax
  jmp    L15
L281:
  cmp    $0x46,%dl
  jg     L413
  cmp    $0x40,%dl
  jg     L268
  mov    $0x1,%edi
  cmp    $0x20,%dl
  ja     L79
  movabs $0x100000201,%rcx
  bt     %rdx,%rcx
  jae    L79
  jmp    L16
L413:
  cmp    $0x66,%dl
  jg     L418
  cmp    $0x60,%dl
  jle    L441
  shl    $0x4,%eax
  movsbl %dl,%edx
  lea    -0x57(%rax,%rdx,1),%eax
L468:
  add    $0x1,%rdi
L15:
  mov    %edi,%esi
  movzbl (%rcx,%rdi,1),%edx
  lea    -0x30(%rdx),%r10d
  cmp    $0x9,%r10b
  ja     L281
  shl    $0x4,%eax
  movsbl %dl,%edx
  lea    -0x30(%rax,%rdx,1),%eax
  jmp    L468
L441:
  mov    $0x1,%edi
  cmp    $0x48,%dl
  jne    L79
L16:
  mov    %eax,(%r8)
  add    %esi,(%r9)
  mov    $0x0,%edi
L79:
  mov    %edi,%eax
  ret
L418:
  mov    $0x1,%edi
  cmp    $0x68,%dl
  jne    L79
  jmp    L16
L268:
  shl    $0x4,%eax
  movsbl %dl,%edx
  lea    -0x37(%rax,%rdx,1),%eax
  jmp    L468
L442:
  mov    $0x0,%eax
  jmp    L330
L202:
  mov    $0x1,%edi
  cmp    $0x24,%dl
  jne    L79
  lea    0x1(%rsi),%edi
  movslq %edi,%rdi
  mov    $0x0,%eax
  jmp    L121
L242:
  cmp    $0x46,%dl
  jg     L87
  cmp    $0x40,%dl
  jg     L118
  cmp    $0x20,%dl
  ja     L278
  movabs $0x100000201,%rcx
  bt     %rdx,%rcx
  jb     L16
  mov    $0x1,%edi
  jmp    L79
L87:
  lea    -0x61(%rdx),%esi
  cmp    $0x5,%sil
  ja     L140
  shl    $0x4,%eax
  movsbl %dl,%edx
  lea    -0x57(%rax,%rdx,1),%eax
L201:
  add    $0x1,%rdi
L121:
  mov    %edi,%esi
  movzbl (%rcx,%rdi,1),%edx
  lea    -0x30(%rdx),%r10d
  cmp    $0x9,%r10b
  ja     L242
  shl    $0x4,%eax
  movsbl %dl,%edx
  lea    -0x30(%rax,%rdx,1),%eax
  jmp    L201
L118:
  shl    $0x4,%eax
  movsbl %dl,%edx
  lea    -0x37(%rax,%rdx,1),%eax
  jmp    L201
L278:
  mov    $0x1,%edi
  jmp    L79
L140:
  mov    $0x1,%edi
  jmp    L79
```

assistant: ```c
int get_next_number(char *in, int *out, int *pos) {
  int i, o, n;
  for (i = 0; in[i] == ' ' || in[i] == 0x09; i++)
    ;
  if (in[i] == 0)
    return 1;
  if (in[i] >= '0' && in[i] <= '9') {
    n = 0;
    for (o = 0; 1; o++) {
      if (in[i + o] >= '0' && in[i + o] <= '9')
        continue;
      if (in[i + o] >= 'a' && in[i + o] <= 'f') {
        n = 1;
        break;
      }
      if (in[i + o] >= 'A' && in[i + o] <= 'F') {
        n = 1;
        break;
      }
      if (in[i + o] == 'h' || in[i + o] == 'H') {
        n = 1;
        break;
      }
      break;
    }
    if (n == 1) {
      o = 0;
      while (1) {
        if (in[i] >= '0' && in[i] <= '9')
          o = (o * 16) + in[i] - '0';
        else if (in[i] >= 'a' && in[i] <= 'f')
          o = (o * 16) + in[i] - 'a' + 0xA;
        else if (in[i] >= 'A' && in[i] <= 'F')
          o = (o * 16) + in[i] - 'A' + 0xA;
        else if (in[i] == 'h' || in[i] == 'H')
          break;
        else if (in[i] == ' ' || in[i] == 0x09 || in[i] == 0)
          break;
        else
          return 1;
        i++;
      }
    } else {
      for (o = 0; in[i] >= '0' && in[i] <= '9'; i++)
        o = (o * 10) + in[i] - '0';
      if (!(in[i] == ' ' || in[i] == 0x09 || in[i] == 0))
        return 1;
    }
  } else if (in[i] == '$') {
    i++;
    o = 0;
    while (1) {
      if (in[i] >= '0' && in[i] <= '9')
        o = (o * 16) + in[i] - '0';
      else if (in[i] >= 'a' && in[i] <= 'f')
        o = (o * 16) + in[i] - 'a' + 0xA;
      else if (in[i] >= 'A' && in[i] <= 'F')
        o = (o * 16) + in[i] - 'A' + 0xA;
      else if (in[i] == ' ' || in[i] == 0x09 || in[i] == 0)
        break;
      else
        return 1;
      i++;
    }
  } else
    return 1;
  *out = o;
  *pos += i;
  return 0;
}
```