// File: /workspace/github_cpp_makefile_star2_O2/cjlin1[P]liblinear/linear.cpp
// Function: check_parameter
const char *check_parameter(const problem *prob, const parameter *param)
{
	if(param->eps <= 0)
		return "eps <= 0";

	if(param->C <= 0)
		return "C <= 0";

	if(param->p < 0 && param->solver_type == L2R_L2LOSS_SVR)
		return "p < 0";

	if(prob->bias >= 0 && param->solver_type == ONECLASS_SVM)
		return "prob->bias >=0, but this is ignored in ONECLASS_SVM";

	if(param->regularize_bias == 0)
	{
		if(prob->bias != 1.0)
			return "To not regularize bias, must specify -B 1 along with -R";
		if(param->solver_type != L2R_LR
			&& param->solver_type != L2R_L2LOSS_SVC
			&& param->solver_type != L1R_L2LOSS_SVC
			&& param->solver_type != L1R_LR
			&& param->solver_type != L2R_L2LOSS_SVR)
			return "-R option supported only for solver L2R_LR, L2R_L2LOSS_SVC, L1R_L2LOSS_SVC, L1R_LR, and L2R_L2LOSS_SVR";
	}

	if(param->solver_type != L2R_LR
		&& param->solver_type != L2R_L2LOSS_SVC_DUAL
		&& param->solver_type != L2R_L2LOSS_SVC
		&& param->solver_type != L2R_L1LOSS_SVC_DUAL
		&& param->solver_type != MCSVM_CS
		&& param->solver_type != L1R_L2LOSS_SVC
		&& param->solver_type != L1R_LR
		&& param->solver_type != L2R_LR_DUAL
		&& param->solver_type != L2R_L2LOSS_SVR
		&& param->solver_type != L2R_L2LOSS_SVR_DUAL
		&& param->solver_type != L2R_L1LOSS_SVR_DUAL
		&& param->solver_type != ONECLASS_SVM)
		return "unknown solver type";

	if(param->init_sol != NULL
		&& param->solver_type != L2R_LR
		&& param->solver_type != L2R_L2LOSS_SVC
		&& param->solver_type != L2R_L2LOSS_SVR)
		return "Initial-solution specification supported only for solvers L2R_LR, L2R_L2LOSS_SVC, and L2R_L2LOSS_SVR";

	if(param->w_recalc == true
		&& param->solver_type != L2R_L2LOSS_SVC_DUAL
		&& param->solver_type != L2R_L1LOSS_SVC_DUAL)
		return "Recalculating w in the end is only for dual solvers for L2-regularized L1/L2-loss SVM";

	return NULL;
}

// Assembly:
xorpd %xmm0, %xmm0
ucomisd 0x8(%rsi), %xmm0
jae 0xa2e4
ucomisd 0x10(%rsi), %xmm0
jae 0xa2ec
xorpd %xmm1, %xmm1
ucomisd 0x30(%rsi), %xmm1
jbe 0xa2f4
cmpl $0xb, (%rsi)
jne 0xa2f4
leaq 0x2eee(%rip), %rax      # 0xd1d1
retq
leaq 0x2ed6(%rip), %rax      # 0xd1c1
retq
leaq 0x2ed7(%rip), %rax      # 0xd1ca
retq
movsd 0x18(%rdi), %xmm0
ucomisd %xmm1, %xmm0
jb 0xa30c
cmpl $0x15, (%rsi)
jne 0xa30c
leaq 0x2ecc(%rip), %rax      # 0xd1d7
retq
cmpl $0x0, 0x48(%rsi)
movq %rsi, %rax
je 0xa366
movl (%rax), %ecx
leaq 0x2f8c(%rip), %rax      # 0xd2aa
cmpl $0x15, %ecx
ja 0xa2eb
movl $0x2038ff, %edx         # imm = 0x2038FF
btl %ecx, %edx
jae 0xa2eb
cmpq $0x0, 0x40(%rsi)
je 0xa34a
leaq 0x2f83(%rip), %rax      # 0xd2be
cmpl $0xb, %ecx
ja 0xa2eb
movl $0x805, %edx            # imm = 0x805
btl %ecx, %edx
jae 0xa2eb
cmpb $0x1, 0x4c(%rsi)
jne 0xa37a
decl %ecx
xorl %eax, %eax
testl $0xfffffffd, %ecx       # imm = 0xFFFFFFFD
leaq 0x2fc2(%rip), %rcx      # 0xd323
cmovneq %rcx, %rax
retq
ucomisd 0x28d2(%rip), %xmm0     # 0xcc40
jne 0xa372
jnp 0xa37d
leaq 0x2e92(%rip), %rax      # 0xd20b
retq
xorl %eax, %eax
retq
movl (%rsi), %ecx
leaq 0x2ebd(%rip), %rax      # 0xd243
cmpq $0xb, %rcx
ja 0xa2eb
movl $0x865, %edx            # imm = 0x865
btl %ecx, %edx
jae 0xa2eb
leaq 0x2b63(%rip), %rax      # 0xcf08
leaq (%rax,%rcx,4), %rax
jmp 0xa315