// File: /workspace/github_cpp_makefile_star2_O3/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 0x1a4f(%rip), %rsi      # 0x5027
movl $0xd, %edx
callq 0x3210
movl 0x18(%r14), %eax
cmpl $0x1, %eax
je 0x35f8
testl %eax, %eax
jne 0x3633
leaq 0x1a43(%rip), %rsi      # 0x5039
jmp 0x35ff
leaq 0x1a36(%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 0x3684
leaq 0x19f9(%rip), %rsi      # 0x503d
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3210
movq %rbx, %rdi
movq %r15, %rsi
callq 0x30f0
cmpl $0x0, 0x18(%r14)
je 0x3695
leaq 0x19e4(%rip), %rsi      # 0x504e
movl $0xd, %edx
movq %rbx, %rdi
callq 0x3210
movq (%r15), %r15
testq %r15, %r15
jne 0x36c6
movq (%rbx), %rax
jmp 0x36de
leaq 0x19d1(%rip), %rsi      # 0x505c
movl $0xe, %edx
movq %rbx, %rdi
jmp 0x36d7
leaq 0x19a3(%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 0x36de
movq %r15, %rdi
callq 0x3100
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x3210
jmp 0x36f2
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 0x376b
leaq 0x1912(%rip), %rsi      # 0x503d
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3210
movq %rbx, %rdi
movq %r15, %rsi
callq 0x30f0
cmpl $0x0, 0x18(%r14)
je 0x377c
leaq 0x18fd(%rip), %rsi      # 0x504e
movl $0xd, %edx
movq %rbx, %rdi
callq 0x3210
movq (%r15), %r15
testq %r15, %r15
jne 0x37ad
movq (%rbx), %rax
jmp 0x37c5
leaq 0x18f9(%rip), %rsi      # 0x506b
movl $0xe, %edx
movq %rbx, %rdi
jmp 0x37be
leaq 0x18bc(%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 0x37c5
movq %r15, %rdi
callq 0x3100
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x3210
jmp 0x37d9
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 0x3852
leaq 0x182b(%rip), %rsi      # 0x503d
movl $0x1, %edx
movq %rbx, %rdi
callq 0x3210
movq %rbx, %rdi
movq %r15, %rsi
callq 0x30f0
cmpl $0x0, 0x18(%r14)
je 0x3863
leaq 0x1816(%rip), %rsi      # 0x504e
movl $0xd, %edx
movq %rbx, %rdi
callq 0x3210
movq (%r15), %r14
testq %r14, %r14
jne 0x3894
movq (%rbx), %rax
jmp 0x38ac
leaq 0x1821(%rip), %rsi      # 0x507a
movl $0xe, %edx
movq %rbx, %rdi
jmp 0x38a5
leaq 0x17d5(%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 0x38ac
movq %r14, %rdi
callq 0x3100
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x3210
jmp 0x38c0
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