Thread: [Pi] Models

Results 1 to 9 of 9
  1. #1 [Pi] Models 
    leme give u some n00ts

    noot noot's Avatar
    Join Date
    Dec 2012
    Posts
    1,186
    Thanks given
    191
    Thanks received
    132
    Rep Power
    409
    So after adding the completionist cape models, I got an error, and then when I removed them, the error magically went away.
    I was told this error only happens if you have any models over 50k (50,000), and since completionist cape models are around 62k (62,000), I can't add them, or my client will crash and get the error.

    Pic:
    Attached image
    Spoiler for :

    [Today 05:42 AM] Thakiller: Danced to make us lauigh and put a smile on our faces
    Reply With Quote  
     

  2. #2  
    Registered Member Magick07's Avatar
    Join Date
    Jun 2011
    Posts
    454
    Thanks given
    128
    Thanks received
    21
    Rep Power
    0
    Quote Originally Posted by Skill_R_Us View Post
    So after adding the completionist cape models, I got an error, and then when I removed them, the error magically went away.
    I was told this error only happens if you have any models over 50k (50,000), and since completionist cape models are around 62k (62,000), I can't add them, or my client will crash and get the error.

    Pic:
    Hello friend May I see your client.java + Model.java please? Thank you
    Reply With Quote  
     

  3. #3  
    leme give u some n00ts

    noot noot's Avatar
    Join Date
    Dec 2012
    Posts
    1,186
    Thanks given
    191
    Thanks received
    132
    Rep Power
    409
    Client.java
    Code:
    package server.model.players;
    
    import java.util.LinkedList;
    import java.util.Queue;
    import java.util.concurrent.Future;
    
    import org.apache.mina.common.IoSession;
    
    import server.Config;
    import server.Server;
    import server.model.items.ItemAssistant;
    import server.model.shops.ShopAssistant;
    import server.net.HostList;
    import server.net.Packet;
    import server.net.StaticPacketBuilder;
    import server.util.Misc;
    import server.util.Stream;
    import server.model.players.skills.*;
    import server.event.EventManager;
    import server.event.Event;
    import server.event.EventContainer;
    
    public class Client extends Player {
    
    	public byte buffer[] = null;
    	public Stream inStream = null, outStream = null;
    	private IoSession session;
    	private ItemAssistant itemAssistant = new ItemAssistant(this);
    	private ShopAssistant shopAssistant = new ShopAssistant(this);
    	private TradeAndDuel tradeAndDuel = new TradeAndDuel(this);
    	private PlayerAssistant playerAssistant = new PlayerAssistant(this);
    	private CombatAssistant combatAssistant = new CombatAssistant(this);
    	private ActionHandler actionHandler = new ActionHandler(this);
    	private DialogueHandler dialogueHandler = new DialogueHandler(this);
    	private Queue<Packet> queuedPackets = new LinkedList<Packet>();
    	private Potions potions = new Potions(this);
    	private PotionMixing potionMixing = new PotionMixing(this);
    	private Food food = new Food(this);
    	/**
    	 * Skill instances
    	 */
    	private Slayer slayer = new Slayer(this);
    	private Runecrafting runecrafting = new Runecrafting(this);
    	private Woodcutting woodcutting = new Woodcutting(this);
    	private Mining mine = new Mining(this);
    	private Agility agility = new Agility(this);
    	private Cooking cooking = new Cooking(this);
    	private Fishing fish = new Fishing(this);
    	private Crafting crafting = new Crafting(this);
    	private Smithing smith = new Smithing(this);
    	private Prayer prayer = new Prayer(this);
    	private Fletching fletching = new Fletching(this);
    	private SmithingInterface smithInt = new SmithingInterface(this);
    	private Farming farming = new Farming(this);
    	private Thieving thieving = new Thieving(this);
    	private Firemaking firemaking = new Firemaking(this);
    	private Herblore herblore = new Herblore(this);
    	
    	private int somejunk;
    	public int lowMemoryVersion = 0;
    	public int timeOutCounter = 0;		
    	public int returnCode = 2; 
    	private Future<?> currentTask;
    	
    	public Client(IoSession s, int _playerId) {
    		super(_playerId);
    		this.session = s;
    		synchronized(this) {
    			outStream = new Stream(new byte[Config.BUFFER_SIZE]);
    			outStream.currentOffset = 0;
    		}
    		inStream = new Stream(new byte[Config.BUFFER_SIZE]);
    		inStream.currentOffset = 0;
    		buffer = new byte[Config.BUFFER_SIZE];
    	}
    	
    	public void flushOutStream() {	
    		if(disconnected || outStream.currentOffset == 0) return;
    		synchronized(this) {	
    			StaticPacketBuilder out = new StaticPacketBuilder().setBare(true);
    			byte[] temp = new byte[outStream.currentOffset]; 
    			System.arraycopy(outStream.buffer, 0, temp, 0, temp.length);
    			out.addBytes(temp);
    			session.write(out.toPacket());
    			outStream.currentOffset = 0;
    		}
        }
    	
    	public void sendClan(String name, String message, String clan, int rights) {
    		outStream.createFrameVarSizeWord(217);
    		outStream.writeString(name);
    		outStream.writeString(message);
    		outStream.writeString(clan);
    		outStream.writeWord(rights);
    		outStream.endFrameVarSize();
    	}
    	
    	public static final int PACKET_SIZES[] = {
    		0, 0, 0, 1, -1, 0, 0, 0, 0, 0, //0
    		0, 0, 0, 0, 8, 0, 6, 2, 2, 0,  //10
    		0, 2, 0, 6, 0, 12, 0, 0, 0, 0, //20
    		0, 0, 0, 0, 0, 8, 4, 0, 0, 2,  //30
    		2, 6, 0, 6, 0, -1, 0, 0, 0, 0, //40
    		0, 0, 0, 12, 0, 0, 0, 8, 8, 12, //50
    		8, 8, 0, 0, 0, 0, 0, 0, 0, 0,  //60
    		6, 0, 2, 2, 8, 6, 0, -1, 0, 6, //70
    		0, 0, 0, 0, 0, 1, 4, 6, 0, 0,  //80
    		0, 0, 0, 0, 0, 3, 0, 0, -1, 0, //90
    		0, 13, 0, -1, 0, 0, 0, 0, 0, 0,//100
    		0, 0, 0, 0, 0, 0, 0, 6, 0, 0,  //110
    		1, 0, 6, 0, 0, 0, -1, 0, 2, 6, //120
    		0, 4, 6, 8, 0, 6, 0, 0, 0, 2,  //130
    		0, 0, 0, 0, 0, 6, 0, 0, 0, 0,  //140
    		0, 0, 1, 2, 0, 2, 6, 0, 0, 0,  //150
    		0, 0, 0, 0, -1, -1, 0, 0, 0, 0,//160
    		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  //170
    		0, 8, 0, 3, 0, 2, 0, 0, 8, 1,  //180
    		0, 0, 12, 0, 0, 0, 0, 0, 0, 0, //190
    		2, 0, 0, 0, 0, 0, 0, 0, 4, 0,  //200
    		4, 0, 0, 0, 7, 8, 0, 0, 10, 0, //210
    		0, 0, 0, 0, 0, 0, -1, 0, 6, 0, //220
    		1, 0, 0, 0, 6, 0, 6, 8, 1, 0,  //230
    		0, 4, 0, 0, 0, 0, -1, 0, -1, 4,//240
    		0, 0, 6, 6, 0, 0, 0            //250
    	};
    
    	public void destruct() {
    		if(session == null) 
    			return;
    		//PlayerSaving.getSingleton().requestSave(playerId);
    		getPA().removeFromCW();
    		if (inPits)
    			Server.fightPits.removePlayerFromPits(playerId);
    		if (clanId >= 0)
    			Server.clanChat.leaveClan(playerId, clanId);
    		Misc.println("[DEREGISTERED]: "+playerName+"");
    		HostList.getHostList().remove(session);
    		disconnected = true;
    		session.close();
    		session = null;
    		inStream = null;
    		outStream = null;
    		isActive = false;
    		buffer = null;
    		super.destruct();
    	}
    	
    	
    	public void sendMessage(String s) {
    		synchronized (this) {
    			if(getOutStream() != null) {
    				outStream.createFrameVarSize(253);
    				outStream.writeString(s);
    				outStream.endFrameVarSize();
    			}
    		}
    	}
    
    	public void setSidebarInterface(int menuId, int form) {
    		synchronized (this) {
    			if(getOutStream() != null) {
    				outStream.createFrame(71);
    				outStream.writeWord(form);
    				outStream.writeByteA(menuId);
    			}
    		}
    	}	
    	
    	public void initialize() {
    			if(playerRights == 1) {
    					for (int j = 0; j < Server.playerHandler.players.length; j++) {
    					if (Server.playerHandler.players[j] != null) {
    					Client c2 = (Client)Server.playerHandler.players[j];
    					c2.sendMessage("@gre@[Mod] " +playerName+ " has just logged in.");
            }
        }
    }
    			if(playerRights == 2) {
    					for (int j = 0; j < Server.playerHandler.players.length; j++) {
    					if (Server.playerHandler.players[j] != null) {
    					Client c2 = (Client)Server.playerHandler.players[j];
    					c2.sendMessage("@yel@[Admin] " +playerName+ " has just logged in.");
            }
        }
    }
    			if(playerRights == 3) {
    					for (int j = 0; j < Server.playerHandler.players.length; j++) {
    					if (Server.playerHandler.players[j] != null) {
    					Client c2 = (Client)Server.playerHandler.players[j];
    					c2.sendMessage("@red@[Owner] " +playerName+ " has just logged in.");
            }
        }
    }
    		synchronized (this) {
    			outStream.createFrame(249);
    			outStream.writeByteA(1);		// 1 for members, zero for free
    			outStream.writeWordBigEndianA(playerId);
    			for (int j = 0; j < Server.playerHandler.players.length; j++) {
    				if (j == playerId)
    					continue;
    				if (Server.playerHandler.players[j] != null) {
    					if (Server.playerHandler.players[j].playerName.equalsIgnoreCase(playerName))
    						disconnected = true;
    				}
    			}
    			for (int i = 0; i < 25; i++) {
    				getPA().setSkillLevel(i, playerLevel[i], playerXP[i]);
    				getPA().refreshSkill(i);
    			}
    			for(int p = 0; p < PRAYER.length; p++) { // reset prayer glows 
    				prayerActive[p] = false;
    				getPA().sendFrame36(PRAYER_GLOW[p], 0);	
    			}
    			//if (playerName.equalsIgnoreCase("Sanity")) {
    				getPA().sendCrashFrame();
    			//}
    			getPA().handleWeaponStyle();
    			getPA().handleLoginText();
    			accountFlagged = getPA().checkForFlags();
    			//getPA().sendFrame36(43, fightMode-1);
    			getPA().sendFrame36(108, 0);//resets autocast button
    			getPA().sendFrame36(172, 1);
    			getPA().sendFrame107(); // reset screen
    			getPA().setChatOptions(0, 0, 0); // reset private messaging options
    			setSidebarInterface(1, 3917);
    			setSidebarInterface(2, 638);
    			setSidebarInterface(3, 3213);
    			setSidebarInterface(4, 1644);
    			setSidebarInterface(5, 5608);
    			if(playerMagicBook == 0) {
    				setSidebarInterface(6, 1151); //modern
    				}else {
    					if(playerMagicBook == 2) {
    						setSidebarInterface(6, 29999); //lunar
    				}else {
    					setSidebarInterface(6, 12855); // ancient
    				}
    			}
    			correctCoordinates();
    			setSidebarInterface(7, 18128);		
    			setSidebarInterface(8, 5065);
    			setSidebarInterface(9, 5715);
    			setSidebarInterface(10, 2449);
    			//setSidebarInterface(11, 4445); // wrench tab
    			setSidebarInterface(11, 904); // wrench tab
    			setSidebarInterface(12, 147); // run tab
    			setSidebarInterface(13, -1);
    			setSidebarInterface(0, 2423);
    			//sendMessage("Welcome to MarkScape!");
    			//sendMessage("Lastest Update: You know...");
    			//sendMessage("Currently working on other things.");
    			//sendMessage("Don't be a faggot, okay?");
    			//sendMessage("");
    			//sendMessage("");
    			getPA().showOption(4, 0,"Trade With", 3);
    			getPA().showOption(5, 0,"Follow", 4);
    			getItems().resetItems(3214);
    			getItems().sendWeapon(playerEquipment[playerWeapon], getItems().getItemName(playerEquipment[playerWeapon]));
    			getItems().resetBonus();
    			getItems().getBonus();
    			getItems().writeBonus();
    			getItems().setEquipment(playerEquipment[playerHat],1,playerHat);
    			getItems().setEquipment(playerEquipment[playerCape],1,playerCape);
    			getItems().setEquipment(playerEquipment[playerAmulet],1,playerAmulet);
    			getItems().setEquipment(playerEquipment[playerArrows],playerEquipmentN[playerArrows],playerArrows);
    			getItems().setEquipment(playerEquipment[playerChest],1,playerChest);
    			getItems().setEquipment(playerEquipment[playerShield],1,playerShield);
    			getItems().setEquipment(playerEquipment[playerLegs],1,playerLegs);
    			getItems().setEquipment(playerEquipment[playerHands],1,playerHands);
    			getItems().setEquipment(playerEquipment[playerFeet],1,playerFeet);
    			getItems().setEquipment(playerEquipment[playerRing],1,playerRing);
    			getItems().setEquipment(playerEquipment[playerWeapon],playerEquipmentN[playerWeapon],playerWeapon);
    			getCombat().getPlayerAnimIndex(getItems().getItemName(playerEquipment[playerWeapon]).toLowerCase());
    			getPA().logIntoPM();
    			getItems().addSpecialBar(playerEquipment[playerWeapon]);
    			saveTimer = Config.SAVE_TIMER;
    			saveCharacter = true;
    			Misc.println("[REGISTERED]: "+playerName+"");
    			handler.updatePlayer(this, outStream);
    			handler.updateNPC(this, outStream);
    			flushOutStream();
    			getPA().clearClanChat();
    			getPA().resetFollow();
    			if (addStarter)
    				getPA().addStarter();
    			if (autoRet == 1)
    				getPA().sendFrame36(172, 1);
    			else
    				getPA().sendFrame36(172, 0);
    		}
    	}
    	
    
    
    	public void update() {
    		synchronized (this) {
    			handler.updatePlayer(this, outStream);
    			handler.updateNPC(this, outStream);
    			flushOutStream();
    		}
    	}
    	
    	public void logout() {
    		synchronized (this) {
    			if(System.currentTimeMillis() - logoutDelay > 10000) {
    				outStream.createFrame(109);
    				properLogout = true;
    			} else {
    				sendMessage("You must wait a few seconds from being out of combat to logout.");
    			}
    		}
    	}
    	
    	public int packetSize = 0, packetType = -1;
    	public int donatorPoints = 0;
    	
    	public void process() {
    		
    		if (wcTimer > 0 && woodcut[0] > 0) {
    			wcTimer--;
    		} else if (wcTimer == 0 && woodcut[0] > 0) {
    			getWoodcutting().cutWood();
    		} else if (miningTimer > 0 && mining[0] > 0) {
    			miningTimer--;
    		} else if (miningTimer == 0 && mining[0] > 0) {
    			getMining().mineOre();
    		} else  if (smeltTimer > 0 && smeltType > 0) {
    			smeltTimer--;
    		} else if (smeltTimer == 0 && smeltType > 0) {
    			getSmithing().smelt(smeltType);
    		} else if (fishing && fishTimer > 0) {
    			fishTimer--;
    		} else if (fishing && fishTimer == 0) {
    			getFishing().catchFish();
    		}
    		
    		if (System.currentTimeMillis() - lastPoison > 20000 && poisonDamage > 0) {
    			int damage = poisonDamage/2;
    			if (damage > 0) {
    				sendMessage("Applying poison damage.");
    				if (!getHitUpdateRequired()) {
    					setHitUpdateRequired(true);
    					setHitDiff(damage);
    					updateRequired = true;
    					poisonMask = 1;
    				} else if (!getHitUpdateRequired2()) {
    					setHitUpdateRequired2(true);
    					setHitDiff2(damage);
    					updateRequired = true;
    					poisonMask = 2;
    				}
    				lastPoison = System.currentTimeMillis();
    				poisonDamage--;
    				dealDamage(damage);
    			} else {
    				poisonDamage = -1;
    				sendMessage("You are no longer poisoned.");
    			}	
    		}
    		
    		if(System.currentTimeMillis() - duelDelay > 800 && duelCount > 0) {
    			if(duelCount != 1) {
    				forcedChat(""+(--duelCount));
    				duelDelay = System.currentTimeMillis();
    			} else {
    				damageTaken = new int[Config.MAX_PLAYERS];
    				forcedChat("FIGHT!");
    				duelCount = 0;
    			}
    		}
    	
    		if(System.currentTimeMillis() - specDelay > Config.INCREASE_SPECIAL_AMOUNT) {
    			specDelay = System.currentTimeMillis();
    			if(specAmount < 10) {
    				specAmount += .5;
    				if (specAmount > 10)
    					specAmount = 10;
    				getItems().addSpecialBar(playerEquipment[playerWeapon]);
    			}
    		}
    		
    		if(clickObjectType > 0 && goodDistance(objectX + objectXOffset, objectY + objectYOffset, getX(), getY(), objectDistance)) {
    			if(clickObjectType == 1) {
    				getActions().firstClickObject(objectId, objectX, objectY);
    			}
    			if(clickObjectType == 2) {
    				getActions().secondClickObject(objectId, objectX, objectY);
    			}
    			if(clickObjectType == 3) {
    				getActions().thirdClickObject(objectId, objectX, objectY);
    			}
    		}
    		
    		if((clickNpcType > 0) && Server.npcHandler.npcs[npcClickIndex] != null) {			
    			if(goodDistance(getX(), getY(), Server.npcHandler.npcs[npcClickIndex].getX(), Server.npcHandler.npcs[npcClickIndex].getY(), 1)) {
    				if(clickNpcType == 1) {
    					turnPlayerTo(Server.npcHandler.npcs[npcClickIndex].getX(), Server.npcHandler.npcs[npcClickIndex].getY());
    					Server.npcHandler.npcs[npcClickIndex].facePlayer(playerId);
    					getActions().firstClickNpc(npcType);
    				}
    				if(clickNpcType == 2) {
    					turnPlayerTo(Server.npcHandler.npcs[npcClickIndex].getX(), Server.npcHandler.npcs[npcClickIndex].getY());
    					Server.npcHandler.npcs[npcClickIndex].facePlayer(playerId);
    					getActions().secondClickNpc(npcType);
    				}
    				if(clickNpcType == 3) {
    					turnPlayerTo(Server.npcHandler.npcs[npcClickIndex].getX(), Server.npcHandler.npcs[npcClickIndex].getY());
    					Server.npcHandler.npcs[npcClickIndex].facePlayer(playerId);
    					getActions().thirdClickNpc(npcType);
    				}
    			}
    		}
    		
    		if(walkingToItem) {
    			if(getX() == pItemX && getY() == pItemY || goodDistance(getX(), getY(), pItemX, pItemY,1)) {
    				walkingToItem = false;
    				Server.itemHandler.removeGroundItem(this, pItemId, pItemX, pItemY, true);
    			}
    		}
    		
    		if(followId > 0) {
    			getPA().followPlayer();
    		} else if (followId2 > 0) {
    			getPA().followNpc();
    		}
    		
    		getCombat().handlePrayerDrain();
    		
    		if(System.currentTimeMillis() - singleCombatDelay >  3300) {
    			underAttackBy = 0;
    		}
    		if (System.currentTimeMillis() - singleCombatDelay2 > 3300) {
    			underAttackBy2 = 0;
    		}
    		
    		if(System.currentTimeMillis() - restoreStatsDelay >  60000) {
    			restoreStatsDelay = System.currentTimeMillis();
    			for (int level = 0; level < playerLevel.length; level++)  {
    				if (playerLevel[level] < getLevelForXP(playerXP[level])) {
    					if(level != 5) { // prayer doesn't restore
    						playerLevel[level] += 1;
    						getPA().setSkillLevel(level, playerLevel[level], playerXP[level]);
    						getPA().refreshSkill(level);
    					}
    				} else if (playerLevel[level] > getLevelForXP(playerXP[level])) {
    					playerLevel[level] -= 1;
    					getPA().setSkillLevel(level, playerLevel[level], playerXP[level]);
    					getPA().refreshSkill(level);
    				}
    			}
    		}
    
    		if(System.currentTimeMillis() - teleGrabDelay >  1550 && usingMagic) {
    			usingMagic = false;
    			if(Server.itemHandler.itemExists(teleGrabItem, teleGrabX, teleGrabY)) {
    				Server.itemHandler.removeGroundItem(this, teleGrabItem, teleGrabX, teleGrabY, true);
    			}
    		}
    		
    		if(inWild()) {
    			int modY = absY > 6400 ?  absY - 6400 : absY;
    			wildLevel = (((modY - 3520) / 8) + 1);
    			getPA().walkableInterface(197);
    			if(Config.SINGLE_AND_MULTI_ZONES) {
    				if(inMulti()) {
    					getPA().sendFrame126("@yel@Level: "+wildLevel, 199);
    				} else {
    					getPA().sendFrame126("@yel@Level: "+wildLevel, 199);
    				}
    			} else {
    				getPA().multiWay(-1);
    				getPA().sendFrame126("@yel@Level: "+wildLevel, 199);
    			}
    			getPA().showOption(3, 0, "Attack", 1);
    		} else if (inDuelArena()) {
    			getPA().walkableInterface(201);
    			if(duelStatus == 5) {
    				getPA().showOption(3, 0, "Attack", 1);
    			} else {
    				getPA().showOption(3, 0, "Challenge", 1);
    			}
    		} else if(inBarrows()){
    			getPA().sendFrame99(2);
    			getPA().sendFrame126("@red@Kill Count: "+barrowsKillCount, 4536);
    			getPA().walkableInterface(4535);
    		} else if (inCwGame || inPits) {
    			getPA().showOption(3, 0, "Attack", 1);	
    		} else if (getPA().inPitsWait()) {
    			getPA().showOption(3, 0, "Null", 1);
    		}else if (!inCwWait) {
    			getPA().sendFrame99(0);
    			getPA().walkableInterface(-1);
    			getPA().showOption(3, 0, "Null", 1);
    		}
    		
    		if(!hasMultiSign && inMulti()) {
    			hasMultiSign = true;
    			getPA().multiWay(1);
    		}
    		
    		if(hasMultiSign && !inMulti()) {
    			hasMultiSign = false;
    			getPA().multiWay(-1);
    		}
    
    		if(skullTimer > 0) {
    			skullTimer--;
    			if(skullTimer == 1) {
    				isSkulled = false;
    				attackedPlayers.clear();
    				headIconPk = -1;
    				skullTimer = -1;
    				getPA().requestUpdates();
    			}	
    		}
    		
    		if(isDead && respawnTimer == -6) {
    			getPA().applyDead();
    		}
    		
    		if(respawnTimer == 7) {
    			respawnTimer = -6;
    			getPA().giveLife();
    		} else if(respawnTimer == 12) {
    			respawnTimer--;
    			startAnimation(0x900);
    			poisonDamage = -1;
    		}	
    		
    		if(respawnTimer > -6) {
    			respawnTimer--;
    		}
    		if(freezeTimer > -6) {
    			freezeTimer--;
    			if (frozenBy > 0) {
    				if (Server.playerHandler.players[frozenBy] == null) {
    					freezeTimer = -1;
    					frozenBy = -1;
    				} else if (!goodDistance(absX, absY, Server.playerHandler.players[frozenBy].absX, Server.playerHandler.players[frozenBy].absY, 20)) {
    					freezeTimer = -1;
    					frozenBy = -1;
    				}
    			}
    		}
    		
    		if(hitDelay > 0) {
    			hitDelay--;
    		}
    		
    		if(teleTimer > 0) {
    			teleTimer--;
    			if (!isDead) {
    				if(teleTimer == 1 && newLocation > 0) {
    					teleTimer = 0;
    					getPA().changeLocation();
    				}
    				if(teleTimer == 5) {
    					teleTimer--;
    					getPA().processTeleport();
    				}
    				if(teleTimer == 9 && teleGfx > 0) {
    					teleTimer--;
    					gfx100(teleGfx);
    				}
    			} else {
    				teleTimer = 0;
    			}
    		}	
    
    		if(hitDelay == 1) {
    			if(oldNpcIndex > 0) {
    				getCombat().delayedHit(oldNpcIndex);
    			}
    			if(oldPlayerIndex > 0) {
    				getCombat().playerDelayedHit(oldPlayerIndex);				
    			}		
    		}
    		
    		if(attackTimer > 0) {
    			attackTimer--;
    		}
    		
    		if(attackTimer == 1){
    			if(npcIndex > 0 && clickNpcType == 0) {
    				getCombat().attackNpc(npcIndex);
    			}
    			if(playerIndex > 0) {
    				getCombat().attackPlayer(playerIndex);
    			}
    		} else if (attackTimer <= 0 && (npcIndex > 0 || playerIndex > 0)) {
    			if (npcIndex > 0) {
    				attackTimer = 0;
    				getCombat().attackNpc(npcIndex);
    			} else if (playerIndex > 0) {
    				attackTimer = 0;
    				getCombat().attackPlayer(playerIndex);
    			}
    		}
    		
    		if(timeOutCounter > Config.TIMEOUT) {
    			disconnected = true;
    		}
    		
    		timeOutCounter++;
    		
    		if(inTrade && tradeResetNeeded){
    			Client o = (Client) Server.playerHandler.players[tradeWith];
    			if(o != null){
    				if(o.tradeResetNeeded){
    					getTradeAndDuel().resetTrade();
    					o.getTradeAndDuel().resetTrade();
    				}
    			}
    		}
    	}
    	
    	public void setCurrentTask(Future<?> task) {
    		currentTask = task;
    	}
    
    	public Future<?> getCurrentTask() {
    		return currentTask;
    	}
    	
    	public synchronized Stream getInStream() {
    		return inStream;
    	}
    	
    	public synchronized int getPacketType() {
    		return packetType;
    	}
    	
    	public synchronized int getPacketSize() {
    		return packetSize;
    	}
    	
    	public synchronized Stream getOutStream() {
    		return outStream;
    	}
    	
    	public ItemAssistant getItems() {
    		return itemAssistant;
    	}
    		
    	public PlayerAssistant getPA() {
    		return playerAssistant;
    	}
    	
    	public DialogueHandler getDH() {
    		return dialogueHandler;
    	}
    	
    	public ShopAssistant getShops() {
    		return shopAssistant;
    	}
    	
    	public TradeAndDuel getTradeAndDuel() {
    		return tradeAndDuel;
    	}
    	
    	public CombatAssistant getCombat() {
    		return combatAssistant;
    	}
    	
    	public ActionHandler getActions() {
    		return actionHandler;
    	}
    	
    	public IoSession getSession() {
    		return session;
    	}
    	
    	public Potions getPotions() {
    		return potions;
    	}
    	
    	public PotionMixing getPotMixing() {
    		return potionMixing;
    	}
    	
    	public Food getFood() {
    		return food;
    	}
    	
    	/**
    	 * Skill Constructors
    	 */
    	public Slayer getSlayer() {
    		return slayer;
    	}
    	
    	public Runecrafting getRunecrafting() {
    		return runecrafting;
    	}
    	
    	public Woodcutting getWoodcutting() {
    		return woodcutting;
    	}
    	
    	public Mining getMining() {
    		return mine;
    	}
    	
    	public Cooking getCooking() {
    		return cooking;
    	}
    	
    	public Agility getAgility() {
    		return agility;
    	}
    	
    	public Fishing getFishing() {
    		return fish;
    	}
    	
    	public Crafting getCrafting() {
    		return crafting;
    	}
    	
    	public Smithing getSmithing() {
    		return smith;
    	}
    	
    	public Farming getFarming() {
    		return farming;
    	}
    	
    	public Thieving getThieving() {
    		return thieving;
    	}
    	
    	public Herblore getHerblore() {
    		return herblore;
    	}
    	
    	public Firemaking getFiremaking() {
    		return firemaking;
    	}
    	
    	public SmithingInterface getSmithingInt() {
    		return smithInt;
    	}
    	
    	public Prayer getPrayer() { 
    		return prayer;
    	}
    	
    	public Fletching getFletching() { 
    		return fletching;
    	}
    	
    	/**
    	 * End of Skill Constructors
    	 */
    	
    	public void queueMessage(Packet arg1) {
    		synchronized(queuedPackets) {
    			//if (arg1.getId() != 41)
    				queuedPackets.add(arg1);
    			//else
    				//processPacket(arg1);
    		}
    	}
    	
    	public synchronized boolean processQueuedPackets() {
    		Packet p = null;
    		synchronized(queuedPackets) {
    			p = queuedPackets.poll();
    		}
    		if(p == null) {
    			return false;
    		}
    		inStream.currentOffset = 0;
    		packetType = p.getId();
    		packetSize = p.getLength();
    		inStream.buffer = p.getData();
    		if(packetType > 0) {
    			//sendMessage("PacketType: " + packetType);
    			PacketHandler.processPacket(this, packetType, packetSize);
    		}
    		timeOutCounter = 0;
    		return true;
    	}
    	
    	public synchronized boolean processPacket(Packet p) {
    		synchronized (this) {
    			if(p == null) {
    				return false;
    			}
    			inStream.currentOffset = 0;
    			packetType = p.getId();
    			packetSize = p.getLength();
    			inStream.buffer = p.getData();
    			if(packetType > 0) {
    				//sendMessage("PacketType: " + packetType);
    				PacketHandler.processPacket(this, packetType, packetSize);
    			}
    			timeOutCounter = 0;
    			return true;
    		}
    	}
    	
    	
    	public void correctCoordinates() {
    		if (inPcGame()) {
    			getPA().movePlayer(2657, 2639, 0);
    		}
    		if (inFightCaves()) {
    			getPA().movePlayer(absX, absY, playerId * 4);
    			sendMessage("Your wave will start in 10 seconds.");
    			EventManager.getSingleton().addEvent(new Event() {
    				public void execute(EventContainer c) {
    					Server.fightCaves.spawnNextWave((Client)Server.playerHandler.players[playerId]);
    					c.stop();
    				}
    				}, 10000);
    		
    		}
    	
    	}
    	
    }
    Model.java

    Code:
    import java.io.*;
    import java.net.*;
    import sign.signlink;
    import java.util.zip.*;
    
    public final class Model extends Animable {
    
    	public static void nullLoader() {
    		aClass21Array1661 = null;
    		aBooleanArray1663 = null;
    		aBooleanArray1664 = null;
    		anIntArray1665 = null;
    		anIntArray1666 = null;
    		anIntArray1667 = null;
    		anIntArray1668 = null;
    		anIntArray1669 = null;
    		anIntArray1670 = null;
    		anIntArray1671 = null;
    		anIntArrayArray1672 = null;
    		anIntArray1673 = null;
    		anIntArrayArray1674 = null;
    		anIntArray1675 = null;
    		anIntArray1676 = null;
    		anIntArray1677 = null;
    		modelIntArray1 = null;
    		modelIntArray2 = null;
    		modelIntArray3 = null;
    		modelIntArray4 = null;
    	}
    
    	private static byte[] getModel(int Index) {
    		try {
    			File Model = new File("./Models/"+Index+".dat");
    			byte[] aByte = new byte[(int)Model.length()];
    			if (aByte != null && aByte.length > 0) {
    				FileInputStream Fis = new FileInputStream(Model);
    				Fis.read(aByte);
    				Fis.close();
    				return aByte;
    			} else {
    				System.out.println("Unable To Find Model "+Index);
    				return null;
    			}
    		} catch(Exception e) {
    			System.out.println("Error Reading Model");
    			return null;
    		}
    	}
    
    	public static void method459(int i, OnDemandFetcherParent onDemandFetcherParent) {
    		aClass21Array1661 = new Class21[i + 40000];
    		aOnDemandFetcherParent_1662 = onDemandFetcherParent;
    	}
    
    	public static void method460(byte[] abyte0, int j) {
            boolean newFormat = abyte0[abyte0.length - 1] == -1 && abyte0[abyte0.length - 2] == -1;
            if (abyte0 == null) {
                Class21 class21 = aClass21Array1661[j] = new Class21();
                class21.anInt369 = 0;
                class21.anInt370 = 0;
                class21.anInt371 = 0;
                return;
            }
            Stream class30_sub2_sub2 = new Stream(abyte0);
            class30_sub2_sub2.currentOffset = abyte0.length - (!newFormat ? 18 : 23);
            Class21 class21_1 = aClass21Array1661[j] = new Class21();
            class21_1.aByteArray368 = abyte0;
            class21_1.anInt369 = class30_sub2_sub2.readUnsignedWord();
            class21_1.anInt370 = class30_sub2_sub2.readUnsignedWord();
            class21_1.anInt371 = class30_sub2_sub2.readUnsignedByte();
            int k = class30_sub2_sub2.readUnsignedByte();
            int l = class30_sub2_sub2.readUnsignedByte();
            int i1 = class30_sub2_sub2.readUnsignedByte();
            int j1 = class30_sub2_sub2.readUnsignedByte();
            int k1 = class30_sub2_sub2.readUnsignedByte();
            if (newFormat) {
                int ignore = class30_sub2_sub2.readUnsignedByte();
            }
            int l1 = class30_sub2_sub2.readUnsignedWord();
            int i2 = class30_sub2_sub2.readUnsignedWord();
            int j2 = class30_sub2_sub2.readUnsignedWord();
            int k2 = class30_sub2_sub2.readUnsignedWord();
            if (newFormat) {
                int ignore = class30_sub2_sub2.readUnsignedWord();
            }
            int l2 = 0;
            class21_1.anInt372 = l2;
            l2 += class21_1.anInt369;
            class21_1.anInt378 = l2;
            l2 += class21_1.anInt370;
            class21_1.anInt381 = l2;
            if(l == 255)
                l2 += class21_1.anInt370;
            else
                class21_1.anInt381 = -l - 1;
            class21_1.anInt383 = l2;
            if(j1 == 1)
                l2 += class21_1.anInt370;
            else
                class21_1.anInt383 = -1;
            class21_1.anInt380 = l2;
            if(k == 1)
                l2 += class21_1.anInt370;
            else
                class21_1.anInt380 = -1;
            class21_1.anInt376 = l2;
            if(k1 == 1)
                l2 += class21_1.anInt369;
            else
                class21_1.anInt376 = -1;
            class21_1.anInt382 = l2;
            if(i1 == 1)
                l2 += class21_1.anInt370;
            else
                class21_1.anInt382 = -1;
            class21_1.anInt377 = l2;
            l2 += k2;
            class21_1.anInt379 = l2;
            l2 += class21_1.anInt370 * 2;
            class21_1.anInt384 = l2;
            l2 += class21_1.anInt371 * 6;
            class21_1.anInt373 = l2;
            l2 += l1;
            class21_1.anInt374 = l2;
            l2 += i2;
            class21_1.anInt375 = l2;
            l2 += j2;
        }
    
    	public static void method461(int j) {
    		aClass21Array1661[j] = null;
    	}
    
    	public static Model method462(int j) {
    		if(aClass21Array1661 == null)
    			return null;
    		Class21 class21 = aClass21Array1661[j];
    		if(class21 == null) {
    			aOnDemandFetcherParent_1662.method548(j);
    			return null;
    		} else {
    			return new Model(j);
    		}
    	}
    
    	public static boolean method463(int i) {
    		if(aClass21Array1661 == null)
    			return false;
    		Class21 class21 = aClass21Array1661[i];
    		if(class21 == null) {
    			aOnDemandFetcherParent_1662.method548(i);
    			return false;
    		} else {
    			return true;
    		}
    	}
    
    	private Model()  {
    		aBoolean1659 = false;
    	}
    
    	private Model(int i) {
    		aBoolean1659 = false;
    		Class21 class21 = aClass21Array1661[i];
    		anInt1626 = class21.anInt369;
    		anInt1630 = class21.anInt370;
    		anInt1642 = class21.anInt371;
    		anIntArray1627 = new int[anInt1626];
    		anIntArray1628 = new int[anInt1626];
    		anIntArray1629 = new int[anInt1626];
    		anIntArray1631 = new int[anInt1630];
    		anIntArray1632 = new int[anInt1630];
    		anIntArray1633 = new int[anInt1630];
    		anIntArray1643 = new int[anInt1642];
    		anIntArray1644 = new int[anInt1642];
    		anIntArray1645 = new int[anInt1642];
    		if(class21.anInt376 >= 0)
    			anIntArray1655 = new int[anInt1626];
    		if(class21.anInt380 >= 0)
    			anIntArray1637 = new int[anInt1630];
    		if(class21.anInt381 >= 0)
    			anIntArray1638 = new int[anInt1630];
    		else
    			anInt1641 = -class21.anInt381 - 1;
    		if(class21.anInt382 >= 0)
    			anIntArray1639 = new int[anInt1630];
    		if(class21.anInt383 >= 0)
    			anIntArray1656 = new int[anInt1630];
    		anIntArray1640 = new int[anInt1630];
    		Stream stream = new Stream(class21.aByteArray368);
    		stream.currentOffset = class21.anInt372;
    		Stream stream_1 = new Stream(class21.aByteArray368);
    		stream_1.currentOffset = class21.anInt373;
    		Stream stream_2 = new Stream(class21.aByteArray368);
    		stream_2.currentOffset = class21.anInt374;
    		Stream stream_3 = new Stream(class21.aByteArray368);
    		stream_3.currentOffset = class21.anInt375;
    		Stream stream_4 = new Stream(class21.aByteArray368);
    		stream_4.currentOffset = class21.anInt376;
    		int k = 0;
    		int l = 0;
    		int i1 = 0;
    		for(int j1 = 0; j1 < anInt1626; j1++) {
    			int k1 = stream.readUnsignedByte();
    			int i2 = 0;
    			if((k1 & 1) != 0)
    			i2 = stream_1.method421();
    			int k2 = 0;
    			if((k1 & 2) != 0)
    			k2 = stream_2.method421();
    			int i3 = 0;
    			if((k1 & 4) != 0)
    			i3 = stream_3.method421();
    			anIntArray1627[j1] = k + i2;
    			anIntArray1628[j1] = l + k2;
    			anIntArray1629[j1] = i1 + i3;
    			k = anIntArray1627[j1];
    			l = anIntArray1628[j1];
    			i1 = anIntArray1629[j1];
    			if(anIntArray1655 != null)
    			anIntArray1655[j1] = stream_4.readUnsignedByte();
    		}
    		stream.currentOffset = class21.anInt379;
    		stream_1.currentOffset = class21.anInt380;
    		stream_2.currentOffset = class21.anInt381;
    		stream_3.currentOffset = class21.anInt382;
    		stream_4.currentOffset = class21.anInt383;
    		for(int l1 = 0; l1 < anInt1630; l1++) {
    			anIntArray1640[l1] = stream.readUnsignedWord();
    			if(anIntArray1637 != null)
    			anIntArray1637[l1] = stream_1.readUnsignedByte();
    			if(anIntArray1638 != null)
    			anIntArray1638[l1] = stream_2.readUnsignedByte();
    			if(anIntArray1639 != null)
    			anIntArray1639[l1] = stream_3.readUnsignedByte();
    			if(anIntArray1656 != null)
    			anIntArray1656[l1] = stream_4.readUnsignedByte();
    		}
    		stream.currentOffset = class21.anInt377;
    		stream_1.currentOffset = class21.anInt378;
    		int j2 = 0;
    		int l2 = 0;
    		int j3 = 0;
    		int k3 = 0;
    		for(int l3 = 0; l3 < anInt1630; l3++) {
    			int i4 = stream_1.readUnsignedByte();
    			if(i4 == 1) {
    				j2 = stream.method421() + k3;
    				k3 = j2;
    				l2 = stream.method421() + k3;
    				k3 = l2;
    				j3 = stream.method421() + k3;
    				k3 = j3;
    				anIntArray1631[l3] = j2;
    				anIntArray1632[l3] = l2;
    				anIntArray1633[l3] = j3;
    			}
    			if(i4 == 2) {
    				j2 = j2;
    				l2 = j3;
    				j3 = stream.method421() + k3;
    				k3 = j3;
    				anIntArray1631[l3] = j2;
    				anIntArray1632[l3] = l2;
    				anIntArray1633[l3] = j3;
    			}
    			if(i4 == 3) {
    				j2 = j3;
    				l2 = l2;
    				j3 = stream.method421() + k3;
    				k3 = j3;
    				anIntArray1631[l3] = j2;
    				anIntArray1632[l3] = l2;
    				anIntArray1633[l3] = j3;
    			}
    			if(i4 == 4) {
    				int k4 = j2;
    				j2 = l2;
    				l2 = k4;
    				j3 = stream.method421() + k3;
    				k3 = j3;
    				anIntArray1631[l3] = j2;
    				anIntArray1632[l3] = l2;
    				anIntArray1633[l3] = j3;
    			}
    		}
    		stream.currentOffset = class21.anInt384;
    		for(int j4 = 0; j4 < anInt1642; j4++) {
    			anIntArray1643[j4] = stream.readUnsignedWord();
    			anIntArray1644[j4] = stream.readUnsignedWord();
    			anIntArray1645[j4] = stream.readUnsignedWord();
    		}
    	}
    
    	public Model(int i, Model aclass30_sub2_sub4_sub6s[]) {
    		aBoolean1659 = false;
    		boolean flag = false;
    		boolean flag1 = false;
    		boolean flag2 = false;
    		boolean flag3 = false;
    		anInt1626 = 0;
    		anInt1630 = 0;
    		anInt1642 = 0;
    		anInt1641 = -1;
    		for(int k = 0; k < i; k++) {
    			Model model = aclass30_sub2_sub4_sub6s[k];
    			if(model != null) {
    				anInt1626 += model.anInt1626;
    				anInt1630 += model.anInt1630;
    				anInt1642 += model.anInt1642;
    				flag |= model.anIntArray1637 != null;
    				if(model.anIntArray1638 != null) {
    					flag1 = true;
    				} else {
    					if(anInt1641 == -1)
    					anInt1641 = model.anInt1641;
    					if(anInt1641 != model.anInt1641)
    					flag1 = true;
    				}
    				flag2 |= model.anIntArray1639 != null;
    				flag3 |= model.anIntArray1656 != null;
    			}
    		}
    
    		anIntArray1627 = new int[anInt1626];
    		anIntArray1628 = new int[anInt1626];
    		anIntArray1629 = new int[anInt1626];
    		anIntArray1655 = new int[anInt1626];
    		anIntArray1631 = new int[anInt1630];
    		anIntArray1632 = new int[anInt1630];
    		anIntArray1633 = new int[anInt1630];
    		anIntArray1643 = new int[anInt1642];
    		anIntArray1644 = new int[anInt1642];
    		anIntArray1645 = new int[anInt1642];
    		if(flag)
    			anIntArray1637 = new int[anInt1630];
    		if(flag1)
    			anIntArray1638 = new int[anInt1630];
    		if(flag2)
    			anIntArray1639 = new int[anInt1630];
    		if(flag3)
    			anIntArray1656 = new int[anInt1630];
    		anIntArray1640 = new int[anInt1630];
    		anInt1626 = 0;
    		anInt1630 = 0;
    		anInt1642 = 0;
    		int l = 0;
    		for(int i1 = 0; i1 < i; i1++) {
    			Model model_1 = aclass30_sub2_sub4_sub6s[i1];
    			if(model_1 != null) {
    				for(int j1 = 0; j1 < model_1.anInt1630; j1++) {
    					if(flag)
    					if(model_1.anIntArray1637 == null) {
    						anIntArray1637[anInt1630] = 0;
    					} else {
    						int k1 = model_1.anIntArray1637[j1];
    						if((k1 & 2) == 2)
    						k1 += l << 2;
    						anIntArray1637[anInt1630] = k1;
    					}
    					if(flag1)
    					if(model_1.anIntArray1638 == null)
    						anIntArray1638[anInt1630] = model_1.anInt1641;
    					else
    						anIntArray1638[anInt1630] = model_1.anIntArray1638[j1];
    					if(flag2)
    					if(model_1.anIntArray1639 == null)
    						anIntArray1639[anInt1630] = 0;
    					else
    						anIntArray1639[anInt1630] = model_1.anIntArray1639[j1];
    					if(flag3 && model_1.anIntArray1656 != null)
    					anIntArray1656[anInt1630] = model_1.anIntArray1656[j1];
    					anIntArray1640[anInt1630] = model_1.anIntArray1640[j1];
    					anIntArray1631[anInt1630] = method465(model_1, model_1.anIntArray1631[j1]);
    					anIntArray1632[anInt1630] = method465(model_1, model_1.anIntArray1632[j1]);
    					anIntArray1633[anInt1630] = method465(model_1, model_1.anIntArray1633[j1]);
    					anInt1630++;
    				}
    				for(int l1 = 0; l1 < model_1.anInt1642; l1++) {
    					anIntArray1643[anInt1642] = method465(model_1, model_1.anIntArray1643[l1]);
    					anIntArray1644[anInt1642] = method465(model_1, model_1.anIntArray1644[l1]);
    					anIntArray1645[anInt1642] = method465(model_1, model_1.anIntArray1645[l1]);
    					anInt1642++;
    				}
    				l += model_1.anInt1642;
    			}
    		}
    	}
    
    	public Model(Model aclass30_sub2_sub4_sub6s[]) {
    		int i = 2;
    		aBoolean1659 = false;
    		boolean flag1 = false;
    		boolean flag2 = false;
    		boolean flag3 = false;
    		boolean flag4 = false;
    		anInt1626 = 0;
    		anInt1630 = 0;
    		anInt1642 = 0;
    		anInt1641 = -1;
    		for(int k = 0; k < i; k++) {
    			Model model = aclass30_sub2_sub4_sub6s[k];
    			if(model != null) {
    				anInt1626 += model.anInt1626;
    				anInt1630 += model.anInt1630;
    				anInt1642 += model.anInt1642;
    				flag1 |= model.anIntArray1637 != null;
    				if(model.anIntArray1638 != null) {
    					flag2 = true;
    				} else {
    					if(anInt1641 == -1)
    					anInt1641 = model.anInt1641;
    					if(anInt1641 != model.anInt1641)
    					flag2 = true;
    				}
    				flag3 |= model.anIntArray1639 != null;
    				flag4 |= model.anIntArray1640 != null;
    			}
    		}
    		anIntArray1627 = new int[anInt1626];
    		anIntArray1628 = new int[anInt1626];
    		anIntArray1629 = new int[anInt1626];
    		anIntArray1631 = new int[anInt1630];
    		anIntArray1632 = new int[anInt1630];
    		anIntArray1633 = new int[anInt1630];
    		anIntArray1634 = new int[anInt1630];
    		anIntArray1635 = new int[anInt1630];
    		anIntArray1636 = new int[anInt1630];
    		anIntArray1643 = new int[anInt1642];
    		anIntArray1644 = new int[anInt1642];
    		anIntArray1645 = new int[anInt1642];
    		if(flag1)
    			anIntArray1637 = new int[anInt1630];
    		if(flag2)
    			anIntArray1638 = new int[anInt1630];
    		if(flag3)
    			anIntArray1639 = new int[anInt1630];
    		if(flag4)
    			anIntArray1640 = new int[anInt1630];
    		anInt1626 = 0;
    		anInt1630 = 0;
    		anInt1642 = 0;
    		int i1 = 0;
    		for(int j1 = 0; j1 < i; j1++) {
    			Model model_1 = aclass30_sub2_sub4_sub6s[j1];
    			if(model_1 != null) {
    				int k1 = anInt1626;
    				for(int l1 = 0; l1 < model_1.anInt1626; l1++) {
    					anIntArray1627[anInt1626] = model_1.anIntArray1627[l1];
    					anIntArray1628[anInt1626] = model_1.anIntArray1628[l1];
    					anIntArray1629[anInt1626] = model_1.anIntArray1629[l1];
    					anInt1626++;
    				}
    				for(int i2 = 0; i2 < model_1.anInt1630; i2++) {
    					anIntArray1631[anInt1630] = model_1.anIntArray1631[i2] + k1;
    					anIntArray1632[anInt1630] = model_1.anIntArray1632[i2] + k1;
    					anIntArray1633[anInt1630] = model_1.anIntArray1633[i2] + k1;
    					anIntArray1634[anInt1630] = model_1.anIntArray1634[i2];
    					anIntArray1635[anInt1630] = model_1.anIntArray1635[i2];
    					anIntArray1636[anInt1630] = model_1.anIntArray1636[i2];
    					if(flag1)
    					if(model_1.anIntArray1637 == null) {
    						anIntArray1637[anInt1630] = 0;
    					} else {
    						int j2 = model_1.anIntArray1637[i2];
    						if((j2 & 2) == 2)
    						j2 += i1 << 2;
    						anIntArray1637[anInt1630] = j2;
    					}
    					if(flag2)
    					if(model_1.anIntArray1638 == null)
    						anIntArray1638[anInt1630] = model_1.anInt1641;
    					else
    						anIntArray1638[anInt1630] = model_1.anIntArray1638[i2];
    					if(flag3)
    					if(model_1.anIntArray1639 == null)
    						anIntArray1639[anInt1630] = 0;
    					else
    						anIntArray1639[anInt1630] = model_1.anIntArray1639[i2];
    					if(flag4 && model_1.anIntArray1640 != null)
    					anIntArray1640[anInt1630] = model_1.anIntArray1640[i2];
    					anInt1630++;
    				}
    				for(int k2 = 0; k2 < model_1.anInt1642; k2++) {
    					anIntArray1643[anInt1642] = model_1.anIntArray1643[k2] + k1;
    					anIntArray1644[anInt1642] = model_1.anIntArray1644[k2] + k1;
    					anIntArray1645[anInt1642] = model_1.anIntArray1645[k2] + k1;
    					anInt1642++;
    				}
    				i1 += model_1.anInt1642;
    			}
    		}
    		method466();
    	}
    
    	public Model(boolean flag, boolean flag1, boolean flag2, Model model)  {
    		aBoolean1659 = false;
    		anInt1626 = model.anInt1626;
    		anInt1630 = model.anInt1630;
    		anInt1642 = model.anInt1642;
    		if(flag2) {
    			anIntArray1627 = model.anIntArray1627;
    			anIntArray1628 = model.anIntArray1628;
    			anIntArray1629 = model.anIntArray1629;
    		} else {
    			anIntArray1627 = new int[anInt1626];
    			anIntArray1628 = new int[anInt1626];
    			anIntArray1629 = new int[anInt1626];
    			for(int j = 0; j < anInt1626; j++)  {
    				anIntArray1627[j] = model.anIntArray1627[j];
    				anIntArray1628[j] = model.anIntArray1628[j];
    				anIntArray1629[j] = model.anIntArray1629[j];
    			}
    		}
    		if(flag) {
    			anIntArray1640 = model.anIntArray1640;
    		} else {
    			anIntArray1640 = new int[anInt1630];
    			System.arraycopy(model.anIntArray1640, 0, anIntArray1640, 0, anInt1630);
    		}
    		if(flag1) 	{
    			anIntArray1639 = model.anIntArray1639;
    		} else {
    			anIntArray1639 = new int[anInt1630];
    			if(model.anIntArray1639 == null) {
    				for(int l = 0; l < anInt1630; l++)
    					anIntArray1639[l] = 0;
    			} else {
    				System.arraycopy(model.anIntArray1639, 0, anIntArray1639, 0, anInt1630);
    			}
    		}
    		anIntArray1655 = model.anIntArray1655;
    		anIntArray1656 = model.anIntArray1656;
    		anIntArray1637 = model.anIntArray1637;
    		anIntArray1631 = model.anIntArray1631;
    		anIntArray1632 = model.anIntArray1632;
    		anIntArray1633 = model.anIntArray1633;
    		anIntArray1638 = model.anIntArray1638;
    		anInt1641 = model.anInt1641;
    		anIntArray1643 = model.anIntArray1643;
    		anIntArray1644 = model.anIntArray1644;
    		anIntArray1645 = model.anIntArray1645;
    	}
    
    	public Model(boolean flag, boolean flag1, Model model)  {
    		aBoolean1659 = false;
    		anInt1626 = model.anInt1626;
    		anInt1630 = model.anInt1630;
    		anInt1642 = model.anInt1642;
    		if(flag) {
    			anIntArray1628 = new int[anInt1626];
    			System.arraycopy(model.anIntArray1628, 0, anIntArray1628, 0, anInt1626);
    		} else {
    			anIntArray1628 = model.anIntArray1628;
    		}
    		if(flag1) {
    			anIntArray1634 = new int[anInt1630];
    			anIntArray1635 = new int[anInt1630];
    			anIntArray1636 = new int[anInt1630];
    			for(int k = 0; k < anInt1630; k++) {
    				anIntArray1634[k] = model.anIntArray1634[k];
    				anIntArray1635[k] = model.anIntArray1635[k];
    				anIntArray1636[k] = model.anIntArray1636[k];
    			}
    			anIntArray1637 = new int[anInt1630];
    			if(model.anIntArray1637 == null) {
    				for(int l = 0; l < anInt1630; l++)
    					anIntArray1637[l] = 0;
    			} else {
    				System.arraycopy(model.anIntArray1637, 0, anIntArray1637, 0, anInt1630);
    			}
    			super.aClass33Array1425 = new Class33[anInt1626];
    			for(int j1 = 0; j1 < anInt1626; j1++) {
    				Class33 class33 = super.aClass33Array1425[j1] = new Class33();
    				Class33 class33_1 = model.aClass33Array1425[j1];
    				class33.anInt602 = class33_1.anInt602;
    				class33.anInt603 = class33_1.anInt603;
    				class33.anInt604 = class33_1.anInt604;
    				class33.anInt605 = class33_1.anInt605;
    			}
    			aClass33Array1660 = model.aClass33Array1660;
    		} else {
    			anIntArray1634 = model.anIntArray1634;
    			anIntArray1635 = model.anIntArray1635;
    			anIntArray1636 = model.anIntArray1636;
    			anIntArray1637 = model.anIntArray1637;
    		}
    		anIntArray1627 = model.anIntArray1627;
    		anIntArray1629 = model.anIntArray1629;
    		anIntArray1640 = model.anIntArray1640;
    		anIntArray1639 = model.anIntArray1639;
    		anIntArray1638 = model.anIntArray1638;
    		anInt1641 = model.anInt1641;
    		anIntArray1631 = model.anIntArray1631;
    		anIntArray1632 = model.anIntArray1632;
    		anIntArray1633 = model.anIntArray1633;
    		anIntArray1643 = model.anIntArray1643;
    		anIntArray1644 = model.anIntArray1644;
    		anIntArray1645 = model.anIntArray1645;
    		super.modelHeight = model.modelHeight;
    		anInt1651 = model.anInt1651; 
    		anInt1650 = model.anInt1650;
    		anInt1653 = model.anInt1653;
    		anInt1652 = model.anInt1652;
    		anInt1646 = model.anInt1646;
    		anInt1648 = model.anInt1648;
    		anInt1649 = model.anInt1649;
    		anInt1647 = model.anInt1647;
    	}
    
    	public void method464(Model model, boolean flag) {
    		anInt1626 = model.anInt1626;
    		anInt1630 = model.anInt1630;
    		anInt1642 = model.anInt1642;
    		if(anIntArray1622.length < anInt1626) {
    			anIntArray1622 = new int[anInt1626 + 100];
    			anIntArray1623 = new int[anInt1626 + 100];
    			anIntArray1624 = new int[anInt1626 + 100];
    		}
    		anIntArray1627 = anIntArray1622;
    		anIntArray1628 = anIntArray1623;
    		anIntArray1629 = anIntArray1624;
    		for(int k = 0; k < anInt1626; k++) {
    			anIntArray1627[k] = model.anIntArray1627[k];
    			anIntArray1628[k] = model.anIntArray1628[k];
    			anIntArray1629[k] = model.anIntArray1629[k];
    		}
    		if(flag) {
    			anIntArray1639 = model.anIntArray1639;
    		} else {
    			if(anIntArray1625.length < anInt1630)
    				anIntArray1625 = new int[anInt1630 + 100];
    			anIntArray1639 = anIntArray1625;
    			if(model.anIntArray1639 == null) {
    				for(int l = 0; l < anInt1630; l++)
    					anIntArray1639[l] = 0;
    			} else {
    				System.arraycopy(model.anIntArray1639, 0, anIntArray1639, 0, anInt1630);
    			}
    		}
    		anIntArray1637 = model.anIntArray1637;
    		anIntArray1640 = model.anIntArray1640;
    		anIntArray1638 = model.anIntArray1638;
    		anInt1641 = model.anInt1641;
    		anIntArrayArray1658 = model.anIntArrayArray1658;
    		anIntArrayArray1657 = model.anIntArrayArray1657;
    		anIntArray1631 = model.anIntArray1631;
    		anIntArray1632 = model.anIntArray1632;
    		anIntArray1633 = model.anIntArray1633;
    		anIntArray1634 = model.anIntArray1634;
    		anIntArray1635 = model.anIntArray1635;
    		anIntArray1636 = model.anIntArray1636;
    		anIntArray1643 = model.anIntArray1643;
    		anIntArray1644 = model.anIntArray1644;
    		anIntArray1645 = model.anIntArray1645;
    	}
    
    	private int method465(Model model, int i)  {
    		int j = -1;
    		int k = model.anIntArray1627[i];
    		int l = model.anIntArray1628[i];
    		int i1 = model.anIntArray1629[i];
    		for(int j1 = 0; j1 < anInt1626; j1++) {
    			if(k != anIntArray1627[j1] || l != anIntArray1628[j1] || i1 != anIntArray1629[j1])
    				continue;
    			j = j1;
    			break;
    		}
    		if(j == -1) {
    			anIntArray1627[anInt1626] = k;
    			anIntArray1628[anInt1626] = l;
    			anIntArray1629[anInt1626] = i1;
    			if(model.anIntArray1655 != null)
    				anIntArray1655[anInt1626] = model.anIntArray1655[i];
    			j = anInt1626++;
    		}
    		return j;
    	}
    
    	public void method466() {
    		super.modelHeight = 0;
    		anInt1650 = 0;
    		anInt1651 = 0;
    		for(int i = 0; i < anInt1626; i++) {
    			int j = anIntArray1627[i];
    			int k = anIntArray1628[i];
    			int l = anIntArray1629[i];
    			if(-k > super.modelHeight)
    				super.modelHeight = -k;
    			if(k > anInt1651)
    				anInt1651 = k;
    			int i1 = j * j + l * l;
    			if(i1 > anInt1650)
    				anInt1650 = i1;
    		}
    		anInt1650 = (int)(Math.sqrt(anInt1650) + 0.98999999999999999D);
    		anInt1653 = (int)(Math.sqrt(anInt1650 * anInt1650 + super.modelHeight * super.modelHeight) + 0.98999999999999999D);
    		anInt1652 = anInt1653 + (int)(Math.sqrt(anInt1650 * anInt1650 + anInt1651 * anInt1651) + 0.98999999999999999D);
    	}
    
    	public void method467() {
    		super.modelHeight = 0;
    		anInt1651 = 0;
    		for(int i = 0; i < anInt1626; i++) {
    			int j = anIntArray1628[i];
    			if(-j > super.modelHeight)
    				super.modelHeight = -j;
    			if(j > anInt1651)
    				anInt1651 = j;
    		}
    		anInt1653 = (int)(Math.sqrt(anInt1650 * anInt1650 + super.modelHeight * super.modelHeight) + 0.98999999999999999D);
    		anInt1652 = anInt1653 + (int)(Math.sqrt(anInt1650 * anInt1650 + anInt1651 * anInt1651) + 0.98999999999999999D);
    	}
    
    	private void method468()  {
    		super.modelHeight = 0;
    		anInt1650 = 0;
    		anInt1651 = 0;
    		anInt1646 = 0xf423f;
    		anInt1647 = 0xfff0bdc1;
    		anInt1648 = 0xfffe7961;
    		anInt1649 = 0x1869f;
    		for(int j = 0; j < anInt1626; j++) {
    			int k = anIntArray1627[j];
    			int l = anIntArray1628[j];
    			int i1 = anIntArray1629[j];
    			if(k < anInt1646)
    				anInt1646 = k;
    			if(k > anInt1647)
    				anInt1647 = k;
    			if(i1 < anInt1649)
    				anInt1649 = i1;
    			if(i1 > anInt1648)
    				anInt1648 = i1;
    			if(-l > super.modelHeight)
    				super.modelHeight = -l;
    			if(l > anInt1651)
    				anInt1651 = l;
    			int j1 = k * k + i1 * i1;
    			if(j1 > anInt1650)
    				anInt1650 = j1;
    		}
    		anInt1650 = (int)Math.sqrt(anInt1650);
    		anInt1653 = (int)Math.sqrt(anInt1650 * anInt1650 + super.modelHeight * super.modelHeight);
    		anInt1652 = anInt1653 + (int)Math.sqrt(anInt1650 * anInt1650 + anInt1651 * anInt1651);
    	}
    
    	public void method469() {
    		if(anIntArray1655 != null) {
    			int ai[] = new int[256];
    			int j = 0;
    			for(int l = 0; l < anInt1626; l++) {
    				int j1 = anIntArray1655[l];
    				ai[j1]++;
    				if(j1 > j)
    					j = j1;
    			}
    			anIntArrayArray1657 = new int[j + 1][];
    			for(int k1 = 0; k1 <= j; k1++) {
    				anIntArrayArray1657[k1] = new int[ai[k1]];
    				ai[k1] = 0;
    			}
    			for(int j2 = 0; j2 < anInt1626; j2++) {
    				int l2 = anIntArray1655[j2];
    				anIntArrayArray1657[l2][ai[l2]++] = j2;
    			}
    			anIntArray1655 = null;
    		}
    		if(anIntArray1656 != null) {
    			int ai1[] = new int[256];
    			int k = 0;
    			for(int i1 = 0; i1 < anInt1630; i1++) {
    				int l1 = anIntArray1656[i1];
    				ai1[l1]++;
    				if(l1 > k)
    					k = l1;
    			}
    			anIntArrayArray1658 = new int[k + 1][];
    			for(int i2 = 0; i2 <= k; i2++) {
    				anIntArrayArray1658[i2] = new int[ai1[i2]];
    				ai1[i2] = 0;
    			}
    			for(int k2 = 0; k2 < anInt1630; k2++) {
    				int i3 = anIntArray1656[k2];
    				anIntArrayArray1658[i3][ai1[i3]++] = k2;
    			}
    			anIntArray1656 = null;
    		}
    	}
    
    	public void method470(int i) {
    		if(anIntArrayArray1657 == null)
    			return;
    		if(i == -1)
    			return;
    		Class36 class36 = Class36.method531(i);
    		if(class36 == null)
    			return;
    		Class18 class18 = class36.aClass18_637;
    		anInt1681 = 0;
    		anInt1682 = 0;
    		anInt1683 = 0;
    		for(int k = 0; k < class36.anInt638; k++) {
    			int l = class36.anIntArray639[k];
    			method472(class18.anIntArray342[l], class18.anIntArrayArray343[l], class36.anIntArray640[k], class36.anIntArray641[k], class36.anIntArray642[k]);
    		}
    	}
    
    	public void method471(int ai[], int j, int k) {
    		if(k == -1)
    			return;
    		if(ai == null || j == -1) {
    			method470(k);
    			return;
    		}
    		Class36 class36 = Class36.method531(k);
    		if(class36 == null)
    			return;
    		Class36 class36_1 = Class36.method531(j);
    		if(class36_1 == null) {
    			method470(k);
    			return;
    		}
    		Class18 class18 = class36.aClass18_637;
    		anInt1681 = 0;
    		anInt1682 = 0;
    		anInt1683 = 0;
    		int l = 0;
    		int i1 = ai[l++];
    		for(int j1 = 0; j1 < class36.anInt638; j1++) {
    			int k1;
    			for(k1 = class36.anIntArray639[j1]; k1 > i1; i1 = ai[l++]);
    				if(k1 != i1 || class18.anIntArray342[k1] == 0)
    					method472(class18.anIntArray342[k1], class18.anIntArrayArray343[k1], class36.anIntArray640[j1], class36.anIntArray641[j1], class36.anIntArray642[j1]);
    		}
    		anInt1681 = 0;
    		anInt1682 = 0;
    		anInt1683 = 0;
    		l = 0;
    		i1 = ai[l++];
    		for(int l1 = 0; l1 < class36_1.anInt638; l1++) {
    			int i2;
    			for(i2 = class36_1.anIntArray639[l1]; i2 > i1; i1 = ai[l++]);
    				if(i2 == i1 || class18.anIntArray342[i2] == 0)
    					method472(class18.anIntArray342[i2], class18.anIntArrayArray343[i2], class36_1.anIntArray640[l1], class36_1.anIntArray641[l1], class36_1.anIntArray642[l1]);
    		}
    	}
    
    	private void method472(int i, int ai[], int j, int k, int l) {
    		int i1 = ai.length;
    		if(i == 0) {
    			int j1 = 0;
    			anInt1681 = 0;
    			anInt1682 = 0;
    			anInt1683 = 0;
    			for(int k2 = 0; k2 < i1; k2++) {
    				int l3 = ai[k2];
    				if(l3 < anIntArrayArray1657.length) {
    					int ai5[] = anIntArrayArray1657[l3];
    					for(int i5 = 0; i5 < ai5.length; i5++) {
    						int j6 = ai5[i5];
    						anInt1681 += anIntArray1627[j6];
    						anInt1682 += anIntArray1628[j6];
    						anInt1683 += anIntArray1629[j6];
    						j1++;
    					}
    				}
    			}
    			if(j1 > 0) {
    				anInt1681 = anInt1681 / j1 + j;
    				anInt1682 = anInt1682 / j1 + k;
    				anInt1683 = anInt1683 / j1 + l;
    				return;
    			} else {
    				anInt1681 = j;
    				anInt1682 = k;
    				anInt1683 = l;
    				return;
    			}
    		}
    		if(i == 1) {
    			for(int k1 = 0; k1 < i1; k1++) {
    				int l2 = ai[k1];
    				if(l2 < anIntArrayArray1657.length) {
    					int ai1[] = anIntArrayArray1657[l2];
    					for(int i4 = 0; i4 < ai1.length; i4++) {
    						int j5 = ai1[i4];
    						anIntArray1627[j5] += j;
    						anIntArray1628[j5] += k;
    						anIntArray1629[j5] += l;
    					}
    				}
    			}
    			return;
    		}
    		if(i == 2) {
    			for(int l1 = 0; l1 < i1; l1++) {
    				int i3 = ai[l1];
    				if(i3 < anIntArrayArray1657.length) {
    					int ai2[] = anIntArrayArray1657[i3];
    					for(int j4 = 0; j4 < ai2.length; j4++) {
    						int k5 = ai2[j4];
    						anIntArray1627[k5] -= anInt1681;
    						anIntArray1628[k5] -= anInt1682;
    						anIntArray1629[k5] -= anInt1683;
    						int k6 = (j & 0xff) * 8;
    						int l6 = (k & 0xff) * 8;
    						int i7 = (l & 0xff) * 8;
    						if(i7 != 0) {
    							int j7 = modelIntArray1[i7];
    							int i8 = modelIntArray2[i7];
    							int l8 = anIntArray1628[k5] * j7 + anIntArray1627[k5] * i8 >> 16;
    							anIntArray1628[k5] = anIntArray1628[k5] * i8 - anIntArray1627[k5] * j7 >> 16;
    							anIntArray1627[k5] = l8;
    						}
    						if(k6 != 0) {
    							int k7 = modelIntArray1[k6];
    							int j8 = modelIntArray2[k6];
    							int i9 = anIntArray1628[k5] * j8 - anIntArray1629[k5] * k7 >> 16;
    							anIntArray1629[k5] = anIntArray1628[k5] * k7 + anIntArray1629[k5] * j8 >> 16;
    							anIntArray1628[k5] = i9;
    						}
    						if(l6 != 0) {
    							int l7 = modelIntArray1[l6];
    							int k8 = modelIntArray2[l6];
    							int j9 = anIntArray1629[k5] * l7 + anIntArray1627[k5] * k8 >> 16;
    							anIntArray1629[k5] = anIntArray1629[k5] * k8 - anIntArray1627[k5] * l7 >> 16;
    							anIntArray1627[k5] = j9;
    						}
    						anIntArray1627[k5] += anInt1681;
    						anIntArray1628[k5] += anInt1682;
    						anIntArray1629[k5] += anInt1683;
    					}
    				}
    			}
    			return;
    		}
    		if(i == 3) {
    			for(int i2 = 0; i2 < i1; i2++) {
    				int j3 = ai[i2];
    				if(j3 < anIntArrayArray1657.length) {
    					int ai3[] = anIntArrayArray1657[j3];
    					for(int k4 = 0; k4 < ai3.length; k4++) {
    						int l5 = ai3[k4];
    						anIntArray1627[l5] -= anInt1681;
    						anIntArray1628[l5] -= anInt1682;
    						anIntArray1629[l5] -= anInt1683;
    						anIntArray1627[l5] = (anIntArray1627[l5] * j) / 128;
    						anIntArray1628[l5] = (anIntArray1628[l5] * k) / 128;
    						anIntArray1629[l5] = (anIntArray1629[l5] * l) / 128;
    						anIntArray1627[l5] += anInt1681;
    						anIntArray1628[l5] += anInt1682;
    						anIntArray1629[l5] += anInt1683;
    					}
    				}
    			}
    			return;
    		}
    		if(i == 5 && anIntArrayArray1658 != null && anIntArray1639 != null) {
    			for(int j2 = 0; j2 < i1; j2++) {
    				int k3 = ai[j2];
    				if(k3 < anIntArrayArray1658.length) {
    					int ai4[] = anIntArrayArray1658[k3];
    					for(int l4 = 0; l4 < ai4.length; l4++) {
    						int i6 = ai4[l4];
    						anIntArray1639[i6] += j * 8;
    						if(anIntArray1639[i6] < 0)
    							anIntArray1639[i6] = 0;
    						if(anIntArray1639[i6] > 255)
    							anIntArray1639[i6] = 255;
    					}
    				}
    			}
    		}
    	}
    
    	public void method473()  {
    		for(int j = 0; j < anInt1626; j++) {
    			int k = anIntArray1627[j];
    			anIntArray1627[j] = anIntArray1629[j];
    			anIntArray1629[j] = -k;
    		}
    	}
    
    	public void method474(int i) {
    		int k = modelIntArray1[i];
    		int l = modelIntArray2[i];
    		for(int i1 = 0; i1 < anInt1626; i1++) {
    			int j1 = anIntArray1628[i1] * l - anIntArray1629[i1] * k >> 16;
    			anIntArray1629[i1] = anIntArray1628[i1] * k + anIntArray1629[i1] * l >> 16;
    			anIntArray1628[i1] = j1;
    		}
    	}
    
    	public void method475(int i, int j, int l) {
    		for(int i1 = 0; i1 < anInt1626; i1++) {
    			anIntArray1627[i1] += i;
    			anIntArray1628[i1] += j;
    			anIntArray1629[i1] += l;
    		}
    	}
    
    	public void method476(int i, int j) {
    		for(int k = 0; k < anInt1630; k++)
    			if(anIntArray1640[k] == i)
    				anIntArray1640[k] = j;
    	}
    
    	public void method477() {
    		for(int j = 0; j < anInt1626; j++)
    			anIntArray1629[j] = -anIntArray1629[j];
    		for(int k = 0; k < anInt1630; k++) {
    			int l = anIntArray1631[k];
    			anIntArray1631[k] = anIntArray1633[k];
    			anIntArray1633[k] = l;
    		}
    	}
    
    	public void method478(int i, int j, int l) {
    		for(int i1 = 0; i1 < anInt1626; i1++) {
    			anIntArray1627[i1] = (anIntArray1627[i1] * i) / 128;
    			anIntArray1628[i1] = (anIntArray1628[i1] * l) / 128;
    			anIntArray1629[i1] = (anIntArray1629[i1] * j) / 128;
    		}
    	}
    
    	public void method479(int i, int j, int k, int l, int i1, boolean flag) {
    		int j1 = (int)Math.sqrt(k * k + l * l + i1 * i1);
    		int k1 = j * j1 >> 8;
    		if(anIntArray1634 == null) {
    			anIntArray1634 = new int[anInt1630];
    			anIntArray1635 = new int[anInt1630];
    			anIntArray1636 = new int[anInt1630];
    		}
    		if(super.aClass33Array1425 == null) {
    			super.aClass33Array1425 = new Class33[anInt1626];
    			for(int l1 = 0; l1 < anInt1626; l1++)
    				super.aClass33Array1425[l1] = new Class33();
    		}
    		for(int i2 = 0; i2 < anInt1630; i2++) {
    			int j2 = anIntArray1631[i2];
    			int l2 = anIntArray1632[i2];
    			int i3 = anIntArray1633[i2];
    			int j3 = anIntArray1627[l2] - anIntArray1627[j2];
    			int k3 = anIntArray1628[l2] - anIntArray1628[j2];
    			int l3 = anIntArray1629[l2] - anIntArray1629[j2];
    			int i4 = anIntArray1627[i3] - anIntArray1627[j2];
    			int j4 = anIntArray1628[i3] - anIntArray1628[j2];
    			int k4 = anIntArray1629[i3] - anIntArray1629[j2];
    			int l4 = k3 * k4 - j4 * l3;
    			int i5 = l3 * i4 - k4 * j3;
    			int j5;
    			for(j5 = j3 * j4 - i4 * k3; l4 > 8192 || i5 > 8192 || j5 > 8192 || l4 < -8192 || i5 < -8192 || j5 < -8192; j5 >>= 1) {
    				l4 >>= 1;
    				i5 >>= 1;
    			}
    			int k5 = (int)Math.sqrt(l4 * l4 + i5 * i5 + j5 * j5);
    			if(k5 <= 0)
    				k5 = 1;
    			l4 = (l4 * 256) / k5;
    			i5 = (i5 * 256) / k5;
    			j5 = (j5 * 256) / k5;
    			if(anIntArray1637 == null || (anIntArray1637[i2] & 1) == 0) {
    				Class33 class33_2 = super.aClass33Array1425[j2];
    				class33_2.anInt602 += l4;
    				class33_2.anInt603 += i5;
    				class33_2.anInt604 += j5;
    				class33_2.anInt605++;
    				class33_2 = super.aClass33Array1425[l2];
    				class33_2.anInt602 += l4;
    				class33_2.anInt603 += i5;
    				class33_2.anInt604 += j5;
    				class33_2.anInt605++;
    				class33_2 = super.aClass33Array1425[i3];
    				class33_2.anInt602 += l4;
    				class33_2.anInt603 += i5;
    				class33_2.anInt604 += j5;
    				class33_2.anInt605++;
    			} else {
    				int l5 = i + (k * l4 + l * i5 + i1 * j5) / (k1 + k1 / 2);
    				anIntArray1634[i2] = method481(anIntArray1640[i2], l5, anIntArray1637[i2]);
    			}
    		}
    		if(flag) {
    			method480(i, k1, k, l, i1);
    		} else {
    			aClass33Array1660 = new Class33[anInt1626];
    			for(int k2 = 0; k2 < anInt1626; k2++) {
    				Class33 class33 = super.aClass33Array1425[k2];
    				Class33 class33_1 = aClass33Array1660[k2] = new Class33();
    				class33_1.anInt602 = class33.anInt602;
    				class33_1.anInt603 = class33.anInt603;
    				class33_1.anInt604 = class33.anInt604;
    				class33_1.anInt605 = class33.anInt605;
    			}
    		}
    		if(flag) {
    			method466();
    		} else {
    			method468();
    		}
    	}
    
    	public void method480(int i, int j, int k, int l, int i1) {
    		for(int j1 = 0; j1 < anInt1630; j1++) {
    			int k1 = anIntArray1631[j1];
    			int i2 = anIntArray1632[j1];
    			int j2 = anIntArray1633[j1];
    			if(anIntArray1637 == null) {
    				int i3 = anIntArray1640[j1];
    				Class33 class33 = super.aClass33Array1425[k1];
    				int k2 = i + (k * class33.anInt602 + l * class33.anInt603 + i1 * class33.anInt604) / (j * class33.anInt605);
    				anIntArray1634[j1] = method481(i3, k2, 0);
    				class33 = super.aClass33Array1425[i2];
    				k2 = i + (k * class33.anInt602 + l * class33.anInt603 + i1 * class33.anInt604) / (j * class33.anInt605);
    				anIntArray1635[j1] = method481(i3, k2, 0);
    				class33 = super.aClass33Array1425[j2];
    				k2 = i + (k * class33.anInt602 + l * class33.anInt603 + i1 * class33.anInt604) / (j * class33.anInt605);
    				anIntArray1636[j1] = method481(i3, k2, 0);
    			} else if((anIntArray1637[j1] & 1) == 0) {
    				int j3 = anIntArray1640[j1];
    				int k3 = anIntArray1637[j1];
    				Class33 class33_1 = super.aClass33Array1425[k1];
    				int l2 = i + (k * class33_1.anInt602 + l * class33_1.anInt603 + i1 * class33_1.anInt604) / (j * class33_1.anInt605);
    				anIntArray1634[j1] = method481(j3, l2, k3);
    				class33_1 = super.aClass33Array1425[i2];
    				l2 = i + (k * class33_1.anInt602 + l * class33_1.anInt603 + i1 * class33_1.anInt604) / (j * class33_1.anInt605);
    				anIntArray1635[j1] = method481(j3, l2, k3);
    				class33_1 = super.aClass33Array1425[j2];
    				l2 = i + (k * class33_1.anInt602 + l * class33_1.anInt603 + i1 * class33_1.anInt604) / (j * class33_1.anInt605);
    				anIntArray1636[j1] = method481(j3, l2, k3);
    			}
    		}
    		super.aClass33Array1425 = null;
    		aClass33Array1660 = null;
    		anIntArray1655 = null;
    		anIntArray1656 = null;
    		if(anIntArray1637 != null) {
    			for(int l1 = 0; l1 < anInt1630; l1++)
    				if((anIntArray1637[l1] & 2) == 2)
    					return;
    		}
    		anIntArray1640 = null;
    	}
    
    	private static int method481(int i, int j, int k) {
    		if((k & 2) == 2) {
    			if(j < 0)
    				j = 0;
    			else if(j > 127)
    				j = 127;
    			j = 127 - j;
    			return j;
    		}
    		j = j * (i & 0x7f) >> 7;
    		if(j < 2)
    			j = 2;
    		else if(j > 126)
    			j = 126;
    		return (i & 0xff80) + j;
    	}
    
    	public void method482(int j, int k, int l, int i1, int j1, int k1) {
    		int i = 0; //was a parameter
    		int l1 = Texture.textureInt1;
    		int i2 = Texture.textureInt2;
    		int j2 = modelIntArray1[i];
    		int k2 = modelIntArray2[i];
    		int l2 = modelIntArray1[j];
    		int i3 = modelIntArray2[j];
    		int j3 = modelIntArray1[k];
    		int k3 = modelIntArray2[k];
    		int l3 = modelIntArray1[l];
    		int i4 = modelIntArray2[l];
    		int j4 = j1 * l3 + k1 * i4 >> 16;
    		for(int k4 = 0; k4 < anInt1626; k4++) {
    			int l4 = anIntArray1627[k4];
    			int i5 = anIntArray1628[k4];
    			int j5 = anIntArray1629[k4];
    			if(k != 0) {
    				int k5 = i5 * j3 + l4 * k3 >> 16;
    				i5 = i5 * k3 - l4 * j3 >> 16;
    				l4 = k5;
    			}
    			if(i != 0) {
    				int l5 = i5 * k2 - j5 * j2 >> 16;
    				j5 = i5 * j2 + j5 * k2 >> 16;
    				i5 = l5;
    			}
    			if(j != 0) {
    				int i6 = j5 * l2 + l4 * i3 >> 16;
    				j5 = j5 * i3 - l4 * l2 >> 16;
    				l4 = i6;
    			}
    			l4 += i1;
    			i5 += j1;
    			j5 += k1;
    			int j6 = i5 * i4 - j5 * l3 >> 16;
    			j5 = i5 * l3 + j5 * i4 >> 16;
    			i5 = j6;
    			anIntArray1667[k4] = j5 - j4;
    			anIntArray1665[k4] = l1 + (l4 << 9) / j5;
    			anIntArray1666[k4] = i2 + (i5 << 9) / j5;
    			if(anInt1642 > 0) {
    				anIntArray1668[k4] = l4;
    				anIntArray1669[k4] = i5;
    				anIntArray1670[k4] = j5;
    			}
    		}
    		try {
    			method483(false, false, 0);
    		} catch(Exception _ex) {
    		}
    	}
    
    	public void method443(int i, int j, int k, int l, int i1, int j1, int k1, int l1, int i2) {
    		int j2 = l1 * i1 - j1 * l >> 16;
    		int k2 = k1 * j + j2 * k >> 16;
    		int l2 = anInt1650 * k >> 16;
    		int i3 = k2 + l2;
    		if(i3 <= 50 || k2 >= 3500)
    			return;
    		int j3 = l1 * l + j1 * i1 >> 16;
    		int k3 = j3 - anInt1650 << 9;
    		if(k3 / i3 >= DrawingArea.centerY)
    			return;
    		int l3 = j3 + anInt1650 << 9;
    		if(l3 / i3 <= -DrawingArea.centerY)
    			return;
    		int i4 = k1 * k - j2 * j >> 16;
    		int j4 = anInt1650 * j >> 16;
    		int k4 = i4 + j4 << 9;
    		if(k4 / i3 <= -DrawingArea.anInt1387)
    			return;
    		int l4 = j4 + (super.modelHeight * k >> 16);
    		int i5 = i4 - l4 << 9;
    		if(i5 / i3 >= DrawingArea.anInt1387)
    			return;
    		int j5 = l2 + (super.modelHeight * j >> 16);
    		boolean flag = false;
    		if(k2 - j5 <= 50)
    			flag = true;
    		boolean flag1 = false;
    		if(i2 > 0 && aBoolean1684) {
    			int k5 = k2 - l2;
    			if(k5 <= 50)
    				k5 = 50;
    			if(j3 > 0) {
    				k3 /= i3;
    				l3 /= k5;
    			} else {
    				l3 /= i3;
    				k3 /= k5;
    			}
    			if(i4 > 0) {
    				i5 /= i3;
    				k4 /= k5;
    			} else {
    				k4 /= i3;
    				i5 /= k5;
    			}
    			int i6 = anInt1685 - Texture.textureInt1;
    			int k6 = anInt1686 - Texture.textureInt2;
    			if(i6 > k3 && i6 < l3 && k6 > i5 && k6 < k4)
    				if(aBoolean1659)
    					anIntArray1688[anInt1687++] = i2;
    				else
    					flag1 = true;
    		}
    		int l5 = Texture.textureInt1;
    		int j6 = Texture.textureInt2;
    		int l6 = 0;
    		int i7 = 0;
    		if(i != 0) {
    			l6 = modelIntArray1[i];
    			i7 = modelIntArray2[i];
    		}
    		for(int j7 = 0; j7 < anInt1626; j7++) {
    			int k7 = anIntArray1627[j7];
    			int l7 = anIntArray1628[j7];
    			int i8 = anIntArray1629[j7];
    			if(i != 0) {
    				int j8 = i8 * l6 + k7 * i7 >> 16;
    				i8 = i8 * i7 - k7 * l6 >> 16;
    				k7 = j8;
    			}
    			k7 += j1;
    			l7 += k1;
    			i8 += l1;
    			int k8 = i8 * l + k7 * i1 >> 16;
    			i8 = i8 * i1 - k7 * l >> 16;
    			k7 = k8;
    			k8 = l7 * k - i8 * j >> 16;
    			i8 = l7 * j + i8 * k >> 16;
    			l7 = k8;
    			anIntArray1667[j7] = i8 - k2;
    			if(i8 >= 50) {
    				anIntArray1665[j7] = l5 + (k7 << 9) / i8;
    				anIntArray1666[j7] = j6 + (l7 << 9) / i8;
    			} else {
    				anIntArray1665[j7] = -5000;
    				flag = true;
    			}
    			if(flag || anInt1642 > 0) {
    				anIntArray1668[j7] = k7;
    				anIntArray1669[j7] = l7;
    				anIntArray1670[j7] = i8;
    			}
    		}
    		try {
    			method483(flag, flag1, i2);
    		} catch(Exception _ex) {
    		}
    	}
    
    	private void method483(boolean flag, boolean flag1, int i) {
    		for(int j = 0; j < anInt1652; j++)
    			anIntArray1671[j] = 0;
    		for(int k = 0; k < anInt1630; k++)
    			if(anIntArray1637 == null || anIntArray1637[k] != -1) {
    				int l = anIntArray1631[k];
    				int k1 = anIntArray1632[k];
    				int j2 = anIntArray1633[k];
    				int i3 = anIntArray1665[l];
    				int l3 = anIntArray1665[k1];
    				int k4 = anIntArray1665[j2];
    				if(flag && (i3 == -5000 || l3 == -5000 || k4 == -5000)) {
    					aBooleanArray1664[k] = true;
    					int j5 = (anIntArray1667[l] + anIntArray1667[k1] + anIntArray1667[j2]) / 3 + anInt1653;
    					anIntArrayArray1672[j5][anIntArray1671[j5]++] = k;
    				} else {
    					if(flag1 && method486(anInt1685, anInt1686, anIntArray1666[l], anIntArray1666[k1], anIntArray1666[j2], i3, l3, k4)) {
    						anIntArray1688[anInt1687++] = i;
    						flag1 = false;
    					}
    					if((i3 - l3) * (anIntArray1666[j2] - anIntArray1666[k1]) - (anIntArray1666[l] - anIntArray1666[k1]) * (k4 - l3) > 0) {
    						aBooleanArray1664[k] = false;
    						aBooleanArray1663[k] = i3 < 0 || l3 < 0 || k4 < 0 || i3 > DrawingArea.centerX || l3 > DrawingArea.centerX || k4 > DrawingArea.centerX;
    						int k5 = (anIntArray1667[l] + anIntArray1667[k1] + anIntArray1667[j2]) / 3 + anInt1653;
    						anIntArrayArray1672[k5][anIntArray1671[k5]++] = k;
    					}
    				}
    			}
    		if(anIntArray1638 == null) {
    			for(int i1 = anInt1652 - 1; i1 >= 0; i1--) {
    				int l1 = anIntArray1671[i1];
    				if(l1 > 0) {
    					int ai[] = anIntArrayArray1672[i1];
    					for(int j3 = 0; j3 < l1; j3++)
    					method484(ai[j3]);
    				}
    			}
    			return;
    		}
    		for(int j1 = 0; j1 < 12; j1++) {
    			anIntArray1673[j1] = 0;
    			anIntArray1677[j1] = 0;
    		}
    		for(int i2 = anInt1652 - 1; i2 >= 0; i2--) {
    			int k2 = anIntArray1671[i2];
    			if(k2 > 0) {
    				int ai1[] = anIntArrayArray1672[i2];
    				for(int i4 = 0; i4 < k2; i4++) {
    					int l4 = ai1[i4];
    					int l5 = anIntArray1638[l4];
    					int j6 = anIntArray1673[l5]++;
    					anIntArrayArray1674[l5][j6] = l4;
    					if(l5 < 10)
    						anIntArray1677[l5] += i2;
    					else if(l5 == 10)
    						anIntArray1675[j6] = i2;
    					else
    						anIntArray1676[j6] = i2;
    				}
    			}
    		}
    
    		int l2 = 0;
    		if(anIntArray1673[1] > 0 || anIntArray1673[2] > 0)
    			l2 = (anIntArray1677[1] + anIntArray1677[2]) / (anIntArray1673[1] + anIntArray1673[2]);
    		int k3 = 0;
    		if(anIntArray1673[3] > 0 || anIntArray1673[4] > 0)
    			k3 = (anIntArray1677[3] + anIntArray1677[4]) / (anIntArray1673[3] + anIntArray1673[4]);
    		int j4 = 0;
    		if(anIntArray1673[6] > 0 || anIntArray1673[8] > 0)
    			j4 = (anIntArray1677[6] + anIntArray1677[8]) / (anIntArray1673[6] + anIntArray1673[8]);
    		int i6 = 0;
    		int k6 = anIntArray1673[10];
    		int ai2[] = anIntArrayArray1674[10];
    		int ai3[] = anIntArray1675;
    		if(i6 == k6) {
    			i6 = 0;
    			k6 = anIntArray1673[11];
    			ai2 = anIntArrayArray1674[11];
    			ai3 = anIntArray1676;
    		}
    		int i5;
    		if(i6 < k6)
    			i5 = ai3[i6];
    		else
    			i5 = -1000;
    		for(int l6 = 0; l6 < 10; l6++) {
    			while(l6 == 0 && i5 > l2) {
    				method484(ai2[i6++]);
    			if(i6 == k6 && ai2 != anIntArrayArray1674[11]) {
    				i6 = 0;
    				k6 = anIntArray1673[11];
    				ai2 = anIntArrayArray1674[11];
    				ai3 = anIntArray1676;
    			}
    			if(i6 < k6)
    				i5 = ai3[i6];
    			else
    				i5 = -1000;
    			}
    			while(l6 == 3 && i5 > k3) {
    			method484(ai2[i6++]);
    			if(i6 == k6 && ai2 != anIntArrayArray1674[11]) {
    				i6 = 0;
    				k6 = anIntArray1673[11];
    				ai2 = anIntArrayArray1674[11];
    				ai3 = anIntArray1676;
    			}
    			if(i6 < k6)
    				i5 = ai3[i6];
    			else
    				i5 = -1000;
    			}
    			while(l6 == 5 && i5 > j4)  {
    			method484(ai2[i6++]);
    			if(i6 == k6 && ai2 != anIntArrayArray1674[11]) {
    				i6 = 0;
    				k6 = anIntArray1673[11];
    				ai2 = anIntArrayArray1674[11];
    				ai3 = anIntArray1676;
    			}
    			if(i6 < k6)
    				i5 = ai3[i6];
    			else
    				i5 = -1000;
    			}
    			int i7 = anIntArray1673[l6];
    			int ai4[] = anIntArrayArray1674[l6];
    			for(int j7 = 0; j7 < i7; j7++)
    				method484(ai4[j7]);
    		}
    		while(i5 != -1000) {
    			method484(ai2[i6++]);
    			if(i6 == k6 && ai2 != anIntArrayArray1674[11]) {
    				i6 = 0;
    				ai2 = anIntArrayArray1674[11];
    				k6 = anIntArray1673[11];
    				ai3 = anIntArray1676;
    			}
    			if(i6 < k6)
    				i5 = ai3[i6];
    			else
    				i5 = -1000;
    		}
    	}
    
    	private void method484(int i) {
    		if(aBooleanArray1664[i]) {
    			method485(i);
    			return;
    		}
    		int j = anIntArray1631[i];
    		int k = anIntArray1632[i];
    		int l = anIntArray1633[i];
    		Texture.aBoolean1462 = aBooleanArray1663[i];
    		if(anIntArray1639 == null)
    			Texture.anInt1465 = 0;
    		else
    			Texture.anInt1465 = anIntArray1639[i];
    		int i1;
    		if(anIntArray1637 == null)
    			i1 = 0;
    		else
    			i1 = anIntArray1637[i] & 3;
    		if(i1 == 0) {
    			Texture.method374(anIntArray1666[j], anIntArray1666[k], anIntArray1666[l], anIntArray1665[j], anIntArray1665[k], anIntArray1665[l], anIntArray1634[i], anIntArray1635[i], anIntArray1636[i]);
    			return;
    		}
    		if(i1 == 1) {
    			Texture.method376(anIntArray1666[j], anIntArray1666[k], anIntArray1666[l], anIntArray1665[j], anIntArray1665[k], anIntArray1665[l], modelIntArray3[anIntArray1634[i]]);
    			return;
    		}
    		if(i1 == 2) {
    			int j1 = anIntArray1637[i] >> 2;
    			int l1 = anIntArray1643[j1];
    			int j2 = anIntArray1644[j1];
    			int l2 = anIntArray1645[j1];
    			Texture.method378(anIntArray1666[j], anIntArray1666[k], anIntArray1666[l], anIntArray1665[j], anIntArray1665[k], anIntArray1665[l], anIntArray1634[i], anIntArray1635[i], anIntArray1636[i], anIntArray1668[l1], anIntArray1668[j2], anIntArray1668[l2], anIntArray1669[l1], anIntArray1669[j2], anIntArray1669[l2], anIntArray1670[l1], anIntArray1670[j2], anIntArray1670[l2], anIntArray1640[i]);
    			return;
    		}
    		if(i1 == 3) {
    			int k1 = anIntArray1637[i] >> 2;
    			int i2 = anIntArray1643[k1];
    			int k2 = anIntArray1644[k1];
    			int i3 = anIntArray1645[k1];
    			Texture.method378(anIntArray1666[j], anIntArray1666[k], anIntArray1666[l], anIntArray1665[j], anIntArray1665[k], anIntArray1665[l], anIntArray1634[i], anIntArray1634[i], anIntArray1634[i], anIntArray1668[i2], anIntArray1668[k2], anIntArray1668[i3], anIntArray1669[i2], anIntArray1669[k2], anIntArray1669[i3], anIntArray1670[i2], anIntArray1670[k2], anIntArray1670[i3], anIntArray1640[i]);
    		}
    	}
    
    	private void method485(int i) {
    		int j = Texture.textureInt1;
    		int k = Texture.textureInt2;
    		int l = 0;
    		int i1 = anIntArray1631[i];
    		int j1 = anIntArray1632[i];
    		int k1 = anIntArray1633[i];
    		int l1 = anIntArray1670[i1];
    		int i2 = anIntArray1670[j1];
    		int j2 = anIntArray1670[k1];
    		if(l1 >= 50) {
    			anIntArray1678[l] = anIntArray1665[i1];
    			anIntArray1679[l] = anIntArray1666[i1];
    			anIntArray1680[l++] = anIntArray1634[i];
    		} else {
    			int k2 = anIntArray1668[i1];
    			int k3 = anIntArray1669[i1];
    			int k4 = anIntArray1634[i];
    			if(j2 >= 50) {
    				int k5 = (50 - l1) * modelIntArray4[j2 - l1];
    				anIntArray1678[l] = j + (k2 + ((anIntArray1668[k1] - k2) * k5 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (k3 + ((anIntArray1669[k1] - k3) * k5 >> 16) << 9) / 50;
    				anIntArray1680[l++] = k4 + ((anIntArray1636[i] - k4) * k5 >> 16);
    			}
    			if(i2 >= 50) {
    				int l5 = (50 - l1) * modelIntArray4[i2 - l1];
    				anIntArray1678[l] = j + (k2 + ((anIntArray1668[j1] - k2) * l5 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (k3 + ((anIntArray1669[j1] - k3) * l5 >> 16) << 9) / 50;
    				anIntArray1680[l++] = k4 + ((anIntArray1635[i] - k4) * l5 >> 16);
    			}
    		}
    		if(i2 >= 50) {
    			anIntArray1678[l] = anIntArray1665[j1];
    			anIntArray1679[l] = anIntArray1666[j1];
    			anIntArray1680[l++] = anIntArray1635[i];
    		} else {
    			int l2 = anIntArray1668[j1];
    			int l3 = anIntArray1669[j1];
    			int l4 = anIntArray1635[i];
    			if(l1 >= 50) {
    				int i6 = (50 - i2) * modelIntArray4[l1 - i2];
    				anIntArray1678[l] = j + (l2 + ((anIntArray1668[i1] - l2) * i6 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (l3 + ((anIntArray1669[i1] - l3) * i6 >> 16) << 9) / 50;
    				anIntArray1680[l++] = l4 + ((anIntArray1634[i] - l4) * i6 >> 16);
    			}
    			if(j2 >= 50) {
    				int j6 = (50 - i2) * modelIntArray4[j2 - i2];
    				anIntArray1678[l] = j + (l2 + ((anIntArray1668[k1] - l2) * j6 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (l3 + ((anIntArray1669[k1] - l3) * j6 >> 16) << 9) / 50;
    				anIntArray1680[l++] = l4 + ((anIntArray1636[i] - l4) * j6 >> 16);
    			}
    		}
    		if(j2 >= 50) {
    			anIntArray1678[l] = anIntArray1665[k1];
    			anIntArray1679[l] = anIntArray1666[k1];
    			anIntArray1680[l++] = anIntArray1636[i];
    		} else {
    			int i3 = anIntArray1668[k1];
    			int i4 = anIntArray1669[k1];
    			int i5 = anIntArray1636[i];
    			if(i2 >= 50) {
    				int k6 = (50 - j2) * modelIntArray4[i2 - j2];
    				anIntArray1678[l] = j + (i3 + ((anIntArray1668[j1] - i3) * k6 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (i4 + ((anIntArray1669[j1] - i4) * k6 >> 16) << 9) / 50;
    				anIntArray1680[l++] = i5 + ((anIntArray1635[i] - i5) * k6 >> 16);
    			}
    			if(l1 >= 50) {
    				int l6 = (50 - j2) * modelIntArray4[l1 - j2];
    				anIntArray1678[l] = j + (i3 + ((anIntArray1668[i1] - i3) * l6 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (i4 + ((anIntArray1669[i1] - i4) * l6 >> 16) << 9) / 50;
    				anIntArray1680[l++] = i5 + ((anIntArray1634[i] - i5) * l6 >> 16);
    			}
    		}
    		int j3 = anIntArray1678[0];
    		int j4 = anIntArray1678[1];
    		int j5 = anIntArray1678[2];
    		int i7 = anIntArray1679[0];
    		int j7 = anIntArray1679[1];
    		int k7 = anIntArray1679[2];
    		if((j3 - j4) * (k7 - j7) - (i7 - j7) * (j5 - j4) > 0) {
    			Texture.aBoolean1462 = false;
    			if(l == 3) {
    				if(j3 < 0 || j4 < 0 || j5 < 0 || j3 > DrawingArea.centerX || j4 > DrawingArea.centerX || j5 > DrawingArea.centerX)
    					Texture.aBoolean1462 = true;
    				int l7;
    				if(anIntArray1637 == null)
    					l7 = 0;
    				else
    					l7 = anIntArray1637[i] & 3;
    				if(l7 == 0)
    					Texture.method374(i7, j7, k7, j3, j4, j5, anIntArray1680[0], anIntArray1680[1], anIntArray1680[2]);
    				else if(l7 == 1)
    					Texture.method376(i7, j7, k7, j3, j4, j5, modelIntArray3[anIntArray1634[i]]);
    				else if(l7 == 2) {
    					int j8 = anIntArray1637[i] >> 2;
    					int k9 = anIntArray1643[j8];
    					int k10 = anIntArray1644[j8];
    					int k11 = anIntArray1645[j8];
    					Texture.method378(i7, j7, k7, j3, j4, j5, anIntArray1680[0], anIntArray1680[1], anIntArray1680[2], anIntArray1668[k9], anIntArray1668[k10], anIntArray1668[k11], anIntArray1669[k9], anIntArray1669[k10], anIntArray1669[k11], anIntArray1670[k9], anIntArray1670[k10], anIntArray1670[k11], anIntArray1640[i]);
    				} else if(l7 == 3) {
    					int k8 = anIntArray1637[i] >> 2;
    					int l9 = anIntArray1643[k8];
    					int l10 = anIntArray1644[k8];
    					int l11 = anIntArray1645[k8];
    					Texture.method378(i7, j7, k7, j3, j4, j5, anIntArray1634[i], anIntArray1634[i], anIntArray1634[i], anIntArray1668[l9], anIntArray1668[l10], anIntArray1668[l11], anIntArray1669[l9], anIntArray1669[l10], anIntArray1669[l11], anIntArray1670[l9], anIntArray1670[l10], anIntArray1670[l11], anIntArray1640[i]);
    				}
    			}
    			if(l == 4) {
    				if(j3 < 0 || j4 < 0 || j5 < 0 || j3 > DrawingArea.centerX || j4 > DrawingArea.centerX || j5 > DrawingArea.centerX || anIntArray1678[3] < 0 || anIntArray1678[3] > DrawingArea.centerX)
    					Texture.aBoolean1462 = true;
    				int i8;
    				if(anIntArray1637 == null)
    					i8 = 0;
    				else
    					i8 = anIntArray1637[i] & 3;
    				if(i8 == 0) {
    					Texture.method374(i7, j7, k7, j3, j4, j5, anIntArray1680[0], anIntArray1680[1], anIntArray1680[2]);
    					Texture.method374(i7, k7, anIntArray1679[3], j3, j5, anIntArray1678[3], anIntArray1680[0], anIntArray1680[2], anIntArray1680[3]);
    					return;
    				}
    				if(i8 == 1) {
    					int l8 = modelIntArray3[anIntArray1634[i]];
    					Texture.method376(i7, j7, k7, j3, j4, j5, l8);
    					Texture.method376(i7, k7, anIntArray1679[3], j3, j5, anIntArray1678[3], l8);
    					return;
    				}
    				if(i8 == 2) {
    					int i9 = anIntArray1637[i] >> 2;
    					int i10 = anIntArray1643[i9];
    					int i11 = anIntArray1644[i9];
    					int i12 = anIntArray1645[i9];
    					Texture.method378(i7, j7, k7, j3, j4, j5, anIntArray1680[0], anIntArray1680[1], anIntArray1680[2], anIntArray1668[i10], anIntArray1668[i11], anIntArray1668[i12], anIntArray1669[i10], anIntArray1669[i11], anIntArray1669[i12], anIntArray1670[i10], anIntArray1670[i11], anIntArray1670[i12], anIntArray1640[i]);
    					Texture.method378(i7, k7, anIntArray1679[3], j3, j5, anIntArray1678[3], anIntArray1680[0], anIntArray1680[2], anIntArray1680[3], anIntArray1668[i10], anIntArray1668[i11], anIntArray1668[i12], anIntArray1669[i10], anIntArray1669[i11], anIntArray1669[i12], anIntArray1670[i10], anIntArray1670[i11], anIntArray1670[i12], anIntArray1640[i]);
    					return;
    				}
    				if(i8 == 3) {
    					int j9 = anIntArray1637[i] >> 2;
    					int j10 = anIntArray1643[j9];
    					int j11 = anIntArray1644[j9];
    					int j12 = anIntArray1645[j9];
    					Texture.method378(i7, j7, k7, j3, j4, j5, anIntArray1634[i], anIntArray1634[i], anIntArray1634[i], anIntArray1668[j10], anIntArray1668[j11], anIntArray1668[j12], anIntArray1669[j10], anIntArray1669[j11], anIntArray1669[j12], anIntArray1670[j10], anIntArray1670[j11], anIntArray1670[j12], anIntArray1640[i]);
    					Texture.method378(i7, k7, anIntArray1679[3], j3, j5, anIntArray1678[3], anIntArray1634[i], anIntArray1634[i], anIntArray1634[i], anIntArray1668[j10], anIntArray1668[j11], anIntArray1668[j12], anIntArray1669[j10], anIntArray1669[j11], anIntArray1669[j12], anIntArray1670[j10], anIntArray1670[j11], anIntArray1670[j12], anIntArray1640[i]);
    				}
    			}
    		}
    	}
    
    	private boolean method486(int i, int j, int k, int l, int i1, int j1, int k1, int l1) {
    		if(j < k && j < l && j < i1)
    			return false;
    		if(j > k && j > l && j > i1)
    			return false;
    		return !(i < j1 && i < k1 && i < l1) && (i <= j1 || i <= k1 || i <= l1);
    	}
    
    	public static final Model aModel_1621 = new Model();
    	private static int[] anIntArray1622 = new int[2000];
    	private static int[] anIntArray1623 = new int[2000];
    	private static int[] anIntArray1624 = new int[2000];
    	private static int[] anIntArray1625 = new int[2000];
    	public int anInt1626;
    	public int anIntArray1627[];
    	public int anIntArray1628[];
    	public int anIntArray1629[];
    	public int anInt1630;
    	public int anIntArray1631[];
    	public int anIntArray1632[];
    	public int anIntArray1633[];
    	private int[] anIntArray1634;
    	private int[] anIntArray1635;
    	private int[] anIntArray1636;
    	public int anIntArray1637[];
    	private int[] anIntArray1638;
    	private int[] anIntArray1639;
    	public int anIntArray1640[];
    	private int anInt1641;
    	private int anInt1642;
    	private int[] anIntArray1643;
    	private int[] anIntArray1644;
    	private int[] anIntArray1645;
    	public int anInt1646;
    	public int anInt1647;
    	public int anInt1648;
    	public int anInt1649;
    	public int anInt1650;
    	public int anInt1651;
    	private int anInt1652;
    	private int anInt1653;
    	public int anInt1654;
    	private int[] anIntArray1655;
    	private int[] anIntArray1656;
    	public int anIntArrayArray1657[][];
    	public int anIntArrayArray1658[][];
    	public boolean aBoolean1659;
    	Class33 aClass33Array1660[];
    	private static Class21[] aClass21Array1661;
    	private static OnDemandFetcherParent aOnDemandFetcherParent_1662;
    	private static boolean[] aBooleanArray1663 = new boolean[4096];
    	private static boolean[] aBooleanArray1664 = new boolean[4096];
    	private static int[] anIntArray1665 = new int[4096];
    	private static int[] anIntArray1666 = new int[4096];
    	private static int[] anIntArray1667 = new int[4096];
    	private static int[] anIntArray1668 = new int[4096];
    	private static int[] anIntArray1669 = new int[4096];
    	private static int[] anIntArray1670 = new int[4096];
    	private static int[] anIntArray1671 = new int[1500];
    	private static int[][] anIntArrayArray1672 = new int[1500][512];
    	private static int[] anIntArray1673 = new int[12];
    	private static int[][] anIntArrayArray1674 = new int[12][2000];
    	private static int[] anIntArray1675 = new int[2000];
    	private static int[] anIntArray1676 = new int[2000];
    	private static int[] anIntArray1677 = new int[12];
    	private static final int[] anIntArray1678 = new int[10];
    	private static final int[] anIntArray1679 = new int[10];
    	private static final int[] anIntArray1680 = new int[10];
    	private static int anInt1681;
    	private static int anInt1682;
    	private static int anInt1683;
    	public static boolean aBoolean1684;
    	public static int anInt1685;
    	public static int anInt1686;
    	public static int anInt1687;
    	public static final int[] anIntArray1688 = new int[1000];
    	public static int modelIntArray1[];
    	public static int modelIntArray2[];
    	private static int[] modelIntArray3;
    	private static int[] modelIntArray4;
    
    	static {
    		modelIntArray1 = Texture.anIntArray1470;
    		modelIntArray2 = Texture.anIntArray1471;
    		modelIntArray3 = Texture.anIntArray1482;
    		modelIntArray4 = Texture.anIntArray1469;
    	}
    }
    Attached image
    Spoiler for :

    [Today 05:42 AM] Thakiller: Danced to make us lauigh and put a smile on our faces
    Reply With Quote  
     

  4. #4  
    leme give u some n00ts

    noot noot's Avatar
    Join Date
    Dec 2012
    Posts
    1,186
    Thanks given
    191
    Thanks received
    132
    Rep Power
    409
    Edit: My bad for double posting.
    Attached image
    Spoiler for :

    [Today 05:42 AM] Thakiller: Danced to make us lauigh and put a smile on our faces
    Reply With Quote  
     

  5. #5  
    Registered Member Magick07's Avatar
    Join Date
    Jun 2011
    Posts
    454
    Thanks given
    128
    Thanks received
    21
    Rep Power
    0
    Quote Originally Posted by Skill_R_Us View Post
    [spoiler]
    Client.java
    Code:
    package server.model.players;
    
    import java.util.LinkedList;
    import java.util.Queue;
    import java.util.concurrent.Future;
    
    import org.apache.mina.common.IoSession;
    
    import server.Config;
    import server.Server;
    import server.model.items.ItemAssistant;
    import server.model.shops.ShopAssistant;
    import server.net.HostList;
    import server.net.Packet;
    import server.net.StaticPacketBuilder;
    import server.util.Misc;
    import server.util.Stream;
    import server.model.players.skills.*;
    import server.event.EventManager;
    import server.event.Event;
    import server.event.EventContainer;
    
    public class Client extends Player {
    
    	public byte buffer[] = null;
    	public Stream inStream = null, outStream = null;
    	private IoSession session;
    	private ItemAssistant itemAssistant = new ItemAssistant(this);
    	private ShopAssistant shopAssistant = new ShopAssistant(this);
    	private TradeAndDuel tradeAndDuel = new TradeAndDuel(this);
    	private PlayerAssistant playerAssistant = new PlayerAssistant(this);
    	private CombatAssistant combatAssistant = new CombatAssistant(this);
    	private ActionHandler actionHandler = new ActionHandler(this);
    	private DialogueHandler dialogueHandler = new DialogueHandler(this);
    	private Queue<Packet> queuedPackets = new LinkedList<Packet>();
    	private Potions potions = new Potions(this);
    	private PotionMixing potionMixing = new PotionMixing(this);
    	private Food food = new Food(this);
    	/**
    	 * Skill instances
    	 */
    	private Slayer slayer = new Slayer(this);
    	private Runecrafting runecrafting = new Runecrafting(this);
    	private Woodcutting woodcutting = new Woodcutting(this);
    	private Mining mine = new Mining(this);
    	private Agility agility = new Agility(this);
    	private Cooking cooking = new Cooking(this);
    	private Fishing fish = new Fishing(this);
    	private Crafting crafting = new Crafting(this);
    	private Smithing smith = new Smithing(this);
    	private Prayer prayer = new Prayer(this);
    	private Fletching fletching = new Fletching(this);
    	private SmithingInterface smithInt = new SmithingInterface(this);
    	private Farming farming = new Farming(this);
    	private Thieving thieving = new Thieving(this);
    	private Firemaking firemaking = new Firemaking(this);
    	private Herblore herblore = new Herblore(this);
    	
    	private int somejunk;
    	public int lowMemoryVersion = 0;
    	public int timeOutCounter = 0;		
    	public int returnCode = 2; 
    	private Future<?> currentTask;
    	
    	public Client(IoSession s, int _playerId) {
    		super(_playerId);
    		this.session = s;
    		synchronized(this) {
    			outStream = new Stream(new byte[Config.BUFFER_SIZE]);
    			outStream.currentOffset = 0;
    		}
    		inStream = new Stream(new byte[Config.BUFFER_SIZE]);
    		inStream.currentOffset = 0;
    		buffer = new byte[Config.BUFFER_SIZE];
    	}
    	
    	public void flushOutStream() {	
    		if(disconnected || outStream.currentOffset == 0) return;
    		synchronized(this) {	
    			StaticPacketBuilder out = new StaticPacketBuilder().setBare(true);
    			byte[] temp = new byte[outStream.currentOffset]; 
    			System.arraycopy(outStream.buffer, 0, temp, 0, temp.length);
    			out.addBytes(temp);
    			session.write(out.toPacket());
    			outStream.currentOffset = 0;
    		}
        }
    	
    	public void sendClan(String name, String message, String clan, int rights) {
    		outStream.createFrameVarSizeWord(217);
    		outStream.writeString(name);
    		outStream.writeString(message);
    		outStream.writeString(clan);
    		outStream.writeWord(rights);
    		outStream.endFrameVarSize();
    	}
    	
    	public static final int PACKET_SIZES[] = {
    		0, 0, 0, 1, -1, 0, 0, 0, 0, 0, //0
    		0, 0, 0, 0, 8, 0, 6, 2, 2, 0,  //10
    		0, 2, 0, 6, 0, 12, 0, 0, 0, 0, //20
    		0, 0, 0, 0, 0, 8, 4, 0, 0, 2,  //30
    		2, 6, 0, 6, 0, -1, 0, 0, 0, 0, //40
    		0, 0, 0, 12, 0, 0, 0, 8, 8, 12, //50
    		8, 8, 0, 0, 0, 0, 0, 0, 0, 0,  //60
    		6, 0, 2, 2, 8, 6, 0, -1, 0, 6, //70
    		0, 0, 0, 0, 0, 1, 4, 6, 0, 0,  //80
    		0, 0, 0, 0, 0, 3, 0, 0, -1, 0, //90
    		0, 13, 0, -1, 0, 0, 0, 0, 0, 0,//100
    		0, 0, 0, 0, 0, 0, 0, 6, 0, 0,  //110
    		1, 0, 6, 0, 0, 0, -1, 0, 2, 6, //120
    		0, 4, 6, 8, 0, 6, 0, 0, 0, 2,  //130
    		0, 0, 0, 0, 0, 6, 0, 0, 0, 0,  //140
    		0, 0, 1, 2, 0, 2, 6, 0, 0, 0,  //150
    		0, 0, 0, 0, -1, -1, 0, 0, 0, 0,//160
    		0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  //170
    		0, 8, 0, 3, 0, 2, 0, 0, 8, 1,  //180
    		0, 0, 12, 0, 0, 0, 0, 0, 0, 0, //190
    		2, 0, 0, 0, 0, 0, 0, 0, 4, 0,  //200
    		4, 0, 0, 0, 7, 8, 0, 0, 10, 0, //210
    		0, 0, 0, 0, 0, 0, -1, 0, 6, 0, //220
    		1, 0, 0, 0, 6, 0, 6, 8, 1, 0,  //230
    		0, 4, 0, 0, 0, 0, -1, 0, -1, 4,//240
    		0, 0, 6, 6, 0, 0, 0            //250
    	};
    
    	public void destruct() {
    		if(session == null) 
    			return;
    		//PlayerSaving.getSingleton().requestSave(playerId);
    		getPA().removeFromCW();
    		if (inPits)
    			Server.fightPits.removePlayerFromPits(playerId);
    		if (clanId >= 0)
    			Server.clanChat.leaveClan(playerId, clanId);
    		Misc.println("[DEREGISTERED]: "+playerName+"");
    		HostList.getHostList().remove(session);
    		disconnected = true;
    		session.close();
    		session = null;
    		inStream = null;
    		outStream = null;
    		isActive = false;
    		buffer = null;
    		super.destruct();
    	}
    	
    	
    	public void sendMessage(String s) {
    		synchronized (this) {
    			if(getOutStream() != null) {
    				outStream.createFrameVarSize(253);
    				outStream.writeString(s);
    				outStream.endFrameVarSize();
    			}
    		}
    	}
    
    	public void setSidebarInterface(int menuId, int form) {
    		synchronized (this) {
    			if(getOutStream() != null) {
    				outStream.createFrame(71);
    				outStream.writeWord(form);
    				outStream.writeByteA(menuId);
    			}
    		}
    	}	
    	
    	public void initialize() {
    			if(playerRights == 1) {
    					for (int j = 0; j < Server.playerHandler.players.length; j++) {
    					if (Server.playerHandler.players[j] != null) {
    					Client c2 = (Client)Server.playerHandler.players[j];
    					c2.sendMessage("@gre@[Mod] " +playerName+ " has just logged in.");
            }
        }
    }
    			if(playerRights == 2) {
    					for (int j = 0; j < Server.playerHandler.players.length; j++) {
    					if (Server.playerHandler.players[j] != null) {
    					Client c2 = (Client)Server.playerHandler.players[j];
    					c2.sendMessage("@yel@[Admin] " +playerName+ " has just logged in.");
            }
        }
    }
    			if(playerRights == 3) {
    					for (int j = 0; j < Server.playerHandler.players.length; j++) {
    					if (Server.playerHandler.players[j] != null) {
    					Client c2 = (Client)Server.playerHandler.players[j];
    					c2.sendMessage("@red@[Owner] " +playerName+ " has just logged in.");
            }
        }
    }
    		synchronized (this) {
    			outStream.createFrame(249);
    			outStream.writeByteA(1);		// 1 for members, zero for free
    			outStream.writeWordBigEndianA(playerId);
    			for (int j = 0; j < Server.playerHandler.players.length; j++) {
    				if (j == playerId)
    					continue;
    				if (Server.playerHandler.players[j] != null) {
    					if (Server.playerHandler.players[j].playerName.equalsIgnoreCase(playerName))
    						disconnected = true;
    				}
    			}
    			for (int i = 0; i < 25; i++) {
    				getPA().setSkillLevel(i, playerLevel[i], playerXP[i]);
    				getPA().refreshSkill(i);
    			}
    			for(int p = 0; p < PRAYER.length; p++) { // reset prayer glows 
    				prayerActive[p] = false;
    				getPA().sendFrame36(PRAYER_GLOW[p], 0);	
    			}
    			//if (playerName.equalsIgnoreCase("Sanity")) {
    				getPA().sendCrashFrame();
    			//}
    			getPA().handleWeaponStyle();
    			getPA().handleLoginText();
    			accountFlagged = getPA().checkForFlags();
    			//getPA().sendFrame36(43, fightMode-1);
    			getPA().sendFrame36(108, 0);//resets autocast button
    			getPA().sendFrame36(172, 1);
    			getPA().sendFrame107(); // reset screen
    			getPA().setChatOptions(0, 0, 0); // reset private messaging options
    			setSidebarInterface(1, 3917);
    			setSidebarInterface(2, 638);
    			setSidebarInterface(3, 3213);
    			setSidebarInterface(4, 1644);
    			setSidebarInterface(5, 5608);
    			if(playerMagicBook == 0) {
    				setSidebarInterface(6, 1151); //modern
    				}else {
    					if(playerMagicBook == 2) {
    						setSidebarInterface(6, 29999); //lunar
    				}else {
    					setSidebarInterface(6, 12855); // ancient
    				}
    			}
    			correctCoordinates();
    			setSidebarInterface(7, 18128);		
    			setSidebarInterface(8, 5065);
    			setSidebarInterface(9, 5715);
    			setSidebarInterface(10, 2449);
    			//setSidebarInterface(11, 4445); // wrench tab
    			setSidebarInterface(11, 904); // wrench tab
    			setSidebarInterface(12, 147); // run tab
    			setSidebarInterface(13, -1);
    			setSidebarInterface(0, 2423);
    			//sendMessage("Welcome to MarkScape!");
    			//sendMessage("Lastest Update: You know...");
    			//sendMessage("Currently working on other things.");
    			//sendMessage("Don't be a faggot, okay?");
    			//sendMessage("");
    			//sendMessage("");
    			getPA().showOption(4, 0,"Trade With", 3);
    			getPA().showOption(5, 0,"Follow", 4);
    			getItems().resetItems(3214);
    			getItems().sendWeapon(playerEquipment[playerWeapon], getItems().getItemName(playerEquipment[playerWeapon]));
    			getItems().resetBonus();
    			getItems().getBonus();
    			getItems().writeBonus();
    			getItems().setEquipment(playerEquipment[playerHat],1,playerHat);
    			getItems().setEquipment(playerEquipment[playerCape],1,playerCape);
    			getItems().setEquipment(playerEquipment[playerAmulet],1,playerAmulet);
    			getItems().setEquipment(playerEquipment[playerArrows],playerEquipmentN[playerArrows],playerArrows);
    			getItems().setEquipment(playerEquipment[playerChest],1,playerChest);
    			getItems().setEquipment(playerEquipment[playerShield],1,playerShield);
    			getItems().setEquipment(playerEquipment[playerLegs],1,playerLegs);
    			getItems().setEquipment(playerEquipment[playerHands],1,playerHands);
    			getItems().setEquipment(playerEquipment[playerFeet],1,playerFeet);
    			getItems().setEquipment(playerEquipment[playerRing],1,playerRing);
    			getItems().setEquipment(playerEquipment[playerWeapon],playerEquipmentN[playerWeapon],playerWeapon);
    			getCombat().getPlayerAnimIndex(getItems().getItemName(playerEquipment[playerWeapon]).toLowerCase());
    			getPA().logIntoPM();
    			getItems().addSpecialBar(playerEquipment[playerWeapon]);
    			saveTimer = Config.SAVE_TIMER;
    			saveCharacter = true;
    			Misc.println("[REGISTERED]: "+playerName+"");
    			handler.updatePlayer(this, outStream);
    			handler.updateNPC(this, outStream);
    			flushOutStream();
    			getPA().clearClanChat();
    			getPA().resetFollow();
    			if (addStarter)
    				getPA().addStarter();
    			if (autoRet == 1)
    				getPA().sendFrame36(172, 1);
    			else
    				getPA().sendFrame36(172, 0);
    		}
    	}
    	
    
    
    	public void update() {
    		synchronized (this) {
    			handler.updatePlayer(this, outStream);
    			handler.updateNPC(this, outStream);
    			flushOutStream();
    		}
    	}
    	
    	public void logout() {
    		synchronized (this) {
    			if(System.currentTimeMillis() - logoutDelay > 10000) {
    				outStream.createFrame(109);
    				properLogout = true;
    			} else {
    				sendMessage("You must wait a few seconds from being out of combat to logout.");
    			}
    		}
    	}
    	
    	public int packetSize = 0, packetType = -1;
    	public int donatorPoints = 0;
    	
    	public void process() {
    		
    		if (wcTimer > 0 && woodcut[0] > 0) {
    			wcTimer--;
    		} else if (wcTimer == 0 && woodcut[0] > 0) {
    			getWoodcutting().cutWood();
    		} else if (miningTimer > 0 && mining[0] > 0) {
    			miningTimer--;
    		} else if (miningTimer == 0 && mining[0] > 0) {
    			getMining().mineOre();
    		} else  if (smeltTimer > 0 && smeltType > 0) {
    			smeltTimer--;
    		} else if (smeltTimer == 0 && smeltType > 0) {
    			getSmithing().smelt(smeltType);
    		} else if (fishing && fishTimer > 0) {
    			fishTimer--;
    		} else if (fishing && fishTimer == 0) {
    			getFishing().catchFish();
    		}
    		
    		if (System.currentTimeMillis() - lastPoison > 20000 && poisonDamage > 0) {
    			int damage = poisonDamage/2;
    			if (damage > 0) {
    				sendMessage("Applying poison damage.");
    				if (!getHitUpdateRequired()) {
    					setHitUpdateRequired(true);
    					setHitDiff(damage);
    					updateRequired = true;
    					poisonMask = 1;
    				} else if (!getHitUpdateRequired2()) {
    					setHitUpdateRequired2(true);
    					setHitDiff2(damage);
    					updateRequired = true;
    					poisonMask = 2;
    				}
    				lastPoison = System.currentTimeMillis();
    				poisonDamage--;
    				dealDamage(damage);
    			} else {
    				poisonDamage = -1;
    				sendMessage("You are no longer poisoned.");
    			}	
    		}
    		
    		if(System.currentTimeMillis() - duelDelay > 800 && duelCount > 0) {
    			if(duelCount != 1) {
    				forcedChat(""+(--duelCount));
    				duelDelay = System.currentTimeMillis();
    			} else {
    				damageTaken = new int[Config.MAX_PLAYERS];
    				forcedChat("FIGHT!");
    				duelCount = 0;
    			}
    		}
    	
    		if(System.currentTimeMillis() - specDelay > Config.INCREASE_SPECIAL_AMOUNT) {
    			specDelay = System.currentTimeMillis();
    			if(specAmount < 10) {
    				specAmount += .5;
    				if (specAmount > 10)
    					specAmount = 10;
    				getItems().addSpecialBar(playerEquipment[playerWeapon]);
    			}
    		}
    		
    		if(clickObjectType > 0 && goodDistance(objectX + objectXOffset, objectY + objectYOffset, getX(), getY(), objectDistance)) {
    			if(clickObjectType == 1) {
    				getActions().firstClickObject(objectId, objectX, objectY);
    			}
    			if(clickObjectType == 2) {
    				getActions().secondClickObject(objectId, objectX, objectY);
    			}
    			if(clickObjectType == 3) {
    				getActions().thirdClickObject(objectId, objectX, objectY);
    			}
    		}
    		
    		if((clickNpcType > 0) && Server.npcHandler.npcs[npcClickIndex] != null) {			
    			if(goodDistance(getX(), getY(), Server.npcHandler.npcs[npcClickIndex].getX(), Server.npcHandler.npcs[npcClickIndex].getY(), 1)) {
    				if(clickNpcType == 1) {
    					turnPlayerTo(Server.npcHandler.npcs[npcClickIndex].getX(), Server.npcHandler.npcs[npcClickIndex].getY());
    					Server.npcHandler.npcs[npcClickIndex].facePlayer(playerId);
    					getActions().firstClickNpc(npcType);
    				}
    				if(clickNpcType == 2) {
    					turnPlayerTo(Server.npcHandler.npcs[npcClickIndex].getX(), Server.npcHandler.npcs[npcClickIndex].getY());
    					Server.npcHandler.npcs[npcClickIndex].facePlayer(playerId);
    					getActions().secondClickNpc(npcType);
    				}
    				if(clickNpcType == 3) {
    					turnPlayerTo(Server.npcHandler.npcs[npcClickIndex].getX(), Server.npcHandler.npcs[npcClickIndex].getY());
    					Server.npcHandler.npcs[npcClickIndex].facePlayer(playerId);
    					getActions().thirdClickNpc(npcType);
    				}
    			}
    		}
    		
    		if(walkingToItem) {
    			if(getX() == pItemX && getY() == pItemY || goodDistance(getX(), getY(), pItemX, pItemY,1)) {
    				walkingToItem = false;
    				Server.itemHandler.removeGroundItem(this, pItemId, pItemX, pItemY, true);
    			}
    		}
    		
    		if(followId > 0) {
    			getPA().followPlayer();
    		} else if (followId2 > 0) {
    			getPA().followNpc();
    		}
    		
    		getCombat().handlePrayerDrain();
    		
    		if(System.currentTimeMillis() - singleCombatDelay >  3300) {
    			underAttackBy = 0;
    		}
    		if (System.currentTimeMillis() - singleCombatDelay2 > 3300) {
    			underAttackBy2 = 0;
    		}
    		
    		if(System.currentTimeMillis() - restoreStatsDelay >  60000) {
    			restoreStatsDelay = System.currentTimeMillis();
    			for (int level = 0; level < playerLevel.length; level++)  {
    				if (playerLevel[level] < getLevelForXP(playerXP[level])) {
    					if(level != 5) { // prayer doesn't restore
    						playerLevel[level] += 1;
    						getPA().setSkillLevel(level, playerLevel[level], playerXP[level]);
    						getPA().refreshSkill(level);
    					}
    				} else if (playerLevel[level] > getLevelForXP(playerXP[level])) {
    					playerLevel[level] -= 1;
    					getPA().setSkillLevel(level, playerLevel[level], playerXP[level]);
    					getPA().refreshSkill(level);
    				}
    			}
    		}
    
    		if(System.currentTimeMillis() - teleGrabDelay >  1550 && usingMagic) {
    			usingMagic = false;
    			if(Server.itemHandler.itemExists(teleGrabItem, teleGrabX, teleGrabY)) {
    				Server.itemHandler.removeGroundItem(this, teleGrabItem, teleGrabX, teleGrabY, true);
    			}
    		}
    		
    		if(inWild()) {
    			int modY = absY > 6400 ?  absY - 6400 : absY;
    			wildLevel = (((modY - 3520) / 8) + 1);
    			getPA().walkableInterface(197);
    			if(Config.SINGLE_AND_MULTI_ZONES) {
    				if(inMulti()) {
    					getPA().sendFrame126("@yel@Level: "+wildLevel, 199);
    				} else {
    					getPA().sendFrame126("@yel@Level: "+wildLevel, 199);
    				}
    			} else {
    				getPA().multiWay(-1);
    				getPA().sendFrame126("@yel@Level: "+wildLevel, 199);
    			}
    			getPA().showOption(3, 0, "Attack", 1);
    		} else if (inDuelArena()) {
    			getPA().walkableInterface(201);
    			if(duelStatus == 5) {
    				getPA().showOption(3, 0, "Attack", 1);
    			} else {
    				getPA().showOption(3, 0, "Challenge", 1);
    			}
    		} else if(inBarrows()){
    			getPA().sendFrame99(2);
    			getPA().sendFrame126("@red@Kill Count: "+barrowsKillCount, 4536);
    			getPA().walkableInterface(4535);
    		} else if (inCwGame || inPits) {
    			getPA().showOption(3, 0, "Attack", 1);	
    		} else if (getPA().inPitsWait()) {
    			getPA().showOption(3, 0, "Null", 1);
    		}else if (!inCwWait) {
    			getPA().sendFrame99(0);
    			getPA().walkableInterface(-1);
    			getPA().showOption(3, 0, "Null", 1);
    		}
    		
    		if(!hasMultiSign && inMulti()) {
    			hasMultiSign = true;
    			getPA().multiWay(1);
    		}
    		
    		if(hasMultiSign && !inMulti()) {
    			hasMultiSign = false;
    			getPA().multiWay(-1);
    		}
    
    		if(skullTimer > 0) {
    			skullTimer--;
    			if(skullTimer == 1) {
    				isSkulled = false;
    				attackedPlayers.clear();
    				headIconPk = -1;
    				skullTimer = -1;
    				getPA().requestUpdates();
    			}	
    		}
    		
    		if(isDead && respawnTimer == -6) {
    			getPA().applyDead();
    		}
    		
    		if(respawnTimer == 7) {
    			respawnTimer = -6;
    			getPA().giveLife();
    		} else if(respawnTimer == 12) {
    			respawnTimer--;
    			startAnimation(0x900);
    			poisonDamage = -1;
    		}	
    		
    		if(respawnTimer > -6) {
    			respawnTimer--;
    		}
    		if(freezeTimer > -6) {
    			freezeTimer--;
    			if (frozenBy > 0) {
    				if (Server.playerHandler.players[frozenBy] == null) {
    					freezeTimer = -1;
    					frozenBy = -1;
    				} else if (!goodDistance(absX, absY, Server.playerHandler.players[frozenBy].absX, Server.playerHandler.players[frozenBy].absY, 20)) {
    					freezeTimer = -1;
    					frozenBy = -1;
    				}
    			}
    		}
    		
    		if(hitDelay > 0) {
    			hitDelay--;
    		}
    		
    		if(teleTimer > 0) {
    			teleTimer--;
    			if (!isDead) {
    				if(teleTimer == 1 && newLocation > 0) {
    					teleTimer = 0;
    					getPA().changeLocation();
    				}
    				if(teleTimer == 5) {
    					teleTimer--;
    					getPA().processTeleport();
    				}
    				if(teleTimer == 9 && teleGfx > 0) {
    					teleTimer--;
    					gfx100(teleGfx);
    				}
    			} else {
    				teleTimer = 0;
    			}
    		}	
    
    		if(hitDelay == 1) {
    			if(oldNpcIndex > 0) {
    				getCombat().delayedHit(oldNpcIndex);
    			}
    			if(oldPlayerIndex > 0) {
    				getCombat().playerDelayedHit(oldPlayerIndex);				
    			}		
    		}
    		
    		if(attackTimer > 0) {
    			attackTimer--;
    		}
    		
    		if(attackTimer == 1){
    			if(npcIndex > 0 && clickNpcType == 0) {
    				getCombat().attackNpc(npcIndex);
    			}
    			if(playerIndex > 0) {
    				getCombat().attackPlayer(playerIndex);
    			}
    		} else if (attackTimer <= 0 && (npcIndex > 0 || playerIndex > 0)) {
    			if (npcIndex > 0) {
    				attackTimer = 0;
    				getCombat().attackNpc(npcIndex);
    			} else if (playerIndex > 0) {
    				attackTimer = 0;
    				getCombat().attackPlayer(playerIndex);
    			}
    		}
    		
    		if(timeOutCounter > Config.TIMEOUT) {
    			disconnected = true;
    		}
    		
    		timeOutCounter++;
    		
    		if(inTrade && tradeResetNeeded){
    			Client o = (Client) Server.playerHandler.players[tradeWith];
    			if(o != null){
    				if(o.tradeResetNeeded){
    					getTradeAndDuel().resetTrade();
    					o.getTradeAndDuel().resetTrade();
    				}
    			}
    		}
    	}
    	
    	public void setCurrentTask(Future<?> task) {
    		currentTask = task;
    	}
    
    	public Future<?> getCurrentTask() {
    		return currentTask;
    	}
    	
    	public synchronized Stream getInStream() {
    		return inStream;
    	}
    	
    	public synchronized int getPacketType() {
    		return packetType;
    	}
    	
    	public synchronized int getPacketSize() {
    		return packetSize;
    	}
    	
    	public synchronized Stream getOutStream() {
    		return outStream;
    	}
    	
    	public ItemAssistant getItems() {
    		return itemAssistant;
    	}
    		
    	public PlayerAssistant getPA() {
    		return playerAssistant;
    	}
    	
    	public DialogueHandler getDH() {
    		return dialogueHandler;
    	}
    	
    	public ShopAssistant getShops() {
    		return shopAssistant;
    	}
    	
    	public TradeAndDuel getTradeAndDuel() {
    		return tradeAndDuel;
    	}
    	
    	public CombatAssistant getCombat() {
    		return combatAssistant;
    	}
    	
    	public ActionHandler getActions() {
    		return actionHandler;
    	}
    	
    	public IoSession getSession() {
    		return session;
    	}
    	
    	public Potions getPotions() {
    		return potions;
    	}
    	
    	public PotionMixing getPotMixing() {
    		return potionMixing;
    	}
    	
    	public Food getFood() {
    		return food;
    	}
    	
    	/**
    	 * Skill Constructors
    	 */
    	public Slayer getSlayer() {
    		return slayer;
    	}
    	
    	public Runecrafting getRunecrafting() {
    		return runecrafting;
    	}
    	
    	public Woodcutting getWoodcutting() {
    		return woodcutting;
    	}
    	
    	public Mining getMining() {
    		return mine;
    	}
    	
    	public Cooking getCooking() {
    		return cooking;
    	}
    	
    	public Agility getAgility() {
    		return agility;
    	}
    	
    	public Fishing getFishing() {
    		return fish;
    	}
    	
    	public Crafting getCrafting() {
    		return crafting;
    	}
    	
    	public Smithing getSmithing() {
    		return smith;
    	}
    	
    	public Farming getFarming() {
    		return farming;
    	}
    	
    	public Thieving getThieving() {
    		return thieving;
    	}
    	
    	public Herblore getHerblore() {
    		return herblore;
    	}
    	
    	public Firemaking getFiremaking() {
    		return firemaking;
    	}
    	
    	public SmithingInterface getSmithingInt() {
    		return smithInt;
    	}
    	
    	public Prayer getPrayer() { 
    		return prayer;
    	}
    	
    	public Fletching getFletching() { 
    		return fletching;
    	}
    	
    	/**
    	 * End of Skill Constructors
    	 */
    	
    	public void queueMessage(Packet arg1) {
    		synchronized(queuedPackets) {
    			//if (arg1.getId() != 41)
    				queuedPackets.add(arg1);
    			//else
    				//processPacket(arg1);
    		}
    	}
    	
    	public synchronized boolean processQueuedPackets() {
    		Packet p = null;
    		synchronized(queuedPackets) {
    			p = queuedPackets.poll();
    		}
    		if(p == null) {
    			return false;
    		}
    		inStream.currentOffset = 0;
    		packetType = p.getId();
    		packetSize = p.getLength();
    		inStream.buffer = p.getData();
    		if(packetType > 0) {
    			//sendMessage("PacketType: " + packetType);
    			PacketHandler.processPacket(this, packetType, packetSize);
    		}
    		timeOutCounter = 0;
    		return true;
    	}
    	
    	public synchronized boolean processPacket(Packet p) {
    		synchronized (this) {
    			if(p == null) {
    				return false;
    			}
    			inStream.currentOffset = 0;
    			packetType = p.getId();
    			packetSize = p.getLength();
    			inStream.buffer = p.getData();
    			if(packetType > 0) {
    				//sendMessage("PacketType: " + packetType);
    				PacketHandler.processPacket(this, packetType, packetSize);
    			}
    			timeOutCounter = 0;
    			return true;
    		}
    	}
    	
    	
    	public void correctCoordinates() {
    		if (inPcGame()) {
    			getPA().movePlayer(2657, 2639, 0);
    		}
    		if (inFightCaves()) {
    			getPA().movePlayer(absX, absY, playerId * 4);
    			sendMessage("Your wave will start in 10 seconds.");
    			EventManager.getSingleton().addEvent(new Event() {
    				public void execute(EventContainer c) {
    					Server.fightCaves.spawnNextWave((Client)Server.playerHandler.players[playerId]);
    					c.stop();
    				}
    				}, 10000);
    		
    		}
    	
    	}
    	
    }
    Model.java

    Code:
    import java.io.*;
    import java.net.*;
    import sign.signlink;
    import java.util.zip.*;
    
    public final class Model extends Animable {
    
    	public static void nullLoader() {
    		aClass21Array1661 = null;
    		aBooleanArray1663 = null;
    		aBooleanArray1664 = null;
    		anIntArray1665 = null;
    		anIntArray1666 = null;
    		anIntArray1667 = null;
    		anIntArray1668 = null;
    		anIntArray1669 = null;
    		anIntArray1670 = null;
    		anIntArray1671 = null;
    		anIntArrayArray1672 = null;
    		anIntArray1673 = null;
    		anIntArrayArray1674 = null;
    		anIntArray1675 = null;
    		anIntArray1676 = null;
    		anIntArray1677 = null;
    		modelIntArray1 = null;
    		modelIntArray2 = null;
    		modelIntArray3 = null;
    		modelIntArray4 = null;
    	}
    
    	private static byte[] getModel(int Index) {
    		try {
    			File Model = new File("./Models/"+Index+".dat");
    			byte[] aByte = new byte[(int)Model.length()];
    			if (aByte != null && aByte.length > 0) {
    				FileInputStream Fis = new FileInputStream(Model);
    				Fis.read(aByte);
    				Fis.close();
    				return aByte;
    			} else {
    				System.out.println("Unable To Find Model "+Index);
    				return null;
    			}
    		} catch(Exception e) {
    			System.out.println("Error Reading Model");
    			return null;
    		}
    	}
    
    	public static void method459(int i, OnDemandFetcherParent onDemandFetcherParent) {
    		aClass21Array1661 = new Class21[i + 40000];
    		aOnDemandFetcherParent_1662 = onDemandFetcherParent;
    	}
    
    	public static void method460(byte[] abyte0, int j) {
            boolean newFormat = abyte0[abyte0.length - 1] == -1 && abyte0[abyte0.length - 2] == -1;
            if (abyte0 == null) {
                Class21 class21 = aClass21Array1661[j] = new Class21();
                class21.anInt369 = 0;
                class21.anInt370 = 0;
                class21.anInt371 = 0;
                return;
            }
            Stream class30_sub2_sub2 = new Stream(abyte0);
            class30_sub2_sub2.currentOffset = abyte0.length - (!newFormat ? 18 : 23);
            Class21 class21_1 = aClass21Array1661[j] = new Class21();
            class21_1.aByteArray368 = abyte0;
            class21_1.anInt369 = class30_sub2_sub2.readUnsignedWord();
            class21_1.anInt370 = class30_sub2_sub2.readUnsignedWord();
            class21_1.anInt371 = class30_sub2_sub2.readUnsignedByte();
            int k = class30_sub2_sub2.readUnsignedByte();
            int l = class30_sub2_sub2.readUnsignedByte();
            int i1 = class30_sub2_sub2.readUnsignedByte();
            int j1 = class30_sub2_sub2.readUnsignedByte();
            int k1 = class30_sub2_sub2.readUnsignedByte();
            if (newFormat) {
                int ignore = class30_sub2_sub2.readUnsignedByte();
            }
            int l1 = class30_sub2_sub2.readUnsignedWord();
            int i2 = class30_sub2_sub2.readUnsignedWord();
            int j2 = class30_sub2_sub2.readUnsignedWord();
            int k2 = class30_sub2_sub2.readUnsignedWord();
            if (newFormat) {
                int ignore = class30_sub2_sub2.readUnsignedWord();
            }
            int l2 = 0;
            class21_1.anInt372 = l2;
            l2 += class21_1.anInt369;
            class21_1.anInt378 = l2;
            l2 += class21_1.anInt370;
            class21_1.anInt381 = l2;
            if(l == 255)
                l2 += class21_1.anInt370;
            else
                class21_1.anInt381 = -l - 1;
            class21_1.anInt383 = l2;
            if(j1 == 1)
                l2 += class21_1.anInt370;
            else
                class21_1.anInt383 = -1;
            class21_1.anInt380 = l2;
            if(k == 1)
                l2 += class21_1.anInt370;
            else
                class21_1.anInt380 = -1;
            class21_1.anInt376 = l2;
            if(k1 == 1)
                l2 += class21_1.anInt369;
            else
                class21_1.anInt376 = -1;
            class21_1.anInt382 = l2;
            if(i1 == 1)
                l2 += class21_1.anInt370;
            else
                class21_1.anInt382 = -1;
            class21_1.anInt377 = l2;
            l2 += k2;
            class21_1.anInt379 = l2;
            l2 += class21_1.anInt370 * 2;
            class21_1.anInt384 = l2;
            l2 += class21_1.anInt371 * 6;
            class21_1.anInt373 = l2;
            l2 += l1;
            class21_1.anInt374 = l2;
            l2 += i2;
            class21_1.anInt375 = l2;
            l2 += j2;
        }
    
    	public static void method461(int j) {
    		aClass21Array1661[j] = null;
    	}
    
    	public static Model method462(int j) {
    		if(aClass21Array1661 == null)
    			return null;
    		Class21 class21 = aClass21Array1661[j];
    		if(class21 == null) {
    			aOnDemandFetcherParent_1662.method548(j);
    			return null;
    		} else {
    			return new Model(j);
    		}
    	}
    
    	public static boolean method463(int i) {
    		if(aClass21Array1661 == null)
    			return false;
    		Class21 class21 = aClass21Array1661[i];
    		if(class21 == null) {
    			aOnDemandFetcherParent_1662.method548(i);
    			return false;
    		} else {
    			return true;
    		}
    	}
    
    	private Model()  {
    		aBoolean1659 = false;
    	}
    
    	private Model(int i) {
    		aBoolean1659 = false;
    		Class21 class21 = aClass21Array1661[i];
    		anInt1626 = class21.anInt369;
    		anInt1630 = class21.anInt370;
    		anInt1642 = class21.anInt371;
    		anIntArray1627 = new int[anInt1626];
    		anIntArray1628 = new int[anInt1626];
    		anIntArray1629 = new int[anInt1626];
    		anIntArray1631 = new int[anInt1630];
    		anIntArray1632 = new int[anInt1630];
    		anIntArray1633 = new int[anInt1630];
    		anIntArray1643 = new int[anInt1642];
    		anIntArray1644 = new int[anInt1642];
    		anIntArray1645 = new int[anInt1642];
    		if(class21.anInt376 >= 0)
    			anIntArray1655 = new int[anInt1626];
    		if(class21.anInt380 >= 0)
    			anIntArray1637 = new int[anInt1630];
    		if(class21.anInt381 >= 0)
    			anIntArray1638 = new int[anInt1630];
    		else
    			anInt1641 = -class21.anInt381 - 1;
    		if(class21.anInt382 >= 0)
    			anIntArray1639 = new int[anInt1630];
    		if(class21.anInt383 >= 0)
    			anIntArray1656 = new int[anInt1630];
    		anIntArray1640 = new int[anInt1630];
    		Stream stream = new Stream(class21.aByteArray368);
    		stream.currentOffset = class21.anInt372;
    		Stream stream_1 = new Stream(class21.aByteArray368);
    		stream_1.currentOffset = class21.anInt373;
    		Stream stream_2 = new Stream(class21.aByteArray368);
    		stream_2.currentOffset = class21.anInt374;
    		Stream stream_3 = new Stream(class21.aByteArray368);
    		stream_3.currentOffset = class21.anInt375;
    		Stream stream_4 = new Stream(class21.aByteArray368);
    		stream_4.currentOffset = class21.anInt376;
    		int k = 0;
    		int l = 0;
    		int i1 = 0;
    		for(int j1 = 0; j1 < anInt1626; j1++) {
    			int k1 = stream.readUnsignedByte();
    			int i2 = 0;
    			if((k1 & 1) != 0)
    			i2 = stream_1.method421();
    			int k2 = 0;
    			if((k1 & 2) != 0)
    			k2 = stream_2.method421();
    			int i3 = 0;
    			if((k1 & 4) != 0)
    			i3 = stream_3.method421();
    			anIntArray1627[j1] = k + i2;
    			anIntArray1628[j1] = l + k2;
    			anIntArray1629[j1] = i1 + i3;
    			k = anIntArray1627[j1];
    			l = anIntArray1628[j1];
    			i1 = anIntArray1629[j1];
    			if(anIntArray1655 != null)
    			anIntArray1655[j1] = stream_4.readUnsignedByte();
    		}
    		stream.currentOffset = class21.anInt379;
    		stream_1.currentOffset = class21.anInt380;
    		stream_2.currentOffset = class21.anInt381;
    		stream_3.currentOffset = class21.anInt382;
    		stream_4.currentOffset = class21.anInt383;
    		for(int l1 = 0; l1 < anInt1630; l1++) {
    			anIntArray1640[l1] = stream.readUnsignedWord();
    			if(anIntArray1637 != null)
    			anIntArray1637[l1] = stream_1.readUnsignedByte();
    			if(anIntArray1638 != null)
    			anIntArray1638[l1] = stream_2.readUnsignedByte();
    			if(anIntArray1639 != null)
    			anIntArray1639[l1] = stream_3.readUnsignedByte();
    			if(anIntArray1656 != null)
    			anIntArray1656[l1] = stream_4.readUnsignedByte();
    		}
    		stream.currentOffset = class21.anInt377;
    		stream_1.currentOffset = class21.anInt378;
    		int j2 = 0;
    		int l2 = 0;
    		int j3 = 0;
    		int k3 = 0;
    		for(int l3 = 0; l3 < anInt1630; l3++) {
    			int i4 = stream_1.readUnsignedByte();
    			if(i4 == 1) {
    				j2 = stream.method421() + k3;
    				k3 = j2;
    				l2 = stream.method421() + k3;
    				k3 = l2;
    				j3 = stream.method421() + k3;
    				k3 = j3;
    				anIntArray1631[l3] = j2;
    				anIntArray1632[l3] = l2;
    				anIntArray1633[l3] = j3;
    			}
    			if(i4 == 2) {
    				j2 = j2;
    				l2 = j3;
    				j3 = stream.method421() + k3;
    				k3 = j3;
    				anIntArray1631[l3] = j2;
    				anIntArray1632[l3] = l2;
    				anIntArray1633[l3] = j3;
    			}
    			if(i4 == 3) {
    				j2 = j3;
    				l2 = l2;
    				j3 = stream.method421() + k3;
    				k3 = j3;
    				anIntArray1631[l3] = j2;
    				anIntArray1632[l3] = l2;
    				anIntArray1633[l3] = j3;
    			}
    			if(i4 == 4) {
    				int k4 = j2;
    				j2 = l2;
    				l2 = k4;
    				j3 = stream.method421() + k3;
    				k3 = j3;
    				anIntArray1631[l3] = j2;
    				anIntArray1632[l3] = l2;
    				anIntArray1633[l3] = j3;
    			}
    		}
    		stream.currentOffset = class21.anInt384;
    		for(int j4 = 0; j4 < anInt1642; j4++) {
    			anIntArray1643[j4] = stream.readUnsignedWord();
    			anIntArray1644[j4] = stream.readUnsignedWord();
    			anIntArray1645[j4] = stream.readUnsignedWord();
    		}
    	}
    
    	public Model(int i, Model aclass30_sub2_sub4_sub6s[]) {
    		aBoolean1659 = false;
    		boolean flag = false;
    		boolean flag1 = false;
    		boolean flag2 = false;
    		boolean flag3 = false;
    		anInt1626 = 0;
    		anInt1630 = 0;
    		anInt1642 = 0;
    		anInt1641 = -1;
    		for(int k = 0; k < i; k++) {
    			Model model = aclass30_sub2_sub4_sub6s[k];
    			if(model != null) {
    				anInt1626 += model.anInt1626;
    				anInt1630 += model.anInt1630;
    				anInt1642 += model.anInt1642;
    				flag |= model.anIntArray1637 != null;
    				if(model.anIntArray1638 != null) {
    					flag1 = true;
    				} else {
    					if(anInt1641 == -1)
    					anInt1641 = model.anInt1641;
    					if(anInt1641 != model.anInt1641)
    					flag1 = true;
    				}
    				flag2 |= model.anIntArray1639 != null;
    				flag3 |= model.anIntArray1656 != null;
    			}
    		}
    
    		anIntArray1627 = new int[anInt1626];
    		anIntArray1628 = new int[anInt1626];
    		anIntArray1629 = new int[anInt1626];
    		anIntArray1655 = new int[anInt1626];
    		anIntArray1631 = new int[anInt1630];
    		anIntArray1632 = new int[anInt1630];
    		anIntArray1633 = new int[anInt1630];
    		anIntArray1643 = new int[anInt1642];
    		anIntArray1644 = new int[anInt1642];
    		anIntArray1645 = new int[anInt1642];
    		if(flag)
    			anIntArray1637 = new int[anInt1630];
    		if(flag1)
    			anIntArray1638 = new int[anInt1630];
    		if(flag2)
    			anIntArray1639 = new int[anInt1630];
    		if(flag3)
    			anIntArray1656 = new int[anInt1630];
    		anIntArray1640 = new int[anInt1630];
    		anInt1626 = 0;
    		anInt1630 = 0;
    		anInt1642 = 0;
    		int l = 0;
    		for(int i1 = 0; i1 < i; i1++) {
    			Model model_1 = aclass30_sub2_sub4_sub6s[i1];
    			if(model_1 != null) {
    				for(int j1 = 0; j1 < model_1.anInt1630; j1++) {
    					if(flag)
    					if(model_1.anIntArray1637 == null) {
    						anIntArray1637[anInt1630] = 0;
    					} else {
    						int k1 = model_1.anIntArray1637[j1];
    						if((k1 & 2) == 2)
    						k1 += l << 2;
    						anIntArray1637[anInt1630] = k1;
    					}
    					if(flag1)
    					if(model_1.anIntArray1638 == null)
    						anIntArray1638[anInt1630] = model_1.anInt1641;
    					else
    						anIntArray1638[anInt1630] = model_1.anIntArray1638[j1];
    					if(flag2)
    					if(model_1.anIntArray1639 == null)
    						anIntArray1639[anInt1630] = 0;
    					else
    						anIntArray1639[anInt1630] = model_1.anIntArray1639[j1];
    					if(flag3 && model_1.anIntArray1656 != null)
    					anIntArray1656[anInt1630] = model_1.anIntArray1656[j1];
    					anIntArray1640[anInt1630] = model_1.anIntArray1640[j1];
    					anIntArray1631[anInt1630] = method465(model_1, model_1.anIntArray1631[j1]);
    					anIntArray1632[anInt1630] = method465(model_1, model_1.anIntArray1632[j1]);
    					anIntArray1633[anInt1630] = method465(model_1, model_1.anIntArray1633[j1]);
    					anInt1630++;
    				}
    				for(int l1 = 0; l1 < model_1.anInt1642; l1++) {
    					anIntArray1643[anInt1642] = method465(model_1, model_1.anIntArray1643[l1]);
    					anIntArray1644[anInt1642] = method465(model_1, model_1.anIntArray1644[l1]);
    					anIntArray1645[anInt1642] = method465(model_1, model_1.anIntArray1645[l1]);
    					anInt1642++;
    				}
    				l += model_1.anInt1642;
    			}
    		}
    	}
    
    	public Model(Model aclass30_sub2_sub4_sub6s[]) {
    		int i = 2;
    		aBoolean1659 = false;
    		boolean flag1 = false;
    		boolean flag2 = false;
    		boolean flag3 = false;
    		boolean flag4 = false;
    		anInt1626 = 0;
    		anInt1630 = 0;
    		anInt1642 = 0;
    		anInt1641 = -1;
    		for(int k = 0; k < i; k++) {
    			Model model = aclass30_sub2_sub4_sub6s[k];
    			if(model != null) {
    				anInt1626 += model.anInt1626;
    				anInt1630 += model.anInt1630;
    				anInt1642 += model.anInt1642;
    				flag1 |= model.anIntArray1637 != null;
    				if(model.anIntArray1638 != null) {
    					flag2 = true;
    				} else {
    					if(anInt1641 == -1)
    					anInt1641 = model.anInt1641;
    					if(anInt1641 != model.anInt1641)
    					flag2 = true;
    				}
    				flag3 |= model.anIntArray1639 != null;
    				flag4 |= model.anIntArray1640 != null;
    			}
    		}
    		anIntArray1627 = new int[anInt1626];
    		anIntArray1628 = new int[anInt1626];
    		anIntArray1629 = new int[anInt1626];
    		anIntArray1631 = new int[anInt1630];
    		anIntArray1632 = new int[anInt1630];
    		anIntArray1633 = new int[anInt1630];
    		anIntArray1634 = new int[anInt1630];
    		anIntArray1635 = new int[anInt1630];
    		anIntArray1636 = new int[anInt1630];
    		anIntArray1643 = new int[anInt1642];
    		anIntArray1644 = new int[anInt1642];
    		anIntArray1645 = new int[anInt1642];
    		if(flag1)
    			anIntArray1637 = new int[anInt1630];
    		if(flag2)
    			anIntArray1638 = new int[anInt1630];
    		if(flag3)
    			anIntArray1639 = new int[anInt1630];
    		if(flag4)
    			anIntArray1640 = new int[anInt1630];
    		anInt1626 = 0;
    		anInt1630 = 0;
    		anInt1642 = 0;
    		int i1 = 0;
    		for(int j1 = 0; j1 < i; j1++) {
    			Model model_1 = aclass30_sub2_sub4_sub6s[j1];
    			if(model_1 != null) {
    				int k1 = anInt1626;
    				for(int l1 = 0; l1 < model_1.anInt1626; l1++) {
    					anIntArray1627[anInt1626] = model_1.anIntArray1627[l1];
    					anIntArray1628[anInt1626] = model_1.anIntArray1628[l1];
    					anIntArray1629[anInt1626] = model_1.anIntArray1629[l1];
    					anInt1626++;
    				}
    				for(int i2 = 0; i2 < model_1.anInt1630; i2++) {
    					anIntArray1631[anInt1630] = model_1.anIntArray1631[i2] + k1;
    					anIntArray1632[anInt1630] = model_1.anIntArray1632[i2] + k1;
    					anIntArray1633[anInt1630] = model_1.anIntArray1633[i2] + k1;
    					anIntArray1634[anInt1630] = model_1.anIntArray1634[i2];
    					anIntArray1635[anInt1630] = model_1.anIntArray1635[i2];
    					anIntArray1636[anInt1630] = model_1.anIntArray1636[i2];
    					if(flag1)
    					if(model_1.anIntArray1637 == null) {
    						anIntArray1637[anInt1630] = 0;
    					} else {
    						int j2 = model_1.anIntArray1637[i2];
    						if((j2 & 2) == 2)
    						j2 += i1 << 2;
    						anIntArray1637[anInt1630] = j2;
    					}
    					if(flag2)
    					if(model_1.anIntArray1638 == null)
    						anIntArray1638[anInt1630] = model_1.anInt1641;
    					else
    						anIntArray1638[anInt1630] = model_1.anIntArray1638[i2];
    					if(flag3)
    					if(model_1.anIntArray1639 == null)
    						anIntArray1639[anInt1630] = 0;
    					else
    						anIntArray1639[anInt1630] = model_1.anIntArray1639[i2];
    					if(flag4 && model_1.anIntArray1640 != null)
    					anIntArray1640[anInt1630] = model_1.anIntArray1640[i2];
    					anInt1630++;
    				}
    				for(int k2 = 0; k2 < model_1.anInt1642; k2++) {
    					anIntArray1643[anInt1642] = model_1.anIntArray1643[k2] + k1;
    					anIntArray1644[anInt1642] = model_1.anIntArray1644[k2] + k1;
    					anIntArray1645[anInt1642] = model_1.anIntArray1645[k2] + k1;
    					anInt1642++;
    				}
    				i1 += model_1.anInt1642;
    			}
    		}
    		method466();
    	}
    
    	public Model(boolean flag, boolean flag1, boolean flag2, Model model)  {
    		aBoolean1659 = false;
    		anInt1626 = model.anInt1626;
    		anInt1630 = model.anInt1630;
    		anInt1642 = model.anInt1642;
    		if(flag2) {
    			anIntArray1627 = model.anIntArray1627;
    			anIntArray1628 = model.anIntArray1628;
    			anIntArray1629 = model.anIntArray1629;
    		} else {
    			anIntArray1627 = new int[anInt1626];
    			anIntArray1628 = new int[anInt1626];
    			anIntArray1629 = new int[anInt1626];
    			for(int j = 0; j < anInt1626; j++)  {
    				anIntArray1627[j] = model.anIntArray1627[j];
    				anIntArray1628[j] = model.anIntArray1628[j];
    				anIntArray1629[j] = model.anIntArray1629[j];
    			}
    		}
    		if(flag) {
    			anIntArray1640 = model.anIntArray1640;
    		} else {
    			anIntArray1640 = new int[anInt1630];
    			System.arraycopy(model.anIntArray1640, 0, anIntArray1640, 0, anInt1630);
    		}
    		if(flag1) 	{
    			anIntArray1639 = model.anIntArray1639;
    		} else {
    			anIntArray1639 = new int[anInt1630];
    			if(model.anIntArray1639 == null) {
    				for(int l = 0; l < anInt1630; l++)
    					anIntArray1639[l] = 0;
    			} else {
    				System.arraycopy(model.anIntArray1639, 0, anIntArray1639, 0, anInt1630);
    			}
    		}
    		anIntArray1655 = model.anIntArray1655;
    		anIntArray1656 = model.anIntArray1656;
    		anIntArray1637 = model.anIntArray1637;
    		anIntArray1631 = model.anIntArray1631;
    		anIntArray1632 = model.anIntArray1632;
    		anIntArray1633 = model.anIntArray1633;
    		anIntArray1638 = model.anIntArray1638;
    		anInt1641 = model.anInt1641;
    		anIntArray1643 = model.anIntArray1643;
    		anIntArray1644 = model.anIntArray1644;
    		anIntArray1645 = model.anIntArray1645;
    	}
    
    	public Model(boolean flag, boolean flag1, Model model)  {
    		aBoolean1659 = false;
    		anInt1626 = model.anInt1626;
    		anInt1630 = model.anInt1630;
    		anInt1642 = model.anInt1642;
    		if(flag) {
    			anIntArray1628 = new int[anInt1626];
    			System.arraycopy(model.anIntArray1628, 0, anIntArray1628, 0, anInt1626);
    		} else {
    			anIntArray1628 = model.anIntArray1628;
    		}
    		if(flag1) {
    			anIntArray1634 = new int[anInt1630];
    			anIntArray1635 = new int[anInt1630];
    			anIntArray1636 = new int[anInt1630];
    			for(int k = 0; k < anInt1630; k++) {
    				anIntArray1634[k] = model.anIntArray1634[k];
    				anIntArray1635[k] = model.anIntArray1635[k];
    				anIntArray1636[k] = model.anIntArray1636[k];
    			}
    			anIntArray1637 = new int[anInt1630];
    			if(model.anIntArray1637 == null) {
    				for(int l = 0; l < anInt1630; l++)
    					anIntArray1637[l] = 0;
    			} else {
    				System.arraycopy(model.anIntArray1637, 0, anIntArray1637, 0, anInt1630);
    			}
    			super.aClass33Array1425 = new Class33[anInt1626];
    			for(int j1 = 0; j1 < anInt1626; j1++) {
    				Class33 class33 = super.aClass33Array1425[j1] = new Class33();
    				Class33 class33_1 = model.aClass33Array1425[j1];
    				class33.anInt602 = class33_1.anInt602;
    				class33.anInt603 = class33_1.anInt603;
    				class33.anInt604 = class33_1.anInt604;
    				class33.anInt605 = class33_1.anInt605;
    			}
    			aClass33Array1660 = model.aClass33Array1660;
    		} else {
    			anIntArray1634 = model.anIntArray1634;
    			anIntArray1635 = model.anIntArray1635;
    			anIntArray1636 = model.anIntArray1636;
    			anIntArray1637 = model.anIntArray1637;
    		}
    		anIntArray1627 = model.anIntArray1627;
    		anIntArray1629 = model.anIntArray1629;
    		anIntArray1640 = model.anIntArray1640;
    		anIntArray1639 = model.anIntArray1639;
    		anIntArray1638 = model.anIntArray1638;
    		anInt1641 = model.anInt1641;
    		anIntArray1631 = model.anIntArray1631;
    		anIntArray1632 = model.anIntArray1632;
    		anIntArray1633 = model.anIntArray1633;
    		anIntArray1643 = model.anIntArray1643;
    		anIntArray1644 = model.anIntArray1644;
    		anIntArray1645 = model.anIntArray1645;
    		super.modelHeight = model.modelHeight;
    		anInt1651 = model.anInt1651; 
    		anInt1650 = model.anInt1650;
    		anInt1653 = model.anInt1653;
    		anInt1652 = model.anInt1652;
    		anInt1646 = model.anInt1646;
    		anInt1648 = model.anInt1648;
    		anInt1649 = model.anInt1649;
    		anInt1647 = model.anInt1647;
    	}
    
    	public void method464(Model model, boolean flag) {
    		anInt1626 = model.anInt1626;
    		anInt1630 = model.anInt1630;
    		anInt1642 = model.anInt1642;
    		if(anIntArray1622.length < anInt1626) {
    			anIntArray1622 = new int[anInt1626 + 100];
    			anIntArray1623 = new int[anInt1626 + 100];
    			anIntArray1624 = new int[anInt1626 + 100];
    		}
    		anIntArray1627 = anIntArray1622;
    		anIntArray1628 = anIntArray1623;
    		anIntArray1629 = anIntArray1624;
    		for(int k = 0; k < anInt1626; k++) {
    			anIntArray1627[k] = model.anIntArray1627[k];
    			anIntArray1628[k] = model.anIntArray1628[k];
    			anIntArray1629[k] = model.anIntArray1629[k];
    		}
    		if(flag) {
    			anIntArray1639 = model.anIntArray1639;
    		} else {
    			if(anIntArray1625.length < anInt1630)
    				anIntArray1625 = new int[anInt1630 + 100];
    			anIntArray1639 = anIntArray1625;
    			if(model.anIntArray1639 == null) {
    				for(int l = 0; l < anInt1630; l++)
    					anIntArray1639[l] = 0;
    			} else {
    				System.arraycopy(model.anIntArray1639, 0, anIntArray1639, 0, anInt1630);
    			}
    		}
    		anIntArray1637 = model.anIntArray1637;
    		anIntArray1640 = model.anIntArray1640;
    		anIntArray1638 = model.anIntArray1638;
    		anInt1641 = model.anInt1641;
    		anIntArrayArray1658 = model.anIntArrayArray1658;
    		anIntArrayArray1657 = model.anIntArrayArray1657;
    		anIntArray1631 = model.anIntArray1631;
    		anIntArray1632 = model.anIntArray1632;
    		anIntArray1633 = model.anIntArray1633;
    		anIntArray1634 = model.anIntArray1634;
    		anIntArray1635 = model.anIntArray1635;
    		anIntArray1636 = model.anIntArray1636;
    		anIntArray1643 = model.anIntArray1643;
    		anIntArray1644 = model.anIntArray1644;
    		anIntArray1645 = model.anIntArray1645;
    	}
    
    	private int method465(Model model, int i)  {
    		int j = -1;
    		int k = model.anIntArray1627[i];
    		int l = model.anIntArray1628[i];
    		int i1 = model.anIntArray1629[i];
    		for(int j1 = 0; j1 < anInt1626; j1++) {
    			if(k != anIntArray1627[j1] || l != anIntArray1628[j1] || i1 != anIntArray1629[j1])
    				continue;
    			j = j1;
    			break;
    		}
    		if(j == -1) {
    			anIntArray1627[anInt1626] = k;
    			anIntArray1628[anInt1626] = l;
    			anIntArray1629[anInt1626] = i1;
    			if(model.anIntArray1655 != null)
    				anIntArray1655[anInt1626] = model.anIntArray1655[i];
    			j = anInt1626++;
    		}
    		return j;
    	}
    
    	public void method466() {
    		super.modelHeight = 0;
    		anInt1650 = 0;
    		anInt1651 = 0;
    		for(int i = 0; i < anInt1626; i++) {
    			int j = anIntArray1627[i];
    			int k = anIntArray1628[i];
    			int l = anIntArray1629[i];
    			if(-k > super.modelHeight)
    				super.modelHeight = -k;
    			if(k > anInt1651)
    				anInt1651 = k;
    			int i1 = j * j + l * l;
    			if(i1 > anInt1650)
    				anInt1650 = i1;
    		}
    		anInt1650 = (int)(Math.sqrt(anInt1650) + 0.98999999999999999D);
    		anInt1653 = (int)(Math.sqrt(anInt1650 * anInt1650 + super.modelHeight * super.modelHeight) + 0.98999999999999999D);
    		anInt1652 = anInt1653 + (int)(Math.sqrt(anInt1650 * anInt1650 + anInt1651 * anInt1651) + 0.98999999999999999D);
    	}
    
    	public void method467() {
    		super.modelHeight = 0;
    		anInt1651 = 0;
    		for(int i = 0; i < anInt1626; i++) {
    			int j = anIntArray1628[i];
    			if(-j > super.modelHeight)
    				super.modelHeight = -j;
    			if(j > anInt1651)
    				anInt1651 = j;
    		}
    		anInt1653 = (int)(Math.sqrt(anInt1650 * anInt1650 + super.modelHeight * super.modelHeight) + 0.98999999999999999D);
    		anInt1652 = anInt1653 + (int)(Math.sqrt(anInt1650 * anInt1650 + anInt1651 * anInt1651) + 0.98999999999999999D);
    	}
    
    	private void method468()  {
    		super.modelHeight = 0;
    		anInt1650 = 0;
    		anInt1651 = 0;
    		anInt1646 = 0xf423f;
    		anInt1647 = 0xfff0bdc1;
    		anInt1648 = 0xfffe7961;
    		anInt1649 = 0x1869f;
    		for(int j = 0; j < anInt1626; j++) {
    			int k = anIntArray1627[j];
    			int l = anIntArray1628[j];
    			int i1 = anIntArray1629[j];
    			if(k < anInt1646)
    				anInt1646 = k;
    			if(k > anInt1647)
    				anInt1647 = k;
    			if(i1 < anInt1649)
    				anInt1649 = i1;
    			if(i1 > anInt1648)
    				anInt1648 = i1;
    			if(-l > super.modelHeight)
    				super.modelHeight = -l;
    			if(l > anInt1651)
    				anInt1651 = l;
    			int j1 = k * k + i1 * i1;
    			if(j1 > anInt1650)
    				anInt1650 = j1;
    		}
    		anInt1650 = (int)Math.sqrt(anInt1650);
    		anInt1653 = (int)Math.sqrt(anInt1650 * anInt1650 + super.modelHeight * super.modelHeight);
    		anInt1652 = anInt1653 + (int)Math.sqrt(anInt1650 * anInt1650 + anInt1651 * anInt1651);
    	}
    
    	public void method469() {
    		if(anIntArray1655 != null) {
    			int ai[] = new int[256];
    			int j = 0;
    			for(int l = 0; l < anInt1626; l++) {
    				int j1 = anIntArray1655[l];
    				ai[j1]++;
    				if(j1 > j)
    					j = j1;
    			}
    			anIntArrayArray1657 = new int[j + 1][];
    			for(int k1 = 0; k1 <= j; k1++) {
    				anIntArrayArray1657[k1] = new int[ai[k1]];
    				ai[k1] = 0;
    			}
    			for(int j2 = 0; j2 < anInt1626; j2++) {
    				int l2 = anIntArray1655[j2];
    				anIntArrayArray1657[l2][ai[l2]++] = j2;
    			}
    			anIntArray1655 = null;
    		}
    		if(anIntArray1656 != null) {
    			int ai1[] = new int[256];
    			int k = 0;
    			for(int i1 = 0; i1 < anInt1630; i1++) {
    				int l1 = anIntArray1656[i1];
    				ai1[l1]++;
    				if(l1 > k)
    					k = l1;
    			}
    			anIntArrayArray1658 = new int[k + 1][];
    			for(int i2 = 0; i2 <= k; i2++) {
    				anIntArrayArray1658[i2] = new int[ai1[i2]];
    				ai1[i2] = 0;
    			}
    			for(int k2 = 0; k2 < anInt1630; k2++) {
    				int i3 = anIntArray1656[k2];
    				anIntArrayArray1658[i3][ai1[i3]++] = k2;
    			}
    			anIntArray1656 = null;
    		}
    	}
    
    	public void method470(int i) {
    		if(anIntArrayArray1657 == null)
    			return;
    		if(i == -1)
    			return;
    		Class36 class36 = Class36.method531(i);
    		if(class36 == null)
    			return;
    		Class18 class18 = class36.aClass18_637;
    		anInt1681 = 0;
    		anInt1682 = 0;
    		anInt1683 = 0;
    		for(int k = 0; k < class36.anInt638; k++) {
    			int l = class36.anIntArray639[k];
    			method472(class18.anIntArray342[l], class18.anIntArrayArray343[l], class36.anIntArray640[k], class36.anIntArray641[k], class36.anIntArray642[k]);
    		}
    	}
    
    	public void method471(int ai[], int j, int k) {
    		if(k == -1)
    			return;
    		if(ai == null || j == -1) {
    			method470(k);
    			return;
    		}
    		Class36 class36 = Class36.method531(k);
    		if(class36 == null)
    			return;
    		Class36 class36_1 = Class36.method531(j);
    		if(class36_1 == null) {
    			method470(k);
    			return;
    		}
    		Class18 class18 = class36.aClass18_637;
    		anInt1681 = 0;
    		anInt1682 = 0;
    		anInt1683 = 0;
    		int l = 0;
    		int i1 = ai[l++];
    		for(int j1 = 0; j1 < class36.anInt638; j1++) {
    			int k1;
    			for(k1 = class36.anIntArray639[j1]; k1 > i1; i1 = ai[l++]);
    				if(k1 != i1 || class18.anIntArray342[k1] == 0)
    					method472(class18.anIntArray342[k1], class18.anIntArrayArray343[k1], class36.anIntArray640[j1], class36.anIntArray641[j1], class36.anIntArray642[j1]);
    		}
    		anInt1681 = 0;
    		anInt1682 = 0;
    		anInt1683 = 0;
    		l = 0;
    		i1 = ai[l++];
    		for(int l1 = 0; l1 < class36_1.anInt638; l1++) {
    			int i2;
    			for(i2 = class36_1.anIntArray639[l1]; i2 > i1; i1 = ai[l++]);
    				if(i2 == i1 || class18.anIntArray342[i2] == 0)
    					method472(class18.anIntArray342[i2], class18.anIntArrayArray343[i2], class36_1.anIntArray640[l1], class36_1.anIntArray641[l1], class36_1.anIntArray642[l1]);
    		}
    	}
    
    	private void method472(int i, int ai[], int j, int k, int l) {
    		int i1 = ai.length;
    		if(i == 0) {
    			int j1 = 0;
    			anInt1681 = 0;
    			anInt1682 = 0;
    			anInt1683 = 0;
    			for(int k2 = 0; k2 < i1; k2++) {
    				int l3 = ai[k2];
    				if(l3 < anIntArrayArray1657.length) {
    					int ai5[] = anIntArrayArray1657[l3];
    					for(int i5 = 0; i5 < ai5.length; i5++) {
    						int j6 = ai5[i5];
    						anInt1681 += anIntArray1627[j6];
    						anInt1682 += anIntArray1628[j6];
    						anInt1683 += anIntArray1629[j6];
    						j1++;
    					}
    				}
    			}
    			if(j1 > 0) {
    				anInt1681 = anInt1681 / j1 + j;
    				anInt1682 = anInt1682 / j1 + k;
    				anInt1683 = anInt1683 / j1 + l;
    				return;
    			} else {
    				anInt1681 = j;
    				anInt1682 = k;
    				anInt1683 = l;
    				return;
    			}
    		}
    		if(i == 1) {
    			for(int k1 = 0; k1 < i1; k1++) {
    				int l2 = ai[k1];
    				if(l2 < anIntArrayArray1657.length) {
    					int ai1[] = anIntArrayArray1657[l2];
    					for(int i4 = 0; i4 < ai1.length; i4++) {
    						int j5 = ai1[i4];
    						anIntArray1627[j5] += j;
    						anIntArray1628[j5] += k;
    						anIntArray1629[j5] += l;
    					}
    				}
    			}
    			return;
    		}
    		if(i == 2) {
    			for(int l1 = 0; l1 < i1; l1++) {
    				int i3 = ai[l1];
    				if(i3 < anIntArrayArray1657.length) {
    					int ai2[] = anIntArrayArray1657[i3];
    					for(int j4 = 0; j4 < ai2.length; j4++) {
    						int k5 = ai2[j4];
    						anIntArray1627[k5] -= anInt1681;
    						anIntArray1628[k5] -= anInt1682;
    						anIntArray1629[k5] -= anInt1683;
    						int k6 = (j & 0xff) * 8;
    						int l6 = (k & 0xff) * 8;
    						int i7 = (l & 0xff) * 8;
    						if(i7 != 0) {
    							int j7 = modelIntArray1[i7];
    							int i8 = modelIntArray2[i7];
    							int l8 = anIntArray1628[k5] * j7 + anIntArray1627[k5] * i8 >> 16;
    							anIntArray1628[k5] = anIntArray1628[k5] * i8 - anIntArray1627[k5] * j7 >> 16;
    							anIntArray1627[k5] = l8;
    						}
    						if(k6 != 0) {
    							int k7 = modelIntArray1[k6];
    							int j8 = modelIntArray2[k6];
    							int i9 = anIntArray1628[k5] * j8 - anIntArray1629[k5] * k7 >> 16;
    							anIntArray1629[k5] = anIntArray1628[k5] * k7 + anIntArray1629[k5] * j8 >> 16;
    							anIntArray1628[k5] = i9;
    						}
    						if(l6 != 0) {
    							int l7 = modelIntArray1[l6];
    							int k8 = modelIntArray2[l6];
    							int j9 = anIntArray1629[k5] * l7 + anIntArray1627[k5] * k8 >> 16;
    							anIntArray1629[k5] = anIntArray1629[k5] * k8 - anIntArray1627[k5] * l7 >> 16;
    							anIntArray1627[k5] = j9;
    						}
    						anIntArray1627[k5] += anInt1681;
    						anIntArray1628[k5] += anInt1682;
    						anIntArray1629[k5] += anInt1683;
    					}
    				}
    			}
    			return;
    		}
    		if(i == 3) {
    			for(int i2 = 0; i2 < i1; i2++) {
    				int j3 = ai[i2];
    				if(j3 < anIntArrayArray1657.length) {
    					int ai3[] = anIntArrayArray1657[j3];
    					for(int k4 = 0; k4 < ai3.length; k4++) {
    						int l5 = ai3[k4];
    						anIntArray1627[l5] -= anInt1681;
    						anIntArray1628[l5] -= anInt1682;
    						anIntArray1629[l5] -= anInt1683;
    						anIntArray1627[l5] = (anIntArray1627[l5] * j) / 128;
    						anIntArray1628[l5] = (anIntArray1628[l5] * k) / 128;
    						anIntArray1629[l5] = (anIntArray1629[l5] * l) / 128;
    						anIntArray1627[l5] += anInt1681;
    						anIntArray1628[l5] += anInt1682;
    						anIntArray1629[l5] += anInt1683;
    					}
    				}
    			}
    			return;
    		}
    		if(i == 5 && anIntArrayArray1658 != null && anIntArray1639 != null) {
    			for(int j2 = 0; j2 < i1; j2++) {
    				int k3 = ai[j2];
    				if(k3 < anIntArrayArray1658.length) {
    					int ai4[] = anIntArrayArray1658[k3];
    					for(int l4 = 0; l4 < ai4.length; l4++) {
    						int i6 = ai4[l4];
    						anIntArray1639[i6] += j * 8;
    						if(anIntArray1639[i6] < 0)
    							anIntArray1639[i6] = 0;
    						if(anIntArray1639[i6] > 255)
    							anIntArray1639[i6] = 255;
    					}
    				}
    			}
    		}
    	}
    
    	public void method473()  {
    		for(int j = 0; j < anInt1626; j++) {
    			int k = anIntArray1627[j];
    			anIntArray1627[j] = anIntArray1629[j];
    			anIntArray1629[j] = -k;
    		}
    	}
    
    	public void method474(int i) {
    		int k = modelIntArray1[i];
    		int l = modelIntArray2[i];
    		for(int i1 = 0; i1 < anInt1626; i1++) {
    			int j1 = anIntArray1628[i1] * l - anIntArray1629[i1] * k >> 16;
    			anIntArray1629[i1] = anIntArray1628[i1] * k + anIntArray1629[i1] * l >> 16;
    			anIntArray1628[i1] = j1;
    		}
    	}
    
    	public void method475(int i, int j, int l) {
    		for(int i1 = 0; i1 < anInt1626; i1++) {
    			anIntArray1627[i1] += i;
    			anIntArray1628[i1] += j;
    			anIntArray1629[i1] += l;
    		}
    	}
    
    	public void method476(int i, int j) {
    		for(int k = 0; k < anInt1630; k++)
    			if(anIntArray1640[k] == i)
    				anIntArray1640[k] = j;
    	}
    
    	public void method477() {
    		for(int j = 0; j < anInt1626; j++)
    			anIntArray1629[j] = -anIntArray1629[j];
    		for(int k = 0; k < anInt1630; k++) {
    			int l = anIntArray1631[k];
    			anIntArray1631[k] = anIntArray1633[k];
    			anIntArray1633[k] = l;
    		}
    	}
    
    	public void method478(int i, int j, int l) {
    		for(int i1 = 0; i1 < anInt1626; i1++) {
    			anIntArray1627[i1] = (anIntArray1627[i1] * i) / 128;
    			anIntArray1628[i1] = (anIntArray1628[i1] * l) / 128;
    			anIntArray1629[i1] = (anIntArray1629[i1] * j) / 128;
    		}
    	}
    
    	public void method479(int i, int j, int k, int l, int i1, boolean flag) {
    		int j1 = (int)Math.sqrt(k * k + l * l + i1 * i1);
    		int k1 = j * j1 >> 8;
    		if(anIntArray1634 == null) {
    			anIntArray1634 = new int[anInt1630];
    			anIntArray1635 = new int[anInt1630];
    			anIntArray1636 = new int[anInt1630];
    		}
    		if(super.aClass33Array1425 == null) {
    			super.aClass33Array1425 = new Class33[anInt1626];
    			for(int l1 = 0; l1 < anInt1626; l1++)
    				super.aClass33Array1425[l1] = new Class33();
    		}
    		for(int i2 = 0; i2 < anInt1630; i2++) {
    			int j2 = anIntArray1631[i2];
    			int l2 = anIntArray1632[i2];
    			int i3 = anIntArray1633[i2];
    			int j3 = anIntArray1627[l2] - anIntArray1627[j2];
    			int k3 = anIntArray1628[l2] - anIntArray1628[j2];
    			int l3 = anIntArray1629[l2] - anIntArray1629[j2];
    			int i4 = anIntArray1627[i3] - anIntArray1627[j2];
    			int j4 = anIntArray1628[i3] - anIntArray1628[j2];
    			int k4 = anIntArray1629[i3] - anIntArray1629[j2];
    			int l4 = k3 * k4 - j4 * l3;
    			int i5 = l3 * i4 - k4 * j3;
    			int j5;
    			for(j5 = j3 * j4 - i4 * k3; l4 > 8192 || i5 > 8192 || j5 > 8192 || l4 < -8192 || i5 < -8192 || j5 < -8192; j5 >>= 1) {
    				l4 >>= 1;
    				i5 >>= 1;
    			}
    			int k5 = (int)Math.sqrt(l4 * l4 + i5 * i5 + j5 * j5);
    			if(k5 <= 0)
    				k5 = 1;
    			l4 = (l4 * 256) / k5;
    			i5 = (i5 * 256) / k5;
    			j5 = (j5 * 256) / k5;
    			if(anIntArray1637 == null || (anIntArray1637[i2] & 1) == 0) {
    				Class33 class33_2 = super.aClass33Array1425[j2];
    				class33_2.anInt602 += l4;
    				class33_2.anInt603 += i5;
    				class33_2.anInt604 += j5;
    				class33_2.anInt605++;
    				class33_2 = super.aClass33Array1425[l2];
    				class33_2.anInt602 += l4;
    				class33_2.anInt603 += i5;
    				class33_2.anInt604 += j5;
    				class33_2.anInt605++;
    				class33_2 = super.aClass33Array1425[i3];
    				class33_2.anInt602 += l4;
    				class33_2.anInt603 += i5;
    				class33_2.anInt604 += j5;
    				class33_2.anInt605++;
    			} else {
    				int l5 = i + (k * l4 + l * i5 + i1 * j5) / (k1 + k1 / 2);
    				anIntArray1634[i2] = method481(anIntArray1640[i2], l5, anIntArray1637[i2]);
    			}
    		}
    		if(flag) {
    			method480(i, k1, k, l, i1);
    		} else {
    			aClass33Array1660 = new Class33[anInt1626];
    			for(int k2 = 0; k2 < anInt1626; k2++) {
    				Class33 class33 = super.aClass33Array1425[k2];
    				Class33 class33_1 = aClass33Array1660[k2] = new Class33();
    				class33_1.anInt602 = class33.anInt602;
    				class33_1.anInt603 = class33.anInt603;
    				class33_1.anInt604 = class33.anInt604;
    				class33_1.anInt605 = class33.anInt605;
    			}
    		}
    		if(flag) {
    			method466();
    		} else {
    			method468();
    		}
    	}
    
    	public void method480(int i, int j, int k, int l, int i1) {
    		for(int j1 = 0; j1 < anInt1630; j1++) {
    			int k1 = anIntArray1631[j1];
    			int i2 = anIntArray1632[j1];
    			int j2 = anIntArray1633[j1];
    			if(anIntArray1637 == null) {
    				int i3 = anIntArray1640[j1];
    				Class33 class33 = super.aClass33Array1425[k1];
    				int k2 = i + (k * class33.anInt602 + l * class33.anInt603 + i1 * class33.anInt604) / (j * class33.anInt605);
    				anIntArray1634[j1] = method481(i3, k2, 0);
    				class33 = super.aClass33Array1425[i2];
    				k2 = i + (k * class33.anInt602 + l * class33.anInt603 + i1 * class33.anInt604) / (j * class33.anInt605);
    				anIntArray1635[j1] = method481(i3, k2, 0);
    				class33 = super.aClass33Array1425[j2];
    				k2 = i + (k * class33.anInt602 + l * class33.anInt603 + i1 * class33.anInt604) / (j * class33.anInt605);
    				anIntArray1636[j1] = method481(i3, k2, 0);
    			} else if((anIntArray1637[j1] & 1) == 0) {
    				int j3 = anIntArray1640[j1];
    				int k3 = anIntArray1637[j1];
    				Class33 class33_1 = super.aClass33Array1425[k1];
    				int l2 = i + (k * class33_1.anInt602 + l * class33_1.anInt603 + i1 * class33_1.anInt604) / (j * class33_1.anInt605);
    				anIntArray1634[j1] = method481(j3, l2, k3);
    				class33_1 = super.aClass33Array1425[i2];
    				l2 = i + (k * class33_1.anInt602 + l * class33_1.anInt603 + i1 * class33_1.anInt604) / (j * class33_1.anInt605);
    				anIntArray1635[j1] = method481(j3, l2, k3);
    				class33_1 = super.aClass33Array1425[j2];
    				l2 = i + (k * class33_1.anInt602 + l * class33_1.anInt603 + i1 * class33_1.anInt604) / (j * class33_1.anInt605);
    				anIntArray1636[j1] = method481(j3, l2, k3);
    			}
    		}
    		super.aClass33Array1425 = null;
    		aClass33Array1660 = null;
    		anIntArray1655 = null;
    		anIntArray1656 = null;
    		if(anIntArray1637 != null) {
    			for(int l1 = 0; l1 < anInt1630; l1++)
    				if((anIntArray1637[l1] & 2) == 2)
    					return;
    		}
    		anIntArray1640 = null;
    	}
    
    	private static int method481(int i, int j, int k) {
    		if((k & 2) == 2) {
    			if(j < 0)
    				j = 0;
    			else if(j > 127)
    				j = 127;
    			j = 127 - j;
    			return j;
    		}
    		j = j * (i & 0x7f) >> 7;
    		if(j < 2)
    			j = 2;
    		else if(j > 126)
    			j = 126;
    		return (i & 0xff80) + j;
    	}
    
    	public void method482(int j, int k, int l, int i1, int j1, int k1) {
    		int i = 0; //was a parameter
    		int l1 = Texture.textureInt1;
    		int i2 = Texture.textureInt2;
    		int j2 = modelIntArray1[i];
    		int k2 = modelIntArray2[i];
    		int l2 = modelIntArray1[j];
    		int i3 = modelIntArray2[j];
    		int j3 = modelIntArray1[k];
    		int k3 = modelIntArray2[k];
    		int l3 = modelIntArray1[l];
    		int i4 = modelIntArray2[l];
    		int j4 = j1 * l3 + k1 * i4 >> 16;
    		for(int k4 = 0; k4 < anInt1626; k4++) {
    			int l4 = anIntArray1627[k4];
    			int i5 = anIntArray1628[k4];
    			int j5 = anIntArray1629[k4];
    			if(k != 0) {
    				int k5 = i5 * j3 + l4 * k3 >> 16;
    				i5 = i5 * k3 - l4 * j3 >> 16;
    				l4 = k5;
    			}
    			if(i != 0) {
    				int l5 = i5 * k2 - j5 * j2 >> 16;
    				j5 = i5 * j2 + j5 * k2 >> 16;
    				i5 = l5;
    			}
    			if(j != 0) {
    				int i6 = j5 * l2 + l4 * i3 >> 16;
    				j5 = j5 * i3 - l4 * l2 >> 16;
    				l4 = i6;
    			}
    			l4 += i1;
    			i5 += j1;
    			j5 += k1;
    			int j6 = i5 * i4 - j5 * l3 >> 16;
    			j5 = i5 * l3 + j5 * i4 >> 16;
    			i5 = j6;
    			anIntArray1667[k4] = j5 - j4;
    			anIntArray1665[k4] = l1 + (l4 << 9) / j5;
    			anIntArray1666[k4] = i2 + (i5 << 9) / j5;
    			if(anInt1642 > 0) {
    				anIntArray1668[k4] = l4;
    				anIntArray1669[k4] = i5;
    				anIntArray1670[k4] = j5;
    			}
    		}
    		try {
    			method483(false, false, 0);
    		} catch(Exception _ex) {
    		}
    	}
    
    	public void method443(int i, int j, int k, int l, int i1, int j1, int k1, int l1, int i2) {
    		int j2 = l1 * i1 - j1 * l >> 16;
    		int k2 = k1 * j + j2 * k >> 16;
    		int l2 = anInt1650 * k >> 16;
    		int i3 = k2 + l2;
    		if(i3 <= 50 || k2 >= 3500)
    			return;
    		int j3 = l1 * l + j1 * i1 >> 16;
    		int k3 = j3 - anInt1650 << 9;
    		if(k3 / i3 >= DrawingArea.centerY)
    			return;
    		int l3 = j3 + anInt1650 << 9;
    		if(l3 / i3 <= -DrawingArea.centerY)
    			return;
    		int i4 = k1 * k - j2 * j >> 16;
    		int j4 = anInt1650 * j >> 16;
    		int k4 = i4 + j4 << 9;
    		if(k4 / i3 <= -DrawingArea.anInt1387)
    			return;
    		int l4 = j4 + (super.modelHeight * k >> 16);
    		int i5 = i4 - l4 << 9;
    		if(i5 / i3 >= DrawingArea.anInt1387)
    			return;
    		int j5 = l2 + (super.modelHeight * j >> 16);
    		boolean flag = false;
    		if(k2 - j5 <= 50)
    			flag = true;
    		boolean flag1 = false;
    		if(i2 > 0 && aBoolean1684) {
    			int k5 = k2 - l2;
    			if(k5 <= 50)
    				k5 = 50;
    			if(j3 > 0) {
    				k3 /= i3;
    				l3 /= k5;
    			} else {
    				l3 /= i3;
    				k3 /= k5;
    			}
    			if(i4 > 0) {
    				i5 /= i3;
    				k4 /= k5;
    			} else {
    				k4 /= i3;
    				i5 /= k5;
    			}
    			int i6 = anInt1685 - Texture.textureInt1;
    			int k6 = anInt1686 - Texture.textureInt2;
    			if(i6 > k3 && i6 < l3 && k6 > i5 && k6 < k4)
    				if(aBoolean1659)
    					anIntArray1688[anInt1687++] = i2;
    				else
    					flag1 = true;
    		}
    		int l5 = Texture.textureInt1;
    		int j6 = Texture.textureInt2;
    		int l6 = 0;
    		int i7 = 0;
    		if(i != 0) {
    			l6 = modelIntArray1[i];
    			i7 = modelIntArray2[i];
    		}
    		for(int j7 = 0; j7 < anInt1626; j7++) {
    			int k7 = anIntArray1627[j7];
    			int l7 = anIntArray1628[j7];
    			int i8 = anIntArray1629[j7];
    			if(i != 0) {
    				int j8 = i8 * l6 + k7 * i7 >> 16;
    				i8 = i8 * i7 - k7 * l6 >> 16;
    				k7 = j8;
    			}
    			k7 += j1;
    			l7 += k1;
    			i8 += l1;
    			int k8 = i8 * l + k7 * i1 >> 16;
    			i8 = i8 * i1 - k7 * l >> 16;
    			k7 = k8;
    			k8 = l7 * k - i8 * j >> 16;
    			i8 = l7 * j + i8 * k >> 16;
    			l7 = k8;
    			anIntArray1667[j7] = i8 - k2;
    			if(i8 >= 50) {
    				anIntArray1665[j7] = l5 + (k7 << 9) / i8;
    				anIntArray1666[j7] = j6 + (l7 << 9) / i8;
    			} else {
    				anIntArray1665[j7] = -5000;
    				flag = true;
    			}
    			if(flag || anInt1642 > 0) {
    				anIntArray1668[j7] = k7;
    				anIntArray1669[j7] = l7;
    				anIntArray1670[j7] = i8;
    			}
    		}
    		try {
    			method483(flag, flag1, i2);
    		} catch(Exception _ex) {
    		}
    	}
    
    	private void method483(boolean flag, boolean flag1, int i) {
    		for(int j = 0; j < anInt1652; j++)
    			anIntArray1671[j] = 0;
    		for(int k = 0; k < anInt1630; k++)
    			if(anIntArray1637 == null || anIntArray1637[k] != -1) {
    				int l = anIntArray1631[k];
    				int k1 = anIntArray1632[k];
    				int j2 = anIntArray1633[k];
    				int i3 = anIntArray1665[l];
    				int l3 = anIntArray1665[k1];
    				int k4 = anIntArray1665[j2];
    				if(flag && (i3 == -5000 || l3 == -5000 || k4 == -5000)) {
    					aBooleanArray1664[k] = true;
    					int j5 = (anIntArray1667[l] + anIntArray1667[k1] + anIntArray1667[j2]) / 3 + anInt1653;
    					anIntArrayArray1672[j5][anIntArray1671[j5]++] = k;
    				} else {
    					if(flag1 && method486(anInt1685, anInt1686, anIntArray1666[l], anIntArray1666[k1], anIntArray1666[j2], i3, l3, k4)) {
    						anIntArray1688[anInt1687++] = i;
    						flag1 = false;
    					}
    					if((i3 - l3) * (anIntArray1666[j2] - anIntArray1666[k1]) - (anIntArray1666[l] - anIntArray1666[k1]) * (k4 - l3) > 0) {
    						aBooleanArray1664[k] = false;
    						aBooleanArray1663[k] = i3 < 0 || l3 < 0 || k4 < 0 || i3 > DrawingArea.centerX || l3 > DrawingArea.centerX || k4 > DrawingArea.centerX;
    						int k5 = (anIntArray1667[l] + anIntArray1667[k1] + anIntArray1667[j2]) / 3 + anInt1653;
    						anIntArrayArray1672[k5][anIntArray1671[k5]++] = k;
    					}
    				}
    			}
    		if(anIntArray1638 == null) {
    			for(int i1 = anInt1652 - 1; i1 >= 0; i1--) {
    				int l1 = anIntArray1671[i1];
    				if(l1 > 0) {
    					int ai[] = anIntArrayArray1672[i1];
    					for(int j3 = 0; j3 < l1; j3++)
    					method484(ai[j3]);
    				}
    			}
    			return;
    		}
    		for(int j1 = 0; j1 < 12; j1++) {
    			anIntArray1673[j1] = 0;
    			anIntArray1677[j1] = 0;
    		}
    		for(int i2 = anInt1652 - 1; i2 >= 0; i2--) {
    			int k2 = anIntArray1671[i2];
    			if(k2 > 0) {
    				int ai1[] = anIntArrayArray1672[i2];
    				for(int i4 = 0; i4 < k2; i4++) {
    					int l4 = ai1[i4];
    					int l5 = anIntArray1638[l4];
    					int j6 = anIntArray1673[l5]++;
    					anIntArrayArray1674[l5][j6] = l4;
    					if(l5 < 10)
    						anIntArray1677[l5] += i2;
    					else if(l5 == 10)
    						anIntArray1675[j6] = i2;
    					else
    						anIntArray1676[j6] = i2;
    				}
    			}
    		}
    
    		int l2 = 0;
    		if(anIntArray1673[1] > 0 || anIntArray1673[2] > 0)
    			l2 = (anIntArray1677[1] + anIntArray1677[2]) / (anIntArray1673[1] + anIntArray1673[2]);
    		int k3 = 0;
    		if(anIntArray1673[3] > 0 || anIntArray1673[4] > 0)
    			k3 = (anIntArray1677[3] + anIntArray1677[4]) / (anIntArray1673[3] + anIntArray1673[4]);
    		int j4 = 0;
    		if(anIntArray1673[6] > 0 || anIntArray1673[8] > 0)
    			j4 = (anIntArray1677[6] + anIntArray1677[8]) / (anIntArray1673[6] + anIntArray1673[8]);
    		int i6 = 0;
    		int k6 = anIntArray1673[10];
    		int ai2[] = anIntArrayArray1674[10];
    		int ai3[] = anIntArray1675;
    		if(i6 == k6) {
    			i6 = 0;
    			k6 = anIntArray1673[11];
    			ai2 = anIntArrayArray1674[11];
    			ai3 = anIntArray1676;
    		}
    		int i5;
    		if(i6 < k6)
    			i5 = ai3[i6];
    		else
    			i5 = -1000;
    		for(int l6 = 0; l6 < 10; l6++) {
    			while(l6 == 0 && i5 > l2) {
    				method484(ai2[i6++]);
    			if(i6 == k6 && ai2 != anIntArrayArray1674[11]) {
    				i6 = 0;
    				k6 = anIntArray1673[11];
    				ai2 = anIntArrayArray1674[11];
    				ai3 = anIntArray1676;
    			}
    			if(i6 < k6)
    				i5 = ai3[i6];
    			else
    				i5 = -1000;
    			}
    			while(l6 == 3 && i5 > k3) {
    			method484(ai2[i6++]);
    			if(i6 == k6 && ai2 != anIntArrayArray1674[11]) {
    				i6 = 0;
    				k6 = anIntArray1673[11];
    				ai2 = anIntArrayArray1674[11];
    				ai3 = anIntArray1676;
    			}
    			if(i6 < k6)
    				i5 = ai3[i6];
    			else
    				i5 = -1000;
    			}
    			while(l6 == 5 && i5 > j4)  {
    			method484(ai2[i6++]);
    			if(i6 == k6 && ai2 != anIntArrayArray1674[11]) {
    				i6 = 0;
    				k6 = anIntArray1673[11];
    				ai2 = anIntArrayArray1674[11];
    				ai3 = anIntArray1676;
    			}
    			if(i6 < k6)
    				i5 = ai3[i6];
    			else
    				i5 = -1000;
    			}
    			int i7 = anIntArray1673[l6];
    			int ai4[] = anIntArrayArray1674[l6];
    			for(int j7 = 0; j7 < i7; j7++)
    				method484(ai4[j7]);
    		}
    		while(i5 != -1000) {
    			method484(ai2[i6++]);
    			if(i6 == k6 && ai2 != anIntArrayArray1674[11]) {
    				i6 = 0;
    				ai2 = anIntArrayArray1674[11];
    				k6 = anIntArray1673[11];
    				ai3 = anIntArray1676;
    			}
    			if(i6 < k6)
    				i5 = ai3[i6];
    			else
    				i5 = -1000;
    		}
    	}
    
    	private void method484(int i) {
    		if(aBooleanArray1664[i]) {
    			method485(i);
    			return;
    		}
    		int j = anIntArray1631[i];
    		int k = anIntArray1632[i];
    		int l = anIntArray1633[i];
    		Texture.aBoolean1462 = aBooleanArray1663[i];
    		if(anIntArray1639 == null)
    			Texture.anInt1465 = 0;
    		else
    			Texture.anInt1465 = anIntArray1639[i];
    		int i1;
    		if(anIntArray1637 == null)
    			i1 = 0;
    		else
    			i1 = anIntArray1637[i] & 3;
    		if(i1 == 0) {
    			Texture.method374(anIntArray1666[j], anIntArray1666[k], anIntArray1666[l], anIntArray1665[j], anIntArray1665[k], anIntArray1665[l], anIntArray1634[i], anIntArray1635[i], anIntArray1636[i]);
    			return;
    		}
    		if(i1 == 1) {
    			Texture.method376(anIntArray1666[j], anIntArray1666[k], anIntArray1666[l], anIntArray1665[j], anIntArray1665[k], anIntArray1665[l], modelIntArray3[anIntArray1634[i]]);
    			return;
    		}
    		if(i1 == 2) {
    			int j1 = anIntArray1637[i] >> 2;
    			int l1 = anIntArray1643[j1];
    			int j2 = anIntArray1644[j1];
    			int l2 = anIntArray1645[j1];
    			Texture.method378(anIntArray1666[j], anIntArray1666[k], anIntArray1666[l], anIntArray1665[j], anIntArray1665[k], anIntArray1665[l], anIntArray1634[i], anIntArray1635[i], anIntArray1636[i], anIntArray1668[l1], anIntArray1668[j2], anIntArray1668[l2], anIntArray1669[l1], anIntArray1669[j2], anIntArray1669[l2], anIntArray1670[l1], anIntArray1670[j2], anIntArray1670[l2], anIntArray1640[i]);
    			return;
    		}
    		if(i1 == 3) {
    			int k1 = anIntArray1637[i] >> 2;
    			int i2 = anIntArray1643[k1];
    			int k2 = anIntArray1644[k1];
    			int i3 = anIntArray1645[k1];
    			Texture.method378(anIntArray1666[j], anIntArray1666[k], anIntArray1666[l], anIntArray1665[j], anIntArray1665[k], anIntArray1665[l], anIntArray1634[i], anIntArray1634[i], anIntArray1634[i], anIntArray1668[i2], anIntArray1668[k2], anIntArray1668[i3], anIntArray1669[i2], anIntArray1669[k2], anIntArray1669[i3], anIntArray1670[i2], anIntArray1670[k2], anIntArray1670[i3], anIntArray1640[i]);
    		}
    	}
    
    	private void method485(int i) {
    		int j = Texture.textureInt1;
    		int k = Texture.textureInt2;
    		int l = 0;
    		int i1 = anIntArray1631[i];
    		int j1 = anIntArray1632[i];
    		int k1 = anIntArray1633[i];
    		int l1 = anIntArray1670[i1];
    		int i2 = anIntArray1670[j1];
    		int j2 = anIntArray1670[k1];
    		if(l1 >= 50) {
    			anIntArray1678[l] = anIntArray1665[i1];
    			anIntArray1679[l] = anIntArray1666[i1];
    			anIntArray1680[l++] = anIntArray1634[i];
    		} else {
    			int k2 = anIntArray1668[i1];
    			int k3 = anIntArray1669[i1];
    			int k4 = anIntArray1634[i];
    			if(j2 >= 50) {
    				int k5 = (50 - l1) * modelIntArray4[j2 - l1];
    				anIntArray1678[l] = j + (k2 + ((anIntArray1668[k1] - k2) * k5 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (k3 + ((anIntArray1669[k1] - k3) * k5 >> 16) << 9) / 50;
    				anIntArray1680[l++] = k4 + ((anIntArray1636[i] - k4) * k5 >> 16);
    			}
    			if(i2 >= 50) {
    				int l5 = (50 - l1) * modelIntArray4[i2 - l1];
    				anIntArray1678[l] = j + (k2 + ((anIntArray1668[j1] - k2) * l5 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (k3 + ((anIntArray1669[j1] - k3) * l5 >> 16) << 9) / 50;
    				anIntArray1680[l++] = k4 + ((anIntArray1635[i] - k4) * l5 >> 16);
    			}
    		}
    		if(i2 >= 50) {
    			anIntArray1678[l] = anIntArray1665[j1];
    			anIntArray1679[l] = anIntArray1666[j1];
    			anIntArray1680[l++] = anIntArray1635[i];
    		} else {
    			int l2 = anIntArray1668[j1];
    			int l3 = anIntArray1669[j1];
    			int l4 = anIntArray1635[i];
    			if(l1 >= 50) {
    				int i6 = (50 - i2) * modelIntArray4[l1 - i2];
    				anIntArray1678[l] = j + (l2 + ((anIntArray1668[i1] - l2) * i6 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (l3 + ((anIntArray1669[i1] - l3) * i6 >> 16) << 9) / 50;
    				anIntArray1680[l++] = l4 + ((anIntArray1634[i] - l4) * i6 >> 16);
    			}
    			if(j2 >= 50) {
    				int j6 = (50 - i2) * modelIntArray4[j2 - i2];
    				anIntArray1678[l] = j + (l2 + ((anIntArray1668[k1] - l2) * j6 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (l3 + ((anIntArray1669[k1] - l3) * j6 >> 16) << 9) / 50;
    				anIntArray1680[l++] = l4 + ((anIntArray1636[i] - l4) * j6 >> 16);
    			}
    		}
    		if(j2 >= 50) {
    			anIntArray1678[l] = anIntArray1665[k1];
    			anIntArray1679[l] = anIntArray1666[k1];
    			anIntArray1680[l++] = anIntArray1636[i];
    		} else {
    			int i3 = anIntArray1668[k1];
    			int i4 = anIntArray1669[k1];
    			int i5 = anIntArray1636[i];
    			if(i2 >= 50) {
    				int k6 = (50 - j2) * modelIntArray4[i2 - j2];
    				anIntArray1678[l] = j + (i3 + ((anIntArray1668[j1] - i3) * k6 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (i4 + ((anIntArray1669[j1] - i4) * k6 >> 16) << 9) / 50;
    				anIntArray1680[l++] = i5 + ((anIntArray1635[i] - i5) * k6 >> 16);
    			}
    			if(l1 >= 50) {
    				int l6 = (50 - j2) * modelIntArray4[l1 - j2];
    				anIntArray1678[l] = j + (i3 + ((anIntArray1668[i1] - i3) * l6 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (i4 + ((anIntArray1669[i1] - i4) * l6 >> 16) << 9) / 50;
    				anIntArray1680[l++] = i5 + ((anIntArray1634[i] - i5) * l6 >> 16);
    			}
    		}
    		int j3 = anIntArray1678[0];
    		int j4 = anIntArray1678[1];
    		int j5 = anIntArray1678[2];
    		int i7 = anIntArray1679[0];
    		int j7 = anIntArray1679[1];
    		int k7 = anIntArray1679[2];
    		if((j3 - j4) * (k7 - j7) - (i7 - j7) * (j5 - j4) > 0) {
    			Texture.aBoolean1462 = false;
    			if(l == 3) {
    				if(j3 < 0 || j4 < 0 || j5 < 0 || j3 > DrawingArea.centerX || j4 > DrawingArea.centerX || j5 > DrawingArea.centerX)
    					Texture.aBoolean1462 = true;
    				int l7;
    				if(anIntArray1637 == null)
    					l7 = 0;
    				else
    					l7 = anIntArray1637[i] & 3;
    				if(l7 == 0)
    					Texture.method374(i7, j7, k7, j3, j4, j5, anIntArray1680[0], anIntArray1680[1], anIntArray1680[2]);
    				else if(l7 == 1)
    					Texture.method376(i7, j7, k7, j3, j4, j5, modelIntArray3[anIntArray1634[i]]);
    				else if(l7 == 2) {
    					int j8 = anIntArray1637[i] >> 2;
    					int k9 = anIntArray1643[j8];
    					int k10 = anIntArray1644[j8];
    					int k11 = anIntArray1645[j8];
    					Texture.method378(i7, j7, k7, j3, j4, j5, anIntArray1680[0], anIntArray1680[1], anIntArray1680[2], anIntArray1668[k9], anIntArray1668[k10], anIntArray1668[k11], anIntArray1669[k9], anIntArray1669[k10], anIntArray1669[k11], anIntArray1670[k9], anIntArray1670[k10], anIntArray1670[k11], anIntArray1640[i]);
    				} else if(l7 == 3) {
    					int k8 = anIntArray1637[i] >> 2;
    					int l9 = anIntArray1643[k8];
    					int l10 = anIntArray1644[k8];
    					int l11 = anIntArray1645[k8];
    					Texture.method378(i7, j7, k7, j3, j4, j5, anIntArray1634[i], anIntArray1634[i], anIntArray1634[i], anIntArray1668[l9], anIntArray1668[l10], anIntArray1668[l11], anIntArray1669[l9], anIntArray1669[l10], anIntArray1669[l11], anIntArray1670[l9], anIntArray1670[l10], anIntArray1670[l11], anIntArray1640[i]);
    				}
    			}
    			if(l == 4) {
    				if(j3 < 0 || j4 < 0 || j5 < 0 || j3 > DrawingArea.centerX || j4 > DrawingArea.centerX || j5 > DrawingArea.centerX || anIntArray1678[3] < 0 || anIntArray1678[3] > DrawingArea.centerX)
    					Texture.aBoolean1462 = true;
    				int i8;
    				if(anIntArray1637 == null)
    					i8 = 0;
    				else
    					i8 = anIntArray1637[i] & 3;
    				if(i8 == 0) {
    					Texture.method374(i7, j7, k7, j3, j4, j5, anIntArray1680[0], anIntArray1680[1], anIntArray1680[2]);
    					Texture.method374(i7, k7, anIntArray1679[3], j3, j5, anIntArray1678[3], anIntArray1680[0], anIntArray1680[2], anIntArray1680[3]);
    					return;
    				}
    				if(i8 == 1) {
    					int l8 = modelIntArray3[anIntArray1634[i]];
    					Texture.method376(i7, j7, k7, j3, j4, j5, l8);
    					Texture.method376(i7, k7, anIntArray1679[3], j3, j5, anIntArray1678[3], l8);
    					return;
    				}
    				if(i8 == 2) {
    					int i9 = anIntArray1637[i] >> 2;
    					int i10 = anIntArray1643[i9];
    					int i11 = anIntArray1644[i9];
    					int i12 = anIntArray1645[i9];
    					Texture.method378(i7, j7, k7, j3, j4, j5, anIntArray1680[0], anIntArray1680[1], anIntArray1680[2], anIntArray1668[i10], anIntArray1668[i11], anIntArray1668[i12], anIntArray1669[i10], anIntArray1669[i11], anIntArray1669[i12], anIntArray1670[i10], anIntArray1670[i11], anIntArray1670[i12], anIntArray1640[i]);
    					Texture.method378(i7, k7, anIntArray1679[3], j3, j5, anIntArray1678[3], anIntArray1680[0], anIntArray1680[2], anIntArray1680[3], anIntArray1668[i10], anIntArray1668[i11], anIntArray1668[i12], anIntArray1669[i10], anIntArray1669[i11], anIntArray1669[i12], anIntArray1670[i10], anIntArray1670[i11], anIntArray1670[i12], anIntArray1640[i]);
    					return;
    				}
    				if(i8 == 3) {
    					int j9 = anIntArray1637[i] >> 2;
    					int j10 = anIntArray1643[j9];
    					int j11 = anIntArray1644[j9];
    					int j12 = anIntArray1645[j9];
    					Texture.method378(i7, j7, k7, j3, j4, j5, anIntArray1634[i], anIntArray1634[i], anIntArray1634[i], anIntArray1668[j10], anIntArray1668[j11], anIntArray1668[j12], anIntArray1669[j10], anIntArray1669[j11], anIntArray1669[j12], anIntArray1670[j10], anIntArray1670[j11], anIntArray1670[j12], anIntArray1640[i]);
    					Texture.method378(i7, k7, anIntArray1679[3], j3, j5, anIntArray1678[3], anIntArray1634[i], anIntArray1634[i], anIntArray1634[i], anIntArray1668[j10], anIntArray1668[j11], anIntArray1668[j12], anIntArray1669[j10], anIntArray1669[j11], anIntArray1669[j12], anIntArray1670[j10], anIntArray1670[j11], anIntArray1670[j12], anIntArray1640[i]);
    				}
    			}
    		}
    	}
    
    	private boolean method486(int i, int j, int k, int l, int i1, int j1, int k1, int l1) {
    		if(j < k && j < l && j < i1)
    			return false;
    		if(j > k && j > l && j > i1)
    			return false;
    		return !(i < j1 && i < k1 && i < l1) && (i <= j1 || i <= k1 || i <= l1);
    	}
    
    	public static final Model aModel_1621 = new Model();
    	private static int[] anIntArray1622 = new int[2000];
    	private static int[] anIntArray1623 = new int[2000];
    	private static int[] anIntArray1624 = new int[2000];
    	private static int[] anIntArray1625 = new int[2000];
    	public int anInt1626;
    	public int anIntArray1627[];
    	public int anIntArray1628[];
    	public int anIntArray1629[];
    	public int anInt1630;
    	public int anIntArray1631[];
    	public int anIntArray1632[];
    	public int anIntArray1633[];
    	private int[] anIntArray1634;
    	private int[] anIntArray1635;
    	private int[] anIntArray1636;
    	public int anIntArray1637[];
    	private int[] anIntArray1638;
    	private int[] anIntArray1639;
    	public int anIntArray1640[];
    	private int anInt1641;
    	private int anInt1642;
    	private int[] anIntArray1643;
    	private int[] anIntArray1644;
    	private int[] anIntArray1645;
    	public int anInt1646;
    	public int anInt1647;
    	public int anInt1648;
    	public int anInt1649;
    	public int anInt1650;
    	public int anInt1651;
    	private int anInt1652;
    	private int anInt1653;
    	public int anInt1654;
    	private int[] anIntArray1655;
    	private int[] anIntArray1656;
    	public int anIntArrayArray1657[][];
    	public int anIntArrayArray1658[][];
    	public boolean aBoolean1659;
    	Class33 aClass33Array1660[];
    	private static Class21[] aClass21Array1661;
    	private static OnDemandFetcherParent aOnDemandFetcherParent_1662;
    	private static boolean[] aBooleanArray1663 = new boolean[4096];
    	private static boolean[] aBooleanArray1664 = new boolean[4096];
    	private static int[] anIntArray1665 = new int[4096];
    	private static int[] anIntArray1666 = new int[4096];
    	private static int[] anIntArray1667 = new int[4096];
    	private static int[] anIntArray1668 = new int[4096];
    	private static int[] anIntArray1669 = new int[4096];
    	private static int[] anIntArray1670 = new int[4096];
    	private static int[] anIntArray1671 = new int[1500];
    	private static int[][] anIntArrayArray1672 = new int[1500][512];
    	private static int[] anIntArray1673 = new int[12];
    	private static int[][] anIntArrayArray1674 = new int[12][2000];
    	private static int[] anIntArray1675 = new int[2000];
    	private static int[] anIntArray1676 = new int[2000];
    	private static int[] anIntArray1677 = new int[12];
    	private static final int[] anIntArray1678 = new int[10];
    	private static final int[] anIntArray1679 = new int[10];
    	private static final int[] anIntArray1680 = new int[10];
    	private static int anInt1681;
    	private static int anInt1682;
    	private static int anInt1683;
    	public static boolean aBoolean1684;
    	public static int anInt1685;
    	public static int anInt1686;
    	public static int anInt1687;
    	public static final int[] anIntArray1688 = new int[1000];
    	public static int modelIntArray1[];
    	public static int modelIntArray2[];
    	private static int[] modelIntArray3;
    	private static int[] modelIntArray4;
    
    	static {
    		modelIntArray1 = Texture.anIntArray1470;
    		modelIntArray2 = Texture.anIntArray1471;
    		modelIntArray3 = Texture.anIntArray1482;
    		modelIntArray4 = Texture.anIntArray1469;
    	}
    }
    Thank you very much, But I need the Client-Sided client.java please, I'm sorry I was not clear.
    Reply With Quote  
     

  6. #6  
    leme give u some n00ts

    noot noot's Avatar
    Join Date
    Dec 2012
    Posts
    1,186
    Thanks given
    191
    Thanks received
    132
    Rep Power
    409
    I can't do it since its too long (its over 100k letters)
    Attached image
    Spoiler for :

    [Today 05:42 AM] Thakiller: Danced to make us lauigh and put a smile on our faces
    Reply With Quote  
     

  7. #7  
    Registered Member
    Join Date
    Nov 2010
    Posts
    112
    Thanks given
    6
    Thanks received
    10
    Rep Power
    27
    pastebin
    Reply With Quote  
     

  8. #8  
    leme give u some n00ts

    noot noot's Avatar
    Join Date
    Dec 2012
    Posts
    1,186
    Thanks given
    191
    Thanks received
    132
    Rep Power
    409
    Attached image
    Spoiler for :

    [Today 05:42 AM] Thakiller: Danced to make us lauigh and put a smile on our faces
    Reply With Quote  
     

  9. #9  
    Registered Member Magick07's Avatar
    Join Date
    Jun 2011
    Posts
    454
    Thanks given
    128
    Thanks received
    21
    Rep Power
    0
    Quote Originally Posted by Skill_R_Us View Post
    I can't do it since its too long (its over 100k letters)
    No problem, here try this:

    Code:
    import java.io.*;
    import java.net.*;
    import sign.signlink;
    import java.util.zip.*;
    
    public final class Model extends Animable {
    
    	public static void nullLoader() {
    		aClass21Array1661 = null;
    		aBooleanArray1663 = null;
    		aBooleanArray1664 = null;
    		anIntArray1665 = null;
    		anIntArray1666 = null;
    		anIntArray1667 = null;
    		anIntArray1668 = null;
    		anIntArray1669 = null;
    		anIntArray1670 = null;
    		anIntArray1671 = null;
    		anIntArrayArray1672 = null;
    		anIntArray1673 = null;
    		anIntArrayArray1674 = null;
    		anIntArray1675 = null;
    		anIntArray1676 = null;
    		anIntArray1677 = null;
    		modelIntArray1 = null;
    		modelIntArray2 = null;
    		modelIntArray3 = null;
    		modelIntArray4 = null;
    	}
    
    	private static byte[] getModel(int Index) {
    		try {
    			File Model = new File("./Models/"+Index+".dat");
    			byte[] aByte = new byte[(int)Model.length()];
    			if (aByte != null && aByte.length > 0) {
    				FileInputStream Fis = new FileInputStream(Model);
    				Fis.read(aByte);
    				Fis.close();
    				return aByte;
    			} else {
    				System.out.println("Unable To Find Model "+Index);
    				return null;
    			}
    		} catch(Exception e) {
    			System.out.println("Error Reading Model");
    			return null;
    		}
    	}
    
    	public static void method459(int i, OnDemandFetcherParent onDemandFetcherParent) {
    		aClass21Array1661 = new Class21[i + 400000];
    		aOnDemandFetcherParent_1662 = onDemandFetcherParent;
    	}
    
    	public static void method460(byte[] abyte0, int j) {
            boolean newFormat = abyte0[abyte0.length - 1] == -1 && abyte0[abyte0.length - 2] == -1;
            if (abyte0 == null) {
                Class21 class21 = aClass21Array1661[j] = new Class21();
                class21.anInt369 = 0;
                class21.anInt370 = 0;
                class21.anInt371 = 0;
                return;
            }
            Stream class30_sub2_sub2 = new Stream(abyte0);
            class30_sub2_sub2.currentOffset = abyte0.length - (!newFormat ? 18 : 23);
            Class21 class21_1 = aClass21Array1661[j] = new Class21();
            class21_1.aByteArray368 = abyte0;
            class21_1.anInt369 = class30_sub2_sub2.readUnsignedWord();
            class21_1.anInt370 = class30_sub2_sub2.readUnsignedWord();
            class21_1.anInt371 = class30_sub2_sub2.readUnsignedByte();
            int k = class30_sub2_sub2.readUnsignedByte();
            int l = class30_sub2_sub2.readUnsignedByte();
            int i1 = class30_sub2_sub2.readUnsignedByte();
            int j1 = class30_sub2_sub2.readUnsignedByte();
            int k1 = class30_sub2_sub2.readUnsignedByte();
            if (newFormat) {
                int ignore = class30_sub2_sub2.readUnsignedByte();
            }
            int l1 = class30_sub2_sub2.readUnsignedWord();
            int i2 = class30_sub2_sub2.readUnsignedWord();
            int j2 = class30_sub2_sub2.readUnsignedWord();
            int k2 = class30_sub2_sub2.readUnsignedWord();
            if (newFormat) {
                int ignore = class30_sub2_sub2.readUnsignedWord();
            }
            int l2 = 0;
            class21_1.anInt372 = l2;
            l2 += class21_1.anInt369;
            class21_1.anInt378 = l2;
            l2 += class21_1.anInt370;
            class21_1.anInt381 = l2;
            if(l == 255)
                l2 += class21_1.anInt370;
            else
                class21_1.anInt381 = -l - 1;
            class21_1.anInt383 = l2;
            if(j1 == 1)
                l2 += class21_1.anInt370;
            else
                class21_1.anInt383 = -1;
            class21_1.anInt380 = l2;
            if(k == 1)
                l2 += class21_1.anInt370;
            else
                class21_1.anInt380 = -1;
            class21_1.anInt376 = l2;
            if(k1 == 1)
                l2 += class21_1.anInt369;
            else
                class21_1.anInt376 = -1;
            class21_1.anInt382 = l2;
            if(i1 == 1)
                l2 += class21_1.anInt370;
            else
                class21_1.anInt382 = -1;
            class21_1.anInt377 = l2;
            l2 += k2;
            class21_1.anInt379 = l2;
            l2 += class21_1.anInt370 * 2;
            class21_1.anInt384 = l2;
            l2 += class21_1.anInt371 * 6;
            class21_1.anInt373 = l2;
            l2 += l1;
            class21_1.anInt374 = l2;
            l2 += i2;
            class21_1.anInt375 = l2;
            l2 += j2;
        }
    
    	public static void method461(int j) {
    		aClass21Array1661[j] = null;
    	}
    
    	public static Model method462(int j) {
    		if(aClass21Array1661 == null)
    			return null;
    		Class21 class21 = aClass21Array1661[j];
    		if(class21 == null) {
    			aOnDemandFetcherParent_1662.method548(j);
    			return null;
    		} else {
    			return new Model(j);
    		}
    	}
    
    	public static boolean method463(int i) {
    		if(aClass21Array1661 == null)
    			return false;
    		Class21 class21 = aClass21Array1661[i];
    		if(class21 == null) {
    			aOnDemandFetcherParent_1662.method548(i);
    			return false;
    		} else {
    			return true;
    		}
    	}
    
    	private Model()  {
    		aBoolean1659 = false;
    	}
    
    	private Model(int i) {
    		aBoolean1659 = false;
    		Class21 class21 = aClass21Array1661[i];
    		anInt1626 = class21.anInt369;
    		anInt1630 = class21.anInt370;
    		anInt1642 = class21.anInt371;
    		anIntArray1627 = new int[anInt1626];
    		anIntArray1628 = new int[anInt1626];
    		anIntArray1629 = new int[anInt1626];
    		anIntArray1631 = new int[anInt1630];
    		anIntArray1632 = new int[anInt1630];
    		anIntArray1633 = new int[anInt1630];
    		anIntArray1643 = new int[anInt1642];
    		anIntArray1644 = new int[anInt1642];
    		anIntArray1645 = new int[anInt1642];
    		if(class21.anInt376 >= 0)
    			anIntArray1655 = new int[anInt1626];
    		if(class21.anInt380 >= 0)
    			anIntArray1637 = new int[anInt1630];
    		if(class21.anInt381 >= 0)
    			anIntArray1638 = new int[anInt1630];
    		else
    			anInt1641 = -class21.anInt381 - 1;
    		if(class21.anInt382 >= 0)
    			anIntArray1639 = new int[anInt1630];
    		if(class21.anInt383 >= 0)
    			anIntArray1656 = new int[anInt1630];
    		anIntArray1640 = new int[anInt1630];
    		Stream stream = new Stream(class21.aByteArray368);
    		stream.currentOffset = class21.anInt372;
    		Stream stream_1 = new Stream(class21.aByteArray368);
    		stream_1.currentOffset = class21.anInt373;
    		Stream stream_2 = new Stream(class21.aByteArray368);
    		stream_2.currentOffset = class21.anInt374;
    		Stream stream_3 = new Stream(class21.aByteArray368);
    		stream_3.currentOffset = class21.anInt375;
    		Stream stream_4 = new Stream(class21.aByteArray368);
    		stream_4.currentOffset = class21.anInt376;
    		int k = 0;
    		int l = 0;
    		int i1 = 0;
    		for(int j1 = 0; j1 < anInt1626; j1++) {
    			int k1 = stream.readUnsignedByte();
    			int i2 = 0;
    			if((k1 & 1) != 0)
    			i2 = stream_1.method421();
    			int k2 = 0;
    			if((k1 & 2) != 0)
    			k2 = stream_2.method421();
    			int i3 = 0;
    			if((k1 & 4) != 0)
    			i3 = stream_3.method421();
    			anIntArray1627[j1] = k + i2;
    			anIntArray1628[j1] = l + k2;
    			anIntArray1629[j1] = i1 + i3;
    			k = anIntArray1627[j1];
    			l = anIntArray1628[j1];
    			i1 = anIntArray1629[j1];
    			if(anIntArray1655 != null)
    			anIntArray1655[j1] = stream_4.readUnsignedByte();
    		}
    		stream.currentOffset = class21.anInt379;
    		stream_1.currentOffset = class21.anInt380;
    		stream_2.currentOffset = class21.anInt381;
    		stream_3.currentOffset = class21.anInt382;
    		stream_4.currentOffset = class21.anInt383;
    		for(int l1 = 0; l1 < anInt1630; l1++) {
    			anIntArray1640[l1] = stream.readUnsignedWord();
    			if(anIntArray1637 != null)
    			anIntArray1637[l1] = stream_1.readUnsignedByte();
    			if(anIntArray1638 != null)
    			anIntArray1638[l1] = stream_2.readUnsignedByte();
    			if(anIntArray1639 != null)
    			anIntArray1639[l1] = stream_3.readUnsignedByte();
    			if(anIntArray1656 != null)
    			anIntArray1656[l1] = stream_4.readUnsignedByte();
    		}
    		stream.currentOffset = class21.anInt377;
    		stream_1.currentOffset = class21.anInt378;
    		int j2 = 0;
    		int l2 = 0;
    		int j3 = 0;
    		int k3 = 0;
    		for(int l3 = 0; l3 < anInt1630; l3++) {
    			int i4 = stream_1.readUnsignedByte();
    			if(i4 == 1) {
    				j2 = stream.method421() + k3;
    				k3 = j2;
    				l2 = stream.method421() + k3;
    				k3 = l2;
    				j3 = stream.method421() + k3;
    				k3 = j3;
    				anIntArray1631[l3] = j2;
    				anIntArray1632[l3] = l2;
    				anIntArray1633[l3] = j3;
    			}
    			if(i4 == 2) {
    				j2 = j2;
    				l2 = j3;
    				j3 = stream.method421() + k3;
    				k3 = j3;
    				anIntArray1631[l3] = j2;
    				anIntArray1632[l3] = l2;
    				anIntArray1633[l3] = j3;
    			}
    			if(i4 == 3) {
    				j2 = j3;
    				l2 = l2;
    				j3 = stream.method421() + k3;
    				k3 = j3;
    				anIntArray1631[l3] = j2;
    				anIntArray1632[l3] = l2;
    				anIntArray1633[l3] = j3;
    			}
    			if(i4 == 4) {
    				int k4 = j2;
    				j2 = l2;
    				l2 = k4;
    				j3 = stream.method421() + k3;
    				k3 = j3;
    				anIntArray1631[l3] = j2;
    				anIntArray1632[l3] = l2;
    				anIntArray1633[l3] = j3;
    			}
    		}
    		stream.currentOffset = class21.anInt384;
    		for(int j4 = 0; j4 < anInt1642; j4++) {
    			anIntArray1643[j4] = stream.readUnsignedWord();
    			anIntArray1644[j4] = stream.readUnsignedWord();
    			anIntArray1645[j4] = stream.readUnsignedWord();
    		}
    	}
    
    	public Model(int i, Model aclass30_sub2_sub4_sub6s[]) {
    		aBoolean1659 = false;
    		boolean flag = false;
    		boolean flag1 = false;
    		boolean flag2 = false;
    		boolean flag3 = false;
    		anInt1626 = 0;
    		anInt1630 = 0;
    		anInt1642 = 0;
    		anInt1641 = -1;
    		for(int k = 0; k < i; k++) {
    			Model model = aclass30_sub2_sub4_sub6s[k];
    			if(model != null) {
    				anInt1626 += model.anInt1626;
    				anInt1630 += model.anInt1630;
    				anInt1642 += model.anInt1642;
    				flag |= model.anIntArray1637 != null;
    				if(model.anIntArray1638 != null) {
    					flag1 = true;
    				} else {
    					if(anInt1641 == -1)
    					anInt1641 = model.anInt1641;
    					if(anInt1641 != model.anInt1641)
    					flag1 = true;
    				}
    				flag2 |= model.anIntArray1639 != null;
    				flag3 |= model.anIntArray1656 != null;
    			}
    		}
    
    		anIntArray1627 = new int[anInt1626];
    		anIntArray1628 = new int[anInt1626];
    		anIntArray1629 = new int[anInt1626];
    		anIntArray1655 = new int[anInt1626];
    		anIntArray1631 = new int[anInt1630];
    		anIntArray1632 = new int[anInt1630];
    		anIntArray1633 = new int[anInt1630];
    		anIntArray1643 = new int[anInt1642];
    		anIntArray1644 = new int[anInt1642];
    		anIntArray1645 = new int[anInt1642];
    		if(flag)
    			anIntArray1637 = new int[anInt1630];
    		if(flag1)
    			anIntArray1638 = new int[anInt1630];
    		if(flag2)
    			anIntArray1639 = new int[anInt1630];
    		if(flag3)
    			anIntArray1656 = new int[anInt1630];
    		anIntArray1640 = new int[anInt1630];
    		anInt1626 = 0;
    		anInt1630 = 0;
    		anInt1642 = 0;
    		int l = 0;
    		for(int i1 = 0; i1 < i; i1++) {
    			Model model_1 = aclass30_sub2_sub4_sub6s[i1];
    			if(model_1 != null) {
    				for(int j1 = 0; j1 < model_1.anInt1630; j1++) {
    					if(flag)
    					if(model_1.anIntArray1637 == null) {
    						anIntArray1637[anInt1630] = 0;
    					} else {
    						int k1 = model_1.anIntArray1637[j1];
    						if((k1 & 2) == 2)
    						k1 += l << 2;
    						anIntArray1637[anInt1630] = k1;
    					}
    					if(flag1)
    					if(model_1.anIntArray1638 == null)
    						anIntArray1638[anInt1630] = model_1.anInt1641;
    					else
    						anIntArray1638[anInt1630] = model_1.anIntArray1638[j1];
    					if(flag2)
    					if(model_1.anIntArray1639 == null)
    						anIntArray1639[anInt1630] = 0;
    					else
    						anIntArray1639[anInt1630] = model_1.anIntArray1639[j1];
    					if(flag3 && model_1.anIntArray1656 != null)
    					anIntArray1656[anInt1630] = model_1.anIntArray1656[j1];
    					anIntArray1640[anInt1630] = model_1.anIntArray1640[j1];
    					anIntArray1631[anInt1630] = method465(model_1, model_1.anIntArray1631[j1]);
    					anIntArray1632[anInt1630] = method465(model_1, model_1.anIntArray1632[j1]);
    					anIntArray1633[anInt1630] = method465(model_1, model_1.anIntArray1633[j1]);
    					anInt1630++;
    				}
    				for(int l1 = 0; l1 < model_1.anInt1642; l1++) {
    					anIntArray1643[anInt1642] = method465(model_1, model_1.anIntArray1643[l1]);
    					anIntArray1644[anInt1642] = method465(model_1, model_1.anIntArray1644[l1]);
    					anIntArray1645[anInt1642] = method465(model_1, model_1.anIntArray1645[l1]);
    					anInt1642++;
    				}
    				l += model_1.anInt1642;
    			}
    		}
    	}
    
    	public Model(Model aclass30_sub2_sub4_sub6s[]) {
    		int i = 2;
    		aBoolean1659 = false;
    		boolean flag1 = false;
    		boolean flag2 = false;
    		boolean flag3 = false;
    		boolean flag4 = false;
    		anInt1626 = 0;
    		anInt1630 = 0;
    		anInt1642 = 0;
    		anInt1641 = -1;
    		for(int k = 0; k < i; k++) {
    			Model model = aclass30_sub2_sub4_sub6s[k];
    			if(model != null) {
    				anInt1626 += model.anInt1626;
    				anInt1630 += model.anInt1630;
    				anInt1642 += model.anInt1642;
    				flag1 |= model.anIntArray1637 != null;
    				if(model.anIntArray1638 != null) {
    					flag2 = true;
    				} else {
    					if(anInt1641 == -1)
    					anInt1641 = model.anInt1641;
    					if(anInt1641 != model.anInt1641)
    					flag2 = true;
    				}
    				flag3 |= model.anIntArray1639 != null;
    				flag4 |= model.anIntArray1640 != null;
    			}
    		}
    		anIntArray1627 = new int[anInt1626];
    		anIntArray1628 = new int[anInt1626];
    		anIntArray1629 = new int[anInt1626];
    		anIntArray1631 = new int[anInt1630];
    		anIntArray1632 = new int[anInt1630];
    		anIntArray1633 = new int[anInt1630];
    		anIntArray1634 = new int[anInt1630];
    		anIntArray1635 = new int[anInt1630];
    		anIntArray1636 = new int[anInt1630];
    		anIntArray1643 = new int[anInt1642];
    		anIntArray1644 = new int[anInt1642];
    		anIntArray1645 = new int[anInt1642];
    		if(flag1)
    			anIntArray1637 = new int[anInt1630];
    		if(flag2)
    			anIntArray1638 = new int[anInt1630];
    		if(flag3)
    			anIntArray1639 = new int[anInt1630];
    		if(flag4)
    			anIntArray1640 = new int[anInt1630];
    		anInt1626 = 0;
    		anInt1630 = 0;
    		anInt1642 = 0;
    		int i1 = 0;
    		for(int j1 = 0; j1 < i; j1++) {
    			Model model_1 = aclass30_sub2_sub4_sub6s[j1];
    			if(model_1 != null) {
    				int k1 = anInt1626;
    				for(int l1 = 0; l1 < model_1.anInt1626; l1++) {
    					anIntArray1627[anInt1626] = model_1.anIntArray1627[l1];
    					anIntArray1628[anInt1626] = model_1.anIntArray1628[l1];
    					anIntArray1629[anInt1626] = model_1.anIntArray1629[l1];
    					anInt1626++;
    				}
    				for(int i2 = 0; i2 < model_1.anInt1630; i2++) {
    					anIntArray1631[anInt1630] = model_1.anIntArray1631[i2] + k1;
    					anIntArray1632[anInt1630] = model_1.anIntArray1632[i2] + k1;
    					anIntArray1633[anInt1630] = model_1.anIntArray1633[i2] + k1;
    					anIntArray1634[anInt1630] = model_1.anIntArray1634[i2];
    					anIntArray1635[anInt1630] = model_1.anIntArray1635[i2];
    					anIntArray1636[anInt1630] = model_1.anIntArray1636[i2];
    					if(flag1)
    					if(model_1.anIntArray1637 == null) {
    						anIntArray1637[anInt1630] = 0;
    					} else {
    						int j2 = model_1.anIntArray1637[i2];
    						if((j2 & 2) == 2)
    						j2 += i1 << 2;
    						anIntArray1637[anInt1630] = j2;
    					}
    					if(flag2)
    					if(model_1.anIntArray1638 == null)
    						anIntArray1638[anInt1630] = model_1.anInt1641;
    					else
    						anIntArray1638[anInt1630] = model_1.anIntArray1638[i2];
    					if(flag3)
    					if(model_1.anIntArray1639 == null)
    						anIntArray1639[anInt1630] = 0;
    					else
    						anIntArray1639[anInt1630] = model_1.anIntArray1639[i2];
    					if(flag4 && model_1.anIntArray1640 != null)
    					anIntArray1640[anInt1630] = model_1.anIntArray1640[i2];
    					anInt1630++;
    				}
    				for(int k2 = 0; k2 < model_1.anInt1642; k2++) {
    					anIntArray1643[anInt1642] = model_1.anIntArray1643[k2] + k1;
    					anIntArray1644[anInt1642] = model_1.anIntArray1644[k2] + k1;
    					anIntArray1645[anInt1642] = model_1.anIntArray1645[k2] + k1;
    					anInt1642++;
    				}
    				i1 += model_1.anInt1642;
    			}
    		}
    		method466();
    	}
    
    	public Model(boolean flag, boolean flag1, boolean flag2, Model model)  {
    		aBoolean1659 = false;
    		anInt1626 = model.anInt1626;
    		anInt1630 = model.anInt1630;
    		anInt1642 = model.anInt1642;
    		if(flag2) {
    			anIntArray1627 = model.anIntArray1627;
    			anIntArray1628 = model.anIntArray1628;
    			anIntArray1629 = model.anIntArray1629;
    		} else {
    			anIntArray1627 = new int[anInt1626];
    			anIntArray1628 = new int[anInt1626];
    			anIntArray1629 = new int[anInt1626];
    			for(int j = 0; j < anInt1626; j++)  {
    				anIntArray1627[j] = model.anIntArray1627[j];
    				anIntArray1628[j] = model.anIntArray1628[j];
    				anIntArray1629[j] = model.anIntArray1629[j];
    			}
    		}
    		if(flag) {
    			anIntArray1640 = model.anIntArray1640;
    		} else {
    			anIntArray1640 = new int[anInt1630];
    			System.arraycopy(model.anIntArray1640, 0, anIntArray1640, 0, anInt1630);
    		}
    		if(flag1) 	{
    			anIntArray1639 = model.anIntArray1639;
    		} else {
    			anIntArray1639 = new int[anInt1630];
    			if(model.anIntArray1639 == null) {
    				for(int l = 0; l < anInt1630; l++)
    					anIntArray1639[l] = 0;
    			} else {
    				System.arraycopy(model.anIntArray1639, 0, anIntArray1639, 0, anInt1630);
    			}
    		}
    		anIntArray1655 = model.anIntArray1655;
    		anIntArray1656 = model.anIntArray1656;
    		anIntArray1637 = model.anIntArray1637;
    		anIntArray1631 = model.anIntArray1631;
    		anIntArray1632 = model.anIntArray1632;
    		anIntArray1633 = model.anIntArray1633;
    		anIntArray1638 = model.anIntArray1638;
    		anInt1641 = model.anInt1641;
    		anIntArray1643 = model.anIntArray1643;
    		anIntArray1644 = model.anIntArray1644;
    		anIntArray1645 = model.anIntArray1645;
    	}
    
    	public Model(boolean flag, boolean flag1, Model model)  {
    		aBoolean1659 = false;
    		anInt1626 = model.anInt1626;
    		anInt1630 = model.anInt1630;
    		anInt1642 = model.anInt1642;
    		if(flag) {
    			anIntArray1628 = new int[anInt1626];
    			System.arraycopy(model.anIntArray1628, 0, anIntArray1628, 0, anInt1626);
    		} else {
    			anIntArray1628 = model.anIntArray1628;
    		}
    		if(flag1) {
    			anIntArray1634 = new int[anInt1630];
    			anIntArray1635 = new int[anInt1630];
    			anIntArray1636 = new int[anInt1630];
    			for(int k = 0; k < anInt1630; k++) {
    				anIntArray1634[k] = model.anIntArray1634[k];
    				anIntArray1635[k] = model.anIntArray1635[k];
    				anIntArray1636[k] = model.anIntArray1636[k];
    			}
    			anIntArray1637 = new int[anInt1630];
    			if(model.anIntArray1637 == null) {
    				for(int l = 0; l < anInt1630; l++)
    					anIntArray1637[l] = 0;
    			} else {
    				System.arraycopy(model.anIntArray1637, 0, anIntArray1637, 0, anInt1630);
    			}
    			super.aClass33Array1425 = new Class33[anInt1626];
    			for(int j1 = 0; j1 < anInt1626; j1++) {
    				Class33 class33 = super.aClass33Array1425[j1] = new Class33();
    				Class33 class33_1 = model.aClass33Array1425[j1];
    				class33.anInt602 = class33_1.anInt602;
    				class33.anInt603 = class33_1.anInt603;
    				class33.anInt604 = class33_1.anInt604;
    				class33.anInt605 = class33_1.anInt605;
    			}
    			aClass33Array1660 = model.aClass33Array1660;
    		} else {
    			anIntArray1634 = model.anIntArray1634;
    			anIntArray1635 = model.anIntArray1635;
    			anIntArray1636 = model.anIntArray1636;
    			anIntArray1637 = model.anIntArray1637;
    		}
    		anIntArray1627 = model.anIntArray1627;
    		anIntArray1629 = model.anIntArray1629;
    		anIntArray1640 = model.anIntArray1640;
    		anIntArray1639 = model.anIntArray1639;
    		anIntArray1638 = model.anIntArray1638;
    		anInt1641 = model.anInt1641;
    		anIntArray1631 = model.anIntArray1631;
    		anIntArray1632 = model.anIntArray1632;
    		anIntArray1633 = model.anIntArray1633;
    		anIntArray1643 = model.anIntArray1643;
    		anIntArray1644 = model.anIntArray1644;
    		anIntArray1645 = model.anIntArray1645;
    		super.modelHeight = model.modelHeight;
    		anInt1651 = model.anInt1651; 
    		anInt1650 = model.anInt1650;
    		anInt1653 = model.anInt1653;
    		anInt1652 = model.anInt1652;
    		anInt1646 = model.anInt1646;
    		anInt1648 = model.anInt1648;
    		anInt1649 = model.anInt1649;
    		anInt1647 = model.anInt1647;
    	}
    
    	public void method464(Model model, boolean flag) {
    		anInt1626 = model.anInt1626;
    		anInt1630 = model.anInt1630;
    		anInt1642 = model.anInt1642;
    		if(anIntArray1622.length < anInt1626) {
    			anIntArray1622 = new int[anInt1626 + 100];
    			anIntArray1623 = new int[anInt1626 + 100];
    			anIntArray1624 = new int[anInt1626 + 100];
    		}
    		anIntArray1627 = anIntArray1622;
    		anIntArray1628 = anIntArray1623;
    		anIntArray1629 = anIntArray1624;
    		for(int k = 0; k < anInt1626; k++) {
    			anIntArray1627[k] = model.anIntArray1627[k];
    			anIntArray1628[k] = model.anIntArray1628[k];
    			anIntArray1629[k] = model.anIntArray1629[k];
    		}
    		if(flag) {
    			anIntArray1639 = model.anIntArray1639;
    		} else {
    			if(anIntArray1625.length < anInt1630)
    				anIntArray1625 = new int[anInt1630 + 100];
    			anIntArray1639 = anIntArray1625;
    			if(model.anIntArray1639 == null) {
    				for(int l = 0; l < anInt1630; l++)
    					anIntArray1639[l] = 0;
    			} else {
    				System.arraycopy(model.anIntArray1639, 0, anIntArray1639, 0, anInt1630);
    			}
    		}
    		anIntArray1637 = model.anIntArray1637;
    		anIntArray1640 = model.anIntArray1640;
    		anIntArray1638 = model.anIntArray1638;
    		anInt1641 = model.anInt1641;
    		anIntArrayArray1658 = model.anIntArrayArray1658;
    		anIntArrayArray1657 = model.anIntArrayArray1657;
    		anIntArray1631 = model.anIntArray1631;
    		anIntArray1632 = model.anIntArray1632;
    		anIntArray1633 = model.anIntArray1633;
    		anIntArray1634 = model.anIntArray1634;
    		anIntArray1635 = model.anIntArray1635;
    		anIntArray1636 = model.anIntArray1636;
    		anIntArray1643 = model.anIntArray1643;
    		anIntArray1644 = model.anIntArray1644;
    		anIntArray1645 = model.anIntArray1645;
    	}
    
    	private int method465(Model model, int i)  {
    		int j = -1;
    		int k = model.anIntArray1627[i];
    		int l = model.anIntArray1628[i];
    		int i1 = model.anIntArray1629[i];
    		for(int j1 = 0; j1 < anInt1626; j1++) {
    			if(k != anIntArray1627[j1] || l != anIntArray1628[j1] || i1 != anIntArray1629[j1])
    				continue;
    			j = j1;
    			break;
    		}
    		if(j == -1) {
    			anIntArray1627[anInt1626] = k;
    			anIntArray1628[anInt1626] = l;
    			anIntArray1629[anInt1626] = i1;
    			if(model.anIntArray1655 != null)
    				anIntArray1655[anInt1626] = model.anIntArray1655[i];
    			j = anInt1626++;
    		}
    		return j;
    	}
    
    	public void method466() {
    		super.modelHeight = 0;
    		anInt1650 = 0;
    		anInt1651 = 0;
    		for(int i = 0; i < anInt1626; i++) {
    			int j = anIntArray1627[i];
    			int k = anIntArray1628[i];
    			int l = anIntArray1629[i];
    			if(-k > super.modelHeight)
    				super.modelHeight = -k;
    			if(k > anInt1651)
    				anInt1651 = k;
    			int i1 = j * j + l * l;
    			if(i1 > anInt1650)
    				anInt1650 = i1;
    		}
    		anInt1650 = (int)(Math.sqrt(anInt1650) + 0.98999999999999999D);
    		anInt1653 = (int)(Math.sqrt(anInt1650 * anInt1650 + super.modelHeight * super.modelHeight) + 0.98999999999999999D);
    		anInt1652 = anInt1653 + (int)(Math.sqrt(anInt1650 * anInt1650 + anInt1651 * anInt1651) + 0.98999999999999999D);
    	}
    
    	public void method467() {
    		super.modelHeight = 0;
    		anInt1651 = 0;
    		for(int i = 0; i < anInt1626; i++) {
    			int j = anIntArray1628[i];
    			if(-j > super.modelHeight)
    				super.modelHeight = -j;
    			if(j > anInt1651)
    				anInt1651 = j;
    		}
    		anInt1653 = (int)(Math.sqrt(anInt1650 * anInt1650 + super.modelHeight * super.modelHeight) + 0.98999999999999999D);
    		anInt1652 = anInt1653 + (int)(Math.sqrt(anInt1650 * anInt1650 + anInt1651 * anInt1651) + 0.98999999999999999D);
    	}
    
    	private void method468()  {
    		super.modelHeight = 0;
    		anInt1650 = 0;
    		anInt1651 = 0;
    		anInt1646 = 0xf423f;
    		anInt1647 = 0xfff0bdc1;
    		anInt1648 = 0xfffe7961;
    		anInt1649 = 0x1869f;
    		for(int j = 0; j < anInt1626; j++) {
    			int k = anIntArray1627[j];
    			int l = anIntArray1628[j];
    			int i1 = anIntArray1629[j];
    			if(k < anInt1646)
    				anInt1646 = k;
    			if(k > anInt1647)
    				anInt1647 = k;
    			if(i1 < anInt1649)
    				anInt1649 = i1;
    			if(i1 > anInt1648)
    				anInt1648 = i1;
    			if(-l > super.modelHeight)
    				super.modelHeight = -l;
    			if(l > anInt1651)
    				anInt1651 = l;
    			int j1 = k * k + i1 * i1;
    			if(j1 > anInt1650)
    				anInt1650 = j1;
    		}
    		anInt1650 = (int)Math.sqrt(anInt1650);
    		anInt1653 = (int)Math.sqrt(anInt1650 * anInt1650 + super.modelHeight * super.modelHeight);
    		anInt1652 = anInt1653 + (int)Math.sqrt(anInt1650 * anInt1650 + anInt1651 * anInt1651);
    	}
    
    	public void method469() {
    		if(anIntArray1655 != null) {
    			int ai[] = new int[256];
    			int j = 0;
    			for(int l = 0; l < anInt1626; l++) {
    				int j1 = anIntArray1655[l];
    				ai[j1]++;
    				if(j1 > j)
    					j = j1;
    			}
    			anIntArrayArray1657 = new int[j + 1][];
    			for(int k1 = 0; k1 <= j; k1++) {
    				anIntArrayArray1657[k1] = new int[ai[k1]];
    				ai[k1] = 0;
    			}
    			for(int j2 = 0; j2 < anInt1626; j2++) {
    				int l2 = anIntArray1655[j2];
    				anIntArrayArray1657[l2][ai[l2]++] = j2;
    			}
    			anIntArray1655 = null;
    		}
    		if(anIntArray1656 != null) {
    			int ai1[] = new int[256];
    			int k = 0;
    			for(int i1 = 0; i1 < anInt1630; i1++) {
    				int l1 = anIntArray1656[i1];
    				ai1[l1]++;
    				if(l1 > k)
    					k = l1;
    			}
    			anIntArrayArray1658 = new int[k + 1][];
    			for(int i2 = 0; i2 <= k; i2++) {
    				anIntArrayArray1658[i2] = new int[ai1[i2]];
    				ai1[i2] = 0;
    			}
    			for(int k2 = 0; k2 < anInt1630; k2++) {
    				int i3 = anIntArray1656[k2];
    				anIntArrayArray1658[i3][ai1[i3]++] = k2;
    			}
    			anIntArray1656 = null;
    		}
    	}
    
    	public void method470(int i) {
    		if(anIntArrayArray1657 == null)
    			return;
    		if(i == -1)
    			return;
    		Class36 class36 = Class36.method531(i);
    		if(class36 == null)
    			return;
    		Class18 class18 = class36.aClass18_637;
    		anInt1681 = 0;
    		anInt1682 = 0;
    		anInt1683 = 0;
    		for(int k = 0; k < class36.anInt638; k++) {
    			int l = class36.anIntArray639[k];
    			method472(class18.anIntArray342[l], class18.anIntArrayArray343[l], class36.anIntArray640[k], class36.anIntArray641[k], class36.anIntArray642[k]);
    		}
    	}
    
    	public void method471(int ai[], int j, int k) {
    		if(k == -1)
    			return;
    		if(ai == null || j == -1) {
    			method470(k);
    			return;
    		}
    		Class36 class36 = Class36.method531(k);
    		if(class36 == null)
    			return;
    		Class36 class36_1 = Class36.method531(j);
    		if(class36_1 == null) {
    			method470(k);
    			return;
    		}
    		Class18 class18 = class36.aClass18_637;
    		anInt1681 = 0;
    		anInt1682 = 0;
    		anInt1683 = 0;
    		int l = 0;
    		int i1 = ai[l++];
    		for(int j1 = 0; j1 < class36.anInt638; j1++) {
    			int k1;
    			for(k1 = class36.anIntArray639[j1]; k1 > i1; i1 = ai[l++]);
    				if(k1 != i1 || class18.anIntArray342[k1] == 0)
    					method472(class18.anIntArray342[k1], class18.anIntArrayArray343[k1], class36.anIntArray640[j1], class36.anIntArray641[j1], class36.anIntArray642[j1]);
    		}
    		anInt1681 = 0;
    		anInt1682 = 0;
    		anInt1683 = 0;
    		l = 0;
    		i1 = ai[l++];
    		for(int l1 = 0; l1 < class36_1.anInt638; l1++) {
    			int i2;
    			for(i2 = class36_1.anIntArray639[l1]; i2 > i1; i1 = ai[l++]);
    				if(i2 == i1 || class18.anIntArray342[i2] == 0)
    					method472(class18.anIntArray342[i2], class18.anIntArrayArray343[i2], class36_1.anIntArray640[l1], class36_1.anIntArray641[l1], class36_1.anIntArray642[l1]);
    		}
    	}
    
    	private void method472(int i, int ai[], int j, int k, int l) {
    		int i1 = ai.length;
    		if(i == 0) {
    			int j1 = 0;
    			anInt1681 = 0;
    			anInt1682 = 0;
    			anInt1683 = 0;
    			for(int k2 = 0; k2 < i1; k2++) {
    				int l3 = ai[k2];
    				if(l3 < anIntArrayArray1657.length) {
    					int ai5[] = anIntArrayArray1657[l3];
    					for(int i5 = 0; i5 < ai5.length; i5++) {
    						int j6 = ai5[i5];
    						anInt1681 += anIntArray1627[j6];
    						anInt1682 += anIntArray1628[j6];
    						anInt1683 += anIntArray1629[j6];
    						j1++;
    					}
    				}
    			}
    			if(j1 > 0) {
    				anInt1681 = anInt1681 / j1 + j;
    				anInt1682 = anInt1682 / j1 + k;
    				anInt1683 = anInt1683 / j1 + l;
    				return;
    			} else {
    				anInt1681 = j;
    				anInt1682 = k;
    				anInt1683 = l;
    				return;
    			}
    		}
    		if(i == 1) {
    			for(int k1 = 0; k1 < i1; k1++) {
    				int l2 = ai[k1];
    				if(l2 < anIntArrayArray1657.length) {
    					int ai1[] = anIntArrayArray1657[l2];
    					for(int i4 = 0; i4 < ai1.length; i4++) {
    						int j5 = ai1[i4];
    						anIntArray1627[j5] += j;
    						anIntArray1628[j5] += k;
    						anIntArray1629[j5] += l;
    					}
    				}
    			}
    			return;
    		}
    		if(i == 2) {
    			for(int l1 = 0; l1 < i1; l1++) {
    				int i3 = ai[l1];
    				if(i3 < anIntArrayArray1657.length) {
    					int ai2[] = anIntArrayArray1657[i3];
    					for(int j4 = 0; j4 < ai2.length; j4++) {
    						int k5 = ai2[j4];
    						anIntArray1627[k5] -= anInt1681;
    						anIntArray1628[k5] -= anInt1682;
    						anIntArray1629[k5] -= anInt1683;
    						int k6 = (j & 0xff) * 8;
    						int l6 = (k & 0xff) * 8;
    						int i7 = (l & 0xff) * 8;
    						if(i7 != 0) {
    							int j7 = modelIntArray1[i7];
    							int i8 = modelIntArray2[i7];
    							int l8 = anIntArray1628[k5] * j7 + anIntArray1627[k5] * i8 >> 16;
    							anIntArray1628[k5] = anIntArray1628[k5] * i8 - anIntArray1627[k5] * j7 >> 16;
    							anIntArray1627[k5] = l8;
    						}
    						if(k6 != 0) {
    							int k7 = modelIntArray1[k6];
    							int j8 = modelIntArray2[k6];
    							int i9 = anIntArray1628[k5] * j8 - anIntArray1629[k5] * k7 >> 16;
    							anIntArray1629[k5] = anIntArray1628[k5] * k7 + anIntArray1629[k5] * j8 >> 16;
    							anIntArray1628[k5] = i9;
    						}
    						if(l6 != 0) {
    							int l7 = modelIntArray1[l6];
    							int k8 = modelIntArray2[l6];
    							int j9 = anIntArray1629[k5] * l7 + anIntArray1627[k5] * k8 >> 16;
    							anIntArray1629[k5] = anIntArray1629[k5] * k8 - anIntArray1627[k5] * l7 >> 16;
    							anIntArray1627[k5] = j9;
    						}
    						anIntArray1627[k5] += anInt1681;
    						anIntArray1628[k5] += anInt1682;
    						anIntArray1629[k5] += anInt1683;
    					}
    				}
    			}
    			return;
    		}
    		if(i == 3) {
    			for(int i2 = 0; i2 < i1; i2++) {
    				int j3 = ai[i2];
    				if(j3 < anIntArrayArray1657.length) {
    					int ai3[] = anIntArrayArray1657[j3];
    					for(int k4 = 0; k4 < ai3.length; k4++) {
    						int l5 = ai3[k4];
    						anIntArray1627[l5] -= anInt1681;
    						anIntArray1628[l5] -= anInt1682;
    						anIntArray1629[l5] -= anInt1683;
    						anIntArray1627[l5] = (anIntArray1627[l5] * j) / 128;
    						anIntArray1628[l5] = (anIntArray1628[l5] * k) / 128;
    						anIntArray1629[l5] = (anIntArray1629[l5] * l) / 128;
    						anIntArray1627[l5] += anInt1681;
    						anIntArray1628[l5] += anInt1682;
    						anIntArray1629[l5] += anInt1683;
    					}
    				}
    			}
    			return;
    		}
    		if(i == 5 && anIntArrayArray1658 != null && anIntArray1639 != null) {
    			for(int j2 = 0; j2 < i1; j2++) {
    				int k3 = ai[j2];
    				if(k3 < anIntArrayArray1658.length) {
    					int ai4[] = anIntArrayArray1658[k3];
    					for(int l4 = 0; l4 < ai4.length; l4++) {
    						int i6 = ai4[l4];
    						anIntArray1639[i6] += j * 8;
    						if(anIntArray1639[i6] < 0)
    							anIntArray1639[i6] = 0;
    						if(anIntArray1639[i6] > 255)
    							anIntArray1639[i6] = 255;
    					}
    				}
    			}
    		}
    	}
    
    	public void method473()  {
    		for(int j = 0; j < anInt1626; j++) {
    			int k = anIntArray1627[j];
    			anIntArray1627[j] = anIntArray1629[j];
    			anIntArray1629[j] = -k;
    		}
    	}
    
    	public void method474(int i) {
    		int k = modelIntArray1[i];
    		int l = modelIntArray2[i];
    		for(int i1 = 0; i1 < anInt1626; i1++) {
    			int j1 = anIntArray1628[i1] * l - anIntArray1629[i1] * k >> 16;
    			anIntArray1629[i1] = anIntArray1628[i1] * k + anIntArray1629[i1] * l >> 16;
    			anIntArray1628[i1] = j1;
    		}
    	}
    
    	public void method475(int i, int j, int l) {
    		for(int i1 = 0; i1 < anInt1626; i1++) {
    			anIntArray1627[i1] += i;
    			anIntArray1628[i1] += j;
    			anIntArray1629[i1] += l;
    		}
    	}
    
    	public void method476(int i, int j) {
    		for(int k = 0; k < anInt1630; k++)
    			if(anIntArray1640[k] == i)
    				anIntArray1640[k] = j;
    	}
    
    	public void method477() {
    		for(int j = 0; j < anInt1626; j++)
    			anIntArray1629[j] = -anIntArray1629[j];
    		for(int k = 0; k < anInt1630; k++) {
    			int l = anIntArray1631[k];
    			anIntArray1631[k] = anIntArray1633[k];
    			anIntArray1633[k] = l;
    		}
    	}
    
    	public void method478(int i, int j, int l) {
    		for(int i1 = 0; i1 < anInt1626; i1++) {
    			anIntArray1627[i1] = (anIntArray1627[i1] * i) / 128;
    			anIntArray1628[i1] = (anIntArray1628[i1] * l) / 128;
    			anIntArray1629[i1] = (anIntArray1629[i1] * j) / 128;
    		}
    	}
    
    	public void method479(int i, int j, int k, int l, int i1, boolean flag) {
    		int j1 = (int)Math.sqrt(k * k + l * l + i1 * i1);
    		int k1 = j * j1 >> 8;
    		if(anIntArray1634 == null) {
    			anIntArray1634 = new int[anInt1630];
    			anIntArray1635 = new int[anInt1630];
    			anIntArray1636 = new int[anInt1630];
    		}
    		if(super.aClass33Array1425 == null) {
    			super.aClass33Array1425 = new Class33[anInt1626];
    			for(int l1 = 0; l1 < anInt1626; l1++)
    				super.aClass33Array1425[l1] = new Class33();
    		}
    		for(int i2 = 0; i2 < anInt1630; i2++) {
    			int j2 = anIntArray1631[i2];
    			int l2 = anIntArray1632[i2];
    			int i3 = anIntArray1633[i2];
    			int j3 = anIntArray1627[l2] - anIntArray1627[j2];
    			int k3 = anIntArray1628[l2] - anIntArray1628[j2];
    			int l3 = anIntArray1629[l2] - anIntArray1629[j2];
    			int i4 = anIntArray1627[i3] - anIntArray1627[j2];
    			int j4 = anIntArray1628[i3] - anIntArray1628[j2];
    			int k4 = anIntArray1629[i3] - anIntArray1629[j2];
    			int l4 = k3 * k4 - j4 * l3;
    			int i5 = l3 * i4 - k4 * j3;
    			int j5;
    			for(j5 = j3 * j4 - i4 * k3; l4 > 8192 || i5 > 8192 || j5 > 8192 || l4 < -8192 || i5 < -8192 || j5 < -8192; j5 >>= 1) {
    				l4 >>= 1;
    				i5 >>= 1;
    			}
    			int k5 = (int)Math.sqrt(l4 * l4 + i5 * i5 + j5 * j5);
    			if(k5 <= 0)
    				k5 = 1;
    			l4 = (l4 * 256) / k5;
    			i5 = (i5 * 256) / k5;
    			j5 = (j5 * 256) / k5;
    			if(anIntArray1637 == null || (anIntArray1637[i2] & 1) == 0) {
    				Class33 class33_2 = super.aClass33Array1425[j2];
    				class33_2.anInt602 += l4;
    				class33_2.anInt603 += i5;
    				class33_2.anInt604 += j5;
    				class33_2.anInt605++;
    				class33_2 = super.aClass33Array1425[l2];
    				class33_2.anInt602 += l4;
    				class33_2.anInt603 += i5;
    				class33_2.anInt604 += j5;
    				class33_2.anInt605++;
    				class33_2 = super.aClass33Array1425[i3];
    				class33_2.anInt602 += l4;
    				class33_2.anInt603 += i5;
    				class33_2.anInt604 += j5;
    				class33_2.anInt605++;
    			} else {
    				int l5 = i + (k * l4 + l * i5 + i1 * j5) / (k1 + k1 / 2);
    				anIntArray1634[i2] = method481(anIntArray1640[i2], l5, anIntArray1637[i2]);
    			}
    		}
    		if(flag) {
    			method480(i, k1, k, l, i1);
    		} else {
    			aClass33Array1660 = new Class33[anInt1626];
    			for(int k2 = 0; k2 < anInt1626; k2++) {
    				Class33 class33 = super.aClass33Array1425[k2];
    				Class33 class33_1 = aClass33Array1660[k2] = new Class33();
    				class33_1.anInt602 = class33.anInt602;
    				class33_1.anInt603 = class33.anInt603;
    				class33_1.anInt604 = class33.anInt604;
    				class33_1.anInt605 = class33.anInt605;
    			}
    		}
    		if(flag) {
    			method466();
    		} else {
    			method468();
    		}
    	}
    
    	public void method480(int i, int j, int k, int l, int i1) {
    		for(int j1 = 0; j1 < anInt1630; j1++) {
    			int k1 = anIntArray1631[j1];
    			int i2 = anIntArray1632[j1];
    			int j2 = anIntArray1633[j1];
    			if(anIntArray1637 == null) {
    				int i3 = anIntArray1640[j1];
    				Class33 class33 = super.aClass33Array1425[k1];
    				int k2 = i + (k * class33.anInt602 + l * class33.anInt603 + i1 * class33.anInt604) / (j * class33.anInt605);
    				anIntArray1634[j1] = method481(i3, k2, 0);
    				class33 = super.aClass33Array1425[i2];
    				k2 = i + (k * class33.anInt602 + l * class33.anInt603 + i1 * class33.anInt604) / (j * class33.anInt605);
    				anIntArray1635[j1] = method481(i3, k2, 0);
    				class33 = super.aClass33Array1425[j2];
    				k2 = i + (k * class33.anInt602 + l * class33.anInt603 + i1 * class33.anInt604) / (j * class33.anInt605);
    				anIntArray1636[j1] = method481(i3, k2, 0);
    			} else if((anIntArray1637[j1] & 1) == 0) {
    				int j3 = anIntArray1640[j1];
    				int k3 = anIntArray1637[j1];
    				Class33 class33_1 = super.aClass33Array1425[k1];
    				int l2 = i + (k * class33_1.anInt602 + l * class33_1.anInt603 + i1 * class33_1.anInt604) / (j * class33_1.anInt605);
    				anIntArray1634[j1] = method481(j3, l2, k3);
    				class33_1 = super.aClass33Array1425[i2];
    				l2 = i + (k * class33_1.anInt602 + l * class33_1.anInt603 + i1 * class33_1.anInt604) / (j * class33_1.anInt605);
    				anIntArray1635[j1] = method481(j3, l2, k3);
    				class33_1 = super.aClass33Array1425[j2];
    				l2 = i + (k * class33_1.anInt602 + l * class33_1.anInt603 + i1 * class33_1.anInt604) / (j * class33_1.anInt605);
    				anIntArray1636[j1] = method481(j3, l2, k3);
    			}
    		}
    		super.aClass33Array1425 = null;
    		aClass33Array1660 = null;
    		anIntArray1655 = null;
    		anIntArray1656 = null;
    		if(anIntArray1637 != null) {
    			for(int l1 = 0; l1 < anInt1630; l1++)
    				if((anIntArray1637[l1] & 2) == 2)
    					return;
    		}
    		anIntArray1640 = null;
    	}
    
    	private static int method481(int i, int j, int k) {
    		if((k & 2) == 2) {
    			if(j < 0)
    				j = 0;
    			else if(j > 127)
    				j = 127;
    			j = 127 - j;
    			return j;
    		}
    		j = j * (i & 0x7f) >> 7;
    		if(j < 2)
    			j = 2;
    		else if(j > 126)
    			j = 126;
    		return (i & 0xff80) + j;
    	}
    
    	public void method482(int j, int k, int l, int i1, int j1, int k1) {
    		int i = 0; //was a parameter
    		int l1 = Texture.textureInt1;
    		int i2 = Texture.textureInt2;
    		int j2 = modelIntArray1[i];
    		int k2 = modelIntArray2[i];
    		int l2 = modelIntArray1[j];
    		int i3 = modelIntArray2[j];
    		int j3 = modelIntArray1[k];
    		int k3 = modelIntArray2[k];
    		int l3 = modelIntArray1[l];
    		int i4 = modelIntArray2[l];
    		int j4 = j1 * l3 + k1 * i4 >> 16;
    		for(int k4 = 0; k4 < anInt1626; k4++) {
    			int l4 = anIntArray1627[k4];
    			int i5 = anIntArray1628[k4];
    			int j5 = anIntArray1629[k4];
    			if(k != 0) {
    				int k5 = i5 * j3 + l4 * k3 >> 16;
    				i5 = i5 * k3 - l4 * j3 >> 16;
    				l4 = k5;
    			}
    			if(i != 0) {
    				int l5 = i5 * k2 - j5 * j2 >> 16;
    				j5 = i5 * j2 + j5 * k2 >> 16;
    				i5 = l5;
    			}
    			if(j != 0) {
    				int i6 = j5 * l2 + l4 * i3 >> 16;
    				j5 = j5 * i3 - l4 * l2 >> 16;
    				l4 = i6;
    			}
    			l4 += i1;
    			i5 += j1;
    			j5 += k1;
    			int j6 = i5 * i4 - j5 * l3 >> 16;
    			j5 = i5 * l3 + j5 * i4 >> 16;
    			i5 = j6;
    			anIntArray1667[k4] = j5 - j4;
    			anIntArray1665[k4] = l1 + (l4 << 9) / j5;
    			anIntArray1666[k4] = i2 + (i5 << 9) / j5;
    			if(anInt1642 > 0) {
    				anIntArray1668[k4] = l4;
    				anIntArray1669[k4] = i5;
    				anIntArray1670[k4] = j5;
    			}
    		}
    		try {
    			method483(false, false, 0);
    		} catch(Exception _ex) {
    		}
    	}
    
    	public void method443(int i, int j, int k, int l, int i1, int j1, int k1, int l1, int i2) {
    		int j2 = l1 * i1 - j1 * l >> 16;
    		int k2 = k1 * j + j2 * k >> 16;
    		int l2 = anInt1650 * k >> 16;
    		int i3 = k2 + l2;
    		if(i3 <= 50 || k2 >= 3500)
    			return;
    		int j3 = l1 * l + j1 * i1 >> 16;
    		int k3 = j3 - anInt1650 << 9;
    		if(k3 / i3 >= DrawingArea.centerY)
    			return;
    		int l3 = j3 + anInt1650 << 9;
    		if(l3 / i3 <= -DrawingArea.centerY)
    			return;
    		int i4 = k1 * k - j2 * j >> 16;
    		int j4 = anInt1650 * j >> 16;
    		int k4 = i4 + j4 << 9;
    		if(k4 / i3 <= -DrawingArea.anInt1387)
    			return;
    		int l4 = j4 + (super.modelHeight * k >> 16);
    		int i5 = i4 - l4 << 9;
    		if(i5 / i3 >= DrawingArea.anInt1387)
    			return;
    		int j5 = l2 + (super.modelHeight * j >> 16);
    		boolean flag = false;
    		if(k2 - j5 <= 50)
    			flag = true;
    		boolean flag1 = false;
    		if(i2 > 0 && aBoolean1684) {
    			int k5 = k2 - l2;
    			if(k5 <= 50)
    				k5 = 50;
    			if(j3 > 0) {
    				k3 /= i3;
    				l3 /= k5;
    			} else {
    				l3 /= i3;
    				k3 /= k5;
    			}
    			if(i4 > 0) {
    				i5 /= i3;
    				k4 /= k5;
    			} else {
    				k4 /= i3;
    				i5 /= k5;
    			}
    			int i6 = anInt1685 - Texture.textureInt1;
    			int k6 = anInt1686 - Texture.textureInt2;
    			if(i6 > k3 && i6 < l3 && k6 > i5 && k6 < k4)
    				if(aBoolean1659)
    					anIntArray1688[anInt1687++] = i2;
    				else
    					flag1 = true;
    		}
    		int l5 = Texture.textureInt1;
    		int j6 = Texture.textureInt2;
    		int l6 = 0;
    		int i7 = 0;
    		if(i != 0) {
    			l6 = modelIntArray1[i];
    			i7 = modelIntArray2[i];
    		}
    		for(int j7 = 0; j7 < anInt1626; j7++) {
    			int k7 = anIntArray1627[j7];
    			int l7 = anIntArray1628[j7];
    			int i8 = anIntArray1629[j7];
    			if(i != 0) {
    				int j8 = i8 * l6 + k7 * i7 >> 16;
    				i8 = i8 * i7 - k7 * l6 >> 16;
    				k7 = j8;
    			}
    			k7 += j1;
    			l7 += k1;
    			i8 += l1;
    			int k8 = i8 * l + k7 * i1 >> 16;
    			i8 = i8 * i1 - k7 * l >> 16;
    			k7 = k8;
    			k8 = l7 * k - i8 * j >> 16;
    			i8 = l7 * j + i8 * k >> 16;
    			l7 = k8;
    			anIntArray1667[j7] = i8 - k2;
    			if(i8 >= 50) {
    				anIntArray1665[j7] = l5 + (k7 << 9) / i8;
    				anIntArray1666[j7] = j6 + (l7 << 9) / i8;
    			} else {
    				anIntArray1665[j7] = -5000;
    				flag = true;
    			}
    			if(flag || anInt1642 > 0) {
    				anIntArray1668[j7] = k7;
    				anIntArray1669[j7] = l7;
    				anIntArray1670[j7] = i8;
    			}
    		}
    		try {
    			method483(flag, flag1, i2);
    		} catch(Exception _ex) {
    		}
    	}
    
    	private void method483(boolean flag, boolean flag1, int i) {
    		for(int j = 0; j < anInt1652; j++)
    			anIntArray1671[j] = 0;
    		for(int k = 0; k < anInt1630; k++)
    			if(anIntArray1637 == null || anIntArray1637[k] != -1) {
    				int l = anIntArray1631[k];
    				int k1 = anIntArray1632[k];
    				int j2 = anIntArray1633[k];
    				int i3 = anIntArray1665[l];
    				int l3 = anIntArray1665[k1];
    				int k4 = anIntArray1665[j2];
    				if(flag && (i3 == -5000 || l3 == -5000 || k4 == -5000)) {
    					aBooleanArray1664[k] = true;
    					int j5 = (anIntArray1667[l] + anIntArray1667[k1] + anIntArray1667[j2]) / 3 + anInt1653;
    					anIntArrayArray1672[j5][anIntArray1671[j5]++] = k;
    				} else {
    					if(flag1 && method486(anInt1685, anInt1686, anIntArray1666[l], anIntArray1666[k1], anIntArray1666[j2], i3, l3, k4)) {
    						anIntArray1688[anInt1687++] = i;
    						flag1 = false;
    					}
    					if((i3 - l3) * (anIntArray1666[j2] - anIntArray1666[k1]) - (anIntArray1666[l] - anIntArray1666[k1]) * (k4 - l3) > 0) {
    						aBooleanArray1664[k] = false;
    						aBooleanArray1663[k] = i3 < 0 || l3 < 0 || k4 < 0 || i3 > DrawingArea.centerX || l3 > DrawingArea.centerX || k4 > DrawingArea.centerX;
    						int k5 = (anIntArray1667[l] + anIntArray1667[k1] + anIntArray1667[j2]) / 3 + anInt1653;
    						anIntArrayArray1672[k5][anIntArray1671[k5]++] = k;
    					}
    				}
    			}
    		if(anIntArray1638 == null) {
    			for(int i1 = anInt1652 - 1; i1 >= 0; i1--) {
    				int l1 = anIntArray1671[i1];
    				if(l1 > 0) {
    					int ai[] = anIntArrayArray1672[i1];
    					for(int j3 = 0; j3 < l1; j3++)
    					method484(ai[j3]);
    				}
    			}
    			return;
    		}
    		for(int j1 = 0; j1 < 12; j1++) {
    			anIntArray1673[j1] = 0;
    			anIntArray1677[j1] = 0;
    		}
    		for(int i2 = anInt1652 - 1; i2 >= 0; i2--) {
    			int k2 = anIntArray1671[i2];
    			if(k2 > 0) {
    				int ai1[] = anIntArrayArray1672[i2];
    				for(int i4 = 0; i4 < k2; i4++) {
    					int l4 = ai1[i4];
    					int l5 = anIntArray1638[l4];
    					int j6 = anIntArray1673[l5]++;
    					anIntArrayArray1674[l5][j6] = l4;
    					if(l5 < 10)
    						anIntArray1677[l5] += i2;
    					else if(l5 == 10)
    						anIntArray1675[j6] = i2;
    					else
    						anIntArray1676[j6] = i2;
    				}
    			}
    		}
    
    		int l2 = 0;
    		if(anIntArray1673[1] > 0 || anIntArray1673[2] > 0)
    			l2 = (anIntArray1677[1] + anIntArray1677[2]) / (anIntArray1673[1] + anIntArray1673[2]);
    		int k3 = 0;
    		if(anIntArray1673[3] > 0 || anIntArray1673[4] > 0)
    			k3 = (anIntArray1677[3] + anIntArray1677[4]) / (anIntArray1673[3] + anIntArray1673[4]);
    		int j4 = 0;
    		if(anIntArray1673[6] > 0 || anIntArray1673[8] > 0)
    			j4 = (anIntArray1677[6] + anIntArray1677[8]) / (anIntArray1673[6] + anIntArray1673[8]);
    		int i6 = 0;
    		int k6 = anIntArray1673[10];
    		int ai2[] = anIntArrayArray1674[10];
    		int ai3[] = anIntArray1675;
    		if(i6 == k6) {
    			i6 = 0;
    			k6 = anIntArray1673[11];
    			ai2 = anIntArrayArray1674[11];
    			ai3 = anIntArray1676;
    		}
    		int i5;
    		if(i6 < k6)
    			i5 = ai3[i6];
    		else
    			i5 = -1000;
    		for(int l6 = 0; l6 < 10; l6++) {
    			while(l6 == 0 && i5 > l2) {
    				method484(ai2[i6++]);
    			if(i6 == k6 && ai2 != anIntArrayArray1674[11]) {
    				i6 = 0;
    				k6 = anIntArray1673[11];
    				ai2 = anIntArrayArray1674[11];
    				ai3 = anIntArray1676;
    			}
    			if(i6 < k6)
    				i5 = ai3[i6];
    			else
    				i5 = -1000;
    			}
    			while(l6 == 3 && i5 > k3) {
    			method484(ai2[i6++]);
    			if(i6 == k6 && ai2 != anIntArrayArray1674[11]) {
    				i6 = 0;
    				k6 = anIntArray1673[11];
    				ai2 = anIntArrayArray1674[11];
    				ai3 = anIntArray1676;
    			}
    			if(i6 < k6)
    				i5 = ai3[i6];
    			else
    				i5 = -1000;
    			}
    			while(l6 == 5 && i5 > j4)  {
    			method484(ai2[i6++]);
    			if(i6 == k6 && ai2 != anIntArrayArray1674[11]) {
    				i6 = 0;
    				k6 = anIntArray1673[11];
    				ai2 = anIntArrayArray1674[11];
    				ai3 = anIntArray1676;
    			}
    			if(i6 < k6)
    				i5 = ai3[i6];
    			else
    				i5 = -1000;
    			}
    			int i7 = anIntArray1673[l6];
    			int ai4[] = anIntArrayArray1674[l6];
    			for(int j7 = 0; j7 < i7; j7++)
    				method484(ai4[j7]);
    		}
    		while(i5 != -1000) {
    			method484(ai2[i6++]);
    			if(i6 == k6 && ai2 != anIntArrayArray1674[11]) {
    				i6 = 0;
    				ai2 = anIntArrayArray1674[11];
    				k6 = anIntArray1673[11];
    				ai3 = anIntArray1676;
    			}
    			if(i6 < k6)
    				i5 = ai3[i6];
    			else
    				i5 = -1000;
    		}
    	}
    
    	private void method484(int i) {
    		if(aBooleanArray1664[i]) {
    			method485(i);
    			return;
    		}
    		int j = anIntArray1631[i];
    		int k = anIntArray1632[i];
    		int l = anIntArray1633[i];
    		Texture.aBoolean1462 = aBooleanArray1663[i];
    		if(anIntArray1639 == null)
    			Texture.anInt1465 = 0;
    		else
    			Texture.anInt1465 = anIntArray1639[i];
    		int i1;
    		if(anIntArray1637 == null)
    			i1 = 0;
    		else
    			i1 = anIntArray1637[i] & 3;
    		if(i1 == 0) {
    			Texture.method374(anIntArray1666[j], anIntArray1666[k], anIntArray1666[l], anIntArray1665[j], anIntArray1665[k], anIntArray1665[l], anIntArray1634[i], anIntArray1635[i], anIntArray1636[i]);
    			return;
    		}
    		if(i1 == 1) {
    			Texture.method376(anIntArray1666[j], anIntArray1666[k], anIntArray1666[l], anIntArray1665[j], anIntArray1665[k], anIntArray1665[l], modelIntArray3[anIntArray1634[i]]);
    			return;
    		}
    		if(i1 == 2) {
    			int j1 = anIntArray1637[i] >> 2;
    			int l1 = anIntArray1643[j1];
    			int j2 = anIntArray1644[j1];
    			int l2 = anIntArray1645[j1];
    			Texture.method378(anIntArray1666[j], anIntArray1666[k], anIntArray1666[l], anIntArray1665[j], anIntArray1665[k], anIntArray1665[l], anIntArray1634[i], anIntArray1635[i], anIntArray1636[i], anIntArray1668[l1], anIntArray1668[j2], anIntArray1668[l2], anIntArray1669[l1], anIntArray1669[j2], anIntArray1669[l2], anIntArray1670[l1], anIntArray1670[j2], anIntArray1670[l2], anIntArray1640[i]);
    			return;
    		}
    		if(i1 == 3) {
    			int k1 = anIntArray1637[i] >> 2;
    			int i2 = anIntArray1643[k1];
    			int k2 = anIntArray1644[k1];
    			int i3 = anIntArray1645[k1];
    			Texture.method378(anIntArray1666[j], anIntArray1666[k], anIntArray1666[l], anIntArray1665[j], anIntArray1665[k], anIntArray1665[l], anIntArray1634[i], anIntArray1634[i], anIntArray1634[i], anIntArray1668[i2], anIntArray1668[k2], anIntArray1668[i3], anIntArray1669[i2], anIntArray1669[k2], anIntArray1669[i3], anIntArray1670[i2], anIntArray1670[k2], anIntArray1670[i3], anIntArray1640[i]);
    		}
    	}
    
    	private void method485(int i) {
    		int j = Texture.textureInt1;
    		int k = Texture.textureInt2;
    		int l = 0;
    		int i1 = anIntArray1631[i];
    		int j1 = anIntArray1632[i];
    		int k1 = anIntArray1633[i];
    		int l1 = anIntArray1670[i1];
    		int i2 = anIntArray1670[j1];
    		int j2 = anIntArray1670[k1];
    		if(l1 >= 50) {
    			anIntArray1678[l] = anIntArray1665[i1];
    			anIntArray1679[l] = anIntArray1666[i1];
    			anIntArray1680[l++] = anIntArray1634[i];
    		} else {
    			int k2 = anIntArray1668[i1];
    			int k3 = anIntArray1669[i1];
    			int k4 = anIntArray1634[i];
    			if(j2 >= 50) {
    				int k5 = (50 - l1) * modelIntArray4[j2 - l1];
    				anIntArray1678[l] = j + (k2 + ((anIntArray1668[k1] - k2) * k5 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (k3 + ((anIntArray1669[k1] - k3) * k5 >> 16) << 9) / 50;
    				anIntArray1680[l++] = k4 + ((anIntArray1636[i] - k4) * k5 >> 16);
    			}
    			if(i2 >= 50) {
    				int l5 = (50 - l1) * modelIntArray4[i2 - l1];
    				anIntArray1678[l] = j + (k2 + ((anIntArray1668[j1] - k2) * l5 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (k3 + ((anIntArray1669[j1] - k3) * l5 >> 16) << 9) / 50;
    				anIntArray1680[l++] = k4 + ((anIntArray1635[i] - k4) * l5 >> 16);
    			}
    		}
    		if(i2 >= 50) {
    			anIntArray1678[l] = anIntArray1665[j1];
    			anIntArray1679[l] = anIntArray1666[j1];
    			anIntArray1680[l++] = anIntArray1635[i];
    		} else {
    			int l2 = anIntArray1668[j1];
    			int l3 = anIntArray1669[j1];
    			int l4 = anIntArray1635[i];
    			if(l1 >= 50) {
    				int i6 = (50 - i2) * modelIntArray4[l1 - i2];
    				anIntArray1678[l] = j + (l2 + ((anIntArray1668[i1] - l2) * i6 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (l3 + ((anIntArray1669[i1] - l3) * i6 >> 16) << 9) / 50;
    				anIntArray1680[l++] = l4 + ((anIntArray1634[i] - l4) * i6 >> 16);
    			}
    			if(j2 >= 50) {
    				int j6 = (50 - i2) * modelIntArray4[j2 - i2];
    				anIntArray1678[l] = j + (l2 + ((anIntArray1668[k1] - l2) * j6 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (l3 + ((anIntArray1669[k1] - l3) * j6 >> 16) << 9) / 50;
    				anIntArray1680[l++] = l4 + ((anIntArray1636[i] - l4) * j6 >> 16);
    			}
    		}
    		if(j2 >= 50) {
    			anIntArray1678[l] = anIntArray1665[k1];
    			anIntArray1679[l] = anIntArray1666[k1];
    			anIntArray1680[l++] = anIntArray1636[i];
    		} else {
    			int i3 = anIntArray1668[k1];
    			int i4 = anIntArray1669[k1];
    			int i5 = anIntArray1636[i];
    			if(i2 >= 50) {
    				int k6 = (50 - j2) * modelIntArray4[i2 - j2];
    				anIntArray1678[l] = j + (i3 + ((anIntArray1668[j1] - i3) * k6 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (i4 + ((anIntArray1669[j1] - i4) * k6 >> 16) << 9) / 50;
    				anIntArray1680[l++] = i5 + ((anIntArray1635[i] - i5) * k6 >> 16);
    			}
    			if(l1 >= 50) {
    				int l6 = (50 - j2) * modelIntArray4[l1 - j2];
    				anIntArray1678[l] = j + (i3 + ((anIntArray1668[i1] - i3) * l6 >> 16) << 9) / 50;
    				anIntArray1679[l] = k + (i4 + ((anIntArray1669[i1] - i4) * l6 >> 16) << 9) / 50;
    				anIntArray1680[l++] = i5 + ((anIntArray1634[i] - i5) * l6 >> 16);
    			}
    		}
    		int j3 = anIntArray1678[0];
    		int j4 = anIntArray1678[1];
    		int j5 = anIntArray1678[2];
    		int i7 = anIntArray1679[0];
    		int j7 = anIntArray1679[1];
    		int k7 = anIntArray1679[2];
    		if((j3 - j4) * (k7 - j7) - (i7 - j7) * (j5 - j4) > 0) {
    			Texture.aBoolean1462 = false;
    			if(l == 3) {
    				if(j3 < 0 || j4 < 0 || j5 < 0 || j3 > DrawingArea.centerX || j4 > DrawingArea.centerX || j5 > DrawingArea.centerX)
    					Texture.aBoolean1462 = true;
    				int l7;
    				if(anIntArray1637 == null)
    					l7 = 0;
    				else
    					l7 = anIntArray1637[i] & 3;
    				if(l7 == 0)
    					Texture.method374(i7, j7, k7, j3, j4, j5, anIntArray1680[0], anIntArray1680[1], anIntArray1680[2]);
    				else if(l7 == 1)
    					Texture.method376(i7, j7, k7, j3, j4, j5, modelIntArray3[anIntArray1634[i]]);
    				else if(l7 == 2) {
    					int j8 = anIntArray1637[i] >> 2;
    					int k9 = anIntArray1643[j8];
    					int k10 = anIntArray1644[j8];
    					int k11 = anIntArray1645[j8];
    					Texture.method378(i7, j7, k7, j3, j4, j5, anIntArray1680[0], anIntArray1680[1], anIntArray1680[2], anIntArray1668[k9], anIntArray1668[k10], anIntArray1668[k11], anIntArray1669[k9], anIntArray1669[k10], anIntArray1669[k11], anIntArray1670[k9], anIntArray1670[k10], anIntArray1670[k11], anIntArray1640[i]);
    				} else if(l7 == 3) {
    					int k8 = anIntArray1637[i] >> 2;
    					int l9 = anIntArray1643[k8];
    					int l10 = anIntArray1644[k8];
    					int l11 = anIntArray1645[k8];
    					Texture.method378(i7, j7, k7, j3, j4, j5, anIntArray1634[i], anIntArray1634[i], anIntArray1634[i], anIntArray1668[l9], anIntArray1668[l10], anIntArray1668[l11], anIntArray1669[l9], anIntArray1669[l10], anIntArray1669[l11], anIntArray1670[l9], anIntArray1670[l10], anIntArray1670[l11], anIntArray1640[i]);
    				}
    			}
    			if(l == 4) {
    				if(j3 < 0 || j4 < 0 || j5 < 0 || j3 > DrawingArea.centerX || j4 > DrawingArea.centerX || j5 > DrawingArea.centerX || anIntArray1678[3] < 0 || anIntArray1678[3] > DrawingArea.centerX)
    					Texture.aBoolean1462 = true;
    				int i8;
    				if(anIntArray1637 == null)
    					i8 = 0;
    				else
    					i8 = anIntArray1637[i] & 3;
    				if(i8 == 0) {
    					Texture.method374(i7, j7, k7, j3, j4, j5, anIntArray1680[0], anIntArray1680[1], anIntArray1680[2]);
    					Texture.method374(i7, k7, anIntArray1679[3], j3, j5, anIntArray1678[3], anIntArray1680[0], anIntArray1680[2], anIntArray1680[3]);
    					return;
    				}
    				if(i8 == 1) {
    					int l8 = modelIntArray3[anIntArray1634[i]];
    					Texture.method376(i7, j7, k7, j3, j4, j5, l8);
    					Texture.method376(i7, k7, anIntArray1679[3], j3, j5, anIntArray1678[3], l8);
    					return;
    				}
    				if(i8 == 2) {
    					int i9 = anIntArray1637[i] >> 2;
    					int i10 = anIntArray1643[i9];
    					int i11 = anIntArray1644[i9];
    					int i12 = anIntArray1645[i9];
    					Texture.method378(i7, j7, k7, j3, j4, j5, anIntArray1680[0], anIntArray1680[1], anIntArray1680[2], anIntArray1668[i10], anIntArray1668[i11], anIntArray1668[i12], anIntArray1669[i10], anIntArray1669[i11], anIntArray1669[i12], anIntArray1670[i10], anIntArray1670[i11], anIntArray1670[i12], anIntArray1640[i]);
    					Texture.method378(i7, k7, anIntArray1679[3], j3, j5, anIntArray1678[3], anIntArray1680[0], anIntArray1680[2], anIntArray1680[3], anIntArray1668[i10], anIntArray1668[i11], anIntArray1668[i12], anIntArray1669[i10], anIntArray1669[i11], anIntArray1669[i12], anIntArray1670[i10], anIntArray1670[i11], anIntArray1670[i12], anIntArray1640[i]);
    					return;
    				}
    				if(i8 == 3) {
    					int j9 = anIntArray1637[i] >> 2;
    					int j10 = anIntArray1643[j9];
    					int j11 = anIntArray1644[j9];
    					int j12 = anIntArray1645[j9];
    					Texture.method378(i7, j7, k7, j3, j4, j5, anIntArray1634[i], anIntArray1634[i], anIntArray1634[i], anIntArray1668[j10], anIntArray1668[j11], anIntArray1668[j12], anIntArray1669[j10], anIntArray1669[j11], anIntArray1669[j12], anIntArray1670[j10], anIntArray1670[j11], anIntArray1670[j12], anIntArray1640[i]);
    					Texture.method378(i7, k7, anIntArray1679[3], j3, j5, anIntArray1678[3], anIntArray1634[i], anIntArray1634[i], anIntArray1634[i], anIntArray1668[j10], anIntArray1668[j11], anIntArray1668[j12], anIntArray1669[j10], anIntArray1669[j11], anIntArray1669[j12], anIntArray1670[j10], anIntArray1670[j11], anIntArray1670[j12], anIntArray1640[i]);
    				}
    			}
    		}
    	}
    
    	private boolean method486(int i, int j, int k, int l, int i1, int j1, int k1, int l1) {
    		if(j < k && j < l && j < i1)
    			return false;
    		if(j > k && j > l && j > i1)
    			return false;
    		return !(i < j1 && i < k1 && i < l1) && (i <= j1 || i <= k1 || i <= l1);
    	}
    
    	public static final Model aModel_1621 = new Model();
    	private static int[] anIntArray1622 = new int[2000];
    	private static int[] anIntArray1623 = new int[2000];
    	private static int[] anIntArray1624 = new int[2000];
    	private static int[] anIntArray1625 = new int[2000];
    	public int anInt1626;
    	public int anIntArray1627[];
    	public int anIntArray1628[];
    	public int anIntArray1629[];
    	public int anInt1630;
    	public int anIntArray1631[];
    	public int anIntArray1632[];
    	public int anIntArray1633[];
    	private int[] anIntArray1634;
    	private int[] anIntArray1635;
    	private int[] anIntArray1636;
    	public int anIntArray1637[];
    	private int[] anIntArray1638;
    	private int[] anIntArray1639;
    	public int anIntArray1640[];
    	private int anInt1641;
    	private int anInt1642;
    	private int[] anIntArray1643;
    	private int[] anIntArray1644;
    	private int[] anIntArray1645;
    	public int anInt1646;
    	public int anInt1647;
    	public int anInt1648;
    	public int anInt1649;
    	public int anInt1650;
    	public int anInt1651;
    	private int anInt1652;
    	private int anInt1653;
    	public int anInt1654;
    	private int[] anIntArray1655;
    	private int[] anIntArray1656;
    	public int anIntArrayArray1657[][];
    	public int anIntArrayArray1658[][];
    	public boolean aBoolean1659;
    	Class33 aClass33Array1660[];
    	private static Class21[] aClass21Array1661;
    	private static OnDemandFetcherParent aOnDemandFetcherParent_1662;
    	private static boolean[] aBooleanArray1663 = new boolean[4096];
    	private static boolean[] aBooleanArray1664 = new boolean[4096];
    	private static int[] anIntArray1665 = new int[4096];
    	private static int[] anIntArray1666 = new int[4096];
    	private static int[] anIntArray1667 = new int[4096];
    	private static int[] anIntArray1668 = new int[4096];
    	private static int[] anIntArray1669 = new int[4096];
    	private static int[] anIntArray1670 = new int[4096];
    	private static int[] anIntArray1671 = new int[1500];
    	private static int[][] anIntArrayArray1672 = new int[1500][512];
    	private static int[] anIntArray1673 = new int[12];
    	private static int[][] anIntArrayArray1674 = new int[12][2000];
    	private static int[] anIntArray1675 = new int[2000];
    	private static int[] anIntArray1676 = new int[2000];
    	private static int[] anIntArray1677 = new int[12];
    	private static final int[] anIntArray1678 = new int[10];
    	private static final int[] anIntArray1679 = new int[10];
    	private static final int[] anIntArray1680 = new int[10];
    	private static int anInt1681;
    	private static int anInt1682;
    	private static int anInt1683;
    	public static boolean aBoolean1684;
    	public static int anInt1685;
    	public static int anInt1686;
    	public static int anInt1687;
    	public static final int[] anIntArray1688 = new int[1000];
    	public static int modelIntArray1[];
    	public static int modelIntArray2[];
    	private static int[] modelIntArray3;
    	private static int[] modelIntArray4;
    
    	static {
    		modelIntArray1 = Texture.anIntArray1470;
    		modelIntArray2 = Texture.anIntArray1471;
    		modelIntArray3 = Texture.anIntArray1482;
    		modelIntArray4 = Texture.anIntArray1469;
    	}
    }
    Reply With Quote  
     


Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. [PI]Model preloading
    By david4444 in forum Help
    Replies: 11
    Last Post: 12-21-2010, 01:53 PM
  2. [Models] PI Models [Models
    By Romanage Falcon in forum Requests
    Replies: 8
    Last Post: 10-15-2010, 03:12 AM
  3. [PI] Models [PI]
    By farmerscape in forum Help
    Replies: 1
    Last Post: 09-11-2010, 04:26 AM
  4. [PI] Models invisible? HELP ASAP [PI]
    By coledp5 in forum Help
    Replies: 2
    Last Post: 07-10-2010, 02:29 AM
  5. [pi] [models] [rep++]
    By iobpkbarrage in forum Help
    Replies: 7
    Last Post: 06-26-2010, 03:25 PM
Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •