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

```asm
<version_name>:
  endbr64
  cmp    $0x7f1c,%edi
  ja     L183
  cmp    $0x7eff,%edi
  jbe    L78
  sub    $0x7f01,%edi
  lea    D329(%rip),%rax
  cmp    $0x1b,%edi
  ja     L150
  lea    D55(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopw   0x0(%rax,%rax,1)
L183:
  lea    D416(%rip),%rax
  cmp    $0xfb1a,%edi
  je     L150
  jbe    L258
  lea    D217(%rip),%rax
  cmp    $0xfefd,%edi
  je     L150
  cmp    $0xfeff,%edi
  jne    L5
  lea    D78(%rip),%rax
L150:
  ret
L78:
  cmp    $0x304,%edi
  ja     L46
  cmp    $0x2ff,%edi
  jbe    L229
  sub    $0x301,%edi
  lea    D97(%rip),%rax
  cmp    $0x3,%edi
  ja     L150
  lea    D46(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
L5:
  cmp    $0xfb28,%edi
  mov    $0x0,%edx
  lea    D260(%rip),%rax
  cmovne %rdx,%rax
  ret
L258:
  lea    D249(%rip),%rax
  cmp    $0xfb16,%edi
  je     L150
  jbe    L132
  cmp    $0xfb17,%edi
  mov    $0x0,%edx
  lea    D300(%rip),%rax
  cmovne %rdx,%rax
  ret
  cs nopw 0x0(%rax,%rax,1)
L46:
  lea    D349(%rip),%rax
  cmp    $0x7e01,%edi
  je     L150
  jbe    L6
  cmp    $0x7e02,%edi
  mov    $0x0,%edx
  lea    D5(%rip),%rax
  cmovne %rdx,%rax
  ret
L132:
  lea    D65(%rip),%rax
  cmp    $0xcaca,%edi
  je     L150
  jbe    L175
  cmp    $0xeaea,%edi
  je     L150
  cmp    $0xfafa,%edi
  je     L150
  xor    %edx,%edx
  cmp    $0xdada,%edi
  cmovne %rdx,%rax
  ret
L6:
  lea    D65(%rip),%rax
  cmp    $0x4a4a,%edi
  je     L150
  jbe    L66
  cmp    $0x6a6a,%edi
  je     L150
  cmp    $0x7a7a,%edi
  je     L150
  xor    %edx,%edx
  cmp    $0x5a5a,%edi
  cmovne %rdx,%rax
  ret
L175:
  cmp    $0xaaaa,%edi
  je     L150
  jbe    L278
  xor    %edx,%edx
  cmp    $0xbaba,%edi
  cmovne %rdx,%rax
  ret
L66:
  cmp    $0x2a2a,%edi
  je     L150
  jbe    L233
  xor    %edx,%edx
  cmp    $0x3a3a,%edi
  cmovne %rdx,%rax
  ret
L278:
  cmp    $0x8a8a,%edi
  je     L150
  xor    %edx,%edx
  cmp    $0x9a9a,%edi
  cmovne %rdx,%rax
  ret
L233:
  cmp    $0xa0a,%edi
  je     L150
  xor    %edx,%edx
  cmp    $0x1a1a,%edi
  cmovne %rdx,%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D280(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
L229:
  xor    %eax,%eax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D227(%rip),%rax
  ret
  lea    D430(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D83(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D103(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D276(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D82(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D250(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D79(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D114(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D246(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D327(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D319(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D17(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D43(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D437(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D168(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D367(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D286(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D165(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D359(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D171(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D271(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D177(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D401(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D320(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D3(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D372(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D203(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D230(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D72(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D452(%rip),%rax
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D329
datatype: string
name: retrieve_data
arguments: tag: D416
datatype: string
name: retrieve_data
arguments: tag: D217
datatype: string
name: retrieve_data
arguments: tag: D78
datatype: string
name: retrieve_data
arguments: tag: D97
datatype: string
name: retrieve_data
arguments: tag: D260
datatype: string
name: retrieve_data
arguments: tag: D249
datatype: string
name: retrieve_data
arguments: tag: D300
datatype: string
name: retrieve_data
arguments: tag: D349
datatype: string
name: retrieve_data
arguments: tag: D5
datatype: string
name: retrieve_data
arguments: tag: D65
datatype: string
name: retrieve_data
arguments: tag: D280
datatype: string
name: retrieve_data
arguments: tag: D227
datatype: string
name: retrieve_data
arguments: tag: D430
datatype: string
name: retrieve_data
arguments: tag: D83
datatype: string
name: retrieve_data
arguments: tag: D103
datatype: string
name: retrieve_data
arguments: tag: D276
datatype: string
name: retrieve_data
arguments: tag: D82
datatype: string
name: retrieve_data
arguments: tag: D250
datatype: string
name: retrieve_data
arguments: tag: D79
datatype: string
name: retrieve_data
arguments: tag: D114
datatype: string
name: retrieve_data
arguments: tag: D246
datatype: string
name: retrieve_data
arguments: tag: D327
datatype: string
name: retrieve_data
arguments: tag: D319
datatype: string
name: retrieve_data
arguments: tag: D17
datatype: string
name: retrieve_data
arguments: tag: D43
datatype: string
name: retrieve_data
arguments: tag: D437
datatype: string
name: retrieve_data
arguments: tag: D168
datatype: string
name: retrieve_data
arguments: tag: D367
datatype: string
name: retrieve_data
arguments: tag: D286
datatype: string
name: retrieve_data
arguments: tag: D165
datatype: string
name: retrieve_data
arguments: tag: D359
datatype: string
name: retrieve_data
arguments: tag: D171
datatype: string
name: retrieve_data
arguments: tag: D271
datatype: string
name: retrieve_data
arguments: tag: D177
datatype: string
name: retrieve_data
arguments: tag: D401
datatype: string
name: retrieve_data
arguments: tag: D320
datatype: string
name: retrieve_data
arguments: tag: D3
datatype: string
name: retrieve_data
arguments: tag: D372
datatype: string
name: retrieve_data
arguments: tag: D203
datatype: string
name: retrieve_data
arguments: tag: D230
datatype: string
name: retrieve_data
arguments: tag: D72
datatype: string
name: retrieve_data
arguments: tag: D452
datatype: string

tool: D329: TLS_1_3_DRAFT0

tool: D416: TLS_1_3_FB26

tool: D217: DTLS_1_1

tool: D78: DTLS_1_0

tool: D97: SSL_3_0

tool: D260: TLS_1_3_FB40

tool: D249: TLS_1_3_FB22

tool: D300: TLS_1_3_FB23

tool: D349: TLS_1_3_7E01

tool: D5: TLS_1_3_7E02

tool: D65: GOOGLE_GREASE

tool: D280: TLS_1_0

tool: D227: TLS_1_2

tool: D430: TLS_1_3

tool: D83: TLS_1_1

tool: D103: TLS_1_3_DRAFT1

tool: D276: TLS_1_3_DRAFT25

tool: D82: TLS_1_3_DRAFT20

tool: D250: TLS_1_3_DRAFT19

tool: D79: TLS_1_3_DRAFT14

tool: D114: TLS_1_3_DRAFT28

tool: D246: TLS_1_3_DRAFT24

tool: D327: TLS_1_3_DRAFT23

tool: D319: TLS_1_3_DRAFT22

tool: D17: TLS_1_3_DRAFT21

tool: D43: TLS_1_3_DRAFT11

tool: D437: TLS_1_3_DRAFT10

tool: D168: TLS_1_3_DRAFT18

tool: D367: TLS_1_3_DRAFT17

tool: D286: TLS_1_3_DRAFT16

tool: D165: TLS_1_3_DRAFT15

tool: D359: TLS_1_3_DRAFT13

tool: D171: TLS_1_3_DRAFT12

tool: D271: TLS_1_3_DRAFT7

tool: D177: TLS_1_3_DRAFT6

tool: D401: TLS_1_3_DRAFT9

tool: D320: TLS_1_3_DRAFT8

tool: D3: TLS_1_3_DRAFT27

tool: D372: TLS_1_3_DRAFT26

tool: D203: TLS_1_3_DRAFT5

tool: D230: TLS_1_3_DRAFT4

tool: D72: TLS_1_3_DRAFT3

tool: D452: 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";
  }
}
```