// File: tobias93[P]piano/rtmidi_build/tests/cmidiin.cpp
// Function: chooseMidiPort(RtMidiIn*)
bool chooseMidiPort( RtMidiIn *rtmidi )
{
  std::cout << "\nWould you like to open a virtual input port? [y/N] ";

  std::string keyHit;
  std::getline( std::cin, keyHit );
  if ( keyHit == "y" ) {
    rtmidi->openVirtualPort();
    return true;
  }

  std::string portName;
  unsigned int i = 0, nPorts = rtmidi->getPortCount();
  if ( nPorts == 0 ) {
    std::cout << "No input ports available!" << std::endl;
    return false;
  }

  if ( nPorts == 1 ) {
    std::cout << "\nOpening " << rtmidi->getPortName() << std::endl;
  }
  else {
    for ( i=0; i<nPorts; i++ ) {
      portName = rtmidi->getPortName(i);
      std::cout << "  Input port #" << i << ": " << portName << '\n';
    }

    do {
      std::cout << "\nChoose a port number: ";
      std::cin >> i;
    } while ( i >= nPorts );
    std::getline( std::cin, keyHit );  // used to clear out stdin
  }

  rtmidi->openPort( i );

  return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x180, %rsp            # imm = 0x180
movq %rdi, -0x10(%rbp)
movq 0x38ea(%rip), %rdi      # 0x5fd0
leaq 0x19ba(%rip), %rsi      # 0x40a7
callq 0x2130
leaq -0x30(%rbp), %rdi
movq %rdi, -0x100(%rbp)
callq 0x2210
movq -0x100(%rbp), %rsi
movq 0x38d0(%rip), %rdi      # 0x5fe0
callq 0x2050
jmp 0x2717
leaq 0x19be(%rip), %rsi      # 0x40dc
leaq -0x30(%rbp), %rdi
callq 0x2d10
movb %al, -0x101(%rbp)
jmp 0x272f
movb -0x101(%rbp), %al
testb $0x1, %al
jne 0x273e
jmp 0x27ec
movq -0x10(%rbp), %rax
movq %rax, -0x118(%rbp)
leaq -0x61(%rbp), %rdi
movq %rdi, -0x110(%rbp)
callq 0x2280
movq -0x110(%rbp), %rdx
leaq 0x1977(%rip), %rsi      # 0x40de
leaq -0x60(%rbp), %rdi
callq 0x2bd0
jmp 0x2772
movq -0x118(%rbp), %rdi
movq (%rdi), %rax
movq 0x8(%rax), %rax
leaq -0x60(%rbp), %rsi
callq *%rax
jmp 0x2788
leaq -0x60(%rbp), %rdi
callq 0x20b0
leaq -0x61(%rbp), %rdi
callq 0x2180
movb $0x1, -0x1(%rbp)
movl $0x1, -0x68(%rbp)
jmp 0x2b3d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2b54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x27de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x20b0
leaq -0x61(%rbp), %rdi
callq 0x2180
jmp 0x2b54
leaq -0x88(%rbp), %rdi
callq 0x2210
movl $0x0, -0x8c(%rbp)
movq -0x10(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movl %eax, -0x11c(%rbp)
jmp 0x2817
movl -0x11c(%rbp), %eax
movl %eax, -0x90(%rbp)
cmpl $0x0, -0x90(%rbp)
jne 0x287e
movq 0x379d(%rip), %rdi      # 0x5fd0
leaq 0x18b1(%rip), %rsi      # 0x40eb
callq 0x2130
movq %rax, -0x128(%rbp)
jmp 0x2848
movq -0x128(%rbp), %rdi
movq 0x376a(%rip), %rsi      # 0x5fc0
callq 0x2160
jmp 0x285d
movb $0x0, -0x1(%rbp)
movl $0x1, -0x68(%rbp)
jmp 0x2b21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2b2f
cmpl $0x1, -0x90(%rbp)
jne 0x291e
movq 0x373e(%rip), %rdi      # 0x5fd0
leaq 0x186c(%rip), %rsi      # 0x4105
callq 0x2130
movq %rax, -0x130(%rbp)
jmp 0x28a7
movq -0x10(%rbp), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq -0xb0(%rbp), %rdi
xorl %edx, %edx
callq *%rax
jmp 0x28bf
movq -0x130(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x2120
movq %rax, -0x138(%rbp)
jmp 0x28db
movq -0x138(%rbp), %rdi
movq 0x36d7(%rip), %rsi      # 0x5fc0
callq 0x2160
jmp 0x28f0
leaq -0xb0(%rbp), %rdi
callq 0x20b0
jmp 0x2a64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x20b0
jmp 0x2b2f
movl $0x0, -0x8c(%rbp)
movl -0x8c(%rbp), %eax
cmpl -0x90(%rbp), %eax
jae 0x2a14
movq -0x10(%rbp), %rsi
movl -0x8c(%rbp), %edx
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq -0xd0(%rbp), %rdi
callq *%rax
jmp 0x2956
leaq -0x88(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
movq %rsi, -0x148(%rbp)
callq 0x21d0
movq -0x148(%rbp), %rdi
callq 0x20b0
movq 0x364d(%rip), %rdi      # 0x5fd0
leaq 0x1785(%rip), %rsi      # 0x410f
callq 0x2130
movq %rax, -0x140(%rbp)
jmp 0x2998
movq -0x140(%rbp), %rdi
movl -0x8c(%rbp), %esi
callq 0x21f0
movq %rax, -0x150(%rbp)
jmp 0x29b3
movq -0x150(%rbp), %rdi
leaq 0x1772(%rip), %rsi      # 0x4133
callq 0x2130
movq %rax, -0x158(%rbp)
jmp 0x29cf
movq -0x158(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x2120
movq %rax, -0x160(%rbp)
jmp 0x29eb
movq -0x160(%rbp), %rdi
movl $0xa, %esi
callq 0x21b0
jmp 0x29fe
jmp 0x2a00
movl -0x8c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8c(%rbp)
jmp 0x2928
jmp 0x2a16
movq 0x35b3(%rip), %rdi      # 0x5fd0
leaq 0x16fa(%rip), %rsi      # 0x411e
callq 0x2130
jmp 0x2a2b
movq 0x35ae(%rip), %rdi      # 0x5fe0
leaq -0x8c(%rbp), %rsi
callq 0x2030
jmp 0x2a40
jmp 0x2a42
movl -0x8c(%rbp), %eax
cmpl -0x90(%rbp), %eax
jae 0x2a16
movq 0x3589(%rip), %rdi      # 0x5fe0
leaq -0x30(%rbp), %rsi
callq 0x2050
jmp 0x2a62
jmp 0x2a64
movq -0x10(%rbp), %rax
movq %rax, -0x178(%rbp)
movl -0x8c(%rbp), %eax
movl %eax, -0x16c(%rbp)
leaq -0xf1(%rbp), %rdi
movq %rdi, -0x168(%rbp)
callq 0x2280
movq -0x168(%rbp), %rdx
leaq 0x1642(%rip), %rsi      # 0x40de
leaq -0xf0(%rbp), %rdi
callq 0x2bd0
jmp 0x2aaa
movl -0x16c(%rbp), %esi
movq -0x178(%rbp), %rdi
movq (%rdi), %rax
movq (%rax), %rax
leaq -0xf0(%rbp), %rdx
callq *%rax
jmp 0x2ac8
leaq -0xf0(%rbp), %rdi
callq 0x20b0
leaq -0xf1(%rbp), %rdi
callq 0x2180
movb $0x1, -0x1(%rbp)
movl $0x1, -0x68(%rbp)
jmp 0x2b21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2b13
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x20b0
leaq -0xf1(%rbp), %rdi
callq 0x2180
jmp 0x2b2f
leaq -0x88(%rbp), %rdi
callq 0x20b0
jmp 0x2b3d
leaq -0x88(%rbp), %rdi
callq 0x20b0
jmp 0x2b54
leaq -0x30(%rbp), %rdi
callq 0x20b0
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x180, %rsp            # imm = 0x180
popq %rbp
retq
leaq -0x30(%rbp), %rdi
callq 0x20b0
movq -0x38(%rbp), %rdi
callq 0x2270
nopw %cs:(%rax,%rax)