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

```asm
<pandigital>:
  endbr64
  sub    $0x38,%rsp
  mov    %edi,%ecx
  mov    %esi,%edi
  mov    %edx,%r8d
  mov    %fs:0x28,%rax
  mov    %rax,0x28(%rsp)
  xor    %eax,%eax
  movq   $0x0,(%rsp)
  movq   $0x0,0x8(%rsp)
  movq   $0x0,0x10(%rsp)
  movq   $0x0,0x18(%rsp)
  movq   $0x0,0x20(%rsp)
  test   %ecx,%ecx
  je     L29
  movslq %ecx,%rax
  imul   $0x66666667,%rax,%rax
  sar    $0x22,%rax
  mov    %ecx,%edx
  sar    $0x1f,%edx
  sub    %edx,%eax
  lea    (%rax,%rax,4),%edx
  add    %edx,%edx
  mov    %ecx,%eax
  sub    %edx,%eax
  je     L185
L220:
  movslq %eax,%rdx
  cmpl   $0x0,(%rsp,%rdx,4)
  jne    L60
  movl   $0x1,(%rsp,%rdx,4)
  movslq %ecx,%rdx
  imul   $0x66666667,%rdx,%rdx
  sar    $0x22,%rdx
  sar    $0x1f,%ecx
  sub    %ecx,%edx
  mov    %edx,%ecx
  je     L29
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  sar    $0x22,%rax
  mov    %edx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  lea    (%rax,%rax,4),%esi
  add    %esi,%esi
  mov    %edx,%eax
  sub    %esi,%eax
  jne    L220
  jmp    L185
L29:
  test   %edi,%edi
  je     L115
  movslq %edi,%rax
  imul   $0x66666667,%rax,%rax
  sar    $0x22,%rax
  mov    %edi,%edx
  sar    $0x1f,%edx
  sub    %edx,%eax
  lea    (%rax,%rax,4),%edx
  add    %edx,%edx
  mov    %edi,%eax
  sub    %edx,%eax
  je     L185
L95:
  movslq %eax,%rdx
  cmpl   $0x0,(%rsp,%rdx,4)
  jne    L211
  movl   $0x1,(%rsp,%rdx,4)
  movslq %edi,%rdx
  imul   $0x66666667,%rdx,%rdx
  sar    $0x22,%rdx
  sar    $0x1f,%edi
  sub    %edi,%edx
  mov    %edx,%edi
  je     L115
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  sar    $0x22,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  lea    (%rax,%rax,4),%ecx
  add    %ecx,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  jne    L95
  jmp    L185
L115:
  test   %r8d,%r8d
  je     L206
  movslq %r8d,%rax
  imul   $0x66666667,%rax,%rax
  sar    $0x22,%rax
  mov    %r8d,%edx
  sar    $0x1f,%edx
  sub    %edx,%eax
  lea    (%rax,%rax,4),%edx
  add    %edx,%edx
  mov    %r8d,%eax
  sub    %edx,%eax
  je     L185
L85:
  movslq %eax,%rdx
  cmpl   $0x0,(%rsp,%rdx,4)
  jne    L142
  movl   $0x1,(%rsp,%rdx,4)
  movslq %r8d,%rdx
  imul   $0x66666667,%rdx,%rdx
  sar    $0x22,%rdx
  sar    $0x1f,%r8d
  sub    %r8d,%edx
  mov    %edx,%r8d
  je     L169
  movslq %edx,%rax
  imul   $0x66666667,%rax,%rax
  sar    $0x22,%rax
  mov    %edx,%ecx
  sar    $0x1f,%ecx
  sub    %ecx,%eax
  lea    (%rax,%rax,4),%ecx
  add    %ecx,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  jne    L85
  jmp    L185
L169:
  mov    $0x1,%eax
  jmp    L185
L60:
  mov    $0x0,%eax
L185:
  mov    0x28(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L55
  add    $0x38,%rsp
  ret
L211:
  mov    $0x0,%eax
  jmp    L185
L206:
  mov    $0x1,%eax
  jmp    L185
L142:
  mov    $0x0,%eax
  jmp    L185
L55:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
int pandigital(int a, int b, int c) {
  int seen[10] = {0};
  do {
    while (a) {
      const int t = a % 10;
      if (t == 0 || seen[t])
        return 0;
      seen[t] = 1;
      a /= 10;
    }
  } while (0);
  do {
    while (b) {
      const int t = b % 10;
      if (t == 0 || seen[t])
        return 0;
      seen[t] = 1;
      b /= 10;
    }
  } while (0);
  do {
    while (c) {
      const int t = c % 10;
      if (t == 0 || seen[t])
        return 0;
      seen[t] = 1;
      c /= 10;
    }
  } while (0);
  return 1;
}
```