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

```asm
<test_mul>:
  endbr64
  sub    $0x8,%rsp
  mov    $0x1,%esi
  mov    $0xffffffff,%edi
  call   <mul_i8@plt>
  cmp    $0xffffffff,%eax
  je     L26
  mov    $0x0,%edi
  call   <fail@plt>
L217:
  add    $0x8,%rsp
  ret
L26:
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <mul_i8@plt>
  cmp    $0x1,%eax
  je     L28
  mov    $0x0,%edi
  call   <fail@plt>
  jmp    L217
L28:
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <mul_i8@plt>
  cmp    $0x1,%eax
  je     L179
  mov    $0x0,%edi
  call   <fail@plt>
  jmp    L217
L179:
  mov    $0x23,%esi
  mov    $0x11,%edi
  call   <mul_i8@plt>
  cmp    $0x53,%eax
  je     L223
  mov    $0x0,%edi
  call   <fail@plt>
  jmp    L217
L223:
  mov    $0x1,%esi
  mov    $0xffffffff,%edi
  call   <mul_i16@plt>
  cmp    $0xffffffff,%eax
  je     L104
  mov    $0x0,%edi
  call   <fail@plt>
  jmp    L217
L104:
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <mul_i16@plt>
  cmp    $0x1,%eax
  je     L113
  mov    $0x0,%edi
  call   <fail@plt>
  jmp    L217
L113:
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <mul_i16@plt>
  cmp    $0x1,%eax
  je     L163
  mov    $0x0,%edi
  call   <fail@plt>
  jmp    L217
L163:
  mov    $0x367,%esi
  mov    $0xb3,%edi
  call   <mul_i16@plt>
  cmp    $0x6105,%eax
  je     L168
  mov    $0x0,%edi
  call   <fail@plt>
  jmp    L217
L168:
  mov    $0x1,%esi
  mov    $0xffffffff,%edi
  call   <mul_i32@plt>
  cmp    $0xffffffff,%eax
  je     L54
  mov    $0x0,%edi
  call   <fail@plt>
  jmp    L217
L54:
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <mul_i32@plt>
  cmp    $0x1,%eax
  je     L167
  mov    $0x0,%edi
  call   <fail@plt>
  jmp    L217
L167:
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <mul_i32@plt>
  cmp    $0x1,%eax
  je     L279
  mov    $0x0,%edi
  call   <fail@plt>
  jmp    L217
L279:
  mov    $0xd4de8,%esi
  mov    $0x2bd50,%edi
  call   <mul_i32@plt>
  cmp    $0x727ca080,%eax
  je     L46
  mov    $0x0,%edi
  call   <fail@plt>
  jmp    L217
L46:
  mov    $0x1,%esi
  mov    $0xffffffff,%edi
  call   <mul_i64@plt>
  cmp    $0xffffffff,%eax
  je     L89
  mov    $0x0,%edi
  call   <fail@plt>
  jmp    L217
L89:
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <mul_i64@plt>
  cmp    $0x1,%eax
  je     L50
  mov    $0x0,%edi
  call   <fail@plt>
  jmp    L217
L50:
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <mul_i64@plt>
  cmp    $0x1,%eax
  je     L233
  mov    $0x0,%edi
  call   <fail@plt>
  jmp    L217
L233:
  mov    $0x7b34a7f,%esi
  mov    $0x2e1e871d,%edi
  call   <mul_i64@plt>
  mov    $0x0,%edi
  call   <fail@plt>
  jmp    L217
```

assistant: ```c
int test_mul(void) {
  if (mul_i8(-1, 1) != -1)
    return fail(0);
  if (mul_i8(-1, -1) != 1)
    return fail(0);
  if (mul_i8(1, 1) != 1)
    return fail(0);
  if (mul_i8(17, 35) != 83)
    return fail(0);
  if (mul_i16(-1, 1) != -1)
    return fail(0);
  if (mul_i16(-1, -1) != 1)
    return fail(0);
  if (mul_i16(1, 1) != 1)
    return fail(0);
  if (mul_i16(179, 871) != 24837)
    return fail(0);
  if (mul_i32(-1, 1) != -1)
    return fail(0);
  if (mul_i32(-1, -1) != 1)
    return fail(0);
  if (mul_i32(1, 1) != 1)
    return fail(0);
  if (mul_i32(179536, 871912) != 1920770176)
    return fail(0);
  if (mul_i64(-1, 1) != -1)
    return fail(0);
  if (mul_i64(-1, -1) != 1)
    return fail(0);
  if (mul_i64(1, 1) != 1)
    return fail(0);
  if (mul_i64(17953621789, 8719125119) != 8965922127819204963)
    return fail(0);
  return 0x10;
}
```