// File: /workspace/github_c_makefile_star2_O0/aparrish[P]rwet-examples-c/count_word_pairs.c
// Function: main
int main() {

	char* line;
	int len, i;
	UT_array* words;
	word_pair_t* pairs = NULL;
	word_pair_t* current_pair = NULL;
	word_pair_t* tmp = NULL;

	while (!feof(stdin)) {
		len = ap_getline(&line, stdin);
		words = split_new(line, " \n");

		char** first = NULL;
		char** second = NULL;
		size_t concat_len = 0;
		char* pair_concat;

		/* if there are at least two words on this line... */
		if (utarray_len(words) >= 2) {
			/* get each pair */
			for (i = 0; i < utarray_len(words) - 1; i++) {
				first = (char**)utarray_eltptr(words, i);
				second = (char**)utarray_eltptr(words, i+1);

				/* malloc a new string and sprintf pair into it */
				concat_len = strlen(*first) + 1 + strlen(*second) + 1;
				pair_concat = (char*)malloc(concat_len);
				sprintf(pair_concat, "%s %s", *first, *second);
				printf("pair: '%s'\n", pair_concat);

				/* check if this key is present */
				HASH_FIND_STR(pairs, pair_concat, current_pair);
				if (current_pair != NULL) {
					current_pair->count++;
					free(pair_concat); /* no longer needed */
				}
				else {
					current_pair = (word_pair_t*)malloc(sizeof(word_pair_t));
					current_pair->pair = pair_concat;
					current_pair->count = 1;
					HASH_ADD_KEYPTR(hh, pairs, current_pair->pair,
							strlen(current_pair->pair), current_pair);
				}
			}
		}
		utarray_free(words);
		free(line);
	}

	HASH_SORT(pairs, compare_count);

	HASH_ITER(hh, pairs, current_pair, tmp) {
		printf("%s: %d\n", current_pair->pair, current_pair->count);
		HASH_DEL(pairs, current_pair);
		free(current_pair->pair);
		free(current_pair);
	}

	return 0;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1c0, %rsp            # imm = 0x1C0
movl $0x0, -0x4(%rbp)
movq $0x0, -0x28(%rbp)
movq $0x0, -0x30(%rbp)
movq $0x0, -0x38(%rbp)
movq 0x4d6f(%rip), %rax      # 0x5fe0
movq (%rax), %rdi
callq 0x1090
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x128a
jmp 0x2669
movq 0x4d4f(%rip), %rax      # 0x5fe0
movq (%rax), %rsi
leaq -0x10(%rbp), %rdi
callq 0x2de0
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x2db1(%rip), %rsi      # 0x405c
callq 0x2ee0
movq %rax, -0x20(%rbp)
movq $0x0, -0x40(%rbp)
movq $0x0, -0x48(%rbp)
movq $0x0, -0x50(%rbp)
movq -0x20(%rbp), %rax
cmpl $0x2, (%rax)
jb 0x2583
movl $0x0, -0x18(%rbp)
movl -0x18(%rbp), %eax
movq -0x20(%rbp), %rcx
movl (%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jae 0x2581
movl -0x18(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl (%rcx), %eax
jae 0x1323
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x20(%rbp), %rcx
movq 0x8(%rcx), %rcx
movslq -0x18(%rbp), %rdx
imulq %rdx, %rcx
addq %rcx, %rax
movq %rax, -0x118(%rbp)
jmp 0x132e
xorl %eax, %eax
movq %rax, -0x118(%rbp)
jmp 0x132e
movq -0x118(%rbp), %rax
movq %rax, -0x40(%rbp)
movl -0x18(%rbp), %eax
addl $0x1, %eax
movq -0x20(%rbp), %rcx
cmpl (%rcx), %eax
jae 0x1370
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x20(%rbp), %rcx
movq 0x8(%rcx), %rcx
movl -0x18(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
imulq %rdx, %rcx
addq %rcx, %rax
movq %rax, -0x120(%rbp)
jmp 0x137b
xorl %eax, %eax
movq %rax, -0x120(%rbp)
jmp 0x137b
movq -0x120(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x40(%rbp), %rax
movq (%rax), %rdi
callq 0x1050
addq $0x1, %rax
movq %rax, -0x128(%rbp)
movq -0x48(%rbp), %rax
movq (%rax), %rdi
callq 0x1050
movq %rax, %rcx
movq -0x128(%rbp), %rax
addq %rcx, %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
callq 0x10b0
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rdi
movq -0x40(%rbp), %rax
movq (%rax), %rdx
movq -0x48(%rbp), %rax
movq (%rax), %rcx
leaq 0x2c7b(%rip), %rsi      # 0x405f
movb $0x0, %al
callq 0x10e0
movq -0x58(%rbp), %rsi
leaq 0x2c6f(%rip), %rdi      # 0x4065
movb $0x0, %al
callq 0x1060
movq $0x0, -0x30(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x1977
jmp 0x1412
movq -0x58(%rbp), %rax
movq %rax, -0x78(%rbp)
movl $0xfeedbeef, -0x60(%rbp) # imm = 0xFEEDBEEF
movl $0x9e3779b9, -0x68(%rbp) # imm = 0x9E3779B9
movl $0x9e3779b9, -0x64(%rbp) # imm = 0x9E3779B9
movq -0x58(%rbp), %rdi
callq 0x1050
movl %eax, -0x6c(%rbp)
cmpl $0xc, -0x6c(%rbp)
jb 0x162f
movq -0x78(%rbp), %rax
movsbl (%rax), %eax
movq -0x78(%rbp), %rcx
movsbl 0x1(%rcx), %ecx
shll $0x8, %ecx
addl %ecx, %eax
movq -0x78(%rbp), %rcx
movsbl 0x2(%rcx), %ecx
shll $0x10, %ecx
addl %ecx, %eax
movq -0x78(%rbp), %rcx
movsbl 0x3(%rcx), %ecx
shll $0x18, %ecx
addl %ecx, %eax
addl -0x64(%rbp), %eax
movl %eax, -0x64(%rbp)
movq -0x78(%rbp), %rax
movsbl 0x4(%rax), %eax
movq -0x78(%rbp), %rcx
movsbl 0x5(%rcx), %ecx
shll $0x8, %ecx
addl %ecx, %eax
movq -0x78(%rbp), %rcx
movsbl 0x6(%rcx), %ecx
shll $0x10, %ecx
addl %ecx, %eax
movq -0x78(%rbp), %rcx
movsbl 0x7(%rcx), %ecx
shll $0x18, %ecx
addl %ecx, %eax
addl -0x68(%rbp), %eax
movl %eax, -0x68(%rbp)
movq -0x78(%rbp), %rax
movsbl 0x8(%rax), %eax
movq -0x78(%rbp), %rcx
movsbl 0x9(%rcx), %ecx
shll $0x8, %ecx
addl %ecx, %eax
movq -0x78(%rbp), %rcx
movsbl 0xa(%rcx), %ecx
shll $0x10, %ecx
addl %ecx, %eax
movq -0x78(%rbp), %rcx
movsbl 0xb(%rcx), %ecx
shll $0x18, %ecx
addl %ecx, %eax
addl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %ecx
movl -0x64(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %ecx
movl -0x64(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %eax
shrl $0xd, %eax
xorl -0x64(%rbp), %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %ecx
movl -0x68(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %ecx
movl -0x68(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %eax
shll $0x8, %eax
xorl -0x68(%rbp), %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %eax
shrl $0xd, %eax
xorl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %ecx
movl -0x64(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %ecx
movl -0x64(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %eax
shrl $0xc, %eax
xorl -0x64(%rbp), %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %ecx
movl -0x68(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %ecx
movl -0x68(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %eax
shll $0x10, %eax
xorl -0x68(%rbp), %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %eax
shrl $0x5, %eax
xorl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %ecx
movl -0x64(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %ecx
movl -0x64(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %eax
shrl $0x3, %eax
xorl -0x64(%rbp), %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %ecx
movl -0x68(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %ecx
movl -0x68(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %eax
shll $0xa, %eax
xorl -0x68(%rbp), %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %eax
shrl $0xf, %eax
xorl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x78(%rbp), %rax
addq $0xc, %rax
movq %rax, -0x78(%rbp)
movl -0x6c(%rbp), %eax
subl $0xc, %eax
movl %eax, -0x6c(%rbp)
jmp 0x143b
movq -0x58(%rbp), %rdi
callq 0x1050
movq %rax, %rcx
movl -0x60(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x6c(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x130(%rbp)
subl $0xa, %eax
ja 0x1725
movq -0x130(%rbp), %rax
leaq 0x299c(%rip), %rcx      # 0x4004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x78(%rbp), %rax
movsbl 0xa(%rax), %eax
shll $0x18, %eax
addl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x78(%rbp), %rax
movsbl 0x9(%rax), %eax
shll $0x10, %eax
addl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x78(%rbp), %rax
movsbl 0x8(%rax), %eax
shll $0x8, %eax
addl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x78(%rbp), %rax
movsbl 0x7(%rax), %eax
shll $0x18, %eax
addl -0x68(%rbp), %eax
movl %eax, -0x68(%rbp)
movq -0x78(%rbp), %rax
movsbl 0x6(%rax), %eax
shll $0x10, %eax
addl -0x68(%rbp), %eax
movl %eax, -0x68(%rbp)
movq -0x78(%rbp), %rax
movsbl 0x5(%rax), %eax
shll $0x8, %eax
addl -0x68(%rbp), %eax
movl %eax, -0x68(%rbp)
movq -0x78(%rbp), %rax
movsbl 0x4(%rax), %eax
addl -0x68(%rbp), %eax
movl %eax, -0x68(%rbp)
movq -0x78(%rbp), %rax
movsbl 0x3(%rax), %eax
shll $0x18, %eax
addl -0x64(%rbp), %eax
movl %eax, -0x64(%rbp)
movq -0x78(%rbp), %rax
movsbl 0x2(%rax), %eax
shll $0x10, %eax
addl -0x64(%rbp), %eax
movl %eax, -0x64(%rbp)
movq -0x78(%rbp), %rax
movsbl 0x1(%rax), %eax
shll $0x8, %eax
addl -0x64(%rbp), %eax
movl %eax, -0x64(%rbp)
movq -0x78(%rbp), %rax
movsbl (%rax), %eax
addl -0x64(%rbp), %eax
movl %eax, -0x64(%rbp)
jmp 0x1727
movl -0x68(%rbp), %ecx
movl -0x64(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %ecx
movl -0x64(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %eax
shrl $0xd, %eax
xorl -0x64(%rbp), %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %ecx
movl -0x68(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %ecx
movl -0x68(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %eax
shll $0x8, %eax
xorl -0x68(%rbp), %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %eax
shrl $0xd, %eax
xorl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %ecx
movl -0x64(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %ecx
movl -0x64(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %eax
shrl $0xc, %eax
xorl -0x64(%rbp), %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %ecx
movl -0x68(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %ecx
movl -0x68(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %eax
shll $0x10, %eax
xorl -0x68(%rbp), %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %eax
shrl $0x5, %eax
xorl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %ecx
movl -0x64(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %ecx
movl -0x64(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %eax
shrl $0x3, %eax
xorl -0x64(%rbp), %eax
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %ecx
movl -0x68(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %ecx
movl -0x68(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %eax
shll $0xa, %eax
xorl -0x68(%rbp), %eax
movl %eax, -0x68(%rbp)
movl -0x64(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x68(%rbp), %eax
shrl $0xf, %eax
xorl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movl -0x60(%rbp), %eax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
andl %ecx, %eax
movl %eax, -0x5c(%rbp)
jmp 0x1871
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x5c(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
cmpq $0x0, (%rax)
je 0x18bd
jmp 0x188e
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x5c(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rdx
xorl %ecx, %ecx
subq 0x20(%rdx), %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
jmp 0x18c5
movq $0x0, -0x30(%rbp)
jmp 0x18c7
cmpq $0x0, -0x30(%rbp)
je 0x1973
movq -0x30(%rbp), %rax
movl 0x40(%rax), %eax
movq %rax, -0x138(%rbp)
movq -0x58(%rbp), %rdi
callq 0x1050
movq %rax, %rcx
movq -0x138(%rbp), %rax
cmpq %rcx, %rax
jne 0x193a
movq -0x30(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x148(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0x140(%rbp)
movq -0x58(%rbp), %rdi
callq 0x1050
movq -0x148(%rbp), %rdi
movq -0x140(%rbp), %rsi
movq %rax, %rdx
callq 0x1080
cmpl $0x0, %eax
jne 0x1938
jmp 0x1973
jmp 0x193a
movq -0x30(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0x1966
jmp 0x1947
movq -0x30(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rdx
xorl %ecx, %ecx
subq 0x20(%rdx), %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
jmp 0x196e
movq $0x0, -0x30(%rbp)
jmp 0x18c7
jmp 0x1975
jmp 0x1977
jmp 0x1979
cmpq $0x0, -0x30(%rbp)
je 0x199b
movq -0x30(%rbp), %rax
movl 0x8(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x8(%rax)
movq -0x58(%rbp), %rdi
callq 0x1030
jmp 0x2571
movl $0x48, %edi
callq 0x10b0
movq %rax, -0x30(%rbp)
movq -0x58(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, (%rax)
movq -0x30(%rbp), %rax
movl $0x1, 0x8(%rax)
movq -0x30(%rbp), %rax
movq $0x0, 0x20(%rax)
movq -0x30(%rbp), %rax
movq (%rax), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x30(%rbp), %rax
movq (%rax), %rdi
callq 0x1050
movl %eax, %ecx
movq -0x30(%rbp), %rax
movl %ecx, 0x40(%rax)
cmpq $0x0, -0x28(%rbp)
jne 0x1af1
movq -0x30(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq $0x0, 0x18(%rax)
movl $0x40, %edi
callq 0x10b0
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x28(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x1a38
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x10f0
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdi
xorl %esi, %esi
movl $0x40, %edx
callq 0x1070
movq -0x28(%rbp), %rcx
addq $0x10, %rcx
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x18(%rax)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl $0x20, 0x8(%rax)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl $0x5, 0xc(%rax)
movq -0x28(%rbp), %rcx
addq $0x10, %rcx
movq -0x28(%rbp), %rax
subq %rax, %rcx
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x20(%rax)
movl $0x200, %edi            # imm = 0x200
callq 0x10b0
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, (%rax)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
cmpq $0x0, (%rax)
jne 0x1ac9
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x10f0
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
xorl %esi, %esi
movl $0x200, %edx            # imm = 0x200
callq 0x1070
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl $0xa0111fe1, 0x38(%rax) # imm = 0xA0111FE1
jmp 0x1b3e
movq -0x30(%rbp), %rcx
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
movq %rcx, 0x10(%rax)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rcx
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdx
xorl %eax, %eax
subq 0x20(%rdx), %rax
addq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x30(%rbp), %rcx
addq $0x10, %rcx
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x18(%rax)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x10(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x10(%rax)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x90(%rbp)
movq -0x30(%rbp), %rax
movl $0xfeedbeef, 0x44(%rax) # imm = 0xFEEDBEEF
movl $0x9e3779b9, -0x84(%rbp) # imm = 0x9E3779B9
movl $0x9e3779b9, -0x80(%rbp) # imm = 0x9E3779B9
movq -0x30(%rbp), %rax
movq (%rax), %rdi
callq 0x1050
movl %eax, -0x88(%rbp)
cmpl $0xc, -0x88(%rbp)
jb 0x1e65
movq -0x90(%rbp), %rax
movsbl (%rax), %eax
movq -0x90(%rbp), %rcx
movsbl 0x1(%rcx), %ecx
shll $0x8, %ecx
addl %ecx, %eax
movq -0x90(%rbp), %rcx
movsbl 0x2(%rcx), %ecx
shll $0x10, %ecx
addl %ecx, %eax
movq -0x90(%rbp), %rcx
movsbl 0x3(%rcx), %ecx
shll $0x18, %ecx
addl %ecx, %eax
addl -0x80(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x90(%rbp), %rax
movsbl 0x4(%rax), %eax
movq -0x90(%rbp), %rcx
movsbl 0x5(%rcx), %ecx
shll $0x8, %ecx
addl %ecx, %eax
movq -0x90(%rbp), %rcx
movsbl 0x6(%rcx), %ecx
shll $0x10, %ecx
addl %ecx, %eax
movq -0x90(%rbp), %rcx
movsbl 0x7(%rcx), %ecx
shll $0x18, %ecx
addl %ecx, %eax
addl -0x84(%rbp), %eax
movl %eax, -0x84(%rbp)
movq -0x90(%rbp), %rax
movsbl 0x8(%rax), %ecx
movq -0x90(%rbp), %rax
movsbl 0x9(%rax), %eax
shll $0x8, %eax
addl %eax, %ecx
movq -0x90(%rbp), %rax
movsbl 0xa(%rax), %eax
shll $0x10, %eax
addl %eax, %ecx
movq -0x90(%rbp), %rax
movsbl 0xb(%rax), %eax
shll $0x18, %eax
addl %eax, %ecx
movq -0x30(%rbp), %rax
addl 0x44(%rax), %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %eax
shrl $0xd, %eax
xorl -0x80(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x84(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %ecx
movl -0x84(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %eax
shll $0x8, %eax
xorl -0x84(%rbp), %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %edx
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %edx
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %ecx
shrl $0xd, %ecx
movq -0x30(%rbp), %rax
xorl 0x44(%rax), %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %eax
shrl $0xc, %eax
xorl -0x80(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x84(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %ecx
movl -0x84(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %eax
shll $0x10, %eax
xorl -0x84(%rbp), %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %edx
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %edx
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %ecx
shrl $0x5, %ecx
movq -0x30(%rbp), %rax
xorl 0x44(%rax), %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %eax
shrl $0x3, %eax
xorl -0x80(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x84(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %ecx
movl -0x84(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %eax
shll $0xa, %eax
xorl -0x84(%rbp), %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %edx
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %edx
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %ecx
shrl $0xf, %ecx
movq -0x30(%rbp), %rax
xorl 0x44(%rax), %ecx
movl %ecx, 0x44(%rax)
movq -0x90(%rbp), %rax
addq $0xc, %rax
movq %rax, -0x90(%rbp)
movl -0x88(%rbp), %eax
subl $0xc, %eax
movl %eax, -0x88(%rbp)
jmp 0x1b9b
movq -0x30(%rbp), %rax
movq (%rax), %rdi
callq 0x1050
movq %rax, %rdx
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
addl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x88(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x150(%rbp)
subl $0xa, %eax
ja 0x1faa
movq -0x150(%rbp), %rax
leaq 0x2188(%rip), %rcx      # 0x4030
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x90(%rbp), %rax
movsbl 0xa(%rax), %ecx
shll $0x18, %ecx
movq -0x30(%rbp), %rax
addl 0x44(%rax), %ecx
movl %ecx, 0x44(%rax)
movq -0x90(%rbp), %rax
movsbl 0x9(%rax), %ecx
shll $0x10, %ecx
movq -0x30(%rbp), %rax
addl 0x44(%rax), %ecx
movl %ecx, 0x44(%rax)
movq -0x90(%rbp), %rax
movsbl 0x8(%rax), %ecx
shll $0x8, %ecx
movq -0x30(%rbp), %rax
addl 0x44(%rax), %ecx
movl %ecx, 0x44(%rax)
movq -0x90(%rbp), %rax
movsbl 0x7(%rax), %eax
shll $0x18, %eax
addl -0x84(%rbp), %eax
movl %eax, -0x84(%rbp)
movq -0x90(%rbp), %rax
movsbl 0x6(%rax), %eax
shll $0x10, %eax
addl -0x84(%rbp), %eax
movl %eax, -0x84(%rbp)
movq -0x90(%rbp), %rax
movsbl 0x5(%rax), %eax
shll $0x8, %eax
addl -0x84(%rbp), %eax
movl %eax, -0x84(%rbp)
movq -0x90(%rbp), %rax
movsbl 0x4(%rax), %eax
addl -0x84(%rbp), %eax
movl %eax, -0x84(%rbp)
movq -0x90(%rbp), %rax
movsbl 0x3(%rax), %eax
shll $0x18, %eax
addl -0x80(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x90(%rbp), %rax
movsbl 0x2(%rax), %eax
shll $0x10, %eax
addl -0x80(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x90(%rbp), %rax
movsbl 0x1(%rax), %eax
shll $0x8, %eax
addl -0x80(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x90(%rbp), %rax
movsbl (%rax), %eax
addl -0x80(%rbp), %eax
movl %eax, -0x80(%rbp)
jmp 0x1fac
movl -0x84(%rbp), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %eax
shrl $0xd, %eax
xorl -0x80(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x84(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %ecx
movl -0x84(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %eax
shll $0x8, %eax
xorl -0x84(%rbp), %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %edx
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %edx
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %ecx
shrl $0xd, %ecx
movq -0x30(%rbp), %rax
xorl 0x44(%rax), %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %eax
shrl $0xc, %eax
xorl -0x80(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x84(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %ecx
movl -0x84(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %eax
shll $0x10, %eax
xorl -0x84(%rbp), %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %edx
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %edx
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %ecx
shrl $0x5, %ecx
movq -0x30(%rbp), %rax
xorl 0x44(%rax), %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %eax
shrl $0x3, %eax
xorl -0x80(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x84(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %ecx
movl -0x84(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %eax
shll $0xa, %eax
xorl -0x84(%rbp), %eax
movl %eax, -0x84(%rbp)
movl -0x80(%rbp), %edx
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %edx
movq -0x30(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %ecx
shrl $0xf, %ecx
movq -0x30(%rbp), %rax
xorl 0x44(%rax), %ecx
movl %ecx, 0x44(%rax)
movq -0x30(%rbp), %rax
movl 0x44(%rax), %eax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
andl %ecx, %eax
movl %eax, -0x7c(%rbp)
jmp 0x2193
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x7c(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x8(%rax)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x7c(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x30(%rbp), %rax
movq $0x0, 0x28(%rax)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x7c(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
cmpq $0x0, (%rax)
je 0x221c
movq -0x30(%rbp), %rcx
addq $0x10, %rcx
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x7c(%rbp), %edx
shlq $0x4, %rdx
addq %rdx, %rax
movq (%rax), %rax
movq %rcx, 0x18(%rax)
movq -0x30(%rbp), %rcx
addq $0x10, %rcx
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x7c(%rbp), %edx
shlq $0x4, %rdx
addq %rdx, %rax
movq %rcx, (%rax)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x7c(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq (%rcx), %rcx
movl -0x7c(%rbp), %edx
shlq $0x4, %rdx
addq %rdx, %rcx
movl 0xc(%rcx), %ecx
addl $0x1, %ecx
imull $0xa, %ecx, %ecx
cmpl %ecx, %eax
jb 0x256b
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x1, 0x34(%rax)
je 0x256b
jmp 0x228e
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x8(%rax), %eax
shll %eax
movl %eax, %eax
movl %eax, %edi
shlq $0x4, %rdi
callq 0x10b0
movq %rax, -0xb0(%rbp)
cmpq $0x0, -0xb0(%rbp)
jne 0x22c3
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x10f0
movq -0xb0(%rbp), %rdi
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x8(%rax), %eax
shll %eax
movl %eax, %eax
movl %eax, %edx
shlq $0x4, %rdx
xorl %esi, %esi
callq 0x1070
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x10(%rax), %eax
movq -0x30(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl 0xc(%rcx), %ecx
addl $0x1, %ecx
shrl %cl, %eax
movl %eax, %ecx
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x10(%rax), %esi
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x8(%rax), %eax
shll %eax
subl $0x1, %eax
andl %eax, %esi
xorl %eax, %eax
movl $0x1, %edx
cmpl $0x0, %esi
cmovnel %edx, %eax
addl %eax, %ecx
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movl %ecx, 0x28(%rax)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movl $0x0, 0x2c(%rax)
movl $0x0, -0x98(%rbp)
movl -0x98(%rbp), %eax
movq -0x30(%rbp), %rcx
movq 0x10(%rcx), %rcx
cmpl 0x8(%rcx), %eax
jae 0x24ba
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x98(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq %rax, -0xa0(%rbp)
cmpq $0x0, -0xa0(%rbp)
je 0x24a4
movq -0xa0(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0xa8(%rbp)
movq -0xa0(%rbp), %rax
movl 0x34(%rax), %eax
movq -0x30(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl 0x8(%rcx), %ecx
shll %ecx
subl $0x1, %ecx
andl %ecx, %eax
movl %eax, -0x94(%rbp)
movq -0xb0(%rbp), %rax
movl -0x94(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rcx
movl 0x8(%rcx), %eax
addl $0x1, %eax
movl %eax, 0x8(%rcx)
movq -0x30(%rbp), %rcx
movq 0x10(%rcx), %rcx
cmpl 0x28(%rcx), %eax
jbe 0x243a
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x2c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x2c(%rax)
movq -0xb8(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x30(%rbp), %rcx
movq 0x10(%rcx), %rcx
xorl %edx, %edx
divl 0x28(%rcx)
movl %eax, %ecx
movq -0xb8(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0xa0(%rbp), %rax
movq $0x0, 0x18(%rax)
movq -0xb8(%rbp), %rax
movq (%rax), %rcx
movq -0xa0(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0xb8(%rbp), %rax
cmpq $0x0, (%rax)
je 0x2480
movq -0xa0(%rbp), %rcx
movq -0xb8(%rbp), %rax
movq (%rax), %rax
movq %rcx, 0x18(%rax)
movq -0xa0(%rbp), %rcx
movq -0xb8(%rbp), %rax
movq %rcx, (%rax)
movq -0xa8(%rbp), %rax
movq %rax, -0xa0(%rbp)
jmp 0x238c
jmp 0x24a6
movl -0x98(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x98(%rbp)
jmp 0x2353
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
callq 0x1030
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x8(%rax), %ecx
shll %ecx
movl %ecx, 0x8(%rax)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movl 0xc(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rax)
movq -0xb0(%rbp), %rcx
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, (%rax)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x2c(%rax), %eax
movq -0x30(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl 0x10(%rcx), %ecx
shrl %ecx
cmpl %ecx, %eax
jbe 0x252f
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x30(%rax), %eax
addl $0x1, %eax
movl %eax, -0x154(%rbp)
jmp 0x2539
xorl %eax, %eax
movl %eax, -0x154(%rbp)
jmp 0x2539
movl -0x154(%rbp), %ecx
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movl %ecx, 0x30(%rax)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x1, 0x30(%rax)
jbe 0x2567
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movl $0x1, 0x34(%rax)
jmp 0x2569
jmp 0x256b
jmp 0x256d
jmp 0x256f
jmp 0x2571
jmp 0x2573
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x12e0
jmp 0x2583
jmp 0x2585
jmp 0x2587
movq -0x20(%rbp), %rax
cmpl $0x0, 0x4(%rax)
je 0x2647
movq -0x20(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x263a
movq $0x0, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0x20(%rbp), %rcx
movl (%rcx), %ecx
cmpq %rcx, %rax
jae 0x2638
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x160(%rbp)
movq -0xc0(%rbp), %rax
movq -0x20(%rbp), %rcx
movl (%rcx), %ecx
cmpq %rcx, %rax
jae 0x2606
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x20(%rbp), %rcx
movq 0x8(%rcx), %rcx
imulq -0xc0(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x168(%rbp)
jmp 0x2611
xorl %eax, %eax
movq %rax, -0x168(%rbp)
jmp 0x2611
movq -0x160(%rbp), %rax
movq -0x168(%rbp), %rdi
callq *%rax
movq -0xc0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xc0(%rbp)
jmp 0x25af
jmp 0x263a
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x1030
movq -0x20(%rbp), %rax
movl $0x0, 0x4(%rax)
movq -0x20(%rbp), %rdi
callq 0x1030
movq -0x10(%rbp), %rdi
callq 0x1030
jmp 0x126a
jmp 0x266b
cmpq $0x0, -0x28(%rbp)
je 0x2b21
movl $0x1, -0xd0(%rbp)
movl $0x1, -0xc8(%rbp)
movq -0x28(%rbp), %rax
addq $0x10, %rax
movq %rax, -0xf8(%rbp)
cmpl $0x0, -0xc8(%rbp)
je 0x2b1f
movq -0xf8(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq $0x0, -0xf8(%rbp)
movq $0x0, -0x100(%rbp)
movl $0x0, -0xcc(%rbp)
cmpq $0x0, -0xe0(%rbp)
je 0x2ab9
movl -0xcc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xcc(%rbp)
movq -0xe0(%rbp), %rax
movq %rax, -0xe8(%rbp)
movl $0x0, -0xd4(%rbp)
movl $0x0, -0xc4(%rbp)
movl -0xc4(%rbp), %eax
cmpl -0xd0(%rbp), %eax
jae 0x2799
movl -0xd4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xd4(%rbp)
movq -0xe8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x275e
movq -0xe8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rcx
addq 0x20(%rcx), %rax
movq %rax, -0x170(%rbp)
jmp 0x2769
xorl %eax, %eax
movq %rax, -0x170(%rbp)
jmp 0x2769
movq -0x170(%rbp), %rax
movq %rax, -0xe8(%rbp)
cmpq $0x0, -0xe8(%rbp)
jne 0x2783
jmp 0x2799
jmp 0x2785
movl -0xc4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc4(%rbp)
jmp 0x2713
movl -0xd0(%rbp), %eax
movl %eax, -0xd8(%rbp)
movb $0x1, %al
cmpl $0x0, -0xd4(%rbp)
movb %al, -0x171(%rbp)
ja 0x27e4
xorl %eax, %eax
cmpl $0x0, -0xd8(%rbp)
movb %al, -0x172(%rbp)
jbe 0x27d8
cmpq $0x0, -0xe8(%rbp)
setne %al
movb %al, -0x172(%rbp)
movb -0x172(%rbp), %al
movb %al, -0x171(%rbp)
movb -0x171(%rbp), %al
testb $0x1, %al
jne 0x27f3
jmp 0x2aa6
cmpl $0x0, -0xd4(%rbp)
jne 0x2865
movq -0xe8(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0xe8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x2838
movq -0xe8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rcx
addq 0x20(%rcx), %rax
movq %rax, -0x180(%rbp)
jmp 0x2843
xorl %eax, %eax
movq %rax, -0x180(%rbp)
jmp 0x2843
movq -0x180(%rbp), %rax
movq %rax, -0xe8(%rbp)
movl -0xd8(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xd8(%rbp)
jmp 0x29e9
cmpl $0x0, -0xd8(%rbp)
je 0x2878
cmpq $0x0, -0xe8(%rbp)
jne 0x28e1
movq -0xe0(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0xe0(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x28b4
movq -0xe0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rcx
addq 0x20(%rcx), %rax
movq %rax, -0x188(%rbp)
jmp 0x28bf
xorl %eax, %eax
movq %rax, -0x188(%rbp)
jmp 0x28bf
movq -0x188(%rbp), %rax
movq %rax, -0xe0(%rbp)
movl -0xd4(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xd4(%rbp)
jmp 0x29e7
movq -0xe0(%rbp), %rdi
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rcx
xorl %eax, %eax
subq 0x20(%rcx), %rax
addq %rax, %rdi
movq -0xe8(%rbp), %rsi
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rcx
xorl %eax, %eax
subq 0x20(%rcx), %rax
addq %rax, %rsi
callq 0x1220
cmpl $0x0, %eax
jg 0x2981
movq -0xe0(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0xe0(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x2957
movq -0xe0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rcx
addq 0x20(%rcx), %rax
movq %rax, -0x190(%rbp)
jmp 0x2962
xorl %eax, %eax
movq %rax, -0x190(%rbp)
jmp 0x2962
movq -0x190(%rbp), %rax
movq %rax, -0xe0(%rbp)
movl -0xd4(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xd4(%rbp)
jmp 0x29e5
movq -0xe8(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0xe8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x29bd
movq -0xe8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rcx
addq 0x20(%rcx), %rax
movq %rax, -0x198(%rbp)
jmp 0x29c8
xorl %eax, %eax
movq %rax, -0x198(%rbp)
jmp 0x29c8
movq -0x198(%rbp), %rax
movq %rax, -0xe8(%rbp)
movl -0xd8(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xd8(%rbp)
jmp 0x29e7
jmp 0x29e9
cmpq $0x0, -0x100(%rbp)
je 0x2a3d
cmpq $0x0, -0xf0(%rbp)
je 0x2a1e
movq -0xf0(%rbp), %rax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rdx
xorl %ecx, %ecx
subq 0x20(%rdx), %rcx
addq %rcx, %rax
movq %rax, -0x1a0(%rbp)
jmp 0x2a29
xorl %eax, %eax
movq %rax, -0x1a0(%rbp)
jmp 0x2a29
movq -0x1a0(%rbp), %rcx
movq -0x100(%rbp), %rax
movq %rcx, 0x10(%rax)
jmp 0x2a4b
movq -0xf0(%rbp), %rax
movq %rax, -0xf8(%rbp)
cmpq $0x0, -0x100(%rbp)
je 0x2a76
movq -0x100(%rbp), %rax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rdx
xorl %ecx, %ecx
subq 0x20(%rdx), %rcx
addq %rcx, %rax
movq %rax, -0x1a8(%rbp)
jmp 0x2a81
xorl %eax, %eax
movq %rax, -0x1a8(%rbp)
jmp 0x2a81
movq -0x1a8(%rbp), %rcx
movq -0xf0(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0xf0(%rbp), %rax
movq %rax, -0x100(%rbp)
jmp 0x27a5
movq -0xe8(%rbp), %rax
movq %rax, -0xe0(%rbp)
jmp 0x26d4
movq -0x100(%rbp), %rax
movq $0x0, 0x10(%rax)
cmpl $0x1, -0xcc(%rbp)
ja 0x2b0c
movl $0x0, -0xc8(%rbp)
movq -0x100(%rbp), %rcx
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x18(%rax)
movq -0xf8(%rbp), %rax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rdx
xorl %ecx, %ecx
subq 0x20(%rdx), %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
jmp 0x2b0c
movl -0xd0(%rbp), %eax
shll %eax
movl %eax, -0xd0(%rbp)
jmp 0x2699
jmp 0x2b21
jmp 0x2b23
movq -0x28(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x2b43
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x1b0(%rbp)
jmp 0x2b4e
xorl %eax, %eax
movq %rax, -0x1b0(%rbp)
jmp 0x2b4e
movq -0x1b0(%rbp), %rax
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x2dc8
movq -0x30(%rbp), %rax
movq (%rax), %rsi
movq -0x30(%rbp), %rax
movl 0x8(%rax), %edx
leaq 0x14f8(%rip), %rdi      # 0x4071
movb $0x0, %al
callq 0x1060
movq -0x30(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0x2bc0
movq -0x30(%rbp), %rax
cmpq $0x0, 0x20(%rax)
jne 0x2bc0
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
callq 0x1030
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x1030
movq $0x0, -0x28(%rbp)
jmp 0x2d76
movq -0x30(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x110(%rbp)
movq -0x30(%rbp), %rax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq 0x18(%rcx), %rcx
movq -0x28(%rbp), %rdx
movq 0x10(%rdx), %rsi
xorl %edx, %edx
subq 0x20(%rsi), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jne 0x2c15
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
addq 0x20(%rax), %rcx
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x18(%rax)
movq -0x30(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x2c43
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rdx
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq %rdx, 0x10(%rax,%rcx)
jmp 0x2c53
jmp 0x2c45
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x2c53
movq -0x110(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x2c88
movq -0x110(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x110(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq %rdx, 0x8(%rax,%rcx)
jmp 0x2c8a
movq -0x110(%rbp), %rax
movl 0x34(%rax), %eax
movq -0x28(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
andl %ecx, %eax
movl %eax, -0x104(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x104(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x8(%rax)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x104(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
cmpq -0x110(%rbp), %rax
jne 0x2d15
movq -0x110(%rbp), %rax
movq 0x20(%rax), %rcx
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x104(%rbp), %edx
shlq $0x4, %rdx
addq %rdx, %rax
movq %rcx, (%rax)
movq -0x110(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x2d3d
movq -0x110(%rbp), %rax
movq 0x20(%rax), %rcx
movq -0x110(%rbp), %rax
movq 0x18(%rax), %rax
movq %rcx, 0x20(%rax)
movq -0x110(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x2d65
movq -0x110(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x110(%rbp), %rax
movq 0x20(%rax), %rax
movq %rcx, 0x18(%rax)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x10(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x10(%rax)
jmp 0x2d78
movq -0x30(%rbp), %rax
movq (%rax), %rdi
callq 0x1030
movq -0x30(%rbp), %rdi
callq 0x1030
movq -0x38(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x2dad
movq -0x38(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x1b8(%rbp)
jmp 0x2db8
xorl %eax, %eax
movq %rax, -0x1b8(%rbp)
jmp 0x2db8
movq -0x1b8(%rbp), %rax
movq %rax, -0x38(%rbp)
jmp 0x2b59
xorl %eax, %eax
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)