Here's a small portion of the pseudo code for the POP instruction from Intel's documentation:
IF StackAddrSize = 32
THEN
IF OperandSize = 32
THEN
DEST ← SS:ESP; (* Copy a doubleword *)
ESP ← ESP + 4;
ELSE (* OperandSize = 16*)
...
FI;
...
But here's what it says specifically about POP xSP
:
The POP ESP instruction increments the stack pointer (ESP) before data at the old top of stack is written into the destination.
This means that the sequence
PUSH ESP
POP ESP
does nothing out of ordinary, just like this one:
PUSH EAX
POP EAX
Similarly, there's some text on PUSH xSP
:
The PUSH ESP instruction pushes the value of the ESP register as it existed before the instruction was executed. If a PUSH instruction uses a memory operand in which the ESP register is used for computing the operand address, the address of the operand is computed before the ESP register is decremented.