user: What would the C source look like for the assembly code provided here:

```asm
<gs1_lint>:
  endbr64
  sub    $0x8,%rsp
  mov    %edi,%eax
  mov    %rsi,%r10
  mov    %edx,%edi
  mov    %rcx,%rdx
  mov    %r8,%rsi
  mov    %r9,%r8
  movl   $0x2,(%rcx)
  cmp    $0x63,%eax
  jg     L26
  test   %eax,%eax
  je     L668
  lea    -0x1(%rax),%ecx
  cmp    $0x1,%ecx
  jbe    L986
  lea    -0xa(%rax),%ecx
  cmp    $0x50,%ecx
  ja     L579
  mov    %ecx,%ecx
  lea    D38(%rip),%r9
  movslq (%r9,%rcx,4),%rcx
  add    %r9,%rcx
  notrack jmp *%rcx
L668:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  call   <n18_csum_key@plt>
  jmp    L81
L986:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n14_csum_key@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__20@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n6_yymmd0@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n2@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n1__8@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__30@plt>
  jmp    L81
L579:
  cmp    $0x5a,%eax
  jle    L632
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__90@plt>
  jmp    L81
L26:
  cmp    $0x12b,%eax
  jg     L1291
  sub    $0xeb,%eax
  cmp    $0x14,%eax
  ja     L632
  mov    %eax,%eax
  lea    D52(%rip),%rcx
  movslq (%rcx,%rax,4),%rax
  add    %rcx,%rax
  notrack jmp *%rax
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__28@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__30@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n1__6@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__20@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n13_csum_key_x0__17@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n13_csum_key_n0__12@plt>
  jmp    L81
L1291:
  cmp    $0x1f3,%eax
  jg     L1341
  cmp    $0x1a5,%eax
  jg     L830
  cmp    $0x18f,%eax
  jle    L632
  sub    $0x190,%eax
  cmp    $0x15,%eax
  ja     L632
  mov    %eax,%eax
  lea    D35(%rip),%rcx
  movslq (%rcx,%rax,4),%rax
  add    %rcx,%rax
  notrack jmp *%rax
L1583:
  cmp    $0x5,%ecx
  jne    L632
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__3@plt>
  jmp    L81
L830:
  lea    -0x1a6(%rax),%ecx
  cmp    $0x5,%ecx
  ja     L632
  mov    $0x1,%r9d
  shl    %cl,%r9
  test   $0x15,%r9b
  jne    L1105
  test   $0xa,%r9b
  je     L1583
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n3__15_iso3166list@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__30@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__30_key@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n17_csum_key@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n13_csum_key@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__20@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n3_iso3166_x1__9@plt>
  jmp    L81
L1105:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n3_iso3166@plt>
  jmp    L81
L1341:
  cmp    $0x31f,%eax
  jg     L1120
  sub    $0x2c6,%eax
  cmp    $0x4,%eax
  jbe    L214
L632:
  movl   $0x1,(%rdx)
  mov    $0x0,%eax
L81:
  add    $0x8,%rsp
  ret
L214:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__20@plt>
  jmp    L81
L1120:
  cmp    $0xc7f,%eax
  jg     L924
  lea    -0xc1c(%rax),%ecx
  cmp    $0x5,%ecx
  jbe    L955
  lea    -0xc26(%rax),%ecx
  cmp    $0x5,%ecx
  jbe    L955
  sub    $0xc30,%eax
  cmp    $0x2d,%eax
  ja     L632
  movabs $0x3f0fc3f0fc3f,%rcx
  bt     %rax,%rcx
  jae    L632
L955:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n6@plt>
  jmp    L81
L924:
  cmp    $0xce3,%eax
  jg     L745
  lea    -0xc8a(%rax),%ecx
  cmp    $0x5,%ecx
  jbe    L912
  cmp    $0xc85,%eax
  jle    L912
  cmp    $0xcdf,%eax
  jg     L632
  cmp    $0xca7,%eax
  jg     L378
  cmp    $0xc99,%eax
  jg     L669
  cmp    $0xc93,%eax
  jle    L632
  jmp    L912
L378:
  sub    $0xca8,%eax
  movabs $0xfc3f0fc3f0fc3f,%rcx
  bt     %rax,%rcx
  jae    L632
L912:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n6@plt>
  jmp    L81
L669:
  sub    $0xc9e,%eax
  cmp    $0x5,%eax
  ja     L632
  jmp    L912
L745:
  cmp    $0xd47,%eax
  jg     L492
  lea    -0xcee(%rax),%ecx
  cmp    $0x5,%ecx
  jbe    L382
  cmp    $0xce9,%eax
  jle    L382
  sub    $0xcf8,%eax
  cmp    $0x37,%eax
  ja     L632
  movabs $0xfc3f0fc3f0fc3f,%rcx
  bt     %rax,%rcx
  jae    L632
L382:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n6@plt>
  jmp    L81
L492:
  cmp    $0xdab,%eax
  jg     L717
  lea    -0xd52(%rax),%ecx
  cmp    $0x5,%ecx
  jbe    L114
  cmp    $0xd4d,%eax
  jle    L114
  cmp    $0xda7,%eax
  jg     L632
  cmp    $0xd6f,%eax
  jg     L1425
  cmp    $0xd61,%eax
  jg     L162
  cmp    $0xd5b,%eax
  jle    L632
  jmp    L114
L1425:
  sub    $0xd70,%eax
  movabs $0xfc3f0fc3f0fc3f,%rcx
  bt     %rax,%rcx
  jae    L632
L114:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n6@plt>
  jmp    L81
L162:
  sub    $0xd66,%eax
  cmp    $0x5,%eax
  ja     L632
  jmp    L114
L717:
  cmp    $0xe0f,%eax
  jg     L791
  lea    -0xdb6(%rax),%ecx
  cmp    $0x5,%ecx
  jbe    L1623
  cmp    $0xdb1,%eax
  jle    L1623
  sub    $0xdc0,%eax
  cmp    $0x37,%eax
  ja     L632
  movabs $0xfc3f0fc3f0fc3f,%rcx
  bt     %rax,%rcx
  jae    L632
L1623:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n6@plt>
  jmp    L81
L791:
  cmp    $0xe73,%eax
  jg     L735
  lea    -0xe1a(%rax),%ecx
  cmp    $0x5,%ecx
  jbe    L1407
  cmp    $0xe15,%eax
  jle    L1407
  cmp    $0xe6f,%eax
  jg     L632
  cmp    $0xe37,%eax
  jg     L1478
  cmp    $0xe29,%eax
  jg     L1046
  cmp    $0xe23,%eax
  jle    L632
  jmp    L1407
L1478:
  sub    $0xe38,%eax
  movabs $0xfc3f0fc3f0fc3f,%r9
  mov    %eax,%ecx
  shr    %cl,%r9
  test   $0x1,%r9b
  je     L632
L1407:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n6@plt>
  jmp    L81
L1046:
  sub    $0xe2e,%eax
  cmp    $0x5,%eax
  ja     L632
  jmp    L1407
L735:
  cmp    $0xf9f,%eax
  jg     L96
  lea    -0xf3c(%rax),%ecx
  cmp    $0x9,%ecx
  jbe    L1497
  lea    -0xf50(%rax),%ecx
  cmp    $0x9,%ecx
  jbe    L1497
  lea    -0xf46(%rax),%ecx
  cmp    $0x9,%ecx
  jbe    L595
  lea    -0xf5a(%rax),%ecx
  cmp    $0x9,%ecx
  jbe    L595
  lea    -0xf64(%rax),%ecx
  cmp    $0x3,%ecx
  jbe    L613
  sub    $0xf6e,%eax
  cmp    $0x5,%eax
  ja     L632
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n6@plt>
  jmp    L81
L1497:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n1__15@plt>
  jmp    L81
L595:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n3_iso4217_n1__15@plt>
  jmp    L81
L613:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n4@plt>
  jmp    L81
L96:
  cmp    $0x112f,%eax
  jg     L1258
  lea    -0x10cc(%rax),%ecx
  cmp    $0x1,%ecx
  jbe    L325
  cmp    $0x10d6,%eax
  je     L325
  sub    $0x10ce,%eax
  cmp    $0x18,%eax
  ja     L632
  mov    %eax,%eax
  lea    D13(%rip),%rcx
  movslq (%rcx,%rax,4),%rax
  add    %rcx,%rax
  notrack jmp *%rax
L325:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__35_pcenc@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__70_pcenc@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x2_iso3166alpha2@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__30@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__20@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n1_yesno@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n6_yymmd0_n4_hhmm@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n6_yymmdd@plt>
  jmp    L81
L1258:
  cmp    $0x1bbb,%eax
  jg     L1243
  lea    -0x1b59(%rax),%ecx
  cmp    $0x9,%ecx
  ja     L635
  mov    %ecx,%ecx
  lea    D31(%rip),%r9
  movslq (%r9,%rcx,4),%rax
  add    %r9,%rax
  notrack jmp *%rax
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n13@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__30@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n6_yymmdd_n4_hhmm@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n1__4@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__12@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n6_yymmdd@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n6_yymmdd_n0__6_yymmdd@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__3@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__10@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__2@plt>
  jmp    L81
L635:
  lea    -0x1b6c(%rax),%ecx
  cmp    $0x2,%ecx
  jbe    L1680
  cmp    $0x1b6f,%eax
  je     L295
  lea    -0x1b76(%rax),%ecx
  cmp    $0x9,%ecx
  jbe    L1435
  cmp    $0x1b80,%eax
  jne    L632
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n1_x1_x1_x1_importeridx@plt>
  jmp    L81
L1680:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__20@plt>
  jmp    L81
L295:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__30_key@plt>
  jmp    L81
L1435:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n3_iso3166999_x1__27@plt>
  jmp    L81
L1243:
  cmp    $0x1c83,%eax
  jg     L365
  lea    -0x1c3e(%rax),%ecx
  cmp    $0x9,%ecx
  jbe    L401
  cmp    $0x1c48,%eax
  jne    L632
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__20@plt>
  jmp    L81
L401:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x2_x1__28@plt>
  jmp    L81
L365:
  cmp    $0x1fa3,%eax
  jg     L541
  sub    $0x1f41,%eax
  cmp    $0x19,%eax
  ja     L632
  mov    %eax,%eax
  lea    D49(%rip),%rcx
  movslq (%rcx,%rax,4),%rax
  add    %rcx,%rax
  notrack jmp *%rax
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n4_nonzero_n5_nonzero_n3_nonzero_n1_winding_n1@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__20@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n1_zero_n13_csum_key_x0__16@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__30_key@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n6@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n14_csum_n4_pieceoftotal@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__34_iban@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n8_yymmddhh_n0__4_mmoptss@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__50@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <c1__30_key@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n1__12_nozeroprefix@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__25_csumalpha_key@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n18_csum@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n1__10@plt>
  jmp    L81
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__25@plt>
  jmp    L81
L541:
  cmp    $0x2007,%eax
  jg     L936
  cmp    $0x1fae,%eax
  je     L260
  cmp    $0x1faf,%eax
  je     L54
  cmp    $0x1fb0,%eax
  jne    L632
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__70_couponposoffer@plt>
  jmp    L81
L260:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__70_couponcode@plt>
  jmp    L81
L54:
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <n4@plt>
  jmp    L81
L936:
  cmp    $0x2008,%eax
  jne    L632
  mov    %rsi,%rcx
  mov    %edi,%esi
  mov    %r10,%rdi
  mov    $0x0,%eax
  call   <x1__70@plt>
  jmp    L81
```

