struct defs
typedefs
global vars
int adj_st5(Direction_st2 d, ChildType_st1 ct);
ChildType_st1 reflect_st6(Direction_st2 d, ChildType_st1 ct);
int CountTree(QuadTree_st3 tree);
QuadTree_st3 child_st7(QuadTree_st3 tree, ChildType_st1 ct);
QuadTree_st3 gtequal_adj_neighbor_st8(QuadTree_st3 tree, Direction_st2 d);
int sum_adjacent_st9(QuadTree_st3 p, ChildType_st1 q1, ChildType_st1 q2,
int size);
int perimeter(QuadTree_st3 tree, int size);
int main(int argc, char *argv[]);
int CheckOutside_st15(int x, int y);
int CheckIntersect_st16(int center_x, int center_y, int size);
QuadTree_st13 MakeTree(int size, int center_x, int center_y, int lo_proc,
int hi_proc, QuadTree_st13 parent, ChildType_st11 ct,
int level);
int adj_st5(
Direction_st2 d,
ChildType_st1 ct)
{
local vars
switch (d1)
{
case 0 :
{
temp_151 = (int ) ct1;
temp_141 = (temp_151 == 1);
if ((temp_141 == 0))
{
/** temp_14 = ((int ) ct == 0) **/
temp_161 = (int ) ct1;
temp_142 = (temp_161 == 0);
}
return (temp_143);
temp_18 = (int ) ct;
temp_17 = (temp_18 == 3);
if ((temp_17 == 0))
{
temp_19 = (int ) ct;
temp_17 = (temp_19 == 2);
}
return (temp_17);
temp_21 = (int ) ct;
temp_20 = (temp_21 == 1);
if ((temp_20 == 0))
{
temp_22 = (int ) ct;
temp_20 = (temp_22 == 3);
}
return (temp_20);
temp_24 = (int ) ct;
temp_23 = (temp_24 == 2);
if ((temp_23 == 0))
{
temp_25 = (int ) ct;
temp_23 = (temp_25 == 0);
}
return (temp_23);
break;
}
case 2 :
{
_U_temp_18_11 = (int ) ct1;
_U_temp_17_01 = (_U_temp_18_11 == 3);
if ((_U_temp_17_01 == 0))
{
/** temp_17 = ((int ) ct == 2) **/
_U_temp_19_21 = (int ) ct1;
_U_temp_17_02 = (_U_temp_19_21 == 2);
}
return (_U_temp_17_03);
_U_temp_21_4 = (int ) ct;
_U_temp_20_3 = (_U_temp_21_4 == 1);
if ((_U_temp_20_3 == 0))
{
_U_temp_22_5 = (int ) ct;
_U_temp_20_3 = (_U_temp_22_5 == 3);
}
return (_U_temp_20_3);
_U_temp_24_7 = (int ) ct;
_U_temp_23_6 = (_U_temp_24_7 == 2);
if ((_U_temp_23_6 == 0))
{
_U_temp_25_8 = (int ) ct;
_U_temp_23_6 = (_U_temp_25_8 == 0);
}
return (_U_temp_23_6);
break;
}
case 1 :
{
_U_temp_21_101 = (int ) ct1;
_U_temp_20_91 = (_U_temp_21_101 == 1);
if ((_U_temp_20_91 == 0))
{
/** temp_20 = ((int ) ct == 3) **/
_U_temp_22_111 = (int ) ct1;
_U_temp_20_92 = (_U_temp_22_111 == 3);
}
return (_U_temp_20_93);
_U_temp_24_13 = (int ) ct;
_U_temp_23_12 = (_U_temp_24_13 == 2);
if ((_U_temp_23_12 == 0))
{
_U_temp_25_14 = (int ) ct;
_U_temp_23_12 = (_U_temp_25_14 == 0);
}
return (_U_temp_23_12);
break;
}
case 3 :
{
_U_temp_24_161 = (int ) ct1;
_U_temp_23_151 = (_U_temp_24_161 == 2);
if ((_U_temp_23_151 == 0))
{
/** temp_23 = ((int ) ct == 0) **/
_U_temp_25_171 = (int ) ct1;
_U_temp_23_152 = (_U_temp_25_171 == 0);
}
return (_U_temp_23_153);
break;
}
default :
{
break;
}
}
}
ChildType_st1 reflect_st6(
Direction_st2 d,
ChildType_st1 ct)
{
local vars
temp_271 = (int ) d1;
temp_261 = (temp_271 == 3);
if ((temp_261 == 0))
{
/** temp_26 = ((int ) d == 1) **/
temp_281 = (int ) d1;
temp_262 = (temp_281 == 1);
}
if ((temp_263 != 0))
{
switch (ct1)
{
case 0 :
{
return (1);
break;
}
case 1 :
{
return (0);
break;
}
case 3 :
{
return (2);
break;
}
case 2 :
{
return (3);
break;
}
default :
{
break;
}
}
}
switch (ct1)
{
case 0 :
{
return (2);
break;
}
case 1 :
{
return (3);
break;
}
case 3 :
{
return (1);
break;
}
case 2 :
{
return (0);
break;
}
default :
{
break;
}
}
}
int CountTree(
QuadTree_st3 tree)
{
local vars
temp_321 = (*tree1).nw;
temp_311 = (temp_321 == 0);
if ((temp_311 != 0))
{
/** temp_31 = ((*tree).ne == 0) **/
temp_331 = (*tree1).ne;
temp_312 = (temp_331 == 0);
}
temp_301 = temp_313;
if ((temp_301 != 0))
{
/** temp_30 = ((*tree).sw == 0) **/
temp_341 = (*tree1).sw;
temp_302 = (temp_341 == 0);
}
temp_291 = temp_303;
if ((temp_291 != 0))
{
/** temp_29 = ((*tree).se == 0) **/
temp_351 = (*tree1).se;
temp_292 = (temp_351 == 0);
}
if ((temp_293 != 0))
{
return (1);
}
else
{
/** (((CountTree((*tree).nw) + CountTree((*tree).ne)) + CountTree((*tree).sw)) + CountTree((*tree).se)) **/
temp_401 = (*tree1).nw;
temp_392 = CountTree1(temp_401);
temp_421 = (*tree1).ne;
temp_412 = CountTree2(temp_421);
temp_381 = (temp_392 + temp_412);
temp_441 = (*tree1).sw;
temp_432 = CountTree3(temp_441);
temp_371 = (temp_381 + temp_432);
temp_461 = (*tree1).se;
temp_452 = CountTree4(temp_461);
temp_361 = (temp_371 + temp_452);
return (temp_361);
}
}
QuadTree_st3 child_st7(
QuadTree_st3 tree,
ChildType_st1 ct)
{
local vars
switch (ct1)
{
case 1 :
{
temp_471 = (*tree1).ne;
return (temp_471);
temp_48 = (*tree).nw;
return (temp_48);
temp_49 = (*tree).se;
return (temp_49);
temp_50 = (*tree).sw;
return (temp_50);
break;
}
case 0 :
{
_U_temp_48_181 = (*tree1).nw;
return (_U_temp_48_181);
_U_temp_49_19 = (*tree).se;
return (_U_temp_49_19);
_U_temp_50_20 = (*tree).sw;
return (_U_temp_50_20);
break;
}
case 3 :
{
_U_temp_49_211 = (*tree1).se;
return (_U_temp_49_211);
_U_temp_50_22 = (*tree).sw;
return (_U_temp_50_22);
break;
}
case 2 :
{
_U_temp_50_231 = (*tree1).sw;
return (_U_temp_50_231);
break;
}
default :
{
break;
}
}
}
QuadTree_st3 gtequal_adj_neighbor_st8(
QuadTree_st3 tree,
Direction_st2 d)
{
local vars
parent1 = (*tree1).parent;
temp_511 = (parent1 != 0);
if ((temp_511 != 0))
{
/** temp_51 = (adj_st5(d, (*tree).childtype) != 0) **/
temp_531 = (*tree1).childtype;
temp_522 = adj_st51(d1, temp_531);
temp_512 = (temp_522 != 0);
}
if ((temp_513 != 0))
{
q2 = gtequal_adj_neighbor_st82(parent1, d1);
}
else
{
q3 = parent1;
}
temp_541 = (q4 != 0);
if ((temp_541 != 0))
{
/** temp_54 = ((int ) (*q).color == 2) **/
temp_551 = (*q4).color;
temp_561 = (int ) temp_551;
temp_542 = (temp_561 == 2);
}
if ((temp_543 != 0))
{
type1 = (*tree1).childtype;
temp_582 = reflect_st63(d1, type1);
temp_572 = child_st74(q4, temp_582);
return (temp_572);
}
else
{
return (q4);
}
}
int sum_adjacent_st9(
QuadTree_st3 p,
ChildType_st1 q1,
ChildType_st1 q2,
int size)
{
local vars
temp_591 = (*p1).color;
temp_601 = (int ) temp_591;
if ((temp_601 == 2))
{
temp_632 = child_st71(p1, q11);
temp_641 = (size1 / 2);
temp_622 = sum_adjacent_st92(temp_632, q11, q21, temp_641);
temp_662 = child_st73(p1, q21);
temp_671 = (size1 / 2);
temp_652 = sum_adjacent_st94(temp_662, q11, q21, temp_671);
temp_611 = (temp_622 + temp_652);
return (temp_611);
}
else
{
/** ((int ) (*p).color == 1) **/
temp_681 = (*p1).color;
temp_691 = (int ) temp_681;
if ((temp_691 == 1))
{
return (size1);
}
else
{
return (0);
}
}
}
int perimeter(
QuadTree_st3 tree,
int size)
{
local vars
retval1 = 0;
temp_701 = (*tree1).color;
temp_711 = (int ) temp_701;
if ((temp_711 == 2))
{
temp_731 = (*tree1).sw;
temp_741 = (size1 / 2);
temp_722 = perimeter1(temp_731, temp_741);
retval2 = (retval1 + temp_722);
temp_761 = (*tree1).se;
temp_771 = (size1 / 2);
temp_752 = perimeter2(temp_761, temp_771);
retval3 = (retval2 + temp_752);
temp_791 = (*tree1).ne;
temp_801 = (size1 / 2);
temp_782 = perimeter3(temp_791, temp_801);
retval4 = (retval3 + temp_782);
temp_821 = (*tree1).nw;
temp_831 = (size1 / 2);
temp_812 = perimeter4(temp_821, temp_831);
retval5 = (retval4 + temp_812);
}
else
{
/** ((int ) (*tree).color == 0) **/
temp_841 = (*tree1).color;
temp_851 = (int ) temp_841;
if ((temp_851 == 0))
{
neighbor2 = gtequal_adj_neighbor_st85(tree1, 0);
temp_861 = (neighbor2 == 0);
if ((temp_861 == 0))
{
/** temp_86 = ((int ) (*neighbor).color == 1) **/
temp_871 = (*neighbor2).color;
temp_881 = (int ) temp_871;
temp_862 = (temp_881 == 1);
}
if ((temp_863 != 0))
{
retval6 = (retval1 + size1);
}
else
{
/** ((int ) (*neighbor).color == 2) **/
temp_891 = (*neighbor2).color;
temp_901 = (int ) temp_891;
if ((temp_901 == 2))
{
/** retval = (retval + sum_adjacent_st9(neighbor, 3, 2, size)) **/
temp_912 = sum_adjacent_st96(neighbor2, 3, 2, size1);
retval7 = (retval1 + temp_912);
}
}
neighbor4 = gtequal_adj_neighbor_st87(tree1, 1);
temp_921 = (neighbor4 == 0);
if ((temp_921 == 0))
{
/** temp_92 = ((int ) (*neighbor).color == 1) **/
temp_931 = (*neighbor4).color;
temp_941 = (int ) temp_931;
temp_922 = (temp_941 == 1);
}
if ((temp_923 != 0))
{
retval10 = (retval9 + size1);
}
else
{
/** ((int ) (*neighbor).color == 2) **/
temp_951 = (*neighbor4).color;
temp_961 = (int ) temp_951;
if ((temp_961 == 2))
{
/** retval = (retval + sum_adjacent_st9(neighbor, 2, 0, size)) **/
temp_972 = sum_adjacent_st98(neighbor4, 2, 0, size1);
retval11 = (retval9 + temp_972);
}
}
neighbor6 = gtequal_adj_neighbor_st89(tree1, 2);
temp_981 = (neighbor6 == 0);
if ((temp_981 == 0))
{
/** temp_98 = ((int ) (*neighbor).color == 1) **/
temp_991 = (*neighbor6).color;
temp_1001 = (int ) temp_991;
temp_982 = (temp_1001 == 1);
}
if ((temp_983 != 0))
{
retval14 = (retval13 + size1);
}
else
{
/** ((int ) (*neighbor).color == 2) **/
temp_1011 = (*neighbor6).color;
temp_1021 = (int ) temp_1011;
if ((temp_1021 == 2))
{
/** retval = (retval + sum_adjacent_st9(neighbor, 0, 1, size)) **/
temp_1032 = sum_adjacent_st910(neighbor6, 0, 1, size1);
retval15 = (retval13 + temp_1032);
}
}
neighbor8 = gtequal_adj_neighbor_st811(tree1, 3);
temp_1041 = (neighbor8 == 0);
if ((temp_1041 == 0))
{
/** temp_104 = ((int ) (*neighbor).color == 1) **/
temp_1051 = (*neighbor8).color;
temp_1061 = (int ) temp_1051;
temp_1042 = (temp_1061 == 1);
}
if ((temp_1043 != 0))
{
retval18 = (retval17 + size1);
}
else
{
/** ((int ) (*neighbor).color == 2) **/
temp_1071 = (*neighbor8).color;
temp_1081 = (int ) temp_1071;
if ((temp_1081 == 2))
{
/** retval = (retval + sum_adjacent_st9(neighbor, 1, 3, size)) **/
temp_1092 = sum_adjacent_st912(neighbor8, 1, 3, size1);
retval19 = (retval17 + temp_1092);
}
}
}
}
return (retval23);
}
int main(
int argc,
char *argv[])
{
local vars
tree2 = MakeTree1(2048, 0, 0, 0, 0, 0, 3, 11);
count2 = CountTree2(tree2);
temp_1101 = "# of leaves is %d\n";
printf(temp_1101, count2);
count4 = perimeter3(tree2, 4096);
temp_1111 = "perimeter is %d\n";
printf(temp_1111, count4);
}
int CheckOutside_st15(
int x,
int y)
{
local vars
temp_1121 = (x1 * x1);
temp_1131 = (y1 * y1);
euclid1 = (temp_1121 + temp_1131);
if ((euclid1 > 4194304))
{
return (1);
}
if ((euclid1 <= 1048575))
{
return (-1);
}
return (0);
}
int CheckIntersect_st16(
int center_x,
int center_y,
int size)
{
local vars
temp_1181 = (center_x1 + size1);
temp_1191 = (center_y1 + size1);
temp_1172 = CheckOutside_st151(temp_1181, temp_1191);
temp_1161 = (temp_1172 == 0);
if ((temp_1161 != 0))
{
/** temp_116 = (CheckOutside_st15((center_x + size), (center_y - size)) == 0) **/
temp_1211 = (center_x1 + size1);
temp_1221 = (center_y1 - size1);
temp_1202 = CheckOutside_st152(temp_1211, temp_1221);
temp_1162 = (temp_1202 == 0);
}
temp_1151 = temp_1163;
if ((temp_1151 != 0))
{
/** temp_115 = (CheckOutside_st15((center_x - size), (center_y - size)) == 0) **/
temp_1241 = (center_x1 - size1);
temp_1251 = (center_y1 - size1);
temp_1232 = CheckOutside_st153(temp_1241, temp_1251);
temp_1152 = (temp_1232 == 0);
}
temp_1141 = temp_1153;
if ((temp_1141 != 0))
{
/** temp_114 = (CheckOutside_st15((center_x - size), (center_y + size)) == 0) **/
temp_1271 = (center_x1 - size1);
temp_1281 = (center_y1 + size1);
temp_1262 = CheckOutside_st154(temp_1271, temp_1281);
temp_1142 = (temp_1262 == 0);
}
if ((temp_1143 != 0))
{
return (2);
}
temp_1321 = (center_x1 + size1);
temp_1331 = (center_y1 + size1);
temp_1312 = CheckOutside_st155(temp_1321, temp_1331);
temp_1351 = (center_x1 + size1);
temp_1361 = (center_y1 - size1);
temp_1342 = CheckOutside_st156(temp_1351, temp_1361);
temp_1301 = (temp_1312 + temp_1342);
temp_1381 = (center_x1 - size1);
temp_1391 = (center_y1 - size1);
temp_1372 = CheckOutside_st157(temp_1381, temp_1391);
temp_1291 = (temp_1301 + temp_1372);
temp_1411 = (center_x1 - size1);
temp_1421 = (center_y1 + size1);
temp_1402 = CheckOutside_st158(temp_1411, temp_1421);
sum1 = (temp_1291 + temp_1402);
temp_1431 = (sum1 == 4);
if ((temp_1431 == 0))
{
temp_1432 = (sum1 == -4);
}
if ((temp_1433 != 0))
{
return (0);
}
return (1);
}
QuadTree_st13 MakeTree(
int size,
int center_x,
int center_y,
int lo_proc,
int hi_proc,
QuadTree_st13 parent,
ChildType_st11 ct,
int level)
{
local vars
intersect1 = 0;
temp_1442 = malloc(28);
retval1 = (struct quad_struct *) temp_1442;
(*retval1).parent = parent1;
(*retval1).childtype = ct1;
intersect3 = CheckIntersect_st161(center_x1, center_y1, size1);
size1 = (size1 / 2);
temp_1451 = (intersect3 == 0);
if ((temp_1451 != 0))
{
temp_1452 = (size1 <= 511);
}
if ((temp_1453 != 0))
{
(*retval1).color = 1;
(*retval1).nw = 0;
(*retval1).ne = 0;
(*retval1).sw = 0;
(*retval1).se = 0;
}
else
{
if ((intersect3 == 2))
{
(*retval1).color = 0;
(*retval1).nw = 0;
(*retval1).ne = 0;
(*retval1).sw = 0;
(*retval1).se = 0;
}
else
{
if ((level1 == 0))
{
(*retval1).color = 0;
(*retval1).nw = 0;
(*retval1).ne = 0;
(*retval1).sw = 0;
(*retval1).se = 0;
}
else
{
temp_1461 = (lo_proc1 + hi_proc1);
mid11 = (temp_1461 / 2);
temp_1481 = (lo_proc1 + hi_proc1);
temp_1471 = (temp_1481 + 1);
mid21 = (temp_1471 / 2);
temp_1491 = (center_x1 - size1);
temp_1501 = (center_y1 + size1);
temp_1521 = (lo_proc1 + mid11);
temp_1511 = (temp_1521 / 2);
temp_1531 = (level1 - 1);
(*retval1).nw = MakeTree2(size1, temp_1491, temp_1501, lo_proc1, temp_1511, retval1, 0, temp_1531);
temp_1541 = (center_x1 + size1);
temp_1551 = (center_y1 + size1);
temp_1581 = (lo_proc1 + mid11);
temp_1571 = (temp_1581 + 1);
temp_1561 = (temp_1571 / 2);
temp_1591 = (level1 - 1);
(*retval1).ne = MakeTree3(size1, temp_1541, temp_1551, temp_1561, mid11, retval1, 1, temp_1591);
temp_1601 = (center_x1 + size1);
temp_1611 = (center_y1 - size1);
temp_1631 = (mid21 + hi_proc1);
temp_1621 = (temp_1631 / 2);
temp_1641 = (level1 - 1);
(*retval1).se = MakeTree4(size1, temp_1601, temp_1611, mid21, temp_1621, retval1, 3, temp_1641);
temp_1651 = (center_x1 - size1);
temp_1661 = (center_y1 - size1);
temp_1691 = (mid21 + hi_proc1);
temp_1681 = (temp_1691 + 1);
temp_1671 = (temp_1681 / 2);
temp_1701 = (level1 - 1);
(*retval1).sw = MakeTree5(size1, temp_1651, temp_1661, temp_1671, hi_proc1, retval1, 2, temp_1701);
(*retval1).color = 2;
}
}
}
return (retval1);
}
|