// File: nmmmnu[P]HM3/hm3/test/test_pair.cc
// Function: pair_test_raw_do(char const*, hm3::Pair const&, StringRef const&, StringRef const&)
static void pair_test_raw_do(const char *module, const Pair & p, const StringRef &key, const StringRef &val){
	p.print();

	PRINTF_TEST("valid",		p.valid()			);

	PRINTF_TEST("key",		key == p.getKey()		);
	PRINTF_TEST("val",		val == p.getVal()		);

	PRINTF_TEST("cmp key",		p.cmp(key) == 0			);
	PRINTF_TEST("cmp",		p.cmp("~~~ non existent") < 0	);
	PRINTF_TEST("cmp",		p.cmp("!!! non existent") > 0	);

	Pair p2 = p;

	p2.print();

	p2 = p;

	p2.print();
}

// Assembly:
subq $0xd8, %rsp
movq %rdi, 0xd0(%rsp)
movq %rsi, 0xc8(%rsp)
movq %rdx, 0xc0(%rsp)
movq %rcx, 0xb8(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x3c00
movq 0xd0(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0xc8(%rsp), %rdi
xorl %esi, %esi
movl %esi, 0x14(%rsp)
callq 0x3b50
movq 0x8(%rsp), %rsi
movb %al, %dil
movl 0x14(%rsp), %eax
leaq 0x37db(%rip), %rdx      # 0x6062
movq %rdx, 0x50(%rsp)
leaq 0x37d2(%rip), %rcx      # 0x6065
movq %rcx, 0x48(%rsp)
testb %dil, %dil
cmovneq %rdx, %rcx
leaq 0x3794(%rip), %rdi      # 0x603a
movq %rdi, 0x58(%rsp)
leaq 0x37b8(%rip), %rdx      # 0x606a
movb %al, 0x77(%rsp)
callq 0x1030
movq 0xd0(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0xc0(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x37a0
movq 0x18(%rsp), %rdi
movq %rax, 0xa8(%rsp)
movq %rdx, 0xb0(%rsp)
leaq 0xa8(%rsp), %rsi
callq 0x3180
movq 0x20(%rsp), %rsi
movq 0x48(%rsp), %rcx
movq 0x50(%rsp), %rdx
movq 0x58(%rsp), %rdi
movb %al, %r8b
movb 0x77(%rsp), %al
testb %r8b, %r8b
cmovneq %rdx, %rcx
leaq 0x378d(%rip), %rdx      # 0x60ba
callq 0x1030
movq 0xd0(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0xb8(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0xc8(%rsp), %rdi
callq 0x3830
movq 0x28(%rsp), %rdi
movq %rax, 0x98(%rsp)
movq %rdx, 0xa0(%rsp)
leaq 0x98(%rsp), %rsi
callq 0x3180
movq 0x30(%rsp), %rsi
movq 0x48(%rsp), %rcx
movq 0x50(%rsp), %rdx
movq 0x58(%rsp), %rdi
movb %al, %r8b
movb 0x77(%rsp), %al
testb %r8b, %r8b
cmovneq %rdx, %rcx
leaq 0x371f(%rip), %rdx      # 0x60c3
callq 0x1030
movq 0xd0(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0xc8(%rsp), %rdi
movq 0xc0(%rsp), %rsi
callq 0x31d0
movq 0x38(%rsp), %rsi
movq 0x48(%rsp), %rcx
movq 0x50(%rsp), %rdx
movq 0x58(%rsp), %rdi
movl %eax, %r8d
movb 0x77(%rsp), %al
testl %r8d, %r8d
cmoveq %rdx, %rcx
leaq 0x367c(%rip), %rdx      # 0x6070
callq 0x1030
movq 0xd0(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0xc8(%rsp), %rdi
leaq 0x3663(%rip), %rsi      # 0x6078
callq 0x3970
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rcx
movq 0x50(%rsp), %rdx
movq 0x58(%rsp), %rdi
movl %eax, %r8d
movb 0x77(%rsp), %al
testl %r8d, %r8d
cmovsq %rdx, %rcx
leaq 0x3689(%rip), %rdx      # 0x60cc
movq %rdx, 0x68(%rsp)
callq 0x1030
movq 0xd0(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0xc8(%rsp), %rdi
leaq 0x3620(%rip), %rsi      # 0x6089
callq 0x3970
movq 0x48(%rsp), %rcx
movq 0x50(%rsp), %r8
movq 0x58(%rsp), %rdi
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
movl %eax, %r9d
movb 0x77(%rsp), %al
testl %r9d, %r9d
cmovgq %r8, %rcx
callq 0x1030
movq 0xc8(%rsp), %rsi
leaq 0x90(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0x36f0
movq 0x78(%rsp), %rdi
callq 0x3c00
movq 0x78(%rsp), %rdi
movq 0xc8(%rsp), %rsi
callq 0x3730
jmp 0x2ad2
leaq 0x90(%rsp), %rdi
callq 0x3c00
leaq 0x90(%rsp), %rdi
callq 0x35c0
addq $0xd8, %rsp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x88(%rsp)
movl %eax, 0x84(%rsp)
leaq 0x90(%rsp), %rdi
callq 0x35c0
movq 0x88(%rsp), %rdi
callq 0x1170
nopw %cs:(%rax,%rax)