// File: /workspace/github_c_makefile_star2_O0/TurkeyMcMac[P]ts3d/src/map.c
// Function: load_map
struct map *load_map(struct loader *ldr, const char *name)
{
	struct logger *log = loader_logger(ldr);
	FILE *file;
	struct map **mapp = loader_map(ldr, name, &file);
	if (!mapp) return NULL;
	struct map *map = *mapp;
	if (map) return map;
	map = xmalloc(sizeof(*map));
	struct json_node jtree;
	map->name = str_dup(name);
	map->prereq = NULL;
	map->board = NULL;
	map->walls = NULL;
	map->blocks = NULL;
	map->ents = NULL;
	map->n_ents = 0;
	if (parse_json_tree(name, file, log, &jtree)) goto parse_error;
	if (jtree.kind != JN_MAP) {
		if (jtree.kind != JN_ERROR)
			logger_printf(log, LOGGER_ERROR,
				"Map \"%s\" is not a JSON dictionary\n", name);
		goto format_error;
	}
	void **player_nodep;
	if ((player_nodep = table_get(&jtree.d.map, "player"))) {
		if (parse_ent_start(&map->player, ldr, *player_nodep)) {
			logger_printf(log, LOGGER_ERROR,
				"Map \"%s\" has invalid \"player\" attribute\n",
				name);
			goto format_error;
		}
	} else {
		logger_printf(log, LOGGER_ERROR,
			"Map \"%s\" has no \"player\" attribute\n", name);
		goto format_error;
	}
	union json_node_data *got;
	if ((got = json_map_get(&jtree, "name", TAKE_NODE | JN_STRING))) {
		free(map->name);
		map->name = got->str;
	}
	if ((got = json_map_get(&jtree, "prereq", TAKE_NODE | JN_STRING)))
		map->prereq = got->str;
	uint8_t *walls = NULL;
	size_t n_blocks = 0;
	if ((got = json_map_get(&jtree, "blocks", JN_LIST))) {
		n_blocks = got->list.n_vals;
		walls = xmalloc(n_blocks);
		map->blocks = xmalloc(n_blocks * sizeof(*map->blocks));
		for (size_t i = 0; i < n_blocks; ++i) {
			parse_block(&map->blocks[i], &walls[i],
				&got->list.vals[i], ldr);
		}
	}
	struct json_node_data_list *layout = NULL;
	if ((got = json_map_get(&jtree, "layout", JN_LIST)))
		layout = &got->list;
	size_t width = 0, height = 0;
	if (layout) {
		height = layout->n_vals;
		for (size_t y = 0; y < height; ++y) {
			if (layout->vals[y].kind != JN_LIST) continue;
			struct json_node_data_list *row =
				&layout->vals[y].d.list;
			if (row->n_vals > width) width = row->n_vals;
		}
	}
	if (layout && width > 0 && height > 0) {
		map->board = assert_alloc(d3d_new_board(width, height, NULL));
		map->walls = xcalloc(height, width);
		// See DIRECTION NOTE regarding y:
		for (size_t r = 0, y = height - 1; r < height; ++r, --y) {
			if (layout->vals[y].kind != JN_LIST) continue;
			struct json_node_data_list *row =
				&layout->vals[r].d.list;
			for (size_t x = 0; x < row->n_vals; ++x) {
				if (row->vals[x].kind != JN_NUMBER) continue;
				size_t idx = row->vals[x].d.num;
				if (idx >= n_blocks) continue;
				*d3d_board_get(map->board, x, y) =
					&map->blocks[idx];
				*get_wall(map, x, y) = walls[idx];
			}
		}
		for (size_t y = 0; y < height; ++y) {
			for (size_t x = 0; x < width; ++x) {
				*get_wall(map, x, y) =
					normalize_wall(map, x, y);
			}
		}
	} else {
		width = height = 1;
		map->board = assert_alloc(d3d_new_board(width, height, NULL));
		map->walls = xcalloc(1, 1);
	}
	free(walls);
	map->player.pos.x = CLAMP(map->player.pos.x, 0, width - 0.01);
	// See DIRECTION NOTE:
	map->player.pos.y = height - CLAMP(map->player.pos.y, 0.01, height);
	map->n_ents = 0;
	if ((got = json_map_get(&jtree, "ents", JN_LIST))) {
		map->ents = xmalloc(got->list.n_vals * sizeof(*map->ents));
		for (size_t i = 0; i < got->list.n_vals; ++i) {
			struct map_ent_start *start = &map->ents[map->n_ents];
			if (!parse_ent_start(start, ldr, &got->list.vals[i])) {
				// See DIRECTION NOTE:
				start->pos.y = height - start->pos.y;
				++map->n_ents;
			}
		}
	}
	if (!map->board) map->board = assert_alloc(d3d_new_board(0, 0, NULL));
	free_json_tree(&jtree);
	*mapp = map;
	return map;

format_error:
	free_json_tree(&jtree);
	map_free(map);
parse_error:
	return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x130, %rsp            # imm = 0x130
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9da0
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
leaq -0x28(%rbp), %rdx
callq 0x9af0
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
jne 0xb779
movq $0x0, -0x8(%rbp)
jmp 0xc18b
movq -0x30(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0xb798
movq -0x38(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xc18b
movl $0x60, %edi
callq 0x10b80
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rdi
callq 0x106a0
movq %rax, %rcx
movq -0x38(%rbp), %rax
movq %rcx, (%rax)
movq -0x38(%rbp), %rax
movq $0x0, 0x8(%rax)
movq -0x38(%rbp), %rax
movq $0x0, 0x10(%rax)
movq -0x38(%rbp), %rax
movq $0x0, 0x18(%rax)
movq -0x38(%rbp), %rax
movq $0x0, 0x20(%rax)
movq -0x38(%rbp), %rax
movq $0x0, 0x30(%rax)
movq -0x38(%rbp), %rax
movq $0x0, 0x28(%rax)
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rsi
movq -0x20(%rbp), %rdx
leaq -0x58(%rbp), %rcx
callq 0x68e0
cmpl $0x0, %eax
je 0xb820
jmp 0xc183
cmpl $0x2, -0x58(%rbp)
je 0xb84c
cmpl $0x7, -0x58(%rbp)
je 0xb847
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rcx
movl $0x4, %esi
leaq 0x666f(%rip), %rdx      # 0x11eaf
movb $0x0, %al
callq 0xa260
jmp 0xc171
leaq -0x58(%rbp), %rdi
addq $0x8, %rdi
leaq 0x6677(%rip), %rsi      # 0x11ed2
callq 0xfbe0
movq %rax, -0x60(%rbp)
cmpq $0x0, %rax
je 0xb8a9
movq -0x38(%rbp), %rdi
addq $0x38, %rdi
movq -0x10(%rbp), %rsi
movq -0x60(%rbp), %rax
movq (%rax), %rdx
callq 0xc1a0
cmpl $0x0, %eax
je 0xb8a7
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rcx
movl $0x4, %esi
leaq 0x663e(%rip), %rdx      # 0x11ed9
movb $0x0, %al
callq 0xa260
jmp 0xc171
jmp 0xb8c9
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rcx
movl $0x4, %esi
leaq 0x6645(%rip), %rdx      # 0x11f02
movb $0x0, %al
callq 0xa260
jmp 0xc171
leaq -0x58(%rbp), %rdi
leaq 0x59ef(%rip), %rsi      # 0x112c3
movl $0x1004, %edx           # imm = 0x1004
callq 0x6820
movq %rax, -0x68(%rbp)
cmpq $0x0, %rax
je 0xb902
movq -0x38(%rbp), %rax
movq (%rax), %rdi
callq 0x2580
movq -0x68(%rbp), %rax
movq (%rax), %rcx
movq -0x38(%rbp), %rax
movq %rcx, (%rax)
leaq -0x58(%rbp), %rdi
leaq 0x659b(%rip), %rsi      # 0x11ea8
movl $0x1004, %edx           # imm = 0x1004
callq 0x6820
movq %rax, -0x68(%rbp)
cmpq $0x0, %rax
je 0xb930
movq -0x68(%rbp), %rax
movq (%rax), %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x8(%rax)
movq $0x0, -0x70(%rbp)
movq $0x0, -0x78(%rbp)
leaq -0x58(%rbp), %rdi
leaq 0x65db(%rip), %rsi      # 0x11f26
movl $0x3, %edx
callq 0x6820
movq %rax, -0x68(%rbp)
cmpq $0x0, %rax
je 0xb9e6
movq -0x68(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rdi
callq 0x10b80
movq %rax, -0x70(%rbp)
imulq $0x30, -0x78(%rbp), %rdi
callq 0x10b80
movq %rax, %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x20(%rax)
movq $0x0, -0x80(%rbp)
movq -0x80(%rbp), %rax
cmpq -0x78(%rbp), %rax
jae 0xb9e4
movq -0x38(%rbp), %rax
movq 0x20(%rax), %rdi
imulq $0x30, -0x80(%rbp), %rax
addq %rax, %rdi
movq -0x70(%rbp), %rsi
addq -0x80(%rbp), %rsi
movq -0x68(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x80(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
movq -0x10(%rbp), %rcx
callq 0xc330
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0xb998
jmp 0xb9e6
movq $0x0, -0x88(%rbp)
leaq -0x58(%rbp), %rdi
leaq 0x6531(%rip), %rsi      # 0x11f2d
movl $0x3, %edx
callq 0x6820
movq %rax, -0x68(%rbp)
cmpq $0x0, %rax
je 0xba1b
movq -0x68(%rbp), %rax
movq %rax, -0x88(%rbp)
movq $0x0, -0x90(%rbp)
movq $0x0, -0x98(%rbp)
cmpq $0x0, -0x88(%rbp)
je 0xbaf2
movq -0x88(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x98(%rbp)
movq $0x0, -0xa0(%rbp)
movq -0xa0(%rbp), %rax
cmpq -0x98(%rbp), %rax
jae 0xbaf0
movq -0x88(%rbp), %rax
movq 0x8(%rax), %rax
movq -0xa0(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
cmpl $0x3, (%rax)
je 0xba8f
jmp 0xbad9
movq -0x88(%rbp), %rax
movq 0x8(%rax), %rax
movq -0xa0(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
addq $0x8, %rax
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rax
movq (%rax), %rax
cmpq -0x90(%rbp), %rax
jbe 0xbad7
movq -0xa8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x90(%rbp)
jmp 0xbad9
movq -0xa0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xa0(%rbp)
jmp 0xba5b
jmp 0xbaf2
cmpq $0x0, -0x88(%rbp)
je 0xbdd2
cmpq $0x0, -0x90(%rbp)
jbe 0xbdd2
cmpq $0x0, -0x98(%rbp)
jbe 0xbdd2
movq -0x90(%rbp), %rdi
movq -0x98(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x2e40
movq %rax, %rdi
callq 0x10d50
movq %rax, %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x98(%rbp), %rdi
movq -0x90(%rbp), %rsi
callq 0x10ca0
movq %rax, %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x18(%rax)
movq $0x0, -0xb0(%rbp)
movq -0x98(%rbp), %rax
subq $0x1, %rax
movq %rax, -0xb8(%rbp)
movq -0xb0(%rbp), %rax
cmpq -0x98(%rbp), %rax
jae 0xbd2d
movq -0x88(%rbp), %rax
movq 0x8(%rax), %rax
movq -0xb8(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
cmpl $0x3, (%rax)
je 0xbbb8
jmp 0xbd04
movq -0x88(%rbp), %rax
movq 0x8(%rax), %rax
movq -0xb0(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
addq $0x8, %rax
movq %rax, -0xc0(%rbp)
movq $0x0, -0xc8(%rbp)
movq -0xc8(%rbp), %rax
movq -0xc0(%rbp), %rcx
cmpq (%rcx), %rax
jae 0xbd02
movq -0xc0(%rbp), %rax
movq 0x8(%rax), %rax
movq -0xc8(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
cmpl $0x5, (%rax)
je 0xbc21
jmp 0xbceb
movq -0xc0(%rbp), %rax
movq 0x8(%rax), %rax
movq -0xc8(%rbp), %rcx
shlq $0x5, %rcx
movsd 0x8(%rax,%rcx), %xmm0
movaps %xmm0, %xmm1
cvttsd2si %xmm1, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
movsd 0x53ec(%rip), %xmm1     # 0x11040
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
andq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0xd0(%rbp)
movq -0xd0(%rbp), %rax
cmpq -0x78(%rbp), %rax
jb 0xbc79
jmp 0xbceb
movq -0x38(%rbp), %rax
movq 0x20(%rax), %rax
imulq $0x30, -0xd0(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x100(%rbp)
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0xc8(%rbp), %rsi
movq -0xb8(%rbp), %rdx
callq 0x3d60
movq -0x100(%rbp), %rcx
movq %rcx, (%rax)
movq -0x70(%rbp), %rax
movq -0xd0(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0xf1(%rbp)
movq -0x38(%rbp), %rdi
movq -0xc8(%rbp), %rsi
movq -0xb8(%rbp), %rdx
callq 0xc550
movb -0xf1(%rbp), %cl
movb %cl, (%rax)
movq -0xc8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xc8(%rbp)
jmp 0xbbe7
jmp 0xbd04
movq -0xb0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xb0(%rbp)
movq -0xb8(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0xb8(%rbp)
jmp 0xbb81
movq $0x0, -0xd8(%rbp)
movq -0xd8(%rbp), %rax
cmpq -0x98(%rbp), %rax
jae 0xbdd0
movq $0x0, -0xe0(%rbp)
movq -0xe0(%rbp), %rax
cmpq -0x90(%rbp), %rax
jae 0xbdb7
movq -0x38(%rbp), %rdi
movq -0xe0(%rbp), %rsi
movq -0xd8(%rbp), %rdx
callq 0xc5b0
movb %al, -0x101(%rbp)
movq -0x38(%rbp), %rdi
movq -0xe0(%rbp), %rsi
movq -0xd8(%rbp), %rdx
callq 0xc550
movb -0x101(%rbp), %cl
movb %cl, (%rax)
movq -0xe0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xe0(%rbp)
jmp 0xbd57
jmp 0xbdb9
movq -0xd8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xd8(%rbp)
jmp 0xbd38
jmp 0xbe2a
movq $0x1, -0x98(%rbp)
movq $0x1, -0x90(%rbp)
movq -0x90(%rbp), %rdi
movq -0x98(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x2e40
movq %rax, %rdi
callq 0x10d50
movq %rax, %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x10(%rax)
movl $0x1, %esi
movq %rsi, %rdi
callq 0x10ca0
movq %rax, %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x70(%rbp), %rdi
callq 0x2580
movq -0x38(%rbp), %rax
xorps %xmm0, %xmm0
ucomisd 0x38(%rax), %xmm0
jbe 0xbe51
xorps %xmm0, %xmm0
movsd %xmm0, -0x110(%rbp)
jmp 0xbef7
movq -0x38(%rbp), %rax
movsd 0x38(%rax), %xmm0
movaps 0x520f(%rip), %xmm2     # 0x11070
movq -0x90(%rbp), %xmm1
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x520b(%rip), %xmm2     # 0x11080
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
movsd 0x6014(%rip), %xmm2     # 0x11ea0
subsd %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jbe 0xbed6
movaps 0x51d3(%rip), %xmm1     # 0x11070
movq -0x90(%rbp), %xmm0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x51cf(%rip), %xmm1     # 0x11080
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0x5fd8(%rip), %xmm1     # 0x11ea0
subsd %xmm1, %xmm0
movsd %xmm0, -0x118(%rbp)
jmp 0xbee7
movq -0x38(%rbp), %rax
movsd 0x38(%rax), %xmm0
movsd %xmm0, -0x118(%rbp)
movsd -0x118(%rbp), %xmm0
movsd %xmm0, -0x110(%rbp)
movsd -0x110(%rbp), %xmm0
movq -0x38(%rbp), %rax
movsd %xmm0, 0x38(%rax)
movaps 0x5161(%rip), %xmm1     # 0x11070
movq -0x98(%rbp), %xmm0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x515d(%rip), %xmm1     # 0x11080
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd %xmm0, -0x120(%rbp)
movq -0x38(%rbp), %rax
movsd 0x5f5a(%rip), %xmm0     # 0x11ea0
ucomisd 0x40(%rax), %xmm0
jbe 0xbf62
movsd 0x5f4b(%rip), %xmm0     # 0x11ea0
movsd %xmm0, -0x128(%rbp)
jmp 0xbff0
movq -0x38(%rbp), %rax
movsd 0x40(%rax), %xmm0
movaps 0x50fe(%rip), %xmm2     # 0x11070
movq -0x98(%rbp), %xmm1
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x50fa(%rip), %xmm2     # 0x11080
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
ucomisd %xmm1, %xmm0
jbe 0xbfcf
movaps 0x50ce(%rip), %xmm1     # 0x11070
movq -0x98(%rbp), %xmm0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x50ca(%rip), %xmm1     # 0x11080
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd %xmm0, -0x130(%rbp)
jmp 0xbfe0
movq -0x38(%rbp), %rax
movsd 0x40(%rax), %xmm0
movsd %xmm0, -0x130(%rbp)
movsd -0x130(%rbp), %xmm0
movsd %xmm0, -0x128(%rbp)
movsd -0x120(%rbp), %xmm0
movsd -0x128(%rbp), %xmm1
subsd %xmm1, %xmm0
movq -0x38(%rbp), %rax
movsd %xmm0, 0x40(%rax)
movq -0x38(%rbp), %rax
movq $0x0, 0x28(%rax)
leaq -0x58(%rbp), %rdi
leaq 0x56be(%rip), %rsi      # 0x116e2
movl $0x3, %edx
callq 0x6820
movq %rax, -0x68(%rbp)
cmpq $0x0, %rax
je 0xc126
movq -0x68(%rbp), %rax
imulq $0x28, (%rax), %rdi
callq 0x10b80
movq %rax, %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x30(%rax)
movq $0x0, -0xe8(%rbp)
movq -0xe8(%rbp), %rax
movq -0x68(%rbp), %rcx
cmpq (%rcx), %rax
jae 0xc124
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x38(%rbp), %rcx
imulq $0x28, 0x28(%rcx), %rcx
addq %rcx, %rax
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x68(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0xe8(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
callq 0xc1a0
cmpl $0x0, %eax
jne 0xc10b
movaps 0x4fb0(%rip), %xmm1     # 0x11070
movq -0x98(%rbp), %xmm0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x4fac(%rip), %xmm1     # 0x11080
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movq -0xf0(%rbp), %rax
subsd 0x8(%rax), %xmm0
movq -0xf0(%rbp), %rax
movsd %xmm0, 0x8(%rax)
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x28(%rax)
jmp 0xc10d
movq -0xe8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xe8(%rbp)
jmp 0xc05f
jmp 0xc126
movq -0x38(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0xc153
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rdi
movq %rdx, %rsi
callq 0x2e40
movq %rax, %rdi
callq 0x10d50
movq %rax, %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x10(%rax)
leaq -0x58(%rbp), %rdi
callq 0x6e30
movq -0x38(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, (%rax)
movq -0x38(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xc18b
leaq -0x58(%rbp), %rdi
callq 0x6e30
movq -0x38(%rbp), %rdi
callq 0xc730
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x130, %rsp            # imm = 0x130
popq %rbp
retq
nopl (%rax,%rax)