// File: /workspace/github_c_makefile_star2_O0/AlxHnr[P]nano-backup/third-party/SipHash/siphash.c
// Function: siphash
uint64_t siphash(const uint8_t *in, const size_t inlen, const uint8_t *k)
{
    uint64_t v0 = 0x736f6d6570736575ULL;
    uint64_t v1 = 0x646f72616e646f6dULL;
    uint64_t v2 = 0x6c7967656e657261ULL;
    uint64_t v3 = 0x7465646279746573ULL;
    uint64_t k0 = U8TO64_LE(k);
    uint64_t k1 = U8TO64_LE(k + 8);
    uint64_t m;
    int i;
    const uint8_t *end = in + inlen - (inlen % sizeof(uint64_t));
    const int left = inlen & 7;
    uint64_t b = ((uint64_t)inlen) << 56;
    uint64_t hash;
    uint8_t *out = (uint8_t *)&hash;
    v3 ^= k1;
    v2 ^= k0;
    v1 ^= k1;
    v0 ^= k0;

    for (; in != end; in += 8) {
        m = U8TO64_LE(in);
        v3 ^= m;

        for (i = 0; i < cROUNDS; ++i)
            SIPROUND;

        v0 ^= m;
    }

    switch (left) {
    case 7:
        b |= ((uint64_t)in[6]) << 48;
        attribute_fallthrough
    case 6:
        b |= ((uint64_t)in[5]) << 40;
        attribute_fallthrough
    case 5:
        b |= ((uint64_t)in[4]) << 32;
        attribute_fallthrough
    case 4:
        b |= ((uint64_t)in[3]) << 24;
        attribute_fallthrough
    case 3:
        b |= ((uint64_t)in[2]) << 16;
        attribute_fallthrough
    case 2:
        b |= ((uint64_t)in[1]) << 8;
        attribute_fallthrough
    case 1:
        b |= ((uint64_t)in[0]);
        break;
    case 0:
        break;
    }

    v3 ^= b;

    for (i = 0; i < cROUNDS; ++i)
        SIPROUND;

    v0 ^= b;

    v2 ^= 0xff;

    for (i = 0; i < dROUNDS; ++i)
        SIPROUND;

    b = v0 ^ v1 ^ v2 ^ v3;
    U64TO8_LE(out, b);

    return hash;
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
movq %rsi, -0x8(%rsp)
movq %rdx, -0x10(%rsp)
movabsq $0x736f6d6570736575, %rax # imm = 0x736F6D6570736575
movq %rax, -0x18(%rsp)
movabsq $0x646f72616e646f6d, %rax # imm = 0x646F72616E646F6D
movq %rax, -0x20(%rsp)
movabsq $0x6c7967656e657261, %rax # imm = 0x6C7967656E657261
movq %rax, -0x28(%rsp)
movabsq $0x7465646279746573, %rax # imm = 0x7465646279746573
movq %rax, -0x30(%rsp)
movq -0x10(%rsp), %rax
movzbl (%rax), %eax
movq -0x10(%rsp), %rcx
movzbl 0x1(%rcx), %ecx
shlq $0x8, %rcx
orq %rcx, %rax
movq -0x10(%rsp), %rcx
movzbl 0x2(%rcx), %ecx
shlq $0x10, %rcx
orq %rcx, %rax
movq -0x10(%rsp), %rcx
movzbl 0x3(%rcx), %ecx
shlq $0x18, %rcx
orq %rcx, %rax
movq -0x10(%rsp), %rcx
movzbl 0x4(%rcx), %ecx
shlq $0x20, %rcx
orq %rcx, %rax
movq -0x10(%rsp), %rcx
movzbl 0x5(%rcx), %ecx
shlq $0x28, %rcx
orq %rcx, %rax
movq -0x10(%rsp), %rcx
movzbl 0x6(%rcx), %ecx
shlq $0x30, %rcx
orq %rcx, %rax
movq -0x10(%rsp), %rcx
movzbl 0x7(%rcx), %ecx
shlq $0x38, %rcx
orq %rcx, %rax
movq %rax, -0x38(%rsp)
movq -0x10(%rsp), %rax
movzbl 0x8(%rax), %eax
movq -0x10(%rsp), %rcx
movzbl 0x9(%rcx), %ecx
shlq $0x8, %rcx
orq %rcx, %rax
movq -0x10(%rsp), %rcx
movzbl 0xa(%rcx), %ecx
shlq $0x10, %rcx
orq %rcx, %rax
movq -0x10(%rsp), %rcx
movzbl 0xb(%rcx), %ecx
shlq $0x18, %rcx
orq %rcx, %rax
movq -0x10(%rsp), %rcx
movzbl 0xc(%rcx), %ecx
shlq $0x20, %rcx
orq %rcx, %rax
movq -0x10(%rsp), %rcx
movzbl 0xd(%rcx), %ecx
shlq $0x28, %rcx
orq %rcx, %rax
movq -0x10(%rsp), %rcx
movzbl 0xe(%rcx), %ecx
shlq $0x30, %rcx
orq %rcx, %rax
movq -0x10(%rsp), %rcx
movzbl 0xf(%rcx), %ecx
shlq $0x38, %rcx
orq %rcx, %rax
movq %rax, -0x40(%rsp)
movq (%rsp), %rax
addq -0x8(%rsp), %rax
movq -0x8(%rsp), %rdx
andq $0x7, %rdx
xorl %ecx, %ecx
subq %rdx, %rcx
addq %rcx, %rax
movq %rax, -0x58(%rsp)
movq -0x8(%rsp), %rax
andq $0x7, %rax
movl %eax, -0x5c(%rsp)
movq -0x8(%rsp), %rax
shlq $0x38, %rax
movq %rax, -0x68(%rsp)
leaq -0x70(%rsp), %rax
movq %rax, -0x78(%rsp)
movq -0x40(%rsp), %rax
xorq -0x30(%rsp), %rax
movq %rax, -0x30(%rsp)
movq -0x38(%rsp), %rax
xorq -0x28(%rsp), %rax
movq %rax, -0x28(%rsp)
movq -0x40(%rsp), %rax
xorq -0x20(%rsp), %rax
movq %rax, -0x20(%rsp)
movq -0x38(%rsp), %rax
xorq -0x18(%rsp), %rax
movq %rax, -0x18(%rsp)
movq (%rsp), %rax
cmpq -0x58(%rsp), %rax
je 0x22594
movq (%rsp), %rax
movzbl (%rax), %eax
movq (%rsp), %rcx
movzbl 0x1(%rcx), %ecx
shlq $0x8, %rcx
orq %rcx, %rax
movq (%rsp), %rcx
movzbl 0x2(%rcx), %ecx
shlq $0x10, %rcx
orq %rcx, %rax
movq (%rsp), %rcx
movzbl 0x3(%rcx), %ecx
shlq $0x18, %rcx
orq %rcx, %rax
movq (%rsp), %rcx
movzbl 0x4(%rcx), %ecx
shlq $0x20, %rcx
orq %rcx, %rax
movq (%rsp), %rcx
movzbl 0x5(%rcx), %ecx
shlq $0x28, %rcx
orq %rcx, %rax
movq (%rsp), %rcx
movzbl 0x6(%rcx), %ecx
shlq $0x30, %rcx
orq %rcx, %rax
movq (%rsp), %rcx
movzbl 0x7(%rcx), %ecx
shlq $0x38, %rcx
orq %rcx, %rax
movq %rax, -0x48(%rsp)
movq -0x48(%rsp), %rax
xorq -0x30(%rsp), %rax
movq %rax, -0x30(%rsp)
movl $0x0, -0x4c(%rsp)
cmpl $0x1, -0x4c(%rsp)
jge 0x22574
jmp 0x2244e
movq -0x20(%rsp), %rax
addq -0x18(%rsp), %rax
movq %rax, -0x18(%rsp)
movq -0x20(%rsp), %rax
shlq $0xd, %rax
movq -0x20(%rsp), %rcx
shrq $0x33, %rcx
orq %rcx, %rax
movq %rax, -0x20(%rsp)
movq -0x18(%rsp), %rax
xorq -0x20(%rsp), %rax
movq %rax, -0x20(%rsp)
movq -0x18(%rsp), %rax
shlq $0x20, %rax
movq -0x18(%rsp), %rcx
shrq $0x20, %rcx
orq %rcx, %rax
movq %rax, -0x18(%rsp)
movq -0x30(%rsp), %rax
addq -0x28(%rsp), %rax
movq %rax, -0x28(%rsp)
movq -0x30(%rsp), %rax
shlq $0x10, %rax
movq -0x30(%rsp), %rcx
shrq $0x30, %rcx
orq %rcx, %rax
movq %rax, -0x30(%rsp)
movq -0x28(%rsp), %rax
xorq -0x30(%rsp), %rax
movq %rax, -0x30(%rsp)
movq -0x30(%rsp), %rax
addq -0x18(%rsp), %rax
movq %rax, -0x18(%rsp)
movq -0x30(%rsp), %rax
shlq $0x15, %rax
movq -0x30(%rsp), %rcx
shrq $0x2b, %rcx
orq %rcx, %rax
movq %rax, -0x30(%rsp)
movq -0x18(%rsp), %rax
xorq -0x30(%rsp), %rax
movq %rax, -0x30(%rsp)
movq -0x20(%rsp), %rax
addq -0x28(%rsp), %rax
movq %rax, -0x28(%rsp)
movq -0x20(%rsp), %rax
shlq $0x11, %rax
movq -0x20(%rsp), %rcx
shrq $0x2f, %rcx
orq %rcx, %rax
movq %rax, -0x20(%rsp)
movq -0x28(%rsp), %rax
xorq -0x20(%rsp), %rax
movq %rax, -0x20(%rsp)
movq -0x28(%rsp), %rax
shlq $0x20, %rax
movq -0x28(%rsp), %rcx
shrq $0x20, %rcx
orq %rcx, %rax
movq %rax, -0x28(%rsp)
jmp 0x22564
movl -0x4c(%rsp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rsp)
jmp 0x22441
movq -0x48(%rsp), %rax
xorq -0x18(%rsp), %rax
movq %rax, -0x18(%rsp)
movq (%rsp), %rax
addq $0x8, %rax
movq %rax, (%rsp)
jmp 0x223a6
movl -0x5c(%rsp), %eax
movq %rax, -0x80(%rsp)
subq $0x7, %rax
ja 0x22655
movq -0x80(%rsp), %rax
leaq 0x2b0d(%rip), %rcx      # 0x250c0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq (%rsp), %rax
movzbl 0x6(%rax), %eax
shlq $0x30, %rax
orq -0x68(%rsp), %rax
movq %rax, -0x68(%rsp)
movq (%rsp), %rax
movzbl 0x5(%rax), %eax
shlq $0x28, %rax
orq -0x68(%rsp), %rax
movq %rax, -0x68(%rsp)
movq (%rsp), %rax
movzbl 0x4(%rax), %eax
shlq $0x20, %rax
orq -0x68(%rsp), %rax
movq %rax, -0x68(%rsp)
movq (%rsp), %rax
movzbl 0x3(%rax), %eax
shlq $0x18, %rax
orq -0x68(%rsp), %rax
movq %rax, -0x68(%rsp)
movq (%rsp), %rax
movzbl 0x2(%rax), %eax
shlq $0x10, %rax
orq -0x68(%rsp), %rax
movq %rax, -0x68(%rsp)
movq (%rsp), %rax
movzbl 0x1(%rax), %eax
shlq $0x8, %rax
orq -0x68(%rsp), %rax
movq %rax, -0x68(%rsp)
movq (%rsp), %rax
movzbl (%rax), %eax
orq -0x68(%rsp), %rax
movq %rax, -0x68(%rsp)
jmp 0x22655
jmp 0x22655
movq -0x68(%rsp), %rax
xorq -0x30(%rsp), %rax
movq %rax, -0x30(%rsp)
movl $0x0, -0x4c(%rsp)
cmpl $0x1, -0x4c(%rsp)
jge 0x2279f
jmp 0x22679
movq -0x20(%rsp), %rax
addq -0x18(%rsp), %rax
movq %rax, -0x18(%rsp)
movq -0x20(%rsp), %rax
shlq $0xd, %rax
movq -0x20(%rsp), %rcx
shrq $0x33, %rcx
orq %rcx, %rax
movq %rax, -0x20(%rsp)
movq -0x18(%rsp), %rax
xorq -0x20(%rsp), %rax
movq %rax, -0x20(%rsp)
movq -0x18(%rsp), %rax
shlq $0x20, %rax
movq -0x18(%rsp), %rcx
shrq $0x20, %rcx
orq %rcx, %rax
movq %rax, -0x18(%rsp)
movq -0x30(%rsp), %rax
addq -0x28(%rsp), %rax
movq %rax, -0x28(%rsp)
movq -0x30(%rsp), %rax
shlq $0x10, %rax
movq -0x30(%rsp), %rcx
shrq $0x30, %rcx
orq %rcx, %rax
movq %rax, -0x30(%rsp)
movq -0x28(%rsp), %rax
xorq -0x30(%rsp), %rax
movq %rax, -0x30(%rsp)
movq -0x30(%rsp), %rax
addq -0x18(%rsp), %rax
movq %rax, -0x18(%rsp)
movq -0x30(%rsp), %rax
shlq $0x15, %rax
movq -0x30(%rsp), %rcx
shrq $0x2b, %rcx
orq %rcx, %rax
movq %rax, -0x30(%rsp)
movq -0x18(%rsp), %rax
xorq -0x30(%rsp), %rax
movq %rax, -0x30(%rsp)
movq -0x20(%rsp), %rax
addq -0x28(%rsp), %rax
movq %rax, -0x28(%rsp)
movq -0x20(%rsp), %rax
shlq $0x11, %rax
movq -0x20(%rsp), %rcx
shrq $0x2f, %rcx
orq %rcx, %rax
movq %rax, -0x20(%rsp)
movq -0x28(%rsp), %rax
xorq -0x20(%rsp), %rax
movq %rax, -0x20(%rsp)
movq -0x28(%rsp), %rax
shlq $0x20, %rax
movq -0x28(%rsp), %rcx
shrq $0x20, %rcx
orq %rcx, %rax
movq %rax, -0x28(%rsp)
jmp 0x2278f
movl -0x4c(%rsp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rsp)
jmp 0x2266c
movq -0x68(%rsp), %rax
xorq -0x18(%rsp), %rax
movq %rax, -0x18(%rsp)
movq -0x28(%rsp), %rax
xorq $0xff, %rax
movq %rax, -0x28(%rsp)
movl $0x0, -0x4c(%rsp)
cmpl $0x3, -0x4c(%rsp)
jge 0x228f9
jmp 0x227d3
movq -0x20(%rsp), %rax
addq -0x18(%rsp), %rax
movq %rax, -0x18(%rsp)
movq -0x20(%rsp), %rax
shlq $0xd, %rax
movq -0x20(%rsp), %rcx
shrq $0x33, %rcx
orq %rcx, %rax
movq %rax, -0x20(%rsp)
movq -0x18(%rsp), %rax
xorq -0x20(%rsp), %rax
movq %rax, -0x20(%rsp)
movq -0x18(%rsp), %rax
shlq $0x20, %rax
movq -0x18(%rsp), %rcx
shrq $0x20, %rcx
orq %rcx, %rax
movq %rax, -0x18(%rsp)
movq -0x30(%rsp), %rax
addq -0x28(%rsp), %rax
movq %rax, -0x28(%rsp)
movq -0x30(%rsp), %rax
shlq $0x10, %rax
movq -0x30(%rsp), %rcx
shrq $0x30, %rcx
orq %rcx, %rax
movq %rax, -0x30(%rsp)
movq -0x28(%rsp), %rax
xorq -0x30(%rsp), %rax
movq %rax, -0x30(%rsp)
movq -0x30(%rsp), %rax
addq -0x18(%rsp), %rax
movq %rax, -0x18(%rsp)
movq -0x30(%rsp), %rax
shlq $0x15, %rax
movq -0x30(%rsp), %rcx
shrq $0x2b, %rcx
orq %rcx, %rax
movq %rax, -0x30(%rsp)
movq -0x18(%rsp), %rax
xorq -0x30(%rsp), %rax
movq %rax, -0x30(%rsp)
movq -0x20(%rsp), %rax
addq -0x28(%rsp), %rax
movq %rax, -0x28(%rsp)
movq -0x20(%rsp), %rax
shlq $0x11, %rax
movq -0x20(%rsp), %rcx
shrq $0x2f, %rcx
orq %rcx, %rax
movq %rax, -0x20(%rsp)
movq -0x28(%rsp), %rax
xorq -0x20(%rsp), %rax
movq %rax, -0x20(%rsp)
movq -0x28(%rsp), %rax
shlq $0x20, %rax
movq -0x28(%rsp), %rcx
shrq $0x20, %rcx
orq %rcx, %rax
movq %rax, -0x28(%rsp)
jmp 0x228e9
movl -0x4c(%rsp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rsp)
jmp 0x227c6
movq -0x18(%rsp), %rax
xorq -0x20(%rsp), %rax
xorq -0x28(%rsp), %rax
xorq -0x30(%rsp), %rax
movq %rax, -0x68(%rsp)
movq -0x68(%rsp), %rax
movb %al, %cl
movq -0x78(%rsp), %rax
movb %cl, (%rax)
movq -0x68(%rsp), %rax
shrl $0x8, %eax
movb %al, %cl
movq -0x78(%rsp), %rax
movb %cl, 0x1(%rax)
movq -0x68(%rsp), %rax
shrl $0x10, %eax
movb %al, %cl
movq -0x78(%rsp), %rax
movb %cl, 0x2(%rax)
movq -0x68(%rsp), %rax
shrl $0x18, %eax
movb %al, %cl
movq -0x78(%rsp), %rax
movb %cl, 0x3(%rax)
movq -0x68(%rsp), %rax
shrq $0x20, %rax
movb %al, %cl
movq -0x78(%rsp), %rax
movb %cl, 0x4(%rax)
movq -0x68(%rsp), %rax
shrq $0x20, %rax
shrl $0x8, %eax
movb %al, %cl
movq -0x78(%rsp), %rax
movb %cl, 0x5(%rax)
movq -0x68(%rsp), %rax
shrq $0x20, %rax
shrl $0x10, %eax
movb %al, %cl
movq -0x78(%rsp), %rax
movb %cl, 0x6(%rax)
movq -0x68(%rsp), %rax
shrq $0x20, %rax
shrl $0x18, %eax
movb %al, %cl
movq -0x78(%rsp), %rax
movb %cl, 0x7(%rax)
movq -0x70(%rsp), %rax
popq %rcx
retq
nopw %cs:(%rax,%rax)
nopl (%rax)