// File: /workspace/github_c_makefile_star2_O1/fmadio[P]pcap_flow/main.c
// Function: PrintFlowTCP
static void PrintFlowTCP(FILE* Out, FlowHash_t* F, u32 FlowID, u32 FlowCnt)
{
	TCPHash_t* TCP = (TCPHash_t*)F->Data;
	fprintf(Out, "%5i FlowID: %8i | TCP  ", FlowCnt, FlowID); 	
	PrintMAC(Out, TCP->MACSrc);
	fprintf(Out, " -> ");
	PrintMAC(Out, TCP->MACDst);

	fprintf(Out, " | ");
	PrintIP4(Out, TCP->IPSrc);
	fprintf(Out, " -> ");
	PrintIP4(Out, TCP->IPDst);

	fprintf(Out, " | %6i -> %6i ", TCP->PortSrc, TCP->PortDst);

	fprintf(Out, " | ");
	fprintf(Out, " %'16lld Pkts ", F->PktCnt);
	fprintf(Out, " %'16lli Bytes ", F->Bytes);

	fprintf(Out, " | ");
	fprintf(Out, " %s -> %s", FormatTS(F->TSFirst), FormatTS(F->TSLast) ); 
	fprintf(Out, " : %s", FormatTS(F->TSLast - F->TSFirst));

	fprintf(Out, " | ");
	fprintf(Out, " Seq:%08x", F->TCPSeqNo);

	// generate TCP specific stats
	struct TCPStream_t* Stream = s_ExtractTCP[FlowID];
	fTCPStream_FlowStats(Stream, Out);

	fprintf(Out, "\n");
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %edx, %eax
movl %edx, 0x4(%rsp)
movq %rsi, %r12
movq %rdi, %rbp
leaq 0x4031(%rip), %rsi      # 0xaa49
movl %ecx, %edx
movl %eax, %ecx
xorl %eax, %eax
callq 0x1160
movzbl (%r12), %edx
movzbl 0x1(%r12), %ecx
movzbl 0x2(%r12), %r8d
movzbl 0x3(%r12), %r9d
movzbl 0x4(%r12), %r10d
movzbl 0x5(%r12), %r11d
leaq 0x4065(%rip), %rbx      # 0xaab2
movq %rbp, %rdi
movq %rbx, %rsi
xorl %eax, %eax
pushq %r11
pushq %r10
callq 0x1160
addq $0x10, %rsp
leaq 0x3ff8(%rip), %r14      # 0xaa61
movl $0x4, %esi
movl $0x1, %edx
movq %r14, %rdi
movq %rbp, %rcx
callq 0x1240
movzbl 0x6(%r12), %edx
movzbl 0x7(%r12), %ecx
movzbl 0x8(%r12), %r8d
movzbl 0x9(%r12), %r9d
movzbl 0xa(%r12), %r10d
movzbl 0xb(%r12), %r11d
movq %rbp, %rdi
movq %rbx, %rsi
xorl %eax, %eax
pushq %r11
pushq %r10
callq 0x1160
addq $0x10, %rsp
leaq 0x3fa8(%rip), %rdi      # 0xaa66
movl $0x3, %esi
movl $0x1, %edx
movq %rdi, %r15
movq %rbp, %rcx
callq 0x1240
movl 0xc(%r12), %edx
movl %edx, %ecx
shrl $0x8, %ecx
movl %edx, %r8d
shrl $0x10, %r8d
movl %edx, %r9d
shrl $0x18, %r9d
movl $0xff, %ebx
andl %ebx, %edx
andl %ebx, %ecx
andl %ebx, %r8d
leaq 0x3fd2(%rip), %r13      # 0xaad0
movq %rbp, %rdi
movq %r13, %rsi
xorl %eax, %eax
callq 0x1160
movl $0x4, %esi
movl $0x1, %edx
movq %r14, %rdi
movq %rbp, %rcx
callq 0x1240
movl 0x10(%r12), %edx
movl %edx, %ecx
shrl $0x8, %ecx
movl %edx, %r8d
shrl $0x10, %r8d
movl %edx, %r9d
shrl $0x18, %r9d
andl %ebx, %edx
andl %ebx, %ecx
andl %ebx, %r8d
movq %rbp, %rdi
movq %r13, %rsi
xorl %eax, %eax
callq 0x1160
movzwl 0x14(%r12), %edx
movzwl 0x16(%r12), %ecx
leaq 0x3f0b(%rip), %rsi      # 0xaa6a
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1160
movl $0x3, %esi
movl $0x1, %edx
movq %r15, %rdi
movq %rbp, %rcx
callq 0x1240
movq 0x48(%r12), %rdx
leaq 0x3eef(%rip), %rsi      # 0xaa79
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1160
movq 0x50(%r12), %rdx
leaq 0x3ee8(%rip), %rsi      # 0xaa88
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1160
movl $0x3, %esi
movl $0x1, %edx
movq %r15, %rdi
movq %rbp, %rcx
callq 0x1240
movq 0x58(%r12), %rsi
movq %rsi, %rax
shrq $0x3, %rax
movabsq $0x20c49ba5e353f7cf, %rcx # imm = 0x20C49BA5E353F7CF
mulq %rcx
movq %rdx, %rdi
shrq $0x4, %rdi
movabsq $0x431bde82d7b634db, %rcx # imm = 0x431BDE82D7B634DB
movq %rsi, %rax
mulq %rcx
movq %rdx, %r8
shrq $0x12, %r8
movq %rsi, %rax
shrq $0x9, %rax
movabsq $0x44b82fa09b5a53, %r15 # imm = 0x44B82FA09B5A53
mulq %r15
movq %rdx, %rcx
shrq $0xb, %rcx
movq %rsi, %rax
shrq $0xb, %rax
movabsq $0x9299ff347e9e9, %rdx  # imm = 0x9299FF347E9E9
mulq %rdx
movq %rdx, %r11
shrq $0xc, %r11
movabsq $-0x63a000d9128a12ab, %rdx # imm = 0x9C5FFF26ED75ED55
movq %rsi, %rax
mulq %rdx
movq %rdx, %r10
shrq $0x29, %r10
imulq $-0x3e8, %rdi, %r14     # imm = 0xFC18
addq %rsi, %r14
imulq $-0x3e8, %r8, %rbx      # imm = 0xFC18
addq %rdi, %rbx
imulq $-0x3e8, %rcx, %r9      # imm = 0xFC18
addq %r8, %r9
imulq $-0x3c, %r11, %r8
addq %rcx, %r8
imulq $-0x3c, %r10, %rcx
addq %r11, %rcx
movslq 0x812a(%rip), %r13      # 0xeda0
leal 0x1(%r13), %eax
shlq $0x7, %r13
andl $0xf, %eax
movl %eax, 0x8119(%rip)      # 0xeda0
movabsq $0xaaaaaaaaaaaaaab, %rdx # imm = 0xAAAAAAAAAAAAAAB
movq %r10, %rax
mulq %rdx
shll $0x3, %edx
leaq (%rdx,%rdx,2), %rax
subq %rax, %r10
leaq 0x78f8(%rip), %rax      # 0xe5a0
addq %rax, %r13
leaq 0x2895(%rip), %rsi      # 0x9547
movq %r13, %rdi
movq %r10, %rdx
xorl %eax, %eax
pushq %r14
pushq %rbx
callq 0x1220
addq $0x10, %rsp
movq 0x60(%r12), %rsi
movq %rsi, %rax
shrq $0x3, %rax
movabsq $0x20c49ba5e353f7cf, %rcx # imm = 0x20C49BA5E353F7CF
mulq %rcx
movq %rdx, %rdi
shrq $0x4, %rdi
movq %rsi, %rax
movabsq $0x431bde82d7b634db, %rcx # imm = 0x431BDE82D7B634DB
mulq %rcx
movq %rdx, %r8
shrq $0x12, %r8
movq %rsi, %rax
shrq $0x9, %rax
mulq %r15
movq %rdx, %rcx
movq %rsi, %rax
shrq $0xb, %rax
movabsq $0x9299ff347e9e9, %rdx  # imm = 0x9299FF347E9E9
mulq %rdx
movq %rdx, %r11
shrq $0xb, %rcx
shrq $0xc, %r11
movq %rsi, %rax
movabsq $-0x63a000d9128a12ab, %rdx # imm = 0x9C5FFF26ED75ED55
mulq %rdx
movq %rdx, %r10
shrq $0x29, %r10
imulq $-0x3e8, %rdi, %r15     # imm = 0xFC18
addq %rsi, %r15
imulq $-0x3e8, %r8, %r14      # imm = 0xFC18
addq %rdi, %r14
imulq $-0x3e8, %rcx, %r9      # imm = 0xFC18
addq %r8, %r9
imulq $-0x3c, %r11, %r8
addq %rcx, %r8
imulq $-0x3c, %r10, %rcx
addq %r11, %rcx
movslq 0x802d(%rip), %rbx      # 0xeda0
leal 0x1(%rbx), %esi
andl $0xf, %esi
movq %r10, %rax
movabsq $0xaaaaaaaaaaaaaab, %rdx # imm = 0xAAAAAAAAAAAAAAB
mulq %rdx
movl %esi, 0x8011(%rip)      # 0xeda0
shll $0x3, %edx
leaq (%rdx,%rdx,2), %rax
subq %rax, %r10
shlq $0x7, %rbx
leaq 0x77fc(%rip), %rax      # 0xe5a0
addq %rax, %rbx
movq %rbx, %rdi
leaq 0x2796(%rip), %rsi      # 0x9547
movq %r10, %rdx
xorl %eax, %eax
pushq %r15
pushq %r14
callq 0x1220
addq $0x10, %rsp
leaq 0x3cce(%rip), %rsi      # 0xaa98
movq %rbp, %rdi
movq %r13, %rdx
movq %rbx, %rcx
xorl %eax, %eax
callq 0x1160
movq 0x60(%r12), %rsi
subq 0x58(%r12), %rsi
movq %rsi, %rax
shrq $0x3, %rax
movabsq $0x20c49ba5e353f7cf, %rcx # imm = 0x20C49BA5E353F7CF
mulq %rcx
movq %rdx, %rdi
shrq $0x4, %rdi
movq %rsi, %rax
movabsq $0x431bde82d7b634db, %rcx # imm = 0x431BDE82D7B634DB
mulq %rcx
movq %rdx, %r8
shrq $0x12, %r8
movq %rsi, %rax
shrq $0x9, %rax
movabsq $0x44b82fa09b5a53, %rcx # imm = 0x44B82FA09B5A53
mulq %rcx
movq %rdx, %rcx
movq %rsi, %rax
shrq $0xb, %rax
movabsq $0x9299ff347e9e9, %rdx  # imm = 0x9299FF347E9E9
mulq %rdx
movq %rdx, %r11
shrq $0xb, %rcx
shrq $0xc, %r11
movq %rsi, %rax
movabsq $-0x63a000d9128a12ab, %rdx # imm = 0x9C5FFF26ED75ED55
mulq %rdx
movq %rdx, %r10
shrq $0x29, %r10
imulq $-0x3e8, %rdi, %rbx     # imm = 0xFC18
addq %rsi, %rbx
imulq $-0x3e8, %r8, %r14      # imm = 0xFC18
addq %rdi, %r14
imulq $-0x3e8, %rcx, %r9      # imm = 0xFC18
addq %r8, %r9
imulq $-0x3c, %r11, %r8
addq %rcx, %r8
imulq $-0x3c, %r10, %rcx
addq %r11, %rcx
movslq 0x7f0a(%rip), %r13      # 0xeda0
leal 0x1(%r13), %eax
shlq $0x7, %r13
leaq 0x76fb(%rip), %rdx      # 0xe5a0
addq %rdx, %r13
andl $0xf, %eax
movl %eax, 0x7eef(%rip)      # 0xeda0
movq %r10, %rax
movabsq $0xaaaaaaaaaaaaaab, %rdx # imm = 0xAAAAAAAAAAAAAAB
mulq %rdx
shll $0x3, %edx
leaq (%rdx,%rdx,2), %rax
subq %rax, %r10
movq %r13, %rdi
leaq 0x2672(%rip), %rsi      # 0x9547
movq %r10, %rdx
xorl %eax, %eax
pushq %rbx
pushq %r14
callq 0x1220
addq $0x10, %rsp
leaq 0x3bb5(%rip), %rsi      # 0xaaa2
movq %rbp, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x1160
movl $0x3, %esi
movl $0x1, %edx
leaq 0x3b5b(%rip), %rdi      # 0xaa66
movq %rbp, %rcx
callq 0x1240
movl 0x68(%r12), %edx
leaq 0x3b89(%rip), %rsi      # 0xaaa8
movq %rbp, %rdi
xorl %eax, %eax
callq 0x1160
movq 0x7630(%rip), %rax      # 0xe560
movl 0x4(%rsp), %ecx
movq (%rax,%rcx,8), %rdi
movq %rbp, %rsi
callq 0x3812
movl $0xa, %edi
movq %rbp, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1130