Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Blastfrog

Doom may have been intended to run at 70fps

Recommended Posts

The 0.4 version makes me think this. If the PC can handle it, 0.4 will run at 70fps. While it's true that the press release blurb indicated that id wanted to target 35fps even early on, I think that they tried pressing their luck with 70fps once the engine was in place and later decided to revert in order to be more accessible to players with weaker PCs.

1. Player movement

Note how the player movement feels a lot tighter and the bobbing doesn't look as retarded as it did in 0.5. That's because on a tic-by-tic basis (ignoring realtime), the max speed of the player is half of what it is in 0.5, meaning that there's less momentum to push you after you release the key. The double framerate meant that even that smaller slide felt "snappier".

The 0.5 version doubled the max speed to compensate for the halved ticrate. Unfortunately, they didn't bother to tweak the finer parts of the movement code, this is where the "icy" feel came from. Due to exerting twice as much momentum, the slide went further in distance, and the slow framerate made that slide far slower than it would have been before.

Likewise, they didn't bother tweaking the bobbing sensitivity. As far as I can tell, it's the same bobbing behavior, just being run twice as slow while exaggeratedly swinging the weapon due to the extra player speed even if it looked the same between versions when run in real-time.


2. Sector movers

They all run twice as fast on a tic-by-tic basis in 0.5 than they did in 0.4 (can only compare doors due to no lifts, but still). Again, if their target was 35 all along, why would they have seemingly designed their intended mechanics in 70?


3. 0.4 Version unreasonably sluggish when capped

Doom was being designed as a slightly slower-paced game back in that stage of development, but slow down some footage of the 0.4 version to half speed. Can you honestly tell me that the devs would've found this an acceptable pace even if intended to be generally slower? I highly doubt that any of 0.4's mechanics were designed with 35hz in mind.


4. Wolf 3D Ran At 70hz

Okay, I know, it ran on a far simpler engine and was thus easier to pull off. However, this does indicate that the id crew were interested in getting that framerate if they could.

Share this post


Link to post

I think I remember reading somewhere that 0.2 and 0.4 ran at a higher framerate than the versions that would come after, but I can't be assed to actually test that theory.

Share this post


Link to post
Marnetmar said:

I think I remember reading somewhere that 0.2 and 0.4 ran at a higher framerate than the versions that would come after, but I can't be assed to actually test that theory.

It most certainly does run faster. I simply made the OP to present some points that show that they likely intended it and wasn't just a result of being incomplete and lacking a framerate cap.

Mostly because of a conversation I had with Maes once where I was talking about the alpha engine, mentioned its framerate and he pointed out to me that id wanted to target 35fps in November of 1992. Given my analysis of the gameplay behavior, I'm pretty confident that they changed their mind about it twice.

Share this post


Link to post

I think it's more probable for that framerate to be a remnant of the Wolf 3D engine. If the DOOM engine was from scratch, then I guess you would be right.

Share this post


Link to post

If they ever had the engine running at 70 fps smooth at any point (maybe possible on their NeXT dev rigs, but not on any DOS machine in 1992), then the collision/movement code must have been very different.

The current one is already pretty dodgy and full of hacks that depend upon hardcoded movement speeds, and most formulae don't play nice with the fixed_t arithmetic. I tried implementing a 70 TICRATE mode in Mocha Doom once, by modifying all Thing speeds, distances etc. by a #defined constant factor (e.g. in 70 fps mode, distances per tic are divided by 2, while timings are multiplied by the same factor).

Monsters and Doomguy moved around very smoothly, but everything got very easily stuck in walls, and tricks like wallrunning didn't work anymore. Which came to no surprise, as I probably missed a lot of subtle hardcodings, and in a lot of steps halving distances led to a required precision which was too great for the formulae to handle.

Share this post


Link to post

I've heard that the movement code was rewritten between 1.1 and 1.2, so there's a good chance it was rewritten since the alphas. Another difference in the alphas is how momentum continues to be applied even if you hit a wall. I.E. you can be running against a wall and immediately zip forward when walking over the gap of an extruded corner. This still happens in the final against other actors, but it actually bothers to cap momentum when moving against a wall, meaning you have to accelerate again once you've slid past the wall.

It's worth noting that you can actually crash the 0.2 version by running into a wall too fast and going through it. I can most easily trigger it by using the keyboard and mouse simultaneously. I don't remember offhand if the following bit is actually true, but I seem to recall that there was no movement speed cap when using the mouse, while the keyboard did have its own cap.

gemini09 said:

I think it's more probable for that framerate to be a remnant of the Wolf 3D engine. If the DOOM engine was from scratch, then I guess you would be right.

The Doom engine was certainly from scratch. There was another engine between Wolf and Doom that ended up being used in Shadowcaster. None of these engines share code AFAIK.

Maes said:

If they ever had the engine running at 70 fps smooth at any point (maybe possible on their NeXT dev rigs, but not on any DOS machine in 1992)

Carmack said in an old interview that he estimates he could've gotten a 15% speed increase if he did the renderer in x86 ASM. Besides, if Tom had remained influential, the game probably would've come out in mid '94, so that gives time for consumer-grade hardware to become more capable.

Note that the old HUD was meant to increase performance with its small window size, especially the more closed non-0.2 version:



Hell, you could probably segment the screen into 5 columns. The lowest height ones on the sides (as the corner boxes cover that space on top), the middle height one in the center (mouthpiece occupies some space on bottom) with the remaining two areas showing full vertical height. That way, it's not only a smaller area, but you're not even rendering it in full.

There's also various performance options that were cut from the final. There was an extra-low detail mode that was not only half columns but also half rows. You were able to set flat detail at 3 levels: full, no ceilings, no flats.

Note how the alpha versions deliberately y-sheared your view downward, you did not look straight-forward like the final version. That would make the no-ceiling mode less of a loss since you see less ceiling in this perspective anyhow. It also kinda looks "aim-down-sights-ish" and would allow more of the cut-off weapon sprite to be used (probably why those cut-off areas exist to begin with, aside from how the weapon raised when firing like in Wolf before that was cut).

Share this post


Link to post
Sodaholic said:

Note how the alpha versions deliberately y-sheared your view downward, you did not look straight-forward like the final version.

I actually had never noticed that. Makes me wonder if Carmack had anticipated y-sheared looking up and down really early on, and it wasn't something thought up later by the Raven guys.

Share this post


Link to post
Maes said:

Monsters and Doomguy moved around very smoothly, but everything got very easily stuck in walls, and tricks like wallrunning didn't work anymore. Which came to no surprise, as I probably missed a lot of subtle hardcodings, and in a lot of steps halving distances led to a required precision which was too great for the formulae to handle.

I actually find this very surprising. My limited understanding is that doom uses a lazy kind of collision detection which only checks for obstacles at an object's destination, rather than sweeping a line or volume through the path necessary to get there. Hence bugs like this:

http://doomwiki.org/wiki/Mancubus_fireball_clipping

So if anything I'd imagine the collision would work better at a higher framerate, since the objects are moving far less every frame. If that's the case, maybe the basic algorithm isn't at fault and the variables used for the job simply didn't have enough precision or something. I don't know.

Linguica said:

I actually had never noticed that. Makes me wonder if Carmack had anticipated y-sheared looking up and down really early on, and it wasn't something thought up later by the Raven guys.

y shearing is a very intuitive hack. I'd be surprised if raven were the ones to "discover" it first. Carmack likely just rejected it in the end since it produced a far more flawed projection than he could really stomach.

Also this is a complete tangent, but are you guys familiar with that feature in one of the alphas that basically drops your viewpoint to the ground? Some people have called that a "prone" feature WIP, but I think that's extremely improbable. I think it's far more likely that Carmack put that function in to test that he was producing a proper floor projection, because I can speak from experience when I say that that is actually extremely tricky to get right when you're using two entirely different algorithms to draw wall columns compared to floor spans like doom does. All you have to do is be off a little bit and suddenly the edges of the floor don't meet the walls at the correct spot all the time, and it can drive you crazy making sure it just looks right in every situation.

Share this post


Link to post
sheridan said:

Also this is a complete tangent

Regardless of the thread title, I quite like talking about all aspects of the alpha versions and don't mind it being in this thread.

sheridan said:

are you guys familiar with that feature in one of the alphas that basically drops your viewpoint to the ground? Some people have called that a "prone" feature WIP, but I think that's extremely improbable.

Personally, I think it's likely that it was a halfway-removed no-momentum feature. Apparently there's some no-momentum mode in the final too (but have never used it). The view probably only drops to the ground because that's the actor origin and that the bobbing code in that version might be what sets the base viewheight.

Speaking of viewheights, the alpha had it at 40 instead of 41 as in the final. Go up to any 40-tall ledge and see how it goes right along the horizon line, not angled at all. They were probably satisfied with the height but didn't want to go any lower and didn't want to go too far away from it when attempting to remove the effect, so they added 1.

sheridan said:

y shearing is a very intuitive hack. I'd be surprised if raven were the ones to "discover" it first. Carmack likely just rejected it in the end since it produced a far more flawed projection than he could really stomach.

Marathon and ROTT were being developed at the same time as Heretic and all independently had y-shearing, so yeah I don't think it's worth crediting Raven for it.

Share this post


Link to post
Sodaholic said:

Note how the player movement feels a lot tighter and the bobbing doesn't look as retarded as it did in 0.5. That's because on a tic-by-tic basis (ignoring realtime), the max speed of the player is half of what it is in 0.5, meaning that there's less momentum to push you after you release the key. The double framerate meant that even that smaller slide felt "snappier".

Even as it is in the final product, the movebobbing seems way over exaggerated, and I always thought it looked far better in the 0.4 alpha. I never knew the technical reason why it changed so much from 0.4 to 0.5, though.

I was stunned by how ridiculous it looked in 0.5 years back, if you attempt to SR50 in that alpha, the gun sprite can move WAY more than it should on screen, flying all over the place - If you attmpt to SR50 in the 0.4 alpha, the gun again moves more than it's supposed to, but because of how quickly it repositions when you stop, it still looks way better.

I'm glad there are others out there who have noticed all these revisional nuances.. I'm doubly glad that you guys actually have some technical knowledge, unlike myself!

I would love to see a ZDoom mod that accurately emulates the movebob and player movement behavior present in 0.4. I really like the 'tight' momentum and 'realistic' weapon bobbing, I'm wondering how it would feel in Deathmatch. (Come to think of it, doesn't Adventures of Square have reversed movebobbing that still remains "where it should", for lack of a better term? Would love to see this in more mods.)

EDIT: As far as the frame rate is concerned, which source port was the first to add optional increased FPS? Was it ZDoom, or did another port take a crack at it first? Interesting to think, in a different timeline, Doom was released at 70FPS - Although, I have a distinct memory of all Alpha versions of Doom being sluggish on rigs of yesteryear. I always noticed the difference of the movebob, but didn't notice the difference in frame rate until a few years later, on idfferent hardware.

Share this post


Link to post

For a short period, there was an experimental build of Risen3D that made the stop-pressing-the-button-slide of the Doomguy far more like the shorter stopping distance of more modern shooters.

I tried it for a while and it really took a lot of getting used to. Running around familiar maps was the most difficult where I was very used to exactly how the Doomguy-slide would propel me as I turned a corner or strafed into the open past a corridor entrance. The number of times I ended up shooting a wall instead of down a corridor was amazing.

Share this post


Link to post

Wow, now I am very curious. That could make an interesting gameplay element for some big TC that changes behavior of various things - perhaps something going for the more "survival horror" feel. Hell, such an element might be well placed in a "Doom3 in Doom2" type mod.

Share this post


Link to post

Now that I remember, Nash made an experimental mod for ZDoom that changed the way the Doomguy moved. A more abrupt stopping distance was part of that.

[edit]
http://forum.zdoom.org/viewtopic.php?f=37&t=35761
[/edit]

My last post probably sounded like I was against the idea. Sure, it was hard to get used to and in a fairly true to Doom environment it would not be great (IMO) but, in a TC or in the right kind of mod, yes, it definitely has possibilities.

Share this post


Link to post
Sodaholic said:

Hell, you could probably segment the screen into 5 columns. The lowest height ones on the sides (as the corner boxes cover that space on top), the middle height one in the center (mouthpiece occupies some space on bottom) with the remaining two areas showing full vertical height. That way, it's not only a smaller area, but you're not even rendering it in full.

