user: Please show me the C implementation that matches the assembly code listed below:

```asm
<ffgerr>:
  endbr64
  sub    $0x8,%rsp
  mov    %rsi,%rax
  movb   $0x0,(%rsi)
  cmp    $0x12b,%edi
  ja     L1207
  cmp    $0x108,%edi
  ja     L1035
  mov    %edi,%edi
  lea    D117(%rip),%rcx
  movslq (%rcx,%rdi,4),%rdx
  add    %rcx,%rdx
  notrack jmp *%rdx
  lea    D153(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D495(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1420(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D724(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1095(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1167(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1030(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D267(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D699(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1388(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1378(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D10(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1103(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D522(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D471(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D480(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1307(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D425(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D78(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D804(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1394(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D257(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D211(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D245(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D914(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1171(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1364(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D551(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D216(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1066(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D331(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D974(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1041(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1170(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D598(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1384(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1185(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D545(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D283(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D692(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D108(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D915(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D205(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D121(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D144(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D54(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D261(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1299(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1341(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1073(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1346(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D970(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1383(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D226(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1141(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D0(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D821(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D334(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D720(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D118(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1349(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1070(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1019(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D369(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1328(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D666(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D986(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1425(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1065(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D739(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D758(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D196(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1083(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D508(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1247(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D362(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D442(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1105(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D649(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
L1035:
  lea    D525(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
L1207:
  cmp    $0x257,%edi
  jg     L583
  sub    $0x12d,%edi
  cmp    $0xcc,%edi
  ja     L1237
  mov    %edi,%edi
  lea    D1409(%rip),%rcx
  movslq (%rcx,%rdi,4),%rdx
  add    %rcx,%rdx
  notrack jmp *%rdx
  lea    D910(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1300(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D940(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D170(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D338(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D769(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1053(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D593(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D787(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D583(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D139(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1190(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D340(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D173(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1136(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D844(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D389(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D194(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D109(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D347(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D399(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D126(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D779(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D306(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D794(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D865(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1272(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D632(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1188(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D742(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D421(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1088(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D255(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D973(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1385(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D180(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D485(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1034(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1114(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1156(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D898(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1174(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1331(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D991(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D631(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D455(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1189(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1124(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D297(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D929(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D663(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1422(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D263(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D217(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1221(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D420(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D747(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D606(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D568(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D605(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
  lea    D1318(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
L1237:
  lea    D525(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L682
L583:
  lea    D525(%rip),%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
L682:
  add    $0x8,%rsp
  ret
```

