// File: /workspace/github_c_makefile_star2_O0/jonof[P]jftekwar/libsmacker/smacker.c
// Function: smk_open_generic
static smk smk_open_generic(const unsigned char m, union smk_read_t fp, unsigned long size, const unsigned char process_mode)
{
	/* Smacker structure we intend to work on / return */
	smk s;
	/* Temporary variables */
	long temp_l;
	unsigned long temp_u;
	/* r is used by macros above for return code */
	char r;
	unsigned char buf[4] = {'\0'};
	/* video hufftrees are stored as a large chunk (bitstream)
		these vars are used to load, then decode them */
	unsigned char * hufftree_chunk = NULL;
	unsigned long tree_size;
	/* a bitstream struct */
	struct smk_bit_t bs;

	/** **/
	/* safe malloc the structure */
	if ((s = calloc(1, sizeof(struct smk_t))) == NULL) {
		perror("libsmacker::smk_open_generic() - ERROR: failed to malloc() smk structure");
		return NULL;
	}

	/* Check for a valid signature */
	smk_read(buf, 3);

	if (buf[0] != 'S' || buf[1] != 'M' || buf[2] != 'K') {
		fprintf(stderr, "libsmacker::smk_open_generic - ERROR: invalid SMKn signature (got: %s)\n", buf);
		goto error;
	}

	/* Read .smk file version */
	smk_read(&s->video.v, 1);

	if (s->video.v != '2' && s->video.v != '4') {
		fprintf(stderr, "libsmacker::smk_open_generic - Warning: invalid SMK version %c (expected: 2 or 4)\n", s->video.v);

		/* take a guess */
		if (s->video.v < '4')
			s->video.v = '2';
		else
			s->video.v = '4';

		fprintf(stderr, "\tProcessing will continue as type %c\n", s->video.v);
	}

	/* width, height, total num frames */
	smk_read_ul(s->video.w);
	smk_read_ul(s->video.h);
	smk_read_ul(s->f);
	/* frames per second calculation */
	smk_read_ul(temp_u);
	temp_l = (int)temp_u;

	if (temp_l > 0) {
		/* millisec per frame */
		s->usf = temp_l * 1000;
	} else if (temp_l < 0) {
		/* 10 microsec per frame */
		s->usf = temp_l * -10;
	} else {
		/* defaults to 10 usf (= 100000 microseconds) */
		s->usf = 100000;
	}

	/* Video flags follow.
		Ring frame is important to libsmacker.
		Y scale / Y interlace go in the Video flags.
		The user should scale appropriately. */
	smk_read_ul(temp_u);

	if (temp_u & 0x01)
		s->ring_frame = 1;

	if (temp_u & 0x02)
		s->video.y_scale_mode = SMK_FLAG_Y_DOUBLE;

	if (temp_u & 0x04) {
		if (s->video.y_scale_mode == SMK_FLAG_Y_DOUBLE)
			fputs("libsmacker::smk_open_generic - Warning: SMK file specifies both Y-Double AND Y-Interlace.\n", stderr);

		s->video.y_scale_mode = SMK_FLAG_Y_INTERLACE;
	}

	/* Max buffer size for each audio track - used to pre-allocate buffers */
	for (temp_l = 0; temp_l < 7; temp_l ++)
		smk_read_ul(s->audio[temp_l].max_buffer);

	/* Read size of "hufftree chunk" - save for later. */
	smk_read_ul(tree_size);

	/* "unpacked" sizes of each huff tree */
	for (temp_l = 0; temp_l < 4; temp_l ++)
		smk_read_ul(s->video.tree_size[temp_l]);

	/* read audio rate data */
	for (temp_l = 0; temp_l < 7; temp_l ++) {
		smk_read_ul(temp_u);

		if (temp_u & 0x40000000) {
			/* Audio track specifies "exists" flag, malloc structure and copy components. */
			s->audio[temp_l].exists = 1;
			/* and for all audio tracks */
			smk_malloc(s->audio[temp_l].buffer, s->audio[temp_l].max_buffer);

			if (temp_u & 0x80000000)
				s->audio[temp_l].compress = 1;

			s->audio[temp_l].bitdepth = ((temp_u & 0x20000000) ? 16 : 8);
			s->audio[temp_l].channels = ((temp_u & 0x10000000) ? 2 : 1);

			if (temp_u & 0x0c000000) {
				fprintf(stderr, "libsmacker::smk_open_generic - Warning: audio track %ld is compressed with Bink (perceptual) Audio Codec: this is currently unsupported by libsmacker\n", temp_l);
				s->audio[temp_l].compress = 2;
			}

			/* Bits 25 & 24 are unused. */
			s->audio[temp_l].rate = (temp_u & 0x00FFFFFF);
		}
	}

	/* Skip over Dummy field */
	smk_read_ul(temp_u);
	/* FrameSizes and Keyframe marker are stored together. */
	smk_malloc(s->keyframe, (s->f + s->ring_frame));
	smk_malloc(s->chunk_size, (s->f + s->ring_frame) * sizeof(unsigned long));

	for (temp_u = 0; temp_u < (s->f + s->ring_frame); temp_u ++) {
		smk_read_ul(s->chunk_size[temp_u]);

		/* Set Keyframe */
		if (s->chunk_size[temp_u] & 0x01)
			s->keyframe[temp_u] = 1;

		/* Bits 1 is used, but the purpose is unknown. */
		s->chunk_size[temp_u] &= 0xFFFFFFFC;
	}

	/* That was easy... Now read FrameTypes! */
	smk_malloc(s->frame_type, (s->f + s->ring_frame));

	for (temp_u = 0; temp_u < (s->f + s->ring_frame); temp_u ++)
		smk_read(&s->frame_type[temp_u], 1);

	/* HuffmanTrees
		We know the sizes already: read and assemble into
		something actually parse-able at run-time */
	smk_malloc(hufftree_chunk, tree_size);
	smk_read(hufftree_chunk, tree_size);
	/* set up a Bitstream */
	smk_bs_init(&bs, hufftree_chunk, tree_size);

	/* create some tables */
	for (temp_u = 0; temp_u < 4; temp_u ++) {
		if (! smk_huff16_build(&s->video.tree[temp_u], &bs, s->video.tree_size[temp_u])) {
			fprintf(stderr, "libsmacker::smk_open_generic - ERROR: failed to create huff16 tree %lu\n", temp_u);
			goto error;
		}
	}

	/* clean up */
	smk_free(hufftree_chunk);
	/* Go ahead and malloc storage for the video frame */
	smk_malloc(s->video.frame, s->video.w * s->video.h);
	/* final processing: depending on ProcessMode, handle what to do with rest of file data */
	s->mode = process_mode;

	/* Handle the rest of the data.
		For MODE_MEMORY, read the chunks and store */
	if (s->mode == SMK_MODE_MEMORY) {
		smk_malloc(s->source.chunk_data, (s->f + s->ring_frame) * sizeof(unsigned char *));

		for (temp_u = 0; temp_u < (s->f + s->ring_frame); temp_u ++) {
			smk_malloc(s->source.chunk_data[temp_u], s->chunk_size[temp_u]);
			smk_read(s->source.chunk_data[temp_u], s->chunk_size[temp_u]);
		}
	} else {
		/* MODE_STREAM: don't read anything now, just precompute offsets.
			use fseek to verify that the file is "complete" */
		smk_malloc(s->source.file.chunk_offset, (s->f + s->ring_frame) * sizeof(unsigned long));

		for (temp_u = 0; temp_u < (s->f + s->ring_frame); temp_u ++) {
			s->source.file.chunk_offset[temp_u] = ftell(fp.file);

			if (fseek(fp.file, s->chunk_size[temp_u], SEEK_CUR)) {
				fprintf(stderr, "libsmacker::smk_open - ERROR: fseek to frame %lu not OK.\n", temp_u);
				perror("\tError reported was");
				goto error;
			}
		}
	}

	return s;
error:
	smk_free(hufftree_chunk);
	smk_close(s);
	return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x150, %rsp            # imm = 0x150
movb %cl, %al
movb %dil, %cl
movq %rsi, -0x10(%rbp)
movb %cl, -0x11(%rbp)
movq %rdx, -0x20(%rbp)
movb %al, -0x21(%rbp)
leaq -0x45(%rbp), %rdi
xorl %esi, %esi
movl $0x4, %edx
callq 0x8410
movq $0x0, -0x50(%rbp)
movl $0x1, %edi
movl $0x548, %esi            # imm = 0x548
callq 0x8c10
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
jne 0x44b88
leaq 0xa8d6e(%rip), %rdi     # 0xed8e4
callq 0x83d0
movq $0x0, -0x8(%rbp)
jmp 0x4623f
cmpb $0x0, -0x11(%rbp)
je 0x44ba5
leaq -0x45(%rbp), %rdi
movq -0x10(%rbp), %rdx
movl $0x3, %esi
callq 0x47610
movb %al, -0x41(%rbp)
jmp 0x44bbe
leaq -0x45(%rbp), %rdi
movl $0x3, %esi
leaq -0x10(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x47690
movb %al, -0x41(%rbp)
movsbl -0x41(%rbp), %eax
cmpl $0x0, %eax
jge 0x44bf0
movq 0xd440a(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
leaq 0xa8d55(%rip), %rsi     # 0xed92d
leaq 0xa86e4(%rip), %rdx     # 0xed2c3
movl $0x2b1, %ecx            # imm = 0x2B1
movb $0x0, %al
callq 0x8280
jmp 0x461f5
movzbl -0x45(%rbp), %eax
cmpl $0x53, %eax
jne 0x44c0b
movzbl -0x44(%rbp), %eax
cmpl $0x4d, %eax
jne 0x44c0b
movzbl -0x43(%rbp), %eax
cmpl $0x4b, %eax
je 0x44c2c
movq 0xd43c6(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
leaq -0x45(%rbp), %rdx
leaq 0xa8d68(%rip), %rsi     # 0xed988
movb $0x0, %al
callq 0x8280
jmp 0x461f5
cmpb $0x0, -0x11(%rbp)
je 0x44c51
movq -0x30(%rbp), %rdi
addq $0x50, %rdi
addq $0x19, %rdi
movq -0x10(%rbp), %rdx
movl $0x1, %esi
callq 0x47610
movb %al, -0x41(%rbp)
jmp 0x44c72
movq -0x30(%rbp), %rdi
addq $0x50, %rdi
addq $0x19, %rdi
movl $0x1, %esi
leaq -0x10(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x47690
movb %al, -0x41(%rbp)
movsbl -0x41(%rbp), %eax
cmpl $0x0, %eax
jge 0x44ca4
movq 0xd4356(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
leaq 0xa8ca1(%rip), %rsi     # 0xed92d
leaq 0xa8630(%rip), %rdx     # 0xed2c3
movl $0x2b9, %ecx            # imm = 0x2B9
movb $0x0, %al
callq 0x8280
jmp 0x461f5
movq -0x30(%rbp), %rax
movzbl 0x69(%rax), %eax
cmpl $0x32, %eax
je 0x44d1d
movq -0x30(%rbp), %rax
movzbl 0x69(%rax), %eax
cmpl $0x34, %eax
je 0x44d1d
movq 0xd4313(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
movq -0x30(%rbp), %rax
movzbl 0x69(%rax), %edx
leaq 0xa8cf9(%rip), %rsi     # 0xed9d0
movb $0x0, %al
callq 0x8280
movq -0x30(%rbp), %rax
movzbl 0x69(%rax), %eax
cmpl $0x34, %eax
jge 0x44cf5
movq -0x30(%rbp), %rax
movb $0x32, 0x69(%rax)
jmp 0x44cfd
movq -0x30(%rbp), %rax
movb $0x34, 0x69(%rax)
movq 0xd42d4(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
movq -0x30(%rbp), %rax
movzbl 0x69(%rax), %edx
leaq 0xa8d0d(%rip), %rsi     # 0xeda23
movb $0x0, %al
callq 0x8280
cmpb $0x0, -0x11(%rbp)
je 0x44d3a
leaq -0x45(%rbp), %rdi
movq -0x10(%rbp), %rdx
movl $0x4, %esi
callq 0x47610
movb %al, -0x41(%rbp)
jmp 0x44d53
leaq -0x45(%rbp), %rdi
movl $0x4, %esi
leaq -0x10(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x47690
movb %al, -0x41(%rbp)
movsbl -0x41(%rbp), %eax
cmpl $0x0, %eax
jge 0x44d85
movq 0xd4275(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
leaq 0xa8bc0(%rip), %rsi     # 0xed92d
leaq 0xa854f(%rip), %rdx     # 0xed2c3
movl $0x2c8, %ecx            # imm = 0x2C8
movb $0x0, %al
callq 0x8280
jmp 0x461f5
movzbl -0x42(%rbp), %eax
movl %eax, %ecx
shlq $0x18, %rcx
movzbl -0x43(%rbp), %eax
shlq $0x10, %rax
orq %rax, %rcx
movzbl -0x44(%rbp), %eax
shlq $0x8, %rax
orq %rax, %rcx
movzbl -0x45(%rbp), %eax
orq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x58(%rax)
cmpb $0x0, -0x11(%rbp)
je 0x44dd1
leaq -0x45(%rbp), %rdi
movq -0x10(%rbp), %rdx
movl $0x4, %esi
callq 0x47610
movb %al, -0x41(%rbp)
jmp 0x44dea
leaq -0x45(%rbp), %rdi
movl $0x4, %esi
leaq -0x10(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x47690
movb %al, -0x41(%rbp)
movsbl -0x41(%rbp), %eax
cmpl $0x0, %eax
jge 0x44e1c
movq 0xd41de(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
leaq 0xa8b29(%rip), %rsi     # 0xed92d
leaq 0xa84b8(%rip), %rdx     # 0xed2c3
movl $0x2c9, %ecx            # imm = 0x2C9
movb $0x0, %al
callq 0x8280
jmp 0x461f5
movzbl -0x42(%rbp), %eax
movl %eax, %ecx
shlq $0x18, %rcx
movzbl -0x43(%rbp), %eax
shlq $0x10, %rax
orq %rax, %rcx
movzbl -0x44(%rbp), %eax
shlq $0x8, %rax
orq %rax, %rcx
movzbl -0x45(%rbp), %eax
orq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x60(%rax)
cmpb $0x0, -0x11(%rbp)
je 0x44e68
leaq -0x45(%rbp), %rdi
movq -0x10(%rbp), %rdx
movl $0x4, %esi
callq 0x47610
movb %al, -0x41(%rbp)
jmp 0x44e81
leaq -0x45(%rbp), %rdi
movl $0x4, %esi
leaq -0x10(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x47690
movb %al, -0x41(%rbp)
movsbl -0x41(%rbp), %eax
cmpl $0x0, %eax
jge 0x44eb3
movq 0xd4147(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
leaq 0xa8a92(%rip), %rsi     # 0xed92d
leaq 0xa8421(%rip), %rdx     # 0xed2c3
movl $0x2ca, %ecx            # imm = 0x2CA
movb $0x0, %al
callq 0x8280
jmp 0x461f5
movzbl -0x42(%rbp), %eax
movl %eax, %ecx
shlq $0x18, %rcx
movzbl -0x43(%rbp), %eax
shlq $0x10, %rax
orq %rax, %rcx
movzbl -0x44(%rbp), %eax
shlq $0x8, %rax
orq %rax, %rcx
movzbl -0x45(%rbp), %eax
orq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x10(%rax)
cmpb $0x0, -0x11(%rbp)
je 0x44eff
leaq -0x45(%rbp), %rdi
movq -0x10(%rbp), %rdx
movl $0x4, %esi
callq 0x47610
movb %al, -0x41(%rbp)
jmp 0x44f18
leaq -0x45(%rbp), %rdi
movl $0x4, %esi
leaq -0x10(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x47690
movb %al, -0x41(%rbp)
movsbl -0x41(%rbp), %eax
cmpl $0x0, %eax
jge 0x44f4a
movq 0xd40b0(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
leaq 0xa89fb(%rip), %rsi     # 0xed92d
leaq 0xa838a(%rip), %rdx     # 0xed2c3
movl $0x2cc, %ecx            # imm = 0x2CC
movb $0x0, %al
callq 0x8280
jmp 0x461f5
movzbl -0x42(%rbp), %eax
shlq $0x18, %rax
movzbl -0x43(%rbp), %ecx
shlq $0x10, %rcx
orq %rcx, %rax
movzbl -0x44(%rbp), %ecx
shlq $0x8, %rcx
orq %rcx, %rax
movzbl -0x45(%rbp), %ecx
orq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cltq
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
jle 0x44f9c
imulq $0x3e8, -0x38(%rbp), %rax # imm = 0x3E8
cvtsi2sd %rax, %xmm0
movq -0x30(%rbp), %rax
movsd %xmm0, 0x8(%rax)
jmp 0x44fcb
cmpq $0x0, -0x38(%rbp)
jge 0x44fb8
imulq $-0xa, -0x38(%rbp), %rax
cvtsi2sd %rax, %xmm0
movq -0x30(%rbp), %rax
movsd %xmm0, 0x8(%rax)
jmp 0x44fc9
movq -0x30(%rbp), %rax
movsd 0xa8004(%rip), %xmm0    # 0xecfc8
movsd %xmm0, 0x8(%rax)
jmp 0x44fcb
cmpb $0x0, -0x11(%rbp)
je 0x44fe8
leaq -0x45(%rbp), %rdi
movq -0x10(%rbp), %rdx
movl $0x4, %esi
callq 0x47610
movb %al, -0x41(%rbp)
jmp 0x45001
leaq -0x45(%rbp), %rdi
movl $0x4, %esi
leaq -0x10(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x47690
movb %al, -0x41(%rbp)
movsbl -0x41(%rbp), %eax
cmpl $0x0, %eax
jge 0x45033
movq 0xd3fc7(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
leaq 0xa8912(%rip), %rsi     # 0xed92d
leaq 0xa82a1(%rip), %rdx     # 0xed2c3
movl $0x2de, %ecx            # imm = 0x2DE
movb $0x0, %al
callq 0x8280
jmp 0x461f5
movzbl -0x42(%rbp), %eax
shlq $0x18, %rax
movzbl -0x43(%rbp), %ecx
shlq $0x10, %rcx
orq %rcx, %rax
movzbl -0x44(%rbp), %ecx
shlq $0x8, %rcx
orq %rcx, %rax
movzbl -0x45(%rbp), %ecx
orq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x45072
movq -0x30(%rbp), %rax
movb $0x1, 0x18(%rax)
movq -0x40(%rbp), %rax
andq $0x2, %rax
cmpq $0x0, %rax
je 0x45088
movq -0x30(%rbp), %rax
movb $0x2, 0x68(%rax)
movq -0x40(%rbp), %rax
andq $0x4, %rax
cmpq $0x0, %rax
je 0x450c1
movq -0x30(%rbp), %rax
movzbl 0x68(%rax), %eax
cmpl $0x2, %eax
jne 0x450b9
movq 0xd3f2e(%rip), %rax     # 0x118fd8
movq (%rax), %rsi
leaq 0xa8995(%rip), %rdi     # 0xeda49
callq 0x8430
movq -0x30(%rbp), %rax
movb $0x1, 0x68(%rax)
movq $0x0, -0x38(%rbp)
cmpq $0x7, -0x38(%rbp)
jge 0x4518a
cmpb $0x0, -0x11(%rbp)
je 0x450f1
leaq -0x45(%rbp), %rdi
movq -0x10(%rbp), %rdx
movl $0x4, %esi
callq 0x47610
movb %al, -0x41(%rbp)
jmp 0x4510a
leaq -0x45(%rbp), %rdi
movl $0x4, %esi
leaq -0x10(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x47690
movb %al, -0x41(%rbp)
movsbl -0x41(%rbp), %eax
cmpl $0x0, %eax
jge 0x4513c
movq 0xd3ebe(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
leaq 0xa8809(%rip), %rsi     # 0xed92d
leaq 0xa8198(%rip), %rdx     # 0xed2c3
movl $0x2ef, %ecx            # imm = 0x2EF
movb $0x0, %al
callq 0x8280
jmp 0x461f5
movzbl -0x42(%rbp), %eax
movl %eax, %ecx
shlq $0x18, %rcx
movzbl -0x43(%rbp), %eax
shlq $0x10, %rax
orq %rax, %rcx
movzbl -0x44(%rbp), %eax
shlq $0x8, %rax
orq %rax, %rcx
movzbl -0x45(%rbp), %eax
orq %rax, %rcx
movq -0x30(%rbp), %rax
addq $0x3f8, %rax            # imm = 0x3F8
imulq $0x30, -0x38(%rbp), %rdx
addq %rdx, %rax
movq %rcx, 0x10(%rax)
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0x450c9
cmpb $0x0, -0x11(%rbp)
je 0x451a7
leaq -0x45(%rbp), %rdi
movq -0x10(%rbp), %rdx
movl $0x4, %esi
callq 0x47610
movb %al, -0x41(%rbp)
jmp 0x451c0
leaq -0x45(%rbp), %rdi
movl $0x4, %esi
leaq -0x10(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x47690
movb %al, -0x41(%rbp)
movsbl -0x41(%rbp), %eax
cmpl $0x0, %eax
jge 0x451f2
movq 0xd3e08(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
leaq 0xa8753(%rip), %rsi     # 0xed92d
leaq 0xa80e2(%rip), %rdx     # 0xed2c3
movl $0x2f2, %ecx            # imm = 0x2F2
movb $0x0, %al
callq 0x8280
jmp 0x461f5
movzbl -0x42(%rbp), %eax
shlq $0x18, %rax
movzbl -0x43(%rbp), %ecx
shlq $0x10, %rcx
orq %rcx, %rax
movzbl -0x44(%rbp), %ecx
shlq $0x8, %rcx
orq %rcx, %rax
movzbl -0x45(%rbp), %ecx
orq %rcx, %rax
movq %rax, -0x58(%rbp)
movq $0x0, -0x38(%rbp)
cmpq $0x4, -0x38(%rbp)
jge 0x452db
cmpb $0x0, -0x11(%rbp)
je 0x4524b
leaq -0x45(%rbp), %rdi
movq -0x10(%rbp), %rdx
movl $0x4, %esi
callq 0x47610
movb %al, -0x41(%rbp)
jmp 0x45264
leaq -0x45(%rbp), %rdi
movl $0x4, %esi
leaq -0x10(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x47690
movb %al, -0x41(%rbp)
movsbl -0x41(%rbp), %eax
cmpl $0x0, %eax
jge 0x45296
movq 0xd3d64(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
leaq 0xa86af(%rip), %rsi     # 0xed92d
leaq 0xa803e(%rip), %rdx     # 0xed2c3
movl $0x2f6, %ecx            # imm = 0x2F6
movb $0x0, %al
callq 0x8280
jmp 0x461f5
movzbl -0x42(%rbp), %eax
movl %eax, %edx
shlq $0x18, %rdx
movzbl -0x43(%rbp), %eax
shlq $0x10, %rax
orq %rax, %rdx
movzbl -0x44(%rbp), %eax
shlq $0x8, %rax
orq %rax, %rdx
movzbl -0x45(%rbp), %eax
orq %rax, %rdx
movq -0x30(%rbp), %rax
movq -0x38(%rbp), %rcx
movq %rdx, 0x70(%rax,%rcx,8)
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0x45223
movq $0x0, -0x38(%rbp)
cmpq $0x7, -0x38(%rbp)
jge 0x455b3
cmpb $0x0, -0x11(%rbp)
je 0x4530b
leaq -0x45(%rbp), %rdi
movq -0x10(%rbp), %rdx
movl $0x4, %esi
callq 0x47610
movb %al, -0x41(%rbp)
jmp 0x45324
leaq -0x45(%rbp), %rdi
movl $0x4, %esi
leaq -0x10(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x47690
movb %al, -0x41(%rbp)
movsbl -0x41(%rbp), %eax
cmpl $0x0, %eax
jge 0x45356
movq 0xd3ca4(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
leaq 0xa85ef(%rip), %rsi     # 0xed92d
leaq 0xa7f7e(%rip), %rdx     # 0xed2c3
movl $0x2fa, %ecx            # imm = 0x2FA
movb $0x0, %al
callq 0x8280
jmp 0x461f5
movzbl -0x42(%rbp), %eax
shlq $0x18, %rax
movzbl -0x43(%rbp), %ecx
shlq $0x10, %rcx
orq %rcx, %rax
movzbl -0x44(%rbp), %ecx
shlq $0x8, %rcx
orq %rcx, %rax
movzbl -0x45(%rbp), %ecx
orq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
andq $0x40000000, %rax       # imm = 0x40000000
cmpq $0x0, %rax
je 0x455a0
movq -0x30(%rbp), %rax
addq $0x3f8, %rax            # imm = 0x3F8
imulq $0x30, -0x38(%rbp), %rcx
addq %rcx, %rax
movb $0x1, (%rax)
movq -0x30(%rbp), %rax
addq $0x3f8, %rax            # imm = 0x3F8
imulq $0x30, -0x38(%rbp), %rcx
addq %rcx, %rax
cmpq $0x0, 0x20(%rax)
jne 0x453c3
jmp 0x453e2
leaq 0xa86da(%rip), %rdi     # 0xedaa4
leaq 0xa7ef2(%rip), %rsi     # 0xed2c3
movl $0x300, %edx            # imm = 0x300
leaq 0xa86e7(%rip), %rcx     # 0xedac4
callq 0x8230
movq -0x30(%rbp), %rax
addq $0x3f8, %rax            # imm = 0x3F8
imulq $0x30, -0x38(%rbp), %rcx
addq %rcx, %rax
movq 0x10(%rax), %rsi
movl $0x1, %edi
callq 0x8c10
movq %rax, %rcx
movq -0x30(%rbp), %rax
addq $0x3f8, %rax            # imm = 0x3F8
imulq $0x30, -0x38(%rbp), %rdx
addq %rdx, %rax
movq %rcx, 0x20(%rax)
movq -0x30(%rbp), %rax
addq $0x3f8, %rax            # imm = 0x3F8
imulq $0x30, -0x38(%rbp), %rcx
addq %rcx, %rax
cmpq $0x0, 0x20(%rax)
jne 0x454ad
movq 0xd3b9d(%rip), %rax     # 0x118fd8
movq (%rax), %rax
movq %rax, -0x88(%rbp)
movq -0x30(%rbp), %rax
addq $0x3f8, %rax            # imm = 0x3F8
imulq $0x30, -0x38(%rbp), %rcx
addq %rcx, %rax
movq 0x10(%rax), %rax
movq %rax, -0x80(%rbp)
callq 0x8dd0
movl (%rax), %eax
movl %eax, -0x74(%rbp)
callq 0x8dd0
movl (%rax), %edi
callq 0x8ab0
movq -0x88(%rbp), %rdi
movq -0x80(%rbp), %rdx
movl -0x74(%rbp), %r9d
leaq 0xa8699(%rip), %rsi     # 0xedb24
leaq 0xa7e31(%rip), %rcx     # 0xed2c3
movl $0x300, %r8d            # imm = 0x300
movq %rax, (%rsp)
movb $0x0, %al
callq 0x8280
movl $0x1, %edi
callq 0x88d0
movabsq $0x80000000, %rax       # imm = 0x80000000
andq -0x40(%rbp), %rax
cmpq $0x0, %rax
je 0x454d7
movq -0x30(%rbp), %rax
addq $0x3f8, %rax            # imm = 0x3F8
imulq $0x30, -0x38(%rbp), %rcx
addq %rcx, %rax
movb $0x1, 0x18(%rax)
movq -0x40(%rbp), %rdx
andq $0x20000000, %rdx       # imm = 0x20000000
movl $0x8, %eax
movl $0x10, %ecx
cmpq $0x0, %rdx
cmovnel %ecx, %eax
movb %al, %cl
movq -0x30(%rbp), %rax
addq $0x3f8, %rax            # imm = 0x3F8
imulq $0x30, -0x38(%rbp), %rdx
addq %rdx, %rax
movb %cl, 0x3(%rax)
movq -0x40(%rbp), %rdx
andq $0x10000000, %rdx       # imm = 0x10000000
movl $0x1, %eax
movl $0x2, %ecx
cmpq $0x0, %rdx
cmovnel %ecx, %eax
movb %al, %cl
movq -0x30(%rbp), %rax
addq $0x3f8, %rax            # imm = 0x3F8
imulq $0x30, -0x38(%rbp), %rdx
addq %rdx, %rax
movb %cl, 0x2(%rax)
movq -0x40(%rbp), %rax
andq $0xc000000, %rax        # imm = 0xC000000
cmpq $0x0, %rax
je 0x4557f
movq 0xd3a84(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
movq -0x38(%rbp), %rdx
leaq 0xa863f(%rip), %rsi     # 0xedba1
movb $0x0, %al
callq 0x8280
movq -0x30(%rbp), %rax
addq $0x3f8, %rax            # imm = 0x3F8
imulq $0x30, -0x38(%rbp), %rcx
addq %rcx, %rax
movb $0x2, 0x18(%rax)
movq -0x40(%rbp), %rcx
andq $0xffffff, %rcx         # imm = 0xFFFFFF
movq -0x30(%rbp), %rax
addq $0x3f8, %rax            # imm = 0x3F8
imulq $0x30, -0x38(%rbp), %rdx
addq %rdx, %rax
movq %rcx, 0x8(%rax)
jmp 0x455a2
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0x452e3
cmpb $0x0, -0x11(%rbp)
je 0x455d0
leaq -0x45(%rbp), %rdi
movq -0x10(%rbp), %rdx
movl $0x4, %esi
callq 0x47610
movb %al, -0x41(%rbp)
jmp 0x455e9
leaq -0x45(%rbp), %rdi
movl $0x4, %esi
leaq -0x10(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x47690
movb %al, -0x41(%rbp)
movsbl -0x41(%rbp), %eax
cmpl $0x0, %eax
jge 0x4561b
movq 0xd39df(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
leaq 0xa832a(%rip), %rsi     # 0xed92d
leaq 0xa7cb9(%rip), %rdx     # 0xed2c3
movl $0x313, %ecx            # imm = 0x313
movb $0x0, %al
callq 0x8280
jmp 0x461f5
movzbl -0x42(%rbp), %eax
shlq $0x18, %rax
movzbl -0x43(%rbp), %ecx
shlq $0x10, %rcx
orq %rcx, %rax
movzbl -0x44(%rbp), %ecx
shlq $0x8, %rcx
orq %rcx, %rax
movzbl -0x45(%rbp), %ecx
orq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x30(%rbp), %rax
cmpq $0x0, 0x40(%rax)
jne 0x45651
jmp 0x45670
leaq 0xa85e0(%rip), %rdi     # 0xedc38
leaq 0xa7c64(%rip), %rsi     # 0xed2c3
movl $0x315, %edx            # imm = 0x315
leaq 0xa8459(%rip), %rcx     # 0xedac4
callq 0x8230
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rsi
movq -0x30(%rbp), %rax
movzbl 0x18(%rax), %eax
addq %rax, %rsi
movl $0x1, %edi
callq 0x8c10
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x40(%rax)
movq -0x30(%rbp), %rax
cmpq $0x0, 0x40(%rax)
jne 0x45729
movq 0xd392a(%rip), %rax     # 0x118fd8
movq (%rax), %rax
movq %rax, -0xa0(%rbp)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x30(%rbp), %rcx
movzbl 0x18(%rcx), %ecx
addq %rcx, %rax
movq %rax, -0x98(%rbp)
callq 0x8dd0
movl (%rax), %eax
movl %eax, -0x8c(%rbp)
callq 0x8dd0
movl (%rax), %edi
callq 0x8ab0
movq -0xa0(%rbp), %rdi
movq -0x98(%rbp), %rdx
movl -0x8c(%rbp), %r9d
leaq 0xa8545(%rip), %rsi     # 0xedc4c
leaq 0xa7bb5(%rip), %rcx     # 0xed2c3
movl $0x315, %r8d            # imm = 0x315
movq %rax, (%rsp)
movb $0x0, %al
callq 0x8280
movl $0x1, %edi
callq 0x88d0
movq -0x30(%rbp), %rax
cmpq $0x0, 0x38(%rax)
jne 0x45736
jmp 0x45755
leaq 0xa8580(%rip), %rdi     # 0xedcbd
leaq 0xa7b7f(%rip), %rsi     # 0xed2c3
movl $0x316, %edx            # imm = 0x316
leaq 0xa8374(%rip), %rcx     # 0xedac4
callq 0x8230
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rsi
movq -0x30(%rbp), %rax
movzbl 0x18(%rax), %eax
addq %rax, %rsi
shlq $0x3, %rsi
movl $0x1, %edi
callq 0x8c10
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x38(%rax)
movq -0x30(%rbp), %rax
cmpq $0x0, 0x38(%rax)
jne 0x45816
movq 0xd3841(%rip), %rax     # 0x118fd8
movq (%rax), %rax
movq %rax, -0xb8(%rbp)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x30(%rbp), %rcx
movzbl 0x18(%rcx), %ecx
addq %rcx, %rax
shlq $0x3, %rax
movq %rax, -0xb0(%rbp)
callq 0x8dd0
movl (%rax), %eax
movl %eax, -0xa4(%rbp)
callq 0x8dd0
movl (%rax), %edi
callq 0x8ab0
movq -0xb8(%rbp), %rdi
movq -0xb0(%rbp), %rdx
movl -0xa4(%rbp), %r9d
leaq 0xa84df(%rip), %rsi     # 0xedcd3
leaq 0xa7ac8(%rip), %rcx     # 0xed2c3
movl $0x316, %r8d            # imm = 0x316
movq %rax, (%rsp)
movb $0x0, %al
callq 0x8280
movl $0x1, %edi
callq 0x88d0
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq -0x30(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x30(%rbp), %rdx
movzbl 0x18(%rdx), %edx
addq %rdx, %rcx
cmpq %rcx, %rax
jae 0x45936
cmpb $0x0, -0x11(%rbp)
je 0x4585b
leaq -0x45(%rbp), %rdi
movq -0x10(%rbp), %rdx
movl $0x4, %esi
callq 0x47610
movb %al, -0x41(%rbp)
jmp 0x45874
leaq -0x45(%rbp), %rdi
movl $0x4, %esi
leaq -0x10(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x47690
movb %al, -0x41(%rbp)
movsbl -0x41(%rbp), %eax
cmpl $0x0, %eax
jge 0x458a6
movq 0xd3754(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
leaq 0xa809f(%rip), %rsi     # 0xed92d
leaq 0xa7a2e(%rip), %rdx     # 0xed2c3
movl $0x319, %ecx            # imm = 0x319
movb $0x0, %al
callq 0x8280
jmp 0x461f5
movzbl -0x42(%rbp), %eax
movl %eax, %edx
shlq $0x18, %rdx
movzbl -0x43(%rbp), %eax
shlq $0x10, %rax
orq %rax, %rdx
movzbl -0x44(%rbp), %eax
shlq $0x8, %rax
orq %rax, %rdx
movzbl -0x45(%rbp), %eax
orq %rax, %rdx
movq -0x30(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x40(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x30(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x40(%rbp), %rcx
movq (%rax,%rcx,8), %rax
andq $0x1, %rax
cmpq $0x0, %rax
je 0x45907
movq -0x30(%rbp), %rax
movq 0x40(%rax), %rax
movq -0x40(%rbp), %rcx
movb $0x1, (%rax,%rcx)
movq -0x30(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x40(%rbp), %rcx
movabsq $0xfffffffc, %rdx       # imm = 0xFFFFFFFC
andq (%rax,%rcx,8), %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x4581e
movq -0x30(%rbp), %rax
cmpq $0x0, 0x48(%rax)
jne 0x45943
jmp 0x45962
leaq 0xa83fc(%rip), %rdi     # 0xedd46
leaq 0xa7972(%rip), %rsi     # 0xed2c3
movl $0x324, %edx            # imm = 0x324
leaq 0xa8167(%rip), %rcx     # 0xedac4
callq 0x8230
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rsi
movq -0x30(%rbp), %rax
movzbl 0x18(%rax), %eax
addq %rax, %rsi
movl $0x1, %edi
callq 0x8c10
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x48(%rax)
movq -0x30(%rbp), %rax
cmpq $0x0, 0x48(%rax)
jne 0x45a1b
movq 0xd3638(%rip), %rax     # 0x118fd8
movq (%rax), %rax
movq %rax, -0xd0(%rbp)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x30(%rbp), %rcx
movzbl 0x18(%rcx), %ecx
addq %rcx, %rax
movq %rax, -0xc8(%rbp)
callq 0x8dd0
movl (%rax), %eax
movl %eax, -0xbc(%rbp)
callq 0x8dd0
movl (%rax), %edi
callq 0x8ab0
movq -0xd0(%rbp), %rdi
movq -0xc8(%rbp), %rdx
movl -0xbc(%rbp), %r9d
leaq 0xa8363(%rip), %rsi     # 0xedd5c
leaq 0xa78c3(%rip), %rcx     # 0xed2c3
movl $0x324, %r8d            # imm = 0x324
movq %rax, (%rsp)
movb $0x0, %al
callq 0x8280
movl $0x1, %edi
callq 0x88d0
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq -0x30(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x30(%rbp), %rdx
movzbl 0x18(%rdx), %edx
addq %rdx, %rcx
cmpq %rcx, %rax
jae 0x45ace
cmpb $0x0, -0x11(%rbp)
je 0x45a68
movq -0x30(%rbp), %rax
movq 0x48(%rax), %rdi
addq -0x40(%rbp), %rdi
movq -0x10(%rbp), %rdx
movl $0x1, %esi
callq 0x47610
movb %al, -0x41(%rbp)
jmp 0x45a89
movq -0x30(%rbp), %rax
movq 0x48(%rax), %rdi
addq -0x40(%rbp), %rdi
movl $0x1, %esi
leaq -0x10(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x47690
movb %al, -0x41(%rbp)
movsbl -0x41(%rbp), %eax
cmpl $0x0, %eax
jge 0x45abb
movq 0xd353f(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
leaq 0xa7e8a(%rip), %rsi     # 0xed92d
leaq 0xa7819(%rip), %rdx     # 0xed2c3
movl $0x327, %ecx            # imm = 0x327
movb $0x0, %al
callq 0x8280
jmp 0x461f5
jmp 0x45abd
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x45a23
cmpq $0x0, -0x50(%rbp)
jne 0x45ad7
jmp 0x45af6
leaq 0xa82f1(%rip), %rdi     # 0xeddcf
leaq 0xa77de(%rip), %rsi     # 0xed2c3
movl $0x32c, %edx            # imm = 0x32C
leaq 0xa7fd3(%rip), %rcx     # 0xedac4
callq 0x8230
movq -0x58(%rbp), %rsi
movl $0x1, %edi
callq 0x8c10
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x50(%rbp)
jne 0x45b82
movq 0xd34c2(%rip), %rax     # 0x118fd8
movq (%rax), %rax
movq %rax, -0xe8(%rbp)
movq -0x58(%rbp), %rax
movq %rax, -0xe0(%rbp)
callq 0x8dd0
movl (%rax), %eax
movl %eax, -0xd4(%rbp)
callq 0x8dd0
movl (%rax), %edi
callq 0x8ab0
movq -0xe8(%rbp), %rdi
movq -0xe0(%rbp), %rdx
movl -0xd4(%rbp), %r9d
leaq 0xa8286(%rip), %rsi     # 0xedde6
leaq 0xa775c(%rip), %rcx     # 0xed2c3
movl $0x32c, %r8d            # imm = 0x32C
movq %rax, (%rsp)
movb $0x0, %al
callq 0x8280
movl $0x1, %edi
callq 0x88d0
cmpb $0x0, -0x11(%rbp)
je 0x45b9e
movq -0x50(%rbp), %rdi
movq -0x58(%rbp), %rsi
movq -0x10(%rbp), %rdx
callq 0x47610
movb %al, -0x41(%rbp)
jmp 0x45bb6
movq -0x50(%rbp), %rdi
movq -0x58(%rbp), %rsi
leaq -0x10(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x47690
movb %al, -0x41(%rbp)
movsbl -0x41(%rbp), %eax
cmpl $0x0, %eax
jge 0x45be8
movq 0xd3412(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
leaq 0xa7d5d(%rip), %rsi     # 0xed92d
leaq 0xa76ec(%rip), %rdx     # 0xed2c3
movl $0x32d, %ecx            # imm = 0x32D
movb $0x0, %al
callq 0x8280
jmp 0x461f5
movq -0x50(%rbp), %rsi
movq -0x58(%rbp), %rdx
leaq -0x70(%rbp), %rdi
callq 0x47720
movq $0x0, -0x40(%rbp)
cmpq $0x4, -0x40(%rbp)
jae 0x45c6a
movq -0x30(%rbp), %rdi
addq $0x50, %rdi
addq $0x40, %rdi
imulq $0x18, -0x40(%rbp), %rax
addq %rax, %rdi
movq -0x30(%rbp), %rax
movq -0x40(%rbp), %rcx
movq 0x70(%rax,%rcx,8), %rax
movl %eax, %edx
leaq -0x70(%rbp), %rsi
callq 0x477b0
cmpl $0x0, %eax
jne 0x45c5a
movq 0xd3398(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
movq -0x40(%rbp), %rdx
leaq 0xa820c(%rip), %rsi     # 0xede5a
movb $0x0, %al
callq 0x8280
jmp 0x461f5
jmp 0x45c5c
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x45c01
cmpq $0x0, -0x50(%rbp)
je 0x45c73
jmp 0x45c92
leaq 0xa8228(%rip), %rdi     # 0xedea2
leaq 0xa7642(%rip), %rsi     # 0xed2c3
movl $0x33a, %edx            # imm = 0x33A
leaq 0xa7e37(%rip), %rcx     # 0xedac4
callq 0x8230
movq -0x50(%rbp), %rdi
callq 0x8260
movq $0x0, -0x50(%rbp)
movq -0x30(%rbp), %rax
cmpq $0x0, 0x3f0(%rax)
jne 0x45cb3
jmp 0x45cd2
leaq 0xa81f7(%rip), %rdi     # 0xedeb1
leaq 0xa7602(%rip), %rsi     # 0xed2c3
movl $0x33c, %edx            # imm = 0x33C
leaq 0xa7df7(%rip), %rcx     # 0xedac4
callq 0x8230
movq -0x30(%rbp), %rax
movq 0x58(%rax), %rsi
movq -0x30(%rbp), %rax
imulq 0x60(%rax), %rsi
movl $0x1, %edi
callq 0x8c10
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x3f0(%rax)
movq -0x30(%rbp), %rax
cmpq $0x0, 0x3f0(%rax)
jne 0x45d8d
movq 0xd32c4(%rip), %rax     # 0x118fd8
movq (%rax), %rax
movq %rax, -0x100(%rbp)
movq -0x30(%rbp), %rax
movq 0x58(%rax), %rax
movq -0x30(%rbp), %rcx
imulq 0x60(%rcx), %rax
movq %rax, -0xf8(%rbp)
callq 0x8dd0
movl (%rax), %eax
movl %eax, -0xec(%rbp)
callq 0x8dd0
movl (%rax), %edi
callq 0x8ab0
movq -0x100(%rbp), %rdi
movq -0xf8(%rbp), %rdx
movl -0xec(%rbp), %r9d
leaq 0xa815d(%rip), %rsi     # 0xedec8
leaq 0xa7551(%rip), %rcx     # 0xed2c3
movl $0x33c, %r8d            # imm = 0x33C
movq %rax, (%rsp)
movb $0x0, %al
callq 0x8280
movl $0x1, %edi
callq 0x88d0
movb -0x21(%rbp), %cl
movq -0x30(%rbp), %rax
movb %cl, (%rax)
movq -0x30(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x1, %eax
jne 0x4605c
movq -0x30(%rbp), %rax
cmpq $0x0, 0x28(%rax)
jne 0x45db3
jmp 0x45dd2
leaq 0xa8182(%rip), %rdi     # 0xedf3c
leaq 0xa7502(%rip), %rsi     # 0xed2c3
movl $0x343, %edx            # imm = 0x343
leaq 0xa7cf7(%rip), %rcx     # 0xedac4
callq 0x8230
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rsi
movq -0x30(%rbp), %rax
movzbl 0x18(%rax), %eax
addq %rax, %rsi
shlq $0x3, %rsi
movl $0x1, %edi
callq 0x8c10
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x30(%rbp), %rax
cmpq $0x0, 0x28(%rax)
jne 0x45e93
movq 0xd31c4(%rip), %rax     # 0x118fd8
movq (%rax), %rax
movq %rax, -0x118(%rbp)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x30(%rbp), %rcx
movzbl 0x18(%rcx), %ecx
addq %rcx, %rax
shlq $0x3, %rax
movq %rax, -0x110(%rbp)
callq 0x8dd0
movl (%rax), %eax
movl %eax, -0x104(%rbp)
callq 0x8dd0
movl (%rax), %edi
callq 0x8ab0
movq -0x118(%rbp), %rdi
movq -0x110(%rbp), %rdx
movl -0x104(%rbp), %r9d
leaq 0xa80e8(%rip), %rsi     # 0xedf59
leaq 0xa744b(%rip), %rcx     # 0xed2c3
movl $0x343, %r8d            # imm = 0x343
movq %rax, (%rsp)
movb $0x0, %al
callq 0x8280
movl $0x1, %edi
callq 0x88d0
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq -0x30(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x30(%rbp), %rdx
movzbl 0x18(%rdx), %edx
addq %rdx, %rcx
cmpq %rcx, %rax
jae 0x46057
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x40(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
jne 0x45ed0
jmp 0x45eef
leaq 0xa80fc(%rip), %rdi     # 0xedfd3
leaq 0xa73e5(%rip), %rsi     # 0xed2c3
movl $0x346, %edx            # imm = 0x346
leaq 0xa7bda(%rip), %rcx     # 0xedac4
callq 0x8230
movq -0x30(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x40(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
movl $0x1, %edi
callq 0x8c10
movq %rax, %rdx
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x40(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x40(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
jne 0x45fae
movq 0xd30a2(%rip), %rax     # 0x118fd8
movq (%rax), %rax
movq %rax, -0x130(%rbp)
movq -0x30(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x40(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x128(%rbp)
callq 0x8dd0
movl (%rax), %eax
movl %eax, -0x11c(%rbp)
callq 0x8dd0
movl (%rax), %edi
callq 0x8ab0
movq -0x130(%rbp), %rdi
movq -0x128(%rbp), %rdx
movl -0x11c(%rbp), %r9d
leaq 0xa806c(%rip), %rsi     # 0xedff8
leaq 0xa7330(%rip), %rcx     # 0xed2c3
movl $0x346, %r8d            # imm = 0x346
movq %rax, (%rsp)
movb $0x0, %al
callq 0x8280
movl $0x1, %edi
callq 0x88d0
cmpb $0x0, -0x11(%rbp)
je 0x45fe2
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x40(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x30(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x40(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
movq -0x10(%rbp), %rdx
callq 0x47610
movb %al, -0x41(%rbp)
jmp 0x46012
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x40(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x30(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x40(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
leaq -0x10(%rbp), %rdx
leaq -0x20(%rbp), %rcx
callq 0x47690
movb %al, -0x41(%rbp)
movsbl -0x41(%rbp), %eax
cmpl $0x0, %eax
jge 0x46044
movq 0xd2fb6(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
leaq 0xa7901(%rip), %rsi     # 0xed92d
leaq 0xa7290(%rip), %rdx     # 0xed2c3
movl $0x347, %ecx            # imm = 0x347
movb $0x0, %al
callq 0x8280
jmp 0x461f5
jmp 0x46046
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x45e9b
jmp 0x461eb
movq -0x30(%rbp), %rax
cmpq $0x0, 0x30(%rax)
jne 0x46069
jmp 0x46088
leaq 0xa800a(%rip), %rdi     # 0xee07a
leaq 0xa724c(%rip), %rsi     # 0xed2c3
movl $0x34c, %edx            # imm = 0x34C
leaq 0xa7a41(%rip), %rcx     # 0xedac4
callq 0x8230
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rsi
movq -0x30(%rbp), %rax
movzbl 0x18(%rax), %eax
addq %rax, %rsi
shlq $0x3, %rsi
movl $0x1, %edi
callq 0x8c10
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x30(%rbp), %rax
cmpq $0x0, 0x30(%rax)
jne 0x46149
movq 0xd2f0e(%rip), %rax     # 0x118fd8
movq (%rax), %rax
movq %rax, -0x148(%rbp)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x30(%rbp), %rcx
movzbl 0x18(%rcx), %ecx
addq %rcx, %rax
shlq $0x3, %rax
movq %rax, -0x140(%rbp)
callq 0x8dd0
movl (%rax), %eax
movl %eax, -0x134(%rbp)
callq 0x8dd0
movl (%rax), %edi
callq 0x8ab0
movq -0x148(%rbp), %rdi
movq -0x140(%rbp), %rdx
movl -0x134(%rbp), %r9d
leaq 0xa7f77(%rip), %rsi     # 0xee09e
leaq 0xa7195(%rip), %rcx     # 0xed2c3
movl $0x34c, %r8d            # imm = 0x34C
movq %rax, (%rsp)
movb $0x0, %al
callq 0x8280
movl $0x1, %edi
callq 0x88d0
movq $0x0, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq -0x30(%rbp), %rcx
movq 0x10(%rcx), %rcx
movq -0x30(%rbp), %rdx
movzbl 0x18(%rdx), %edx
addq %rdx, %rcx
cmpq %rcx, %rax
jae 0x461e9
movq -0x10(%rbp), %rdi
callq 0x8350
movq %rax, %rdx
movq -0x30(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x40(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x10(%rbp), %rdi
movq -0x30(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x40(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
movl $0x1, %edx
callq 0x9080
cmpl $0x0, %eax
je 0x461d6
movq 0xd2e25(%rip), %rax     # 0x118fd8
movq (%rax), %rdi
movq -0x40(%rbp), %rdx
leaq 0xa7f5e(%rip), %rsi     # 0xee11f
movb $0x0, %al
callq 0x8280
leaq 0xa70a3(%rip), %rdi     # 0xed272
callq 0x83d0
jmp 0x461f5
jmp 0x461d8
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x46151
jmp 0x461eb
movq -0x30(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x4623f
cmpq $0x0, -0x50(%rbp)
je 0x461fe
jmp 0x4621d
leaq 0xa7c9d(%rip), %rdi     # 0xedea2
leaq 0xa70b7(%rip), %rsi     # 0xed2c3
movl $0x35b, %edx            # imm = 0x35B
leaq 0xa78ac(%rip), %rcx     # 0xedac4
callq 0x8230
movq -0x50(%rbp), %rdi
callq 0x8260
movq $0x0, -0x50(%rbp)
movq -0x30(%rbp), %rdi
callq 0x463d0
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq
nopl (%rax)