"if" can be either take or not. In reality, both "if" can't be taked at the same time -- and that's why I'm trying to automatically figure out working on LLVM representation. However, the LLVM code: int %logsch(int %ih, int %nbh) { entry: %tmp.1 = setlt int %nbh, 0 %ih_addr.1 = select bool %tmp.1, int 10, int %ih %nbh_addr.1 = select bool %tmp.1, int 0, int %nbh %tmp.4 = setgt int %nbh_addr.1, 22528 %ih_addr.0 = select bool %tmp.4, int 7, int %ih_addr.1 %nbh_addr.0 = select bool %tmp.4, int 22528, int %nbh_addr.1 %tmp.8 = add int %nbh_addr.0, %ih_addr.0 ret int %tmp.8 } Has 'select' instructions and a single path, which makes my task harder. - Volodya