public void Cfgcfunction(Function newfuc){
	            int lcv, newlcv;
	            int precnt=0;
	            int succnt=0;
	            int IRcount = newfuc.IRcount;
	            for(lcv=0;lcv<IRcount;lcv++){
	                  //first part: predecessors; successor
	                  succnt = 0;
	                  //precnt = 0;
	                  intset currentsuc = new intset();  
	                  //intset currentpre = new intset();            
	                  if(newfuc.IRs.get(lcv).operation.equals("JUMP")){
	                        //unconditional jump
	                        if(newfuc.IRs.get(lcv).op1.matches("LABEL[0-9]+")){
	                              for(newlcv=0;newlcv<IRcount;newlcv++){
	                                    if(newfuc.IRs.get(newlcv).operation.equals(newfuc.IRs.get(lcv).op1)){
	                                          currentsuc.Addint(newlcv);
	                                          if(newfuc.Cfgs.Prede.get(newlcv)==null){
	                                              newfuc.Cfgs.Prede.put(newlcv,new intset());  
	                                          }
	                                          newfuc.Cfgs.Prede.get(newlcv).Addint(lcv);
	                                          succnt++;
	                                          break;
	                                    }
	                              } 
	                        }     
	                  }else if(newfuc.IRs.get(lcv).operation.equals("NE")|
	                        newfuc.IRs.get(lcv).operation.equals("LE")|
	                        newfuc.IRs.get(lcv).operation.equals("LT")|
	                        newfuc.IRs.get(lcv).operation.equals("GT")|
	                        newfuc.IRs.get(lcv).operation.equals("GE")|
	                        newfuc.IRs.get(lcv).operation.equals("EQ")){
	                        //conditional jump
	                        for(newlcv=0;newlcv<IRcount;newlcv++){
	                          //    System.out.println(newfuc.IRs.get(newlcv).op1);
	                              if(newfuc.IRs.get(newlcv).op1.equals("label"+newfuc.IRs.get(lcv).op3)){
	                                    currentsuc.Addint(newlcv);
	                                    if(newfuc.Cfgs.Prede.get(newlcv)==null){
	                                              newfuc.Cfgs.Prede.put(newlcv,new intset());  
	                                    
	                                    }
	                                    newfuc.Cfgs.Prede.get(newlcv).Addint(lcv);
	                                    succnt++;
	                                    break;
	                              }
	                        }
	                        currentsuc.Addint(lcv+1);
	                    
	                        if(newfuc.Cfgs.Prede.get(lcv+1)==null){
	                              newfuc.Cfgs.Prede.put(lcv+1,new intset());  
	                        }
	                        newfuc.Cfgs.Prede.get(lcv+1).Addint(lcv);
	                        succnt++; 
	                  }else if(lcv!=IRcount-1){
	                        currentsuc.Addint(lcv+1);
	                        if(newfuc.Cfgs.Prede.get(lcv+1)==null){
	                              newfuc.Cfgs.Prede.put(lcv+1,new intset());  
	                        }
	                        newfuc.Cfgs.Prede.get(lcv+1).Addint(lcv);
	                        succnt++;
	                     // System.out.println("What the fuck");
	                  }
	                  newfuc.Cfgs.Succe.put(lcv,currentsuc);

	                  //second part: 4 sets
	                  stringset currentgen = new stringset();
	                  stringset currentkill = new stringset();
	                  if(newfuc.IRs.get(lcv).operation.equals("PUSH")){
	                        if(newfuc.IRs.get(lcv).op1!=""){
	                              currentgen.AddString(newfuc.IRs.get(lcv).op1);
	                              newfuc.Cfgs.Gen.put(lcv,currentgen);
	                        }
	                  }else if(newfuc.IRs.get(lcv).operation.equals("POP")){
	                        if(newfuc.IRs.get(lcv).op1!=""){
	                              currentkill.AddString(newfuc.IRs.get(lcv).op1);
	                              newfuc.Cfgs.Kill.put(lcv,currentkill);
	                        }
	                  }else if(newfuc.IRs.get(lcv).operation.equals("WRITEF")|newfuc.IRs.get(lcv).operation.equals("WRITEI")|newfuc.IRs.get(lcv).operation.equals("WRITES")){
	                        if(newfuc.IRs.get(lcv).op1!=""){
	                              currentgen.AddString(newfuc.IRs.get(lcv).op1);
	                              newfuc.Cfgs.Gen.put(lcv,currentgen);
	                        }
	                  }else if(newfuc.IRs.get(lcv).operation.equals("READI")|newfuc.IRs.get(lcv).operation.equals("READF")|newfuc.IRs.get(lcv).operation.equals("READS")){
	                        if(newfuc.IRs.get(lcv).op1!=""){
	                              currentkill.AddString(newfuc.IRs.get(lcv).op1);
	                              newfuc.Cfgs.Kill.put(lcv,currentkill);
	                        }
	                  }else if(newfuc.IRs.get(lcv).operation.equals("STOREF")|newfuc.IRs.get(lcv).operation.equals("STOREI")){
	                        currentgen.AddString(newfuc.IRs.get(lcv).op1);
	                        currentkill.AddString(newfuc.IRs.get(lcv).op2);
	                        newfuc.Cfgs.Gen.put(lcv,currentgen);
	                        newfuc.Cfgs.Kill.put(lcv,currentkill);
	                  }else if(newfuc.IRs.get(lcv).operation.equals("ADDF")|newfuc.IRs.get(lcv).operation.equals("ADDI")){
	                        currentgen.AddString(newfuc.IRs.get(lcv).op1);
	                        currentgen.AddString(newfuc.IRs.get(lcv).op2);
	                        currentkill.AddString(newfuc.IRs.get(lcv).op3);
	                        newfuc.Cfgs.Gen.put(lcv,currentgen);
	                        newfuc.Cfgs.Kill.put(lcv,currentkill);
	                  }else if(newfuc.IRs.get(lcv).operation.equals("DIVF")|newfuc.IRs.get(lcv).operation.equals("DIVI")){
	                        currentgen.AddString(newfuc.IRs.get(lcv).op1);
	                        currentgen.AddString(newfuc.IRs.get(lcv).op2);
	                        currentkill.AddString(newfuc.IRs.get(lcv).op3);
	                        newfuc.Cfgs.Gen.put(lcv,currentgen);
	                        newfuc.Cfgs.Kill.put(lcv,currentkill);
	                  }else if(newfuc.IRs.get(lcv).operation.equals("SUBF")|newfuc.IRs.get(lcv).operation.equals("SUBI")){
	                        currentgen.AddString(newfuc.IRs.get(lcv).op1);
	                        currentgen.AddString(newfuc.IRs.get(lcv).op2);
	                        currentkill.AddString(newfuc.IRs.get(lcv).op3);
	                        newfuc.Cfgs.Gen.put(lcv,currentgen);
	                        newfuc.Cfgs.Kill.put(lcv,currentkill);
	                  }else if(newfuc.IRs.get(lcv).operation.equals("RET")){
	                        for(Iterator elem = SymbolTable.get("GLOBAL").elements.keySet().iterator();elem.hasNext();){
	                              Object hello = elem.next();
	                              Element newelem = SymbolTable.get("GLOBAL").elements.get(hello);
	                              currentgen.AddString(newelem.E_name);
	                              newfuc.Cfgs.Gen.put(lcv,currentgen);
	                        }
	                  }
	            }
	           // System.out.println("What the fuck!!");
	      }