// File: mattn[P]wandbox-run/./json.hpp
// Function: void nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>::serializer::dump_integer<long, 0>(long)
void dump_integer(NumberType x)
        {
            // special case for "0"
            if (x == 0)
            {
                o.put('0');
                return;
            }

            const bool is_negative = x < 0;
            size_t i = 0;

            // spare 1 byte for '\0'
            while (x != 0 and i < number_buffer.size() - 1)
            {
                const auto digit = std::labs(static_cast<long>(x % 10));
                number_buffer[i++] = static_cast<char>('0' + digit);
                x /= 10;
            }

            // make sure the number has been processed completely
            assert(x == 0);

            if (is_negative)
            {
                // make sure there is capacity for the '-'
                assert(i < number_buffer.size() - 2);
                number_buffer[i++] = '-';
            }

            std::reverse(number_buffer.begin(), number_buffer.begin() + i);
            o.write(number_buffer.data(), static_cast<std::streamsize>(i));
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x234e5
movq -0x30(%rbp), %rax
movq (%rax), %rdi
movl $0x30, %esi
callq 0x916c0
jmp 0x2367c
cmpq $0x0, -0x10(%rbp)
setl %al
andb $0x1, %al
movb %al, -0x11(%rbp)
movq $0x0, -0x20(%rbp)
xorl %eax, %eax
cmpq $0x0, -0x10(%rbp)
movb %al, -0x31(%rbp)
je 0x2352f
movq -0x30(%rbp), %rdi
movq -0x20(%rbp), %rax
movq %rax, -0x40(%rbp)
addq $0x8, %rdi
callq 0x21150
movq %rax, %rcx
movq -0x40(%rbp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
setb %al
movb %al, -0x31(%rbp)
movb -0x31(%rbp), %al
testb $0x1, %al
jne 0x23538
jmp 0x23597
movq -0x30(%rbp), %rdi
movq -0x10(%rbp), %rax
movl $0xa, %ecx
cqto
idivq %rcx
movq %rdx, %rax
negq %rax
cmovnsq %rax, %rdx
movq %rdx, -0x28(%rbp)
movq -0x28(%rbp), %rax
addq $0x30, %rax
movb %al, -0x41(%rbp)
addq $0x8, %rdi
movq -0x20(%rbp), %rsi
movq %rsi, %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
callq 0x211c0
movb -0x41(%rbp), %cl
movb %cl, (%rax)
movq -0x10(%rbp), %rax
movl $0xa, %ecx
cqto
idivq %rcx
movq %rax, -0x10(%rbp)
jmp 0x234fa
cmpq $0x0, -0x10(%rbp)
jne 0x235a0
jmp 0x235bf
leaq 0xb377c(%rip), %rdi     # 0xd6d23
leaq 0xb1133(%rip), %rsi     # 0xd46e1
movl $0x19e0, %edx           # imm = 0x19E0
leaq 0xb3770(%rip), %rcx     # 0xd6d2a
callq 0x13130
testb $0x1, -0x11(%rbp)
je 0x2362a
movq -0x30(%rbp), %rdi
movq -0x20(%rbp), %rax
movq %rax, -0x50(%rbp)
addq $0x8, %rdi
callq 0x21150
movq %rax, %rcx
movq -0x50(%rbp), %rax
subq $0x2, %rcx
cmpq %rcx, %rax
jae 0x235ec
jmp 0x2360b
leaq 0xb389a(%rip), %rdi     # 0xd6e8d
leaq 0xb10e7(%rip), %rsi     # 0xd46e1
movl $0x19e5, %edx           # imm = 0x19E5
leaq 0xb3724(%rip), %rcx     # 0xd6d2a
callq 0x13130
movq -0x30(%rbp), %rdi
addq $0x8, %rdi
movq -0x20(%rbp), %rsi
movq %rsi, %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
callq 0x211c0
movb $0x2d, (%rax)
movq -0x30(%rbp), %rdi
addq $0x8, %rdi
callq 0x211a0
movq -0x30(%rbp), %rdi
movq %rax, -0x60(%rbp)
addq $0x8, %rdi
callq 0x211a0
movq -0x60(%rbp), %rdi
movq %rax, %rsi
addq -0x20(%rbp), %rsi
callq 0x23ea0
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movq %rax, -0x58(%rbp)
addq $0x8, %rdi
callq 0x211f0
movq -0x58(%rbp), %rdi
movq %rax, %rsi
movq -0x20(%rbp), %rdx
callq 0x91840
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)