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

```asm
<version_name>:
  endbr64
  cmp    $0x7f1c,%edi
  ja     L40
  cmp    $0x7eff,%edi
  jbe    L184
  sub    $0x7f01,%edi
  lea    D46(%rip),%rax
  cmp    $0x1b,%edi
  ja     L183
  lea    D21(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopw   0x0(%rax,%rax,1)
L40:
  lea    D86(%rip),%rax
  cmp    $0xfb1a,%edi
  je     L183
  jbe    L91
  lea    D233(%rip),%rax
  cmp    $0xfefd,%edi
  je     L183
  cmp    $0xfeff,%edi
  jne    L142
  lea    D276(%rip),%rax
L183:
  ret
L184:
  cmp    $0x304,%edi
  ja     L45
  cmp    $0x2ff,%edi
  jbe    L227
  sub    $0x301,%edi
  lea    D450(%rip),%rax
  cmp    $0x3,%edi
  ja     L183
  lea    D340(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
L142:
  cmp    $0xfb28,%edi
  mov    $0x0,%edx
  lea    D74(%rip),%rax
  cmovne %rdx,%rax
  ret
L91:
  lea    D78(%rip),%rax
  cmp    $0xfb16,%edi
  je     L183
  jbe    L106
  cmp    $0xfb17,%edi
  mov    $0x0,%edx
  lea    D168(%rip),%rax
  cmovne %rdx,%rax
  ret
  cs nopw 0x0(%rax,%rax,1)
L45:
  lea    D410(%rip),%rax
  cmp    $0x7e01,%edi
  je     L183
  jbe    L58
  cmp    $0x7e02,%edi
  mov    $0x0,%edx
  lea    D397(%rip),%rax
  cmovne %rdx,%rax
  ret
L106:
  lea    D399(%rip),%rax
  cmp    $0xcaca,%edi
  je     L183
  jbe    L186
  cmp    $0xeaea,%edi
  je     L183
  cmp    $0xfafa,%edi
  je     L183
  xor    %edx,%edx
  cmp    $0xdada,%edi
  cmovne %rdx,%rax
  ret
L58:
  lea    D399(%rip),%rax
  cmp    $0x4a4a,%edi
  je     L183
  jbe    L211
  cmp    $0x6a6a,%edi
  je     L183
  cmp    $0x7a7a,%edi
  je     L183
  xor    %edx,%edx
  cmp    $0x5a5a,%edi
  cmovne %rdx,%rax
  ret
L186:
  cmp    $0xaaaa,%edi
  je     L183
  jbe    L32
  xor    %edx,%edx
  cmp    $0xbaba,%edi
  cmovne %rdx,%rax
  ret
L211:
  cmp    $0x2a2a,%edi
  je     L183
  jbe    L21
  xor    %edx,%edx
  cmp    $0x3a3a,%edi
  cmovne %rdx,%rax
  ret
L32:
  cmp    $0x8a8a,%edi
  je     L183
  xor    %edx,%edx
  cmp    $0x9a9a,%edi
  cmovne %rdx,%rax
  ret
L21:
  cmp    $0xa0a,%edi
  je     L183
  xor    %edx,%edx
  cmp    $0x1a1a,%edi
  cmovne %rdx,%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D425(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
L227:
  xor    %eax,%eax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D263(%rip),%rax
  ret
  lea    D459(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D189(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D279(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D23(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D449(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D65(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D224(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D84(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D379(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D180(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D215(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D81(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D200(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D155(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D138(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D70(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D69(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D186(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D48(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D58(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D152(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D157(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D345(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D413(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D383(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D431(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D261(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D417(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D214(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D333(%rip),%rax
  ret
```

