user: 下面的汇编指令对应的C源代码是什么：

```asm
<encontraValor>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x14(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %edx,-0x18(%rbp)
  mov    %ecx,-0x24(%rbp)
  movl   $0x0,-0x8(%rbp)
  mov    D0(%rip),%rax
  mov    (%rax),%eax
  mov    %eax,-0x4(%rbp)
  movl   $0x0,-0x8(%rbp)
  jmp    L46
L62:
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2ssl -0x14(%rbp),%xmm1
  ucomiss %xmm1,%xmm0
  jp     L61
  ucomiss %xmm1,%xmm0
  jne    L61
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvttss2si %xmm0,%eax
  jmp    L107
L61:
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x4(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jbe    L145
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  comiss %xmm1,%xmm0
  jbe    L145
  mov    -0x8(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  cvttss2si %xmm0,%eax
  mov    %eax,-0x4(%rbp)
L145:
  addl   $0x1,-0x8(%rbp)
L46:
  mov    -0x8(%rbp),%eax
  cmp    -0x18(%rbp),%eax
  jl     L62
  movl   $0x1,-0x8(%rbp)
  jmp    L163
L183:
  addl   $0x1,-0x8(%rbp)
L163:
  mov    -0x8(%rbp),%eax
  imul   -0x4(%rbp),%eax
  cmp    %eax,-0x14(%rbp)
  jne    L183
  mov    -0x8(%rbp),%eax
  imul   -0x4(%rbp),%eax
  cmp    %eax,-0x14(%rbp)
  jne    L140
  mov    -0x8(%rbp),%eax
  imul   -0x4(%rbp),%eax
  jmp    L107
L140:
  movl   $0x1,-0x8(%rbp)
  jmp    L155
L101:
  movl   $0x1,-0x24(%rbp)
  jmp    L109
L57:
  cmpl   $0x19,-0x24(%rbp)
  je     L20
  addl   $0x1,-0x24(%rbp)
L109:
  mov    -0x24(%rbp),%eax
  imul   -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x24(%rbp),%eax
  imul   -0x14(%rbp),%eax
  cmp    %eax,%edx
  jne    L57
  jmp    L4
L20:
  nop
L4:
  addl   $0x1,-0x8(%rbp)
L155:
  mov    -0x8(%rbp),%eax
  imul   -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x24(%rbp),%eax
  imul   -0x14(%rbp),%eax
  cmp    %eax,%edx
  jne    L101
  mov    -0x8(%rbp),%eax
  imul   -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x24(%rbp),%eax
  imul   -0x14(%rbp),%eax
  cmp    %eax,%edx
  jne    L80
  mov    -0x8(%rbp),%eax
  imul   -0x4(%rbp),%eax
  jmp    L107
L80:
  mov    $0x0,%eax
L107:
  pop    %rbp
  ret
```

assistant: ```c
int encontraValor(int procurado, float referencia[], int tam, int j) {
  int i = 0, menor = INT_MAX;
  for (i = 0; i < tam; i++) {
    if (referencia[i] == procurado) {
      return referencia[i];
    }
    if (referencia[i] < menor && referencia[i] > 0) {
      menor = referencia[i];
    }
  }
  for (i = 1; i * menor != procurado; i++)
    ;
  if (i * menor == procurado) {
    return i * menor;
  } else {
    for (i = 1; i * menor != j * procurado; i++) {
      for (j = 1; j * menor != j * procurado; j++) {
        if (j == 25) {
          break;
        }
      }
    }
    if (i * menor == j * procurado) {
      return i * menor;
    }
  }
  return 0;
}
```