// File: /workspace/github_c_makefile_star2_O1/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:
movabsq $-0x4e261c043f7cde25, %rax # imm = 0xB1D9E3FBC08321DB
imulq (%rdi), %rax
movabsq $0x6c2b5218ba1e47b2, %rcx # imm = 0x6C2B5218BA1E47B2
addq %rax, %rcx
movq %rcx, %rsi
shrq $0x20, %rsi
movabsq $-0x56086249d1d0efd7, %rax # imm = 0xA9F79DB62E2F1029
imulq 0x8(%rdi), %rax
xorq %rcx, %rsi
movabsq $-0xca56f2f50b21b18, %rcx # imm = 0xF35A90D0AF4DE4E8
addq %rax, %rcx
movq %rcx, %r10
shrq $0x20, %r10
movabsq $-0x5deaa88f64250189, %rax # imm = 0xA21557709BDAFE77
imulq 0x10(%rdi), %rax
xorq %rcx, %r10
movabsq $-0x21c776e811a97ae3, %rcx # imm = 0xDE388917EE56851D
addq %rax, %rcx
movq %rcx, %r9
shrq $0x20, %r9
movabsq $-0x65cceed4f679133b, %rax # imm = 0x9A33112B0986ECC5
imulq 0x18(%rdi), %rax
xorq %rcx, %r9
movabsq $0x758b9f5714c482fd, %rcx # imm = 0x758B9F5714C482FD
addq %rax, %rcx
movq %rcx, %r8
shrq $0x20, %r8
xorq %rcx, %r8
movabsq $-0x6daf351a88cd24ed, %rax # imm = 0x9250CAE57732DB13
imulq %rsi, %rax
movq %rax, %rdx
shrq $0x20, %rdx
xorq %rax, %rdx
movabsq $0x2b8a130976726633, %rax # imm = 0x2B8A130976726633
imulq %rax, %rdx
movabsq $0x4d7342d7bb9524e9, %rcx # imm = 0x4D7342D7BB9524E9
imulq %rcx, %r10
addq %rdx, %r10
movq %r10, %rdx
shrq $0x20, %rdx
xorq %r10, %rdx
movabsq $-0x75917b601b21369f, %r10 # imm = 0x8A6E849FE4DEC961
imulq %rsi, %r10
movq %r10, %r11
shrq $0x20, %r11
xorq %r10, %r11
imulq %rax, %r11
imulq %rcx, %r9
addq %r11, %r9
movq %r9, %r10
shrq $0x20, %r10
xorq %r9, %r10
movabsq $-0x7d73c1a5ad754851, %r9 # imm = 0x828C3E5A528AB7AF
imulq %rsi, %r9
movq %r9, %r11
shrq $0x20, %r11
xorq %r9, %r11
imulq %rax, %r11
imulq %rcx, %r8
addq %r11, %r8
movq %r8, %r9
shrq $0x20, %r9
xorq %r8, %r9
movabsq $0x7aa9f814c036a5fd, %r8 # imm = 0x7AA9F814C036A5FD
imulq %rdx, %r8
movq %r8, %r11
shrq $0x20, %r11
xorq %r8, %r11
imulq %rax, %r11
imulq %rcx, %rsi
addq %r11, %rsi
movq %rsi, %r8
shrq $0x20, %r8
xorq %rsi, %r8
movabsq $0x72c7b1cf2de2944b, %rsi # imm = 0x72C7B1CF2DE2944B
imulq %rdx, %rsi
movq %rsi, %r11
shrq $0x20, %r11
xorq %rsi, %r11
imulq %rax, %r11
imulq %rcx, %r10
addq %r11, %r10
movq %r10, %rsi
shrq $0x20, %rsi
xorq %r10, %rsi
movq %rsi, 0x10(%rdi)
movabsq $0x6ae56b899b8e8299, %r10 # imm = 0x6AE56B899B8E8299
imulq %rdx, %r10
movq %r10, %r11
shrq $0x20, %r11
xorq %r10, %r11
imulq %rax, %r11
imulq %rcx, %r9
addq %r11, %r9
movq %r9, %r10
shrq $0x20, %r10
xorq %r9, %r10
movabsq $0x63032544093a70e7, %r9 # imm = 0x63032544093A70E7
imulq %rsi, %r9
movq %r9, %r11
shrq $0x20, %r11
xorq %r9, %r11
imulq %rax, %r11
imulq %rcx, %r8
addq %r11, %r8
movq %r8, %r9
shrq $0x20, %r9
xorq %r8, %r9
movabsq $0x5b20defe76e65f35, %r8 # imm = 0x5B20DEFE76E65F35
imulq %rsi, %r8
movq %r8, %r11
shrq $0x20, %r11
xorq %r8, %r11
imulq %rax, %r11
imulq %rcx, %rdx
addq %r11, %rdx
movq %rdx, %r8
shrq $0x20, %r8
xorq %rdx, %r8
movabsq $0x533e98b8e4924d83, %rdx # imm = 0x533E98B8E4924D83
imulq %rsi, %rdx
movq %rdx, %rsi
shrq $0x20, %rsi
xorq %rdx, %rsi
imulq %rax, %rsi
imulq %rcx, %r10
addq %rsi, %r10
movq %r10, %rdx
shrq $0x20, %rdx
xorq %r10, %rdx
movabsq $0x4b5c5273523e3bd1, %rsi # imm = 0x4B5C5273523E3BD1
imulq %rdx, %rsi
movq %rsi, %r10
shrq $0x20, %r10
xorq %rsi, %r10
imulq %rax, %r10
imulq %rcx, %r9
addq %r10, %r9
movq %r9, %rsi
shrq $0x20, %rsi
xorq %r9, %rsi
movq %rsi, (%rdi)
movabsq $0x437a0c2dbfea2a1f, %rsi # imm = 0x437A0C2DBFEA2A1F
imulq %rdx, %rsi
movq %rsi, %r9
shrq $0x20, %r9
xorq %rsi, %r9
imulq %rax, %r9
imulq %rcx, %r8
addq %r9, %r8
movq %r8, %rsi
shrq $0x20, %rsi
xorq %r8, %rsi
movq %rsi, 0x8(%rdi)
movabsq $0x3b97c5e82d96186d, %rsi # imm = 0x3B97C5E82D96186D
imulq %rdx, %rsi
movq %rsi, %r8
shrq $0x20, %r8
xorq %rsi, %r8
imulq %rax, %r8
imulq %rcx, %rdx
addq %r8, %rdx
movq %rdx, %rax
shrq $0x20, %rax
xorq %rdx, %rax
movq %rax, 0x18(%rdi)
retq