// File: /workspace/github_cpp_makefile_star2_O1/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 0xb15e
ucomisd 0x10(%rsi), %xmm0
jae 0xb166
xorpd %xmm1, %xmm1
ucomisd 0x30(%rsi), %xmm1
jbe 0xb16e
cmpl $0xb, (%rsi)
jne 0xb16e
leaq 0x3024(%rip), %rax      # 0xe181
retq
leaq 0x300c(%rip), %rax      # 0xe171
retq
leaq 0x300d(%rip), %rax      # 0xe17a
retq
movsd 0x18(%rdi), %xmm0
ucomisd %xmm1, %xmm0
jb 0xb186
cmpl $0x15, (%rsi)
jne 0xb186
leaq 0x3002(%rip), %rax      # 0xe187
retq
cmpl $0x0, 0x48(%rsi)
je 0xb1dd
movl (%rsi), %ecx
leaq 0x30c5(%rip), %rax      # 0xe25a
cmpl $0x15, %ecx
ja 0xb165
movl $0x2038ff, %edx         # imm = 0x2038FF
btl %ecx, %edx
jae 0xb165
cmpq $0x0, 0x40(%rsi)
je 0xb1c1
leaq 0x30bc(%rip), %rax      # 0xe26e
cmpl $0xb, %ecx
ja 0xb165
movl $0x805, %edx            # imm = 0x805
btl %ecx, %edx
jae 0xb165
cmpb $0x1, 0x4c(%rsi)
jne 0xb1f1
decl %ecx
xorl %eax, %eax
testl $0xfffffffd, %ecx       # imm = 0xFFFFFFFD
leaq 0x30fb(%rip), %rcx      # 0xe2d3
cmovneq %rcx, %rax
retq
ucomisd 0x2a33(%rip), %xmm0     # 0xdc18
jne 0xb1e9
jnp 0xb1f4
leaq 0x2fcb(%rip), %rax      # 0xe1bb
retq
xorl %eax, %eax
retq
movl (%rsi), %ecx
leaq 0x2ff6(%rip), %rax      # 0xe1f3
cmpl $0xb, %ecx
ja 0xb165
movl $0x865, %edx            # imm = 0x865
btl %ecx, %edx
jb 0xb18c
jmp 0xb165