Demo 15 Problem

If you are new to OS Development, plan on spending some time here first before going into the other forums.

Moderator:Moderators

pathos
Moderator
Posts:97
Joined:Thu Jan 10, 2008 6:43 pm
Location:USA
Demo 15 Problem

Post by pathos » Fri Aug 14, 2009 11:29 pm

Well, I'm back after a very long hiatus.

I'm having a problem with the code in Demo 15, in both Bochs and Virutal PC 2007. I've traced it to the kkybrd_set_leds call. If I comment this out, the OS loads fine. However, if I hit a key, the panic screen comes out. If I don't comment it out, Bochs crashes and Virtual PC hangs up.

This is the exact code from the Demo -- I haven't fiddled with it in anyway. Any ideas?

[edit]
Note: Demo 14 crashes as well.

[edit x2]
The Bochs error message is "exception(): 3rd (10) exception with no resolution"

[edit x3]
I tried it on my laptop just to make sure it wasn't my computer, and the same thing occurs. I've also tried an older version of Bochs. My only thought is that it might be that I'm using Visual C++ 2008 and had to convert the project files. Is anyone else using 2008?

[edit x4]
If I hold down a key from the time Bochs begins emulating until the OS initilization process is done, there is no error. However, the keyboard doesn't work, but it does appear that the OS is loading completely.

[edit x5]
If I comment out the "_asm iretd" in the keyboard interrupt handler, the OS loads fine. I can then press any key and that letter will appear. However, any additional key presses result in an invalid opcode.

User avatar
Mike
Site Admin
Posts:465
Joined:Sat Oct 20, 2007 7:58 pm
Contact:

Re: Demo 15 Problem

Post by Mike » Sat Aug 15, 2009 9:51 pm

Hello,

I will perform some testing on the keyboard demo and let you know the results. Thanks for letting me know of the problem :D
Lead Programmer for BrokenThorn Entertainment, Co.
Website: http://www.brokenthorn.com
Email: webmaster@brokenthorn.com

pathos
Moderator
Posts:97
Joined:Thu Jan 10, 2008 6:43 pm
Location:USA

Re: Demo 15 Problem

Post by pathos » Sun Aug 16, 2009 2:03 am

Mike wrote:Hello,

I will perform some testing on the keyboard demo and let you know the results. Thanks for letting me know of the problem :D
Thanks. I have no idea what the issue could be, and I wish I knew how to explain it better.

[edit]
One thing I did is create a little test irq to set instead of the keyboard handler, and the problem persists. I believe it's with the iretd, which I guess means there's a problem with the stack.

ehenkes
Posts:34
Joined:Fri Jul 24, 2009 5:35 pm

Re: Demo 15 Problem

Post by ehenkes » Sun Aug 16, 2009 1:50 pm

I'm having a problem with the code in Demo 15
OS code should run with -Werror and -Wall. Otherwise, there are a lot of hidden problems. 8)

User avatar
Mike
Site Admin
Posts:465
Joined:Sat Oct 20, 2007 7:58 pm
Contact:

Re: Demo 15 Problem

Post by Mike » Sun Aug 16, 2009 2:36 pm

pathos wrote:One thing I did is create a little test irq to set instead of the keyboard handler, and the problem persists. I believe it's with the iretd, which I guess means there's a problem with the stack.
That is probable. A quick way to test is to make all the variables in the IRQ handler static, remove the stack related code, and change it to:

Code: Select all

_declspec (naked) void irq_handler () {

   // dont use
   // _asm add esp, 12
   // _asm pushad

   // C code here

   // _asm popad
   _asm iretd
}
Lead Programmer for BrokenThorn Entertainment, Co.
Website: http://www.brokenthorn.com
Email: webmaster@brokenthorn.com

pathos
Moderator
Posts:97
Joined:Thu Jan 10, 2008 6:43 pm
Location:USA

Re: Demo 15 Problem

Post by pathos » Sun Aug 16, 2009 6:28 pm

That code "works," as in, it doesn't cause a GPF.

[edit]
I threw this together:

Code: Select all

int code=0;
_declspec (naked) void test_irq()
{
// _asm add esp, 12
	_asm pushad
	_asm cli

	if (keyboard_ctrl_read_status() & keyboard_CTRL_STATS_MASK_OUT_BUF)
	{
		code = keyboard_enc_read_buf();

		if (!(code & 0x80))
		{
			_scancode = code;
		}
	}
	
	interruptdone(0);

	_asm sti
	_asm popad
	_asm iretd
}
It works just fine. I'm going to go through it now and add back other parts of the original keyboard handler to see what's causing the problem.

[edit x2]
Well, pretty much anything I add back to it causes either Bochs to crash or the OS to freeze.

pathos
Moderator
Posts:97
Joined:Thu Jan 10, 2008 6:43 pm
Location:USA

Re: Demo 15 Problem

Post by pathos » Tue Aug 18, 2009 6:00 pm

Well, I pretty much went through and pieced together the OS bit-by-bit. It works now, just fine. I'm not sure what was causing the error in the first place.

I do have one question though. In the keyboard irq you call "interruptdone(0);" Should that not be "interruptdone(1);"?

User avatar
Mike
Site Admin
Posts:465
Joined:Sat Oct 20, 2007 7:58 pm
Contact:

Re: Demo 15 Problem

Post by Mike » Wed Aug 19, 2009 12:54 am

pathos wrote:I do have one question though. In the keyboard irq you call "interruptdone(0);" Should that not be "interruptdone(1);"?
It should. They both result in the same thing, however, so it only matters for easier maintainability.
Lead Programmer for BrokenThorn Entertainment, Co.
Website: http://www.brokenthorn.com
Email: webmaster@brokenthorn.com

pathos
Moderator
Posts:97
Joined:Thu Jan 10, 2008 6:43 pm
Location:USA

Re: Demo 15 Problem

Post by pathos » Wed Aug 19, 2009 5:21 pm

I don't want to post a new topic for this, so I'll just add it here.

I found one more issue which, it's possible, I could have created myself while working, but I think it probably would pop up in your original code. In your get_cmd function, you have:

Code: Select all

if (BufChar)
{
	char c = keyboard_key_to_ascii(key);
	if (c != 0)
	{
		Putc(c);
		buf [i++] = c;
	}
}
This adds pretty much all key presses to the buffer, including things like caps lock. So if I type the command "cls" but had accidentally pressed caps lock twice before that, it will display "unknown command." I simply changed if (c != 0) to if (c != 0 && isprint(c)), which seemed to do the trick.

Insightsoft
Posts:63
Joined:Wed Jul 22, 2009 6:44 am

Re: Demo 15 Problem

Post by Insightsoft » Thu Oct 08, 2009 7:16 am

I'm experiencing something differently...

On first try:
1. I unzip the code
2. Open with VS2008 (it ask for upgrade)
3. Compile the code (no problem)
4. Call bochs and everything works fine

On second try:
1. Open the project
2. Without any change... compile the code (no problem)
3. Call bochs and it crash (on: main.cpp -> kkybrd_install(33);)


Something happened on upgrade of the project...
1. But, why it was ok on the first try (after the upgrade)?
2. Examining the changes reports, the only the project files is changed. (with a line telling
the new version of the IDE)

Does anybody know what is happening?
_____________
Think it, build it, bit by bit...

User avatar
Mike
Site Admin
Posts:465
Joined:Sat Oct 20, 2007 7:58 pm
Contact:

Re: Demo 15 Problem

Post by Mike » Thu Oct 08, 2009 4:41 pm

Hello,

When it crashes, please post the bochs error report (The last few lines and register dump please.)

Also, does it still crash after your clean and rebuild the project? (Menu->Build->Clean Solution, then Rebuild Solution.)
Lead Programmer for BrokenThorn Entertainment, Co.
Website: http://www.brokenthorn.com
Email: webmaster@brokenthorn.com

Insightsoft
Posts:63
Joined:Wed Jul 22, 2009 6:44 am

Re: Demo 15 Problem

Post by Insightsoft » Thu Oct 08, 2009 10:48 pm

Code: Select all