tool_calls: name: disassemble_data
arguments: label: D153
data_type: string
name: disassemble_data
arguments: label: D495
data_type: string
name: disassemble_data
arguments: label: D1420
data_type: string
name: disassemble_data
arguments: label: D724
data_type: string
name: disassemble_data
arguments: label: D1095
data_type: string
name: disassemble_data
arguments: label: D1167
data_type: string
name: disassemble_data
arguments: label: D1030
data_type: string
name: disassemble_data
arguments: label: D267
data_type: string
name: disassemble_data
arguments: label: D699
data_type: string
name: disassemble_data
arguments: label: D1388
data_type: string
name: disassemble_data
arguments: label: D1378
data_type: string
name: disassemble_data
arguments: label: D10
data_type: string
name: disassemble_data
arguments: label: D1103
data_type: string
name: disassemble_data
arguments: label: D522
data_type: string
name: disassemble_data
arguments: label: D471
data_type: string
name: disassemble_data
arguments: label: D480
data_type: string
name: disassemble_data
arguments: label: D1307
data_type: string
name: disassemble_data
arguments: label: D425
data_type: string
name: disassemble_data
arguments: label: D78
data_type: string
name: disassemble_data
arguments: label: D804
data_type: string
name: disassemble_data
arguments: label: D1394
data_type: string
name: disassemble_data
arguments: label: D257
data_type: string
name: disassemble_data
arguments: label: D211
data_type: string
name: disassemble_data
arguments: label: D245
data_type: string
name: disassemble_data
arguments: label: D914
data_type: string
name: disassemble_data
arguments: label: D1171
data_type: string
name: disassemble_data
arguments: label: D1364
data_type: string
name: disassemble_data
arguments: label: D551
data_type: string
name: disassemble_data
arguments: label: D216
data_type: string
name: disassemble_data
arguments: label: D1066
data_type: string
name: disassemble_data
arguments: label: D331
data_type: string
name: disassemble_data
arguments: label: D974
data_type: string
name: disassemble_data
arguments: label: D1041
data_type: string
name: disassemble_data
arguments: label: D1170
data_type: string
name: disassemble_data
arguments: label: D598
data_type: string
name: disassemble_data
arguments: label: D1384
data_type: string
name: disassemble_data
arguments: label: D1185
data_type: string
name: disassemble_data
arguments: label: D545
data_type: string
name: disassemble_data
arguments: label: D283
data_type: string
name: disassemble_data
arguments: label: D692
data_type: string
name: disassemble_data
arguments: label: D108
data_type: string
name: disassemble_data
arguments: label: D915
data_type: string
name: disassemble_data
arguments: label: D205
data_type: string
name: disassemble_data
arguments: label: D121
data_type: string
name: disassemble_data
arguments: label: D144
data_type: string
name: disassemble_data
arguments: label: D54
data_type: string
name: disassemble_data
arguments: label: D261
data_type: string
name: disassemble_data
arguments: label: D1299
data_type: string
name: disassemble_data
arguments: label: D1341
data_type: string
name: disassemble_data
arguments: label: D1073
data_type: string
name: disassemble_data
arguments: label: D1346
data_type: string
name: disassemble_data
arguments: label: D970
data_type: string
name: disassemble_data
arguments: label: D1383
data_type: string
name: disassemble_data
arguments: label: D226
data_type: string
name: disassemble_data
arguments: label: D1141
data_type: string
name: disassemble_data
arguments: label: D0
data_type: string
name: disassemble_data
arguments: label: D821
data_type: string
name: disassemble_data
arguments: label: D334
data_type: string
name: disassemble_data
arguments: label: D720
data_type: string
name: disassemble_data
arguments: label: D118
data_type: string
name: disassemble_data
arguments: label: D1349
data_type: string
name: disassemble_data
arguments: label: D1070
data_type: string
name: disassemble_data
arguments: label: D1019
data_type: string
name: disassemble_data
arguments: label: D369
data_type: string
name: disassemble_data
arguments: label: D1328
data_type: string
name: disassemble_data
arguments: label: D666
data_type: string
name: disassemble_data
arguments: label: D986
data_type: string
name: disassemble_data
arguments: label: D1425
data_type: string
name: disassemble_data
arguments: label: D1065
data_type: string
name: disassemble_data
arguments: label: D739
data_type: string
name: disassemble_data
arguments: label: D758
data_type: string
name: disassemble_data
arguments: label: D196
data_type: string
name: disassemble_data
arguments: label: D1083
data_type: string
name: disassemble_data
arguments: label: D508
data_type: string
name: disassemble_data
arguments: label: D1247
data_type: string
name: disassemble_data
arguments: label: D362
data_type: string
name: disassemble_data
arguments: label: D442
data_type: string
name: disassemble_data
arguments: label: D1105
data_type: string
name: disassemble_data
arguments: label: D649
data_type: string
name: disassemble_data
arguments: label: D525
data_type: string
name: disassemble_data
arguments: label: D910
data_type: string
name: disassemble_data
arguments: label: D1300
data_type: string
name: disassemble_data
arguments: label: D940
data_type: string
name: disassemble_data
arguments: label: D170
data_type: string
name: disassemble_data
arguments: label: D338
data_type: string
name: disassemble_data
arguments: label: D769
data_type: string
name: disassemble_data
arguments: label: D1053
data_type: string
name: disassemble_data
arguments: label: D593
data_type: string
name: disassemble_data
arguments: label: D787
data_type: string
name: disassemble_data
arguments: label: D583
data_type: string
name: disassemble_data
arguments: label: D139
data_type: string
name: disassemble_data
arguments: label: D1190
data_type: string
name: disassemble_data
arguments: label: D340
data_type: string
name: disassemble_data
arguments: label: D173
data_type: string
name: disassemble_data
arguments: label: D1136
data_type: string
name: disassemble_data
arguments: label: D844
data_type: string
name: disassemble_data
arguments: label: D389
data_type: string
name: disassemble_data
arguments: label: D194
data_type: string
name: disassemble_data
arguments: label: D109
data_type: string
name: disassemble_data
arguments: label: D347
data_type: string
name: disassemble_data
arguments: label: D399
data_type: string
name: disassemble_data
arguments: label: D126
data_type: string
name: disassemble_data
arguments: label: D779
data_type: string
name: disassemble_data
arguments: label: D306
data_type: string
name: disassemble_data
arguments: label: D794
data_type: string
name: disassemble_data
arguments: label: D865
data_type: string
name: disassemble_data
arguments: label: D1272
data_type: string
name: disassemble_data
arguments: label: D632
data_type: string
name: disassemble_data
arguments: label: D1188
data_type: string
name: disassemble_data
arguments: label: D742
data_type: string
name: disassemble_data
arguments: label: D421
data_type: string
name: disassemble_data
arguments: label: D1088
data_type: string
name: disassemble_data
arguments: label: D255
data_type: string
name: disassemble_data
arguments: label: D973
data_type: string
name: disassemble_data
arguments: label: D1385
data_type: string
name: disassemble_data
arguments: label: D180
data_type: string
name: disassemble_data
arguments: label: D485
data_type: string
name: disassemble_data
arguments: label: D1034
data_type: string
name: disassemble_data
arguments: label: D1114
data_type: string
name: disassemble_data
arguments: label: D1156
data_type: string
name: disassemble_data
arguments: label: D898
data_type: string
name: disassemble_data
arguments: label: D1174
data_type: string
name: disassemble_data
arguments: label: D1331
data_type: string
name: disassemble_data
arguments: label: D991
data_type: string
name: disassemble_data
arguments: label: D631
data_type: string
name: disassemble_data
arguments: label: D455
data_type: string
name: disassemble_data
arguments: label: D1189
data_type: string
name: disassemble_data
arguments: label: D1124
data_type: string
name: disassemble_data
arguments: label: D297
data_type: string
name: disassemble_data
arguments: label: D929
data_type: string
name: disassemble_data
arguments: label: D663
data_type: string
name: disassemble_data
arguments: label: D1422
data_type: string
name: disassemble_data
arguments: label: D263
data_type: string
name: disassemble_data
arguments: label: D217
data_type: string
name: disassemble_data
arguments: label: D1221
data_type: string
name: disassemble_data
arguments: label: D420
data_type: string
name: disassemble_data
arguments: label: D747
data_type: string
name: disassemble_data
arguments: label: D606
data_type: string
name: disassemble_data
arguments: label: D568
data_type: string
name: disassemble_data
arguments: label: D605
data_type: string
name: disassemble_data
arguments: label: D1318
data_type: string

