user: 请从给定的汇编指令推导出C源代码：

```asm
<CdAudio535DeviceControl>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x1c0,%rsp
  mov    %edi,-0x1b4(%rbp)
  mov    %esi,-0x1b8(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x1ac(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x1a8(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x1a4(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x1a0(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x19c(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x198(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x194(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x190(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x18c(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x188(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x184(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x180(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x17c(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x178(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x174(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x170(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x16c(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x168(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x164(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x160(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x15c(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x158(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x154(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x150(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x14c(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x148(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x144(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x140(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x13c(%rbp)
  mov    $0x0,%eax
  call   <__VERIFIER_nondet_int@plt>
  mov    %eax,-0x138(%rbp)
  mov    -0x1ac(%rbp),%eax
  mov    %eax,-0x134(%rbp)
  mov    -0x1a8(%rbp),%eax
  mov    %eax,-0x130(%rbp)
  mov    -0x1a0(%rbp),%eax
  mov    %eax,-0x12c(%rbp)
  mov    -0x19c(%rbp),%eax
  mov    %eax,-0x128(%rbp)
  movl   $0x38,-0x124(%rbp)
  movl   $0x4000,-0x120(%rbp)
  movl   $0x20000,-0x11c(%rbp)
  movl   $0x24000,-0x118(%rbp)
  movl   $0x24038,-0x114(%rbp)
  mov    -0x198(%rbp),%eax
  cmp    -0x114(%rbp),%eax
  je     L496
  movl   $0x4000,-0x110(%rbp)
  movl   $0x20000,-0x10c(%rbp)
  movl   $0x24000,-0x108(%rbp)
  mov    -0x198(%rbp),%eax
  cmp    -0x108(%rbp),%eax
  je     L312
  movl   $0x2c,-0x104(%rbp)
  movl   $0x4000,-0x100(%rbp)
  movl   $0x20000,-0xfc(%rbp)
  movl   $0x24000,-0xf8(%rbp)
  movl   $0x2402c,-0xf4(%rbp)
  mov    -0x198(%rbp),%eax
  cmp    -0xf4(%rbp),%eax
  je     L182
  movl   $0x18,-0xf0(%rbp)
  movl   $0x4000,-0xec(%rbp)
  movl   $0x20000,-0xe8(%rbp)
  movl   $0x24000,-0xe4(%rbp)
  movl   $0x24018,-0xe0(%rbp)
  mov    -0x198(%rbp),%eax
  cmp    -0xe0(%rbp),%eax
  je     L488
  movl   $0x4,-0xdc(%rbp)
  movl   $0x4000,-0xd8(%rbp)
  movl   $0x20000,-0xd4(%rbp)
  movl   $0x24000,-0xd0(%rbp)
  movl   $0x24004,-0xcc(%rbp)
  mov    -0x198(%rbp),%eax
  cmp    -0xcc(%rbp),%eax
  je     L470
  movl   $0x808,-0xc8(%rbp)
  movl   $0x4000,-0xc4(%rbp)
  movl   $0x20000,-0xc0(%rbp)
  movl   $0x24000,-0xbc(%rbp)
  movl   $0x24808,-0xb8(%rbp)
  mov    -0x198(%rbp),%eax
  cmp    -0xb8(%rbp),%eax
  je     L522
  movl   $0x34,-0xb4(%rbp)
  movl   $0x4000,-0xb0(%rbp)
  movl   $0x20000,-0xac(%rbp)
  movl   $0x24000,-0xa8(%rbp)
  movl   $0x24034,-0xa4(%rbp)
  mov    -0x198(%rbp),%eax
  cmp    -0xa4(%rbp),%eax
  je     L213
  movl   $0x14,-0xa0(%rbp)
  movl   $0x4000,-0x9c(%rbp)
  movl   $0x20000,-0x98(%rbp)
  movl   $0x24000,-0x94(%rbp)
  movl   $0x24014,-0x90(%rbp)
  mov    -0x198(%rbp),%eax
  cmp    -0x90(%rbp),%eax
  je     L264
  movl   $0x28,-0x8c(%rbp)
  movl   $0x4000,-0x88(%rbp)
  movl   $0x20000,-0x84(%rbp)
  movl   $0x24000,-0x80(%rbp)
  movl   $0x24028,-0x7c(%rbp)
  mov    -0x198(%rbp),%eax
  cmp    -0x7c(%rbp),%eax
  je     L520
  movl   $0x800,-0x78(%rbp)
  movl   $0x4000,-0x74(%rbp)
  movl   $0x20000,-0x70(%rbp)
  movl   $0x24000,-0x6c(%rbp)
  movl   $0x24800,-0x68(%rbp)
  mov    -0x198(%rbp),%eax
  cmp    -0x68(%rbp),%eax
  jne    L178
  jmp    L59
L496:
  nop
  mov    -0x1b4(%rbp),%eax
  mov    %eax,%edi
  call   <CdAudioIsPlayActive@plt>
  mov    %eax,-0x24(%rbp)
  cmpl   $0x0,-0x24(%rbp)
  je     L548
  movl   $0x80000011,-0x1b0(%rbp)
  movl   $0x0,-0x60(%rbp)
  jmp    L124
L548:
  cmpl   $0x0,-0x194(%rbp)
  je     L375
  movl   $0xc0000023,-0x1b0(%rbp)
  movl   $0x0,-0x60(%rbp)
  jmp    L124
L375:
  cmpl   $0x0,-0x148(%rbp)
  jne    L149
  movl   $0xc000009a,-0x1b0(%rbp)
  movl   $0x0,-0x60(%rbp)
  mov    -0x1a4(%rbp),%edx
  mov    -0x1b8(%rbp),%ecx
  mov    -0x1b0(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <AG_SetStatusAndReturn@plt>
  mov    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%eax
  jmp    L103
L149:
  movl   $0xa,-0x5c(%rbp)
  movl   $0x26,-0x20(%rbp)
  movl   $0xa,-0x58(%rbp)
  mov    -0x18c(%rbp),%ecx
  mov    -0x148(%rbp),%edx
  mov    -0x14c(%rbp),%esi
  mov    -0x130(%rbp),%eax
  mov    %eax,%edi
  call   <SendSrbSynchronous@plt>
  mov    %eax,-0x1b0(%rbp)
  cmpl   $0x0,-0x1b0(%rbp)
  jns    L368
  movl   $0x0,-0x60(%rbp)
  mov    -0x1a4(%rbp),%edx
  mov    -0x1b8(%rbp),%ecx
  mov    -0x1b0(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <AG_SetStatusAndReturn@plt>
  mov    %eax,-0x1c(%rbp)
  mov    -0x1c(%rbp),%eax
  jmp    L103
L368:
  movl   $0x0,-0x1b0(%rbp)
  mov    -0x140(%rbp),%eax
  mov    %eax,-0x60(%rbp)
  cmpl   $0x0,-0x188(%rbp)
  je     L406
  movl   $0x1,-0x184(%rbp)
  movl   $0x2,-0x180(%rbp)
  jmp    L124
L312:
  nop
  cmpl   $0x0,-0x194(%rbp)
  je     L453
  movl   $0xc0000023,-0x1b0(%rbp)
  movl   $0x0,-0x60(%rbp)
  jmp    L124
L453:
  mov    -0x1b4(%rbp),%eax
  mov    %eax,%edi
  call   <CdAudioIsPlayActive@plt>
  mov    %eax,-0x40(%rbp)
  cmpl   $0x0,-0x40(%rbp)
  je     L216
  movl   $0x80000011,-0x1b0(%rbp)
  movl   $0x0,-0x60(%rbp)
  jmp    L124
L216:
  cmpl   $0x0,-0x13c(%rbp)
  jne    L409
  movl   $0xc000009a,-0x1b0(%rbp)
  movl   $0x0,-0x60(%rbp)
  mov    -0x1a4(%rbp),%edx
  mov    -0x1b8(%rbp),%ecx
  mov    -0x1b0(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <AG_SetStatusAndReturn@plt>
  mov    %eax,-0x28(%rbp)
  mov    -0x28(%rbp),%eax
  jmp    L103
L409:
  movl   $0xa,-0x58(%rbp)
  movl   $0xa,-0x5c(%rbp)
  mov    -0x17c(%rbp),%ecx
  mov    -0x13c(%rbp),%edx
  mov    -0x14c(%rbp),%esi
  mov    -0x130(%rbp),%eax
  mov    %eax,%edi
  call   <SendSrbSynchronous@plt>
  mov    %eax,-0x1b0(%rbp)
  cmpl   $0x0,-0x1b0(%rbp)
  js     L226
  mov    -0x1b0(%rbp),%eax
  cltq
  mov    %rax,-0x10(%rbp)
  cmpq   $0xffffffffc000003c,-0x10(%rbp)
  je     L251
  movl   $0x0,-0x1b0(%rbp)
  jmp    L405
L226:
  nop
  jmp    L500
L251:
  nop
L500:
  mov    -0x1b0(%rbp),%eax
  cltq
  mov    %rax,-0x8(%rbp)
  cmpq   $0xffffffffc000003c,-0x8(%rbp)
  je     L405
  movl   $0x0,-0x60(%rbp)
  mov    -0x1a4(%rbp),%edx
  mov    -0x1b8(%rbp),%ecx
  mov    -0x1b0(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <AG_SetStatusAndReturn@plt>
  mov    %eax,-0x3c(%rbp)
  mov    -0x3c(%rbp),%eax
  jmp    L103
L405:
  mov    -0x180(%rbp),%eax
  sub    -0x184(%rbp),%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x38(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x194(%rbp),%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x30(%rbp),%eax
  cmp    -0x34(%rbp),%eax
  jge    L458
  mov    -0x30(%rbp),%eax
  mov    %eax,-0x2c(%rbp)
  jmp    L74
L458:
  mov    -0x34(%rbp),%eax
  mov    %eax,-0x2c(%rbp)
L74:
  mov    -0x30(%rbp),%eax
  cmp    -0x34(%rbp),%eax
  jle    L180
  addl   $0x1,-0x144(%rbp)
  jmp    L180
L182:
  nop
  mov    -0x1a0(%rbp),%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x194(%rbp),%eax
  cmp    -0x178(%rbp),%eax
  jge    L300
  movl   $0xc0000023,-0x1b0(%rbp)
  movl   $0x0,-0x60(%rbp)
  jmp    L124
L300:
  cmpl   $0x0,-0x138(%rbp)
  jne    L332
  movl   $0xc000009a,-0x1b0(%rbp)
  movl   $0x0,-0x60(%rbp)
  mov    -0x1a4(%rbp),%edx
  mov    -0x1b8(%rbp),%ecx
  mov    -0x1b0(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <AG_SetStatusAndReturn@plt>
  mov    %eax,-0x44(%rbp)
  mov    -0x44(%rbp),%eax
  jmp    L103
L332:
  cmpl   $0x1,-0x174(%rbp)
  je     L569
  movl   $0xc0000001,-0x1b0(%rbp)
  movl   $0x0,-0x60(%rbp)
  mov    -0x1a4(%rbp),%edx
  mov    -0x1b8(%rbp),%ecx
  mov    -0x1b0(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <AG_SetStatusAndReturn@plt>
  mov    %eax,-0x48(%rbp)
  mov    -0x48(%rbp),%eax
  jmp    L103
L569:
  movl   $0xa,-0x5c(%rbp)
  movl   $0xa,-0x58(%rbp)
  mov    -0x178(%rbp),%ecx
  mov    -0x138(%rbp),%edx
  mov    -0x14c(%rbp),%esi
  mov    -0x130(%rbp),%eax
  mov    %eax,%edi
  call   <SendSrbSynchronous@plt>
  mov    %eax,-0x1b0(%rbp)
  cmpl   $0x0,-0x1b0(%rbp)
  js     L428
  mov    -0x178(%rbp),%eax
  mov    %eax,-0x60(%rbp)
  jmp    L124
L428:
  movl   $0x0,-0x60(%rbp)
  jmp    L124
L488:
  nop
  mov    -0x1a0(%rbp),%eax
  mov    %eax,-0x50(%rbp)
  movl   $0x0,-0x60(%rbp)
  mov    -0x190(%rbp),%eax
  cmp    -0x170(%rbp),%eax
  jge    L179
  movl   $0xc0000004,-0x1b0(%rbp)
  jmp    L124
L179:
  movl   $0xa,-0x5c(%rbp)
  movl   $0xa,-0x58(%rbp)
  mov    -0x14c(%rbp),%esi
  mov    -0x130(%rbp),%eax
  mov    $0x0,%ecx
  mov    $0x0,%edx
  mov    %eax,%edi
  call   <SendSrbSynchronous@plt>
  mov    %eax,-0x1b0(%rbp)
  jmp    L124
L470:
  nop
  mov    -0x1a0(%rbp),%eax
  mov    %eax,-0x54(%rbp)
  movl   $0x0,-0x60(%rbp)
  mov    -0x190(%rbp),%eax
  cmp    -0x150(%rbp),%eax
  jge    L501
  movl   $0xc0000004,-0x1b0(%rbp)
  jmp    L124
L501:
  movl   $0xa,-0x5c(%rbp)
  movl   $0xa,-0x58(%rbp)
  mov    -0x14c(%rbp),%esi
  mov    -0x130(%rbp),%eax
  mov    $0x0,%ecx
  mov    $0x0,%edx
  mov    %eax,%edi
  call   <SendSrbSynchronous@plt>
  mov    %eax,-0x1b0(%rbp)
  jmp    L124
L522:
  nop
  movl   $0x0,-0x60(%rbp)
  movl   $0xa,-0x5c(%rbp)
  movl   $0xa,-0x58(%rbp)
  mov    -0x14c(%rbp),%esi
  mov    -0x130(%rbp),%eax
  mov    $0x0,%ecx
  mov    $0x0,%edx
  mov    %eax,%edi
  call   <SendSrbSynchronous@plt>
  mov    %eax,-0x1b0(%rbp)
  jmp    L124
L213:
  nop
  jmp    L554
L264:
  nop
  jmp    L554
L520:
  nop
L554:
  movl   $0x0,-0x60(%rbp)
  movl   $0xc0000010,-0x1b0(%rbp)
  jmp    L124
L59:
  mov    -0x1b4(%rbp),%eax
  mov    %eax,%edi
  call   <CdAudioIsPlayActive@plt>
  jmp    L0
L178:
  nop
L0:
  mov    -0x1b8(%rbp),%edx
  mov    -0x1b4(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <CdAudioSendToNextDriver@plt>
  mov    %eax,-0x64(%rbp)
  mov    -0x64(%rbp),%eax
  jmp    L103
L406:
  nop
  jmp    L124
L180:
  nop
L124:
  mov    -0x1a4(%rbp),%edx
  mov    -0x1b8(%rbp),%ecx
  mov    -0x1b0(%rbp),%eax
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <AG_SetStatusAndReturn@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%eax
L103:
  leave
  ret
```

assistant: ```c
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);
  }
}
```