// File: /workspace/github_cpp_makefile_star2_O1/hunterlxt[P]swim-membership-protocol/Log.cpp
// Function: Log::LOG(Address*, char const*, ...)
void Log::LOG(Address *addr, const char * str, ...) {

	static FILE *fp;
	static FILE *fp2;
	va_list vararglist;
	static char buffer[30000];
	static int numwrites;
	static char stdstring[30];
	static char stdstring2[40];
	static char stdstring3[40]; 
	static int dbg_opened=0;

	if(dbg_opened != 639){
		numwrites=0;

		stdstring2[0]=0;

		strcpy(stdstring3, stdstring2);

		strcat(stdstring2, DBG_LOG);
		strcat(stdstring3, STATS_LOG);

		fp = fopen(stdstring2, "w");
		fp2 = fopen(stdstring3, "w");

		dbg_opened=639;
	}
	else 

	sprintf(stdstring, "%d.%d.%d.%d:%d ", addr->addr[0], addr->addr[1], addr->addr[2], addr->addr[3], *(short *)&addr->addr[4]);

	va_start(vararglist, str);
	vsprintf(buffer, str, vararglist);
	va_end(vararglist);

	if (!firstTime) {
		int magicNumber = 0;
		string magic = MAGIC_NUMBER;
		int len = magic.length();
		for ( int i = 0; i < len; i++ ) {
			magicNumber += (int)magic.at(i);
		}
		fprintf(fp, "%x\n", magicNumber);
		firstTime = true;
	}

	if(memcmp(buffer, "#STATSLOG#", 10)==0){
		fprintf(fp2, "\n %s", stdstring);
		fprintf(fp2, "[%d] ", par->getcurrtime());

		fprintf(fp2, buffer);
	}
	else{
		fprintf(fp, "\n %s", stdstring);
		fprintf(fp, "[%d] ", par->getcurrtime());
		fprintf(fp, buffer);

	}

	if(++numwrites >= MAXWRITES){
		fflush(fp);
		fflush(fp2);
		numwrites=0;
	}

}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x100, %rsp            # imm = 0x100
movq %rdx, %r14
movq %rdi, %rbx
movq %rcx, 0x68(%rsp)
movq %r8, 0x70(%rsp)
movq %r9, 0x78(%rsp)
testb %al, %al
je 0x50f9
movaps %xmm0, 0x80(%rsp)
movaps %xmm1, 0x90(%rsp)
movaps %xmm2, 0xa0(%rsp)
movaps %xmm3, 0xb0(%rsp)
movaps %xmm4, 0xc0(%rsp)
movaps %xmm5, 0xd0(%rsp)
movaps %xmm6, 0xe0(%rsp)
movaps %xmm7, 0xf0(%rsp)
cmpb $0x0, 0xeeb8(%rip)      # 0x13fb8
je 0x5134
movsbl (%rsi), %edx
movsbl 0x1(%rsi), %ecx
movsbl 0x2(%rsi), %r8d
movsbl 0x3(%rsi), %r9d
movswl 0x4(%rsi), %eax
movl %eax, (%rsp)
leaq 0xee1f(%rip), %rdi      # 0x13f40
leaq 0x302a(%rip), %rsi      # 0x8152
xorl %eax, %eax
callq 0x2040
jmp 0x51c4
movl $0x0, 0xedf2(%rip)      # 0x13f30
movb $0x0, 0xee1b(%rip)      # 0x13f60
leaq 0xee14(%rip), %r15      # 0x13f60
leaq 0xee3d(%rip), %r12      # 0x13f90
movq %r12, %rdi
movq %r15, %rsi
callq 0x2150
movq %r15, %rdi
callq 0x20a0
movabsq $0x676f6c2e676264, %rcx # imm = 0x676F6C2E676264
movq %rcx, (%rax,%r15)
movq %r12, %rdi
callq 0x20a0
movabsq $0x6f6c2e7374617473, %rcx # imm = 0x6F6C2E7374617473
movq %rcx, (%rax,%r12)
movw $0x67, 0x8(%rax,%r12)
leaq 0x325a(%rip), %r13      # 0x83f3
movq %r15, %rdi
movq %r13, %rsi
callq 0x21f0
movq %rax, 0x783d(%rip)      # 0xc9e8
movq %r12, %rdi
movq %r13, %rsi
callq 0x21f0
movq %rax, 0x7833(%rip)      # 0xc9f0
movb $0x1, 0xedf4(%rip)      # 0x13fb8
leaq 0x50(%rsp), %rax
leaq 0x30(%rsp), %rdx
movq %rax, 0x10(%rdx)
leaq 0x130(%rsp), %rax
movq %rax, 0x8(%rdx)
movabsq $0x3000000018, %rax     # imm = 0x3000000018
movq %rax, (%rdx)
leaq 0x780e(%rip), %rdi      # 0xca00
movq %r14, %rsi
callq 0x20b0
cmpb $0x0, 0x10(%rbx)
jne 0x529b
leaq 0x20(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x31e1(%rip), %rsi      # 0x83f5
leaq 0x31df(%rip), %rdx      # 0x83fa
leaq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x5490
movq 0x8(%r14), %rdx
testl %edx, %edx
jle 0x5267
movq 0x10(%rsp), %rcx
movl %edx, %edi
andl $0x7fffffff, %edi       # imm = 0x7FFFFFFF
leal -0x1(%rdx), %esi
cmpq %rsi, %rdx
cmovbq %rdx, %rsi
xorl %r8d, %r8d
xorl %eax, %eax
testq %rdx, %rdx
je 0x5363
movsbl (%rcx,%r8), %r9d
addl %r9d, %eax
incq %r8
cmpq %r8, %rdi
jne 0x524c
jmp 0x5269
xorl %eax, %eax
movq 0x7778(%rip), %rdi      # 0xc9e8
leaq 0x3184(%rip), %rsi      # 0x83fb
movl %eax, %edx
xorl %eax, %eax
callq 0x2250
movb $0x1, 0x10(%rbx)
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x529b
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21a0
leaq 0x775e(%rip), %r14      # 0xca00
movabsq $0x4f4c535441545323, %rax # imm = 0x4F4C535441545323
xorq 0x774d(%rip), %rax      # 0xca00
movzwl 0x774e(%rip), %ecx      # 0xca08
xorq $0x2347, %rcx           # imm = 0x2347
orq %rax, %rcx
leaq 0x7725(%rip), %rax      # 0xc9f0
leaq 0x7716(%rip), %r12      # 0xc9e8
cmoveq %rax, %r12
movq (%r12), %rdi
leaq 0x3129(%rip), %rsi      # 0x840a
leaq 0xec58(%rip), %rdx      # 0x13f40
xorl %eax, %eax
callq 0x2250
movq (%r12), %r15
movq 0x8(%rbx), %rdi
callq 0x55e0
leaq 0x310c(%rip), %rsi      # 0x840f
movq %r15, %rdi
movl %eax, %edx
xorl %eax, %eax
callq 0x2250
movq (%r12), %rdi
movq %r14, %rsi
xorl %eax, %eax
callq 0x2250
movl 0xec0d(%rip), %eax      # 0x13f30
leal 0x1(%rax), %ecx
movl %ecx, 0xec04(%rip)      # 0x13f30
testl %eax, %eax
js 0x5352
movq 0x76b1(%rip), %rdi      # 0xc9e8
callq 0x21e0
movq 0x76ad(%rip), %rdi      # 0xc9f0
callq 0x21e0
movl $0x0, 0xebde(%rip)      # 0x13f30
addq $0x100, %rsp            # imm = 0x100
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
leaq 0x3122(%rip), %rdi      # 0x848c
xorl %eax, %eax
callq 0x2280
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r15, %rdi
je 0x538b
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x21a0
movq %rbx, %rdi
callq 0x22e0
nop