Here I'm using "cmp", but you can modify macros and use "test". Hutch's macros are more clear but you can make only 20 levels

, with this You can use any number of levels.
This are simplified macros:
__if_ttt_n0 = 0
__if_ttt_level = 0
__if_ttt_resuelve macro m1, a1, a2
% &m1
% cmp &a1, 0
ifnb <&a2>
jg @CatStr(__if_ttt_,%__if_ttt_n0,<_>,%__if_ttt_level,%__if_ttt_n1)
else
je @CatStr(__if_ttt_,%__if_ttt_n0,<_>,%__if_ttt_level,%__if_ttt_n1)
endif
endm
@if macro m1, a1, a2
if __if_ttt_level eq 0
__if_ttt_n0 = __if_ttt_n0 + 1
endif
__if_ttt_level = __if_ttt_level + 1
__if_ttt_n1 = 0
__if_ttt_resuelve <&m1>, &a1, &a2
endm
@elseif macro m1, a1, a2
jmp @CatStr(__if_ttt_,%__if_ttt_n0,<_>,%__if_ttt_level)
@CatStr(__if_ttt_,%__if_ttt_n0,<_>,%__if_ttt_level,%__if_ttt_n1,<:>)
;% &m1
__if_ttt_n1 = __if_ttt_n1 + 1
__if_ttt_resuelve <&m1>,&a1, &a2
endm
@else macro
jmp @CatStr(__if_ttt_,%__if_ttt_n0,<_>,%__if_ttt_level)
@CatStr(__if_ttt_,%__if_ttt_n0,<_>,%__if_ttt_level,%__if_ttt_n1,<:>)
__if_ttt_n1 = __if_ttt_n1 + 1
endm
__if_ttt_setEnd macro
@CatStr(__if_ttt_,%__if_ttt_n0,<_>,%__if_ttt_level,<:>)
endm
@endif macro
@CatStr(__if_ttt_,%__if_ttt_n0,<_>,%__if_ttt_level,%__if_ttt_n1,<:>)
__if_ttt_setEnd
if __if_ttt_level gt 0
__if_ttt_level = __if_ttt_level - 1
endif
endm
Must be used:
mov eax, clipUnion
and eax, POLYGON_CLIP_RIGHT
;int 3
@if <>, eax
***************
cond1 macro
DbgText "test 2"
mov eax, clipUnion
and eax, POLYGON_CLIP_LEFT
;int 3
endm
@elseif <cond1>, eax
************************
cond1 macro
mov eax, POLYGON_CLIP_RIGHT
or eax, POLYGON_CLIP_LEFT
and eax, clipSum
endm
@elseif <cond1>, eax, 0
**************
@else
************
@endif
A more complex thing using Mabdelouahab's macros is in
if-elseif Mab's macros for floating comparisonsPD: just in case. The smile about 20 levels is that is a lot

I think I used at most 6 levels.