// File: /workspace/github_cpp_makefile_star2_O1/exrd[P]neteruhsp/neteruhsp/neteruhsp.cc
// Function: neteruhsp::generate_and_append_code(neteruhsp::execute_environment_t*, neteruhsp::list_t*)::_::walk(neteruhsp::execute_environment_t*, neteruhsp::ast_node_t const*, neteruhsp::generate_and_append_code(neteruhsp::execute_environment_t*, neteruhsp::list_t*)::generate_context_t*)
static void walk( execute_environment_t* e, const ast_node_t* n, generate_context_t* c )
			{
				switch( n->tag_ )
				{
					case NODE_EMPTY:
						break;

					case NODE_LABEL:
					{
						const auto label_name = n->token_->content_;
						const auto label = search_label( e, label_name );
						assert( label != nullptr );
						label->position_ = static_cast<int>( e->execute_code_->code_size_ );

						code_write( e, OPERATOR_LABEL );
						break;
					}

					case NODE_BLOCK_STATEMENTS:
						if ( n->left_ )
						{ walk( e, n->left_, c ); }
						if ( n->right_ )
						{ walk( e, n->right_, c ); }
						break;

					case NODE_COMMAND:
					{
						assert( n->token_->tag_ == TOKEN_IDENTIFIER );
						const auto command_name = n->token_->content_;

						const auto command = query_command( command_name );
						if ( command == -1 )
						{
							raise_error( "コマンドが見つかりません：%s", command_name );
						}

						const auto top = c->stack_;
						if ( n->left_ != nullptr )
						{
							walk( e, n->left_, c );
						}
						const auto arg_num = c->stack_ -top;

						code_write( e, OPERATOR_COMMAND );
						code_write( e, command );
						code_write( e, arg_num );

						c->stack_ = top;
						break;
					}
					case NODE_ARGUMENTS:
					{
						if ( n->left_ != nullptr )
						{ walk( e, n->left_, c ); }
						if ( n->right_ != nullptr )
						{ walk( e, n->right_, c ); }
						break;
					}

					case NODE_ASSIGN:
					case NODE_ADD_ASSIGN:
					case NODE_SUB_ASSIGN:
					case NODE_MUL_ASSIGN:
					case NODE_DIV_ASSIGN:
					case NODE_MOD_ASSIGN:
					case NODE_BOR_ASSIGN:
					case NODE_BAND_ASSIGN:
					case NODE_BXOR_ASSIGN:
					{
						walk( e, n->left_, c );
						walk( e, n->right_, c );
						switch( n->tag_ )
						{
						case NODE_ASSIGN:		code_write( e, OPERATOR_ASSIGN ); break;
						case NODE_ADD_ASSIGN:	code_write( e, OPERATOR_ADD_ASSIGN ); break;
						case NODE_SUB_ASSIGN:	code_write( e, OPERATOR_SUB_ASSIGN ); break;
						case NODE_MUL_ASSIGN:	code_write( e, OPERATOR_MUL_ASSIGN ); break;
						case NODE_DIV_ASSIGN:	code_write( e, OPERATOR_DIV_ASSIGN ); break;
						case NODE_MOD_ASSIGN:	code_write( e, OPERATOR_MOD_ASSIGN ); break;
						case NODE_BOR_ASSIGN:	code_write( e, OPERATOR_BOR_ASSIGN ); break;
						case NODE_BAND_ASSIGN:	code_write( e, OPERATOR_BAND_ASSIGN ); break;
						case NODE_BXOR_ASSIGN:	code_write( e, OPERATOR_BXOR_ASSIGN ); break;
						default: assert( false ); break;
						}
						c->stack_ -= 2; 
						break;
					}
					case NODE_VARIABLE:
					{
						auto idx_node = n->left_;
						if ( idx_node )
						{
							walk( e, idx_node, c );
						}
						else
						{
							code_write( e, OPERATOR_PUSH_INT );
							code_write( e, 0 );
						}

						const auto var_name = n->token_->content_;
						const auto var = search_variable( e->variable_table_, var_name );
						assert( var != nullptr );

						code_write( e, OPERATOR_PUSH_VARIABLE );
						code_write( e, var );
						++c->stack_;
						break;
					}

					case NODE_EXPRESSION:
						assert( n->left_ != nullptr );
						walk( e, n->left_, c );
						break;

					case NODE_BOR:
					case NODE_BAND:
					case NODE_BXOR:
					case NODE_EQ:
					case NODE_NEQ:
					case NODE_GT:
					case NODE_GTOE:
					case NODE_LT:
					case NODE_LTOE:
					case NODE_ADD:
					case NODE_SUB:
					case NODE_MUL:
					case NODE_DIV:
					case NODE_MOD:
					{
						assert( n->left_ != nullptr );
						walk( e, n->left_, c );
						assert( n->right_ != nullptr );
						walk( e, n->right_, c );

						switch( n->tag_ )
						{
							case NODE_BOR:		code_write( e, OPERATOR_BOR ); break;
							case NODE_BAND:		code_write( e, OPERATOR_BAND ); break;
							case NODE_BXOR:		code_write( e, OPERATOR_BXOR ); break;
							case NODE_EQ:		code_write( e, OPERATOR_EQ ); break;
							case NODE_NEQ:		code_write( e, OPERATOR_NEQ ); break;
							case NODE_GT:		code_write( e, OPERATOR_GT ); break;
							case NODE_GTOE:		code_write( e, OPERATOR_GTOE ); break;
							case NODE_LT:		code_write( e, OPERATOR_LT ); break;
							case NODE_LTOE:		code_write( e, OPERATOR_LTOE ); break;
							case NODE_ADD:		code_write( e, OPERATOR_ADD ); break;
							case NODE_SUB:		code_write( e, OPERATOR_SUB ); break;
							case NODE_MUL:		code_write( e, OPERATOR_MUL ); break;
							case NODE_DIV:		code_write( e, OPERATOR_DIV ); break;
							case NODE_MOD:		code_write( e, OPERATOR_MOD ); break;
							default: assert( false ); break;
						}

						--c->stack_;
						break;
					}

					case NODE_UNARY_MINUS:
					{
						assert( n->left_ != nullptr );
						walk( e, n->left_, c );
						code_write( e, OPERATOR_UNARY_MINUS );
						break;
					}

					case NODE_PRIMITIVE_VALUE:
					{
						switch( n->token_->tag_ )
						{
							case TOKEN_INTEGER:	code_write( e, OPERATOR_PUSH_INT ); code_write( e, atoi( n->token_->content_ ) ); break;
							case TOKEN_REAL:	code_write( e, OPERATOR_PUSH_DOUBLE ); code_write_block( e, atof( n->token_->content_ ) ); break;
							case TOKEN_STRING:	code_write( e, OPERATOR_PUSH_STRING ); code_write( e, n->token_->content_ ); break;
							default: assert( false ); break;
						}
						++c->stack_;
						break;
					}
					case NODE_IDENTIFIER_EXPR:
					{
						assert( n->token_->tag_ == TOKEN_IDENTIFIER );
						const auto ident = n->token_->content_;

						const auto top = c->stack_;
						if ( n->left_ != nullptr )
						{
							walk( e, n->left_, c );
						}
						const auto arg_num = c->stack_ -top;

						const auto function = query_function( ident );
						if ( function >= 0 )
						{
							code_write( e, OPERATOR_FUNCTION );
							code_write( e, function );
							code_write( e, arg_num );
						}
						else
						{
							// システム変数
							const auto sysvar = query_sysvar( ident );
							if ( sysvar >= 0 )
							{
								if ( arg_num > 0 )
								{
									raise_error( "システム変数に添え字はありません : %s", ident );
								}

								code_write( e, OPERATOR_PUSH_SYSVAR );
								code_write( e, sysvar );
							}
							else
							{
								// 配列変数
								if ( arg_num > 1 )
								{
									raise_error( "関数がみつかりません、配列変数の添え字は1次元までです@@ %s", ident );
								}

								const auto var = search_variable( e->variable_table_, ident );
								assert( var != nullptr );

								if ( arg_num == 0 )
								{
									code_write( e, OPERATOR_PUSH_INT );
									code_write( e, 0 );
								}

								code_write( e, OPERATOR_PUSH_VARIABLE );
								code_write( e, var );
							}
						}

						c->stack_ = top +1;
						break;
					}

					case NODE_END:
						code_write( e, OPERATOR_END );
						break;

					case NODE_RETURN:
					{
						if ( n->left_ )
						{
							walk( e, n->left_, c );
							--c->stack_;
						}
						code_write( e, OPERATOR_RETURN );
						code_write( e, n->left_==nullptr ? 0 : 1 );
						break;
					}

					case NODE_GOTO:
					{
						const auto label_node = n->left_;
						assert( label_node != nullptr );
						assert( label_node->tag_ == NODE_LABEL );

						const auto label_name = label_node->token_->content_;
						const auto label = search_label( e, label_name );
						if ( label == nullptr )
						{
							raise_error( "goto：ラベルがみつかりません@@ %s", label_name );
						}

						code_write( e, OPERATOR_GOTO );
						code_write( e, label );
						break;
					}
					case NODE_GOSUB:
					{
						const auto label_node = n->left_;
						assert( label_node != nullptr );
						assert( label_node->tag_ == NODE_LABEL );

						const auto label_name = label_node->token_->content_;
						const auto label = search_label( e, label_name );
						if ( label == nullptr )
						{
							raise_error( "gosub：ラベルがみつかりません@@ %s", label_name );
						}

						code_write( e, OPERATOR_GOSUB );
						code_write( e, label );
						break;
					}

					case NODE_REPEAT:
					{
						if ( n->left_ )
						{
							walk( e, n->left_, c );
							--c->stack_;
						}
						else
						{
							code_write( e, OPERATOR_PUSH_INT );
							code_write( e, -1 );
						}
						const auto pos_head = e->execute_code_->code_size_;
						code_write( e, OPERATOR_REPEAT );
						code_write( e, 0 );// dummy TAIL

						if ( c->repeat_depth_ >= sizeof(c->repeat_head_) /sizeof(*c->repeat_head_) )
						{
							raise_error( "repeat-loop: ソースコード上でネストが深すぎます@@ %d行目", n->token_->appear_line_ );
						}
						c->repeat_head_[c->repeat_depth_] = static_cast<int>( pos_head );
						++c->repeat_depth_;

						code_write( e, OPERATOR_REPEAT_CHECK );
						break;
					}
					case NODE_LOOP:
					{
						if ( c->repeat_depth_ <= 0 )
						{
							raise_error( "repeat-loop: repeatがないのにloopを検出しました@@ %d行目", n->token_->appear_line_ );
						}

						const auto loop_head = e->execute_code_->code_size_;
						code_write( e, OPERATOR_LOOP );

						const auto write_offset = c->repeat_head_[c->repeat_depth_ -1] +1;
						e->execute_code_->code_[ write_offset ] = static_cast<int>( loop_head );
						--c->repeat_depth_;
						break;
					}
					case NODE_CONTINUE:		code_write( e, OPERATOR_CONTINUE ); break;
					case NODE_BREAK:		code_write( e, OPERATOR_BREAK ); break;

					case NODE_IF:
					{
						assert( n->left_ != nullptr );
						walk( e, n->left_, c );

						assert( n->right_ != nullptr );
						const auto dispatcher = n->right_;
						assert( dispatcher->tag_ == NODE_IF_DISPATCHER );

						const auto pos_root = e->execute_code_->code_size_;
						code_write( e, OPERATOR_IF );
						code_write( e, 0 );// dummy FALSE

						walk( e, dispatcher->left_, c );
						const auto pos_true_tail = e->execute_code_->code_size_;
						code_write( e, OPERATOR_JUMP_RELATIVE );
						code_write( e, 0 );// dummy TAIL

						const auto pos_false_head = e->execute_code_->code_size_;
						if ( dispatcher->right_ )
						{
							walk( e, dispatcher->right_, c );
						}

						const auto pos_tail = e->execute_code_->code_size_;
						e->execute_code_->code_[ pos_root +1 ] = static_cast<int>( pos_false_head - pos_root );
						e->execute_code_->code_[ pos_true_tail +1 ] = static_cast<int>( pos_tail - pos_true_tail );
						break;
					}
					case NODE_IF_DISPATCHER:
						assert( false );
						break;

					default: assert( false ); break;
				}
			}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x44e0(%rip), %r12      # 0xd570
