40f6cb:	0f b6 51 01          	movzbl 0x1(%ecx),%edx
40f6cf:	0f b6 c0             	movzbl %al,%eax
40f6d2:	eb 0d                	jmp    0x40f6e1
40f6d4:	3b c7                	cmp    %edi,%eax
40f6d6:	73 0d                	jae    0x40f6e5
40f6d8:	c6 84 05 fc fe ff ff 	movb   $0x20,-0x104(%ebp,%eax,1)
40f6df:	20
40f6e0:	40                   	inc    %eax
40f6e1:	3b c2                	cmp    %edx,%eax
40f6e3:	76 ef                	jbe    0x40f6d4
40f6e5:	83 c1 02             	add    $0x2,%ecx
40f6e8:	8a 01                	mov    (%ecx),%al
40f6ea:	84 c0                	test   %al,%al
40f6ec:	75 dd                	jne    0x40f6cb
40f6ee:	53                   	push   %ebx
40f6ef:	ff 76 04             	push   0x4(%esi)
40f6f2:	8d 85 fc f8 ff ff    	lea    -0x704(%ebp),%eax
40f6f8:	50                   	push   %eax
40f6f9:	57                   	push   %edi
40f6fa:	8d 85 fc fe ff ff    	lea    -0x104(%ebp),%eax
40f700:	50                   	push   %eax
40f701:	6a 01                	push   $0x1
40f703:	53                   	push   %ebx
40f704:	e8 2f 15 00 00       	call   0x410c38
40f709:	53                   	push   %ebx
40f70a:	ff 76 04             	push   0x4(%esi)
40f70d:	8d 85 fc fd ff ff    	lea    -0x204(%ebp),%eax
40f713:	57                   	push   %edi
40f714:	50                   	push   %eax
40f715:	57                   	push   %edi
40f716:	8d 85 fc fe ff ff    	lea    -0x104(%ebp),%eax
40f71c:	50                   	push   %eax
40f71d:	57                   	push   %edi
40f71e:	ff b6 1c 02 00 00    	push   0x21c(%esi)
40f724:	53                   	push   %ebx
40f725:	e8 23 23 00 00       	call   0x411a4d
40f72a:	83 c4 40             	add    $0x40,%esp
40f72d:	8d 85 fc fc ff ff    	lea    -0x304(%ebp),%eax
40f733:	53                   	push   %ebx
40f734:	ff 76 04             	push   0x4(%esi)
40f737:	57                   	push   %edi
40f738:	50                   	push   %eax
40f739:	57                   	push   %edi
40f73a:	8d 85 fc fe ff ff    	lea    -0x104(%ebp),%eax
40f740:	50                   	push   %eax
40f741:	68 00 02 00 00       	push   $0x200
40f746:	ff b6 1c 02 00 00    	push   0x21c(%esi)
40f74c:	53                   	push   %ebx
40f74d:	e8 fb 22 00 00       	call   0x411a4d
40f752:	83 c4 24             	add    $0x24,%esp
40f755:	8b cb                	mov    %ebx,%ecx
40f757:	0f b7 84 4d fc f8 ff 	movzwl -0x704(%ebp,%ecx,2),%eax
40f75e:	ff
40f75f:	a8 01                	test   $0x1,%al
40f761:	74 0e                	je     0x40f771
40f763:	80 4c 0e 19 10       	orb    $0x10,0x19(%esi,%ecx,1)
40f768:	8a 84 0d fc fd ff ff 	mov    -0x204(%ebp,%ecx,1),%al
40f76f:	eb 10                	jmp    0x40f781
40f771:	a8 02                	test   $0x2,%al
40f773:	74 15                	je     0x40f78a
40f775:	80 4c 0e 19 20       	orb    $0x20,0x19(%esi,%ecx,1)
40f77a:	8a 84 0d fc fc ff ff 	mov    -0x304(%ebp,%ecx,1),%al
40f781:	88 84 0e 19 01 00 00 	mov    %al,0x119(%esi,%ecx,1)
40f788:	eb 07                	jmp    0x40f791
40f78a:	88 9c 0e 19 01 00 00 	mov    %bl,0x119(%esi,%ecx,1)
40f791:	41                   	inc    %ecx
40f792:	3b cf                	cmp    %edi,%ecx
40f794:	72 c1                	jb     0x40f757
40f796:	eb 59                	jmp    0x40f7f1
40f798:	6a 9f                	push   $0xffffff9f
40f79a:	8d 96 19 01 00 00    	lea    0x119(%esi),%edx
40f7a0:	8b cb                	mov    %ebx,%ecx
40f7a2:	58                   	pop    %eax
40f7a3:	2b c2                	sub    %edx,%eax
40f7a5:	89 85 e0 f8 ff ff    	mov    %eax,-0x720(%ebp)
40f7ab:	03 d1                	add    %ecx,%edx
40f7ad:	03 c2                	add    %edx,%eax
40f7af:	89 85 e4 f8 ff ff    	mov    %eax,-0x71c(%ebp)
40f7b5:	83 c0 20             	add    $0x20,%eax
40f7b8:	83 f8 19             	cmp    $0x19,%eax
40f7bb:	77 0a                	ja     0x40f7c7
40f7bd:	80 4c 0e 19 10       	orb    $0x10,0x19(%esi,%ecx,1)
40f7c2:	8d 41 20             	lea    0x20(%ecx),%eax
40f7c5:	eb 13                	jmp    0x40f7da
40f7c7:	83 bd e4 f8 ff ff 19 	cmpl   $0x19,-0x71c(%ebp)
40f7ce:	77 0e                	ja     0x40f7de
40f7d0:	8d 04 0e             	lea    (%esi,%ecx,1),%eax
40f7d3:	80 48 19 20          	orb    $0x20,0x19(%eax)
40f7d7:	8d 41 e0             	lea    -0x20(%ecx),%eax
40f7da:	88 02                	mov    %al,(%edx)
40f7dc:	eb 02                	jmp    0x40f7e0
40f7de:	88 1a                	mov    %bl,(%edx)
40f7e0:	8b 85 e0 f8 ff ff    	mov    -0x720(%ebp),%eax
40f7e6:	8d 96 19 01 00 00    	lea    0x119(%esi),%edx
40f7ec:	41                   	inc    %ecx
40f7ed:	3b cf                	cmp    %edi,%ecx
40f7ef:	72 ba                	jb     0x40f7ab
40f7f1:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f7f4:	5f                   	pop    %edi
40f7f5:	5e                   	pop    %esi
40f7f6:	33 cd                	xor    %ebp,%ecx
40f7f8:	5b                   	pop    %ebx
40f7f9:	e8 58 37 ff ff       	call   0x402f56
40f7fe:	8b e5                	mov    %ebp,%esp
40f800:	5d                   	pop    %ebp
40f801:	c3                   	ret
40f802:	8b ff                	mov    %edi,%edi
40f804:	55                   	push   %ebp
40f805:	8b ec                	mov    %esp,%ebp
40f807:	83 ec 0c             	sub    $0xc,%esp
40f80a:	e8 13 b2 ff ff       	call   0x40aa22
40f80f:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f812:	e8 0a 01 00 00       	call   0x40f921
40f817:	ff 75 08             	push   0x8(%ebp)
40f81a:	e8 77 fd ff ff       	call   0x40f596
40f81f:	59                   	pop    %ecx
40f820:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f823:	89 45 f4             	mov    %eax,-0xc(%ebp)
40f826:	8b 49 48             	mov    0x48(%ecx),%ecx
40f829:	3b 41 04             	cmp    0x4(%ecx),%eax
40f82c:	75 04                	jne    0x40f832
40f82e:	33 c0                	xor    %eax,%eax
40f830:	eb 53                	jmp    0x40f885
40f832:	53                   	push   %ebx
40f833:	56                   	push   %esi
40f834:	57                   	push   %edi
40f835:	68 20 02 00 00       	push   $0x220
40f83a:	e8 1f a0 ff ff       	call   0x40985e
40f83f:	8b f8                	mov    %eax,%edi
40f841:	83 cb ff             	or     $0xffffffff,%ebx
40f844:	59                   	pop    %ecx
40f845:	85 ff                	test   %edi,%edi
40f847:	74 2e                	je     0x40f877
40f849:	8b 75 fc             	mov    -0x4(%ebp),%esi
40f84c:	b9 88 00 00 00       	mov    $0x88,%ecx
40f851:	8b 76 48             	mov    0x48(%esi),%esi
40f854:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40f856:	8b f8                	mov    %eax,%edi
40f858:	57                   	push   %edi
40f859:	ff 75 f4             	push   -0xc(%ebp)
40f85c:	83 27 00             	andl   $0x0,(%edi)
40f85f:	e8 5f 01 00 00       	call   0x40f9c3
40f864:	8b f0                	mov    %eax,%esi
40f866:	59                   	pop    %ecx
40f867:	59                   	pop    %ecx
40f868:	3b f3                	cmp    %ebx,%esi
40f86a:	75 1d                	jne    0x40f889
40f86c:	e8 96 84 ff ff       	call   0x407d07
40f871:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40f877:	8b f3                	mov    %ebx,%esi
40f879:	57                   	push   %edi
40f87a:	e8 a5 9f ff ff       	call   0x409824
40f87f:	59                   	pop    %ecx
40f880:	5f                   	pop    %edi
40f881:	8b c6                	mov    %esi,%eax
40f883:	5e                   	pop    %esi
40f884:	5b                   	pop    %ebx
40f885:	8b e5                	mov    %ebp,%esp
40f887:	5d                   	pop    %ebp
40f888:	c3                   	ret
40f889:	80 7d 0c 00          	cmpb   $0x0,0xc(%ebp)
40f88d:	75 05                	jne    0x40f894
40f88f:	e8 e6 9c ff ff       	call   0x40957a
40f894:	8b 45 fc             	mov    -0x4(%ebp),%eax
40f897:	8b 40 48             	mov    0x48(%eax),%eax
40f89a:	f0 0f c1 18          	lock xadd %ebx,(%eax)
40f89e:	4b                   	dec    %ebx
40f89f:	75 15                	jne    0x40f8b6
40f8a1:	8b 45 fc             	mov    -0x4(%ebp),%eax
40f8a4:	81 78 48 a0 35 42 00 	cmpl   $0x4235a0,0x48(%eax)
40f8ab:	74 09                	je     0x40f8b6
40f8ad:	ff 70 48             	push   0x48(%eax)
40f8b0:	e8 6f 9f ff ff       	call   0x409824
40f8b5:	59                   	pop    %ecx
40f8b6:	c7 07 01 00 00 00    	movl   $0x1,(%edi)
40f8bc:	8b cf                	mov    %edi,%ecx
40f8be:	8b 45 fc             	mov    -0x4(%ebp),%eax
40f8c1:	33 ff                	xor    %edi,%edi
40f8c3:	89 48 48             	mov    %ecx,0x48(%eax)
40f8c6:	8b 45 fc             	mov    -0x4(%ebp),%eax
40f8c9:	f6 80 50 03 00 00 02 	testb  $0x2,0x350(%eax)
40f8d0:	75 a7                	jne    0x40f879
40f8d2:	f6 05 20 38 42 00 01 	testb  $0x1,0x423820
40f8d9:	75 9e                	jne    0x40f879
40f8db:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f8de:	89 45 f4             	mov    %eax,-0xc(%ebp)
40f8e1:	8d 45 f4             	lea    -0xc(%ebp),%eax
40f8e4:	50                   	push   %eax
40f8e5:	6a 05                	push   $0x5
40f8e7:	e8 80 fb ff ff       	call   0x40f46c
40f8ec:	80 7d 0c 00          	cmpb   $0x0,0xc(%ebp)
40f8f0:	59                   	pop    %ecx
40f8f1:	59                   	pop    %ecx
40f8f2:	74 85                	je     0x40f879
40f8f4:	a1 c0 37 42 00       	mov    0x4237c0,%eax
40f8f9:	a3 c4 31 42 00       	mov    %eax,0x4231c4
40f8fe:	e9 76 ff ff ff       	jmp    0x40f879
40f903:	80 3d c0 46 42 00 00 	cmpb   $0x0,0x4246c0
40f90a:	75 12                	jne    0x40f91e
40f90c:	6a 01                	push   $0x1
40f90e:	6a fd                	push   $0xfffffffd
40f910:	e8 ed fe ff ff       	call   0x40f802
40f915:	59                   	pop    %ecx
40f916:	59                   	pop    %ecx
40f917:	c6 05 c0 46 42 00 01 	movb   $0x1,0x4246c0
40f91e:	b0 01                	mov    $0x1,%al
40f920:	c3                   	ret
40f921:	6a 0c                	push   $0xc
40f923:	68 68 1e 42 00       	push   $0x421e68
40f928:	e8 23 42 ff ff       	call   0x403b50
40f92d:	33 f6                	xor    %esi,%esi
40f92f:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40f932:	e8 eb b0 ff ff       	call   0x40aa22
40f937:	8b f8                	mov    %eax,%edi
40f939:	8b 0d 20 38 42 00    	mov    0x423820,%ecx
40f93f:	85 8f 50 03 00 00    	test   %ecx,0x350(%edi)
40f945:	74 11                	je     0x40f958
40f947:	39 77 4c             	cmp    %esi,0x4c(%edi)
40f94a:	74 0c                	je     0x40f958
40f94c:	8b 77 48             	mov    0x48(%edi),%esi
40f94f:	85 f6                	test   %esi,%esi
40f951:	75 68                	jne    0x40f9bb
40f953:	e8 89 9e ff ff       	call   0x4097e1
40f958:	6a 05                	push   $0x5
40f95a:	e8 46 f5 ff ff       	call   0x40eea5
40f95f:	59                   	pop    %ecx
40f960:	89 75 fc             	mov    %esi,-0x4(%ebp)
40f963:	8b 77 48             	mov    0x48(%edi),%esi
40f966:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40f969:	3b 35 c0 37 42 00    	cmp    0x4237c0,%esi
40f96f:	74 30                	je     0x40f9a1
40f971:	85 f6                	test   %esi,%esi
40f973:	74 18                	je     0x40f98d
40f975:	83 c8 ff             	or     $0xffffffff,%eax
40f978:	f0 0f c1 06          	lock xadd %eax,(%esi)
40f97c:	75 0f                	jne    0x40f98d
40f97e:	81 fe a0 35 42 00    	cmp    $0x4235a0,%esi
40f984:	74 07                	je     0x40f98d
40f986:	56                   	push   %esi
40f987:	e8 98 9e ff ff       	call   0x409824
40f98c:	59                   	pop    %ecx
40f98d:	a1 c0 37 42 00       	mov    0x4237c0,%eax
40f992:	89 47 48             	mov    %eax,0x48(%edi)
40f995:	8b 35 c0 37 42 00    	mov    0x4237c0,%esi
40f99b:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40f99e:	f0 ff 06             	lock incl (%esi)
40f9a1:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40f9a8:	e8 05 00 00 00       	call   0x40f9b2
40f9ad:	eb a0                	jmp    0x40f94f
40f9af:	8b 75 e4             	mov    -0x1c(%ebp),%esi
40f9b2:	6a 05                	push   $0x5
40f9b4:	e8 34 f5 ff ff       	call   0x40eeed
40f9b9:	59                   	pop    %ecx
40f9ba:	c3                   	ret
40f9bb:	8b c6                	mov    %esi,%eax
40f9bd:	e8 d4 41 ff ff       	call   0x403b96
40f9c2:	c3                   	ret
40f9c3:	8b ff                	mov    %edi,%edi
40f9c5:	55                   	push   %ebp
40f9c6:	8b ec                	mov    %esp,%ebp
40f9c8:	83 ec 20             	sub    $0x20,%esp
40f9cb:	a1 0c 30 42 00       	mov    0x42300c,%eax
40f9d0:	33 c5                	xor    %ebp,%eax
40f9d2:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f9d5:	53                   	push   %ebx
40f9d6:	56                   	push   %esi
40f9d7:	ff 75 08             	push   0x8(%ebp)
40f9da:	8b 75 0c             	mov    0xc(%ebp),%esi
40f9dd:	e8 b4 fb ff ff       	call   0x40f596
40f9e2:	8b d8                	mov    %eax,%ebx
40f9e4:	59                   	pop    %ecx
40f9e5:	85 db                	test   %ebx,%ebx
40f9e7:	75 0e                	jne    0x40f9f7
40f9e9:	56                   	push   %esi
40f9ea:	e8 1a fc ff ff       	call   0x40f609
40f9ef:	59                   	pop    %ecx
40f9f0:	33 c0                	xor    %eax,%eax
40f9f2:	e9 ad 01 00 00       	jmp    0x40fba4
40f9f7:	57                   	push   %edi
40f9f8:	33 ff                	xor    %edi,%edi
40f9fa:	8b cf                	mov    %edi,%ecx
40f9fc:	8b c7                	mov    %edi,%eax
40f9fe:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40fa01:	39 98 a8 32 42 00    	cmp    %ebx,0x4232a8(%eax)
40fa07:	0f 84 ea 00 00 00    	je     0x40faf7
40fa0d:	41                   	inc    %ecx
40fa0e:	83 c0 30             	add    $0x30,%eax
40fa11:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40fa14:	3d f0 00 00 00       	cmp    $0xf0,%eax
40fa19:	72 e6                	jb     0x40fa01
40fa1b:	81 fb e8 fd 00 00    	cmp    $0xfde8,%ebx
40fa21:	0f 84 c8 00 00 00    	je     0x40faef
40fa27:	81 fb e9 fd 00 00    	cmp    $0xfde9,%ebx
40fa2d:	0f 84 bc 00 00 00    	je     0x40faef
40fa33:	0f b7 c3             	movzwl %bx,%eax
40fa36:	50                   	push   %eax
40fa37:	ff 15 78 b1 41 00    	call   *0x41b178
40fa3d:	85 c0                	test   %eax,%eax
40fa3f:	0f 84 aa 00 00 00    	je     0x40faef
40fa45:	8d 45 e8             	lea    -0x18(%ebp),%eax
40fa48:	50                   	push   %eax
40fa49:	53                   	push   %ebx
40fa4a:	ff 15 80 b1 41 00    	call   *0x41b180
40fa50:	85 c0                	test   %eax,%eax
40fa52:	0f 84 84 00 00 00    	je     0x40fadc
40fa58:	68 01 01 00 00       	push   $0x101
40fa5d:	8d 46 18             	lea    0x18(%esi),%eax
40fa60:	57                   	push   %edi
40fa61:	50                   	push   %eax
40fa62:	e8 f9 4f ff ff       	call   0x404a60
40fa67:	89 5e 04             	mov    %ebx,0x4(%esi)
40fa6a:	83 c4 0c             	add    $0xc,%esp
40fa6d:	33 db                	xor    %ebx,%ebx
40fa6f:	89 be 1c 02 00 00    	mov    %edi,0x21c(%esi)
40fa75:	43                   	inc    %ebx
40fa76:	39 5d e8             	cmp    %ebx,-0x18(%ebp)
40fa79:	76 51                	jbe    0x40facc
40fa7b:	80 7d ee 00          	cmpb   $0x0,-0x12(%ebp)
40fa7f:	8d 45 ee             	lea    -0x12(%ebp),%eax
40fa82:	74 21                	je     0x40faa5
40fa84:	8a 48 01             	mov    0x1(%eax),%cl
40fa87:	84 c9                	test   %cl,%cl
40fa89:	74 1a                	je     0x40faa5
40fa8b:	0f b6 d1             	movzbl %cl,%edx
40fa8e:	0f b6 08             	movzbl (%eax),%ecx
40fa91:	eb 06                	jmp    0x40fa99
40fa93:	80 4c 0e 19 04       	orb    $0x4,0x19(%esi,%ecx,1)
40fa98:	41                   	inc    %ecx
40fa99:	3b ca                	cmp    %edx,%ecx
40fa9b:	76 f6                	jbe    0x40fa93
40fa9d:	83 c0 02             	add    $0x2,%eax
40faa0:	80 38 00             	cmpb   $0x0,(%eax)
40faa3:	75 df                	jne    0x40fa84
40faa5:	8d 46 1a             	lea    0x1a(%esi),%eax
40faa8:	b9 fe 00 00 00       	mov    $0xfe,%ecx
40faad:	80 08 08             	orb    $0x8,(%eax)
40fab0:	40                   	inc    %eax
40fab1:	83 e9 01             	sub    $0x1,%ecx
40fab4:	75 f7                	jne    0x40faad
40fab6:	ff 76 04             	push   0x4(%esi)
40fab9:	e8 9a fa ff ff       	call   0x40f558
40fabe:	83 c4 04             	add    $0x4,%esp
40fac1:	89 86 1c 02 00 00    	mov    %eax,0x21c(%esi)
40fac7:	89 5e 08             	mov    %ebx,0x8(%esi)
40faca:	eb 03                	jmp    0x40facf
40facc:	89 7e 08             	mov    %edi,0x8(%esi)
40facf:	33 c0                	xor    %eax,%eax
40fad1:	8d 7e 0c             	lea    0xc(%esi),%edi
40fad4:	ab                   	stos   %eax,%es:(%edi)
40fad5:	ab                   	stos   %eax,%es:(%edi)