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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0x28(%rbp),%rax
  mov    %rax,%rsi
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  jmp    L47
L35:
  lea    -0x40(%rbp),%rdi
  lea    -0x48(%rbp),%rsi
  lea    -0x50(%rbp),%rcx
  lea    -0x30(%rbp),%rdx
  lea    -0x38(%rbp),%rax
  mov    %rdi,%r9
  mov    %rsi,%r8
  mov    %rax,%rsi
  lea    D50(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    -0x38(%rbp),%rdx
  mov    -0x50(%rbp),%rax
  imul   %rdx,%rax
  mov    %rax,-0x20(%rbp)
  mov    -0x30(%rbp),%rdx
  mov    -0x48(%rbp),%rax
  imul   %rdx,%rax
  mov    %rax,-0x18(%rbp)
  mov    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x50(%rbp),%rdx
  mov    -0x48(%rbp),%rax
  cmp    %rax,%rdx
  jne    L93
  mov    -0x10(%rbp),%rax
  mov    %rax,%rsi
  lea    D56(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L47
L93:
  mov    -0x50(%rbp),%rdx
  mov    -0x48(%rbp),%rax
  cmp    %rax,%rdx
  jae    L104
  mov    -0x50(%rbp),%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    -0x48(%rbp),%rax
  cmp    %rax,%rdx
  jae    L31
  mov    -0x50(%rbp),%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    -0x30(%rbp),%rax
  imul   %rax,%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,%rsi
  lea    D56(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L47
L31:
  mov    -0x10(%rbp),%rax
  mov    %rax,%rsi
  lea    D56(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L47
L104:
  mov    -0x48(%rbp),%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    -0x50(%rbp),%rax
  cmp    %rax,%rdx
  jae    L99
  mov    -0x48(%rbp),%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    -0x38(%rbp),%rax
  imul   %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,%rsi
  lea    D56(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L47
L99:
  mov    -0x10(%rbp),%rax
  mov    %rax,%rsi
  lea    D56(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L47:
  mov    -0x28(%rbp),%rax
  lea    -0x1(%rax),%rdx
  mov    %rdx,-0x28(%rbp)
  test   %rax,%rax
  jne    L35
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L92
  call   <__stack_chk_fail@plt>
L92:
  leave
  ret
```

tool_calls: name: read_data
arguments: label: D48
datatype: string
name: read_data
arguments: label: D50
datatype: string
name: read_data
arguments: label: D56
datatype: string

tool: D48: %llu

tool: D50: %llu%llu%llu%llu%llu

tool: D56: %llu


assistant: ```c
int main() {
  unsigned long long i, j, x, y, z, cost, costb, costw, b, w, t;
  scanf("%llu", &t);
  while (t--) {
    scanf("%llu%llu%llu%llu%llu", &b, &w, &x, &y, &z);
    costb = b * x;
    costw = w * y;
    cost = costb + costw;
    if (x == y)
      printf("%llu\n", cost);
    else if (x < y) {
      if ((x + z) < y)
        printf("%llu\n", ((w * x) + (w * z)) + costb);
      else
        printf("%llu\n", cost);
    } else {
      if ((y + z) < x)
        printf("%llu\n", ((b * y) + (b * z)) + costw);
      else
        printf("%llu\n", cost);
    }
  }
  return 0;
}
```