user: 请将以下的汇编代码转换成C语言代码：

```asm
<mjt_ntop4>:
  endbr64
  mov    %rdi,%rcx
  mov    %rsi,%rax
  xor    %r8d,%r8d
  cmp    $0xf,%edx
  jle    L47
  movzbl (%rdi),%esi
  mov    %esi,%edx
  cmp    $0x63,%sil
  ja     L11
  cmp    $0x9,%esi
  ja     L65
L2:
  add    $0x30,%edx
  movb   $0x2e,0x1(%rax)
  lea    0x2(%rax),%rsi
  mov    %dl,(%rax)
  movzbl 0x1(%rcx),%edi
  mov    %edi,%edx
  cmp    $0x63,%dil
  jbe    L37
  mov    %edi,%edx
  lea    0x3(%rax),%r8
  imul   $0x51eb851f,%rdx,%rdx
  shr    $0x25,%rdx
  lea    0x30(%rdx),%esi
  imul   $0x64,%edx,%edx
  mov    %sil,0x2(%rax)
  sub    %edx,%edi
L43:
  mov    $0xcccccccd,%edx
  mov    %edi,%eax
  lea    0x1(%r8),%rsi
  imul   %rdx,%rax
  shr    $0x23,%rax
  lea    0x30(%rax),%edx
  lea    (%rax,%rax,4),%eax
  mov    %dl,(%r8)
  add    %eax,%eax
  mov    %edi,%edx
  sub    %eax,%edx
L13:
  add    $0x30,%edx
  movb   $0x2e,0x1(%rsi)
  mov    %dl,(%rsi)
  movzbl 0x2(%rcx),%edi
  lea    0x2(%rsi),%rdx
  mov    %edi,%eax
  cmp    $0x63,%dil
  jbe    L35
  mov    %edi,%eax
  lea    0x3(%rsi),%r8
  imul   $0x51eb851f,%rax,%rax
  shr    $0x25,%rax
  lea    0x30(%rax),%edx
  imul   $0x64,%eax,%eax
  mov    %dl,0x2(%rsi)
  sub    %eax,%edi
L116:
  mov    $0xcccccccd,%esi
  mov    %edi,%eax
  lea    0x1(%r8),%rdx
  imul   %rsi,%rax
  shr    $0x23,%rax
  lea    0x30(%rax),%esi
  mov    %sil,(%r8)
  lea    (%rax,%rax,4),%esi
  mov    %edi,%eax
  add    %esi,%esi
  sub    %esi,%eax
L78:
  add    $0x30,%eax
  movb   $0x2e,0x1(%rdx)
  lea    0x2(%rdx),%rsi
  mov    %al,(%rdx)
  movzbl 0x3(%rcx),%ecx
  mov    %ecx,%eax
  cmp    $0x63,%cl
  jbe    L115
  mov    %ecx,%eax
  lea    0x3(%rdx),%rdi
  imul   $0x51eb851f,%rax,%rax
  shr    $0x25,%rax
  lea    0x30(%rax),%esi
  imul   $0x64,%eax,%eax
  mov    %sil,0x2(%rdx)
  sub    %eax,%ecx
L130:
  mov    $0xcccccccd,%edx
  mov    %ecx,%eax
  lea    0x1(%rdi),%rsi
  imul   %rdx,%rax
  shr    $0x23,%rax
  lea    0x30(%rax),%edx
  mov    %dl,(%rdi)
  lea    (%rax,%rax,4),%edx
  mov    %ecx,%eax
  add    %edx,%edx
  sub    %edx,%eax
L101:
  add    $0x30,%eax
  movb   $0x0,0x1(%rsi)
  mov    $0x1,%r8d
  mov    %al,(%rsi)
L47:
  mov    %r8d,%eax
  ret
  nopw   0x0(%rax,%rax,1)
L11:
  mov    %esi,%edx
  lea    0x1(%rax),%rdi
  imul   $0x51eb851f,%rdx,%rdx
  shr    $0x25,%rdx
  lea    0x30(%rdx),%r8d
  imul   $0x64,%edx,%edx
  mov    %r8b,(%rax)
  sub    %edx,%esi
L103:
  mov    $0xcccccccd,%r8d
  mov    %esi,%edx
  lea    0x1(%rdi),%rax
  imul   %r8,%rdx
  shr    $0x23,%rdx
  lea    0x30(%rdx),%r8d
  mov    %r8b,(%rdi)
  lea    (%rdx,%rdx,4),%edi
  mov    %esi,%edx
  add    %edi,%edi
  sub    %edi,%edx
  jmp    L2
  xchg   %ax,%ax
L115:
  cmp    $0x9,%ecx
  jbe    L101
  mov    %rsi,%rdi
  jmp    L130
  nopl   (%rax)
L35:
  cmp    $0x9,%edi
  jbe    L78
  mov    %rdx,%r8
  jmp    L116
  nopl   0x0(%rax)
L37:
  cmp    $0x9,%edi
  jbe    L13
  mov    %rsi,%r8
  jmp    L43
L65:
  mov    %rax,%rdi
  jmp    L103
```

assistant: ```c
int mjt_ntop4(const void *_src, char *dst, int size) {
  unsigned i, x, r;
  char *p;
  const unsigned char *s = _src;
  if (size < 4 * 4)
    return 0;
  for (i = 0, p = dst; i < 4; ++i) {
    if (i)
      *p++ = '.';
    x = r = s[i];
    if (x > 99) {
      *p++ = (char)(r / 100 + '0');
      r %= 100;
    }
    if (x > 9) {
      *p++ = (char)(r / 10 + '0');
      r %= 10;
    }
    *p++ = (char)(r + '0');
  }
  *p = '\0';
  return 1;
}
```