// File: Mengjintao[P]SWAPCounter/src/bloomFilter.h
// Function: bloomFilter::bloomFilter(unsigned long long, int)
bloomFilter(unsigned long long sz=0, int bitsPerNode=1)
	{
		factorArray.push_back(19);
		factorArray.push_back(23);
		factorArray.push_back(29);
		factorArray.push_back(31);
		factorArray.push_back(37);
		factorArray.push_back(39);
		factorArray.push_back(257);
		factorArray.push_back(263);
		factorArray.push_back(269);
		factorArray.push_back(271);
		factorArray.push_back(277);
		factorArray.push_back(281);
		factorArray.push_back(283);
		factorArray.push_back(293);
		factorArray.push_back(307);
		factorArray.push_back(311);

		funNum = FunctionNum;
		size   = sz*MDIVN;
		bits   = bitsPerNode;
		bitSet = new unsigned long long [(bits*size)/64+1];
		printf("BloomFilter Set: funNum=%d size=%llu bitsPerNode=%d\n", funNum, size, bits); 
		for(unsigned long long i=0;i<(bits*size)/64+1;i++)	bitSet[i]=0;
	}

// Assembly:
subq $0xc8, %rsp
movq %rdi, 0xc0(%rsp)
movq %rsi, 0xb8(%rsp)
movl %edx, 0xb4(%rsp)
movq 0xc0(%rsp), %rdi
movq %rdi, 0x8(%rsp)
addq $0x18, %rdi
movq %rdi, 0x10(%rsp)
callq 0x12690
movq 0x10(%rsp), %rdi
movq $0x13, 0xa8(%rsp)
leaq 0xa8(%rsp), %rsi
callq 0x126a0
jmp 0xd729
movq 0x8(%rsp), %rdi
addq $0x18, %rdi
movq $0x17, 0x90(%rsp)
leaq 0x90(%rsp), %rsi
callq 0x126a0
jmp 0xd74d
movq 0x8(%rsp), %rdi
addq $0x18, %rdi
movq $0x1d, 0x88(%rsp)
leaq 0x88(%rsp), %rsi
callq 0x126a0
jmp 0xd771
movq 0x8(%rsp), %rdi
addq $0x18, %rdi
movq $0x1f, 0x80(%rsp)
leaq 0x80(%rsp), %rsi
callq 0x126a0
jmp 0xd795
movq 0x8(%rsp), %rdi
addq $0x18, %rdi
movq $0x25, 0x78(%rsp)
leaq 0x78(%rsp), %rsi
callq 0x126a0
jmp 0xd7b3
movq 0x8(%rsp), %rdi
addq $0x18, %rdi
movq $0x27, 0x70(%rsp)
leaq 0x70(%rsp), %rsi
callq 0x126a0
jmp 0xd7d1
movq 0x8(%rsp), %rdi
addq $0x18, %rdi
movq $0x101, 0x68(%rsp)      # imm = 0x101
leaq 0x68(%rsp), %rsi
callq 0x126a0
jmp 0xd7ef
movq 0x8(%rsp), %rdi
addq $0x18, %rdi
movq $0x107, 0x60(%rsp)      # imm = 0x107
leaq 0x60(%rsp), %rsi
callq 0x126a0
jmp 0xd80d
movq 0x8(%rsp), %rdi
addq $0x18, %rdi
movq $0x10d, 0x58(%rsp)      # imm = 0x10D
leaq 0x58(%rsp), %rsi
callq 0x126a0
jmp 0xd82b
movq 0x8(%rsp), %rdi
addq $0x18, %rdi
movq $0x10f, 0x50(%rsp)      # imm = 0x10F
leaq 0x50(%rsp), %rsi
callq 0x126a0
jmp 0xd849
movq 0x8(%rsp), %rdi
addq $0x18, %rdi
movq $0x115, 0x48(%rsp)      # imm = 0x115
leaq 0x48(%rsp), %rsi
callq 0x126a0
jmp 0xd867
movq 0x8(%rsp), %rdi
addq $0x18, %rdi
movq $0x119, 0x40(%rsp)      # imm = 0x119
leaq 0x40(%rsp), %rsi
callq 0x126a0
jmp 0xd885
movq 0x8(%rsp), %rdi
addq $0x18, %rdi
movq $0x11b, 0x38(%rsp)      # imm = 0x11B
leaq 0x38(%rsp), %rsi
callq 0x126a0
jmp 0xd8a3
movq 0x8(%rsp), %rdi
addq $0x18, %rdi
movq $0x125, 0x30(%rsp)      # imm = 0x125
leaq 0x30(%rsp), %rsi
callq 0x126a0
jmp 0xd8c1
movq 0x8(%rsp), %rdi
addq $0x18, %rdi
movq $0x133, 0x28(%rsp)      # imm = 0x133
leaq 0x28(%rsp), %rsi
callq 0x126a0
jmp 0xd8df
movq 0x8(%rsp), %rdi
addq $0x18, %rdi
movq $0x137, 0x20(%rsp)      # imm = 0x137
leaq 0x20(%rsp), %rsi
callq 0x126a0
jmp 0xd8fd
movq 0x8(%rsp), %rcx
movl $0x4, 0x14(%rcx)
movq 0xb8(%rsp), %rax
shlq $0x3, %rax
movq %rax, 0x8(%rcx)
movl 0xb4(%rsp), %eax
movl %eax, 0x10(%rcx)
movslq 0x10(%rcx), %rax
movq 0x8(%rcx), %rcx
imulq %rcx, %rax
shrq $0x6, %rax
leaq 0x8(,%rax,8), %rdi
callq 0x8030
movq %rax, (%rsp)
jmp 0xd946
movq 0x8(%rsp), %rax
movq (%rsp), %rcx
movq %rcx, (%rax)
movl 0x14(%rax), %esi
movq 0x8(%rax), %rdx
movl 0x10(%rax), %ecx
leaq 0x8d83(%rip), %rdi      # 0x166e6
xorl %eax, %eax
callq 0x8040
jmp 0xd96c
movq $0x0, 0x18(%rsp)
movq 0x8(%rsp), %rdx
movq 0x18(%rsp), %rax
movslq 0x10(%rdx), %rcx
imulq 0x8(%rdx), %rcx
shrq $0x6, %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
jae 0xd9da
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rsp), %rcx
movq $0x0, (%rax,%rcx,8)
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0xd975
movq 0x10(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa0(%rsp)
movl %eax, 0x9c(%rsp)
callq 0x126d0
jmp 0xd9e2
addq $0xc8, %rsp
retq
movq 0xa0(%rsp), %rdi
callq 0x8c20
nop