// File: /workspace/github_cpp_makefile_star2_O1/kebwi[P]Trifid/src/SteerablePyramid.cpp
// Function: SteerablePyramid::readFilterSet()
void SteerablePyramid::readFilterSet()
{
	ifstream ifs;
	ifs.open(skFilterSetFilename.c_str());
	
	if (!ifs)
	{
		string errMsg = "Could not find input file '" + skFilterSetFilename + "'.  Please make sure it is in the same directory as the executable.";
		die(errMsg.c_str());
	}
	
	for (int filter = 0; filter < 7; filter++)
	{
		string label;
		int filterDim;
		ifs >> label >> filterDim;
		
		assert(label == "H0" || label == "L0" || label == "L1" || label == "B1" || label == "B2" || label == "B3" || label == "B4");
		assert(filterDim > 0 && filterDim <= 25 && filterDim % 2 == 1);
		
		skFilterDims[filter] = filterDim;
		int numTaps = filterDim * filterDim;
		skFilters[filter] = new Float_t[numTaps];
		skFiltersInv[filter] = new Float_t[numTaps];
		
		for (int i = 0; i < numTaps; i++)
		{
			ifs >> skFilters[filter][i];
			assert(ifs);
		}
	}
	assert(ifs);
	ifs.get();
	assert(!ifs);
	
	ifs.close();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x248, %rsp            # imm = 0x248
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
callq 0x3350
movq 0x1e0a1(%rip), %rsi     # 0x39aa8
movq %rbx, %rdi
movl $0x8, %edx
callq 0x31b0
movq 0x40(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x60(%rsp,%rax)
je 0x1bad0
leaq 0x127b7(%rip), %rsi     # 0x2e1e6
leaq 0x1e072(%rip), %rdx     # 0x39aa8
leaq 0x20(%rsp), %rdi
callq 0x9ffb
leaq 0x127bb(%rip), %rsi     # 0x2e202
leaq 0x20(%rsp), %rdi
callq 0x3540
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1ba77
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x1ba7e
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1bab1
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3310
movq (%rsp), %rdi
callq 0x403c
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x1bad0
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3310
leaq 0x10(%rsp), %r14
xorl %r15d, %r15d
leaq 0x40(%rsp), %rbx
movq %rsp, %r13
leaq 0x1e039(%rip), %r12     # 0x39b20
movq %r14, (%rsp)
movq $0x0, 0x8(%rsp)
movb $0x0, 0x10(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
callq 0x33b0
movq %rax, %rdi
leaq 0x20(%rsp), %rsi
callq 0x31a0
movq %r13, %rdi
leaq 0x1297b(%rip), %rsi     # 0x2e496
callq 0x30c0
testl %eax, %eax
je 0x1bb9a
movq %r13, %rdi
leaq 0x1296c(%rip), %rsi     # 0x2e49a
callq 0x30c0
testl %eax, %eax
je 0x1bb9a
movq %r13, %rdi
leaq 0x1295d(%rip), %rsi     # 0x2e49e
callq 0x30c0
testl %eax, %eax
je 0x1bb9a
movq %r13, %rdi
leaq 0x1294e(%rip), %rsi     # 0x2e4a2
callq 0x30c0
testl %eax, %eax
je 0x1bb9a
movq %r13, %rdi
leaq 0x1293f(%rip), %rsi     # 0x2e4a6
callq 0x30c0
testl %eax, %eax
je 0x1bb9a
movq %r13, %rdi
leaq 0x12930(%rip), %rsi     # 0x2e4aa
callq 0x30c0
testl %eax, %eax
je 0x1bb9a
movq %r13, %rdi
leaq 0x12921(%rip), %rsi     # 0x2e4ae
callq 0x30c0
testl %eax, %eax
jne 0x1bced
movl 0x20(%rsp), %r14d
leal -0x1a(%r14), %eax
cmpl $-0x19, %eax
jb 0x1bcce
movl %r14d, %eax
andl $0x1, %eax
je 0x1bcce
leaq 0x1df41(%rip), %rax     # 0x39b00
movl %r14d, (%rax,%r15,4)
movl %r14d, %r13d
imull %r13d, %r13d
leal (,%r13,8), %ebp
movq %rbp, %rdi
callq 0x3030
movq %rax, (%r12,%r15,8)
movq %rbp, %rdi
callq 0x3030
leaq 0x1df73(%rip), %rcx     # 0x39b60
movq %rax, (%rcx,%r15,8)
testl %r14d, %r14d
je 0x1bc2c
movl %r13d, %r13d
shlq $0x3, %r13
xorl %r14d, %r14d
movq (%r12,%r15,8), %rsi
addq %r14, %rsi
movq %rbx, %rdi
callq 0x31d0
movq 0x40(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x60(%rsp,%rax)
jne 0x1bcaf
addq $0x8, %r14
cmpq %r14, %r13
jne 0x1bc00
movq (%rsp), %rdi
leaq 0x10(%rsp), %r14
cmpq %r14, %rdi
je 0x1bc47
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3310
incq %r15
cmpq $0x7, %r15
movq %rsp, %r13
jne 0x1bae7
movq 0x40(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x60(%rsp,%rax)
jne 0x1bd0c
leaq 0x40(%rsp), %rdi
callq 0x3380
movq 0x40(%rsp), %rax
movq -0x18(%rax), %rax
testb $0x5, 0x60(%rsp,%rax)
je 0x1bd2b
leaq 0x40(%rsp), %rdi
callq 0x3080
leaq 0x40(%rsp), %rdi
callq 0x3090
addq $0x248, %rsp            # imm = 0x248
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x104ce(%rip), %rdi     # 0x2c184
leaq 0x125fd(%rip), %rsi     # 0x2e2ba
leaq 0x1260b(%rip), %rcx     # 0x2e2cf
movl $0x104, %edx            # imm = 0x104
callq 0x31c0
leaq 0x12628(%rip), %rdi     # 0x2e2fd
leaq 0x125de(%rip), %rsi     # 0x2e2ba
leaq 0x125ec(%rip), %rcx     # 0x2e2cf
movl $0xfa, %edx
callq 0x31c0
leaq 0x12552(%rip), %rdi     # 0x2e246
leaq 0x125bf(%rip), %rsi     # 0x2e2ba
leaq 0x125cd(%rip), %rcx     # 0x2e2cf
movl $0xf9, %edx
callq 0x31c0
leaq 0x10471(%rip), %rdi     # 0x2c184
leaq 0x125a0(%rip), %rsi     # 0x2e2ba
leaq 0x125ae(%rip), %rcx     # 0x2e2cf
movl $0x107, %edx            # imm = 0x107
callq 0x31c0
leaq 0x10451(%rip), %rdi     # 0x2c183
leaq 0x12581(%rip), %rsi     # 0x2e2ba
leaq 0x1258f(%rip), %rcx     # 0x2e2cf
movl $0x109, %edx            # imm = 0x109
callq 0x31c0
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r14, %rdi
jne 0x1bd8c
jmp 0x1bd99
movq %rax, %rbx
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1bd99
movq 0x30(%rsp), %rsi
jmp 0x1bd91
jmp 0x1bd72
movq %rax, %rbx
jmp 0x1bd99
jmp 0x1bd7b
jmp 0x1bd7b
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1bd99
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3310
leaq 0x40(%rsp), %rdi
callq 0x3090
movq %rbx, %rdi
callq 0x3500
nop