tool_calls: name: retrieve_data
arguments: label: D46
type: string
name: retrieve_data
arguments: label: D86
type: string
name: retrieve_data
arguments: label: D233
type: string
name: retrieve_data
arguments: label: D276
type: string
name: retrieve_data
arguments: label: D450
type: string
name: retrieve_data
arguments: label: D74
type: string
name: retrieve_data
arguments: label: D78
type: string
name: retrieve_data
arguments: label: D168
type: string
name: retrieve_data
arguments: label: D410
type: string
name: retrieve_data
arguments: label: D397
type: string
name: retrieve_data
arguments: label: D399
type: string
name: retrieve_data
arguments: label: D425
type: string
name: retrieve_data
arguments: label: D263
type: string
name: retrieve_data
arguments: label: D459
type: string
name: retrieve_data
arguments: label: D189
type: string
name: retrieve_data
arguments: label: D279
type: string
name: retrieve_data
arguments: label: D23
type: string
name: retrieve_data
arguments: label: D449
type: string
name: retrieve_data
arguments: label: D65
type: string
name: retrieve_data
arguments: label: D224
type: string
name: retrieve_data
arguments: label: D84
type: string
name: retrieve_data
arguments: label: D379
type: string
name: retrieve_data
arguments: label: D180
type: string
name: retrieve_data
arguments: label: D215
type: string
name: retrieve_data
arguments: label: D81
type: string
name: retrieve_data
arguments: label: D200
type: string
name: retrieve_data
arguments: label: D155
type: string
name: retrieve_data
arguments: label: D138
type: string
name: retrieve_data
arguments: label: D70
type: string
name: retrieve_data
arguments: label: D69
type: string
name: retrieve_data
arguments: label: D186
type: string
name: retrieve_data
arguments: label: D48
type: string
name: retrieve_data
arguments: label: D58
type: string
name: retrieve_data
arguments: label: D152
type: string
name: retrieve_data
arguments: label: D157
type: string
name: retrieve_data
arguments: label: D345
type: string
name: retrieve_data
arguments: label: D413
type: string
name: retrieve_data
arguments: label: D383
type: string
name: retrieve_data
arguments: label: D431
type: string
name: retrieve_data
arguments: label: D261
type: string
name: retrieve_data
arguments: label: D417
type: string
name: retrieve_data
arguments: label: D214
type: string
name: retrieve_data
arguments: label: D333
type: string

tool: D46: TLS_1_3_DRAFT0

tool: D86: TLS_1_3_FB26

tool: D233: DTLS_1_1

tool: D276: DTLS_1_0

tool: D450: SSL_3_0

tool: D74: TLS_1_3_FB40

tool: D78: TLS_1_3_FB22

tool: D168: TLS_1_3_FB23

tool: D410: TLS_1_3_7E01

tool: D397: TLS_1_3_7E02

tool: D399: GOOGLE_GREASE

tool: D425: TLS_1_0

tool: D263: TLS_1_2

tool: D459: TLS_1_3

tool: D189: TLS_1_1

tool: D279: TLS_1_3_DRAFT1

tool: D23: TLS_1_3_DRAFT25

tool: D449: TLS_1_3_DRAFT20

tool: D65: TLS_1_3_DRAFT19

tool: D224: TLS_1_3_DRAFT14

tool: D84: TLS_1_3_DRAFT28

tool: D379: TLS_1_3_DRAFT24

tool: D180: TLS_1_3_DRAFT23

tool: D215: TLS_1_3_DRAFT22

tool: D81: TLS_1_3_DRAFT21

tool: D200: TLS_1_3_DRAFT11

tool: D155: TLS_1_3_DRAFT10

tool: D138: TLS_1_3_DRAFT18

tool: D70: TLS_1_3_DRAFT17

tool: D69: TLS_1_3_DRAFT16

tool: D186: TLS_1_3_DRAFT15

tool: D48: TLS_1_3_DRAFT13

tool: D58: TLS_1_3_DRAFT12

tool: D152: TLS_1_3_DRAFT7

tool: D157: TLS_1_3_DRAFT6

tool: D345: TLS_1_3_DRAFT9

tool: D413: TLS_1_3_DRAFT8

tool: D383: TLS_1_3_DRAFT27

tool: D431: TLS_1_3_DRAFT26

tool: D261: TLS_1_3_DRAFT5

tool: D417: TLS_1_3_DRAFT4

