user: Demonstrate the C code that generates the assembly output below:

```asm
<SetStandby>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,%eax
  mov    %al,-0x14(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movzbl -0x14(%rbp),%eax
  cmp    $0xb,%eax
  ja     L113
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D2(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D2(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    $0x0,%esi
  mov    $0x81,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x250,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x264,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x10,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x90,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x20,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%edi
  call   <DrvSw@plt>
  mov    $0x0,%edi
  call   <AfDrvSw@plt>
  mov    $0x1,%edi
  call   <SelectGySleep@plt>
  jmp    L113
  mov    $0x0,%edi
  call   <SelectGySleep@plt>
  mov    $0x80,%esi
  mov    $0x30,%edi
  call   <RegWriteA@plt>
  mov    $0x1,%edi
  call   <DrvSw@plt>
  mov    $0x1,%edi
  call   <AfDrvSw@plt>
  mov    $0xc0,%esi
  mov    $0x20,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x90,%edi
  call   <RegWriteA@plt>
  mov    $0xc0,%esi
  mov    $0x10,%edi
  call   <RegWriteA@plt>
  mov    $0x5,%esi
  mov    $0x264,%edi
  call   <RegWriteA@plt>
  mov    $0xdf,%esi
  mov    $0x250,%edi
  call   <RegWriteA@plt>
  jmp    L113
  mov    $0x0,%esi
  mov    $0x81,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x250,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x264,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x10,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x90,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x20,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%edi
  call   <DrvSw@plt>
  mov    $0x0,%edi
  call   <AfDrvSw@plt>
  mov    $0x1,%edi
  call   <SelectGySleep@plt>
  mov    $0x0,%esi
  mov    $0x20b,%edi
  call   <RegWriteA@plt>
  jmp    L113
  mov    $0x1f,%esi
  mov    $0x20b,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%edi
  call   <SelectGySleep@plt>
  mov    $0x80,%esi
  mov    $0x30,%edi
  call   <RegWriteA@plt>
  mov    $0x1,%edi
  call   <DrvSw@plt>
  mov    $0x1,%edi
  call   <AfDrvSw@plt>
  mov    $0xc0,%esi
  mov    $0x20,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x90,%edi
  call   <RegWriteA@plt>
  mov    $0xc0,%esi
  mov    $0x10,%edi
  call   <RegWriteA@plt>
  mov    $0x5,%esi
  mov    $0x264,%edi
  call   <RegWriteA@plt>
  mov    $0xdf,%esi
  mov    $0x250,%edi
  call   <RegWriteA@plt>
  jmp    L113
  mov    $0x0,%esi
  mov    $0x81,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x250,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x264,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x10,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x90,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x20,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%edi
  call   <DrvSw@plt>
  mov    $0x0,%edi
  call   <AfDrvSw@plt>
  mov    $0x1,%edi
  call   <SelectGySleep@plt>
  mov    $0x0,%esi
  mov    $0x20b,%edi
  call   <RegWriteA@plt>
  mov    $0x1,%esi
  mov    $0x248,%edi
  call   <RegWriteA@plt>
  mov    $0x2,%esi
  mov    $0x256,%edi
  call   <RegWriteA@plt>
  jmp    L113
  mov    $0x0,%esi
  mov    $0x256,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x248,%edi
  call   <RegWriteA@plt>
  mov    $0x1f,%esi
  mov    $0x20b,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%edi
  call   <SelectGySleep@plt>
  mov    $0x80,%esi
  mov    $0x30,%edi
  call   <RegWriteA@plt>
  mov    $0x1,%edi
  call   <DrvSw@plt>
  mov    $0x1,%edi
  call   <AfDrvSw@plt>
  mov    $0xc0,%esi
  mov    $0x20,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x90,%edi
  call   <RegWriteA@plt>
  mov    $0xc0,%esi
  mov    $0x10,%edi
  call   <RegWriteA@plt>
  mov    $0x5,%esi
  mov    $0x264,%edi
  call   <RegWriteA@plt>
  mov    $0xdf,%esi
  mov    $0x250,%edi
  call   <RegWriteA@plt>
  jmp    L113
  mov    $0x0,%esi
  mov    $0x81,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x250,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x264,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x10,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x90,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x20,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%edi
  call   <DrvSw@plt>
  mov    $0x0,%edi
  call   <AfDrvSw@plt>
  mov    $0x0,%eax
  call   <GyOutSignalCont@plt>
  mov    $0x4,%esi
  mov    $0x20b,%edi
  call   <RegWriteA@plt>
  jmp    L113
  mov    $0x1f,%esi
  mov    $0x20b,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%edi
  call   <SelectGySleep@plt>
  mov    $0x80,%esi
  mov    $0x30,%edi
  call   <RegWriteA@plt>
  mov    $0x1,%edi
  call   <DrvSw@plt>
  mov    $0x1,%edi
  call   <AfDrvSw@plt>
  mov    $0xc0,%esi
  mov    $0x20,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x90,%edi
  call   <RegWriteA@plt>
  mov    $0xc0,%esi
  mov    $0x10,%edi
  call   <RegWriteA@plt>
  mov    $0x5,%esi
  mov    $0x264,%edi
  call   <RegWriteA@plt>
  mov    $0xdf,%esi
  mov    $0x250,%edi
  call   <RegWriteA@plt>
  jmp    L113
  lea    -0xa(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x250,%edi
  call   <RegReadA@plt>
  movzbl -0xa(%rbp),%eax
  and    $0xffffff80,%eax
  mov    %al,-0xa(%rbp)
  movzbl -0xa(%rbp),%eax
  movzbl %al,%eax
  mov    %eax,%esi
  mov    $0x250,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x10,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x20,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%edi
  call   <DrvSw@plt>
  mov    $0x1,%edi
  call   <SelectGySleep@plt>
  lea    -0x9(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x20b,%edi
  call   <RegReadA@plt>
  movzbl -0x9(%rbp),%eax
  and    $0x1a,%eax
  mov    %al,-0x9(%rbp)
  movzbl -0x9(%rbp),%eax
  movzbl %al,%eax
  mov    %eax,%esi
  mov    $0x20b,%edi
  call   <RegWriteA@plt>
  jmp    L113
  lea    -0x9(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x20b,%edi
  call   <RegReadA@plt>
  movzbl -0x9(%rbp),%eax
  or     $0x5,%eax
  mov    %al,-0x9(%rbp)
  movzbl -0x9(%rbp),%eax
  movzbl %al,%eax
  mov    %eax,%esi
  mov    $0x20b,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%edi
  call   <SelectGySleep@plt>
  mov    $0x80,%esi
  mov    $0x30,%edi
  call   <RegWriteA@plt>
  mov    $0x1,%edi
  call   <DrvSw@plt>
  mov    $0xc0,%esi
  mov    $0x20,%edi
  call   <RegWriteA@plt>
  mov    $0xc0,%esi
  mov    $0x10,%edi
  call   <RegWriteA@plt>
  lea    -0xa(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x250,%edi
  call   <RegReadA@plt>
  movzbl -0xa(%rbp),%eax
  or     $0x5f,%eax
  mov    %al,-0xa(%rbp)
  movzbl -0xa(%rbp),%eax
  movzbl %al,%eax
  mov    %eax,%esi
  mov    $0x250,%edi
  call   <RegWriteA@plt>
  jmp    L113
  mov    $0x0,%esi
  mov    $0x81,%edi
  call   <RegWriteA@plt>
  lea    -0xa(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x250,%edi
  call   <RegReadA@plt>
  movzbl -0xa(%rbp),%eax
  and    $0x7f,%eax
  mov    %al,-0xa(%rbp)
  movzbl -0xa(%rbp),%eax
  movzbl %al,%eax
  mov    %eax,%esi
  mov    $0x250,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x264,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%esi
  mov    $0x90,%edi
  call   <RegWriteA@plt>
  mov    $0x0,%edi
  call   <AfDrvSw@plt>
  lea    -0x9(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x20b,%edi
  call   <RegReadA@plt>
  movzbl -0x9(%rbp),%eax
  and    $0x7,%eax
  mov    %al,-0x9(%rbp)
  movzbl -0x9(%rbp),%eax
  movzbl %al,%eax
  mov    %eax,%esi
  mov    $0x20b,%edi
  call   <RegWriteA@plt>
  jmp    L113
  lea    -0x9(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x20b,%edi
  call   <RegReadA@plt>
  movzbl -0x9(%rbp),%eax
  or     $0x18,%eax
  mov    %al,-0x9(%rbp)
  movzbl -0x9(%rbp),%eax
  movzbl %al,%eax
  mov    %eax,%esi
  mov    $0x20b,%edi
  call   <RegWriteA@plt>
  mov    $0x1,%edi
  call   <AfDrvSw@plt>
  mov    $0x0,%esi
  mov    $0x90,%edi
  call   <RegWriteA@plt>
  mov    $0x5,%esi
  mov    $0x264,%edi
  call   <RegWriteA@plt>
  lea    -0xa(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x250,%edi
  call   <RegReadA@plt>
  movzbl -0xa(%rbp),%eax
  or     $0xffffff80,%eax
  mov    %al,-0xa(%rbp)
  movzbl -0xa(%rbp),%eax
  movzbl %al,%eax
  mov    %eax,%esi
  mov    $0x250,%edi
  call   <RegWriteA@plt>
  nop
L113:
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L115
  call   <__stack_chk_fail@plt>
L115:
  leave
  ret
```

