#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 AG_SetStatusAndReturn(int, int, int);
int CdAudioIsPlayActive(int);
int CdAudioSendToNextDriver(int, int);
int SendSrbSynchronous(int, int, int, int);
int __VERIFIER_nondet_int();
int CdAudio535DeviceControl(int DeviceObject, int Irp) {
  int Irp__Tail__Overlay__CurrentStackLocation = __VERIFIER_nondet_int();
  int DeviceObject__DeviceExtension = __VERIFIER_nondet_int();
  int deviceExtension__TargetDeviceObject = __VERIFIER_nondet_int();
  int Irp__AssociatedIrp__SystemBuffer = __VERIFIER_nondet_int();
  int srb__Cdb = __VERIFIER_nondet_int();
  int currentIrpStack__Parameters__DeviceIoControl__IoControlCode =
      __VERIFIER_nondet_int();
  int Irp__IoStatus__Information;
  int currentIrpStack__Parameters__DeviceIoControl__OutputBufferLength =
      __VERIFIER_nondet_int();
  int currentIrpStack__Parameters__DeviceIoControl__InputBufferLength =
      __VERIFIER_nondet_int();
  int srb__CdbLength;
  int cdb__CDB10__OperationCode;
  int srb__TimeOutValue;
  int sizeof__READ_CAPACITY_DATA = __VERIFIER_nondet_int();
  int lastSession__LogicalBlockAddress = __VERIFIER_nondet_int();
  int cdaudioDataOut__FirstTrack = __VERIFIER_nondet_int();
  int cdaudioDataOut__LastTrack = __VERIFIER_nondet_int();
  int sizeof__CDROM_TOC = __VERIFIER_nondet_int();
  int sizeof__SUB_Q_CURRENT_POSITION = __VERIFIER_nondet_int();
  int userPtr__Format = __VERIFIER_nondet_int();
  int sizeof__CDROM_PLAY_AUDIO_MSF = __VERIFIER_nondet_int();
  int inputBuffer__StartingM = __VERIFIER_nondet_int();
  int inputBuffer__EndingM = __VERIFIER_nondet_int();
  int inputBuffer__StartingS = __VERIFIER_nondet_int();
  int inputBuffer__EndingS = __VERIFIER_nondet_int();
  int inputBuffer__StartingF = __VERIFIER_nondet_int();
  int inputBuffer__EndingF = __VERIFIER_nondet_int();
  int cdb__PLAY_AUDIO_MSF__OperationCode = __VERIFIER_nondet_int();
  int sizeof__CDROM_SEEK_AUDIO_MSF = __VERIFIER_nondet_int();
  int currentIrpStack;
  int deviceExtension;
  int cdaudioDataOut;
  int srb = __VERIFIER_nondet_int();
  int lastSession = __VERIFIER_nondet_int();
  int cdb;
  int status;
  int i = __VERIFIER_nondet_int();
  int bytesTransfered = __VERIFIER_nondet_int();
  int Toc = __VERIFIER_nondet_int();
  int tmp;
  int tmp___0;
  int tmp___1;
  int tmp___2;
  int tmp___3;
  int tmp___4;
  int tracksToReturn;
  int tracksOnCd;
  int tracksInBuffer;
  int userPtr;
  int SubQPtr = __VERIFIER_nondet_int();
  int tmp___5;
  int tmp___6;
  int inputBuffer;
  int inputBuffer___0;
  int tmp___7;
  int tmp___8;
  int __cil_tmp58;
  int __cil_tmp59;
  int __cil_tmp60;
  int __cil_tmp61;
  int __cil_tmp62;
  int __cil_tmp63;
  int __cil_tmp64;
  int __cil_tmp65;
  int __cil_tmp66;
  int __cil_tmp67;
  int __cil_tmp68;
  int __cil_tmp69;
  int __cil_tmp70;
  int __cil_tmp71;
  int __cil_tmp72;
  int __cil_tmp73;
  int __cil_tmp74;
  int __cil_tmp75;
  int __cil_tmp76;
  int __cil_tmp77;
  int __cil_tmp78;
  int __cil_tmp79;
  int __cil_tmp80;
  int __cil_tmp81;
  int __cil_tmp82;
  int __cil_tmp83;
  int __cil_tmp84;
  int __cil_tmp85;
  int __cil_tmp86;
  int __cil_tmp87;
  int __cil_tmp88;
  int __cil_tmp89;
  int __cil_tmp90;
  int __cil_tmp91;
  int __cil_tmp92;
  int __cil_tmp93;
  int __cil_tmp94;
  int __cil_tmp95;
  int __cil_tmp96;
  int __cil_tmp97;
  int __cil_tmp98;
  int __cil_tmp99;
  int __cil_tmp100;
  int __cil_tmp101;
  int __cil_tmp102;
  int __cil_tmp103;
  int __cil_tmp104;
  int __cil_tmp105;
  int __cil_tmp106;
  unsigned long __cil_tmp107;
  unsigned long __cil_tmp108;
  int __cil_tmp109;
  int __cil_tmp110;
  {
    currentIrpStack = Irp__Tail__Overlay__CurrentStackLocation;
    deviceExtension = DeviceObject__DeviceExtension;
    cdaudioDataOut = Irp__AssociatedIrp__SystemBuffer;
    cdb = srb__Cdb;
    {
      __cil_tmp58 = 56;
      __cil_tmp59 = 16384;
      __cil_tmp60 = 131072;
      __cil_tmp61 = 147456;
      __cil_tmp62 = 147512;
      if (currentIrpStack__Parameters__DeviceIoControl__IoControlCode ==
          __cil_tmp62) {
        goto switch_3_exp_0;
      } else {
        {
          __cil_tmp63 = 16384;
          __cil_tmp64 = 131072;
          __cil_tmp65 = 147456;
          if (currentIrpStack__Parameters__DeviceIoControl__IoControlCode ==
              __cil_tmp65) {
            goto switch_3_exp_1;
          } else {
            {
              __cil_tmp66 = 44;
              __cil_tmp67 = 16384;
              __cil_tmp68 = 131072;
              __cil_tmp69 = 147456;
              __cil_tmp70 = 147500;
              if (currentIrpStack__Parameters__DeviceIoControl__IoControlCode ==
                  __cil_tmp70) {
                goto switch_3_exp_2;
              } else {
                {
                  __cil_tmp71 = 24;
                  __cil_tmp72 = 16384;
                  __cil_tmp73 = 131072;
                  __cil_tmp74 = 147456;
                  __cil_tmp75 = 147480;
                  if (currentIrpStack__Parameters__DeviceIoControl__IoControlCode ==
                      __cil_tmp75) {
                    goto switch_3_exp_3;
                  } else {
                    {
                      __cil_tmp76 = 4;
                      __cil_tmp77 = 16384;
                      __cil_tmp78 = 131072;
                      __cil_tmp79 = 147456;
                      __cil_tmp80 = 147460;
                      if (currentIrpStack__Parameters__DeviceIoControl__IoControlCode ==
                          __cil_tmp80) {
                        goto switch_3_exp_4;
                      } else {
                        {
                          __cil_tmp81 = 2056;
                          __cil_tmp82 = 16384;
                          __cil_tmp83 = 131072;
                          __cil_tmp84 = 147456;
                          __cil_tmp85 = 149512;
                          if (currentIrpStack__Parameters__DeviceIoControl__IoControlCode ==
                              __cil_tmp85) {
                            goto switch_3_exp_5;
                          } else {
                            {
                              __cil_tmp86 = 52;
                              __cil_tmp87 = 16384;
                              __cil_tmp88 = 131072;
                              __cil_tmp89 = 147456;
                              __cil_tmp90 = 147508;
                              if (currentIrpStack__Parameters__DeviceIoControl__IoControlCode ==
                                  __cil_tmp90) {
                                goto switch_3_exp_6;
                              } else {
                                {
                                  __cil_tmp91 = 20;
                                  __cil_tmp92 = 16384;
                                  __cil_tmp93 = 131072;
                                  __cil_tmp94 = 147456;
                                  __cil_tmp95 = 147476;
                                  if (currentIrpStack__Parameters__DeviceIoControl__IoControlCode ==
                                      __cil_tmp95) {
                                    goto switch_3_exp_7;
                                  } else {
                                    {
                                      __cil_tmp96 = 40;
                                      __cil_tmp97 = 16384;
                                      __cil_tmp98 = 131072;
                                      __cil_tmp99 = 147456;
                                      __cil_tmp100 = 147496;
                                      if (currentIrpStack__Parameters__DeviceIoControl__IoControlCode ==
                                          __cil_tmp100) {
                                        goto switch_3_exp_8;
                                      } else {
                                        {
                                          __cil_tmp101 = 2048;
                                          __cil_tmp102 = 16384;
                                          __cil_tmp103 = 131072;
                                          __cil_tmp104 = 147456;
                                          __cil_tmp105 = 149504;
                                          if (currentIrpStack__Parameters__DeviceIoControl__IoControlCode ==
                                              __cil_tmp105) {
                                            goto switch_3_exp_9;
                                          } else {
                                            goto switch_3_default;
                                            if (0) {
                                            switch_3_exp_0 : {
                                              tmp = CdAudioIsPlayActive(
                                                  DeviceObject);
                                            }
                                              if (tmp) {
                                                status = -2147483631;
                                                Irp__IoStatus__Information = 0;
                                                goto switch_3_break;
                                              }
                                              if (currentIrpStack__Parameters__DeviceIoControl__OutputBufferLength) {
                                                status = -1073741789;
                                                Irp__IoStatus__Information = 0;
                                                goto switch_3_break;
                                              }
                                              if (lastSession == 0) {
                                                {
                                                  status = -1073741670;
                                                  Irp__IoStatus__Information =
                                                      0;
                                                  tmp___0 = AG_SetStatusAndReturn(
                                                      status, Irp,
                                                      deviceExtension__TargetDeviceObject);
                                                }
                                                return (tmp___0);
                                              }
                                              {
                                                srb__CdbLength = 10;
                                                cdb__CDB10__OperationCode = 38;
                                                srb__TimeOutValue = 10;
                                                status = SendSrbSynchronous(
                                                    deviceExtension, srb,
                                                    lastSession,
                                                    sizeof__READ_CAPACITY_DATA);
                                              }
                                              {
                                                if (status < 0) {
                                                  {
                                                    Irp__IoStatus__Information =
                                                        0;
                                                    tmp___1 = AG_SetStatusAndReturn(
                                                        status, Irp,
                                                        deviceExtension__TargetDeviceObject);
                                                  }
                                                  return (tmp___1);
                                                } else {
                                                  status = 0;
                                                }
                                              }
                                              Irp__IoStatus__Information =
                                                  bytesTransfered;
                                              if (lastSession__LogicalBlockAddress ==
                                                  0) {
                                                goto switch_3_break;
                                              }
                                              cdaudioDataOut__FirstTrack = 1;
                                              cdaudioDataOut__LastTrack = 2;
                                              goto switch_3_break;
                                            switch_3_exp_1:;
                                              if (currentIrpStack__Parameters__DeviceIoControl__OutputBufferLength) {
                                                status = -1073741789;
                                                Irp__IoStatus__Information = 0;
                                                goto switch_3_break;
                                              }
                                              {
                                                tmp___2 = CdAudioIsPlayActive(
                                                    DeviceObject);
                                              }
                                              if (tmp___2) {
                                                status = -2147483631;
                                                Irp__IoStatus__Information = 0;
                                                goto switch_3_break;
                                              }
                                              if (Toc == 0) {
                                                {
                                                  status = -1073741670;
                                                  Irp__IoStatus__Information =
                                                      0;
                                                  tmp___3 = AG_SetStatusAndReturn(
                                                      status, Irp,
                                                      deviceExtension__TargetDeviceObject);
                                                }
                                                return (tmp___3);
                                              }
                                              {
                                                srb__TimeOutValue = 10;
                                                srb__CdbLength = 10;
                                                status = SendSrbSynchronous(
                                                    deviceExtension, srb, Toc,
                                                    sizeof__CDROM_TOC);
                                              }
                                              if (status >= 0) {
                                                {
                                                  __cil_tmp107 =
                                                      (unsigned long)status;
                                                  if (__cil_tmp107 !=
                                                      -1073741764) {
                                                    status = 0;
                                                  } else {
                                                    goto _L;
                                                  }
                                                }
                                              } else {
                                              _L : {
                                                __cil_tmp108 =
                                                    (unsigned long)status;
                                                if (__cil_tmp108 !=
                                                    -1073741764) {
                                                  {
                                                    Irp__IoStatus__Information =
                                                        0;
                                                    tmp___4 = AG_SetStatusAndReturn(
                                                        status, Irp,
                                                        deviceExtension__TargetDeviceObject);
                                                  }
                                                  return (tmp___4);
                                                }
                                              }
                                              }
                                              __cil_tmp109 =
                                                  cdaudioDataOut__LastTrack -
                                                  cdaudioDataOut__FirstTrack;
                                              tracksOnCd = __cil_tmp109 + 1;
                                              tracksInBuffer =
                                                  currentIrpStack__Parameters__DeviceIoControl__OutputBufferLength;
                                              if (tracksInBuffer < tracksOnCd) {
                                                tracksToReturn = tracksInBuffer;
                                              } else {
                                                tracksToReturn = tracksOnCd;
                                              }
                                              if (tracksInBuffer > tracksOnCd) {
                                                i++;
                                              }
                                              goto switch_3_break;
                                            switch_3_exp_2:
                                              userPtr =
                                                  Irp__AssociatedIrp__SystemBuffer;
                                              if (currentIrpStack__Parameters__DeviceIoControl__OutputBufferLength <
                                                  sizeof__SUB_Q_CURRENT_POSITION) {
                                                status = -1073741789;
                                                Irp__IoStatus__Information = 0;
                                                goto switch_3_break;
                                              }
                                              if (SubQPtr == 0) {
                                                {
                                                  status = -1073741670;
                                                  Irp__IoStatus__Information =
                                                      0;
                                                  tmp___5 = AG_SetStatusAndReturn(
                                                      status, Irp,
                                                      deviceExtension__TargetDeviceObject);
                                                }
                                                return (tmp___5);
                                              }
                                              if (userPtr__Format != 1) {
                                                {
                                                  status = -1073741823;
                                                  Irp__IoStatus__Information =
                                                      0;
                                                  tmp___6 = AG_SetStatusAndReturn(
                                                      status, Irp,
                                                      deviceExtension__TargetDeviceObject);
                                                }
                                                return (tmp___6);
                                              }
                                              {
                                                srb__CdbLength = 10;
                                                srb__TimeOutValue = 10;
                                                status = SendSrbSynchronous(
                                                    deviceExtension, srb,
                                                    SubQPtr,
                                                    sizeof__SUB_Q_CURRENT_POSITION);
                                              }
                                              if (status >= 0) {
                                                Irp__IoStatus__Information =
                                                    sizeof__SUB_Q_CURRENT_POSITION;
                                              } else {
                                                Irp__IoStatus__Information = 0;
                                              }
                                              goto switch_3_break;
                                            switch_3_exp_3:
                                              inputBuffer =
                                                  Irp__AssociatedIrp__SystemBuffer;
                                              Irp__IoStatus__Information = 0;
                                              if (currentIrpStack__Parameters__DeviceIoControl__InputBufferLength <
                                                  sizeof__CDROM_PLAY_AUDIO_MSF) {
                                                status = -1073741820;
                                                goto switch_3_break;
                                              }
                                              if (inputBuffer__StartingM ==
                                                  inputBuffer__EndingM) {
                                                if (inputBuffer__StartingS ==
                                                    inputBuffer__EndingS) {
                                                  if (inputBuffer__StartingF ==
                                                      inputBuffer__EndingF) {
                                                  }
                                                }
                                              }
                                              {
                                                srb__CdbLength = 10;
                                                srb__TimeOutValue = 10;
                                                status = SendSrbSynchronous(
                                                    deviceExtension, srb, 0, 0);
                                              }
                                              if (status >= 0) {
                                                if (cdb__PLAY_AUDIO_MSF__OperationCode ==
                                                    71) {
                                                }
                                              }
                                              goto switch_3_break;
                                            switch_3_exp_4:
                                              inputBuffer___0 =
                                                  Irp__AssociatedIrp__SystemBuffer;
                                              Irp__IoStatus__Information = 0;
                                              if (currentIrpStack__Parameters__DeviceIoControl__InputBufferLength <
                                                  sizeof__CDROM_SEEK_AUDIO_MSF) {
                                                status = -1073741820;
                                                goto switch_3_break;
                                              }
                                              {
                                                srb__CdbLength = 10;
                                                srb__TimeOutValue = 10;
                                                status = SendSrbSynchronous(
                                                    deviceExtension, srb, 0, 0);
                                              }
                                              {
                                                if (status < 0) {
                                                }
                                              }
                                              goto switch_3_break;
                                            switch_3_exp_5 : {
                                              Irp__IoStatus__Information = 0;
                                              srb__CdbLength = 10;
                                              srb__TimeOutValue = 10;
                                              status = SendSrbSynchronous(
                                                  deviceExtension, srb, 0, 0);
                                            }
                                              goto switch_3_break;
                                            switch_3_exp_6:;
                                            switch_3_exp_7:;
                                            switch_3_exp_8:
                                              Irp__IoStatus__Information = 0;
                                              status = -1073741808;
                                              goto switch_3_break;
                                            switch_3_exp_9 : {
                                              CdAudioIsPlayActive(DeviceObject);
                                            }
                                            switch_3_default : {
                                              tmp___7 = CdAudioSendToNextDriver(
                                                  DeviceObject, Irp);
                                            }
                                              return (tmp___7);
                                              goto switch_3_break;
                                            } else {
                                            switch_3_break:;
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
    {
      tmp___8 = AG_SetStatusAndReturn(status, Irp,
                                      deviceExtension__TargetDeviceObject);
    }
    return (tmp___8);
  }
}


x86 assembly (clang, -O0):
<CdAudio535DeviceControl>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1d0,%rsp
mov    %edi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x10(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x14(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x18(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x1c(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x20(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x24(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x2c(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x30(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x40(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x44(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x48(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x4c(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x50(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x54(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x58(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x5c(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x60(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x64(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x68(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x6c(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x70(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x74(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x78(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x7c(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x8c(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x90(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0x9c(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0xa0(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0xa4(%rbp)
mov    $0x0,%al
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,-0xd0(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0x80(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,-0x88(%rbp)
mov    -0x20(%rbp),%eax
mov    %eax,-0x94(%rbp)
movl   $0x38,-0xec(%rbp)
movl   $0x4000,-0xf0(%rbp)
movl   $0x20000,-0xf4(%rbp)
movl   $0x24000,-0xf8(%rbp)
movl   $0x24038,-0xfc(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0xfc(%rbp),%eax
jne    1306 <CdAudio535DeviceControl+0x1b6>
jmp    156d <CdAudio535DeviceControl+0x41d>
movl   $0x4000,-0x100(%rbp)
movl   $0x20000,-0x104(%rbp)
movl   $0x24000,-0x108(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x108(%rbp),%eax
jne    1338 <CdAudio535DeviceControl+0x1e8>
jmp    16a4 <CdAudio535DeviceControl+0x554>
movl   $0x2c,-0x10c(%rbp)
movl   $0x4000,-0x110(%rbp)
movl   $0x20000,-0x114(%rbp)
movl   $0x24000,-0x118(%rbp)
movl   $0x2402c,-0x11c(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x11c(%rbp),%eax
jne    137e <CdAudio535DeviceControl+0x22e>
jmp    1879 <CdAudio535DeviceControl+0x729>
movl   $0x18,-0x120(%rbp)
movl   $0x4000,-0x124(%rbp)
movl   $0x20000,-0x128(%rbp)
movl   $0x24000,-0x12c(%rbp)
movl   $0x24018,-0x130(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x130(%rbp),%eax
jne    13c4 <CdAudio535DeviceControl+0x274>
jmp    1979 <CdAudio535DeviceControl+0x829>
movl   $0x4,-0x134(%rbp)
movl   $0x4000,-0x138(%rbp)
movl   $0x20000,-0x13c(%rbp)
movl   $0x24000,-0x140(%rbp)
movl   $0x24004,-0x144(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x144(%rbp),%eax
jne    140a <CdAudio535DeviceControl+0x2ba>
jmp    1a26 <CdAudio535DeviceControl+0x8d6>
movl   $0x808,-0x148(%rbp)
movl   $0x4000,-0x14c(%rbp)
movl   $0x20000,-0x150(%rbp)
movl   $0x24000,-0x154(%rbp)
movl   $0x24808,-0x158(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x158(%rbp),%eax
jne    1450 <CdAudio535DeviceControl+0x300>
jmp    1a91 <CdAudio535DeviceControl+0x941>
movl   $0x34,-0x15c(%rbp)
movl   $0x4000,-0x160(%rbp)
movl   $0x20000,-0x164(%rbp)
movl   $0x24000,-0x168(%rbp)
movl   $0x24034,-0x16c(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x16c(%rbp),%eax
jne    1496 <CdAudio535DeviceControl+0x346>
jmp    1ac6 <CdAudio535DeviceControl+0x976>
movl   $0x14,-0x170(%rbp)
movl   $0x4000,-0x174(%rbp)
movl   $0x20000,-0x178(%rbp)
movl   $0x24000,-0x17c(%rbp)
movl   $0x24014,-0x180(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x180(%rbp),%eax
jne    14dc <CdAudio535DeviceControl+0x38c>
jmp    1acb <CdAudio535DeviceControl+0x97b>
movl   $0x28,-0x184(%rbp)
movl   $0x4000,-0x188(%rbp)
movl   $0x20000,-0x18c(%rbp)
movl   $0x24000,-0x190(%rbp)
movl   $0x24028,-0x194(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x194(%rbp),%eax
jne    1522 <CdAudio535DeviceControl+0x3d2>
jmp    1ad0 <CdAudio535DeviceControl+0x980>
movl   $0x800,-0x198(%rbp)
movl   $0x4000,-0x19c(%rbp)
movl   $0x20000,-0x1a0(%rbp)
movl   $0x24000,-0x1a4(%rbp)
movl   $0x24800,-0x1a8(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x1a8(%rbp),%eax
jne    1568 <CdAudio535DeviceControl+0x418>
jmp    1ae6 <CdAudio535DeviceControl+0x996>
jmp    1aee <CdAudio535DeviceControl+0x99e>
mov    -0x8(%rbp),%edi
call   1030 <CdAudioIsPlayActive@plt>
mov    %eax,-0xa8(%rbp)
cmpl   $0x0,-0xa8(%rbp)
je     159e <CdAudio535DeviceControl+0x44e>
movl   $0x80000011,-0x98(%rbp)
movl   $0x0,-0x28(%rbp)
jmp    1b0d <CdAudio535DeviceControl+0x9bd>
cmpl   $0x0,-0x2c(%rbp)
je     15be <CdAudio535DeviceControl+0x46e>
movl   $0xc0000023,-0x98(%rbp)
movl   $0x0,-0x28(%rbp)
jmp    1b0d <CdAudio535DeviceControl+0x9bd>
cmpl   $0x0,-0x90(%rbp)
jne    1601 <CdAudio535DeviceControl+0x4b1>
movl   $0xc000009a,-0x98(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x98(%rbp),%edi
mov    -0xc(%rbp),%esi
mov    -0x18(%rbp),%edx
call   1050 <AG_SetStatusAndReturn@plt>
mov    %eax,-0xac(%rbp)
mov    -0xac(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1b64 <CdAudio535DeviceControl+0xa14>
movl   $0xa,-0x34(%rbp)
movl   $0x26,-0x38(%rbp)
movl   $0xa,-0x3c(%rbp)
mov    -0x84(%rbp),%edi
mov    -0x8c(%rbp),%esi
mov    -0x90(%rbp),%edx
mov    -0x40(%rbp),%ecx
call   1060 <SendSrbSynchronous@plt>
mov    %eax,-0x98(%rbp)
cmpl   $0x0,-0x98(%rbp)
jge    166f <CdAudio535DeviceControl+0x51f>
movl   $0x0,-0x28(%rbp)
mov    -0x98(%rbp),%edi
mov    -0xc(%rbp),%esi
mov    -0x18(%rbp),%edx
call   1050 <AG_SetStatusAndReturn@plt>
mov    %eax,-0xb0(%rbp)
mov    -0xb0(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1b64 <CdAudio535DeviceControl+0xa14>
movl   $0x0,-0x98(%rbp)
mov    -0xa0(%rbp),%eax
mov    %eax,-0x28(%rbp)
cmpl   $0x0,-0x44(%rbp)
jne    1691 <CdAudio535DeviceControl+0x541>
jmp    1b0d <CdAudio535DeviceControl+0x9bd>
movl   $0x1,-0x48(%rbp)
movl   $0x2,-0x4c(%rbp)
jmp    1b0d <CdAudio535DeviceControl+0x9bd>
cmpl   $0x0,-0x2c(%rbp)
je     16c4 <CdAudio535DeviceControl+0x574>
movl   $0xc0000023,-0x98(%rbp)
movl   $0x0,-0x28(%rbp)
jmp    1b0d <CdAudio535DeviceControl+0x9bd>
mov    -0x8(%rbp),%edi
call   1030 <CdAudioIsPlayActive@plt>
mov    %eax,-0xb4(%rbp)
cmpl   $0x0,-0xb4(%rbp)
je     16f5 <CdAudio535DeviceControl+0x5a5>
movl   $0x80000011,-0x98(%rbp)
movl   $0x0,-0x28(%rbp)
jmp    1b0d <CdAudio535DeviceControl+0x9bd>
cmpl   $0x0,-0xa4(%rbp)
jne    1738 <CdAudio535DeviceControl+0x5e8>
movl   $0xc000009a,-0x98(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x98(%rbp),%edi
mov    -0xc(%rbp),%esi
mov    -0x18(%rbp),%edx
call   1050 <AG_SetStatusAndReturn@plt>
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1b64 <CdAudio535DeviceControl+0xa14>
movl   $0xa,-0x3c(%rbp)
movl   $0xa,-0x34(%rbp)
mov    -0x84(%rbp),%edi
mov    -0x8c(%rbp),%esi
mov    -0xa4(%rbp),%edx
mov    -0x50(%rbp),%ecx
call   1060 <SendSrbSynchronous@plt>
mov    %eax,-0x98(%rbp)
cmpl   $0x0,-0x98(%rbp)
jl     17ab <CdAudio535DeviceControl+0x65b>
movslq -0x98(%rbp),%rax
mov    %rax,-0x1b8(%rbp)
cmpq   $0xffffffffc000003c,-0x1b8(%rbp)
je     17a1 <CdAudio535DeviceControl+0x651>
movl   $0x0,-0x98(%rbp)
jmp    17a6 <CdAudio535DeviceControl+0x656>
jmp    17b0 <CdAudio535DeviceControl+0x660>
jmp    1800 <CdAudio535DeviceControl+0x6b0>
jmp    17b0 <CdAudio535DeviceControl+0x660>
movslq -0x98(%rbp),%rax
mov    %rax,-0x1c0(%rbp)
cmpq   $0xffffffffc000003c,-0x1c0(%rbp)
je     17fb <CdAudio535DeviceControl+0x6ab>
movl   $0x0,-0x28(%rbp)
mov    -0x98(%rbp),%edi
mov    -0xc(%rbp),%esi
mov    -0x18(%rbp),%edx
call   1050 <AG_SetStatusAndReturn@plt>
mov    %eax,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1b64 <CdAudio535DeviceControl+0xa14>
jmp    1800 <CdAudio535DeviceControl+0x6b0>
mov    -0x4c(%rbp),%eax
sub    -0x48(%rbp),%eax
mov    %eax,-0x1c4(%rbp)
mov    -0x1c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc4(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0xc8(%rbp)
mov    -0xc8(%rbp),%eax
cmp    -0xc4(%rbp),%eax
jge    1847 <CdAudio535DeviceControl+0x6f7>
mov    -0xc8(%rbp),%eax
mov    %eax,-0xc0(%rbp)
jmp    1853 <CdAudio535DeviceControl+0x703>
mov    -0xc4(%rbp),%eax
mov    %eax,-0xc0(%rbp)
mov    -0xc8(%rbp),%eax
cmp    -0xc4(%rbp),%eax
jle    1874 <CdAudio535DeviceControl+0x724>
mov    -0x9c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9c(%rbp)
jmp    1b0d <CdAudio535DeviceControl+0x9bd>
mov    -0x1c(%rbp),%eax
mov    %eax,-0xcc(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x54(%rbp),%eax
jge    18a4 <CdAudio535DeviceControl+0x754>
movl   $0xc0000023,-0x98(%rbp)
movl   $0x0,-0x28(%rbp)
jmp    1b0d <CdAudio535DeviceControl+0x9bd>
cmpl   $0x0,-0xd0(%rbp)
jne    18e7 <CdAudio535DeviceControl+0x797>
movl   $0xc000009a,-0x98(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x98(%rbp),%edi
mov    -0xc(%rbp),%esi
mov    -0x18(%rbp),%edx
call   1050 <AG_SetStatusAndReturn@plt>
mov    %eax,-0xd4(%rbp)
mov    -0xd4(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1b64 <CdAudio535DeviceControl+0xa14>
cmpl   $0x1,-0x58(%rbp)
je     1927 <CdAudio535DeviceControl+0x7d7>
movl   $0xc0000001,-0x98(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x98(%rbp),%edi
mov    -0xc(%rbp),%esi
mov    -0x18(%rbp),%edx
call   1050 <AG_SetStatusAndReturn@plt>
mov    %eax,-0xd8(%rbp)
mov    -0xd8(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1b64 <CdAudio535DeviceControl+0xa14>
movl   $0xa,-0x34(%rbp)
movl   $0xa,-0x3c(%rbp)
mov    -0x84(%rbp),%edi
mov    -0x8c(%rbp),%esi
mov    -0xd0(%rbp),%edx
mov    -0x54(%rbp),%ecx
call   1060 <SendSrbSynchronous@plt>
mov    %eax,-0x98(%rbp)
cmpl   $0x0,-0x98(%rbp)
jl     196d <CdAudio535DeviceControl+0x81d>
mov    -0x54(%rbp),%eax
mov    %eax,-0x28(%rbp)
jmp    1974 <CdAudio535DeviceControl+0x824>
movl   $0x0,-0x28(%rbp)
jmp    1b0d <CdAudio535DeviceControl+0x9bd>
mov    -0x1c(%rbp),%eax
mov    %eax,-0xdc(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x5c(%rbp),%eax
jge    19a4 <CdAudio535DeviceControl+0x854>
movl   $0xc0000004,-0x98(%rbp)
jmp    1b0d <CdAudio535DeviceControl+0x9bd>
mov    -0x60(%rbp),%eax
cmp    -0x64(%rbp),%eax
jne    19d7 <CdAudio535DeviceControl+0x887>
mov    -0x68(%rbp),%eax
cmp    -0x6c(%rbp),%eax
jne    19d2 <CdAudio535DeviceControl+0x882>
mov    -0x70(%rbp),%eax
cmp    -0x74(%rbp),%eax
jne    19cd <CdAudio535DeviceControl+0x87d>
jmp    19cd <CdAudio535DeviceControl+0x87d>
jmp    19d2 <CdAudio535DeviceControl+0x882>
jmp    19d7 <CdAudio535DeviceControl+0x887>
movl   $0xa,-0x34(%rbp)
movl   $0xa,-0x3c(%rbp)
mov    -0x84(%rbp),%edi
mov    -0x8c(%rbp),%esi
xor    %ecx,%ecx
mov    %ecx,%edx
call   1060 <SendSrbSynchronous@plt>
mov    %eax,-0x98(%rbp)
cmpl   $0x0,-0x98(%rbp)
jl     1a21 <CdAudio535DeviceControl+0x8d1>
cmpl   $0x47,-0x78(%rbp)
jne    1a1c <CdAudio535DeviceControl+0x8cc>
jmp    1a1c <CdAudio535DeviceControl+0x8cc>
jmp    1a21 <CdAudio535DeviceControl+0x8d1>
jmp    1b0d <CdAudio535DeviceControl+0x9bd>
mov    -0x1c(%rbp),%eax
mov    %eax,-0xe0(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x7c(%rbp),%eax
jge    1a51 <CdAudio535DeviceControl+0x901>
movl   $0xc0000004,-0x98(%rbp)
jmp    1b0d <CdAudio535DeviceControl+0x9bd>
movl   $0xa,-0x34(%rbp)
movl   $0xa,-0x3c(%rbp)
mov    -0x84(%rbp),%edi
mov    -0x8c(%rbp),%esi
xor    %ecx,%ecx
mov    %ecx,%edx
call   1060 <SendSrbSynchronous@plt>
mov    %eax,-0x98(%rbp)
cmpl   $0x0,-0x98(%rbp)
jge    1a8c <CdAudio535DeviceControl+0x93c>
jmp    1a8c <CdAudio535DeviceControl+0x93c>
jmp    1b0d <CdAudio535DeviceControl+0x9bd>
movl   $0x0,-0x28(%rbp)
movl   $0xa,-0x34(%rbp)
movl   $0xa,-0x3c(%rbp)
mov    -0x84(%rbp),%edi
mov    -0x8c(%rbp),%esi
xor    %ecx,%ecx
mov    %ecx,%edx
call   1060 <SendSrbSynchronous@plt>
mov    %eax,-0x98(%rbp)
jmp    1b0d <CdAudio535DeviceControl+0x9bd>
jmp    1acb <CdAudio535DeviceControl+0x97b>
jmp    1ad0 <CdAudio535DeviceControl+0x980>
movl   $0x0,-0x28(%rbp)
movl   $0xc0000010,-0x98(%rbp)
jmp    1b0d <CdAudio535DeviceControl+0x9bd>
mov    -0x8(%rbp),%edi
call   1030 <CdAudioIsPlayActive@plt>
mov    -0x8(%rbp),%edi
mov    -0xc(%rbp),%esi
call   1070 <CdAudioSendToNextDriver@plt>
mov    %eax,-0xe4(%rbp)
mov    -0xe4(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1b64 <CdAudio535DeviceControl+0xa14>
jmp    1b12 <CdAudio535DeviceControl+0x9c2>
jmp    1b17 <CdAudio535DeviceControl+0x9c7>
jmp    1b1c <CdAudio535DeviceControl+0x9cc>
jmp    1b21 <CdAudio535DeviceControl+0x9d1>
jmp    1b26 <CdAudio535DeviceControl+0x9d6>
jmp    1b2b <CdAudio535DeviceControl+0x9db>
jmp    1b30 <CdAudio535DeviceControl+0x9e0>
jmp    1b35 <CdAudio535DeviceControl+0x9e5>
jmp    1b3a <CdAudio535DeviceControl+0x9ea>
jmp    1b3f <CdAudio535DeviceControl+0x9ef>
jmp    1b44 <CdAudio535DeviceControl+0x9f4>
mov    -0x98(%rbp),%edi
mov    -0xc(%rbp),%esi
mov    -0x18(%rbp),%edx
call   1050 <AG_SetStatusAndReturn@plt>
mov    %eax,-0xe8(%rbp)
mov    -0xe8(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x1d0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<CdAudio535DeviceControl>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %esi,(%rsp)
mov    %edi,0x10(%rsp)
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,0xc(%rsp)
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,0x4(%rsp)
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,%r12d
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,0x14(%rsp)
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,0x1c(%rsp)
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,0x24(%rsp)
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,0x20(%rsp)
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,0x18(%rsp)
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,%r15d
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,%ebx
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,%ebp
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,0x8(%rsp)
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,%r14d
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
mov    %eax,%r13d
xor    %eax,%eax
call   1040 <__VERIFIER_nondet_int@plt>
lea    -0x24000(%r12),%ecx
ff
cmp    $0x38,%ecx
ja     12eb <CdAudio535DeviceControl+0x19b>
mov    $0xc0000010,%edi
lea    0xd80(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0xc0000023,%edi
cmpl   $0x0,0x14(%rsp)
jne    13da <CdAudio535DeviceControl+0x28a>
mov    0x10(%rsp),%edi
call   1030 <CdAudioIsPlayActive@plt>
mov    $0x80000011,%edi
test   %eax,%eax
jne    13da <CdAudio535DeviceControl+0x28a>
test   %r13d,%r13d
je     13ce <CdAudio535DeviceControl+0x27e>
mov    0xc(%rsp),%edi
mov    0x8(%rsp),%esi
mov    %r13d,%edx
mov    0x20(%rsp),%ecx
call   1060 <SendSrbSynchronous@plt>
xor    %edi,%edi
test   %eax,%eax
jns    13da <CdAudio535DeviceControl+0x28a>
mov    $0xc000003c,%edi
cmp    $0xc000003c,%eax
jne    13a7 <CdAudio535DeviceControl+0x257>
jmp    13da <CdAudio535DeviceControl+0x28a>
cmp    $0x24800,%r12d
je     13ab <CdAudio535DeviceControl+0x25b>
cmp    $0x24808,%r12d
je     1325 <CdAudio535DeviceControl+0x1d5>
jmp    13b4 <CdAudio535DeviceControl+0x264>
mov    $0xc0000004,%edi
cmp    %ebp,0x1c(%rsp)
jge    1325 <CdAudio535DeviceControl+0x1d5>
jmp    13da <CdAudio535DeviceControl+0x28a>
mov    $0xc0000004,%edi
cmp    %ebx,0x1c(%rsp)
jl     13da <CdAudio535DeviceControl+0x28a>
mov    0xc(%rsp),%edi
mov    0x8(%rsp),%esi
xor    %edx,%edx
xor    %ecx,%ecx
call   1060 <SendSrbSynchronous@plt>
mov    %eax,%edi
jmp    13da <CdAudio535DeviceControl+0x28a>
mov    $0xc0000023,%edi
mov    0x18(%rsp),%ecx
cmp    %ecx,0x14(%rsp)
jl     13da <CdAudio535DeviceControl+0x28a>
test   %eax,%eax
je     13ce <CdAudio535DeviceControl+0x27e>
cmp    $0x1,%r15d
jne    13d5 <CdAudio535DeviceControl+0x285>
mov    0xc(%rsp),%edi
mov    0x8(%rsp),%esi
mov    %eax,%edx
mov    0x18(%rsp),%ecx
jmp    1331 <CdAudio535DeviceControl+0x1e1>
mov    0x10(%rsp),%edi
call   1030 <CdAudioIsPlayActive@plt>
mov    $0x80000011,%edi
test   %eax,%eax
jne    13da <CdAudio535DeviceControl+0x28a>
mov    $0xc0000023,%edi
cmpl   $0x0,0x14(%rsp)
jne    13da <CdAudio535DeviceControl+0x28a>
test   %r14d,%r14d
je     13ce <CdAudio535DeviceControl+0x27e>
mov    0xc(%rsp),%edi
mov    0x8(%rsp),%esi
mov    %r14d,%edx
mov    0x24(%rsp),%ecx
call   1060 <SendSrbSynchronous@plt>
xor    %edi,%edi
test   %eax,%eax
jns    13da <CdAudio535DeviceControl+0x28a>
mov    %eax,%edi
jmp    13da <CdAudio535DeviceControl+0x28a>
mov    0x10(%rsp),%edi
call   1030 <CdAudioIsPlayActive@plt>
mov    0x10(%rsp),%edi
mov    (%rsp),%esi
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1070 <CdAudioSendToNextDriver@plt>
mov    $0xc000009a,%edi
jmp    13da <CdAudio535DeviceControl+0x28a>
mov    $0xc0000001,%edi
mov    (%rsp),%esi
mov    0x4(%rsp),%edx
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1050 <AG_SetStatusAndReturn@plt>

LLVM IR (-O0):
define i32 @CdAudio535DeviceControl(i32 %0, i32 %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
%34 = alloca i32
%35 = alloca i32
%36 = alloca i32
%37 = alloca i32
%38 = alloca i32
%39 = alloca i32
%40 = alloca i32
%41 = alloca i32
%42 = alloca i32
%43 = alloca i32
%44 = alloca i32
%45 = alloca i32
%46 = alloca i32
%47 = alloca i32
%48 = alloca i32
%49 = alloca i32
%50 = alloca i32
%51 = alloca i32
%52 = alloca i32
%53 = alloca i32
%54 = alloca i32
%55 = alloca i32
%56 = alloca i32
%57 = alloca i32
%58 = alloca i32
%59 = alloca i32
%60 = alloca i32
%61 = alloca i32
%62 = alloca i32
%63 = alloca i32
%64 = alloca i32
%65 = alloca i32
%66 = alloca i32
%67 = alloca i32
%68 = alloca i32
%69 = alloca i32
%70 = alloca i32
%71 = alloca i32
%72 = alloca i32
%73 = alloca i32
%74 = alloca i32
%75 = alloca i32
%76 = alloca i32
%77 = alloca i32
%78 = alloca i32
%79 = alloca i32
%80 = alloca i32
%81 = alloca i32
%82 = alloca i32
%83 = alloca i32
%84 = alloca i32
%85 = alloca i32
%86 = alloca i32
%87 = alloca i32
%88 = alloca i32
%89 = alloca i32
%90 = alloca i32
%91 = alloca i32
%92 = alloca i32
%93 = alloca i32
%94 = alloca i32
%95 = alloca i32
%96 = alloca i32
%97 = alloca i32
%98 = alloca i32
%99 = alloca i32
%100 = alloca i32
%101 = alloca i32
%102 = alloca i32
%103 = alloca i32
%104 = alloca i32
%105 = alloca i32
%106 = alloca i32
%107 = alloca i32
%108 = alloca i32
%109 = alloca i32
%110 = alloca i64
%111 = alloca i64
%112 = alloca i32
%113 = alloca i32
store i32 %0, i32* %4
store i32 %1, i32* %5
%114 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %114, i32* %6
%115 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %115, i32* %7
%116 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %116, i32* %8
%117 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %117, i32* %9
%118 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %118, i32* %10
%119 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %119, i32* %11
%120 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %120, i32* %13
%121 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %121, i32* %14
%122 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %122, i32* %18
%123 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %123, i32* %19
%124 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %124, i32* %20
%125 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %125, i32* %21
%126 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %126, i32* %22
%127 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %127, i32* %23
%128 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %128, i32* %24
%129 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %129, i32* %25
%130 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %130, i32* %26
%131 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %131, i32* %27
%132 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %132, i32* %28
%133 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %133, i32* %29
%134 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %134, i32* %30
%135 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %135, i32* %31
%136 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %136, i32* %32
%137 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %137, i32* %33
%138 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %138, i32* %37
%139 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %139, i32* %38
%140 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %140, i32* %41
%141 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %141, i32* %42
%142 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %142, i32* %43
%143 = call i32 (...) @__VERIFIER_nondet_int()
store i32 %143, i32* %54
%144 = load i32, i32* %6
store i32 %144, i32* %34
%145 = load i32, i32* %7
store i32 %145, i32* %35
%146 = load i32, i32* %9
store i32 %146, i32* %36
%147 = load i32, i32* %10
store i32 %147, i32* %39
store i32 56, i32* %61
store i32 16384, i32* %62
store i32 131072, i32* %63
store i32 147456, i32* %64
store i32 147512, i32* %65
%148 = load i32, i32* %11
%149 = load i32, i32* %65
%150 = icmp eq i32 %148, %149
br i1 %150, label %151, label %152
151: ; preds = %2
br label %200
152: ; preds = %2
store i32 16384, i32* %66
store i32 131072, i32* %67
store i32 147456, i32* %68
%153 = load i32, i32* %11
%154 = load i32, i32* %68
%155 = icmp eq i32 %153, %154
br i1 %155, label %156, label %157
156: ; preds = %152
br label %240
157: ; preds = %152
store i32 44, i32* %69
store i32 16384, i32* %70
store i32 131072, i32* %71
store i32 147456, i32* %72
store i32 147500, i32* %73
%158 = load i32, i32* %11
%159 = load i32, i32* %73
%160 = icmp eq i32 %158, %159
br i1 %160, label %161, label %162
161: ; preds = %157
br label %310
162: ; preds = %157
store i32 24, i32* %74
store i32 16384, i32* %75
store i32 131072, i32* %76
store i32 147456, i32* %77
store i32 147480, i32* %78
%163 = load i32, i32* %11
%164 = load i32, i32* %78
%165 = icmp eq i32 %163, %164
br i1 %165, label %166, label %167
166: ; preds = %162
br label %346
167: ; preds = %162
store i32 4, i32* %79
store i32 16384, i32* %80
store i32 131072, i32* %81
store i32 147456, i32* %82
store i32 147460, i32* %83
%168 = load i32, i32* %11
%169 = load i32, i32* %83
%170 = icmp eq i32 %168, %169
br i1 %170, label %171, label %172
171: ; preds = %167
br label %379
172: ; preds = %167
store i32 2056, i32* %84
store i32 16384, i32* %85
store i32 131072, i32* %86
store i32 147456, i32* %87
store i32 149512, i32* %88
%173 = load i32, i32* %11
%174 = load i32, i32* %88
%175 = icmp eq i32 %173, %174
br i1 %175, label %176, label %177
176: ; preds = %172
br label %393
177: ; preds = %172
store i32 52, i32* %89
store i32 16384, i32* %90
store i32 131072, i32* %91
store i32 147456, i32* %92
store i32 147508, i32* %93
%178 = load i32, i32* %11
%179 = load i32, i32* %93
%180 = icmp eq i32 %178, %179
br i1 %180, label %181, label %182
181: ; preds = %177
br label %397
182: ; preds = %177
store i32 20, i32* %94
store i32 16384, i32* %95
store i32 131072, i32* %96
store i32 147456, i32* %97
store i32 147476, i32* %98
%183 = load i32, i32* %11
%184 = load i32, i32* %98
%185 = icmp eq i32 %183, %184
br i1 %185, label %186, label %187
186: ; preds = %182
br label %398
187: ; preds = %182
store i32 40, i32* %99
store i32 16384, i32* %100
store i32 131072, i32* %101
store i32 147456, i32* %102
store i32 147496, i32* %103
%188 = load i32, i32* %11
%189 = load i32, i32* %103
%190 = icmp eq i32 %188, %189
br i1 %190, label %191, label %192
191: ; preds = %187
br label %399
192: ; preds = %187
store i32 2048, i32* %104
store i32 16384, i32* %105
store i32 131072, i32* %106
store i32 147456, i32* %107
store i32 149504, i32* %108
%193 = load i32, i32* %11
%194 = load i32, i32* %108
%195 = icmp eq i32 %193, %194
br i1 %195, label %196, label %197
196: ; preds = %192
br label %400
197: ; preds = %192
br label %403
198: ; No predecessors!
br i1 false, label %199, label %408
199: ; preds = %198
br label %200
200: ; preds = %199, %151
%201 = load i32, i32* %4
%202 = call i32 @CdAudioIsPlayActive(i32 %201)
store i32 %202, i32* %44
%203 = load i32, i32* %44
%204 = icmp ne i32 %203, 0
br i1 %204, label %205, label %206
205: ; preds = %200
store i32 -2147483631, i32* %40
store i32 0, i32* %12
br label %409
206: ; preds = %200
%207 = load i32, i32* %13
%208 = icmp ne i32 %207, 0
br i1 %208, label %209, label %210
209: ; preds = %206
store i32 -1073741789, i32* %40
store i32 0, i32* %12
br label %409
210: ; preds = %206
%211 = load i32, i32* %38
%212 = icmp eq i32 %211, 0
br i1 %212, label %213, label %219
213: ; preds = %210
store i32 -1073741670, i32* %40
store i32 0, i32* %12
%214 = load i32, i32* %40
%215 = load i32, i32* %5
%216 = load i32, i32* %8
%217 = call i32 @AG_SetStatusAndReturn(i32 %214, i32 %215, i32 %216)
store i32 %217, i32* %45
%218 = load i32, i32* %45
store i32 %218, i32* %3
br label %426
219: ; preds = %210
store i32 10, i32* %15
store i32 38, i32* %16
store i32 10, i32* %17
%220 = load i32, i32* %35
%221 = load i32, i32* %37
%222 = load i32, i32* %38
%223 = load i32, i32* %18
%224 = call i32 @SendSrbSynchronous(i32 %220, i32 %221, i32 %222, i32 %223)
store i32 %224, i32* %40
%225 = load i32, i32* %40
%226 = icmp slt i32 %225, 0
br i1 %226, label %227, label %233
227: ; preds = %219
store i32 0, i32* %12
%228 = load i32, i32* %40
%229 = load i32, i32* %5
%230 = load i32, i32* %8
%231 = call i32 @AG_SetStatusAndReturn(i32 %228, i32 %229, i32 %230)
store i32 %231, i32* %46
%232 = load i32, i32* %46
store i32 %232, i32* %3
br label %426
233: ; preds = %219
store i32 0, i32* %40
br label %234
234: ; preds = %233
%235 = load i32, i32* %42
store i32 %235, i32* %12
%236 = load i32, i32* %19
%237 = icmp eq i32 %236, 0
br i1 %237, label %238, label %239
238: ; preds = %234
br label %409
239: ; preds = %234
store i32 1, i32* %20
store i32 2, i32* %21
br label %409
240: ; preds = %156
%241 = load i32, i32* %13
%242 = icmp ne i32 %241, 0
br i1 %242, label %243, label %244
243: ; preds = %240
store i32 -1073741789, i32* %40
store i32 0, i32* %12
br label %409
244: ; preds = %240
%245 = load i32, i32* %4
%246 = call i32 @CdAudioIsPlayActive(i32 %245)
store i32 %246, i32* %47
%247 = load i32, i32* %47
%248 = icmp ne i32 %247, 0
br i1 %248, label %249, label %250
249: ; preds = %244
store i32 -2147483631, i32* %40
store i32 0, i32* %12
br label %409
250: ; preds = %244
%251 = load i32, i32* %43
%252 = icmp eq i32 %251, 0
br i1 %252, label %253, label %259
253: ; preds = %250
store i32 -1073741670, i32* %40
store i32 0, i32* %12
%254 = load i32, i32* %40
%255 = load i32, i32* %5
%256 = load i32, i32* %8
%257 = call i32 @AG_SetStatusAndReturn(i32 %254, i32 %255, i32 %256)
store i32 %257, i32* %48
%258 = load i32, i32* %48
store i32 %258, i32* %3
br label %426
259: ; preds = %250
store i32 10, i32* %17
store i32 10, i32* %15
%260 = load i32, i32* %35
%261 = load i32, i32* %37
%262 = load i32, i32* %43
%263 = load i32, i32* %22
%264 = call i32 @SendSrbSynchronous(i32 %260, i32 %261, i32 %262, i32 %263)
store i32 %264, i32* %40
%265 = load i32, i32* %40
%266 = icmp sge i32 %265, 0
br i1 %266, label %267, label %275
267: ; preds = %259
%268 = load i32, i32* %40
%269 = sext i32 %268 to i64
store i64 %269, i64* %110
%270 = load i64, i64* %110
%271 = icmp ne i64 %270, -1073741764
br i1 %271, label %272, label %273
272: ; preds = %267
store i32 0, i32* %40
br label %274
273: ; preds = %267
br label %276
274: ; preds = %272
br label %288
275: ; preds = %259
br label %276
276: ; preds = %275, %273
%277 = load i32, i32* %40
%278 = sext i32 %277 to i64
store i64 %278, i64* %111
%279 = load i64, i64* %111
%280 = icmp ne i64 %279, -1073741764
br i1 %280, label %281, label %287
281: ; preds = %276
store i32 0, i32* %12
%282 = load i32, i32* %40
%283 = load i32, i32* %5
%284 = load i32, i32* %8
%285 = call i32 @AG_SetStatusAndReturn(i32 %282, i32 %283, i32 %284)
store i32 %285, i32* %49
%286 = load i32, i32* %49
store i32 %286, i32* %3
br label %426
287: ; preds = %276
br label %288
288: ; preds = %287, %274
%289 = load i32, i32* %21
%290 = load i32, i32* %20
%291 = sub nsw i32 %289, %290
store i32 %291, i32* %112
%292 = load i32, i32* %112
%293 = add nsw i32 %292, 1
store i32 %293, i32* %51
%294 = load i32, i32* %13
store i32 %294, i32* %52
%295 = load i32, i32* %52
%296 = load i32, i32* %51
%297 = icmp slt i32 %295, %296
br i1 %297, label %298, label %300
298: ; preds = %288
%299 = load i32, i32* %52
store i32 %299, i32* %50
br label %302
300: ; preds = %288
%301 = load i32, i32* %51
store i32 %301, i32* %50
br label %302
302: ; preds = %300, %298
%303 = load i32, i32* %52
%304 = load i32, i32* %51
%305 = icmp sgt i32 %303, %304
br i1 %305, label %306, label %309
306: ; preds = %302
%307 = load i32, i32* %41
%308 = add nsw i32 %307, 1
store i32 %308, i32* %41
br label %309
309: ; preds = %306, %302
br label %409
310: ; preds = %161
%311 = load i32, i32* %9
store i32 %311, i32* %53
%312 = load i32, i32* %13
%313 = load i32, i32* %23
%314 = icmp slt i32 %312, %313
br i1 %314, label %315, label %316
315: ; preds = %310
store i32 -1073741789, i32* %40
store i32 0, i32* %12
br label %409
316: ; preds = %310
%317 = load i32, i32* %54
%318 = icmp eq i32 %317, 0
br i1 %318, label %319, label %325
319: ; preds = %316
store i32 -1073741670, i32* %40
store i32 0, i32* %12
%320 = load i32, i32* %40
%321 = load i32, i32* %5
%322 = load i32, i32* %8
%323 = call i32 @AG_SetStatusAndReturn(i32 %320, i32 %321, i32 %322)
store i32 %323, i32* %55
%324 = load i32, i32* %55
store i32 %324, i32* %3
br label %426
325: ; preds = %316
%326 = load i32, i32* %24
%327 = icmp ne i32 %326, 1
br i1 %327, label %328, label %334
328: ; preds = %325
store i32 -1073741823, i32* %40
store i32 0, i32* %12
%329 = load i32, i32* %40
%330 = load i32, i32* %5
%331 = load i32, i32* %8
%332 = call i32 @AG_SetStatusAndReturn(i32 %329, i32 %330, i32 %331)
store i32 %332, i32* %56
%333 = load i32, i32* %56
store i32 %333, i32* %3
br label %426
334: ; preds = %325
store i32 10, i32* %15
store i32 10, i32* %17
%335 = load i32, i32* %35
%336 = load i32, i32* %37
%337 = load i32, i32* %54
%338 = load i32, i32* %23
%339 = call i32 @SendSrbSynchronous(i32 %335, i32 %336, i32 %337, i32 %338)
store i32 %339, i32* %40
%340 = load i32, i32* %40
%341 = icmp sge i32 %340, 0
br i1 %341, label %342, label %344
342: ; preds = %334
%343 = load i32, i32* %23
store i32 %343, i32* %12
br label %345
344: ; preds = %334
store i32 0, i32* %12
br label %345
345: ; preds = %344, %342
br label %409
346: ; preds = %166
%347 = load i32, i32* %9
store i32 %347, i32* %57
store i32 0, i32* %12
%348 = load i32, i32* %14
%349 = load i32, i32* %25
%350 = icmp slt i32 %348, %349
br i1 %350, label %351, label %352
351: ; preds = %346
store i32 -1073741820, i32* %40
br label %409
352: ; preds = %346
%353 = load i32, i32* %26
%354 = load i32, i32* %27
%355 = icmp eq i32 %353, %354
br i1 %355, label %356, label %367
356: ; preds = %352
%357 = load i32, i32* %28
%358 = load i32, i32* %29
%359 = icmp eq i32 %357, %358
br i1 %359, label %360, label %366
360: ; preds = %356
%361 = load i32, i32* %30
%362 = load i32, i32* %31
%363 = icmp eq i32 %361, %362
br i1 %363, label %364, label %365
364: ; preds = %360
br label %365
365: ; preds = %364, %360
br label %366
366: ; preds = %365, %356
br label %367
367: ; preds = %366, %352
store i32 10, i32* %15
store i32 10, i32* %17
%368 = load i32, i32* %35
%369 = load i32, i32* %37
%370 = call i32 @SendSrbSynchronous(i32 %368, i32 %369, i32 0, i32 0)
store i32 %370, i32* %40
%371 = load i32, i32* %40
%372 = icmp sge i32 %371, 0
br i1 %372, label %373, label %378
373: ; preds = %367
%374 = load i32, i32* %32
%375 = icmp eq i32 %374, 71
br i1 %375, label %376, label %377
376: ; preds = %373
br label %377
377: ; preds = %376, %373
br label %378
378: ; preds = %377, %367
br label %409
379: ; preds = %171
%380 = load i32, i32* %9
store i32 %380, i32* %58
store i32 0, i32* %12
%381 = load i32, i32* %14
%382 = load i32, i32* %33
%383 = icmp slt i32 %381, %382
br i1 %383, label %384, label %385
384: ; preds = %379
store i32 -1073741820, i32* %40
br label %409
385: ; preds = %379
store i32 10, i32* %15
store i32 10, i32* %17
%386 = load i32, i32* %35
%387 = load i32, i32* %37
%388 = call i32 @SendSrbSynchronous(i32 %386, i32 %387, i32 0, i32 0)
store i32 %388, i32* %40
%389 = load i32, i32* %40
%390 = icmp slt i32 %389, 0
br i1 %390, label %391, label %392
391: ; preds = %385
br label %392
392: ; preds = %391, %385
br label %409
393: ; preds = %176
store i32 0, i32* %12
store i32 10, i32* %15
store i32 10, i32* %17
%394 = load i32, i32* %35
%395 = load i32, i32* %37
%396 = call i32 @SendSrbSynchronous(i32 %394, i32 %395, i32 0, i32 0)
store i32 %396, i32* %40
br label %409
397: ; preds = %181
br label %398
398: ; preds = %397, %186
br label %399
399: ; preds = %398, %191
store i32 0, i32* %12
store i32 -1073741808, i32* %40
br label %409
400: ; preds = %196
%401 = load i32, i32* %4
%402 = call i32 @CdAudioIsPlayActive(i32 %401)
br label %403
403: ; preds = %400, %197
%404 = load i32, i32* %4
%405 = load i32, i32* %5
%406 = call i32 @CdAudioSendToNextDriver(i32 %404, i32 %405)
store i32 %406, i32* %59
%407 = load i32, i32* %59
store i32 %407, i32* %3
br label %426
408: ; preds = %198
br label %409
409: ; preds = %408, %399, %393, %392, %384, %378, %351, %345, %315, %309, %249, %243, %239, %238, %209, %205
br label %410
410: ; preds = %409
br label %411
411: ; preds = %410
br label %412
412: ; preds = %411
br label %413
413: ; preds = %412
br label %414
414: ; preds = %413
br label %415
415: ; preds = %414
br label %416
416: ; preds = %415
br label %417
417: ; preds = %416
br label %418
418: ; preds = %417
br label %419
419: ; preds = %418
br label %420
420: ; preds = %419
%421 = load i32, i32* %40
%422 = load i32, i32* %5
%423 = load i32, i32* %8
%424 = call i32 @AG_SetStatusAndReturn(i32 %421, i32 %422, i32 %423)
store i32 %424, i32* %60
%425 = load i32, i32* %60
store i32 %425, i32* %3
br label %426
426: ; preds = %420, %403, %328, %319, %281, %253, %227, %213
%427 = load i32, i32* %3
ret i32 %427
}

LLVM IR (-O2):
define i32 @CdAudio535DeviceControl(i32 %0, i32 %1) {
%3 = tail call i32 (...) @__VERIFIER_nondet_int()
%4 = tail call i32 (...) @__VERIFIER_nondet_int()
%5 = tail call i32 (...) @__VERIFIER_nondet_int()
%6 = tail call i32 (...) @__VERIFIER_nondet_int()
%7 = tail call i32 (...) @__VERIFIER_nondet_int()
%8 = tail call i32 (...) @__VERIFIER_nondet_int()
%9 = tail call i32 (...) @__VERIFIER_nondet_int()
%10 = tail call i32 (...) @__VERIFIER_nondet_int()
%11 = tail call i32 (...) @__VERIFIER_nondet_int()
%12 = tail call i32 (...) @__VERIFIER_nondet_int()
%13 = tail call i32 (...) @__VERIFIER_nondet_int()
%14 = tail call i32 (...) @__VERIFIER_nondet_int()
%15 = tail call i32 (...) @__VERIFIER_nondet_int()
%16 = tail call i32 (...) @__VERIFIER_nondet_int()
%17 = tail call i32 (...) @__VERIFIER_nondet_int()
%18 = tail call i32 (...) @__VERIFIER_nondet_int()
%19 = tail call i32 (...) @__VERIFIER_nondet_int()
%20 = tail call i32 (...) @__VERIFIER_nondet_int()
%21 = tail call i32 (...) @__VERIFIER_nondet_int()
%22 = tail call i32 (...) @__VERIFIER_nondet_int()
%23 = tail call i32 (...) @__VERIFIER_nondet_int()
%24 = tail call i32 (...) @__VERIFIER_nondet_int()
%25 = tail call i32 (...) @__VERIFIER_nondet_int()
%26 = tail call i32 (...) @__VERIFIER_nondet_int()
%27 = tail call i32 (...) @__VERIFIER_nondet_int()
%28 = tail call i32 (...) @__VERIFIER_nondet_int()
%29 = tail call i32 (...) @__VERIFIER_nondet_int()
%30 = tail call i32 (...) @__VERIFIER_nondet_int()
%31 = tail call i32 (...) @__VERIFIER_nondet_int()
%32 = tail call i32 (...) @__VERIFIER_nondet_int()
switch i32 %8, label %87 [
i32 147512, label %33
i32 147456, label %47
i32 147500, label %63
i32 147480, label %75
i32 147460, label %79
i32 149512, label %83
i32 147508, label %89
i32 147476, label %89
i32 147496, label %89
i32 149504, label %85
]
33: ; preds = %2
%34 = tail call i32 @CdAudioIsPlayActive(i32 %0)
%35 = icmp eq i32 %34, 0
br i1 %35, label %36, label %89
36: ; preds = %33
%37 = icmp eq i32 %9, 0
br i1 %37, label %38, label %89
38: ; preds = %36
%39 = icmp eq i32 %28, 0
br i1 %39, label %40, label %42
40: ; preds = %38
%41 = tail call i32 @AG_SetStatusAndReturn(i32 -1073741670, i32 %1, i32 %5)
br label %92
42: ; preds = %38
%43 = tail call i32 @SendSrbSynchronous(i32 %4, i32 %27, i32 %28, i32 %11)
%44 = icmp slt i32 %43, 0
br i1 %44, label %45, label %89
45: ; preds = %42
%46 = tail call i32 @AG_SetStatusAndReturn(i32 %43, i32 %1, i32 %5)
br label %92
47: ; preds = %2
%48 = icmp eq i32 %9, 0
br i1 %48, label %49, label %89
49: ; preds = %47
%50 = tail call i32 @CdAudioIsPlayActive(i32 %0)
%51 = icmp eq i32 %50, 0
br i1 %51, label %52, label %89
52: ; preds = %49
%53 = icmp eq i32 %31, 0
br i1 %53, label %54, label %56
54: ; preds = %52
%55 = tail call i32 @AG_SetStatusAndReturn(i32 -1073741670, i32 %1, i32 %5)
br label %92
56: ; preds = %52
%57 = tail call i32 @SendSrbSynchronous(i32 %4, i32 %27, i32 %31, i32 %15)
%58 = icmp sgt i32 %57, -1
br i1 %58, label %89, label %59
59: ; preds = %56
%60 = icmp eq i32 %57, -1073741764
br i1 %60, label %89, label %61
61: ; preds = %59
%62 = tail call i32 @AG_SetStatusAndReturn(i32 %57, i32 %1, i32 %5)
br label %92
63: ; preds = %2
%64 = icmp slt i32 %9, %16
br i1 %64, label %89, label %65
65: ; preds = %63
%66 = icmp eq i32 %32, 0
br i1 %66, label %67, label %69
67: ; preds = %65
%68 = tail call i32 @AG_SetStatusAndReturn(i32 -1073741670, i32 %1, i32 %5)
br label %92
69: ; preds = %65
%70 = icmp eq i32 %17, 1
br i1 %70, label %73, label %71
71: ; preds = %69
%72 = tail call i32 @AG_SetStatusAndReturn(i32 -1073741823, i32 %1, i32 %5)
br label %92
73: ; preds = %69
%74 = tail call i32 @SendSrbSynchronous(i32 %4, i32 %27, i32 %32, i32 %16)
br label %89
75: ; preds = %2
%76 = icmp slt i32 %10, %18
br i1 %76, label %89, label %77
77: ; preds = %75
%78 = tail call i32 @SendSrbSynchronous(i32 %4, i32 %27, i32 0, i32 0)
br label %89
79: ; preds = %2
%80 = icmp slt i32 %10, %26
br i1 %80, label %89, label %81
81: ; preds = %79
%82 = tail call i32 @SendSrbSynchronous(i32 %4, i32 %27, i32 0, i32 0)
br label %89
83: ; preds = %2
%84 = tail call i32 @SendSrbSynchronous(i32 %4, i32 %27, i32 0, i32 0)
br label %89
85: ; preds = %2
%86 = tail call i32 @CdAudioIsPlayActive(i32 %0)
br label %87
87: ; preds = %2, %85
%88 = tail call i32 @CdAudioSendToNextDriver(i32 %0, i32 %1)
br label %92
89: ; preds = %77, %59, %56, %42, %2, %2, %2, %79, %75, %73, %63, %49, %47, %36, %33, %81, %83
%90 = phi i32 [ %82, %81 ], [ %84, %83 ], [ -2147483631, %33 ], [ -1073741789, %36 ], [ -1073741789, %47 ], [ -2147483631, %49 ], [ -1073741789, %63 ], [ %74, %73 ], [ -1073741820, %75 ], [ %78, %77 ], [ -1073741820, %79 ], [ -1073741808, %2 ], [ -1073741808, %2 ], [ -1073741808, %2 ], [ 0, %42 ], [ -1073741764, %59 ], [ 0, %56 ]
%91 = tail call i32 @AG_SetStatusAndReturn(i32 %90, i32 %1, i32 %5)
br label %92
92: ; preds = %89, %87, %71, %67, %61, %54, %45, %40
%93 = phi i32 [ %91, %89 ], [ %41, %40 ], [ %46, %45 ], [ %55, %54 ], [ %62, %61 ], [ %68, %67 ], [ %72, %71 ], [ %88, %87 ]
ret i32 %93
}