I haven't seen anyone mention it, so, here goes: There's a lump in the 0.2 wad that contains per-line x86 code to paint that region inside the HUD. In other words, that HUD is not an overlay - there was custom code for each viewable line! And, it was loaded from the wad, so custom HUDs were within reach. That would wreak havoc with today's processors with small internal code cache, but, it probably helped the 386 quite a bit. Pretty crazy stuff.

Share this post


Link to post

Doesn't EDGE run at 70 FPS? I think I remember reading something about how to define "half frames" in DDF.

Share this post


Link to post
Sodaholic said:

Note how the alpha versions deliberately y-sheared your view downward, you did not look straight-forward like the final version. That would make the no-ceiling mode less of a loss since you see less ceiling in this perspective anyhow. It also kinda looks "aim-down-sights-ish" and would allow more of the cut-off weapon sprite to be used (probably why those cut-off areas exist to begin with, aside from how the weapon raised when firing like in Wolf before that was cut).


I never noticed that. Everything in the alphas seemed to feel "bigger," but I thought that was because the player's viewpoint was closer to the ground.

Share this post


Link to post
kb1 said:

I haven't seen anyone mention it, so, here goes: There's a lump in the 0.2 wad that contains per-line x86 code to paint that region inside the HUD. In other words, that HUD is not an overlay - there was custom code for each viewable line! And, it was loaded from the wad, so custom HUDs were within reach. That would wreak havoc with today's processors with small internal code cache, but, it probably helped the 386 quite a bit. Pretty crazy stuff.


Is that VIEWINFO or HIGHBLIT? Currently, the wiki says that their purpose is not known; so feel free to share more any information that you know and that is missing.

Share this post


Link to post
sheridan said:

I actually find this very surprising. My limited understanding is that doom uses a lazy kind of collision detection which only checks for obstacles at an object's destination, rather than sweeping a line or volume through the path necessary to get there.


Indeed, that's a classic limitation one encounters when coding his first simple collision physics simulator, such as a pong variant or a "molecule vessel". It's almost as if those systems have a "universal constant", defined by the product of the time step and the maximum possible speed. If you exceed that, your little universe breaks ;-) I think we all tried that, at one time or another.

In Doom, the only major instance where this limitation becomes apparent is the Manc fireball, as you said, but it also subtly affects some other aspects of the game, like e.g. the door opening radius: faster moving monsters can open wider doors, to the point of activating the other side of the door by reaching for e outer linedefs, plus all those player "gliding" tricks etc.

However, for the player or monster movement, there's also some "fine positioning" code which is a complete kludge, and basically fidgets around with an object's position, especially when trying to slide along a diagonal wall. The worst offender is P_SlideMove, which affects the player, while monsters have problems of their own. In 70 fps mode, the player coud move noticeably closer to the wall (kinda like when you IDCLIP), and also get stuck easier.

I think most movement problems actually derive from everything being able to move so much closer to the walls and the not-so-precise arithmetic allowing things to become irreversibly embedded.

Gez said:

Doesn't EDGE run at 70 FPS? I think I remember reading something about how to define "half frames" in DDF.


You don't mean uncapped framerate interpolation, do you? Those techniques affect only the visuals, not the actual internal state of the engine, and they don't even need to be precise half-frames either: they can be e.g. 35/60ths of a frame or whatever.

Share this post


Link to post
Maes said:

I think we all tried that, at one time or another.

That sorta implies this method is just inferior to sweeping volumes altogether. It's not really. Depending upon the circumstances, the simpler method can perform better than the more complicated method, and it's also much simpler to implement as well, so there are real benefits to using it as long as nobody breaks it with "high velocity" objects.

Maes said:

However, for the player or monster movement, there's also some "fine positioning" code which is a complete kludge, and basically fidgets around with an object's position, especially when trying to slide along a diagonal wall. The worst offender is P_SlideMove, which affects the player, while monsters have problems of their own. In 70 fps mode, the player coud move noticeably closer to the wall (kinda like when you IDCLIP), and also get stuck easier.

You may notice in at least some of the alphas the ability to slide down non-orthogonal walls was completely non-existent. It feels more like moving against a series of very small squares than bumping into a smooth and contiguous line, and you can get stuck easily if you "run against the grain" so to speak. I'm pretty sure this is what john was talking about when he mentioned using polar coordinates to test collision against lines in his doom source readme too, which actually was a very dumb decision as he pointed out himself. At the very least, he could have simply treated entities as circles and tested for collisions against lines in his BLOCKMAP with tangents like build did. It wouldn't have solved the problem with high velocity objects clipping through certain obstacles but at least it would've fixed wall running and the generally sticky feeling you get when bumping into anything but orthogonal walls.

Share this post


Link to post
sheridan said:

That sorta implies this method is just inferior to sweeping volumes altogether.


