user: What is the c source code of the assembly code below?

```asm
<my_strconcat>:
  endbr64
  push   %r15
  push   %r14
  mov    %rsi,%r14
  push   %r13
  push   %r12
  mov    %rdi,%r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  call   <length@plt>
  mov    %r14,%rdi
  mov    %eax,%ebx
  call   <length@plt>
  cmpb   $0x22,(%r12)
  mov    %eax,%r15d
  je     L355
  movslq %ebx,%rax
  cmpb   $0x22,(%r12,%rax,1)
  je     L408
  movslq %r15d,%rax
  cmpb   $0x22,(%r14,%rax,1)
  je     L358
  xor    %ebp,%ebp
  cmpb   $0x22,0x2(%r14)
  sete   %bpl
  xor    %r13d,%r13d
L96:
  lea    (%rbx,%r15,1),%edi
  mov    $0x1,%esi
  call   <calloc@plt>
  mov    %rax,%r8
  cmp    %ebx,%r13d
  jg     L302
  movslq %r13d,%rdx
  mov    %ebx,%edi
  lea    (%rax,%rdx,1),%r9
  lea    0x1(%rdx),%rax
  sub    %r13d,%edi
  lea    (%r12,%rax,1),%rsi
  mov    %r9,%rcx
  sub    %rsi,%rcx
  cmp    $0xe,%rcx
  jbe    L265
  cmp    $0x6,%edi
  jbe    L265
  lea    0x1(%rdi),%esi
  cmp    $0xe,%edi
  jbe    L118
  mov    %esi,%ecx
  lea    (%r12,%rdx,1),%r10
  xor    %eax,%eax
  shr    $0x4,%ecx
  shl    $0x4,%rcx
  nopl   0x0(%rax)
L382:
  movdqu (%r10,%rax,1),%xmm0
  movups %xmm0,(%r9,%rax,1)
  add    $0x10,%rax
  cmp    %rcx,%rax
  jne    L382
  mov    %esi,%eax
  and    $0xfffffff0,%eax
  add    %eax,%r13d
  cmp    %eax,%esi
  je     L302
  sub    %eax,%edi
  lea    0x1(%rdi),%esi
  cmp    $0x6,%edi
  jbe    L71
L366:
  add    %rdx,%rax
  mov    (%r12,%rax,1),%rdx
  mov    %rdx,(%r8,%rax,1)
  mov    %esi,%eax
  and    $0xfffffff8,%eax
  add    %eax,%r13d
  cmp    %eax,%esi
  je     L302
L71:
  movslq %r13d,%rax
  movzbl (%r12,%rax,1),%edx
  mov    %dl,(%r8,%rax,1)
  lea    0x1(%r13),%eax
  cmp    %eax,%ebx
  jl     L302
  cltq
  movzbl (%r12,%rax,1),%edx
  mov    %dl,(%r8,%rax,1)
  lea    0x2(%r13),%eax
  cmp    %eax,%ebx
  jl     L302
  cltq
  movzbl (%r12,%rax,1),%edx
  mov    %dl,(%r8,%rax,1)
  lea    0x3(%r13),%eax
  cmp    %eax,%ebx
  jl     L302
  cltq
  movzbl (%r12,%rax,1),%edx
  mov    %dl,(%r8,%rax,1)
  lea    0x4(%r13),%eax
  cmp    %eax,%ebx
  jl     L302
  cltq
  movzbl (%r12,%rax,1),%edx
  mov    %dl,(%r8,%rax,1)
  lea    0x5(%r13),%eax
  cmp    %eax,%ebx
  jl     L302
  cltq
  add    $0x6,%r13d
  movzbl (%r12,%rax,1),%edx
  mov    %dl,(%r8,%rax,1)
  cmp    %r13d,%ebx
  jl     L302
  movslq %r13d,%r13
  movzbl (%r12,%r13,1),%eax
  mov    %al,(%r8,%r13,1)
L302:
  cmp    %r15d,%ebp
  jg     L76
  movslq %ebp,%rdx
  movslq %ebx,%rsi
  mov    %r15d,%r9d
  lea    (%rsi,%rdx,1),%rcx
  lea    0x1(%rdx),%rax
  sub    %ebp,%r9d
  add    %r8,%rcx
  lea    (%r14,%rax,1),%r10
  mov    %rcx,%rdi
  sub    %r10,%rdi
  cmp    $0xe,%rdi
  jbe    L115
  cmp    $0x6,%r9d
  jbe    L115
  lea    0x1(%r9),%edi
  cmp    $0xe,%r9d
  jbe    L220
  mov    %edi,%esi
  lea    (%r14,%rdx,1),%r10
  xor    %eax,%eax
  shr    $0x4,%esi
  shl    $0x4,%rsi
  nopl   0x0(%rax)
L266:
  movdqu (%r10,%rax,1),%xmm1
  movups %xmm1,(%rcx,%rax,1)
  add    $0x10,%rax
  cmp    %rsi,%rax
  jne    L266
  mov    %edi,%eax
  and    $0xfffffff0,%eax
  add    %eax,%ebp
  cmp    %eax,%edi
  je     L76
  sub    %eax,%r9d
  lea    0x1(%r9),%esi
  cmp    $0x6,%r9d
  jbe    L78
L296:
  lea    (%r14,%rax,1),%rdi
  mov    (%rdi,%rdx,1),%rdx
  mov    %rdx,(%rcx,%rax,1)
  mov    %esi,%eax
  and    $0xfffffff8,%eax
  add    %eax,%ebp
  cmp    %eax,%esi
  je     L76
L78:
  movslq %ebp,%rax
  movzbl (%r14,%rax,1),%edx
  lea    (%rbx,%rbp,1),%eax
  cltq
  mov    %dl,(%r8,%rax,1)
  lea    0x1(%rbp),%eax
  cmp    %eax,%r15d
  jl     L76
  movslq %eax,%rdx
  add    %ebx,%eax
  movzbl (%r14,%rdx,1),%edx
  cltq
  mov    %dl,(%r8,%rax,1)
  lea    0x2(%rbp),%eax
  cmp    %r15d,%eax
  jg     L76
  movslq %eax,%rdx
  add    %ebx,%eax
  movzbl (%r14,%rdx,1),%edx
  cltq
  mov    %dl,(%r8,%rax,1)
  lea    0x3(%rbp),%eax
  cmp    %eax,%r15d
  jl     L76
  movslq %eax,%rdx
  add    %ebx,%eax
  movzbl (%r14,%rdx,1),%edx
  cltq
  mov    %dl,(%r8,%rax,1)
  lea    0x4(%rbp),%eax
  cmp    %eax,%r15d
  jl     L76
  movslq %eax,%rdx
  add    %ebx,%eax
  movzbl (%r14,%rdx,1),%edx
  cltq
  mov    %dl,(%r8,%rax,1)
  lea    0x5(%rbp),%eax
  cmp    %eax,%r15d
  jl     L76
  movslq %eax,%rdx
  add    %ebx,%eax
  add    $0x6,%ebp
  movzbl (%r14,%rdx,1),%edx
  cltq
  mov    %dl,(%r8,%rax,1)
  cmp    %ebp,%r15d
  jl     L76
  movslq %ebp,%rax
  add    %ebx,%ebp
  movzbl (%r14,%rax,1),%eax
  movslq %ebp,%rbp
  mov    %al,(%r8,%rbp,1)
L76:
  add    $0x8,%rsp
  mov    %r8,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L305:
  add    $0x1,%rax
L265:
  movzbl (%r12,%rdx,1),%ecx
  mov    %cl,(%r8,%rdx,1)
  mov    %rax,%rdx
  cmp    %eax,%ebx
  jge    L305
  jmp    L302
  nopl   0x0(%rax)
L408:
  sub    $0x1,%ebx
  xor    %ebp,%ebp
  xor    %r13d,%r13d
  jmp    L96
  nopl   (%rax)
L355:
  xor    %ebp,%ebp
  mov    $0x1,%r13d
  jmp    L96
  nopl   (%rax)
L115:
  add    %r8,%rsi
  jmp    L66
  nopl   (%rax)
L298:
  add    $0x1,%rax
L66:
  movzbl (%r14,%rdx,1),%ecx
  mov    %cl,(%rsi,%rdx,1)
  mov    %rax,%rdx
  cmp    %eax,%r15d
  jge    L298
  jmp    L76
  cs nopw 0x0(%rax,%rax,1)
L358:
  sub    $0x1,%r15d
  xor    %ebp,%ebp
  xor    %r13d,%r13d
  jmp    L96
L118:
  xor    %eax,%eax
  jmp    L366
L220:
  mov    %edi,%esi
  xor    %eax,%eax
  jmp    L296
```

assistant: ```c
char *my_strconcat(const char *v1, const char *v2) {
  int j = 0, k = 0;
  int sizev1 = length(v1);
  int sizev2 = length(v2);
  int size = 0;
  if (v1[0] == '"')
    j++;
  else if (v1[sizev1] == '"')
    sizev1--;
  else if (v2[sizev2] == '"')
    sizev2--;
  else if (v2[2] == '"')
    k++;
  size = sizev1 + sizev2;
  char *tab;
  tab = calloc(size, sizeof(char));
  for (j; sizev1 >= j; j++) {
    tab[j] = v1[j];
  }
  for (k; sizev2 >= k; k++) {
    tab[sizev1 + k] = v2[k];
  }
  return tab;
}
```