// File: gpertea[P]gclib/./xxhash.h
// Function: XXH32_finalize(unsigned int, unsigned char const*, unsigned long, XXH_alignment)
static xxh_u32
XXH32_finalize(xxh_u32 h32, const xxh_u8* ptr, size_t len, XXH_alignment align)
{
#define XXH_PROCESS1 do {                           \
    h32 += (*ptr++) * XXH_PRIME32_5;                \
    h32 = XXH_rotl32(h32, 11) * XXH_PRIME32_1;      \
} while (0)

#define XXH_PROCESS4 do {                           \
    h32 += XXH_get32bits(ptr) * XXH_PRIME32_3;      \
    ptr += 4;                                   \
    h32  = XXH_rotl32(h32, 17) * XXH_PRIME32_4;     \
} while (0)

    /* Compact rerolled version */
    if (XXH_REROLL) {
        len &= 15;
        while (len >= 4) {
            XXH_PROCESS4;
            len -= 4;
        }
        while (len > 0) {
            XXH_PROCESS1;
            --len;
        }
        return XXH32_avalanche(h32);
    } else {
         switch(len&15) /* or switch(bEnd - p) */ {
           case 12:      XXH_PROCESS4;
                         /* fallthrough */
           case 8:       XXH_PROCESS4;
                         /* fallthrough */
           case 4:       XXH_PROCESS4;
                         return XXH32_avalanche(h32);

           case 13:      XXH_PROCESS4;
                         /* fallthrough */
           case 9:       XXH_PROCESS4;
                         /* fallthrough */
           case 5:       XXH_PROCESS4;
                         XXH_PROCESS1;
                         return XXH32_avalanche(h32);

           case 14:      XXH_PROCESS4;
                         /* fallthrough */
           case 10:      XXH_PROCESS4;
                         /* fallthrough */
           case 6:       XXH_PROCESS4;
                         XXH_PROCESS1;
                         XXH_PROCESS1;
                         return XXH32_avalanche(h32);

           case 15:      XXH_PROCESS4;
                         /* fallthrough */
           case 11:      XXH_PROCESS4;
                         /* fallthrough */
           case 7:       XXH_PROCESS4;
                         /* fallthrough */
           case 3:       XXH_PROCESS1;
                         /* fallthrough */
           case 2:       XXH_PROCESS1;
                         /* fallthrough */
           case 1:       XXH_PROCESS1;
                         /* fallthrough */
           case 0:       return XXH32_avalanche(h32);
        }
        XXH_ASSERT(0);
        return h32;   /* reaching this point is deemed impossible */
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq -0x18(%rbp), %rax
andl $0xf, %eax
movq %rax, -0x28(%rbp)
subq $0xf, %rax
ja 0xfa1a
movq -0x28(%rbp), %rax
leaq 0x4daa(%rip), %rcx      # 0x143d0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
jmp 0xf631
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0xf5b0
imull $0xc2b2ae3d, %eax, %eax # imm = 0xC2B2AE3D
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movq -0x10(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x10(%rbp)
movl -0x8(%rbp), %eax
roll $0x11, %eax
imull $0x27d4eb2f, %eax, %eax # imm = 0x27D4EB2F
movl %eax, -0x8(%rbp)
jmp 0xf666
jmp 0xf668
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0xf5b0
imull $0xc2b2ae3d, %eax, %eax # imm = 0xC2B2AE3D
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movq -0x10(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x10(%rbp)
movl -0x8(%rbp), %eax
roll $0x11, %eax
imull $0x27d4eb2f, %eax, %eax # imm = 0x27D4EB2F
movl %eax, -0x8(%rbp)
jmp 0xf69d
jmp 0xf69f
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0xf5b0
imull $0xc2b2ae3d, %eax, %eax # imm = 0xC2B2AE3D
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movq -0x10(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x10(%rbp)
movl -0x8(%rbp), %eax
roll $0x11, %eax
imull $0x27d4eb2f, %eax, %eax # imm = 0x27D4EB2F
movl %eax, -0x8(%rbp)
movl -0x8(%rbp), %edi
callq 0xfa70
movl %eax, -0x4(%rbp)
jmp 0xfa20
jmp 0xf6e4
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0xf5b0
imull $0xc2b2ae3d, %eax, %eax # imm = 0xC2B2AE3D
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movq -0x10(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x10(%rbp)
movl -0x8(%rbp), %eax
roll $0x11, %eax
imull $0x27d4eb2f, %eax, %eax # imm = 0x27D4EB2F
movl %eax, -0x8(%rbp)
jmp 0xf719
jmp 0xf71b
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0xf5b0
imull $0xc2b2ae3d, %eax, %eax # imm = 0xC2B2AE3D
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movq -0x10(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x10(%rbp)
movl -0x8(%rbp), %eax
roll $0x11, %eax
imull $0x27d4eb2f, %eax, %eax # imm = 0x27D4EB2F
movl %eax, -0x8(%rbp)
jmp 0xf750
jmp 0xf752
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0xf5b0
imull $0xc2b2ae3d, %eax, %eax # imm = 0xC2B2AE3D
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movq -0x10(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x10(%rbp)
movl -0x8(%rbp), %eax
roll $0x11, %eax
imull $0x27d4eb2f, %eax, %eax # imm = 0x27D4EB2F
movl %eax, -0x8(%rbp)
jmp 0xf787
movq -0x10(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rbp)
movzbl (%rax), %eax
imull $0x165667b1, %eax, %eax # imm = 0x165667B1
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movl -0x8(%rbp), %eax
roll $0xb, %eax
imull $0x9e3779b1, %eax, %eax # imm = 0x9E3779B1
movl %eax, -0x8(%rbp)
movl -0x8(%rbp), %edi
callq 0xfa70
movl %eax, -0x4(%rbp)
jmp 0xfa20
jmp 0xf7c6
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0xf5b0
imull $0xc2b2ae3d, %eax, %eax # imm = 0xC2B2AE3D
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movq -0x10(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x10(%rbp)
movl -0x8(%rbp), %eax
roll $0x11, %eax
imull $0x27d4eb2f, %eax, %eax # imm = 0x27D4EB2F
movl %eax, -0x8(%rbp)
jmp 0xf7fb
jmp 0xf7fd
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0xf5b0
imull $0xc2b2ae3d, %eax, %eax # imm = 0xC2B2AE3D
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movq -0x10(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x10(%rbp)
movl -0x8(%rbp), %eax
roll $0x11, %eax
imull $0x27d4eb2f, %eax, %eax # imm = 0x27D4EB2F
movl %eax, -0x8(%rbp)
jmp 0xf832
jmp 0xf834
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0xf5b0
imull $0xc2b2ae3d, %eax, %eax # imm = 0xC2B2AE3D
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movq -0x10(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x10(%rbp)
movl -0x8(%rbp), %eax
roll $0x11, %eax
imull $0x27d4eb2f, %eax, %eax # imm = 0x27D4EB2F
movl %eax, -0x8(%rbp)
jmp 0xf869
movq -0x10(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rbp)
movzbl (%rax), %eax
imull $0x165667b1, %eax, %eax # imm = 0x165667B1
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movl -0x8(%rbp), %eax
roll $0xb, %eax
imull $0x9e3779b1, %eax, %eax # imm = 0x9E3779B1
movl %eax, -0x8(%rbp)
jmp 0xf898
movq -0x10(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rbp)
movzbl (%rax), %eax
imull $0x165667b1, %eax, %eax # imm = 0x165667B1
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movl -0x8(%rbp), %eax
roll $0xb, %eax
imull $0x9e3779b1, %eax, %eax # imm = 0x9E3779B1
movl %eax, -0x8(%rbp)
movl -0x8(%rbp), %edi
callq 0xfa70
movl %eax, -0x4(%rbp)
jmp 0xfa20
jmp 0xf8d7
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0xf5b0
imull $0xc2b2ae3d, %eax, %eax # imm = 0xC2B2AE3D
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movq -0x10(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x10(%rbp)
movl -0x8(%rbp), %eax
roll $0x11, %eax
imull $0x27d4eb2f, %eax, %eax # imm = 0x27D4EB2F
movl %eax, -0x8(%rbp)
jmp 0xf90c
jmp 0xf90e
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0xf5b0
imull $0xc2b2ae3d, %eax, %eax # imm = 0xC2B2AE3D
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movq -0x10(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x10(%rbp)
movl -0x8(%rbp), %eax
roll $0x11, %eax
imull $0x27d4eb2f, %eax, %eax # imm = 0x27D4EB2F
movl %eax, -0x8(%rbp)
jmp 0xf943
jmp 0xf945
movq -0x10(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0xf5b0
imull $0xc2b2ae3d, %eax, %eax # imm = 0xC2B2AE3D
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movq -0x10(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x10(%rbp)
movl -0x8(%rbp), %eax
roll $0x11, %eax
imull $0x27d4eb2f, %eax, %eax # imm = 0x27D4EB2F
movl %eax, -0x8(%rbp)
jmp 0xf97a
jmp 0xf97c
movq -0x10(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rbp)
movzbl (%rax), %eax
imull $0x165667b1, %eax, %eax # imm = 0x165667B1
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movl -0x8(%rbp), %eax
roll $0xb, %eax
imull $0x9e3779b1, %eax, %eax # imm = 0x9E3779B1
movl %eax, -0x8(%rbp)
jmp 0xf9ab
jmp 0xf9ad
movq -0x10(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rbp)
movzbl (%rax), %eax
imull $0x165667b1, %eax, %eax # imm = 0x165667B1
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movl -0x8(%rbp), %eax
roll $0xb, %eax
imull $0x9e3779b1, %eax, %eax # imm = 0x9E3779B1
movl %eax, -0x8(%rbp)
jmp 0xf9dc
jmp 0xf9de
movq -0x10(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rbp)
movzbl (%rax), %eax
imull $0x165667b1, %eax, %eax # imm = 0x165667B1
addl -0x8(%rbp), %eax
movl %eax, -0x8(%rbp)
movl -0x8(%rbp), %eax
roll $0xb, %eax
imull $0x9e3779b1, %eax, %eax # imm = 0x9E3779B1
movl %eax, -0x8(%rbp)
jmp 0xfa0d
movl -0x8(%rbp), %edi
callq 0xfa70
movl %eax, -0x4(%rbp)
jmp 0xfa20
movl -0x8(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)