40a058:	83 c4 20             	add    $0x20,%esp
40a05b:	83 fb 04             	cmp    $0x4,%ebx
40a05e:	0f 85 4c 01 00 00    	jne    0x40a1b0
40a064:	8b 86 20 0a 00 00    	mov    0xa20(%esi),%eax
40a06a:	50                   	push   %eax
40a06b:	56                   	push   %esi
40a06c:	e8 cf bb ff ff       	call   0x405c40
40a071:	83 c4 08             	add    $0x8,%esp
40a074:	5f                   	pop    %edi
40a075:	5e                   	pop    %esi
40a076:	5b                   	pop    %ebx
40a077:	8b e5                	mov    %ebp,%esp
40a079:	5d                   	pop    %ebp
40a07a:	c3                   	ret
40a07b:	6a 3f                	push   $0x3f
40a07d:	8d 4d 91             	lea    -0x6f(%ebp),%ecx
40a080:	53                   	push   %ebx
40a081:	51                   	push   %ecx
40a082:	88 5d 90             	mov    %bl,-0x70(%ebp)
40a085:	e8 56 e3 00 00       	call   0x4183e0
40a08a:	8b 45 08             	mov    0x8(%ebp),%eax
40a08d:	6a 20                	push   $0x20
40a08f:	8d 55 90             	lea    -0x70(%ebp),%edx
40a092:	52                   	push   %edx
40a093:	50                   	push   %eax
40a094:	56                   	push   %esi
40a095:	e8 e6 fd ff ff       	call   0x409e80
40a09a:	83 c4 1c             	add    $0x1c,%esp
40a09d:	38 5d 92             	cmp    %bl,-0x6e(%ebp)
40a0a0:	74 14                	je     0x40a0b6
40a0a2:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a0a5:	51                   	push   %ecx
40a0a6:	56                   	push   %esi
40a0a7:	e8 44 cc 00 00       	call   0x416cf0
40a0ac:	83 c4 08             	add    $0x8,%esp
40a0af:	5f                   	pop    %edi
40a0b0:	5e                   	pop    %esi
40a0b1:	5b                   	pop    %ebx
40a0b2:	8b e5                	mov    %ebp,%esp
40a0b4:	5d                   	pop    %ebp
40a0b5:	c3                   	ret
40a0b6:	8b 45 0c             	mov    0xc(%ebp),%eax
40a0b9:	8d 55 fc             	lea    -0x4(%ebp),%edx
40a0bc:	52                   	push   %edx
40a0bd:	50                   	push   %eax
40a0be:	56                   	push   %esi
40a0bf:	e8 2c fd ff ff       	call   0x409df0
40a0c4:	83 c4 0c             	add    $0xc,%esp
40a0c7:	85 c0                	test   %eax,%eax
40a0c9:	74 d7                	je     0x40a0a2
40a0cb:	8b 7d 18             	mov    0x18(%ebp),%edi
40a0ce:	39 9e d4 07 00 00    	cmp    %ebx,0x7d4(%esi)
40a0d4:	74 10                	je     0x40a0e6
40a0d6:	6a 32                	push   $0x32
40a0d8:	8d 55 08             	lea    0x8(%ebp),%edx
40a0db:	52                   	push   %edx
40a0dc:	57                   	push   %edi
40a0dd:	56                   	push   %esi
40a0de:	e8 8d fc ff ff       	call   0x409d70
40a0e3:	83 c4 10             	add    $0x10,%esp
40a0e6:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a0e9:	8d 85 c4 fc ff ff    	lea    -0x33c(%ebp),%eax
40a0ef:	50                   	push   %eax
40a0f0:	51                   	push   %ecx
40a0f1:	56                   	push   %esi
40a0f2:	e8 f9 c4 00 00       	call   0x4165f0
40a0f7:	8b 57 04             	mov    0x4(%edi),%edx
40a0fa:	c6 02 68             	movb   $0x68,(%edx)
40a0fd:	8b 47 08             	mov    0x8(%edi),%eax
40a100:	8b 8d 7c fd ff ff    	mov    -0x284(%ebp),%ecx
40a106:	89 08                	mov    %ecx,(%eax)
40a108:	8b 17                	mov    (%edi),%edx
40a10a:	8b 45 14             	mov    0x14(%ebp),%eax
40a10d:	6a 02                	push   $0x2
40a10f:	52                   	push   %edx
40a110:	50                   	push   %eax
40a111:	8d 4d 08             	lea    0x8(%ebp),%ecx
40a114:	51                   	push   %ecx
40a115:	56                   	push   %esi
40a116:	e8 d5 fa ff ff       	call   0x409bf0
40a11b:	83 c4 20             	add    $0x20,%esp
40a11e:	89 85 7c fd ff ff    	mov    %eax,-0x284(%ebp)
40a124:	3b c3                	cmp    %ebx,%eax
40a126:	74 43                	je     0x40a16b
40a128:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a12b:	8d 95 c4 fc ff ff    	lea    -0x33c(%ebp),%edx
40a131:	52                   	push   %edx
40a132:	50                   	push   %eax
40a133:	56                   	push   %esi
40a134:	e8 e7 c4 00 00       	call   0x416620
40a139:	8b 45 1c             	mov    0x1c(%ebp),%eax
40a13c:	83 c4 0c             	add    $0xc,%esp
40a13f:	3b c3                	cmp    %ebx,%eax
40a141:	74 0a                	je     0x40a14d
40a143:	83 f8 03             	cmp    $0x3,%eax
40a146:	74 05                	je     0x40a14d
40a148:	83 f8 04             	cmp    $0x4,%eax
40a14b:	75 1e                	jne    0x40a16b
40a14d:	8b 85 7c fd ff ff    	mov    -0x284(%ebp),%eax
40a153:	83 c0 05             	add    $0x5,%eax
40a156:	3b c3                	cmp    %ebx,%eax
40a158:	74 11                	je     0x40a16b
40a15a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a15d:	53                   	push   %ebx
40a15e:	53                   	push   %ebx
40a15f:	53                   	push   %ebx
40a160:	50                   	push   %eax
40a161:	51                   	push   %ecx
40a162:	56                   	push   %esi
40a163:	e8 48 c5 00 00       	call   0x4166b0
40a168:	83 c4 18             	add    $0x18,%esp
40a16b:	8b 55 fc             	mov    -0x4(%ebp),%edx
40a16e:	53                   	push   %ebx
40a16f:	52                   	push   %edx
40a170:	56                   	push   %esi
40a171:	e8 0a c5 00 00       	call   0x416680
40a176:	8b 45 08             	mov    0x8(%ebp),%eax
40a179:	50                   	push   %eax
40a17a:	56                   	push   %esi
40a17b:	e8 70 cb 00 00       	call   0x416cf0
40a180:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a183:	51                   	push   %ecx
40a184:	56                   	push   %esi
40a185:	e8 66 cb 00 00       	call   0x416cf0
40a18a:	8b 7f 0c             	mov    0xc(%edi),%edi
40a18d:	83 c4 1c             	add    $0x1c,%esp
40a190:	3b fb                	cmp    %ebx,%edi
40a192:	74 06                	je     0x40a19a
40a194:	c7 07 88 88 88 88    	movl   $0x88888888,(%edi)
40a19a:	83 7d 1c 04          	cmpl   $0x4,0x1c(%ebp)
40a19e:	75 10                	jne    0x40a1b0
40a1a0:	8b 96 20 0a 00 00    	mov    0xa20(%esi),%edx
40a1a6:	52                   	push   %edx
40a1a7:	56                   	push   %esi
40a1a8:	e8 93 ba ff ff       	call   0x405c40
40a1ad:	83 c4 08             	add    $0x8,%esp
40a1b0:	5f                   	pop    %edi
40a1b1:	5e                   	pop    %esi
40a1b2:	5b                   	pop    %ebx
40a1b3:	8b e5                	mov    %ebp,%esp
40a1b5:	5d                   	pop    %ebp
40a1b6:	c3                   	ret
40a1b7:	2f                   	das
40a1b8:	c3                   	ret
40a1b9:	10 40 dc             	adc    %al,-0x24(%eax)
40a1bc:	30 a8 13 c9 55 8b    	xor    %ch,-0x74aa36ed(%eax)
40a1c2:	ec                   	in     (%dx),%al
40a1c3:	81 ec 88 03 00 00    	sub    $0x388,%esp
40a1c9:	56                   	push   %esi
40a1ca:	8b 75 08             	mov    0x8(%ebp),%esi
40a1cd:	83 be f0 09 00 00 00 	cmpl   $0x0,0x9f0(%esi)
40a1d4:	75 0a                	jne    0x40a1e0
40a1d6:	b8 01 00 00 00       	mov    $0x1,%eax
40a1db:	5e                   	pop    %esi
40a1dc:	8b e5                	mov    %ebp,%esp
40a1de:	5d                   	pop    %ebp
40a1df:	c3                   	ret
40a1e0:	57                   	push   %edi
40a1e1:	33 c0                	xor    %eax,%eax
40a1e3:	68 06 02 00 00       	push   $0x206
40a1e8:	50                   	push   %eax
40a1e9:	8d 8d 7a fc ff ff    	lea    -0x386(%ebp),%ecx
40a1ef:	51                   	push   %ecx
40a1f0:	66 89 85 78 fc ff ff 	mov    %ax,-0x388(%ebp)
40a1f7:	e8 e4 e1 00 00       	call   0x4183e0
40a1fc:	6a 7e                	push   $0x7e
40a1fe:	8d 95 82 fe ff ff    	lea    -0x17e(%ebp),%edx
40a204:	6a 00                	push   $0x0
40a206:	52                   	push   %edx
40a207:	e8 d4 e1 00 00       	call   0x4183e0
40a20c:	6a 7e                	push   $0x7e
40a20e:	8d 85 02 ff ff ff    	lea    -0xfe(%ebp),%eax
40a214:	6a 00                	push   $0x0
40a216:	50                   	push   %eax
40a217:	e8 c4 e1 00 00       	call   0x4183e0
40a21c:	b9 5c 00 00 00       	mov    $0x5c,%ecx
40a221:	33 c0                	xor    %eax,%eax
40a223:	8b d1                	mov    %ecx,%edx
40a225:	6a 66                	push   $0x66
40a227:	66 89 8d 80 fe ff ff 	mov    %cx,-0x180(%ebp)
40a22e:	50                   	push   %eax
40a22f:	8d 4d 9a             	lea    -0x66(%ebp),%ecx
40a232:	51                   	push   %ecx
40a233:	66 89 95 00 ff ff ff 	mov    %dx,-0x100(%ebp)
40a23a:	c7 45 80 50 00 72 00 	movl   $0x720050,-0x80(%ebp)
40a241:	c7 45 84 6f 00 67 00 	movl   $0x67006f,-0x7c(%ebp)
40a248:	c7 45 88 72 00 61 00 	movl   $0x610072,-0x78(%ebp)
40a24f:	c7 45 8c 6d 00 46 00 	movl   $0x46006d,-0x74(%ebp)
40a256:	c7 45 90 69 00 6c 00 	movl   $0x6c0069,-0x70(%ebp)
40a25d:	c7 45 94 65 00 73 00 	movl   $0x730065,-0x6c(%ebp)
40a264:	66 89 45 98          	mov    %ax,-0x68(%ebp)
40a268:	e8 73 e1 00 00       	call   0x4183e0
40a26d:	8d 95 78 fc ff ff    	lea    -0x388(%ebp),%edx
40a273:	52                   	push   %edx
40a274:	8d 45 80             	lea    -0x80(%ebp),%eax
40a277:	50                   	push   %eax
40a278:	56                   	push   %esi
40a279:	e8 c2 e3 ff ff       	call   0x408640
40a27e:	8d 4d 80             	lea    -0x80(%ebp),%ecx
40a281:	51                   	push   %ecx
40a282:	e8 c9 e3 00 00       	call   0x418650
40a287:	8b 7d 0c             	mov    0xc(%ebp),%edi
40a28a:	83 c4 40             	add    $0x40,%esp
40a28d:	03 c0                	add    %eax,%eax
40a28f:	50                   	push   %eax
40a290:	8d 95 78 fc ff ff    	lea    -0x388(%ebp),%edx
40a296:	57                   	push   %edi
40a297:	52                   	push   %edx
40a298:	e8 d3 e3 00 00       	call   0x418670
40a29d:	83 c4 0c             	add    $0xc,%esp
40a2a0:	85 c0                	test   %eax,%eax
40a2a2:	74 0b                	je     0x40a2af
40a2a4:	5f                   	pop    %edi
40a2a5:	b8 01 00 00 00       	mov    $0x1,%eax
40a2aa:	5e                   	pop    %esi
40a2ab:	8b e5                	mov    %ebp,%esp
40a2ad:	5d                   	pop    %ebp
40a2ae:	c3                   	ret
40a2af:	6a 00                	push   $0x0
40a2b1:	6a 03                	push   $0x3
40a2b3:	8d 85 78 fc ff ff    	lea    -0x388(%ebp),%eax
40a2b9:	50                   	push   %eax
40a2ba:	56                   	push   %esi
40a2bb:	e8 b0 e4 ff ff       	call   0x408770
40a2c0:	8d 8d 82 fe ff ff    	lea    -0x17e(%ebp),%ecx
40a2c6:	57                   	push   %edi
40a2c7:	51                   	push   %ecx
40a2c8:	e8 c3 e5 00 00       	call   0x418890
40a2cd:	8d 95 02 ff ff ff    	lea    -0xfe(%ebp),%edx
40a2d3:	57                   	push   %edi
40a2d4:	52                   	push   %edx
40a2d5:	e8 26 6d ff ff       	call   0x401000
40a2da:	6a 00                	push   $0x0
40a2dc:	8d 85 00 ff ff ff    	lea    -0x100(%ebp),%eax
40a2e2:	50                   	push   %eax
40a2e3:	8d 8d 78 fc ff ff    	lea    -0x388(%ebp),%ecx
40a2e9:	51                   	push   %ecx
40a2ea:	e8 d1 e4 00 00       	call   0x4187c0
40a2ef:	6a 00                	push   $0x0
40a2f1:	8d 95 80 fe ff ff    	lea    -0x180(%ebp),%edx
40a2f7:	52                   	push   %edx
40a2f8:	8d 85 78 fc ff ff    	lea    -0x388(%ebp),%eax
40a2fe:	50                   	push   %eax
40a2ff:	e8 bc e4 00 00       	call   0x4187c0
40a304:	6a 00                	push   $0x0
40a306:	6a 15                	push   $0x15
40a308:	8d 8d 78 fc ff ff    	lea    -0x388(%ebp),%ecx
40a30e:	51                   	push   %ecx
40a30f:	56                   	push   %esi
40a310:	e8 bb 7b 00 00       	call   0x411ed0
40a315:	83 c4 48             	add    $0x48,%esp
40a318:	f7 d8                	neg    %eax
40a31a:	1b c0                	sbb    %eax,%eax
40a31c:	5f                   	pop    %edi
40a31d:	f7 d8                	neg    %eax
40a31f:	5e                   	pop    %esi
40a320:	8b e5                	mov    %ebp,%esp
40a322:	5d                   	pop    %ebp
40a323:	c3                   	ret
40a324:	75 fd                	jne    0x40a323
40a326:	ef                   	out    %eax,(%dx)
40a327:	e7 48                	out    %eax,$0x48
40a329:	34 71                	xor    $0x71,%al
40a32b:	29 67 6c             	sub    %esp,0x6c(%edi)
40a32e:	4f                   	dec    %edi
40a32f:	43                   	inc    %ebx
40a330:	55                   	push   %ebp
40a331:	8b ec                	mov    %esp,%ebp
40a333:	81 ec 1c 07 00 00    	sub    $0x71c,%esp
40a339:	56                   	push   %esi
40a33a:	57                   	push   %edi
40a33b:	33 c0                	xor    %eax,%eax
40a33d:	68 fe 03 00 00       	push   $0x3fe
40a342:	50                   	push   %eax
40a343:	8d 8d e6 f8 ff ff    	lea    -0x71a(%ebp),%ecx
40a349:	51                   	push   %ecx
40a34a:	66 89 85 e4 f8 ff ff 	mov    %ax,-0x71c(%ebp)
40a351:	e8 8a e0 00 00       	call   0x4183e0
40a356:	33 d2                	xor    %edx,%edx
40a358:	68 06 02 00 00       	push   $0x206
40a35d:	52                   	push   %edx
40a35e:	8d 85 e6 fc ff ff    	lea    -0x31a(%ebp),%eax
40a364:	50                   	push   %eax
40a365:	66 89 95 e4 fc ff ff 	mov    %dx,-0x31c(%ebp)
40a36c:	e8 6f e0 00 00       	call   0x4183e0
40a371:	33 c0                	xor    %eax,%eax
40a373:	6a 7e                	push   $0x7e
40a375:	50                   	push   %eax
40a376:	8d 8d ee fe ff ff    	lea    -0x112(%ebp),%ecx
40a37c:	51                   	push   %ecx
40a37d:	c7 45 f8 22 00 20 00 	movl   $0x200022,-0x8(%ebp)
40a384:	c7 45 fc 22 00 00 00 	movl   $0x22,-0x4(%ebp)
40a38b:	c7 45 ec 22 00 20 00 	movl   $0x200022,-0x14(%ebp)
40a392:	c7 45 f0 2f 00 56 00 	movl   $0x56002f,-0x10(%ebp)
40a399:	66 89 45 f4          	mov    %ax,-0xc(%ebp)
40a39d:	e8 3e e0 00 00       	call   0x4183e0
40a3a2:	ba 5c 00 00 00       	mov    $0x5c,%edx
40a3a7:	83 c4 24             	add    $0x24,%esp
40a3aa:	66 89 95 ec fe ff ff 	mov    %dx,-0x114(%ebp)
40a3b1:	e8 9a e5 00 00       	call   0x418950
40a3b6:	8b 75 08             	mov    0x8(%ebp),%esi
40a3b9:	a8 03                	test   $0x3,%al
40a3bb:	75 21                	jne    0x40a3de
40a3bd:	6a 3b                	push   $0x3b
40a3bf:	6a 26                	push   $0x26
40a3c1:	e8 4a db ff ff       	call   0x407f10
40a3c6:	0f b6 c0             	movzbl %al,%eax
40a3c9:	6a 01                	push   $0x1
40a3cb:	50                   	push   %eax
40a3cc:	8d 8d ee fe ff ff    	lea    -0x112(%ebp),%ecx
40a3d2:	51                   	push   %ecx
40a3d3:	56                   	push   %esi
40a3d4:	e8 97 e3 ff ff       	call   0x408770
40a3d9:	83 c4 18             	add    $0x18,%esp
40a3dc:	eb 1c                	jmp    0x40a3fa
40a3de:	6a 08                	push   $0x8
40a3e0:	6a 03                	push   $0x3
40a3e2:	e8 29 db ff ff       	call   0x407f10
40a3e7:	0f b6 d0             	movzbl %al,%edx
40a3ea:	52                   	push   %edx
40a3eb:	8d 85 ee fe ff ff    	lea    -0x112(%ebp),%eax
40a3f1:	50                   	push   %eax
40a3f2:	e8 d9 ee 00 00       	call   0x4192d0
40a3f7:	83 c4 10             	add    $0x10,%esp
40a3fa:	6a 08                	push   $0x8
40a3fc:	6a 03                	push   $0x3
40a3fe:	e8 0d db ff ff       	call   0x407f10
40a403:	0f b6 c8             	movzbl %al,%ecx
40a406:	83 c4 08             	add    $0x8,%esp
40a409:	51                   	push   %ecx
40a40a:	8d 95 ec fe ff ff    	lea    -0x114(%ebp),%edx
40a410:	52                   	push   %edx
40a411:	e8 3a e2 00 00       	call   0x418650
40a416:	8d 84 45 ec fe ff ff 	lea    -0x114(%ebp,%eax,2),%eax
40a41d:	83 c4 04             	add    $0x4,%esp
40a420:	50                   	push   %eax
40a421:	e8 aa ee 00 00       	call   0x4192d0
40a426:	8d 8d ec fe ff ff    	lea    -0x114(%ebp),%ecx
40a42c:	51                   	push   %ecx
40a42d:	e8 1e e2 00 00       	call   0x418650
40a432:	6a 01                	push   $0x1
40a434:	8b f8                	mov    %eax,%edi
40a436:	6a 20                	push   $0x20
40a438:	8d 94 7d ec fe ff ff 	lea    -0x114(%ebp,%edi,2),%edx
40a43f:	52                   	push   %edx
40a440:	56                   	push   %esi
40a441:	e8 2a e3 ff ff       	call   0x408770
40a446:	33 c9                	xor    %ecx,%ecx
40a448:	6a 66                	push   $0x66
40a44a:	51                   	push   %ecx