// File: /workspace/github_c_makefile_star2_O0/aparrish[P]rwet-examples-c/markov_gen.c
// Function: markov_gen_generate_new
int markov_gen_generate_new(markov_gen_t* mg, char** line) {

	char* current_key;
	char** possible_next;
	UT_array* output, * next_slice;
	ngram_t* current_ngram;
	int i, output_len, joined_len;

	/* grab a random ngram that occurred at the beginning of a line */
	current_ngram = *((ngram_t**)utarray_choice(mg->beginnings));

	/* make a key by joining the array with a space */
	joined_len = join_new(&current_key, current_ngram->ngram, " ");

	/* new array for output */
	utarray_new(output, &ut_str_icd);

	/* copy from first ngram to output */
	utarray_concat(output, current_ngram->ngram);

	for (i = 0; i < mg->max; i++) {

		/* try to find an ngram with this key */
		HASH_FIND_STR(mg->ngrams, current_key, current_ngram);
		free(current_key); /* previously malloc'ed by join_new */

		/* if we found an ngram */
		if (current_ngram != NULL) {
			/* get a random next word */
			possible_next = (char**)utarray_choice(current_ngram->possible_nexts);
			/* add the word to our output */
			utarray_push_back(output, possible_next);
			/* make a new key from the last n elements of output array */
			output_len = utarray_len(output);
			next_slice = slice_new(output, output_len - (mg->n), output_len);
			joined_len = join_new(&current_key, next_slice, " ");
			utarray_free(next_slice);
		}
		else {
			break;
		}
	}

	/* join output into supplied char* */
	joined_len = join_new(line, output, " ");

	utarray_free(output);
	return joined_len;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
callq 0x1150
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
xorl %edx, %edx
divl (%rcx)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
cmpl (%rax), %edx
jae 0x34f7
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x28(%rax), %rax
movq %rax, -0x90(%rbp)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x98(%rbp)
callq 0x1150
movq -0x98(%rbp), %rcx
movq -0x8(%rbp), %rdx
movq 0x10(%rdx), %rsi
xorl %edx, %edx
divl (%rsi)
movq -0x90(%rbp), %rax
movl %edx, %edx
imulq %rdx, %rcx
addq %rcx, %rax
movq %rax, -0x88(%rbp)
jmp 0x3502
xorl %eax, %eax
movq %rax, -0x88(%rbp)
jmp 0x3502
movq -0x88(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x18(%rbp), %rdi
leaq 0x1b96(%rip), %rdx      # 0x50b9
callq 0x1780
movl %eax, -0x44(%rbp)
movl $0x30, %edi
callq 0x10c0
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
xorl %esi, %esi
movl $0x30, %edx
callq 0x1070
movq -0x28(%rbp), %rax
movq 0x3874(%rip), %rcx      # 0x6dc8
movq %rcx, 0x8(%rax)
movq 0x3871(%rip), %rcx      # 0x6dd0
movq %rcx, 0x10(%rax)
movq 0x386e(%rip), %rcx      # 0x6dd8
movq %rcx, 0x18(%rax)
movq 0x386b(%rip), %rcx      # 0x6de0
movq %rcx, 0x20(%rax)
jmp 0x357b
jmp 0x357d
jmp 0x357f
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rax
cmpl $0x0, (%rax)
jne 0x3591
jmp 0x37a8
movq -0x28(%rbp), %rax
movl (%rax), %eax
movq -0x28(%rbp), %rcx
cmpl (%rcx), %eax
jbe 0x35a4
jmp 0x37a8
jmp 0x35a6
movq -0x28(%rbp), %rax
movl (%rax), %eax
movq -0x38(%rbp), %rcx
movq 0x8(%rcx), %rcx
addl (%rcx), %eax
movq -0x28(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jbe 0x364e
jmp 0x35c5
movq -0x28(%rbp), %rax
movl (%rax), %eax
movq -0x38(%rbp), %rcx
movq 0x8(%rcx), %rcx
addl (%rcx), %eax
movq -0x28(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jbe 0x3615
movq -0x28(%rbp), %rax
cmpl $0x0, 0x4(%rax)
je 0x35f9
movq -0x28(%rbp), %rax
movl 0x4(%rax), %eax
shll %eax
movl %eax, -0x9c(%rbp)
jmp 0x3606
movl $0x8, %eax
movl %eax, -0x9c(%rbp)
jmp 0x3606
movl -0x9c(%rbp), %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0x4(%rax)
jmp 0x35c5
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rdi
movq -0x28(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, %esi
movq -0x28(%rbp), %rax
imulq 0x8(%rax), %rsi
callq 0x10d0
movq -0x28(%rbp), %rcx
movq %rax, 0x28(%rcx)
cmpq $0x0, %rax
jne 0x364c
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x1120
jmp 0x364e
jmp 0x3650
movq -0x28(%rbp), %rax
movl (%rax), %eax
movq -0x28(%rbp), %rcx
cmpl (%rcx), %eax
jae 0x36c2
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rdi
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x28(%rbp), %rcx
movl (%rcx), %ecx
movq -0x38(%rbp), %rdx
movq 0x8(%rdx), %rdx
addl (%rdx), %ecx
movl %ecx, %ecx
imulq %rcx, %rax
addq %rax, %rdi
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rsi
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x28(%rbp), %rcx
movl (%rcx), %ecx
imulq %rcx, %rax
addq %rax, %rsi
movq -0x28(%rbp), %rax
movl (%rax), %eax
movq -0x28(%rbp), %rcx
subl (%rcx), %eax
movl %eax, %eax
movl %eax, %edx
movq -0x28(%rbp), %rax
imulq 0x8(%rax), %rdx
callq 0x10e0
movq -0x28(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x3743
movq $0x0, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq -0x38(%rbp), %rcx
movq 0x8(%rcx), %rcx
movl (%rcx), %ecx
cmpq %rcx, %rax
jae 0x3741
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x28(%rcx), %rdi
movq -0x28(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq -0x28(%rbp), %rdx
movl (%rdx), %edx
addq -0x50(%rbp), %rdx
imulq %rdx, %rcx
addq %rcx, %rdi
movq -0x38(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq 0x28(%rcx), %rsi
movq -0x38(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq 0x8(%rcx), %rcx
imulq -0x50(%rbp), %rcx
addq %rcx, %rsi
callq *%rax
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x36d5
jmp 0x3796
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rdi
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x28(%rbp), %rcx
movl (%rcx), %ecx
imulq %rcx, %rax
addq %rax, %rdi
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x28(%rax), %rsi
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rax
imulq $0x0, 0x8(%rax), %rax
addq %rax, %rsi
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rax
movl (%rax), %eax
movl %eax, %edx
movq -0x28(%rbp), %rax
imulq 0x8(%rax), %rdx
callq 0x10b0
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rax
movl (%rax), %ecx
movq -0x28(%rbp), %rax
addl (%rax), %ecx
movl %ecx, (%rax)
jmp 0x37aa
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jge 0x401e
jmp 0x37c3
movq $0x0, -0x38(%rbp)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x3d55
jmp 0x37dc
movq -0x18(%rbp), %rax
movq %rax, -0x70(%rbp)
movl $0xfeedbeef, -0x58(%rbp) # imm = 0xFEEDBEEF
movl $0x9e3779b9, -0x60(%rbp) # imm = 0x9E3779B9
movl $0x9e3779b9, -0x5c(%rbp) # imm = 0x9E3779B9
movq -0x18(%rbp), %rdi
callq 0x1050
movl %eax, -0x64(%rbp)
cmpl $0xc, -0x64(%rbp)
jb 0x39f9
movq -0x70(%rbp), %rax
movsbl (%rax), %eax
movq -0x70(%rbp), %rcx
movsbl 0x1(%rcx), %ecx
shll $0x8, %ecx
addl %ecx, %eax
movq -0x70(%rbp), %rcx
movsbl 0x2(%rcx), %ecx
shll $0x10, %ecx
addl %ecx, %eax
movq -0x70(%rbp), %rcx
movsbl 0x3(%rcx), %ecx
shll $0x18, %ecx
addl %ecx, %eax
addl -0x5c(%rbp), %eax
movl %eax, -0x5c(%rbp)
movq -0x70(%rbp), %rax
movsbl 0x4(%rax), %eax
movq -0x70(%rbp), %rcx
movsbl 0x5(%rcx), %ecx
shll $0x8, %ecx
addl %ecx, %eax
movq -0x70(%rbp), %rcx
movsbl 0x6(%rcx), %ecx
shll $0x10, %ecx
addl %ecx, %eax
movq -0x70(%rbp), %rcx
movsbl 0x7(%rcx), %ecx
shll $0x18, %ecx
addl %ecx, %eax
addl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x70(%rbp), %rax
movsbl 0x8(%rax), %eax
movq -0x70(%rbp), %rcx
movsbl 0x9(%rcx), %ecx
shll $0x8, %ecx
addl %ecx, %eax
movq -0x70(%rbp), %rcx
movsbl 0xa(%rcx), %ecx
shll $0x10, %ecx
addl %ecx, %eax
movq -0x70(%rbp), %rcx
movsbl 0xb(%rcx), %ecx
shll $0x18, %ecx
addl %ecx, %eax
addl -0x58(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x60(%rbp), %ecx
movl -0x5c(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %ecx
movl -0x5c(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %eax
shrl $0xd, %eax
xorl -0x5c(%rbp), %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %eax
shll $0x8, %eax
xorl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %ecx
movl -0x58(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x60(%rbp), %ecx
movl -0x58(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x60(%rbp), %eax
shrl $0xd, %eax
xorl -0x58(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x60(%rbp), %ecx
movl -0x5c(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %ecx
movl -0x5c(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %eax
shrl $0xc, %eax
xorl -0x5c(%rbp), %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %eax
shll $0x10, %eax
xorl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %ecx
movl -0x58(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x60(%rbp), %ecx
movl -0x58(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x60(%rbp), %eax
shrl $0x5, %eax
xorl -0x58(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x60(%rbp), %ecx
movl -0x5c(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %ecx
movl -0x5c(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %eax
shrl $0x3, %eax
xorl -0x5c(%rbp), %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %eax
shll $0xa, %eax
xorl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %ecx
movl -0x58(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x60(%rbp), %ecx
movl -0x58(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x60(%rbp), %eax
shrl $0xf, %eax
xorl -0x58(%rbp), %eax
movl %eax, -0x58(%rbp)
movq -0x70(%rbp), %rax
addq $0xc, %rax
movq %rax, -0x70(%rbp)
movl -0x64(%rbp), %eax
subl $0xc, %eax
movl %eax, -0x64(%rbp)
jmp 0x3805
movq -0x18(%rbp), %rdi
callq 0x1050
movq %rax, %rcx
movl -0x58(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x64(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0xa8(%rbp)
subl $0xa, %eax
ja 0x3aef
movq -0xa8(%rbp), %rax
leaq 0x164e(%rip), %rcx      # 0x5080
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x70(%rbp), %rax
movsbl 0xa(%rax), %eax
shll $0x18, %eax
addl -0x58(%rbp), %eax
movl %eax, -0x58(%rbp)
movq -0x70(%rbp), %rax
movsbl 0x9(%rax), %eax
shll $0x10, %eax
addl -0x58(%rbp), %eax
movl %eax, -0x58(%rbp)
movq -0x70(%rbp), %rax
movsbl 0x8(%rax), %eax
shll $0x8, %eax
addl -0x58(%rbp), %eax
movl %eax, -0x58(%rbp)
movq -0x70(%rbp), %rax
movsbl 0x7(%rax), %eax
shll $0x18, %eax
addl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x70(%rbp), %rax
movsbl 0x6(%rax), %eax
shll $0x10, %eax
addl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x70(%rbp), %rax
movsbl 0x5(%rax), %eax
shll $0x8, %eax
addl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x70(%rbp), %rax
movsbl 0x4(%rax), %eax
addl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movq -0x70(%rbp), %rax
movsbl 0x3(%rax), %eax
shll $0x18, %eax
addl -0x5c(%rbp), %eax
movl %eax, -0x5c(%rbp)
movq -0x70(%rbp), %rax
movsbl 0x2(%rax), %eax
shll $0x10, %eax
addl -0x5c(%rbp), %eax
movl %eax, -0x5c(%rbp)
movq -0x70(%rbp), %rax
movsbl 0x1(%rax), %eax
shll $0x8, %eax
addl -0x5c(%rbp), %eax
movl %eax, -0x5c(%rbp)
movq -0x70(%rbp), %rax
movsbl (%rax), %eax
addl -0x5c(%rbp), %eax
movl %eax, -0x5c(%rbp)
jmp 0x3af1
movl -0x60(%rbp), %ecx
movl -0x5c(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %ecx
movl -0x5c(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %eax
shrl $0xd, %eax
xorl -0x5c(%rbp), %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %eax
shll $0x8, %eax
xorl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %ecx
movl -0x58(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x60(%rbp), %ecx
movl -0x58(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x60(%rbp), %eax
shrl $0xd, %eax
xorl -0x58(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x60(%rbp), %ecx
movl -0x5c(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %ecx
movl -0x5c(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %eax
shrl $0xc, %eax
xorl -0x5c(%rbp), %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %eax
shll $0x10, %eax
xorl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %ecx
movl -0x58(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x60(%rbp), %ecx
movl -0x58(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x60(%rbp), %eax
shrl $0x5, %eax
xorl -0x58(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x60(%rbp), %ecx
movl -0x5c(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %ecx
movl -0x5c(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %eax
shrl $0x3, %eax
xorl -0x5c(%rbp), %eax
movl %eax, -0x5c(%rbp)
movl -0x58(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %ecx
movl -0x60(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %eax
shll $0xa, %eax
xorl -0x60(%rbp), %eax
movl %eax, -0x60(%rbp)
movl -0x5c(%rbp), %ecx
movl -0x58(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x60(%rbp), %ecx
movl -0x58(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x60(%rbp), %eax
shrl $0xf, %eax
xorl -0x58(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
movq -0x8(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq 0x18(%rcx), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
andl %ecx, %eax
movl %eax, -0x54(%rbp)
jmp 0x3c3f
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movl -0x54(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
cmpq $0x0, (%rax)
je 0x3c97
jmp 0x3c60
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movl -0x54(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq 0x18(%rcx), %rdx
xorl %ecx, %ecx
subq 0x20(%rdx), %rcx
addq %rcx, %rax
movq %rax, -0x38(%rbp)
jmp 0x3c9f
movq $0x0, -0x38(%rbp)
jmp 0x3ca1
cmpq $0x0, -0x38(%rbp)
je 0x3d51
movq -0x38(%rbp), %rax
movl 0x48(%rax), %eax
movq %rax, -0xb0(%rbp)
movq -0x18(%rbp), %rdi
callq 0x1050
movq %rax, %rcx
movq -0xb0(%rbp), %rax
cmpq %rcx, %rax
jne 0x3d14
movq -0x38(%rbp), %rax
movq 0x40(%rax), %rax
movq %rax, -0xc0(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0x18(%rbp), %rdi
callq 0x1050
movq -0xc0(%rbp), %rdi
movq -0xb8(%rbp), %rsi
movq %rax, %rdx
callq 0x1080
cmpl $0x0, %eax
jne 0x3d12
jmp 0x3d51
jmp 0x3d14
movq -0x38(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0x3d44
jmp 0x3d21
movq -0x38(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq 0x18(%rcx), %rdx
xorl %ecx, %ecx
subq 0x20(%rdx), %rcx
addq %rcx, %rax
movq %rax, -0x38(%rbp)
jmp 0x3d4c
movq $0x0, -0x38(%rbp)
jmp 0x3ca1
jmp 0x3d53
jmp 0x3d55
jmp 0x3d57
movq -0x18(%rbp), %rdi
callq 0x1030
cmpq $0x0, -0x38(%rbp)
je 0x400c
callq 0x1150
movq -0x38(%rbp), %rcx
movq 0x10(%rcx), %rcx
xorl %edx, %edx
divl (%rcx)
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
cmpl (%rax), %edx
jae 0x3ddf
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x28(%rax), %rax
movq %rax, -0xd0(%rbp)
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0xd8(%rbp)
callq 0x1150
movq -0xd8(%rbp), %rcx
movq -0x38(%rbp), %rdx
movq 0x10(%rdx), %rsi
xorl %edx, %edx
divl (%rsi)
movq -0xd0(%rbp), %rax
movl %edx, %edx
imulq %rdx, %rcx
addq %rcx, %rax
movq %rax, -0xc8(%rbp)
jmp 0x3dea
xorl %eax, %eax
movq %rax, -0xc8(%rbp)
jmp 0x3dea
movq -0xc8(%rbp), %rax
movq %rax, -0x20(%rbp)
jmp 0x3df7
movq -0x28(%rbp), %rax
movl (%rax), %eax
addl $0x1, %eax
movq -0x28(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jbe 0x3e91
jmp 0x3e0f
movq -0x28(%rbp), %rax
movl (%rax), %eax
addl $0x1, %eax
movq -0x28(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jbe 0x3e58
movq -0x28(%rbp), %rax
cmpl $0x0, 0x4(%rax)
je 0x3e3c
movq -0x28(%rbp), %rax
movl 0x4(%rax), %eax
shll %eax
movl %eax, -0xdc(%rbp)
jmp 0x3e49
movl $0x8, %eax
movl %eax, -0xdc(%rbp)
jmp 0x3e49
movl -0xdc(%rbp), %ecx
movq -0x28(%rbp), %rax
movl %ecx, 0x4(%rax)
jmp 0x3e0f
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rdi
movq -0x28(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, %esi
movq -0x28(%rbp), %rax
imulq 0x8(%rax), %rsi
callq 0x10d0
movq -0x28(%rbp), %rcx
movq %rax, 0x28(%rcx)
cmpq $0x0, %rax
jne 0x3e8f
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x1120
jmp 0x3e91
jmp 0x3e93
movq -0x28(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x3ed7
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x28(%rcx), %rdi
movq -0x28(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq -0x28(%rbp), %rsi
movl (%rsi), %edx
movl %edx, %r8d
addl $0x1, %r8d
movl %r8d, (%rsi)
movl %edx, %edx
imulq %rdx, %rcx
addq %rcx, %rdi
movq -0x20(%rbp), %rsi
callq *%rax
jmp 0x3f0e
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rdi
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x28(%rbp), %rdx
movl (%rdx), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, (%rdx)
movl %ecx, %ecx
imulq %rcx, %rax
addq %rax, %rdi
movq -0x20(%rbp), %rsi
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdx
callq 0x10b0
jmp 0x3f10
movq -0x28(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x40(%rbp)
movq -0x28(%rbp), %rdi
movl -0x40(%rbp), %esi
movq -0x8(%rbp), %rax
subl (%rax), %esi
movl -0x40(%rbp), %edx
callq 0x1570
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rsi
leaq -0x18(%rbp), %rdi
leaq 0x1178(%rip), %rdx      # 0x50b9
callq 0x1780
movl %eax, -0x44(%rbp)
jmp 0x3f4b
movq -0x30(%rbp), %rax
cmpl $0x0, 0x4(%rax)
je 0x3ff6
movq -0x30(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x3fe9
movq $0x0, -0x78(%rbp)
movq -0x78(%rbp), %rax
movq -0x30(%rbp), %rcx
movl (%rcx), %ecx
cmpq %rcx, %rax
jae 0x3fe7
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0xe8(%rbp)
movq -0x78(%rbp), %rax
movq -0x30(%rbp), %rcx
movl (%rcx), %ecx
cmpq %rcx, %rax
jae 0x3fbe
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x30(%rbp), %rcx
movq 0x8(%rcx), %rcx
imulq -0x78(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0xf0(%rbp)
jmp 0x3fc9
xorl %eax, %eax
movq %rax, -0xf0(%rbp)
jmp 0x3fc9
movq -0xe8(%rbp), %rax
movq -0xf0(%rbp), %rdi
callq *%rax
movq -0x78(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x78(%rbp)
jmp 0x3f70
jmp 0x3fe9
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x1030
movq -0x30(%rbp), %rax
movl $0x0, 0x4(%rax)
movq -0x30(%rbp), %rdi
callq 0x1030
jmp 0x400e
jmp 0x401e
jmp 0x4010
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x37b1
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
leaq 0x108c(%rip), %rdx      # 0x50b9
callq 0x1780
movl %eax, -0x44(%rbp)
jmp 0x4037
movq -0x28(%rbp), %rax
cmpl $0x0, 0x4(%rax)
je 0x40e2
movq -0x28(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x40d5
movq $0x0, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq -0x28(%rbp), %rcx
movl (%rcx), %ecx
cmpq %rcx, %rax
jae 0x40d3
movq -0x28(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0xf8(%rbp)
movq -0x80(%rbp), %rax
movq -0x28(%rbp), %rcx
movl (%rcx), %ecx
cmpq %rcx, %rax
jae 0x40aa
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x28(%rbp), %rcx
movq 0x8(%rcx), %rcx
imulq -0x80(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x100(%rbp)
jmp 0x40b5
xorl %eax, %eax
movq %rax, -0x100(%rbp)
jmp 0x40b5
movq -0xf8(%rbp), %rax
movq -0x100(%rbp), %rdi
callq *%rax
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0x405c
jmp 0x40d5
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x1030
movq -0x28(%rbp), %rax
movl $0x0, 0x4(%rax)
movq -0x28(%rbp), %rdi
callq 0x1030
movl -0x44(%rbp), %eax
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
nopw %cs:(%rax,%rax)