40a2dd:	ff 70 04             	push   0x4(%eax)
40a2e0:	e8 06 5e 00 00       	call   0x4100eb
40a2e5:	85 c0                	test   %eax,%eax
40a2e7:	59                   	pop    %ecx
40a2e8:	59                   	pop    %ecx
40a2e9:	74 23                	je     0x40a30e
40a2eb:	ff 76 04             	push   0x4(%esi)
40a2ee:	e8 60 c1 ff ff       	call   0x406453
40a2f3:	ff 36                	push   (%esi)
40a2f5:	e8 0a f3 ff ff       	call   0x409604
40a2fa:	ff 36                	push   (%esi)
40a2fc:	e8 3d f1 ff ff       	call   0x40943e
40a301:	56                   	push   %esi
40a302:	e8 4c c1 ff ff       	call   0x406453
40a307:	83 c4 10             	add    $0x10,%esp
40a30a:	33 f6                	xor    %esi,%esi
40a30c:	eb 0a                	jmp    0x40a318
40a30e:	8b 46 04             	mov    0x4(%esi),%eax
40a311:	89 38                	mov    %edi,(%eax)
40a313:	8b 46 04             	mov    0x4(%esi),%eax
40a316:	89 38                	mov    %edi,(%eax)
40a318:	8b c6                	mov    %esi,%eax
40a31a:	e9 3d ff ff ff       	jmp    0x40a25c
40a31f:	6a 14                	push   $0x14
40a321:	68 98 ab 41 00       	push   $0x41ab98
40a326:	e8 1d 33 00 00       	call   0x40d648
40a32b:	33 db                	xor    %ebx,%ebx
40a32d:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40a330:	83 7d 08 05          	cmpl   $0x5,0x8(%ebp)
40a334:	76 1f                	jbe    0x40a355
40a336:	e8 bf f0 ff ff       	call   0x4093fa
40a33b:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40a341:	53                   	push   %ebx
40a342:	53                   	push   %ebx
40a343:	53                   	push   %ebx
40a344:	53                   	push   %ebx
40a345:	53                   	push   %ebx
40a346:	e8 05 d3 ff ff       	call   0x407650
40a34b:	83 c4 14             	add    $0x14,%esp
40a34e:	33 c0                	xor    %eax,%eax
40a350:	e9 2c 01 00 00       	jmp    0x40a481
40a355:	e8 f2 21 00 00       	call   0x40c54c
40a35a:	8b f0                	mov    %eax,%esi
40a35c:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40a35f:	e8 8e f3 ff ff       	call   0x4096f2
40a364:	83 4e 70 10          	orl    $0x10,0x70(%esi)
40a368:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40a36b:	6a 01                	push   $0x1
40a36d:	68 d8 00 00 00       	push   $0xd8
40a372:	e8 b5 ef ff ff       	call   0x40932c
40a377:	59                   	pop    %ecx
40a378:	59                   	pop    %ecx
40a379:	8b f8                	mov    %eax,%edi
40a37b:	89 7d dc             	mov    %edi,-0x24(%ebp)
40a37e:	3b fb                	cmp    %ebx,%edi
40a380:	0f 84 ec 00 00 00    	je     0x40a472
40a386:	6a 0c                	push   $0xc
40a388:	e8 8a 27 00 00       	call   0x40cb17
40a38d:	59                   	pop    %ecx
40a38e:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
40a395:	8b 4e 6c             	mov    0x6c(%esi),%ecx
40a398:	8b c7                	mov    %edi,%eax
40a39a:	e8 f1 f2 ff ff       	call   0x409690
40a39f:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40a3a2:	e8 a6 00 00 00       	call   0x40a44d
40a3a7:	ff 75 08             	push   0x8(%ebp)
40a3aa:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40a3ad:	8b d7                	mov    %edi,%edx
40a3af:	e8 aa fc ff ff       	call   0x40a05e
40a3b4:	59                   	pop    %ecx
40a3b5:	89 45 e0             	mov    %eax,-0x20(%ebp)
40a3b8:	3b c3                	cmp    %ebx,%eax
40a3ba:	0f 84 a4 00 00 00    	je     0x40a464
40a3c0:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
40a3c3:	74 1d                	je     0x40a3e2
40a3c5:	68 40 d1 41 00       	push   $0x41d140
40a3ca:	ff 75 0c             	push   0xc(%ebp)
40a3cd:	e8 be 0a 00 00       	call   0x40ae90
40a3d2:	59                   	pop    %ecx
40a3d3:	59                   	pop    %ecx
40a3d4:	85 c0                	test   %eax,%eax
40a3d6:	74 0a                	je     0x40a3e2
40a3d8:	c7 05 04 da 41 00 01 	movl   $0x1,0x41da04
40a3df:	00 00 00
40a3e2:	6a 0c                	push   $0xc
40a3e4:	e8 2e 27 00 00       	call   0x40cb17
40a3e9:	59                   	pop    %ecx
40a3ea:	c7 45 fc 02 00 00 00 	movl   $0x2,-0x4(%ebp)
40a3f1:	8d 5e 6c             	lea    0x6c(%esi),%ebx
40a3f4:	8b c3                	mov    %ebx,%eax
40a3f6:	e8 b9 f2 ff ff       	call   0x4096b4
40a3fb:	57                   	push   %edi
40a3fc:	e8 03 f2 ff ff       	call   0x409604
40a401:	59                   	pop    %ecx
40a402:	f6 46 70 02          	testb  $0x2,0x70(%esi)
40a406:	75 32                	jne    0x40a43a
40a408:	f6 05 38 d1 41 00 01 	testb  $0x1,0x41d138
40a40f:	75 29                	jne    0x40a43a
40a411:	8b 3b                	mov    (%ebx),%edi
40a413:	b8 20 d2 41 00       	mov    $0x41d220,%eax
40a418:	e8 97 f2 ff ff       	call   0x4096b4
40a41d:	6a 18                	push   $0x18
40a41f:	a1 20 d2 41 00       	mov    0x41d220,%eax
40a424:	83 c0 0c             	add    $0xc,%eax
40a427:	50                   	push   %eax
40a428:	68 40 e3 41 00       	push   $0x41e340
40a42d:	e8 9e b7 ff ff       	call   0x405bd0
40a432:	83 c4 0c             	add    $0xc,%esp
40a435:	e8 2e f3 ff ff       	call   0x409768
40a43a:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a43e:	e8 16 00 00 00       	call   0x40a459
40a443:	eb 2d                	jmp    0x40a472
40a445:	8b 7d dc             	mov    -0x24(%ebp),%edi
40a448:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40a44b:	33 db                	xor    %ebx,%ebx
40a44d:	6a 0c                	push   $0xc
40a44f:	e8 eb 25 00 00       	call   0x40ca3f
40a454:	59                   	pop    %ecx
40a455:	c3                   	ret
40a456:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40a459:	6a 0c                	push   $0xc
40a45b:	e8 df 25 00 00       	call   0x40ca3f
40a460:	59                   	pop    %ecx
40a461:	c3                   	ret
40a462:	eb 0e                	jmp    0x40a472
40a464:	57                   	push   %edi
40a465:	e8 9a f1 ff ff       	call   0x409604
40a46a:	57                   	push   %edi
40a46b:	e8 ce ef ff ff       	call   0x40943e
40a470:	59                   	pop    %ecx
40a471:	59                   	pop    %ecx
40a472:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40a479:	e8 0c 00 00 00       	call   0x40a48a
40a47e:	8b 45 e0             	mov    -0x20(%ebp),%eax
40a481:	e8 07 32 00 00       	call   0x40d68d
40a486:	c3                   	ret
40a487:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40a48a:	83 66 70 ef          	andl   $0xffffffef,0x70(%esi)
40a48e:	c3                   	ret
40a48f:	55                   	push   %ebp
40a490:	8d ac 24 58 fd ff ff 	lea    -0x2a8(%esp),%ebp
40a497:	81 ec 28 03 00 00    	sub    $0x328,%esp
40a49d:	a1 20 c5 41 00       	mov    0x41c520,%eax
40a4a2:	33 c5                	xor    %ebp,%eax
40a4a4:	89 85 a4 02 00 00    	mov    %eax,0x2a4(%ebp)
40a4aa:	f6 05 64 c9 41 00 01 	testb  $0x1,0x41c964
40a4b1:	56                   	push   %esi
40a4b2:	74 08                	je     0x40a4bc
40a4b4:	6a 0a                	push   $0xa
40a4b6:	e8 93 36 00 00       	call   0x40db4e
40a4bb:	59                   	pop    %ecx
40a4bc:	e8 1c 95 00 00       	call   0x4139dd
40a4c1:	85 c0                	test   %eax,%eax
40a4c3:	74 08                	je     0x40a4cd
40a4c5:	6a 16                	push   $0x16
40a4c7:	e8 1e 95 00 00       	call   0x4139ea
40a4cc:	59                   	pop    %ecx
40a4cd:	f6 05 64 c9 41 00 02 	testb  $0x2,0x41c964
40a4d4:	0f 84 a0 00 00 00    	je     0x40a57a
40a4da:	89 85 88 00 00 00    	mov    %eax,0x88(%ebp)
40a4e0:	89 8d 84 00 00 00    	mov    %ecx,0x84(%ebp)
40a4e6:	89 95 80 00 00 00    	mov    %edx,0x80(%ebp)
40a4ec:	89 5d 7c             	mov    %ebx,0x7c(%ebp)
40a4ef:	89 75 78             	mov    %esi,0x78(%ebp)
40a4f2:	89 7d 74             	mov    %edi,0x74(%ebp)
40a4f5:	66 8c 95 a0 00 00 00 	data16 mov %ss,0xa0(%ebp)
40a4fc:	66 8c 8d 94 00 00 00 	data16 mov %cs,0x94(%ebp)
40a503:	66 8c 5d 70          	data16 mov %ds,0x70(%ebp)
40a507:	66 8c 45 6c          	data16 mov %es,0x6c(%ebp)
40a50b:	66 8c 65 68          	data16 mov %fs,0x68(%ebp)
40a50f:	66 8c 6d 64          	data16 mov %gs,0x64(%ebp)
40a513:	9c                   	pushf
40a514:	8f 85 98 00 00 00    	pop    0x98(%ebp)
40a51a:	8b b5 ac 02 00 00    	mov    0x2ac(%ebp),%esi
40a520:	8d 85 ac 02 00 00    	lea    0x2ac(%ebp),%eax
40a526:	89 85 9c 00 00 00    	mov    %eax,0x9c(%ebp)
40a52c:	c7 45 d8 01 00 01 00 	movl   $0x10001,-0x28(%ebp)
40a533:	89 b5 90 00 00 00    	mov    %esi,0x90(%ebp)
40a539:	8b 40 fc             	mov    -0x4(%eax),%eax
40a53c:	6a 50                	push   $0x50
40a53e:	89 85 8c 00 00 00    	mov    %eax,0x8c(%ebp)
40a544:	8d 45 80             	lea    -0x80(%ebp),%eax
40a547:	6a 00                	push   $0x0
40a549:	50                   	push   %eax
40a54a:	e8 01 b6 ff ff       	call   0x405b50
40a54f:	8d 45 80             	lea    -0x80(%ebp),%eax
40a552:	83 c4 0c             	add    $0xc,%esp
40a555:	89 45 d0             	mov    %eax,-0x30(%ebp)
40a558:	8d 45 d8             	lea    -0x28(%ebp),%eax
40a55b:	6a 00                	push   $0x0
40a55d:	c7 45 80 15 00 00 40 	movl   $0x40000015,-0x80(%ebp)
40a564:	89 75 8c             	mov    %esi,-0x74(%ebp)
40a567:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40a56a:	ff 15 d0 70 41 00    	call   *0x4170d0
40a570:	8d 45 d0             	lea    -0x30(%ebp),%eax
40a573:	50                   	push   %eax
40a574:	ff 15 cc 70 41 00    	call   *0x4170cc
40a57a:	6a 03                	push   $0x3
40a57c:	e8 52 35 00 00       	call   0x40dad3
40a581:	cc                   	int3
40a582:	55                   	push   %ebp
40a583:	8b ec                	mov    %esp,%ebp
40a585:	51                   	push   %ecx
40a586:	53                   	push   %ebx
40a587:	56                   	push   %esi
40a588:	8b f1                	mov    %ecx,%esi
40a58a:	33 db                	xor    %ebx,%ebx
40a58c:	3b f3                	cmp    %ebx,%esi
40a58e:	75 1e                	jne    0x40a5ae
40a590:	e8 65 ee ff ff       	call   0x4093fa
40a595:	6a 16                	push   $0x16
40a597:	5e                   	pop    %esi
40a598:	53                   	push   %ebx
40a599:	53                   	push   %ebx
40a59a:	53                   	push   %ebx
40a59b:	53                   	push   %ebx
40a59c:	53                   	push   %ebx
40a59d:	89 30                	mov    %esi,(%eax)
40a59f:	e8 ac d0 ff ff       	call   0x407650
40a5a4:	83 c4 14             	add    $0x14,%esp
40a5a7:	8b c6                	mov    %esi,%eax
40a5a9:	e9 a9 00 00 00       	jmp    0x40a657
40a5ae:	39 5d 08             	cmp    %ebx,0x8(%ebp)
40a5b1:	57                   	push   %edi
40a5b2:	77 1e                	ja     0x40a5d2
40a5b4:	e8 41 ee ff ff       	call   0x4093fa
40a5b9:	6a 16                	push   $0x16
40a5bb:	5e                   	pop    %esi
40a5bc:	53                   	push   %ebx
40a5bd:	53                   	push   %ebx
40a5be:	53                   	push   %ebx
40a5bf:	53                   	push   %ebx
40a5c0:	53                   	push   %ebx
40a5c1:	89 30                	mov    %esi,(%eax)
40a5c3:	e8 88 d0 ff ff       	call   0x407650
40a5c8:	83 c4 14             	add    $0x14,%esp
40a5cb:	8b c6                	mov    %esi,%eax
40a5cd:	e9 84 00 00 00       	jmp    0x40a656
40a5d2:	33 c9                	xor    %ecx,%ecx
40a5d4:	39 5d 10             	cmp    %ebx,0x10(%ebp)
40a5d7:	88 1e                	mov    %bl,(%esi)
40a5d9:	0f 95 c1             	setne  %cl
40a5dc:	41                   	inc    %ecx
40a5dd:	39 4d 08             	cmp    %ecx,0x8(%ebp)
40a5e0:	77 09                	ja     0x40a5eb
40a5e2:	e8 13 ee ff ff       	call   0x4093fa
40a5e7:	6a 22                	push   $0x22
40a5e9:	eb d0                	jmp    0x40a5bb
40a5eb:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40a5ee:	83 c1 fe             	add    $0xfffffffe,%ecx
40a5f1:	83 f9 22             	cmp    $0x22,%ecx
40a5f4:	77 be                	ja     0x40a5b4
40a5f6:	39 5d 10             	cmp    %ebx,0x10(%ebp)
40a5f9:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40a5fc:	8b ce                	mov    %esi,%ecx
40a5fe:	74 0f                	je     0x40a60f
40a600:	c6 06 2d             	movb   $0x2d,(%esi)
40a603:	8d 4e 01             	lea    0x1(%esi),%ecx
40a606:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
40a60d:	f7 d8                	neg    %eax
40a60f:	8b f9                	mov    %ecx,%edi
40a611:	33 d2                	xor    %edx,%edx
40a613:	f7 75 0c             	divl   0xc(%ebp)
40a616:	83 fa 09             	cmp    $0x9,%edx
40a619:	76 05                	jbe    0x40a620
40a61b:	80 c2 57             	add    $0x57,%dl
40a61e:	eb 03                	jmp    0x40a623
40a620:	80 c2 30             	add    $0x30,%dl
40a623:	88 11                	mov    %dl,(%ecx)
40a625:	41                   	inc    %ecx
40a626:	ff 45 fc             	incl   -0x4(%ebp)
40a629:	33 db                	xor    %ebx,%ebx
40a62b:	3b c3                	cmp    %ebx,%eax
40a62d:	76 08                	jbe    0x40a637
40a62f:	8b 55 08             	mov    0x8(%ebp),%edx
40a632:	39 55 fc             	cmp    %edx,-0x4(%ebp)
40a635:	72 da                	jb     0x40a611
40a637:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a63a:	3b 45 08             	cmp    0x8(%ebp),%eax
40a63d:	72 04                	jb     0x40a643
40a63f:	88 1e                	mov    %bl,(%esi)
40a641:	eb 9f                	jmp    0x40a5e2
40a643:	88 19                	mov    %bl,(%ecx)
40a645:	49                   	dec    %ecx
40a646:	8a 17                	mov    (%edi),%dl
40a648:	8a 01                	mov    (%ecx),%al
40a64a:	88 11                	mov    %dl,(%ecx)
40a64c:	49                   	dec    %ecx
40a64d:	88 07                	mov    %al,(%edi)
40a64f:	47                   	inc    %edi
40a650:	3b f9                	cmp    %ecx,%edi
40a652:	72 f2                	jb     0x40a646
40a654:	33 c0                	xor    %eax,%eax
40a656:	5f                   	pop    %edi
40a657:	5e                   	pop    %esi
40a658:	5b                   	pop    %ebx
40a659:	c9                   	leave
40a65a:	c2 0c 00             	ret    $0xc
40a65d:	55                   	push   %ebp
40a65e:	8b ec                	mov    %esp,%ebp
40a660:	83 7d 14 0a          	cmpl   $0xa,0x14(%ebp)
40a664:	8b 45 08             	mov    0x8(%ebp),%eax
40a667:	75 0a                	jne    0x40a673
40a669:	85 c0                	test   %eax,%eax
40a66b:	7d 06                	jge    0x40a673
40a66d:	6a 01                	push   $0x1
40a66f:	6a 0a                	push   $0xa
40a671:	eb 05                	jmp    0x40a678
40a673:	6a 00                	push   $0x0
40a675:	ff 75 14             	push   0x14(%ebp)
40a678:	ff 75 10             	push   0x10(%ebp)
40a67b:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40a67e:	e8 ff fe ff ff       	call   0x40a582
40a683:	5d                   	pop    %ebp
40a684:	c3                   	ret
40a685:	55                   	push   %ebp
40a686:	8b ec                	mov    %esp,%ebp
40a688:	83 ec 0c             	sub    $0xc,%esp
40a68b:	53                   	push   %ebx
40a68c:	33 db                	xor    %ebx,%ebx
40a68e:	3b fb                	cmp    %ebx,%edi
40a690:	56                   	push   %esi
40a691:	75 1e                	jne    0x40a6b1
40a693:	e8 62 ed ff ff       	call   0x4093fa
40a698:	6a 16                	push   $0x16
40a69a:	5e                   	pop    %esi
40a69b:	89 30                	mov    %esi,(%eax)
40a69d:	53                   	push   %ebx
40a69e:	53                   	push   %ebx
40a69f:	53                   	push   %ebx
40a6a0:	53                   	push   %ebx
40a6a1:	53                   	push   %ebx
40a6a2:	e8 a9 cf ff ff       	call   0x407650
40a6a7:	83 c4 14             	add    $0x14,%esp
40a6aa:	8b c6                	mov    %esi,%eax
40a6ac:	e9 c4 00 00 00       	jmp    0x40a775
40a6b1:	39 5d 10             	cmp    %ebx,0x10(%ebp)
40a6b4:	76 dd                	jbe    0x40a693
40a6b6:	33 c0                	xor    %eax,%eax
40a6b8:	39 5d 18             	cmp    %ebx,0x18(%ebp)
40a6bb:	88 1f                	mov    %bl,(%edi)
40a6bd:	0f 95 c0             	setne  %al
40a6c0:	40                   	inc    %eax
40a6c1:	39 45 10             	cmp    %eax,0x10(%ebp)
40a6c4:	77 09                	ja     0x40a6cf
40a6c6:	e8 2f ed ff ff       	call   0x4093fa
40a6cb:	6a 22                	push   $0x22
40a6cd:	eb cb                	jmp    0x40a69a
40a6cf:	8b 45 14             	mov    0x14(%ebp),%eax
40a6d2:	83 c0 fe             	add    $0xfffffffe,%eax