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

```asm
<fn_cl_33_33_36_36_38_46_48_57_59_59_61_61_65_91_95_95_97_122_126_126_160_55295_63744_64975_65008_65519_65533_65533_65536_131069_131072_196605_196608_262141_262144_327677_327680_393213_393216_458749_458752_524285_524288_589821_589824_655357_655360_720893_720896_786429_786432_851965_851968_917501_917504_983037>:
  endbr64
  sub    $0x18,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  movl   $0x0,0x4(%rsp)
  lea    0x4(%rsp),%rsi
  call   <next_utf8@plt>
  cmp    $0x21,%eax
  je     L325
  mov    %eax,%edx
  cmp    $0x1fffd,%eax
  ja     L253
  cmp    $0xffff,%eax
  ja     L403
  cmp    $0x7e,%eax
  ja     L271
  mov    $0xffffffff,%eax
  cmp    $0x23,%edx
  jbe    L225
  sub    $0x24,%edx
  cmp    $0x5a,%edx
  ja     L133
  mov    %edx,%edx
  lea    D0(%rip),%rcx
  movslq (%rcx,%rdx,4),%rax
  add    %rcx,%rax
  notrack jmp *%rax
L325:
  mov    0x4(%rsp),%eax
  jmp    L225
L271:
  cmp    $0xffef,%eax
  ja     L33
  cmp    $0xfdef,%eax
  ja     L97
  cmp    $0xd7ff,%eax
  jbe    L289
  sub    $0xf900,%edx
  cmp    $0x4d0,%edx
  mov    $0xffffffff,%eax
  cmovb  0x4(%rsp),%eax
  jmp    L225
L289:
  cmp    $0xa0,%eax
  mov    $0xffffffff,%eax
  cmovae 0x4(%rsp),%eax
L225:
  mov    0x8(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L135
  add    $0x18,%rsp
  ret
L33:
  cmp    $0xfffd,%eax
  mov    $0xffffffff,%eax
  cmove  0x4(%rsp),%eax
  jmp    L225
L253:
  cmp    $0x8fffd,%eax
  ja     L361
  cmp    $0x7ffff,%eax
  ja     L129
  cmp    $0x5fffd,%eax
  ja     L39
  cmp    $0x4ffff,%eax
  ja     L203
  cmp    $0x3fffd,%eax
  ja     L424
  cmp    $0x2ffff,%eax
  ja     L372
  sub    $0x20000,%edx
  cmp    $0xfffe,%edx
  mov    $0xffffffff,%eax
  cmovb  0x4(%rsp),%eax
  jmp    L225
L424:
  sub    $0x40000,%edx
  cmp    $0xfffe,%edx
  mov    $0xffffffff,%eax
  cmovb  0x4(%rsp),%eax
  jmp    L225
L39:
  cmp    $0x6fffd,%eax
  jbe    L405
  sub    $0x70000,%edx
  cmp    $0xfffe,%edx
  mov    $0xffffffff,%eax
  cmovb  0x4(%rsp),%eax
  jmp    L225
L405:
  cmp    $0x60000,%eax
  mov    $0xffffffff,%eax
  cmovae 0x4(%rsp),%eax
  jmp    L225
L361:
  cmp    $0xcfffd,%eax
  ja     L20
  cmp    $0xbffff,%eax
  ja     L365
  cmp    $0xafffd,%eax
  ja     L43
  cmp    $0x9ffff,%eax
  ja     L404
  sub    $0x90000,%edx
  cmp    $0xfffe,%edx
  mov    $0xffffffff,%eax
  cmovb  0x4(%rsp),%eax
  jmp    L225
L43:
  sub    $0xb0000,%edx
  cmp    $0xfffe,%edx
  mov    $0xffffffff,%eax
  cmovb  0x4(%rsp),%eax
  jmp    L225
L20:
  cmp    $0xdfffd,%eax
  jbe    L130
  sub    $0xe0000,%edx
  cmp    $0xfffe,%edx
  mov    $0xffffffff,%eax
  cmovb  0x4(%rsp),%eax
  jmp    L225
L130:
  cmp    $0xd0000,%eax
  mov    $0xffffffff,%eax
  cmovae 0x4(%rsp),%eax
  jmp    L225
  mov    0x4(%rsp),%eax
  jmp    L225
  mov    0x4(%rsp),%eax
  jmp    L225
  mov    0x4(%rsp),%eax
  jmp    L225
  mov    0x4(%rsp),%eax
  jmp    L225
  mov    0x4(%rsp),%eax
  jmp    L225
  mov    0x4(%rsp),%eax
  jmp    L225
  mov    0x4(%rsp),%eax
  jmp    L225
  mov    0x4(%rsp),%eax
  jmp    L225
  mov    0x4(%rsp),%eax
  jmp    L225
L97:
  mov    0x4(%rsp),%eax
  jmp    L225
L403:
  mov    0x4(%rsp),%eax
  jmp    L225
L372:
  mov    0x4(%rsp),%eax
  jmp    L225
L203:
  mov    0x4(%rsp),%eax
  jmp    L225
L129:
  mov    0x4(%rsp),%eax
  jmp    L225
L404:
  mov    0x4(%rsp),%eax
  jmp    L225
L365:
  mov    0x4(%rsp),%eax
  jmp    L225
L133:
  mov    $0xffffffff,%eax
  jmp    L225
L135:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
int fn_cl_33_33_36_36_38_46_48_57_59_59_61_61_65_91_95_95_97_122_126_126_160_55295_63744_64975_65008_65519_65533_65533_65536_131069_131072_196605_196608_262141_262144_327677_327680_393213_393216_458749_458752_524285_524288_589821_589824_655357_655360_720893_720896_786429_786432_851965_851968_917501_917504_983037(const char *text) {
  int pos = 0;
  unsigned int c = next_utf8(text, &pos);
  if (c >= 33 && c <= 33)
    return pos;
  if (c >= 36 && c <= 36)
    return pos;
  if (c >= 38 && c <= 46)
    return pos;
  if (c >= 48 && c <= 57)
    return pos;
  if (c >= 59 && c <= 59)
    return pos;
  if (c >= 61 && c <= 61)
    return pos;
  if (c >= 65 && c <= 91)
    return pos;
  if (c >= 95 && c <= 95)
    return pos;
  if (c >= 97 && c <= 122)
    return pos;
  if (c >= 126 && c <= 126)
    return pos;
  if (c >= 160 && c <= 55295)
    return pos;
  if (c >= 63744 && c <= 64975)
    return pos;
  if (c >= 65008 && c <= 65519)
    return pos;
  if (c >= 65533 && c <= 65533)
    return pos;
  if (c >= 65536 && c <= 131069)
    return pos;
  if (c >= 131072 && c <= 196605)
    return pos;
  if (c >= 196608 && c <= 262141)
    return pos;
  if (c >= 262144 && c <= 327677)
    return pos;
  if (c >= 327680 && c <= 393213)
    return pos;
  if (c >= 393216 && c <= 458749)
    return pos;
  if (c >= 458752 && c <= 524285)
    return pos;
  if (c >= 524288 && c <= 589821)
    return pos;
  if (c >= 589824 && c <= 655357)
    return pos;
  if (c >= 655360 && c <= 720893)
    return pos;
  if (c >= 720896 && c <= 786429)
    return pos;
  if (c >= 786432 && c <= 851965)
    return pos;
  if (c >= 851968 && c <= 917501)
    return pos;
  if (c >= 917504 && c <= 983037)
    return pos;
  return -1;
}
```