I suggest that you write the C or pseudo code for this. It is only going to be a line or two or so, and that will clarify your thinking.
Your pseudo/C code will contain if-then-else statements. Here's the pattern for if-then-else in high level C, then repeated in low level C. When you translate your if-then-else statements, follow this pattern:
if ( <condition> ) {
<then-part>
}
else {
<else-part>
}
Let's note that only one of the then-part and else-part should run.
The same control structure, if-then-else, in the if-goto-label style of assembly language:
if <condition> is false goto elsePart1;
<then-part>
goto endIf1;
elsePart1:
<else-part>
endIf1:
Let's first note that labels do not execute — the processor doesn't see them as they are removed by the assembler in generating machine code. The processor only sees & executes machine code instructions, and labels do not have machine code.
Here's how the if-then-else works in if-goto-label: when the condition is false, it will skip over the then-part to run the else-part instead. But on condition true, it will not branch and so execute the then-part. After execution of the then-part we need to skip over the else-part and that is the reason for the unconditional branch and the endIf1:
label in the if-goto-label version. (Without that unconditional branch, it would run the else-part after the then-part, which would be bad.) It is also important that after an if-then-else statement, the program runs the next statement, regardless of whether its then-part fired or its else-part fired.
If you have multiple if-then-else statements, just use a different numbering for its labels. Nested if-then-else's should still follow this pattern — suggest to translate outer ones first, then inner ones, but the other order will work as well. It can also be done in program order, but that makes it harder to follow these simple patterns.