// File: Alcaro[P]bridges/game.cpp
// Function: (anonymous namespace)::game_impl::save(arrayvieww<unsigned char>)
void save(bytesw dat)
	{
		if (dat.size() != savedat_size) abort();
		
		dat[0] = unlocked;
		dat[1] = seen_random_tutorial;
		
#ifdef ARLIB_THREAD
		writeu_le64(dat.skip(2 ).ptr(), gamegen_next[0]);
		writeu_le32(dat.skip(10).ptr(), gamegen_diff_expect[0]);
		writeu_le64(dat.skip(14).ptr(), gamegen_next[1]);
		writeu_le32(dat.skip(22).ptr(), gamegen_diff_expect[1]);
		writeu_le64(dat.skip(26).ptr(), gamegen_next[2]);
		writeu_le32(dat.skip(34).ptr(), gamegen_diff_expect[2]);
#else
		writeu_le64(dat.skip(2 ).ptr(), 0);
		writeu_le32(dat.skip(10).ptr(), 0);
		writeu_le64(dat.skip(14).ptr(), 0);
		writeu_le32(dat.skip(22).ptr(), 0);
		writeu_le64(dat.skip(26).ptr(), 0);
		writeu_le32(dat.skip(34).ptr(), 0);
#endif
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rsi, -0xe8(%rbp)
movq %rdi, %rax
movq -0xe8(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
movq %rax, -0x68(%rbp)
movq %rdi, -0x70(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0xd8(%rbp)
callq 0x6290
cmpq $0x26, %rax
je 0x487e6
callq 0x4180
movq -0xd8(%rbp), %rax
movq -0xe0(%rbp), %rdi
movl 0x4c(%rax), %eax
movb %al, -0xea(%rbp)
xorl %eax, %eax
movl %eax, %esi
callq 0x3dcc0
movb -0xea(%rbp), %dl
movq -0xe0(%rbp), %rdi
movq %rax, %rcx
movq -0xd8(%rbp), %rax
movb %dl, (%rcx)
movb 0x24acd(%rax), %al
andb $0x1, %al
movb %al, -0xe9(%rbp)
movl $0x1, %esi
callq 0x3dcc0
movb -0xe9(%rbp), %cl
movq -0xe0(%rbp), %rsi
movb %cl, (%rax)
leaq -0x80(%rbp), %rdi
movl $0x2, %edx
callq 0xc460
leaq -0x80(%rbp), %rdi
callq 0x7490
movq -0xe0(%rbp), %rsi
movq %rax, %rcx
movq -0xd8(%rbp), %rax
movq 0x24a80(%rax), %rax
movq %rcx, -0x38(%rbp)
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rax
movq -0x40(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x90(%rbp), %rdi
movl $0xa, %edx
callq 0xc460
leaq -0x90(%rbp), %rdi
callq 0x7490
movq -0xe0(%rbp), %rsi
movq %rax, %rcx
movq -0xd8(%rbp), %rax
movl 0x24aac(%rax), %eax
movq %rcx, -0x8(%rbp)
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movl -0xc(%rbp), %ecx
movl %ecx, (%rax)
leaq -0xa0(%rbp), %rdi
movl $0xe, %edx
callq 0xc460
leaq -0xa0(%rbp), %rdi
callq 0x7490
movq -0xe0(%rbp), %rsi
movq %rax, %rcx
movq -0xd8(%rbp), %rax
movq 0x24a88(%rax), %rax
movq %rcx, -0x48(%rbp)
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rax
movq -0x50(%rbp), %rcx
movq %rcx, (%rax)
leaq -0xb0(%rbp), %rdi
movl $0x16, %edx
callq 0xc460
leaq -0xb0(%rbp), %rdi
callq 0x7490
movq -0xe0(%rbp), %rsi
movq %rax, %rcx
movq -0xd8(%rbp), %rax
movl 0x24ab0(%rax), %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, -0x1c(%rbp)
movq -0x18(%rbp), %rax
movl -0x1c(%rbp), %ecx
movl %ecx, (%rax)
leaq -0xc0(%rbp), %rdi
movl $0x1a, %edx
callq 0xc460
leaq -0xc0(%rbp), %rdi
callq 0x7490
movq -0xe0(%rbp), %rsi
movq %rax, %rcx
movq -0xd8(%rbp), %rax
movq 0x24a90(%rax), %rax
movq %rcx, -0x58(%rbp)
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x58(%rbp), %rax
movq -0x60(%rbp), %rcx
movq %rcx, (%rax)
leaq -0xd0(%rbp), %rdi
movl $0x22, %edx
callq 0xc460
leaq -0xd0(%rbp), %rdi
callq 0x7490
movq %rax, %rcx
movq -0xd8(%rbp), %rax
movl 0x24ab4(%rax), %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movl %eax, -0x2c(%rbp)
movq -0x28(%rbp), %rax
movl -0x2c(%rbp), %ecx
movl %ecx, (%rax)
addq $0xf0, %rsp
popq %rbp
retq