00011226759i[BIOS ] Booting from 0000:7c00
00014155106e[CPU0 ] fetch_raw_descriptor: GDT: index (ff57)1fea > limit (17)
00014155106e[CPU0 ] fetch_raw_descriptor: GDT: index (ff57)1fea > limit (17)
00014155106i[CPU0 ] CPU is in v8086 mode (active)
00014155106i[CPU0 ] CS.d_b = 16 bit
00014155106i[CPU0 ] SS.d_b = 16 bit
00014155106i[CPU0 ] EFER   = 0x00000000
00014155106i[CPU0 ] | RAX=00000000c0001e80  RBX=0000000000000000
00014155106i[CPU0 ] | RCX=0000000000000026  RDX=0000000000000060
00014155106i[CPU0 ] | RSP=0000000000000000  RBP=0000000000008fb8
00014155106i[CPU0 ] | RSI=00000000c00000ca  RDI=0000000000000b5a
00014155106i[CPU0 ] |  R8=0000000000000000   R9=0000000000000000
00014155106i[CPU0 ] | R10=0000000000000000  R11=0000000000000000
00014155106i[CPU0 ] | R12=0000000000000000  R13=0000000000000000
00014155106i[CPU0 ] | R14=0000000000000000  R15=0000000000000000
00014155106i[CPU0 ] | IOPL=0 id vip vif AC VM RF NT OF DF IF tf SF zf AF PF cf
00014155106i[CPU0 ] | SEG selector     base    limit G D
00014155106i[CPU0 ] | SEG sltr(index|ti|rpl)     base    limit G D
00014155106i[CPU0 ] |  CS:0000( 0001| 0|  3) 00000000 0000ffff 0 0
00014155106i[CPU0 ] |  DS:0400( 0002| 0|  3) 00004000 0000ffff 0 0
00014155106i[CPU0 ] |  SS:0ea0( 0002| 0|  3) 0000ea00 0000ffff 0 0
00014155106i[CPU0 ] |  ES:007a( 0002| 0|  3) 000007a0 0000ffff 0 0
00014155106i[CPU0 ] |  FS:3540( 0002| 0|  3) 00035400 0000ffff 0 0
00014155106i[CPU0 ] |  GS:0008( 0002| 0|  3) 00000080 0000ffff 0 0
00014155106i[CPU0 ] |  MSR_FS_BASE:0000000000035400
00014155106i[CPU0 ] |  MSR_GS_BASE:0000000000000080
00014155106i[CPU0 ] | RIP=000000000000007a (000000000000007a)
00014155106i[CPU0 ] | CR0=0xe0000011 CR2=0x000000000000007a
00014155106i[CPU0 ] | CR3=0x0009c000 CR4=0x00000000

00014155106i[CPU0 ] 0x000000000000007a>> add al, dh : 00F0
00014155106e[CPU0 ] exception(): 3rd (10) exception with no resolution, shutdown status is 00h, resetting

00014155106i[SYS  ] bx_pc_system_c::Reset(HARDWARE) called
00014155106i[CPU0 ] cpu hardware reset

yap...
_____________
Think it, build it, bit by bit...

User avatar
Mike
Site Admin
Posts:465
Joined:Sat Oct 20, 2007 7:58 pm
Contact:

Re: Demo 15 Problem

Post by Mike » Fri Oct 09, 2009 3:07 am

Hm, there are so many things wrong with that log its hard to pin point what the original problem is. (Probably IRQ handlers returning incorrectly, but that is a guess and a common problem.)

You might need to narrow down the problem even more. Also, comment out the keyboard handling code to check if that is really where the original problem is. Use the bochs debugger to single step the keyboard install routine if needed.

Also, please note that the series tutorials build off the last tutorial. Falling back to an older tutorial that works without error and re-implementing newer code might fix it. i.e., what was the last tutorial that works fine in all cases?
Lead Programmer for BrokenThorn Entertainment, Co.
Website: http://www.brokenthorn.com
Email: webmaster@brokenthorn.com

Insightsoft
Posts:63
Joined:Wed Jul 22, 2009 6:44 am

Re: Demo 15 Problem

Post by Insightsoft » Fri Oct 09, 2009 9:24 am

Code: Select all

...
	_asm nop                   ;just to freeze from here...
	_asm nop
	_asm nop

	kkybrd_install(33);																		//! install the keyboard to IR 33, uses IRQ 1

	flpydsk_set_working_drive(0);															//! set drive 0 as current drive

	flpydsk_install(38);																	//! install floppy disk to IR 38, uses IRQ 6
}

Code: Select all

I add this 3 NOP just to freeze the bochs at this address...
Then I used 'trace on' features... and, that is the dump!
  
(0).[10495261] [0x001005b4] 0008:00000000c00005b4 (unk. ctxt): nop                       ; 90
(0).[10495262] [0x001005b5] 0008:00000000c00005b5 (unk. ctxt): nop                       ; 90
(0).[10495263] [0x001005b6] 0008:00000000c00005b6 (unk. ctxt): nop                       ; 90

