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

```asm
<parse_baud_rate>:
  endbr64
  sub    $0x8,%rsp
  call   <atoi@plt>
  cmp    $0x7a120,%eax
  je     L153
  jg     L389
  cmp    $0x4b00,%eax
  je     L148
  jle    L278
  cmp    $0x1c200,%eax
  je     L349
  jle    L220
  cmp    $0x38400,%eax
  je     L14
  cmp    $0x70800,%eax
  jne    L16
  mov    D17(%rip),%rax
  mov    (%rax),%eax
L157:
  add    $0x8,%rsp
  ret
L220:
  cmp    $0x9600,%eax
  je     L86
  cmp    $0xe100,%eax
  jne    L16
  mov    D105(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  nopl   (%rax)
L278:
  cmp    $0x960,%eax
  je     L199
  jle    L303
  cmp    $0x12c0,%eax
  je     L27
  cmp    $0x2580,%eax
  jne    L16
  mov    D198(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  xchg   %ax,%ax
L389:
  cmp    $0x1e8480,%eax
  je     L106
  jle    L70
  cmp    $0x3567e0,%eax
  je     L444
  jle    L0
  cmp    $0x3d0900,%eax
  jne    L16
  mov    D1(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  nopl   0x0(%rax,%rax,1)
L303:
  cmp    $0x12c,%eax
  je     L289
  cmp    $0x4b0,%eax
  jne    L16
  mov    D170(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  nopl   0x0(%rax)
L0:
  cmp    $0x2625a0,%eax
  je     L97
  cmp    $0x2dc6c0,%eax
  jne    L16
  mov    D113(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  nopl   0x0(%rax)
L70:
  cmp    $0xf4240,%eax
  je     L375
  jle    L119
  cmp    $0x119400,%eax
  je     L18
  cmp    $0x16e360,%eax
  jne    L16
  mov    D223(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  nopl   (%rax)
L119:
  cmp    $0x8ca00,%eax
  je     L168
  cmp    $0xe1000,%eax
  jne    L16
  mov    D195(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  nopl   0x0(%rax,%rax,1)
L153:
  mov    D182(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  xchg   %ax,%ax
L168:
  mov    D169(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  xchg   %ax,%ax
L18:
  mov    D187(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  xchg   %ax,%ax
L375:
  mov    D127(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  xchg   %ax,%ax
L97:
  mov    D38(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  xchg   %ax,%ax
L289:
  mov    D165(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  xchg   %ax,%ax
L444:
  mov    D111(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  xchg   %ax,%ax
L106:
  mov    D208(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  xchg   %ax,%ax
L27:
  mov    D175(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  xchg   %ax,%ax
L199:
  mov    D148(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  xchg   %ax,%ax
L86:
  mov    D125(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  xchg   %ax,%ax
L16:
  mov    D109(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  xchg   %ax,%ax
L14:
  mov    D209(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  xchg   %ax,%ax
L349:
  mov    D151(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
  xchg   %ax,%ax
L148:
  mov    D224(%rip),%rax
  mov    (%rax),%eax
  jmp    L157
```

assistant: ```c
speed_t parse_baud_rate(char *str) {
  switch (atoi(str)) {
  case 300:
    return B300;
  case 1200:
    return B1200;
  case 2400:
    return B2400;
  case 4800:
    return B4800;
  case 9600:
    return B9600;
  case 19200:
    return B19200;
  case 38400:
    return B38400;
  case 57600:
    return B57600;
  case 115200:
    return B115200;
  case 230400:
    return B230400;
  case 460800:
    return B460800;
  case 500000:
    return B500000;
  case 576000:
    return B576000;
  case 921600:
    return B921600;
  case 1000000:
    return B1000000;
  case 1152000:
    return B1152000;
  case 1500000:
    return B1500000;
  case 2000000:
    return B2000000;
  case 2500000:
    return B2500000;
  case 3000000:
    return B3000000;
  case 3500000:
    return B3500000;
  case 4000000:
    return B4000000;
  default:
    return B0;
  }
}
```