// File: /workspace/github_c_makefile_star2_O0/aparrish[P]rwet-examples-c/ngram_count.c
// Function: main
int main(int argc, char** argv) {

	char* line;
	char* joined;
	int len, n, i, joined_len;
	UT_array* tokens;
	UT_array* token_slice = NULL;
	ngram_count_t* ngrams = NULL;
	ngram_count_t* current_ngram = NULL;
	ngram_count_t* tmp = NULL;

	if (argc != 2) {
		fprintf(stderr, "missing required param n\n");
		exit(-1);
	}

	n = atoi(argv[1]);

	while (!feof(stdin)) {

		/* read a line, split it into tokens */
		len = ap_getline(&line, stdin);
		tokens = split_new(line, " \n");

		/* if we have enough tokens to find an ngram of length n... */
		if (utarray_len(tokens) >= n) {
			/* iterate over each group of n from beginning to end of list */
			for (i = 0; i < utarray_len(tokens) - n + 1; i++) {

				/* make a new array slice, then join to make key */
				token_slice = slice_new(tokens, i, i+n);
				joined_len = join_new(&joined, token_slice, " ");

				/* if we can find a struct with that key in the hash, increment */
				HASH_FIND_STR(ngrams, joined, current_ngram);
				if (current_ngram != NULL) {
					current_ngram->count++;
					free(joined); /* no longer needed */
				}
				/* otherwise, malloc and add to hash */
				else {
					current_ngram = (ngram_count_t*)malloc(sizeof(ngram_count_t));
					current_ngram->gram = joined; /* free this later */
					current_ngram->count = 1;
					HASH_ADD_KEYPTR(hh, ngrams, current_ngram->gram,
							strlen(current_ngram->gram), current_ngram);
				}

				utarray_free(token_slice);
			}
		}

		utarray_free(tokens);
		free(line);

	}

	HASH_SORT(ngrams, compare_count);

	HASH_ITER(hh, ngrams, current_ngram, tmp) {
		printf("%s: %d\n", current_ngram->gram, current_ngram->count);
		HASH_DEL(ngrams, current_ngram);
		free(current_ngram->gram);
		free(current_ngram);
	}

	return 0;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1c0, %rsp            # imm = 0x1C0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x40(%rbp)
movq $0x0, -0x48(%rbp)
movq $0x0, -0x50(%rbp)
movq $0x0, -0x58(%rbp)
cmpl $0x2, -0x8(%rbp)
je 0x12c1
movq 0x4d52(%rip), %rax      # 0x5ff8
movq (%rax), %rdi
leaq 0x2dac(%rip), %rsi      # 0x405c
movb $0x0, %al
callq 0x1090
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x1110
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x10f0
movl %eax, -0x28(%rbp)
movq 0x4d00(%rip), %rax      # 0x5fd8
movq (%rax), %rdi
callq 0x10a0
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x12f1
jmp 0x26b9
movq 0x4ce0(%rip), %rax      # 0x5fd8
movq (%rax), %rsi
leaq -0x18(%rbp), %rdi
callq 0x2e30
movl %eax, -0x24(%rbp)
movq -0x18(%rbp), %rdi
leaq 0x2d64(%rip), %rsi      # 0x4076
callq 0x2f30
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movl (%rax), %eax
cmpl -0x28(%rbp), %eax
jb 0x25d3
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movq -0x38(%rbp), %rcx
movl (%rcx), %ecx
subl -0x28(%rbp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jae 0x25d1
movq -0x38(%rbp), %rdi
movl -0x2c(%rbp), %esi
movl -0x2c(%rbp), %edx
addl -0x28(%rbp), %edx
callq 0x3130
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rsi
leaq -0x20(%rbp), %rdi
leaq 0x2d0c(%rip), %rdx      # 0x4079
callq 0x3340
movl %eax, -0x30(%rbp)
movq $0x0, -0x50(%rbp)
cmpq $0x0, -0x48(%rbp)
je 0x18ef
jmp 0x138a
movq -0x20(%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 -0x20(%rbp), %rdi
callq 0x1050
movl %eax, -0x6c(%rbp)
cmpl $0xc, -0x6c(%rbp)
jb 0x15a7
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 0x13b3
movq -0x20(%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, -0x120(%rbp)
subl $0xa, %eax
ja 0x169d
movq -0x120(%rbp), %rax
leaq 0x2a24(%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 0x169f
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 -0x48(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
andl %ecx, %eax
movl %eax, -0x5c(%rbp)
jmp 0x17e9
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x5c(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
cmpq $0x0, (%rax)
je 0x1835
jmp 0x1806
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x5c(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq -0x48(%rbp), %rcx
movq 0x10(%rcx), %rdx
xorl %ecx, %ecx
subq 0x20(%rdx), %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
jmp 0x183d
movq $0x0, -0x50(%rbp)
jmp 0x183f
cmpq $0x0, -0x50(%rbp)
je 0x18eb
movq -0x50(%rbp), %rax
movl 0x40(%rax), %eax
movq %rax, -0x128(%rbp)
movq -0x20(%rbp), %rdi
callq 0x1050
movq %rax, %rcx
movq -0x128(%rbp), %rax
cmpq %rcx, %rax
jne 0x18b2
movq -0x50(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x138(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x130(%rbp)
movq -0x20(%rbp), %rdi
callq 0x1050
movq -0x138(%rbp), %rdi
movq -0x130(%rbp), %rsi
movq %rax, %rdx
callq 0x1080
cmpl $0x0, %eax
jne 0x18b0
jmp 0x18eb
jmp 0x18b2
movq -0x50(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0x18de
jmp 0x18bf
movq -0x50(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x48(%rbp), %rcx
movq 0x10(%rcx), %rdx
xorl %ecx, %ecx
subq 0x20(%rdx), %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
jmp 0x18e6
movq $0x0, -0x50(%rbp)
jmp 0x183f
jmp 0x18ed
jmp 0x18ef
jmp 0x18f1
cmpq $0x0, -0x50(%rbp)
je 0x1913
movq -0x50(%rbp), %rax
movl 0x8(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x8(%rax)
movq -0x20(%rbp), %rdi
callq 0x1030
jmp 0x24e9
movl $0x48, %edi
callq 0x10c0
movq %rax, -0x50(%rbp)
movq -0x20(%rbp), %rcx
movq -0x50(%rbp), %rax
movq %rcx, (%rax)
movq -0x50(%rbp), %rax
movl $0x1, 0x8(%rax)
movq -0x50(%rbp), %rax
movq $0x0, 0x20(%rax)
movq -0x50(%rbp), %rax
movq (%rax), %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x50(%rbp), %rax
movq (%rax), %rdi
callq 0x1050
movl %eax, %ecx
movq -0x50(%rbp), %rax
movl %ecx, 0x40(%rax)
cmpq $0x0, -0x48(%rbp)
jne 0x1a69
movq -0x50(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq $0x0, 0x18(%rax)
movl $0x40, %edi
callq 0x10c0
movq %rax, %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x48(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x19b0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x1110
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rdi
xorl %esi, %esi
movl $0x40, %edx
callq 0x1070
movq -0x48(%rbp), %rcx
addq $0x10, %rcx
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x18(%rax)
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movl $0x20, 0x8(%rax)
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movl $0x5, 0xc(%rax)
movq -0x48(%rbp), %rcx
addq $0x10, %rcx
movq -0x48(%rbp), %rax
subq %rax, %rcx
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x20(%rax)
movl $0x200, %edi            # imm = 0x200
callq 0x10c0
movq %rax, %rcx
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, (%rax)
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
cmpq $0x0, (%rax)
jne 0x1a41
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x1110
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
xorl %esi, %esi
movl $0x200, %edx            # imm = 0x200
callq 0x1070
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movl $0xa0111fe1, 0x38(%rax) # imm = 0xA0111FE1
jmp 0x1ab6
movq -0x50(%rbp), %rcx
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rax
movq %rcx, 0x10(%rax)
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x18(%rax), %rcx
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rdx
xorl %eax, %eax
subq 0x20(%rdx), %rax
addq %rax, %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x50(%rbp), %rcx
addq $0x10, %rcx
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x18(%rax)
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x10(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x10(%rax)
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x50(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x90(%rbp)
movq -0x50(%rbp), %rax
movl $0xfeedbeef, 0x44(%rax) # imm = 0xFEEDBEEF
movl $0x9e3779b9, -0x84(%rbp) # imm = 0x9E3779B9
movl $0x9e3779b9, -0x80(%rbp) # imm = 0x9E3779B9
movq -0x50(%rbp), %rax
movq (%rax), %rdi
callq 0x1050
movl %eax, -0x88(%rbp)
cmpl $0xc, -0x88(%rbp)
jb 0x1ddd
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 -0x50(%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 -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x50(%rbp), %rax
movl 0x44(%rax), %eax
shrl $0xd, %eax
xorl -0x80(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x50(%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 -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %edx
movq -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %ecx
shrl $0xd, %ecx
movq -0x50(%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 -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x50(%rbp), %rax
movl 0x44(%rax), %eax
shrl $0xc, %eax
xorl -0x80(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x50(%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 -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %edx
movq -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %ecx
shrl $0x5, %ecx
movq -0x50(%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 -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x50(%rbp), %rax
movl 0x44(%rax), %eax
shrl $0x3, %eax
xorl -0x80(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x50(%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 -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %edx
movq -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %ecx
shrl $0xf, %ecx
movq -0x50(%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 0x1b13
movq -0x50(%rbp), %rax
movq (%rax), %rdi
callq 0x1050
movq %rax, %rdx
movq -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
addl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x88(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x140(%rbp)
subl $0xa, %eax
ja 0x1f22
movq -0x140(%rbp), %rax
leaq 0x2210(%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 -0x50(%rbp), %rax
addl 0x44(%rax), %ecx
movl %ecx, 0x44(%rax)
movq -0x90(%rbp), %rax
movsbl 0x9(%rax), %ecx
shll $0x10, %ecx
movq -0x50(%rbp), %rax
addl 0x44(%rax), %ecx
movl %ecx, 0x44(%rax)
movq -0x90(%rbp), %rax
movsbl 0x8(%rax), %ecx
shll $0x8, %ecx
movq -0x50(%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 0x1f24
movl -0x84(%rbp), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x50(%rbp), %rax
movl 0x44(%rax), %eax
shrl $0xd, %eax
xorl -0x80(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x50(%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 -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %edx
movq -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %ecx
shrl $0xd, %ecx
movq -0x50(%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 -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x50(%rbp), %rax
movl 0x44(%rax), %eax
shrl $0xc, %eax
xorl -0x80(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x50(%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 -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %edx
movq -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %ecx
shrl $0x5, %ecx
movq -0x50(%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 -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
movl -0x80(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x80(%rbp)
movq -0x50(%rbp), %rax
movl 0x44(%rax), %eax
shrl $0x3, %eax
xorl -0x80(%rbp), %eax
movl %eax, -0x80(%rbp)
movq -0x50(%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 -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %edx
movq -0x50(%rbp), %rax
movl 0x44(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x44(%rax)
movl -0x84(%rbp), %ecx
shrl $0xf, %ecx
movq -0x50(%rbp), %rax
xorl 0x44(%rax), %ecx
movl %ecx, 0x44(%rax)
movq -0x50(%rbp), %rax
movl 0x44(%rax), %eax
movq -0x48(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
andl %ecx, %eax
movl %eax, -0x7c(%rbp)
jmp 0x210b
movq -0x48(%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 -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x7c(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x50(%rbp), %rax
movq $0x0, 0x28(%rax)
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x7c(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
cmpq $0x0, (%rax)
je 0x2194
movq -0x50(%rbp), %rcx
addq $0x10, %rcx
movq -0x48(%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 -0x50(%rbp), %rcx
addq $0x10, %rcx
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x7c(%rbp), %edx
shlq $0x4, %rdx
addq %rdx, %rax
movq %rcx, (%rax)
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x7c(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x8(%rax), %eax
movq -0x48(%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 0x24e3
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x1, 0x34(%rax)
je 0x24e3
jmp 0x2206
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x8(%rax), %eax
shll %eax
movl %eax, %eax
movl %eax, %edi
shlq $0x4, %rdi
callq 0x10c0
movq %rax, -0xb0(%rbp)
cmpq $0x0, -0xb0(%rbp)
jne 0x223b
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x1110
movq -0xb0(%rbp), %rdi
movq -0x50(%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 -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x10(%rax), %eax
movq -0x50(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl 0xc(%rcx), %ecx
addl $0x1, %ecx
shrl %cl, %eax
movl %eax, %ecx
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x10(%rax), %esi
movq -0x50(%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 -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movl %ecx, 0x28(%rax)
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movl $0x0, 0x2c(%rax)
movl $0x0, -0x98(%rbp)
movl -0x98(%rbp), %eax
movq -0x50(%rbp), %rcx
movq 0x10(%rcx), %rcx
cmpl 0x8(%rcx), %eax
jae 0x2432
movq -0x50(%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 0x241c
movq -0xa0(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0xa8(%rbp)
movq -0xa0(%rbp), %rax
movl 0x34(%rax), %eax
movq -0x50(%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 -0x50(%rbp), %rcx
movq 0x10(%rcx), %rcx
cmpl 0x28(%rcx), %eax
jbe 0x23b2
movq -0x50(%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 -0x50(%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 0x23f8
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 0x2304
jmp 0x241e
movl -0x98(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x98(%rbp)
jmp 0x22cb
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
callq 0x1030
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x8(%rax), %ecx
shll %ecx
movl %ecx, 0x8(%rax)
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movl 0xc(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rax)
movq -0xb0(%rbp), %rcx
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, (%rax)
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x2c(%rax), %eax
movq -0x50(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl 0x10(%rcx), %ecx
shrl %ecx
cmpl %ecx, %eax
jbe 0x24a7
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x30(%rax), %eax
addl $0x1, %eax
movl %eax, -0x144(%rbp)
jmp 0x24b1
xorl %eax, %eax
movl %eax, -0x144(%rbp)
jmp 0x24b1
movl -0x144(%rbp), %ecx
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movl %ecx, 0x30(%rax)
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x1, 0x30(%rax)
jbe 0x24df
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
movl $0x1, 0x34(%rax)
jmp 0x24e1
jmp 0x24e3
jmp 0x24e5
jmp 0x24e7
jmp 0x24e9
jmp 0x24eb
jmp 0x24ed
movq -0x40(%rbp), %rax
cmpl $0x0, 0x4(%rax)
je 0x25ad
movq -0x40(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x25a0
movq $0x0, -0xc0(%rbp)
movq -0xc0(%rbp), %rax
movq -0x40(%rbp), %rcx
movl (%rcx), %ecx
cmpq %rcx, %rax
jae 0x259e
movq -0x40(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x150(%rbp)
movq -0xc0(%rbp), %rax
movq -0x40(%rbp), %rcx
movl (%rcx), %ecx
cmpq %rcx, %rax
jae 0x256c
movq -0x40(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x40(%rbp), %rcx
movq 0x8(%rcx), %rcx
imulq -0xc0(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x158(%rbp)
jmp 0x2577
xorl %eax, %eax
movq %rax, -0x158(%rbp)
jmp 0x2577
movq -0x150(%rbp), %rax
movq -0x158(%rbp), %rdi
callq *%rax
movq -0xc0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xc0(%rbp)
jmp 0x2515
jmp 0x25a0
movq -0x40(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x1030
movq -0x40(%rbp), %rax
movl $0x0, 0x4(%rax)
movq -0x40(%rbp), %rdi
callq 0x1030
jmp 0x25c3
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x1331
jmp 0x25d3
jmp 0x25d5
jmp 0x25d7
movq -0x38(%rbp), %rax
cmpl $0x0, 0x4(%rax)
je 0x2697
movq -0x38(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x268a
movq $0x0, -0xc8(%rbp)
movq -0xc8(%rbp), %rax
movq -0x38(%rbp), %rcx
movl (%rcx), %ecx
cmpq %rcx, %rax
jae 0x2688
movq -0x38(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x160(%rbp)
movq -0xc8(%rbp), %rax
movq -0x38(%rbp), %rcx
movl (%rcx), %ecx
cmpq %rcx, %rax
jae 0x2656
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x38(%rbp), %rcx
movq 0x8(%rcx), %rcx
imulq -0xc8(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x168(%rbp)
jmp 0x2661
xorl %eax, %eax
movq %rax, -0x168(%rbp)
jmp 0x2661
movq -0x160(%rbp), %rax
movq -0x168(%rbp), %rdi
callq *%rax
movq -0xc8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xc8(%rbp)
jmp 0x25ff
jmp 0x268a
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x1030
movq -0x38(%rbp), %rax
movl $0x0, 0x4(%rax)
movq -0x38(%rbp), %rdi
callq 0x1030
movq -0x18(%rbp), %rdi
callq 0x1030
jmp 0x12d1
jmp 0x26bb
cmpq $0x0, -0x48(%rbp)
je 0x2b71
movl $0x1, -0xd8(%rbp)
movl $0x1, -0xd0(%rbp)
movq -0x48(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x100(%rbp)
cmpl $0x0, -0xd0(%rbp)
je 0x2b6f
movq -0x100(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq $0x0, -0x100(%rbp)
movq $0x0, -0x108(%rbp)
movl $0x0, -0xd4(%rbp)
cmpq $0x0, -0xe8(%rbp)
je 0x2b09
movl -0xd4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xd4(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0xf0(%rbp)
movl $0x0, -0xdc(%rbp)
movl $0x0, -0xcc(%rbp)
movl -0xcc(%rbp), %eax
cmpl -0xd8(%rbp), %eax
jae 0x27e9
movl -0xdc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xdc(%rbp)
movq -0xf0(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x27ae
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x48(%rbp), %rcx
movq 0x10(%rcx), %rcx
addq 0x20(%rcx), %rax
movq %rax, -0x170(%rbp)
jmp 0x27b9
xorl %eax, %eax
movq %rax, -0x170(%rbp)
jmp 0x27b9
movq -0x170(%rbp), %rax
movq %rax, -0xf0(%rbp)
cmpq $0x0, -0xf0(%rbp)
jne 0x27d3
jmp 0x27e9
jmp 0x27d5
movl -0xcc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xcc(%rbp)
jmp 0x2763
movl -0xd8(%rbp), %eax
movl %eax, -0xe0(%rbp)
movb $0x1, %al
cmpl $0x0, -0xdc(%rbp)
movb %al, -0x171(%rbp)
ja 0x2834
xorl %eax, %eax
cmpl $0x0, -0xe0(%rbp)
movb %al, -0x172(%rbp)
jbe 0x2828
cmpq $0x0, -0xf0(%rbp)
setne %al
movb %al, -0x172(%rbp)
movb -0x172(%rbp), %al
movb %al, -0x171(%rbp)
movb -0x171(%rbp), %al
testb $0x1, %al
jne 0x2843
jmp 0x2af6
cmpl $0x0, -0xdc(%rbp)
jne 0x28b5
movq -0xf0(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0xf0(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x2888
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x48(%rbp), %rcx
movq 0x10(%rcx), %rcx
addq 0x20(%rcx), %rax
movq %rax, -0x180(%rbp)
jmp 0x2893
xorl %eax, %eax
movq %rax, -0x180(%rbp)
jmp 0x2893
movq -0x180(%rbp), %rax
movq %rax, -0xf0(%rbp)
movl -0xe0(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xe0(%rbp)
jmp 0x2a39
cmpl $0x0, -0xe0(%rbp)
je 0x28c8
cmpq $0x0, -0xf0(%rbp)
jne 0x2931
movq -0xe8(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0xe8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x2904
movq -0xe8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x48(%rbp), %rcx
movq 0x10(%rcx), %rcx
addq 0x20(%rcx), %rax
movq %rax, -0x188(%rbp)
jmp 0x290f
xorl %eax, %eax
movq %rax, -0x188(%rbp)
jmp 0x290f
movq -0x188(%rbp), %rax
movq %rax, -0xe8(%rbp)
movl -0xdc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xdc(%rbp)
jmp 0x2a37
movq -0xe8(%rbp), %rdi
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rcx
xorl %eax, %eax
subq 0x20(%rcx), %rax
addq %rax, %rdi
movq -0xf0(%rbp), %rsi
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rcx
xorl %eax, %eax
subq 0x20(%rcx), %rax
addq %rax, %rsi
callq 0x1240
cmpl $0x0, %eax
jg 0x29d1
movq -0xe8(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0xe8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x29a7
movq -0xe8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x48(%rbp), %rcx
movq 0x10(%rcx), %rcx
addq 0x20(%rcx), %rax
movq %rax, -0x190(%rbp)
jmp 0x29b2
xorl %eax, %eax
movq %rax, -0x190(%rbp)
jmp 0x29b2
movq -0x190(%rbp), %rax
movq %rax, -0xe8(%rbp)
movl -0xdc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xdc(%rbp)
jmp 0x2a35
movq -0xf0(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0xf0(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x2a0d
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x48(%rbp), %rcx
movq 0x10(%rcx), %rcx
addq 0x20(%rcx), %rax
movq %rax, -0x198(%rbp)
jmp 0x2a18
xorl %eax, %eax
movq %rax, -0x198(%rbp)
jmp 0x2a18
movq -0x198(%rbp), %rax
movq %rax, -0xf0(%rbp)
movl -0xe0(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xe0(%rbp)
jmp 0x2a37
jmp 0x2a39
cmpq $0x0, -0x108(%rbp)
je 0x2a8d
cmpq $0x0, -0xf8(%rbp)
je 0x2a6e
movq -0xf8(%rbp), %rax
movq -0x48(%rbp), %rcx
movq 0x10(%rcx), %rdx
xorl %ecx, %ecx
subq 0x20(%rdx), %rcx
addq %rcx, %rax
movq %rax, -0x1a0(%rbp)
jmp 0x2a79
xorl %eax, %eax
movq %rax, -0x1a0(%rbp)
jmp 0x2a79
movq -0x1a0(%rbp), %rcx
movq -0x108(%rbp), %rax
movq %rcx, 0x10(%rax)
jmp 0x2a9b
movq -0xf8(%rbp), %rax
movq %rax, -0x100(%rbp)
cmpq $0x0, -0x108(%rbp)
je 0x2ac6
movq -0x108(%rbp), %rax
movq -0x48(%rbp), %rcx
movq 0x10(%rcx), %rdx
xorl %ecx, %ecx
subq 0x20(%rdx), %rcx
addq %rcx, %rax
movq %rax, -0x1a8(%rbp)
jmp 0x2ad1
xorl %eax, %eax
movq %rax, -0x1a8(%rbp)
jmp 0x2ad1
movq -0x1a8(%rbp), %rcx
movq -0xf8(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0xf8(%rbp), %rax
movq %rax, -0x108(%rbp)
jmp 0x27f5
movq -0xf0(%rbp), %rax
movq %rax, -0xe8(%rbp)
jmp 0x2724
movq -0x108(%rbp), %rax
movq $0x0, 0x10(%rax)
cmpl $0x1, -0xd4(%rbp)
ja 0x2b5c
movl $0x0, -0xd0(%rbp)
movq -0x108(%rbp), %rcx
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x18(%rax)
movq -0x100(%rbp), %rax
movq -0x48(%rbp), %rcx
movq 0x10(%rcx), %rdx
xorl %ecx, %ecx
subq 0x20(%rdx), %rcx
addq %rcx, %rax
movq %rax, -0x48(%rbp)
jmp 0x2b5c
movl -0xd8(%rbp), %eax
shll %eax
movl %eax, -0xd8(%rbp)
jmp 0x26e9
jmp 0x2b71
jmp 0x2b73
movq -0x48(%rbp), %rax
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x48(%rbp)
je 0x2b93
movq -0x48(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x1b0(%rbp)
jmp 0x2b9e
xorl %eax, %eax
movq %rax, -0x1b0(%rbp)
jmp 0x2b9e
movq -0x1b0(%rbp), %rax
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x50(%rbp)
je 0x2e18
movq -0x50(%rbp), %rax
movq (%rax), %rsi
movq -0x50(%rbp), %rax
movl 0x8(%rax), %edx
leaq 0x14b2(%rip), %rdi      # 0x407b
movb $0x0, %al
callq 0x1060
movq -0x50(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0x2c10
movq -0x50(%rbp), %rax
cmpq $0x0, 0x20(%rax)
jne 0x2c10
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
callq 0x1030
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x1030
movq $0x0, -0x48(%rbp)
jmp 0x2dc6
movq -0x50(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x118(%rbp)
movq -0x50(%rbp), %rax
movq -0x48(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq 0x18(%rcx), %rcx
movq -0x48(%rbp), %rdx
movq 0x10(%rdx), %rsi
xorl %edx, %edx
subq 0x20(%rsi), %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jne 0x2c65
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
addq 0x20(%rax), %rcx
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, 0x18(%rax)
movq -0x50(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x2c93
movq -0x50(%rbp), %rax
movq 0x20(%rax), %rdx
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x48(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq %rdx, 0x10(%rax,%rcx)
jmp 0x2ca3
jmp 0x2c95
movq -0x50(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x48(%rbp)
jmp 0x2ca3
movq -0x118(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x2cd8
movq -0x118(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x118(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x48(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq %rdx, 0x8(%rax,%rcx)
jmp 0x2cda
movq -0x118(%rbp), %rax
movl 0x34(%rax), %eax
movq -0x48(%rbp), %rcx
movq 0x10(%rcx), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
andl %ecx, %eax
movl %eax, -0x10c(%rbp)
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x10c(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x8(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x8(%rax)
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x10c(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
cmpq -0x118(%rbp), %rax
jne 0x2d65
movq -0x118(%rbp), %rax
movq 0x20(%rax), %rcx
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movl -0x10c(%rbp), %edx
shlq $0x4, %rdx
addq %rdx, %rax
movq %rcx, (%rax)
movq -0x118(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x2d8d
movq -0x118(%rbp), %rax
movq 0x20(%rax), %rcx
movq -0x118(%rbp), %rax
movq 0x18(%rax), %rax
movq %rcx, 0x20(%rax)
movq -0x118(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x2db5
movq -0x118(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0x118(%rbp), %rax
movq 0x20(%rax), %rax
movq %rcx, 0x18(%rax)
movq -0x48(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x10(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x10(%rax)
jmp 0x2dc8
movq -0x50(%rbp), %rax
movq (%rax), %rdi
callq 0x1030
movq -0x50(%rbp), %rdi
callq 0x1030
movq -0x58(%rbp), %rax
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x58(%rbp)
je 0x2dfd
movq -0x58(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x1b8(%rbp)
jmp 0x2e08
xorl %eax, %eax
movq %rax, -0x1b8(%rbp)
jmp 0x2e08
movq -0x1b8(%rbp), %rax
movq %rax, -0x58(%rbp)
jmp 0x2ba9
xorl %eax, %eax
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)