user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<_scan_link_url>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x28(%rbp)
  movq   $0x0,-0x10(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x8(%rbp)
  movl   $0x0,-0x14(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  cmpb   $0x28,-0x15(%rbp)
  ja     L2346
  cmpb   $0x1f,-0x15(%rbp)
  ja     L2231
  cmpb   $0xa,-0x15(%rbp)
  jne    L434
  jmp    L2141
L2231:
  cmpb   $0x20,-0x15(%rbp)
  jbe    L2754
  cmpb   $0x27,-0x15(%rbp)
  ja     L16
  jmp    L563
L2346:
  cmpb   $0x3c,-0x15(%rbp)
  ja     L3095
  cmpb   $0x29,-0x15(%rbp)
  jbe    L279
  cmpb   $0x3b,-0x15(%rbp)
  ja     L2963
  jmp    L563
L3095:
  cmpb   $0x5c,-0x15(%rbp)
  jne    L1031
  jmp    L286
L2788:
  nop
  jmp    L2253
L331:
  nop
  jmp    L2253
L3029:
  nop
  jmp    L2253
L2882:
  nop
  jmp    L2253
L552:
  nop
  jmp    L2253
L1344:
  nop
  jmp    L2253
L1160:
  nop
  jmp    L2253
L2792:
  nop
L2253:
  mov    -0x28(%rbp),%rax
  sub    -0x8(%rbp),%rax
  jmp    L3061
L1479:
  nop
L2141:
  movl   $0x0,-0x14(%rbp)
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
L1565:
  movzbl -0x15(%rbp),%eax
  cltq
  lea    D50(%rip),%rdx
  movzbl (%rax,%rdx,1),%eax
  movzbl %al,%eax
  and    $0x8,%eax
  test   %eax,%eax
  jne    L1479
  cmpb   $0x29,-0x15(%rbp)
  ja     L1104
  cmpb   $0x20,-0x15(%rbp)
  jbe    L2788
  cmpb   $0x27,-0x15(%rbp)
  jbe    L2599
  cmpb   $0x28,-0x15(%rbp)
  ja     L331
  jmp    L87
L1104:
  cmpb   $0x3c,-0x15(%rbp)
  ja     L1099
  cmpb   $0x3b,-0x15(%rbp)
  ja     L1749
  jmp    L988
L1099:
  cmpb   $0x5c,-0x15(%rbp)
  jne    L2232
  jmp    L1889
L2754:
  nop
  movl   $0x0,-0x14(%rbp)
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  jmp    L1565
L2963:
  nop
  movl   $0x0,-0x14(%rbp)
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  movzbl -0x15(%rbp),%eax
  cltq
  lea    D50(%rip),%rdx
  movzbl (%rax,%rdx,1),%eax
  movzbl %al,%eax
  and    $0x20,%eax
  test   %eax,%eax
  jne    L1993
  cmpb   $0x27,-0x15(%rbp)
  ja     L576
  cmpb   $0x0,-0x15(%rbp)
  je     L3029
  cmpb   $0xa,-0x15(%rbp)
  jne    L821
  jmp    L2253
L576:
  cmpb   $0x29,-0x15(%rbp)
  ja     L732
  cmpb   $0x28,-0x15(%rbp)
  ja     L2551
  jmp    L1559
L732:
  cmpb   $0x3d,-0x15(%rbp)
  jbe    L1402
  cmpb   $0x3e,-0x15(%rbp)
  ja     L544
  jmp    L1075
L1031:
  nop
L563:
  movl   $0x0,-0x14(%rbp)
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  jmp    L1886
L286:
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  cmpb   $0x40,-0x15(%rbp)
  ja     L2126
  cmpb   $0x20,-0x15(%rbp)
  jbe    L2763
  cmpb   $0x2f,-0x15(%rbp)
  jbe    L422
  cmpb   $0x39,-0x15(%rbp)
  jbe    L2338
  jmp    L988
L2126:
  cmpb   $0x60,-0x15(%rbp)
  ja     L1996
  cmpb   $0x5a,-0x15(%rbp)
  jbe    L2338
  jmp    L988
L1996:
  cmpb   $0x7a,-0x15(%rbp)
  jbe    L2456
  cmpb   $0x7e,-0x15(%rbp)
  jbe    L2508
  jmp    L2338
L2763:
  nop
  jmp    L2338
L2456:
  nop
  jmp    L2338
L856:
  nop
  jmp    L2338
L1707:
  nop
L2338:
  mov    $0x0,%eax
  jmp    L3061
L16:
  nop
  movl   $0x1,-0x14(%rbp)
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  cmpb   $0x20,-0x15(%rbp)
  jbe    L856
  cmpb   $0x28,-0x15(%rbp)
  jne    L1107
  jmp    L2338
L434:
  nop
  jmp    L2642
L279:
  nop
L2642:
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  jmp    L2338
L1018:
  nop
  jmp    L87
L1141:
  nop
  jmp    L87
L1422:
  nop
  jmp    L87
L687:
  nop
  jmp    L87
L1750:
  nop
  jmp    L87
L1785:
  nop
  jmp    L87
L2939:
  nop
L87:
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  jmp    L1214
L1107:
  nop
  jmp    L1214
L327:
  nop
L1214:
  movzbl -0x15(%rbp),%eax
  cltq
  lea    D50(%rip),%rdx
  movzbl (%rax,%rdx,1),%eax
  movzbl %al,%eax
  and    $0x10,%eax
  test   %eax,%eax
  jne    L1018
  cmpb   $0x28,-0x15(%rbp)
  jbe    L2355
  cmpb   $0x29,-0x15(%rbp)
  ja     L674
  jmp    L988
L2355:
  nop
  jmp    L1798
L1997:
  nop
  jmp    L1798
L904:
  nop
  jmp    L1798
L2442:
  nop
  jmp    L1798
L1087:
  nop
  jmp    L1798
L1515:
  nop
  jmp    L1798
L1239:
  nop
  jmp    L1798
L1986:
  nop
  jmp    L1798
L2413:
  nop
  jmp    L1798
L3163:
  nop
  jmp    L1798
L2342:
  nop
  jmp    L1798
L625:
  nop
  jmp    L1798
L1475:
  nop
  jmp    L1798
L1339:
  nop
  jmp    L1798
L843:
  nop
L1798:
  mov    -0x10(%rbp),%rax
  mov    %rax,-0x28(%rbp)
  cmpl   $0x1,-0x14(%rbp)
  ja     L3172
  cmpl   $0x0,-0x14(%rbp)
  jne    L1707
  jmp    L2253
L674:
  nop
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  cmpb   $0x40,-0x15(%rbp)
  ja     L1521
  cmpb   $0x20,-0x15(%rbp)
  jbe    L1997
  cmpb   $0x2f,-0x15(%rbp)
  jbe    L1141
  cmpb   $0x39,-0x15(%rbp)
  ja     L1422
  jmp    L1798
L1521:
  cmpb   $0x60,-0x15(%rbp)
  ja     L742
  cmpb   $0x5a,-0x15(%rbp)
  ja     L687
  jmp    L1798
L742:
  cmpb   $0x7a,-0x15(%rbp)
  jbe    L904
  cmpb   $0x7e,-0x15(%rbp)
  ja     L2442
  jmp    L87
L2599:
  nop
  jmp    L988
L2232:
  nop
  jmp    L988
L1402:
  nop
  jmp    L988
L422:
  nop
  jmp    L988
L2508:
  nop
  jmp    L988
L1832:
  nop
  jmp    L988
L294:
  nop
  jmp    L988
L2854:
  nop
  jmp    L988
L1506:
  nop
  jmp    L988
L2554:
  nop
  jmp    L988
L1640:
  nop
L988:
  movl   $0x0,-0x14(%rbp)
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  jmp    L1886
L2117:
  nop
L1886:
  cmpb   $0x28,-0x15(%rbp)
  ja     L27
  cmpb   $0x20,-0x15(%rbp)
  jbe    L2882
  cmpb   $0x27,-0x15(%rbp)
  ja     L1750
  jmp    L988
L27:
  cmpb   $0x29,-0x15(%rbp)
  jbe    L552
  cmpb   $0x5c,-0x15(%rbp)
  jne    L1832
  nop
L1889:
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  cmpb   $0x40,-0x15(%rbp)
  ja     L1885
  cmpb   $0x20,-0x15(%rbp)
  jbe    L1087
  cmpb   $0x2f,-0x15(%rbp)
  jbe    L294
  cmpb   $0x39,-0x15(%rbp)
  ja     L2854
  jmp    L1798
L1885:
  cmpb   $0x60,-0x15(%rbp)
  ja     L2404
  cmpb   $0x5a,-0x15(%rbp)
  ja     L1506
  jmp    L1798
L2404:
  cmpb   $0x7a,-0x15(%rbp)
  jbe    L1515
  cmpb   $0x7e,-0x15(%rbp)
  ja     L1239
  jmp    L988
L1749:
  nop
  jmp    L3076
L1993:
  nop
L3076:
  movl   $0x0,-0x14(%rbp)
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  movzbl -0x15(%rbp),%eax
  cltq
  lea    D50(%rip),%rdx
  movzbl (%rax,%rdx,1),%eax
  movzbl %al,%eax
  and    $0x20,%eax
  test   %eax,%eax
  je     L2156
  jmp    L3076
L2156:
  cmpb   $0x27,-0x15(%rbp)
  ja     L2607
  cmpb   $0x0,-0x15(%rbp)
  je     L1344
  cmpb   $0xa,-0x15(%rbp)
  jne    L1514
  jmp    L2253
L2607:
  cmpb   $0x29,-0x15(%rbp)
  ja     L1781
  cmpb   $0x28,-0x15(%rbp)
  ja     L2466
  jmp    L1559
L1781:
  cmpb   $0x3d,-0x15(%rbp)
  jbe    L2554
  cmpb   $0x3e,-0x15(%rbp)
  ja     L2071
  nop
  jmp    L1075
L2897:
  nop
L1075:
  movl   $0x2,-0x14(%rbp)
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  cmpb   $0x20,-0x15(%rbp)
  jbe    L3162
  cmpb   $0x29,-0x15(%rbp)
  jne    L2117
  jmp    L2315
L3172:
  nop
  jmp    L2315
L3162:
  nop
  jmp    L2315
L1725:
  nop
  jmp    L2315
L70:
  nop
  jmp    L2315
L1078:
  nop
  jmp    L2315
L2202:
  nop
  jmp    L2315
L1208:
  nop
L2315:
  mov    -0x28(%rbp),%rax
  sub    -0x8(%rbp),%rax
  jmp    L3061
L544:
  nop
  jmp    L907
L2071:
  nop
L907:
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  cmpb   $0x3e,-0x15(%rbp)
  ja     L140
  cmpb   $0x20,-0x15(%rbp)
  ja     L500
  cmpb   $0x0,-0x15(%rbp)
  je     L1986
  cmpb   $0xa,-0x15(%rbp)
  jne    L1535
  jmp    L1798
L500:
  cmpb   $0x2f,-0x15(%rbp)
  ja     L1558
  jmp    L3076
L1558:
  cmpb   $0x39,-0x15(%rbp)
  jbe    L1903
  cmpb   $0x3d,-0x15(%rbp)
  ja     L1548
  jmp    L3076
L140:
  cmpb   $0x5c,-0x15(%rbp)
  ja     L3138
  cmpb   $0x40,-0x15(%rbp)
  ja     L190
  jmp    L3076
L190:
  cmpb   $0x5a,-0x15(%rbp)
  jbe    L730
  cmpb   $0x5b,-0x15(%rbp)
  ja     L2742
  jmp    L3076
L3138:
  cmpb   $0x60,-0x15(%rbp)
  ja     L3146
  jmp    L3076
L3146:
  cmpb   $0x7a,-0x15(%rbp)
  jbe    L383
  cmpb   $0x7e,-0x15(%rbp)
  ja     L2155
  jmp    L3076
L203:
  nop
L1559:
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  cmpb   $0x29,-0x15(%rbp)
  ja     L2183
  cmpb   $0xa,-0x15(%rbp)
  ja     L2190
  cmpb   $0x0,-0x15(%rbp)
  je     L2413
  cmpb   $0x9,-0x15(%rbp)
  jbe    L700
  jmp    L1798
L2190:
  cmpb   $0x20,-0x15(%rbp)
  jbe    L112
  cmpb   $0x27,-0x15(%rbp)
  ja     L2979
  jmp    L1559
L2979:
  cmpb   $0x28,-0x15(%rbp)
  jbe    L700
  jmp    L3076
L2183:
  cmpb   $0x3d,-0x15(%rbp)
  ja     L354
  cmpb   $0x3c,-0x15(%rbp)
  je     L1785
  jmp    L1559
L354:
  cmpb   $0x3e,-0x15(%rbp)
  jbe    L1068
  cmpb   $0x5c,-0x15(%rbp)
  jne    L1559
  jmp    L491
L821:
  nop
  jmp    L700
L2551:
  nop
  jmp    L700
L1514:
  nop
  jmp    L700
L2466:
  nop
  jmp    L700
L1535:
  nop
  jmp    L700
L1903:
  nop
  jmp    L700
L730:
  nop
  jmp    L700
L383:
  nop
  jmp    L700
L2155:
  nop
  jmp    L700
L112:
  nop
  jmp    L700
L2388:
  nop
  jmp    L700
L2112:
  nop
  jmp    L700
L1146:
  nop
  jmp    L700
L2556:
  nop
  jmp    L700
L864:
  nop
  jmp    L700
L771:
  nop
  jmp    L700
L1700:
  nop
  jmp    L700
L807:
  nop
  jmp    L700
L1505:
  nop
  jmp    L700
L2122:
  nop
  jmp    L700
L2847:
  nop
  jmp    L700
L2295:
  nop
  jmp    L700
L2363:
  nop
L700:
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  movzbl -0x15(%rbp),%eax
  cltq
  lea    D50(%rip),%rdx
  movzbl (%rax,%rdx,1),%eax
  movzbl %al,%eax
  and    $0x40,%eax
  test   %eax,%eax
  je     L2347
  jmp    L700
L2347:
  cmpb   $0x3d,-0x15(%rbp)
  jbe    L3163
  cmpb   $0x3e,-0x15(%rbp)
  jbe    L3136
  jmp    L713
L3136:
  nop
  jmp    L1931
L1411:
  nop
L1931:
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  jmp    L2315
L713:
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  movzbl -0x15(%rbp),%eax
  cltq
  lea    D50(%rip),%rdx
  movzbl (%rax,%rdx,1),%eax
  test   %al,%al
  jns    L1982
  jmp    L713
L1982:
  cmpb   $0xa,-0x15(%rbp)
  ja     L1391
  cmpb   $0x0,-0x15(%rbp)
  je     L2342
  cmpb   $0x9,-0x15(%rbp)
  ja     L625
  jmp    L700
L1391:
  cmpb   $0x3e,-0x15(%rbp)
  je     L2704
  jmp    L700
L2704:
  movl   $0x2,-0x14(%rbp)
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  movzbl -0x15(%rbp),%eax
  cltq
  lea    D50(%rip),%rdx
  movzbl (%rax,%rdx,1),%eax
  movzbl %al,%eax
  and    $0x40,%eax
  test   %eax,%eax
  je     L2035
  jmp    L700
L2035:
  cmpb   $0x3d,-0x15(%rbp)
  jbe    L1725
  cmpb   $0x3e,-0x15(%rbp)
  jbe    L1411
  jmp    L713
L1068:
  nop
  jmp    L375
L1025:
  nop
L375:
  movl   $0x2,-0x14(%rbp)
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  cmpb   $0x20,-0x15(%rbp)
  jbe    L70
  cmpb   $0x28,-0x15(%rbp)
  jne    L327
  jmp    L2315
L491:
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  cmpb   $0x3e,-0x15(%rbp)
  ja     L1073
  cmpb   $0x20,-0x15(%rbp)
  ja     L2493
  cmpb   $0x0,-0x15(%rbp)
  je     L1475
  cmpb   $0xa,-0x15(%rbp)
  jne    L2388
  jmp    L1798
L2493:
  cmpb   $0x2f,-0x15(%rbp)
  ja     L2194
  jmp    L1559
L2194:
  cmpb   $0x39,-0x15(%rbp)
  jbe    L2112
  cmpb   $0x3d,-0x15(%rbp)
  ja     L1314
  jmp    L1559
L1073:
  cmpb   $0x5c,-0x15(%rbp)
  ja     L2169
  cmpb   $0x40,-0x15(%rbp)
  ja     L2833
  jmp    L1559
L2833:
  cmpb   $0x5a,-0x15(%rbp)
  jbe    L1146
  cmpb   $0x5b,-0x15(%rbp)
  ja     L1426
  jmp    L1559
L2169:
  cmpb   $0x60,-0x15(%rbp)
  ja     L1966
  jmp    L1559
L1966:
  cmpb   $0x7a,-0x15(%rbp)
  jbe    L2556
  cmpb   $0x7e,-0x15(%rbp)
  ja     L864
  jmp    L1559
L1352:
  nop
L1314:
  movl   $0x2,-0x14(%rbp)
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  cmpb   $0x29,-0x15(%rbp)
  ja     L1171
  cmpb   $0xa,-0x15(%rbp)
  ja     L1066
  cmpb   $0x0,-0x15(%rbp)
  je     L1078
  cmpb   $0x9,-0x15(%rbp)
  ja     L2202
  jmp    L700
L1066:
  cmpb   $0x20,-0x15(%rbp)
  jbe    L771
  cmpb   $0x27,-0x15(%rbp)
  ja     L2856
  jmp    L1559
L2856:
  cmpb   $0x28,-0x15(%rbp)
  jbe    L1700
  jmp    L3076
L1171:
  cmpb   $0x3d,-0x15(%rbp)
  ja     L2191
  cmpb   $0x3c,-0x15(%rbp)
  je     L2939
  jmp    L1559
L2191:
  cmpb   $0x3e,-0x15(%rbp)
  jbe    L1025
  cmpb   $0x5c,-0x15(%rbp)
  jne    L1559
  jmp    L491
L1426:
  nop
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  cmpb   $0x28,-0x15(%rbp)
  ja     L1560
  cmpb   $0xa,-0x15(%rbp)
  ja     L1362
  cmpb   $0x0,-0x15(%rbp)
  je     L1339
  cmpb   $0x9,-0x15(%rbp)
  ja     L843
  jmp    L700
L1362:
  cmpb   $0x20,-0x15(%rbp)
  jbe    L807
  cmpb   $0x27,-0x15(%rbp)
  ja     L1505
  jmp    L1559
L1560:
  cmpb   $0x3e,-0x15(%rbp)
  ja     L2479
  cmpb   $0x29,-0x15(%rbp)
  ja     L2852
  jmp    L3076
L2852:
  cmpb   $0x3d,-0x15(%rbp)
  ja     L1352
  jmp    L1559
L2479:
  cmpb   $0x5c,-0x15(%rbp)
  jne    L1559
  jmp    L491
L1548:
  nop
  jmp    L29
L960:
  nop
L29:
  movl   $0x2,-0x14(%rbp)
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  movzbl -0x15(%rbp),%eax
  cltq
  lea    D50(%rip),%rdx
  movzbl (%rax,%rdx,1),%eax
  movzbl %al,%eax
  and    $0x20,%eax
  test   %eax,%eax
  je     L1179
  jmp    L3076
L1179:
  cmpb   $0x27,-0x15(%rbp)
  ja     L1289
  cmpb   $0x0,-0x15(%rbp)
  je     L1208
  cmpb   $0xa,-0x15(%rbp)
  jne    L2122
  jmp    L2315
L1289:
  cmpb   $0x29,-0x15(%rbp)
  ja     L3127
  cmpb   $0x28,-0x15(%rbp)
  ja     L2847
  jmp    L1559
L3127:
  cmpb   $0x3d,-0x15(%rbp)
  jbe    L1640
  cmpb   $0x3e,-0x15(%rbp)
  jbe    L2897
  jmp    L907
L2742:
  nop
  movl   $0x0,-0x14(%rbp)
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  mov    %al,-0x15(%rbp)
  cmpb   $0x28,-0x15(%rbp)
  ja     L153
  cmpb   $0xa,-0x15(%rbp)
  ja     L1723
  cmpb   $0x0,-0x15(%rbp)
  je     L1160
  cmpb   $0x9,-0x15(%rbp)
  ja     L2792
  jmp    L700
L1723:
  cmpb   $0x20,-0x15(%rbp)
  jbe    L2295
  cmpb   $0x27,-0x15(%rbp)
  ja     L203
  jmp    L3076
L153:
  cmpb   $0x3e,-0x15(%rbp)
  ja     L647
  cmpb   $0x29,-0x15(%rbp)
  jbe    L2363
  cmpb   $0x3d,-0x15(%rbp)
  ja     L960
  jmp    L3076
L647:
  cmpb   $0x5c,-0x15(%rbp)
  jne    L3076
  jmp    L907
L3061:
  pop    %rbp
  ret
```

tool_calls: name: retrieve_data
arguments: label: D50
type_guessed: string

tool: 

assistant: ```c
extern int _scan_link_url(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;
  {
    unsigned char yych;
    unsigned int yyaccept = 0;
    static const unsigned char yybm[] = {
        0, 64, 64, 64, 64, 64, 64, 64, 64, 64, 8, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 72, 112, 112, 112, 112, 112, 112, 112, 64, 64, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 16, 112, 16, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 128, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
    };
    yych = *p;
    if (yych <= '(') {
      if (yych <= 0x1F) {
        if (yych == '\n')
          goto yy1104;
        goto yy1112;
      } else {
        if (yych <= ' ')
          goto yy1106;
        if (yych <= '\'')
          goto yy1108;
        goto yy1111;
      }
    } else {
      if (yych <= '<') {
        if (yych <= ')')
          goto yy1112;
        if (yych <= ';')
          goto yy1108;
        goto yy1107;
      } else {
        if (yych == '\\')
          goto yy1109;
        goto yy1108;
      }
    }
  yy1103 : { return (p - start); }
  yy1104:
    yyaccept = 0;
    marker = ++p;
    yych = *p;
  yy1105:
    if (yybm[0 + yych] & 8) {
      goto yy1104;
    }
    if (yych <= ')') {
      if (yych <= ' ')
        goto yy1103;
      if (yych <= '\'')
        goto yy1117;
      if (yych <= '(')
        goto yy1113;
      goto yy1103;
    } else {
      if (yych <= '<') {
        if (yych <= ';')
          goto yy1117;
        goto yy1120;
      } else {
        if (yych == '\\')
          goto yy1119;
        goto yy1117;
      }
    }
  yy1106:
    yyaccept = 0;
    yych = *(marker = ++p);
    goto yy1105;
  yy1107:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yybm[0 + yych] & 32) {
      goto yy1120;
    }
    if (yych <= '\'') {
      if (yych <= 0x00)
        goto yy1103;
      if (yych == '\n')
        goto yy1103;
      goto yy1127;
    } else {
      if (yych <= ')') {
        if (yych <= '(')
          goto yy1125;
        goto yy1127;
      } else {
        if (yych <= '=')
          goto yy1117;
        if (yych <= '>')
          goto yy1122;
        goto yy1124;
      }
    }
  yy1108:
    yyaccept = 0;
    yych = *(marker = ++p);
    goto yy1118;
  yy1109:
    ++p;
    if ((yych = *p) <= '@') {
      if (yych <= ' ')
        goto yy1110;
      if (yych <= '/')
        goto yy1117;
      if (yych >= ':')
        goto yy1117;
    } else {
      if (yych <= '`') {
        if (yych >= '[')
          goto yy1117;
      } else {
        if (yych <= 'z')
          goto yy1110;
        if (yych <= '~')
          goto yy1117;
      }
    }
  yy1110 : { return 0; }
  yy1111:
    yyaccept = 1;
    yych = *(marker = ++p);
    if (yych <= ' ')
      goto yy1110;
    if (yych == '(')
      goto yy1110;
    goto yy1114;
  yy1112:
    yych = *++p;
    goto yy1110;
  yy1113:
    ++p;
    yych = *p;
  yy1114:
    if (yybm[0 + yych] & 16) {
      goto yy1113;
    }
    if (yych <= '(')
      goto yy1115;
    if (yych <= ')')
      goto yy1117;
    goto yy1116;
  yy1115:
    p = marker;
    if (yyaccept <= 1) {
      if (yyaccept == 0) {
        goto yy1103;
      } else {
        goto yy1110;
      }
    } else {
      goto yy1123;
    }
  yy1116:
    ++p;
    yych = *p;
    if (yych <= '@') {
      if (yych <= ' ')
        goto yy1115;
      if (yych <= '/')
        goto yy1113;
      if (yych <= '9')
        goto yy1115;
      goto yy1113;
    } else {
      if (yych <= '`') {
        if (yych <= 'Z')
          goto yy1115;
        goto yy1113;
      } else {
        if (yych <= 'z')
          goto yy1115;
        if (yych <= '~')
          goto yy1113;
        goto yy1115;
      }
    }
  yy1117:
    yyaccept = 0;
    marker = ++p;
    yych = *p;
  yy1118:
    if (yych <= '(') {
      if (yych <= ' ')
        goto yy1103;
      if (yych <= '\'')
        goto yy1117;
      goto yy1113;
    } else {
      if (yych <= ')')
        goto yy1103;
      if (yych != '\\')
        goto yy1117;
    }
  yy1119:
    ++p;
    yych = *p;
    if (yych <= '@') {
      if (yych <= ' ')
        goto yy1115;
      if (yych <= '/')
        goto yy1117;
      if (yych <= '9')
        goto yy1115;
      goto yy1117;
    } else {
      if (yych <= '`') {
        if (yych <= 'Z')
          goto yy1115;
        goto yy1117;
      } else {
        if (yych <= 'z')
          goto yy1115;
        if (yych <= '~')
          goto yy1117;
        goto yy1115;
      }
    }
  yy1120:
    yyaccept = 0;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy1120;
    }
    if (yych <= '\'') {
      if (yych <= 0x00)
        goto yy1103;
      if (yych == '\n')
        goto yy1103;
      goto yy1127;
    } else {
      if (yych <= ')') {
        if (yych <= '(')
          goto yy1125;
        goto yy1127;
      } else {
        if (yych <= '=')
          goto yy1117;
        if (yych >= '?')
          goto yy1124;
      }
    }
  yy1122:
    yyaccept = 2;
    yych = *(marker = ++p);
    if (yych <= ' ')
      goto yy1123;
    if (yych != ')')
      goto yy1118;
  yy1123 : { return (p - start); }
  yy1124:
    ++p;
    yych = *p;
    if (yych <= '>') {
      if (yych <= ' ') {
        if (yych <= 0x00)
          goto yy1115;
        if (yych == '\n')
          goto yy1115;
        goto yy1127;
      } else {
        if (yych <= '/')
          goto yy1120;
        if (yych <= '9')
          goto yy1127;
        if (yych <= '=')
          goto yy1120;
        goto yy1137;
      }
    } else {
      if (yych <= '\\') {
        if (yych <= '@')
          goto yy1120;
        if (yych <= 'Z')
          goto yy1127;
        if (yych <= '[')
          goto yy1120;
        goto yy1138;
      } else {
        if (yych <= '`')
          goto yy1120;
        if (yych <= 'z')
          goto yy1127;
        if (yych <= '~')
          goto yy1120;
        goto yy1127;
      }
    }
  yy1125:
    ++p;
    yych = *p;
    if (yych <= ')') {
      if (yych <= '\n') {
        if (yych <= 0x00)
          goto yy1115;
        if (yych >= '\n')
          goto yy1115;
      } else {
        if (yych <= ' ')
          goto yy1127;
        if (yych <= '\'')
          goto yy1125;
        if (yych >= ')')
          goto yy1120;
      }
    } else {
      if (yych <= '=') {
        if (yych == '<')
          goto yy1113;
        goto yy1125;
      } else {
        if (yych <= '>')
          goto yy1133;
        if (yych == '\\')
          goto yy1134;
        goto yy1125;
      }
    }
  yy1127:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy1127;
    }
    if (yych <= '=')
      goto yy1115;
    if (yych >= '?')
      goto yy1130;
  yy1129:
    yych = *++p;
    goto yy1123;
  yy1130:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy1130;
    }
    if (yych <= '\n') {
      if (yych <= 0x00)
        goto yy1115;
      if (yych <= '\t')
        goto yy1127;
      goto yy1115;
    } else {
      if (yych != '>')
        goto yy1127;
    }
    yyaccept = 2;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy1127;
    }
    if (yych <= '=')
      goto yy1123;
    if (yych <= '>')
      goto yy1129;
    goto yy1130;
  yy1133:
    yyaccept = 2;
    yych = *(marker = ++p);
    if (yych <= ' ')
      goto yy1123;
    if (yych == '(')
      goto yy1123;
    goto yy1114;
  yy1134:
    ++p;
    yych = *p;
    if (yych <= '>') {
      if (yych <= ' ') {
        if (yych <= 0x00)
          goto yy1115;
        if (yych == '\n')
          goto yy1115;
        goto yy1127;
      } else {
        if (yych <= '/')
          goto yy1125;
        if (yych <= '9')
          goto yy1127;
        if (yych <= '=')
          goto yy1125;
      }
    } else {
      if (yych <= '\\') {
        if (yych <= '@')
          goto yy1125;
        if (yych <= 'Z')
          goto yy1127;
        if (yych <= '[')
          goto yy1125;
        goto yy1136;
      } else {
        if (yych <= '`')
          goto yy1125;
        if (yych <= 'z')
          goto yy1127;
        if (yych <= '~')
          goto yy1125;
        goto yy1127;
      }
    }
  yy1135:
    yyaccept = 2;
    marker = ++p;
    yych = *p;
    if (yych <= ')') {
      if (yych <= '\n') {
        if (yych <= 0x00)
          goto yy1123;
        if (yych <= '\t')
          goto yy1127;
        goto yy1123;
      } else {
        if (yych <= ' ')
          goto yy1127;
        if (yych <= '\'')
          goto yy1125;
        if (yych <= '(')
          goto yy1127;
        goto yy1120;
      }
    } else {
      if (yych <= '=') {
        if (yych == '<')
          goto yy1113;
        goto yy1125;
      } else {
        if (yych <= '>')
          goto yy1133;
        if (yych == '\\')
          goto yy1134;
        goto yy1125;
      }
    }
  yy1136:
    ++p;
    yych = *p;
    if (yych <= '(') {
      if (yych <= '\n') {
        if (yych <= 0x00)
          goto yy1115;
        if (yych <= '\t')
          goto yy1127;
        goto yy1115;
      } else {
        if (yych <= ' ')
          goto yy1127;
        if (yych <= '\'')
          goto yy1125;
        goto yy1127;
      }
    } else {
      if (yych <= '>') {
        if (yych <= ')')
          goto yy1120;
        if (yych <= '=')
          goto yy1125;
        goto yy1135;
      } else {
        if (yych == '\\')
          goto yy1134;
        goto yy1125;
      }
    }
  yy1137:
    yyaccept = 2;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy1120;
    }
    if (yych <= '\'') {
      if (yych <= 0x00)
        goto yy1123;
      if (yych == '\n')
        goto yy1123;
      goto yy1127;
    } else {
      if (yych <= ')') {
        if (yych <= '(')
          goto yy1125;
        goto yy1127;
      } else {
        if (yych <= '=')
          goto yy1117;
        if (yych <= '>')
          goto yy1122;
        goto yy1124;
      }
    }
  yy1138:
    yyaccept = 0;
    marker = ++p;
    yych = *p;
    if (yych <= '(') {
      if (yych <= '\n') {
        if (yych <= 0x00)
          goto yy1103;
        if (yych <= '\t')
          goto yy1127;
        goto yy1103;
      } else {
        if (yych <= ' ')
          goto yy1127;
        if (yych <= '\'')
          goto yy1120;
        goto yy1125;
      }
    } else {
      if (yych <= '>') {
        if (yych <= ')')
          goto yy1127;
        if (yych <= '=')
          goto yy1120;
        goto yy1137;
      } else {
        if (yych == '\\')
          goto yy1124;
        goto yy1120;
      }
    }
  }
}
```