tool: D153: OK - no error

tool: D495: non-CFITSIO program error

tool: D1420: same input and output files

tool: D724: attempt to open too many files

tool: D1095: could not open the named file

tool: D1167: couldn't create the named file

tool: D1030: error writing to FITS file

tool: D267: tried to move past end of file

tool: D699: error reading from FITS file

tool: D1388: could not close the file

tool: D1378: array dimensions too big

tool: D10: cannot write to readonly file

tool: D1103: could not allocate memory

tool: D522: invalid fitsfile pointer

tool: D471: NULL input pointer

tool: D480: error seeking file position

tool: D1307: bad value for file download timeout setting

tool: D425: invalid URL prefix

tool: D78: too many I/O drivers

tool: D804: I/O driver init failed

tool: D1394: no I/O driver for this URLtype

tool: D257: parse error in input file URL

tool: D211: parse error in range list

tool: D245: bad argument (shared mem drvr)

tool: D914: null ptr arg (shared mem drvr)

tool: D1171: no free shared memory handles

tool: D1364: share mem drvr not initialized

tool: D551: IPC system error (shared mem)

tool: D216: no memory (shared mem drvr)

tool: D1066: share mem resource deadlock

tool: D331: lock file open/create failed

tool: D974: can't resize share mem block

tool: D1041: header already has keywords

