You do know that a lot of our modern technology depends on quantum mechanics in one way or the other, right?
QM is statistical theory, the equations will work whether they are explained with magic unicorns or correlated photons.
So allow me to flip your argument around: quantum mechanics has been very successful in predicting small-scale phenomena and giving scientists an understanding of how particles behave at this scale.
The algorith is real and does what it does. I'm not saying the whole of QM is wrong, but I see with my own eyes they are deffinitivelly wrong about at least this type of experiment. I can only talk about this specific case, I don't have satisfactory information to talk about anything else. See if you can find any objection to what I said here, I don't claim to know anyhting else.
On one hand we have your "theory",
I don't have any theory, it's a self-evident fact. See for yourself:
#include <math.h>
#include <time.h>
#include <stdio.h>
void main()
{
int N_REPEAT= 100000;
float P1= 30; // <--- polarizer-1
float P2= 30; // <--- polarizer-2
Init_Setup:;
system("cls");
printf("\Repeat #: 100,000");
printf("\nAngle polarizer P1: "); scanf("%f", &P1);
printf("Angle polarizer P2: "); scanf("%f", &P2);
srand(time(NULL));
int N_MEASURE= 0;
int MATCH= 0;
int MISMATCH= 0;
// relative angle & radian conversion
float REL_P1= 0.0174533* (P1-P2)/2;
float REL_P2= 0.0174533* (P2-P1)/2;
BEGIN:;
int L1= ((rand()%201)/2 < ((cos(REL_P1)*cos(REL_P1))*100)) ? 1:0;
int L2= ((rand()%201)/2 < ((cos(REL_P2)*cos(REL_P2))*100)) ? 1:0;
printf("\n %d%d", L1, L2);
if (L1 == L2) MATCH++; else MISMATCH++;
if (++N_MEASURE < N_REPEAT) goto BEGIN;
printf("\n\n1.)\n--- MALUS LAW INTEGRATION (%.0f,%.0f) ---", P1, P2);
printf("\nMATCH: %d\nMISMATCH: %d", MATCH, MISMATCH);
printf("\nMalus(%d): %.0f%%", abs((int)((P1-P2)/2)), ((cos(REL_P1)*cos(REL_P1))*100));
printf("\n>>> STATISTICAL AVERAGE RESULT: %.2f%%", (float)abs(MATCH-MISMATCH)/(N_MEASURE/100));
// Exact probabilty equation
float T= cos(REL_P1)*cos(REL_P2);
float F= 1.0 - T;
float MCH= (T*T)+(F*F);
float MSM= (T*F)+(F*T);
printf("\n\n\n2.)\n--- MALUS LAW PROBABILTY (%.0f,%.0f) ---", (P1-P2)/2, (P2-P1)/2);
printf("\nMATCH: %.2f%%\nMISMATCH: %.2f%%", MCH*100, MSM*100);
printf("\n>>> EXACT PROBABILTY RESULT: %.2f%%", (MCH-MSM)*100);
printf("\n\nPress any key to repeat.");
getch(); goto Init_Setup;
}