assistant: ```c
void SetStandby(unsigned char UcContMode) {
  unsigned char UcStbb0, UcClkon;
  switch (UcContMode) {
  case 0x00:
    RegWriteA(0x0081, 0x00);
    RegWriteA(0x0250, 0x00);
    RegWriteA(0x0264, 0x00);
    RegWriteA(0x0010, 0x00);
    RegWriteA(0x0090, 0x00);
    RegWriteA(0x0020, 0x00);
    DrvSw(0x00);
    AfDrvSw(0x00);
    SelectGySleep(0x01);
    break;
  case 0x01:
    SelectGySleep(0x00);
    RegWriteA(0x0030, 0x80);
    DrvSw(0x01);
    AfDrvSw(0x01);
    RegWriteA(0x0020, 0xC0);
    RegWriteA(0x0090, 0x00);
    RegWriteA(0x0010, 0xC0);
    RegWriteA(0x0264, 0x05);
    RegWriteA(0x0250, 0xDF);
    break;
  case 0x02:
    RegWriteA(0x0081, 0x00);
    RegWriteA(0x0250, 0x00);
    RegWriteA(0x0264, 0x00);
    RegWriteA(0x0010, 0x00);
    RegWriteA(0x0090, 0x00);
    RegWriteA(0x0020, 0x00);
    DrvSw(0x00);
    AfDrvSw(0x00);
    SelectGySleep(0x01);
    RegWriteA(0x020B, 0x00);
    break;
  case 0x03:
    RegWriteA(0x020B, 0x1F);
    SelectGySleep(0x00);
    RegWriteA(0x0030, 0x80);
    DrvSw(0x01);
    AfDrvSw(0x01);
    RegWriteA(0x0020, 0xC0);
    RegWriteA(0x0090, 0x00);
    RegWriteA(0x0010, 0xC0);
    RegWriteA(0x0264, 0x05);
    RegWriteA(0x0250, 0xDF);
    break;
  case 0x04:
    RegWriteA(0x0081, 0x00);
    RegWriteA(0x0250, 0x00);
    RegWriteA(0x0264, 0x00);
    RegWriteA(0x0010, 0x00);
    RegWriteA(0x0090, 0x00);
    RegWriteA(0x0020, 0x00);
    DrvSw(0x00);
    AfDrvSw(0x00);
    SelectGySleep(0x01);
    RegWriteA(0x020B, 0x00);
    RegWriteA(0x0248, 0x01);
    RegWriteA(0x0256, 0x02);
    break;
  case 0x05:
    RegWriteA(0x0256, 0x00);
    RegWriteA(0x0248, 0x00);
    RegWriteA(0x020B, 0x1F);
    SelectGySleep(0x00);
    RegWriteA(0x0030, 0x80);
    DrvSw(0x01);
    AfDrvSw(0x01);
    RegWriteA(0x0020, 0xC0);
    RegWriteA(0x0090, 0x00);
    RegWriteA(0x0010, 0xC0);
    RegWriteA(0x0264, 0x05);
    RegWriteA(0x0250, 0xDF);
    break;
  case 0x06:
    RegWriteA(0x0081, 0x00);
    RegWriteA(0x0250, 0x00);
    RegWriteA(0x0264, 0x00);
    RegWriteA(0x0010, 0x00);
    RegWriteA(0x0090, 0x00);
    RegWriteA(0x0020, 0x00);
    DrvSw(0x00);
    AfDrvSw(0x00);
    GyOutSignalCont();
    RegWriteA(0x020B, 0x04);
    break;
  case 0x07:
    RegWriteA(0x020B, 0x1F);
    SelectGySleep(0x00);
    RegWriteA(0x0030, 0x80);
    DrvSw(0x01);
    AfDrvSw(0x01);
    RegWriteA(0x0020, 0xC0);
    RegWriteA(0x0090, 0x00);
    RegWriteA(0x0010, 0xC0);
    RegWriteA(0x0264, 0x05);
    RegWriteA(0x0250, 0xDF);
    break;
  case 0x08:
    RegReadA(0x0250, &UcStbb0);
    UcStbb0 &= 0x80;
    RegWriteA(0x0250, UcStbb0);
    RegWriteA(0x0010, 0x00);
    RegWriteA(0x0020, 0x00);
    DrvSw(0x00);
    SelectGySleep(0x01);
    RegReadA(0x020B, &UcClkon);
    UcClkon &= 0x1A;
    RegWriteA(0x020B, UcClkon);
    break;
  case 0x09:
    RegReadA(0x020B, &UcClkon);
    UcClkon |= 0x05;
    RegWriteA(0x020B, UcClkon);
    SelectGySleep(0x00);
    RegWriteA(0x0030, 0x80);
    DrvSw(0x01);
    RegWriteA(0x0020, 0xC0);
    RegWriteA(0x0010, 0xC0);
    RegReadA(0x0250, &UcStbb0);
    UcStbb0 |= 0x5F;
    RegWriteA(0x0250, UcStbb0);
    break;
  case 0x0A:
    RegWriteA(0x0081, 0x00);
    RegReadA(0x0250, &UcStbb0);
    UcStbb0 &= 0x7F;
    RegWriteA(0x0250, UcStbb0);
    RegWriteA(0x0264, 0x00);
    RegWriteA(0x0090, 0x00);
    AfDrvSw(0x00);
    RegReadA(0x020B, &UcClkon);
    UcClkon &= 0x07;
    RegWriteA(0x020B, UcClkon);
    break;
  case 0x0B:
    RegReadA(0x020B, &UcClkon);
    UcClkon |= 0x18;
    RegWriteA(0x020B, UcClkon);
    AfDrvSw(0x01);
    RegWriteA(0x0090, 0x00);
    RegWriteA(0x0264, 0x05);
    RegReadA(0x0250, &UcStbb0);
    UcStbb0 |= 0x80;
    RegWriteA(0x0250, UcStbb0);
    break;
  }
}
```