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

```asm
<doXor2Arrays>:
  endbr64
  test   %r8d,%r8d
  jle    L130
  movslq %ecx,%r11
  push   %r12
  lea    -0x1(%r8),%eax
  push   %rbp
  lea    (%rdx,%r11,1),%r9
  mov    %r8d,%ebp
  push   %rbx
  movslq %esi,%rbx
  mov    %r9,%r10
  lea    0x1(%rdi,%rbx,1),%r12
  sub    %r12,%r10
  cmp    $0xe,%r10
  jbe    L114
  cmp    $0x6,%eax
  jbe    L114
  cmp    $0xe,%eax
  jbe    L154
  mov    %r8d,%r10d
  add    %rdi,%rbx
  xor    %eax,%eax
  shr    $0x4,%r10d
  shl    $0x4,%r10
  nopl   0x0(%rax)
L148:
  movdqu (%rbx,%rax,1),%xmm0
  movdqu (%r9,%rax,1),%xmm2
  pxor   %xmm2,%xmm0
  movups %xmm0,(%r9,%rax,1)
  add    $0x10,%rax
  cmp    %r10,%rax
  jne    L148
  mov    %r8d,%r9d
  and    $0xfffffff0,%r9d
  mov    %r9d,%eax
  add    %r9d,%esi
  add    %r9d,%ecx
  cmp    %r9d,%r8d
  je     L125
  mov    %r8d,%ebp
  sub    %r9d,%ebp
  lea    -0x1(%rbp),%r10d
  cmp    $0x6,%r10d
  jbe    L153
L126:
  lea    (%r11,%r9,1),%r10
  movq   (%rbx,%r9,1),%xmm0
  mov    %ebp,%r9d
  add    %rdx,%r10
  and    $0xfffffff8,%r9d
  movq   (%r10),%xmm1
  add    %r9d,%esi
  add    %r9d,%ecx
  add    %r9d,%eax
  pxor   %xmm1,%xmm0
  movq   %xmm0,(%r10)
  cmp    %r9d,%ebp
  je     L125
L153:
  movslq %ecx,%r9
  movslq %esi,%r10
  lea    0x1(%rax),%r11d
  movzbl (%rdi,%r10,1),%r10d
  xor    %r10b,(%rdx,%r9,1)
  lea    0x1(%rsi),%r10d
  lea    0x1(%rcx),%r9d
  cmp    %r11d,%r8d
  jle    L125
  movslq %r9d,%r9
  movslq %r10d,%r10
  lea    0x2(%rax),%r11d
  movzbl (%rdi,%r10,1),%r10d
  xor    %r10b,(%rdx,%r9,1)
  lea    0x2(%rsi),%r10d
  lea    0x2(%rcx),%r9d
  cmp    %r11d,%r8d
  jle    L125
  movslq %r9d,%r9
  movslq %r10d,%r10
  lea    0x3(%rax),%r11d
  movzbl (%rdi,%r10,1),%r10d
  xor    %r10b,(%rdx,%r9,1)
  lea    0x3(%rsi),%r10d
  lea    0x3(%rcx),%r9d
  cmp    %r11d,%r8d
  jle    L125
  movslq %r9d,%r9
  movslq %r10d,%r10
  lea    0x4(%rax),%r11d
  movzbl (%rdi,%r10,1),%r10d
  xor    %r10b,(%rdx,%r9,1)
  lea    0x4(%rsi),%r10d
  lea    0x4(%rcx),%r9d
  cmp    %r11d,%r8d
  jle    L125
  movslq %r9d,%r9
  movslq %r10d,%r10
  lea    0x5(%rax),%r11d
  movzbl (%rdi,%r10,1),%r10d
  xor    %r10b,(%rdx,%r9,1)
  lea    0x5(%rsi),%r10d
  lea    0x5(%rcx),%r9d
  cmp    %r11d,%r8d
  jle    L125
  movslq %r9d,%r9
  movslq %r10d,%r10
  add    $0x6,%eax
  add    $0x6,%esi
  movzbl (%rdi,%r10,1),%r10d
  add    $0x6,%ecx
  xor    %r10b,(%rdx,%r9,1)
  cmp    %eax,%r8d
  jle    L125
  movslq %ecx,%rcx
  movslq %esi,%rsi
  movzbl (%rdi,%rsi,1),%eax
  xor    %al,(%rdx,%rcx,1)
L125:
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
  nopl   0x0(%rax)
L114:
  sub    %r11,%rbx
  lea    (%rax,%r11,1),%rcx
  mov    %r11,%rax
  add    %rbx,%rdi
  nopl   (%rax)
L41:
  movzbl (%rdi,%rax,1),%esi
  xor    %sil,(%rdx,%rax,1)
  mov    %rax,%rsi
  add    $0x1,%rax
  cmp    %rcx,%rsi
  jne    L41
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
  nopl   0x0(%rax)
L130:
  ret
L154:
  xor    %r9d,%r9d
  xor    %eax,%eax
  add    %rdi,%rbx
  jmp    L126
```

assistant: ```c
void doXor2Arrays(char *source, int srcOff, char *result, int resOff, int length) {
  int srcIndex = srcOff;
  int resIndex = resOff;
  int i = 0;
  for (i = 0; i < length; i++) {
    result[resIndex] = (char)(source[srcIndex] ^ result[resIndex]);
    srcIndex++;
    resIndex++;
  }
}
```