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

```asm
<i_contain_r>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x14(%rbp)
  mov    %esi,-0x18(%rbp)
  cmpl   $0x0,-0x14(%rbp)
  jne    L31
  cmpl   $0x0,-0x18(%rbp)
  jne    L31
  mov    $0x1,%eax
  jmp    L120
L105:
  mov    -0x14(%rbp),%ecx
  movslq %ecx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %ecx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  mov    %eax,%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  sub    %eax,%ecx
  mov    %ecx,%edx
  mov    %dl,-0x6(%rbp)
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%ecx
  movslq %ecx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %ecx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  mov    %eax,%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  sub    %eax,%ecx
  mov    %ecx,%edx
  mov    %dl,-0x5(%rbp)
  jmp    L108
L74:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x66666667,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x2,%edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%ecx
  movslq %ecx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %ecx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  mov    %eax,%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  sub    %eax,%ecx
  mov    %ecx,%edx
  mov    %dl,-0x6(%rbp)
L108:
  movzbl -0x6(%rbp),%eax
  cmp    -0x5(%rbp),%al
  je     L60
  cmpl   $0x0,-0x14(%rbp)
  jg     L74
L60:
  cmpl   $0x0,-0x14(%rbp)
  jne    L51
  mov    $0x0,%eax
  jmp    L120
L79:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x66666667,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x2,%edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%ecx
  movslq %ecx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %ecx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  mov    %eax,%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  sub    %eax,%ecx
  mov    %ecx,%edx
  mov    %dl,-0x6(%rbp)
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  imul   $0x66666667,%rdx,%rdx
  shr    $0x20,%rdx
  sar    $0x2,%edx
  sar    $0x1f,%eax
  mov    %eax,%ecx
  mov    %edx,%eax
  sub    %ecx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%ecx
  movslq %ecx,%rax
  imul   $0x66666667,%rax,%rax
  shr    $0x20,%rax
  sar    $0x2,%eax
  mov    %ecx,%esi
  sar    $0x1f,%esi
  sub    %esi,%eax
  mov    %eax,%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  sub    %eax,%ecx
  mov    %ecx,%edx
  mov    %dl,-0x5(%rbp)
L51:
  movzbl -0x6(%rbp),%eax
  cmp    -0x5(%rbp),%al
  jne    L100
  cmpl   $0x0,-0x14(%rbp)
  jle    L100
  cmpl   $0x0,-0x4(%rbp)
  jg     L79
L100:
  cmpl   $0x0,-0x4(%rbp)
  jne    L31
  mov    $0x1,%eax
  jmp    L120
L31:
  cmpl   $0x0,-0x14(%rbp)
  jg     L105
  mov    $0x0,%eax
L120:
  pop    %rbp
  ret
```

assistant: ```c
int i_contain_r(int i, int r) {
  if (i == 0 && r == 0)
    return 1;
  while (i > 0) {
    char ic = i % 10;
    int rr = r;
    char rc = rr % 10;
    while (ic != rc && i > 0) {
      i /= 10;
      ic = i % 10;
    }
    if (i == 0)
      return 0;
    while (ic == rc && i > 0 && rr > 0) {
      i /= 10;
      ic = i % 10;
      rr /= 10;
      rc = rr % 10;
    }
    if (rr == 0)
      return 1;
  }
  return 0;
}
```