user: Please show me the C implementation that matches the assembly code listed below:

```asm
<main>:
  endbr64
  sub    $0x8,%rsp
  mov    $0x0,%esi
  mov    $0x1,%edi
  call   <test__ctzti2@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  je     L148
L10:
  add    $0x8,%rsp
  ret
L148:
  mov    $0x1,%esi
  mov    $0x2,%edi
  call   <test__ctzti2@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L10
  mov    $0x0,%esi
  mov    $0x3,%edi
  call   <test__ctzti2@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L10
  mov    $0x2,%esi
  mov    $0x4,%edi
  call   <test__ctzti2@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L10
  mov    $0x0,%esi
  mov    $0x5,%edi
  call   <test__ctzti2@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L10
  mov    $0x1,%esi
  mov    $0xa,%edi
  call   <test__ctzti2@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L10
  mov    $0x1c,%esi
  mov    $0x10000000,%edi
  call   <test__ctzti2@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L10
  mov    $0x1d,%esi
  mov    $0x20000000,%edi
  call   <test__ctzti2@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L10
  mov    $0x1d,%esi
  mov    $0x60000000,%edi
  call   <test__ctzti2@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L10
  mov    $0x1f,%esi
  mov    $0x80000000,%edi
  call   <test__ctzti2@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L10
  mov    $0x28,%esi
  mov    $0x0,%edi
  call   <test__ctzti2@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L10
  mov    $0x2b,%esi
  mov    $0x0,%edi
  call   <test__ctzti2@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L10
  mov    $0x39,%esi
  mov    $0x0,%edi
  call   <test__ctzti2@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L10
  mov    $0x3f,%esi
  mov    $0x0,%edi
  call   <test__ctzti2@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L10
  mov    $0x0,%esi
  mov    $0xa0000000,%edi
  call   <make_ti@plt>
  mov    %eax,%edi
  mov    $0x5d,%esi
  call   <test__ctzti2@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L10
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%edi
  mov    $0x7c,%esi
  call   <test__ctzti2@plt>
  mov    %rax,%rdx
  mov    $0x1,%eax
  test   %rdx,%rdx
  jne    L10
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <make_ti@plt>
  mov    %eax,%edi
  mov    $0x7f,%esi
  call   <test__ctzti2@plt>
  test   %rax,%rax
  setne  %al
  movzbl %al,%eax
  jmp    L10
```

assistant: ```c
int main() {
  if (test__ctzti2(0x00000001, 0))
    return 1;
  if (test__ctzti2(0x00000002, 1))
    return 1;
  if (test__ctzti2(0x00000003, 0))
    return 1;
  if (test__ctzti2(0x00000004, 2))
    return 1;
  if (test__ctzti2(0x00000005, 0))
    return 1;
  if (test__ctzti2(0x0000000A, 1))
    return 1;
  if (test__ctzti2(0x10000000, 28))
    return 1;
  if (test__ctzti2(0x20000000, 29))
    return 1;
  if (test__ctzti2(0x60000000, 29))
    return 1;
  if (test__ctzti2(0x80000000uLL, 31))
    return 1;
  if (test__ctzti2(0x0000050000000000uLL, 40))
    return 1;
  if (test__ctzti2(0x0200080000000000uLL, 43))
    return 1;
  if (test__ctzti2(0x7200000000000000uLL, 57))
    return 1;
  if (test__ctzti2(0x8000000000000000uLL, 63))
    return 1;
  if (test__ctzti2(make_ti(0x00000000A0000000LL, 0x0000000000000000LL), 93))
    return 1;
  if (test__ctzti2(make_ti(0xF000000000000000LL, 0x0000000000000000LL), 124))
    return 1;
  if (test__ctzti2(make_ti(0x8000000000000000LL, 0x0000000000000000LL), 127))
    return 1;
  return 0;
}
```