40e4ec:	80 4e 04 80          	orb    $0x80,0x4(%esi)
40e4f0:	eb 72                	jmp    0x40e564
40e4f2:	c6 46 04 81          	movb   $0x81,0x4(%esi)
40e4f6:	85 db                	test   %ebx,%ebx
40e4f8:	75 05                	jne    0x40e4ff
40e4fa:	6a f6                	push   $0xfffffff6
40e4fc:	58                   	pop    %eax
40e4fd:	eb 0a                	jmp    0x40e509
40e4ff:	8b c3                	mov    %ebx,%eax
40e501:	48                   	dec    %eax
40e502:	f7 d8                	neg    %eax
40e504:	1b c0                	sbb    %eax,%eax
40e506:	83 c0 f5             	add    $0xfffffff5,%eax
40e509:	50                   	push   %eax
40e50a:	ff 15 20 71 41 00    	call   *0x417120
40e510:	8b f8                	mov    %eax,%edi
40e512:	83 ff ff             	cmp    $0xffffffff,%edi
40e515:	74 43                	je     0x40e55a
40e517:	85 ff                	test   %edi,%edi
40e519:	74 3f                	je     0x40e55a
40e51b:	57                   	push   %edi
40e51c:	ff 15 3c 71 41 00    	call   *0x41713c
40e522:	85 c0                	test   %eax,%eax
40e524:	74 34                	je     0x40e55a
40e526:	89 3e                	mov    %edi,(%esi)
40e528:	25 ff 00 00 00       	and    $0xff,%eax
40e52d:	83 f8 02             	cmp    $0x2,%eax
40e530:	75 06                	jne    0x40e538
40e532:	80 4e 04 40          	orb    $0x40,0x4(%esi)
40e536:	eb 09                	jmp    0x40e541
40e538:	83 f8 03             	cmp    $0x3,%eax
40e53b:	75 04                	jne    0x40e541
40e53d:	80 4e 04 08          	orb    $0x8,0x4(%esi)
40e541:	68 a0 0f 00 00       	push   $0xfa0
40e546:	8d 46 0c             	lea    0xc(%esi),%eax
40e549:	50                   	push   %eax
40e54a:	e8 26 5b 00 00       	call   0x414075
40e54f:	59                   	pop    %ecx
40e550:	59                   	pop    %ecx
40e551:	85 c0                	test   %eax,%eax
40e553:	74 37                	je     0x40e58c
40e555:	ff 46 08             	incl   0x8(%esi)
40e558:	eb 0a                	jmp    0x40e564
40e55a:	80 4e 04 40          	orb    $0x40,0x4(%esi)
40e55e:	c7 06 fe ff ff ff    	movl   $0xfffffffe,(%esi)
40e564:	43                   	inc    %ebx
40e565:	83 fb 03             	cmp    $0x3,%ebx
40e568:	0f 8c 67 ff ff ff    	jl     0x40e4d5
40e56e:	ff 35 b4 e4 41 00    	push   0x41e4b4
40e574:	ff 15 38 71 41 00    	call   *0x417138
40e57a:	33 c0                	xor    %eax,%eax
40e57c:	eb 11                	jmp    0x40e58f
40e57e:	33 c0                	xor    %eax,%eax
40e580:	40                   	inc    %eax
40e581:	c3                   	ret
40e582:	8b 65 e8             	mov    -0x18(%ebp),%esp
40e585:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40e58c:	83 c8 ff             	or     $0xffffffff,%eax
40e58f:	e8 f9 f0 ff ff       	call   0x40d68d
40e594:	c3                   	ret
40e595:	56                   	push   %esi
40e596:	57                   	push   %edi
40e597:	b8 9c 9f 41 00       	mov    $0x419f9c,%eax
40e59c:	bf 9c 9f 41 00       	mov    $0x419f9c,%edi
40e5a1:	3b c7                	cmp    %edi,%eax
40e5a3:	8b f0                	mov    %eax,%esi
40e5a5:	73 0f                	jae    0x40e5b6
40e5a7:	8b 06                	mov    (%esi),%eax
40e5a9:	85 c0                	test   %eax,%eax
40e5ab:	74 02                	je     0x40e5af
40e5ad:	ff d0                	call   *%eax
40e5af:	83 c6 04             	add    $0x4,%esi
40e5b2:	3b f7                	cmp    %edi,%esi
40e5b4:	72 f1                	jb     0x40e5a7
40e5b6:	5f                   	pop    %edi
40e5b7:	5e                   	pop    %esi
40e5b8:	c3                   	ret
40e5b9:	56                   	push   %esi
40e5ba:	57                   	push   %edi
40e5bb:	b8 a4 9f 41 00       	mov    $0x419fa4,%eax
40e5c0:	bf a4 9f 41 00       	mov    $0x419fa4,%edi
40e5c5:	3b c7                	cmp    %edi,%eax
40e5c7:	8b f0                	mov    %eax,%esi
40e5c9:	73 0f                	jae    0x40e5da
40e5cb:	8b 06                	mov    (%esi),%eax
40e5cd:	85 c0                	test   %eax,%eax
40e5cf:	74 02                	je     0x40e5d3
40e5d1:	ff d0                	call   *%eax
40e5d3:	83 c6 04             	add    $0x4,%esi
40e5d6:	3b f7                	cmp    %edi,%esi
40e5d8:	72 f1                	jb     0x40e5cb
40e5da:	5f                   	pop    %edi
40e5db:	5e                   	pop    %esi
40e5dc:	c3                   	ret
40e5dd:	55                   	push   %ebp
40e5de:	8b ec                	mov    %esp,%ebp
40e5e0:	83 ec 10             	sub    $0x10,%esp
40e5e3:	a1 20 c5 41 00       	mov    0x41c520,%eax
40e5e8:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
40e5ec:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40e5f0:	53                   	push   %ebx
40e5f1:	57                   	push   %edi
40e5f2:	bf 4e e6 40 bb       	mov    $0xbb40e64e,%edi
40e5f7:	3b c7                	cmp    %edi,%eax
40e5f9:	bb 00 00 ff ff       	mov    $0xffff0000,%ebx
40e5fe:	74 0d                	je     0x40e60d
40e600:	85 c3                	test   %eax,%ebx
40e602:	74 09                	je     0x40e60d
40e604:	f7 d0                	not    %eax
40e606:	a3 24 c5 41 00       	mov    %eax,0x41c524
40e60b:	eb 60                	jmp    0x40e66d
40e60d:	56                   	push   %esi
40e60e:	8d 45 f8             	lea    -0x8(%ebp),%eax
40e611:	50                   	push   %eax
40e612:	ff 15 a4 70 41 00    	call   *0x4170a4
40e618:	8b 75 fc             	mov    -0x4(%ebp),%esi
40e61b:	33 75 f8             	xor    -0x8(%ebp),%esi
40e61e:	ff 15 48 71 41 00    	call   *0x417148
40e624:	33 f0                	xor    %eax,%esi
40e626:	ff 15 04 71 41 00    	call   *0x417104
40e62c:	33 f0                	xor    %eax,%esi
40e62e:	ff 15 44 71 41 00    	call   *0x417144
40e634:	33 f0                	xor    %eax,%esi
40e636:	8d 45 f0             	lea    -0x10(%ebp),%eax
40e639:	50                   	push   %eax
40e63a:	ff 15 40 71 41 00    	call   *0x417140
40e640:	8b 45 f4             	mov    -0xc(%ebp),%eax
40e643:	33 45 f0             	xor    -0x10(%ebp),%eax
40e646:	33 f0                	xor    %eax,%esi
40e648:	3b f7                	cmp    %edi,%esi
40e64a:	75 07                	jne    0x40e653
40e64c:	be 4f e6 40 bb       	mov    $0xbb40e64f,%esi
40e651:	eb 0b                	jmp    0x40e65e
40e653:	85 f3                	test   %esi,%ebx
40e655:	75 07                	jne    0x40e65e
40e657:	8b c6                	mov    %esi,%eax
40e659:	c1 e0 10             	shl    $0x10,%eax
40e65c:	0b f0                	or     %eax,%esi
40e65e:	89 35 20 c5 41 00    	mov    %esi,0x41c520
40e664:	f7 d6                	not    %esi
40e666:	89 35 24 c5 41 00    	mov    %esi,0x41c524
40e66c:	5e                   	pop    %esi
40e66d:	5f                   	pop    %edi
40e66e:	5b                   	pop    %ebx
40e66f:	c9                   	leave
40e670:	c3                   	ret
40e671:	33 c0                	xor    %eax,%eax
40e673:	40                   	inc    %eax
40e674:	83 7c 24 04 00       	cmpl   $0x0,0x4(%esp)
40e679:	75 02                	jne    0x40e67d
40e67b:	33 c0                	xor    %eax,%eax
40e67d:	c3                   	ret
40e67e:	83 25 b0 e4 41 00 00 	andl   $0x0,0x41e4b0
40e685:	c3                   	ret
40e686:	56                   	push   %esi
40e687:	8b 74 24 08          	mov    0x8(%esp),%esi
40e68b:	57                   	push   %edi
40e68c:	33 ff                	xor    %edi,%edi
40e68e:	3b f7                	cmp    %edi,%esi
40e690:	75 1d                	jne    0x40e6af
40e692:	e8 63 ad ff ff       	call   0x4093fa
40e697:	57                   	push   %edi
40e698:	57                   	push   %edi
40e699:	57                   	push   %edi
40e69a:	57                   	push   %edi
40e69b:	57                   	push   %edi
40e69c:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40e6a2:	e8 a9 8f ff ff       	call   0x407650
40e6a7:	83 c4 14             	add    $0x14,%esp
40e6aa:	e9 01 01 00 00       	jmp    0x40e7b0
40e6af:	8b 46 0c             	mov    0xc(%esi),%eax
40e6b2:	a8 83                	test   $0x83,%al
40e6b4:	0f 84 f6 00 00 00    	je     0x40e7b0
40e6ba:	a8 40                	test   $0x40,%al
40e6bc:	0f 85 ee 00 00 00    	jne    0x40e7b0
40e6c2:	a8 02                	test   $0x2,%al
40e6c4:	74 0b                	je     0x40e6d1
40e6c6:	83 c8 20             	or     $0x20,%eax
40e6c9:	89 46 0c             	mov    %eax,0xc(%esi)
40e6cc:	e9 df 00 00 00       	jmp    0x40e7b0
40e6d1:	83 c8 01             	or     $0x1,%eax
40e6d4:	66 a9 0c 01          	test   $0x10c,%ax
40e6d8:	89 46 0c             	mov    %eax,0xc(%esi)
40e6db:	75 09                	jne    0x40e6e6
40e6dd:	56                   	push   %esi
40e6de:	e8 7a 06 00 00       	call   0x40ed5d
40e6e3:	59                   	pop    %ecx
40e6e4:	eb 05                	jmp    0x40e6eb
40e6e6:	8b 46 08             	mov    0x8(%esi),%eax
40e6e9:	89 06                	mov    %eax,(%esi)
40e6eb:	ff 76 18             	push   0x18(%esi)
40e6ee:	ff 76 08             	push   0x8(%esi)
40e6f1:	56                   	push   %esi
40e6f2:	e8 4f 03 00 00       	call   0x40ea46
40e6f7:	59                   	pop    %ecx
40e6f8:	50                   	push   %eax
40e6f9:	e8 64 64 00 00       	call   0x414b62
40e6fe:	83 c4 0c             	add    $0xc,%esp
40e701:	3b c7                	cmp    %edi,%eax
40e703:	89 46 04             	mov    %eax,0x4(%esi)
40e706:	0f 84 94 00 00 00    	je     0x40e7a0
40e70c:	83 f8 01             	cmp    $0x1,%eax
40e70f:	0f 84 8b 00 00 00    	je     0x40e7a0
40e715:	83 f8 ff             	cmp    $0xffffffff,%eax
40e718:	0f 84 82 00 00 00    	je     0x40e7a0
40e71e:	f6 46 0c 82          	testb  $0x82,0xc(%esi)
40e722:	75 4f                	jne    0x40e773
40e724:	56                   	push   %esi
40e725:	e8 1c 03 00 00       	call   0x40ea46
40e72a:	83 f8 ff             	cmp    $0xffffffff,%eax
40e72d:	59                   	pop    %ecx
40e72e:	74 2e                	je     0x40e75e
40e730:	56                   	push   %esi
40e731:	e8 10 03 00 00       	call   0x40ea46
40e736:	83 f8 fe             	cmp    $0xfffffffe,%eax
40e739:	59                   	pop    %ecx
40e73a:	74 22                	je     0x40e75e
40e73c:	56                   	push   %esi
40e73d:	e8 04 03 00 00       	call   0x40ea46
40e742:	c1 f8 05             	sar    $0x5,%eax
40e745:	56                   	push   %esi
40e746:	8d 3c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%edi
40e74d:	e8 f4 02 00 00       	call   0x40ea46
40e752:	83 e0 1f             	and    $0x1f,%eax
40e755:	6b c0 28             	imul   $0x28,%eax,%eax
40e758:	03 07                	add    (%edi),%eax
40e75a:	59                   	pop    %ecx
40e75b:	59                   	pop    %ecx
40e75c:	eb 05                	jmp    0x40e763
40e75e:	b8 f0 cb 41 00       	mov    $0x41cbf0,%eax
40e763:	8a 40 04             	mov    0x4(%eax),%al
40e766:	24 82                	and    $0x82,%al
40e768:	3c 82                	cmp    $0x82,%al
40e76a:	75 07                	jne    0x40e773
40e76c:	81 4e 0c 00 20 00 00 	orl    $0x2000,0xc(%esi)
40e773:	81 7e 18 00 02 00 00 	cmpl   $0x200,0x18(%esi)
40e77a:	75 14                	jne    0x40e790
40e77c:	8b 46 0c             	mov    0xc(%esi),%eax
40e77f:	a8 08                	test   $0x8,%al
40e781:	74 0d                	je     0x40e790
40e783:	66 a9 00 04          	test   $0x400,%ax
40e787:	75 07                	jne    0x40e790
40e789:	c7 46 18 00 10 00 00 	movl   $0x1000,0x18(%esi)
40e790:	8b 0e                	mov    (%esi),%ecx
40e792:	83 46 04 fe          	addl   $0xfffffffe,0x4(%esi)
40e796:	0f b7 01             	movzwl (%ecx),%eax
40e799:	83 c1 02             	add    $0x2,%ecx
40e79c:	89 0e                	mov    %ecx,(%esi)
40e79e:	eb 15                	jmp    0x40e7b5
40e7a0:	f7 d8                	neg    %eax
40e7a2:	1b c0                	sbb    %eax,%eax
40e7a4:	83 e0 10             	and    $0x10,%eax
40e7a7:	83 c0 10             	add    $0x10,%eax
40e7aa:	09 46 0c             	or     %eax,0xc(%esi)
40e7ad:	89 7e 04             	mov    %edi,0x4(%esi)
40e7b0:	b8 ff ff 00 00       	mov    $0xffff,%eax
40e7b5:	5f                   	pop    %edi
40e7b6:	5e                   	pop    %esi
40e7b7:	c3                   	ret
40e7b8:	55                   	push   %ebp
40e7b9:	8b ec                	mov    %esp,%ebp
40e7bb:	83 ec 10             	sub    $0x10,%esp
40e7be:	53                   	push   %ebx
40e7bf:	56                   	push   %esi
40e7c0:	8b 75 0c             	mov    0xc(%ebp),%esi
40e7c3:	33 db                	xor    %ebx,%ebx
40e7c5:	3b f3                	cmp    %ebx,%esi
40e7c7:	74 13                	je     0x40e7dc
40e7c9:	39 5d 10             	cmp    %ebx,0x10(%ebp)
40e7cc:	74 0e                	je     0x40e7dc
40e7ce:	38 1e                	cmp    %bl,(%esi)
40e7d0:	75 10                	jne    0x40e7e2
40e7d2:	8b 45 08             	mov    0x8(%ebp),%eax
40e7d5:	3b c3                	cmp    %ebx,%eax
40e7d7:	74 03                	je     0x40e7dc
40e7d9:	66 89 18             	mov    %bx,(%eax)
40e7dc:	33 c0                	xor    %eax,%eax
40e7de:	5e                   	pop    %esi
40e7df:	5b                   	pop    %ebx
40e7e0:	c9                   	leave
40e7e1:	c3                   	ret
40e7e2:	ff 75 14             	push   0x14(%ebp)
40e7e5:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40e7e8:	e8 d7 a1 ff ff       	call   0x4089c4
40e7ed:	8b 45 f0             	mov    -0x10(%ebp),%eax
40e7f0:	39 58 14             	cmp    %ebx,0x14(%eax)
40e7f3:	75 1f                	jne    0x40e814
40e7f5:	8b 45 08             	mov    0x8(%ebp),%eax
40e7f8:	3b c3                	cmp    %ebx,%eax
40e7fa:	74 07                	je     0x40e803
40e7fc:	66 0f b6 0e          	movzbw (%esi),%cx
40e800:	66 89 08             	mov    %cx,(%eax)
40e803:	38 5d fc             	cmp    %bl,-0x4(%ebp)
40e806:	74 07                	je     0x40e80f
40e808:	8b 45 f8             	mov    -0x8(%ebp),%eax
40e80b:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
40e80f:	33 c0                	xor    %eax,%eax
40e811:	40                   	inc    %eax
40e812:	eb ca                	jmp    0x40e7de
40e814:	8d 45 f0             	lea    -0x10(%ebp),%eax
40e817:	50                   	push   %eax
40e818:	0f b6 06             	movzbl (%esi),%eax
40e81b:	50                   	push   %eax
40e81c:	e8 c1 00 00 00       	call   0x40e8e2
40e821:	85 c0                	test   %eax,%eax
40e823:	59                   	pop    %ecx
40e824:	59                   	pop    %ecx
40e825:	74 7d                	je     0x40e8a4
40e827:	8b 45 f0             	mov    -0x10(%ebp),%eax
40e82a:	8b 88 ac 00 00 00    	mov    0xac(%eax),%ecx
40e830:	83 f9 01             	cmp    $0x1,%ecx
40e833:	7e 25                	jle    0x40e85a
40e835:	39 4d 10             	cmp    %ecx,0x10(%ebp)
40e838:	7c 20                	jl     0x40e85a
40e83a:	33 d2                	xor    %edx,%edx
40e83c:	39 5d 08             	cmp    %ebx,0x8(%ebp)
40e83f:	0f 95 c2             	setne  %dl
40e842:	52                   	push   %edx
40e843:	ff 75 08             	push   0x8(%ebp)
40e846:	51                   	push   %ecx
40e847:	56                   	push   %esi
40e848:	6a 09                	push   $0x9
40e84a:	ff 70 04             	push   0x4(%eax)
40e84d:	ff 15 a0 70 41 00    	call   *0x4170a0
40e853:	85 c0                	test   %eax,%eax
40e855:	8b 45 f0             	mov    -0x10(%ebp),%eax
40e858:	75 10                	jne    0x40e86a
40e85a:	8b 4d 10             	mov    0x10(%ebp),%ecx
40e85d:	3b 88 ac 00 00 00    	cmp    0xac(%eax),%ecx
40e863:	72 20                	jb     0x40e885
40e865:	38 5e 01             	cmp    %bl,0x1(%esi)
40e868:	74 1b                	je     0x40e885
40e86a:	38 5d fc             	cmp    %bl,-0x4(%ebp)
40e86d:	8b 80 ac 00 00 00    	mov    0xac(%eax),%eax
40e873:	0f 84 65 ff ff ff    	je     0x40e7de
40e879:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40e87c:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
40e880:	e9 59 ff ff ff       	jmp    0x40e7de
40e885:	e8 70 ab ff ff       	call   0x4093fa
40e88a:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
40e890:	38 5d fc             	cmp    %bl,-0x4(%ebp)
40e893:	74 07                	je     0x40e89c
40e895:	8b 45 f8             	mov    -0x8(%ebp),%eax
40e898:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
40e89c:	83 c8 ff             	or     $0xffffffff,%eax
40e89f:	e9 3a ff ff ff       	jmp    0x40e7de
40e8a4:	33 c0                	xor    %eax,%eax
40e8a6:	39 5d 08             	cmp    %ebx,0x8(%ebp)
40e8a9:	0f 95 c0             	setne  %al
40e8ac:	50                   	push   %eax