// File: rishabh-battulwar[P]imageprocessing/./include/ImageProc.h
// Function: ImageProc::denoising(char const*, char const*, int, int, int, int, float)
void ImageProc::denoising(const char *infile, const char *outfile, int width, int height, int window_size, int sigma, float threshold)
{
	Image img_orig("color", width, height);
	Image img_result("color", width, height);
	Image img_Lena("color", width, height);

	img_orig.read_image(infile, img_orig.cols, img_orig.rows);
	img_Lena.read_image("Lena.raw", img_Lena.cols, img_Lena.rows);

	//Separate channels
	Image img_red("bw", img_orig.cols, img_orig.rows);
	Image img_blue("bw", img_orig.cols, img_orig.rows);
	Image img_green("bw", img_orig.cols, img_orig.rows);
	Image img_redOut("bw", img_orig.cols, img_orig.rows);
	Image img_greenOut("bw", img_orig.cols, img_orig.rows);
	Image img_blueOut("bw", img_orig.cols, img_orig.rows);

	Image img_LenaR("bw", img_Lena.cols, img_Lena.rows);
	Image img_LenaB("bw", img_Lena.cols, img_Lena.rows);
	Image img_LenaG("bw", img_Lena.cols, img_Lena.rows);

	for(int i = 0; i < img_orig.rows; i++)
		for(int j = 0; j < img_orig.cols; j++)
		{
			img_red.setvalue(i,j,0,img_orig.getvalue(i,j,0));
			img_green.setvalue(i,j,0,img_orig.getvalue(i,j,1));
			img_blue.setvalue(i,j,0,img_orig.getvalue(i,j,2));
		}

	for(int i = 0; i < img_orig.rows; i++)
		for(int j = 0; j < img_orig.cols; j++)
		{
			img_LenaR.setvalue(i,j,0,img_Lena.getvalue(i,j,0));
			img_LenaG.setvalue(i,j,0,img_Lena.getvalue(i,j,1));
			img_LenaB.setvalue(i,j,0,img_Lena.getvalue(i,j,2));
		}

	median_filter(img_red, img_redOut, window_size);
	median_filter(img_green, img_greenOut, window_size);
	median_filter(img_blue, img_blueOut, window_size);

	for(int i = 0; i < img_orig.rows; i++)
		for(int j = 0; j < img_orig.cols; j++)
		{
			img_red.setvalue(i,j,0,img_redOut.getvalue(i,j,0));
			//img_green.setvalue(i,j,0,img_greenOut.getvalue(i,j,0));
			img_blue.setvalue(i,j,0,img_blueOut.getvalue(i,j,0));
		}

	gaussian_filter(img_red, img_redOut, window_size, sigma);
	//gaussian_filter(img_green, img_greenOut, window_size, sigma);
	gaussian_filter(img_blue, img_blueOut, window_size, sigma);

	float PSNR_red   = get_PSNR(img_red, img_redOut);
	float PSNR_green = get_PSNR(img_green, img_greenOut);
	float PSNR_blue  = get_PSNR(img_blue, img_blueOut);

	float PSNR_LenaR   = get_PSNR(img_LenaR, img_redOut);
	float PSNR_LenaG   = get_PSNR(img_LenaG, img_greenOut);
	float PSNR_LenaB   = get_PSNR(img_LenaB, img_blueOut);

	std::cout << "PSNR_red : " << PSNR_red << "\nPSNR_green : " << PSNR_green\
			<< "\nPSNR_blue : " << PSNR_blue << "\nPSNR_LenaR : " << PSNR_LenaR << "\nPSNR_LenaG: " << PSNR_LenaG\
			<< "\nPSNR_LenaB : " << PSNR_LenaB << std::endl;
	// hist_equal_proc(img_red, img_red_O);
	// hist_equal_proc(img_blue, img_blue_O);
	// hist_equal_proc(img_green, img_green_O);

	for(int i = 0; i < img_orig.rows; i++)
		for(int j = 0; j < img_orig.cols; j++)
		{
			img_result.setvalue(i,j,0,img_redOut.getvalue(i,j,0));
			img_result.setvalue(i,j,1,img_greenOut.getvalue(i,j,0));
			img_result.setvalue(i,j,2,img_blueOut.getvalue(i,j,0));
		}

	img_result.write_image(outfile, img_result.cols, img_result.rows);

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2d0, %rsp            # imm = 0x2D0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl %ecx, -0x18(%rbp)
movl %r8d, -0x1c(%rbp)
movl %r9d, -0x20(%rbp)
movss %xmm0, -0x24(%rbp)
movl -0x14(%rbp), %edx
movl -0x18(%rbp), %ecx
leaq 0xf3e5(%rip), %rsi      # 0x1c5e8
movq %rsi, -0x1f8(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x7eb0
movq -0x1f8(%rbp), %rsi
movl -0x14(%rbp), %edx
movl -0x18(%rbp), %ecx
leaq -0x68(%rbp), %rdi
callq 0x7eb0
jmp 0xd22b
movl -0x14(%rbp), %edx
movl -0x18(%rbp), %ecx
leaq 0xf3b0(%rip), %rsi      # 0x1c5e8
leaq -0x98(%rbp), %rdi
callq 0x7eb0
jmp 0xd246
movq -0x8(%rbp), %rsi
movl -0x40(%rbp), %edx
movl -0x3c(%rbp), %ecx
leaq -0x48(%rbp), %rdi
callq 0x7f70
jmp 0xd25b
movl -0x90(%rbp), %edx
movl -0x8c(%rbp), %ecx
leaq 0xf839(%rip), %rsi      # 0x1caa7
leaq -0x98(%rbp), %rdi
callq 0x7f70
jmp 0xd27c
movl -0x40(%rbp), %edx
movl -0x3c(%rbp), %ecx
leaq 0x1034b(%rip), %rsi     # 0x1d5d4
leaq -0xb8(%rbp), %rdi
callq 0x7eb0
jmp 0xd297
movl -0x40(%rbp), %edx
movl -0x3c(%rbp), %ecx
leaq 0x10330(%rip), %rsi     # 0x1d5d4
leaq -0xd8(%rbp), %rdi
callq 0x7eb0
jmp 0xd2b2
movl -0x40(%rbp), %edx
movl -0x3c(%rbp), %ecx
leaq 0x10315(%rip), %rsi     # 0x1d5d4
leaq -0xf8(%rbp), %rdi
callq 0x7eb0
jmp 0xd2cd
movl -0x40(%rbp), %edx
movl -0x3c(%rbp), %ecx
leaq 0x102fa(%rip), %rsi     # 0x1d5d4
leaq -0x118(%rbp), %rdi
callq 0x7eb0
jmp 0xd2e8
movl -0x40(%rbp), %edx
movl -0x3c(%rbp), %ecx
leaq 0x102df(%rip), %rsi     # 0x1d5d4
leaq -0x138(%rbp), %rdi
callq 0x7eb0
jmp 0xd303
movl -0x40(%rbp), %edx
movl -0x3c(%rbp), %ecx
leaq 0x102c4(%rip), %rsi     # 0x1d5d4
leaq -0x158(%rbp), %rdi
callq 0x7eb0
jmp 0xd31e
movl -0x90(%rbp), %edx
movl -0x8c(%rbp), %ecx
leaq 0x102a3(%rip), %rsi     # 0x1d5d4
leaq -0x178(%rbp), %rdi
callq 0x7eb0
jmp 0xd33f
movl -0x90(%rbp), %edx
movl -0x8c(%rbp), %ecx
leaq 0x10282(%rip), %rsi     # 0x1d5d4
leaq -0x198(%rbp), %rdi
callq 0x7eb0
jmp 0xd360
movl -0x90(%rbp), %edx
movl -0x8c(%rbp), %ecx
leaq 0x10261(%rip), %rsi     # 0x1d5d4
leaq -0x1b8(%rbp), %rdi
callq 0x7eb0
jmp 0xd381
movl $0x0, -0x1bc(%rbp)
movl -0x1bc(%rbp), %eax
cmpl -0x3c(%rbp), %eax
jge 0xd582
movl $0x0, -0x1c0(%rbp)
movl -0x1c0(%rbp), %eax
cmpl -0x40(%rbp), %eax
jge 0xd56c
movl -0x1bc(%rbp), %eax
movl %eax, -0x210(%rbp)
movl -0x1c0(%rbp), %eax
movl %eax, -0x20c(%rbp)
movl -0x1bc(%rbp), %esi
movl -0x1c0(%rbp), %edx
leaq -0x48(%rbp), %rdi
xorl %ecx, %ecx
callq 0x83b0
movl -0x210(%rbp), %esi
movl -0x20c(%rbp), %edx
movl %eax, %r8d
leaq -0xb8(%rbp), %rdi
xorl %ecx, %ecx
callq 0x83f0
movl -0x1bc(%rbp), %eax
movl %eax, -0x208(%rbp)
movl -0x1c0(%rbp), %eax
movl %eax, -0x204(%rbp)
movl -0x1bc(%rbp), %esi
movl -0x1c0(%rbp), %edx
leaq -0x48(%rbp), %rdi
movl $0x1, %ecx
callq 0x83b0
movl -0x208(%rbp), %esi
movl -0x204(%rbp), %edx
movl %eax, %r8d
leaq -0xf8(%rbp), %rdi
xorl %ecx, %ecx
callq 0x83f0
movl -0x1bc(%rbp), %eax
movl %eax, -0x200(%rbp)
movl -0x1c0(%rbp), %eax
movl %eax, -0x1fc(%rbp)
movl -0x1bc(%rbp), %esi
movl -0x1c0(%rbp), %edx
leaq -0x48(%rbp), %rdi
movl $0x2, %ecx
callq 0x83b0
movl -0x200(%rbp), %esi
movl -0x1fc(%rbp), %edx
movl %eax, %r8d
leaq -0xd8(%rbp), %rdi
xorl %ecx, %ecx
callq 0x83f0
movl -0x1c0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c0(%rbp)
jmp 0xd3a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xdd46
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xdd3d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xdd31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xdd25
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xdd19
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xdd0d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xdd01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xdcf5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xdce9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xdcdd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0xdcd1
jmp 0xd56e
movl -0x1bc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1bc(%rbp)
jmp 0xd38b
movl $0x0, -0x1c4(%rbp)
movl -0x1c4(%rbp), %eax
cmpl -0x3c(%rbp), %eax
jge 0xd6d1
movl $0x0, -0x1c8(%rbp)
movl -0x1c8(%rbp), %eax
cmpl -0x40(%rbp), %eax
jge 0xd6bb
movl -0x1c4(%rbp), %eax
movl %eax, -0x228(%rbp)
movl -0x1c8(%rbp), %eax
movl %eax, -0x224(%rbp)
movl -0x1c4(%rbp), %esi
movl -0x1c8(%rbp), %edx
leaq -0x98(%rbp), %rdi
xorl %ecx, %ecx
callq 0x83b0
movl -0x228(%rbp), %esi
movl -0x224(%rbp), %edx
movl %eax, %r8d
leaq -0x178(%rbp), %rdi
xorl %ecx, %ecx
callq 0x83f0
movl -0x1c4(%rbp), %eax
movl %eax, -0x220(%rbp)
movl -0x1c8(%rbp), %eax
movl %eax, -0x21c(%rbp)
movl -0x1c4(%rbp), %esi
movl -0x1c8(%rbp), %edx
leaq -0x98(%rbp), %rdi
movl $0x1, %ecx
callq 0x83b0
movl -0x220(%rbp), %esi
movl -0x21c(%rbp), %edx
movl %eax, %r8d
leaq -0x1b8(%rbp), %rdi
xorl %ecx, %ecx
callq 0x83f0
movl -0x1c4(%rbp), %eax
movl %eax, -0x218(%rbp)
movl -0x1c8(%rbp), %eax
movl %eax, -0x214(%rbp)
movl -0x1c4(%rbp), %esi
movl -0x1c8(%rbp), %edx
leaq -0x98(%rbp), %rdi
movl $0x2, %ecx
callq 0x83b0
movl -0x218(%rbp), %esi
movl -0x214(%rbp), %edx
movl %eax, %r8d
leaq -0x198(%rbp), %rdi
xorl %ecx, %ecx
callq 0x83f0
movl -0x1c8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c8(%rbp)
jmp 0xd5a5
jmp 0xd6bd
movl -0x1c4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c4(%rbp)
jmp 0xd58c
movl -0x1c(%rbp), %edx
leaq -0xb8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0xdd60
jmp 0xd6e9
movl -0x1c(%rbp), %edx
leaq -0xf8(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xdd60
jmp 0xd701
movl -0x1c(%rbp), %edx
leaq -0xd8(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xdd60
jmp 0xd719
movl $0x0, -0x1cc(%rbp)
movl -0x1cc(%rbp), %eax
cmpl -0x3c(%rbp), %eax
jge 0xd830
movl $0x0, -0x1d0(%rbp)
movl -0x1d0(%rbp), %eax
cmpl -0x40(%rbp), %eax
jge 0xd81a
movl -0x1cc(%rbp), %eax
movl %eax, -0x238(%rbp)
movl -0x1d0(%rbp), %eax
movl %eax, -0x234(%rbp)
movl -0x1cc(%rbp), %esi
movl -0x1d0(%rbp), %edx
leaq -0x118(%rbp), %rdi
xorl %ecx, %ecx
callq 0x83b0
movl -0x238(%rbp), %esi
movl -0x234(%rbp), %edx
movl %eax, %r8d
leaq -0xb8(%rbp), %rdi
xorl %ecx, %ecx
callq 0x83f0
movl -0x1cc(%rbp), %eax
movl %eax, -0x230(%rbp)
movl -0x1d0(%rbp), %eax
movl %eax, -0x22c(%rbp)
movl -0x1cc(%rbp), %esi
movl -0x1d0(%rbp), %edx
leaq -0x158(%rbp), %rdi
xorl %ecx, %ecx
callq 0x83b0
movl -0x230(%rbp), %esi
movl -0x22c(%rbp), %edx
movl %eax, %r8d
leaq -0xd8(%rbp), %rdi
xorl %ecx, %ecx
callq 0x83f0
movl -0x1d0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1d0(%rbp)
jmp 0xd73c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x1b2c0
jmp 0xdcd1
jmp 0xd81c
movl -0x1cc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1cc(%rbp)
jmp 0xd723
movl -0x1c(%rbp), %edx
cvtsi2ssl -0x20(%rbp), %xmm0
leaq -0xb8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0xdf80
jmp 0xd84d
movl -0x1c(%rbp), %edx
cvtsi2ssl -0x20(%rbp), %xmm0
leaq -0xd8(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xdf80
jmp 0xd86a
leaq -0xb8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0xe560
movss %xmm0, -0x23c(%rbp)
jmp 0xd887
movss -0x23c(%rbp), %xmm0
movss %xmm0, -0x1d4(%rbp)
leaq -0xf8(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xe560
movss %xmm0, -0x240(%rbp)
jmp 0xd8b4
movss -0x240(%rbp), %xmm0
movss %xmm0, -0x1d8(%rbp)
leaq -0xd8(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xe560
movss %xmm0, -0x244(%rbp)
jmp 0xd8e1
movss -0x244(%rbp), %xmm0
movss %xmm0, -0x1dc(%rbp)
leaq -0x178(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0xe560
movss %xmm0, -0x248(%rbp)
jmp 0xd90e
movss -0x248(%rbp), %xmm0
movss %xmm0, -0x1e0(%rbp)
leaq -0x1b8(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xe560
movss %xmm0, -0x24c(%rbp)
jmp 0xd93b
movss -0x24c(%rbp), %xmm0
movss %xmm0, -0x1e4(%rbp)
leaq -0x198(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xe560
movss %xmm0, -0x250(%rbp)
jmp 0xd968
movss -0x250(%rbp), %xmm0
movss %xmm0, -0x1e8(%rbp)
movq 0x13649(%rip), %rdi     # 0x20fc8
leaq 0xf12a(%rip), %rsi      # 0x1cab0
callq 0x21c0
movq %rax, -0x258(%rbp)
jmp 0xd994
movq -0x258(%rbp), %rdi
movss -0x1d4(%rbp), %xmm0
callq 0x2140
movq %rax, -0x260(%rbp)
jmp 0xd9b1
movq -0x260(%rbp), %rdi
leaq 0xf0fd(%rip), %rsi      # 0x1cabc
callq 0x21c0
movq %rax, -0x268(%rbp)
jmp 0xd9cd
movq -0x268(%rbp), %rdi
movss -0x1d8(%rbp), %xmm0
callq 0x2140
movq %rax, -0x270(%rbp)
jmp 0xd9ea
movq -0x270(%rbp), %rdi
leaq 0xf0d3(%rip), %rsi      # 0x1cacb
callq 0x21c0
movq %rax, -0x278(%rbp)
jmp 0xda06
movq -0x278(%rbp), %rdi
movss -0x1dc(%rbp), %xmm0
callq 0x2140
movq %rax, -0x280(%rbp)
jmp 0xda23
movq -0x280(%rbp), %rdi
leaq 0xf0a8(%rip), %rsi      # 0x1cad9
callq 0x21c0
movq %rax, -0x288(%rbp)
jmp 0xda3f
movq -0x288(%rbp), %rdi
movss -0x1e0(%rbp), %xmm0
callq 0x2140
movq %rax, -0x290(%rbp)
jmp 0xda5c
movq -0x290(%rbp), %rdi
leaq 0xf07e(%rip), %rsi      # 0x1cae8
callq 0x21c0
movq %rax, -0x298(%rbp)
jmp 0xda78
movq -0x298(%rbp), %rdi
movss -0x1e4(%rbp), %xmm0
callq 0x2140
movq %rax, -0x2a0(%rbp)
jmp 0xda95
movq -0x2a0(%rbp), %rdi
leaq 0xf053(%rip), %rsi      # 0x1caf6
callq 0x21c0
movq %rax, -0x2a8(%rbp)
jmp 0xdab1
movq -0x2a8(%rbp), %rdi
movss -0x1e8(%rbp), %xmm0
callq 0x2140
movq %rax, -0x2b0(%rbp)
jmp 0xdace
movq -0x2b0(%rbp), %rdi
movq 0x134dc(%rip), %rsi     # 0x20fb8
callq 0x21e0
jmp 0xdae3
movl $0x0, -0x1ec(%rbp)
movl -0x1ec(%rbp), %eax
cmpl -0x3c(%rbp), %eax
jge 0xdc29
movl $0x0, -0x1f0(%rbp)
movl -0x1f0(%rbp), %eax
cmpl -0x40(%rbp), %eax
jge 0xdc13
movl -0x1ec(%rbp), %eax
movl %eax, -0x2c8(%rbp)
movl -0x1f0(%rbp), %eax
movl %eax, -0x2c4(%rbp)
movl -0x1ec(%rbp), %esi
movl -0x1f0(%rbp), %edx
leaq -0x118(%rbp), %rdi
xorl %ecx, %ecx
callq 0x83b0
movl -0x2c8(%rbp), %esi
movl -0x2c4(%rbp), %edx
movl %eax, %r8d
leaq -0x68(%rbp), %rdi
xorl %ecx, %ecx
callq 0x83f0
movl -0x1ec(%rbp), %eax
movl %eax, -0x2c0(%rbp)
movl -0x1f0(%rbp), %eax
movl %eax, -0x2bc(%rbp)
movl -0x1ec(%rbp), %esi
movl -0x1f0(%rbp), %edx
leaq -0x138(%rbp), %rdi
xorl %ecx, %ecx
callq 0x83b0
movl -0x2c0(%rbp), %esi
movl -0x2bc(%rbp), %edx
movl %eax, %r8d
leaq -0x68(%rbp), %rdi
movl $0x1, %ecx
callq 0x83f0
movl -0x1ec(%rbp), %eax
movl %eax, -0x2b8(%rbp)
movl -0x1f0(%rbp), %eax
movl %eax, -0x2b4(%rbp)
movl -0x1ec(%rbp), %esi
movl -0x1f0(%rbp), %edx
leaq -0x158(%rbp), %rdi
xorl %ecx, %ecx
callq 0x83b0
movl -0x2b8(%rbp), %esi
movl -0x2b4(%rbp), %edx
movl %eax, %r8d
leaq -0x68(%rbp), %rdi
movl $0x2, %ecx
callq 0x83f0
movl -0x1f0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1f0(%rbp)
jmp 0xdb06
jmp 0xdc15
movl -0x1ec(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1ec(%rbp)
jmp 0xdaed
movq -0x10(%rbp), %rsi
movl -0x60(%rbp), %edx
movl -0x5c(%rbp), %ecx
leaq -0x68(%rbp), %rdi
callq 0x8150
jmp 0xdc3e
leaq -0x1b8(%rbp), %rdi
callq 0x1b2c0
leaq -0x198(%rbp), %rdi
callq 0x1b2c0
leaq -0x178(%rbp), %rdi
callq 0x1b2c0
leaq -0x158(%rbp), %rdi
callq 0x1b2c0
leaq -0x138(%rbp), %rdi
callq 0x1b2c0
leaq -0x118(%rbp), %rdi
callq 0x1b2c0
leaq -0xf8(%rbp), %rdi
callq 0x1b2c0
leaq -0xd8(%rbp), %rdi
callq 0x1b2c0
leaq -0xb8(%rbp), %rdi
callq 0x1b2c0
leaq -0x98(%rbp), %rdi
callq 0x1b2c0
leaq -0x68(%rbp), %rdi
callq 0x1b2c0
leaq -0x48(%rbp), %rdi
callq 0x1b2c0
addq $0x2d0, %rsp            # imm = 0x2D0
popq %rbp
retq
leaq -0x198(%rbp), %rdi
callq 0x1b2c0
leaq -0x178(%rbp), %rdi
callq 0x1b2c0
leaq -0x158(%rbp), %rdi
callq 0x1b2c0
leaq -0x138(%rbp), %rdi
callq 0x1b2c0
leaq -0x118(%rbp), %rdi
callq 0x1b2c0
leaq -0xf8(%rbp), %rdi
callq 0x1b2c0
leaq -0xd8(%rbp), %rdi
callq 0x1b2c0
leaq -0xb8(%rbp), %rdi
callq 0x1b2c0
leaq -0x98(%rbp), %rdi
callq 0x1b2c0
leaq -0x68(%rbp), %rdi
callq 0x1b2c0
leaq -0x48(%rbp), %rdi
callq 0x1b2c0
movq -0x70(%rbp), %rdi
callq 0x2360
nopl (%rax,%rax)