﻿<?xml version="1.0" encoding="UTF-8"?>
<game version="1.4.141">
  <Item class="Environment">
    <Properties>
      <int name="Skybox">0</int>
      <vector3 name="Gravity">
        <X>0.0000</X>
        <Y>-85.0000</Y>
        <Z>0.0000</Z>
      </vector3>
      <boolean name="FogEnabled">false</boolean>
      <float name="FogStartDistance">0.0000</float>
      <float name="FogEndDistance">250.0000</float>
      <color name="FogColor">
        <R>1.0000</R>
        <G>1.0000</G>
        <B>1.0000</B>
        <A>1.0000</A>
      </color>
      <float name="PartDestroyHeight">-2000.0000</float>
      <boolean name="AutoGenerateNavMesh">false</boolean>
      <string name="Name">Environment</string>
    </Properties>
    <Item class="Camera">
      <Properties>
        <int name="Mode">0</int>
        <float name="FOV">60.0000</float>
        <boolean name="Orthographic">false</boolean>
        <float name="OrthographicSize">5.0000</float>
        <float name="MinDistance">0.0000</float>
        <float name="MaxDistance">150.0000</float>
        <boolean name="ClipThroughWalls">false</boolean>
        <boolean name="CanLock">true</boolean>
        <vector3 name="PositionOffset">
          <X>0.0000</X>
          <Y>0.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="RotationOffset">
          <X>0.0000</X>
          <Y>0.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="Position">
          <X>0.0000</X>
          <Y>8.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="Rotation">
          <X>0.0000</X>
          <Y>0.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="LocalPosition">
          <X>0.0000</X>
          <Y>8.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="LocalRotation">
          <X>0.0000</X>
          <Y>0.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="Size">
          <X>1.0000</X>
          <Y>1.0000</Y>
          <Z>1.0000</Z>
        </vector3>
        <vector3 name="LocalSize">
          <X>1.0000</X>
          <Y>1.0000</Y>
          <Z>1.0000</Z>
        </vector3>
        <string name="Name">Camera</string>
      </Properties>
    </Item>
    <Item class="Part">
      <Properties>
        <color name="Color">
          <R>0.3273</R>
          <G>0.8325</G>
          <B>0.3552</B>
          <A>1.0000</A>
        </color>
        <boolean name="Anchored">true</boolean>
        <boolean name="CanCollide">true</boolean>
        <boolean name="IsSpawn">false</boolean>
        <boolean name="HideStuds">false</boolean>
        <int name="Shape">0</int>
        <int name="Material">6</int>
        <vector3 name="Velocity">
          <X>0.0000</X>
          <Y>0.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <float name="Drag">0.0000</float>
        <float name="AngularDrag">0.0000</float>
        <float name="Mass">1.0000</float>
        <boolean name="UseGravity">true</boolean>
        <float name="Bounciness">0.0000</float>
        <float name="Friction">0.6000</float>
        <int name="FrictionCombine">0</int>
        <int name="BounceCombine">0</int>
        <boolean name="CastShadows">true</boolean>
        <vector3 name="Position">
          <X>0.0000</X>
          <Y>-5.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="Rotation">
          <X>0.0000</X>
          <Y>0.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="LocalPosition">
          <X>0.0000</X>
          <Y>-5.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="LocalRotation">
          <X>0.0000</X>
          <Y>0.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="Size">
          <X>512.0000</X>
          <Y>10.0000</Y>
          <Z>512.0000</Z>
        </vector3>
        <vector3 name="LocalSize">
          <X>512.0000</X>
          <Y>10.0000</Y>
          <Z>512.0000</Z>
        </vector3>
        <string name="Name">Part</string>
      </Properties>
      <Item class="Part">
        <Properties>
          <color name="Color">
            <R>0.3273</R>
            <G>0.8325</G>
            <B>0.3552</B>
            <A>1.0000</A>
          </color>
          <boolean name="Anchored">true</boolean>
          <boolean name="CanCollide">true</boolean>
          <boolean name="IsSpawn">false</boolean>
          <boolean name="HideStuds">false</boolean>
          <int name="Shape">0</int>
          <int name="Material">6</int>
          <vector3 name="Velocity">
            <X>0.0000</X>
            <Y>0.0000</Y>
            <Z>0.0000</Z>
          </vector3>
          <float name="Drag">0.0000</float>
          <float name="AngularDrag">0.0000</float>
          <float name="Mass">1.0000</float>
          <boolean name="UseGravity">true</boolean>
          <float name="Bounciness">0.0000</float>
          <float name="Friction">0.6000</float>
          <int name="FrictionCombine">0</int>
          <int name="BounceCombine">0</int>
          <boolean name="CastShadows">true</boolean>
          <vector3 name="Position">
            <X>0.0000</X>
            <Y>-55.0000</Y>
            <Z>0.0000</Z>
          </vector3>
          <vector3 name="Rotation">
            <X>0.0000</X>
            <Y>0.0000</Y>
            <Z>0.0000</Z>
          </vector3>
          <vector3 name="LocalPosition">
            <X>0.0000</X>
            <Y>-5.0000</Y>
            <Z>0.0000</Z>
          </vector3>
          <vector3 name="LocalRotation">
            <X>0.0000</X>
            <Y>0.0000</Y>
            <Z>0.0000</Z>
          </vector3>
          <vector3 name="Size">
            <X>262144.0000</X>
            <Y>100.0000</Y>
            <Z>262144.0000</Z>
          </vector3>
          <vector3 name="LocalSize">
            <X>512.0000</X>
            <Y>10.0000</Y>
            <Z>512.0000</Z>
          </vector3>
          <string name="Name">Part</string>
        </Properties>
      </Item>
    </Item>
    <Item class="Part">
      <Properties>
        <color name="Color">
          <R>0.6392</R>
          <G>0.6353</G>
          <B>0.6471</B>
          <A>1.0000</A>
        </color>
        <boolean name="Anchored">true</boolean>
        <boolean name="CanCollide">true</boolean>
        <boolean name="IsSpawn">true</boolean>
        <boolean name="HideStuds">false</boolean>
        <int name="Shape">0</int>
        <int name="Material">2</int>
        <vector3 name="Velocity">
          <X>0.0000</X>
          <Y>0.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <float name="Drag">0.0000</float>
        <float name="AngularDrag">0.0000</float>
        <float name="Mass">0.0000</float>
        <boolean name="UseGravity">true</boolean>
        <float name="Bounciness">0.0000</float>
        <float name="Friction">0.6000</float>
        <int name="FrictionCombine">0</int>
        <int name="BounceCombine">0</int>
        <boolean name="CastShadows">true</boolean>
        <vector3 name="Position">
          <X>0.0000</X>
          <Y>0.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="Rotation">
          <X>0.0000</X>
          <Y>0.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="LocalPosition">
          <X>0.0000</X>
          <Y>0.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="LocalRotation">
          <X>0.0000</X>
          <Y>0.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="Size">
          <X>5.0000</X>
          <Y>1.0000</Y>
          <Z>5.0000</Z>
        </vector3>
        <vector3 name="LocalSize">
          <X>5.0000</X>
          <Y>1.0000</Y>
          <Z>5.0000</Z>
        </vector3>
        <string name="Name">Brick</string>
      </Properties>
    </Item>
  </Item>
  <Item class="Lighting">
    <Properties>
      <color name="AmbientColor">
        <R>0.2100</R>
        <G>0.2300</G>
        <B>0.2600</B>
        <A>1.0000</A>
      </color>
      <int name="AmbientSource">0</int>
      <string name="Name">Lighting</string>
    </Properties>
    <Item class="SunLight">
      <Properties>
        <float name="Brightness">1.0000</float>
        <color name="Color">
          <R>1.0000</R>
          <G>0.9569</G>
          <B>0.8392</B>
          <A>1.0000</A>
        </color>
        <boolean name="Shadows">true</boolean>
        <vector3 name="Position">
          <X>0.0000</X>
          <Y>15.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="Rotation">
          <X>50.0000</X>
          <Y>330.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="LocalPosition">
          <X>0.0000</X>
          <Y>15.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="LocalRotation">
          <X>50.0000</X>
          <Y>330.0000</Y>
          <Z>0.0000</Z>
        </vector3>
        <vector3 name="Size">
          <X>1.0000</X>
          <Y>1.0000</Y>
          <Z>1.0000</Z>
        </vector3>
        <vector3 name="LocalSize">
          <X>1.0000</X>
          <Y>1.0000</Y>
          <Z>1.0000</Z>
        </vector3>
        <string name="Name">SunLight</string>
      </Properties>
    </Item>
  </Item>
  <Item class="Players">
    <Properties>
      <boolean name="PlayerCollisionEnabled">false</boolean>
      <string name="Name">Players</string>
    </Properties>
  </Item>
  <Item class="ScriptService">
    <Properties>
      <string name="Name">ScriptService</string>
    </Properties>
  </Item>
  <Item class="Hidden">
    <Properties>
      <string name="Name">Hidden</string>
    </Properties>
  </Item>
  <Item class="ServerHidden">
    <Properties>
      <string name="Name">ServerHidden</string>
    </Properties>
  </Item>
  <Item class="PlayerDefaults">
    <Properties>
      <float name="MaxHealth">100.0000</float>
      <float name="WalkSpeed">16.0000</float>
      <float name="SprintSpeed">25.0000</float>
      <boolean name="StaminaEnabled">true</boolean>
      <float name="Stamina">0.0000</float>
      <float name="MaxStamina">3.0000</float>
      <float name="StaminaRegen">1.2000</float>
      <float name="JumpPower">36.0000</float>
      <float name="RespawnTime">5.0000</float>
      <color name="ChatColor">
        <R>1.0000</R>
        <G>1.0000</G>
        <B>1.0000</B>
        <A>1.0000</A>
      </color>
      <string name="Name">PlayerDefaults</string>
    </Properties>
    <Item class="Backpack">
      <Properties>
        <string name="Name">Backpack</string>
      </Properties>
    </Item>
  </Item>
  <Item class="PlayerGUI">
    <Properties>
      <boolean name="Interactable">true</boolean>
      <float name="Opacity">1.0000</float>
      <string name="Name">PlayerGUI</string>
    </Properties>
    <Item class="GUI">
      <Properties>
        <boolean name="Visible">true</boolean>
        <string name="Name">GUI</string>
      </Properties>
      <Item class="UILabel">
        <Properties>
          <string name="Text">Sapbot VM fibonacci technodemo</string>
          <color name="TextColor">
            <R>0.0000</R>
            <G>0.0000</G>
            <B>0.0000</B>
            <A>1.0000</A>
          </color>
          <int name="JustifyText">1</int>
          <int name="VerticalAlign">1</int>
          <float name="FontSize">16.0000</float>
          <float name="MaxFontSize">16.0000</float>
          <boolean name="AutoSize">false</boolean>
          <int name="Font">2</int>
          <color name="OutlineColor">
            <R>0.0000</R>
            <G>0.0000</G>
            <B>0.0000</B>
            <A>0.0000</A>
          </color>
          <float name="OutlineWidth">0.2000</float>
          <color name="BorderColor">
            <R>0.0000</R>
            <G>0.0000</G>
            <B>0.0000</B>
            <A>1.0000</A>
          </color>
          <color name="Color">
            <R>1.0000</R>
            <G>1.0000</G>
            <B>1.0000</B>
            <A>1.0000</A>
          </color>
          <float name="BorderWidth">2.0000</float>
          <float name="CornerRadius">0.0000</float>
          <vector2 name="PositionOffset">
            <X>0.0000</X>
            <Y>0.0000</Y>
          </vector2>
          <vector2 name="PositionRelative">
            <X>0.5000</X>
            <Y>0.5000</Y>
          </vector2>
          <float name="Rotation">0.0000</float>
          <vector2 name="SizeOffset">
            <X>100.0000</X>
            <Y>100.0000</Y>
          </vector2>
          <vector2 name="SizeRelative">
            <X>0.7000</X>
            <Y>0.7000</Y>
          </vector2>
          <vector2 name="PivotPoint">
            <X>0.5000</X>
            <Y>0.5000</Y>
          </vector2>
          <boolean name="Visible">true</boolean>
          <boolean name="ClipDescendants">false</boolean>
          <string name="Name">UILabel</string>
        </Properties>
        <Item class="LocalScript">
          <Properties>
            <string name="Source">local code = {
    [10] = "LOAD;V0;V0",
    [20] = "LOAD;V1;V1",
    [30] = "LOAD;V2;V0",
    [40] = "ADD;M2;V1;V2",
    [50] = "DEBUG;M1",
    [60] = "ADD;M0;M1;V3",
    [70] = "LOAD;V0;M1",
    [80] = "LOAD;V1;M3",
    [90] = "ALB;M2;V20;V40"
}

