// File: /workspace/github_cpp_makefile_star2_O3/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 0xbc49
ucomisd 0x10(%rsi), %xmm0
jae 0xbc51
xorpd %xmm1, %xmm1
ucomisd 0x30(%rsi), %xmm1
jbe 0xbc59
cmpl $0xb, (%rsi)
jne 0xbc59
leaq 0x35e9(%rip), %rax      # 0xf231
retq
leaq 0x35d1(%rip), %rax      # 0xf221
retq
leaq 0x35d2(%rip), %rax      # 0xf22a
retq
movsd 0x18(%rdi), %xmm0
ucomisd %xmm1, %xmm0
jb 0xbc71
cmpl $0x15, (%rsi)
jne 0xbc71
leaq 0x35c7(%rip), %rax      # 0xf237
retq
cmpl $0x0, 0x48(%rsi)
movq %rsi, %rax
je 0xbccb
movl (%rax), %ecx
leaq 0x3687(%rip), %rax      # 0xf30a
cmpl $0x15, %ecx
ja 0xbc50
movl $0x2038ff, %edx         # imm = 0x2038FF
btl %ecx, %edx
jae 0xbc50
cmpq $0x0, 0x40(%rsi)
je 0xbcaf
leaq 0x367e(%rip), %rax      # 0xf31e
cmpl $0xb, %ecx
ja 0xbc50
movl $0x805, %edx            # imm = 0x805
btl %ecx, %edx
jae 0xbc50
cmpb $0x1, 0x4c(%rsi)
jne 0xbcdf
decl %ecx
xorl %eax, %eax
testl $0xfffffffd, %ecx       # imm = 0xFFFFFFFD
leaq 0x36bd(%rip), %rcx      # 0xf383
cmovneq %rcx, %rax
retq
ucomisd 0x2f6d(%rip), %xmm0     # 0xec40
jne 0xbcd7
jnp 0xbce2
leaq 0x358d(%rip), %rax      # 0xf26b
retq
xorl %eax, %eax
retq
movl (%rsi), %ecx
leaq 0x35b8(%rip), %rax      # 0xf2a3
cmpq $0xb, %rcx
ja 0xbc50
movl $0x865, %edx            # imm = 0x865
btl %ecx, %edx
jae 0xbc50
leaq 0x325e(%rip), %rax      # 0xef68
leaq (%rax,%rcx,4), %rax
jmp 0xbc7a