user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<getEfficiency_matchl32>:
  endbr64
  mov    %esi,%eax
  mov    %edx,%r8d
  mov    %edi,%r10d
  mov    %ecx,%edi
  cltd
  imul   %r10d,%edi
  push   %rbp
  pxor   %xmm3,%xmm3
  idiv   %ecx
  push   %rbx
  movsd  D12(%rip),%xmm4
  lea    0x3e(%rdi),%ebx
  pxor   %xmm1,%xmm1
  pxor   %xmm0,%xmm0
  mov    %edi,%ebp
  pxor   %xmm2,%xmm2
  mov    %eax,%esi
  mov    %r8d,%eax
  mov    %edx,%r11d
  cltd
  mov    %r11d,%r8d
  idiv   %ecx
  imul   %r10d,%r8d
  mov    %edi,%ecx
  mov    %edx,%r9d
  imul   %r10d,%r9d
  cmp    %r9d,%r8d
  mov    %r9d,%r10d
  cmovle %r8d,%r10d
  add    $0x1f,%ecx
  cmovns %ecx,%ebx
  sar    $0x1f,%ebp
  shr    $0x1b,%ebp
  sar    $0x5,%ebx
  cvtsi2sd %ebx,%xmm3
  lea    (%rdi,%rbp,1),%ebx
  and    $0x1f,%ebx
  sub    %ebp,%ebx
  test   %edi,%edi
  cmovns %edi,%ecx
  cvtsi2sd %ebx,%xmm1
  mov    %r8d,%ebx
  sar    $0x1f,%ebx
  sar    $0x5,%ecx
  shr    $0x1b,%ebx
  cvtsi2sd %ecx,%xmm0
  lea    (%r8,%rbx,1),%ecx
  mulsd  %xmm4,%xmm1
  and    $0x1f,%ecx
  sub    %ebx,%ecx
  test   %r8d,%r8d
  cvtsi2sd %ecx,%xmm2
  lea    0x1f(%r8),%ecx
  cmovns %r8d,%ecx
  addsd  %xmm0,%xmm1
  sar    $0x5,%ecx
  pxor   %xmm0,%xmm0
  mulsd  %xmm4,%xmm2
  cvtsi2sd %ecx,%xmm0
  divsd  %xmm3,%xmm1
  addsd  %xmm0,%xmm2
  test   %edi,%edi
  jle    L14
  divsd  %xmm3,%xmm2
L16:
  mov    %esi,%ecx
  xor    %edi,%edi
  mov    %r9d,%r8d
  pop    %rbx
  imul   %eax,%ecx
  test   %r11d,%r11d
  pxor   %xmm0,%xmm0
  pop    %rbp
  cmovg  %eax,%edi
  test   %edx,%edx
  pxor   %xmm5,%xmm5
  setg   %dl
  setg   %al
  movzbl %dl,%edx
  imul   %edx,%esi
  xor    %edx,%edx
  test   %r11d,%r11d
  setg   %dl
  sar    $0x1f,%r8d
  shr    $0x1b,%r8d
  and    %eax,%edx
  lea    (%r9,%r8,1),%eax
  and    $0x1f,%eax
  sub    %r8d,%eax
  test   %r9d,%r9d
  mov    %r10d,%r8d
  cvtsi2sd %eax,%xmm0
  lea    0x1f(%r9),%eax
  cmovns %r9d,%eax
  sar    $0x1f,%r8d
  shr    $0x1b,%r8d
  sar    $0x5,%eax
  mulsd  %xmm4,%xmm0
  cvtsi2sd %eax,%xmm5
  lea    (%r10,%r8,1),%eax
  and    $0x1f,%eax
  sub    %r8d,%eax
  test   %r10d,%r10d
  addsd  %xmm5,%xmm0
  pxor   %xmm5,%xmm5
  cvtsi2sd %esi,%xmm5
  divsd  %xmm3,%xmm0
  mulsd  %xmm5,%xmm0
  pxor   %xmm5,%xmm5
  cvtsi2sd %ecx,%xmm5
  mulsd  %xmm5,%xmm1
  pxor   %xmm5,%xmm5
  cvtsi2sd %edi,%xmm5
  mulsd  %xmm5,%xmm2
  addsd  %xmm2,%xmm1
  pxor   %xmm2,%xmm2
  addsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  lea    0x1f(%r10),%eax
  cmovns %r10d,%eax
  sar    $0x5,%eax
  mulsd  %xmm4,%xmm1
  cvtsi2sd %eax,%xmm2
  lea    (%rcx,%rdi,1),%eax
  add    %esi,%eax
  add    %edx,%eax
  addsd  %xmm2,%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sd %edx,%xmm2
  divsd  %xmm3,%xmm1
  mulsd  %xmm2,%xmm1
  addsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  divsd  %xmm1,%xmm0
  ret
  nopl   (%rax)
L14:
  movsd  D1(%rip),%xmm3
  jmp    L16
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D12
data_type: byte[8]
name: extract_symbolic_data
arguments: data_tag: D1
data_type: byte[8]

tool: {"D12": [0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0x3f]}

tool: {"D1": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

assistant: ```c
double getEfficiency_matchl32(int size0, int asize, int bsize, int blockA) {
  double f1, f2, f3, f4, f;
  const int remainder1 = asize % blockA;
  const int remainder2 = bsize % blockA;
  const int ilimit = remainder1 * size0;
  const int olimit = remainder2 * size0;
  const int plain = blockA * size0;
  int minlimit = (ilimit < olimit ? ilimit : olimit);
  f1 = ((plain / 32) + (double)(plain % 32) / 32) / (int)((plain + 31) / 32);
  f2 = ((ilimit / 32) + (double)(ilimit % 32) / 32) / (int)((1 > (plain + 31) / 32 ? 1 : (plain + 31) / 32));
  f3 = ((olimit / 32) + (double)(olimit % 32) / 32) / (int)((1 > (plain + 31) / 32 ? 1 : (plain + 31) / 32));
  f4 = ((minlimit / 32) + (double)(minlimit % 32) / 32) / (int)((1 > (plain + 31) / 32 ? 1 : (plain + 31) / 32));
  int amax = blockA;
  int bmax = blockA;
  int n1, n2, n3, n4;
  n1 = (asize / amax) * (bsize / bmax);
  n2 = (asize % amax > 0) * (bsize / bmax);
  n3 = (asize / amax) * (bsize % bmax > 0);
  n4 = (asize % amax > 0) * (bsize % bmax > 0);
  f = (n1 * f1 + n2 * f2 + n3 * f3 + n4 * f4) / (n1 + n2 + n3 + n4);
  return f;
}
```