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

```asm
<findK>:
  endbr64
  mov    %rdx,%r9
  test   %esi,%esi
  je     L155
  mov    %esi,%eax
  movslq %esi,%rsi
  mov    (%rdx),%edx
  cmp    %edx,-0x4(%rdi,%rsi,4)
  jle    L151
  push   %r14
  push   %rbp
  push   %rbx
  nopl   0x0(%rax)
L77:
  mov    %r9,%rsi
  mov    %edx,%r11d
  mov    %rdi,%r9
  mov    (%rdi),%edx
  mov    %rsi,%rdi
  mov    %ecx,%esi
  mov    %eax,%ecx
  mov    %esi,%eax
L174:
  movslq %eax,%rsi
  cmp    %edx,-0x4(%rdi,%rsi,4)
  jle    L285
  cmp    $0x1,%ecx
  je     L261
  cmp    $0x1,%eax
  je     L205
  mov    %eax,%esi
  mov    %ecx,%r10d
  shr    $0x1f,%esi
  shr    $0x1f,%r10d
  add    %eax,%esi
  add    %ecx,%r10d
  sar    %esi
  sar    %r10d
  movslq %esi,%rbx
  movslq %r10d,%rbp
  lea    (%rdi,%rbx,4),%rbx
  mov    (%rbx),%r14d
  cmp    %r14d,(%r9,%rbp,4)
  jl     L161
  lea    (%r10,%rsi,1),%ebp
  cmp    %r8d,%ebp
  jge    L134
  sub    %esi,%r8d
  test   $0x1,%al
  je     L116
  lea    0x1(%rsi),%eax
  mov    %rbx,%rdi
  nopw   0x0(%rax,%rax,1)
L161:
  test   %eax,%eax
  je     L82
  movslq %eax,%rsi
  cmp    %edx,-0x4(%rdi,%rsi,4)
  jg     L77
  cmp    %eax,%r8d
  jg     L149
L167:
  movslq %r8d,%r8
  pxor   %xmm0,%xmm0
  pop    %rbx
  pop    %rbp
  cvtsi2sdl -0x4(%rdi,%r8,4),%xmm0
  pop    %r14
  ret
  nopl   0x0(%rax)
L261:
  mov    %eax,%esi
  shr    $0x1f,%esi
  add    %eax,%esi
  sar    %esi
  movslq %esi,%r10
  lea    (%rdi,%r10,4),%r10
  mov    (%r10),%r11d
  cmp    %edx,%r11d
  jle    L257
  lea    0x1(%rsi),%r11d
  cmp    %r8d,%r11d
  jge    L223
  sub    %esi,%r8d
  test   $0x1,%al
  je     L283
  mov    %r11d,%eax
  mov    %r10,%rdi
  jmp    L161
  nopl   0x0(%rax,%rax,1)
L205:
  mov    %edx,%eax
  mov    %r11d,%edx
  mov    %eax,%r11d
  mov    %ecx,%eax
  mov    %r9,%rcx
  mov    %rdi,%r9
  mov    %rcx,%rdi
L185:
  mov    $0x1,%ecx
  cmp    %r11d,%edx
  jg     L174
  mov    %rdi,%rax
  mov    %r9,%rdi
  mov    %rax,%r9
  mov    $0x1,%eax
  cmp    %eax,%r8d
  jle    L167
  jmp    L149
  nopl   (%rax)
L257:
  cmp    %r8d,%esi
  jge    L167
  sub    %esi,%r8d
  test   $0x1,%al
  je     L234
  lea    0x1(%rsi),%eax
  mov    %r10,%rdi
  jmp    L185
  nopl   0x0(%rax,%rax,1)
L134:
  mov    %rdi,%rsi
  mov    %eax,%ecx
  mov    %r9,%rdi
  mov    %r11d,%edx
  mov    %r10d,%eax
  mov    %rsi,%r9
  jmp    L161
  cs nopw 0x0(%rax,%rax,1)
L223:
  mov    %esi,%eax
  jmp    L161
  nopw   0x0(%rax,%rax,1)
L116:
  mov    %esi,%eax
  mov    %rbx,%rdi
  jmp    L161
  nopw   0x0(%rax,%rax,1)
L234:
  mov    %esi,%eax
  mov    %r10,%rdi
  jmp    L185
  nopw   0x0(%rax,%rax,1)
L283:
  mov    %esi,%eax
  mov    %r10,%rdi
  jmp    L161
  nopw   0x0(%rax,%rax,1)
L285:
  cmp    %r8d,%eax
  jge    L167
L149:
  sub    %eax,%r8d
  pxor   %xmm0,%xmm0
  pop    %rbx
  pop    %rbp
  movslq %r8d,%r8
  pop    %r14
  cvtsi2sdl -0x4(%r9,%r8,4),%xmm0
  ret
L82:
  mov    %r9,%rdi
  jmp    L167
L155:
  movslq %r8d,%r8
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x4(%rdx,%r8,4),%xmm0
  ret
L151:
  cmp    %eax,%r8d
  jle    L111
  sub    %eax,%r8d
  pxor   %xmm0,%xmm0
  movslq %r8d,%r8
  cvtsi2sdl -0x4(%r9,%r8,4),%xmm0
  ret
L111:
  movslq %r8d,%r8
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0x4(%rdi,%r8,4),%xmm0
  ret
```

assistant: ```c
double findK(int *n1, int s1, int *n2, int s2, int k) {
  if (s1 == 0)
    return n2[k - 1];
  if (n1[s1 - 1] <= n2[0])
    return (double)(k > s1 ? n2[k - s1 - 1] : n1[k - 1]);
  if (n2[s2 - 1] <= n1[0])
    return (double)(k > s2 ? n1[k - s2 - 1] : n2[k - 1]);
  if (s1 == 1) {
    if (n1[0] < n2[s2 / 2]) {
      if (k <= s2 / 2 + 1)
        return findK(n2, s2 / 2, n1, s1, k);
      else
        return findK(&(n2[s2 / 2]), (s2 % 2 ? s2 / 2 + 1 : s2 / 2), n1, s1, k - s2 / 2);
    } else {
      if (k <= s2 / 2)
        return findK(n1, 0, n2, s2 / 2, k);
      else
        return findK(n1, s1, &(n2[s2 / 2]), (s2 % 2 ? s2 / 2 + 1 : s2 / 2), k - s2 / 2);
    }
  }
  if (s2 == 1) {
    return findK(n2, s2, n1, s1, k);
  }
  if (n1[s1 / 2] >= n2[s2 / 2]) {
    if (k <= s1 / 2 + s2 / 2)
      return findK(n1, s1 / 2, n2, s2, k);
    else
      return findK(&(n2[s2 / 2]), (s2 % 2 ? s2 / 2 + 1 : s2 / 2), n1, s1, k - s2 / 2);
  } else
    return findK(n2, s2, n1, s1, k);
}
```