movl (%r15), %eax
cmpq $0x2a, %rax
ja 0x9c5d
movslq (%r12,%rax,4), %rax
addq %r12, %rax
jmpq *%rax
movq 0x10(%r15), %rsi
testq %rsi, %rsi
je 0x90ba
movq %rbx, %rdi
movq %r14, %rdx
callq 0x9072
movq 0x18(%r15), %r15
testq %r15, %r15
jne 0x9090
jmp 0x91b5
movq 0x10(%r15), %r15
testq %r15, %r15
jne 0x9090
leaq 0x7ac7(%rip), %rdi      # 0x10b9f
leaq 0x47fa(%rip), %rsi      # 0xd8d9
leaq 0x7d82(%rip), %rcx      # 0x10e68
movl $0x1641, %edx           # imm = 0x1641
callq 0x20f0
movq 0x10(%r15), %rsi
testq %rsi, %rsi
je 0x9c7c
movq %rbx, %rdi
movq %r14, %rdx
callq 0x9072
movq 0x18(%r15), %rsi
testq %rsi, %rsi
je 0x9c9b
movq %rbx, %rdi
movq %r14, %rdx
callq 0x9072
movl (%r15), %r15d
leal -0x10(%r15), %eax
cmpl $0xe, %eax
jae 0x9cba
decl %r15d
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl %r15d, (%rcx,%rdx,4)
decl (%r14)
jmp 0x91b5
movq 0x10(%r15), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x9072
movq 0x18(%r15), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x9072
movl (%r15), %r15d
leal -0x5(%r15), %eax
cmpl $0x9, %eax
jae 0x9cd9
incl %r15d
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl %r15d, (%rcx,%rdx,4)
addl $-0x2, (%r14)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x8(%r15), %rax
cmpl $0x23, (%rax)
jne 0x9cf8
movq 0x8(%rax), %r12
movl (%r14), %ebp
movq 0x10(%r15), %rsi
testq %rsi, %rsi
je 0x91ec
movq %rbx, %rdi
movq %r14, %rdx
callq 0x9072
movl (%r14), %r15d
leaq 0x7b27(%rip), %rsi      # 0x10d1d
movq %r12, %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x2da2
xorl %r13d, %r13d
testb %al, %al
jne 0x9253
movl %r15d, 0x14(%rsp)
movl %ebp, 0x8(%rsp)
movl $0x18, %ebp
leaq 0xd971(%rip), %r15      # 0x16b90
movq %rbp, %r13
addq $0x10, %rbp
cmpq $0x178, %rbp            # imm = 0x178
je 0x9245
movq (%r13,%r15), %rsi
movq %r12, %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x2da2
testb %al, %al
je 0x921f
movl -0x8(%r13,%r15), %r13d
movl 0x8(%rsp), %ebp
movl 0x14(%rsp), %r15d
movl %r15d, %eax
subl %ebp, %r15d
testl %r13d, %r13d
js 0x9a49
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x28, (%rcx,%rdx,4)
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl %r13d, (%rcx,%rdx,4)
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl %r15d, (%rcx,%rdx,4)
jmp 0x9c34
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x2c, (%rcx,%rdx,4)
jmp 0x91b5
movq 0x8(%r15), %rax
movq 0x8(%rax), %rsi
movq %rbx, %rdi
callq 0xc229
testq %rax, %rax
je 0x9d17
movq 0x20(%rbx), %rcx
movl 0x8(%rcx), %ecx
movl %ecx, 0x8(%rax)
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x24, (%rcx,%rdx,4)
jmp 0x91b5
movq 0x8(%r15), %rax
cmpl $0x23, (%rax)
jne 0x9d36
movq 0x8(%rax), %r12
leaq 0x7982(%rip), %rsi      # 0x10ceb
movq %r12, %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x2da2
xorl %r13d, %r13d
testb %al, %al
jne 0x93bc
movl $0x18, %r13d
movq %r13, %rbp
addq $0x10, %r13
cmpq $0xb8, %r13
je 0x93b0
leaq 0xd6e6(%rip), %rax      # 0x16a80
movq (%rbp,%rax), %rsi
movq %r12, %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x2da2
testb %al, %al
je 0x9383
leaq 0xd6c9(%rip), %rax      # 0x16a80
movl -0x8(%rbp,%rax), %r13d
cmpl $-0x1, %r13d
je 0x9e15
movl (%r14), %ebp
movq 0x10(%r15), %rsi
testq %rsi, %rsi
je 0x93dd
movq %rbx, %rdi
movq %r14, %rdx
callq 0x9072
movl (%r14), %r15d
subl %ebp, %r15d
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x27, (%rcx,%rdx,4)
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl %r13d, (%rcx,%rdx,4)
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl %r15d, (%rcx,%rdx,4)
jmp 0x9c36
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x23, (%rcx,%rdx,4)
jmp 0x91b5
movq 0x10(%r15), %rsi
testq %rsi, %rsi
je 0x9d55
movq %rbx, %rdi
movq %r14, %rdx
callq 0x9072
movq 0x18(%r15), %r12
testq %r12, %r12
je 0x9e24
cmpl $0x2a, (%r12)
jne 0x9e81
movq 0x20(%rbx), %rax
movq 0x8(%rax), %r15
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x1e, (%rcx,%rdx,4)
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
xorl %eax, %eax
movl %eax, (%rcx,%rdx,4)
movq 0x10(%r12), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x9072
movq 0x20(%rbx), %rax
movq 0x8(%rax), %r13
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x2a, (%rcx,%rdx,4)
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rbp
movq %rbp, 0x8(%rax)
xorl %eax, %eax
movl %eax, (%rcx,%rdx,4)
movq 0x18(%r12), %rsi
testq %rsi, %rsi
je 0x9580
movq %rbx, %rdi
movq %r14, %rdx
callq 0x9072
movq 0x20(%rbx), %rax
movl 0x8(%rax), %ecx
subl %r15d, %ebp
movq (%rax), %rax
movl %ebp, 0x4(%rax,%r15,4)
subl %r13d, %ecx
movl %ecx, 0x4(%rax,%r13,4)
jmp 0x91b5
movq 0x10(%r15), %rsi
testq %rsi, %rsi
je 0x9d74
movq %rbx, %rdi
movq %r14, %rdx
callq 0x9072
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x1d, (%rcx,%rdx,4)
jmp 0x91b5
cmpl $0x0, 0x84(%r14)
jle 0x9d93
movq 0x20(%rbx), %rax
movl 0x8(%rax), %ebp
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x21, (%rcx,%rdx,4)
movslq 0x84(%r14), %rax
movslq (%r14,%rax,4), %rax
movl %ebp, 0x4(%rcx,%rax,4)
decl 0x84(%r14)
jmp 0x91b5
movq 0x10(%r15), %rax
testq %rax, %rax
je 0x9da3
cmpl $0x1, (%rax)
jne 0x9e43
movq 0x8(%rax), %rax
movq 0x8(%rax), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0xc229
testq %rax, %rax
je 0x9ea0
movq %rax, %r14
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x26, (%rcx,%rdx,4)
jmp 0x97df
movq 0x10(%r15), %rsi
testq %rsi, %rsi
je 0x987a
movq %rbx, %rdi
movq %r14, %rdx
callq 0x9072
decl (%r14)
jmp 0x98c8
movq 0x8(%r15), %rax
movl (%rax), %eax
cmpl $0xb, %eax
je 0x9b17
cmpl $0xa, %eax
je 0x9ab8
cmpl $0x9, %eax
jne 0x9eba
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x1, (%rcx,%rdx,4)
movq 0x8(%r15), %rax
movq 0x8(%rax), %rdi
callq 0x2250
movl %eax, %ebp
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl %ebp, (%rcx,%rdx,4)
jmp 0x9b6b
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x22, (%rcx,%rdx,4)
jmp 0x91b5
movq 0x10(%r15), %rsi
testq %rsi, %rsi
je 0x996b
movq %rbx, %rdi
movq %r14, %rdx
callq 0x9072
jmp 0x99b9
movq 0x10(%r15), %rax
testq %rax, %rax
je 0x9dc2
cmpl $0x1, (%rax)
jne 0x9e62
movq 0x8(%rax), %rax
movq 0x8(%rax), %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0xc229
testq %rax, %rax
je 0x9ea9
movq %rax, %r14
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x25, (%rcx,%rdx,4)
movl $0x2, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rax
movq %r14, (%rcx,%rax,4)
movq 0x20(%rbx), %rax
addq $0x2, 0x8(%rax)
jmp 0x91b5
movq 0x10(%r15), %rsi
testq %rsi, %rsi
je 0x9820
movq %rbx, %rdi
movq %r14, %rdx
callq 0x9072
decl (%r14)
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x2b, (%rcx,%rdx,4)
xorl %ebp, %ebp
cmpq $0x0, 0x10(%r15)
setne %bpl
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl %ebp, (%rcx,%rdx,4)
jmp 0x91b5
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x1, (%rcx,%rdx,4)
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0xffffffff, (%rcx,%rdx,4) # imm = 0xFFFFFFFF
movq 0x20(%rbx), %rax
movq 0x8(%rax), %r12
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x1f, (%rcx,%rdx,4)
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x0, (%rcx,%rdx,4)
cmpl $0x20, 0x84(%r14)
jae 0x9de1
movslq 0x84(%r14), %rax
movl %r12d, 0x4(%r14,%rax,4)
incl 0x84(%r14)
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x20, (%rcx,%rdx,4)
jmp 0x91b5
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x1, (%rcx,%rdx,4)
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x0, (%rcx,%rdx,4)
movq 0x8(%r15), %rax
movq 0x8(%rax), %r15
movq 0x18(%rbx), %rax
movq (%rax), %r13
testq %r13, %r13
je 0x99f5
movq 0x10(%r13), %rbp
movq (%rbp), %rdi
movq %r15, %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x2da2
testb %al, %al
je 0x99eb
movq %rbp, %r12
jmp 0x99ef
movq 0x8(%r13), %r13
testb %al, %al
je 0x99c8
jmp 0x99f8
xorl %r12d, %r12d
testq %r12, %r12
je 0x9df6
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x4, (%rcx,%rdx,4)
movl $0x2, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rax
movq %r12, (%rcx,%rax,4)
jmp 0x9b62
movl %eax, %r13d
movq %r12, %rdi
callq 0x7f53
testl %eax, %eax
js 0x9b73
testl %r15d, %r15d
jg 0x9ed9
movl %eax, %r13d
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x5, (%rcx,%rdx,4)
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl %r13d, (%rcx,%rdx,4)
jmp 0x9c34
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x2, (%rcx,%rdx,4)
movq 0x8(%r15), %rax
movq 0x8(%rax), %rdi
callq 0x21c0
movsd %xmm0, 0x8(%rsp)
movl $0x2, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rax
movsd 0x8(%rsp), %xmm0
movsd %xmm0, (%rcx,%rax,4)
jmp 0x9b62
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x3, (%rcx,%rdx,4)
movq 0x8(%r15), %rax
movq 0x8(%rax), %r15
movl $0x2, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rax
movq %r15, (%rcx,%rax,4)
movq 0x20(%rbx), %rax
addq $0x2, 0x8(%rax)
incl (%r14)
jmp 0x91b5
cmpl $0x2, %r15d
jge 0x9ee5
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0x66a5
testq %rax, %rax
je 0x9ef1
movq %rax, %r12
cmpl %ebp, %r13d
jne 0x9be8
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x1, (%rcx,%rdx,4)
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x0, (%rcx,%rdx,4)
movl $0x1, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rdx
leaq 0x1(%rdx), %rsi
movq %rsi, 0x8(%rax)
movl $0x4, (%rcx,%rdx,4)
movl $0x2, %esi
movq %rbx, %rdi
callq 0xc27a
movq 0x20(%rbx), %rax
movq (%rax), %rcx
movq 0x8(%rax), %rax
movq %r12, (%rcx,%rax,4)
movq 0x20(%rbx), %rax
addq $0x2, 0x8(%rax)
incl %ebp
movl %ebp, (%r14)
jmp 0x91b5
leaq 0x4bb2(%rip), %rdi      # 0xe7f7
leaq 0x3c8d(%rip), %rsi      # 0xd8d9
leaq 0x7215(%rip), %rcx      # 0x10e68
movl $0x173c, %edx           # imm = 0x173C
callq 0x20f0
leaq 0x4b93(%rip), %rdi      # 0xe7f7
leaq 0x3c6e(%rip), %rsi      # 0xd8d9
leaq 0x71f6(%rip), %rcx      # 0x10e68
movl $0x173f, %edx           # imm = 0x173F
callq 0x20f0
leaq 0x6f1c(%rip), %rdi      # 0x10b9f
leaq 0x3c4f(%rip), %rsi      # 0xd8d9
leaq 0x71d7(%rip), %rcx      # 0x10e68
movl $0x1654, %edx           # imm = 0x1654
callq 0x20f0
leaq 0x6f52(%rip), %rdi      # 0x10bf4
leaq 0x3c30(%rip), %rsi      # 0xd8d9
leaq 0x71b8(%rip), %rcx      # 0x10e68
movl $0x1656, %edx           # imm = 0x1656
callq 0x20f0
leaq 0x4b36(%rip), %rdi      # 0xe7f7
leaq 0x3c11(%rip), %rsi      # 0xd8d9
leaq 0x7199(%rip), %rcx      # 0x10e68
movl $0x1669, %edx           # imm = 0x1669
callq 0x20f0
leaq 0x4b17(%rip), %rdi      # 0xe7f7
leaq 0x3bf2(%rip), %rsi      # 0xd8d9
leaq 0x717a(%rip), %rcx      # 0x10e68
movl $0x1624, %edx           # imm = 0x1624
callq 0x20f0
leaq 0x7208(%rip), %rdi      # 0x10f07
leaq 0x3bd3(%rip), %rsi      # 0xd8d9
leaq 0x715b(%rip), %rcx      # 0x10e68
movl $0x1686, %edx           # imm = 0x1686
callq 0x20f0
leaq 0x6d5c(%rip), %rdi      # 0x10a7a
leaq 0x3bb4(%rip), %rsi      # 0xd8d9
leaq 0x713c(%rip), %rcx      # 0x10e68
movl $0x15dd, %edx           # imm = 0x15DD
callq 0x20f0
leaq 0x71ca(%rip), %rdi      # 0x10f07
leaq 0x3b95(%rip), %rsi      # 0xd8d9
leaq 0x711d(%rip), %rcx      # 0x10e68
movl $0x15ed, %edx           # imm = 0x15ED
callq 0x20f0
leaq 0x6e43(%rip), %rdi      # 0x10b9f
leaq 0x3b76(%rip), %rsi      # 0xd8d9
leaq 0x70fe(%rip), %rcx      # 0x10e68
movl $0x1720, %edx           # imm = 0x1720
callq 0x20f0
leaq 0x6e24(%rip), %rdi      # 0x10b9f
leaq 0x3b57(%rip), %rsi      # 0xd8d9
leaq 0x70df(%rip), %rcx      # 0x10e68
movl $0x1672, %edx           # imm = 0x1672
callq 0x20f0
movq 0x8(%r15), %rax
movl 0x18(%rax), %esi
leaq 0x731d(%rip), %rdi      # 0x110be
jmp 0x9def
leaq 0x7236(%rip), %rdi      # 0x10fe0
leaq 0x3b28(%rip), %rsi      # 0xd8d9
leaq 0x70b0(%rip), %rcx      # 0x10e68
movl $0x16d2, %edx           # imm = 0x16D2
callq 0x20f0
leaq 0x7217(%rip), %rdi      # 0x10fe0
leaq 0x3b09(%rip), %rsi      # 0xd8d9
leaq 0x7091(%rip), %rcx      # 0x10e68
movl $0x16e3, %edx           # imm = 0x16E3
callq 0x20f0
movq 0x8(%r15), %rax
movl 0x18(%rax), %esi
leaq 0x7283(%rip), %rdi      # 0x11072
xorl %eax, %eax
callq 0x34a8
leaq 0x5765(%rip), %rdi      # 0xf562
leaq 0x3ad5(%rip), %rsi      # 0xd8d9
leaq 0x705d(%rip), %rcx      # 0x10e68
movl $0x1638, %edx           # imm = 0x1638
callq 0x20f0
leaq 0x710f(%rip), %rdi      # 0x10f2b
movq %r12, %rsi
jmp 0x9eb3
leaq 0x6dc9(%rip), %rdi      # 0x10bf4
leaq 0x3aa7(%rip), %rsi      # 0xd8d9
leaq 0x702f(%rip), %rcx      # 0x10e68
movl $0x1723, %edx           # imm = 0x1723
callq 0x20f0
leaq 0x71ac(%rip), %rdi      # 0x10ff6
leaq 0x3a88(%rip), %rsi      # 0xd8d9
leaq 0x7010(%rip), %rcx      # 0x10e68
movl $0x16d3, %edx           # imm = 0x16D3
callq 0x20f0
leaq 0x718d(%rip), %rdi      # 0x10ff6
leaq 0x3a69(%rip), %rsi      # 0xd8d9
leaq 0x6ff1(%rip), %rcx      # 0x10e68
movl $0x16e4, %edx           # imm = 0x16E4
callq 0x20f0
leaq 0x727d(%rip), %rdi      # 0x11105
leaq 0x3a4a(%rip), %rsi      # 0xd8d9
leaq 0x6fd2(%rip), %rcx      # 0x10e68
movl $0x1725, %edx           # imm = 0x1725
callq 0x20f0
leaq 0x716e(%rip), %rdi      # 0x11015
jmp 0x9eb0
leaq 0x7193(%rip), %rdi      # 0x11043
movq %r15, %rsi
xorl %eax, %eax
callq 0x34a8
leaq 0x4936(%rip), %rdi      # 0xe7f7
leaq 0x3a11(%rip), %rsi      # 0xd8d9
leaq 0x6f99(%rip), %rcx      # 0x10e68
movl $0x167f, %edx           # imm = 0x167F
callq 0x20f0
leaq 0x7075(%rip), %rdi      # 0x10f55
jmp 0x9e1c
leaq 0x709f(%rip), %rdi      # 0x10f8b
jmp 0x9e1c
leaq 0x566a(%rip), %rdi      # 0xf562
leaq 0x39da(%rip), %rsi      # 0xd8d9
leaq 0x6f62(%rip), %rcx      # 0x10e68
movl $0x16ae, %edx           # imm = 0x16AE
callq 0x20f0