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

```asm
<dispatch_terrain_dirt>:
  endbr64
  mov    %edi,%eax
  cmp    $0xf4,%dil
  ja     L155
  sub    $0x8,%rsp
  mov    %rsi,%rdi
  mov    %rdx,%rsi
  movzbl %al,%eax
  lea    D0(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  call   <border_w_horizontal_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <border_e_horizontal_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <border_s_vertical_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <border_n_vertical_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <border_nw_ext_corner_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <border_sw_ext_corner_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <border_ne_ext_corner_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <border_se_ext_corner_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <border_se_int_diagonal_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <border_ne_int_diagonal_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <border_sw_int_diagonal_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <border_nw_int_diagonal_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <border_nw_ext_diagonal_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <border_sw_ext_diagonal_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <border_ne_ext_diagonal_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <border_se_ext_diagonal_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <border_nesw_double_diagonal_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <border_nwse_double_diagonal_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  call   <borderless_dirt@plt>
  mov    $0x0,%eax
  jmp    L68
  mov    $0x1,%eax
L68:
  add    $0x8,%rsp
  ret
L155:
  mov    $0x1,%eax
  ret
```

assistant: ```c
int dispatch_terrain_dirt(unsigned char adjacent_sand, unsigned char *pic, unsigned char *mirr) {
  switch (adjacent_sand) {
  case 0x08:
  case 0x09:
  case 0x28:
  case 0x29:
    border_w_horizontal_dirt(pic, mirr);
    break;
  case 0x10:
  case 0x14:
  case 0x90:
  case 0x94:
    border_e_horizontal_dirt(pic, mirr);
    break;
  case 0xC0:
  case 0xE0:
  case 0x40:
  case 0x60:
    border_s_vertical_dirt(pic, mirr);
    break;
  case 0x02:
  case 0x03:
  case 0x06:
  case 0x07:
    border_n_vertical_dirt(pic, mirr);
    break;
  case 0x2F:
    border_nw_ext_corner_dirt(pic, mirr);
    break;
  case 0xE9:
    border_sw_ext_corner_dirt(pic, mirr);
    break;
  case 0x97:
    border_ne_ext_corner_dirt(pic, mirr);
    break;
  case 0xF4:
    border_se_ext_corner_dirt(pic, mirr);
    break;
  case 0x80:
    border_se_int_diagonal_dirt(pic, mirr);
    break;
  case 0x04:
    border_ne_int_diagonal_dirt(pic, mirr);
    break;
  case 0x20:
    border_sw_int_diagonal_dirt(pic, mirr);
    break;
  case 0x01:
    border_nw_int_diagonal_dirt(pic, mirr);
    break;
  case 0x0B:
  case 0x0F:
  case 0x2B:
    border_nw_ext_diagonal_dirt(pic, mirr);
    break;
  case 0x68:
  case 0x69:
  case 0xE8:
    border_sw_ext_diagonal_dirt(pic, mirr);
    break;
  case 0x16:
  case 0x17:
  case 0x96:
    border_ne_ext_diagonal_dirt(pic, mirr);
    break;
  case 0xD0:
  case 0xD4:
  case 0xF0:
    border_se_ext_diagonal_dirt(pic, mirr);
    break;
  case 0x81:
    border_nesw_double_diagonal_dirt(pic, mirr);
    break;
  case 0x24:
    border_nwse_double_diagonal_dirt(pic, mirr);
    break;
  case 0x00:
    borderless_dirt(pic);
    break;
  default:
    return 1;
  }
  return 0;
}
```