You can get rid of immediate nesting like this
if (conditionA)
{
if (conditionB)
{
DoSomething();
}
}
but putting all conditions in the same if
if (conditionA && conditionB)
{
DoSomething();
}
For the code that processes the reader you could just put that in its own function as pass the reader in as a param.
if (conditionA && conditionB)
{
ProcessReader(Reader4);
}
If you have too much nesting still then repeat the process of putting some of the nested code in a function which you then call.