// File: /workspace/github_cpp_makefile_star2_O2/nilnilnil[P]autocomplete/src/main.cpp
// Function: humanized_time_difference[abi:cxx11](long, long)
std::string
humanized_time_difference(time_t prev, time_t curr) {
    std::string ret = "";
    if (prev > curr) {
        std::swap(prev, curr);
    }

    if (prev == curr) {
        return "just now";
    }

    int sec = curr - prev;
    ret = uint_to_string(sec % 60, 2) + ret;

    int minute = sec / 60;
    ret = uint_to_string(minute % 60, 2) + ":" + ret;

    int hour = minute / 60;
    ret = uint_to_string(hour % 24, 2) + ":" + ret;

    int day = hour / 24;
    if (day) {
        ret = uint_to_string(day % 7) + pluralize(" day", day%7) + " " + ret;
    }

    int week = day / 7;
    if (week) {
        ret = uint_to_string(week % 4) + pluralize(" day", week%4) + " " + ret;
    }

    int month = week / 4;
    if (month) {
        ret = uint_to_string(month) + pluralize(" month", month) + " " + ret;
    }

    return ret;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x130, %rsp            # imm = 0x130
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
leaq 0xb2ba(%rip), %rsi      # 0x1323f
leaq 0x30(%rsp), %rdi
leaq 0x70(%rsp), %rdx
callq 0x97ec
subq %r14, %r15
jne 0x7fb2
leaq 0xa32d(%rip), %rsi      # 0x122cd
leaq 0x70(%rsp), %rdx
movq %rbx, %rdi
callq 0x97ec
jmp 0x843e
movq %r15, %r14
negq %r14
cmovsq %r15, %r14
pushq $0x3c
popq %r12
movl %r14d, %eax
cltd
idivl %r12d
movl %eax, %ebp
leaq 0x10(%rsp), %rdi
pushq $0x2
popq %rax
movl %edx, %esi
movl %eax, %edx
callq 0x9a6f
leaq 0x70(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x9954
leaq 0x30(%rsp), %rdi
leaq 0x70(%rsp), %r15
movq %r15, %rsi
callq 0x5600
movq %r15, %rdi
callq 0x5210
leaq 0x10(%rsp), %rdi
callq 0x5210
movl %ebp, %eax
cltd
idivl %r12d
leaq 0x50(%rsp), %rdi
pushq $0x2
popq %rax
movl %edx, %esi
movl %eax, %edx
callq 0x9a6f
leaq 0xa2a6(%rip), %rdx      # 0x122d6
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x9973
leaq 0x70(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x9954
leaq 0x30(%rsp), %rdi
leaq 0x70(%rsp), %r15
movq %r15, %rsi
callq 0x5600
movq %r15, %rdi
callq 0x5210
leaq 0x10(%rsp), %rdi
callq 0x5210
leaq 0x50(%rsp), %rdi
callq 0x5210
movl $0xe10, %ecx            # imm = 0xE10
movl %r14d, %eax
cltd
idivl %ecx
pushq $0x18
popq %rcx
cltd
idivl %ecx
leaq 0x50(%rsp), %rdi
pushq $0x2
popq %rax
movl %edx, %esi
movl %eax, %edx
callq 0x9a6f
leaq 0xa22c(%rip), %rdx      # 0x122d6
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x9973
leaq 0x70(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x9954
leaq 0x30(%rsp), %rdi
leaq 0x70(%rsp), %r15
movq %r15, %rsi
callq 0x5600
movq %r15, %rdi
callq 0x5210
leaq 0x10(%rsp), %rdi
callq 0x5210
leaq 0x50(%rsp), %rdi
callq 0x5210
leal 0x1517f(%r14), %eax
cmpl $0x2a2ff, %eax          # imm = 0x2A2FF
jb 0x83fc
movl $0x15180, %ecx          # imm = 0x15180
movl %r14d, %eax
cltd
idivl %ecx
cwtd
movw $0x7, %cx
idivw %cx
movswl %dx, %ebp
leaq 0xb0(%rsp), %rdi
movl %ebp, %esi
xorl %edx, %edx
callq 0x9a6f
leaq 0xa19c(%rip), %rsi      # 0x122d8
leaq 0x110(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x97ec
leaq 0x90(%rsp), %rdi
leaq 0x110(%rsp), %rsi
movl %ebp, %edx
callq 0x7f3f
leaq 0x50(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0x9992
leaq 0xa142(%rip), %rdx      # 0x122c8
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x9973
leaq 0x70(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x9954
leaq 0x30(%rsp), %rdi
leaq 0x70(%rsp), %r15
movq %r15, %rsi
callq 0x5600
movq %r15, %rdi
callq 0x5210
leaq 0x10(%rsp), %rdi
callq 0x5210
leaq 0x50(%rsp), %rdi
callq 0x5210
leaq 0x90(%rsp), %rdi
callq 0x5210
leaq 0x110(%rsp), %rdi
callq 0x5210
leaq 0xb0(%rsp), %rdi
callq 0x5210
leal 0x93a7f(%r14), %eax
cmpl $0x1274ff, %eax         # imm = 0x1274FF
jb 0x83fc
movl $0x93a80, %ecx          # imm = 0x93A80
movl %r14d, %eax
cltd
idivl %ecx
cwtd
movw $0x4, %cx
idivw %cx
movswl %dx, %ebp
leaq 0xb0(%rsp), %rdi
movl %ebp, %esi
xorl %edx, %edx
callq 0x9a6f
leaq 0xa099(%rip), %rsi      # 0x122d8
leaq 0xf0(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x97ec
leaq 0x90(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
movl %ebp, %edx
callq 0x7f3f
leaq 0x50(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0x9992
leaq 0xa03f(%rip), %rdx      # 0x122c8
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x9973
leaq 0x70(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x9954
leaq 0x30(%rsp), %rdi
leaq 0x70(%rsp), %r15
movq %r15, %rsi
callq 0x5600
movq %r15, %rdi
callq 0x5210
leaq 0x10(%rsp), %rdi
callq 0x5210
leaq 0x50(%rsp), %rdi
callq 0x5210
leaq 0x90(%rsp), %rdi
callq 0x5210
leaq 0xf0(%rsp), %rdi
callq 0x5210
leaq 0xb0(%rsp), %rdi
callq 0x5210
movl $0x24ea00, %ecx         # imm = 0x24EA00
movl %r14d, %eax
cltd
idivl %ecx
addl $0x24e9ff, %r14d        # imm = 0x24E9FF
cmpl $0x49d3ff, %r14d        # imm = 0x49D3FF
jb 0x83fc
movl %eax, %ebp
leaq 0xb0(%rsp), %rdi
movl %eax, %esi
xorl %edx, %edx
callq 0x9a6f
leaq 0x9fa3(%rip), %rsi      # 0x122dd
leaq 0xd0(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x97ec
leaq 0x90(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
movl %ebp, %edx
callq 0x7f3f
leaq 0x50(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0x9992
leaq 0x9f44(%rip), %rdx      # 0x122c8
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x9973
leaq 0x70(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x9954
leaq 0x30(%rsp), %rdi
leaq 0x70(%rsp), %r14
movq %r14, %rsi
callq 0x5600
movq %r14, %rdi
callq 0x5210
leaq 0x10(%rsp), %rdi
callq 0x5210
leaq 0x50(%rsp), %rdi
callq 0x5210
leaq 0x90(%rsp), %rdi
callq 0x5210
leaq 0xd0(%rsp), %rdi
callq 0x5210
leaq 0xb0(%rsp), %rdi
callq 0x5210
leaq 0x10(%rbx), %rcx
movq %rcx, (%rbx)
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdx
cmpq %rax, %rdx
je 0x841f
movq %rdx, (%rbx)
movq 0x40(%rsp), %rcx
movq %rcx, 0x10(%rbx)
jmp 0x8425
movups (%rax), %xmm0
movups %xmm0, (%rcx)
movq 0x38(%rsp), %rcx
movq %rcx, 0x8(%rbx)
movq %rax, 0x30(%rsp)
andq $0x0, 0x38(%rsp)
movb $0x0, 0x40(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x5210
movq %rbx, %rax
addq $0x130, %rsp            # imm = 0x130
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x5210
jmp 0x846d
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x5210
jmp 0x847c
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x5210
jmp 0x848e
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
jmp 0x8524
jmp 0x852b
jmp 0x856c
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x5210
jmp 0x84b7
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x5210
jmp 0x84c6
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x5210
jmp 0x84d8
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
jmp 0x8524
jmp 0x852b
jmp 0x856c
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x5210
jmp 0x84fb
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x5210
jmp 0x850a
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x5210
jmp 0x851c
movq %rax, %rbx
leaq 0x110(%rsp), %rdi
callq 0x5210
jmp 0x852e
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
jmp 0x8563
jmp 0x856c
jmp 0x8540
jmp 0x854f
jmp 0x856c
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x5210
jmp 0x8552
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
jmp 0x8563
jmp 0x856c
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x5210
jmp 0x856f
jmp 0x856c
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x5210
movq %rbx, %rdi
callq 0x58e0