tool: D1170: keyword not found in header

tool: D598: keyword number out of bounds

tool: D1384: keyword value is undefined

tool: D1185: string missing closing quote

tool: D545: error in indexed keyword name

tool: D283: illegal character in keyword

tool: D692: required keywords out of order

tool: D108: keyword value not positive int

tool: D915: END keyword not found

tool: D205: illegal BITPIX keyword value

tool: D121: illegal NAXIS keyword value

tool: D144: illegal NAXISn keyword value

tool: D54: illegal PCOUNT keyword value

tool: D261: illegal GCOUNT keyword value

tool: D1299: illegal TFIELDS keyword value

tool: D1341: negative table row size

tool: D1073: negative number of rows

tool: D1346: named column not found

tool: D970: illegal SIMPLE keyword value

tool: D1383: first keyword not SIMPLE

tool: D226: second keyword not BITPIX

tool: D1141: third keyword not NAXIS

tool: D0: missing NAXISn keywords

tool: D821: first keyword not XTENSION

tool: D334: CHDU not an ASCII table

tool: D720: CHDU not a binary table

tool: D118: PCOUNT keyword not found

tool: D1349: GCOUNT keyword not found

tool: D1070: TFIELDS keyword not found

tool: D1019: missing TBCOLn keyword

tool: D369: missing TFORMn keyword

tool: D1328: CHDU not an IMAGE extension

tool: D666: illegal TBCOLn keyword value

tool: D986: CHDU not a table extension

tool: D1425: column exceeds width of table

tool: D1065: more than 1 matching col. name

tool: D739: row width not = field widths

tool: D758: unknown FITS extension type

tool: D196: 1st key not SIMPLE or XTENSION

tool: D1083: END keyword is not blank

tool: D508: Header fill area not blank

tool: D1247: Data fill area invalid

tool: D362: illegal TFORM format code

tool: D442: unknown TFORM datatype code

tool: D1105: illegal TDIMn keyword value

tool: D649: invalid BINTABLE heap pointer

tool: D525: unknown error status

tool: D910: illegal HDU number

tool: D1300: column number < 1 or > tfields

tool: D940: negative byte address

tool: D170: negative number of elements

tool: D338: bad first row number

tool: D769: bad first element number

tool: D1053: not an ASCII (A) column

tool: D593: not a logical (L) column

tool: D787: bad ASCII table datatype

tool: D583: bad binary table datatype

tool: D139: null value not defined

tool: D1190: not a variable length column

tool: D340: illegal number of dimensions

tool: D173: 1st pixel no. > last pixel no.

tool: D1136: BSCALE or TSCALn = 0.

tool: D844: illegal axis length < 1

tool: D389: not group table

tool: D194: HDU already member of group

tool: D109: group member not found

tool: D347: group not found

tool: D399: bad group id

tool: D126: too many HDUs tracked

tool: D779: HDU alread tracked

tool: D306: bad Grouping option

tool: D794: identical pointers (groups)

tool: D865: malloc failed in parser

tool: D1272: file read error in parser

tool: D632: null pointer arg (parser)

tool: D1188: empty line (parser)

tool: D742: cannot unread > 1 line

tool: D421: parser too deeply nested

tool: D1088: file open failed (parser)

tool: D255: hit EOF (parser)

tool: D973: bad argument (parser)

tool: D1385: unexpected token (parser)

tool: D180: bad int to string conversion

tool: D485: bad float to string conversion

tool: D1034: keyword value not integer

tool: D1114: keyword value not logical

tool: D1156: keyword value not floating pt

tool: D898: keyword value not double

tool: D1174: bad string to int conversion

tool: D1331: bad string to float conversion

tool: D991: bad string to double convert

tool: D631: illegal datatype code value

