As @RbMm noticed, I call [esp], i.e. I tell the processor to execute instructions at the address at the top of the stack, but it is not the address of the beginning of the code, but the code itself. That was the problem, you just have to do call esp
and Windows doesn't swear.