assistant: ```c
int gs1_lint(const int ai, const unsigned char *data, const int data_len, int *p_err_no, int *p_err_posn, char err_msg[50]) {
  *p_err_no = 2;
  if (ai < 100) {
    if (ai == 0) {
      return n18_csum_key(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 1 || ai == 2) {
      return n14_csum_key(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 10 || ai == 21 || ai == 22) {
      return x1__20(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if ((ai >= 11 && ai <= 13) || (ai >= 15 && ai <= 17)) {
      return n6_yymmd0(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 20) {
      return n2(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 30 || ai == 37) {
      return n1__8(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 90) {
      return x1__30(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai >= 91) {
      return x1__90(data, data_len, p_err_no, p_err_posn, err_msg);
    }
  } else if (ai < 300) {
    if (ai == 235) {
      return x1__28(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 240 || ai == 241 || ai == 250 || ai == 251) {
      return x1__30(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 242) {
      return n1__6(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 243 || ai == 254) {
      return x1__20(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 253) {
      return n13_csum_key_x0__17(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 255) {
      return n13_csum_key_n0__12(data, data_len, p_err_no, p_err_posn, err_msg);
    }
  } else if (ai < 500) {
    if (ai == 400 || ai == 403) {
      return x1__30(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 401) {
      return x1__30_key(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 402) {
      return n17_csum_key(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai >= 410 && ai <= 417) {
      return n13_csum_key(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 420) {
      return x1__20(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 421) {
      return n3_iso3166_x1__9(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 422 || ai == 424 || ai == 426) {
      return n3_iso3166(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 423 || ai == 425) {
      return n3__15_iso3166list(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 427) {
      return x1__3(data, data_len, p_err_no, p_err_posn, err_msg);
    }
  } else if (ai < 800) {
    if (ai >= 710 && ai <= 714) {
      return x1__20(data, data_len, p_err_no, p_err_posn, err_msg);
    }
  } else if (ai < 3200) {
    if ((ai >= 3100 && ai <= 3105) || (ai >= 3110 && ai <= 3115) || (ai >= 3120 && ai <= 3125) || (ai >= 3130 && ai <= 3135) || (ai >= 3140 && ai <= 3145) || (ai >= 3150 && ai <= 3155) || (ai >= 3160 && ai <= 3165)) {
      return n6(data, data_len, p_err_no, p_err_posn, err_msg);
    }
  } else if (ai < 3300) {
    if (ai <= 3205 || (ai >= 3210 && ai <= 3215) || (ai >= 3220 && ai <= 3225) || (ai >= 3230 && ai <= 3235) || (ai >= 3240 && ai <= 3245) || (ai >= 3250 && ai <= 3255) || (ai >= 3260 && ai <= 3265) || (ai >= 3270 && ai <= 3275) || (ai >= 3280 && ai <= 3285) || (ai >= 3290 && ai <= 3295)) {
      return n6(data, data_len, p_err_no, p_err_posn, err_msg);
    }
  } else if (ai < 3400) {
    if (ai <= 3305 || (ai >= 3310 && ai <= 3315) || (ai >= 3320 && ai <= 3325) || (ai >= 3330 && ai <= 3335) || (ai >= 3340 && ai <= 3345) || (ai >= 3350 && ai <= 3355) || (ai >= 3360 && ai <= 3365) || (ai >= 3370 && ai <= 3375)) {
      return n6(data, data_len, p_err_no, p_err_posn, err_msg);
    }
  } else if (ai < 3500) {
    if (ai <= 3405 || (ai >= 3410 && ai <= 3415) || (ai >= 3420 && ai <= 3425) || (ai >= 3430 && ai <= 3435) || (ai >= 3440 && ai <= 3445) || (ai >= 3450 && ai <= 3455) || (ai >= 3460 && ai <= 3465) || (ai >= 3470 && ai <= 3475) || (ai >= 3480 && ai <= 3485) || (ai >= 3490 && ai <= 3495)) {
      return n6(data, data_len, p_err_no, p_err_posn, err_msg);
    }
  } else if (ai < 3600) {
    if (ai <= 3505 || (ai >= 3510 && ai <= 3515) || (ai >= 3520 && ai <= 3525) || (ai >= 3530 && ai <= 3535) || (ai >= 3540 && ai <= 3545) || (ai >= 3550 && ai <= 3555) || (ai >= 3560 && ai <= 3565) || (ai >= 3570 && ai <= 3575)) {
      return n6(data, data_len, p_err_no, p_err_posn, err_msg);
    }
  } else if (ai < 3700) {
    if (ai <= 3605 || (ai >= 3610 && ai <= 3615) || (ai >= 3620 && ai <= 3625) || (ai >= 3630 && ai <= 3635) || (ai >= 3640 && ai <= 3645) || (ai >= 3650 && ai <= 3655) || (ai >= 3660 && ai <= 3665) || (ai >= 3670 && ai <= 3675) || (ai >= 3680 && ai <= 3685) || (ai >= 3690 && ai <= 3695)) {
      return n6(data, data_len, p_err_no, p_err_posn, err_msg);
    }
  } else if (ai < 4000) {
    if ((ai >= 3900 && ai <= 3909) || (ai >= 3920 && ai <= 3929)) {
      return n1__15(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if ((ai >= 3910 && ai <= 3919) || (ai >= 3930 && ai <= 3939)) {
      return n3_iso4217_n1__15(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai >= 3940 && ai <= 3943) {
      return n4(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai >= 3950 && ai <= 3955) {
      return n6(data, data_len, p_err_no, p_err_posn, err_msg);
    }
  } else if (ai < 4400) {
    if (ai == 4300 || ai == 4301 || ai == 4310 || ai == 4311 || ai == 4320) {
      return x1__35_pcenc(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if ((ai >= 4302 && ai <= 4306) || (ai >= 4312 && ai <= 4316)) {
      return x1__70_pcenc(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 4307 || ai == 4317) {
      return x2_iso3166alpha2(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 4308 || ai == 4319) {
      return x1__30(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 4318) {
      return x1__20(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai >= 4321 && ai <= 4323) {
      return n1_yesno(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 4324 || ai == 4325) {
      return n6_yymmd0_n4_hhmm(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 4326) {
      return n6_yymmdd(data, data_len, p_err_no, p_err_posn, err_msg);
    }
  } else if (ai < 7100) {
    if (ai == 7001) {
      return n13(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 7002) {
      return x1__30(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 7003) {
      return n6_yymmdd_n4_hhmm(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 7004) {
      return n1__4(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 7005) {
      return x1__12(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 7006) {
      return n6_yymmdd(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 7007) {
      return n6_yymmdd_n0__6_yymmdd(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 7008) {
      return x1__3(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 7009) {
      return x1__10(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 7010) {
      return x1__2(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai >= 7020 && ai <= 7022) {
      return x1__20(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 7023) {
      return x1__30_key(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai >= 7030 && ai <= 7039) {
      return n3_iso3166999_x1__27(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 7040) {
      return n1_x1_x1_x1_importeridx(data, data_len, p_err_no, p_err_posn, err_msg);
    }
  } else if (ai < 7300) {
    if (ai >= 7230 && ai <= 7239) {
      return x2_x1__28(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 7240) {
      return x1__20(data, data_len, p_err_no, p_err_posn, err_msg);
    }
  } else if (ai < 8100) {
    if (ai == 8001) {
      return n4_nonzero_n5_nonzero_n3_nonzero_n1_winding_n1(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 8002 || ai == 8012) {
      return x1__20(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 8003) {
      return n1_zero_n13_csum_key_x0__16(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 8004) {
      return x1__30_key(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 8005) {
      return n6(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 8006 || ai == 8026) {
      return n14_csum_n4_pieceoftotal(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 8007) {
      return x1__34_iban(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 8008) {
      return n8_yymmddhh_n0__4_mmoptss(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 8009) {
      return x1__50(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 8010) {
      return c1__30_key(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 8011) {
      return n1__12_nozeroprefix(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 8013) {
      return x1__25_csumalpha_key(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 8017 || ai == 8018) {
      return n18_csum(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 8019) {
      return n1__10(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 8020) {
      return x1__25(data, data_len, p_err_no, p_err_posn, err_msg);
    }
  } else if (ai < 8200) {
    if (ai == 8110) {
      return x1__70_couponcode(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 8111) {
      return n4(data, data_len, p_err_no, p_err_posn, err_msg);
    }
    if (ai == 8112) {
      return x1__70_couponposoffer(data, data_len, p_err_no, p_err_posn, err_msg);
    }
  } else if (ai < 8300) {
    if (ai == 8200) {
      return x1__70(data, data_len, p_err_no, p_err_posn, err_msg);
    }
  }
  *p_err_no = 1;
  return 0;
}
```