tool: D455: illegal no. of decimals

tool: D1189: datatype conversion overflow

tool: D1124: error compressing image

tool: D297: error uncompressing image

tool: D929: bad date or time conversion

tool: D663: syntax error in expression

tool: D1422: expression result wrong type

tool: D263: vector result too large

tool: D217: missing output column

tool: D1221: bad data in parsed column

tool: D420: output extension of wrong type

tool: D747: WCS angle too large

tool: D606: bad WCS coordinate

tool: D568: error in WCS calculation

tool: D605: bad WCS projection type

tool: D1318: WCS keywords not found

assistant: ```c
void ffgerr(int status, char *errtext) {
  errtext[0] = '\0';
  if (status >= 0 && status < 300) {
    switch (status) {
    case 0:
      strcpy(errtext, "OK - no error");
      break;
    case 1:
      strcpy(errtext, "non-CFITSIO program error");
      break;
    case 101:
      strcpy(errtext, "same input and output files");
      break;
    case 103:
      strcpy(errtext, "attempt to open too many files");
      break;
    case 104:
      strcpy(errtext, "could not open the named file");
      break;
    case 105:
      strcpy(errtext, "couldn't create the named file");
      break;
    case 106:
      strcpy(errtext, "error writing to FITS file");
      break;
    case 107:
      strcpy(errtext, "tried to move past end of file");
      break;
    case 108:
      strcpy(errtext, "error reading from FITS file");
      break;
    case 110:
      strcpy(errtext, "could not close the file");
      break;
    case 111:
      strcpy(errtext, "array dimensions too big");
      break;
    case 112:
      strcpy(errtext, "cannot write to readonly file");
      break;
    case 113:
      strcpy(errtext, "could not allocate memory");
      break;
    case 114:
      strcpy(errtext, "invalid fitsfile pointer");
      break;
    case 115:
      strcpy(errtext, "NULL input pointer");
      break;
    case 116:
      strcpy(errtext, "error seeking file position");
      break;
    case 117:
      strcpy(errtext, "bad value for file download timeout setting");
      break;
    case 121:
      strcpy(errtext, "invalid URL prefix");
      break;
    case 122:
      strcpy(errtext, "too many I/O drivers");
      break;
    case 123:
      strcpy(errtext, "I/O driver init failed");
      break;
    case 124:
      strcpy(errtext, "no I/O driver for this URLtype");
      break;
    case 125:
      strcpy(errtext, "parse error in input file URL");
      break;
    case 126:
      strcpy(errtext, "parse error in range list");
      break;
    case 151:
      strcpy(errtext, "bad argument (shared mem drvr)");
      break;
    case 152:
      strcpy(errtext, "null ptr arg (shared mem drvr)");
      break;
    case 153:
      strcpy(errtext, "no free shared memory handles");
      break;
    case 154:
      strcpy(errtext, "share mem drvr not initialized");
      break;
    case 155:
      strcpy(errtext, "IPC system error (shared mem)");
      break;
    case 156:
      strcpy(errtext, "no memory (shared mem drvr)");
      break;
    case 157:
      strcpy(errtext, "share mem resource deadlock");
      break;
    case 158:
      strcpy(errtext, "lock file open/create failed");
      break;
    case 159:
      strcpy(errtext, "can't resize share mem block");
      break;
    case 201:
      strcpy(errtext, "header already has keywords");
      break;
    case 202:
      strcpy(errtext, "keyword not found in header");
      break;
    case 203:
      strcpy(errtext, "keyword number out of bounds");
      break;
    case 204:
      strcpy(errtext, "keyword value is undefined");
      break;
    case 205:
      strcpy(errtext, "string missing closing quote");
      break;
    case 206:
      strcpy(errtext, "error in indexed keyword name");
      break;
    case 207:
      strcpy(errtext, "illegal character in keyword");
      break;
    case 208:
      strcpy(errtext, "required keywords out of order");
      break;
    case 209:
      strcpy(errtext, "keyword value not positive int");
      break;
    case 210:
      strcpy(errtext, "END keyword not found");
      break;
    case 211:
      strcpy(errtext, "illegal BITPIX keyword value");
      break;
    case 212:
      strcpy(errtext, "illegal NAXIS keyword value");
      break;
    case 213:
      strcpy(errtext, "illegal NAXISn keyword value");
      break;
    case 214:
      strcpy(errtext, "illegal PCOUNT keyword value");
      break;
    case 215:
      strcpy(errtext, "illegal GCOUNT keyword value");
      break;
    case 216:
      strcpy(errtext, "illegal TFIELDS keyword value");
      break;
    case 217:
      strcpy(errtext, "negative table row size");
      break;
    case 218:
      strcpy(errtext, "negative number of rows");
      break;
    case 219:
      strcpy(errtext, "named column not found");
      break;
    case 220:
      strcpy(errtext, "illegal SIMPLE keyword value");
      break;
    case 221:
      strcpy(errtext, "first keyword not SIMPLE");
      break;
    case 222:
      strcpy(errtext, "second keyword not BITPIX");
      break;
    case 223:
      strcpy(errtext, "third keyword not NAXIS");
      break;
    case 224:
      strcpy(errtext, "missing NAXISn keywords");
      break;
    case 225:
      strcpy(errtext, "first keyword not XTENSION");
      break;
    case 226:
      strcpy(errtext, "CHDU not an ASCII table");
      break;
    case 227:
      strcpy(errtext, "CHDU not a binary table");
      break;
    case 228:
      strcpy(errtext, "PCOUNT keyword not found");
      break;
    case 229:
      strcpy(errtext, "GCOUNT keyword not found");
      break;
    case 230:
      strcpy(errtext, "TFIELDS keyword not found");
      break;
    case 231:
      strcpy(errtext, "missing TBCOLn keyword");
      break;
    case 232:
      strcpy(errtext, "missing TFORMn keyword");
      break;
    case 233:
      strcpy(errtext, "CHDU not an IMAGE extension");
      break;
    case 234:
      strcpy(errtext, "illegal TBCOLn keyword value");
      break;
    case 235:
      strcpy(errtext, "CHDU not a table extension");
      break;
    case 236:
      strcpy(errtext, "column exceeds width of table");
      break;
    case 237:
      strcpy(errtext, "more than 1 matching col. name");
      break;
    case 241:
      strcpy(errtext, "row width not = field widths");
      break;
    case 251:
      strcpy(errtext, "unknown FITS extension type");
      break;
    case 252:
      strcpy(errtext, "1st key not SIMPLE or XTENSION");
      break;
    case 253:
      strcpy(errtext, "END keyword is not blank");
      break;
    case 254:
      strcpy(errtext, "Header fill area not blank");
      break;
    case 255:
      strcpy(errtext, "Data fill area invalid");
      break;
    case 261:
      strcpy(errtext, "illegal TFORM format code");
      break;
    case 262:
      strcpy(errtext, "unknown TFORM datatype code");
      break;
    case 263:
      strcpy(errtext, "illegal TDIMn keyword value");
      break;
    case 264:
      strcpy(errtext, "invalid BINTABLE heap pointer");
      break;
    default:
      strcpy(errtext, "unknown error status");
      break;
    }
  } else if (status < 600) {
    switch (status) {
    case 301:
      strcpy(errtext, "illegal HDU number");
      break;
    case 302:
      strcpy(errtext, "column number < 1 or > tfields");
      break;
    case 304:
      strcpy(errtext, "negative byte address");
      break;
    case 306:
      strcpy(errtext, "negative number of elements");
      break;
    case 307:
      strcpy(errtext, "bad first row number");
      break;
    case 308:
      strcpy(errtext, "bad first element number");
      break;
    case 309:
      strcpy(errtext, "not an ASCII (A) column");
      break;
    case 310:
      strcpy(errtext, "not a logical (L) column");
      break;
    case 311:
      strcpy(errtext, "bad ASCII table datatype");
      break;
    case 312:
      strcpy(errtext, "bad binary table datatype");
      break;
    case 314:
      strcpy(errtext, "null value not defined");
      break;
    case 317:
      strcpy(errtext, "not a variable length column");
      break;
    case 320:
      strcpy(errtext, "illegal number of dimensions");
      break;
    case 321:
      strcpy(errtext, "1st pixel no. > last pixel no.");
      break;
    case 322:
      strcpy(errtext, "BSCALE or TSCALn = 0.");
      break;
    case 323:
      strcpy(errtext, "illegal axis length < 1");
      break;
    case 340:
      strcpy(errtext, "not group table");
      break;
    case 341:
      strcpy(errtext, "HDU already member of group");
      break;
    case 342:
      strcpy(errtext, "group member not found");
      break;
    case 343:
      strcpy(errtext, "group not found");
      break;
    case 344:
      strcpy(errtext, "bad group id");
      break;
    case 345:
      strcpy(errtext, "too many HDUs tracked");
      break;
    case 346:
      strcpy(errtext, "HDU alread tracked");
      break;
    case 347:
      strcpy(errtext, "bad Grouping option");
      break;
    case 348:
      strcpy(errtext, "identical pointers (groups)");
      break;
    case 360:
      strcpy(errtext, "malloc failed in parser");
      break;
    case 361:
      strcpy(errtext, "file read error in parser");
      break;
    case 362:
      strcpy(errtext, "null pointer arg (parser)");
      break;
    case 363:
      strcpy(errtext, "empty line (parser)");
      break;
    case 364:
      strcpy(errtext, "cannot unread > 1 line");
      break;
    case 365:
      strcpy(errtext, "parser too deeply nested");
      break;
    case 366:
      strcpy(errtext, "file open failed (parser)");
      break;
    case 367:
      strcpy(errtext, "hit EOF (parser)");
      break;
    case 368:
      strcpy(errtext, "bad argument (parser)");
      break;
    case 369:
      strcpy(errtext, "unexpected token (parser)");
      break;
    case 401:
      strcpy(errtext, "bad int to string conversion");
      break;
    case 402:
      strcpy(errtext, "bad float to string conversion");
      break;
    case 403:
      strcpy(errtext, "keyword value not integer");
      break;
    case 404:
      strcpy(errtext, "keyword value not logical");
      break;
    case 405:
      strcpy(errtext, "keyword value not floating pt");
      break;
    case 406:
      strcpy(errtext, "keyword value not double");
      break;
    case 407:
      strcpy(errtext, "bad string to int conversion");
      break;
    case 408:
      strcpy(errtext, "bad string to float conversion");
      break;
    case 409:
      strcpy(errtext, "bad string to double convert");
      break;
    case 410:
      strcpy(errtext, "illegal datatype code value");
      break;
    case 411:
      strcpy(errtext, "illegal no. of decimals");
      break;
    case 412:
      strcpy(errtext, "datatype conversion overflow");
      break;
    case 413:
      strcpy(errtext, "error compressing image");
      break;
    case 414:
      strcpy(errtext, "error uncompressing image");
      break;
    case 420:
      strcpy(errtext, "bad date or time conversion");
      break;
    case 431:
      strcpy(errtext, "syntax error in expression");
      break;
    case 432:
      strcpy(errtext, "expression result wrong type");
      break;
    case 433:
      strcpy(errtext, "vector result too large");
      break;
    case 434:
      strcpy(errtext, "missing output column");
      break;
    case 435:
      strcpy(errtext, "bad data in parsed column");
      break;
    case 436:
      strcpy(errtext, "output extension of wrong type");
      break;
    case 501:
      strcpy(errtext, "WCS angle too large");
      break;
    case 502:
      strcpy(errtext, "bad WCS coordinate");
      break;
    case 503:
      strcpy(errtext, "error in WCS calculation");
      break;
    case 504:
      strcpy(errtext, "bad WCS projection type");
      break;
    case 505:
      strcpy(errtext, "WCS keywords not found");
      break;
    default:
      strcpy(errtext, "unknown error status");
      break;
    }
  } else {
    strcpy(errtext, "unknown error status");
  }
  return;
}
```