// File: /workspace/github_cpp_makefile_star2_O1/geoherna[P]lib605/./src/lib605.cpp
// Function: lib605::operator<<(std::ostream&, lib605::Magstripe&)
std::ostream& operator<< (std::ostream &out, Magstripe &sMagstripe) {
		out << "Card Format: ";
		switch(sMagstripe.GetCardDataFormat()) {
			case Magstripe::ISO: {
				out << "ISO" << std::endl;
				break;
			} case Magstripe::RAW: {
				out << "Raw" << std::endl;
				break;
			} default: break;
		}

		Track* t = sMagstripe.GetTrack1();
		if(t->GetTrackDataLength() != 0) {
			out << "\t" << (*t);
			if(sMagstripe.Format == Magstripe::RAW)
				out << "\t Track Data: " << std::hex << t->GetTrackData() << std::endl;
			else
				out << "\t Track Data:" << t->GetTrackData() << std::endl;
		} else {
			out << "Track 1: EMPTY" << std::endl;
		}
		t = sMagstripe.GetTrack2();
		if(t->GetTrackDataLength() != 0) {
			out << "\t" << (*t);
			if(sMagstripe.Format == Magstripe::RAW)
				out << "\t Track Data: " << std::hex << t->GetTrackData() << std::endl;
			else
				out << "\t Track Data:" << t->GetTrackData() << std::endl;
		} else {
			out << "Track 2: EMPTY" << std::endl;
		}
		t = sMagstripe.GetTrack3();
		if(t->GetTrackDataLength() != 0) {
			out << "\t" << (*t);
			if(sMagstripe.Format == Magstripe::RAW)
				out << "\t Track Data: " << std::hex << t->GetTrackData() << std::endl;
			else
				out << "\t Track Data:" << t->GetTrackData() << std::endl;
		} else {
			out << "Track 3: EMPTY" << std::endl;
		}
		return out;
	}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x1a47(%rip), %rsi      # 0x5027
movl $0xd, %edx
callq 0x3210
movl 0x18(%r14), %eax
cmpl $0x1, %eax
je 0x3600
testl %eax, %eax
jne 0x363b
leaq 0x1a3b(%rip), %rsi      # 0x5039
jmp 0x3607
leaq 0x1a2e(%rip), %rsi      # 0x5035
movl $0x3, %edx
movq %rbx, %rdi
callq 0x3210
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x3130
movq (%r14), %r15
cmpl $0x0, 0x8(%r15)
je 0x368c
leaq 0x19f1(%rip), %rsi      # 0x503d
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3210
movq %rbx, %rdi
movq %r15, %rsi
callq 0x30f0
cmpl $0x0, 0x18(%r14)
je 0x369d
leaq 0x19dc(%rip), %rsi      # 0x504e
movl $0xd, %edx
movq %rbx, %rdi
callq 0x3210
movq (%r15), %r15
testq %r15, %r15
jne 0x36ce
movq (%rbx), %rax
jmp 0x36e6
leaq 0x19c9(%rip), %rsi      # 0x505c
movl $0xe, %edx
movq %rbx, %rdi
jmp 0x36df
leaq 0x199b(%rip), %rsi      # 0x503f
movl $0xe, %edx
movq %rbx, %rdi
callq 0x3210
movq (%rbx), %rax
movq -0x18(%rax), %rcx
movl 0x18(%rbx,%rcx), %edx
andl $-0x4b, %edx
orl $0x8, %edx
movl %edx, 0x18(%rbx,%rcx)
movq (%r15), %r15
testq %r15, %r15
je 0x36e6
movq %r15, %rdi
callq 0x3100
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x3210
jmp 0x36fa
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x32c0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x3130
movq 0x8(%r14), %r15
cmpl $0x0, 0x8(%r15)
je 0x3773
leaq 0x190a(%rip), %rsi      # 0x503d
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3210
movq %rbx, %rdi
movq %r15, %rsi
callq 0x30f0
cmpl $0x0, 0x18(%r14)
je 0x3784
leaq 0x18f5(%rip), %rsi      # 0x504e
movl $0xd, %edx
movq %rbx, %rdi
callq 0x3210
movq (%r15), %r15
testq %r15, %r15
jne 0x37b5
movq (%rbx), %rax
jmp 0x37cd
leaq 0x18f1(%rip), %rsi      # 0x506b
movl $0xe, %edx
movq %rbx, %rdi
jmp 0x37c6
leaq 0x18b4(%rip), %rsi      # 0x503f
movl $0xe, %edx
movq %rbx, %rdi
callq 0x3210
movq (%rbx), %rax
movq -0x18(%rax), %rcx
movl 0x18(%rbx,%rcx), %edx
andl $-0x4b, %edx
orl $0x8, %edx
movl %edx, 0x18(%rbx,%rcx)
movq (%r15), %r15
testq %r15, %r15
je 0x37cd
movq %r15, %rdi
callq 0x3100
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x3210
jmp 0x37e1
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x32c0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x3130
movq 0x10(%r14), %r15
cmpl $0x0, 0x8(%r15)
je 0x385a
leaq 0x1823(%rip), %rsi      # 0x503d
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3210
movq %rbx, %rdi
movq %r15, %rsi
callq 0x30f0
cmpl $0x0, 0x18(%r14)
je 0x386b
leaq 0x180e(%rip), %rsi      # 0x504e
movl $0xd, %edx
movq %rbx, %rdi
callq 0x3210
movq (%r15), %r14
testq %r14, %r14
jne 0x389c
movq (%rbx), %rax
jmp 0x38b4
leaq 0x1819(%rip), %rsi      # 0x507a
movl $0xe, %edx
movq %rbx, %rdi
jmp 0x38ad
leaq 0x17cd(%rip), %rsi      # 0x503f
movl $0xe, %edx
movq %rbx, %rdi
callq 0x3210
movq (%rbx), %rax
movq -0x18(%rax), %rcx
movl 0x18(%rbx,%rcx), %edx
andl $-0x4b, %edx
orl $0x8, %edx
movl %edx, 0x18(%rbx,%rcx)
movq (%r15), %r14
testq %r14, %r14
je 0x38b4
movq %r14, %rdi
callq 0x3100
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x3210
jmp 0x38c8
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x32c0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x3130
movq %rbx, %rax
popq %rbx
popq %r14
popq %r15
retq