(0).[10495264] [0x001005b7] 0008:00000000c00005b7 (unk. ctxt): push 0x00000021           ; 6a21
(0).[10495265] [0x001005b9] 0008:00000000c00005b9 (unk. ctxt): call .+0x000016f2 (0xc0001cb0) ; e8f2160000				
(0).[10495266] [0x00101cb0] 0008:00000000c0001cb0 (unk. ctxt): push ebp                  ; 55						
(0).[10495267] [0x00101cb1] 0008:00000000c0001cb1 (unk. ctxt): mov ebp, esp              ; 8bec
(0).[10495268] [0x00101cb3] 0008:00000000c0001cb3 (unk. ctxt): push 0xc0001620           ; 68201600c0
(0).[10495269] [0x00101cb8] 0008:00000000c0001cb8 (unk. ctxt): mov eax, dword ptr ss:[ebp+0x8] ; 8b4508
(0).[10495270] [0x00101cbb] 0008:00000000c0001cbb (unk. ctxt): push eax                  ; 50
(0).[10495271] [0x00101cbc] 0008:00000000c0001cbc (unk. ctxt): call .+0x0000162f (0xc00032f0) ; e82f160000				
(0).[10495272] [0x001032f0] 0008:00000000c00032f0 (unk. ctxt): mov eax, dword ptr ss:[esp+0x8] ; 8b442408
(0).[10495273] [0x001032f4] 0008:00000000c00032f4 (unk. ctxt): mov ecx, dword ptr ss:[esp+0x4] ; 8b4c2404
(0).[10495274] [0x001032f8] 0008:00000000c00032f8 (unk. ctxt): push eax                  ; 50
(0).[10495275] [0x001032f9] 0008:00000000c00032f9 (unk. ctxt): push 0x00000008           ; 6a08
(0).[10495276] [0x001032fb] 0008:00000000c00032fb (unk. ctxt): push 0x0000008e           ; 688e000000
(0).[10495277] [0x00103300] 0008:00000000c0003300 (unk. ctxt): push ecx                  ; 51
(0).[10495278] [0x00103301] 0008:00000000c0003301 (unk. ctxt): call .+0x0000024a (0xc0003550) ; e84a020000				
(0).[10495279] [0x00103550] 0008:00000000c0003550 (unk. ctxt): mov ecx, dword ptr ss:[esp+0x4] ; 8b4c2404
(0).[10495280] [0x00103554] 0008:00000000c0003554 (unk. ctxt): cmp ecx, 0x00000100       ; 81f900010000
(0).[10495281] [0x0010355a] 0008:00000000c000355a (unk. ctxt): jnbe .+0x00000041 (0xc000359d) ; 7741
(0).[10495282] [0x0010355c] 0008:00000000c000355c (unk. ctxt): mov edx, dword ptr ss:[esp+0x10] ; 8b542410
(0).[10495283] [0x00103560] 0008:00000000c0003560 (unk. ctxt): xor eax, eax              ; 33c0
(0).[10495284] [0x00103562] 0008:00000000c0003562 (unk. ctxt): test edx, edx             ; 85d2
(0).[10495285] [0x00103564] 0008:00000000c0003564 (unk. ctxt): jz .+0x00000039 (0xc000359f) ; 7439
(0).[10495286] [0x00103566] 0008:00000000c0003566 (unk. ctxt): mov word ptr ds:[ecx*8+0xc0004400], dx ; 668914cd004400c0
(0).[10495287] [0x0010356e] 0008:00000000c000356e (unk. ctxt): shrd edx, eax, 0x10       ; 0facc210
(0).[10495288] [0x00103572] 0008:00000000c0003572 (unk. ctxt): shr eax, 0x10             ; c1e810
(0).[10495289] [0x00103575] 0008:00000000c0003575 (unk. ctxt): mov al, byte ptr ss:[esp+0x8] ; 8a442408
(0).[10495290] [0x00103579] 0008:00000000c0003579 (unk. ctxt): mov word ptr ds:[ecx*8+0xc0004406], dx ; 668914cd064400c0
(0).[10495291] [0x00103581] 0008:00000000c0003581 (unk. ctxt): mov dx, word ptr ss:[esp+0xc] ; 668b54240c
(0).[10495292] [0x00103586] 0008:00000000c0003586 (unk. ctxt): mov byte ptr ds:[ecx*8+0xc0004404], 0x00 ; c604cd044400c000
(0).[10495293] [0x0010358e] 0008:00000000c000358e (unk. ctxt): mov byte ptr ds:[ecx*8+0xc0004405], al ; 8804cd054400c0
(0).[10495294] [0x00103595] 0008:00000000c0003595 (unk. ctxt): mov word ptr ds:[ecx*8+0xc0004402], dx ; 668914cd024400c0
(0).[10495295] [0x0010359d] 0008:00000000c000359d (unk. ctxt): xor eax, eax              ; 33c0
(0).[10495296] [0x0010359f] 0008:00000000c000359f (unk. ctxt): ret                       ; c3
(0).[10495297] [0x00103306] 0008:00000000c0003306 (unk. ctxt): add esp, 0x00000010       ; 83c410
(0).[10495298] [0x00103309] 0008:00000000c0003309 (unk. ctxt): ret                       ; c3
(0).[10495299] [0x00101cc1] 0008:00000000c0001cc1 (unk. ctxt): add esp, 0x00000008       ; 83c408
(0).[10495300] [0x00101cc4] 0008:00000000c0001cc4 (unk. ctxt): mov byte ptr ds:0xc00043c7, 0x01 ; c605c74300c001
(0).[10495301] [0x00101ccb] 0008:00000000c0001ccb (unk. ctxt): mov byte ptr ds:0xc00043c1, 0x00 ; c605c14300c000
(0).[10495302] [0x00101cd2] 0008:00000000c0001cd2 (unk. ctxt): mov byte ptr ds:0xc00043c3, 0x00 ; c605c34300c000
(0).[10495303] [0x00101cd9] 0008:00000000c0001cd9 (unk. ctxt): mov cl, byte ptr ds:0xc00043c3 ; 8a0dc34300c0
(0).[10495304] [0x00101cdf] 0008:00000000c0001cdf (unk. ctxt): mov byte ptr ds:0xc00043c6, cl ; 880dc64300c0
(0).[10495305] [0x00101ce5] 0008:00000000c0001ce5 (unk. ctxt): mov dl, byte ptr ds:0xc00043c6 ; 8a15c64300c0
(0).[10495306] [0x00101ceb] 0008:00000000c0001ceb (unk. ctxt): mov byte ptr ds:0xc00043c5, dl ; 8815c54300c0
(0).[10495307] [0x00101cf1] 0008:00000000c0001cf1 (unk. ctxt): push 0x00000000           ; 6a00
(0).[10495308] [0x00101cf3] 0008:00000000c0001cf3 (unk. ctxt): push 0x00000000           ; 6a00
(0).[10495309] [0x00101cf5] 0008:00000000c0001cf5 (unk. ctxt): push 0x00000000           ; 6a00
(0).[10495310] [0x00101cf7] 0008:00000000c0001cf7 (unk. ctxt): call .+0xfffffc44 (0xc0001940) ; e844fcffff				
(0).[10495311] [0x00101940] 0008:00000000c0001940 (unk. ctxt): push ebp                  ; 55
(0).[10495312] [0x00101941] 0008:00000000c0001941 (unk. ctxt): mov ebp, esp              ; 8bec
(0).[10495313] [0x00101943] 0008:00000000c0001943 (unk. ctxt): sub esp, 0x00000010       ; 83ec10
(0).[10495314] [0x00101946] 0008:00000000c0001946 (unk. ctxt): mov byte ptr ss:[ebp+0xffffffff], 0x00 ; c645ff00
(0).[10495315] [0x0010194a] 0008:00000000c000194a (unk. ctxt): movzx eax, byte ptr ss:[ebp+0x10] ; 0fb64510
(0).[10495316] [0x0010194e] 0008:00000000c000194e (unk. ctxt): test eax, eax             ; 85c0
(0).[10495317] [0x00101950] 0008:00000000c0001950 (unk. ctxt): jz .+0x0000000c (0xc000195e) ; 740c
(0).[10495318] [0x0010195e] 0008:00000000c000195e (unk. ctxt): movzx edx, byte ptr ss:[ebp+0xffffffff] ; 0fb655ff
(0).[10495319] [0x00101962] 0008:00000000c0001962 (unk. ctxt): and edx, 0x00000001       ; 83e201
(0).[10495320] [0x00101965] 0008:00000000c0001965 (unk. ctxt): mov dword ptr ss:[ebp+0xfffffff8], edx ; 8955f8
(0).[10495321] [0x00101968] 0008:00000000c0001968 (unk. ctxt): mov al, byte ptr ss:[ebp+0xfffffff8] ; 8a45f8
(0).[10495322] [0x0010196b] 0008:00000000c000196b (unk. ctxt): mov byte ptr ss:[ebp+0xffffffff], al ; 8845ff
(0).[10495323] [0x0010196e] 0008:00000000c000196e (unk. ctxt): movzx ecx, byte ptr ss:[ebp+0x8] ; 0fb64d08
(0).[10495324] [0x00101972] 0008:00000000c0001972 (unk. ctxt): test ecx, ecx             ; 85c9
(0).[10495325] [0x00101974] 0008:00000000c0001974 (unk. ctxt): jz .+0x0000000c (0xc0001982) ; 740c
(0).[10495326] [0x00101982] 0008:00000000c0001982 (unk. ctxt): movzx eax, byte ptr ss:[ebp+0x8] ; 0fb64508
(0).[10495327] [0x00101986] 0008:00000000c0001986 (unk. ctxt): and eax, 0x00000002       ; 83e002
(0).[10495328] [0x00101989] 0008:00000000c0001989 (unk. ctxt): mov dword ptr ss:[ebp+0xfffffff4], eax ; 8945f4
(0).[10495329] [0x0010198c] 0008:00000000c000198c (unk. ctxt): mov cl, byte ptr ss:[ebp+0xfffffff4] ; 8a4df4
(0).[10495330] [0x0010198f] 0008:00000000c000198f (unk. ctxt): mov byte ptr ss:[ebp+0xffffffff], cl ; 884dff
(0).[10495331] [0x00101992] 0008:00000000c0001992 (unk. ctxt): movzx edx, byte ptr ss:[ebp+0xc] ; 0fb6550c
(0).[10495332] [0x00101996] 0008:00000000c0001996 (unk. ctxt): test edx, edx             ; 85d2
(0).[10495333] [0x00101998] 0008:00000000c0001998 (unk. ctxt): jz .+0x0000000c (0xc00019a6) ; 740c
(0).[10495334] [0x001019a6] 0008:00000000c00019a6 (unk. ctxt): movzx ecx, byte ptr ss:[ebp+0x8] ; 0fb64d08
(0).[10495335] [0x001019aa] 0008:00000000c00019aa (unk. ctxt): and ecx, 0x00000004       ; 83e104
(0).[10495336] [0x001019ad] 0008:00000000c00019ad (unk. ctxt): mov dword ptr ss:[ebp+0xfffffff0], ecx ; 894df0
(0).[10495337] [0x001019b0] 0008:00000000c00019b0 (unk. ctxt): mov dl, byte ptr ss:[ebp+0xfffffff0] ; 8a55f0
(0).[10495338] [0x001019b3] 0008:00000000c00019b3 (unk. ctxt): mov byte ptr ss:[ebp+0xffffffff], dl ; 8855ff
(0).[10495339] [0x001019b6] 0008:00000000c00019b6 (unk. ctxt): push 0x000000ed           ; 68ed000000
(0).[10495340] [0x001019bb] 0008:00000000c00019bb (unk. ctxt): call .+0xfffffc30 (0xc00015f0) ; e830fcffff
(0).[10495341] [0x001015f0] 0008:00000000c00015f0 (unk. ctxt): push ebp                  ; 55
(0).[10495342] [0x001015f1] 0008:00000000c00015f1 (unk. ctxt): mov ebp, esp              ; 8bec
(0).[10495343] [0x001015f3] 0008:00000000c00015f3 (unk. ctxt): mov eax, 0x00000001       ; b801000000
(0).[10495344] [0x001015f8] 0008:00000000c00015f8 (unk. ctxt): test eax, eax             ; 85c0
(0).[10495345] [0x001015fa] 0008:00000000c00015fa (unk. ctxt): jz .+0x00000011 (0xc000160d) ; 7411
(0).[10495346] [0x001015fc] 0008:00000000c00015fc (unk. ctxt): call .+0xffffff9f (0xc00015a0) ; e89fffffff				
(0).[10495347] [0x001015a0] 0008:00000000c00015a0 (unk. ctxt): push ebp                  ; 55
(0).[10495348] [0x001015a1] 0008:00000000c00015a1 (unk. ctxt): mov ebp, esp              ; 8bec
(0).[10495349] [0x001015a3] 0008:00000000c00015a3 (unk. ctxt): push 0x00000064           ; 6a64
(0).[10495350] [0x001015a5] 0008:00000000c00015a5 (unk. ctxt): call .+0x00001d06 (0xc00032b0) ; e8061d0000
(0).[10495351] [0x001032b0] 0008:00000000c00032b0 (unk. ctxt): mov dx, word ptr ss:[esp+0x4] ; 668b542404
(0).[10495352] [0x001032b5] 0008:00000000c00032b5 (unk. ctxt): in al, dx                 ; ec
(0).[10495353] [0x001032b6] 0008:00000000c00032b6 (unk. ctxt): mov byte ptr ss:[esp+0x4], al ; 88442404
(0).[10495354] [0x001032ba] 0008:00000000c00032ba (unk. ctxt): mov al, byte ptr ss:[esp+0x4] ; 8a442404
(0).[10495355] [0x001032be] 0008:00000000c00032be (unk. ctxt): ret                       ; c3
(0).[10495356] [0x001015aa] 0008:00000000c00015aa (unk. ctxt): add esp, 0x00000004       ; 83c404
(0).[10495357] [0x001015ad] 0008:00000000c00015ad (unk. ctxt): pop ebp                   ; 5d
(0).[10495358] [0x001015ae] 0008:00000000c00015ae (unk. ctxt): ret                       ; c3
(0).[10495359] [0x00101601] 0008:00000000c0001601 (unk. ctxt): movzx ecx, al             ; 0fb6c8
(0).[10495360] [0x00101604] 0008:00000000c0001604 (unk. ctxt): and ecx, 0x00000002       ; 83e102
(0).[10495361] [0x00101607] 0008:00000000c0001607 (unk. ctxt): jnz .+0x00000002 (0xc000160b) ; 7502
(0).[10495362] [0x00101609] 0008:00000000c0001609 (unk. ctxt): jmp .+0x00000002 (0xc000160d) ; eb02
(0).[10495363] [0x0010160d] 0008:00000000c000160d (unk. ctxt): movzx edx, byte ptr ss:[ebp+0x8] ; 0fb65508
(0).[10495364] [0x00101611] 0008:00000000c0001611 (unk. ctxt): push edx                  ; 52
(0).[10495365] [0x00101612] 0008:00000000c0001612 (unk. ctxt): push 0x00000060           ; 6a60
(0).[10495366] [0x00101614] 0008:00000000c0001614 (unk. ctxt): call .+0x00001ca7 (0xc00032c0) ; e8a71c0000
(0).[10495367] [0x001032c0] 0008:00000000c00032c0 (unk. ctxt): mov al, byte ptr ss:[esp+0x8] ; 8a442408
(0).[10495368] [0x001032c4] 0008:00000000c00032c4 (unk. ctxt): mov dx, word ptr ss:[esp+0x4] ; 668b542404
(0).[10495369] [0x001032c9] 0008:00000000c00032c9 (unk. ctxt): out dx, al                ; ee
(0).[10495370] [0x001032ca] 0008:00000000c00032ca (unk. ctxt): ret                       ; c3
(0).[10495371] [0x00101619] 0008:00000000c0001619 (unk. ctxt): add esp, 0x00000008       ; 83c408
(0).[10495372] [0x0010161c] 0008:00000000c000161c (unk. ctxt): pop ebp                   ; 5d
(0).[10495373] [0x0010161d] 0008:00000000c000161d (unk. ctxt): ret                       ; c3
(0).[10495374] [0x001019c0] 0008:00000000c00019c0 (unk. ctxt): add esp, 0x00000004       ; 83c404
(0).[10495375] [0x001019c3] 0008:00000000c00019c3 (unk. ctxt): movzx eax, byte ptr ss:[ebp+0xffffffff] ; 0fb645ff
(0).[10495376] [0x001019c7] 0008:00000000c00019c7 (unk. ctxt): push eax                  ; 50
(0).[10495377] [0x001019c8] 0008:00000000c00019c8 (unk. ctxt): call .+0xfffffc23 (0xc00015f0) ; e823fcffff
(0).[10495378] [0x001015f0] 0008:00000000c00015f0 (unk. ctxt): push ebp                  ; 55
(0).[10495379] [0x001015f1] 0008:00000000c00015f1 (unk. ctxt): mov ebp, esp              ; 8bec
(0).[10495380] [0x001015f3] 0008:00000000c00015f3 (unk. ctxt): mov eax, 0x00000001       ; b801000000
(0).[10495381] [0x001015f8] 0008:00000000c00015f8 (unk. ctxt): test eax, eax             ; 85c0
(0).[10495382] [0x001015fa] 0008:00000000c00015fa (unk. ctxt): jz .+0x00000011 (0xc000160d) ; 7411
(0).[10495383] [0x001015fc] 0008:00000000c00015fc (unk. ctxt): call .+0xffffff9f (0xc00015a0) ; e89fffffff
(0).[10495384] [0x001015a0] 0008:00000000c00015a0 (unk. ctxt): push ebp                  ; 55
(0).[10495385] [0x001015a1] 0008:00000000c00015a1 (unk. ctxt): mov ebp, esp              ; 8bec
(0).[10495386] [0x001015a3] 0008:00000000c00015a3 (unk. ctxt): push 0x00000064           ; 6a64
(0).[10495387] [0x001015a5] 0008:00000000c00015a5 (unk. ctxt): call .+0x00001d06 (0xc00032b0) ; e8061d0000
(0).[10495388] [0x001032b0] 0008:00000000c00032b0 (unk. ctxt): mov dx, word ptr ss:[esp+0x4] ; 668b542404
(0).[10495389] [0x001032b5] 0008:00000000c00032b5 (unk. ctxt): in al, dx                 ; ec
(0).[10495390] [0x001032b6] 0008:00000000c00032b6 (unk. ctxt): mov byte ptr ss:[esp+0x4], al ; 88442404
(0).[10495391] [0x001032ba] 0008:00000000c00032ba (unk. ctxt): mov al, byte ptr ss:[esp+0x4] ; 8a442404
(0).[10495392] [0x001032be] 0008:00000000c00032be (unk. ctxt): ret                       ; c3
(0).[10495393] [0x001015aa] 0008:00000000c00015aa (unk. ctxt): add esp, 0x00000004       ; 83c404
(0).[10495394] [0x001015ad] 0008:00000000c00015ad (unk. ctxt): pop ebp                   ; 5d
(0).[10495395] [0x001015ae] 0008:00000000c00015ae (unk. ctxt): ret                       ; c3
(0).[10495396] [0x00101601] 0008:00000000c0001601 (unk. ctxt): movzx ecx, al             ; 0fb6c8
(0).[10495397] [0x00101604] 0008:00000000c0001604 (unk. ctxt): and ecx, 0x00000002       ; 83e102
(0).[10495398] [0x00101607] 0008:00000000c0001607 (unk. ctxt): jnz .+0x00000002 (0xc000160b) ; 7502
(0).[10495399] [0x00101609] 0008:00000000c0001609 (unk. ctxt): jmp .+0x00000002 (0xc000160d) ; eb02
(0).[10495400] [0x0010160d] 0008:00000000c000160d (unk. ctxt): movzx edx, byte ptr ss:[ebp+0x8] ; 0fb65508
(0).[10495401] [0x00101611] 0008:00000000c0001611 (unk. ctxt): push edx                  ; 52
(0).[10495402] [0x00101612] 0008:00000000c0001612 (unk. ctxt): push 0x00000060           ; 6a60
(0).[10495403] [0x00101614] 0008:00000000c0001614 (unk. ctxt): call .+0x00001ca7 (0xc00032c0) ; e8a71c0000
(0).[10495404] [0x001032c0] 0008:00000000c00032c0 (unk. ctxt): mov al, byte ptr ss:[esp+0x8] ; 8a442408
(0).[10495405] [0x001032c4] 0008:00000000c00032c4 (unk. ctxt): mov dx, word ptr ss:[esp+0x4] ; 668b542404
(0).[10495406] [0x001032c9] 0008:00000000c00032c9 (unk. ctxt): out dx, al                ; ee
(0).[10495407] [0x001032ca] 0008:00000000c00032ca (unk. ctxt): ret                       ; c3
(0).[10495408] [0x00101619] 0008:00000000c0001619 (unk. ctxt): add esp, 0x00000008       ; 83c408
(0).[10495409] [0x0010161c] 0008:00000000c000161c (unk. ctxt): pop ebp                   ; 5d
(0).[10495410] [0x0010161d] 0008:00000000c000161d (unk. ctxt): ret                       ; c3
(0).[10495411] [0x001019cd] 0008:00000000c00019cd (unk. ctxt): add esp, 0x00000004       ; 83c404
(0).[10495412] [0x001019d0] 0008:00000000c00019d0 (unk. ctxt): mov esp, ebp              ; 8be5
(0).[10495413] [0x001019d2] 0008:00000000c00019d2 (unk. ctxt): pop ebp                   ; 5d
(0).[10495414] [0x001019d3] 0008:00000000c00019d3 (unk. ctxt): ret                       ; c3
(0).[10495415] [0x00101cfc] 0008:00000000c0001cfc (unk. ctxt): add esp, 0x0000000c       ; 83c40c
(0).[10495416] [0x00101cff] 0008:00000000c0001cff (unk. ctxt): mov byte ptr ds:0xc00043c0, 0x00 ; c605c04300c000
(0).[10495417] [0x00101d06] 0008:00000000c0001d06 (unk. ctxt): mov al, byte ptr ds:0xc00043c0 ; a0c04300c0
(0).[10495418] [0x00101d0b] 0008:00000000c0001d0b (unk. ctxt): mov byte ptr ds:0xc00043c2, al ; a2c24300c0
(0).[10495419] [0x00101d10] 0008:00000000c0001d10 (unk. ctxt): mov cl, byte ptr ds:0xc00043c2 ; 8a0dc24300c0
(0).[10495420] [0x00101d16] 0008:00000000c0001d16 (unk. ctxt): mov byte ptr ds:0xc00043c4, cl ; 880dc44300c0
(0).[10495421] [0x00101d1c] 0008:00000000c0001d1c (unk. ctxt): pop ebp                   ; 5d
(0).[10495422] [0x00101d1d] 0008:00000000c0001d1d (unk. ctxt): ret                       ; c3
(0).[10495423] [0x001005be] 0008:00000000c00005be (unk. ctxt): push 0x00000000           ; 6a00
(0).[10495424] [0x001005c0] 0008:00000000c00005c0 (unk. ctxt): call .+0x0000210b (0xc00026d0) ; e80b210000
(0).[10495425] [0x001026d0] 0008:00000000c00026d0 (unk. ctxt): mov al, byte ptr ss:[esp+0x4] ; 8a442404
(0).[10495426] [0x001026d4] 0008:00000000c00026d4 (unk. ctxt): cmp al, 0x04              ; 3c04
(0).[10495427] [0x001026d6] 0008:00000000c00026d6 (unk. ctxt): jnb .+0x00000005 (0xc00026dd) ; 7305
(0).[10495428] [0x001026d8] 0008:00000000c00026d8 (unk. ctxt): mov byte ptr ds:0xc00043d0, al ; a2d04300c0
(0).[10495429] [0x001026dd] 0008:00000000c00026dd (unk. ctxt): ret                       ; c3
(0).[10495430] [0x001005c5] 0008:00000000c00005c5 (unk. ctxt): add esp, 0x00000008       ; 83c408
(0).[10495431] [0x001005c8] 0008:00000000c00005c8 (unk. ctxt): pop edi                   ; 5f
(0).[10495432] [0x001005c9] 0008:00000000c00005c9 (unk. ctxt): pop esi                   ; 5e
(0).[10495433] [0x001005ca] 0008:00000000c00005ca (unk. ctxt): mov dword ptr ss:[esp+0x4], 0x00000026 ; c744240426000000
(0).[10495434] [0x001005d2] 0008:00000000c00005d2 (unk. ctxt): jmp .+0x000020b9 (0xc0002690) ; e9b9200000
(0).[10495435] [0x00102690] 0008:00000000c0002690 (unk. ctxt): mov eax, dword ptr ss:[esp+0x4] ; 8b442404
(0).[10495436] [0x00102694] 0008:00000000c0002694 (unk. ctxt): push 0xc0001e90           ; 68901e00c0
(0).[10495437] [0x00102699] 0008:00000000c0002699 (unk. ctxt): push eax                  ; 50
(0).[10495438] [0x0010269a] 0008:00000000c000269a (unk. ctxt): call .+0x00000c51 (0xc00032f0) ; e8510c0000
(0).[10495439] [0x001032f0] 0008:00000000c00032f0 (unk. ctxt): mov eax, dword ptr ss:[esp+0x8] ; 8b442408
(0).[10495440] [0x001032f4] 0008:00000000c00032f4 (unk. ctxt): mov ecx, dword ptr ss:[esp+0x4] ; 8b4c2404
(0).[10495441] [0x001032f8] 0008:00000000c00032f8 (unk. ctxt): push eax                  ; 50
(0).[10495442] [0x001032f9] 0008:00000000c00032f9 (unk. ctxt): push 0x00000008           ; 6a08
(0).[10495443] [0x001032fb] 0008:00000000c00032fb (unk. ctxt): push 0x0000008e           ; 688e000000
(0).[10495444] [0x00103300] 0008:00000000c0003300 (unk. ctxt): push ecx                  ; 51
(0).[10495445] [0x00103301] 0008:00000000c0003301 (unk. ctxt): call .+0x0000024a (0xc0003550) ; e84a020000
(0).[10495446] [0x00103550] 0008:00000000c0003550 (unk. ctxt): mov ecx, dword ptr ss:[esp+0x4] ; 8b4c2404
(0).[10495447] [0x00103554] 0008:00000000c0003554 (unk. ctxt): cmp ecx, 0x00000100       ; 81f900010000
(0).[10495448] [0x0010355a] 0008:00000000c000355a (unk. ctxt): jnbe .+0x00000041 (0xc000359d) ; 7741
(0).[10495449] [0x0010355c] 0008:00000000c000355c (unk. ctxt): mov edx, dword ptr ss:[esp+0x10] ; 8b542410
(0).[10495450] [0x00103560] 0008:00000000c0003560 (unk. ctxt): xor eax, eax              ; 33c0
(0).[10495451] [0x00103562] 0008:00000000c0003562 (unk. ctxt): test edx, edx             ; 85d2
(0).[10495452] [0x00103564] 0008:00000000c0003564 (unk. ctxt): jz .+0x00000039 (0xc000359f) ; 7439
(0).[10495453] [0x00103566] 0008:00000000c0003566 (unk. ctxt): mov word ptr ds:[ecx*8+0xc0004400], dx ; 668914cd004400c0
(0).[10495454] [0x0010356e] 0008:00000000c000356e (unk. ctxt): shrd edx, eax, 0x10       ; 0facc210
(0).[10495455] [0x00103572] 0008:00000000c0003572 (unk. ctxt): shr eax, 0x10             ; c1e810
(0).[10495456] [0x00103575] 0008:00000000c0003575 (unk. ctxt): mov al, byte ptr ss:[esp+0x8] ; 8a442408
(0).[10495457] [0x00103579] 0008:00000000c0003579 (unk. ctxt): mov word ptr ds:[ecx*8+0xc0004406], dx ; 668914cd064400c0
(0).[10495458] [0x00103581] 0008:00000000c0003581 (unk. ctxt): mov dx, word ptr ss:[esp+0xc] ; 668b54240c
(0).[10495459] [0x00103586] 0008:00000000c0003586 (unk. ctxt): mov byte ptr ds:[ecx*8+0xc0004404], 0x00 ; c604cd044400c000
(0).[10495460] [0x0010358e] 0008:00000000c000358e (unk. ctxt): mov byte ptr ds:[ecx*8+0xc0004405], al ; 8804cd054400c0
(0).[10495461] [0x00103595] 0008:00000000c0003595 (unk. ctxt): mov word ptr ds:[ecx*8+0xc0004402], dx ; 668914cd024400c0
(0).[10495462] [0x0010359d] 0008:00000000c000359d (unk. ctxt): xor eax, eax              ; 33c0
(0).[10495463] [0x0010359f] 0008:00000000c000359f (unk. ctxt): ret                       ; c3
(0).[10495464] [0x00103306] 0008:00000000c0003306 (unk. ctxt): add esp, 0x00000010       ; 83c410
(0).[10495465] [0x00103309] 0008:00000000c0003309 (unk. ctxt): ret                       ; c3
(0).[10495466] [0x0010269f] 0008:00000000c000269f (unk. ctxt): call .+0xfffff67c (0xc0001d20) ; e87cf6ffff
(0).[10495467] [0x00101d20] 0008:00000000c0001d20 (unk. ctxt): push 0x00000006           ; 6a06
(0).[10495468] [0x00101d22] 0008:00000000c0001d22 (unk. ctxt): push 0x0000000a           ; 6a0a
(0).[10495469] [0x00101d24] 0008:00000000c0001d24 (unk. ctxt): call .+0x00001597 (0xc00032c0) ; e897150000
(0).[10495470] [0x001032c0] 0008:00000000c00032c0 (unk. ctxt): mov al, byte ptr ss:[esp+0x8] ; 8a442408
(0).[10495471] [0x001032c4] 0008:00000000c00032c4 (unk. ctxt): mov dx, word ptr ss:[esp+0x4] ; 668b542404
(0).[10495472] [0x001032c9] 0008:00000000c00032c9 (unk. ctxt): out dx, al                ; ee
(0).[10495473] [0x001032ca] 0008:00000000c00032ca (unk. ctxt): ret                       ; c3
(0).[10495474] [0x00101d29] 0008:00000000c0001d29 (unk. ctxt): push 0x000000ff           ; 68ff000000
(0).[10495475] [0x00101d2e] 0008:00000000c0001d2e (unk. ctxt): push 0x000000d8           ; 68d8000000
(0).[10495476] [0x00101d33] 0008:00000000c0001d33 (unk. ctxt): call .+0x00001588 (0xc00032c0) ; e888150000
(0).[10495477] [0x001032c0] 0008:00000000c00032c0 (unk. ctxt): mov al, byte ptr ss:[esp+0x8] ; 8a442408
(0).[10495478] [0x001032c4] 0008:00000000c00032c4 (unk. ctxt): mov dx, word ptr ss:[esp+0x4] ; 668b542404
(0).[10495479] [0x001032c9] 0008:00000000c00032c9 (unk. ctxt): out dx, al                ; ee
(0).[10495480] [0x001032ca] 0008:00000000c00032ca (unk. ctxt): ret                       ; c3
(0).[10495481] [0x00101d38] 0008:00000000c0001d38 (unk. ctxt): push 0x00000000           ; 6a00
(0).[10495482] [0x00101d3a] 0008:00000000c0001d3a (unk. ctxt): push 0x00000004           ; 6a04
(0).[10495483] [0x00101d3c] 0008:00000000c0001d3c (unk. ctxt): call .+0x0000157f (0xc00032c0) ; e87f150000
(0).[10495484] [0x001032c0] 0008:00000000c00032c0 (unk. ctxt): mov al, byte ptr ss:[esp+0x8] ; 8a442408
(0).[10495485] [0x001032c4] 0008:00000000c00032c4 (unk. ctxt): mov dx, word ptr ss:[esp+0x4] ; 668b542404
(0).[10495486] [0x001032c9] 0008:00000000c00032c9 (unk. ctxt): out dx, al                ; ee
(0).[10495487] [0x001032ca] 0008:00000000c00032ca (unk. ctxt): ret                       ; c3
(0).[10495488] [0x00101d41] 0008:00000000c0001d41 (unk. ctxt): push 0x00000010           ; 6a10
(0).[10495489] [0x00101d43] 0008:00000000c0001d43 (unk. ctxt): push 0x00000004           ; 6a04
(0).[10495490] [0x00101d45] 0008:00000000c0001d45 (unk. ctxt): call .+0x00001576 (0xc00032c0) ; e876150000
(0).[10495491] [0x001032c0] 0008:00000000c00032c0 (unk. ctxt): mov al, byte ptr ss:[esp+0x8] ; 8a442408
(0).[10495492] [0x001032c4] 0008:00000000c00032c4 (unk. ctxt): mov dx, word ptr ss:[esp+0x4] ; 668b542404
(0).[10495493] [0x001032c9] 0008:00000000c00032c9 (unk. ctxt): out dx, al                ; ee
(0).[10495494] [0x001032ca] 0008:00000000c00032ca (unk. ctxt): ret                       ; c3
(0).[10495495] [0x00101d4a] 0008:00000000c0001d4a (unk. ctxt): push 0x000000ff           ; 68ff000000
(0).[10495496] [0x00101d4f] 0008:00000000c0001d4f (unk. ctxt): push 0x000000d8           ; 68d8000000
(0).[10495497] [0x00101d54] 0008:00000000c0001d54 (unk. ctxt): call .+0x00001567 (0xc00032c0) ; e867150000
(0).[10495498] [0x001032c0] 0008:00000000c00032c0 (unk. ctxt): mov al, byte ptr ss:[esp+0x8] ; 8a442408
(0).[10495499] [0x001032c4] 0008:00000000c00032c4 (unk. ctxt): mov dx, word ptr ss:[esp+0x4] ; 668b542404
CPU 0: Interrupt 0x21 occured (error_code=0x0000)
(0).[10495500] [0x001032c9] 0008:00000000c00032c9 (unk. ctxt): out dx, al                ; ee
(0).[10495501] [0x00101621] 0008:00000000c0001621 (unk. ctxt): mov ebp, esp              ; 8bec
(0).[10495502] [0x00101623] 0008:00000000c0001623 (unk. ctxt): sub esp, 0x00000018       ; 83ec18
(0).[10495503] [0x00101626] 0008:00000000c0001626 (unk. ctxt): push ebx                  ; 53
(0).[10495504] [0x00101627] 0008:00000000c0001627 (unk. ctxt): push esi                  ; 56
(0).[10495505] [0x00101628] 0008:00000000c0001628 (unk. ctxt): push edi                  ; 57
(0).[10495506] [0x00101629] 0008:00000000c0001629 (unk. ctxt): add esp, 0x0000000c       ; 83c40c
(0).[10495507] [0x0010162c] 0008:00000000c000162c (unk. ctxt): pushad                    ; 60
(0).[10495508] [0x0010162d] 0008:00000000c000162d (unk. ctxt): cli                       ; fa
(0).[10495509] [0x0010162e] 0008:00000000c000162e (unk. ctxt): mov dword ptr ss:[ebp+0xfffffffc], 0x00000000 ; c745fc00000000
(0).[10495510] [0x00101635] 0008:00000000c0001635 (unk. ctxt): call .+0xffffff66 (0xc00015a0) ; e866ffffff
(0).[10495511] [0x001015a0] 0008:00000000c00015a0 (unk. ctxt): push ebp                  ; 55
(0).[10495512] [0x001015a1] 0008:00000000c00015a1 (unk. ctxt): mov ebp, esp              ; 8bec
(0).[10495513] [0x001015a3] 0008:00000000c00015a3 (unk. ctxt): push 0x00000064           ; 6a64
(0).[10495514] [0x001015a5] 0008:00000000c00015a5 (unk. ctxt): call .+0x00001d06 (0xc00032b0) ; e8061d0000
(0).[10495515] [0x001032b0] 0008:00000000c00032b0 (unk. ctxt): mov dx, word ptr ss:[esp+0x4] ; 668b542404
(0).[10495516] [0x001032b5] 0008:00000000c00032b5 (unk. ctxt): in al, dx                 ; ec
(0).[10495517] [0x001032b6] 0008:00000000c00032b6 (unk. ctxt): mov byte ptr ss:[esp+0x4], al ; 88442404
(0).[10495518] [0x001032ba] 0008:00000000c00032ba (unk. ctxt): mov al, byte ptr ss:[esp+0x4] ; 8a442404
(0).[10495519] [0x001032be] 0008:00000000c00032be (unk. ctxt): ret                       ; c3
(0).[10495520] [0x001015aa] 0008:00000000c00015aa (unk. ctxt): add esp, 0x00000004       ; 83c404
(0).[10495521] [0x001015ad] 0008:00000000c00015ad (unk. ctxt): pop ebp                   ; 5d
(0).[10495522] [0x001015ae] 0008:00000000c00015ae (unk. ctxt): ret                       ; c3
(0).[10495523] [0x0010163a] 0008:00000000c000163a (unk. ctxt): movzx eax, al             ; 0fb6c0
(0).[10495524] [0x0010163d] 0008:00000000c000163d (unk. ctxt): and eax, 0x00000001       ; 83e001
(0).[10495525] [0x00101640] 0008:00000000c0001640 (unk. ctxt): jz .+0x000001f2 (0xc0001838) ; 0f84f2010000
(0).[10495526] [0x00101646] 0008:00000000c0001646 (unk. ctxt): call .+0xffffff95 (0xc00015e0) ; e895ffffff
(0).[10495527] [0x001015e0] 0008:00000000c00015e0 (unk. ctxt): push ebp                  ; 55
(0).[10495528] [0x001015e1] 0008:00000000c00015e1 (unk. ctxt): mov ebp, esp              ; 8bec
(0).[10495529] [0x001015e3] 0008:00000000c00015e3 (unk. ctxt): push 0x00000060           ; 6a60
(0).[10495530] [0x001015e5] 0008:00000000c00015e5 (unk. ctxt): call .+0x00001cc6 (0xc00032b0) ; e8c61c0000
(0).[10495531] [0x001032b0] 0008:00000000c00032b0 (unk. ctxt): mov dx, word ptr ss:[esp+0x4] ; 668b542404
(0).[10495532] [0x001032b5] 0008:00000000c00032b5 (unk. ctxt): in al, dx                 ; ec
(0).[10495533] [0x001032b6] 0008:00000000c00032b6 (unk. ctxt): mov byte ptr ss:[esp+0x4], al ; 88442404
(0).[10495534] [0x001032ba] 0008:00000000c00032ba (unk. ctxt): mov al, byte ptr ss:[esp+0x4] ; 8a442404
(0).[10495535] [0x001032be] 0008:00000000c00032be (unk. ctxt): ret                       ; c3
(0).[10495536] [0x001015ea] 0008:00000000c00015ea (unk. ctxt): add esp, 0x00000004       ; 83c404
(0).[10495537] [0x001015ed] 0008:00000000c00015ed (unk. ctxt): pop ebp                   ; 5d
(0).[10495538] [0x001015ee] 0008:00000000c00015ee (unk. ctxt): ret                       ; c3
(0).[10495539] [0x0010164b] 0008:00000000c000164b (unk. ctxt): movzx ecx, al             ; 0fb6c8
(0).[10495540] [0x0010164e] 0008:00000000c000164e (unk. ctxt): mov dword ptr ss:[ebp+0xfffffffc], ecx ; 894dfc
(0).[10495541] [0x00101651] 0008:00000000c0001651 (unk. ctxt): cmp dword ptr ss:[ebp+0xfffffffc], 0x000000e0 ; 817dfce0000000
(0).[10495542] [0x00101658] 0008:00000000c0001658 (unk. ctxt): jz .+0x00000009 (0xc0001663) ; 7409
(0).[10495543] [0x0010165a] 0008:00000000c000165a (unk. ctxt): cmp dword ptr ss:[ebp+0xfffffffc], 0x000000e1 ; 817dfce1000000
(0).[10495544] [0x00101661] 0008:00000000c0001661 (unk. ctxt): jnz .+0x0000000c (0xc000166f) ; 750c
(0).[10495545] [0x0010166f] 0008:00000000c000166f (unk. ctxt): mov byte ptr ds:0xc00043cf, 0x00 ; c605cf4300c000
(0).[10495546] [0x00101676] 0008:00000000c0001676 (unk. ctxt): mov edx, dword ptr ss:[ebp+0xfffffffc] ; 8b55fc
(0).[10495547] [0x00101679] 0008:00000000c0001679 (unk. ctxt): and edx, 0x00000080       ; 81e280000000
(0).[10495548] [0x0010167f] 0008:00000000c000167f (unk. ctxt): jz .+0x00000058 (0xc00016d9) ; 7458
(0).[10495549] [0x00101681] 0008:00000000c0001681 (unk. ctxt): mov eax, dword ptr ss:[ebp+0xfffffffc] ; 8b45fc
(0).[10495550] [0x00101684] 0008:00000000c0001684 (unk. ctxt): sub eax, 0x00000080       ; 2d80000000
(0).[10495551] [0x00101689] 0008:00000000c0001689 (unk. ctxt): mov dword ptr ss:[ebp+0xfffffffc], eax ; 8945fc
(0).[10495552] [0x0010168c] 0008:00000000c000168c (unk. ctxt): mov ecx, dword ptr ss:[ebp+0xfffffffc] ; 8b4dfc
(0).[10495553] [0x0010168f] 0008:00000000c000168f (unk. ctxt): mov edx, dword ptr ds:[ecx*4+0xc0004220] ; 8b148d204200c0
(0).[10495554] [0x00101696] 0008:00000000c0001696 (unk. ctxt): mov dword ptr ss:[ebp+0xfffffff8], edx ; 8955f8
(0).[10495555] [0x00101699] 0008:00000000c0001699 (unk. ctxt): mov eax, dword ptr ss:[ebp+0xfffffff8] ; 8b45f8
(0).[10495556] [0x0010169c] 0008:00000000c000169c (unk. ctxt): mov dword ptr ss:[ebp+0xfffffff0], eax ; 8945f0
(0).[10495557] [0x0010169f] 0008:00000000c000169f (unk. ctxt): mov ecx, dword ptr ss:[ebp+0xfffffff0] ; 8b4df0
(0).[10495558] [0x001016a2] 0008:00000000c00016a2 (unk. ctxt): sub ecx, 0x00004002       ; 81e902400000
(0).[10495559] [0x001016a8] 0008:00000000c00016a8 (unk. ctxt): mov dword ptr ss:[ebp+0xfffffff0], ecx ; 894df0
(0).[10495560] [0x001016ab] 0008:00000000c00016ab (unk. ctxt): cmp dword ptr ss:[ebp+0xfffffff0], 0x00000006 ; 837df006
(0).[10495561] [0x001016af] 0008:00000000c00016af (unk. ctxt): jnbe .+0x00000023 (0xc00016d4) ; 7723
(0).[10495562] [0x001016d4] 0008:00000000c00016d4 (unk. ctxt): jmp .+0x00000123 (0xc00017fc) ; e923010000
(0).[10495563] [0x001017fc] 0008:00000000c00017fc (unk. ctxt): mov ecx, dword ptr ss:[ebp+0xfffffffc] ; 8b4dfc
(0).[10495564] [0x001017ff] 0008:00000000c00017ff (unk. ctxt): mov dword ptr ss:[ebp+0xffffffe8], ecx ; 894de8
(0).[10495565] [0x00101802] 0008:00000000c0001802 (unk. ctxt): cmp dword ptr ss:[ebp+0xffffffe8], 0x000000fc ; 817de8fc000000
(0).[10495566] [0x00101809] 0008:00000000c0001809 (unk. ctxt): jz .+0x00000014 (0xc000181f) ; 7414
(0).[10495567] [0x0010180b] 0008:00000000c000180b (unk. ctxt): cmp dword ptr ss:[ebp+0xffffffe8], 0x000000fd ; 817de8fd000000
(0).[10495568] [0x00101812] 0008:00000000c0001812 (unk. ctxt): jz .+0x00000014 (0xc0001828) ; 7414
(0).[10495569] [0x00101814] 0008:00000000c0001814 (unk. ctxt): cmp dword ptr ss:[ebp+0xffffffe8], 0x000000fe ; 817de8fe000000
(0).[10495570] [0x0010181b] 0008:00000000c000181b (unk. ctxt): jz .+0x00000014 (0xc0001831) ; 7414
(0).[10495571] [0x0010181d] 0008:00000000c000181d (unk. ctxt): jmp .+0x00000019 (0xc0001838) ; eb19
(0).[10495572] [0x00101838] 0008:00000000c0001838 (unk. ctxt): push 0x00000000           ; 6a00
(0).[10495573] [0x0010183a] 0008:00000000c000183a (unk. ctxt): call .+0x00001b71 (0xc00033b0) ; e8711b0000
(0).[10495574] [0x001033b0] 0008:00000000c00033b0 (unk. ctxt): mov eax, dword ptr ss:[esp+0x4] ; 8b442404
(0).[10495575] [0x001033b4] 0008:00000000c00033b4 (unk. ctxt): cmp eax, 0x00000010       ; 83f810
(0).[10495576] [0x001033b7] 0008:00000000c00033b7 (unk. ctxt): jnbe .+0x0000001d (0xc00033d6) ; 771d
(0).[10495577] [0x001033b9] 0008:00000000c00033b9 (unk. ctxt): cmp eax, 0x00000008       ; 83f808
(0).[10495578] [0x001033bc] 0008:00000000c00033bc (unk. ctxt): jb .+0x0000000c (0xc00033ca) ; 720c
(0).[10495579] [0x001033ca] 0008:00000000c00033ca (unk. ctxt): push 0x00000000           ; 6a00
(0).[10495580] [0x001033cc] 0008:00000000c00033cc (unk. ctxt): push 0x00000020           ; 6a20
(0).[10495581] [0x001033ce] 0008:00000000c00033ce (unk. ctxt): call .+0x0000009d (0xc0003470) ; e89d000000
(0).[10495582] [0x00103470] 0008:00000000c0003470 (unk. ctxt): mov al, byte ptr ss:[esp+0x8] ; 8a442408
(0).[10495583] [0x00103474] 0008:00000000c0003474 (unk. ctxt): cmp al, 0x01              ; 3c01
(0).[10495584] [0x00103476] 0008:00000000c0003476 (unk. ctxt): jnbe .+0x00000022 (0xc000349a) ; 7722
(0).[10495585] [0x00103478] 0008:00000000c0003478 (unk. ctxt): mov ecx, dword ptr ss:[esp+0x4] ; 8b4c2404
(0).[10495586] [0x0010347c] 0008:00000000c000347c (unk. ctxt): dec al                    ; fec8
(0).[10495587] [0x0010347e] 0008:00000000c000347e (unk. ctxt): neg al                    ; f6d8
(0).[10495588] [0x00103480] 0008:00000000c0003480 (unk. ctxt): sbb al, al                ; 1ac0
(0).[10495589] [0x00103482] 0008:00000000c0003482 (unk. ctxt): and al, 0x80              ; 2480
(0).[10495590] [0x00103484] 0008:00000000c0003484 (unk. ctxt): add al, 0xa0              ; 04a0
(0).[10495591] [0x00103486] 0008:00000000c0003486 (unk. ctxt): movzx dx, al              ; 660fb6d0
(0).[10495592] [0x0010348a] 0008:00000000c000348a (unk. ctxt): movzx eax, dx             ; 0fb7c2
(0).[10495593] [0x0010348d] 0008:00000000c000348d (unk. ctxt): mov dword ptr ss:[esp+0x8], ecx ; 894c2408
(0).[10495594] [0x00103491] 0008:00000000c0003491 (unk. ctxt): mov dword ptr ss:[esp+0x4], eax ; 89442404
(0).[10495595] [0x00103495] 0008:00000000c0003495 (unk. ctxt): jmp .+0xfffffe26 (0xc00032c0) ; e926feffff
(0).[10495596] [0x001032c0] 0008:00000000c00032c0 (unk. ctxt): mov al, byte ptr ss:[esp+0x8] ; 8a442408
(0).[10495597] [0x001032c4] 0008:00000000c00032c4 (unk. ctxt): mov dx, word ptr ss:[esp+0x4] ; 668b542404
(0).[10495598] [0x001032c9] 0008:00000000c00032c9 (unk. ctxt): out dx, al                ; ee
(0).[10495599] [0x001032ca] 0008:00000000c00032ca (unk. ctxt): ret                       ; c3
(0).[10495600] [0x001033d3] 0008:00000000c00033d3 (unk. ctxt): add esp, 0x00000008       ; 83c408
(0).[10495601] [0x001033d6] 0008:00000000c00033d6 (unk. ctxt): ret                       ; c3
(0).[10495602] [0x0010183f] 0008:00000000c000183f (unk. ctxt): add esp, 0x00000004       ; 83c404
(0).[10495603] [0x00101842] 0008:00000000c0001842 (unk. ctxt): sti                       ; fb
(0).[10495604] [0x00101843] 0008:00000000c0001843 (unk. ctxt): popad                     ; 61
(0).[10495605] [0x00101844] 0008:00000000c0001844 (unk. ctxt): iretd                     ; cf
CPU 0: Exception 0x0e - (#PF) page fault occured (error_code=0x0005)
CPU 0: Interrupt 0x0e occured (error_code=0x0005)
00010495606e[CPU0 ] fetch_raw_descriptor: GDT: index (ff57)1fea > limit (17)
CPU 0: Exception 0x0a - (#TS) invalid TSS occured (error_code=0xff50)
CPU 0: Exception 0x08 - (#DF) double fault occured (error_code=0x0000)
CPU 0: Interrupt 0x08 occured (error_code=0x0000)
00010495606e[CPU0 ] fetch_raw_descriptor: GDT: index (ff57)1fea > limit (17)
CPU 0: Exception 0x0a - (#TS) invalid TSS occured (error_code=0xff50)
00010495606i[CPU0 ] CPU is in v8086 mode (active)
00010495606i[CPU0 ] CS.d_b = 16 bit
00010495606i[CPU0 ] SS.d_b = 16 bit
00010495606i[CPU0 ] EFER   = 0x00000000
00010495606i[CPU0 ] | RAX=00000000000000ff  RBX=0000000000000000
00010495606i[CPU0 ] | RCX=0000000000000026  RDX=00000000000000d8
00010495606i[CPU0 ] | RSP=00000000c00015aa  RBP=0000000000008fa0
00010495606i[CPU0 ] | RSI=00000000c00000ca  RDI=0000000000000b5a
00010495606i[CPU0 ] |  R8=0000000000000000   R9=0000000000000000
00010495606i[CPU0 ] | R10=0000000000000000  R11=0000000000000000
00010495606i[CPU0 ] | R12=0000000000000000  R13=0000000000000000
00010495606i[CPU0 ] | R14=0000000000000000  R15=0000000000000000
00010495606i[CPU0 ] | IOPL=0 id vip vif AC VM RF NT OF DF IF tf SF zf af PF cf
00010495606i[CPU0 ] | SEG selector     base    limit G D
00010495606i[CPU0 ] | SEG sltr(index|ti|rpl)     base    limit G D
00010495606i[CPU0 ] |  CS:0020( 0001| 0|  3) 00000200 0000ffff 0 0
00010495606i[CPU0 ] |  DS:0400( 0002| 0|  3) 00004000 0000ffff 0 0
00010495606i[CPU0 ] |  SS:0eb0( 0002| 0|  3) 0000eb00 0000ffff 0 0
00010495606i[CPU0 ] |  ES:007a( 0002| 0|  3) 000007a0 0000ffff 0 0
00010495606i[CPU0 ] |  FS:32c9( 0002| 0|  3) 00032c90 0000ffff 0 0
00010495606i[CPU0 ] |  GS:0008( 0002| 0|  3) 00000080 0000ffff 0 0
00010495606i[CPU0 ] |  MSR_FS_BASE:0000000000032c90
00010495606i[CPU0 ] |  MSR_GS_BASE:0000000000000080
00010495606i[CPU0 ] | RIP=000000000000007a (000000000000007a)
00010495606i[CPU0 ] | CR0=0xe0000011 CR2=0x000000000000027a
00010495606i[CPU0 ] | CR3=0x0009c000 CR4=0x00000000
(0).[10495606] [0x0000027a] 0020:007a (unk. ctxt): add al, dh                ; 00f0
00010495606e[CPU0 ] exception(): 3rd (10) exception with no resolution, shutdown status is 00h, resetting
00010495606i[SYS  ] bx_pc_system_c::Reset(HARDWARE) called
00010495606i[CPU0 ] cpu hardware reset
00010495606i[APIC0] local apic 0 initializing
00010495606i[APIC0] allocate APIC id=0 (MMIO enabled) to 0xfee00000
00010495606i[     ] reset of 'unmapped' plugin device by virtual method
00010495606i[     ] reset of 'biosdev' plugin device by virtual method
00010495606i[     ] reset of 'speaker' plugin device by virtual method
00010495606i[     ] reset of 'extfpuirq' plugin device by virtual method
00010495606i[     ] reset of 'gameport' plugin device by virtual method
00010495606i[     ] reset of 'pci_ide' plugin device by virtual method
00010495606i[     ] reset of 'acpi' plugin device by virtual method
00010495606i[     ] reset of 'ioapic' plugin device by virtual method
00010495606i[     ] reset of 'keyboard' plugin device by virtual method
00010495606i[     ] reset of 'harddrv' plugin device by virtual method
00010495606i[     ] reset of 'serial' plugin device by virtual method
00010495606i[     ] reset of 'parallel' plugin device by virtual method
Recall that this code works fine on first upgrade (VS2005 to VS2008)... and without any change, this kind of behavior happens...
_____________
Think it, build it, bit by bit...

Insightsoft
Posts:63
Joined:Wed Jul 22, 2009 6:44 am

Re: Demo 15 Problem

Post by Insightsoft » Fri Oct 09, 2009 10:00 am

I have found a way to examine exactly what is wrong.
I realize that the compilation of second time is completely different...
I used my FileMerge.app to see the differences of the dump files (just from the 3 nop added)

I will try to exposed some of the differences...

This is equal:

Code: Select all

(0).[8928562] [0x001005b4] 0008:00000000c00005b4 (unk. ctxt): nop                       ; 90
(0).[8928563] [0x001005b5] 0008:00000000c00005b5 (unk. ctxt): nop                       ; 90
(0).[8928564] [0x001005b6] 0008:00000000c00005b6 (unk. ctxt): nop                       ; 90
(0).[8928565] [0x001005b7] 0008:00000000c00005b7 (unk. ctxt): push 0x00000021           ; 6a21
Then, first differences
First compilation:

Code: Select all

(0).[8928566] [0x001005b9] 0008:00000000c00005b9 (unk. ctxt): call .+0x00001392 (0xc0001950) ; e892130000
(0).[8928567] [0x00101950] 0008:00000000c0001950 (unk. ctxt): mov eax, dword ptr ss:[esp+0x4] ; 8b442404
(0).[8928568] [0x00101954] 0008:00000000c0001954 (unk. ctxt): push ebx                  ; 53
(0).[8928569] [0x00101955] 0008:00000000c0001955 (unk. ctxt): push 0xc0001770           ; 68701700c0
(0).[8928570] [0x0010195a] 0008:00000000c000195a (unk. ctxt): push eax                  ; 50
(0).[8928571] [0x0010195b] 0008:00000000c000195b (unk. ctxt): call .+0x00001660 (0xc0002fc0) ; e860160000
(0).[8928572] [0x00102fc0] 0008:00000000c0002fc0 (unk. ctxt): mov eax, dword ptr ss:[esp+0x8] ; 8b442408
(0).[8928573] [0x00102fc4] 0008:00000000c0002fc4 (unk. ctxt): mov ecx, dword ptr ss:[esp+0x4] ; 8b4c2404
(0).[8928574] [0x00102fc8] 0008:00000000c0002fc8 (unk. ctxt): push eax                  ; 50
(0).[8928575] [0x00102fc9] 0008:00000000c0002fc9 (unk. ctxt): push 0x00000008           ; 6a08
(0).[8928576] [0x00102fcb] 0008:00000000c0002fcb (unk. ctxt): push 0x0000008e           ; 688e000000
(0).[8928577] [0x00102fd0] 0008:00000000c0002fd0 (unk. ctxt): push ecx                  ; 51
Second compilation (call addresses are different; added some pushs)

Code: Select all

(0).[10495265] [0x001005b9] 0008:00000000c00005b9 (unk. ctxt): call .+0x000016f2 (0xc0001cb0) ; e8f2160000            
(0).[10495266] [0x00101cb0] 0008:00000000c0001cb0 (unk. ctxt): push ebp                  ; 55                  
(0).[10495267] [0x00101cb1] 0008:00000000c0001cb1 (unk. ctxt): mov ebp, esp              ; 8bec
(0).[10495268] [0x00101cb3] 0008:00000000c0001cb3 (unk. ctxt): push 0xc0001620           ; 68201600c0
(0).[10495269] [0x00101cb8] 0008:00000000c0001cb8 (unk. ctxt): mov eax, dword ptr ss:[ebp+0x8] ; 8b4508
(0).[10495270] [0x00101cbb] 0008:00000000c0001cbb (unk. ctxt): push eax                  ; 50
(0).[10495271] [0x00101cbc] 0008:00000000c0001cbc (unk. ctxt): call .+0x0000162f (0xc00032f0) ; e82f160000            
(0).[10495272] [0x001032f0] 0008:00000000c00032f0 (unk. ctxt): mov eax, dword ptr ss:[esp+0x8] ; 8b442408
(0).[10495273] [0x001032f4] 0008:00000000c00032f4 (unk. ctxt): mov ecx, dword ptr ss:[esp+0x4] ; 8b4c2404
(0).[10495274] [0x001032f8] 0008:00000000c00032f8 (unk. ctxt): push eax                  ; 50
(0).[10495275] [0x001032f9] 0008:00000000c00032f9 (unk. ctxt): push 0x00000008           ; 6a08
(0).[10495276] [0x001032fb] 0008:00000000c00032fb (unk. ctxt): push 0x0000008e           ; 688e000000
(0).[10495277] [0x00103300] 0008:00000000c0003300 (unk. ctxt): push ecx                  ; 51
This is just few of them...

My question is this: Same project; different compilations?? What'a hell?!?!!?... Microsoft, Microsoft... i'm just kidding. There is some thing that is missing, for sure. I hope you can help me...
_____________
Think it, build it, bit by bit...

Post Reply