// File: rishabh-battulwar[P]imageprocessing/./include/ImageProc.h
// Function: ImageProc::thin(Image&, Image&)
void ImageProc::thin(Image &img_binary, Image &img_thinned)
{
	Image img_after_first("bw", img_binary.rows, img_binary.cols);

		int index  = 0, superflag = 1, flag = 0, black_pixel_count = 0, pixel_count = 0;
		std::string target;
		//char *target_char_arr = new char[9];

		for(int i = 0; i < img_binary.rows; i++)
			for(int j = 0; j < img_binary.cols; j++)
				for(int k = 0; k < img_binary.channels; k++)
					img_thinned.setvalue(i,j,k,img_binary.getvalue(i,j,k));

		for(int i = 0+1; i < img_thinned.rows-1; i++)
			for(int j = 0+1; j < img_thinned.cols-1; j++)
				for(int k = 0; k < img_thinned.channels; k++)
					if(img_thinned.getvalue(i,j,k) == 0) pixel_count++;
		black_pixel_count = pixel_count;

		

		while(superflag == 1)
		{
			for(int i = 0; i < img_thinned.rows; i++)
				for(int j = 0; j < img_thinned.cols; j++)
					for(int k = 0; k < img_thinned.channels; k++)
						img_after_first.setvalue(i,j,k,255);

			for(int i = 0+1; i < img_thinned.rows-1; i++)
				for(int j = 0+1; j < img_thinned.cols-1; j++)
					for(int k = 0; k < img_thinned.channels; k++)
					{
						if(img_thinned.getvalue(i,j,k) == 0)
						{
							index = -1; flag = 0;
							target.clear();
							for(int p = i-1; p <= i+1; p++)
								for(int q = j-1; q <= j+1; q++)
								{
									//std::cout << img_shrinked.getvalue(p,q,k)/255 << std::endl;
									if(!(p==i && q==j))
										if(img_thinned.getvalue(p,q,0) == 0)
											target.append("1");
										else
											target.append("0");
									else
										continue;
								}
							//target_char_arr[8] = NULL;
							//target(target_char_arr);
							//std::cout << "target 1:" << target << std::endl;

							//std::string target_str(target);
							for(int t = 0; t < THIN_FIRST_PATTERNS; t++)
							{
								std::string testpattern(thin_first[t]);
								flag = 0;
								if(testpattern.find('D') == std::string::npos)
								{
									if(target.compare(testpattern) == 0)
									{
										//std::cout << "pattern match" << std::endl;
										flag = 1;
									}
									else
									{
										//std::cout << "pattern nomatch" << std::endl;
										flag = 0;
									}
								}
								else
								{
									for(int j = 0; j < 8; j++)
									{
										if(testpattern[j] == 'D')
											continue;
										else if(target[j] != testpattern[j])
										{
											//std::cout << target << " hey " << testpattern << std::endl;
											flag = 0;
											break;
										}
										else
											flag = 1;
									}
								}

								if(flag == 1)
									break;
								else
									continue;

							}

							if(flag == 1)
								img_after_first.setvalue(i,j,k,0*255);
							else
								img_after_first.setvalue(i,j,k,1*255);

						}
					}

				for(int i = 0+1; i < img_after_first.rows-1; i++)
					for(int j = 0+1; j < img_after_first.cols-1; j++)
						for(int k = 0; k < img_after_first.channels; k++)
						{
							if(img_after_first.getvalue(i,j,k) == 0)
							{
								target.clear();
								index = -1; flag = 0;
								for(int p = i-1; p <= i+1; p++)
									for(int q = j-1; q <= j+1; q++)
									{
										if(!(p==i && q==j))
											if(img_after_first.getvalue(p,q,0) == 0)
												target.append("M");
											else
												target.append("0");
									}

								//std::cout << "target1: " << target;

								for(int t = 0; t < SHRINK_THIN_SECOND_PATTERNS; t++)
								{
									std::string testpattern(shrink__thin_second[t]);
									flag = 1;
									//std::cout << " " << testpattern << std::endl;
									if(testpattern.find('D') == std::string::npos)
									{

										if(target.compare(testpattern) == 0)
										{
											//std::cout << "hi" << std::endl;
											flag = 1;
											break;
										}
										else
											flag = 0;
									}
									else
									{
										for(int j = 0; j < 8; j++)
										{
											if(testpattern[j] == 'D')
												continue;
											else if(target[j] == testpattern[j])
											{
												flag = 1;
												//std::cout << "match" << std::endl;
											}
											else
											{
												//std::cout << "breakpoint" << std::endl;
												flag = 0;
												break;
											}
										}
									}

									if(flag == 0)
										continue;
									else
										break;
								}
								//std::cout << flag << std::endl;
								if(flag == 0)
								{
									//std::cout << "reducing" << std::endl;
									img_thinned.setvalue(i,j,k,1*255);
								}
								else
									img_thinned.setvalue(i,j,k,img_thinned.getvalue(i,j,k));
							}


						}

			pixel_count = 0;
			for(int i = 0+1; i < img_thinned.rows-1; i++)
				for(int j = 0+1; j < img_thinned.cols-1; j++)
					for(int k = 0; k < img_thinned.channels; k++)
						if(img_thinned.getvalue(i,j,k) == 0) pixel_count++;

			if(pixel_count == black_pixel_count) superflag = 0;
			else								 black_pixel_count = pixel_count;
			//std::cout << black_pixel_count << std::endl;


		}

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x190, %rsp            # imm = 0x190
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movl 0xc(%rax), %edx
movq -0x8(%rbp), %rax
movl 0x8(%rax), %ecx
leaq -0x30(%rbp), %rdi
leaq 0x4f08(%rip), %rsi      # 0x1d5d4
callq 0x7eb0
movl $0x0, -0x34(%rbp)
movl $0x1, -0x38(%rbp)
movl $0x0, -0x3c(%rbp)
movl $0x0, -0x40(%rbp)
movl $0x0, -0x44(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x2290
movl $0x0, -0x6c(%rbp)
movl -0x6c(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0xc(%rcx), %eax
jge 0x187c2
movl $0x0, -0x70(%rbp)
movl -0x70(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jge 0x187b2
movl $0x0, -0x74(%rbp)
movl -0x74(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x187a2
movq -0x10(%rbp), %rax
movq %rax, -0x138(%rbp)
movl -0x6c(%rbp), %eax
movl %eax, -0x12c(%rbp)
movl -0x70(%rbp), %eax
movl %eax, -0x128(%rbp)
movl -0x74(%rbp), %eax
movl %eax, -0x124(%rbp)
movq -0x8(%rbp), %rdi
movl -0x6c(%rbp), %esi
movl -0x70(%rbp), %edx
movl -0x74(%rbp), %ecx
callq 0x83b0
movq -0x138(%rbp), %rdi
movl -0x12c(%rbp), %esi
movl -0x128(%rbp), %edx
movl -0x124(%rbp), %ecx
movl %eax, %r8d
callq 0x83f0
movl -0x74(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x74(%rbp)
jmp 0x18732
jmp 0x187a4
movl -0x70(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x70(%rbp)
jmp 0x1871b
jmp 0x187b4
movl -0x6c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6c(%rbp)
jmp 0x18704
movl $0x1, -0x78(%rbp)
movl -0x78(%rbp), %eax
movq -0x10(%rbp), %rcx
movl 0xc(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x1884f
movl $0x1, -0x7c(%rbp)
movl -0x7c(%rbp), %eax
movq -0x10(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x1883f
movl $0x0, -0x80(%rbp)
movl -0x80(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x18832
movq -0x10(%rbp), %rdi
movl -0x78(%rbp), %esi
movl -0x7c(%rbp), %edx
movl -0x80(%rbp), %ecx
callq 0x83b0
cmpl $0x0, %eax
jne 0x18825
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x18827
movl -0x80(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x80(%rbp)
jmp 0x187f9
jmp 0x18834
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0x187e1
jmp 0x18841
movl -0x78(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x78(%rbp)
jmp 0x187c9
movl -0x44(%rbp), %eax
movl %eax, -0x40(%rbp)
cmpl $0x1, -0x38(%rbp)
jne 0x191df
movl $0x0, -0x84(%rbp)
movl -0x84(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0xc(%rcx), %eax
jge 0x18909
movl $0x0, -0x88(%rbp)
movl -0x88(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jge 0x188f3
movl $0x0, -0x8c(%rbp)
movl -0x8c(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x188e0
movl -0x84(%rbp), %esi
movl -0x88(%rbp), %edx
movl -0x8c(%rbp), %ecx
leaq -0x30(%rbp), %rdi
movl $0xff, %r8d
callq 0x83f0
movl -0x8c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8c(%rbp)
jmp 0x1889f
jmp 0x188e2
movl -0x88(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x88(%rbp)
jmp 0x18886
jmp 0x188f5
movl -0x84(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x84(%rbp)
jmp 0x18869
movl $0x1, -0x90(%rbp)
movl -0x90(%rbp), %eax
movq -0x10(%rbp), %rcx
movl 0xc(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x18cea
movl $0x1, -0x94(%rbp)
movl -0x94(%rbp), %eax
movq -0x10(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x18cd4
movl $0x0, -0x98(%rbp)
movl -0x98(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x18cbe
movq -0x10(%rbp), %rdi
movl -0x90(%rbp), %esi
movl -0x94(%rbp), %edx
movl -0x98(%rbp), %ecx
callq 0x83b0
cmpl $0x0, %eax
jne 0x18ca8
movl $0xffffffff, -0x34(%rbp) # imm = 0xFFFFFFFF
movl $0x0, -0x3c(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x2280
movl -0x90(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x9c(%rbp)
movl -0x9c(%rbp), %eax
movl -0x90(%rbp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jg 0x18a98
movl -0x94(%rbp), %eax
subl $0x1, %eax
movl %eax, -0xa0(%rbp)
movl -0xa0(%rbp), %eax
movl -0x94(%rbp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jg 0x18a82
movl -0x9c(%rbp), %eax
cmpl -0x90(%rbp), %eax
jne 0x18a0d
movl -0xa0(%rbp), %eax
cmpl -0x94(%rbp), %eax
je 0x18a6a
movq -0x10(%rbp), %rdi
movl -0x9c(%rbp), %esi
movl -0xa0(%rbp), %edx
xorl %ecx, %ecx
callq 0x83b0
cmpl $0x0, %eax
jne 0x18a54
leaq 0x3e00(%rip), %rsi      # 0x1c830
leaq -0x68(%rbp), %rdi
callq 0x23c0
jmp 0x18a3b
jmp 0x18a68
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x191fa
leaq 0x3dc3(%rip), %rsi      # 0x1c81e
leaq -0x68(%rbp), %rdi
callq 0x23c0
jmp 0x18a66
jmp 0x18a68
jmp 0x18a6c
jmp 0x18a6e
jmp 0x18a6e
movl -0xa0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xa0(%rbp)
jmp 0x189da
jmp 0x18a84
movl -0x9c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x9c(%rbp)
jmp 0x189b4
movl $0x0, -0xb0(%rbp)
cmpl $0x2e, -0xb0(%rbp)
jge 0x18c5f
movslq -0xb0(%rbp), %rax
shlq $0x5, %rax
leaq 0x8f3f(%rip), %rsi      # 0x21a00
addq %rax, %rsi
leaq -0xd0(%rbp), %rdi
callq 0x20d0
jmp 0x18ad2
movl $0x0, -0x3c(%rbp)
leaq -0xd0(%rbp), %rdi
movl $0x44, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x2270
cmpq $-0x1, %rax
jne 0x18b4f
leaq -0x68(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x2040
movl %eax, -0x13c(%rbp)
jmp 0x18b0c
movl -0x13c(%rbp), %eax
cmpl $0x0, %eax
jne 0x18b43
movl $0x1, -0x3c(%rbp)
jmp 0x18b4a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x2110
jmp 0x191fa
movl $0x0, -0x3c(%rbp)
jmp 0x18c16
movl $0x0, -0xd4(%rbp)
cmpl $0x8, -0xd4(%rbp)
jge 0x18c14
movslq -0xd4(%rbp), %rsi
leaq -0xd0(%rbp), %rdi
callq 0x23f0
movq %rax, -0x148(%rbp)
jmp 0x18b82
movq -0x148(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x44, %eax
jne 0x18b93
jmp 0x18c00
movslq -0xd4(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x23f0
movq %rax, -0x150(%rbp)
jmp 0x18bac
movq -0x150(%rbp), %rax
movsbl (%rax), %eax
movl %eax, -0x15c(%rbp)
movslq -0xd4(%rbp), %rsi
leaq -0xd0(%rbp), %rdi
callq 0x23f0
movq %rax, -0x158(%rbp)
jmp 0x18bd8
movl -0x15c(%rbp), %eax
movq -0x158(%rbp), %rcx
movsbl (%rcx), %ecx
cmpl %ecx, %eax
je 0x18bf5
movl $0x0, -0x3c(%rbp)
jmp 0x18c14
movl $0x1, -0x3c(%rbp)
jmp 0x18bfe
jmp 0x18c00
movl -0xd4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xd4(%rbp)
jmp 0x18b59
jmp 0x18c16
cmpl $0x1, -0x3c(%rbp)
jne 0x18c28
movl $0x2e, -0xd8(%rbp)
jmp 0x18c32
movl $0x30, -0xd8(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x2110
movl -0xd8(%rbp), %eax
subl $0x2e, %eax
je 0x18c5f
jmp 0x18c4b
movl -0xb0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb0(%rbp)
jmp 0x18aa2
cmpl $0x1, -0x3c(%rbp)
jne 0x18c85
movl -0x90(%rbp), %esi
movl -0x94(%rbp), %edx
movl -0x98(%rbp), %ecx
leaq -0x30(%rbp), %rdi
xorl %r8d, %r8d
callq 0x83f0
jmp 0x18ca6
movl -0x90(%rbp), %esi
movl -0x94(%rbp), %edx
movl -0x98(%rbp), %ecx
leaq -0x30(%rbp), %rdi
movl $0xff, %r8d
callq 0x83f0
jmp 0x18ca8
jmp 0x18caa
movl -0x98(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x98(%rbp)
jmp 0x18957
jmp 0x18cc0
movl -0x94(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x94(%rbp)
jmp 0x18935
jmp 0x18cd6
movl -0x90(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x90(%rbp)
jmp 0x18913
movl $0x1, -0xdc(%rbp)
movl -0xdc(%rbp), %eax
movl -0x24(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x190fe
movl $0x1, -0xe0(%rbp)
movl -0xe0(%rbp), %eax
movl -0x28(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x190e8
movl $0x0, -0xe4(%rbp)
movl -0xe4(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0x190d2
movl -0xdc(%rbp), %esi
movl -0xe0(%rbp), %edx
movl -0xe4(%rbp), %ecx
leaq -0x30(%rbp), %rdi
callq 0x83b0
cmpl $0x0, %eax
jne 0x190bc
leaq -0x68(%rbp), %rdi
callq 0x2280
movl $0xffffffff, -0x34(%rbp) # imm = 0xFFFFFFFF
movl $0x0, -0x3c(%rbp)
movl -0xdc(%rbp), %eax
subl $0x1, %eax
movl %eax, -0xe8(%rbp)
movl -0xe8(%rbp), %eax
movl -0xdc(%rbp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jg 0x18e50
movl -0xe0(%rbp), %eax
subl $0x1, %eax
movl %eax, -0xec(%rbp)
movl -0xec(%rbp), %eax
movl -0xe0(%rbp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jg 0x18e3a
movl -0xe8(%rbp), %eax
cmpl -0xdc(%rbp), %eax
jne 0x18dde
movl -0xec(%rbp), %eax
cmpl -0xe0(%rbp), %eax
je 0x18e24
movl -0xe8(%rbp), %esi
movl -0xec(%rbp), %edx
leaq -0x30(%rbp), %rdi
xorl %ecx, %ecx
callq 0x83b0
cmpl $0x0, %eax
jne 0x18e0e
leaq 0x3c38(%rip), %rsi      # 0x1ca39
leaq -0x68(%rbp), %rdi
callq 0x23c0
jmp 0x18e0c
jmp 0x18e22
leaq 0x3a09(%rip), %rsi      # 0x1c81e
leaq -0x68(%rbp), %rdi
callq 0x23c0
jmp 0x18e20
jmp 0x18e22
jmp 0x18e24
jmp 0x18e26
movl -0xec(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xec(%rbp)
jmp 0x18daf
jmp 0x18e3c
movl -0xe8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xe8(%rbp)
jmp 0x18d89
movl $0x0, -0xf0(%rbp)
cmpl $0x31, -0xf0(%rbp)
jge 0x19026
movslq -0xf0(%rbp), %rax
shlq $0x5, %rax
leaq 0x9647(%rip), %rsi      # 0x224c0
addq %rax, %rsi
leaq -0x110(%rbp), %rdi
callq 0x20d0
jmp 0x18e8a
movl $0x1, -0x3c(%rbp)
leaq -0x110(%rbp), %rdi
movl $0x44, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x2270
cmpq $-0x1, %rax
jne 0x18f14
leaq -0x68(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x2040
movl %eax, -0x160(%rbp)
jmp 0x18ec4
movl -0x160(%rbp), %eax
cmpl $0x0, %eax
jne 0x18f08
movl $0x1, -0x3c(%rbp)
movl $0x43, -0xd8(%rbp)
jmp 0x18ff9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x2110
jmp 0x191fa
movl $0x0, -0x3c(%rbp)
jmp 0x18fdd
movl $0x0, -0x114(%rbp)
cmpl $0x8, -0x114(%rbp)
jge 0x18fdb
movslq -0x114(%rbp), %rsi
leaq -0x110(%rbp), %rdi
callq 0x23f0
movq %rax, -0x168(%rbp)
jmp 0x18f47
movq -0x168(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x44, %eax
jne 0x18f58
jmp 0x18fc7
movslq -0x114(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0x23f0
movq %rax, -0x170(%rbp)
jmp 0x18f71
movq -0x170(%rbp), %rax
movsbl (%rax), %eax
movl %eax, -0x17c(%rbp)
movslq -0x114(%rbp), %rsi
leaq -0x110(%rbp), %rdi
callq 0x23f0
movq %rax, -0x178(%rbp)
jmp 0x18f9d
movl -0x17c(%rbp), %eax
movq -0x178(%rbp), %rcx
movsbl (%rcx), %ecx
cmpl %ecx, %eax
jne 0x18fba
movl $0x1, -0x3c(%rbp)
jmp 0x18fc3
movl $0x0, -0x3c(%rbp)
jmp 0x18fdb
jmp 0x18fc5
jmp 0x18fc7
movl -0x114(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x114(%rbp)
jmp 0x18f1e
jmp 0x18fdd
cmpl $0x0, -0x3c(%rbp)
jne 0x18fef
movl $0x45, -0xd8(%rbp)
jmp 0x18ff9
movl $0x43, -0xd8(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x2110
movl -0xd8(%rbp), %eax
subl $0x43, %eax
je 0x19026
jmp 0x19012
movl -0xf0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xf0(%rbp)
jmp 0x18e5a
cmpl $0x0, -0x3c(%rbp)
jne 0x1904f
movq -0x10(%rbp), %rdi
movl -0xdc(%rbp), %esi
movl -0xe0(%rbp), %edx
movl -0xe4(%rbp), %ecx
movl $0xff, %r8d
callq 0x83f0
jmp 0x190ba
movq -0x10(%rbp), %rax
movq %rax, -0x190(%rbp)
movl -0xdc(%rbp), %eax
movl %eax, -0x188(%rbp)
movl -0xe0(%rbp), %eax
movl %eax, -0x184(%rbp)
movl -0xe4(%rbp), %eax
movl %eax, -0x180(%rbp)
movq -0x10(%rbp), %rdi
movl -0xdc(%rbp), %esi
movl -0xe0(%rbp), %edx
movl -0xe4(%rbp), %ecx
callq 0x83b0
movq -0x190(%rbp), %rdi
movl -0x188(%rbp), %esi
movl -0x184(%rbp), %edx
movl -0x180(%rbp), %ecx
movl %eax, %r8d
callq 0x83f0
jmp 0x190bc
jmp 0x190be
movl -0xe4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xe4(%rbp)
jmp 0x18d30
jmp 0x190d4
movl -0xe0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xe0(%rbp)
jmp 0x18d12
jmp 0x190ea
movl -0xdc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xdc(%rbp)
jmp 0x18cf4
movl $0x0, -0x44(%rbp)
movl $0x1, -0x118(%rbp)
movl -0x118(%rbp), %eax
movq -0x10(%rbp), %rcx
movl 0xc(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x191c3
movl $0x1, -0x11c(%rbp)
movl -0x11c(%rbp), %eax
movq -0x10(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x191ad
movl $0x0, -0x120(%rbp)
movl -0x120(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x1919a
movq -0x10(%rbp), %rdi
movl -0x118(%rbp), %esi
movl -0x11c(%rbp), %edx
movl -0x120(%rbp), %ecx
callq 0x83b0
cmpl $0x0, %eax
jne 0x19187
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x19189
movl -0x120(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x120(%rbp)
jmp 0x1914f
jmp 0x1919c
movl -0x11c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x11c(%rbp)
jmp 0x19131
jmp 0x191af
movl -0x118(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x118(%rbp)
jmp 0x1910f
movl -0x44(%rbp), %eax
cmpl -0x40(%rbp), %eax
jne 0x191d4
movl $0x0, -0x38(%rbp)
jmp 0x191da
movl -0x44(%rbp), %eax
movl %eax, -0x40(%rbp)
jmp 0x18855
leaq -0x68(%rbp), %rdi
callq 0x2110
leaq -0x30(%rbp), %rdi
callq 0x1b2c0
addq $0x190, %rsp            # imm = 0x190
popq %rbp
retq
leaq -0x68(%rbp), %rdi
callq 0x2110
leaq -0x30(%rbp), %rdi
callq 0x1b2c0
movq -0xa8(%rbp), %rdi
callq 0x2360
nopl (%rax,%rax)