// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movl %edx, 0x34(%rsp)
movl %ecx, 0x30(%rsp)
movq 0x38(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x40(%rsp), %rdi
movl 0x30(%rsp), %edx
movl 0x34(%rsp), %ecx
leaq 0x5165(%rip), %rsi      # 0xda39
movb $0x0, %al
callq 0x1150
movq 0x40(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0x8ca0
movq 0x40(%rsp), %rdi
leaq 0x515b(%rip), %rsi      # 0xda51
movb $0x0, %al
callq 0x1150
movq 0x40(%rsp), %rdi
movq 0x28(%rsp), %rsi
addq $0x6, %rsi
callq 0x8ca0
movq 0x40(%rsp), %rdi
leaq 0x513a(%rip), %rsi      # 0xda56
movb $0x0, %al
callq 0x1150
movq 0x40(%rsp), %rdi
movq 0x28(%rsp), %rax
movl 0xc(%rax), %esi
callq 0x8d10
movq 0x40(%rsp), %rdi
leaq 0x5110(%rip), %rsi      # 0xda51
movb $0x0, %al
callq 0x1150
movq 0x40(%rsp), %rdi
movq 0x28(%rsp), %rax
movl 0x10(%rax), %esi
callq 0x8d10
movq 0x40(%rsp), %rdi
movq 0x28(%rsp), %rax
movzwl 0x14(%rax), %edx
movq 0x28(%rsp), %rax
movzwl 0x16(%rax), %ecx
leaq 0x50e2(%rip), %rsi      # 0xda5a
movb $0x0, %al
callq 0x1150
movq 0x40(%rsp), %rdi
leaq 0x50cb(%rip), %rsi      # 0xda56
movb $0x0, %al
callq 0x1150
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rax
movq 0x48(%rax), %rdx
leaq 0x50c2(%rip), %rsi      # 0xda69
movb $0x0, %al
callq 0x1150
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rax
movq 0x50(%rax), %rdx
leaq 0x50b5(%rip), %rsi      # 0xda78
movb $0x0, %al
callq 0x1150
movq 0x40(%rsp), %rdi
leaq 0x5080(%rip), %rsi      # 0xda56
movb $0x0, %al
callq 0x1150
movq 0x40(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x38(%rsp), %rax
movq 0x58(%rax), %rdi
callq 0x8360
movq %rax, 0x10(%rsp)
movq 0x38(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x8360
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rdx
movq %rax, %rcx
leaq 0x506c(%rip), %rsi      # 0xda88
movb $0x0, %al
callq 0x1150
movq 0x40(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x38(%rsp), %rax
movq 0x60(%rax), %rdi
movq 0x38(%rsp), %rax
subq 0x58(%rax), %rdi
callq 0x8360
movq 0x18(%rsp), %rdi
movq %rax, %rdx
leaq 0x503f(%rip), %rsi      # 0xda92
movb $0x0, %al
callq 0x1150
movq 0x40(%rsp), %rdi
leaq 0x4ff0(%rip), %rsi      # 0xda56
movb $0x0, %al
callq 0x1150
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rax
movl 0x68(%rax), %edx
leaq 0x5017(%rip), %rsi      # 0xda98
movb $0x0, %al
callq 0x1150
movq 0x8ad1(%rip), %rax      # 0x11560
movl 0x34(%rsp), %ecx
movq (%rax,%rcx,8), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0x2fa0
movq 0x40(%rsp), %rdi
leaq 0x39d7(%rip), %rsi      # 0xc48e
movb $0x0, %al
callq 0x1150
addq $0x48, %rsp
retq
nopw %cs:(%rax,%rax)