// File: /workspace/github_cpp_makefile_star2_O3/tobias93[P]piano/rtaudio/tests/audioprobe.cpp
// Function: main
int main()
{
  // Create an api map.
  std::map<int, std::string> apiMap;
  apiMap[RtAudio::MACOSX_CORE] = "OS-X Core Audio";
  apiMap[RtAudio::WINDOWS_ASIO] = "Windows ASIO";
  apiMap[RtAudio::WINDOWS_DS] = "Windows Direct Sound";
  apiMap[RtAudio::WINDOWS_WASAPI] = "Windows WASAPI";
  apiMap[RtAudio::UNIX_JACK] = "Jack Client";
  apiMap[RtAudio::LINUX_ALSA] = "Linux ALSA";
  apiMap[RtAudio::LINUX_PULSE] = "Linux PulseAudio";
  apiMap[RtAudio::LINUX_OSS] = "Linux OSS";
  apiMap[RtAudio::RTAUDIO_DUMMY] = "RtAudio Dummy";

  std::vector< RtAudio::Api > apis;
  RtAudio :: getCompiledApi( apis );

  std::cout << "\nRtAudio Version " << RtAudio::getVersion() << std::endl;

  std::cout << "\nCompiled APIs:\n";
  for ( unsigned int i=0; i<apis.size(); i++ )
    std::cout << "  " << apiMap[ apis[i] ] << std::endl;

  RtAudio audio;
  RtAudio::DeviceInfo info;

  std::cout << "\nCurrent API: " << apiMap[ audio.getCurrentApi() ] << std::endl;

  unsigned int devices = audio.getDeviceCount();
  std::cout << "\nFound " << devices << " device(s) ...\n";

  for (unsigned int i=0; i<devices; i++) {
    info = audio.getDeviceInfo(i);

    std::cout << "\nDevice Name = " << info.name << '\n';
    if ( info.probed == false )
      std::cout << "Probe Status = UNsuccessful\n";
    else {
      std::cout << "Probe Status = Successful\n";
      std::cout << "Output Channels = " << info.outputChannels << '\n';
      std::cout << "Input Channels = " << info.inputChannels << '\n';
      std::cout << "Duplex Channels = " << info.duplexChannels << '\n';
      if ( info.isDefaultOutput ) std::cout << "This is the default output device.\n";
      else std::cout << "This is NOT the default output device.\n";
      if ( info.isDefaultInput ) std::cout << "This is the default input device.\n";
      else std::cout << "This is NOT the default input device.\n";
      if ( info.nativeFormats == 0 )
        std::cout << "No natively supported data formats(?)!";
      else {
        std::cout << "Natively supported data formats:\n";
        if ( info.nativeFormats & RTAUDIO_SINT8 )
          std::cout << "  8-bit int\n";
        if ( info.nativeFormats & RTAUDIO_SINT16 )
          std::cout << "  16-bit int\n";
        if ( info.nativeFormats & RTAUDIO_SINT24 )
          std::cout << "  24-bit int\n";
        if ( info.nativeFormats & RTAUDIO_SINT32 )
          std::cout << "  32-bit int\n";
        if ( info.nativeFormats & RTAUDIO_FLOAT32 )
          std::cout << "  32-bit float\n";
        if ( info.nativeFormats & RTAUDIO_FLOAT64 )
          std::cout << "  64-bit float\n";
      }
      if ( info.sampleRates.size() < 1 )
        std::cout << "No supported sample rates found!";
      else {
        std::cout << "Supported sample rates = ";
        for (unsigned int j=0; j<info.sampleRates.size(); j++)
          std::cout << info.sampleRates[j] << " ";
      }
      std::cout << std::endl;
    }
  }
  std::cout << std::endl;

  return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
leaq 0x90(%rsp), %rax
movl $0x0, (%rax)
xorl %ecx, %ecx
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
leaq 0x10(%rsp), %rsi
movl $0x5, (%rsi)
leaq 0x88(%rsp), %rdi
callq 0x4f40
movq 0x8(%rax), %rdx
leaq 0x4a30(%rip), %rcx      # 0x9020
movl $0xf, %r8d
movq %rax, %rdi
xorl %esi, %esi
callq 0x4320
leaq 0x10(%rsp), %rsi
movl $0x7, (%rsi)
leaq 0x88(%rsp), %rdi
callq 0x4f40
movq 0x8(%rax), %rdx
leaq 0x4a0d(%rip), %rcx      # 0x9030
movl $0xc, %r8d
movq %rax, %rdi
xorl %esi, %esi
callq 0x4320
leaq 0x10(%rsp), %rsi
movl $0x8, (%rsi)
leaq 0x88(%rsp), %rdi
callq 0x4f40
movq 0x8(%rax), %rdx
leaq 0x49e7(%rip), %rcx      # 0x903d
movl $0x14, %r8d
movq %rax, %rdi
xorl %esi, %esi
callq 0x4320
leaq 0x10(%rsp), %rsi
movl $0x6, (%rsi)
leaq 0x88(%rsp), %rdi
callq 0x4f40
movq 0x8(%rax), %rdx
leaq 0x49c9(%rip), %rcx      # 0x9052
movl $0xe, %r8d
movq %rax, %rdi
xorl %esi, %esi
callq 0x4320
leaq 0x10(%rsp), %rsi
movl $0x4, (%rsi)
leaq 0x88(%rsp), %rdi
callq 0x4f40
movq 0x8(%rax), %rdx
leaq 0x49a5(%rip), %rcx      # 0x9061
movl $0xb, %r8d
movq %rax, %rdi
xorl %esi, %esi
callq 0x4320
leaq 0x10(%rsp), %rsi
movl $0x1, (%rsi)
leaq 0x88(%rsp), %rdi
callq 0x4f40
movq 0x8(%rax), %rdx
leaq 0x497e(%rip), %rcx      # 0x906d
movl $0xa, %r8d
movq %rax, %rdi
xorl %esi, %esi
callq 0x4320
leaq 0x10(%rsp), %rsi
movl $0x2, (%rsi)
leaq 0x88(%rsp), %rdi
callq 0x4f40
movq 0x8(%rax), %rdx
leaq 0x4956(%rip), %rcx      # 0x9078
movl $0x10, %r8d
movq %rax, %rdi
xorl %esi, %esi
callq 0x4320
leaq 0x10(%rsp), %rsi
movl $0x3, (%rsi)
leaq 0x88(%rsp), %rdi
callq 0x4f40
movq 0x8(%rax), %rdx
leaq 0x4934(%rip), %rcx      # 0x9089
movl $0x9, %r8d
movq %rax, %rdi
xorl %esi, %esi
callq 0x4320
leaq 0x10(%rsp), %rsi
movl $0x9, (%rsi)
leaq 0x88(%rsp), %rdi
callq 0x4f40
movq 0x8(%rax), %rdx
leaq 0x490b(%rip), %rcx      # 0x9093
movl $0xd, %r8d
movq %rax, %rdi
xorl %esi, %esi
callq 0x4320
xorps %xmm0, %xmm0
leaq 0x70(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
callq 0x5298
movq 0x8819(%rip), %rdi      # 0xcfd0
leaq 0x48e3(%rip), %rsi      # 0x90a1
movl $0x11, %edx
callq 0x4240
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x526c
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
movq 0x87ed(%rip), %rdi      # 0xcfd0
callq 0x4240
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x41f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x4160
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x482d
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x4220
movq 0x879c(%rip), %rdi      # 0xcfd0
leaq 0x4878(%rip), %rsi      # 0x90b3
movl $0x10, %edx
callq 0x4240
movq 0x78(%rsp), %rax
cmpq 0x70(%rsp), %rax
je 0x48f1
movl $0x1, %ebp
xorl %r13d, %r13d
movq 0x876c(%rip), %rbx      # 0xcfd0
leaq 0x4859(%rip), %r14      # 0x90c4
leaq 0x88(%rsp), %r15
leaq 0x10(%rsp), %r12
movl $0x2, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4240
movq 0x70(%rsp), %rax
movl (%rax,%r13,4), %eax
movl %eax, 0x10(%rsp)
movq %r15, %rdi
movq %r12, %rsi
callq 0x4f40
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x4240
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x41f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x4160
movq 0x78(%rsp), %rax
subq 0x70(%rsp), %rax
movl %ebp, %r13d
sarq $0x2, %rax
incl %ebp
cmpq %r13, %rax
ja 0x4878
leaq 0x8(%rsp), %rdi
xorl %esi, %esi
callq 0x5366
xorl %eax, %eax
leaq 0x28(%rsp), %rcx
movb %al, -0x18(%rcx)
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movq %rax, 0x40(%rcx)
movq %rax, 0x10(%rcx)
movq %rax, 0x16(%rcx)
xorps %xmm0, %xmm0
movups %xmm0, 0x20(%rcx)
movups %xmm0, 0x2c(%rcx)
movq 0x86a1(%rip), %rdi      # 0xcfd0
leaq 0x4791(%rip), %rsi      # 0x90c7
movl $0xe, %edx
callq 0x4240
movq 0x8(%rsp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
leaq 0xb8(%rsp), %rsi
movl %eax, (%rsi)
leaq 0x88(%rsp), %rdi
callq 0x4f40
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x8660(%rip), %rdi      # 0xcfd0
callq 0x4240
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x41f0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x4160
movq 0x8(%rsp), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movl %eax, 0x4(%rsp)
movq 0x861b(%rip), %rdi      # 0xcfd0
leaq 0x471a(%rip), %rsi      # 0x90d6
movl $0x7, %edx
callq 0x4240
movl 0x4(%rsp), %esi
movq 0x85ff(%rip), %r14      # 0xcfd0
movq %r14, %rdi
callq 0x4150
leaq 0x46fe(%rip), %rsi      # 0x90de
movl $0xf, %edx
movq %rax, %rdi
callq 0x4240
cmpl $0x0, 0x4(%rsp)
je 0x4e03
leaq 0x18(%rsp), %r15
leaq 0xc0(%rsp), %r12
xorl %r13d, %r13d
leaq 0x46b6(%rip), %rbx      # 0x90c5
movq 0x8(%rsp), %rsi
movq (%rsi), %rax
leaq 0xb8(%rsp), %rdi
movl %r13d, %edx
callq *0x20(%rax)
movb 0xb8(%rsp), %al
movb %al, 0x10(%rsp)
movq %r15, %rdi
movq %r12, %rsi
callq 0x4280
movq 0x20(%r12), %rax
movq 0x26(%r12), %rcx
movq %rax, 0x20(%r15)
movq %rcx, 0x26(%r15)
movq 0x48(%rsp), %rdi
movq 0x58(%rsp), %rsi
movups 0xf0(%rsp), %xmm0
movups %xmm0, 0x48(%rsp)
movq 0x100(%rsp), %rax
movq %rax, 0x58(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x30(%r12)
movq $0x0, 0x40(%r12)
testq %rdi, %rdi
je 0x4aba
subq %rdi, %rsi
callq 0x4220
movq 0xf0(%rsp), %rdi
movups 0x48(%r12), %xmm0
movups %xmm0, 0x48(%r15)
testq %rdi, %rdi
je 0x4ac5
movq 0x100(%rsp), %rsi
subq %rdi, %rsi
callq 0x4220
jmp 0x4ac5
movups 0x48(%r12), %xmm0
movups %xmm0, 0x48(%r15)
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x4aea
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x4220
movl $0xf, %edx
movq %r14, %rdi
leaq 0x45f5(%rip), %rsi      # 0x90ee
callq 0x4240
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rdx
movq %r14, %rdi
callq 0x4240
movb $0xa, 0xb8(%rsp)
movl $0x1, %edx
movq %rax, %rdi
leaq 0xb8(%rsp), %rsi
callq 0x4240
cmpb $0x0, 0x10(%rsp)
je 0x4d23
movl $0x1a, %edx
movq %r14, %rdi
leaq 0x45d4(%rip), %rsi      # 0x911b
callq 0x4240
movl $0x12, %edx
movq %r14, %rdi
leaq 0x45db(%rip), %rsi      # 0x9136
callq 0x4240
movl 0x38(%rsp), %esi
movq %r14, %rdi
callq 0x4150
movb $0xa, 0xb8(%rsp)
movl $0x1, %edx
movq %rax, %rdi
leaq 0xb8(%rsp), %rsi
callq 0x4240
movl $0x11, %edx
movq %r14, %rdi
leaq 0x45b1(%rip), %rsi      # 0x9149
callq 0x4240
movl 0x3c(%rsp), %esi
movq %r14, %rdi
callq 0x4150
movb $0xa, 0xb8(%rsp)
movl $0x1, %edx
movq %rax, %rdi
leaq 0xb8(%rsp), %rsi
callq 0x4240
movl $0x12, %edx
movq %r14, %rdi
leaq 0x4586(%rip), %rsi      # 0x915b
callq 0x4240
movl 0x40(%rsp), %esi
movq %r14, %rdi
callq 0x4150
movb $0xa, 0xb8(%rsp)
movl $0x1, %edx
movq %rax, %rdi
leaq 0xb8(%rsp), %rsi
callq 0x4240
movzbl 0x44(%rsp), %eax
testl %eax, %eax
leaq 0x4581(%rip), %rsi      # 0x9192
leaq 0x4556(%rip), %rcx      # 0x916e
cmovneq %rcx, %rsi
xorl $0x1, %eax
leaq 0x23(,%rax,4), %rdx
movq %r14, %rdi
callq 0x4240
movzbl 0x45(%rsp), %eax
testl %eax, %eax
leaq 0x45a0(%rip), %rsi      # 0x91dd
leaq 0x4576(%rip), %rcx      # 0x91ba
cmovneq %rcx, %rsi
xorl $0x1, %eax
leaq 0x22(,%rax,4), %rdx
movq %r14, %rdi
callq 0x4240
cmpq $0x0, 0x68(%rsp)
je 0x4d3c
movl $0x21, %edx
movq %r14, %rdi
leaq 0x45b5(%rip), %rsi      # 0x922b
callq 0x4240
movq 0x68(%rsp), %rax
testb $0x1, %al
je 0x4c9d
movl $0xc, %edx
movq %r14, %rdi
leaq 0x45ba(%rip), %rsi      # 0x924d
callq 0x4240
movq 0x68(%rsp), %rax
testb $0x2, %al
je 0x4cba
movl $0xd, %edx
movq %r14, %rdi
leaq 0x45aa(%rip), %rsi      # 0x925a
callq 0x4240
movq 0x68(%rsp), %rax
testb $0x4, %al
je 0x4cd7
movl $0xd, %edx
movq %r14, %rdi
leaq 0x459b(%rip), %rsi      # 0x9268
callq 0x4240
movq 0x68(%rsp), %rax
testb $0x8, %al
je 0x4cf4
movl $0xd, %edx
movq %r14, %rdi
leaq 0x458c(%rip), %rsi      # 0x9276
callq 0x4240
movq 0x68(%rsp), %rax
testb $0x10, %al
je 0x4d11
movl $0xf, %edx
movq %r14, %rdi
leaq 0x457d(%rip), %rsi      # 0x9284
callq 0x4240
movq 0x68(%rsp), %rax
movl $0xf, %edx
leaq 0x4577(%rip), %rsi      # 0x9294
testb $0x20, %al
jne 0x4d48
jmp 0x4d50
movl $0x1c, %edx
movq %r14, %rdi
leaq 0x43cc(%rip), %rsi      # 0x90fe
callq 0x4240
jmp 0x4df5
movl $0x26, %edx
leaq 0x44bc(%rip), %rsi      # 0x9204
movq %r14, %rdi
callq 0x4240
movq 0x50(%rsp), %rax
cmpq 0x48(%rsp), %rax
je 0x4dba
movl $0x19, %edx
movq %r14, %rdi
leaq 0x455a(%rip), %rsi      # 0x92c5
callq 0x4240
movq 0x48(%rsp), %rax
cmpq %rax, 0x50(%rsp)
je 0x4dce
movl $0x1, %ebp
xorl %ecx, %ecx
movl (%rax,%rcx,4), %esi
movq %r14, %rdi
callq 0x4150
movl $0x1, %edx
movq %rax, %rdi
movq %rbx, %rsi
callq 0x4240
movl %ebp, %ecx
movq 0x48(%rsp), %rax
movq 0x50(%rsp), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
incl %ebp
cmpq %rcx, %rdx
ja 0x4d83
jmp 0x4dce
movl $0x20, %edx
movq %r14, %rdi
leaq 0x44db(%rip), %rsi      # 0x92a4
callq 0x4240
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x41f0
movsbl %al, %esi
movq %r14, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x4160
incl %r13d
cmpl 0x4(%rsp), %r13d
jne 0x4a0f
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x41f0
movsbl %al, %esi
movq 0x81af(%rip), %rdi      # 0xcfd0
callq 0x4040
movq %rax, %rdi
callq 0x4160
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
leaq 0x28(%rsp), %rbx
je 0x4e4a
movq 0x58(%rsp), %rsi
subq %rdi, %rsi
callq 0x4220
movq 0x18(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4e61
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x4220
leaq 0x8(%rsp), %rdi
callq 0x54ea
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x4e85
movq 0x80(%rsp), %rsi
subq %rdi, %rsi
callq 0x4220
leaq 0x88(%rsp), %rdi
callq 0x4fe6
xorl %eax, %eax
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x4ea8
movq %rax, %rdi
callq 0x4fda
jmp 0x4efa
jmp 0x4ef3
jmp 0x4ef3
jmp 0x4ec6
jmp 0x4ec6
jmp 0x4ec6
jmp 0x4ec6
jmp 0x4ec6
jmp 0x4ec6
jmp 0x4ec6
jmp 0x4ec6
movq %rax, %rbx
jmp 0x4f2b
movq %rax, %rbx
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4f11
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x4220
jmp 0x4f11
jmp 0x4efa
jmp 0x4efa
jmp 0x4efa
jmp 0x4ef3
movq %rax, %rbx
jmp 0x4f11
jmp 0x4efa
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x4fa6
leaq 0x8(%rsp), %rdi
callq 0x54ea
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x4f2b
movq 0x80(%rsp), %rsi
subq %rdi, %rsi
callq 0x4220
leaq 0x88(%rsp), %rdi
callq 0x4fe6
movq %rbx, %rdi
callq 0x43b0