// File: /workspace/github_c_makefile_star2_O0/skeeto[P]hash-prospector/hillclimb.c
// Function: mix64x4
static void
mix64x4(uint64_t x[4])
{
    uint64_t i = 0xf81db9ba6dabee4e;
    uint64_t m = 0xb1d9e3fbc08321db;
    x[0] = hash64(x[0] + 0x347534cdcf0982b6, m);
    x[1] = hash64(x[1] + 0x975e2ee8f0f23aa8, m += i);
    x[2] = hash64(x[2] + 0x7baf736c6c769a0b, m += i);
    x[3] = hash64(x[3] + 0x884afc96accb90d9, m += i);
    #define ROUND64(a, b, c, d) \
        x[b] = mix64(hash64(x[a], m += i), x[b]); \
        x[c] = mix64(hash64(x[a], m += i), x[c]); \
        x[d] = mix64(hash64(x[a], m += i), x[d])
    ROUND64(0, 1, 2, 3);
    ROUND64(1, 0, 2, 3);
    ROUND64(2, 0, 1, 3);
    ROUND64(3, 0, 1, 3);
    #undef ROUND64
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movabsq $-0x7e24645925411b2, %rax # imm = 0xF81DB9BA6DABEE4E
movq %rax, -0x10(%rbp)
movabsq $-0x4e261c043f7cde25, %rax # imm = 0xB1D9E3FBC08321DB
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movabsq $0x347534cdcf0982b6, %rdi # imm = 0x347534CDCF0982B6
addq (%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x2910
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movabsq $-0x68a1d1170f0dc558, %rdi # imm = 0x975E2EE8F0F23AA8
addq 0x8(%rax), %rdi
movq -0x10(%rbp), %rsi
addq -0x18(%rbp), %rsi
movq %rsi, -0x18(%rbp)
callq 0x2910
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rax
movabsq $0x7baf736c6c769a0b, %rdi # imm = 0x7BAF736C6C769A0B
addq 0x10(%rax), %rdi
movq -0x10(%rbp), %rsi
addq -0x18(%rbp), %rsi
movq %rsi, -0x18(%rbp)
callq 0x2910
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rax
movabsq $-0x77b5036953346f27, %rdi # imm = 0x884AFC96ACCB90D9
addq 0x18(%rax), %rdi
movq -0x10(%rbp), %rsi
addq -0x18(%rbp), %rsi
movq %rsi, -0x18(%rbp)
callq 0x2910
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movq -0x10(%rbp), %rsi
addq -0x18(%rbp), %rsi
movq %rsi, -0x18(%rbp)
callq 0x2910
movq %rax, %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x2940
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movq -0x10(%rbp), %rsi
addq -0x18(%rbp), %rsi
movq %rsi, -0x18(%rbp)
callq 0x2910
movq %rax, %rdi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x2940
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movq -0x10(%rbp), %rsi
addq -0x18(%rbp), %rsi
movq %rsi, -0x18(%rbp)
callq 0x2910
movq %rax, %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x2940
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x10(%rbp), %rsi
addq -0x18(%rbp), %rsi
movq %rsi, -0x18(%rbp)
callq 0x2910
movq %rax, %rdi
movq -0x8(%rbp), %rax
movq (%rax), %rsi
callq 0x2940
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x10(%rbp), %rsi
addq -0x18(%rbp), %rsi
movq %rsi, -0x18(%rbp)
callq 0x2910
movq %rax, %rdi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x2940
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x10(%rbp), %rsi
addq -0x18(%rbp), %rsi
movq %rsi, -0x18(%rbp)
callq 0x2910
movq %rax, %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x2940
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rsi
addq -0x18(%rbp), %rsi
movq %rsi, -0x18(%rbp)
callq 0x2910
movq %rax, %rdi
movq -0x8(%rbp), %rax
movq (%rax), %rsi
callq 0x2940
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rsi
addq -0x18(%rbp), %rsi
movq %rsi, -0x18(%rbp)
callq 0x2910
movq %rax, %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x2940
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rsi
addq -0x18(%rbp), %rsi
movq %rsi, -0x18(%rbp)
callq 0x2910
movq %rax, %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x2940
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x10(%rbp), %rsi
addq -0x18(%rbp), %rsi
movq %rsi, -0x18(%rbp)
callq 0x2910
movq %rax, %rdi
movq -0x8(%rbp), %rax
movq (%rax), %rsi
callq 0x2940
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x10(%rbp), %rsi
addq -0x18(%rbp), %rsi
movq %rsi, -0x18(%rbp)
callq 0x2910
movq %rax, %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x2940
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x10(%rbp), %rsi
addq -0x18(%rbp), %rsi
movq %rsi, -0x18(%rbp)
callq 0x2910
movq %rax, %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x2940
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x18(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)