local function bitwiseAND(a, b)
    return a * b
end

local function bitwiseOR(a, b)
    return a + b - (a * b)
end

local pc = 10
local mem = {}

setmetatable(mem, {
    __index = function(t, k)
        return 0
    end
})

local function parseExpr(val)
    if val:sub(1, 1) == "V" then
        return tonumber(val:sub(2))
    elseif val:sub(1, 1) == "T" then
        return val:sub(2)
    elseif val:sub(1, 1) == "M" then
        return mem[tonumber(val:sub(2))] or 0
    elseif val:sub(1, 1) == "F" then
        return tonumber(val:sub(2))
    end
end

while pc &lt; 65000 do
    local line = code[pc] or "NOP"
    local parts = {}
    for part in line:gmatch("[^;]+") do
        table.insert(parts, part)
    end
    pc = pc + 10
    local curtext, cmd
    if #parts == 0 then
        goto continue
    end

    cmd = parts[1]
    curtext = script.Parent.Text .. "\n"
    if cmd == "LOAD" then
        if #parts ~= 3 then
            script.Parent.Text = curtext .. "Invalid number of operands."
        else
            mem[parseExpr(parts[2])] = parseExpr(parts[3])
        end
    elseif cmd == "NOP" then
        -- Do nothing
    elseif cmd == "GOTO" then
        if #parts ~= 2 then
            script.Parent.Text = curtext .. "WHERE TO JUMP???"
        else
            pc = parseExpr(parts[2])
        end
    elseif cmd == "DEBUG" then
        if #parts ~= 2 then
            script.Parent.Text = curtext .. "What to print, bro?"
        else
            script.Parent.Text = curtext .. parseExpr(parts[2])
        end
    elseif cmd == "NOT" then
        if #parts ~= 3 then
            script.Parent.Text = curtext .. "Duh."
        else
            mem[parseExpr(parts[3])] = tonumber(not parseExpr(parts[2]))
        end
    elseif cmd == "ADD" then
        if #parts ~= 4 then
            script.Parent.Text = curtext .. "Format: ADD;A;B;TO"
        else
            mem[parseExpr(parts[4])] = parseExpr(parts[2]) + parseExpr(parts[3])
        end
    elseif cmd == "SUB" then
        if #parts ~= 4 then
            script.Parent.Text = curtext .. "Format: SUB;A;B;TO"
        else
            mem[parseExpr(parts[4])] = parseExpr(parts[2]) - parseExpr(parts[3])
        end
    elseif cmd == "DIV" then
        if #parts ~= 4 then
            script.Parent.Text = curtext .. "Format: DIV;A;B;TO"
        else
            mem[parseExpr(parts[4])] = parseExpr(parts[2]) / parseExpr(parts[3])
        end
    elseif cmd == "MUL" then
        if #parts ~= 4 then
            script.Parent.Text = curtext .. "Format: MUL;A;B;TO"
        else
            mem[parseExpr(parts[4])] = parseExpr(parts[2]) * parseExpr(parts[3])
        end
    elseif cmd == "MOD" then
        if #parts ~= 4 then
            script.Parent.Text = curtext .. "Format: MOD;A;B;TO"
        else
            mem[parseExpr(parts[4])] = parseExpr(parts[2]) % parseExpr(parts[3])
        end
    elseif cmd == "ALB" then
        if #parts ~= 4 then
            script.Parent.Text = curtext .. "Format: ALB;A;B;TO"
        else
            if parseExpr(parts[2]) &lt; parseExpr(parts[3]) then
                pc = parseExpr(parts[4])
            end
        end
    elseif cmd == "AQB" then
        if #parts ~= 4 then
            script.Parent.Text = curtext .. "Format: AQB;A;B;TO"
        else
            if parseExpr(parts[2]) == parseExpr(parts[3]) then
                pc = parseExpr(parts[4])
            end
        end
    elseif cmd == "ABB" then
        if #parts ~= 4 then
            script.Parent.Text = curtext .. "Format: ABB;A;B;TO"
        else
            if parseExpr(parts[2]) &gt; parseExpr(parts[3]) then
                pc = parseExpr(parts[4])
            end
        end
    elseif cmd == "AND" then
        if #parts ~= 4 then
            script.Parent.Text = curtext .. "Duh."
        else
            mem[parseExpr(parts[4])] = bitwiseAND(parseExpr(parts[2]), parseExpr(parts[3]))
        end
    elseif cmd == "OR" then
        if #parts ~= 4 then
            script.Parent.Text = curtext .. "Duh."
        else
            mem[parseExpr(parts[4])] = bitwiseOR(parseExpr(parts[2]), parseExpr(parts[3]))
        end    
    elseif cmd == "PARSEINT" then
        if #parts ~= 3 then
            script.Parent.Text = curtext .. "Format: PARSEINT;IN;OUT"
        else
            local i = parseExpr(parts[2])
            if type(i) == "string" then
                mem[parseExpr(parts[3])] = tonumber(i)
            else
                script.Parent.Text = curtext .. "Only strings can be converted."
            end
        end
    else
        script.Parent.Text = curtext .. "Unknown opcode " .. cmd
    end

    ::continue::
end</string>
            <string name="Name">LocalScript</string>
          </Properties>
        </Item>
      </Item>
    </Item>
  </Item>
</game>