user: 下面的汇编指令对应的C源代码是什么:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x78,%rsp
  mov    %edi,-0x74(%rbp)
  mov    %rsi,-0x80(%rbp)
  movl   $0x0,-0x70(%rbp)
  lea    D342(%rip),%rax
  mov    %rax,%rdi
  call   <wctype@plt>
  mov    %rax,-0x68(%rbp)
  lea    D94(%rip),%rax
  mov    %rax,%rdi
  call   <wctype@plt>
  mov    %rax,-0x60(%rbp)
  lea    D391(%rip),%rax
  mov    %rax,%rdi
  call   <wctype@plt>
  mov    %rax,-0x58(%rbp)
  lea    D505(%rip),%rax
  mov    %rax,%rdi
  call   <wctype@plt>
  mov    %rax,-0x50(%rbp)
  lea    D420(%rip),%rax
  mov    %rax,%rdi
  call   <wctype@plt>
  mov    %rax,-0x48(%rbp)
  lea    D243(%rip),%rax
  mov    %rax,%rdi
  call   <wctype@plt>
  mov    %rax,-0x40(%rbp)
  lea    D530(%rip),%rax
  mov    %rax,%rdi
  call   <wctype@plt>
  mov    %rax,-0x38(%rbp)
  lea    D299(%rip),%rax
  mov    %rax,%rdi
  call   <wctype@plt>
  mov    %rax,-0x30(%rbp)
  lea    D206(%rip),%rax
  mov    %rax,%rdi
  call   <wctype@plt>
  mov    %rax,-0x28(%rbp)
  lea    D241(%rip),%rax
  mov    %rax,%rdi
  call   <wctype@plt>
  mov    %rax,-0x20(%rbp)
  lea    D235(%rip),%rax
  mov    %rax,%rdi
  call   <wctype@plt>
  mov    %rax,-0x18(%rbp)
  lea    D292(%rip),%rax
  mov    %rax,%rdi
  call   <wctype@plt>
  test   %rax,%rax
  je     L201
  lea    D229(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x1,-0x70(%rbp)
L201:
  movl   $0x0,-0x6c(%rbp)
  jmp    L225
L15:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <isalnum@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x68(%rbp),%rdx
  mov    -0x6c(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <iswctype@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L254
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D342(%rip),%rax
  mov    %rax,%rsi
  lea    D127(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L254:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <isalnum@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <iswalnum@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L198
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D342(%rip),%rax
  mov    %rax,%rsi
  lea    D407(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L198:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <isalpha@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x60(%rbp),%rdx
  mov    -0x6c(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <iswctype@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L76
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D94(%rip),%rax
  mov    %rax,%rsi
  lea    D127(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L76:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <isalpha@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <iswalpha@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L210
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D94(%rip),%rax
  mov    %rax,%rsi
  lea    D407(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L210:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <iscntrl@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x58(%rbp),%rdx
  mov    -0x6c(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <iswctype@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L37
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D391(%rip),%rax
  mov    %rax,%rsi
  lea    D127(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L37:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <iscntrl@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <iswcntrl@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L87
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D391(%rip),%rax
  mov    %rax,%rsi
  lea    D407(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L87:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <isdigit@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x50(%rbp),%rdx
  mov    -0x6c(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <iswctype@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L183
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D505(%rip),%rax
  mov    %rax,%rsi
  lea    D127(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L183:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <isdigit@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <iswdigit@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L213
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D505(%rip),%rax
  mov    %rax,%rsi
  lea    D407(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L213:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <isgraph@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x48(%rbp),%rdx
  mov    -0x6c(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <iswctype@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L145
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D420(%rip),%rax
  mov    %rax,%rsi
  lea    D127(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L145:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <isgraph@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <iswgraph@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L154
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D420(%rip),%rax
  mov    %rax,%rsi
  lea    D407(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L154:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <islower@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x40(%rbp),%rdx
  mov    -0x6c(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <iswctype@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L185
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D243(%rip),%rax
  mov    %rax,%rsi
  lea    D127(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L185:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <islower@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <iswlower@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L169
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D243(%rip),%rax
  mov    %rax,%rsi
  lea    D407(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L169:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <isprint@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x38(%rbp),%rdx
  mov    -0x6c(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <iswctype@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L100
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D530(%rip),%rax
  mov    %rax,%rsi
  lea    D127(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L100:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <isprint@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <iswprint@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L181
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D530(%rip),%rax
  mov    %rax,%rsi
  lea    D407(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L181:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <ispunct@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x30(%rbp),%rdx
  mov    -0x6c(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <iswctype@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L27
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D299(%rip),%rax
  mov    %rax,%rsi
  lea    D127(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L27:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <ispunct@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <iswpunct@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L121
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D299(%rip),%rax
  mov    %rax,%rsi
  lea    D407(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L121:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <isspace@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x28(%rbp),%rdx
  mov    -0x6c(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <iswctype@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L75
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D206(%rip),%rax
  mov    %rax,%rsi
  lea    D127(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L75:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <isspace@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <iswspace@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L257
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D206(%rip),%rax
  mov    %rax,%rsi
  lea    D407(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L257:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <isupper@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x20(%rbp),%rdx
  mov    -0x6c(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <iswctype@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L26
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D241(%rip),%rax
  mov    %rax,%rsi
  lea    D127(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L26:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <isupper@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <iswupper@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L104
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D241(%rip),%rax
  mov    %rax,%rsi
  lea    D407(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L104:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <isxdigit@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x18(%rbp),%rdx
  mov    -0x6c(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <iswctype@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L108
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D235(%rip),%rax
  mov    %rax,%rsi
  lea    D127(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L108:
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <isxdigit@plt>
  test   %rax,%rax
  sete   %bl
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edi
  call   <iswxdigit@plt>
  test   %rax,%rax
  sete   %al
  xor    %ebx,%eax
  test   %al,%al
  je     L155
  mov    -0x6c(%rbp),%eax
  mov    %eax,%edx
  lea    D235(%rip),%rax
  mov    %rax,%rsi
  lea    D407(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x1,-0x70(%rbp)
L155:
  addl   $0x1,-0x6c(%rbp)
L225:
  cmpl   $0xff,-0x6c(%rbp)
  jle    L15
  cmpl   $0x0,-0x70(%rbp)
  jne    L253
  lea    D549(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L253:
  mov    -0x70(%rbp),%eax
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D342
datatype: string
name: extract_symbolic_data
arguments: data_tag: D94
datatype: string
name: extract_symbolic_data
arguments: data_tag: D391
datatype: string
name: extract_symbolic_data
arguments: data_tag: D505
datatype: string
name: extract_symbolic_data
arguments: data_tag: D420
datatype: string
name: extract_symbolic_data
arguments: data_tag: D243
datatype: string
name: extract_symbolic_data
arguments: data_tag: D530
datatype: string
name: extract_symbolic_data
arguments: data_tag: D299
datatype: string
name: extract_symbolic_data
arguments: data_tag: D206
datatype: string
name: extract_symbolic_data
arguments: data_tag: D241
datatype: string
name: extract_symbolic_data
arguments: data_tag: D235
datatype: string
name: extract_symbolic_data
arguments: data_tag: D292
datatype: string
name: extract_symbolic_data
arguments: data_tag: D229
datatype: string
name: extract_symbolic_data
arguments: data_tag: D127
datatype: string
name: extract_symbolic_data
arguments: data_tag: D407
datatype: string
name: extract_symbolic_data
arguments: data_tag: D549
datatype: string

tool: D342: alnum

tool: D94: alpha

tool: D391: cntrl

tool: D505: digit

tool: D420: graph

tool: D243: lower

tool: D530: print

tool: D299: punct

tool: D206: space

tool: D241: upper

tool: D235: xdigit

tool: D292: does not exist

tool: D229: wctype return value != 0 for non existing property

tool: D127: `iswctype' class `%s' test for character \%o failed


tool: D407: `isw%s' test for character \%o failed


tool: D549: All test successful!

assistant: ```c
int main(int argc, char *argv[]) {
  int result = 0;
  wctype_t bit_alnum = wctype("alnum");
  wctype_t bit_alpha = wctype("alpha");
  wctype_t bit_cntrl = wctype("cntrl");
  wctype_t bit_digit = wctype("digit");
  wctype_t bit_graph = wctype("graph");
  wctype_t bit_lower = wctype("lower");
  wctype_t bit_print = wctype("print");
  wctype_t bit_punct = wctype("punct");
  wctype_t bit_space = wctype("space");
  wctype_t bit_upper = wctype("upper");
  wctype_t bit_xdigit = wctype("xdigit");
  int ch;
  if (wctype("does not exist") != 0) {
    puts("wctype return value != 0 for non existing property");
    result = 1;
  }
  for (ch = 0; ch < 256; ++ch) {
    do {
      if ((isalnum(ch) == 0) != (iswctype(ch, bit_alnum) == 0)) {
        printf("`iswctype' class `%s' test "
               "for character \\%o failed\n",
               "alnum", ch);
        result = 1;
      }
      if ((isalnum(ch) == 0) != (iswalnum(ch) == 0)) {
        printf("`isw%s' test for character \\%o failed\n", "alnum", ch);
        result = 1;
      }
    } while (0);
    do {
      if ((isalpha(ch) == 0) != (iswctype(ch, bit_alpha) == 0)) {
        printf("`iswctype' class `%s' test "
               "for character \\%o failed\n",
               "alpha", ch);
        result = 1;
      }
      if ((isalpha(ch) == 0) != (iswalpha(ch) == 0)) {
        printf("`isw%s' test for character \\%o failed\n", "alpha", ch);
        result = 1;
      }
    } while (0);
    do {
      if ((iscntrl(ch) == 0) != (iswctype(ch, bit_cntrl) == 0)) {
        printf("`iswctype' class `%s' test "
               "for character \\%o failed\n",
               "cntrl", ch);
        result = 1;
      }
      if ((iscntrl(ch) == 0) != (iswcntrl(ch) == 0)) {
        printf("`isw%s' test for character \\%o failed\n", "cntrl", ch);
        result = 1;
      }
    } while (0);
    do {
      if ((isdigit(ch) == 0) != (iswctype(ch, bit_digit) == 0)) {
        printf("`iswctype' class `%s' test "
               "for character \\%o failed\n",
               "digit", ch);
        result = 1;
      }
      if ((isdigit(ch) == 0) != (iswdigit(ch) == 0)) {
        printf("`isw%s' test for character \\%o failed\n", "digit", ch);
        result = 1;
      }
    } while (0);
    do {
      if ((isgraph(ch) == 0) != (iswctype(ch, bit_graph) == 0)) {
        printf("`iswctype' class `%s' test "
               "for character \\%o failed\n",
               "graph", ch);
        result = 1;
      }
      if ((isgraph(ch) == 0) != (iswgraph(ch) == 0)) {
        printf("`isw%s' test for character \\%o failed\n", "graph", ch);
        result = 1;
      }
    } while (0);
    do {
      if ((islower(ch) == 0) != (iswctype(ch, bit_lower) == 0)) {
        printf("`iswctype' class `%s' test "
               "for character \\%o failed\n",
               "lower", ch);
        result = 1;
      }
      if ((islower(ch) == 0) != (iswlower(ch) == 0)) {
        printf("`isw%s' test for character \\%o failed\n", "lower", ch);
        result = 1;
      }
    } while (0);
    do {
      if ((isprint(ch) == 0) != (iswctype(ch, bit_print) == 0)) {
        printf("`iswctype' class `%s' test "
               "for character \\%o failed\n",
               "print", ch);
        result = 1;
      }
      if ((isprint(ch) == 0) != (iswprint(ch) == 0)) {
        printf("`isw%s' test for character \\%o failed\n", "print", ch);
        result = 1;
      }
    } while (0);
    do {
      if ((ispunct(ch) == 0) != (iswctype(ch, bit_punct) == 0)) {
        printf("`iswctype' class `%s' test "
               "for character \\%o failed\n",
               "punct", ch);
        result = 1;
      }
      if ((ispunct(ch) == 0) != (iswpunct(ch) == 0)) {
        printf("`isw%s' test for character \\%o failed\n", "punct", ch);
        result = 1;
      }
    } while (0);
    do {
      if ((isspace(ch) == 0) != (iswctype(ch, bit_space) == 0)) {
        printf("`iswctype' class `%s' test "
               "for character \\%o failed\n",
               "space", ch);
        result = 1;
      }
      if ((isspace(ch) == 0) != (iswspace(ch) == 0)) {
        printf("`isw%s' test for character \\%o failed\n", "space", ch);
        result = 1;
      }
    } while (0);
    do {
      if ((isupper(ch) == 0) != (iswctype(ch, bit_upper) == 0)) {
        printf("`iswctype' class `%s' test "
               "for character \\%o failed\n",
               "upper", ch);
        result = 1;
      }
      if ((isupper(ch) == 0) != (iswupper(ch) == 0)) {
        printf("`isw%s' test for character \\%o failed\n", "upper", ch);
        result = 1;
      }
    } while (0);
    do {
      if ((isxdigit(ch) == 0) != (iswctype(ch, bit_xdigit) == 0)) {
        printf("`iswctype' class `%s' test "
               "for character \\%o failed\n",
               "xdigit", ch);
        result = 1;
      }
      if ((isxdigit(ch) == 0) != (iswxdigit(ch) == 0)) {
        printf("`isw%s' test for character \\%o failed\n", "xdigit", ch);
        result = 1;
      }
    } while (0);
  }
  if (result == 0)
    puts("All test successful!");
  return result;
}
```