// File: /workspace/github_cpp_makefile_star2_O1/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 0x4f44
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 0x4f44
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 0x4f44
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 0x4f44
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 0x4f44
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 0x4f44
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 0x4f44
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 0x4f44
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 0x4f44
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 0x529c
movq 0x8819(%rip), %rdi      # 0xcfd0
leaq 0x48e3(%rip), %rsi      # 0x90a1
movl $0x11, %edx
callq 0x4240
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x5270
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 0x4f44
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 0x5368
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 0x4f44
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 0x4e07
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 0x50(%rsp), %rax
movq 0x58(%rsp), %rsi
movq 0xf0(%rsp), %rcx
movq %rcx, 0x48(%rsp)
movups 0xf8(%rsp), %xmm0
movups %xmm0, 0x50(%rsp)
movq %rdi, 0xf0(%rsp)
movq %rax, 0xf8(%rsp)
movq %rsi, 0x100(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x30(%r12)
movq $0x0, 0x40(%r12)
testq %rdi, %rdi
je 0x4aad
subq %rdi, %rsi
callq 0x4220
movups 0x48(%r12), %xmm0
movups %xmm0, 0x48(%r15)
movq 0xf0(%rsp), %rdi
testq %rdi, %rdi
je 0x4ad5
movq 0x100(%rsp), %rsi
subq %rdi, %rsi
callq 0x4220
movq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %rax
cmpq %rax, %rdi
je 0x4afa
movq 0xd0(%rsp), %rsi
incq %rsi
callq 0x4220
movl $0xf, %edx
movq %r14, %rdi
leaq 0x45e5(%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 0x4d27
movl $0x1a, %edx
movq %r14, %rdi
leaq 0x45c4(%rip), %rsi      # 0x911b
callq 0x4240
movl $0x12, %edx
movq %r14, %rdi
leaq 0x45cb(%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 0x45a1(%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 0x4576(%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 0x4571(%rip), %rsi      # 0x9192
leaq 0x4546(%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 0x4590(%rip), %rsi      # 0x91dd
leaq 0x4566(%rip), %rcx      # 0x91ba
cmovneq %rcx, %rsi
xorl $0x1, %eax
leaq 0x22(,%rax,4), %rdx
movq %r14, %rdi
callq 0x4240
cmpq $0x0, 0x68(%rsp)
je 0x4d40
movl $0x21, %edx
movq %r14, %rdi
leaq 0x45a5(%rip), %rsi      # 0x922b
callq 0x4240
testb $0x1, 0x68(%rsp)
je 0x4ca6
movl $0xc, %edx
movq %r14, %rdi
leaq 0x45ac(%rip), %rsi      # 0x924d
callq 0x4240
testb $0x2, 0x68(%rsp)
je 0x4cc1
movl $0xd, %edx
movq %r14, %rdi
leaq 0x459e(%rip), %rsi      # 0x925a
callq 0x4240
testb $0x4, 0x68(%rsp)
je 0x4cdc
movl $0xd, %edx
movq %r14, %rdi
leaq 0x4591(%rip), %rsi      # 0x9268
callq 0x4240
testb $0x8, 0x68(%rsp)
je 0x4cf7
movl $0xd, %edx
movq %r14, %rdi
leaq 0x4584(%rip), %rsi      # 0x9276
callq 0x4240
testb $0x10, 0x68(%rsp)
je 0x4d12
movl $0xf, %edx
movq %r14, %rdi
leaq 0x4577(%rip), %rsi      # 0x9284
callq 0x4240
movl $0xf, %edx
testb $0x20, 0x68(%rsp)
leaq 0x4571(%rip), %rsi      # 0x9294
jne 0x4d4c
jmp 0x4d54
movl $0x1c, %edx
movq %r14, %rdi
leaq 0x43c8(%rip), %rsi      # 0x90fe
callq 0x4240
jmp 0x4df9
movl $0x26, %edx
leaq 0x44b8(%rip), %rsi      # 0x9204
movq %r14, %rdi
callq 0x4240
movq 0x50(%rsp), %rax
cmpq 0x48(%rsp), %rax
je 0x4dbe
movl $0x19, %edx
movq %r14, %rdi
leaq 0x4556(%rip), %rsi      # 0x92c5
callq 0x4240
movq 0x48(%rsp), %rax
cmpq %rax, 0x50(%rsp)
je 0x4dd2
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 0x4d87
jmp 0x4dd2
movl $0x20, %edx
movq %r14, %rdi
leaq 0x44d7(%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 0x81ab(%rip), %rdi      # 0xcfd0
callq 0x4040
movq %rax, %rdi
callq 0x4160
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
leaq 0x28(%rsp), %rbx
je 0x4e4e
movq 0x58(%rsp), %rsi
subq %rdi, %rsi
callq 0x4220
movq 0x18(%rsp), %rdi
cmpq %rbx, %rdi
je 0x4e65
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x4220
leaq 0x8(%rsp), %rdi
callq 0x54ec
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x4e89
movq 0x80(%rsp), %rsi
subq %rdi, %rsi
callq 0x4220
leaq 0x88(%rsp), %rdi
callq 0x4fe8
xorl %eax, %eax
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x4eac
movq %rax, %rdi
callq 0x4fdc
jmp 0x4efe
jmp 0x4ef7
jmp 0x4ef7
jmp 0x4eca
jmp 0x4eca
jmp 0x4eca
jmp 0x4eca
jmp 0x4eca
jmp 0x4eca
jmp 0x4eca
jmp 0x4eca
movq %rax, %rbx
jmp 0x4f2f
movq %rax, %rbx
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4f15
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x4220
jmp 0x4f15
jmp 0x4efe
jmp 0x4efe
jmp 0x4efe
jmp 0x4ef7
movq %rax, %rbx
jmp 0x4f15
jmp 0x4efe
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x4fa8
leaq 0x8(%rsp), %rdi
callq 0x54ec
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x4f2f
movq 0x80(%rsp), %rsi
subq %rdi, %rsi
callq 0x4220
leaq 0x88(%rsp), %rdi
callq 0x4fe8
movq %rbx, %rdi
callq 0x43b0