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

```asm
<generate_upc_psk_twg8x0>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rsi,%rbx
  mov    $0x9,%esi
  sub    $0x20,%rsp
  imul   $0x3e8,0x4(%rdi),%edx
  mov    %fs:0x28,%rax
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  mov    0x8(%rdi),%eax
  lea    (%rax,%rax,4),%eax
  lea    (%rdx,%rax,2),%eax
  add    0xc(%rdi),%eax
  imul   0x10(%rdi),%eax
  lea    0xf(%rsp),%rdi
  lea    (%rax,%rax,4),%edx
  lea    (%rax,%rdx,2),%ecx
  movslq %ecx,%rax
  mov    %ecx,%edx
  imul   $0x55e63b89,%rax,%rax
  sar    $0x1f,%edx
  sar    $0x39,%rax
  sub    %edx,%eax
  lea    D3(%rip),%rdx
  imul   $0x5f5e100,%eax,%eax
  sub    %eax,%ecx
  call   <snprintf@plt>
  movsbl 0x10(%rsp),%ecx
  movsbl 0xf(%rsp),%eax
  movsbl 0x11(%rsp),%esi
  movsbl 0x12(%rsp),%edi
  mov    %ecx,%edx
  movsbl 0x13(%rsp),%r8d
  movsbl 0x16(%rsp),%ebp
  imul   %eax,%edx
  movsbl 0x14(%rsp),%r9d
  movsbl 0x15(%rsp),%r10d
  imul   %esi,%ecx
  imul   %edi,%esi
  movslq %edx,%r11
  mov    %edx,%r12d
  imul   $0x4ec4ec4f,%r11,%r11
  sar    $0x1f,%r12d
  sar    $0x23,%r11
  sub    %r12d,%r11d
  mov    %ecx,%r12d
  imul   $0x1a,%r11d,%r11d
  sar    $0x1f,%r12d
  sub    %r11d,%edx
  movslq %ecx,%r11
  imul   $0x4ec4ec4f,%r11,%r11
  add    $0x41,%edx
  movzbl %dl,%edx
  sar    $0x23,%r11
  sub    %r12d,%r11d
  mov    %esi,%r12d
  imul   $0x1a,%r11d,%r11d
  sar    $0x1f,%r12d
  sub    %r11d,%ecx
  movslq %esi,%r11
  imul   $0x4ec4ec4f,%r11,%r11
  add    $0x41,%ecx
  movzbl %cl,%ecx
  sar    $0x23,%r11
  sub    %r12d,%r11d
  imul   %r8d,%edi
  imul   $0x1a,%r11d,%r11d
  imul   %r9d,%r8d
  mov    %edi,%r12d
  imul   %r10d,%r9d
  sub    %r11d,%esi
  sar    $0x1f,%r12d
  imul   %ebp,%r10d
  movslq %edi,%r11
  imul   $0x4ec4ec4f,%r11,%r11
  add    $0x41,%esi
  movzbl %sil,%esi
  sar    $0x23,%r11
  sub    %r12d,%r11d
  mov    %r8d,%r12d
  imul   $0x1a,%r11d,%r11d
  sar    $0x1f,%r12d
  sub    %r11d,%edi
  movslq %r8d,%r11
  imul   $0x4ec4ec4f,%r11,%r11
  add    $0x41,%edi
  movzbl %dil,%edi
  sar    $0x23,%r11
  sub    %r12d,%r11d
  mov    %r9d,%r12d
  imul   $0x1a,%r11d,%r11d
  sar    $0x1f,%r12d
  sub    %r11d,%r8d
  movslq %r9d,%r11
  imul   $0x4ec4ec4f,%r11,%r11
  add    $0x41,%r8d
  movzbl %r8b,%r8d
  sar    $0x23,%r11
  sub    %r12d,%r11d
  mov    %r10d,%r12d
  imul   $0x1a,%r11d,%r11d
  sar    $0x1f,%r12d
  sub    %r11d,%r9d
  movslq %r10d,%r11
  imul   $0x4ec4ec4f,%r11,%r11
  add    $0x41,%r9d
  movzbl %r9b,%r9d
  sar    $0x23,%r11
  sub    %r12d,%r11d
  imul   %ebp,%eax
  imul   $0x1a,%r11d,%r11d
  mov    %eax,%ebp
  sub    %r11d,%r10d
  movslq %eax,%r11
  sar    $0x1f,%ebp
  imul   $0x4ec4ec4f,%r11,%r11
  add    $0x41,%r10d
  movzbl %r10b,%r10d
  sar    $0x23,%r11
  sub    %ebp,%r11d
  imul   $0x1a,%r11d,%r11d
  sub    %r11d,%eax
  add    $0x41,%eax
  movzbl %al,%eax
  shl    $0x8,%rax
  or     %r10,%rax
  shl    $0x8,%rax
  or     %r9,%rax
  shl    $0x8,%rax
  or     %r8,%rax
  shl    $0x8,%rax
  or     %rdi,%rax
  shl    $0x8,%rax
  or     %rsi,%rax
  shl    $0x8,%rax
  or     %rcx,%rax
  shl    $0x8,%rax
  or     %rdx,%rax
  mov    %rax,(%rbx)
  mov    0x18(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L9
  add    $0x20,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L9:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: tag: D3
type_infered: string

tool: D3: %08d

assistant: ```c
void generate_upc_psk_twg8x0(uint32_t *sn, char *psk) {
  char base[9];
  snprintf(base, 9, "%08d", (sn[1] * 1000 + sn[2] * 10 + sn[3]) * sn[4] * 11 % 100000000);
  int32_t i = 0;
  for (i = 0; i < 8; i++) {
    psk[i] = base[i] * base[(i + 1) % 8] % 26 + 0x41;
  }
}
```