40e5c4:	75 61                	jne    0x40e627
40e5c6:	8b 56 38             	mov    0x38(%esi),%edx
40e5c9:	8d 44 24 0c          	lea    0xc(%esp),%eax
40e5cd:	50                   	push   %eax
40e5ce:	b9 2a 00 00 00       	mov    $0x2a,%ecx
40e5d3:	e8 b8 07 00 00       	call   0x40ed90
40e5d8:	83 f8 ff             	cmp    $0xffffffff,%eax
40e5db:	75 4a                	jne    0x40e627
40e5dd:	68 00 20 00 00       	push   $0x2000
40e5e2:	8b d7                	mov    %edi,%edx
40e5e4:	8b ce                	mov    %esi,%ecx
40e5e6:	e8 25 0e 00 00       	call   0x40f410
40e5eb:	83 f8 02             	cmp    $0x2,%eax
40e5ee:	74 37                	je     0x40e627
40e5f0:	8b d3                	mov    %ebx,%edx
40e5f2:	8b ce                	mov    %esi,%ecx
40e5f4:	e8 f9 b8 ff ff       	call   0x409ef2
40e5f9:	85 c0                	test   %eax,%eax
40e5fb:	0f 85 00 ff ff ff    	jne    0x40e501
40e601:	51                   	push   %ecx
40e602:	8d 50 02             	lea    0x2(%eax),%edx
40e605:	c7 47 02 2f 00 53 00 	movl   $0x53002f,0x2(%edi)
40e60c:	8b ce                	mov    %esi,%ecx
40e60e:	e8 6e 3a 00 00       	call   0x412081
40e613:	e9 de fe ff ff       	jmp    0x40e4f6
40e618:	8b cf                	mov    %edi,%ecx
40e61a:	ff 15 c4 a4 44 00    	call   *0x44a4c4
40e620:	ff d7                	call   *%edi
40e622:	e9 cf fe ff ff       	jmp    0x40e4f6
40e627:	51                   	push   %ecx
40e628:	8b d7                	mov    %edi,%edx
40e62a:	8b ce                	mov    %esi,%ecx
40e62c:	e8 b9 71 00 00       	call   0x4157ea
40e631:	85 c0                	test   %eax,%eax
40e633:	0f 85 c8 fe ff ff    	jne    0x40e501
40e639:	8d 48 50             	lea    0x50(%eax),%ecx
40e63c:	e8 8f f6 ff ff       	call   0x40dcd0
40e641:	8b f0                	mov    %eax,%esi
40e643:	85 f6                	test   %esi,%esi
40e645:	0f 84 b6 fe ff ff    	je     0x40e501
40e64b:	b9 d0 24 40 00       	mov    $0x4024d0,%ecx
40e650:	c7 06 00 00 00 00    	movl   $0x0,(%esi)
40e656:	e8 d3 05 00 00       	call   0x40ec2e
40e65b:	89 46 38             	mov    %eax,0x38(%esi)
40e65e:	89 7e 3c             	mov    %edi,0x3c(%esi)
40e661:	eb 8d                	jmp    0x40e5f0
40e663:	cc                   	int3
40e664:	cc                   	int3
40e665:	cc                   	int3
40e666:	cc                   	int3
40e667:	cc                   	int3
40e668:	cc                   	int3
40e669:	cc                   	int3
40e66a:	cc                   	int3
40e66b:	cc                   	int3
40e66c:	cc                   	int3
40e66d:	cc                   	int3
40e66e:	cc                   	int3
40e66f:	cc                   	int3
40e670:	8b ff                	mov    %edi,%edi
40e672:	55                   	push   %ebp
40e673:	8b ec                	mov    %esp,%ebp
40e675:	83 ec 08             	sub    $0x8,%esp
40e678:	53                   	push   %ebx
40e679:	56                   	push   %esi
40e67a:	8b f1                	mov    %ecx,%esi
40e67c:	57                   	push   %edi
40e67d:	8b fa                	mov    %edx,%edi
40e67f:	85 f6                	test   %esi,%esi
40e681:	74 43                	je     0x40e6c6
40e683:	8b 06                	mov    (%esi),%eax
40e685:	85 c0                	test   %eax,%eax
40e687:	75 48                	jne    0x40e6d1
40e689:	8a 5d 08             	mov    0x8(%ebp),%bl
40e68c:	8d 56 38             	lea    0x38(%esi),%edx
40e68f:	57                   	push   %edi
40e690:	8a cb                	mov    %bl,%cl
40e692:	e8 f9 00 00 00       	call   0x40e790
40e697:	85 c0                	test   %eax,%eax
40e699:	0f 85 ae 00 00 00    	jne    0x40e74d
40e69f:	8d 47 04             	lea    0x4(%edi),%eax
40e6a2:	8a cb                	mov    %bl,%cl
40e6a4:	50                   	push   %eax
40e6a5:	8d 56 3c             	lea    0x3c(%esi),%edx
40e6a8:	e8 e3 00 00 00       	call   0x40e790
40e6ad:	85 c0                	test   %eax,%eax
40e6af:	0f 85 98 00 00 00    	jne    0x40e74d
40e6b5:	8b 76 34             	mov    0x34(%esi),%esi
40e6b8:	83 c7 08             	add    $0x8,%edi
40e6bb:	c7 45 fc 02 00 00 00 	movl   $0x2,-0x4(%ebp)
40e6c2:	85 f6                	test   %esi,%esi
40e6c4:	75 34                	jne    0x40e6fa
40e6c6:	33 c0                	xor    %eax,%eax
40e6c8:	5f                   	pop    %edi
40e6c9:	5e                   	pop    %esi
40e6ca:	5b                   	pop    %ebx
40e6cb:	8b e5                	mov    %ebp,%esp
40e6cd:	5d                   	pop    %ebp
40e6ce:	c2 04 00             	ret    $0x4
40e6d1:	83 f8 2e             	cmp    $0x2e,%eax
40e6d4:	74 16                	je     0x40e6ec
40e6d6:	83 e8 2b             	sub    $0x2b,%eax
40e6d9:	83 f8 10             	cmp    $0x10,%eax
40e6dc:	77 e8                	ja     0x40e6c6
40e6de:	0f b6 80 7c e7 40 00 	movzbl 0x40e77c(%eax),%eax
40e6e5:	ff 24 85 68 e7 40 00 	jmp    *0x40e768(,%eax,4)
40e6ec:	8b 76 34             	mov    0x34(%esi),%esi
40e6ef:	33 db                	xor    %ebx,%ebx
40e6f1:	85 f6                	test   %esi,%esi
40e6f3:	74 d1                	je     0x40e6c6
40e6f5:	e9 80 f5 00 00       	jmp    0x41dc7a
40e6fa:	57                   	push   %edi
40e6fb:	8d 56 04             	lea    0x4(%esi),%edx
40e6fe:	8a cb                	mov    %bl,%cl
40e700:	e8 8b 00 00 00       	call   0x40e790
40e705:	85 c0                	test   %eax,%eax
40e707:	75 44                	jne    0x40e74d
40e709:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e70c:	83 c7 04             	add    $0x4,%edi
40e70f:	8b 76 14             	mov    0x14(%esi),%esi
40e712:	40                   	inc    %eax
40e713:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e716:	83 f8 0c             	cmp    $0xc,%eax
40e719:	7c a7                	jl     0x40e6c2
40e71b:	eb a9                	jmp    0x40e6c6
40e71d:	8b 76 3c             	mov    0x3c(%esi),%esi
40e720:	83 3e 38             	cmpl   $0x38,(%esi)
40e723:	74 3b                	je     0x40e760
40e725:	8a 5d 08             	mov    0x8(%ebp),%bl
40e728:	8d 56 38             	lea    0x38(%esi),%edx
40e72b:	57                   	push   %edi
40e72c:	8a cb                	mov    %bl,%cl
40e72e:	e8 5d 00 00 00       	call   0x40e790
40e733:	85 c0                	test   %eax,%eax
40e735:	75 16                	jne    0x40e74d
40e737:	8d 47 04             	lea    0x4(%edi),%eax
40e73a:	8a cb                	mov    %bl,%cl
40e73c:	50                   	push   %eax
40e73d:	8d 56 3c             	lea    0x3c(%esi),%edx
40e740:	e8 4b 00 00 00       	call   0x40e790
40e745:	85 c0                	test   %eax,%eax
40e747:	0f 84 79 ff ff ff    	je     0x40e6c6
40e74d:	b8 01 00 00 00       	mov    $0x1,%eax
40e752:	e9 71 ff ff ff       	jmp    0x40e6c8
40e757:	8a 4d 08             	mov    0x8(%ebp),%cl
40e75a:	8d 56 3c             	lea    0x3c(%esi),%edx
40e75d:	57                   	push   %edi
40e75e:	eb e0                	jmp    0x40e740
40e760:	8b 76 3c             	mov    0x3c(%esi),%esi
40e763:	eb c0                	jmp    0x40e725
40e765:	8d 49 00             	lea    0x0(%ecx),%ecx
40e768:	57                   	push   %edi
40e769:	e7 40                	out    %eax,$0x40
40e76b:	00 1d e7 40 00 89    	add    %bl,0x890040e7
40e771:	e6 40                	out    %al,$0x40
40e773:	00 ec                	add    %ch,%ah
40e775:	e6 40                	out    %al,$0x40
40e777:	00 c6                	add    %al,%dh
40e779:	e6 40                	out    %al,$0x40
40e77b:	00 00                	add    %al,(%eax)
40e77d:	01 02                	add    %eax,(%edx)
40e77f:	04 03                	add    $0x3,%al
40e781:	03 03                	add    (%ebx),%eax
40e783:	03 03                	add    (%ebx),%eax
40e785:	02 02                	add    (%edx),%al
40e787:	02 02                	add    (%edx),%al
40e789:	04 02                	add    $0x2,%al
40e78b:	02 03                	add    (%ebx),%al
40e78d:	cc                   	int3
40e78e:	cc                   	int3
40e78f:	cc                   	int3
40e790:	8b ff                	mov    %edi,%edi
40e792:	55                   	push   %ebp
40e793:	8b ec                	mov    %esp,%ebp
40e795:	83 ec 20             	sub    $0x20,%esp
40e798:	89 55 ec             	mov    %edx,-0x14(%ebp)
40e79b:	53                   	push   %ebx
40e79c:	56                   	push   %esi
40e79d:	57                   	push   %edi
40e79e:	84 c9                	test   %cl,%cl
40e7a0:	75 24                	jne    0x40e7c6
40e7a2:	8b 1a                	mov    (%edx),%ebx
40e7a4:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40e7a7:	85 db                	test   %ebx,%ebx
40e7a9:	74 10                	je     0x40e7bb
40e7ab:	6a 21                	push   $0x21
40e7ad:	53                   	push   %ebx
40e7ae:	ff 15 b0 a3 44 00    	call   *0x44a3b0
40e7b4:	83 c4 08             	add    $0x8,%esp
40e7b7:	85 c0                	test   %eax,%eax
40e7b9:	75 39                	jne    0x40e7f4
40e7bb:	33 c0                	xor    %eax,%eax
40e7bd:	5f                   	pop    %edi
40e7be:	5e                   	pop    %esi
40e7bf:	5b                   	pop    %ebx
40e7c0:	8b e5                	mov    %ebp,%esp
40e7c2:	5d                   	pop    %ebp
40e7c3:	c2 04 00             	ret    $0x4
40e7c6:	8b 75 08             	mov    0x8(%ebp),%esi
40e7c9:	8b 06                	mov    (%esi),%eax
40e7cb:	85 c0                	test   %eax,%eax
40e7cd:	74 ec                	je     0x40e7bb
40e7cf:	8b 0a                	mov    (%edx),%ecx
40e7d1:	85 c9                	test   %ecx,%ecx
40e7d3:	74 0a                	je     0x40e7df
40e7d5:	e8 86 f4 ff ff       	call   0x40dc60
40e7da:	8b 06                	mov    (%esi),%eax
40e7dc:	8b 55 ec             	mov    -0x14(%ebp),%edx
40e7df:	85 c0                	test   %eax,%eax
40e7e1:	0f 84 bc f4 00 00    	je     0x41dca3
40e7e7:	5f                   	pop    %edi
40e7e8:	5e                   	pop    %esi
40e7e9:	89 02                	mov    %eax,(%edx)
40e7eb:	33 c0                	xor    %eax,%eax
40e7ed:	5b                   	pop    %ebx
40e7ee:	8b e5                	mov    %ebp,%esp
40e7f0:	5d                   	pop    %ebp
40e7f1:	c2 04 00             	ret    $0x4
40e7f4:	b9 02 40 00 00       	mov    $0x4002,%ecx
40e7f9:	e8 d2 f4 ff ff       	call   0x40dcd0
40e7fe:	89 45 f4             	mov    %eax,-0xc(%ebp)
40e801:	85 c0                	test   %eax,%eax
40e803:	0f 84 dd f4 00 00    	je     0x41dce6
40e809:	8b fb                	mov    %ebx,%edi
40e80b:	33 f6                	xor    %esi,%esi
40e80d:	8b d8                	mov    %eax,%ebx
40e80f:	90                   	nop
40e810:	0f b7 07             	movzwl (%edi),%eax
40e813:	83 c7 02             	add    $0x2,%edi
40e816:	89 7d e8             	mov    %edi,-0x18(%ebp)
40e819:	66 85 c0             	test   %ax,%ax
40e81c:	0f 84 d5 00 00 00    	je     0x40e8f7
40e822:	83 f8 21             	cmp    $0x21,%eax
40e825:	74 1d                	je     0x40e844
40e827:	83 f8 5e             	cmp    $0x5e,%eax
40e82a:	0f 84 9a f4 00 00    	je     0x41dcca
40e830:	66 89 03             	mov    %ax,(%ebx)
40e833:	83 c3 02             	add    $0x2,%ebx
40e836:	46                   	inc    %esi
40e837:	81 fe 00 20 00 00    	cmp    $0x2000,%esi
40e83d:	7e d1                	jle    0x40e810
40e83f:	e9 9a f4 00 00       	jmp    0x41dcde
40e844:	6a 21                	push   $0x21
40e846:	8d 45 f0             	lea    -0x10(%ebp),%eax
40e849:	8b d7                	mov    %edi,%edx
40e84b:	50                   	push   %eax
40e84c:	33 c9                	xor    %ecx,%ecx
40e84e:	e8 1d d7 ff ff       	call   0x40bf70
40e853:	8b c8                	mov    %eax,%ecx
40e855:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40e858:	85 c9                	test   %ecx,%ecx
40e85a:	0f 84 cc 00 00 00    	je     0x40e92c
40e860:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40e863:	8d 51 02             	lea    0x2(%ecx),%edx
40e866:	66 8b 01             	mov    (%ecx),%ax
40e869:	83 c1 02             	add    $0x2,%ecx
40e86c:	66 85 c0             	test   %ax,%ax
40e86f:	75 f5                	jne    0x40e866
40e871:	8b c1                	mov    %ecx,%eax
40e873:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40e876:	2b c2                	sub    %edx,%eax
40e878:	d1 f8                	sar    $1,%eax
40e87a:	03 f0                	add    %eax,%esi
40e87c:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e87f:	81 fe 00 20 00 00    	cmp    $0x2000,%esi
40e885:	0f 8f 53 f4 00 00    	jg     0x41dcde
40e88b:	8b c3                	mov    %ebx,%eax
40e88d:	ba 01 20 00 00       	mov    $0x2001,%edx
40e892:	2b 45 f4             	sub    -0xc(%ebp),%eax
40e895:	d1 f8                	sar    $1,%eax
40e897:	2b d0                	sub    %eax,%edx
40e899:	0f 84 0f f4 00 00    	je     0x41dcae
40e89f:	81 fa ff ff ff 7f    	cmp    $0x7fffffff,%edx
40e8a5:	0f 87 03 f4 00 00    	ja     0x41dcae
40e8ab:	bf fe ff ff 7f       	mov    $0x7ffffffe,%edi
40e8b0:	8b c3                	mov    %ebx,%eax
40e8b2:	2b fa                	sub    %edx,%edi
40e8b4:	29 5d f8             	sub    %ebx,-0x8(%ebp)
40e8b7:	8d 0c 17             	lea    (%edi,%edx,1),%ecx
40e8ba:	85 c9                	test   %ecx,%ecx
40e8bc:	74 1c                	je     0x40e8da
40e8be:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40e8c1:	0f b7 0c 01          	movzwl (%ecx,%eax,1),%ecx
40e8c5:	66 85 c9             	test   %cx,%cx
40e8c8:	74 10                	je     0x40e8da
40e8ca:	66 89 08             	mov    %cx,(%eax)
40e8cd:	83 c0 02             	add    $0x2,%eax
40e8d0:	83 ea 01             	sub    $0x1,%edx
40e8d3:	75 e2                	jne    0x40e8b7
40e8d5:	83 e8 02             	sub    $0x2,%eax
40e8d8:	eb 04                	jmp    0x40e8de
40e8da:	85 d2                	test   %edx,%edx
40e8dc:	74 f7                	je     0x40e8d5
40e8de:	8b 7d e8             	mov    -0x18(%ebp),%edi
40e8e1:	33 c9                	xor    %ecx,%ecx
40e8e3:	66 89 08             	mov    %cx,(%eax)
40e8e6:	8b 45 fc             	mov    -0x4(%ebp),%eax
40e8e9:	8d 1c 43             	lea    (%ebx,%eax,2),%ebx
40e8ec:	8b 45 f0             	mov    -0x10(%ebp),%eax
40e8ef:	8d 3c 47             	lea    (%edi,%eax,2),%edi
40e8f2:	e9 40 ff ff ff       	jmp    0x40e837
40e8f7:	81 fe 00 20 00 00    	cmp    $0x2000,%esi
40e8fd:	0f 8f db f3 00 00    	jg     0x41dcde
40e903:	8b 45 08             	mov    0x8(%ebp),%eax
40e906:	8d 14 b5 04 00 00 00 	lea    0x4(,%esi,4),%edx
40e90d:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40e910:	89 08                	mov    %ecx,(%eax)
40e912:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40e915:	e8 06 f4 ff ff       	call   0x40dd20
40e91a:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40e91d:	89 01                	mov    %eax,(%ecx)
40e91f:	85 c0                	test   %eax,%eax
40e921:	0f 85 94 fe ff ff    	jne    0x40e7bb
40e927:	e9 b2 f3 00 00       	jmp    0x41dcde
40e92c:	83 3d 48 67 43 00 00 	cmpl   $0x0,0x436748
40e933:	0f 84 87 f3 00 00    	je     0x41dcc0
40e939:	8b 45 f0             	mov    -0x10(%ebp),%eax
40e93c:	8d 3c 47             	lea    (%edi,%eax,2),%edi
40e93f:	e9 f3 fe ff ff       	jmp    0x40e837
40e944:	cc                   	int3
40e945:	cc                   	int3
40e946:	cc                   	int3
40e947:	cc                   	int3
40e948:	cc                   	int3
40e949:	cc                   	int3
40e94a:	cc                   	int3
40e94b:	cc                   	int3
40e94c:	cc                   	int3
40e94d:	cc                   	int3
40e94e:	cc                   	int3
40e94f:	cc                   	int3
40e950:	8b ff                	mov    %edi,%edi
40e952:	55                   	push   %ebp
40e953:	8b ec                	mov    %esp,%ebp
40e955:	81 ec 34 02 00 00    	sub    $0x234,%esp
40e95b:	a1 b4 e0 42 00       	mov    0x42e0b4,%eax
40e960:	33 c5                	xor    %ebp,%eax
40e962:	89 45 fc             	mov    %eax,-0x4(%ebp)
40e965:	53                   	push   %ebx
40e966:	56                   	push   %esi
40e967:	57                   	push   %edi
40e968:	68 04 01 00 00       	push   $0x104
40e96d:	8d 85 e0 fd ff ff    	lea    -0x220(%ebp),%eax
40e973:	89 95 d4 fd ff ff    	mov    %edx,-0x22c(%ebp)
40e979:	8b f1                	mov    %ecx,%esi
40e97b:	c6 85 df fd ff ff 00 	movb   $0x0,-0x221(%ebp)
40e982:	6a 00                	push   $0x0
40e984:	50                   	push   %eax
40e985:	89 b5 d8 fd ff ff    	mov    %esi,-0x228(%ebp)
40e98b:	83 cb ff             	or     $0xffffffff,%ebx