tool: D214: TLS_1_3_DRAFT3

tool: D333: TLS_1_3_DRAFT2

assistant: ```c
const char *version_name(unsigned code) {
  switch (code) {
  default:
    return NULL;
    break;
  case 0x0300:
    return "SSL_3_0";
    break;
  case 0x0301:
    return "TLS_1_0";
    break;
  case 0x0302:
    return "TLS_1_1";
    break;
  case 0x0303:
    return "TLS_1_2";
    break;
  case 0x0304:
    return "TLS_1_3";
    break;
  case 0x7f00:
    return "TLS_1_3_DRAFT0";
    break;
  case 0x7f01:
    return "TLS_1_3_DRAFT1";
    break;
  case 0x7f02:
    return "TLS_1_3_DRAFT2";
    break;
  case 0x7f03:
    return "TLS_1_3_DRAFT3";
    break;
  case 0x7f04:
    return "TLS_1_3_DRAFT4";
    break;
  case 0x7f05:
    return "TLS_1_3_DRAFT5";
    break;
  case 0x7f06:
    return "TLS_1_3_DRAFT6";
    break;
  case 0x7f07:
    return "TLS_1_3_DRAFT7";
    break;
  case 0x7f08:
    return "TLS_1_3_DRAFT8";
    break;
  case 0x7f09:
    return "TLS_1_3_DRAFT9";
    break;
  case 0x7f0a:
    return "TLS_1_3_DRAFT10";
    break;
  case 0x7f0b:
    return "TLS_1_3_DRAFT11";
    break;
  case 0x7f0c:
    return "TLS_1_3_DRAFT12";
    break;
  case 0x7f0d:
    return "TLS_1_3_DRAFT13";
    break;
  case 0x7f0e:
    return "TLS_1_3_DRAFT14";
    break;
  case 0x7f0f:
    return "TLS_1_3_DRAFT15";
    break;
  case 0x7f10:
    return "TLS_1_3_DRAFT16";
    break;
  case 0x7f11:
    return "TLS_1_3_DRAFT17";
    break;
  case 0x7f12:
    return "TLS_1_3_DRAFT18";
    break;
  case 0x7f13:
    return "TLS_1_3_DRAFT19";
    break;
  case 0x7f14:
    return "TLS_1_3_DRAFT20";
    break;
  case 0x7f15:
    return "TLS_1_3_DRAFT21";
    break;
  case 0x7f16:
    return "TLS_1_3_DRAFT22";
    break;
  case 0x7f17:
    return "TLS_1_3_DRAFT23";
    break;
  case 0x7f18:
    return "TLS_1_3_DRAFT24";
    break;
  case 0x7f19:
    return "TLS_1_3_DRAFT25";
    break;
  case 0x7f1a:
    return "TLS_1_3_DRAFT26";
    break;
  case 0x7f1b:
    return "TLS_1_3_DRAFT27";
    break;
  case 0x7f1c:
    return "TLS_1_3_DRAFT28";
    break;
  case 0xfb16:
    return "TLS_1_3_FB22";
    break;
  case 0xfb17:
    return "TLS_1_3_FB23";
    break;
  case 0xfb1a:
    return "TLS_1_3_FB26";
    break;
  case 0xfb28:
    return "TLS_1_3_FB40";
    break;
  case 0xfeff:
    return "DTLS_1_0";
    break;
  case 0xfefd:
    return "DTLS_1_1";
    break;
  case 0x7e01:
    return "TLS_1_3_7E01";
    break;
  case 0x7e02:
    return "TLS_1_3_7E02";
    break;
  case 0x0a0a:
  case 0x1a1a:
  case 0x2a2a:
  case 0x3a3a:
  case 0x4a4a:
  case 0x5a5a:
  case 0x6a6a:
  case 0x7a7a:
  case 0x8a8a:
  case 0x9a9a:
  case 0xaaaa:
  case 0xbaba:
  case 0xcaca:
  case 0xdada:
  case 0xeaea:
  case 0xfafa:
    return "GOOGLE_GREASE";
  }
}
```