// File: /workspace/github_c_makefile_star2_O0/gplessis[P]dotdeb-redis/deps/geohash-int/geohash.c
// Function: deinterleave64
static inline uint64_t deinterleave64(uint64_t interleaved) {
    static const uint64_t B[] = {0x5555555555555555ULL, 0x3333333333333333ULL,
                                 0x0F0F0F0F0F0F0F0FULL, 0x00FF00FF00FF00FFULL,
                                 0x0000FFFF0000FFFFULL, 0x00000000FFFFFFFFULL};
    static const unsigned int S[] = {0, 1, 2, 4, 8, 16};

    uint64_t x = interleaved;
    uint64_t y = interleaved >> 1;

    x = (x | (x >> S[0])) & B[0];
    y = (y | (y >> S[0])) & B[0];

    x = (x | (x >> S[1])) & B[1];
    y = (y | (y >> S[1])) & B[1];

    x = (x | (x >> S[2])) & B[2];
    y = (y | (y >> S[2])) & B[2];

    x = (x | (x >> S[3])) & B[3];
    y = (y | (y >> S[3])) & B[3];

    x = (x | (x >> S[4])) & B[4];
    y = (y | (y >> S[4])) & B[4];

    x = (x | (x >> S[5])) & B[5];
    y = (y | (y >> S[5])) & B[5];

    return x | (y << 32);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rax
shrq %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rdx
movl 0x78b97(%rip), %ecx     # 0x14c7f0
shrq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
andq 0x78b57(%rip), %rax     # 0x14c7c0
movq %rax, -0x10(%rbp)
movq -0x18(%rbp), %rax
movq -0x18(%rbp), %rdx
movl 0x78b75(%rip), %ecx     # 0x14c7f0
shrq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
andq 0x78b35(%rip), %rax     # 0x14c7c0
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rdx
movl 0x78b57(%rip), %ecx     # 0x14c7f4
shrq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
andq 0x78b1b(%rip), %rax     # 0x14c7c8
movq %rax, -0x10(%rbp)
movq -0x18(%rbp), %rax
movq -0x18(%rbp), %rdx
movl 0x78b35(%rip), %ecx     # 0x14c7f4
shrq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
andq 0x78af9(%rip), %rax     # 0x14c7c8
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rdx
movl 0x78b17(%rip), %ecx     # 0x14c7f8
shrq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
andq 0x78adf(%rip), %rax     # 0x14c7d0
movq %rax, -0x10(%rbp)
movq -0x18(%rbp), %rax
movq -0x18(%rbp), %rdx
movl 0x78af5(%rip), %ecx     # 0x14c7f8
shrq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
andq 0x78abd(%rip), %rax     # 0x14c7d0
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rdx
movl 0x78ad7(%rip), %ecx     # 0x14c7fc
shrq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
andq 0x78aa3(%rip), %rax     # 0x14c7d8
movq %rax, -0x10(%rbp)
movq -0x18(%rbp), %rax
movq -0x18(%rbp), %rdx
movl 0x78ab5(%rip), %ecx     # 0x14c7fc
shrq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
andq 0x78a81(%rip), %rax     # 0x14c7d8
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rdx
movl 0x78a97(%rip), %ecx     # 0x14c800
shrq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
andq 0x78a67(%rip), %rax     # 0x14c7e0
movq %rax, -0x10(%rbp)
movq -0x18(%rbp), %rax
movq -0x18(%rbp), %rdx
movl 0x78a75(%rip), %ecx     # 0x14c800
shrq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
andq 0x78a45(%rip), %rax     # 0x14c7e0
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rdx
movl 0x78a57(%rip), %ecx     # 0x14c804
shrq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
andq 0x78a2b(%rip), %rax     # 0x14c7e8
movq %rax, -0x10(%rbp)
movq -0x18(%rbp), %rax
movq -0x18(%rbp), %rdx
movl 0x78a35(%rip), %ecx     # 0x14c804
shrq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
andq 0x78a09(%rip), %rax     # 0x14c7e8
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
shlq $0x20, %rcx
orq %rcx, %rax
popq %rbp
retq
nopw %cs:(%rax,%rax)