Well, no algorithm is really "inferior" as long as it works correctly and has its niche uses (unless it's bogo sort). E.g. even Bubble Sort may be preferable to more sophisticated and efficient sorts in applications where there are "few enough" elements to sort, and its coding simplicity will be an advantage in terms of resources/programmer's time.

sheridan said:

Depending upon the circumstances, the simpler method can perform better than the more complicated method, and it's also much simpler to implement as well, so there are real benefits to using it as long as nobody breaks it with "high velocity" objects.


Well, that's just the thing: there's always somebody or something "breaking the rules". Even if in Doom they obviously devoted some effort in limiting max. default speed of many objects, there are quite a few cases that fall through the cracks.

Share this post


Link to post

Is that the same reason why in the Genesis games Sonic would sometimes get trapped in walls if you went too fast?

Share this post


Link to post
Gez said:

Is that VIEWINFO or HIGHBLIT? Currently, the wiki says that their purpose is not known; so feel free to share more any information that you know and that is missing.

Can't remember, other than to say that yes, it's one of those two. If I had to guess, I'd say HIGHBLIT. I wrote a wad editor a few years back in VB 6.0, with full support for the alphas and beta, and I think I wrote a small disassembler for the lump. I'll see if I can get it working. If so, I'll post the algorithm I used along with some info. It about knocked my socks off when I realized that I was looking at x86 code in a lump!

EDIT: Ok, I just downloaded the alpha. I have my wad editor here at work, so I clicked on HIGHBLIT, and here's the output of my editor (brings back memories). Apparently, I did not finish the code, and I was trying to decipher a portion of it. It has 2 parts, first part is the x86 code, and I never figured out the second part. Here's what I got:

Spoiler

HIGHBLIT Lump ------------- * Offset 0000H: Disassembly 0000 81 C6 4C 0E 00 00 ADD ESI, 00000E4CH ;esi=3660 (E4CH) 0006 81 C7 4C 0E 00 00 ADD EDI, 00000E4CH ;edi=3660 (E4CH) 000C B1 0A MOV CL, 0AH 000E F3 A5 REP MOVSD 0010 81 C6 0C 01 00 00 ADD ESI, 0000010CH ;esi=3968 (F80H) 0016 81 C7 0C 01 00 00 ADD EDI, 0000010CH ;edi=3968 (F80H) 001C B1 10 MOV CL, 10H 001E F3 A5 REP MOVSD 0020 81 C6 F4 00 00 00 ADD ESI, 000000F4H ;esi=4276 (10B4H) 0026 81 C7 F4 00 00 00 ADD EDI, 000000F4H ;edi=4276 (10B4H) 002C B1 16 MOV CL, 16H 002E F3 A5 REP MOVSD 0030 81 C6 E4 00 00 00 ADD ESI, 000000E4H ;esi=4592 (11F0H) 0036 81 C7 E4 00 00 00 ADD EDI, 000000E4H ;edi=4592 (11F0H) 003C B1 18 MOV CL, 18H 003E F3 A5 REP MOVSD 0040 81 C6 D8 00 00 00 ADD ESI, 000000D8H ;esi=4904 (1328H) 0046 81 C7 D8 00 00 00 ADD EDI, 000000D8H ;edi=4904 (1328H) 004C B1 1C MOV CL, 1CH 004E F3 A5 REP MOVSD 0050 81 C6 CC 00 00 00 ADD ESI, 000000CCH ;esi=5220 (1464H) 0056 81 C7 CC 00 00 00 ADD EDI, 000000CCH ;edi=5220 (1464H) 005C B1 1E MOV CL, 1EH 005E F3 A5 REP MOVSD 0060 81 C6 C0 00 00 00 ADD ESI, 000000C0H ;esi=5532 (159CH) 0066 81 C7 C0 00 00 00 ADD EDI, 000000C0H ;edi=5532 (159CH) 006C B1 22 MOV CL, 22H 006E F3 A5 REP MOVSD 0070 81 C6 B4 00 00 00 ADD ESI, 000000B4H ;esi=5848 (16D8H) 0076 81 C7 B4 00 00 00 ADD EDI, 000000B4H ;edi=5848 (16D8H) 007C B1 24 MOV CL, 24H 007E F3 A5 REP MOVSD 0080 81 C6 AC 00 00 00 ADD ESI, 000000ACH ;esi=6164 (1814H) 0086 81 C7 AC 00 00 00 ADD EDI, 000000ACH ;edi=6164 (1814H) 008C B1 26 MOV CL, 26H 008E F3 A5 REP MOVSD 0090 81 C6 A4 00 00 00 ADD ESI, 000000A4H ;esi=6480 (1950H) 0096 81 C7 A4 00 00 00 ADD EDI, 000000A4H ;edi=6480 (1950H) 009C B1 28 MOV CL, 28H 009E F3 A5 REP MOVSD 00A0 81 C6 9C 00 00 00 ADD ESI, 0000009CH ;esi=6796 (1A8CH) 00A6 81 C7 9C 00 00 00 ADD EDI, 0000009CH ;edi=6796 (1A8CH) 00AC B1 2A MOV CL, 2AH 00AE F3 A5 REP MOVSD 00B0 81 C6 94 00 00 00 ADD ESI, 00000094H ;esi=7112 (1BC8H) 00B6 81 C7 94 00 00 00 ADD EDI, 00000094H ;edi=7112 (1BC8H) 00BC B1 2C MOV CL, 2CH 00BE F3 A5 REP MOVSD 00C0 81 C6 8C 00 00 00 ADD ESI, 0000008CH ;esi=7428 (1D04H) 00C6 81 C7 8C 00 00 00 ADD EDI, 0000008CH ;edi=7428 (1D04H) 00CC B1 2E MOV CL, 2EH 00CE F3 A5 REP MOVSD 00D0 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=7748 (1E44H) 00D6 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=7748 (1E44H) 00DC B1 2E MOV CL, 2EH 00DE F3 A5 REP MOVSD 00E0 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=8068 (1F84H) 00E6 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=8068 (1F84H) 00EC B1 2E MOV CL, 2EH 00EE F3 A5 REP MOVSD 00F0 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=8388 (20C4H) 00F6 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=8388 (20C4H) 00FC B1 2E MOV CL, 2EH 00FE F3 A5 REP MOVSD 0100 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=8708 (2204H) 0106 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=8708 (2204H) 010C B1 2E MOV CL, 2EH 010E F3 A5 REP MOVSD 0110 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=9028 (2344H) 0116 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=9028 (2344H) 011C B1 2E MOV CL, 2EH 011E F3 A5 REP MOVSD 0120 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=9348 (2484H) 0126 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=9348 (2484H) 012C B1 2E MOV CL, 2EH 012E F3 A5 REP MOVSD 0130 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=9668 (25C4H) 0136 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=9668 (25C4H) 013C B1 2E MOV CL, 2EH 013E F3 A5 REP MOVSD 0140 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=9988 (2704H) 0146 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=9988 (2704H) 014C B1 2E MOV CL, 2EH 014E F3 A5 REP MOVSD 0150 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=10308 (2844H) 0156 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=10308 (2844H) 015C B1 2E MOV CL, 2EH 015E F3 A5 REP MOVSD 0160 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=10628 (2984H) 0166 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=10628 (2984H) 016C B1 2E MOV CL, 2EH 016E F3 A5 REP MOVSD 0170 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=10948 (2AC4H) 0176 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=10948 (2AC4H) 017C B1 2E MOV CL, 2EH 017E F3 A5 REP MOVSD 0180 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=11268 (2C04H) 0186 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=11268 (2C04H) 018C B1 2E MOV CL, 2EH 018E F3 A5 REP MOVSD 0190 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=11588 (2D44H) 0196 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=11588 (2D44H) 019C B1 2E MOV CL, 2EH 019E F3 A5 REP MOVSD 01A0 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=11908 (2E84H) 01A6 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=11908 (2E84H) 01AC B1 2E MOV CL, 2EH 01AE F3 A5 REP MOVSD 01B0 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=12228 (2FC4H) 01B6 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=12228 (2FC4H) 01BC B1 2E MOV CL, 2EH 01BE F3 A5 REP MOVSD 01C0 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=12548 (3104H) 01C6 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=12548 (3104H) 01CC B1 2E MOV CL, 2EH 01CE F3 A5 REP MOVSD 01D0 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=12868 (3244H) 01D6 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=12868 (3244H) 01DC B1 2E MOV CL, 2EH 01DE F3 A5 REP MOVSD 01E0 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=13188 (3384H) 01E6 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=13188 (3384H) 01EC B1 2E MOV CL, 2EH 01EE F3 A5 REP MOVSD 01F0 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=13508 (34C4H) 01F6 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=13508 (34C4H) 01FC B1 2E MOV CL, 2EH 01FE F3 A5 REP MOVSD 0200 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=13828 (3604H) 0206 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=13828 (3604H) 020C B1 2E MOV CL, 2EH 020E F3 A5 REP MOVSD 0210 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=14148 (3744H) 0216 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=14148 (3744H) 021C B1 2E MOV CL, 2EH 021E F3 A5 REP MOVSD 0220 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=14468 (3884H) 0226 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=14468 (3884H) 022C B1 2E MOV CL, 2EH 022E F3 A5 REP MOVSD 0230 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=14788 (39C4H) 0236 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=14788 (39C4H) 023C B1 2E MOV CL, 2EH 023E F3 A5 REP MOVSD 0240 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=15108 (3B04H) 0246 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=15108 (3B04H) 024C B1 2E MOV CL, 2EH 024E F3 A5 REP MOVSD 0250 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=15428 (3C44H) 0256 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=15428 (3C44H) 025C B1 2E MOV CL, 2EH 025E F3 A5 REP MOVSD 0260 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=15748 (3D84H) 0266 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=15748 (3D84H) 026C B1 2E MOV CL, 2EH 026E F3 A5 REP MOVSD 0270 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=16068 (3EC4H) 0276 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=16068 (3EC4H) 027C B1 2E MOV CL, 2EH 027E F3 A5 REP MOVSD 0280 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=16388 (4004H) 0286 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=16388 (4004H) 028C B1 2E MOV CL, 2EH 028E F3 A5 REP MOVSD 0290 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=16708 (4144H) 0296 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=16708 (4144H) 029C B1 2E MOV CL, 2EH 029E F3 A5 REP MOVSD 02A0 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=17028 (4284H) 02A6 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=17028 (4284H) 02AC B1 2E MOV CL, 2EH 02AE F3 A5 REP MOVSD 02B0 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=17348 (43C4H) 02B6 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=17348 (43C4H) 02BC B1 2E MOV CL, 2EH 02BE F3 A5 REP MOVSD 02C0 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=17668 (4504H) 02C6 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=17668 (4504H) 02CC B1 2E MOV CL, 2EH 02CE F3 A5 REP MOVSD 02D0 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=17988 (4644H) 02D6 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=17988 (4644H) 02DC B1 2E MOV CL, 2EH 02DE F3 A5 REP MOVSD 02E0 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=18308 (4784H) 02E6 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=18308 (4784H) 02EC B1 2E MOV CL, 2EH 02EE F3 A5 REP MOVSD 02F0 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=18628 (48C4H) 02F6 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=18628 (48C4H) 02FC B1 2E MOV CL, 2EH 02FE F3 A5 REP MOVSD 0300 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=18948 (4A04H) 0306 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=18948 (4A04H) 030C B1 2E MOV CL, 2EH 030E F3 A5 REP MOVSD 0310 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=19268 (4B44H) 0316 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=19268 (4B44H) 031C B1 2E MOV CL, 2EH 031E F3 A5 REP MOVSD 0320 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=19588 (4C84H) 0326 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=19588 (4C84H) 032C B1 2E MOV CL, 2EH 032E F3 A5 REP MOVSD 0330 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=19908 (4DC4H) 0336 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=19908 (4DC4H) 033C B1 2E MOV CL, 2EH 033E F3 A5 REP MOVSD 0340 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=20228 (4F04H) 0346 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=20228 (4F04H) 034C B1 2E MOV CL, 2EH 034E F3 A5 REP MOVSD 0350 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=20548 (5044H) 0356 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=20548 (5044H) 035C B1 2E MOV CL, 2EH 035E F3 A5 REP MOVSD 0360 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=20868 (5184H) 0366 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=20868 (5184H) 036C B1 2E MOV CL, 2EH 036E F3 A5 REP MOVSD 0370 81 C6 88 00 00 00 ADD ESI, 00000088H ;esi=21188 (52C4H) 0376 81 C7 88 00 00 00 ADD EDI, 00000088H ;edi=21188 (52C4H) 037C B1 2E MOV CL, 2EH 037E F3 A5 REP MOVSD 0380 83 C6 64 ADD ESI, 83H ;esi=21472 (53E0H) 0383 83 C7 64 ADD EDI, B1H ;edi=21472 (53E0H) 0386 B1 08 MOV CL, 08H 0388 F3 A5 REP MOVSD 038A 83 C6 00 ADD ESI, 83H ;esi=21504 (5400H) 038D 83 C7 00 ADD EDI, B1H ;edi=21504 (5400H) 0390 B1 30 MOV CL, 30H 0392 F3 A5 REP MOVSD 0394 83 C6 00 ADD ESI, 83H ;esi=21696 (54C0H) 0397 83 C7 00 ADD EDI, B1H ;edi=21696 (54C0H) 039A B1 08 MOV CL, 08H 039C F3 A5 REP MOVSD 039E 83 C6 40 ADD ESI, 83H ;esi=21792 (5520H) 03A1 83 C7 40 ADD EDI, B1H ;edi=21792 (5520H) 03A4 B1 40 MOV CL, 40H 03A6 F3 A5 REP MOVSD 03A8 83 C6 40 ADD ESI, 83H ;esi=22112 (5660H) 03AB 83 C7 40 ADD EDI, B1H ;edi=22112 (5660H) 03AE B1 40 MOV CL, 40H 03B0 F3 A5 REP MOVSD 03B2 83 C6 40 ADD ESI, 83H ;esi=22432 (57A0H) 03B5 83 C7 40 ADD EDI, B1H ;edi=22432 (57A0H) 03B8 B1 40 MOV CL, 40H 03BA F3 A5 REP MOVSD 03BC 83 C6 40 ADD ESI, 83H ;esi=22752 (58E0H) 03BF 83 C7 40 ADD EDI, B1H ;edi=22752 (58E0H) 03C2 B1 40 MOV CL, 40H 03C4 F3 A5 REP MOVSD 03C6 83 C6 40 ADD ESI, 83H ;esi=23072 (5A20H) 03C9 83 C7 40 ADD EDI, B1H ;edi=23072 (5A20H) 03CC B1 40 MOV CL, 40H 03CE F3 A5 REP MOVSD 03D0 83 C6 40 ADD ESI, 83H ;esi=23392 (5B60H) 03D3 83 C7 40 ADD EDI, B1H ;edi=23392 (5B60H) 03D6 B1 40 MOV CL, 40H 03D8 F3 A5 REP MOVSD 03DA 83 C6 40 ADD ESI, 83H ;esi=23712 (5CA0H) 03DD 83 C7 40 ADD EDI, B1H ;edi=23712 (5CA0H) 03E0 B1 40 MOV CL, 40H 03E2 F3 A5 REP MOVSD 03E4 83 C6 40 ADD ESI, 83H ;esi=24032 (5DE0H) 03E7 83 C7 40 ADD EDI, B1H ;edi=24032 (5DE0H) 03EA B1 40 MOV CL, 40H 03EC F3 A5 REP MOVSD 03EE 83 C6 40 ADD ESI, 83H ;esi=24352 (5F20H) 03F1 83 C7 40 ADD EDI, B1H ;edi=24352 (5F20H) 03F4 B1 40 MOV CL, 40H 03F6 F3 A5 REP MOVSD 03F8 83 C6 40 ADD ESI, 83H ;esi=24672 (6060H) 03FB 83 C7 40 ADD EDI, B1H ;edi=24672 (6060H) 03FE B1 40 MOV CL, 40H 0400 F3 A5 REP MOVSD 0402 83 C6 40 ADD ESI, 83H ;esi=24992 (61A0H) 0405 83 C7 40 ADD EDI, B1H ;edi=24992 (61A0H) 0408 B1 40 MOV CL, 40H 040A F3 A5 REP MOVSD 040C 83 C6 40 ADD ESI, 83H ;esi=25312 (62E0H) 040F 83 C7 40 ADD EDI, B1H ;edi=25312 (62E0H) 0412 B1 40 MOV CL, 40H 0414 F3 A5 REP MOVSD 0416 83 C6 40 ADD ESI, 83H ;esi=25632 (6420H) 0419 83 C7 40 ADD EDI, B1H ;edi=25632 (6420H) 041C B1 40 MOV CL, 40H 041E F3 A5 REP MOVSD 0420 83 C6 40 ADD ESI, 83H ;esi=25952 (6560H) 0423 83 C7 40 ADD EDI, B1H ;edi=25952 (6560H) 0426 B1 40 MOV CL, 40H 0428 F3 A5 REP MOVSD 042A 83 C6 40 ADD ESI, 83H ;esi=26272 (66A0H) 042D 83 C7 40 ADD EDI, B1H ;edi=26272 (66A0H) 0430 B1 40 MOV CL, 40H 0432 F3 A5 REP MOVSD 0434 83 C6 40 ADD ESI, 83H ;esi=26592 (67E0H) 0437 83 C7 40 ADD EDI, B1H ;edi=26592 (67E0H) 043A B1 40 MOV CL, 40H 043C F3 A5 REP MOVSD 043E 83 C6 40 ADD ESI, 83H ;esi=26912 (6920H) 0441 83 C7 40 ADD EDI, B1H ;edi=26912 (6920H) 0444 B1 40 MOV CL, 40H 0446 F3 A5 REP MOVSD 0448 83 C6 40 ADD ESI, 83H ;esi=27232 (6A60H) 044B 83 C7 40 ADD EDI, B1H ;edi=27232 (6A60H) 044E B1 40 MOV CL, 40H 0450 F3 A5 REP MOVSD 0452 83 C6 40 ADD ESI, 83H ;esi=27552 (6BA0H) 0455 83 C7 40 ADD EDI, B1H ;edi=27552 (6BA0H) 0458 B1 40 MOV CL, 40H 045A F3 A5 REP MOVSD 045C 83 C6 40 ADD ESI, 83H ;esi=27872 (6CE0H) 045F 83 C7 40 ADD EDI, B1H ;edi=27872 (6CE0H) 0462 B1 40 MOV CL, 40H 0464 F3 A5 REP MOVSD 0466 83 C6 44 ADD ESI, 83H ;esi=28196 (6E24H) 0469 83 C7 44 ADD EDI, B1H ;edi=28196 (6E24H) 046C B1 3E MOV CL, 3EH 046E F3 A5 REP MOVSD 0470 83 C6 48 ADD ESI, 83H ;esi=28516 (6F64H) 0473 83 C7 48 ADD EDI, B1H ;edi=28516 (6F64H) 0476 B1 3E MOV CL, 3EH 0478 F3 A5 REP MOVSD 047A 83 C6 48 ADD ESI, 83H ;esi=28836 (70A4H) 047D 83 C7 48 ADD EDI, B1H ;edi=28836 (70A4H) 0480 B1 3E MOV CL, 3EH 0482 F3 A5 REP MOVSD 0484 83 C6 48 ADD ESI, 83H ;esi=29156 (71E4H) 0487 83 C7 48 ADD EDI, B1H ;edi=29156 (71E4H) 048A B1 3E MOV CL, 3EH 048C F3 A5 REP MOVSD 048E 83 C6 48 ADD ESI, 83H ;esi=29476 (7324H) 0491 83 C7 48 ADD EDI, B1H ;edi=29476 (7324H) 0494 B1 3E MOV CL, 3EH 0496 F3 A5 REP MOVSD 0498 83 C6 48 ADD ESI, 83H ;esi=29796 (7464H) 049B 83 C7 48 ADD EDI, B1H ;edi=29796 (7464H) 049E B1 3E MOV CL, 3EH 04A0 F3 A5 REP MOVSD 04A2 83 C6 48 ADD ESI, 83H ;esi=30116 (75A4H) 04A5 83 C7 48 ADD EDI, B1H ;edi=30116 (75A4H) 04A8 B1 3E MOV CL, 3EH 04AA F3 A5 REP MOVSD 04AC 83 C6 48 ADD ESI, 83H ;esi=30436 (76E4H) 04AF 83 C7 48 ADD EDI, B1H ;edi=30436 (76E4H) 04B2 B1 3E MOV CL, 3EH 04B4 F3 A5 REP MOVSD 04B6 83 C6 48 ADD ESI, 83H ;esi=30756 (7824H) 04B9 83 C7 48 ADD EDI, B1H ;edi=30756 (7824H) 04BC B1 3E MOV CL, 3EH 04BE F3 A5 REP MOVSD 04C0 83 C6 48 ADD ESI, 83H ;esi=31076 (7964H) 04C3 83 C7 48 ADD EDI, B1H ;edi=31076 (7964H) 04C6 B1 3E MOV CL, 3EH 04C8 F3 A5 REP MOVSD 04CA 83 C6 48 ADD ESI, 83H ;esi=31396 (7AA4H) 04CD 83 C7 48 ADD EDI, B1H ;edi=31396 (7AA4H) 04D0 B1 3E MOV CL, 3EH 04D2 F3 A5 REP MOVSD 04D4 83 C6 48 ADD ESI, 83H ;esi=31716 (7BE4H) 04D7 83 C7 48 ADD EDI, B1H ;edi=31716 (7BE4H) 04DA B1 3E MOV CL, 3EH 04DC F3 A5 REP MOVSD 04DE 83 C6 48 ADD ESI, 83H ;esi=32036 (7D24H) 04E1 83 C7 48 ADD EDI, B1H ;edi=32036 (7D24H) 04E4 B1 3E MOV CL, 3EH 04E6 F3 A5 REP MOVSD 04E8 83 C6 48 ADD ESI, 83H ;esi=32356 (7E64H) 04EB 83 C7 48 ADD EDI, B1H ;edi=32356 (7E64H) 04EE B1 3E MOV CL, 3EH 04F0 F3 A5 REP MOVSD 04F2 83 C6 48 ADD ESI, 83H ;esi=32676 (7FA4H) 04F5 83 C7 48 ADD EDI, B1H ;edi=32676 (7FA4H) 04F8 B1 3E MOV CL, 3EH 04FA F3 A5 REP MOVSD 04FC 83 C6 48 ADD ESI, 83H ;esi=32996 (80E4H) 04FF 83 C7 48 ADD EDI, B1H ;edi=32996 (80E4H) 0502 B1 3E MOV CL, 3EH 0504 F3 A5 REP MOVSD 0506 83 C6 48 ADD ESI, 83H ;esi=33316 (8224H) 0509 83 C7 48 ADD EDI, B1H ;edi=33316 (8224H) 050C B1 3E MOV CL, 3EH 050E F3 A5 REP MOVSD 0510 83 C6 48 ADD ESI, 83H ;esi=33636 (8364H) 0513 83 C7 48 ADD EDI, B1H ;edi=33636 (8364H) 0516 B1 3E MOV CL, 3EH 0518 F3 A5 REP MOVSD 051A 83 C6 48 ADD ESI, 83H ;esi=33956 (84A4H) 051D 83 C7 48 ADD EDI, B1H ;edi=33956 (84A4H) 0520 B1 3E MOV CL, 3EH 0522 F3 A5 REP MOVSD 0524 83 C6 48 ADD ESI, 83H ;esi=34276 (85E4H) 0527 83 C7 48 ADD EDI, B1H ;edi=34276 (85E4H) 052A B1 3E MOV CL, 3EH 052C F3 A5 REP MOVSD 052E 83 C6 48 ADD ESI, 83H ;esi=34596 (8724H) 0531 83 C7 48 ADD EDI, B1H ;edi=34596 (8724H) 0534 B1 3E MOV CL, 3EH 0536 F3 A5 REP MOVSD 0538 83 C6 48 ADD ESI, 83H ;esi=34916 (8864H) 053B 83 C7 48 ADD EDI, B1H ;edi=34916 (8864H) 053E B1 3E MOV CL, 3EH 0540 F3 A5 REP MOVSD 0542 83 C6 48 ADD ESI, 83H ;esi=35236 (89A4H) 0545 83 C7 48 ADD EDI, B1H ;edi=35236 (89A4H) 0548 B1 3E MOV CL, 3EH 054A F3 A5 REP MOVSD 054C 83 C6 48 ADD ESI, 83H ;esi=35556 (8AE4H) 054F 83 C7 48 ADD EDI, B1H ;edi=35556 (8AE4H) 0552 B1 3E MOV CL, 3EH 0554 F3 A5 REP MOVSD 0556 83 C6 48 ADD ESI, 83H ;esi=35876 (8C24H) 0559 83 C7 48 ADD EDI, B1H ;edi=35876 (8C24H) 055C B1 3E MOV CL, 3EH 055E F3 A5 REP MOVSD 0560 83 C6 48 ADD ESI, 83H ;esi=36196 (8D64H) 0563 83 C7 48 ADD EDI, B1H ;edi=36196 (8D64H) 0566 B1 3E MOV CL, 3EH 0568 F3 A5 REP MOVSD 056A 83 C6 48 ADD ESI, 83H ;esi=36516 (8EA4H) 056D 83 C7 48 ADD EDI, B1H ;edi=36516 (8EA4H) 0570 B1 3E MOV CL, 3EH 0572 F3 A5 REP MOVSD 0574 83 C6 48 ADD ESI, 83H ;esi=36836 (8FE4H) 0577 83 C7 48 ADD EDI, B1H ;edi=36836 (8FE4H) 057A B1 3E MOV CL, 3EH 057C F3 A5 REP MOVSD 057E 83 C6 48 ADD ESI, 83H ;esi=37156 (9124H) 0581 83 C7 48 ADD EDI, B1H ;edi=37156 (9124H) 0584 B1 3E MOV CL, 3EH 0586 F3 A5 REP MOVSD 0588 83 C6 48 ADD ESI, 83H ;esi=37476 (9264H) 058B 83 C7 48 ADD EDI, B1H ;edi=37476 (9264H) 058E B1 3E MOV CL, 3EH 0590 F3 A5 REP MOVSD 0592 83 C6 48 ADD ESI, 83H ;esi=37796 (93A4H) 0595 83 C7 48 ADD EDI, B1H ;edi=37796 (93A4H) 0598 B1 3E MOV CL, 3EH 059A F3 A5 REP MOVSD 059C 83 C6 48 ADD ESI, 83H ;esi=38116 (94E4H) 059F 83 C7 48 ADD EDI, B1H ;edi=38116 (94E4H) 05A2 B1 3E MOV CL, 3EH 05A4 F3 A5 REP MOVSD 05A6 83 C6 48 ADD ESI, 83H ;esi=38436 (9624H) 05A9 83 C7 48 ADD EDI, B1H ;edi=38436 (9624H) 05AC B1 3E MOV CL, 3EH 05AE F3 A5 REP MOVSD 05B0 83 C6 48 ADD ESI, 83H ;esi=38756 (9764H) 05B3 83 C7 48 ADD EDI, B1H ;edi=38756 (9764H) 05B6 B1 3E MOV CL, 3EH 05B8 F3 A5 REP MOVSD 05BA 83 C6 48 ADD ESI, 83H ;esi=39076 (98A4H) 05BD 83 C7 48 ADD EDI, B1H ;edi=39076 (98A4H) 05C0 B1 3E MOV CL, 3EH 05C2 F3 A5 REP MOVSD 05C4 83 C6 48 ADD ESI, 83H ;esi=39396 (99E4H) 05C7 83 C7 48 ADD EDI, B1H ;edi=39396 (99E4H) 05CA B1 3E MOV CL, 3EH 05CC F3 A5 REP MOVSD 05CE 83 C6 48 ADD ESI, 83H ;esi=39716 (9B24H) 05D1 83 C7 48 ADD EDI, B1H ;edi=39716 (9B24H) 05D4 B1 3E MOV CL, 3EH 05D6 F3 A5 REP MOVSD 05D8 83 C6 48 ADD ESI, 83H ;esi=40036 (9C64H) 05DB 83 C7 48 ADD EDI, B1H ;edi=40036 (9C64H) 05DE B1 3E MOV CL, 3EH 05E0 F3 A5 REP MOVSD 05E2 83 C6 48 ADD ESI, 83H ;esi=40356 (9DA4H) 05E5 83 C7 48 ADD EDI, B1H ;edi=40356 (9DA4H) 05E8 B1 3E MOV CL, 3EH 05EA F3 A5 REP MOVSD 05EC 83 C6 48 ADD ESI, 83H ;esi=40676 (9EE4H) 05EF 83 C7 48 ADD EDI, B1H ;edi=40676 (9EE4H) 05F2 B1 3E MOV CL, 3EH 05F4 F3 A5 REP MOVSD 05F6 83 C6 48 ADD ESI, 83H ;esi=40996 (A024H) 05F9 83 C7 48 ADD EDI, B1H ;edi=40996 (A024H) 05FC B1 3E MOV CL, 3EH 05FE F3 A5 REP MOVSD 0600 83 C6 48 ADD ESI, 83H ;esi=41316 (A164H) 0603 83 C7 48 ADD EDI, B1H ;edi=41316 (A164H) 0606 B1 3E MOV CL, 3EH 0608 F3 A5 REP MOVSD 060A 83 C6 48 ADD ESI, 83H ;esi=41636 (A2A4H) 060D 83 C7 48 ADD EDI, B1H ;edi=41636 (A2A4H) 0610 B1 3E MOV CL, 3EH 0612 F3 A5 REP MOVSD 0614 83 C6 48 ADD ESI, 83H ;esi=41956 (A3E4H) 0617 83 C7 48 ADD EDI, B1H ;edi=41956 (A3E4H) 061A B1 3E MOV CL, 3EH 061C F3 A5 REP MOVSD 061E 83 C6 48 ADD ESI, 83H ;esi=42276 (A524H) 0621 83 C7 48 ADD EDI, B1H ;edi=42276 (A524H) 0624 B1 3E MOV CL, 3EH 0626 F3 A5 REP MOVSD 0628 83 C6 48 ADD ESI, 83H ;esi=42596 (A664H) 062B 83 C7 48 ADD EDI, B1H ;edi=42596 (A664H) 062E B1 3E MOV CL, 3EH 0630 F3 A5 REP MOVSD 0632 83 C6 48 ADD ESI, 83H ;esi=42916 (A7A4H) 0635 83 C7 48 ADD EDI, B1H ;edi=42916 (A7A4H) 0638 B1 3E MOV CL, 3EH 063A F3 A5 REP MOVSD 063C 83 C6 48 ADD ESI, 83H ;esi=43236 (A8E4H) 063F 83 C7 48 ADD EDI, B1H ;edi=43236 (A8E4H) 0642 B1 3E MOV CL, 3EH 0644 F3 A5 REP MOVSD 0646 83 C6 48 ADD ESI, 83H ;esi=43556 (AA24H) 0649 83 C7 48 ADD EDI, B1H ;edi=43556 (AA24H) 064C B1 3E MOV CL, 3EH 064E F3 A5 REP MOVSD 0650 83 C6 48 ADD ESI, 83H ;esi=43876 (AB64H) 0653 83 C7 48 ADD EDI, B1H ;edi=43876 (AB64H) 0656 B1 3E MOV CL, 3EH 0658 F3 A5 REP MOVSD 065A 83 C6 48 ADD ESI, 83H ;esi=44196 (ACA4H) 065D 83 C7 48 ADD EDI, B1H ;edi=44196 (ACA4H) 0660 B1 3E MOV CL, 3EH 0662 F3 A5 REP MOVSD 0664 83 C6 48 ADD ESI, 83H ;esi=44516 (ADE4H) 0667 83 C7 48 ADD EDI, B1H ;edi=44516 (ADE4H) 066A B1 3E MOV CL, 3EH 066C F3 A5 REP MOVSD 066E 83 C6 48 ADD ESI, 83H ;esi=44836 (AF24H) 0671 83 C7 48 ADD EDI, B1H ;edi=44836 (AF24H) 0674 B1 3E MOV CL, 3EH 0676 F3 A5 REP MOVSD 0678 83 C6 48 ADD ESI, 83H ;esi=45156 (B064H) 067B 83 C7 48 ADD EDI, B1H ;edi=45156 (B064H) 067E B1 3E MOV CL, 3EH 0680 F3 A5 REP MOVSD 0682 83 C6 48 ADD ESI, 83H ;esi=45476 (B1A4H) 0685 83 C7 48 ADD EDI, B1H ;edi=45476 (B1A4H) 0688 B1 3E MOV CL, 3EH 068A F3 A5 REP MOVSD 068C 83 C6 48 ADD ESI, 83H ;esi=45796 (B2E4H) 068F 83 C7 48 ADD EDI, B1H ;edi=45796 (B2E4H) 0692 B1 3E MOV CL, 3EH 0694 F3 A5 REP MOVSD 0696 83 C6 48 ADD ESI, 83H ;esi=46116 (B424H) 0699 83 C7 48 ADD EDI, B1H ;edi=46116 (B424H) 069C B1 3E MOV CL, 3EH 069E F3 A5 REP MOVSD 06A0 83 C6 48 ADD ESI, 83H ;esi=46436 (B564H) 06A3 83 C7 48 ADD EDI, B1H ;edi=46436 (B564H) 06A6 B1 3E MOV CL, 3EH 06A8 F3 A5 REP MOVSD 06AA 83 C6 48 ADD ESI, 83H ;esi=46756 (B6A4H) 06AD 83 C7 48 ADD EDI, B1H ;edi=46756 (B6A4H) 06B0 B1 3E MOV CL, 3EH 06B2 F3 A5 REP MOVSD 06B4 83 C6 48 ADD ESI, 83H ;esi=47076 (B7E4H) 06B7 83 C7 48 ADD EDI, B1H ;edi=47076 (B7E4H) 06BA B1 3E MOV CL, 3EH 06BC F3 A5 REP MOVSD 06BE 83 C6 48 ADD ESI, 83H ;esi=47396 (B924H) 06C1 83 C7 48 ADD EDI, B1H ;edi=47396 (B924H) 06C4 B1 3E MOV CL, 3EH 06C6 F3 A5 REP MOVSD 06C8 83 C6 48 ADD ESI, 83H ;esi=47716 (BA64H) 06CB 83 C7 48 ADD EDI, B1H ;edi=47716 (BA64H) 06CE B1 3E MOV CL, 3EH 06D0 F3 A5 REP MOVSD 06D2 83 C6 48 ADD ESI, 83H ;esi=48036 (BBA4H) 06D5 83 C7 48 ADD EDI, B1H ;edi=48036 (BBA4H) 06D8 B1 19 MOV CL, 19H 06DA F3 A5 REP MOVSD 06DC 83 C6 30 ADD ESI, 83H ;esi=48184 (BC38H) 06DF 83 C7 30 ADD EDI, B1H ;edi=48184 (BC38H) 06E2 B1 19 MOV CL, 19H 06E4 F3 A5 REP MOVSD 06E6 83 C6 48 ADD ESI, 83H ;esi=48356 (BCE4H) 06E9 83 C7 48 ADD EDI, B1H ;edi=48356 (BCE4H) 06EC B1 19 MOV CL, 19H 06EE F3 A5 REP MOVSD 06F0 83 C6 34 ADD ESI, 83H ;esi=48508 (BD7CH) 06F3 83 C7 34 ADD EDI, B1H ;edi=48508 (BD7CH) 06F6 B1 18 MOV CL, 18H 06F8 F3 A5 REP MOVSD 06FA 83 C6 48 ADD ESI, 83H ;esi=48676 (BE24H) 06FD 83 C7 48 ADD EDI, B1H ;edi=48676 (BE24H) 0700 B1 18 MOV CL, 18H 0702 F3 A5 REP MOVSD 0704 83 C6 38 ADD ESI, 83H ;esi=48828 (BEBCH) 0707 83 C7 38 ADD EDI, B1H ;edi=48828 (BEBCH) 070A B1 18 MOV CL, 18H 070C F3 A5 REP MOVSD 070E 83 C6 44 ADD ESI, 83H ;esi=48992 (BF60H) 0711 83 C7 44 ADD EDI, B1H ;edi=48992 (BF60H) 0714 B1 19 MOV CL, 19H 0716 F3 A5 REP MOVSD 0718 83 C6 3C ADD ESI, 83H ;esi=49152 (C000H) 071B 83 C7 3C ADD EDI, B1H ;edi=49152 (C000H) 071E B1 18 MOV CL, 18H 0720 F3 A5 REP MOVSD 0722 83 C6 40 ADD ESI, 83H ;esi=49312 (C0A0H) 0725 83 C7 40 ADD EDI, B1H ;edi=49312 (C0A0H) 0728 B1 19 MOV CL, 19H 072A F3 A5 REP MOVSD 072C 83 C6 3C ADD ESI, 83H ;esi=49472 (C140H) 072F 83 C7 3C ADD EDI, B1H ;edi=49472 (C140H) 0732 B1 18 MOV CL, 18H 0734 F3 A5 REP MOVSD 0736 83 C6 40 ADD ESI, 83H ;esi=49632 (C1E0H) 0739 83 C7 40 ADD EDI, B1H ;edi=49632 (C1E0H) 073C B1 19 MOV CL, 19H 073E F3 A5 REP MOVSD 0740 83 C6 3C ADD ESI, 83H ;esi=49792 (C280H) 0743 83 C7 3C ADD EDI, B1H ;edi=49792 (C280H) 0746 B1 18 MOV CL, 18H 0748 F3 A5 REP MOVSD 074A 83 C6 40 ADD ESI, 83H ;esi=49952 (C320H) 074D 83 C7 40 ADD EDI, B1H ;edi=49952 (C320H) 0750 B1 19 MOV CL, 19H 0752 F3 A5 REP MOVSD 0754 83 C6 3C ADD ESI, 83H ;esi=50112 (C3C0H) 0757 83 C7 3C ADD EDI, B1H ;edi=50112 (C3C0H) 075A B1 18 MOV CL, 18H 075C F3 A5 REP MOVSD 075E 83 C6 40 ADD ESI, 83H ;esi=50272 (C460H) 0761 83 C7 40 ADD EDI, B1H ;edi=50272 (C460H) 0764 B1 19 MOV CL, 19H 0766 F3 A5 REP MOVSD 0768 83 C6 3C ADD ESI, 83H ;esi=50432 (C500H) 076B 83 C7 3C ADD EDI, B1H ;edi=50432 (C500H) 076E B1 18 MOV CL, 18H 0770 F3 A5 REP MOVSD 0772 83 C6 40 ADD ESI, 83H ;esi=50592 (C5A0H) 0775 83 C7 40 ADD EDI, B1H ;edi=50592 (C5A0H) 0778 B1 19 MOV CL, 19H 077A F3 A5 REP MOVSD 077C 83 C6 3C ADD ESI, 83H ;esi=50752 (C640H) 077F 83 C7 3C ADD EDI, B1H ;edi=50752 (C640H) 0782 B1 18 MOV CL, 18H 0784 F3 A5 REP MOVSD 0786 83 C6 40 ADD ESI, 83H ;esi=50912 (C6E0H) 0789 83 C7 40 ADD EDI, B1H ;edi=50912 (C6E0H) 078C B1 18 MOV CL, 18H 078E F3 A5 REP MOVSD 0790 83 C6 40 ADD ESI, 83H ;esi=51072 (C780H) 0793 83 C7 40 ADD EDI, B1H ;edi=51072 (C780H) 0796 B1 18 MOV CL, 18H 0798 F3 A5 REP MOVSD 079A 83 C6 40 ADD ESI, 83H ;esi=51232 (C820H) 079D 83 C7 40 ADD EDI, B1H ;edi=51232 (C820H) 07A0 B1 18 MOV CL, 18H 07A2 F3 A5 REP MOVSD 07A4 83 C6 40 ADD ESI, 83H ;esi=51392 (C8C0H) 07A7 83 C7 40 ADD EDI, B1H ;edi=51392 (C8C0H) 07AA B1 18 MOV CL, 18H 07AC F3 A5 REP MOVSD 07AE 83 C6 40 ADD ESI, 83H ;esi=51552 (C960H) 07B1 83 C7 40 ADD EDI, B1H ;edi=51552 (C960H) 07B4 B1 18 MOV CL, 18H 07B6 F3 A5 REP MOVSD 07B8 83 C6 40 ADD ESI, 83H ;esi=51712 (CA00H) 07BB 83 C7 40 ADD EDI, B1H ;edi=51712 (CA00H) 07BE B1 18 MOV CL, 18H 07C0 F3 A5 REP MOVSD 07C2 83 C6 40 ADD ESI, 83H ;esi=51872 (CAA0H) 07C5 83 C7 40 ADD EDI, B1H ;edi=51872 (CAA0H) 07C8 B1 18 MOV CL, 18H 07CA F3 A5 REP MOVSD 07CC 83 C6 44 ADD ESI, 83H ;esi=52036 (CB44H) 07CF 83 C7 44 ADD EDI, B1H ;edi=52036 (CB44H) 07D2 B1 17 MOV CL, 17H 07D4 F3 A5 REP MOVSD 07D6 83 C6 40 ADD ESI, 83H ;esi=52192 (CBE0H) 07D9 83 C7 40 ADD EDI, B1H ;edi=52192 (CBE0H) 07DC B1 18 MOV CL, 18H 07DE F3 A5 REP MOVSD 07E0 83 C6 44 ADD ESI, 83H ;esi=52356 (CC84H) 07E3 83 C7 44 ADD EDI, B1H ;edi=52356 (CC84H) 07E6 B1 17 MOV CL, 17H 07E8 F3 A5 REP MOVSD 07EA 83 C6 40 ADD ESI, 83H ;esi=52512 (CD20H) 07ED 83 C7 40 ADD EDI, B1H ;edi=52512 (CD20H) 07F0 B1 18 MOV CL, 18H 07F2 F3 A5 REP MOVSD 07F4 83 C6 44 ADD ESI, 83H ;esi=52676 (CDC4H) 07F7 83 C7 44 ADD EDI, B1H ;edi=52676 (CDC4H) 07FA B1 17 MOV CL, 17H 07FC F3 A5 REP MOVSD 07FE 83 C6 40 ADD ESI, 83H ;esi=52832 (CE60H) 0801 83 C7 40 ADD EDI, B1H ;edi=52832 (CE60H) 0804 B1 18 MOV CL, 18H 0806 F3 A5 REP MOVSD 0808 83 C6 44 ADD ESI, 83H ;esi=52996 (CF04H) 080B 83 C7 44 ADD EDI, B1H ;edi=52996 (CF04H) 080E B1 17 MOV CL, 17H 0810 F3 A5 REP MOVSD 0812 83 C6 40 ADD ESI, 83H ;esi=53152 (CFA0H) 0815 83 C7 40 ADD EDI, B1H ;edi=53152 (CFA0H) 0818 B1 18 MOV CL, 18H 081A F3 A5 REP MOVSD 081C 83 C6 44 ADD ESI, 83H ;esi=53316 (D044H) 081F 83 C7 44 ADD EDI, B1H ;edi=53316 (D044H) 0822 B1 17 MOV CL, 17H 0824 F3 A5 REP MOVSD 0826 83 C6 44 ADD ESI, 83H ;esi=53476 (D0E4H) 0829 83 C7 44 ADD EDI, B1H ;edi=53476 (D0E4H) 082C B1 17 MOV CL, 17H 082E F3 A5 REP MOVSD 0830 83 C6 44 ADD ESI, 83H ;esi=53636 (D184H) 0833 83 C7 44 ADD EDI, B1H ;edi=53636 (D184H) 0836 B1 16 MOV CL, 16H 0838 F3 A5 REP MOVSD 083A 83 C6 48 ADD ESI, 83H ;esi=53796 (D224H) 083D 83 C7 48 ADD EDI, B1H ;edi=53796 (D224H) 0840 B1 16 MOV CL, 16H 0842 F3 A5 REP MOVSD 0844 83 C6 48 ADD ESI, 83H ;esi=53956 (D2C4H) 0847 83 C7 48 ADD EDI, B1H ;edi=53956 (D2C4H) 084A B1 16 MOV CL, 16H 084C F3 A5 REP MOVSD 084E 83 C6 4C ADD ESI, 83H ;esi=54120 (D368H) 0851 83 C7 4C ADD EDI, B1H ;edi=54120 (D368H) 0854 B1 15 MOV CL, 15H 0856 F3 A5 REP MOVSD 0858 83 C6 4C ADD ESI, 83H ;esi=54280 (D408H) 085B 83 C7 4C ADD EDI, B1H ;edi=54280 (D408H) 085E B1 14 MOV CL, 14H 0860 F3 A5 REP MOVSD 0862 C3 RET * Offset 0863H: Header 60 6A 6D 6C 67 61 * Offset 0869H: Data FE5FEE60 *3 = 64 00 6E FE00 *6 = 6F 6A 00 00 6D 68 FD65 *1 = 5E EC00 *17 = 63 00 4F 6D 6C 6E 00 00 6F 67 69 4F 00 6F 4D 6A 67 EC00 *1 = 5E FD65 *2 = 6D 6E FE00FD00 *1 = 6D FD6A *2 = 64 5F EC00 *1 = 69 F264 *1 = 65 EC00 *2 = 5F 65 FE6A *2 = 65 6E FE00 *3 = 2F 30 00 FB6F *2 = 64 5F EB00 *5 = 6E 6D 00 00 6F F700 *1 = 6F EC00 *2 = 5F 65 FE6F *2 = 6A 6F FE00F900 *3 = 69 64 60 EB00 *16 = 69 5C 00 5E 50 5B 68 00 6F 6A 6F 5B 65 00 00 6F EC00 *3 = 5F 65 6E FA00FD00 *1 = 6C FE00 *3 = 69 64 60 EB00 *11 = 69 68 00 5F 6A 5E 4C 6F 6F 00 6A FD00 *1 = 6F EC00 *3 = 5F 65 6A FA00424F4459 *1 = 00 2F6C *1 = 00 C26F *14 = 29 67 63 5C 65 67 68 69 6A 6C 6E 6F 6E 6D F46CFF6A *4 = 69 68 65 64 FD63FF64 *4 = 65 69 6A 6E FE00 *3 = 6E 68 67 EF65 *3 = 67 68 6A FB00 *2 = 69 67 DD64 *2 = 67 69 FB00 *3 = 6A 68 67 EF65 *3 = 67 68 6E FE00 *4 = 6E 6A 69 65 FE64FE63 *6 = 64 65 68 69 6A 6A F46C *14 = 6D 6E 6F 6E 6C 6A 69 68 67 65 5C 63 67 29 C100C16F *15 = 29 67 63 5C 64 65 67 68 69 6A 6C 6E 6F 6E 6D F46CFF6A *4 = 69 68 65 64 FD63FF64 *3 = 65 69 6D FD00 *4 = 6C 68 67 65 F164 *3 = 65 68 6C FB00 *2 = 68 65 DD63 *2 = 65 68 FB00 *3 = 6C 68 65 F164 *4 = 65 67 68 6C FD00 *3 = 6D 69 65 FE64FE63 *6 = 64 65 68 69 6A 6A F46C *15 = 6D 6E 6F 6E 6C 6A 69 68 67 65 64 5C 63 67 29 C100C16F *16 = 29 67 63 5C 64 64 65 67 68 69 6A 6C 6E 6F 6E 6D F46C *6 = 6A 69 68 67 65 64 FD63FF64 *3 = 68 6D 6F FE00 *6 = 6E 6C 68 67 65 64 F463 *4 = 64 67 69 6D FB00 *3 = 6A 65 63 DF61 *3 = 63 65 6A FB00 *4 = 6D 69 67 64 F463 *6 = 64 65 67 68 6C 6E FE00 *3 = 6F 6D 68 FE64FE63 *6 = 64 65 67 68 69 6A F46C *16 = 6D 6E 6F 6E 6C 6A 69 68 67 65 64 64 5C 63 67 29 C100C16F *17 = 29 67 63 5C 67 64 64 65 67 68 69 6A 6C 6E 6F 6E 6D F46C *5 = 6A 69 68 65 64 FD63 *5 = 64 65 69 6D 6F FD00 *7 = 6D 6C 68 67 65 64 63 F861 *6 = 63 65 67 69 6C 6E FB00 *4 = 6D 6A 64 63 E160 *4 = 63 64 6A 6D FB00 *6 = 6E 6C 69 67 65 63 F861 *7 = 63 64 65 67 68 6C 6D FD00 *6 = 6F 6D 69 65 64 64 FE63 *5 = 64 65 68 69 6A F46C *17 = 6D 6E 6F 6E 6C 6A 69 68 67 65 64 64 67 5C 63 67 29 C100C16F *18 = 29 67 63 5C 68 65 64 64 65 67 68 69 6A 6C 6E 6F 6E 6D F56CFF6A *12 = 68 67 65 64 63 63 64 65 67 6A 6E 6F FD00 *7 = 6E 6D 6C 6A 67 65 64 FB63 *8 = 64 65 67 68 69 6A 6D 6E CB00 *8 = 6E 6D 6A 69 68 67 65 64 FB63 *7 = 64 65 67 6A 6C 6D 6E FD00 *14 = 6F 6E 6A 67 65 64 63 63 64 65 67 68 6A 6A F56C *18 = 6D 6E 6F 6E 6C 6A 69 68 67 65 64 64 65 68 5C 63 67 29 C100C16F *19 = 29 67 63 5C 69 67 65 63 64 65 67 68 69 6A 6C 6E 6F 6E 6D F56C *13 = 6A 69 68 65 64 63 64 65 67 69 6C 6E 6F FB00 *5 = 6E 6D 6C 6A 69 FE68 *5 = 69 6A 6A 6C 6C F500 *5 = 6E 6D 6D 6C 6C FC6AE46CFF6D *1 = 6E F500FF6CFF6A *1 = 69 FE68 *5 = 69 6A 6C 6D 6E FB00 *13 = 6F 6E 6C 69 67 65 64 63 64 65 68 69 6A F56C *19 = 6D 6E 6F 6E 6C 6A 69 68 67 65 64 63 65 67 69 5C 63 67 29 C100C16F *20 = 29 67 63 5C 6A 68 67 64 63 64 65 67 68 69 6A 6D 6E 6F 6E 6D F66C *12 = 6A 69 68 65 64 65 65 68 69 6C 6E 6F ED00FF6FFF6EFB6DFF6C *4 = 6A 69 68 68 DF67FF68 *4 = 69 6A 6C 6C FB6DFF6EFF6FED00 *12 = 6F 6E 6C 69 68 65 65 64 65 68 69 6A F66C *20 = 6D 6E 6F 6E 6D 6A 69 68 67 65 64 63 64 67 68 6A 5C 63 67 29 C100C16F *21 = 29 67 63 5C 6A 69 68 65 63 63 64 65 67 68 69 6C 6E 6F 6F 6E 6D F86CFF6A *10 = 69 68 65 67 68 69 6A 6C 6E 6F F500 *2 = 6E 6D FE6CFE6DFF6E *1 = 6D FE6CFC6A *4 = 69 68 68 67 DB65 *4 = 67 68 68 69 FC6AFE6C *3 = 6D 6E 6E FE6DFE6C *2 = 6D 6E F500 *12 = 6F 6E 6C 6A 69 68 67 65 68 69 6A 6A F86C *21 = 6D 6E 6F 6F 6E 6C 69 68 67 65 64 63 63 65 68 69 6A 5C 63 67 29 C100C16F *21 = 29 67 63 5C 6C 6A 69 67 65 63 61 64 65 67 69 6C 6E 6F 00 6F 6E FE6DFE6CFD6AFE69 *5 = 6A 6C 6C 6D 6E F900 *8 = 6E 6D 6C 6C 6D 6D 6E 6F FD6EFC6DFF6CFE6AFE69FF68 *3 = 67 65 65 DB64FF65 *3 = 67 68 68 FE69FE6AFF6CFC6DFD6E *8 = 6F 6E 6D 6D 6C 6C 6D 6E F900 *5 = 6E 6D 6C 6C 6A FE69FD6AFE6CFE6D *21 = 6E 6F 00 6F 6E 6C 69 67 65 64 61 63 65 67 69 6A 6C 5C 63 67 29 C100C16F *21 = 29 67 63 5C 6C 6A 69 68 67 65 63 61 64 65 6A 6D 6E 6F 00 00 6F FE6EFC6DFE6EFE6FFD00 *3 = 6F 6E 6D FE6C *3 = 6D 6E 6E F86FFF6EFD6DFF6CFF6AFE69FF68FF67FF65FF64DC63 *7 = 64 65 65 67 67 68 68 FE69FF6AFF6CFD6DFF6EF86FFF6E *1 = 6D FE6C *3 = 6D 6E 6F FD00FE6FFE6EFC6DFE6E *21 = 6F 00 00 6F 6E 6D 6A 65 64 61 63 65 67 68 69 6A 6C 5C 63 67 29 C100C16F *17 = 29 67 63 5C 6D 6C 6A 69 68 67 65 64 65 69 6C 6E 6F FC00F96FFE00 *8 = 6F 6E 6D 6C 6C 6D 6E 6E F16FFE6EFE6D *5 = 6C 6A 6A 69 69 FE68FF67FF65FD64DE63FE64 *1 = 65 FE67FE68FF69FF6A *1 = 6C FE6DFE6EF16FFF6E *6 = 6D 6C 6C 6D 6E 6F FE00F96FFC00 *17 = 6F 6E 6C 69 65 64 65 67 68 69 6A 6C 6D 5C 63 67 29 C100C16F *16 = 29 67 63 5C 6D 6C 6A 69 68 67 67 65 69 6C 6E 6F F500FF6E *6 = 6D 6C 6C 6D 6E 6E F26FF66EFF6DFE6AFE69FE68FE67D9FFFE67FE68FE69FE6AFF6DF66EF26FFF6E *6 = 6D 6C 6C 6D 6E 6E F500 *16 = 6F 6E 6C 69 65 67 67 68 69 6A 6C 6D 5C 63 67 29 C100C16F *15 = 29 67 63 5C 6D 6C 6A 69 68 67 67 69 6C 6E 6F FA00 *8 = 6F 6E 6D 6C 6C 6D 6E 6E F26FFA6EF76D *2 = 6C 6A C1FF *2 = 6A 6C F76DFA6EF26FFF6E *6 = 6D 6C 6C 6D 6E 6F FA00 *15 = 6F 6E 6C 69 67 67 68 69 6A 6C 6D 5C 63 67 29 C100C16F *13 = 29 67 63 5C 6D 6C 6A 69 69 6A 6C 6E 6F FD00 *2 = 6F 6E FD6DFF6EF46FF96EFD6DFE6C *1 = 6A ADFF *1 = 6A FE6CFD6DF96EF46FFF6EFD6D *2 = 6E 6F FD00 *13 = 6F 6E 6C 6A 69 69 6A 6C 6D 5C 63 67 29 C100C16F *9 = 29 67 63 5C 6C 6D 6E 6E 6F FD00FF6FFB6EF56FFB6EFB6DFE6CA1FFFE6CFB6DFB6EF56FFB6EFF6FFD00 *9 = 6F 6E 6E 6D 6C 5C 63 67 29 C100C16F *6 = 29 67 63 5C 6F 6F FE00EF6FFA6EFC6D *2 = 6C 6A 93FF *2 = 6A 6C FC6DFA6EEF6FFE00FF6F *4 = 5C 63 67 29 C100C16F *5 = 29 67 63 5C 00 F06FFB6EFB6D *2 = 6C 6A 89FF *2 = 6A 6C FB6DFB6EF06F *5 = 00 5C 63 67 29 C100C16F *4 = 29 67 63 5C FD00F86FFB6EFC6D *2 = 6C 6A 81FFFDFF *2 = 6A 6C FC6DFB6EF86FFD00 *4 = 5C 63 67 29 C100C16F *5 = 29 67 63 5C 00 F96FFB6EFD6D *2 = 6C 6A 81FFF3FF *2 = 6A 6C FD6DFB6EF96F *5 = 00 5C 63 67 29 C100C16F *4 = 29 67 63 5C FC6FFC6EFC6D *2 = 6C 6A 81FFEBFF *2 = 6A 6C FC6DFC6EFC6F *4 = 5C 63 67 29 C100C16F *5 = 29 67 63 5C 6F FC6EFD6D *2 = 6C 6A 81FFE1FF *2 = 6A 6C FD6DFC6E *5 = 6F 5C 63 67 29 C100C16F *6 = 29 67 63 5C 6E 6E FD6D *2 = 6C 6A 81FFD9FF *2 = 6A 6C FD6DFF6E *4 = 5C 63 67 29 C100C16F *8 = 29 67 63 5C 6D 6D 6C 6A 81FFD1FF *8 = 6A 6C 6D 6D 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5C 81FFC9FF *4 = 5C 63 67 29 C100C16F *4 = 29 67 63 5E 81FFC9FF *4 = 5E 63 67 29 C100C16F *4 = 29 67 63 5E 81FFC9FF *4 = 5E 63 67 29 C100C16F *4 = 29 67 63 5E 81FFC9FF *4 = 5E 63 67 29 C100C16F *5 = 69 60 57 59 61 81FFCBFF *5 = 61 5A 59 60 69 C100C16F *5 = 6A 61 59 5A 61 81FFCBFF *5 = 61 5A 57 61 6A C100C16F *5 = 6A 64 5E 5C 64 81FFCBFF *5 = 64 5C 5E 64 6A C100C429 *8 = 6E 5E 63 67 67 61 60 65 81FFCBFF *8 = 65 60 61 67 67 63 5E 6E C429CE5F *1 = 5E FD5C *6 = 5E 5F 60 61 64 6E FD69 *3 = 65 64 67 81FFCBFF *3 = 67 64 65 FD69 *4 = 6E 64 61 60 C75FFD67FE65FF64D263 *13 = 64 65 67 68 69 6E 6C 6C 6A 68 67 67 68 81FFCBFF *13 = 68 67 67 68 6A 6C 6C 6E 69 68 67 65 64 D263FF64FE65FD67 *3 = 65 64 64 FA63D561 *14 = 63 64 65 67 68 69 6A 6E 6D 6D 6C 6A 69 69 81FFC9FFFF69 *12 = 6A 6C 6D 6D 6E 6A 69 68 67 65 64 63 D561FA63FF64 *1 = 65 014F6FFE *1 = FF 6F0B *1 = 5E 6100 *1 = 6F 6A68 *1 = 6F 6568FB00FF6FF900E7FF *6 = 6E 6A 6C 6C 6A 6A 81FFC7FFFF6AFF6C *2 = 6A 6E E7FFFF6FFC00 *14 = 6E 64 67 46 4C 4C 60 64 6C 6A 6A 6F 00 00 F86FFD00 *1 = 6F 016F6DFE *1 = FF 6F02 *1 = 60 60FE *1 = 01 6F67ED0081FF87FFFA6F *3 = 60 63 5B FE60FF45 *8 = 6A 68 5E 6A 00 5B 00 4F FB6F *6 = 00 5E 61 00 00 6F 0C6F6A00 *1 = 5F 6D6E *1 = 6F 6E006867F86A *5 = 6C 6A 6A 67 6C F90081FF87FF *2 = 6F 6D FD6F *18 = 00 59 6D 60 65 4C 6F 5C 35 00 60 6A 67 00 63 00 6F 6D FC6F *3 = 00 60 60 FE00 *12 = 6F 4C 00 00 6D 67 6E 00 60 5B 00 56 F400 *3 = 6A 60 00 FE6FFD0081FF87FFFF6FFF00FF6F *8 = 00 6C 64 64 4C 4C 65 63 FE4CFF6E *1 = 00 FE6F *12 = 6A 6C 4C 6F 6D 6E 00 6F 6E 00 68 67 006FFE00 *11 = 6E 6D 6C 00 69 65 00 5B 6A 63 00 FE6F *2 = 00 6F FE00 *6 = 68 64 6D 5A 6F 00 FE6FFE0081FF87FF *3 = 6F 00 00 FE6FFE00 *4 = 6F 6D 6A 6A FE00 *1 = 6F FE00 *15 = 5B 00 6F 4C 4C 4F 6D 67 6E 00 60 5B 00 56 00 006FFE00 *25 = 4D 6C 6C 00 6A 67 00 60 60 50 6A 00 60 5B 6E 00 6C 68 6F 30 50 00 5B 00 00 FD6FFF0081FF87FF *2 = 6F 00 FD6F *26 = 00 6D 6F 00 6A 5B 60 6F 67 5B 63 6F 6E 00 6C 00 6F 6C 6C 6E 6E 6D 6C 00 69 65 FE00 *1 = 6F FE00 *28 = 4F 68 6C 00 63 5B 00 5E 68 67 6F 6F 5A 56 68 6F 6F 00 00 68 6A 00 5A 00 00 69 6A 6C FE6D81FF87FF *32 = 6F 6D 6D 6C 6C 6D 00 5E 4D 6F 63 53 68 63 57 57 6F 5B 00 6F 68 00 6F 6C 68 6F 4D 6C 6C 00 6A 67 FE00FE00FF6F *24 = 6A 6C 00 6F 6C 4C 5C 60 5B 68 4D 5A 5B 35 6E 68 68 6F 5B 56 68 5A 6A 00 FB6A81FF87FF *1 = 6F FC6A *26 = 00 4D 00 4D 64 63 6A 60 65 65 68 5B 00 00 60 00 6F 6C 69 6F 4F 68 6C 00 63 5B FE00FE00 *28 = 6F 6E 6A 69 00 64 57 6F 65 5C 60 4D 6F 5B 65 68 6F 6A 6D 00 57 5B 6F 60 6C 00 6A 6A FD6C81FF87FF *1 = 6F FC6C *29 = 00 63 00 4C 45 4C 69 5B 68 6D 6A 5B 00 6F 00 00 6F 6C 6C 6F 6F 6A 6C 00 6F 6C 00 00 60 FF00 *29 = 6A 6F 6E 67 6E 00 65 60 00 60 4D 6A 6F 00 5B 5E 68 6F 4F 4C 4F 4D 4C 6F 5A 6A 00 6C 6C FD6D81FF87FF *1 = 6F FC6D *25 = 00 63 00 4C 40 4D 6F 57 67 6F 6A 5E 00 00 5B 00 6F 4F 6F 6F 6E 6A 69 00 64 FE00 *1 = 5C FF00 *28 = 68 6C 6F 68 6C 00 6E 4C 00 5C 5E 56 4C 6F 60 6A 65 4D 4F 00 00 57 56 6F 64 50 00 6D FC6E81FF87FF *1 = 6F FC6E *25 = 00 6F 6F 4D 57 67 6D 5B 60 6C 63 5E 00 00 67 00 4C 69 6A 6F 6E 67 6E 00 65 FE00 *1 = 4D 1C006C686F6F4C69 *1 = 64 57005F466300 *1 = 5C 4C6F *1 = 00 4D6F6057 *1 = 63 6F00FB6F81FF87FFFB6F *29 = 00 5C 6F 4F 63 56 4F 64 65 5E 00 5B 00 6F 6F 00 6D 68 68 6C 6F 68 6C 00 6E 00 00 5C 5E 0000FC6F *23 = 4F 00 4C 69 00 5B 68 64 4F 00 57 5A 6F 00 69 35 5A 4A 5E 4D 40 5A 00 FB6F81FF87FFFB6F *23 = 00 4C 6F 4D 6F 5E 68 4C 69 5A 64 68 00 6F 5E 00 6F 6C 68 6F 6F 4C 69 FD00 *2 = 5F 46 0563676F686C6DFE6712636F685A566A6F67634C *1 = 63 565C6A50676A63FA *1 = 81 FF87FF006FFB *1 = 0F 654D4F6D5A634D6950646C006F6D *1 = 4F FC6F *1 = 4F FD00 *2 = 5B 68 1067686F6C6D6E6A6F65570068676900 *1 = 6F FE00 *8 = 6F 60 65 00 4C 6F 5C 6A FA0081FF87FF *1 = 6F FB00 *28 = 57 4F 67 5B 60 4D 63 67 50 6C 61 6E 6F 6C 6D 63 67 6F 68 6C 6D 67 67 00 00 6F 68 5A E468 *2 = 6D 6F FD0081FF87FF *1 = 6F FE00 *2 = 6F 6D E468E96C *11 = 6A 69 68 67 65 65 68 6D 6F 00 00 81FF87FF *12 = 6F 00 6F 6D 68 65 65 67 68 68 69 6A EA6CE600 *8 = 6F 6E 6A 64 61 68 6D 00 81FF87FF *8 = 6F 6D 68 61 64 6A 6E 6F E600E400 *6 = 6F 69 64 61 65 6A 81FF87FF *6 = 6A 65 61 64 69 6F E400 *1 = 2D ED2FFC2DFD00 *5 = 6E 69 63 61 67 81FF87FF *5 = 67 61 63 69 6E FD00E72DE800 *10 = 2F 2D 2F 00 00 6F 6A 64 5F 64 81FF87FF *10 = 64 5F 64 6A 6F 00 00 2F 2D 2F E800E600 *9 = 2D 00 00 6F 6C 67 5F 61 64 81FF89FF *9 = 64 61 5F 67 6C 6F 00 00 2D E600E600FF2F *7 = 00 6F 6C 67 5F 61 63 81FF89FF *9 = 63 61 5F 67 6C 6F 00 2F 2F E600E500 *9 = 2D 00 6F 6C 67 5F 60 61 64 81FF8BFF *9 = 64 61 60 5F 67 6C 6F 00 2D E500E500 *9 = 2D 00 6F 6C 67 5F 60 61 63 81FF8BFF *11 = 63 61 60 5F 67 6C 6F 00 2D 00 00 FE29 *6 = 00 29 00 29 00 29 FE00FE29 *6 = 00 29 00 29 00 29 FC00F000FA29FD00 *10 = 29 00 6F 6C 67 5F 60 61 61 64 81FF8DFF *21 = 64 61 61 60 5F 67 6C 6F 00 29 00 00 29 00 29 00 29 00 29 00 29 FE00 *9 = 29 00 29 00 29 00 29 00 29 FC00F000FA29FD00 *10 = 29 00 6F 6C 67 5E 5F 60 61 63 81FF8DFF *21 = 63 61 60 5F 5E 67 6C 6F 00 29 00 00 23 29 29 00 29 00 29 00 29 FE00 *9 = 23 29 29 00 29 00 29 00 29 FC00F000FA29FD00 *10 = 29 00 6F 6C 67 5C 5F 60 60 61 81FF8DFF *21 = 61 60 60 5F 5C 67 6C 6F 00 29 00 00 29 00 29 00 29 00 29 00 29 FE00 *9 = 29 00 29 00 29 00 29 00 29 FC00F000FA29FD00 *11 = 29 00 6F 6C 67 5B 5F 5F 60 61 65 81FF8FFF *13 = 65 61 60 5F 5F 5B 67 6C 6F 00 29 00 00 FE29 *1 = 00 FE29 *1 = 00 FE29 *1 = 00 FE29 *1 = 00 FE29 *1 = 00 FE29FE00F000FA29FD00 *11 = 29 00 6F 4A 67 5B 5F 5F 60 61 63 81FF8FFF *11 = 63 61 60 5F 5F 5B 67 4A 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 4A 67 5A 5F 5F 60 60 63 81FF8FFF *11 = 63 60 60 5F 5F 5A 67 4A 6F 00 29 E500F000FA29FD00 *6 = 29 00 6F 4A 67 5A FE5F *2 = 60 61 81FF8FFF *2 = 61 60 FE5F *6 = 5A 67 4A 6F 00 29 E500F000FA29FD00 *6 = 29 00 6F 4A 67 5A FE5F *2 = 60 61 81FF8FFF *2 = 61 60 FE5F *6 = 5A 67 4A 6F 00 29 E500F000FA29FD00 *6 = 29 00 6F 4A 67 5A FD5F *1 = 61 81FF8FFF *1 = 61 FD5F *6 = 5A 67 4A 6F 00 29 E500F000FA29FD00 *6 = 29 00 6F 49 67 5A FD5F *1 = 61 81FF8FFF *1 = 61 FD5F *6 = 5A 67 49 6F 00 29 E500F000FA29FD00 *6 = 29 00 6F 49 67 59 FD5F *1 = 61 81FF8FFF *1 = 61 FD5F *6 = 59 67 49 6F 00 29 E500F000FA29FD00 *6 = 29 00 6F 49 67 59 FD5F *1 = 61 81FF8FFF *1 = 61 FD5F *6 = 59 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 59 5F 5F 5E 5F 61 81FF8FFF *11 = 61 5F 5E 5F 5F 59 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5F 5F 5E 5F 61 81FF8FFF *11 = 61 5F 5E 5F 5F 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5F 5F 5E 5F 61 81FF8FFF *11 = 61 5F 5E 5F 5F 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5F 5F 5E 5F 61 81FF8FFF *11 = 61 5F 5E 5F 5F 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5E 5F 5E 5F 61 81FF8FFF *11 = 61 5F 5E 5F 5E 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5C 5F 5C 5F 61 81FF8FFF *11 = 61 5F 5C 5F 5C 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5C 5F 5C 5F 61 81FF8FFF *11 = 61 5F 5C 5F 5C 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5C 5F 5C 5F 61 81FF8FFF *11 = 61 5F 5C 5F 5C 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5B 5F 5C 5F 61 81FF8FFF *11 = 61 5F 5C 5F 5B 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5B 5F 5C 5F 61 81FF8FFF *11 = 61 5F 5C 5F 5B 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5B 5F 5C 5F 61 81FF8FFF *11 = 61 5F 5C 5F 5B 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5B 5F 5C 5F 61 81FF8FFF *11 = 61 5F 5C 5F 5B 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5B 5F 5C 5F 61 81FF8FFF *11 = 61 5F 5C 5F 5B 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5B 5F 5C 5F 61 81FF8FFF *11 = 61 5F 5C 5F 5B 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5B 5F 5C 5F 61 81FF8FFF *11 = 61 5F 5C 5F 5B 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5B 5F 5C 5F 61 81FF8FFF *11 = 61 5F 5C 5F 5B 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5C 5F 5C 5F 61 81FF8FFF *11 = 61 5F 5C 5F 5C 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5C 5F 5C 5F 61 81FF8FFF *11 = 61 5F 5C 5F 5C 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5E 5F 5C 5F 61 81FF8FFF *11 = 61 5F 5C 5F 5E 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5E 5F 5C 5F 61 81FF8FFF *11 = 61 5F 5C 5F 5E 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5F 5F 5C 5F 61 81FF8FFF *11 = 61 5F 5C 5F 5F 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5F 5F 5C 5F 61 81FF8FFF *11 = 61 5F 5E 5F 5F 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 5F 5F 5E 5F 61 81FF8FFF *11 = 61 5F 5E 5F 5F 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 60 5F 5E 5F 61 81FF8FFF *11 = 61 5F 5E 5F 60 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 60 5F 5E 5F 61 81FF8FFF *11 = 61 5F 5E 5F 60 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 60 5F 5E 5F 61 81FF8FFF *11 = 61 5F 5E 5F 60 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 60 5F 5E 5F 61 81FF8FFF *11 = 61 5F 5E 5F 60 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 57 60 5F 5E 5F 61 81FF8FFF *11 = 61 5F 5E 5F 60 57 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 59 60 5F 5E 5F 61 81FF8FFF *11 = 61 5F 5E 5F 60 59 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 5A 60 5F 5E 5F 61 81FF8FFF *11 = 61 5F 5E 5F 60 5A 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 5A 60 5F 5E 5F 61 81FF8FFF *11 = 61 5F 5E 5F 60 5A 67 49 6F 00 29 E500F000FA29FD00 *11 = 29 00 6F 49 67 5B 60 5F 5E 5F 61 81FF8FFF *11 = 61 5F 5E 5F 60 5B 67 49 6F 00 29

By the way, I'm not sure my tiny disassembler is working properly - I remember throwing it together, just to understand this lump. Here's the VB 6.0 source with the tiny disassembler, if it helps. Again, I'm not sure it's even correct, but it's close enough to verify that the lump actually does contain x86 code:
Spoiler

Option Explicit Public Function HighBlitInfo(b() As Byte, Size As Long) As String Dim TempStr As String Dim IP As Long Dim l As Long Dim Op As String Dim T As Long Dim Freq(256) As Long Dim ESI As Long Dim EDI As Long Dim Mode As Long Dim N As Long Dim HLen As Long Dim TempStr2 As String Dim OutBuf As String Dim OutPos As Long OutBuf = Space$(4096) OutPos = 1 AddToBuffer OutBuf, "HIGHBLIT Lump" & vbCrLf & "-------------" & vbCrLf & vbCrLf & "* Offset 0000H: Disassembly" & vbCrLf, OutPos Do l = 0 Select Case b(IP) Case 129 Select Case b(IP + 1) Case 198 Op = "ADD ESI, " & Hex2(b(IP + 5)) & Hex2(b(IP + 4)) & Hex2(b(IP + 3)) & Hex2(b(IP + 2)) & "H" ESI = ESI + b(IP + 5) * 16777216 + b(IP + 4) * 65536 + b(IP + 3) * 256 + b(IP + 2) l = 6 Case 199 Op = "ADD EDI, " & Hex2(b(IP + 5)) & Hex2(b(IP + 4)) & Hex2(b(IP + 3)) & Hex2(b(IP + 2)) & "H" EDI = EDI + b(IP + 5) * 16777216 + b(IP + 4) * 65536 + b(IP + 3) * 256 + b(IP + 2) l = 6 End Select Case 131 Select Case b(IP + 1) Case 198 Op = "ADD ESI, " & Hex2(b(IP + 3)) & "H" ESI = ESI + b(IP + 2) l = 3 Case 199 Op = "ADD EDI, " & Hex2(b(IP + 3)) & "H" EDI = EDI + b(IP + 2) l = 3 End Select Case 177 Op = "MOV CL, " & Hex2(b(IP + 1)) & "H" ESI = ESI + 4 * b(IP + 1) EDI = EDI + 4 * b(IP + 1) l = 2 Case 195 Op = "RET" l = 1 Case 243 If b(IP + 1) = 165 Then Op = "REP MOVSD" l = 2 End If End Select TempStr = Hex2(IP \ 256) & Hex2(IP And 255) & " " For T = 0 To l - 1 TempStr = TempStr & Hex2(b(T + IP)) & " " Next TempStr = TempStr & Space$(26 - Len(TempStr)) & Op Select Case Left$(Op, 9) Case "ADD ESI" TempStr = TempStr & Space$(50 - Len(TempStr)) & ";esi=" & ESI & " (" & Hex$(ESI) & "H)" & vbCrLf Case "ADD EDI" TempStr = TempStr & Space$(50 - Len(TempStr)) & ";edi=" & EDI & " (" & Hex$(EDI) & "H)" & vbCrLf Case Else TempStr = TempStr & vbCrLf End Select AddToBuffer OutBuf, TempStr, OutPos IP = IP + l If Op = "RET" Then Exit Do End If Loop Until IP >= Size - 6 AddToBuffer OutBuf, vbCrLf & vbCrLf & "* Offset 0863H: Header" & vbCrLf, OutPos For T = &H863 To &H868 AddToBuffer OutBuf, Hex2(b(T)) & " ", OutPos Next AddToBuffer OutBuf, vbCrLf & vbCrLf & vbCrLf & "* Offset 0869H: Data", OutPos T = &H869 l = 0 Do If T > Size - 1 Then Exit Do End If TempStr2 = vbCrLf Do Until b(T + 2) < &H40 TempStr2 = TempStr2 & Hex2(b(T)) & "" & Hex2(b(T + 1)) & "" T = T + 2 Loop TempStr2 = TempStr2 & Hex2(b(T)) & "" & Hex2(b(T + 1)) & " *" & (b(T + 2) + 1) & " = " ' & vbCrLf & " " l = b(T + 2) T = T + 3 TempStr2 = TempStr2 & Space$(74 - Len(TempStr2)) For N = T To T + l If N >= 8099 Then TempStr2 = TempStr2 & "?? " Else TempStr2 = TempStr2 & Hex2(b(N)) & " " End If Next AddToBuffer OutBuf, TempStr2, OutPos T = T + l + 1 Loop HighBlitInfo = Left$(OutBuf, OutPos - 1) End Function Private Function Hex2(N As Byte) As String If N < 16 Then Hex2 = "0" & Hex$(N) Else Hex2 = Hex$(N) End If End Function Public Sub AddToBuffer(ByRef Buf As String, AddText As String, ByRef Position As Long) Dim l As Long l = Len(AddText) If l <> 0 Then Do Until Position + l - 1 <= Len(Buf) Buf = Buf + Space$(32768) Loop Mid$(Buf, Position, l) = AddText Position = Position + l End If End Sub

Please don't ask me what I was trying to accomplish in the second part - I was trying to figure out what it was for, but I never finished. Someone please provide another set of eyes - I find this approach fascinating.

By the way, why can't I place a code tag inside a spoiler tag? When I do, the spoiler ends up being empty.

I had to put the code tags outside of the spoiler, which is awkward. That's why I edited my post 100 times :) Oh well.

Share this post


Link to post
Maes said:

Well, that's just the thing: there's always somebody or something "breaking the rules".

No, there isn't. There are sometimes people that break the rules either because they don't understand them or because they are lazy, and neither of those things are necessarily the fault of the rules in question. The distinction here is important because if you actually come to the point where you expect people not to follow the rules you've set in place, then you're just going to start tumbling down the slippery slope of overly defensive programming, which is just inexcusably bad design.

Jaxxoon R said:

Is that the same reason why in the Genesis games Sonic would sometimes get trapped in walls if you went too fast?

Maybe. Every game is different. It's essentially impossible to say for sure unless somebody can dive into the game's source code or decompile the byte code in the cartridge to figure it out for themselves.

kb1 said:

Can't remember, other than to say that yes, it's one of those two. If I had to guess, I'd say HIGHBLIT. I wrote a wad editor a few years back in VB 6.0, with full support for the alphas and beta, and I think I wrote a small disassembler for the lump. I'll see if I can get it working. If so, I'll post the algorithm I used along with some info. It about knocked my socks off when I realized that I was looking at x86 code in a lump!

That is fascinating! Maybe the code stuffed inside VIEWINFO and HIGHBLIT was meant to act as a sort of lightweight collection of video drivers for the game?

Share this post


Link to post
kb1 said:

I haven't seen anyone mention it, so, here goes: There's a lump in the 0.2 wad that contains per-line x86 code to paint that region inside the HUD. In other words, that HUD is not an overlay - there was custom code for each viewable line! And, it was loaded from the wad, so custom HUDs were within reach. That would wreak havoc with today's processors with small internal code cache, but, it probably helped the 386 quite a bit. Pretty crazy stuff.

Woah.

Share this post


Link to post
Linguica said:

WAD lumps that execute raw x86 code seems like an extremely bad idea. WAD viruses anyone?

Come on, man - it's elegant as hell :) Imagine having a differently-shaped HUD in every episode, or looking through a gun scope, or binoculars. It's done without conditional branching, so it's brutally fast. You can even avoid looping.

Back in the day I wrote some rendering code that would draw an entire line, then I'd dump a RET in the middle of it to control how long the line was (and, of course replace the code under the RET when the line was done. It was very fast, on my 486-50 :)

Of course, though, you're right. There was a time that people didn't do stupid shit like write viruses. It pisses me off to this day: "Hey, let's attack someone we don't even know, cause that would be cool." There's something wrong with a lot of people in the world...

fraggle said:

Woah.

Yeah - my thoughts exactly, when I found it. Carmack was serious.

Share this post


Link to post

Linguica said:
Makes me wonder if Carmack had anticipated y-sheared looking up and down really early on, and it wasn't something thought up later by the Raven guys.

I get the impression it was just "realistic" because when you walk you tend to look somewhat toward the floor to avoid stepping on anything dangerous or filthy. Maybe later they felt it wasn't worth it, perhaps because it caused some slight distortions or complications, or just to represent that the guy's head would move up sometimes, making the straight view the "average" viewpoint. If I'm guessing right and I had been there maybe I'd have suggested, "how about shearing the view a bit while walking and straightening it smoothly while shooting, being hit, dying or standing still?"

I haven't checked what the view height is in the alphas with the slight shearing, but in the released game the height is below the height of the face, so in a way it does give some impression that the view is "inclined".

kb1 said:
There was a time that people didn't do stupid shit like write viruses. It pisses me off to this day: "Hey, let's attack someone we don't even know, cause that would be cool." There's something wrong with a lot of people in the world...

Rather than just to be cool, a good deal of viruses are made as exploits to steal data, insert programs or disrupt a system, so it's not much different from waylaying or robbing strangers, which we have been doing since the dawn of history, ages before we had any electronic technology. They didn't do it before because they didn't know how yet or didn't have much to gain from it.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×