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

```asm
<sample_Y>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %edi,-0x24(%rbp)
  mov    %esi,-0x28(%rbp)
  mov    %edx,-0x2c(%rbp)
  mov    %ecx,-0x30(%rbp)
  mov    %r8,-0x38(%rbp)
  mov    %r9,-0x40(%rbp)
  movl   $0x0,-0x18(%rbp)
  mov    -0x30(%rbp),%edx
  mov    -0x30(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <make2Darray_int_continuousMem@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x2c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    0x10(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x24(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x28(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  mov    (%rax),%rcx
  mov    -0x8(%rbp),%rdx
  mov    -0x30(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Proposal@plt>
  mov    %eax,-0x18(%rbp)
  cmpl   $0x1,-0x18(%rbp)
  jne    L33
  mov    -0x2c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edi
  mov    -0x8(%rbp),%r8
  mov    -0x30(%rbp),%ecx
  mov    -0x2c(%rbp),%edx
  mov    -0x28(%rbp),%esi
  mov    -0x24(%rbp),%eax
  push   %rdi
  push   -0x38(%rbp)
  mov    0x10(%rbp),%r9
  mov    %eax,%edi
  call   <post_dratio@plt>
  add    $0x10,%rsp
  movq   %xmm0,%rax
  mov    %rax,-0x10(%rbp)
  movsd  -0x10(%rbp),%xmm0
  movsd  D17(%rip),%xmm1
  comisd %xmm1,%xmm0
  jbe    L59
  movsd  D17(%rip),%xmm0
  movsd  %xmm0,-0x10(%rbp)
L59:
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <rbernoulli@plt>
  mov    %eax,-0x14(%rbp)
  cmpl   $0x1,-0x14(%rbp)
  jne    L33
  movl   $0x0,-0x20(%rbp)
  jmp    L4
L36:
  movl   $0x0,-0x1c(%rbp)
  jmp    L30
L51:
  mov    -0x20(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    -0x2c(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    0x10(%rbp),%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rcx
  mov    -0x24(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x3,%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rcx
  mov    -0x28(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x3,%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rcx
  mov    -0x20(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x3,%rdx
  add    %rcx,%rdx
  mov    (%rdx),%rcx
  mov    -0x1c(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x2,%rdx
  add    %rcx,%rdx
  mov    (%rax),%eax
  mov    %eax,(%rdx)
  addl   $0x1,-0x1c(%rbp)
L30:
  mov    -0x1c(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L51
  addl   $0x1,-0x20(%rbp)
L4:
  mov    -0x20(%rbp),%eax
  cmp    -0x30(%rbp),%eax
  jl     L36
L33:
  mov    -0x30(%rbp),%edx
  mov    -0x30(%rbp),%ecx
  mov    -0x8(%rbp),%rax
  mov    %ecx,%esi
  mov    %rax,%rdi
  call   <delet2Darray_int_continuousMem@plt>
  nop
  leave
  ret
```

tool_calls: name: parse_data
arguments: tag: D17
type_guessed: f64

tool: D17: 1

assistant: ```c
void sample_Y(int d, int r, int n, int p, double ****Lambda_t, int *cla_t, int *****Y_t) {
  int mark = 0;
  int **Y_proposal;
  Y_proposal = make2Darray_int_continuousMem(p, p);
  mark = Proposal(p, Y_t[n][d][r], Y_proposal);
  int tmp;
  double ratio;
  if (mark == 1) {
    ratio = post_dratio(d, r, n, p, Y_proposal, Y_t, Lambda_t, cla_t[n]);
    if (ratio > 1.0) {
      ratio = 1.0;
    }
    tmp = rbernoulli(ratio);
    if (tmp == 1) {
      for (int i = 0; i < p; i++) {
        for (int j = 0; j < p; j++) {
          Y_t[n][d][r][i][j] = Y_proposal[i][j];
        }
      }
    }
  }
  delet2Darray_int_continuousMem(Y_proposal, p, p);
}
```