// File: /workspace/github_c_makefile_star2_O1/OstCollector[P]config2c/config2c.c
// Function: parse_struct
static void parse_struct(string name, const struct node_member_list *list)
{
	const struct node_member_list *memb;
	const struct node_alter_list *alt;
	long cnt, idx;
	struct type_decl decl;
	struct parse_opts opts;

	cnt = len_member_list(list);
	opts.mode = PARSE_STRUCT;

	osi(0, "static int parse__struct_%s(struct pass_to_conv *ctx, struct %s *value, "
			"const struct node_value *input)\n", name, name);
	osi(0, "{\n");
	osi(1, "int inited[%ld] = {};\n", cnt);
	osi(1, "int ret;\n");
	osi(1, "long i, len;\n");
	osi(1, "struct node_members *memb, default_memb;\n");
	osi(1, "struct node_elems *elem;\n");
	osi(1, "struct pass_to_bison opaque;\n");
	for (memb = list, idx = 0; memb; memb = memb->next, ++idx) {
		if (memb->default_val) {
			osi(1, "const char *default_%ld = %s;\n",
					idx, memb->default_val);
		}
	}
	osi(1, "if (input->type != VAL_MEMBERS) {\n");
	osi(2, "ctx->node = input;\n");
	osi(2, "ctx->msg = \"invalid type, expecting list of members.\";\n");
	osi(2, "return -EINVAL;\n");
	osi(1, "}\n"); /* if */
	opts.is_default = 0;
	osi(1, "for (memb = input->members; memb; memb = memb->next) {\n");
	osi(2, "if (0) {\n");
	osi(3, ";\n");
	osi(2, "}\n");
	for (memb = list, idx = 0; memb; memb = memb->next, ++idx) {
		if (!memb->visible) {
			continue;
		}
		switch (memb->type) {
		case NODE_MEMBER_DEF_PRIM:
			opts.s.idx = idx;
			opts.s.opt_var = NULL;
			opts.s.opt_val = NULL;
			decl.type = TYPE_DECL_PRIM;
			decl.type_name = memb->type_name;
			helper_parse(&memb->vec, &decl, memb->in_name,
					memb->mapped, &opts, 2);
			break;
		case NODE_MEMBER_DEF_ENUM:
			opts.s.idx = idx;
			opts.s.opt_var = NULL;
			opts.s.opt_val = NULL;
			decl.type = TYPE_DECL_ENUM;
			decl.type_name = memb->type_name;
			helper_parse(&memb->vec, &decl, memb->in_name,
					memb->mapped, &opts, 2);
			break;
		case NODE_MEMBER_DEF_STRUCT:
			opts.s.idx = idx;
			opts.s.opt_var = NULL;
			opts.s.opt_val = NULL;
			decl.type = TYPE_DECL_STRUCT;
			decl.type_name = memb->type_name;
			helper_parse(&memb->vec, &decl, memb->in_name,
					memb->mapped, &opts, 2);
			break;
		case NODE_MEMBER_DEF_UNION:
			opts.s.idx = idx;
			opts.s.opt_var = NULL;
			opts.s.opt_val = NULL;
			decl.type = TYPE_DECL_UNION;
			decl.type_name = memb->type_name;
			helper_parse(&memb->vec, &decl, memb->in_name,
					memb->mapped, &opts, 2);
			break;
		case NODE_MEMBER_DEF_UNNAMED_UNION:
			opts.s.idx = idx;
			opts.s.opt_var = memb->alt_enum;
			for (alt = memb->alters; alt; alt = alt->next) {
				switch (alt->type) {
				case NODE_ALTER_DEF_PRIM:
					opts.s.idx = idx;
					opts.s.opt_val = alt->enum_val;
					decl.type = TYPE_DECL_PRIM;
					decl.type_name = alt->type_name;
					helper_parse(&alt->vec, &decl, alt->in_name,
							alt->mapped, &opts, 2);
					break;
				case NODE_ALTER_DEF_ENUM:
					opts.s.idx = idx;
					opts.s.opt_val = alt->enum_val;
					decl.type = TYPE_DECL_ENUM;
					decl.type_name = alt->type_name;
					helper_parse(&alt->vec, &decl, alt->in_name,
							alt->mapped, &opts, 2);
					break;
				case NODE_ALTER_DEF_STRUCT:
					opts.s.idx = idx;
					opts.s.opt_val = alt->enum_val;
					decl.type = TYPE_DECL_STRUCT;
					decl.type_name = alt->type_name;
					helper_parse(&alt->vec, &decl, alt->in_name,
							alt->mapped, &opts, 2);
					break;
				default:
					fprintf(stderr, "error at %d (%s) : impossible err\n",
							__LINE__, __func__);
					exit(EXIT_FAILURE);
				}
			}
		}
	}
	osi(2, "ctx->node = memb->value;\n");
	osi(2, "ctx->msg = \"unknown member.\";\n");
	osi(2, "ret = -EINVAL;\n");
	osi(2, "goto error_all;\n");
	osi(1, "}\n"); /* for */
	opts.is_default = 1;
	for (memb = list, idx = 0; memb; memb = memb->next, ++idx) {
		if (memb->visible && !memb->default_val) {
			osi(1, "if (!inited[%ld]) {\n", idx);
			osi(2, "ctx->node = input;\n");
			osi(2, "ctx->msg = \"some field is not initialized.\";\n");
			osi(2, "ret = -EINVAL;\n");
			osi(2, "goto error_all;\n");
			osi(1, "}\n"); /* if */
			continue;
		}
		if (!memb->default_val) {
			continue;
		}
		osi(1, "if (!inited[%ld]) {\n", idx);
		osi(2, "init_pass_to_bison(&opaque, ctx->pool);\n");
		osi(2, "ret = yacc_parse_string(default_%ld, &ctx->msg, &opaque);\n", idx);
		osi(2, "if (ret) {\n");
		osi(3, "ctx->node = input;\n");
		osi(3, "goto error_all;\n");
		osi(2, "}\n"); /* if ret */
		if (memb->type != NODE_MEMBER_DEF_UNNAMED_UNION) {
			osi(2, "default_memb.next = NULL;\n");
			osi(2, "default_memb.name = \"%s\";\n", memb->in_name);
			osi(2, "default_memb.value = opaque.output;\n");
			osi(2, "default_memb.value->parent = input;\n");
			osi(2, "default_memb.value->name_copy = \"%s\";\n", memb->in_name);
			osi(2, "memb = &default_memb;\n");
		} else {
			osi(2, "if (opaque.output->type != VAL_MEMBERS) {\n");
			osi(3, "ctx->node = input;\n");
			osi(3, "ctx->msg = \"invalid initial value: "
					"value not selected\";\n");
			osi(2, "}\n"); /* if invalid type */
			
			osi(2, "if (len_node_members(opaque.output->members) != 1) {\n");
			osi(3, "ctx->node = input;\n");
			osi(3, "ctx->msg = \"invalid initial value: "
					"multiple value selected\";\n");
			osi(2, "}\n"); /* if invalid type */

			osi(2, "memb = opaque.output->members;\n");
			osi(2, "memb->value->parent = input;\n");
		}
		osi(2, "if (0) {\n");
		osi(3, ";\n");
		osi(2, "}\n");
		switch (memb->type) {
		case NODE_MEMBER_DEF_PRIM:
			opts.s.idx = idx;
			opts.s.opt_var = NULL;
			opts.s.opt_val = NULL;
			decl.type = TYPE_DECL_PRIM;
			decl.type_name = memb->type_name;
			helper_parse(&memb->vec, &decl, memb->in_name,
					memb->mapped, &opts, 2);
			break;
		case NODE_MEMBER_DEF_ENUM:
			opts.s.idx = idx;
			opts.s.opt_var = NULL;
			opts.s.opt_val = NULL;
			decl.type = TYPE_DECL_ENUM;
			decl.type_name = memb->type_name;
			helper_parse(&memb->vec, &decl, memb->in_name,
					memb->mapped, &opts, 2);
			break;
		case NODE_MEMBER_DEF_STRUCT:
			opts.s.idx = idx;
			opts.s.opt_var = NULL;
			opts.s.opt_val = NULL;
			decl.type = TYPE_DECL_STRUCT;
			decl.type_name = memb->type_name;
			helper_parse(&memb->vec, &decl, memb->in_name,
					memb->mapped, &opts, 2);
			break;
		case NODE_MEMBER_DEF_UNION:
			opts.s.idx = idx;
			opts.s.opt_var = NULL;
			opts.s.opt_val = NULL;
			decl.type = TYPE_DECL_UNION;
			decl.type_name = memb->type_name;
			helper_parse(&memb->vec, &decl, memb->in_name,
					memb->mapped, &opts, 2);
			break;
		case NODE_MEMBER_DEF_UNNAMED_UNION:
			opts.s.idx = idx;
			opts.s.opt_var = memb->alt_enum;
			for (alt = memb->alters; alt; alt = alt->next) {
				switch (alt->type) {
				case NODE_ALTER_DEF_PRIM:
					opts.s.idx = idx;
					opts.s.opt_val = alt->enum_val;
					decl.type = TYPE_DECL_PRIM;
					decl.type_name = alt->type_name;
					helper_parse(&alt->vec, &decl, alt->in_name,
							alt->mapped, &opts, 2);
					break;
				case NODE_ALTER_DEF_ENUM:
					opts.s.idx = idx;
					opts.s.opt_val = alt->enum_val;
					decl.type = TYPE_DECL_ENUM;
					decl.type_name = alt->type_name;
					helper_parse(&alt->vec, &decl, alt->in_name,
							alt->mapped, &opts, 2);
					break;
				case NODE_ALTER_DEF_STRUCT:
					opts.s.idx = idx;
					opts.s.opt_val = alt->enum_val;
					decl.type = TYPE_DECL_STRUCT;
					decl.type_name = alt->type_name;
					helper_parse(&alt->vec, &decl, alt->in_name,
							alt->mapped, &opts, 2);
					break;
				default:
					fprintf(stderr, "error at %d (%s) : impossible err\n",
							__LINE__, __func__);
					exit(EXIT_FAILURE);
				}
			}
		}
		osi(2, "else {\n");
		osi(3, "ctx->node = memb->value;\n");
		osi(3, "ctx->msg = \"unknown member.\";\n");
		osi(3, "ret = -EINVAL;\n");
		osi(3, "goto error_all;\n");
		osi(2, "}\n");
		osi(1, "}\n"); /* if !inited */
	}
	osi(1, "return 0;\n");
	osi(0, "error_all:\n");
	for (memb = list, idx = 0; memb; memb = memb->next, ++idx) {
		if (!memb->visible && !memb->default_val) {
			continue;
		}
		osi(1, "if (inited[%ld]) {\n", idx);
		switch (memb->type) {
		case NODE_MEMBER_DEF_PRIM:
			decl.type = TYPE_DECL_PRIM;
			decl.type_name = memb->type_name;
			helper_free(&memb->vec, &decl, memb->mapped, 2);
			break;
		case NODE_MEMBER_DEF_ENUM:
			decl.type = TYPE_DECL_ENUM;
			decl.type_name = memb->type_name;
			helper_free(&memb->vec, &decl, memb->mapped, 2);
			break;
		case NODE_MEMBER_DEF_STRUCT:
			decl.type = TYPE_DECL_STRUCT;
			decl.type_name = memb->type_name;
			helper_free(&memb->vec, &decl, memb->mapped, 2);
			break;
		case NODE_MEMBER_DEF_UNION:
			decl.type = TYPE_DECL_UNION;
			decl.type_name = memb->type_name;
			helper_free(&memb->vec, &decl, memb->mapped, 2);
			break;
		case NODE_MEMBER_DEF_UNNAMED_UNION:
			for (alt = memb->alters; alt; alt = alt->next) {
				osi(2, "if (value->%s == %s) {\n",
						memb->alt_enum, alt->enum_val);
				switch (alt->type) {
				case NODE_ALTER_DEF_PRIM:
					decl.type = TYPE_DECL_PRIM;
					decl.type_name = alt->type_name;
					helper_free(&alt->vec, &decl, 
							alt->mapped, 3);
					break;
				case NODE_ALTER_DEF_ENUM:
					decl.type = TYPE_DECL_ENUM;
					decl.type_name = alt->type_name;
					helper_free(&alt->vec, &decl, 
							alt->mapped, 3);
					break;
				case NODE_ALTER_DEF_STRUCT:
					decl.type = TYPE_DECL_STRUCT;
					decl.type_name = alt->type_name;
					helper_free(&alt->vec, &decl, 
							alt->mapped, 3);
					break;
				}
				osi(2, "}\n"); /* if */
			}
		}
		osi(1, "}\n"); /* if */
	}
	osi(1, "return ret;\n");
	osi(0, "}\n");
	osi(0, "\n");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %rbx
movq %rdi, %rcx
xorl %r14d, %r14d
testq %rsi, %rsi
je 0x8da0
movq %rbx, %rax
incq %r14
movq (%rax), %rax
testq %rax, %rax
jne 0x8d95
movl $0x0, -0x60(%rbp)
movq 0x114f2(%rip), %rdi     # 0x1a2a0
leaq 0x88b0(%rip), %rsi      # 0x11665
movq %rcx, %rdx
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d4f
movq 0x114d2(%rip), %rdi     # 0x1a2a0
leaq 0x99c4(%rip), %rsi      # 0x12799
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d54
movl $0x1, %edi
callq 0xa2c8
movq 0x114ab(%rip), %rdi     # 0x1a2a0
leaq 0x88d2(%rip), %rsi      # 0x116ce
movq %r14, %rdx
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d59
movl $0x1, %edi
callq 0xa2c8
movq 0x11481(%rip), %rdi     # 0x1a2a0
leaq 0x88bf(%rip), %rsi      # 0x116e5
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d5e
movl $0x1, %edi
callq 0xa2c8
movq 0x1145a(%rip), %rdi     # 0x1a2a0
leaq 0x88a2(%rip), %rsi      # 0x116ef
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d63
movl $0x1, %edi
callq 0xa2c8
movq 0x11433(%rip), %rdi     # 0x1a2a0
leaq 0x8889(%rip), %rsi      # 0x116fd
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d68
movl $0x1, %edi
callq 0xa2c8
movq 0x1140c(%rip), %rdi     # 0x1a2a0
leaq 0x888c(%rip), %rsi      # 0x11727
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d6d
movl $0x1, %edi
callq 0xa2c8
movq 0x113e5(%rip), %rdi     # 0x1a2a0
leaq 0x887f(%rip), %rsi      # 0x11741
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d72
movq %rbx, -0x68(%rbp)
testq %rbx, %rbx
je 0x8f24
leaq 0x887e(%rip), %r14      # 0x1175f
xorl %r15d, %r15d
movq -0x68(%rbp), %rbx
cmpq $0x0, 0x38(%rbx)
je 0x8f19
movl $0x1, %edi
callq 0xa2c8
movq 0x113a0(%rip), %rdi     # 0x1a2a0
movq 0x38(%rbx), %rcx
movq %r14, %rsi
movq %r15, %rdx
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9c82
movq (%rbx), %rbx
incq %r15
testq %rbx, %rbx
jne 0x8ee8
movl $0x1, %edi
callq 0xa2c8
movq 0x1136b(%rip), %rdi     # 0x1a2a0
leaq 0x8842(%rip), %rsi      # 0x1177e
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d77
movl $0x2, %edi
callq 0xa2c8
movq 0x11344(%rip), %rdi     # 0x1a2a0
leaq 0x883e(%rip), %rsi      # 0x117a1
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
movq -0x68(%rbp), %rbx
js 0x9d7c
movl $0x2, %edi
callq 0xa2c8
movq 0x11319(%rip), %rdi     # 0x1a2a0
leaq 0x8827(%rip), %rsi      # 0x117b5
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d81
movl $0x2, %edi
callq 0xa2c8
movq 0x112f2(%rip), %rdi     # 0x1a2a0
leaq 0x8838(%rip), %rsi      # 0x117ed
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d86
movl $0x1, %edi
callq 0xa2c8
movq 0x112cb(%rip), %rdi     # 0x1a2a0
leaq 0x7e65(%rip), %rsi      # 0x10e41
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d8b
movl $0x0, -0x40(%rbp)
movl $0x1, %edi
callq 0xa2c8
movq 0x1129d(%rip), %rdi     # 0x1a2a0
leaq 0x87f4(%rip), %rsi      # 0x117fe
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d90
movl $0x2, %edi
callq 0xa2c8
movq 0x11276(%rip), %rdi     # 0x1a2a0
leaq 0x8805(%rip), %rsi      # 0x11836
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d95
movl $0x3, %edi
callq 0xa2c8
movq 0x1124f(%rip), %rdi     # 0x1a2a0
leaq 0x8c1b(%rip), %rsi      # 0x11c73
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d9a
movl $0x2, %edi
callq 0xa2c8
movq 0x11228(%rip), %rdi     # 0x1a2a0
leaq 0x7dc2(%rip), %rsi      # 0x10e41
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d9f
testq %rbx, %rbx
je 0x91ec
xorl %r12d, %r12d
leaq -0x38(%rbp), %r14
leaq -0x60(%rbp), %r15
movq -0x68(%rbp), %rbx
cmpl $0x0, 0x40(%rbx)
je 0x91dd
movl 0x8(%rbx), %eax
cmpq $0x4, %rax
ja 0x91dd
leaq 0x6f70(%rip), %rcx      # 0x10034
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %r12, -0x58(%rbp)
leaq -0x50(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movl $0x0, -0x38(%rbp)
jmp 0x91be
movq %r12, -0x58(%rbp)
movq 0x18(%rbx), %rax
movq %rax, -0x50(%rbp)
movq 0x10(%rbx), %r13
testq %r13, %r13
je 0x91dd
movl 0x8(%r13), %eax
cmpl $0x2, %eax
je 0x9140
cmpl $0x1, %eax
je 0x912b
testl %eax, %eax
jne 0x9c7d
movq %r12, -0x58(%rbp)
movq 0x38(%r13), %rax
movq %rax, -0x48(%rbp)
movl $0x0, -0x38(%rbp)
jmp 0x9153
movq %r12, -0x58(%rbp)
movq 0x38(%r13), %rax
movq %rax, -0x48(%rbp)
movl $0x1, -0x38(%rbp)
jmp 0x9153
movq %r12, -0x58(%rbp)
movq 0x38(%r13), %rax
movq %rax, -0x48(%rbp)
movl $0x2, -0x38(%rbp)
movq 0x10(%r13), %rax
movq %rax, -0x30(%rbp)
leaq 0x28(%r13), %rdi
movq 0x18(%r13), %rdx
movq 0x20(%r13), %rcx
movq %r14, %rsi
movq %r15, %r8
callq 0xac11
movq (%r13), %r13
jmp 0x90f7
movq %r12, -0x58(%rbp)
leaq -0x50(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movl $0x2, -0x38(%rbp)
jmp 0x91be
movq %r12, -0x58(%rbp)
leaq -0x50(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movl $0x3, -0x38(%rbp)
jmp 0x91be
movq %r12, -0x58(%rbp)
leaq -0x50(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movl $0x1, -0x38(%rbp)
movq 0x10(%rbx), %rax
movq %rax, -0x30(%rbp)
leaq 0x28(%rbx), %rdi
movq 0x18(%rbx), %rdx
movq 0x20(%rbx), %rcx
movq %r14, %rsi
movq %r15, %r8
callq 0xac11
movq (%rbx), %rbx
incq %r12
testq %rbx, %rbx
jne 0x90a6
movl $0x2, %edi
callq 0xa2c8
movq 0x110a3(%rip), %rdi     # 0x1a2a0
leaq 0x866c(%rip), %rsi      # 0x11870
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9da4
movl $0x2, %edi
callq 0xa2c8
movq 0x1107c(%rip), %rdi     # 0x1a2a0
leaq 0x865f(%rip), %rsi      # 0x1188a
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
movq -0x68(%rbp), %rbx
js 0x9da9
movl $0x2, %edi
callq 0xa2c8
movq 0x11051(%rip), %rdi     # 0x1a2a0
leaq 0x8653(%rip), %rsi      # 0x118a9
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9dae
movl $0x2, %edi
callq 0xa2c8
movq 0x1102a(%rip), %rdi     # 0x1a2a0
leaq 0x863c(%rip), %rsi      # 0x118b9
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9db3
movl $0x1, %edi
callq 0xa2c8
movq 0x11003(%rip), %rdi     # 0x1a2a0
leaq 0x7b9d(%rip), %rsi      # 0x10e41
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9db8
movl $0x1, -0x40(%rbp)
testq %rbx, %rbx
je 0x9a14
leaq 0x85ef(%rip), %r15      # 0x118b9
leaq 0x7b70(%rip), %r13      # 0x10e41
xorl %r12d, %r12d
movq -0x68(%rbp), %rbx
cmpl $0x0, 0x40(%rbx)
je 0x92e9
cmpq $0x0, 0x38(%rbx)
je 0x971d
cmpq $0x0, 0x38(%rbx)
je 0x9a05
movl $0x1, %edi
callq 0xa2c8
movq 0x10f9b(%rip), %rdi     # 0x1a2a0
leaq 0x85be(%rip), %rsi      # 0x118ca
movq %r12, %rdx
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9caa
movl $0x2, %edi
callq 0xa2c8
movq 0x10f71(%rip), %rdi     # 0x1a2a0
leaq 0x85d7(%rip), %rsi      # 0x1190d
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9cdc
movl $0x2, %edi
callq 0xa2c8
movq 0x10f4a(%rip), %rdi     # 0x1a2a0
leaq 0x85d9(%rip), %rsi      # 0x11936
movq %r12, %rdx
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9cb4
movl $0x2, %edi
callq 0xa2c8
movq 0x10f20(%rip), %rdi     # 0x1a2a0
leaq 0x7739(%rip), %rsi      # 0x10ac0
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9c91
movl $0x3, %edi
callq 0xa2c8
movq 0x10ef9(%rip), %rdi     # 0x1a2a0
leaq 0x83f3(%rip), %rsi      # 0x117a1
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9cbe
movl $0x3, %edi
callq 0xa2c8
movq 0x10ed2(%rip), %rdi     # 0x1a2a0
movq %r15, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9c9b
movl $0x2, %edi
callq 0xa2c8
movq 0x10eaf(%rip), %rdi     # 0x1a2a0
movq %r13, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9cc8
movl 0x8(%rbx), %r14d
movl $0x2, %edi
callq 0xa2c8
movq 0x10e88(%rip), %rdi     # 0x1a2a0
cmpl $0x4, %r14d
jne 0x9594
leaq 0x8606(%rip), %rsi      # 0x11a2f
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d2c
movl $0x3, %edi
callq 0xa2c8
movq 0x10e57(%rip), %rdi     # 0x1a2a0
leaq 0x8351(%rip), %rsi      # 0x117a1
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d1d
movl $0x3, %edi
callq 0xa2c8
movq 0x10e30(%rip), %rdi     # 0x1a2a0
leaq 0x85e3(%rip), %rsi      # 0x11a5a
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d13
movl $0x2, %edi
callq 0xa2c8
movq 0x10e09(%rip), %rdi     # 0x1a2a0
movq %r13, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d09
movl $0x2, %edi
callq 0xa2c8
movq 0x10de6(%rip), %rdi     # 0x1a2a0
leaq 0x85d2(%rip), %rsi      # 0x11a93
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d04
movl $0x3, %edi
callq 0xa2c8
movq 0x10dbf(%rip), %rdi     # 0x1a2a0
leaq 0x82b9(%rip), %rsi      # 0x117a1
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9cff
movl $0x3, %edi
callq 0xa2c8
movq 0x10d98(%rip), %rdi     # 0x1a2a0
leaq 0x85ba(%rip), %rsi      # 0x11ac9
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9cfa
movl $0x2, %edi
callq 0xa2c8
movq 0x10d71(%rip), %rdi     # 0x1a2a0
movq %r13, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9cf0
movl $0x2, %edi
callq 0xa2c8
movq 0x10d4e(%rip), %rdi     # 0x1a2a0
leaq 0x85ae(%rip), %rsi      # 0x11b07
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9ce6
movl $0x2, %edi
callq 0xa2c8
movq 0x10d27(%rip), %rdi     # 0x1a2a0
leaq 0x85a7(%rip), %rsi      # 0x11b27
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
jns 0x9675
jmp 0x9d27
leaq 0x83d6(%rip), %rsi      # 0x11971
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9cf5
movl $0x2, %edi
callq 0xa2c8
movq 0x10ce5(%rip), %rdi     # 0x1a2a0
movq 0x18(%rbx), %rdx
leaq 0x83c6(%rip), %rsi      # 0x1198c
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9ceb
movl $0x2, %edi
callq 0xa2c8
movq 0x10cba(%rip), %rdi     # 0x1a2a0
leaq 0x83ba(%rip), %rsi      # 0x119a7
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9ce1
movl $0x2, %edi
callq 0xa2c8
movq 0x10c93(%rip), %rdi     # 0x1a2a0
leaq 0x83b8(%rip), %rsi      # 0x119cc
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d22
movl $0x2, %edi
callq 0xa2c8
movq 0x10c6c(%rip), %rdi     # 0x1a2a0
movq 0x18(%rbx), %rdx
leaq 0x83b2(%rip), %rsi      # 0x119f1
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d18
movl $0x2, %edi
callq 0xa2c8
movq 0x10c41(%rip), %rdi     # 0x1a2a0
leaq 0x83b2(%rip), %rsi      # 0x11a18
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d0e
movl $0x2, %edi
callq 0xa2c8
movq 0x10c1a(%rip), %rdi     # 0x1a2a0
leaq 0x81a9(%rip), %rsi      # 0x11836
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9cd7
movl $0x3, %edi
callq 0xa2c8
movq 0x10bf3(%rip), %rdi     # 0x1a2a0
leaq 0x85bf(%rip), %rsi      # 0x11c73
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9caf
movl $0x2, %edi
callq 0xa2c8
movq 0x10bcc(%rip), %rdi     # 0x1a2a0
movq %r13, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9c8c
movl 0x8(%rbx), %eax
cmpq $0x4, %rax
ja 0x9900
leaq 0x694e(%rip), %rcx      # 0x10048
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %r12, -0x58(%rbp)
leaq -0x50(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movl $0x0, -0x38(%rbp)
jmp 0x98df
movl $0x1, %edi
callq 0xa2c8
movq 0x10b72(%rip), %rdi     # 0x1a2a0
leaq 0x8195(%rip), %rsi      # 0x118ca
movq %r12, %rdx
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d4a
movl $0x2, %edi
callq 0xa2c8
movq 0x10b48(%rip), %rdi     # 0x1a2a0
leaq 0x8042(%rip), %rsi      # 0x117a1
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d45
movl $0x2, %edi
callq 0xa2c8
movq 0x10b21(%rip), %rdi     # 0x1a2a0
leaq 0x8159(%rip), %rsi      # 0x118df
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d40
movl $0x2, %edi
callq 0xa2c8
movq 0x10afa(%rip), %rdi     # 0x1a2a0
leaq 0x80fc(%rip), %rsi      # 0x118a9
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d3b
movl $0x2, %edi
callq 0xa2c8
movq 0x10ad3(%rip), %rdi     # 0x1a2a0
movq %r15, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9d36
movl $0x1, %edi
callq 0xa2c8
movq 0x10ab0(%rip), %rdi     # 0x1a2a0
movq %r13, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
jns 0x9a05
jmp 0x9d31
movq %r12, -0x58(%rbp)
movq 0x18(%rbx), %rax
movq %rax, -0x50(%rbp)
movq 0x10(%rbx), %r14
testq %r14, %r14
je 0x9900
movl 0x8(%r14), %eax
cmpl $0x2, %eax
je 0x9860
cmpl $0x1, %eax
je 0x984b
testl %eax, %eax
jne 0x9c87
movq %r12, -0x58(%rbp)
movq 0x38(%r14), %rax
movq %rax, -0x48(%rbp)
movl $0x0, -0x38(%rbp)
jmp 0x9873
movq %r12, -0x58(%rbp)
movq 0x38(%r14), %rax
movq %rax, -0x48(%rbp)
movl $0x1, -0x38(%rbp)
jmp 0x9873
movq %r12, -0x58(%rbp)
movq 0x38(%r14), %rax
movq %rax, -0x48(%rbp)
movl $0x2, -0x38(%rbp)
movq 0x10(%r14), %rax
movq %rax, -0x30(%rbp)
leaq 0x28(%r14), %rdi
movq 0x18(%r14), %rdx
movq 0x20(%r14), %rcx
leaq -0x38(%rbp), %rsi
leaq -0x60(%rbp), %r8
callq 0xac11
movq (%r14), %r14
jmp 0x9817
movq %r12, -0x58(%rbp)
leaq -0x50(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movl $0x2, -0x38(%rbp)
jmp 0x98df
movq %r12, -0x58(%rbp)
leaq -0x50(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movl $0x3, -0x38(%rbp)
jmp 0x98df
movq %r12, -0x58(%rbp)
leaq -0x50(%rbp), %rax
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movl $0x1, -0x38(%rbp)
movq 0x10(%rbx), %rax
movq %rax, -0x30(%rbp)
leaq 0x28(%rbx), %rdi
movq 0x18(%rbx), %rdx
movq 0x20(%rbx), %rcx
leaq -0x38(%rbp), %rsi
leaq -0x60(%rbp), %r8
callq 0xac11
movl $0x2, %edi
callq 0xa2c8
movq 0x1098f(%rip), %rdi     # 0x1a2a0
leaq 0x71fe(%rip), %rsi      # 0x10b16
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9cb9
movl $0x3, %edi
callq 0xa2c8
movq 0x10968(%rip), %rdi     # 0x1a2a0
leaq 0x7f31(%rip), %rsi      # 0x11870
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9c96
movl $0x3, %edi
callq 0xa2c8
movq 0x10941(%rip), %rdi     # 0x1a2a0
leaq 0x7f24(%rip), %rsi      # 0x1188a
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9cc3
movl $0x3, %edi
callq 0xa2c8
movq 0x1091a(%rip), %rdi     # 0x1a2a0
leaq 0x7f1c(%rip), %rsi      # 0x118a9
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9ca0
movl $0x3, %edi
callq 0xa2c8
movq 0x108f3(%rip), %rdi     # 0x1a2a0
movq %r15, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9ccd
movl $0x2, %edi
callq 0xa2c8
movq 0x108d0(%rip), %rdi     # 0x1a2a0
movq %r13, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9ca5
movl $0x1, %edi
callq 0xa2c8
movq 0x108ad(%rip), %rdi     # 0x1a2a0
movq %r13, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9cd2
movq (%rbx), %rbx
incq %r12
testq %rbx, %rbx
jne 0x92d8
movl $0x1, %edi
callq 0xa2c8
movq 0x1087b(%rip), %rdi     # 0x1a2a0
leaq 0x743d(%rip), %rsi      # 0x10e69
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9dbd
movq 0x1085e(%rip), %rdi     # 0x1a2a0
leaq 0x80fc(%rip), %rsi      # 0x11b45
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
movq -0x68(%rbp), %rbx
js 0x9dc2
testq %rbx, %rbx
je 0x9bf9
leaq 0x73d5(%rip), %r15      # 0x10e41
leaq 0x80f2(%rip), %r13      # 0x11b65
xorl %r14d, %r14d
cmpl $0x0, 0x40(%rbx)
jne 0x9a87
cmpq $0x0, 0x38(%rbx)
je 0x9bea
movl $0x1, %edi
callq 0xa2c8
movq 0x10808(%rip), %rdi     # 0x1a2a0
leaq 0x80b2(%rip), %rsi      # 0x11b51
movq %r14, %rdx
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9c78
movq %rbx, %r12
movl 0x8(%rbx), %eax
cmpq $0x4, %rax
ja 0x9bc4
leaq 0x6594(%rip), %rcx      # 0x1005c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x0, -0x38(%rbp)
jmp 0x9ba3
leaq 0x10(%r12), %rbx
movq (%rbx), %rbx
testq %rbx, %rbx
je 0x9bc4
movl $0x2, %edi
callq 0xa2c8
movq 0x107a1(%rip), %rdi     # 0x1a2a0
movq 0x18(%r12), %rdx
movq 0x38(%rbx), %rcx
movq %r13, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9c6e
movl 0x8(%rbx), %eax
cmpl $0x2, %eax
je 0x9b3d
cmpl $0x1, %eax
je 0x9b34
testl %eax, %eax
jne 0x9b62
movl $0x0, -0x38(%rbp)
jmp 0x9b44
movl $0x1, -0x38(%rbp)
jmp 0x9b44
movl $0x2, -0x38(%rbp)
movq 0x10(%rbx), %rax
movq %rax, -0x30(%rbp)
leaq 0x28(%rbx), %rdi
movq 0x20(%rbx), %rdx
leaq -0x38(%rbp), %rsi
movl $0x3, %ecx
callq 0xc240
movl $0x2, %edi
callq 0xa2c8
movq 0x1072d(%rip), %rdi     # 0x1a2a0
movq %r15, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
jns 0x9ae2
jmp 0x9c69
movl $0x2, -0x38(%rbp)
jmp 0x9ba3
movl $0x3, -0x38(%rbp)
jmp 0x9ba3
movl $0x1, -0x38(%rbp)
movq 0x10(%r12), %rax
movq %rax, -0x30(%rbp)
leaq 0x28(%r12), %rdi
movq 0x20(%r12), %rdx
leaq -0x38(%rbp), %rsi
movl $0x2, %ecx
callq 0xc240
movl $0x1, %edi
callq 0xa2c8
movq 0x106cb(%rip), %rdi     # 0x1a2a0
movq %r15, %rsi
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
movq %r12, %rbx
js 0x9c73
movq (%rbx), %rbx
incq %r14
testq %rbx, %rbx
jne 0x9a76
movl $0x1, %edi
callq 0xa2c8
movq 0x10696(%rip), %rdi     # 0x1a2a0
leaq 0x7f6c(%rip), %rsi      # 0x11b7d
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9dc7
movq 0x10679(%rip), %rdi     # 0x1a2a0
leaq 0x7213(%rip), %rsi      # 0x10e41
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9dcc
movq 0x1065c(%rip), %rdi     # 0x1a2a0
leaq 0x753c(%rip), %rsi      # 0x11187
xorl %eax, %eax
callq 0x2100
testl %eax, %eax
js 0x9dd1
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x37d0
callq 0x37fb
callq 0x3826
callq 0x3851
callq 0x30e3
callq 0x30b8
callq 0x3317
callq 0x3474
callq 0x3724
callq 0x341e
callq 0x36ce
callq 0x33c8
callq 0x3372
callq 0x37a5
callq 0x349f
callq 0x374f
callq 0x3449
callq 0x36f9
callq 0x33f3
callq 0x36a3
callq 0x339d
callq 0x3347
callq 0x34ca
callq 0x377a
callq 0x3296
callq 0x3520
callq 0x32c1
callq 0x354b
callq 0x32ec
callq 0x3576
callq 0x35a1
callq 0x35cc
callq 0x35f7
callq 0x3215
callq 0x3622
callq 0x3240
callq 0x364d
callq 0x326b
callq 0x34f5
callq 0x3678
callq 0x3113
callq 0x313e
callq 0x3169
callq 0x3194
callq 0x31bf
callq 0x31ea
callq 0x3cda
callq 0x3caf
callq 0x3c84
callq 0x3c59
callq 0x3c2e
callq 0x3c03
callq 0x3bd8
callq 0x3bad
callq 0x3b82
callq 0x3b57
callq 0x3b2c
callq 0x3b01
callq 0x3ad6
callq 0x3aab
callq 0x3a80
callq 0x3a55
callq 0x3a2a
callq 0x39ff
callq 0x39d4
callq 0x39a9
callq 0x397e
callq 0x3953
callq 0x3928
callq 0x38fd
callq 0x38d2
callq 0x38a7
callq 0x387c