user: Demonstrate the C code that generates the assembly output below:

```asm
<main>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  je     L240
L108:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
L240:
  mov    $0x1,%esi
  mov    $0x0,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x0,%esi
  mov    $0x1,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xa,%esi
  mov    $0x0,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x0,%esi
  mov    $0xa,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x89abcdef,%esi
  mov    $0x0,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x0,%esi
  mov    $0x89abcdef,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xffffffff,%esi
  mov    $0x0,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x0,%esi
  mov    $0xffffffff,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xfffffff6,%esi
  mov    $0x0,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x0,%esi
  mov    $0xfffffff6,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x76543211,%esi
  mov    $0x0,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x0,%esi
  mov    $0x76543211,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x1,%edx
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xa,%edx
  mov    $0xa,%esi
  mov    $0x1,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xa,%edx
  mov    $0x1,%esi
  mov    $0xa,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x89abcdef,%edx
  mov    $0x89abcdef,%esi
  mov    $0x1,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x89abcdef,%edx
  mov    $0x1,%esi
  mov    $0x89abcdef,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xffffffff,%edx
  mov    $0xffffffff,%esi
  mov    $0x1,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xfffffff6,%edx
  mov    $0xfffffff6,%esi
  mov    $0x1,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xfffffff6,%edx
  mov    $0x1,%esi
  mov    $0xfffffff6,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x76543211,%edx
  mov    $0x76543211,%esi
  mov    $0x1,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x76543211,%edx
  mov    $0x1,%esi
  mov    $0x76543211,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x9ea1dc29,%edx
  mov    $0xb504f333,%esi
  mov    $0xb504f333,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x615e23d7,%edx
  mov    $0xb504f333,%esi
  mov    $0x4afb0ccd,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x615e23d7,%edx
  mov    $0x4afb0ccd,%esi
  mov    $0xb504f333,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x9ea1dc29,%edx
  mov    $0x4afb0ccd,%esi
  mov    $0x4afb0ccd,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xffe00000,%edx
  mov    $0x200000,%esi
  mov    $0xffffffff,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x200000,%edx
  mov    $0x200000,%esi
  mov    $0x1,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x200000,%edx
  mov    $0xffe00000,%esi
  mov    $0xffffffff,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xffe00000,%edx
  mov    $0xffe00000,%esi
  mov    $0x1,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xffe00000,%edx
  mov    $0xffffffff,%esi
  mov    $0x200000,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x200000,%edx
  mov    $0xffffffff,%esi
  mov    $0xffe00000,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x200000,%edx
  mov    $0x1,%esi
  mov    $0x200000,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xffe00000,%edx
  mov    $0x1,%esi
  mov    $0xffe00000,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x96e8a000,%esi
  mov    $0xfffff328,%edi
  call   <make_ti@plt>
  mov    %eax,%ebp
  mov    $0x33f9de5b,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%ebx
  mov    $0xde5be000,%esi
  mov    $0xb5,%edi
  call   <make_ti@plt>
  mov    %eax,%edi
  mov    %ebp,%edx
  mov    %ebx,%esi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x1,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%ebx
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <make_ti@plt>
  mov    %eax,%edi
  mov    %ebx,%edx
  mov    $0xffffffff,%esi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x1,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%ebx
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <make_ti@plt>
  mov    %eax,%esi
  mov    %ebx,%edx
  mov    $0xffffffff,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <make_ti@plt>
  mov    %eax,%edi
  mov    $0x0,%edx
  mov    $0x0,%esi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <make_ti@plt>
  mov    %eax,%esi
  mov    $0x0,%edx
  mov    $0x0,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <make_ti@plt>
  mov    %eax,%ebx
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <make_ti@plt>
  mov    %eax,%edi
  mov    %ebx,%edx
  mov    $0x1,%esi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <make_ti@plt>
  mov    %eax,%ebx
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <make_ti@plt>
  mov    %eax,%esi
  mov    %ebx,%edx
  mov    $0x1,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%edi
  mov    $0x0,%edx
  mov    $0x0,%esi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%esi
  mov    $0x0,%edx
  mov    $0x0,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%ebx
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%edi
  mov    %ebx,%edx
  mov    $0x1,%esi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%ebx
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%esi
  mov    %ebx,%edx
  mov    $0x1,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <make_ti@plt>
  mov    %eax,%ebx
  mov    $0x1,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%edi
  mov    %ebx,%edx
  mov    $0xffffffff,%esi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <make_ti@plt>
  mov    %eax,%ebx
  mov    $0x1,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%esi
  mov    %ebx,%edx
  mov    $0xffffffff,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x1,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%edi
  mov    $0x0,%edx
  mov    $0x0,%esi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x1,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%esi
  mov    $0x0,%edx
  mov    $0x0,%edi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x1,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%ebx
  mov    $0x1,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%edi
  mov    %ebx,%edx
  mov    $0x1,%esi
  call   <test__mulvti3@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L108
  mov    $0x1,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%ebx
  mov    $0x1,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%esi
  mov    %ebx,%edx
  mov    $0x1,%edi
  call   <test__mulvti3@plt>
  test   %rax,%rax
  setne  %al
  movzbl %al,%eax
  jmp    L108
```

