// File: /workspace/github_c_makefile_star2_O0/TurkeyMcMac[P]ts3d/src/play-level.c
// Function: play_level
int play_level(const char *root_dir, struct save_state *save,
	const char *map_name, struct ticker *timer, struct logger *log)
{
	struct loader ldr;
	loader_init(&ldr, root_dir);
	logger_free(loader_set_logger(&ldr, log));
	struct map *map = load_map(&ldr, map_name);
	if (!map) {
		logger_printf(loader_logger(&ldr), LOGGER_ERROR,
			"Failed to load map \"%s\"\n", map_name);
		goto error_map;
	}
	if (map->prereq && !save_state_is_complete(save, map->prereq))
		goto error_map; // Map not unlocked.
	int health_meter_full_color = color_map_add_pair(
		loader_color_map(&ldr),
		pixel(HEALTH_METER_FG_COLOR, HEALTH_METER_BG_COLOR));
	int health_meter_empty_color = color_map_add_pair(
		loader_color_map(&ldr),
		pixel(HEALTH_METER_BG_COLOR, HEALTH_METER_FG_COLOR));
	struct meter health_meter = {
		.label = "HEALTH",
		.full_style = COLOR_PAIR(health_meter_full_color),
		.empty_style = COLOR_PAIR(health_meter_empty_color),
		// Position and size not initialized yet.
	};
	int reload_meter_full_color = color_map_add_pair(
		loader_color_map(&ldr),
		pixel(RELOAD_METER_FG_COLOR, RELOAD_METER_BG_COLOR));
	int reload_meter_empty_color = color_map_add_pair(
		loader_color_map(&ldr),
		pixel(RELOAD_METER_BG_COLOR, RELOAD_METER_FG_COLOR));
	struct meter reload_meter = {
		.label = "RELOAD",
		.full_style = COLOR_PAIR(reload_meter_full_color),
		.empty_style = COLOR_PAIR(reload_meter_empty_color),
		// Position and size not initialized yet.
	};
	color_map_apply(loader_color_map(&ldr));
	loader_print_summary(&ldr);
	srand(time(NULL)); // For random_start_frame
	struct ents ents;
	init_entities(&ents, map);
	d3d_board *board = map->board;
	WINDOW *dead_popup = NULL;
	WINDOW *pause_popup = NULL;
	WINDOW *quit_popup = NULL;
	d3d_camera *cam = NULL;
	struct player player;
	player_init(&player, map);
	keypad(stdscr, TRUE);
	int translation = '\0'; // No initial translation
	int turn_duration = 0; // No initial turning
	bool won = false;
	bool paused = false;
	bool quitting = false;
	bool do_redraw = true;
	struct screen_area area = { 0, 0, 1, 1 };
	clear();
	for (;;) {
		static const char dead_msg[] =
			"You died.\n"
			"Press Y to return to the menu.";
		static const char pause_msg[] =
			"Game paused.\n"
			"Press P to resume.";
		static const char quit_msg[] =
			"Are you sure you want to quit?\n"
			"Press Y to confirm or N to cancel.";
		tick(timer);
		// next_key is preserved after the input flush and put back into
		// the input buffer; only keeping one key in the buffer ensures
		// responsiveness, though keys could theoretically be dropped:
		int key = getch(), next_key = getch();
		flushinp();
		if (next_key != ERR) ungetch(next_key);
		int lowkey = key >= 0 && key <= UCHAR_MAX ? tolower(key) : key;
		bool resized = key == KEY_RESIZE || !cam;
		if (resized) {
			update_term_size();
			area.width = COLS;
			// LINES - 1 so that one is reserved for the health and
			// reload meters:
			area.height = LINES > 0 ? LINES - 1 : 0;
			d3d_free_camera(cam);
			cam = camera_with_dims(area.width, area.height);
			// Takes up the left half of the bottom:
			health_meter.x = 0;
			health_meter.y = area.height;
			health_meter.width = area.width / 2;
			health_meter.win = stdscr;
			// Takes up the right half of the bottom:
			reload_meter.x = health_meter.width;
			reload_meter.y = area.height;
			reload_meter.width = area.width - health_meter.width;
			reload_meter.win = stdscr;
			if (dead_popup) {
				delwin(dead_popup);
				dead_popup = popup_window(dead_msg);
			}
			if (pause_popup) {
				delwin(pause_popup);
				pause_popup = popup_window(pause_msg);
			}
			if (quit_popup) {
				delwin(quit_popup);
				quit_popup = popup_window(quit_msg);
			}
			do_redraw = true;
		}
		int remaining = get_remaining(&ents);
		// Player wins if all targets gone and they are not, or if they
		// won already:
		won = won || (remaining <= 0 && !player_is_dead(&player));
		bool lost = !won && player_is_dead(&player);
		if (do_redraw) {
			d3d_draw(cam, player.body.pos, player.facing, board,
				ents_num(&ents), ents_sprites(&ents));
			display_frame(cam, &area, loader_color_map(&ldr));
			health_meter.fraction = player_health_fraction(&player);
			meter_draw(&health_meter);
			reload_meter.fraction = player_reload_fraction(&player);
			meter_draw(&reload_meter);
			attron(A_BOLD);
			if (won) {
				mvaddstr(0, 0,
					"YOU WIN! Press Y to return to menu.");
			} else {
				mvprintw(0, 0, "TARGETS LEFT: %d", remaining);
			}
			attroff(A_BOLD);
			refresh();
		}
		do_redraw = resized;
		if (dead_popup) {
			// Display the death popup if possible.
			touchwin(dead_popup);
			wrefresh(dead_popup);
		} else if (!lost && quitting) {
			if (quit_popup) {
				// Display the quit popup if possible.
				touchwin(quit_popup);
				wrefresh(quit_popup);
			}
			switch (lowkey) {
			case 'y':
				goto quit;
			case 'n':
				if (quit_popup) {
					delwin(quit_popup);
					quit_popup = NULL;
					touchwin(stdscr);
					do_redraw = true;
				}
				quitting = false;
				break;
			}
			continue;
		} else if (!lost && paused) {
			if (pause_popup) {
				// Display the pause popup if possible.
				touchwin(pause_popup);
				wrefresh(pause_popup);
			}
			switch (lowkey) {
			case 'p':
				if (pause_popup) {
					delwin(pause_popup);
					pause_popup = NULL;
					touchwin(stdscr);
					do_redraw = true;
				}
				paused = false;
				break;
			case 'x':
				quit_popup = popup_window(quit_msg);
				quitting = true;
				break;
			}
			continue;
		}
		// After this point, a redraw is needed next time:
		do_redraw = true;
		if (won && lowkey == 'y') {
			// Player quits after winning.
			goto quit;
		} else if (lost) {
			// Player lost, entities still simulated. Y to quit.
			if (lowkey == 'y') goto quit;
			if (!dead_popup) dead_popup = popup_window(dead_msg);
		} else if (lowkey == 'p') {
			paused = true;
			pause_popup = popup_window(pause_msg);
			continue;
		} else if (lowkey == 'x' || key == ESC) {
			quitting = true;
			quit_popup = popup_window(quit_msg);
			continue;
		} else {
			// Otherwise, let the player be controlled.
			move_player(&player,
				&translation, &turn_duration, key);
		}
		move_ents(&ents, map, &player);
		player_collide(&player, &ents);
		hit_ents(&ents);
		// Let the player shoot. key != lowkey means the key is an
		// uppercase char. The shooting is blocked by player_try_shoot
		// if the player is dead:
		if (key != lowkey || key == ' ')
			player_try_shoot(&player, &ents);
		shoot_bullets(&ents);
		player_tick(&player);
		ents_tick(&ents);
		ents_clean_up_dead(&ents);
	}
quit:
	clear();
	refresh();
	if (pause_popup) delwin(pause_popup);
	if (quit_popup) delwin(quit_popup);
	if (dead_popup) delwin(dead_popup);
	d3d_free_camera(cam);
	// Record the player's winning:
	if (won) save_state_mark_complete(save, map_name);
	ents_destroy(&ents);
	loader_free(&ldr);
	return 0;

error_map:
	loader_free(&ldr);
	return -1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2c0, %rsp            # imm = 0x2C0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq -0x10(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0x98b0
movq -0x30(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0x9dc0
movq %rax, %rdi
callq 0xa3c0
movq -0x20(%rbp), %rsi
leaq -0xe8(%rbp), %rdi
callq 0xb730
movq %rax, -0xf0(%rbp)
cmpq $0x0, -0xf0(%rbp)
jne 0xd5f3
leaq -0xe8(%rbp), %rdi
callq 0x9da0
movq %rax, %rdi
movq -0x20(%rbp), %rcx
movl $0x4, %esi
leaq 0x4beb(%rip), %rdx      # 0x121d2
movb $0x0, %al
callq 0xa260
jmp 0xe1f6
movq -0xf0(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0xd61e
movq -0x18(%rbp), %rdi
movq -0xf0(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0xf580
testb $0x1, %al
jne 0xd61e
jmp 0xe1f6
leaq -0xe8(%rbp), %rdi
callq 0x9d80
movq %rax, %rdi
movl $0x2, %esi
callq 0xff10
movl %eax, -0xf4(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x9d80
movq %rax, %rdi
movl $0x10, %esi
callq 0xff10
movl %eax, -0xf8(%rbp)
leaq 0x4b88(%rip), %rax      # 0x121eb
movq %rax, -0x128(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x120(%rbp)
movl -0xf4(%rbp), %eax
shll $0x8, %eax
andl $0xff00, %eax           # imm = 0xFF00
movl %eax, -0x118(%rbp)
movl -0xf8(%rbp), %eax
shll $0x8, %eax
andl $0xff00, %eax           # imm = 0xFF00
movl %eax, -0x114(%rbp)
movl $0x0, -0x110(%rbp)
movl $0x0, -0x10c(%rbp)
movl $0x0, -0x108(%rbp)
movq $0x0, -0x100(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x9d80
movq %rax, %rdi
movl $0x1, %esi
callq 0xff10
movl %eax, -0x12c(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x9d80
movq %rax, %rdi
movl $0x8, %esi
callq 0xff10
movl %eax, -0x130(%rbp)
leaq 0x4ae7(%rip), %rax      # 0x121f2
movq %rax, -0x160(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x158(%rbp)
movl -0x12c(%rbp), %eax
shll $0x8, %eax
andl $0xff00, %eax           # imm = 0xFF00
movl %eax, -0x150(%rbp)
movl -0x130(%rbp), %eax
shll $0x8, %eax
andl $0xff00, %eax           # imm = 0xFF00
movl %eax, -0x14c(%rbp)
movl $0x0, -0x148(%rbp)
movl $0x0, -0x144(%rbp)
movl $0x0, -0x140(%rbp)
movq $0x0, -0x138(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x9d80
movq %rax, %rdi
callq 0xffa0
leaq -0xe8(%rbp), %rdi
callq 0x9cf0
xorl %eax, %eax
movl %eax, %edi
callq 0x2550
movl %eax, %edi
callq 0x23b0
movq -0xf0(%rbp), %rsi
leaq -0x180(%rbp), %rdi
callq 0xe220
movq -0xf0(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x188(%rbp)
movq $0x0, -0x190(%rbp)
movq $0x0, -0x198(%rbp)
movq $0x0, -0x1a0(%rbp)
movq $0x0, -0x1a8(%rbp)
movq -0xf0(%rbp), %rsi
leaq -0x1f8(%rbp), %rdi
callq 0xe980
movq 0x87cf(%rip), %rax      # 0x15fd8
movq (%rax), %rdi
movl $0x1, %esi
callq 0x2140
movl $0x0, -0x1fc(%rbp)
movl $0x0, -0x200(%rbp)
movb $0x0, -0x201(%rbp)
movb $0x0, -0x202(%rbp)
movb $0x0, -0x203(%rbp)
movb $0x1, -0x204(%rbp)
movq 0x49e3(%rip), %rax      # 0x12230
movq %rax, -0x214(%rbp)
movq 0x49dd(%rip), %rax      # 0x12238
movq %rax, -0x20c(%rbp)
movq 0x876f(%rip), %rax      # 0x15fd8
movq (%rax), %rdi
callq 0x2070
movq -0x28(%rbp), %rdi
callq 0xfe50
movq 0x8757(%rip), %rax      # 0x15fd8
movq (%rax), %rdi
callq 0x2500
movl %eax, -0x218(%rbp)
movq 0x8742(%rip), %rax      # 0x15fd8
movq (%rax), %rdi
callq 0x2500
movl %eax, -0x21c(%rbp)
callq 0x2460
cmpl $-0x1, -0x21c(%rbp)
je 0xd8bd
movl -0x21c(%rbp), %edi
callq 0x2270
cmpl $0x0, -0x218(%rbp)
jl 0xd8e5
cmpl $0xff, -0x218(%rbp)
jg 0xd8e5
movl -0x218(%rbp), %edi
callq 0x2390
movl %eax, -0x230(%rbp)
jmp 0xd8f1
movl -0x218(%rbp), %eax
movl %eax, -0x230(%rbp)
movl -0x230(%rbp), %eax
movl %eax, -0x220(%rbp)
movb $0x1, %al
cmpl $0x19a, -0x218(%rbp)    # imm = 0x19A
movb %al, -0x231(%rbp)
je 0xd924
cmpq $0x0, -0x1a8(%rbp)
setne %al
xorb $-0x1, %al
movb %al, -0x231(%rbp)
movb -0x231(%rbp), %al
andb $0x1, %al
movb %al, -0x221(%rbp)
testb $0x1, -0x221(%rbp)
je 0xdaa5
callq 0x10690
movq 0x867d(%rip), %rax      # 0x15fc8
movl (%rax), %eax
movl %eax, -0x20c(%rbp)
movq 0x8646(%rip), %rax      # 0x15fa0
cmpl $0x0, (%rax)
jle 0xd973
movq 0x863a(%rip), %rax      # 0x15fa0
movl (%rax), %eax
subl $0x1, %eax
movl %eax, -0x238(%rbp)
jmp 0xd97d
xorl %eax, %eax
movl %eax, -0x238(%rbp)
jmp 0xd97d
movl -0x238(%rbp), %eax
movl %eax, -0x208(%rbp)
movq -0x1a8(%rbp), %rdi
callq 0x2d20
movl -0x20c(%rbp), %edi
movl -0x208(%rbp), %esi
callq 0x105c0
movq %rax, -0x1a8(%rbp)
movl $0x0, -0x110(%rbp)
movl -0x208(%rbp), %eax
movl %eax, -0x10c(%rbp)
movl -0x20c(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, -0x108(%rbp)
movq 0x85fa(%rip), %rax      # 0x15fd8
movq (%rax), %rax
movq %rax, -0x100(%rbp)
movl -0x108(%rbp), %eax
movl %eax, -0x148(%rbp)
movl -0x208(%rbp), %eax
movl %eax, -0x144(%rbp)
movl -0x20c(%rbp), %eax
subl -0x108(%rbp), %eax
movl %eax, -0x140(%rbp)
movq 0x85bf(%rip), %rax      # 0x15fd8
movq (%rax), %rax
movq %rax, -0x138(%rbp)
cmpq $0x0, -0x190(%rbp)
je 0xda4c
movq -0x190(%rbp), %rdi
callq 0x2250
leaq 0x4700(%rip), %rdi      # 0x12140
callq 0x102a0
movq %rax, -0x190(%rbp)
cmpq $0x0, -0x198(%rbp)
je 0xda75
movq -0x198(%rbp), %rdi
callq 0x2250
leaq 0x4707(%rip), %rdi      # 0x12170
callq 0x102a0
movq %rax, -0x198(%rbp)
cmpq $0x0, -0x1a0(%rbp)
je 0xda9e
movq -0x1a0(%rbp), %rdi
callq 0x2250
leaq 0x46fe(%rip), %rdi      # 0x12190
callq 0x102a0
movq %rax, -0x1a0(%rbp)
movb $0x1, -0x204(%rbp)
leaq -0x180(%rbp), %rdi
callq 0xe2f0
movl %eax, -0x228(%rbp)
movb $0x1, %al
testb $0x1, -0x201(%rbp)
movb %al, -0x239(%rbp)
jne 0xdaf9
xorl %eax, %eax
cmpl $0x0, -0x228(%rbp)
movb %al, -0x23a(%rbp)
jg 0xdaed
leaq -0x1f8(%rbp), %rdi
callq 0xed30
xorb $-0x1, %al
movb %al, -0x23a(%rbp)
movb -0x23a(%rbp), %al
movb %al, -0x239(%rbp)
movb -0x239(%rbp), %al
andb $0x1, %al
movb %al, -0x201(%rbp)
xorl %eax, %eax
testb $0x1, -0x201(%rbp)
movb %al, -0x23b(%rbp)
jne 0xdb2a
leaq -0x1f8(%rbp), %rdi
callq 0xed30
movb %al, -0x23b(%rbp)
movb -0x23b(%rbp), %al
andb $0x1, %al
movb %al, -0x229(%rbp)
testb $0x1, -0x204(%rbp)
je 0xdccc
movq -0x1a8(%rbp), %rax
movq %rax, -0x268(%rbp)
movsd -0x1c8(%rbp), %xmm0
movsd %xmm0, -0x260(%rbp)
movq -0x188(%rbp), %rax
movq %rax, -0x258(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x6030
movq %rax, -0x250(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x6050
movq -0x268(%rbp), %rdi
movsd -0x260(%rbp), %xmm2
movq -0x258(%rbp), %rsi
movq -0x250(%rbp), %rdx
movq %rax, %rcx
movsd -0x1f8(%rbp), %xmm0
movsd -0x1f0(%rbp), %xmm1
callq 0x2f60
movq -0x1a8(%rbp), %rax
movq %rax, -0x248(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x9d80
movq -0x248(%rbp), %rdi
movq %rax, %rdx
leaq -0x214(%rbp), %rsi
callq 0x10480
leaq -0x1f8(%rbp), %rdi
callq 0xeae0
movsd %xmm0, -0x120(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x100d0
leaq -0x1f8(%rbp), %rdi
callq 0xeb30
movsd %xmm0, -0x158(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x100d0
movq 0x839c(%rip), %rax      # 0x15fd8
movq (%rax), %rdi
movl $0x200000, %esi         # imm = 0x200000
xorl %eax, %eax
movl %eax, %edx
callq 0x2440
testb $0x1, -0x201(%rbp)
je 0xdc8d
movq 0x837b(%rip), %rax      # 0x15fd8
movq (%rax), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x2310
cmpl $-0x1, %eax
jne 0xdc70
jmp 0xdc8b
movq 0x8361(%rip), %rax      # 0x15fd8
movq (%rax), %rdi
leaq 0x4578(%rip), %rsi      # 0x121f9
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x2370
jmp 0xdca5
movl -0x228(%rbp), %ecx
xorl %esi, %esi
leaq 0x4581(%rip), %rdx      # 0x1221d
movl %esi, %edi
movb $0x0, %al
callq 0x21e0
movq 0x832c(%rip), %rax      # 0x15fd8
movq (%rax), %rdi
movl $0x200000, %esi         # imm = 0x200000
xorl %eax, %eax
movl %eax, %edx
callq 0x20e0
movq 0x8314(%rip), %rax      # 0x15fd8
movq (%rax), %rdi
callq 0x2220
movb -0x221(%rbp), %al
andb $0x1, %al
movb %al, -0x204(%rbp)
cmpq $0x0, -0x190(%rbp)
je 0xdd4a
movq -0x190(%rbp), %rax
movq %rax, -0x270(%rbp)
xorl %eax, %eax
cmpq -0x190(%rbp), %rax
je 0xdd13
movq -0x190(%rbp), %rax
movswl 0x4(%rax), %eax
addl $0x1, %eax
movl %eax, -0x274(%rbp)
jmp 0xdd20
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, -0x274(%rbp)
jmp 0xdd20
movq -0x270(%rbp), %rdi
movl -0x274(%rbp), %edx
xorl %esi, %esi
movl $0x1, %ecx
callq 0x24b0
movq -0x190(%rbp), %rdi
callq 0x2220
jmp 0xdfe8
testb $0x1, -0x229(%rbp)
jne 0xde8a
testb $0x1, -0x203(%rbp)
je 0xde8a
cmpq $0x0, -0x1a0(%rbp)
je 0xddcf
movq -0x1a0(%rbp), %rax
movq %rax, -0x280(%rbp)
xorl %eax, %eax
cmpq -0x1a0(%rbp), %rax
je 0xdd9d
movq -0x1a0(%rbp), %rax
movswl 0x4(%rax), %eax
addl $0x1, %eax
movl %eax, -0x284(%rbp)
jmp 0xddaa
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, -0x284(%rbp)
jmp 0xddaa
movq -0x280(%rbp), %rdi
movl -0x284(%rbp), %edx
xorl %esi, %esi
movl $0x1, %ecx
callq 0x24b0
movq -0x1a0(%rbp), %rdi
callq 0x2220
movl -0x220(%rbp), %eax
movl %eax, -0x288(%rbp)
subl $0x6e, %eax
je 0xddf8
jmp 0xdde2
movl -0x288(%rbp), %eax
subl $0x79, %eax
jne 0xde85
jmp 0xddf3
jmp 0xe153
cmpq $0x0, -0x1a0(%rbp)
je 0xde7e
movq -0x1a0(%rbp), %rdi
callq 0x2250
movq $0x0, -0x1a0(%rbp)
movq 0x81b8(%rip), %rax      # 0x15fd8
movq (%rax), %rax
movq %rax, -0x290(%rbp)
xorl %eax, %eax
movq 0x81a5(%rip), %rcx      # 0x15fd8
cmpq (%rcx), %rax
je 0xde51
movq 0x8199(%rip), %rax      # 0x15fd8
movq (%rax), %rax
movswl 0x4(%rax), %eax
addl $0x1, %eax
movl %eax, -0x294(%rbp)
jmp 0xde5e
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, -0x294(%rbp)
jmp 0xde5e
movq -0x290(%rbp), %rdi
movl -0x294(%rbp), %edx
xorl %esi, %esi
movl $0x1, %ecx
callq 0x24b0
movb $0x1, -0x204(%rbp)
movb $0x0, -0x203(%rbp)
jmp 0xd871
testb $0x1, -0x229(%rbp)
jne 0xdfe4
testb $0x1, -0x202(%rbp)
je 0xdfe4
cmpq $0x0, -0x198(%rbp)
je 0xdf0f
movq -0x198(%rbp), %rax
movq %rax, -0x2a0(%rbp)
xorl %eax, %eax
cmpq -0x198(%rbp), %rax
je 0xdedd
movq -0x198(%rbp), %rax
movswl 0x4(%rax), %eax
addl $0x1, %eax
movl %eax, -0x2a4(%rbp)
jmp 0xdeea
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, -0x2a4(%rbp)
jmp 0xdeea
movq -0x2a0(%rbp), %rdi
movl -0x2a4(%rbp), %edx
xorl %esi, %esi
movl $0x1, %ecx
callq 0x24b0
movq -0x198(%rbp), %rdi
callq 0x2220
movl -0x220(%rbp), %eax
movl %eax, -0x2a8(%rbp)
subl $0x70, %eax
je 0xdf36
jmp 0xdf22
movl -0x2a8(%rbp), %eax
subl $0x78, %eax
je 0xdfc5
jmp 0xdfdf
cmpq $0x0, -0x198(%rbp)
je 0xdfbc
movq -0x198(%rbp), %rdi
callq 0x2250
movq $0x0, -0x198(%rbp)
movq 0x807a(%rip), %rax      # 0x15fd8
movq (%rax), %rax
movq %rax, -0x2b0(%rbp)
xorl %eax, %eax
movq 0x8067(%rip), %rcx      # 0x15fd8
cmpq (%rcx), %rax
je 0xdf8f
movq 0x805b(%rip), %rax      # 0x15fd8
movq (%rax), %rax
movswl 0x4(%rax), %eax
addl $0x1, %eax
movl %eax, -0x2b4(%rbp)
jmp 0xdf9c
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movl %eax, -0x2b4(%rbp)
jmp 0xdf9c
movq -0x2b0(%rbp), %rdi
movl -0x2b4(%rbp), %edx
xorl %esi, %esi
movl $0x1, %ecx
callq 0x24b0
movb $0x1, -0x204(%rbp)
movb $0x0, -0x202(%rbp)
jmp 0xdfdf
leaq 0x41c4(%rip), %rdi      # 0x12190
callq 0x102a0
movq %rax, -0x1a0(%rbp)
movb $0x1, -0x203(%rbp)
jmp 0xd871
jmp 0xdfe6
jmp 0xdfe8
movb $0x1, -0x204(%rbp)
testb $0x1, -0x201(%rbp)
je 0xe006
cmpl $0x79, -0x220(%rbp)
jne 0xe006
jmp 0xe153
testb $0x1, -0x229(%rbp)
je 0xe03c
cmpl $0x79, -0x220(%rbp)
jne 0xe01d
jmp 0xe153
cmpq $0x0, -0x190(%rbp)
jne 0xe03a
leaq 0x4112(%rip), %rdi      # 0x12140
callq 0x102a0
movq %rax, -0x190(%rbp)
jmp 0xe0b9
cmpl $0x70, -0x220(%rbp)
jne 0xe064
movb $0x1, -0x202(%rbp)
leaq 0x411d(%rip), %rdi      # 0x12170
callq 0x102a0
movq %rax, -0x198(%rbp)
jmp 0xd871
cmpl $0x78, -0x220(%rbp)
je 0xe076
cmpl $0x1b, -0x218(%rbp)
jne 0xe095
movb $0x1, -0x203(%rbp)
leaq 0x410c(%rip), %rdi      # 0x12190
callq 0x102a0
movq %rax, -0x1a0(%rbp)
jmp 0xd871
movl -0x218(%rbp), %ecx
leaq -0x1f8(%rbp), %rdi
leaq -0x1fc(%rbp), %rsi
leaq -0x200(%rbp), %rdx
callq 0xe350
jmp 0xe0b7
jmp 0xe0b9
jmp 0xe0bb
movq -0xf0(%rbp), %rsi
leaq -0x180(%rbp), %rdi
leaq -0x1f8(%rbp), %rdx
callq 0xe4c0
leaq -0x1f8(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0xee60
leaq -0x180(%rbp), %rdi
callq 0xe730
movl -0x218(%rbp), %eax
cmpl -0x220(%rbp), %eax
jne 0xe10b
cmpl $0x20, -0x218(%rbp)
jne 0xe11e
leaq -0x1f8(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0xed50
leaq -0x180(%rbp), %rdi
callq 0xe820
leaq -0x1f8(%rbp), %rdi
callq 0xeb80
leaq -0x180(%rbp), %rdi
callq 0x62f0
leaq -0x180(%rbp), %rdi
callq 0x6610
jmp 0xd871
movq 0x7e7e(%rip), %rax      # 0x15fd8
movq (%rax), %rdi
callq 0x2070
movq 0x7e6f(%rip), %rax      # 0x15fd8
movq (%rax), %rdi
callq 0x2220
cmpq $0x0, -0x198(%rbp)
je 0xe187
movq -0x198(%rbp), %rdi
callq 0x2250
cmpq $0x0, -0x1a0(%rbp)
je 0xe19d
movq -0x1a0(%rbp), %rdi
callq 0x2250
cmpq $0x0, -0x190(%rbp)
je 0xe1b3
movq -0x190(%rbp), %rdi
callq 0x2250
movq -0x1a8(%rbp), %rdi
callq 0x2d20
testb $0x1, -0x201(%rbp)
je 0xe1d5
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xf530
leaq -0x180(%rbp), %rdi
callq 0x66d0
leaq -0xe8(%rbp), %rdi
callq 0x9df0
movl $0x0, -0x4(%rbp)
jmp 0xe209
leaq -0xe8(%rbp), %rdi
callq 0x9df0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl -0x4(%rbp), %eax
addq $0x2c0, %rsp            # imm = 0x2C0
popq %rbp
retq
nopw %cs:(%rax,%rax)