// File: chhylp123[P]hifiasm/Trio.cpp
// Function: tb_classify(int const*, int const*, int, double)
static char tb_classify(const int sc[2], const int *c, int k, double ratio_thres)
{
	char type;
	if (sc[0] == 0 && sc[1] == 0) {
		if (c[0<<2|2] == c[2<<2|0]) type = '0';
		else if (c[0<<2|2] >= k - 4 + c[2<<2|0] && (c[2<<2|0] <= 1 || c[0<<2|2] * 0.05 > c[2<<2|0])) type = 'p';
		else if (c[2<<2|0] >= k - 4 + c[0<<2|2] && (c[0<<2|2] <= 1 || c[2<<2|0] * 0.05 > c[0<<2|2])) type = 'm';
		else type = '0';
	} else if (sc[0] > k && sc[1] > k) {
		type = 'a';
	} else if (sc[0] >= k - 4 + sc[1] && sc[0] * 0.05 >= sc[1] && c[0<<2|2] * ratio_thres > c[2<<2|0]) {
		type = 'p';
	} else if (sc[1] >= k - 4 + sc[0] && sc[1] * 0.05 >= sc[0] && c[2<<2|0] * ratio_thres > c[0<<2|2]) {
		type = 'm';
	} else {
		type = 'a';
	}
	return type;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movsd %xmm0, -0x20(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x0, (%rax)
jne 0x16d29d
movq -0x8(%rbp), %rax
cmpl $0x0, 0x4(%rax)
jne 0x16d29d
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movq -0x10(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jne 0x16d1f8
movb $0x30, -0x21(%rbp)
jmp 0x16d298
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl -0x14(%rbp), %ecx
subl $0x4, %ecx
movq -0x10(%rbp), %rdx
addl 0x20(%rdx), %ecx
cmpl %ecx, %eax
jl 0x16d244
movq -0x10(%rbp), %rax
cmpl $0x1, 0x20(%rax)
jle 0x16d23e
movq -0x10(%rbp), %rax
cvtsi2sdl 0x8(%rax), %xmm0
movsd 0x215015(%rip), %xmm1   # 0x382240
mulsd %xmm1, %xmm0
movq -0x10(%rbp), %rax
cvtsi2sdl 0x20(%rax), %xmm1
ucomisd %xmm1, %xmm0
jbe 0x16d244
movb $0x70, -0x21(%rbp)
jmp 0x16d296
movq -0x10(%rbp), %rax
movl 0x20(%rax), %eax
movl -0x14(%rbp), %ecx
subl $0x4, %ecx
movq -0x10(%rbp), %rdx
addl 0x8(%rdx), %ecx
cmpl %ecx, %eax
jl 0x16d290
movq -0x10(%rbp), %rax
cmpl $0x1, 0x8(%rax)
jle 0x16d28a
movq -0x10(%rbp), %rax
cvtsi2sdl 0x20(%rax), %xmm0
movsd 0x214fc9(%rip), %xmm1   # 0x382240
mulsd %xmm1, %xmm0
movq -0x10(%rbp), %rax
cvtsi2sdl 0x8(%rax), %xmm1
ucomisd %xmm1, %xmm0
jbe 0x16d290
movb $0x6d, -0x21(%rbp)
jmp 0x16d294
movb $0x30, -0x21(%rbp)
jmp 0x16d296
jmp 0x16d298
jmp 0x16d381
movq -0x8(%rbp), %rax
movl (%rax), %eax
cmpl -0x14(%rbp), %eax
jle 0x16d2bd
movq -0x8(%rbp), %rax
movl 0x4(%rax), %eax
cmpl -0x14(%rbp), %eax
jle 0x16d2bd
movb $0x61, -0x21(%rbp)
jmp 0x16d37f
movq -0x8(%rbp), %rax
movl (%rax), %eax
movl -0x14(%rbp), %ecx
subl $0x4, %ecx
movq -0x8(%rbp), %rdx
addl 0x4(%rdx), %ecx
cmpl %ecx, %eax
jl 0x16d31a
movq -0x8(%rbp), %rax
cvtsi2sdl (%rax), %xmm0
movsd 0x214f5c(%rip), %xmm1   # 0x382240
mulsd %xmm1, %xmm0
movq -0x8(%rbp), %rax
cvtsi2sdl 0x4(%rax), %xmm1
ucomisd %xmm1, %xmm0
jb 0x16d31a
movq -0x10(%rbp), %rax
cvtsi2sdl 0x8(%rax), %xmm0
mulsd -0x20(%rbp), %xmm0
movq -0x10(%rbp), %rax
cvtsi2sdl 0x20(%rax), %xmm1
ucomisd %xmm1, %xmm0
jbe 0x16d31a
movb $0x70, -0x21(%rbp)
jmp 0x16d37d
movq -0x8(%rbp), %rax
movl 0x4(%rax), %eax
movl -0x14(%rbp), %ecx
subl $0x4, %ecx
movq -0x8(%rbp), %rdx
addl (%rdx), %ecx
cmpl %ecx, %eax
jl 0x16d377
movq -0x8(%rbp), %rax
cvtsi2sdl 0x4(%rax), %xmm0
movsd 0x214efe(%rip), %xmm1   # 0x382240
mulsd %xmm1, %xmm0
movq -0x8(%rbp), %rax
cvtsi2sdl (%rax), %xmm1
ucomisd %xmm1, %xmm0
jb 0x16d377
movq -0x10(%rbp), %rax
cvtsi2sdl 0x20(%rax), %xmm0
mulsd -0x20(%rbp), %xmm0
movq -0x10(%rbp), %rax
cvtsi2sdl 0x8(%rax), %xmm1
ucomisd %xmm1, %xmm0
jbe 0x16d377
movb $0x6d, -0x21(%rbp)
jmp 0x16d37b
movb $0x61, -0x21(%rbp)
jmp 0x16d37d
jmp 0x16d37f
jmp 0x16d381
movb -0x21(%rbp), %al
popq %rbp
retq
nopw %cs:(%rax,%rax)