assistant: ```c
int main() {
  if (test__mulvti3(0, 0, 0))
    return 1;
  if (test__mulvti3(0, 1, 0))
    return 1;
  if (test__mulvti3(1, 0, 0))
    return 1;
  if (test__mulvti3(0, 10, 0))
    return 1;
  if (test__mulvti3(10, 0, 0))
    return 1;
  if (test__mulvti3(0, 81985529216486895LL, 0))
    return 1;
  if (test__mulvti3(81985529216486895LL, 0, 0))
    return 1;
  if (test__mulvti3(0, -1, 0))
    return 1;
  if (test__mulvti3(-1, 0, 0))
    return 1;
  if (test__mulvti3(0, -10, 0))
    return 1;
  if (test__mulvti3(-10, 0, 0))
    return 1;
  if (test__mulvti3(0, -81985529216486895LL, 0))
    return 1;
  if (test__mulvti3(-81985529216486895LL, 0, 0))
    return 1;
  if (test__mulvti3(1, 1, 1))
    return 1;
  if (test__mulvti3(1, 10, 10))
    return 1;
  if (test__mulvti3(10, 1, 10))
    return 1;
  if (test__mulvti3(1, 81985529216486895LL, 81985529216486895LL))
    return 1;
  if (test__mulvti3(81985529216486895LL, 1, 81985529216486895LL))
    return 1;
  if (test__mulvti3(1, -1, -1))
    return 1;
  if (test__mulvti3(1, -10, -10))
    return 1;
  if (test__mulvti3(-10, 1, -10))
    return 1;
  if (test__mulvti3(1, -81985529216486895LL, -81985529216486895LL))
    return 1;
  if (test__mulvti3(-81985529216486895LL, 1, -81985529216486895LL))
    return 1;
  if (test__mulvti3(3037000499LL, 3037000499LL, 9223372030926249001LL))
    return 1;
  if (test__mulvti3(-3037000499LL, 3037000499LL, -9223372030926249001LL))
    return 1;
  if (test__mulvti3(3037000499LL, -3037000499LL, -9223372030926249001LL))
    return 1;
  if (test__mulvti3(-3037000499LL, -3037000499LL, 9223372030926249001LL))
    return 1;
  if (test__mulvti3(4398046511103LL, 2097152LL, 9223372036852678656LL))
    return 1;
  if (test__mulvti3(-4398046511103LL, 2097152LL, -9223372036852678656LL))
    return 1;
  if (test__mulvti3(4398046511103LL, -2097152LL, -9223372036852678656LL))
    return 1;
  if (test__mulvti3(-4398046511103LL, -2097152LL, 9223372036852678656LL))
    return 1;
  if (test__mulvti3(2097152LL, 4398046511103LL, 9223372036852678656LL))
    return 1;
  if (test__mulvti3(-2097152LL, 4398046511103LL, -9223372036852678656LL))
    return 1;
  if (test__mulvti3(2097152LL, -4398046511103LL, -9223372036852678656LL))
    return 1;
  if (test__mulvti3(-2097152LL, -4398046511103LL, 9223372036852678656LL))
    return 1;
  if (test__mulvti3(make_ti(0x00000000000000B5LL, 0x04F333F9DE5BE000LL), make_ti(0x0000000000000000LL, 0x00B504F333F9DE5BLL), make_ti(0x7FFFFFFFFFFFF328LL, 0xDF915DA296E8A000LL)))
    return 1;
  if (test__mulvti3(make_ti(0x7FFFFFFFFFFFFFFFLL, 0xFFFFFFFFFFFFFFFFLL), -1, make_ti(0x8000000000000000LL, 0x0000000000000001LL)))
    return 1;
  if (test__mulvti3(-1, make_ti(0x7FFFFFFFFFFFFFFFLL, 0xFFFFFFFFFFFFFFFFLL), make_ti(0x8000000000000000LL, 0x0000000000000001LL)))
    return 1;
  if (test__mulvti3(make_ti(0x7FFFFFFFFFFFFFFFLL, 0xFFFFFFFFFFFFFFFFLL), 0, 0))
    return 1;
  if (test__mulvti3(0, make_ti(0x7FFFFFFFFFFFFFFFLL, 0xFFFFFFFFFFFFFFFFLL), 0))
    return 1;
  if (test__mulvti3(make_ti(0x7FFFFFFFFFFFFFFFLL, 0xFFFFFFFFFFFFFFFFLL), 1, make_ti(0x7FFFFFFFFFFFFFFFLL, 0xFFFFFFFFFFFFFFFFLL)))
    return 1;
  if (test__mulvti3(1, make_ti(0x7FFFFFFFFFFFFFFFLL, 0xFFFFFFFFFFFFFFFFLL), make_ti(0x7FFFFFFFFFFFFFFFLL, 0xFFFFFFFFFFFFFFFFLL)))
    return 1;
  if (test__mulvti3(make_ti(0x8000000000000000LL, 0x0000000000000000LL), 0, 0))
    return 1;
  if (test__mulvti3(0, make_ti(0x8000000000000000LL, 0x0000000000000000LL), 0))
    return 1;
  if (test__mulvti3(make_ti(0x8000000000000000LL, 0x0000000000000000LL), 1, make_ti(0x8000000000000000LL, 0x0000000000000000LL)))
    return 1;
  if (test__mulvti3(1, make_ti(0x8000000000000000LL, 0x0000000000000000LL), make_ti(0x8000000000000000LL, 0x0000000000000000LL)))
    return 1;
  if (test__mulvti3(make_ti(0x8000000000000000LL, 0x0000000000000001LL), -1, make_ti(0x7FFFFFFFFFFFFFFFLL, 0xFFFFFFFFFFFFFFFFLL)))
    return 1;
  if (test__mulvti3(-1, make_ti(0x8000000000000000LL, 0x0000000000000001LL), make_ti(0x7FFFFFFFFFFFFFFFLL, 0xFFFFFFFFFFFFFFFFLL)))
    return 1;
  if (test__mulvti3(make_ti(0x8000000000000000LL, 0x0000000000000001LL), 0, 0))
    return 1;
  if (test__mulvti3(0, make_ti(0x8000000000000000LL, 0x0000000000000001LL), 0))
    return 1;
  if (test__mulvti3(make_ti(0x8000000000000000LL, 0x0000000000000001LL), 1, make_ti(0x8000000000000000LL, 0x0000000000000001LL)))
    return 1;
  if (test__mulvti3(1, make_ti(0x8000000000000000LL, 0x0000000000000001LL), make_ti(0x8000000000000000LL, 0x0000000000000001LL)))
    return 1;
  return 0;
}
```