// File: /workspace/github_c_makefile_star2_O0/skeeto[P]hash-prospector/prospector.c
// Function: hf_print
static void
hf_print(const struct hf_op *op, char *buf)
{
    unsigned long long c = op->constant;
    switch (op->type) {
        case HF32_NOT:
        case HF64_NOT:
            sprintf(buf, "x  = ~x;");
            break;
        case HF32_BSWAP:
            sprintf(buf, "x  = __builtin_bswap32(x);");
            break;
        case HF64_BSWAP:
            sprintf(buf, "x  = __builtin_bswap64(x);");
            break;
        case HF32_XOR:
            sprintf(buf, "x ^= 0x%08llx;", c);
            break;
        case HF32_MUL:
            sprintf(buf, "x *= 0x%08llx;", c);
            break;
        case HF32_ADD:
            sprintf(buf, "x += 0x%08llx;", c);
            break;
        case HF32_ROT:
            sprintf(buf, "x  = (x << %llu) | (x >> %lld);", c, 32 - c);
            break;
        case HF32_XORL:
            sprintf(buf, "x ^= x << %llu;", c);
            break;
        case HF32_XORR:
            sprintf(buf, "x ^= x >> %llu;", c);
            break;
        case HF32_ADDL:
            sprintf(buf, "x += x << %llu;", c);
            break;
        case HF32_SUBL:
            sprintf(buf, "x -= x << %llu;", c);
            break;
        case HF64_XOR:
            sprintf(buf, "x ^= 0x%016llx;", c);
            break;
        case HF64_MUL:
            sprintf(buf, "x *= 0x%016llx;", c);
            break;
        case HF64_ADD:
            sprintf(buf, "x += 0x%016llx;", c);
            break;
        case HF64_ROT:
            sprintf(buf, "x  = (x << %llu) | (x >> %lld);", c, 64 - c);
            break;
        case HF64_XORL:
            sprintf(buf, "x ^= x << %llu;", c);
            break;
        case HF64_XORR:
            sprintf(buf, "x ^= x >> %llu;", c);
            break;
        case HF64_ADDL:
            sprintf(buf, "x += x << %llu;", c);
            break;
        case HF64_SUBL:
            sprintf(buf, "x -= x << %llu;", c);
            break;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movl (%rax), %eax
movq %rax, -0x20(%rbp)
subq $0x13, %rax
ja 0x3f07
movq -0x20(%rbp), %rax
leaq 0x509(%rip), %rcx       # 0x4214
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rdi
leaq 0xaf7(%rip), %rsi       # 0x4816
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
leaq 0xae9(%rip), %rsi       # 0x481f
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
leaq 0xaed(%rip), %rsi       # 0x483a
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0xaed(%rip), %rsi       # 0x4855
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0xae1(%rip), %rsi       # 0x4864
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0xad5(%rip), %rsi       # 0x4873
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x20, %ecx
subq -0x18(%rbp), %rcx
leaq 0xac0(%rip), %rsi       # 0x4882
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0xac5(%rip), %rsi       # 0x48a2
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0xaba(%rip), %rsi       # 0x48b2
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0xaaf(%rip), %rsi       # 0x48c2
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0xaa4(%rip), %rsi       # 0x48d2
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0xa99(%rip), %rsi       # 0x48e2
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0xa8e(%rip), %rsi       # 0x48f2
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0xa83(%rip), %rsi       # 0x4902
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
movl $0x40, %ecx
subq -0x18(%rbp), %rcx
leaq 0x9e2(%rip), %rsi       # 0x4882
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x9ea(%rip), %rsi       # 0x48a2
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x9e2(%rip), %rsi       # 0x48b2
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x9da(%rip), %rsi       # 0x48c2
movb $0x0, %al
callq 0x11a0
jmp 0x3f07
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq 0x9d2(%rip), %rsi       # 0x48d2
movb $0x0, %al
callq 0x11a0
addq $0x20, %rsp
popq %rbp
retq