// File: /workspace/github_cpp_makefile_star2_O2/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 0x1a27(%rip), %rsi      # 0x5027
callq 0x31d0
movl 0x18(%r14), %eax
cmpl $0x1, %eax
je 0x361b
testl %eax, %eax
jne 0x3632
leaq 0x1a20(%rip), %rsi      # 0x5039
jmp 0x3622
leaq 0x1a13(%rip), %rsi      # 0x5035
movq %rbx, %rdi
callq 0x31d0
movq %rax, %rdi
callq 0x3110
movq (%r14), %r15
cmpl $0x0, 0x8(%r15)
je 0x366e
leaq 0x19fa(%rip), %rsi      # 0x503d
movq %rbx, %rdi
callq 0x31d0
movq %rax, %rdi
movq %r15, %rsi
callq 0x30e0
cmpl $0x0, 0x18(%r14)
je 0x367a
leaq 0x19ea(%rip), %rsi      # 0x504e
movq %rbx, %rdi
callq 0x31d0
jmp 0x369e
leaq 0x19e7(%rip), %rsi      # 0x505c
movq %rbx, %rdi
jmp 0x36a4
leaq 0x19be(%rip), %rsi      # 0x503f
movq %rbx, %rdi
callq 0x31d0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x8, %edx
movl %edx, 0x18(%rax,%rcx)
movq (%r15), %rsi
movq %rax, %rdi
callq 0x31d0
movq %rax, %rdi
callq 0x3110
movq 0x8(%r14), %r15
cmpl $0x0, 0x8(%r15)
je 0x36ee
leaq 0x197a(%rip), %rsi      # 0x503d
movq %rbx, %rdi
callq 0x31d0
movq %rax, %rdi
movq %r15, %rsi
callq 0x30e0
cmpl $0x0, 0x18(%r14)
je 0x36fa
leaq 0x196a(%rip), %rsi      # 0x504e
movq %rbx, %rdi
callq 0x31d0
jmp 0x371e
leaq 0x1976(%rip), %rsi      # 0x506b
movq %rbx, %rdi
jmp 0x3724
leaq 0x193e(%rip), %rsi      # 0x503f
movq %rbx, %rdi
callq 0x31d0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x8, %edx
movl %edx, 0x18(%rax,%rcx)
movq (%r15), %rsi
movq %rax, %rdi
callq 0x31d0
movq %rax, %rdi
callq 0x3110
movq 0x10(%r14), %r15
cmpl $0x0, 0x8(%r15)
je 0x376e
leaq 0x18fa(%rip), %rsi      # 0x503d
movq %rbx, %rdi
callq 0x31d0
movq %rax, %rdi
movq %r15, %rsi
callq 0x30e0
cmpl $0x0, 0x18(%r14)
je 0x377a
leaq 0x18ea(%rip), %rsi      # 0x504e
movq %rbx, %rdi
callq 0x31d0
jmp 0x379e
leaq 0x1905(%rip), %rsi      # 0x507a
movq %rbx, %rdi
jmp 0x37a4
leaq 0x18be(%rip), %rsi      # 0x503f
movq %rbx, %rdi
callq 0x31d0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x8, %edx
movl %edx, 0x18(%rax,%rcx)
movq (%r15), %rsi
movq %rax, %rdi
callq 0x31d0
movq %rax, %rdi
callq 0x3110
movq %rbx, %rax
popq %rbx
popq %r14
popq %r15
retq