#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ AfDrvSw(int);
int /*<<< orphan*/ DrvSw(int);
int /*<<< orphan*/ GyOutSignalCont();
int /*<<< orphan*/ RegReadA(int, unsigned char *);
int /*<<< orphan*/ RegWriteA(int, unsigned char);
int /*<<< orphan*/ SelectGySleep(int);
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;
  }
}


x86 assembly (clang, -O0):
<SetStandby>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %dil,%al
mov    %al,-0x1(%rbp)
movzbl -0x1(%rbp),%eax
mov    %rax,-0x10(%rbp)
sub    $0xb,%rax
ja     1785 <SetStandby+0x625>
mov    -0x10(%rbp),%rax
lea    0xe75(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    $0x81,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x250,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x264,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x10,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x20,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1050 <DrvSw@plt>
xor    %edi,%edi
call   1030 <AfDrvSw@plt>
mov    $0x1,%edi
call   1040 <SelectGySleep@plt>
jmp    1785 <SetStandby+0x625>
xor    %edi,%edi
call   1040 <SelectGySleep@plt>
mov    $0x30,%edi
mov    $0x80,%esi
call   1070 <RegWriteA@plt>
mov    $0x1,%edi
call   1050 <DrvSw@plt>
mov    $0x1,%edi
call   1030 <AfDrvSw@plt>
mov    $0x20,%edi
mov    $0xc0,%esi
call   1070 <RegWriteA@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x10,%edi
mov    $0xc0,%esi
call   1070 <RegWriteA@plt>
mov    $0x264,%edi
mov    $0x5,%esi
call   1070 <RegWriteA@plt>
mov    $0x250,%edi
mov    $0xdf,%esi
call   1070 <RegWriteA@plt>
jmp    1785 <SetStandby+0x625>
mov    $0x81,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x250,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x264,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x10,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x20,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1050 <DrvSw@plt>
xor    %edi,%edi
call   1030 <AfDrvSw@plt>
mov    $0x1,%edi
call   1040 <SelectGySleep@plt>
mov    $0x20b,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
jmp    1785 <SetStandby+0x625>
mov    $0x20b,%edi
mov    $0x1f,%esi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1040 <SelectGySleep@plt>
mov    $0x30,%edi
mov    $0x80,%esi
call   1070 <RegWriteA@plt>
mov    $0x1,%edi
call   1050 <DrvSw@plt>
mov    $0x1,%edi
call   1030 <AfDrvSw@plt>
mov    $0x20,%edi
mov    $0xc0,%esi
call   1070 <RegWriteA@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x10,%edi
mov    $0xc0,%esi
call   1070 <RegWriteA@plt>
mov    $0x264,%edi
mov    $0x5,%esi
call   1070 <RegWriteA@plt>
mov    $0x250,%edi
mov    $0xdf,%esi
call   1070 <RegWriteA@plt>
jmp    1785 <SetStandby+0x625>
mov    $0x81,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x250,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x264,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x10,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x20,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1050 <DrvSw@plt>
xor    %edi,%edi
call   1030 <AfDrvSw@plt>
mov    $0x1,%edi
call   1040 <SelectGySleep@plt>
mov    $0x20b,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x248,%edi
mov    $0x1,%esi
call   1070 <RegWriteA@plt>
mov    $0x256,%edi
mov    $0x2,%esi
call   1070 <RegWriteA@plt>
jmp    1785 <SetStandby+0x625>
mov    $0x256,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x248,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x20b,%edi
mov    $0x1f,%esi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1040 <SelectGySleep@plt>
mov    $0x30,%edi
mov    $0x80,%esi
call   1070 <RegWriteA@plt>
mov    $0x1,%edi
call   1050 <DrvSw@plt>
mov    $0x1,%edi
call   1030 <AfDrvSw@plt>
mov    $0x20,%edi
mov    $0xc0,%esi
call   1070 <RegWriteA@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x10,%edi
mov    $0xc0,%esi
call   1070 <RegWriteA@plt>
mov    $0x264,%edi
mov    $0x5,%esi
call   1070 <RegWriteA@plt>
mov    $0x250,%edi
mov    $0xdf,%esi
call   1070 <RegWriteA@plt>
jmp    1785 <SetStandby+0x625>
mov    $0x81,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x250,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x264,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x10,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x20,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1050 <DrvSw@plt>
xor    %edi,%edi
call   1030 <AfDrvSw@plt>
mov    $0x0,%al
call   1080 <GyOutSignalCont@plt>
mov    $0x20b,%edi
mov    $0x4,%esi
call   1070 <RegWriteA@plt>
jmp    1785 <SetStandby+0x625>
mov    $0x20b,%edi
mov    $0x1f,%esi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1040 <SelectGySleep@plt>
mov    $0x30,%edi
mov    $0x80,%esi
call   1070 <RegWriteA@plt>
mov    $0x1,%edi
call   1050 <DrvSw@plt>
mov    $0x1,%edi
call   1030 <AfDrvSw@plt>
mov    $0x20,%edi
mov    $0xc0,%esi
call   1070 <RegWriteA@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x10,%edi
mov    $0xc0,%esi
call   1070 <RegWriteA@plt>
mov    $0x264,%edi
mov    $0x5,%esi
call   1070 <RegWriteA@plt>
mov    $0x250,%edi
mov    $0xdf,%esi
call   1070 <RegWriteA@plt>
jmp    1785 <SetStandby+0x625>
mov    $0x250,%edi
lea    -0x2(%rbp),%rsi
call   1060 <RegReadA@plt>
movzbl -0x2(%rbp),%eax
and    $0x80,%eax
mov    %al,-0x2(%rbp)
mov    $0x250,%edi
movzbl -0x2(%rbp),%esi
call   1070 <RegWriteA@plt>
mov    $0x10,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x20,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1050 <DrvSw@plt>
mov    $0x1,%edi
call   1040 <SelectGySleep@plt>
mov    $0x20b,%edi
lea    -0x3(%rbp),%rsi
call   1060 <RegReadA@plt>
movzbl -0x3(%rbp),%eax
and    $0x1a,%eax
mov    %al,-0x3(%rbp)
mov    $0x20b,%edi
movzbl -0x3(%rbp),%esi
call   1070 <RegWriteA@plt>
jmp    1785 <SetStandby+0x625>
mov    $0x20b,%edi
lea    -0x3(%rbp),%rsi
call   1060 <RegReadA@plt>
movzbl -0x3(%rbp),%eax
or     $0x5,%eax
mov    %al,-0x3(%rbp)
mov    $0x20b,%edi
movzbl -0x3(%rbp),%esi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1040 <SelectGySleep@plt>
mov    $0x30,%edi
mov    $0x80,%esi
call   1070 <RegWriteA@plt>
mov    $0x1,%edi
call   1050 <DrvSw@plt>
mov    $0x20,%edi
mov    $0xc0,%esi
call   1070 <RegWriteA@plt>
mov    $0x10,%edi
mov    $0xc0,%esi
call   1070 <RegWriteA@plt>
mov    $0x250,%edi
lea    -0x2(%rbp),%rsi
call   1060 <RegReadA@plt>
movzbl -0x2(%rbp),%eax
or     $0x5f,%eax
mov    %al,-0x2(%rbp)
mov    $0x250,%edi
movzbl -0x2(%rbp),%esi
call   1070 <RegWriteA@plt>
jmp    1785 <SetStandby+0x625>
mov    $0x81,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x250,%edi
lea    -0x2(%rbp),%rsi
call   1060 <RegReadA@plt>
movzbl -0x2(%rbp),%eax
and    $0x7f,%eax
mov    %al,-0x2(%rbp)
mov    $0x250,%edi
movzbl -0x2(%rbp),%esi
call   1070 <RegWriteA@plt>
mov    $0x264,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1030 <AfDrvSw@plt>
mov    $0x20b,%edi
lea    -0x3(%rbp),%rsi
call   1060 <RegReadA@plt>
movzbl -0x3(%rbp),%eax
and    $0x7,%eax
mov    %al,-0x3(%rbp)
mov    $0x20b,%edi
movzbl -0x3(%rbp),%esi
call   1070 <RegWriteA@plt>
jmp    1785 <SetStandby+0x625>
mov    $0x20b,%edi
lea    -0x3(%rbp),%rsi
call   1060 <RegReadA@plt>
movzbl -0x3(%rbp),%eax
or     $0x18,%eax
mov    %al,-0x3(%rbp)
mov    $0x20b,%edi
movzbl -0x3(%rbp),%esi
call   1070 <RegWriteA@plt>
mov    $0x1,%edi
call   1030 <AfDrvSw@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x264,%edi
mov    $0x5,%esi
call   1070 <RegWriteA@plt>
mov    $0x250,%edi
lea    -0x2(%rbp),%rsi
call   1060 <RegReadA@plt>
movzbl -0x2(%rbp),%eax
or     $0x80,%eax
mov    %al,-0x2(%rbp)
mov    $0x250,%edi
movzbl -0x2(%rbp),%esi
call   1070 <RegWriteA@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<SetStandby>:
push   %rax
cmp    $0xb,%dil
ja     15b0 <SetStandby+0x450>
mov    %edi,%eax
lea    0xe8c(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    $0x81,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x250,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x264,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x10,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x20,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1050 <DrvSw@plt>
xor    %edi,%edi
call   1030 <AfDrvSw@plt>
mov    $0x1,%edi
pop    %rax
jmp    1040 <SelectGySleep@plt>
mov    $0x81,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x250,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x264,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x10,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x20,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1050 <DrvSw@plt>
xor    %edi,%edi
call   1030 <AfDrvSw@plt>
mov    $0x1,%edi
call   1040 <SelectGySleep@plt>
mov    $0x20b,%edi
xor    %esi,%esi
pop    %rax
jmp    1070 <RegWriteA@plt>
mov    $0x81,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x250,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x264,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x10,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x20,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1050 <DrvSw@plt>
xor    %edi,%edi
call   1030 <AfDrvSw@plt>
mov    $0x1,%edi
call   1040 <SelectGySleep@plt>
mov    $0x20b,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x248,%edi
mov    $0x1,%esi
call   1070 <RegWriteA@plt>
mov    $0x256,%edi
mov    $0x2,%esi
pop    %rax
jmp    1070 <RegWriteA@plt>
mov    $0x256,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x248,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x20b,%edi
mov    $0x1f,%esi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1040 <SelectGySleep@plt>
mov    $0x30,%edi
mov    $0x80,%esi
call   1070 <RegWriteA@plt>
mov    $0x1,%edi
call   1050 <DrvSw@plt>
mov    $0x1,%edi
call   1030 <AfDrvSw@plt>
mov    $0x20,%edi
mov    $0xc0,%esi
call   1070 <RegWriteA@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x10,%edi
mov    $0xc0,%esi
call   1070 <RegWriteA@plt>
mov    $0x264,%edi
mov    $0x5,%esi
call   1070 <RegWriteA@plt>
mov    $0x250,%edi
mov    $0xdf,%esi
pop    %rax
jmp    1070 <RegWriteA@plt>
mov    $0x81,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x250,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x264,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x10,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x20,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1050 <DrvSw@plt>
xor    %edi,%edi
call   1030 <AfDrvSw@plt>
xor    %eax,%eax
call   1080 <GyOutSignalCont@plt>
mov    $0x20b,%edi
mov    $0x4,%esi
pop    %rax
jmp    1070 <RegWriteA@plt>
lea    0x7(%rsp),%rsi
mov    $0x250,%edi
call   1060 <RegReadA@plt>
movzbl 0x7(%rsp),%esi
and    $0xffffff80,%esi
mov    %sil,0x7(%rsp)
mov    $0x250,%edi
call   1070 <RegWriteA@plt>
mov    $0x10,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x20,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1050 <DrvSw@plt>
mov    $0x1,%edi
call   1040 <SelectGySleep@plt>
lea    0x6(%rsp),%rsi
mov    $0x20b,%edi
call   1060 <RegReadA@plt>
movzbl 0x6(%rsp),%esi
and    $0x1a,%esi
jmp    1530 <SetStandby+0x3d0>
lea    0x6(%rsp),%rsi
mov    $0x20b,%edi
call   1060 <RegReadA@plt>
movzbl 0x6(%rsp),%esi
or     $0x5,%esi
mov    %sil,0x6(%rsp)
mov    $0x20b,%edi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1040 <SelectGySleep@plt>
mov    $0x30,%edi
mov    $0x80,%esi
call   1070 <RegWriteA@plt>
mov    $0x1,%edi
call   1050 <DrvSw@plt>
mov    $0x20,%edi
mov    $0xc0,%esi
call   1070 <RegWriteA@plt>
mov    $0x10,%edi
mov    $0xc0,%esi
call   1070 <RegWriteA@plt>
lea    0x7(%rsp),%rsi
mov    $0x250,%edi
call   1060 <RegReadA@plt>
movzbl 0x7(%rsp),%esi
or     $0x5f,%esi
jmp    15a1 <SetStandby+0x441>
mov    $0x81,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
lea    0x7(%rsp),%rsi
mov    $0x250,%edi
call   1060 <RegReadA@plt>
movzbl 0x7(%rsp),%esi
and    $0x7f,%esi
mov    %sil,0x7(%rsp)
mov    $0x250,%edi
call   1070 <RegWriteA@plt>
mov    $0x264,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
xor    %edi,%edi
call   1030 <AfDrvSw@plt>
lea    0x6(%rsp),%rsi
mov    $0x20b,%edi
call   1060 <RegReadA@plt>
movzbl 0x6(%rsp),%esi
and    $0x7,%esi
mov    %sil,0x6(%rsp)
mov    $0x20b,%edi
jmp    15ab <SetStandby+0x44b>
lea    0x6(%rsp),%rsi
mov    $0x20b,%edi
call   1060 <RegReadA@plt>
movzbl 0x6(%rsp),%esi
or     $0x18,%esi
mov    %sil,0x6(%rsp)
mov    $0x20b,%edi
call   1070 <RegWriteA@plt>
mov    $0x1,%edi
call   1030 <AfDrvSw@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1070 <RegWriteA@plt>
mov    $0x264,%edi
mov    $0x5,%esi
call   1070 <RegWriteA@plt>
lea    0x7(%rsp),%rsi
mov    $0x250,%edi
call   1060 <RegReadA@plt>
movzbl 0x7(%rsp),%esi
or     $0x80,%esi
mov    %sil,0x7(%rsp)
mov    $0x250,%edi
call   1070 <RegWriteA@plt>
pop    %rax
ret

LLVM IR (-O0):
define void @SetStandby(i8 zeroext %0) {
%2 = alloca i8
%3 = alloca i8
%4 = alloca i8
store i8 %0, i8* %2
%5 = load i8, i8* %2
%6 = zext i8 %5 to i32
switch i32 %6, label %173 [
i32 0, label %7
i32 1, label %17
i32 2, label %27
i32 3, label %38
i32 4, label %49
i32 5, label %62
i32 6, label %75
i32 7, label %86
i32 8, label %97
i32 9, label %116
i32 10, label %136
i32 11, label %155
]
7: ; preds = %1
%8 = call i32 @RegWriteA(i32 129, i8 zeroext 0)
%9 = call i32 @RegWriteA(i32 592, i8 zeroext 0)
%10 = call i32 @RegWriteA(i32 612, i8 zeroext 0)
%11 = call i32 @RegWriteA(i32 16, i8 zeroext 0)
%12 = call i32 @RegWriteA(i32 144, i8 zeroext 0)
%13 = call i32 @RegWriteA(i32 32, i8 zeroext 0)
%14 = call i32 @DrvSw(i32 0)
%15 = call i32 @AfDrvSw(i32 0)
%16 = call i32 @SelectGySleep(i32 1)
br label %173
17: ; preds = %1
%18 = call i32 @SelectGySleep(i32 0)
%19 = call i32 @RegWriteA(i32 48, i8 zeroext -128)
%20 = call i32 @DrvSw(i32 1)
%21 = call i32 @AfDrvSw(i32 1)
%22 = call i32 @RegWriteA(i32 32, i8 zeroext -64)
%23 = call i32 @RegWriteA(i32 144, i8 zeroext 0)
%24 = call i32 @RegWriteA(i32 16, i8 zeroext -64)
%25 = call i32 @RegWriteA(i32 612, i8 zeroext 5)
%26 = call i32 @RegWriteA(i32 592, i8 zeroext -33)
br label %173
27: ; preds = %1
%28 = call i32 @RegWriteA(i32 129, i8 zeroext 0)
%29 = call i32 @RegWriteA(i32 592, i8 zeroext 0)
%30 = call i32 @RegWriteA(i32 612, i8 zeroext 0)
%31 = call i32 @RegWriteA(i32 16, i8 zeroext 0)
%32 = call i32 @RegWriteA(i32 144, i8 zeroext 0)
%33 = call i32 @RegWriteA(i32 32, i8 zeroext 0)
%34 = call i32 @DrvSw(i32 0)
%35 = call i32 @AfDrvSw(i32 0)
%36 = call i32 @SelectGySleep(i32 1)
%37 = call i32 @RegWriteA(i32 523, i8 zeroext 0)
br label %173
38: ; preds = %1
%39 = call i32 @RegWriteA(i32 523, i8 zeroext 31)
%40 = call i32 @SelectGySleep(i32 0)
%41 = call i32 @RegWriteA(i32 48, i8 zeroext -128)
%42 = call i32 @DrvSw(i32 1)
%43 = call i32 @AfDrvSw(i32 1)
%44 = call i32 @RegWriteA(i32 32, i8 zeroext -64)
%45 = call i32 @RegWriteA(i32 144, i8 zeroext 0)
%46 = call i32 @RegWriteA(i32 16, i8 zeroext -64)
%47 = call i32 @RegWriteA(i32 612, i8 zeroext 5)
%48 = call i32 @RegWriteA(i32 592, i8 zeroext -33)
br label %173
49: ; preds = %1
%50 = call i32 @RegWriteA(i32 129, i8 zeroext 0)
%51 = call i32 @RegWriteA(i32 592, i8 zeroext 0)
%52 = call i32 @RegWriteA(i32 612, i8 zeroext 0)
%53 = call i32 @RegWriteA(i32 16, i8 zeroext 0)
%54 = call i32 @RegWriteA(i32 144, i8 zeroext 0)
%55 = call i32 @RegWriteA(i32 32, i8 zeroext 0)
%56 = call i32 @DrvSw(i32 0)
%57 = call i32 @AfDrvSw(i32 0)
%58 = call i32 @SelectGySleep(i32 1)
%59 = call i32 @RegWriteA(i32 523, i8 zeroext 0)
%60 = call i32 @RegWriteA(i32 584, i8 zeroext 1)
%61 = call i32 @RegWriteA(i32 598, i8 zeroext 2)
br label %173
62: ; preds = %1
%63 = call i32 @RegWriteA(i32 598, i8 zeroext 0)
%64 = call i32 @RegWriteA(i32 584, i8 zeroext 0)
%65 = call i32 @RegWriteA(i32 523, i8 zeroext 31)
%66 = call i32 @SelectGySleep(i32 0)
%67 = call i32 @RegWriteA(i32 48, i8 zeroext -128)
%68 = call i32 @DrvSw(i32 1)
%69 = call i32 @AfDrvSw(i32 1)
%70 = call i32 @RegWriteA(i32 32, i8 zeroext -64)
%71 = call i32 @RegWriteA(i32 144, i8 zeroext 0)
%72 = call i32 @RegWriteA(i32 16, i8 zeroext -64)
%73 = call i32 @RegWriteA(i32 612, i8 zeroext 5)
%74 = call i32 @RegWriteA(i32 592, i8 zeroext -33)
br label %173
75: ; preds = %1
%76 = call i32 @RegWriteA(i32 129, i8 zeroext 0)
%77 = call i32 @RegWriteA(i32 592, i8 zeroext 0)
%78 = call i32 @RegWriteA(i32 612, i8 zeroext 0)
%79 = call i32 @RegWriteA(i32 16, i8 zeroext 0)
%80 = call i32 @RegWriteA(i32 144, i8 zeroext 0)
%81 = call i32 @RegWriteA(i32 32, i8 zeroext 0)
%82 = call i32 @DrvSw(i32 0)
%83 = call i32 @AfDrvSw(i32 0)
%84 = call i32 (...) @GyOutSignalCont()
%85 = call i32 @RegWriteA(i32 523, i8 zeroext 4)
br label %173
86: ; preds = %1
%87 = call i32 @RegWriteA(i32 523, i8 zeroext 31)
%88 = call i32 @SelectGySleep(i32 0)
%89 = call i32 @RegWriteA(i32 48, i8 zeroext -128)
%90 = call i32 @DrvSw(i32 1)
%91 = call i32 @AfDrvSw(i32 1)
%92 = call i32 @RegWriteA(i32 32, i8 zeroext -64)
%93 = call i32 @RegWriteA(i32 144, i8 zeroext 0)
%94 = call i32 @RegWriteA(i32 16, i8 zeroext -64)
%95 = call i32 @RegWriteA(i32 612, i8 zeroext 5)
%96 = call i32 @RegWriteA(i32 592, i8 zeroext -33)
br label %173
97: ; preds = %1
%98 = call i32 @RegReadA(i32 592, i8* %3)
%99 = load i8, i8* %3
%100 = zext i8 %99 to i32
%101 = and i32 %100, 128
%102 = trunc i32 %101 to i8
store i8 %102, i8* %3
%103 = load i8, i8* %3
%104 = call i32 @RegWriteA(i32 592, i8 zeroext %103)
%105 = call i32 @RegWriteA(i32 16, i8 zeroext 0)
%106 = call i32 @RegWriteA(i32 32, i8 zeroext 0)
%107 = call i32 @DrvSw(i32 0)
%108 = call i32 @SelectGySleep(i32 1)
%109 = call i32 @RegReadA(i32 523, i8* %4)
%110 = load i8, i8* %4
%111 = zext i8 %110 to i32
%112 = and i32 %111, 26
%113 = trunc i32 %112 to i8
store i8 %113, i8* %4
%114 = load i8, i8* %4
%115 = call i32 @RegWriteA(i32 523, i8 zeroext %114)
br label %173
116: ; preds = %1
%117 = call i32 @RegReadA(i32 523, i8* %4)
%118 = load i8, i8* %4
%119 = zext i8 %118 to i32
%120 = or i32 %119, 5
%121 = trunc i32 %120 to i8
store i8 %121, i8* %4
%122 = load i8, i8* %4
%123 = call i32 @RegWriteA(i32 523, i8 zeroext %122)
%124 = call i32 @SelectGySleep(i32 0)
%125 = call i32 @RegWriteA(i32 48, i8 zeroext -128)
%126 = call i32 @DrvSw(i32 1)
%127 = call i32 @RegWriteA(i32 32, i8 zeroext -64)
%128 = call i32 @RegWriteA(i32 16, i8 zeroext -64)
%129 = call i32 @RegReadA(i32 592, i8* %3)
%130 = load i8, i8* %3
%131 = zext i8 %130 to i32
%132 = or i32 %131, 95
%133 = trunc i32 %132 to i8
store i8 %133, i8* %3
%134 = load i8, i8* %3
%135 = call i32 @RegWriteA(i32 592, i8 zeroext %134)
br label %173
136: ; preds = %1
%137 = call i32 @RegWriteA(i32 129, i8 zeroext 0)
%138 = call i32 @RegReadA(i32 592, i8* %3)
%139 = load i8, i8* %3
%140 = zext i8 %139 to i32
%141 = and i32 %140, 127
%142 = trunc i32 %141 to i8
store i8 %142, i8* %3
%143 = load i8, i8* %3
%144 = call i32 @RegWriteA(i32 592, i8 zeroext %143)
%145 = call i32 @RegWriteA(i32 612, i8 zeroext 0)
%146 = call i32 @RegWriteA(i32 144, i8 zeroext 0)
%147 = call i32 @AfDrvSw(i32 0)
%148 = call i32 @RegReadA(i32 523, i8* %4)
%149 = load i8, i8* %4
%150 = zext i8 %149 to i32
%151 = and i32 %150, 7
%152 = trunc i32 %151 to i8
store i8 %152, i8* %4
%153 = load i8, i8* %4
%154 = call i32 @RegWriteA(i32 523, i8 zeroext %153)
br label %173
155: ; preds = %1
%156 = call i32 @RegReadA(i32 523, i8* %4)
%157 = load i8, i8* %4
%158 = zext i8 %157 to i32
%159 = or i32 %158, 24
%160 = trunc i32 %159 to i8
store i8 %160, i8* %4
%161 = load i8, i8* %4
%162 = call i32 @RegWriteA(i32 523, i8 zeroext %161)
%163 = call i32 @AfDrvSw(i32 1)
%164 = call i32 @RegWriteA(i32 144, i8 zeroext 0)
%165 = call i32 @RegWriteA(i32 612, i8 zeroext 5)
%166 = call i32 @RegReadA(i32 592, i8* %3)
%167 = load i8, i8* %3
%168 = zext i8 %167 to i32
%169 = or i32 %168, 128
%170 = trunc i32 %169 to i8
store i8 %170, i8* %3
%171 = load i8, i8* %3
%172 = call i32 @RegWriteA(i32 592, i8 zeroext %171)
br label %173
173: ; preds = %1, %155, %136, %116, %97, %86, %75, %62, %49, %38, %27, %17, %7
ret void
}

LLVM IR (-O2):
define void @SetStandby(i8 zeroext %0) {
%2 = alloca i8
%3 = alloca i8
switch i8 %0, label %146 [
i8 0, label %4
i8 1, label %14
i8 2, label %24
i8 3, label %35
i8 4, label %46
i8 5, label %59
i8 6, label %72
i8 7, label %83
i8 8, label %94
i8 9, label %107
i8 10, label %121
i8 11, label %134
]
4: ; preds = %1
%5 = tail call i32 @RegWriteA(i32 129, i8 zeroext 0)
%6 = tail call i32 @RegWriteA(i32 592, i8 zeroext 0)
%7 = tail call i32 @RegWriteA(i32 612, i8 zeroext 0)
%8 = tail call i32 @RegWriteA(i32 16, i8 zeroext 0)
%9 = tail call i32 @RegWriteA(i32 144, i8 zeroext 0)
%10 = tail call i32 @RegWriteA(i32 32, i8 zeroext 0)
%11 = tail call i32 @DrvSw(i32 0)
%12 = tail call i32 @AfDrvSw(i32 0)
%13 = tail call i32 @SelectGySleep(i32 1)
br label %146
14: ; preds = %1
%15 = tail call i32 @SelectGySleep(i32 0)
%16 = tail call i32 @RegWriteA(i32 48, i8 zeroext -128)
%17 = tail call i32 @DrvSw(i32 1)
%18 = tail call i32 @AfDrvSw(i32 1)
%19 = tail call i32 @RegWriteA(i32 32, i8 zeroext -64)
%20 = tail call i32 @RegWriteA(i32 144, i8 zeroext 0)
%21 = tail call i32 @RegWriteA(i32 16, i8 zeroext -64)
%22 = tail call i32 @RegWriteA(i32 612, i8 zeroext 5)
%23 = tail call i32 @RegWriteA(i32 592, i8 zeroext -33)
br label %146
24: ; preds = %1
%25 = tail call i32 @RegWriteA(i32 129, i8 zeroext 0)
%26 = tail call i32 @RegWriteA(i32 592, i8 zeroext 0)
%27 = tail call i32 @RegWriteA(i32 612, i8 zeroext 0)
%28 = tail call i32 @RegWriteA(i32 16, i8 zeroext 0)
%29 = tail call i32 @RegWriteA(i32 144, i8 zeroext 0)
%30 = tail call i32 @RegWriteA(i32 32, i8 zeroext 0)
%31 = tail call i32 @DrvSw(i32 0)
%32 = tail call i32 @AfDrvSw(i32 0)
%33 = tail call i32 @SelectGySleep(i32 1)
%34 = tail call i32 @RegWriteA(i32 523, i8 zeroext 0)
br label %146
35: ; preds = %1
%36 = tail call i32 @RegWriteA(i32 523, i8 zeroext 31)
%37 = tail call i32 @SelectGySleep(i32 0)
%38 = tail call i32 @RegWriteA(i32 48, i8 zeroext -128)
%39 = tail call i32 @DrvSw(i32 1)
%40 = tail call i32 @AfDrvSw(i32 1)
%41 = tail call i32 @RegWriteA(i32 32, i8 zeroext -64)
%42 = tail call i32 @RegWriteA(i32 144, i8 zeroext 0)
%43 = tail call i32 @RegWriteA(i32 16, i8 zeroext -64)
%44 = tail call i32 @RegWriteA(i32 612, i8 zeroext 5)
%45 = tail call i32 @RegWriteA(i32 592, i8 zeroext -33)
br label %146
46: ; preds = %1
%47 = tail call i32 @RegWriteA(i32 129, i8 zeroext 0)
%48 = tail call i32 @RegWriteA(i32 592, i8 zeroext 0)
%49 = tail call i32 @RegWriteA(i32 612, i8 zeroext 0)
%50 = tail call i32 @RegWriteA(i32 16, i8 zeroext 0)
%51 = tail call i32 @RegWriteA(i32 144, i8 zeroext 0)
%52 = tail call i32 @RegWriteA(i32 32, i8 zeroext 0)
%53 = tail call i32 @DrvSw(i32 0)
%54 = tail call i32 @AfDrvSw(i32 0)
%55 = tail call i32 @SelectGySleep(i32 1)
%56 = tail call i32 @RegWriteA(i32 523, i8 zeroext 0)
%57 = tail call i32 @RegWriteA(i32 584, i8 zeroext 1)
%58 = tail call i32 @RegWriteA(i32 598, i8 zeroext 2)
br label %146
59: ; preds = %1
%60 = tail call i32 @RegWriteA(i32 598, i8 zeroext 0)
%61 = tail call i32 @RegWriteA(i32 584, i8 zeroext 0)
%62 = tail call i32 @RegWriteA(i32 523, i8 zeroext 31)
%63 = tail call i32 @SelectGySleep(i32 0)
%64 = tail call i32 @RegWriteA(i32 48, i8 zeroext -128)
%65 = tail call i32 @DrvSw(i32 1)
%66 = tail call i32 @AfDrvSw(i32 1)
%67 = tail call i32 @RegWriteA(i32 32, i8 zeroext -64)
%68 = tail call i32 @RegWriteA(i32 144, i8 zeroext 0)
%69 = tail call i32 @RegWriteA(i32 16, i8 zeroext -64)
%70 = tail call i32 @RegWriteA(i32 612, i8 zeroext 5)
%71 = tail call i32 @RegWriteA(i32 592, i8 zeroext -33)
br label %146
72: ; preds = %1
%73 = tail call i32 @RegWriteA(i32 129, i8 zeroext 0)
%74 = tail call i32 @RegWriteA(i32 592, i8 zeroext 0)
%75 = tail call i32 @RegWriteA(i32 612, i8 zeroext 0)
%76 = tail call i32 @RegWriteA(i32 16, i8 zeroext 0)
%77 = tail call i32 @RegWriteA(i32 144, i8 zeroext 0)
%78 = tail call i32 @RegWriteA(i32 32, i8 zeroext 0)
%79 = tail call i32 @DrvSw(i32 0)
%80 = tail call i32 @AfDrvSw(i32 0)
%81 = tail call i32 (...) @GyOutSignalCont()
%82 = tail call i32 @RegWriteA(i32 523, i8 zeroext 4)
br label %146
83: ; preds = %1
%84 = tail call i32 @RegWriteA(i32 523, i8 zeroext 31)
%85 = tail call i32 @SelectGySleep(i32 0)
%86 = tail call i32 @RegWriteA(i32 48, i8 zeroext -128)
%87 = tail call i32 @DrvSw(i32 1)
%88 = tail call i32 @AfDrvSw(i32 1)
%89 = tail call i32 @RegWriteA(i32 32, i8 zeroext -64)
%90 = tail call i32 @RegWriteA(i32 144, i8 zeroext 0)
%91 = tail call i32 @RegWriteA(i32 16, i8 zeroext -64)
%92 = tail call i32 @RegWriteA(i32 612, i8 zeroext 5)
%93 = tail call i32 @RegWriteA(i32 592, i8 zeroext -33)
br label %146
94: ; preds = %1
%95 = call i32 @RegReadA(i32 592, i8* %2)
%96 = load i8, i8* %2
%97 = and i8 %96, -128
store i8 %97, i8* %2
%98 = call i32 @RegWriteA(i32 592, i8 zeroext %97)
%99 = call i32 @RegWriteA(i32 16, i8 zeroext 0)
%100 = call i32 @RegWriteA(i32 32, i8 zeroext 0)
%101 = call i32 @DrvSw(i32 0)
%102 = call i32 @SelectGySleep(i32 1)
%103 = call i32 @RegReadA(i32 523, i8* %3)
%104 = load i8, i8* %3
%105 = and i8 %104, 26
store i8 %105, i8* %3
%106 = call i32 @RegWriteA(i32 523, i8 zeroext %105)
br label %146
107: ; preds = %1
%108 = call i32 @RegReadA(i32 523, i8* %3)
%109 = load i8, i8* %3
%110 = or i8 %109, 5
store i8 %110, i8* %3
%111 = call i32 @RegWriteA(i32 523, i8 zeroext %110)
%112 = call i32 @SelectGySleep(i32 0)
%113 = call i32 @RegWriteA(i32 48, i8 zeroext -128)
%114 = call i32 @DrvSw(i32 1)
%115 = call i32 @RegWriteA(i32 32, i8 zeroext -64)
%116 = call i32 @RegWriteA(i32 16, i8 zeroext -64)
%117 = call i32 @RegReadA(i32 592, i8* %2)
%118 = load i8, i8* %2
%119 = or i8 %118, 95
store i8 %119, i8* %2
%120 = call i32 @RegWriteA(i32 592, i8 zeroext %119)
br label %146
121: ; preds = %1
%122 = tail call i32 @RegWriteA(i32 129, i8 zeroext 0)
%123 = call i32 @RegReadA(i32 592, i8* %2)
%124 = load i8, i8* %2
%125 = and i8 %124, 127
store i8 %125, i8* %2
%126 = call i32 @RegWriteA(i32 592, i8 zeroext %125)
%127 = call i32 @RegWriteA(i32 612, i8 zeroext 0)
%128 = call i32 @RegWriteA(i32 144, i8 zeroext 0)
%129 = call i32 @AfDrvSw(i32 0)
%130 = call i32 @RegReadA(i32 523, i8* %3)
%131 = load i8, i8* %3
%132 = and i8 %131, 7
store i8 %132, i8* %3
%133 = call i32 @RegWriteA(i32 523, i8 zeroext %132)
br label %146
134: ; preds = %1
%135 = call i32 @RegReadA(i32 523, i8* %3)
%136 = load i8, i8* %3
%137 = or i8 %136, 24
store i8 %137, i8* %3
%138 = call i32 @RegWriteA(i32 523, i8 zeroext %137)
%139 = call i32 @AfDrvSw(i32 1)
%140 = call i32 @RegWriteA(i32 144, i8 zeroext 0)
%141 = call i32 @RegWriteA(i32 612, i8 zeroext 5)
%142 = call i32 @RegReadA(i32 592, i8* %2)
%143 = load i8, i8* %2
%144 = or i8 %143, -128
store i8 %144, i8* %2
%145 = call i32 @RegWriteA(i32 592, i8 zeroext %144)
br label %146
146: ; preds = %1, %134, %121, %107, %94, %83, %72, %59, %46, %35, %24, %14, %4
ret void
}