// File: king1600[P]cordpp/./include/json.h
// Function: void nlohmann::detail::serializer<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>>::dump_integer<long, 0>(long)
void dump_integer(NumberType x)
    {
        // special case for "0"
        if (x == 0)
        {
            o->write_character('0');
            return;
        }

        const bool is_negative = x < 0;
        std::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_characters(number_buffer.data(), 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 0x2f76a
movq -0x30(%rbp), %rdi
callq 0x2ecc0
movq %rax, %rdi
movq (%rdi), %rax
movl $0x30, %esi
callq *(%rax)
jmp 0x2f908
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 0x2f7b4
movq -0x30(%rbp), %rdi
movq -0x20(%rbp), %rax
movq %rax, -0x40(%rbp)
addq $0x10, %rdi
callq 0x30830
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 0x2f7bd
jmp 0x2f81c
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 $0x10, %rdi
movq -0x20(%rbp), %rsi
movq %rsi, %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
callq 0x30840
movb -0x41(%rbp), %cl
movb %cl, (%rax)
movq -0x10(%rbp), %rax
movl $0xa, %ecx
cqto
idivq %rcx
movq %rax, -0x10(%rbp)
jmp 0x2f77f
cmpq $0x0, -0x10(%rbp)
jne 0x2f825
jmp 0x2f844
leaq 0x61fff(%rip), %rdi     # 0x9182b
leaq 0x5fe16(%rip), %rsi     # 0x8f649
movl $0x19b2, %edx           # imm = 0x19B2
leaq 0x61ff3(%rip), %rcx     # 0x91832
callq 0xc290
testb $0x1, -0x11(%rbp)
je 0x2f8af
movq -0x30(%rbp), %rdi
movq -0x20(%rbp), %rax
movq %rax, -0x50(%rbp)
addq $0x10, %rdi
callq 0x30830
movq %rax, %rcx
movq -0x50(%rbp), %rax
subq $0x2, %rcx
cmpq %rcx, %rax
jae 0x2f871
jmp 0x2f890
leaq 0x6204a(%rip), %rdi     # 0x918c2
leaq 0x5fdca(%rip), %rsi     # 0x8f649
movl $0x19b7, %edx           # imm = 0x19B7
leaq 0x61fa7(%rip), %rcx     # 0x91832
callq 0xc290
movq -0x30(%rbp), %rdi
addq $0x10, %rdi
movq -0x20(%rbp), %rsi
movq %rsi, %rax
addq $0x1, %rax
movq %rax, -0x20(%rbp)
callq 0x30840
movb $0x2d, (%rax)
movq -0x30(%rbp), %rdi
addq $0x10, %rdi
callq 0x308b0
movq -0x30(%rbp), %rdi
movq %rax, -0x60(%rbp)
addq $0x10, %rdi
callq 0x308b0
movq -0x60(%rbp), %rdi
movq %rax, %rsi
addq -0x20(%rbp), %rsi
callq 0x30870
movq -0x30(%rbp), %rdi
callq 0x2ecc0
movq -0x30(%rbp), %rdi
movq %rax, -0x58(%rbp)
addq $0x10, %rdi
callq 0x308d0
movq -0x58(%rbp), %rdi
movq %rax, %rsi
movq -0x20(%rbp), %rdx
movq (%rdi), %rax
callq *0x8(%rax)
addq $0x60, %rsp
popq %rbp
retq
nop