user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<breakUpLongWordsIn>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0xc50,%rsp
  mov    %rdi,-0x1c48(%rbp)
  mov    %esi,%eax
  mov    %ax,-0x1c4c(%rbp)
  mov    %edx,%eax
  mov    %al,-0x1c50(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movq   $0x0,-0x1c30(%rbp)
  movq   $0x0,-0x1c28(%rbp)
  lea    -0x1c20(%rbp),%rdx
  mov    $0x0,%eax
  mov    $0x382,%ecx
  mov    %rdx,%rdi
  rep stos %rax,%es:(%rdi)
  movw   $0x0,-0x1c32(%rbp)
  movw   $0x0,-0x1c38(%rbp)
  movw   $0x0,-0x1c36(%rbp)
  jmp    L18
L169:
  movswq -0x1c38(%rbp),%rdx
  mov    -0x1c48(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x19,%al
  jne    L133
  movswq -0x1c38(%rbp),%rdx
  mov    -0x1c48(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  movswl -0x1c36(%rbp),%eax
  lea    -0x1c30(%rbp),%rdx
  cltq
  add    %rdx,%rax
  mov    $0x4,%edx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncpy@plt>
  movzwl -0x1c38(%rbp),%eax
  add    $0x4,%eax
  mov    %ax,-0x1c38(%rbp)
  movzwl -0x1c36(%rbp),%eax
  add    $0x4,%eax
  mov    %ax,-0x1c36(%rbp)
  jmp    L18
L133:
  movswq -0x1c38(%rbp),%rdx
  mov    -0x1c48(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L30
  movswq -0x1c38(%rbp),%rdx
  mov    -0x1c48(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  jne    L63
L30:
  movw   $0x0,-0x1c32(%rbp)
  movzwl -0x1c38(%rbp),%eax
  mov    %eax,%edx
  add    $0x1,%edx
  mov    %dx,-0x1c38(%rbp)
  movswq %ax,%rdx
  mov    -0x1c48(%rbp),%rax
  add    %rax,%rdx
  movzwl -0x1c36(%rbp),%eax
  mov    %eax,%ecx
  add    $0x1,%ecx
  mov    %cx,-0x1c36(%rbp)
  cwtl
  movzbl (%rdx),%edx
  cltq
  mov    %dl,-0x1c30(%rbp,%rax,1)
  jmp    L18
L63:
  cmpb   $0x0,-0x1c50(%rbp)
  jne    L89
  movzwl -0x1c32(%rbp),%eax
  cmp    -0x1c4c(%rbp),%ax
  jl     L89
  movzwl -0x1c36(%rbp),%eax
  mov    %eax,%edx
  add    $0x1,%edx
  mov    %dx,-0x1c36(%rbp)
  cwtl
  cltq
  movb   $0xa,-0x1c30(%rbp,%rax,1)
  movw   $0x0,-0x1c32(%rbp)
  jmp    L12
L89:
  cmpb   $0x0,-0x1c50(%rbp)
  je     L12
  movswl -0x1c32(%rbp),%eax
  movswl -0x1c4c(%rbp),%edx
  sub    $0x1,%edx
  cmp    %edx,%eax
  jl     L12
  movzwl -0x1c38(%rbp),%eax
  add    $0x1,%eax
  mov    %ax,-0x1c34(%rbp)
  jmp    L127
L32:
  movzwl -0x1c34(%rbp),%eax
  add    $0x4,%eax
  mov    %ax,-0x1c34(%rbp)
L127:
  movswq -0x1c34(%rbp),%rdx
  mov    -0x1c48(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x19,%al
  je     L32
  movswq -0x1c34(%rbp),%rdx
  mov    -0x1c48(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L12
  movswq -0x1c34(%rbp),%rdx
  mov    -0x1c48(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L12
  movswq -0x1c34(%rbp),%rdx
  mov    -0x1c48(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  je     L12
  movzwl -0x1c36(%rbp),%eax
  mov    %eax,%edx
  add    $0x1,%edx
  mov    %dx,-0x1c36(%rbp)
  cwtl
  cltq
  movb   $0x2d,-0x1c30(%rbp,%rax,1)
  movzwl -0x1c36(%rbp),%eax
  mov    %eax,%edx
  add    $0x1,%edx
  mov    %dx,-0x1c36(%rbp)
  cwtl
  cltq
  movb   $0xa,-0x1c30(%rbp,%rax,1)
  movw   $0x0,-0x1c32(%rbp)
L12:
  movzwl -0x1c38(%rbp),%eax
  mov    %eax,%edx
  add    $0x1,%edx
  mov    %dx,-0x1c38(%rbp)
  movswq %ax,%rdx
  mov    -0x1c48(%rbp),%rax
  add    %rax,%rdx
  movzwl -0x1c36(%rbp),%eax
  mov    %eax,%ecx
  add    $0x1,%ecx
  mov    %cx,-0x1c36(%rbp)
  cwtl
  movzbl (%rdx),%edx
  cltq
  mov    %dl,-0x1c30(%rbp,%rax,1)
  movzwl -0x1c32(%rbp),%eax
  add    $0x1,%eax
  mov    %ax,-0x1c32(%rbp)
L18:
  movswq -0x1c38(%rbp),%rdx
  mov    -0x1c48(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L169
  movswl -0x1c36(%rbp),%eax
  cltq
  movb   $0x0,-0x1c30(%rbp,%rax,1)
  lea    -0x1c30(%rbp),%rdx
  mov    -0x1c48(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L118
  call   <__stack_chk_fail@plt>
L118:
  leave
  ret
```

assistant: ```c
void breakUpLongWordsIn(char *sourceText, short width, char useHyphens) {
  char buf[100 * (31 + 5) * 2] = "";
  short i, m, nextChar, wordWidth;
  wordWidth = 0;
  for (i = 0, m = 0; sourceText[i] != 0;) {
    if (sourceText[i] == 25) {
      strncpy(&(buf[m]), &(sourceText[i]), 4);
      i += 4;
      m += 4;
    } else if (sourceText[i] == ' ' || sourceText[i] == '\n') {
      wordWidth = 0;
      buf[m++] = sourceText[i++];
    } else {
      if (!useHyphens && wordWidth >= width) {
        buf[m++] = '\n';
        wordWidth = 0;
      } else if (useHyphens && wordWidth >= width - 1) {
        nextChar = i + 1;
        while (sourceText[nextChar] == 25) {
          nextChar += 4;
        }
        if (sourceText[nextChar] && sourceText[nextChar] != ' ' && sourceText[nextChar] != '\n') {
          buf[m++] = '-';
          buf[m++] = '\n';
          wordWidth = 0;
        }
      }
      buf[m++] = sourceText[i++];
      wordWidth++;
    }
  }
  buf[m] = '\0';
  strcpy(sourceText, buf);
}
```