// File: lorenatoscano[P]musify/src/linkedList.cpp
// Function: LinkedList::getPosition(Song)
size_t LinkedList::getPosition(Song searchSong) {
  node* temp = head;
  size_t pos = 1;

  while (temp != nullptr) {
    Song s = temp->data;

    // Compara os títulos e artistas desconsiderando maiúsculas
    if ( toLowercase(s.getTitle()) == toLowercase(searchSong.getTitle()) && 
        toLowercase(s.getArtist()) == toLowercase(searchSong.getArtist()) ) {
      // Retorna a posição correspondente
      return pos; 
    }

    temp = temp->next;
    ++pos;
  }
  // Caso não encontre, retorna 0
  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1a0, %rsp            # imm = 0x1A0
movq %rsi, -0x190(%rbp)
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq $0x1, -0x28(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x394a
movq -0x20(%rbp), %rsi
leaq -0x68(%rbp), %rdi
movq %rdi, -0x198(%rbp)
callq 0x3bb0
movq -0x198(%rbp), %rsi
movb $0x0, -0x139(%rbp)
movb $0x0, -0x13a(%rbp)
movb $0x0, -0x181(%rbp)
movb $0x0, -0x182(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0xa9d0
jmp 0x362d
leaq -0x88(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0xaa80
jmp 0x3642
movq -0x190(%rbp), %rsi
leaq -0xf8(%rbp), %rdi
callq 0xa9d0
jmp 0x3657
leaq -0xd8(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0xaa80
jmp 0x366c
leaq -0x88(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x3c70
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x199(%rbp)
jne 0x3693
jmp 0x3719
leaq -0x138(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0xaa00
jmp 0x36a5
movb $0x1, -0x139(%rbp)
leaq -0x118(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xaa80
jmp 0x36c1
movq -0x190(%rbp), %rsi
movb $0x1, -0x13a(%rbp)
leaq -0x180(%rbp), %rdi
callq 0xaa00
jmp 0x36dd
movb $0x1, -0x181(%rbp)
leaq -0x160(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0xaa80
jmp 0x36f9
movb $0x1, -0x182(%rbp)
leaq -0x118(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x3c70
movb %al, -0x199(%rbp)
movb -0x199(%rbp), %al
movb %al, -0x19a(%rbp)
testb $0x1, -0x182(%rbp)
jne 0x3730
jmp 0x373c
leaq -0x160(%rbp), %rdi
callq 0x20a0
testb $0x1, -0x181(%rbp)
jne 0x3747
jmp 0x3753
leaq -0x180(%rbp), %rdi
callq 0x20a0
testb $0x1, -0x13a(%rbp)
jne 0x375e
jmp 0x376a
leaq -0x118(%rbp), %rdi
callq 0x20a0
testb $0x1, -0x139(%rbp)
jne 0x3775
jmp 0x3781
leaq -0x138(%rbp), %rdi
callq 0x20a0
leaq -0xd8(%rbp), %rdi
callq 0x20a0
leaq -0xf8(%rbp), %rdi
callq 0x20a0
leaq -0x88(%rbp), %rdi
callq 0x20a0
leaq -0xa8(%rbp), %rdi
callq 0x20a0
movb -0x19a(%rbp), %al
testb $0x1, %al
jne 0x37c0
jmp 0x3901
movq -0x28(%rbp), %rax
movq %rax, -0x8(%rbp)
movl $0x1, -0x188(%rbp)
jmp 0x3923
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x393f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x38f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x38e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x38db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x38cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x38b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x389d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
testb $0x1, -0x181(%rbp)
jne 0x388f
jmp 0x389b
leaq -0x180(%rbp), %rdi
callq 0x20a0
jmp 0x389d
testb $0x1, -0x13a(%rbp)
jne 0x38a8
jmp 0x38b4
leaq -0x118(%rbp), %rdi
callq 0x20a0
jmp 0x38b6
testb $0x1, -0x139(%rbp)
jne 0x38c1
jmp 0x38cd
leaq -0x138(%rbp), %rdi
callq 0x20a0
jmp 0x38cf
leaq -0xd8(%rbp), %rdi
callq 0x20a0
leaq -0xf8(%rbp), %rdi
callq 0x20a0
leaq -0x88(%rbp), %rdi
callq 0x20a0
leaq -0xa8(%rbp), %rdi
callq 0x20a0
jmp 0x393f
movq -0x20(%rbp), %rax
movq 0x40(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
movl $0x0, -0x188(%rbp)
leaq -0x68(%rbp), %rdi
callq 0xa9a0
movl -0x188(%rbp), %eax
testl %eax, %eax
je 0x393a
jmp 0x3938
jmp 0x3952
jmp 0x35dd
leaq -0x68(%rbp), %rdi
callq 0xa9a0
jmp 0x395f
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x1a0, %rsp            # imm = 0x1A0
popq %rbp
retq
movq -0xb0(%rbp), %rdi
callq 0x21e0
nopl (%rax,%rax)