// File: ArthoPacini[P]blockchaincpp/./Blockchain.hpp
// Function: Blockchain::save(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, short)
void save(const std::string output_filename = "blockchain.json", const std::int16_t indent = 4)
    {
        std::filesystem::path output_path = std::filesystem::path(std::filesystem::current_path() / "blockchain" / output_filename);

        if(!std::filesystem::exists(output_path.parent_path()))
            std::filesystem::create_directories(output_path.parent_path());

        std::ofstream output_file(output_path);
        output_file << dump();
    }

// Assembly:
subq $0x378, %rsp            # imm = 0x378
movq %rsi, 0x8(%rsp)
movw %dx, %ax
movq %rdi, 0x370(%rsp)
movq %rsi, 0x368(%rsp)
movw %ax, 0x366(%rsp)
movq 0x370(%rsp), %rax
movq %rax, 0x10(%rsp)
leaq 0x2e8(%rsp), %rdi
callq 0x56d0
leaq 0x37e94(%rip), %rsi     # 0x3ff0c
leaq 0x2c0(%rsp), %rdi
movl $0x2, %edx
callq 0x24fa0
jmp 0x808c
leaq 0x310(%rsp), %rdi
leaq 0x2e8(%rsp), %rsi
leaq 0x2c0(%rsp), %rdx
callq 0x24f10
jmp 0x80ab
movq 0x8(%rsp), %rsi
leaq 0x288(%rsp), %rdi
movl $0x2, %edx
callq 0x250a0
jmp 0x80c4
leaq 0x338(%rsp), %rdi
leaq 0x310(%rsp), %rsi
leaq 0x288(%rsp), %rdx
callq 0x24f10
jmp 0x80e3
leaq 0x288(%rsp), %rdi
callq 0x251a0
leaq 0x310(%rsp), %rdi
callq 0x251a0
leaq 0x2c0(%rsp), %rdi
callq 0x251a0
leaq 0x2e8(%rsp), %rdi
callq 0x251a0
leaq 0x260(%rsp), %rdi
leaq 0x338(%rsp), %rsi
callq 0x5800
jmp 0x812e
leaq 0x260(%rsp), %rdi
callq 0x251d0
movb %al, 0x7(%rsp)
jmp 0x8141
movb 0x7(%rsp), %al
xorb $-0x1, %al
movb %al, 0x6(%rsp)
leaq 0x260(%rsp), %rdi
callq 0x251a0
movb 0x6(%rsp), %al
testb $0x1, %al
jne 0x8165
jmp 0x8291
leaq 0x238(%rsp), %rdi
leaq 0x338(%rsp), %rsi
callq 0x5800
jmp 0x817c
leaq 0x238(%rsp), %rdi
callq 0x5360
jmp 0x818b
leaq 0x238(%rsp), %rdi
callq 0x251a0
jmp 0x8291
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x821a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x820d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x8200
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
leaq 0x288(%rsp), %rdi
callq 0x251a0
leaq 0x310(%rsp), %rdi
callq 0x251a0
leaq 0x2c0(%rsp), %rdi
callq 0x251a0
leaq 0x2e8(%rsp), %rdi
callq 0x251a0
jmp 0x8345
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x8338
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
leaq 0x260(%rsp), %rdi
callq 0x251a0
jmp 0x8338
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
leaq 0x238(%rsp), %rdi
callq 0x251a0
jmp 0x8338
leaq 0x38(%rsp), %rdi
leaq 0x338(%rsp), %rsi
movl $0x10, %edx
callq 0x25200
jmp 0x82aa
movq 0x10(%rsp), %rsi
leaq 0x18(%rsp), %rdi
movl $0x4, %edx
callq 0x77d0
jmp 0x82c0
leaq 0x38(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x5480
jmp 0x82d1
leaq 0x18(%rsp), %rdi
callq 0x5320
leaq 0x38(%rsp), %rdi
callq 0x5690
leaq 0x338(%rsp), %rdi
callq 0x251a0
addq $0x378, %rsp            # imm = 0x378
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
jmp 0x832e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2b8(%rsp)
movl %eax, 0x2b4(%rsp)
leaq 0x18(%rsp), %rdi
callq 0x5320
leaq 0x38(%rsp), %rdi
callq 0x5690
leaq 0x338(%rsp), %rdi
callq 0x251a0
movq 0x2b8(%rsp), %rdi
callq 0x5790
nopw %cs:(%rax,%rax)
nopl (%rax)